如何在任意部分之后重置方程标签?

如何在任意部分之后重置方程标签?

我对具有相同标签的方程式存在问题。例如:

\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}

在此处输入图片描述

相关内容