2011-09-19 19 views
5

Tengo un archivo org con fuente, documentación y código de látex. Las cosas de látex dibujan un montón de gráficos que explican cómo las funciones interactúan entre sí. De acuerdo con,org-mode html export

http://orgmode.org/manual/LaTeX-fragments.html

org-mode debe exportar código de látex como imágenes cuando se utiliza la exportación HTML.

#+TITLE: Test 
#+AUTHOR: Blah 
#+LATEX_HEADER: \usepackage{tikz} 
#+OPTIONS: LaTeX:dvipng 

#+begin_latex 

    \begin{tikzpicture} 
    \draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle; 
    \end{tikzpicture} 

#+end_latex 

anterior funciona si uso exportación PDF para configurar mi látex está trabajando también dvipng está presente en mi sistema, pero cuando se exporta al bloque de látex HTML está completamente ignorado.

+1

Me pregunto qué esperas del exportador html. – kindahero

+1

@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. –

+0

Entonces supongo que deberías usar babel http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-LaTeX.html – kindahero

Respuesta

2

yo no era capaz de hacer bloques tikzpicture trabajando pero #+begin_latex y #+end_latex no deben ser el uso, como se ha dicho en su enlace a la documentación Org-Mode, solamente se requiere \begin{...} LATEX_CODE end{...}.

Este fragmento debería funcionar.

#+OPTIONS:  LaTeX:dvipng 
* Test 
    Blah 

    \begin{equation}       % arbitrary environments, 
    x=\sqrt{b}        % even tables, figures 
    \end{equation}       % etc 

    If $a^2=b$ and \(b=2 \), then the solution must be either $$ 
    a=+\sqrt{2} $$ or \[ a=-\sqrt{2} \]. 

    Done ! 
3

dvipng no funciona con tikz. He trabajado en torno a esto en mi instalación mediante la sustitución de dvipng con la siguiente secuencia de comandos shell:

#! /bin/bash 
shift 
shift 
dvips $9 
gm convert -trim $9 ${9/dvi/png} 

Ahora, puede obtener una vista previa de un fragmento TikZ con C-x C-C-C l, o exportarlo a HTML. No es una solución ideal, pero funciona para mí.

+0

¿Alguna suerte con esto, o sigues usando la misma solución? No puedo hacer que esto funcione. –

7

I fue capaz de exportar una imagen TikZ de org a html (en realidad, a reveal.js utilizando [org-revelar] [1]) a partir de org 8.2.5h con la siguiente

#+OPTIONS: tex:imagemagick 
#+LaTeX_HEADER: \usepackage{tikz} 

* Slide Title 

\begin{tikzpicture} 
    \draw [blue,fill] (0,0) rectangle (5,3); 
    \draw [red,fill] (0,0) rectangle (3,2); 
\end{tikzpicture} 

I Espero que sea útil. Sin la línea #+LaTeX_Header, el proceso LaTeX no sabe incluir tikz y falla la compilación. Si intento tex:dvipng en lugar de tex:imagemagick, aparece una imagen, pero aparece incorrectamente.

+0

eso es exactamente lo que he estado buscando todo el día (¡también para que funcione en org-reveal por cierto)! – rockt

4

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.

+0

Hola, ¿podría decirnos qué es 'latex +' exaclty? – DJJ

+0

'# + PROPERTY: header-args: latex + ' anexa '' a los argumentos del encabezado denominados 'header-args: latex'. Esto es de alguna manera "adivinable" [en los documentos] (http://orgmode.org/manual/Property-syntax.html#Property-syntax) (aunque acepto que esto podría mejorarse). – nberth

+0

¡¡¡Impresionante !!! Estaba trabajando en una solución para OrgMode9 durante unas horas ... –

Cuestiones relacionadas