重置方程式计数器时 hyperref 出现问题(特别是在对齐环境中)

重置方程式计数器时 hyperref 出现问题(特别是在对齐环境中)

我正在尝试将计数器重置为零;但是hyperref尝试引用先前的方程式。我正在使用:

\setcounter{equation}{0}

如果我所说的align环境中有标签:

\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\begin{document}
\begin{align}
x=1
\label{eq:a} \\
y=2
\label{eq:b}
\end{align}
Eq.~\eqref{eq:a}.
Reset counter
\newpage
\setcounter{equation}{0}
\begin{align}
x=10
\label{eq:c} \\
y=20
\label{eq:d} 
\end{align}
Now trying to refer to third equation Eq.~\eqref{eq:c}
\end{document}

如果我现在\ref{eq:c}hyperref包裹将会引导我回到eq:a(在文本中,它们都有相同的号码)。

有没有办法解决这个问题,而不用手动设置你制作的新计数器?也就是说,你可以不做这样的事情来解决这个问题:

\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\begin{document}
\begin{align}
x=1
\label{eq:a} \\
y=2
\label{eq:b}
\end{align}
Eq.~\eqref{eq:a}.
Reset counter
\newpage
%% \setcounter{equation}{0}                                %Commented out line
\newcounter{newequation}                                   %Added line
\renewcommand{\theequation}{\arabic{newequation}}          %Added line
\stepcounter{newequation}                                  %Added line
\begin{align}
x=10
\label{eq:c} \\ 
\stepcounter{newequation}                                  %Added line
y=20
\label{eq:d} 
\end{align}
Now trying to refer to third equation Eq.~\eqref{eq:c}
\end{document}

答案1

为了生成正确的引用,您必须使计数器值对 是唯一的hyperref。为此,您可以引入父计数器myequation:每次此计数器增加时,计数器equation都会重置。这样,hyperref可以同时考虑myequation和的值equation来生成正确的超链接。

为了做到这一点,请在加载后将以下代码添加到您的文档中hyperref

\newcounter{myequation}
\makeatletter
\@addtoreset{equation}{myequation}
\makeatother

重置方程计数器是通过步进完成的myequation,因此使用\stepcounter{myequation}而不是\setcounter{equation}{0}

完整示例代码:

\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\newcounter{myequation}
\makeatletter
\@addtoreset{equation}{myequation}
\makeatother
\begin{document}
\begin{align}
x=1
\label{eq:a} \\
y=2
\label{eq:b}
\end{align}
Eq.~\eqref{eq:a}.
Reset counter
\newpage
\stepcounter{myequation}
\begin{align}
x=10
\label{eq:c} \\
y=20
\label{eq:d} 
\end{align}
Now trying to refer to third equation Eq.~\eqref{eq:c}
\end{document}

相关内容