h...@heagren.com writes: > Is there a way around this? Either to export the src block another way, > or to add metadata to the to the resulting EXPORT block (or just text, > though I'm not sure how that would work for `:packages', since they > require text to be added to the resulting exported LaTeX file in a > different place from where the text of the block goes).
If I have understood correctly what you want to do, maybe a solution would be this. You can starting from a single block that includes the preamble for both preview and export: #+NAME: preamble #+begin_src latex :exports none \usepackage{tikz} \usetikzlibrary{calc,positioning,patterns} #+end_src This block returns the above as a simple string: #+NAME: pre #+begin_src emacs-lisp :exports none :results silent :var x = preamble (with-temp-buffer (insert x) (LaTeX-mode) (setq preamble-prev (buffer-string))) #+end_src And this one adds the necessary LaTeX headers when you export the document, so LaTeX doesn't crash when compiling. #+begin_src latex :noweb yes :results raw ,#+LaTeX_HEADER: <<preamble>> #+end_src And the final block: #+header: :results (if (org-export-derived-backend-p org-export-current-backend 'latex) "latex" "file raw") #+header: :file (if (org-export-derived-backend-p org-export-current-backend 'latex) nil "foo.png") #+header: :imagemagick t :fit t #+header: :headers `(,(progn (org-babel-ref-resolve "pre") preamble-prev)) #+begin_src latex \begin{tikzpicture}[on grid, font=\footnotesize, level distance=2.5cm, sibling distance=2.5cm, every node/.style={circle,draw,fill=white}, touch/.style={circle,draw=red!100,fill=red!40,thick}, invirtueof/.style={circle,draw=red!50,fill=red!20,very thick}] \node [invirtueof] {Car} child {node {wheel}} child {node [invirtueof] {body} child {node {driver door}} child {node [invirtueof] {passenger door} child {node [touch] {region of door}}}}; \end{tikzpicture} #+end_src #+RESULTS: [[file:foo.png]] Best regards, Juan Manuel