From c166760fcc2788953d60f52c7883df9331cc9954 Mon Sep 17 00:00:00 2001 From: Eric Schulte Date: Tue, 22 Nov 2011 06:59:58 -0700 Subject: [PATCH] Revert "Revert "new babel latex feature :imagemagick -- By Andreas Leha"" This reverts commit c6f6b3421ee9050a980f8fa0b5615e3f7136e7a8. Andreas has now signed the FSF copyright assignment papers. --- lisp/ob-latex.el | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/lisp/ob-latex.el b/lisp/ob-latex.el index 739a93653..f41475f29 100644 --- a/lisp/ob-latex.el +++ b/lisp/ob-latex.el @@ -72,6 +72,10 @@ This function is called by `org-babel-execute-src-block'." (let* ((out-file (cdr (assoc :file params))) (tex-file (org-babel-temp-file "latex-" ".tex")) (border (cdr (assoc :border params))) + (imagemagick (cdr (assoc :imagemagick params))) + (im-in-options (cdr (assoc :iminoptions params))) + (im-out-options (cdr (assoc :imoutoptions params))) + (pdfpng (cdr (assoc :pdfpng params))) (fit (or (cdr (assoc :fit params)) border)) (height (and fit (cdr (assoc :pdfheight params)))) (width (and fit (cdr (assoc :pdfwidth params)))) @@ -81,10 +85,10 @@ This function is called by `org-babel-execute-src-block'." (append (cdr (assoc :packages params)) org-export-latex-packages-alist))) (cond - ((string-match "\\.png$" out-file) + ((and (string-match "\\.png$" out-file) (not imagemagick)) (org-create-formula-image body out-file org-format-latex-options in-buffer)) - ((string-match "\\.pdf$" out-file) + ((or (string-match "\\.pdf$" out-file) imagemagick) (require 'org-latex) (with-temp-file tex-file (insert @@ -118,13 +122,29 @@ This function is called by `org-babel-execute-src-block'." (concat "\n\\begin{document}\n" body "\n\\end{document}\n"))) (org-export-latex-fix-inputenc)) (when (file-exists-p out-file) (delete-file out-file)) - (rename-file (org-babel-latex-tex-to-pdf tex-file) out-file)) + (let ((transient-pdf-file (org-babel-latex-tex-to-pdf tex-file))) + (cond + ((string-match "\\.pdf$" out-file) + (rename-file transient-pdf-file out-file)) + (imagemagick + (convert-pdf + transient-pdf-file out-file im-in-options im-out-options) + (when (file-exists-p transient-pdf-file) + (delete-file transient-pdf-file)))))) ((string-match "\\.\\([^\\.]+\\)$" out-file) - (error "can not create %s files, please specify a .png or .pdf file" + (error "can not create %s files, please specify a .png or .pdf file or try the :imagemagick header arguement" (match-string 1 out-file)))) nil) ;; signal that output has already been written to file body)) + +(defun convert-pdf (pdffile out-file im-in-options im-out-options) + "Generate a file from a pdf file using imagemagick." + (let ((cmd (concat "convert " im-in-options " " pdffile " " + im-out-options " " out-file))) + (message (concat "Converting pdffile file " cmd "...")) + (shell-command cmd))) + (defun org-babel-latex-tex-to-pdf (file) "Generate a pdf file according to the contents FILE. Extracted from `org-export-as-pdf' in org-latex.el." -- 2.11.4.GIT