交叉引用一组静态标签

交叉引用一组静态标签

我需要从文件 new.tex 交叉引用到文件 master.tex。

我已经阅读了问题不同文件之间的交叉引用并尝试了这个xr包裹。

它可以工作,但是它处理相同标签名称的方式不符合我的需要。

我的问题是 new.tex 是对 master.tex 一章的修正,并且在某个时候它会被合并到其中,因此在 new.tex 中我需要同时使用来自 master.tex 和新标签的现有标签,并且现有标签应该指向 master.tex 中的值。

我尝试了以下内容,并给出了 MWE:我将 master.aux 复制到 master_original.aux 中(我需要使用总是 这些标签的值(即使 master.tex 发生变化)仅包含行

\newlabel{oldlabel}{{99}{99}}

然后,我的 new.tex 是文件

    \documentclass{article}        
    \global\let\oldlabel\label
    \gdef\label#1{\labelxx{#1}}
    \gdef\labelxx#1{\@ifundefined{\csname #1 \endcsname}{\oldlabel{#1}}{}}
    \usepackage{amsthm}
    \newtheorem{theorem}{Theorem}
    \input{master_original.aux}
    \begin{document}
    \begin{theorem}
      This is the definition of the a new label
      \label{newlabel} 
    \end{theorem}

    \begin{theorem}
      This is the definition of the old label
      \label{oldlabel} 
    \end{theorem}

    The new label points to \ref{newlabel}

    The old label to \ref{oldlabel}
    \end{document}

我的目的是以这样一种方式修改定义,\label即在创建新标签时,\label{formula}如果\formula已经在 master_original.aux 中定义,那么它什么也不做,否则,它就定义它。

相关内容