diff options
author | Eric Schulte <schulte.eric@gmail.com> | 2011-02-26 09:13:22 -0700 |
---|---|---|
committer | Eric Schulte <schulte.eric@gmail.com> | 2011-02-26 09:15:47 -0700 |
commit | 3ea00f215af29ef02f9ff50ea307b035d5abf0f3 (patch) | |
tree | 33f3f6fc2c671db12aaa2cebc4303fda5f36460a | |
parent | aa946f224da7522728cc1703bca75e4af7636fc9 (diff) | |
download | org-mode-3ea00f215af29ef02f9ff50ea307b035d5abf0f3.tar.gz |
new babel latex feature :imagemagick -- By Andreas Leha
It enables the output of graphics in a lot of formats using
imagemagick.
* lisp/ob-latex.el (org-babel-execute:latex): Add imagemagick options,
and for file types other than png and pdf it uses imagemagick to
convert a compiled pdf file to the desired file type.
(convert-pdf): Convert a pdf file to a new file type using
imagemagick.
-rw-r--r-- | lisp/ob-latex.el | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/lisp/ob-latex.el b/lisp/ob-latex.el index 8943ded..4170381 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." |