我正在尝试将计数器重置为零;但是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}