summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Schulte <schulte.eric@gmail.com>2011-02-26 09:13:22 -0700
committerEric Schulte <schulte.eric@gmail.com>2011-02-26 09:15:47 -0700
commit3ea00f215af29ef02f9ff50ea307b035d5abf0f3 (patch)
tree33f3f6fc2c671db12aaa2cebc4303fda5f36460a
parentaa946f224da7522728cc1703bca75e4af7636fc9 (diff)
downloadorg-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.el28
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."