|
@@ -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)
|