Con las versiones recientes de Org-mode (aún, anterior a la versión 9 --- vea la edición a continuación), podría usar algo como lo siguiente, que puede exportar tanto a LaTeX como a HTML. En este último caso, convert
(del kit de herramientas ImageMagick) se utiliza para traducir un PDF generado a partir del fragmento de código tikz en una imagen PNG de tamaño 100px por 100px.
#+TITLE: Test
#+AUTHOR: Blah
#+LATEX_CLASS: article
#+LATEX_CLASS_OPTIONS: [american]
#
# Setup tikz package for both LaTeX and HTML export:
#+LATEX_HEADER: \usepackage{tikz}
#+PROPERTY: header-args:latex+ :packages '(("" "tikz"))
#
#+PROPERTY: header-args:latex+ :imagemagick (by-backend (latex nil) (t "yes"))
#+PROPERTY: header-args:latex+ :exports results :fit yes
* One Diamond
#+name: diamond
#+header: :iminoptions -density 600 -resample 100x100
#+header: :file (by-backend (latex "diamond.tikz") (t "diamond.png"))
#+begin_src latex :results raw file
\begin{tikzpicture}
\draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle;
\end{tikzpicture}
#+end_src
#+attr_latex: :float nil :width ""
#+results: diamond
* COMMENT setup
#+name: setup
#+begin_src emacs-lisp :results silent :exports none
(defmacro by-backend (&rest body)
`(case (if (boundp 'backend) (org-export-backend-name backend) nil) ,@body))
#+end_src
# Local variables:
# eval: (org-sbe "setup")
# End:
Además, se puede añadir un título, e insertar la imagen en un figure
entorno flotando en LaTeX, mediante el uso de:
#+caption: A diamond.
#+attr_latex: :float t :width ""
#+results: diamond
Nota atributo :width
se establece en la cadena vacía para borrar la comportamiento predeterminado de Org-mode, que establece el ancho de la imagen en 0.9\textwidth
al exportar a LaTeX.
Según this page, también es posible exportar imágenes en SVG en lugar de PNG, simplemente sustituyendo diamond.png
por diamond.svg
y eliminar encabezados relacionados con ImageMagick, como en:
#+TITLE: Test
#+AUTHOR: Blah
#+LATEX_CLASS: article
#+LATEX_CLASS_OPTIONS: [american]
#
# Setup tikz package for both LaTeX and HTML export:
#+LATEX_HEADER: \usepackage{tikz}
#+PROPERTY: header-args:latex+ :packages '(("" "tikz"))
#
#+PROPERTY: header-args:latex+ :exports results
* One Diamond
#+name: diamond
#+header: :file (by-backend (latex "diamond.tikz") (t "diamond.svg"))
#+begin_src latex :results raw file
\begin{tikzpicture}
\draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle;
% \node at (0,0) {\(x_i\)};
\end{tikzpicture}
#+end_src
#+caption: A diamond.
#+attr_latex: :float t :width ""
#+results: diamond
* COMMENT setup
#+name: setup
#+begin_src emacs-lisp :results silent :exports none
;; (setq org-babel-latex-htlatex "htlatex")
(defmacro by-backend (&rest body)
`(case (if (boundp 'backend) (org-export-backend-name backend) nil) ,@body))
#+end_src
# Local variables:
# eval: (org-sbe "setup")
# End:
Nota sin embargo, que esta solución no admite macros matemáticas en código tikz como está. htlatex
debe ser compatible con las construcciones matemáticas básicas (se probará si no se comentan las 2 líneas de tikz y lisp anteriores), pero esta función necesita un nuevo trabajo aparentemente, ya que el SVG resultante no es válido.
Editar
Desde la versión 9, el código anterior se convierte en (con referencia a la figura, para fines ilustrativos):
#+TITLE: Test
#+AUTHOR: Blah
#+LATEX_CLASS: article
#+LATEX_CLASS_OPTIONS: [american]
#
# Setup tikz package for both LaTeX and HTML export:
#
#+LATEX_HEADER: \usepackage{tikz}
#+PROPERTY: header-args:latex+ :packages '(("" "tikz"))
#+PROPERTY: header-args:latex+ :imagemagick yes :fit yes
* One Diamond
#+name: diamond
#+header: :iminoptions -density 600 -resample 100x100
#+header: :file (by-backend (latex "diamond.tikz") (t "diamond.png"))
#+begin_src latex :results raw graphics
\begin{tikzpicture}
\draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle;
\end{tikzpicture}
#+end_src
#+name: fig:diamond
#+caption: A diamond.
#+attr_latex: :float t :width ""
#+results: diamond
Figure [[fig:diamond]] is a diamond.
* Setup :noexport:
#+name: setup
#+begin_src emacs-lisp :exports none :results silent
(defmacro by-backend (&rest body)
`(case org-export-current-backend ,@body))
#+end_src
# Local variables:
# eval: (org-sbe "setup")
# End:
Las diferencias principales están en el "COMENTARIO "convirtiéndose en una etiqueta": noexport "para la sección de configuración (consulte this answer), el código de macro by-backend
y el atributo" gráficos "para el resultado del bloque de código de látex.
Me pregunto qué esperas del exportador html. – kindahero
@kindahero, ciertamente no espero que me prepare una taza de café, pero sí espero que represente el gráfico con dvipng e incrústelo en el html. –
Entonces supongo que deberías usar babel http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-LaTeX.html – kindahero