Kaynağa Gözat

adding :eps header argument to ditaa code blocks

Use of this header argument will change the back-end engine from
ditaa.jar to a combination of DitaaEps.jar and epstopdf.

This patch is based off of ob-ditaa-eps.el sent to the mailing list by
Arne Babenhauserheide (IMK).
Eric Schulte 12 yıl önce
ebeveyn
işleme
99c0b2d9c4
1 değiştirilmiş dosya ile 17 ekleme ve 2 silme
  1. 17 2
      lisp/ob-ditaa.el

+ 17 - 2
lisp/ob-ditaa.el

@@ -57,6 +57,12 @@
   :group 'org-babel
   :group 'org-babel
   :type 'string)
   :type 'string)
 
 
+(defcustom org-ditaa-eps-jar-path
+  (expand-file-name "DitaaEps.jar" (file-name-directory org-ditaa-jar-path))
+  "Path to the DitaaEps.jar executable."
+  :group 'org-babel
+  :type 'string)
+
 (defcustom org-ditaa-jar-option "-jar"
 (defcustom org-ditaa-jar-option "-jar"
   "Option for the ditaa jar file.
   "Option for the ditaa jar file.
 Do not leave leading or trailing spaces in this string."
 Do not leave leading or trailing spaces in this string."
@@ -76,16 +82,25 @@ This function is called by `org-babel-execute-src-block'."
 	 (cmdline (cdr (assoc :cmdline params)))
 	 (cmdline (cdr (assoc :cmdline params)))
 	 (java (cdr (assoc :java params)))
 	 (java (cdr (assoc :java params)))
 	 (in-file (org-babel-temp-file "ditaa-"))
 	 (in-file (org-babel-temp-file "ditaa-"))
+	 (eps (cdr (assoc :eps params)))
 	 (cmd (concat "java " java " " org-ditaa-jar-option " "
 	 (cmd (concat "java " java " " org-ditaa-jar-option " "
 		      (shell-quote-argument
 		      (shell-quote-argument
-		       (expand-file-name org-ditaa-jar-path))
+		       (expand-file-name
+			(if eps org-ditaa-eps-jar-path org-ditaa-jar-path)))
 		      " " cmdline
 		      " " cmdline
 		      " " (org-babel-process-file-name in-file)
 		      " " (org-babel-process-file-name in-file)
-		      " " (org-babel-process-file-name out-file))))
+		      " " (org-babel-process-file-name out-file)))
+	 (pdf-cmd (when (and (or (string= (file-name-extension out-file) "pdf")
+				 (cdr (assoc :pdf params))))
+		    (concat
+		     "epstopdf"
+		     " " (org-babel-process-file-name (concat in-file ".eps"))
+		     " -o=" (org-babel-process-file-name out-file)))))
     (unless (file-exists-p org-ditaa-jar-path)
     (unless (file-exists-p org-ditaa-jar-path)
       (error "Could not find ditaa.jar at %s" org-ditaa-jar-path))
       (error "Could not find ditaa.jar at %s" org-ditaa-jar-path))
     (with-temp-file in-file (insert body))
     (with-temp-file in-file (insert body))
     (message cmd) (shell-command cmd)
     (message cmd) (shell-command cmd)
+    (when pdf-cmd (message pdf-cmd) (shell-command pdf-cmd))
     nil)) ;; signal that output has already been written to file
     nil)) ;; signal that output has already been written to file
 
 
 (defun org-babel-prep-session:ditaa (session params)
 (defun org-babel-prep-session:ditaa (session params)