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))