diff options
author | Aaron Ecay <aaronecay@gmail.com> | 2013-04-21 23:28:26 -0400 |
---|---|---|
committer | Aaron Ecay <aaronecay@gmail.com> | 2013-04-21 23:28:26 -0400 |
commit | 4be6832fdff697af649acc10fafd688e8a19a35a (patch) | |
tree | c611e144e26e67af1db5e7385ae13c20ca47c2e8 | |
parent | e6776ce711a1653fcfeae3da75d129c929b53a0e (diff) | |
download | org-mode-4be6832fdff697af649acc10fafd688e8a19a35a.tar.gz |
ob-R.el: allow use of alternative graphics devices
* lisp/ob-R.el (org-babel-R-graphics-devices): New defvar.
(org-babel-R-construct-graphics-device-call): Use it instead of a
hard-coded list of graphics devices.
The `org-babel-R-graphics-devices' variable now holds the association
between graphics file types and R functions. This allows users by
modifying this alist to choose to use e.g. the Cairo* functions from the
R package “Cairo” or one of several alternative devices for SVG
output (SVGAnnotation, RSVGTipsDevice).
-rw-r--r-- | lisp/ob-R.el | 55 |
1 files changed, 32 insertions, 23 deletions
diff --git a/lisp/ob-R.el b/lisp/ob-R.el index 67d3c37..2c6afd8 100644 --- a/lisp/ob-R.el +++ b/lisp/ob-R.el @@ -234,31 +234,40 @@ current code buffer." (and (member "graphics" (cdr (assq :result-params params))) (cdr (assq :file params)))) +(defvar org-babel-R-graphics-devices + '((:bmp "bmp" "filename") + (:jpg "jpeg" "filename") + (:jpeg "jpeg" "filename") + (:tikz "tikz" "file") + (:tiff "tiff" "filename") + (:png "png" "filename") + (:svg "svg" "file") + (:pdf "pdf" "file") + (:ps "postscript" "file") + (:postscript "postscript" "file")) + "An alist mapping graphics file types to R functions. + +Each member of this list is a list with three members: +1. the file extension of the graphics file, as an elisp :keyword +2. the R graphics device function to call to generate such a file +3. the name of the argument to this function which specifies the + file to write to (typically \"file\" or \"filename\")") + (defun org-babel-R-construct-graphics-device-call (out-file params) "Construct the call to the graphics device." - (let ((devices - '((:bmp . "bmp") - (:jpg . "jpeg") - (:jpeg . "jpeg") - (:tikz . "tikz") - (:tiff . "tiff") - (:png . "png") - (:svg . "svg") - (:pdf . "pdf") - (:ps . "postscript") - (:postscript . "postscript"))) - (allowed-args '(:width :height :bg :units :pointsize - :antialias :quality :compression :res - :type :family :title :fonts :version - :paper :encoding :pagecentre :colormodel - :useDingbats :horizontal)) - (device (and (string-match ".+\\.\\([^.]+\\)" out-file) - (match-string 1 out-file))) - (extra-args (cdr (assq :R-dev-args params))) filearg args) - (setq device (or (and device (cdr (assq (intern (concat ":" device)) - devices))) "png")) - (setq filearg - (if (member device '("pdf" "postscript" "svg" "tikz")) "file" "filename")) + (let* ((allowed-args '(:width :height :bg :units :pointsize + :antialias :quality :compression :res + :type :family :title :fonts :version + :paper :encoding :pagecentre :colormodel + :useDingbats :horizontal)) + (device (and (string-match ".+\\.\\([^.]+\\)" out-file) + (match-string 1 out-file))) + (device-info (or (assq (intern (concat ":" device)) + org-babel-R-graphics-devices) + (assq :png org-babel-R-graphics-devices))) + (extra-args (cdr (assq :R-dev-args params))) filearg args) + (setq device (nth 1 device-info)) + (setq filearg (nth 2 device-info)) (setq args (mapconcat (lambda (pair) (if (member (car pair) allowed-args) |