![使用 bpchem 对化合物进行编号时出现的问题](https://linux22.com/image/248369/%E4%BD%BF%E7%94%A8%20bpchem%20%E5%AF%B9%E5%8C%96%E5%90%88%E7%89%A9%E8%BF%9B%E8%A1%8C%E7%BC%96%E5%8F%B7%E6%97%B6%E5%87%BA%E7%8E%B0%E7%9A%84%E9%97%AE%E9%A2%98.png)
我对使用以下方法对化合物进行编号有疑问bpchem
在chemstyle
。在 eps 文件中,我使用TMP
等TMP2
,当我插入图形时,我会这样做:
\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。之前,我只有 而不是bpchem
。tracking=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}
。
编辑:您在这里和在您的后续问题并且都chemstyle
和chemnum
基本上是一个问题\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
在和的情况下自动执行此操作bpchem
。chemnum
已更新至 v0.4b,并且现在基本执行相同的操作来解决问题。