![使用 chemnum 标记 E 和 Z 立体异构体](https://linux22.com/image/408430/%E4%BD%BF%E7%94%A8%20chemnum%20%E6%A0%87%E8%AE%B0%20E%20%E5%92%8C%20Z%20%E7%AB%8B%E4%BD%93%E5%BC%82%E6%9E%84%E4%BD%93.png)
我目前正在撰写化学论文,主要研究光异构化。我使用 chemnum 作为化合物编号。例如,这是偶氮苯光异构化:
在我看来,TMP1 是一种单一化合物,应被分配一个单一标签(比如\cmpd{azobenzene}
=1)。在文本中,我希望能够将 E 或 Z 光异构体称为埃-1或者是-1\cmpd{azobenzene}
。我可以通过定义化合物然后手动调用$E$-\cmpd{azobenzene}
或来伪造这一点$Z$-\cmpd{azobenzene}
,但这在重命名.eps
化学结构中的标签时会失效(如上所示):除非有某种方法可以手动指定或修改chemnum
用于替换 EPS 文件中临时标签的文本,否则无法在化合物编号前面加上E-或者Z-按要求。
据我所知,我的选择是要么给每个异构体一个不同的数字标签(不可接受),要么将它们标记为子化合物,例如
\replacecmpd[tag=E-TMP1]{azobenzene.E}
\replacecmpd[tag=Z-TMP1]{azobenzene.Z}
这让我可以Compounds \cmpd{azobenzene.E}, \cmpd{azobenzene.Z}
调用
化合物1a,1b
这仍然是不正确的,除非有办法重新定义chemnum
的子复合逻辑,用小写拉丁字母后缀代替埃/是前缀。
有人能提出解决方案吗?
编辑:玩了一下,这似乎是一个好的我的问题的解决方案:
\replacecmpd[tag=ETMP,pre-label-code=\textit{E-}]{Eazobenzene}
\resetcmpd[\cmpdproperty{Eazobenzene}{number}]
\replacecmpd[tag=ZTMP,pre-label-code=\textit{Z-}]{Zazobenzene}
\includegraphics{azobenzenes.eps}
Compounds \cmpd{Eazobenzene} and \cmpd{Zazobenzene}.
化合物埃-1和是-1。
虽然有点笨重,但这是可以接受的。还有更好的选择吗?
答案1
看起来你已经找到了可行的解决方案。:)
我建议使用另一个命令\setcmpdlabel
来解决首次用于另一个答案(并且我应该补充一点,chemnum
因为它一次又一次地被证明是有用的……)。
\documentclass{article}
\usepackage{chemnum}
\ExplSyntaxOn
\NewDocumentCommand \setcmpdlabel {mm}
{ \chemnum_compound_set_property:nnn {#1} {counter-representation} {#2} }
\ExplSyntaxOff
\newcommand*\defineEZcmpds[1]{%
\cmpd*{#1}\cmpd*{E#1}\cmpd*{Z#1}%
\setcmpdlabel{E#1}{\textit{E}-\cmpd{#1}}%
\setcmpdlabel{Z#1}{\textit{Z}-\cmpd{#1}}%
}
\begin{document}
% defining
\defineEZcmpds{azobenzene}
% and using
Compounds \cmpd{Eazobenzene} and \cmpd{Zazobenzene} are the two photoisomers
of \cmpd{azobenzene}.
\end{document}