随着最近版本的组织模式(但是,比版本9旧---见下面的编辑),你可以使用类似下面的东西,可以导出到LaTeX以及HTML。在后一种情况下,convert
(来自ImageMagick工具包)用于将从tikz代码段生成的PDF转换为尺寸为100px×100px的PNG图像。
#+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:
此外,可以通过使用添加一个标题,并插入图片浮动figure
环境乳胶:
#+caption: A diamond.
#+attr_latex: :float t :width ""
#+results: diamond
注意:width
属性设置为空字符串擦除组织模式的默认行为,将图片的宽度设置为导出到LaTeX时的0.9\textwidth
。
据this page,还可以代替PNG,只需通过diamond.svg
更换diamond.png
和删除的ImageMagick相关的头,因为出口在SVG图片:
#+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:
然而要注意此解决方案不支持tikz代码中的数学宏。 htlatex
应该支持基本的数学结构(通过取消注释上面的2个tikz和lisp行来尝试),但是这个功能显然需要一些返工,因为产生的SVG是无效的。
编辑
从版本9,上面的代码变为(与参考该图,为了说明的目的):
#+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:
的主要区别是在“COMMENT “成为设置部分的”noexport“标签(请参阅this answer),代码为by-backend
宏,以及乳胶代码块结果的”图形“属性。
我想知道你对html出口商有什么期望。 – kindahero
@ kindahero,我当然不指望它让我喝杯咖啡,但我确实希望它用dvipng呈现图形并将其嵌入到html中。 –
然后我想你应该使用babel http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-LaTeX.html – kindahero