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.
Zastanawiam się, czego oczekujesz od eksportera html. – kindahero
@kindahero, na pewno nie oczekuję, że zrobię mi filiżankę kawy, ale spodziewam się renderowania wykresu z dvipng i osadzenia go w html. –
W takim razie powinieneś użyć babel http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-LaTeX.html – kindahero