使用最新版本(但早于版本9-请参见下面的编辑)的Org-mode,您可以使用以下代码将其导出为LaTeX和HTML。在后一种情况下,使用convert
(来自ImageMagick工具包)将从tikz代码片段生成的PDF转换为大小为100px x 100px的PNG图像。
* One Diamond
\begin{tikzpicture}
\draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle;
\end{tikzpicture}
* COMMENT setup
(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:
此外,在LaTeX中,可以通过以下方式为图片添加标题并将其插入到浮动的
figure
环境中:
请注意,
:width
属性设置为空字符串,以消除Org-mode的默认行为,该行为将图片宽度在导出到LaTeX时设置为
0.9\textwidth
。
根据
此页面,也可以通过将
diamond.png
替换为
diamond.svg
并删除与ImageMagick相关的标头,以将图片导出为SVG。
* One Diamond
\begin{tikzpicture}
\draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle;
% \node at (0,0) {\(x_i\)};
\end{tikzpicture}
* COMMENT setup
;; (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
应该支持基本的数学结构(通过取消上面的两行tikz和lisp代码的注释尝试),但是这个功能似乎需要重新编写,因为生成的SVG是无效的。
编辑
自版本9以来,上述代码变成了以下形式(带有参考图,仅用于说明目的):
* One Diamond
\begin{tikzpicture}
\draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle;
\end{tikzpicture}
Figure [[fig:diamond]] is a diamond.
* Setup :noexport:
(defmacro by-backend (&rest body)
`(case org-export-current-backend ,@body))
#+end_src
# Local variables:
# eval: (org-sbe "setup")
# End:
主要区别在于“COMMENT”变成了安装部分的“:noexport”标签(请参见
此答案),
by-backend
宏代码以及latex代码块的结果中的“graphics”属性。