Re: [O] org-create-formula-image-with-imagemagick conflicts with org-latex-pdf-process

2013-02-26 Thread Florian Beck
Hello Nicolas,

 What about re-using the existing tool from ox-latex.el? What do you
 think of the following patch?

Very highly, this works perfectly. Thank you.

Unfortunatly, html export doesn't support imagemagick yet.
`org-html-latex-fragment' and `org-html-latex-environment' only handle
mathjax and dvipng. (I've added imagemagick to the dvipng case, and this
seems to work without any problems.)

-- 
Florian Beck



Re: [O] org-create-formula-image-with-imagemagick conflicts with org-latex-pdf-process

2013-02-26 Thread Nicolas Goaziou
Hello,

Florian Beck f...@miszellen.de writes:

 `org-create-formula-image-with-imagemagick' doesn't handle the case that
 `org-latex-pdf-process' is set to a function.

 To reproduce:

  - set `org-latex-pdf-process' to a function
  - (setq org-latex-create-formula-image-program 'imagemagick)
this makes preview fail
  - set #+OPTIONS: latex:imagemagick = html export broken

 However, just calling this function from
 `org-create-formula-image-with-imagemagick' would not be a good idea.
 How about adding a new variable `org-latex-formula-pdf-process'?

What about re-using the existing tool from ox-latex.el? What do you
think of the following patch?


Regards,

-- 
Nicolas Goaziou
From 40dabf94dae93d2935982a7d04f3b7804069b733 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou n.goaz...@gmail.com
Date: Tue, 26 Feb 2013 09:28:59 +0100
Subject: [PATCH] Use `org-latex-compile' when processing formulas with
 imagemagick

* lisp/ox-latex.el (org-latex-compile): Add an optional argument for
  latex snippet previewing.
* lisp/org.el (org-create-formula-image-with-imagemagick): Use
  `org-latex-compile' instead of rewriting it.
---
 lisp/org.el  | 36 ++--
 lisp/ox-latex.el | 15 ++-
 2 files changed, 12 insertions(+), 39 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index 55cd00e..03bd8f3 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -18167,7 +18167,7 @@ share a good deal of logic.
 		  (delete-file (concat texfilebase e
 	pngfile
 
-(defvar org-latex-pdf-process)		; From ox-latex.el
+(declare-function org-latex-compile org-latex (texfile optional snippet))
 (defun org-create-formula-image-with-imagemagick (string tofile options buffer)
   This calls convert, which is included into imagemagick.
   (require 'ox-latex)
@@ -18204,39 +18204,7 @@ share a good deal of logic.
 		string
 		\n}\n
 		\n\\end{document}\n)))
-(let ((dir default-directory) cmd cmds latex-frags-cmds)
-  (condition-case nil
-	  (progn
-	(cd tmpdir)
-	(setq cmds org-latex-pdf-process)
-	(while cmds
-	  (setq latex-frags-cmds (pop cmds))
-	  (if (listp latex-frags-cmds)
-		  (setq cmds nil)
-		(setq latex-frags-cmds (list (car org-latex-pdf-process)
-	(while latex-frags-cmds
-	  (setq cmd (pop latex-frags-cmds))
-	  (while (string-match %b cmd)
-		(setq cmd (replace-match
-			   (save-match-data
-			 (shell-quote-argument texfile))
-			   t t cmd)))
-	  (while (string-match %f cmd)
-		(setq cmd (replace-match
-			   (save-match-data
-			 (shell-quote-argument
-			  (file-name-nondirectory texfile)))
-			   t t cmd)))
-	  (while (string-match %o cmd)
-		(setq cmd (replace-match
-			   (save-match-data
-			 (shell-quote-argument
-			  (file-name-directory texfile)))
-			   t t cmd)))
-	  (setq cmd (split-string cmd))
-	  (eval (append (list 'call-process (pop cmd) nil nil nil) cmd
-	(error nil))
-  (cd dir))
+(org-latex-compile texfile t)
 (if (not (file-exists-p pdffile))
 	(progn (message Failed to create pdf file from %s texfile) nil)
   (condition-case nil
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 3b0924c..5ebfe7e 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -2774,12 +2774,16 @@ Return PDF file's name.
  (org-latex-export-to-latex
   nil subtreep visible-only body-only ext-plist
 
-(defun org-latex-compile (texfile)
+(defun org-latex-compile (texfile optional snippet)
   Compile a TeX file.
 
 TEXFILE is the name of the file being compiled.  Processing is
 done through the command specified in `org-latex-pdf-process'.
 
+When optional argument SNIPPET is non-nil, TEXFILE is a temporary
+file used to preview a LaTeX snippet.  In this case, do not
+create a log buffer and do not bother removing log files.
+
 Return PDF file name or an error if it couldn't be produced.
   (let* ((base-name (file-name-sans-extension (file-name-nondirectory texfile)))
 	 (full-name (file-truename texfile))
@@ -2788,7 +2792,7 @@ Return PDF file name or an error if it couldn't be produced.
 	 ;; not to whatever value the current buffer may have.
 	 (default-directory (file-name-directory full-name))
 	 errors)
-(message (format Processing LaTeX file %s ... texfile))
+(unless snippet (message (format Processing LaTeX file %s ... texfile)))
 (save-window-excursion
   (cond
;; A function is provided: Apply it.
@@ -2798,7 +2802,8 @@ Return PDF file name or an error if it couldn't be produced.
;; values in each command before applying it.  Output is
;; redirected to *Org PDF LaTeX Output* buffer.
((consp org-latex-pdf-process)
-	(let ((outbuf (get-buffer-create *Org PDF LaTeX Output*)))
+	(let ((outbuf (and (not snippet)
+			   (get-buffer-create *Org PDF LaTeX Output*
 	  (mapc
 	   (lambda (command)
 	 (shell-command
@@ -2811,7 +2816,7 @@ Return PDF file name or an error if it couldn't be produced.
 	  outbuf))
 	   

Re: [O] org-create-formula-image-with-imagemagick conflicts with org-latex-pdf-process

2013-02-26 Thread Nicolas Goaziou
Florian Beck f...@miszellen.de writes:

 Very highly, this works perfectly. Thank you.

Patch applied.

 Unfortunatly, html export doesn't support imagemagick yet.
 `org-html-latex-fragment' and `org-html-latex-environment' only handle
 mathjax and dvipng. (I've added imagemagick to the dvipng case, and this
 seems to work without any problems.)

Do you want to prepare a patch for that?


Regards,

-- 
Nicolas Goaziou



[O] org-create-formula-image-with-imagemagick conflicts with org-latex-pdf-process

2013-02-25 Thread Florian Beck

`org-create-formula-image-with-imagemagick' doesn't handle the case that
`org-latex-pdf-process' is set to a function.

To reproduce:

 - set `org-latex-pdf-process' to a function
 - (setq org-latex-create-formula-image-program 'imagemagick)
   this makes preview fail
 - set #+OPTIONS: latex:imagemagick = html export broken

However, just calling this function from
`org-create-formula-image-with-imagemagick' would not be a good idea.
How about adding a new variable `org-latex-formula-pdf-process'?

-- 
Florian Beck