From 40dabf94dae93d2935982a7d04f3b7804069b733 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou 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)) org-latex-pdf-process) ;; Collect standard errors from output buffer. - (setq errors (org-latex--collect-errors outbuf)))) + (setq errors (and (not snippet) (org-latex--collect-errors outbuf))))) (t (error "No valid command to process to PDF"))) (let ((pdffile (concat out-dir base-name ".pdf"))) ;; Check for process failure. Provide collected errors if @@ -2821,7 +2826,7 @@ Return PDF file name or an error if it couldn't be produced." (when errors (concat ": " errors)))) ;; Else remove log files, when specified, and signal end of ;; process to user, along with any error encountered. - (when org-latex-remove-logfiles + (when (and (not snippet) org-latex-remove-logfiles) (dolist (ext org-latex-logfiles-extensions) (let ((file (concat out-dir base-name "." ext))) (when (file-exists-p file) (delete-file file))))) -- 1.8.1.4