pdf format or raster graph of png format. Furthermore, you can export the vector graph when latex is called and otherwise raster graph.
1 config the header args
You can embed TiKz (One of \(\LaTeX\) graphic package) code into a Org file. With org-babel, you can generate ,insert and export the figure generated from Tikz package. At first, you need set up the environment. This Post serves as a good introduction for beginners. Following it you may have a minimum working example like below:
#+name: tutorial
#+header: :file "~/Dropbox/mstemc_hugo/static/img/tikz/tutorial.png"
#+header: :results raw :exports none :fit yes :border 0cm
#+header: :imagemagick t :iminoptions -density 400
#+header: :imoutoptions -geometry 400 -flatten
#+header: :headers '("\\usepackage{tikz} \\usetikzlibrary{positioning,
shapes.symbols, calc}")
#+begin_src latex
\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: tutorial
[[file:../../img/tikz/tutorial.png]]
The example begins with several lines containing #+header which is sort of
clutter. we can put them in a file and include it at the beginning of the Org
file.
2 generate results with different formats
By changing the extension of :file (which is pdf for
"../../img/tikz/tutorial.pdf" ), we can generate results with different formats.
Now, I need pdf and png . You can see the result by just press C-c C-c in the
body of the tikz code.
3 export the results according to the backend
You can set :exports to control how the results will be exported. Now I set it
as none which means the result will not be exported to latex or other format. I
want to set more options of the exports. So I use:
#+ATTR_HTML: :width 800 :align center
#+ATTR_LATEX: :width 0.8\textwidth :align center
{{{if-latex(tutorial.pdf,tutorial.png)}}}
if-latex is a Org MACRO whose definition is :
#+MACRO: if-latex (eval (if
(org-export-derived-backend-p org-export-current-backend 'latex)
(concat "[[file:../../img/tikz/" $1 "]]")
(concat "[[file:../../img/tikz/" $2 "]]") ))
The if-latex MACRO let you export different formats by the backend. If the
backend is latex then, pdf format figure will be exported. Otherwise, png format
figure. Eventually, in the final pdf document, you figure can be zoomed in or
out without losing any resolution.
4 the final workflow
The minimum working example at the start of this post is simplifed as below.
#+header: :file "../../img/tikz/tutorial.pdf"
#+begin_src latex
\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:../../img/tikz/tutorial.png]]
The following is the generated figure.
#+ATTR_HTML: :width 800 :align center
#+ATTR_LATEX: :width 0.8\textwidth :align center
{{{if-latex(tutorial.pdf,tutorial.png)}}}
Many settings are grouped into a setup file which is included at the top of this post:
#+SETUPFILE: ~/.spacemacs.d/org-templates/math-en.org
Now, If you set the extension of the target file in the first line either pdf or
png , a corresponding pdf or png figure will be generated. If execute M-x
org-toggle-inline-images , you can preview the result. If export the org-file
as latex file then the pdf file, the image of pdf format will be inserted. If
export to other format, png image will be used.