Hi Eric,

Eric S Fraga <e.fr...@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


Reply via email to