从 latex 中提取图像

从 latex 中提取图像

我想在网站上展示化学反应,所以我只想从 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.pngtest-01.pngtest-02.png

测试-01.png

测试-02.png

测试-03.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,每个小细节均可在包文档中找到。

相关内容