2011-09-19 12 views
5

Ho un file org con codice sorgente, documentazione e latex. Il materiale in lattice disegna un mucchio di grafici che spiegano come le funzioni interagiscono tra loro. Secondo,org-mode html export

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

org-mode dovrebbe esportare il codice lattice come immagini quando si utilizza l'esportazione 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 

funziona soprattutto se uso pdf esportazione così la mia messa a punto lattice sta lavorando anche dvipng è presente sul mio sistema, ma durante l'esportazione in blocco HTML lattice viene completamente ignorato.

+1

Mi chiedo che cosa ti aspetti dall'esportatore html. – kindahero

+1

@kindahero, di certo non mi aspetto che mi faccia una tazza di caffè, ma mi aspetto che renderà il grafico con dvipng e lo incorpori nell'html. –

+0

Quindi suppongo che dovresti usare babel http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-LaTeX.html – kindahero

risposta

2

non ero in grado di fare blocchi tikzpicture lavorando ma #+begin_latex e #+end_latex non dovrebbe essere utilizzato, come detto nel tuo link alla documentazione Org-Mode, è necessario solo \begin{...} LATEX_CODE end{...}.

Questo snippet dovrebbe funzionare.

#+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 non gestisce tikz. Ho lavorato intorno a questo sulla mia installazione, sostituendo dvipng con il seguente script di shell:

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

Ora, posso vedere in anteprima un frammento tikz con C-x C-c C-l, o esportarlo in formato HTML. Non è una soluzione ideale, ma funziona per me.

+0

Hai fortuna con questo, o stai ancora usando la stessa soluzione? Non posso farlo funzionare. –

7

sono stato in grado di esportare un quadro tikz da org in html (in realtà, a reveal.js utilizzando [org-rivelare] [1]) da org 8.2.5h con il seguente

#+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 spero che sia utile Senza la riga #+LaTeX_Header, il processo LaTeX non è in grado di includere tikz e la compilazione fallisce. Se provo tex:dvipng anziché tex:imagemagick, quindi ottengo un'immagine, ma uno erroneamente ne ha eseguito uno.

+0

è esattamente quello che ho cercato per tutto il giorno (anche per farlo funzionare in org-reveal btw)! – rockt

4

Con le versioni recenti di Org-mode (ancora più vecchia della versione 9 --- vedi modifica sotto), è possibile utilizzare qualcosa di simile al seguente, che può esportare in LaTeX e in HTML. In quest'ultimo caso, convert (dal toolkit ImageMagick) viene utilizzato per tradurre un PDF generato dallo snippet di codice tikz in un'immagine PNG di dimensioni 100 px per 100 px.

#+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: 

Inoltre, si può aggiungere un sottotitolo e inserire l'immagine in un galleggiante figure ambiente in lattice base:

#+caption: A diamond. 
#+attr_latex: :float t :width "" 
#+results: diamond 

Nota l'attributo :width è impostato sulla stringa vuota per cancellare la comportamento predefinito della modalità Org, che imposta la larghezza dell'immagine su 0.9\textwidth durante l'esportazione in LaTeX.


Secondo this page, è anche possibile esportare le immagini in formato SVG, invece di PNG, semplicemente sostituendo diamond.png da diamond.svg e rimuovendo le intestazioni ImageMagick-correlati, come in:

#+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, tuttavia, che questa soluzione non supporta macro matematiche nel codice tikz così com'è. htlatex dovrebbe supportare i costrutti matematici di base (da provare annullando i commenti sulle linee 2 tikz e lisp sopra), ma questa funzione ha bisogno di qualche rielaborazione apparentemente, poiché l'SVG risultante non è valido.


Modifica

Dalla versione 9, il codice precedente diventa (con riferimento alla figura, per scopi illustrativi):

#+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: 

Le principali differenze sono nella "COMMENTO "diventando un tag": noexport "per la sezione di configurazione (vedere this answer), il codice della macro by-backend e l'attributo" graphics "per il risultato del blocco di codice latex.

+0

Ciao, potresti dire cosa è 'latex +' esatto? – DJJ

+0

'# + PROPERTY: header-args: latex + ' aggiunge ' 'agli argomenti dell'header chiamati' header-args: latex'. Questo è in qualche modo "indovinato" [nei documenti] (http://orgmode.org/manual/Property-syntax.html#Property-syntax) (anche se sono d'accordo che potrebbe essere migliorato). – nberth

+0

Fantastico !!! Stavo lavorando su una soluzione per OrgMode9 per poche ore ... –