我对具有相同标签的方程式存在问题。例如:
\section*{first section}
\begin{equation}\label{a1}
E=mc^2
\end{equation}
where \eqref{a1} obtained by ....
\section*{second section}
\begin{equation}\label{a1}
a^2=b^2+c^2
\end{equation}
in \eqref{a1} we have ....
我无法更改标签,因为我的 30,000 行文档中有许多类似的标签。我想在任意部分之前重置公式标签。有人有什么好主意吗?
谢谢。
答案1
你能这样做(但仅限于任何环境中的方程式amsmath
)。但这是错误的,非常错误:在以这种方式调整交叉引用机制之前,您应该提前考虑。当您搜索标签时,如果您不知道引用/标签出现在哪个部分,您将不知道每个标签指的是什么。
\documentclass{article}
\usepackage{amsmath}
\usepackage{etoolbox}
\newcounter{dummysec}
\preto\section{\stepcounter{dummysec}}
\makeatletter
\def\label@in@display#1{%
\ifx\df@label\@empty\else
\@amsmath@err{Multiple \string\label's:
label '\df@label' will be lost}\@eha
\fi
\xdef\df@label{\thedummysec-\unexpanded{#1}}%
}
\renewcommand{\eqref}[1]{\textup{\tagform@{\ref{\thedummysec-#1}}}}
\makeatother
\begin{document}
\section*{first section}
Here is an equation
\begin{equation}\label{a1}
E=mc^2
\end{equation}
where \eqref{a1} obtained by ....
\section*{second section}
Here is another equation
\begin{equation}\label{a1}
a^2=b^2+c^2
\end{equation}
in \eqref{a1} we have ....
\end{document}