使用 bpchem 对化合物进行编号时出现的问题

使用 bpchem 对化合物进行编号时出现的问题

我对使用以下方法对化合物进行编号有疑问bpchemchemstyle。在 eps 文件中,我使用TMPTMP2,当我插入图形时,我会这样做:

\begin{scheme}
    \begin{center}
        \schemeref[TMP]{1}
        \schemeref[TMP2]{2}
        \includegraphics[scale=0.6]{figure1}
    \end{center}
\end{scheme}

当我第一次提到一种化合物时,我会使用\CNlabel,然后使用\CNref。替换工作TMP正常,我的问题是文本中的标签似乎与方案中的标签无关。在方案中,数字会像 1、2、3 一样流畅地运行……但是,如果我尝试在文本中引用这些化合物,它们会按照我在文本中提及它们的顺序进行编号。由于顺序不同,文本中分配给特定化合物的编号与方案中的编号不同。我该如何解决这个问题?

附言:很抱歉我没有提供一个简单的例子来证明这一点,我只是不知道如何以一种简短简单的方式重现我的问题,而不必向您发送我的所有 eps 文件。

编辑:下面是一个例子,它在文本中给出了与图片不同的编号。在图片中,编号是 1,2,3,4,在文本中,编号也是 1,2,3,4,尽管它应该是 2,3,4,1。之前,我只有 而不是bpchemtracking=bpchem这个旧版本适用于这个小例子,但出于某种原因,在我的大型、更复杂的文件中不起作用。

\documentclass{article} 
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage[runs=2]{auto-pst-pdf}
\usepackage{booktabs} 
\usepackage{bpchem}
\usepackage[journal=rsc, tracking=bpchem]{chemstyle}
\usepackage{geometry}
\usepackage[version=3]{mhchem}
\usepackage{setspace}
\usepackage{bm}

 \begin{document}

 Text where I mention the compounds in a different order than in the schemes: \CNlabel{2}, \CNlabel{3}, \CNlabel{4}, \CNlabel{1}

\begin{scheme}
    \begin{center}
        \schemeref[TMP]{1}
        \schemeref[TMP2]{2}
        \includegraphics{bla}
    \end{center}
\end{scheme}

\begin{scheme}
    \begin{center}
        \schemeref[TMP]{3}
        \schemeref[TMP2]{4}
        \includegraphics{blub}
    \end{center}
\end{scheme}

\end{document} 

答案1

我知道现在已经很晚了,但万一其他人也遇到同样的问题,你有两个选择:

1.- 您可以继续使用这些包{chemstyle}{bpchem}但是是的,您应该添加它,\usepackage[tracking=bpchem]{chemstyle}否则它将无法跟踪。如果这样做,那么您将必须定义嵌入在 eps 文件中的所有结构,如下所示:

\begin{scheme} %this could also be figure
  \schemeref[TMP1]{XjU3o9}
  \CNrefnolabel{XjU3o9} %Note that this **MUST** be identical otherwise the numbers will be different
  \schemeref[TMP2]{A}
  \CNrefnolabel{A}
  \schemeref[TMP3]{B}
  \CNrefnolabel{B}
...so on and so forth, depending on how many TMPX you have in your scheme/figure
  \includegraphics{EPSfile}
  \caption{This is what appears in the bottom of the scheme/figure as 'title'}
  \label{sch:Nameit!}
\end{scheme}

2.- 不要使用{bpchem}作为您的跟踪包,而是使用最新版本{chemnum}(V 1.0)。实际上,如果您不想方案在您的文档中,您甚至不必使用{chemstyle}!您所要做的就是添加\usepackage{chemnum}到您的序言中,然后按如下方式定义您的标签:

\begin{scheme} %in this case you MUST have the `{chemstyle}` package loaded in your preamble
  \replacecmpd{XjU3o9}
  \replacecmpd{A}
  \replacecmpd{B}
  ...so on and so forth, depending on how many TMPX you have in your scheme/figure
  \includegraphics{EPSfile}
  \caption{This is what appears in the bottom of the scheme/figure as 'title'}
  \label{sch:Nameit!}
\end{scheme}

请注意,您不必包含 TMP1 或 TMPX,程序会自动执行此操作,从 TMP1 开始,因此请小心将这些标签放在 EPS 文件中的位置。就我而言,您还可以明确说明要将哪种化合物昵称为 A(即 TMP1 或 TMP4),您所要做的就是在和之间添加 [tag=youridentifier] \replacecmpd{nickname}因此,对于前面的示例,它将是:

\begin{scheme} %in this case you MUST have the `{chemstyle}` package loaded in your preamble
  \replacecmpd[tag=TMP3]{XjU3o9}
  \replacecmpd[tag=TMP1]{A}
  \replacecmpd[tag=TMP2]{B}
  ...so on and so forth, depending on how many TMPX you have in your scheme/figure
  \includegraphics{EPSfile}
  \caption{This is what appears in the bottom of the scheme/figure as 'title'}
  \label{sch:Nameit!}
\end{scheme}

因此,一旦您排版文档,TMP3 将被数字 1 替换,TMP1 将被数字 2 替换,TMP2 将被数字 3 替换。

我希望这对某些人有用。

答案2

您可能忘记使用chemstyle包选项tracking=bpchem

我可以使用此 MWE 重现您的问题(它使用scheme-tmp.eps来自chemnum文档):

\documentclass{article}
\usepackage[runs=2]{auto-pst-pdf}
\usepackage{bpchem}
\usepackage{chemstyle}
\begin{document}

\CNlabel{bla} some text \CNref{bla}
\begin{scheme}
 \schemeref{blub}% should be '2' is '1'
 \schemeref{bla} % should be '1' is '2'
 \includegraphics{scheme-tmp}
\end{scheme}

\end{document}

但如果我使用,行为就是固定的\usepackage[tracking=bpchem]{chemstyle}


编辑:您在这里和在您的后续问题并且都chemstylechemnum基本上是一个问题\psfrag(从psfrag他们都在内部使用的包)。

如果我理解正确的话,当你试图声明标签时,标签就错了第一的时间在 内/与\schemeref(或\cmpdref,分别)。如此声明的标签事后不为人知。这正是\psfrag和“普通”所发生的事情\label

\documentclass{article}
\usepackage{psfrag}
\usepackage[runs=2]{auto-pst-pdf}

\begin{document}

\section{Section}
% setting a label with psfrag “inside the picture”...:
\psfrag{TMP1}{\label{test}test}
\psfrag{TMP2}{\gdef\foo{foo}}
\includegraphics{scheme-tmp}
% ...leaves it still undefined:
\ref{test}
% also \foo is still undefined:
\renewcommand\foo{bar}

\end{document}

我对此了解不多\psfrag\includegraphics不知道到底发生了什么,但显然\psfrag文档中其他地方不知道内部定义的宏。因此,您声明的每个复合标签\schemeref后来都是未知的,因此是新声明的。

你已经上来了最简单的解决方案是:单独声明标签,但“不可见”,并且沃纳指明了方向\schemeref在和的情况下自动执行此操作bpchemchemnum已更新至 v0.4b,并且现在基本执行相同的操作来解决问题。

相关内容