2011-09-19 13 views
5

Mam plik org z kodem źródłowym, dokumentacyjnym i lateksowym. Rzeczy lateksowe rysują kilka wykresów wyjaśniających, w jaki sposób funkcje współdziałają ze sobą. Według,eksport w trybie org. Eksport html

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

org-mode powinna eksportować kod lateksowej jako obrazy przy użyciu eksportu 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 

Przede działa, jeśli mogę użyć eksport pdf więc mój setup lateks pracuje również dvipng jest obecny w moim systemie, ale przy eksporcie do bloku html lateks jest całkowicie ignorowany.

+1

Zastanawiam się, czego oczekujesz od eksportera html. – kindahero

+1

@kindahero, na pewno nie oczekuję, że zrobię mi filiżankę kawy, ale spodziewam się renderowania wykresu z dvipng i osadzenia go w html. –

+0

W takim razie powinieneś użyć babel http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-LaTeX.html – kindahero

Odpowiedz

2

Nie mogłem tworzyć bloków tikzpicture, ale nie powinno się używać #+begin_latex i #+end_latex, jak to zostało powiedziane w twoim łączu do dokumentacji w trybie Org, wymagane jest tylko \begin{...} LATEX_CODE end{...}.

Ten fragment powinien zadziałać.

#+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 nie obsługuje tikz. Pracowałem już obejść ten problem na mojej instalacji zastępując dvipng z następującym skryptem powłoki:

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

Teraz mogę podejrzeć fragment TikZ z C-x C-C C-l, lub wyeksportować do formatu HTML. Nie jest to idealne rozwiązanie, ale działa dla mnie.

+0

Powodzenia z tym, czy nadal używasz tego samego rozwiązania? Nie mogę tego zrobić. –

7

udało mi eksportowania obrazu TikZ z org HTML (faktycznie, aby reveal.js pomocą [org-ujawniają] [1]) z org 8.2.5h z następującym

#+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 mam nadzieję, że to jest pomocne. Bez linii #+LaTeX_Header proces LaTeX nie wie, że zawiera tikz, a kompilacja nie powiedzie się. Jeśli spróbuję użyć tex:dvipng zamiast tex:imagemagick, otrzymam obraz, ale niepoprawnie wyrenderowany .

+0

to dokładnie to, czego szukałem przez cały dzień (również, aby go uruchomić w org-reveal btw)! – rockt

4

W najnowszych wersjach trybu Org (jeszcze starszego niż wersja 9 --- patrz edycja poniżej), można użyć czegoś podobnego do następującego, które można wyeksportować do LaTeXa, a także do HTML. W tym ostatnim przypadku, convert (z zestawu narzędzi ImageMagick) służy do tłumaczenia pliku PDF wygenerowanego z fragmentu kodu tikz na obraz PNG o wielkości 100 pikseli na 100 pikseli.

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

Poza tym, można dodać podpis i wstawić obraz w pływającym figure środowiska w LaTeX, używając:

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

Uwaga atrybut :width jest ustawiony na pusty ciąg, aby usunąć domyślne zachowanie trybu Org, które ustawia szerokość obrazu na 0.9\textwidth podczas eksportowania do LaTeX.


Według this page, możliwe jest również, aby wyeksportować zdjęcia w SVG zamiast PNG, po prostu poprzez zastąpienie diamond.png przez diamond.svg i usuwanie nagłówków ImageMagick związanych, na przykład:

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

Należy jednak pamiętać, że to rozwiązanie nie obsługuje makr matematycznych w kodzie tikz takim jaki jest. htlatex powinien obsługiwać podstawowe konstrukcje matematyczne (do wypróbowania przez nie komentowanie linii 2 tikz i lisp powyżej), ale ta funkcja wymaga kilku poprawek, ponieważ wynikowy SVG jest nieprawidłowy.


Edycja

od wersji 9, powyższy kod się (w odniesieniu do rysunku, w celach poglądowych)

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

Główne różnice w „Uwagi znacznik "staje się": noexport "dla sekcji konfiguracji (patrz this answer), kod makro by-backend i atrybut" grafika "dla wyniku bloku kodu lateksu.

+0

Witam, czy możesz powiedzieć, co to jest "latex +" exaclty? – DJJ

+0

'# + PROPERTY: header-args: latex + ' dodaje '' do argumentów nagłówka o nazwie 'header-args: latex'. To jest jakoś "zgadywana" [w dokumentach] (http://orgmode.org/manual/Property-syntax.html#Property-syntax) (choć zgadzam się, że można to poprawić). – nberth

+0

Awesome !!! Pracowałem nad rozwiązaniem dla OrgMode9 przez kilka godzin ... –