Re: [O] patch for latex-tikz
Andreas Leha andreas.l...@med.uni-goettingen.de writes: Hi all, attached is a small patch that makes it possible to 'evaluate' latex source blocks to tikz files. Thanks for this. Just what I needed! -- : Eric S Fraga (0xFFFCF67D), Emacs 24.3.50.1, Org release_8.0.5-337-g9f3bed
[O] patch for latex-tikz
Hi all, attached is a small patch that makes it possible to 'evaluate' latex source blocks to tikz files. When the :file header argument has a value ending in '.tikz' the content of the body of the source block will be copied into the resulting tikz file. This makes handling of tikz figures with captions easier. Here is a use-case: --8---cut here---start-8--- #+latex_header: \usepackage{tikz} * 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 results #+header: :imagemagick (if (and (boundp 'backend) (eq (org-export-backend-name backend) (intern latex))) no yes) #+header: :fit (if (and (boundp 'backend) (eq (org-export-backend-name backend) (intern latex))) no yes) #+header: :results raw :file (if (and (boundp 'backend) (eq (org-export-backend-name backend) (intern latex))) flowdiagram.tikz flowdiagram.png) #+header: :headers \\usepackage{tikz} #+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 [[file:flowdiagram.png]] --8---cut here---end---8--- This example works well besides some weird scaling/placement issue. Regards, Andreas From 1d9c381c309a3a72b5d9feb3db28cdaed920c16d Mon Sep 17 00:00:00 2001 From: Andreas Leha andr...@lehas.net Date: Wed, 17 Jul 2013 16:45:32 +0200 Subject: [PATCH] add *.tikz files as possible result files for latex blocks * lisp/ob-latex.el (org-babel-execute:latex) add a tizk option that copies the body of the block into a tikz file --- lisp/ob-latex.el |6 +- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/ob-latex.el b/lisp/ob-latex.el index f916eb0..f9216e1 100644 --- a/lisp/ob-latex.el +++ b/lisp/ob-latex.el @@ -95,7 +95,11 @@ This function is called by `org-babel-execute-src-block'. ((and (string-match \\.png$ out-file) (not imagemagick)) (org-create-formula-image body out-file org-format-latex-options in-buffer)) - ((or (string-match \\.pdf$ out-file) imagemagick) + ((string-match \\.tikz$ out-file) + (when (file-exists-p out-file) (delete-file out-file)) + (with-temp-file out-file + (insert body))) + ((or (string-match \\.pdf$ out-file) imagemagick) (with-temp-file tex-file (require 'ox-latex) (insert -- 1.7.10.4
Re: [O] patch for latex-tikz
Andreas Leha andreas.l...@med.uni-goettingen.de writes: Hi all, attached is a small patch that makes it possible to 'evaluate' latex source blocks to tikz files. Applied, thanks. When the :file header argument has a value ending in '.tikz' the content of the body of the source block will be copied into the resulting tikz file. This makes handling of tikz figures with captions easier. Here is a use-case: [...] This example works well besides some weird scaling/placement issue. The best way I've found to deal with scaling/placement of raw or inline tikz is to use the subcaption and adjustbox packages as in the following example. % latex \begin{figure} \centering \begin{minipage}[b]{0.32\linewidth} \adjustbox{width=1.0\linewidth}{ \begin{tikzpicture} % ... \end{tikzpicture} } \subcaption{\small part 1} \end{minipage} \begin{minipage}[b]{0.32\linewidth} \adjustbox{width=1.0\linewidth}{ \begin{tikzpicture} % ... \end{tikzpicture} } \subcaption{\small part 2} \end{minipage} \begin{minipage}[b]{0.32\linewidth} \adjustbox{width=1.0\linewidth}{ \begin{tikzpicture} % ... \end{tikzpicture} } \subcaption{\small part 3} \end{minipage} \caption{Example with three sub-parts} \label{fig:example} \end{figure} -- Eric Schulte http://cs.unm.edu/~eschulte
Re: [O] patch for latex-tikz
Hi Eric, Eric Schulte schulte.e...@gmail.com writes: Andreas Leha andreas.l...@med.uni-goettingen.de writes: Hi all, attached is a small patch that makes it possible to 'evaluate' latex source blocks to tikz files. Applied, thanks. When the :file header argument has a value ending in '.tikz' the content of the body of the source block will be copied into the resulting tikz file. This makes handling of tikz figures with captions easier. Here is a use-case: [...] This example works well besides some weird scaling/placement issue. The best way I've found to deal with scaling/placement of raw or inline tikz is to use the subcaption and adjustbox packages as in the following example. % latex \begin{figure} \centering \begin{minipage}[b]{0.32\linewidth} \adjustbox{width=1.0\linewidth}{ \begin{tikzpicture} % ... \end{tikzpicture} } \subcaption{\small part 1} \end{minipage} \begin{minipage}[b]{0.32\linewidth} \adjustbox{width=1.0\linewidth}{ \begin{tikzpicture} % ... \end{tikzpicture} } \subcaption{\small part 2} \end{minipage} \begin{minipage}[b]{0.32\linewidth} \adjustbox{width=1.0\linewidth}{ \begin{tikzpicture} % ... \end{tikzpicture} } \subcaption{\small part 3} \end{minipage} \caption{Example with three sub-parts} \label{fig:example} \end{figure} thanks for the pointer. I was not aware of the adjustbox package before. Definitely interesting. Playing with it I found the flaw in my patch. The inclusion of [[foo.tikz]] is wrapped in \begin{tikzpicture} ... \end{tikzpicture} already during LaTeX export. So, exporting my example to latex gives a nested tikzpicture. There is nothing wrong with that, but the outer tikzpicture has these scaling options, hence the wrong placement/scaling. The code block that is going to tikz should, thus, *not* contain the \begin{tikzpicture} and \end{tikzpicture} directives. That might not render my patch completely useless, but limits its use at least. I was hoping for one and the same latex code block to be evaluated to tikz/pdf/svg/imagemagick giving (more ore less) the same resulting image in each. In the moment that is not the case. To clarify this: --8---cut here---start-8--- # can be evaluated to tikz (to export to latex) #+begin_src latex picturecontents #+end_src # can be evaluated to pdf/svg/imagemagick #+begin_src latex \begin{tikzpicture} picturecontents \end{tikzpicture} #+end_src --8---cut here---end---8--- Regards, Andreas