emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Re: babel for ditaa-eps
@ 2012-09-14  3:05 Luis Anaya
  0 siblings, 0 replies; 18+ messages in thread
From: Luis Anaya @ 2012-09-14  3:05 UTC (permalink / raw)
  To: Eric Schulte, Luis Anaya; +Cc: emacs-orgmode, Arne Babenhauserheide (IMK)

[-- Attachment #1: Type: text/html, Size: 1239 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-21  5:20       ` Thomas S. Dye
  2012-09-21 13:29         ` Bastien
@ 2012-09-22  8:48         ` Bastien
  1 sibling, 0 replies; 18+ messages in thread
From: Bastien @ 2012-09-22  8:48 UTC (permalink / raw)
  To: Thomas S. Dye; +Cc: emacs-orgmode, Arne Babenhauserheide (IMK), Eric Schulte

Hi Thomas,

tsd@tsdye.com (Thomas S. Dye) writes:

> Is it possible to distribute DitaaEps.jar with Org?  Or, does it need to
> be installed separately?

I just wrote to the ditaa author.

Arne told me ditaaeps works with ditaa 0.6b but not with latest 
ditaa 0.9, the one we are distributing.  I don't want to distribute
several versions of ditaa in Org mode, so I ask the ditaa author
to see if he can make ditaaeps work with latest ditaa.

I'll let you know, best,

-- 
 Bastien

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-21  5:20       ` Thomas S. Dye
@ 2012-09-21 13:29         ` Bastien
  2012-09-22  8:48         ` Bastien
  1 sibling, 0 replies; 18+ messages in thread
From: Bastien @ 2012-09-21 13:29 UTC (permalink / raw)
  To: Thomas S. Dye; +Cc: emacs-orgmode, Arne Babenhauserheide (IMK), Eric Schulte

Hi Thomas,

tsd@tsdye.com (Thomas S. Dye) writes:

> Is it possible to distribute DitaaEps.jar with Org?  Or, does it need to
> be installed separately?

We can install it along with ditaa.jar in contrib/scripts/

One question: DitaaEPS is bundled with ditaa_0.6b where we have
latest ditaa 0.9 in contrib/.  Can someone check that using ditaaeps
with ditaa 0.9 is okay ?

Thanks,

-- 
 Bastien

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-13 15:03     ` Eric Schulte
  2012-09-13 23:28       ` Luis Anaya
  2012-09-19  8:21       ` Bastien
@ 2012-09-21  5:20       ` Thomas S. Dye
  2012-09-21 13:29         ` Bastien
  2012-09-22  8:48         ` Bastien
  2 siblings, 2 replies; 18+ messages in thread
From: Thomas S. Dye @ 2012-09-21  5:20 UTC (permalink / raw)
  To: Eric Schulte; +Cc: emacs-orgmode, Arne Babenhauserheide (IMK)

Eric Schulte <eric.schulte@gmx.com> writes:

> "Arne Babenhauserheide (IMK)" <arne.babenhauserheide@kit.edu> writes:
>
>> Hi Eric,
>>
>> It’s much easier to answer, what this does not share with ob-ditaa.el :)
>>
>> If I cut out the obvious renaming (to be able to use a ditaa-exp
>> source type), it’s just this diff (and the first half of that only
>> defines variables…):
>>
>
> Hi Arne,
>
> I re-worked your diff into a patch against ob-ditaa.el which adds an
> :eps header argument to ditaa code blocks.  Please try this out and let
> me know if it works and if it loses any functionality from your original
> ob-ditaa-eps.el.
>
> Should we distribute the DitaaEps.jar with Org-mode in the same manner
> as we now distribute ditaa.jar?

Is it possible to distribute DitaaEps.jar with Org?  Or, does it need to
be installed separately?

All the best,
Tom


>
> From 643d59bfebc2a917bdd4b5da002df4b663f65be2 Mon Sep 17 00:00:00 2001
> From: Eric Schulte <eric.schulte@gmx.com>
> Date: Thu, 13 Sep 2012 08:58:31 -0600
> Subject: [PATCH] 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).
> ---
>  lisp/ob-ditaa.el | 15 +++++++++++++--
>  1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/lisp/ob-ditaa.el b/lisp/ob-ditaa.el
> index 1c6c712..3fbf50b 100644
> --- a/lisp/ob-ditaa.el
> +++ b/lisp/ob-ditaa.el
> @@ -57,6 +57,9 @@
>    :group 'org-babel
>    :type 'string)
>  
> +(defcustom org-ditaa-eps-jar-path
> +  (expand-file-name "DitaaEps.jar" (file-name-nondirectory org-ditaa-jar-path)))
> +
>  (defcustom org-ditaa-jar-option "-jar"
>    "Option for the ditaa jar file.
>  Do not leave leading or trailing spaces in this string."
> @@ -76,16 +79,24 @@ This function is called by `org-babel-execute-src-block'."
>  	 (cmdline (cdr (assoc :cmdline params)))
>  	 (java (cdr (assoc :java params)))
>  	 (in-file (org-babel-temp-file "ditaa-"))
> +	 (eps (cdr (assoc :eps params)))
>  	 (cmd (concat "java " java " " org-ditaa-jar-option " "
>  		      (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
>  		      " " (org-babel-process-file-name in-file)
> -		      " " (org-babel-process-file-name out-file))))
> +		      " " (org-babel-process-file-name out-file)))
> +	 (eps-cmd (when eps
> +		    (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)
>        (error "Could not find ditaa.jar at %s" org-ditaa-jar-path))
>      (with-temp-file in-file (insert body))
>      (message cmd) (shell-command cmd)
> +    (when eps (message eps-cmd) (shell-command eps-cmd))
>      nil)) ;; signal that output has already been written to file
>  
>  (defun org-babel-prep-session:ditaa (session params)
> -- 
> 1.7.12

-- 
Thomas S. Dye
http://www.tsdye.com

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-16 14:13               ` Eric Schulte
@ 2012-09-19  8:22                 ` Bastien
  0 siblings, 0 replies; 18+ messages in thread
From: Bastien @ 2012-09-19  8:22 UTC (permalink / raw)
  To: Eric Schulte; +Cc: emacs-orgmode, Arne Babenhauserheide (IMK), Luis Anaya

Hi Eric,

Eric Schulte <eric.schulte@gmx.com> writes:

> Oh yes, I used file-name-nondirectory instead of file-name-directory,
> and forgot the customization documentation.  Here's updated version.

Feel free to apply this in master -- thanks to Arne Luis and you!

-- 
 Bastien

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-13 15:03     ` Eric Schulte
  2012-09-13 23:28       ` Luis Anaya
@ 2012-09-19  8:21       ` Bastien
  2012-09-21  5:20       ` Thomas S. Dye
  2 siblings, 0 replies; 18+ messages in thread
From: Bastien @ 2012-09-19  8:21 UTC (permalink / raw)
  To: Eric Schulte; +Cc: emacs-orgmode, Arne Babenhauserheide (IMK)

Hi Eric,

Eric Schulte <eric.schulte@gmx.com> writes:

> Should we distribute the DitaaEps.jar with Org-mode in the same manner
> as we now distribute ditaa.jar?

If we have permission to do this then lets do it.

-- 
 Bastien

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-16  2:13             ` Luis Anaya
@ 2012-09-16 14:13               ` Eric Schulte
  2012-09-19  8:22                 ` Bastien
  0 siblings, 1 reply; 18+ messages in thread
From: Eric Schulte @ 2012-09-16 14:13 UTC (permalink / raw)
  To: Luis Anaya; +Cc: emacs-orgmode, Arne Babenhauserheide (IMK)

[-- Attachment #1: Type: text/plain, Size: 395 bytes --]

Luis Anaya <papoanaya@hotmail.com> writes:

> Eric Schulte <eric.schulte@gmx.com> writes:
>
> Hi:
>
>> with the attachment :)
>
> I tried your patch and it seems that the defcustom needs to be changed
> (at least from the way it is written in the patch.

Oh yes, I used file-name-nondirectory instead of file-name-directory,
and forgot the customization documentation.  Here's updated version.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-adding-eps-header-argument-to-ditaa-code-blocks.patch --]
[-- Type: text/x-patch, Size: 2356 bytes --]

From ef4c42ff1fba005077276458d9be70534d48a0fa Mon Sep 17 00:00:00 2001
From: Eric Schulte <eric.schulte@gmx.com>
Date: Thu, 13 Sep 2012 08:58:31 -0600
Subject: [PATCH] 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).
---
 lisp/ob-ditaa.el | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/lisp/ob-ditaa.el b/lisp/ob-ditaa.el
index 1c6c712..609bac4 100644
--- a/lisp/ob-ditaa.el
+++ b/lisp/ob-ditaa.el
@@ -57,6 +57,12 @@
   :group 'org-babel
   :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"
   "Option for the ditaa jar file.
 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)))
 	 (java (cdr (assoc :java params)))
 	 (in-file (org-babel-temp-file "ditaa-"))
+	 (eps (cdr (assoc :eps params)))
 	 (cmd (concat "java " java " " org-ditaa-jar-option " "
 		      (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
 		      " " (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)
       (error "Could not find ditaa.jar at %s" org-ditaa-jar-path))
     (with-temp-file in-file (insert body))
     (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
 
 (defun org-babel-prep-session:ditaa (session params)
-- 
1.7.12


[-- Attachment #3: Type: text/plain, Size: 47 bytes --]



-- 
Eric Schulte
http://cs.unm.edu/~eschulte

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-14  2:51           ` Eric Schulte
@ 2012-09-16  2:13             ` Luis Anaya
  2012-09-16 14:13               ` Eric Schulte
  0 siblings, 1 reply; 18+ messages in thread
From: Luis Anaya @ 2012-09-16  2:13 UTC (permalink / raw)
  To: Eric Schulte; +Cc: emacs-orgmode, Arne Babenhauserheide (IMK)

[-- Attachment #1: Type: text/plain, Size: 441 bytes --]

Eric Schulte <eric.schulte@gmx.com> writes:

Hi:

> with the attachment :)

I tried your patch and it seems that the defcustom needs to be changed
(at least from the way it is written in the patch. I'm attaching a diff
against the original ditaa (I hope that is close enough) with the one I
fixed. The only thing that is of importance is the defcustom definition
for the DitaaEPS.jar. I did not change any of the logic (yet... :) ).

Luis



[-- Attachment #2: Luis Patch for ob-ditaa.el --]
[-- Type: application/emacs-lisp, Size: 2750 bytes --]

[-- Attachment #3: Type: text/plain, Size: 122 bytes --]




-- 
Luis Anaya
papo anaya aroba hot mail punto com
"Do not use 100 words if you can say it in 10" - Yamamoto Tsunetomo

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-14  0:15         ` Eric Schulte
@ 2012-09-14  2:51           ` Eric Schulte
  2012-09-16  2:13             ` Luis Anaya
  0 siblings, 1 reply; 18+ messages in thread
From: Eric Schulte @ 2012-09-14  2:51 UTC (permalink / raw)
  To: Luis Anaya; +Cc: emacs-orgmode, Arne Babenhauserheide (IMK)

[-- Attachment #1: Type: text/plain, Size: 492 bytes --]

Eric Schulte <eric.schulte@gmx.com> writes:

> Luis Anaya <papoanaya@hotmail.com> writes:
>
>> Eric Schulte <eric.schulte@gmx.com> writes:
>>
>> Please, provide the option to not create the PDF file at the end for
>> those poor people that use Groff to create documents in which will barf
>> on a PDF file.
>>
>> Thanks,
>>
>> Luis
>
> Good idea,
>
> The attached version makes this change.  If someone can confirm that
> this patch works I can apply it.
>
> Thanks,

with the attachment :)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-adding-eps-header-argument-to-ditaa-code-blocks.patch --]
[-- Type: text/x-patch, Size: 2275 bytes --]

From 014fa9fd68a6476df2da32c590781788672a0f1a Mon Sep 17 00:00:00 2001
From: Eric Schulte <eric.schulte@gmx.com>
Date: Thu, 13 Sep 2012 08:58:31 -0600
Subject: [PATCH] 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).
---
 lisp/ob-ditaa.el | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/lisp/ob-ditaa.el b/lisp/ob-ditaa.el
index 1c6c712..d97af14 100644
--- a/lisp/ob-ditaa.el
+++ b/lisp/ob-ditaa.el
@@ -57,6 +57,9 @@
   :group 'org-babel
   :type 'string)
 
+(defcustom org-ditaa-eps-jar-path
+  (expand-file-name "DitaaEps.jar" (file-name-nondirectory org-ditaa-jar-path)))
+
 (defcustom org-ditaa-jar-option "-jar"
   "Option for the ditaa jar file.
 Do not leave leading or trailing spaces in this string."
@@ -76,16 +79,25 @@ This function is called by `org-babel-execute-src-block'."
 	 (cmdline (cdr (assoc :cmdline params)))
 	 (java (cdr (assoc :java params)))
 	 (in-file (org-babel-temp-file "ditaa-"))
+	 (eps (cdr (assoc :eps params)))
 	 (cmd (concat "java " java " " org-ditaa-jar-option " "
 		      (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
 		      " " (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)
       (error "Could not find ditaa.jar at %s" org-ditaa-jar-path))
     (with-temp-file in-file (insert body))
     (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
 
 (defun org-babel-prep-session:ditaa (session params)
-- 
1.7.12


[-- Attachment #3: Type: text/plain, Size: 46 bytes --]


-- 
Eric Schulte
http://cs.unm.edu/~eschulte

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-13 23:28       ` Luis Anaya
@ 2012-09-14  0:15         ` Eric Schulte
  2012-09-14  2:51           ` Eric Schulte
  0 siblings, 1 reply; 18+ messages in thread
From: Eric Schulte @ 2012-09-14  0:15 UTC (permalink / raw)
  To: Luis Anaya; +Cc: emacs-orgmode, Arne Babenhauserheide (IMK)

Luis Anaya <papoanaya@hotmail.com> writes:

> Eric Schulte <eric.schulte@gmx.com> writes:
>
> Please, provide the option to not create the PDF file at the end for
> those poor people that use Groff to create documents in which will barf
> on a PDF file.
>
> Thanks,
>
> Luis

Good idea,

The attached version makes this change.  If someone can confirm that
this patch works I can apply it.

Thanks,

-- 
Eric Schulte
http://cs.unm.edu/~eschulte

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-13 15:03     ` Eric Schulte
@ 2012-09-13 23:28       ` Luis Anaya
  2012-09-14  0:15         ` Eric Schulte
  2012-09-19  8:21       ` Bastien
  2012-09-21  5:20       ` Thomas S. Dye
  2 siblings, 1 reply; 18+ messages in thread
From: Luis Anaya @ 2012-09-13 23:28 UTC (permalink / raw)
  To: Eric Schulte; +Cc: emacs-orgmode, Arne Babenhauserheide (IMK)

Eric Schulte <eric.schulte@gmx.com> writes:

Please, provide the option to not create the PDF file at the end for
those poor people that use Groff to create documents in which will barf
on a PDF file.

Thanks,

Luis

-- 
Luis R. Anaya
papo anaya aroba hot mail punto com
"Do not use 100 words if you can say it in 10" - Yamamoto Tsunetomo

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-13 11:53   ` Arne Babenhauserheide (IMK)
@ 2012-09-13 15:03     ` Eric Schulte
  2012-09-13 23:28       ` Luis Anaya
                         ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Eric Schulte @ 2012-09-13 15:03 UTC (permalink / raw)
  To: Arne Babenhauserheide (IMK); +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 696 bytes --]

"Arne Babenhauserheide (IMK)" <arne.babenhauserheide@kit.edu> writes:

> Hi Eric,
>
> It’s much easier to answer, what this does not share with ob-ditaa.el :)
>
> If I cut out the obvious renaming (to be able to use a ditaa-exp
> source type), it’s just this diff (and the first half of that only
> defines variables…):
>

Hi Arne,

I re-worked your diff into a patch against ob-ditaa.el which adds an
:eps header argument to ditaa code blocks.  Please try this out and let
me know if it works and if it loses any functionality from your original
ob-ditaa-eps.el.

Should we distribute the DitaaEps.jar with Org-mode in the same manner
as we now distribute ditaa.jar?


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-adding-eps-header-argument-to-ditaa-code-blocks.patch --]
[-- Type: text/x-patch, Size: 2184 bytes --]

From 643d59bfebc2a917bdd4b5da002df4b663f65be2 Mon Sep 17 00:00:00 2001
From: Eric Schulte <eric.schulte@gmx.com>
Date: Thu, 13 Sep 2012 08:58:31 -0600
Subject: [PATCH] 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).
---
 lisp/ob-ditaa.el | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/lisp/ob-ditaa.el b/lisp/ob-ditaa.el
index 1c6c712..3fbf50b 100644
--- a/lisp/ob-ditaa.el
+++ b/lisp/ob-ditaa.el
@@ -57,6 +57,9 @@
   :group 'org-babel
   :type 'string)
 
+(defcustom org-ditaa-eps-jar-path
+  (expand-file-name "DitaaEps.jar" (file-name-nondirectory org-ditaa-jar-path)))
+
 (defcustom org-ditaa-jar-option "-jar"
   "Option for the ditaa jar file.
 Do not leave leading or trailing spaces in this string."
@@ -76,16 +79,24 @@ This function is called by `org-babel-execute-src-block'."
 	 (cmdline (cdr (assoc :cmdline params)))
 	 (java (cdr (assoc :java params)))
 	 (in-file (org-babel-temp-file "ditaa-"))
+	 (eps (cdr (assoc :eps params)))
 	 (cmd (concat "java " java " " org-ditaa-jar-option " "
 		      (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
 		      " " (org-babel-process-file-name in-file)
-		      " " (org-babel-process-file-name out-file))))
+		      " " (org-babel-process-file-name out-file)))
+	 (eps-cmd (when eps
+		    (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)
       (error "Could not find ditaa.jar at %s" org-ditaa-jar-path))
     (with-temp-file in-file (insert body))
     (message cmd) (shell-command cmd)
+    (when eps (message eps-cmd) (shell-command eps-cmd))
     nil)) ;; signal that output has already been written to file
 
 (defun org-babel-prep-session:ditaa (session params)
-- 
1.7.12


[-- Attachment #3: Type: text/plain, Size: 46 bytes --]


-- 
Eric Schulte
http://cs.unm.edu/~eschulte

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-13  5:16 ` Eric Schulte
@ 2012-09-13 11:53   ` Arne Babenhauserheide (IMK)
  2012-09-13 15:03     ` Eric Schulte
  0 siblings, 1 reply; 18+ messages in thread
From: Arne Babenhauserheide (IMK) @ 2012-09-13 11:53 UTC (permalink / raw)
  To: Eric Schulte; +Cc: emacs-orgmode

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Eric,

It’s much easier to answer, what this does not share with ob-ditaa.el :)

If I cut out the obvious renaming (to be able to use a ditaa-exp
source type), it’s just this diff (and the first half of that only
defines variables…):

- --- /usr/share/emacs/site-lisp/org-mode/ob-ditaa.el	2012-05-25
23:12:51.000000000 +0200
+++ ob-ditaa-eps.el	2012-09-12 15:37:50.942191587 +0200
@@ -44,6 +47,20 @@

- -(defvar org-ditaa-jar-path)
- -(defun org-babel-execute:ditaa (body params)
+(defcustom org-ditaa-eps-jar-path (expand-file-name
+			    "DitaaEps.jar"
+			    (file-name-as-directory
+			     (expand-file-name
+			      "scripts"
+			      (file-name-as-directory
+			       (expand-file-name
+				"../contrib"
+				(file-name-directory (find-library-name "org")))))))
+  "Path to the ditaa-eps jar executable."
+  :group 'org-babel
+  :type 'string)
+
+
+(defvar org-ditaa-eps-jar-path)
+(defun org-babel-execute:ditaa-eps (body params)
   "Execute a block of Ditaa code with org-babel.
 This function is called by `org-babel-execute-src-block'."
   (let* ((result-params (split-string (or (cdr (assoc :results
params)) "")))
@@ -55,14 +72,18 @@
 	 (cmdline (cdr (assoc :cmdline params)))
 	 (java (cdr (assoc :java params)))
 	 (in-file (org-babel-temp-file "ditaa-"))
- -	 (cmd (concat "java " java " -jar "
+	 (cmd0 (concat "java " java " -jar "
 		      (shell-quote-argument
- -		       (expand-file-name org-ditaa-jar-path))
+		       (expand-file-name org-ditaa-eps-jar-path))
 		      " " cmdline
 		      " " (org-babel-process-file-name in-file)
- -		      " " (org-babel-process-file-name out-file))))
- -    (unless (file-exists-p org-ditaa-jar-path)
- -      (error "Could not find ditaa.jar at %s" org-ditaa-jar-path))
+		      " " (org-babel-process-file-name (concat in-file ".eps"))))
+	 (cmd1 (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-eps-jar-path)
+      (error "Could not find ditaa.jar at %s" org-ditaa-eps-jar-path))
     (with-temp-file in-file (insert body))
- -    (message cmd) (shell-command cmd)
+    (message cmd0) (shell-command cmd0)
+    (message cmd1) (shell-command cmd1)
     nil)) ;; signal that output has already been written to file


Best wishes,
Arne

Am 13.09.2012 07:16, schrieb Eric Schulte:
> It sounds like there is a good deal of desire for this
> functionality. How much code does this file share with ob-ditaa?
> If it is a large percentage perhaps it would be possible to instead
> add a new header argument to ditaa code blocks to run ditaa-eps.
> Some code blocks (e.g., sql) already have an :engine header
> argument which may be used to change the back-end tool which
> executes the block.
> 
> Thanks for sharing!
> 
> "Arne Babenhauserheide (IMK)" <arne.babenhauserheide@kit.edu>
> writes:
> 
>> Dear org hackers,
>> 
>> I don’t know if there’s already a babel-ditaa-option for using 
>> ditaa-eps, so I modified ob-ditaa.el to use ditaa-eps and convert
>> the result using epstopdf.
>> 
>> Feel free to use it.
>> 
>> ;;; ob-ditaa-eps.el --- org-babel functions for ditaa evaluation
>> 
>> ;; Copyright (C) 2009-2012  Free Software Foundation, Inc.
>> 
>> ;; Author: Eric Schulte und Arne Babenhauserheide ;; Keywords:
>> literate programming, reproducible research ;; Homepage:
>> http://orgmode.org
>> 
>> ;; This file is part of GNU Emacs.
>> 
>> ;; GNU Emacs is free software: you can redistribute it and/or
>> modify ;; it under the terms of the GNU General Public License as
>> published by ;; the Free Software Foundation, either version 3 of
>> the License, or ;; (at your option) any later version.
>> 
>> ;; GNU Emacs is distributed in the hope that it will be useful, 
>> ;; but WITHOUT ANY WARRANTY; without even the implied warranty
>> of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
>> the ;; GNU General Public License for more details.
>> 
>> ;; You should have received a copy of the GNU General Public
>> License ;; along with GNU Emacs.  If not, see
>> <http://www.gnu.org/licenses/>.
>> 
>> ;;; Commentary:
>> 
>> ;; Org-Babel support for evaluating ditaa source code as
>> eps/pdf. ;; ;; Almost verbatim copy from ob-ditaa, but with
>> ditaa-eps and epstopdf ;; as intermediate step. ;; ;; Ditaa
>> differs from most standard languages in that ;; ;; 1) there is no
>> such thing as a "session" in ditaa ;; ;; 2) we are generally only
>> going to return results of type "file" ;; ;; 3) we are adding the
>> "file" and "cmdline" header arguments ;; ;; 4) there are no
>> variables (at least for now)
>> 
>> ;;; Code: (require 'ob)
>> 
>> (defvar org-babel-default-header-args:ditaa-eps '((:results .
>> "file") (:exports . "results") (:java . 
>> "-Dfile.encoding=UTF-8")) "Default arguments for evaluating a
>> ditaa source block.")
>> 
>> (defcustom org-ditaa-eps-jar-path (expand-file-name 
>> "DitaaEps.jar" (file-name-as-directory (expand-file-name 
>> "scripts" (file-name-as-directory (expand-file-name "../contrib" 
>> (file-name-directory (find-library-name "org"))))))) "Path to the
>> ditaa-eps jar executable." :group 'org-babel :type 'string)
>> 
>> 
>> (defvar org-ditaa-eps-jar-path) (defun
>> org-babel-execute:ditaa-eps (body params) "Execute a block of
>> Ditaa code with org-babel. This function is called by
>> `org-babel-execute-src-block'." (let* ((result-params
>> (split-string (or (cdr (assoc :results params)) ""))) (out-file
>> ((lambda (el) (or el (error "ditaa code block requires :file
>> header argument"))) (cdr (assoc :file params)))) (cmdline (cdr
>> (assoc :cmdline params))) (java (cdr (assoc :java params))) 
>> (in-file (org-babel-temp-file "ditaa-")) (cmd0 (concat "java "
>> java " -jar " (shell-quote-argument (expand-file-name
>> org-ditaa-eps-jar-path)) " " cmdline " "
>> (org-babel-process-file-name in-file) " "
>> (org-babel-process-file-name (concat in-file ".eps")))) (cmd1
>> (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-eps-jar-path) 
>> (error "Could not find ditaa.jar at %s" org-ditaa-eps-jar-path)) 
>> (with-temp-file in-file (insert body)) (message cmd0)
>> (shell-command cmd0) (message cmd1) (shell-command cmd1) nil)) ;;
>> signal that output has already been written to file
>> 
>> (defun org-babel-prep-session:ditaa-eps (session params) "Return
>> an error because ditaa does not support sessions." (error "Ditaa
>> does not support sessions"))
>> 
>> (defun ditaa-eps-mode () (artist-mode))
>> 
>> (provide 'ob-ditaa-eps)
>> 
>> ;;; ob-ditaa-eps.el ends here
>> 
>> Best wishes, Arne
>> 
> 

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJQUclHAAoJEFyD82SnDaCeim0IAJKYNMwE0vAsdYOk9Ur/V8Vk
JDMORPs3Riox5MC0vWZRpEwxA/MHUV9J/p40+gQSF67aAhAo0T2c1qhjA99xsn2S
7OCpbLdTPMTGe2e23LLwuPjiX6J0I9E3u39AOz+ePwUmlGBceCzCf26nQLg0ikLR
PUZvGFrB2UCBd5267BBJnCDE9rLdC3FrvnxH9o2uzti9b/h24UtoeVleGN9x7Wvl
taf/FILgtSS9Cp66xRadsovHrJda7mdopa+lQjA+dwboAUd0lhHDU5nOLL0DwIhH
yMJUEESHm+FWYZMY3m3Z9lqkTt0GN+WQUf2sXCIFGuHQuy4hdZmNtUnRMPk60uE=
=lcUh
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-12 14:00 Arne Babenhauserheide (IMK)
  2012-09-13  2:19 ` Luis Anaya
  2012-09-13  3:08 ` Luis Anaya
@ 2012-09-13  5:16 ` Eric Schulte
  2012-09-13 11:53   ` Arne Babenhauserheide (IMK)
  2 siblings, 1 reply; 18+ messages in thread
From: Eric Schulte @ 2012-09-13  5:16 UTC (permalink / raw)
  To: Arne Babenhauserheide (IMK); +Cc: emacs-orgmode

It sounds like there is a good deal of desire for this functionality.
How much code does this file share with ob-ditaa?  If it is a large
percentage perhaps it would be possible to instead add a new header
argument to ditaa code blocks to run ditaa-eps.  Some code blocks (e.g.,
sql) already have an :engine header argument which may be used to change
the back-end tool which executes the block.

Thanks for sharing!

"Arne Babenhauserheide (IMK)" <arne.babenhauserheide@kit.edu> writes:

> Dear org hackers,
>
> I don’t know if there’s already a babel-ditaa-option for using
> ditaa-eps, so I modified ob-ditaa.el to use ditaa-eps and convert the
> result using epstopdf.
>
> Feel free to use it.
>
> ;;; ob-ditaa-eps.el --- org-babel functions for ditaa evaluation
>
> ;; Copyright (C) 2009-2012  Free Software Foundation, Inc.
>
> ;; Author: Eric Schulte und Arne Babenhauserheide
> ;; Keywords: literate programming, reproducible research
> ;; Homepage: http://orgmode.org
>
> ;; This file is part of GNU Emacs.
>
> ;; GNU Emacs is free software: you can redistribute it and/or modify
> ;; it under the terms of the GNU General Public License as published by
> ;; the Free Software Foundation, either version 3 of the License, or
> ;; (at your option) any later version.
>
> ;; GNU Emacs is distributed in the hope that it will be useful,
> ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
> ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> ;; GNU General Public License for more details.
>
> ;; You should have received a copy of the GNU General Public License
> ;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
>
> ;;; Commentary:
>
> ;; Org-Babel support for evaluating ditaa source code as eps/pdf.
> ;;
> ;; Almost verbatim copy from ob-ditaa, but with ditaa-eps and epstopdf
> ;; as intermediate step.
> ;;
> ;; Ditaa differs from most standard languages in that
> ;;
> ;; 1) there is no such thing as a "session" in ditaa
> ;;
> ;; 2) we are generally only going to return results of type "file"
> ;;
> ;; 3) we are adding the "file" and "cmdline" header arguments
> ;;
> ;; 4) there are no variables (at least for now)
>
> ;;; Code:
> (require 'ob)
>
> (defvar org-babel-default-header-args:ditaa-eps
>   '((:results . "file") (:exports . "results") (:java .
> "-Dfile.encoding=UTF-8"))
>   "Default arguments for evaluating a ditaa source block.")
>
> (defcustom org-ditaa-eps-jar-path (expand-file-name
> 			    "DitaaEps.jar"
> 			    (file-name-as-directory
> 			     (expand-file-name
> 			      "scripts"
> 			      (file-name-as-directory
> 			       (expand-file-name
> 				"../contrib"
> 				(file-name-directory (find-library-name "org")))))))
>   "Path to the ditaa-eps jar executable."
>   :group 'org-babel
>   :type 'string)
>
>
> (defvar org-ditaa-eps-jar-path)
> (defun org-babel-execute:ditaa-eps (body params)
>   "Execute a block of Ditaa code with org-babel.
> This function is called by `org-babel-execute-src-block'."
>   (let* ((result-params (split-string (or (cdr (assoc :results params))
> "")))
> 	 (out-file ((lambda (el)
> 		      (or el
> 			  (error
> 			   "ditaa code block requires :file header argument")))
> 		    (cdr (assoc :file params))))
> 	 (cmdline (cdr (assoc :cmdline params)))
> 	 (java (cdr (assoc :java params)))
> 	 (in-file (org-babel-temp-file "ditaa-"))
> 	 (cmd0 (concat "java " java " -jar "
> 		      (shell-quote-argument
> 		       (expand-file-name org-ditaa-eps-jar-path))
> 		      " " cmdline
> 		      " " (org-babel-process-file-name in-file)
> 		      " " (org-babel-process-file-name (concat in-file ".eps"))))
> 	 (cmd1 (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-eps-jar-path)
>       (error "Could not find ditaa.jar at %s" org-ditaa-eps-jar-path))
>     (with-temp-file in-file (insert body))
>     (message cmd0) (shell-command cmd0)
>     (message cmd1) (shell-command cmd1)
>     nil)) ;; signal that output has already been written to file
>
> (defun org-babel-prep-session:ditaa-eps (session params)
>   "Return an error because ditaa does not support sessions."
>   (error "Ditaa does not support sessions"))
>
> (defun ditaa-eps-mode ()
>   (artist-mode))
>
> (provide 'ob-ditaa-eps)
>
> ;;; ob-ditaa-eps.el ends here
>
> Best wishes,
> Arne
>

-- 
Eric Schulte
http://cs.unm.edu/~eschulte

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-13  3:08 ` Luis Anaya
@ 2012-09-13  5:03   ` Thomas S. Dye
  0 siblings, 0 replies; 18+ messages in thread
From: Thomas S. Dye @ 2012-09-13  5:03 UTC (permalink / raw)
  To: Luis Anaya; +Cc: emacs-orgmode, Arne Babenhauserheide (IMK)

Luis Anaya <papoanaya@hotmail.com> writes:

> "Arne Babenhauserheide (IMK)" <arne.babenhauserheide@kit.edu> writes:
> Hi:
>
> I made a small changed to the code. It will look for the suffix and run
> the epspdf step only if it's a pdf, otherwise, it will print the
> EPS. The reason for this is because on Groff, you're better off with the
> EPS file. 
>
> Luis

If this code is useful, perhaps it could be checked into contrib/lisp?
Of course, it would be good to have some documentation on Worg, too.

All the best,
Tom
 
-- 
Thomas S. Dye
http://www.tsdye.com

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-12 14:00 Arne Babenhauserheide (IMK)
  2012-09-13  2:19 ` Luis Anaya
@ 2012-09-13  3:08 ` Luis Anaya
  2012-09-13  5:03   ` Thomas S. Dye
  2012-09-13  5:16 ` Eric Schulte
  2 siblings, 1 reply; 18+ messages in thread
From: Luis Anaya @ 2012-09-13  3:08 UTC (permalink / raw)
  To: Arne Babenhauserheide (IMK); +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 304 bytes --]

"Arne Babenhauserheide (IMK)" <arne.babenhauserheide@kit.edu> writes:
Hi:

I made a small changed to the code. It will look for the suffix and run
the epspdf step only if it's a pdf, otherwise, it will print the
EPS. The reason for this is because on Groff, you're better off with the
EPS file. 

Luis



[-- Attachment #2: Modified Ditaa EPS --]
[-- Type: application/emacs-lisp, Size: 3820 bytes --]

[-- Attachment #3: Type: text/plain, Size: 125 bytes --]




-- 
Luis R. Anaya
papo anaya aroba hot mail punto com
"Do not use 100 words if you can say it in 10" - Yamamoto Tsunetomo

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: babel for ditaa-eps
  2012-09-12 14:00 Arne Babenhauserheide (IMK)
@ 2012-09-13  2:19 ` Luis Anaya
  2012-09-13  3:08 ` Luis Anaya
  2012-09-13  5:16 ` Eric Schulte
  2 siblings, 0 replies; 18+ messages in thread
From: Luis Anaya @ 2012-09-13  2:19 UTC (permalink / raw)
  To: Arne Babenhauserheide (IMK); +Cc: emacs-orgmode

"Arne Babenhauserheide (IMK)" <arne.babenhauserheide@kit.edu> writes:

> Dear org hackers,

> I don?t know if there?s already a babel-ditaa-option for using
> ditaa-eps, so I modified ob-ditaa.el to use ditaa-eps and convert the
> result using epstopdf.
>

This is great, thanks. The way I addressed this in the Groff exporter
was to convert the PNG to EPS. But if this creates EPS directly from the
get go, it's a better approach for better fidelity. 

Thanks for sharing. 


-- 
Luis R. Anaya
papo anaya aroba hot mail punto com
"Do not use 100 words if you can say it in 10" - Yamamoto Tsunetomo

^ permalink raw reply	[flat|nested] 18+ messages in thread

* babel for ditaa-eps
@ 2012-09-12 14:00 Arne Babenhauserheide (IMK)
  2012-09-13  2:19 ` Luis Anaya
                   ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Arne Babenhauserheide (IMK) @ 2012-09-12 14:00 UTC (permalink / raw)
  To: emacs-orgmode


[-- Attachment #1.1: Type: text/plain, Size: 3850 bytes --]

Dear org hackers,

I don’t know if there’s already a babel-ditaa-option for using
ditaa-eps, so I modified ob-ditaa.el to use ditaa-eps and convert the
result using epstopdf.

Feel free to use it.

;;; ob-ditaa-eps.el --- org-babel functions for ditaa evaluation

;; Copyright (C) 2009-2012  Free Software Foundation, Inc.

;; Author: Eric Schulte und Arne Babenhauserheide
;; Keywords: literate programming, reproducible research
;; Homepage: http://orgmode.org

;; This file is part of GNU Emacs.

;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.

;;; Commentary:

;; Org-Babel support for evaluating ditaa source code as eps/pdf.
;;
;; Almost verbatim copy from ob-ditaa, but with ditaa-eps and epstopdf
;; as intermediate step.
;;
;; Ditaa differs from most standard languages in that
;;
;; 1) there is no such thing as a "session" in ditaa
;;
;; 2) we are generally only going to return results of type "file"
;;
;; 3) we are adding the "file" and "cmdline" header arguments
;;
;; 4) there are no variables (at least for now)

;;; Code:
(require 'ob)

(defvar org-babel-default-header-args:ditaa-eps
  '((:results . "file") (:exports . "results") (:java .
"-Dfile.encoding=UTF-8"))
  "Default arguments for evaluating a ditaa source block.")

(defcustom org-ditaa-eps-jar-path (expand-file-name
			    "DitaaEps.jar"
			    (file-name-as-directory
			     (expand-file-name
			      "scripts"
			      (file-name-as-directory
			       (expand-file-name
				"../contrib"
				(file-name-directory (find-library-name "org")))))))
  "Path to the ditaa-eps jar executable."
  :group 'org-babel
  :type 'string)


(defvar org-ditaa-eps-jar-path)
(defun org-babel-execute:ditaa-eps (body params)
  "Execute a block of Ditaa code with org-babel.
This function is called by `org-babel-execute-src-block'."
  (let* ((result-params (split-string (or (cdr (assoc :results params))
"")))
	 (out-file ((lambda (el)
		      (or el
			  (error
			   "ditaa code block requires :file header argument")))
		    (cdr (assoc :file params))))
	 (cmdline (cdr (assoc :cmdline params)))
	 (java (cdr (assoc :java params)))
	 (in-file (org-babel-temp-file "ditaa-"))
	 (cmd0 (concat "java " java " -jar "
		      (shell-quote-argument
		       (expand-file-name org-ditaa-eps-jar-path))
		      " " cmdline
		      " " (org-babel-process-file-name in-file)
		      " " (org-babel-process-file-name (concat in-file ".eps"))))
	 (cmd1 (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-eps-jar-path)
      (error "Could not find ditaa.jar at %s" org-ditaa-eps-jar-path))
    (with-temp-file in-file (insert body))
    (message cmd0) (shell-command cmd0)
    (message cmd1) (shell-command cmd1)
    nil)) ;; signal that output has already been written to file

(defun org-babel-prep-session:ditaa-eps (session params)
  "Return an error because ditaa does not support sessions."
  (error "Ditaa does not support sessions"))

(defun ditaa-eps-mode ()
  (artist-mode))

(provide 'ob-ditaa-eps)

;;; ob-ditaa-eps.el ends here

Best wishes,
Arne

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: ob-ditaa-eps.el --]
[-- Type: text/x-emacs-lisp; name="ob-ditaa-eps.el", Size: 3617 bytes --]

;;; ob-ditaa-eps.el --- org-babel functions for ditaa evaluation

;; Copyright (C) 2009-2012  Free Software Foundation, Inc.

;; Author: Eric Schulte und Arne Babenhauserheide
;; Keywords: literate programming, reproducible research
;; Homepage: http://orgmode.org

;; This file is part of GNU Emacs.

;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.

;;; Commentary:

;; Org-Babel support for evaluating ditaa source code as eps/pdf.
;; 
;; Almost verbatim copy from ob-ditaa, but with ditaa-eps and epstopdf
;; as intermediate step.
;;
;; Ditaa differs from most standard languages in that
;;
;; 1) there is no such thing as a "session" in ditaa
;;
;; 2) we are generally only going to return results of type "file"
;;
;; 3) we are adding the "file" and "cmdline" header arguments
;;
;; 4) there are no variables (at least for now)

;;; Code:
(require 'ob)

(defvar org-babel-default-header-args:ditaa-eps
  '((:results . "file") (:exports . "results") (:java . "-Dfile.encoding=UTF-8"))
  "Default arguments for evaluating a ditaa source block.")

(defcustom org-ditaa-eps-jar-path (expand-file-name
			    "DitaaEps.jar"
			    (file-name-as-directory
			     (expand-file-name
			      "scripts"
			      (file-name-as-directory
			       (expand-file-name
				"../contrib"
				(file-name-directory (find-library-name "org")))))))
  "Path to the ditaa-eps jar executable."
  :group 'org-babel
  :type 'string)


(defvar org-ditaa-eps-jar-path)
(defun org-babel-execute:ditaa-eps (body params)
  "Execute a block of Ditaa code with org-babel.
This function is called by `org-babel-execute-src-block'."
  (let* ((result-params (split-string (or (cdr (assoc :results params)) "")))
	 (out-file ((lambda (el)
		      (or el
			  (error
			   "ditaa code block requires :file header argument")))
		    (cdr (assoc :file params))))
	 (cmdline (cdr (assoc :cmdline params)))
	 (java (cdr (assoc :java params)))
	 (in-file (org-babel-temp-file "ditaa-"))
	 (cmd0 (concat "java " java " -jar "
		      (shell-quote-argument
		       (expand-file-name org-ditaa-eps-jar-path))
		      " " cmdline
		      " " (org-babel-process-file-name in-file)
		      " " (org-babel-process-file-name (concat in-file ".eps"))))
	 (cmd1 (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-eps-jar-path)
      (error "Could not find ditaa.jar at %s" org-ditaa-eps-jar-path))
    (with-temp-file in-file (insert body))
    (message cmd0) (shell-command cmd0)
    (message cmd1) (shell-command cmd1)
    nil)) ;; signal that output has already been written to file

(defun org-babel-prep-session:ditaa-eps (session params)
  "Return an error because ditaa does not support sessions."
  (error "Ditaa does not support sessions"))

(defun ditaa-eps-mode ()
  (artist-mode))

(provide 'ob-ditaa-eps)

;;; ob-ditaa-eps.el ends here

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 554 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2012-09-22  8:48 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-14  3:05 babel for ditaa-eps Luis Anaya
  -- strict thread matches above, loose matches on Subject: below --
2012-09-12 14:00 Arne Babenhauserheide (IMK)
2012-09-13  2:19 ` Luis Anaya
2012-09-13  3:08 ` Luis Anaya
2012-09-13  5:03   ` Thomas S. Dye
2012-09-13  5:16 ` Eric Schulte
2012-09-13 11:53   ` Arne Babenhauserheide (IMK)
2012-09-13 15:03     ` Eric Schulte
2012-09-13 23:28       ` Luis Anaya
2012-09-14  0:15         ` Eric Schulte
2012-09-14  2:51           ` Eric Schulte
2012-09-16  2:13             ` Luis Anaya
2012-09-16 14:13               ` Eric Schulte
2012-09-19  8:22                 ` Bastien
2012-09-19  8:21       ` Bastien
2012-09-21  5:20       ` Thomas S. Dye
2012-09-21 13:29         ` Bastien
2012-09-22  8:48         ` Bastien

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).