我是 LaTeX 的新手,已经尝试解决这个问题几个小时了。
大家好 - 我是 LaTeX 的新手,已经尝试解决这个问题几个小时了。
我正在尝试将 ChemDraw 中制作的化合物(我已将其导出为 .eps 文件)传输到 LaTeX 中。我的理想目标是让 LaTeX 在输入所有化合物时自动对其进行编号(即,如果我在所有其他化合物之前添加一种化合物,则所有化合物都会自动重新编号)。
到目前为止,我甚至无法将一个临时标签转换为数字“1”。见下文:
\begin{figure}
\begin{center}
\replacecmpd{TMPA}
\includegraphics[scale=0.7]{Diagrams/"Taxol, Numbered".eps}
\caption{Taxol}
\end{center}
\end{figure}
EPS文件在此:https://drive.google.com/open?id=1BWAuTo6YzSeLVQRIQaf4gzG5k5uw84qY
ChemDraw版本:16.0.1.4 (61)
我对 chemnum、chemfig 和 chemscheme 感到非常困惑,到目前为止还无法对它们中的任何一个取得任何进展 - 请帮忙!
谢谢你的时间!
答案1
我已经有几年没有尝试过这个了,但我使用了 Joseph Wright 的chemstyle
包以及auto-pst-pdf
自动编号结构的包。基本上,你会将你的结构导出为 .eps 格式TMP1
,并TMP2
使用 、 等占位符,然后将你的图片插入环境中scheme
,为每个分子指定一个代码/标签/标签/等。然后,在排版时将占位符转换为数字。你还可以使用内联文本引用分子编号\compound{<your compound label>}
。在摆弄和修改旧代码后,这个例子更好地说明了这一点:
\documentclass{minimal}
\usepackage[crop=off,runs=2]{auto-pst-pdf}
\usepackage{chemstyle}
\begin{document}
\begin{scheme}[h]
\centering
\schemeref[TMP1]{msoc2c6f13}
\schemeref[TMP2]{imc2c6f13}
\includegraphics[scale=1]{pfaim}
\caption{a chemscheme}
\label{sch:pfaim}
\end{scheme}%
Mesylate \compound{msoc2c6f13} was converted to the N-fluoroalkylated imidazole \compound{imc2c6f13}.
\end{document}
- 您将需要允许 shell 转义(即,来自您的代码的数据传出并进入您的排版程序,更多解释在这里:什么是 \immediate 和 \write18 以及如何使用它们?) 来
auto-pst-pdf
处理你的TMP
标签。根据你的排版习惯,你可能希望全部您的文档或仅少数文档。您应该能够从排版程序或文档中允许它(例如,如果您使用 arara)。 - 如果您需要编号中的某些特定顺序,则需要按该顺序声明化合物,使用
\compound*{...}
(例如在某一节的开头)。 - 从 2016 年到现在的某个时候,
auto-pst-pdf
默认选择此crop
选项;这会导致转换后的 .eps 被裁剪,并且在我的测试案例中,会丢失部分结构。因此crop=off
选择此选项。
要了解更多详细信息,您还应该阅读 Joseph Wright 的chemstyle
手册,其中充满了有用的技巧。