我想在网站上展示化学反应,所以我只想从 LaTeX 代码中获取图像。
我知道如何将图像添加到 LaTeX,但不知道如何从 LaTeX 中获取图像。
例如我想获取
\chemname{\chemfig{CH_3-CH(-[2]CH_3)-CH_2-Cl}}{Isobutyl chloride}
看起来像这样
答案1
此包preview
就是为此目的而编写的(用于生成 PNG 图像以包含在 emacs 编辑器中)。
\documentclass{article}
\usepackage{chemfig}
% A fixed `\chemname`, which takes the width of the name into account
\newcommand*{\ChemName}[2]{%
\begingroup
\sbox0{#1}%
\sbox2{#2}%
\ifdim\wd2>\wd0 %
\leavevmode
\hbox to \wd2{\hss\chemname{#1}{#2}\hss}%
\else
\chemname{#1}{#2}%
\fi
\endgroup
}
\usepackage[active, tightpage]{preview}
\PreviewMacro[[!!]\chemname
\PreviewMacro[!]\chemfig
\PreviewMacro[!!]\ChemName
\begin{document}
\chemname{\chemfig{CH_3-CH(-[2]CH_3)-CH_2-Cl}}{Isobutyl chloride}
\chemfig{R-C(-[:-30]OH)=[:30]O}
\ChemName{\chemfig{CH_3CH_2Cl}}{Ethyl Chlorid}
\end{document}
文档捕捉\chemname
并\chemfig
生成两页带有紧密边界框的页面。然后可以使用 ImageMagickconvert
或 Ghostscript 等将 PDF 文件转换为位图。
convert -density 300 test.pdf test-%02.png
生成test-00.png
、test-01.png
和test-02.png
:
软件包preview
采用 TeX 报告的边界框。如果宏\chemname
打印在框外,当名称比公式长时,结果将被裁剪。宏\ChemName
测量两个宽度并在必要时增加边界框。
答案2
制作一个非常小的 tex 文件,其中仅chemfig
包含代码。
% this is file isobutylChloride
\chemfig{CH_3-CH(-[2]CH_3)-CH_2-Cl}
\endinput
现在,将该文件输入到standalone
文档中并使用-shell-escape
标志进行编译。将即时创建一个 png 文件,但需要安装转换程序。
\documentclass[convert=true]{standalone}
\usepackage{chemfig}
\begin{document}
\input{isobutylChloride}
\end{document}
在您的真实(大)文档中,您可以包含高质量的 pdf,编译速度也会更快。
该类别还有其他选项standalone
,每个小细节均可在包文档中找到。