我需要从文件 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 中定义,那么它什么也不做,否则,它就定义它。