将 eps 中括号内的标签替换为 psfrag/chemnum

将 eps 中括号内的标签替换为 psfrag/chemnum

问题

是否可以用 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

这也可以打包在figurescheme(由包提供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])。

相关内容