将 psfrag 与 LaTeX 计数器一起使用(直接在 eps 图中插入计数器数字)?

将 psfrag 与 LaTeX 计数器一起使用(直接在 eps 图中插入计数器数字)?

我正在使用 (pdf)LaTeX 撰写有机化学论文。论文内容包含大量编号的化学结构。化学结构图是使用 ChemDraw 生成的,并导出为 eps 格式。由于有数百个编号结构,我编写了一个宏,使用自定义计数器来跟踪数字:

\newcounter{compound}
\def\thecompound{\textbf{\thechapter.\arabic{compound}}}
\newcommand{\cmp}[1]{\refstepcounter{compound}\label{cmp:#1}\textsf{\scriptsize{\thecompound}}}

每次我想给一个化合物编号时,我只需写下命令(它会自动增加计数器):

\cmp{uniquestring}

我遇到的问题是找到一种有效的方法将复合数字放在结构图(eps 图)上。我现在正在使用的是一个在图像上方的浮动文本块,我必须手动对齐。这是我的一个图的示例(我定义了一个称为 Scheme 的自定义浮动块):

\begin{Scheme}[h]
  \centering \includegraphics[scale=0.8]{chp_diazobkg/images/shioiritwo}
   \begin{textblock}{1}(1.65,-0.8) \cmp{aax} \end{textblock}
  \begin{textblock}{1}(7,-1) \cmp{aay} \end{textblock}
  \begin{textblock}{1}(13,-1) \cmp{aaz} \end{textblock}
  \begin{textblock}{1}(17.5,-0.5) \cmp{aba} \end{textblock}
  \caption{Facile [1,3]-Brook rearrangement of $\alpha$-keto silane intermediate \ref{cmp:aay}.}
  \label{sch:shioiritwo}
\end{Scheme}

理想情况下,我希望能够使用 pstool/psfrag 之类的包,以便将唯一标识符内置到 eps 文件中并用复合数字替换。使用 pstool 包,我能够在 eps 图形中进行文本替换,但当我尝试使用计数器进行替换时,psfrag 会卡住并且无法生成图形。下面的代码对我来说很好用,所以我知道包安装正确。

\psfragfig[scale=0.8]{test}{
  \psfrag{[aaa]}{testing}
}

但是,当我尝试做这样的事情时,却没有运气(事实上整个包都坏了,没有生成图像):

\psfragfig[scale=0.8]{test}{
  \psfrag{[aaa]}{\cmp{xxx}}
}

或者甚至更简单,例如只需给出 ?? 作为替换的文本:

\psfragfig[scale=0.8]{test}{
      \psfrag{[aaa]}{\ref{somefigure}}
    }

任何建议将不胜感激。

我已在以下位置发布了一个包含 EPS 文件的最小工作示例: https://sites.google.com/site/vrendina/latex

答案1

我认为这个问题的出现是因为pstool 包创建包含每个图形的单独文档,然后对其进行编译以latex -> dvips -> ps2pdf创建包含替换内容的图形的新版本psfrag

根据第 5.2 条pstool 包文档,版本 1.5 中添加了对图形内交叉引用的支持,我认为这比问题稍微新一些。以下示例在我的计算机上运行良好,因此我认为解决方案是更新您的TeX发行版(如果您尚未更新)。

\documentclass{article}
\usepackage[process=all]{pstool}
\begin{document}
\begin{equation}
a = b \label{eqn}
\end{equation}
\begin{center}
\psfragfig[scale=0.7]{myfig}{\psfrag{mouse}[][]{\ref{eqn}}}
\end{center}
\end{document}

的后记代码myfig.eps如下:

%!PS-Adobe-2.0
%%Title: myfig.eps
%%BoundingBox: 0 0 80 50
%%Orientation: Portrait
%%EndComments
/Times-Roman findfont 15 scalefont
setfont
20 20 moveto (mouse) show showpage
%%Trailer
%EOF

相关内容