* tikz for multiple targets
@ 2013-07-09 22:34 Eric S Fraga
2013-07-10 9:50 ` Rasmus
0 siblings, 1 reply; 22+ messages in thread
From: Eric S Fraga @ 2013-07-09 22:34 UTC (permalink / raw)
To: emacs-orgmode
Hello again,
I am trying to get an example that worked with the old exporter to work
with the new exporter. The aim is to have a tikzpicture exported to
both LaTeX and HTML. The example is in the following message from over
a year ago now:
http://article.gmane.org/gmane.emacs.orgmode/53900
This example no longer works for either LaTeX or HTML. For LaTeX, I
would expect the actual tikz code to be inserted into the LaTeX file and
then processed. Instead, I get the file name in a verbatim
environment. For HTML, I would expect the image referred to from an
<img> tag but I get a link to the test.png file instead.
The actual test.png file is created in both cases.
Is what I want possible with the new exporter? If so, I imagine the
test for the backend must be different now. Any pointers very welcome!
Thanks,
eric
--
: Eric S Fraga (0xFFFCF67D), Emacs 24.3.50.1, Org release_8.0.5-322-gd5c11e.dirty
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-09 22:34 tikz for multiple targets Eric S Fraga
@ 2013-07-10 9:50 ` Rasmus
2013-07-10 9:54 ` Rasmus
2013-07-10 10:56 ` Eric S Fraga
0 siblings, 2 replies; 22+ messages in thread
From: Rasmus @ 2013-07-10 9:50 UTC (permalink / raw)
To: emacs-orgmode
Eric S Fraga <e.fraga@ucl.ac.uk> writes:
> Hello again,
>
> I am trying to get an example that worked with the old exporter to work
> with the new exporter. The aim is to have a tikzpicture exported to
> both LaTeX and HTML. The example is in the following message from over
> a year ago now:
>
> http://article.gmane.org/gmane.emacs.orgmode/53900
>
> This example no longer works for either LaTeX or HTML. For LaTeX, I
> would expect the actual tikz code to be inserted into the LaTeX file and
> then processed. Instead, I get the file name in a verbatim
> environment.
Tikz/pgf works for the latex exporter. Just insert it as a file link
(with extension tikz or pgf) or as latex verbatim code.
> For HTML, I would expect the image referred to from an
> <img> tag but I get a link to the test.png file instead.
It should be an svg since tikz is a lossless format IMO.
Here's a very rough and ugly function to translate tikz to svg. I
don't know if there's a more direct approach. . .
#+BEGIN_SRC emacs-lisp
(defun tikz-to-svg (file &optional headers standalone-ops)
"Convert a tikz picture to a svg picture ready for html
output.
Headers is a string like
'(pgfplots '(calc tikzlibrary) (kpfonts usepackage oldstylenums).
Do not include tikz in headers.
Set standalone-ops to t if you want to use the standalone packages conversion.
"
(let* ((name (file-name-sans-extension (file-name-nondirectory file)))
(fname (concat "/tmp/" name))
(fnamet (concat fname ".tex"))
(final (concat (file-name-directory file) name ".svg"))
)
(with-temp-file fnamet
(insert (format "\\documentclass[tikz,%s]{standalone}\n"
(if (not standalone-ops) ""
(if (eq t standalone-ops)
"convert={outfile=\jobname.svg}" standalone-ops))))
(when headers
(insert
(mapconcat (lambda (x)
(cond ((stringp x) (format "\\usepackage{%s}" x))
((and (listp x) (= 2 (length x)))
(apply 'format "\\%s{%s}" (reverse x))
)
((and (listp x) (= 3 (length x)))
(funcall 'format "\\%s[%s]{%s}"
(second x) (third x) (first x))
(t "")
))) "\n")))
(insert "\n\\begin{document}\n")
(progn (insert-file file) (goto-char (point-max)))
(insert "\n\\end{document}"))
(call-process "pdflatex" nil "*tmp*" nil "-shell-escape" "-output-directory /tmp/" fnamet)
(call-process "pdf2svg" nil "*tmp*" nil (concat fname ".pdf") (concat fname ".svg"))
(rename-file (concat fname ".svg") final t)
(if (file-exists-p final)
(format "[[file:%s]]" final)
""
(error "conversion failed")
)))
#+END_SRC
> Is what I want possible with the new exporter? If so, I imagine the
> test for the backend must be different now. Any pointers very welcome!
It needs to be added to `org-html-inline-image-rules' and some
potential translation should be added to org-html-inline-image-p,
e.g. substitute pgf or tikz with whatever is the output format.
Perhaps the dvipng code in ox-html can utilized to obtain a png
seemingly.
–Rasmus
--
The Kids call him Billy the Saint
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-10 9:50 ` Rasmus
@ 2013-07-10 9:54 ` Rasmus
2013-07-10 10:16 ` Fabrice Popineau
2013-07-10 10:56 ` Eric S Fraga
1 sibling, 1 reply; 22+ messages in thread
From: Rasmus @ 2013-07-10 9:54 UTC (permalink / raw)
To: emacs-orgmode
Rasmus <rasmus@gmx.us> writes:
>> Is what I want possible with the new exporter? If so, I imagine the
>> test for the backend must be different now. Any pointers very welcome!
>
> It needs to be added to `org-html-inline-image-rules' and some
> potential translation should be added to org-html-inline-image-p,
> e.g. substitute pgf or tikz with whatever is the output format.
> Perhaps the dvipng code in ox-html can utilized to obtain a png
> seemingly.
Actually, dvisvgm might be way to go as it may be possible to leverage
upon all of the dvipng code without much loss of generality. It would
also be useful for equations where one does not want to use mathjax.
It's only packed for Texlive, though.
http://www.ctan.org/pkg/dvisvgm
–Rasmus
--
May contains speling mistake
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-10 9:54 ` Rasmus
@ 2013-07-10 10:16 ` Fabrice Popineau
0 siblings, 0 replies; 22+ messages in thread
From: Fabrice Popineau @ 2013-07-10 10:16 UTC (permalink / raw)
To: Rasmus; +Cc: emacs-orgmode@gnu.org
[-- Attachment #1: Type: text/plain, Size: 1245 bytes --]
And did anybody tried the svg backend available from tikz, rather than
relying
on pdf conversion?
Fabrice
2013/7/10 Rasmus <rasmus@gmx.us>
> Rasmus <rasmus@gmx.us> writes:
>
> >> Is what I want possible with the new exporter? If so, I imagine the
> >> test for the backend must be different now. Any pointers very welcome!
> >
> > It needs to be added to `org-html-inline-image-rules' and some
> > potential translation should be added to org-html-inline-image-p,
> > e.g. substitute pgf or tikz with whatever is the output format.
> > Perhaps the dvipng code in ox-html can utilized to obtain a png
> > seemingly.
>
> Actually, dvisvgm might be way to go as it may be possible to leverage
> upon all of the dvipng code without much loss of generality. It would
> also be useful for equations where one does not want to use mathjax.
> It's only packed for Texlive, though.
>
> http://www.ctan.org/pkg/dvisvgm
>
> –Rasmus
>
> --
> May contains speling mistake
>
>
>
--
Fabrice Popineau
-----------------------------
SUPELEC
Département Informatique
3, rue Joliot Curie
91192 Gif/Yvette Cedex
Tel direct : +33 (0) 169851950
Standard : +33 (0) 169851212
------------------------------
[-- Attachment #2: Type: text/html, Size: 1998 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-10 9:50 ` Rasmus
2013-07-10 9:54 ` Rasmus
@ 2013-07-10 10:56 ` Eric S Fraga
2013-07-10 20:44 ` Andreas Leha
1 sibling, 1 reply; 22+ messages in thread
From: Eric S Fraga @ 2013-07-10 10:56 UTC (permalink / raw)
To: Rasmus; +Cc: emacs-orgmode
Rasmus <rasmus@gmx.us> writes:
[...]
> Tikz/pgf works for the latex exporter. Just insert it as a file link
> (with extension tikz or pgf) or as latex verbatim code.
Yes, thanks. However, I guess I didn't explain very well what I was
looking for.
I use tikz all the time and typically enclose it in a #+begin_LaTeX
... #+end_LaTeX block. That is fine for most of my documents where I
only wish to export to PDF via LaTeX.
However, what I would like is to be able to use the same code, inline
within the org file and not as a separate .tikz file, in some cases to
export to both LaTeX and HTML (or ODT for that matter). The code in the
link I posted used to do this by dynamically setting the :exports and/or
:results options using org babel headers with emacs lisp code. A
variation of this worked with the old exporter but doesn't with the new
one.
Thanks again,
eric
--
: Eric S Fraga (0xFFFCF67D), Emacs 24.3.50.1, Org release_8.0.5-326-g325e40
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-10 10:56 ` Eric S Fraga
@ 2013-07-10 20:44 ` Andreas Leha
2013-07-11 6:11 ` Eric Schulte
2013-07-11 7:21 ` Eric S Fraga
0 siblings, 2 replies; 22+ messages in thread
From: Andreas Leha @ 2013-07-10 20:44 UTC (permalink / raw)
To: emacs-orgmode
Hi Eric,
Eric S Fraga <e.fraga@ucl.ac.uk> writes:
> Rasmus <rasmus@gmx.us> writes:
>
> [...]
>
>> Tikz/pgf works for the latex exporter. Just insert it as a file link
>> (with extension tikz or pgf) or as latex verbatim code.
>
> Yes, thanks. However, I guess I didn't explain very well what I was
> looking for.
>
> I use tikz all the time and typically enclose it in a #+begin_LaTeX
> ... #+end_LaTeX block. That is fine for most of my documents where I
> only wish to export to PDF via LaTeX.
>
> However, what I would like is to be able to use the same code, inline
> within the org file and not as a separate .tikz file, in some cases to
> export to both LaTeX and HTML (or ODT for that matter). The code in the
> link I posted used to do this by dynamically setting the :exports and/or
> :results options using org babel headers with emacs lisp code. A
> variation of this worked with the old exporter but doesn't with the new
> one.
>
> Thanks again,
> eric
I updated the example again. Try this:
--8<---------------cut here---------------start------------->8---
#+LATEX_HEADER: \usepackage{tikz}
* Tikz test
#+name: contents
#+header: :exports (if (and (boundp 'backend) (eq (org-export-backend-name backend) (intern "latex"))) "results" "none")
#+header: :results latex
#+begin_src latex
\begin{tikzpicture}
\node[red!50!black] (a) {A};
\node (b) [right of=a] {B};
\draw[->] (a) -- (b);
\end{tikzpicture}
#+end_src
#+header: :exports (if (and (boundp 'backend) (eq (org-export-backend-name backend) (intern "latex"))) "none" "results")
#+header: :results raw :file test.png
#+header: :imagemagick yes :iminoptions -density 600 :imoutoptions -geometry 400
#+header: :fit yes :noweb yes :headers '("\\usepackage{tikz}")
#+begin_src latex
<<contents>>
#+end_src
--8<---------------cut here---------------end--------------->8---
Regards,
Andreas
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-10 20:44 ` Andreas Leha
@ 2013-07-11 6:11 ` Eric Schulte
2013-07-11 8:38 ` Rasmus
2013-07-11 10:50 ` Andreas Leha
2013-07-11 7:21 ` Eric S Fraga
1 sibling, 2 replies; 22+ messages in thread
From: Eric Schulte @ 2013-07-11 6:11 UTC (permalink / raw)
To: Andreas Leha; +Cc: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 1209 bytes --]
>
> I updated the example again. Try this:
>
> --8<---------------cut here---------------start------------->8---
> #+LATEX_HEADER: \usepackage{tikz}
>
> * Tikz test
> #+name: contents
> #+header: :exports (if (and (boundp 'backend) (eq (org-export-backend-name backend) (intern "latex"))) "results" "none")
> #+header: :results latex
> #+begin_src latex
> \begin{tikzpicture}
> \node[red!50!black] (a) {A};
> \node (b) [right of=a] {B};
> \draw[->] (a) -- (b);
> \end{tikzpicture}
> #+end_src
>
> #+header: :exports (if (and (boundp 'backend) (eq (org-export-backend-name backend) (intern "latex"))) "none" "results")
> #+header: :results raw :file test.png
> #+header: :imagemagick yes :iminoptions -density 600 :imoutoptions -geometry 400
> #+header: :fit yes :noweb yes :headers '("\\usepackage{tikz}")
> #+begin_src latex
> <<contents>>
> #+end_src
> --8<---------------cut here---------------end--------------->8---
>
Building from this example, the attached patch to ob-latex.el combined
with the attached org-mode file should export the latex (tikz) code as
an inline SVG image to HTML and as embedded tikz to latex.
If this works generally I can commit the patch to ob-latex.el.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: tikz-pdf-svg.org --]
[-- Type: text/x-org, Size: 974 bytes --]
#+LATEX_HEADER: \usepackage{tikz}
First execute the second code block, to define the convenience macro
and to set the required new variables in ob-latex.el. Then export to
HTML and to pdf to see the tree exported as an SVG image and as
embedded tikz respectively.
* Tikz test
Here's a tree, exported to both html and pdf.
#+header: :file (by-backend (html "tree.svg") (t 'nil))
#+header: :results (by-backend (html "raw") (t "latex"))
#+begin_src latex
\usetikzlibrary{trees}
\begin{tikzpicture}
\node [circle, draw, fill=red!20] at (0,0) {1}
child { node [circle, draw, fill=blue!30] {2}
child { node [circle, draw, fill=green!30] {3} }
child { node [circle, draw, fill=yellow!30] {4} }};
\end{tikzpicture}
#+end_src
* COMMENT setup
#+begin_src emacs-lisp :results silent
(setq org-babel-latex-htlatex "htlatex")
(defmacro by-backend (&rest body)
`(case (if (boundp 'backend) (org-export-backend-name backend) nil) ,@body))
#+end_src
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0001-optional-svg-output-for-latex-code-blocks.patch --]
[-- Type: text/x-patch, Size: 3177 bytes --]
From 703ccbe2a4aeb87eaef4cfe0af2e9550877d09b0 Mon Sep 17 00:00:00 2001
From: Eric Schulte <schulte.eric@gmail.com>
Date: Thu, 11 Jul 2013 00:08:22 -0600
Subject: [PATCH] optional svg output for latex code blocks
* lisp/ob-latex.el (org-babel-latex-htlatex): Set this variable to
"htlatex" (or path to said) to enable svg generation from latex code
blocks.
(org-babel-latex-htlatex-packages): Libraries required for automatic
svg generation.
(org-babel-execute:latex): Generate SVG images directly from latex
code blocks (assumes tikz).
---
lisp/ob-latex.el | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/lisp/ob-latex.el b/lisp/ob-latex.el
index 94d5133..f916eb0 100644
--- a/lisp/ob-latex.el
+++ b/lisp/ob-latex.el
@@ -50,6 +50,17 @@
'((:results . "latex") (:exports . "results"))
"Default arguments to use when evaluating a LaTeX source block.")
+(defcustom org-babel-latex-htlatex nil
+ "The htlatex command to enable conversion of latex to SVG or HTML."
+ :group 'org-babel
+ :type 'string)
+
+(defcustom org-babel-latex-htlatex-packages
+ '("[usenames]{color}" "{tikz}" "{color}" "{listings}" "{amsmath}")
+ "Packages to use for htlatex export."
+ :group 'org-babel
+ :type '(list string))
+
(defun org-babel-expand-body:latex (body params)
"Expand BODY according to PARAMS, return the expanded body."
(mapc (lambda (pair) ;; replace variables
@@ -124,6 +135,39 @@ This function is called by `org-babel-execute-src-block'."
transient-pdf-file out-file im-in-options im-out-options)
(when (file-exists-p transient-pdf-file)
(delete-file transient-pdf-file))))))
+ ((and (or (string-match "\\.svg$" out-file)
+ (string-match "\\.html$" out-file))
+ org-babel-latex-htlatex)
+ (with-temp-file tex-file
+ (insert (concat
+ "\\documentclass[preview]{standalone}
+\\def\\pgfsysdriver{pgfsys-tex4ht.def}
+"
+ (mapconcat (lambda (pkg)
+ (concat "\\usepackage" pkg))
+ org-babel-latex-htlatex-packages
+ "\n")
+ "\\begin{document}"
+ body
+ "\\end{document}")))
+ (when (file-exists-p out-file) (delete-file out-file))
+ (let ((default-directory (file-name-directory tex-file)))
+ (shell-command (format "%s %s" org-babel-latex-htlatex tex-file)))
+ (cond
+ ((file-exists-p (concat (file-name-sans-extension tex-file) "-1.svg"))
+ (if (string-match "\\.svg$" out-file)
+ (progn
+ (shell-command "pwd")
+ (shell-command (format "mv %s %s"
+ (concat (file-name-sans-extension tex-file) "-1.svg")
+ out-file)))
+ (error "SVG file produced but HTML file requested.")))
+ ((file-exists-p (concat (file-name-sans-extension tex-file) ".html"))
+ (if (string-match "\\.html$" out-file)
+ (shell-command "mv %s %s"
+ (concat (file-name-base tex-file) ".html")
+ out-file)
+ (error "HTML file produced but SVG file requested.")))))
((string-match "\\.\\([^\\.]+\\)$" out-file)
(error "Can not create %s files, please specify a .png or .pdf file or try the :imagemagick header argument"
(match-string 1 out-file))))
--
1.8.3.2
[-- Attachment #4: Type: text/plain, Size: 55 bytes --]
Cheers,
--
Eric Schulte
http://cs.unm.edu/~eschulte
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-10 20:44 ` Andreas Leha
2013-07-11 6:11 ` Eric Schulte
@ 2013-07-11 7:21 ` Eric S Fraga
2013-07-11 15:58 ` Eric Schulte
1 sibling, 1 reply; 22+ messages in thread
From: Eric S Fraga @ 2013-07-11 7:21 UTC (permalink / raw)
To: Andreas Leha; +Cc: emacs-orgmode
Andreas Leha <andreas.leha@med.uni-goettingen.de> writes:
> Hi Eric,
>
[...]
> I updated the example again. Try this:
Brilliant. Thanks. This works perfectly. I can see the changes you've
made and they make sense (in hindsight for me) except for the (intern
"latex") bit... but this is probably to do with how eq works I guess.
Anyway, thanks again.
eric
--
: Eric S Fraga (0xFFFCF67D), Emacs 24.3.50.1, Org release_8.0.5-326-g325e40
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-11 6:11 ` Eric Schulte
@ 2013-07-11 8:38 ` Rasmus
2013-07-11 16:01 ` Eric Schulte
2013-07-11 10:50 ` Andreas Leha
1 sibling, 1 reply; 22+ messages in thread
From: Rasmus @ 2013-07-11 8:38 UTC (permalink / raw)
To: emacs-orgmode
Eric Schulte <schulte.eric@gmail.com> writes:
> Building from this example, the attached patch to ob-latex.el combined
> with the attached org-mode file should export the latex (tikz) code as
> an inline SVG image to HTML and as embedded tikz to latex.
>
> If this works generally I can commit the patch to ob-latex.el.
Looks good to me, although it would make ox-html depend on ox-latex
which may or may not be desirable. . . For instance math stuff is
handled internally by ox-html, it seems (correct me if I'm wrong).
While TikZ clearly is a LaTeX feature, producing SVGs are more of a
way of support this type of figures in html output, although it
depends on TeX binaries.
File links to tikz files [[file:pix.pgf]] (e.g. produced with R or
matplotlib) won't be understood with this patch. It should
automatically convert the picture to an svg figure, I think. Perhaps
support for file links can be added later.
—Rasmus
--
In theory, practice and theory are the same. In practice they are not
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-11 6:11 ` Eric Schulte
2013-07-11 8:38 ` Rasmus
@ 2013-07-11 10:50 ` Andreas Leha
2013-07-11 16:07 ` Eric Schulte
1 sibling, 1 reply; 22+ messages in thread
From: Andreas Leha @ 2013-07-11 10:50 UTC (permalink / raw)
To: emacs-orgmode
Hi Eric,
Eric Schulte <schulte.eric@gmail.com> writes:
>>
>> I updated the example again. Try this:
>>
>> --8<---------------cut here---------------start------------->8---
>> #+LATEX_HEADER: \usepackage{tikz}
>>
>> * Tikz test
>> #+name: contents
>> #+header: :exports (if (and (boundp 'backend) (eq (org-export-backend-name backend) (intern "latex"))) "results" "none")
>> #+header: :results latex
>> #+begin_src latex
>> \begin{tikzpicture}
>> \node[red!50!black] (a) {A};
>> \node (b) [right of=a] {B};
>> \draw[->] (a) -- (b);
>> \end{tikzpicture}
>> #+end_src
>>
>> #+header: :exports (if (and (boundp 'backend) (eq (org-export-backend-name backend) (intern "latex"))) "none" "results")
>> #+header: :results raw :file test.png
>> #+header: :imagemagick yes :iminoptions -density 600 :imoutoptions -geometry 400
>> #+header: :fit yes :noweb yes :headers '("\\usepackage{tikz}")
>> #+begin_src latex
>> <<contents>>
>> #+end_src
>> --8<---------------cut here---------------end--------------->8---
>>
>
> Building from this example, the attached patch to ob-latex.el combined
> with the attached org-mode file should export the latex (tikz) code as
> an inline SVG image to HTML and as embedded tikz to latex.
>
> If this works generally I can commit the patch to ob-latex.el.
>
> #+LATEX_HEADER: \usepackage{tikz}
>
> First execute the second code block, to define the convenience macro
> and to set the required new variables in ob-latex.el. Then export to
> HTML and to pdf to see the tree exported as an SVG image and as
> embedded tikz respectively.
>
> * Tikz test
> Here's a tree, exported to both html and pdf.
>
> #+header: :file (by-backend (html "tree.svg") (t 'nil))
> #+header: :results (by-backend (html "raw") (t "latex"))
> #+begin_src latex
> \usetikzlibrary{trees}
> \begin{tikzpicture}
> \node [circle, draw, fill=red!20] at (0,0) {1}
> child { node [circle, draw, fill=blue!30] {2}
> child { node [circle, draw, fill=green!30] {3} }
> child { node [circle, draw, fill=yellow!30] {4} }};
> \end{tikzpicture}
> #+end_src
>
> * COMMENT setup
> #+begin_src emacs-lisp :results silent
> (setq org-babel-latex-htlatex "htlatex")
> (defmacro by-backend (&rest body)
> `(case (if (boundp 'backend) (org-export-backend-name backend) nil) ,@body))
> #+end_src
> From 703ccbe2a4aeb87eaef4cfe0af2e9550877d09b0 Mon Sep 17 00:00:00 2001
> From: Eric Schulte <schulte.eric@gmail.com>
> Date: Thu, 11 Jul 2013 00:08:22 -0600
> Subject: [PATCH] optional svg output for latex code blocks
>
> * lisp/ob-latex.el (org-babel-latex-htlatex): Set this variable to
> "htlatex" (or path to said) to enable svg generation from latex code
> blocks.
> (org-babel-latex-htlatex-packages): Libraries required for automatic
> svg generation.
> (org-babel-execute:latex): Generate SVG images directly from latex
> code blocks (assumes tikz).
> ---
> lisp/ob-latex.el | 44 ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 44 insertions(+)
>
> diff --git a/lisp/ob-latex.el b/lisp/ob-latex.el
> index 94d5133..f916eb0 100644
> --- a/lisp/ob-latex.el
> +++ b/lisp/ob-latex.el
> @@ -50,6 +50,17 @@
> '((:results . "latex") (:exports . "results"))
> "Default arguments to use when evaluating a LaTeX source block.")
>
> +(defcustom org-babel-latex-htlatex nil
> + "The htlatex command to enable conversion of latex to SVG or HTML."
> + :group 'org-babel
> + :type 'string)
> +
> +(defcustom org-babel-latex-htlatex-packages
> + '("[usenames]{color}" "{tikz}" "{color}" "{listings}" "{amsmath}")
> + "Packages to use for htlatex export."
> + :group 'org-babel
> + :type '(list string))
> +
> (defun org-babel-expand-body:latex (body params)
> "Expand BODY according to PARAMS, return the expanded body."
> (mapc (lambda (pair) ;; replace variables
> @@ -124,6 +135,39 @@ This function is called by `org-babel-execute-src-block'."
> transient-pdf-file out-file im-in-options im-out-options)
> (when (file-exists-p transient-pdf-file)
> (delete-file transient-pdf-file))))))
> + ((and (or (string-match "\\.svg$" out-file)
> + (string-match "\\.html$" out-file))
> + org-babel-latex-htlatex)
> + (with-temp-file tex-file
> + (insert (concat
> + "\\documentclass[preview]{standalone}
> +\\def\\pgfsysdriver{pgfsys-tex4ht.def}
> +"
> + (mapconcat (lambda (pkg)
> + (concat "\\usepackage" pkg))
> + org-babel-latex-htlatex-packages
> + "\n")
> + "\\begin{document}"
> + body
> + "\\end{document}")))
> + (when (file-exists-p out-file) (delete-file out-file))
> + (let ((default-directory (file-name-directory tex-file)))
> + (shell-command (format "%s %s" org-babel-latex-htlatex tex-file)))
> + (cond
> + ((file-exists-p (concat (file-name-sans-extension tex-file) "-1.svg"))
> + (if (string-match "\\.svg$" out-file)
> + (progn
> + (shell-command "pwd")
> + (shell-command (format "mv %s %s"
> + (concat (file-name-sans-extension tex-file) "-1.svg")
> + out-file)))
> + (error "SVG file produced but HTML file requested.")))
> + ((file-exists-p (concat (file-name-sans-extension tex-file) ".html"))
> + (if (string-match "\\.html$" out-file)
> + (shell-command "mv %s %s"
> + (concat (file-name-base tex-file) ".html")
> + out-file)
> + (error "HTML file produced but SVG file requested.")))))
> ((string-match "\\.\\([^\\.]+\\)$" out-file)
> (error "Can not create %s files, please specify a .png or .pdf file or try the :imagemagick header argument"
> (match-string 1 out-file))))
> --
> 1.8.3.2
>
>
> Cheers,
This is very nice and works well for me. I would very much like to see
that in orgmode. Thanks a lot!
How do I extend your example to output latex for latex, svg for html and
png in all other cases?
I tried that simple combination with my previous example, which failed:
--8<---------------cut here---------------start------------->8---
#+LATEX_HEADER: \usepackage{tikz}
#+LATEX_HEADER: \usepackage{hyperref}
* Tikz test
Here's a tree, exported to both html and pdf.
#+header: :file (by-backend (html "tree.svg") (latex 'nil) (t "tree.png"))
#+header: :results (by-backend (html "raw") (latex "latex") (t "raw"))
#+header: (by-backend (html 'nil) (latex 'nil) (t :imagemagick yes :iminoptions -density 600 :imoutoptions -geometry 400 :fit yes :noweb yes :headers '("\\usepackage{tikz}")))
#+begin_src latex
\usetikzlibrary{trees}
\begin{tikzpicture}
\node [circle, draw, fill=red!20] at (0,0) {1}
child { node [circle, draw, fill=blue!30] {2}
child { node [circle, draw, fill=green!30] {3} }
child { node [circle, draw, fill=yellow!30] {4} }};
\end{tikzpicture}
#+end_src
#+results:
[[file:tree.png]]
* COMMENT setup
#+begin_src emacs-lisp :results silent
(setq org-babel-latex-htlatex "htlatex")
(defmacro by-backend (&rest body)
`(case (if (boundp 'backend) (org-export-backend-name backend) nil) ,@body))
#+end_src
--8<---------------cut here---------------end--------------->8---
Regards,
Andreas
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-11 7:21 ` Eric S Fraga
@ 2013-07-11 15:58 ` Eric Schulte
0 siblings, 0 replies; 22+ messages in thread
From: Eric Schulte @ 2013-07-11 15:58 UTC (permalink / raw)
To: Andreas Leha; +Cc: emacs-orgmode
Eric S Fraga <e.fraga@ucl.ac.uk> writes:
> Andreas Leha <andreas.leha@med.uni-goettingen.de> writes:
>
>> Hi Eric,
>>
>
> [...]
>
>> I updated the example again. Try this:
>
> Brilliant. Thanks. This works perfectly. I can see the changes you've
> made and they make sense (in hindsight for me) except for the (intern
> "latex") bit... but this is probably to do with how eq works I guess.
>
> Anyway, thanks again.
> eric
I actually dropped the intern bit from the previous approach.
I'm happy this looks useful, I will go ahead and commit.
--
Eric Schulte
http://cs.unm.edu/~eschulte
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-11 8:38 ` Rasmus
@ 2013-07-11 16:01 ` Eric Schulte
0 siblings, 0 replies; 22+ messages in thread
From: Eric Schulte @ 2013-07-11 16:01 UTC (permalink / raw)
To: Rasmus; +Cc: emacs-orgmode
Rasmus <rasmus@gmx.us> writes:
> Eric Schulte <schulte.eric@gmail.com> writes:
>
>
>> Building from this example, the attached patch to ob-latex.el combined
>> with the attached org-mode file should export the latex (tikz) code as
>> an inline SVG image to HTML and as embedded tikz to latex.
>>
>> If this works generally I can commit the patch to ob-latex.el.
>
> Looks good to me, although it would make ox-html depend on ox-latex
> which may or may not be desirable. . . For instance math stuff is
> handled internally by ox-html, it seems (correct me if I'm wrong).
> While TikZ clearly is a LaTeX feature, producing SVGs are more of a
> way of support this type of figures in html output, although it
> depends on TeX binaries.
>
Nope, this patch only touches ob-latex not ox-latex (easily mistaken
names).
>
> File links to tikz files [[file:pix.pgf]] (e.g. produced with R or
> matplotlib) won't be understood with this patch. It should
> automatically convert the picture to an svg figure, I think. Perhaps
> support for file links can be added later.
>
Correct. I think that users of R or gnuplot should use R or gnuplot to
produce SVG or PDF images directly. I don't think htlatex makes sense
in those use cases.
>
> —Rasmus
--
Eric Schulte
http://cs.unm.edu/~eschulte
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-11 10:50 ` Andreas Leha
@ 2013-07-11 16:07 ` Eric Schulte
2013-07-11 18:56 ` Andreas Leha
2013-07-11 22:33 ` Eric S Fraga
0 siblings, 2 replies; 22+ messages in thread
From: Eric Schulte @ 2013-07-11 16:07 UTC (permalink / raw)
To: Andreas Leha; +Cc: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 453 bytes --]
>
> This is very nice and works well for me. I would very much like to see
> that in orgmode. Thanks a lot!
>
Great, I've just committed this patch. Thanks for your original example
which this simply extends.
>
> How do I extend your example to output latex for latex, svg for html and
> png in all other cases?
>
The attached does this. The catch is that the :imagemagick header
argument is required for png (and other) image types to be used.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: tikz-pdf-svg.org --]
[-- Type: text/x-org, Size: 1043 bytes --]
#+LATEX_HEADER: \usepackage{tikz}
First execute the second code block, to define the convenience macro
and to set the required new variables in ob-latex.el. Then export to
HTML and to pdf to see the tree exported as an SVG image and as
embedded tikz respectively.
* Tikz test
Here's a tree, exported to both html and pdf.
#+header: :file (by-backend (html "tree.svg") (pdf 'nil) (t "tree.png"))
#+header: :imagemagick
#+header: :results (by-backend (pdf "latex") (t "raw"))
#+begin_src latex
\usetikzlibrary{trees}
\begin{tikzpicture}
\node [circle, draw, fill=red!20] at (0,0) {1}
child { node [circle, draw, fill=blue!30] {2}
child { node [circle, draw, fill=green!30] {3} }
child { node [circle, draw, fill=yellow!30] {4} }};
\end{tikzpicture}
#+end_src
#+RESULTS:
[[file:tree.png]]
* COMMENT setup
#+begin_src emacs-lisp :results silent
(setq org-babel-latex-htlatex "htlatex")
(defmacro by-backend (&rest body)
`(case (if (boundp 'backend) (org-export-backend-name backend) nil) ,@body))
#+end_src
[-- Attachment #3: Type: text/plain, Size: 55 bytes --]
Cheers,
--
Eric Schulte
http://cs.unm.edu/~eschulte
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-11 16:07 ` Eric Schulte
@ 2013-07-11 18:56 ` Andreas Leha
2013-07-11 19:03 ` Eric Schulte
2013-07-11 22:33 ` Eric S Fraga
1 sibling, 1 reply; 22+ messages in thread
From: Andreas Leha @ 2013-07-11 18:56 UTC (permalink / raw)
To: emacs-orgmode
Hi Eric,
Eric Schulte <schulte.eric@gmail.com> writes:
>>
>> This is very nice and works well for me. I would very much like to see
>> that in orgmode. Thanks a lot!
>>
>
> Great, I've just committed this patch. Thanks for your original example
> which this simply extends.
>
>>
>> How do I extend your example to output latex for latex, svg for html and
>> png in all other cases?
>>
>
> The attached does this. The catch is that the :imagemagick header
> argument is required for png (and other) image types to be used.
>
thanks for the quick answer. I am aware, that imagemagick is needed.
Let me rephrase my question using your example:
> #+LATEX_HEADER: \usepackage{tikz}
>
> First execute the second code block, to define the convenience macro
> and to set the required new variables in ob-latex.el. Then export to
> HTML and to pdf to see the tree exported as an SVG image and as
> embedded tikz respectively.
>
> * Tikz test
> Here's a tree, exported to both html and pdf.
>
> #+header: :file (by-backend (html "tree.svg") (pdf 'nil) (t "tree.png"))
> #+header: :imagemagick
I seem not to be able to apply (by-backend ) at the 'top-level, like so:
#+header: (by-backend (html 'nil) (pdf 'nil) (t ":imagemagick"))
Why is that?
Regards,
Andreas
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-11 18:56 ` Andreas Leha
@ 2013-07-11 19:03 ` Eric Schulte
2013-07-11 23:15 ` Andreas Leha
0 siblings, 1 reply; 22+ messages in thread
From: Eric Schulte @ 2013-07-11 19:03 UTC (permalink / raw)
To: Andreas Leha; +Cc: emacs-orgmode
> Thanks for the quick answer. I am aware, that imagemagick is needed.
> Let me rephrase my question using your example:
>
>> #+LATEX_HEADER: \usepackage{tikz}
>>
>> First execute the second code block, to define the convenience macro
>> and to set the required new variables in ob-latex.el. Then export to
>> HTML and to pdf to see the tree exported as an SVG image and as
>> embedded tikz respectively.
>>
>> * Tikz test
>> Here's a tree, exported to both html and pdf.
>>
>> #+header: :file (by-backend (html "tree.svg") (pdf 'nil) (t "tree.png"))
>> #+header: :imagemagick
>
> I seem not to be able to apply (by-backend ) at the 'top-level, like so:
>
> #+header: (by-backend (html 'nil) (pdf 'nil) (t ":imagemagick"))
>
> Why is that?
>
Because elisp evaluation is available for header argument *values*, not
for the entire header argument line. Instead you could do the
following, or just use the example in my previous email which sets
:imagemagick in all cases.
#+header: :imagemagick (by-backend ((html pdf) 'nil) (t "yes"))
Cheers,
--
Eric Schulte
http://cs.unm.edu/~eschulte
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-11 16:07 ` Eric Schulte
2013-07-11 18:56 ` Andreas Leha
@ 2013-07-11 22:33 ` Eric S Fraga
2013-07-12 0:20 ` Eric Schulte
1 sibling, 1 reply; 22+ messages in thread
From: Eric S Fraga @ 2013-07-11 22:33 UTC (permalink / raw)
To: Eric Schulte; +Cc: emacs-orgmode
Eric Schulte <schulte.eric@gmail.com> writes:
>>
>> This is very nice and works well for me. I would very much like to see
>> that in orgmode. Thanks a lot!
>>
>
> Great, I've just committed this patch. Thanks for your original example
> which this simply extends.
Thanks for this Eric! I've tried it out just now (on a real document)
and it works well.
I do have a problem in the SVG creation in that I need a special package
included to generate the figure in question. Time to search on the list
as I think this has come up before for LaTeX snippets.
Thanks again,
eric
--
: Eric S Fraga (0xFFFCF67D), Emacs 24.3.50.1, Org release_8.0.5-337-g9f3bed
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-11 19:03 ` Eric Schulte
@ 2013-07-11 23:15 ` Andreas Leha
0 siblings, 0 replies; 22+ messages in thread
From: Andreas Leha @ 2013-07-11 23:15 UTC (permalink / raw)
To: emacs-orgmode
Hi Eric,
Eric Schulte <schulte.eric@gmail.com> writes:
>> Thanks for the quick answer. I am aware, that imagemagick is needed.
>> Let me rephrase my question using your example:
>>
>>> #+LATEX_HEADER: \usepackage{tikz}
>>>
>>> First execute the second code block, to define the convenience macro
>>> and to set the required new variables in ob-latex.el. Then export to
>>> HTML and to pdf to see the tree exported as an SVG image and as
>>> embedded tikz respectively.
>>>
>>> * Tikz test
>>> Here's a tree, exported to both html and pdf.
>>>
>>> #+header: :file (by-backend (html "tree.svg") (pdf 'nil) (t "tree.png"))
>>> #+header: :imagemagick
>>
>> I seem not to be able to apply (by-backend ) at the 'top-level, like so:
>>
>> #+header: (by-backend (html 'nil) (pdf 'nil) (t ":imagemagick"))
>>
>> Why is that?
>>
>
> Because elisp evaluation is available for header argument *values*, not
> for the entire header argument line. Instead you could do the
> following, or just use the example in my previous email which sets
> :imagemagick in all cases.
>
> #+header: :imagemagick (by-backend ((html pdf) 'nil) (t "yes"))
>
> Cheers,
I understand. Thanks a lot for the clarification.
Regards,
Andreas
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-11 22:33 ` Eric S Fraga
@ 2013-07-12 0:20 ` Eric Schulte
2013-07-15 13:11 ` Eric S Fraga
2013-07-16 11:31 ` Eric S Fraga
0 siblings, 2 replies; 22+ messages in thread
From: Eric Schulte @ 2013-07-12 0:20 UTC (permalink / raw)
To: emacs-orgmode
Eric S Fraga <e.fraga@ucl.ac.uk> writes:
> Eric Schulte <schulte.eric@gmail.com> writes:
>
>>>
>>> This is very nice and works well for me. I would very much like to see
>>> that in orgmode. Thanks a lot!
>>>
>>
>> Great, I've just committed this patch. Thanks for your original example
>> which this simply extends.
>
> Thanks for this Eric! I've tried it out just now (on a real document)
> and it works well.
>
> I do have a problem in the SVG creation in that I need a special package
> included to generate the figure in question. Time to search on the list
> as I think this has come up before for LaTeX snippets.
>
My patch introduced a new variable `org-babel-latex-htlatex-packages'
which controls the packages added to these latex to SVG code block
snippets. The following should work.
(push "{your-package}" org-babel-latex-htlatex-packages)
--
Eric Schulte
http://cs.unm.edu/~eschulte
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-12 0:20 ` Eric Schulte
@ 2013-07-15 13:11 ` Eric S Fraga
2013-07-16 11:31 ` Eric S Fraga
1 sibling, 0 replies; 22+ messages in thread
From: Eric S Fraga @ 2013-07-15 13:11 UTC (permalink / raw)
To: Eric Schulte; +Cc: emacs-orgmode
Eric Schulte <schulte.eric@gmail.com> writes:
[...]
> My patch introduced a new variable `org-babel-latex-htlatex-packages'
> which controls the packages added to these latex to SVG code block
> snippets. The following should work.
>
> (push "{your-package}" org-babel-latex-htlatex-packages)
Yes, thanks, I found this soon afterwards by carefully reading your
previous email!
I still have some problems but I think they are due to my various other
customisations.
Thanks again,
eric
--
: Eric S Fraga (0xFFFCF67D), Emacs 24.3.50.1, Org release_8.0.6-333-gca5623
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-12 0:20 ` Eric Schulte
2013-07-15 13:11 ` Eric S Fraga
@ 2013-07-16 11:31 ` Eric S Fraga
2013-07-16 12:26 ` Andreas Leha
1 sibling, 1 reply; 22+ messages in thread
From: Eric S Fraga @ 2013-07-16 11:31 UTC (permalink / raw)
To: Eric Schulte; +Cc: emacs-orgmode
Hi Eric et al.,
I now have a system I am happy with mostly for using LaTeX code blocks
heading to multiple export targets. The solution I am using is a
combination of what has been discussed in this thread (by-backend
customisation of headers for babel) and using noweb substitution for the
main content. I have two LaTeX babel source blocks, one for PDF export
and the other for HTML export. Each of these has a tikzpicture
environment which then includes the actual instructions for drawing
brought in using noweb.
The problem I have remaining is how to get the version used to export to
PDF via LaTeX to use a figure environment with captioning. I had
thought that something along these lines would work:
#+begin_src org
,#+name: picturecontents
,#+begin_src latex :noweb yes :exports none
\node[red!50!black] (a) {A};
\node (b) [right of=a] {B};
\draw[->] (a) -- (b);
,#+end_src
,#+name: flowdiagram
,#+header: :exports (if (and (boundp 'backend) (eq (org-export-backend-name backend) (intern "latex"))) "results" "none")
,#+header: :results latex
,#+header: :noweb yes
,#+begin_src latex
\begin{tikzpicture}
<<picturecontents>>
\end{tikzpicture}
,#+end_src
,#+caption: Testing figure caption for figure going to multiple destinations
,#+results: flowdiagram
#+end_src
as I expected the export to put the results of the flowdiagram code
block after the results line. This doesn't work: the exported LaTeX
has no figure environment etc. The diagram does come out but it is
placed directly into the document.
I hope this all makes sense? Any suggestions?
thanks,
eric
--
: Eric S Fraga (0xFFFCF67D), Emacs 24.3.50.1, Org release_8.0.5-337-g9f3bed
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-16 11:31 ` Eric S Fraga
@ 2013-07-16 12:26 ` Andreas Leha
2013-07-16 15:18 ` Eric S Fraga
0 siblings, 1 reply; 22+ messages in thread
From: Andreas Leha @ 2013-07-16 12:26 UTC (permalink / raw)
To: emacs-orgmode
Hi Eric,
Eric S Fraga <e.fraga@ucl.ac.uk> writes:
> Hi Eric et al.,
>
> I now have a system I am happy with mostly for using LaTeX code blocks
> heading to multiple export targets. The solution I am using is a
> combination of what has been discussed in this thread (by-backend
> customisation of headers for babel) and using noweb substitution for the
> main content. I have two LaTeX babel source blocks, one for PDF export
> and the other for HTML export. Each of these has a tikzpicture
> environment which then includes the actual instructions for drawing
> brought in using noweb.
>
> The problem I have remaining is how to get the version used to export to
> PDF via LaTeX to use a figure environment with captioning. I had
> thought that something along these lines would work:
>
> #+begin_src org
> ,#+name: picturecontents
> ,#+begin_src latex :noweb yes :exports none
> \node[red!50!black] (a) {A};
> \node (b) [right of=a] {B};
> \draw[->] (a) -- (b);
> ,#+end_src
>
> ,#+name: flowdiagram
> ,#+header: :exports (if (and (boundp 'backend) (eq (org-export-backend-name backend) (intern "latex"))) "results" "none")
> ,#+header: :results latex
> ,#+header: :noweb yes
> ,#+begin_src latex
> \begin{tikzpicture}
> <<picturecontents>>
> \end{tikzpicture}
> ,#+end_src
>
> ,#+caption: Testing figure caption for figure going to multiple destinations
> ,#+results: flowdiagram
> #+end_src
>
> as I expected the export to put the results of the flowdiagram code
> block after the results line. This doesn't work: the exported LaTeX
> has no figure environment etc. The diagram does come out but it is
> placed directly into the document.
>
> I hope this all makes sense? Any suggestions?
>
> thanks,
> eric
I actually think, that it would be cool, if latex supported the tikz
output as R does.
But since you have a dedicated latex export-only block, the simplest
solution would be to put the caption inside:
--8<---------------cut here---------------start------------->8---
#+latex_header: \usepackage{tikz}
#+latex_header: \usepackage{hyperref}
* Test
#+name: picturecontents
#+begin_src latex :noweb yes :exports none
\node[red!50!black] (a) {A};
\node (b) [right of=a] {B};
\draw[->] (a) -- (b);
#+end_src
#+name: flowdiagram
#+header: :exports (if (and (boundp 'backend) (eq (org-export-backend-name backend) (intern "latex"))) "results" "none")
#+header: :results latex
#+header: :noweb yes
#+begin_src latex
\begin{figure}
\begin{tikzpicture}
<<picturecontents>>
\end{tikzpicture}
\caption{Testing figure caption for figure going to multiple destinations}
\end{figure}
#+end_src
--8<---------------cut here---------------end--------------->8---
Regards,
Andreas
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: tikz for multiple targets
2013-07-16 12:26 ` Andreas Leha
@ 2013-07-16 15:18 ` Eric S Fraga
0 siblings, 0 replies; 22+ messages in thread
From: Eric S Fraga @ 2013-07-16 15:18 UTC (permalink / raw)
To: Andreas Leha; +Cc: emacs-orgmode
Andreas Leha <andreas.leha@med.uni-goettingen.de> writes:
[...]
> But since you have a dedicated latex export-only block, the simplest
> solution would be to put the caption inside:
D'uh! That is so obvious (in hindsight ;-) <blush>... thanks!
--
: Eric S Fraga (0xFFFCF67D), Emacs 24.3.50.1, Org release_8.0.5-337-g9f3bed
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2013-07-16 15:31 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-09 22:34 tikz for multiple targets Eric S Fraga
2013-07-10 9:50 ` Rasmus
2013-07-10 9:54 ` Rasmus
2013-07-10 10:16 ` Fabrice Popineau
2013-07-10 10:56 ` Eric S Fraga
2013-07-10 20:44 ` Andreas Leha
2013-07-11 6:11 ` Eric Schulte
2013-07-11 8:38 ` Rasmus
2013-07-11 16:01 ` Eric Schulte
2013-07-11 10:50 ` Andreas Leha
2013-07-11 16:07 ` Eric Schulte
2013-07-11 18:56 ` Andreas Leha
2013-07-11 19:03 ` Eric Schulte
2013-07-11 23:15 ` Andreas Leha
2013-07-11 22:33 ` Eric S Fraga
2013-07-12 0:20 ` Eric Schulte
2013-07-15 13:11 ` Eric S Fraga
2013-07-16 11:31 ` Eric S Fraga
2013-07-16 12:26 ` Andreas Leha
2013-07-16 15:18 ` Eric S Fraga
2013-07-11 7:21 ` Eric S Fraga
2013-07-11 15:58 ` Eric Schulte
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.