问题
是否可以用 chemnum 替换TMP1
一些括号(或其他符号和文本)之间的内容?
例子
下面显示输入(每股收益;左),以及输出(编译文件; 正确的):
也可能像这样使用,就像在期刊中经常看到的那样:
答案1
这纯的回答
它似乎不可能以本机方式实现,因为psfrag
(用于chemnum
替换标签)不支持这种替换,如在psfrag
手动的(第 10 页最底部),其中写道:
而且 PSfrag 只能替换整个字符串,而不能替换部分字符串。因此,如果您的 EPS 文件包含
(I want to replace the XXX here) show
那么
\psfrag
如果您仅提供 XXX,命令将失败。
仍然获取替代品的方法
为了便于以下示例,此主要代码
\documentclass{article}
\usepackage[runs=2,crop=off]{auto-pst-pdf}
\usepackage{chemnum}
\usepackage{chemstyle} %Needed for scheme environment
\begin{document}
\input{code}
\end{document}
适用,\input{code}
将从下面插入代码片段。
使用的图形(EPS.eps
) 可以是任何 .eps
包含短语的文件(TMS1)
。
笔记:当然也可以用TMP1
代替,因此如果操作不当,(TMP1)
就会存在这个标签被自动替换的危险(因为这是标准标签,也是通常期望的行为)。chemnum
一线希望
不过,我想出了一个小办法来解决这个问题。我不得不承认,这个解决方案并不完美,但由于没有其他解决方案(或者至少我找不到),需要此替代方案的人必须接受使用它。
代码
\psfrag{(TMP1)}{(\cmpd{a})}
\includegraphics{./EPS.eps}
完成工作。这是对正在做的事情的\replacecmpd{foo}
采纳chemnum
。
这也可以打包在figure
或scheme
(由包提供chemstyle
)环境中
\begin{scheme}
\centering
\caption{Caption}
\psfrag{(TMP1)}{(\cmpd{a})}
\includegraphics{./EPS.eps}
\label{schm:label}
\end{scheme}
我认为这将会是标准用法。
失败的方法
我也尝试过使用
\begin{scheme}
\centering
\caption{Caption}
\psfrag{\cmpd+{a}}{(\cmpd+{a})}
\includegraphics{
\replacecmpd[tag=(TMP1)]{a}
\includegraphics{./chemnum_question.eps}
}
\label{schm:label}
\end{scheme}
进行双重替换 ( (TMP1)
>1
(本例中)在第二步中1
> (1)
)。嵌套\includegraphics
命令用于psfrag
手动的(第 9 页中间),其中:
\includegraphics[宽度=3.5英寸]{\includegraphics{example.eps}}
用于缩放图像和被替换的字符串。
但使用这种技术会失败,因为它会导致错误(TeX capacity exceeded, sorry [input stack size=5000]
)。