我正在写一本书,其中每章的定理都编号为“定理 1”、“定理 2”等;定理计数器的重置是使用显式\setcounter
命令完成的。当我打算使用 指向任何章节的定理 1 时hyperref
,创建的链接指向的是第 1 章的定理 1(请参阅下面的 MWE)。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem}[First]\label{thm1}
The first.
\end{theorem}
\newpage
\setcounter{theorem}{0}
\begin{theorem}[Second]\label{thm2}
The second.
\end{theorem}
Reference to the second occurrence of Theorem 1 : \ref{thm2}.
\end{document}
我知道我可以通过对定理进行编号(包括章节编号)来解决这个问题(例如“定理 1.1”),但我更喜欢更简单的编号。有没有办法hyperref
区分上述两个定理(从而正确指向第二个定理),即使显示的编号相同?
先感谢您!
皮奥特
答案1
我认为,对于您的读者来说,看到“如第 11 章定理 8 所证明”而不是更简单的“如定理 11.8 所证明”并不好。
无论如何,您不需要手动重置计数器,并且您可以更改计数器的 H 表示来获得唯一的锚点。
\documentclass{book}
\usepackage{hyperref}
\newtheorem{theorem}{Theorem}
\counterwithin*{theorem}{chapter}
\renewcommand{\theHtheorem}{\thechapter.\arabic{theorem}}
\begin{document}
\chapter{First}
\begin{theorem}[First]\label{thm1}
The first.
\end{theorem}
\chapter{Second}
\begin{theorem}[Second]\label{thm2}
The second.
\end{theorem}
Reference to the first occurrence of Theorem 1: \ref{thm1}.
Reference to the second occurrence of Theorem 1: \ref{thm2}.
\end{document}
您会看到第一个链接指向第 1 章,第二个链接指向第 2 章。