当我在一个文档中多次使用同一个标签时,只有最后一个定义用于引用。是否可以改变这种行为,以便每次引用某个标签时,只使用最新的标签,而无需修改其中的代码?document
(我经常需要将来自不同作者的文档复制到一个文档中,因此替换/修改每个文档label/eqref
会很麻烦。)
这是我的 MCVE:
\documentclass[10pt]{report}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\begin{document}
Test
\[ 1 = 1 \tag{1}\label{eq1} \]
First eq: \eqref{eq1} (references first one, but I want it to reference second one)
\[ 2 = 2 \tag{2}\label{eq1} \]
Second eq: \eqref{eq1} (actually references second one)
\end{document}
答案1
这半自动化了 @jPi 的评论。使用\labelid
可以将唯一标识符附加到每个\label
和\ref
(\eqref
调用\ref
,因此无需更改)。如果您想访问不同 id 的方程式,仍然可以使用\oldref
(但不能\eqref
)。
\documentclass{article}
\let\oldlabel=\label
\let\oldref=\ref
\renewcommand{\label}[1]{\oldlabel{#1.\labelid}}%
\renewcommand{\ref}[1]{\oldref{#1.\labelid}}%
\newcommand{\labelid}{init}% unique identifief for each paper
\usepackage{amsmath}% must go after redefinition
\begin{document}
\renewcommand{\labelid}{alpha}
Test
\[ 1 = 1 \tag{1}\label{eq1} \]
First eq: \eqref{eq1}
\renewcommand{\labelid}{beta}
\[ 2 = 2 \tag{2}\label{eq1} \]
Second eq: \eqref{eq1}
\end{document}