Re: [O] patch for latex-tikz

2013-07-18 Thread Eric S Fraga
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

2013-07-17 Thread Andreas Leha
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

2013-07-17 Thread Eric Schulte
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

2013-07-17 Thread Andreas Leha
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