先处理一个 .tex 文件再处理其他文件(chemscheme)

先处理一个 .tex 文件再处理其他文件(chemscheme)

我正在使用 Chemscheme 来跟踪化合物编号(每个章节我都有一个不同的 .tex 文件)。这些编号需要按顺序生成,用于我的论文的化学章节(第 3 章),但我想在前面的章节(第 1 章和第 2 章)中引用它们(并了解它们的结构)。

有没有办法处理 chapter3.tex 文件以首先生成 chemscheme 编号,但仍然让第 1 章和第 2 章首先出现在我的最终文档中?

我想另一种方法是\CNlabelnoref{}在简介章节的开头生成一个列表,以便在我说一个字之前定义所有的数字......

答案1

这是我从问题和评论中收集到的信息:

  1. 该包与(提及是一个提示)chemscheme一起使用tracking=bpchem\CNlabelnoref{}
  2. 第 3 章之前的复合引用只能是引用,这意味着只能在第 3 章及以后创建新标签。bpchem的标签已创建参考\CNlabel{}仅有的參考是\CNref{}
  3. chemscheme引用复合函数的常见用法是宏\schemeref,用于将 EPS 图形中的文本标记替换为相应的标签。但是,由于它是内部使用的,\CNlabel{}因此不能在第 1 章和第 2 章中使用。

建议的解决方案:

定义一个\schemeref类似宏,使用\CNref{}而不是\CNlabel{}\schemeref的定义是

\DeclareRobustCommand*\schemeref[2]
  [\schemerefmarker\the\cst@ref@count]{%
  \advance\cst@ref@count\@ne\relax
  \psfrag{#1}[b][b]{%
    \schemerefformat{\cst@ref@label{#2}}%
  }%
}

你可以

  1. 只需复制此定义并\cst@ref@label交换\CNref

    \makeatletter
    \DeclareRobustCommand*\schemeonlyref[2]
      [\schemerefmarker\the\cst@ref@count]{%
      \advance\cst@ref@count\@ne\relax
      \psfrag{#1}[b][b]{%
        \schemerefformat{\CNref{#2}}%
      }%
    }
    \makeatother
    
  2. 或者您可以加载该xpatch包和该letltxmacro包,复制\schemeref并修补它:

    \usepackage{xpatch,letltxmacro}
    \makeatletter
    \LetLtxMacro\schemeonlyref\schemeref
    \xpatchcmd\schemeonlyref{\cst@ref@label}{\CNref}{}{}
    \makeatother
    

    \LetLtxMacro是必要的,因为\schemeref被定义为强健的宏,而简单的\let是不够的。出于同样的原因,xpatch需要用\xpatchcmd而不是etoolbox's\patchcmd`。)

相关内容