我有一个定理,它完全由枚举列表组成。我想给这个定理一个标签(而不是给列表中的项目标签),并在文档的后面链接到它。我正在使用“hyperref”包,但无法让标签与定理的开头相关联。
我发现,如果我将标签放在“枚举”环境之前,引用会链接到文档的开头,而当我将鼠标悬停在链接上时,显示框是空白的。我可以将标签放在列表中某个项目的末尾,或者放在列表之后,在这种情况下,引用会链接到那个精确的位置。但我真的希望链接能带你到定理的标题(或第一行)。
在以下简化的示例中,将标签放在列表之后还是项目之后其实并不重要。但在我的实际文档中,列表中的项目很长,这会产生影响(此外,在我的文档中,我在\item[]
第一个实际项目之前留了一个空白,以便所有数字都对齐,但这对问题无关紧要)。
\documentclass{amsart}
\usepackage{lipsum,hyperref}
\hypersetup{colorlinks=true}
\newtheorem{thm}{Theorem}
\begin{document}
\lipsum
\begin{thm}\label{theorem}
\begin{enumerate}
\item An item.
\end{enumerate}
\end{thm}
Check out Theorem \ref{theorem}.
\end{document}
我注意到其他环境中有一些关于类似事情的讨论,但无法将其转化为这个问题的答案。如果这个问题被认为是重复的,你能帮我指出我可以在另一个问题中找到答案吗?
答案1
\phantomsection
只需在定理顶部添加一个。现在超链接显示为:
该\phantomsection
命令在此位置插入一个 hyperref 锚点。有时这是必要的,因为 hyperref 不知道要链接到的正确位置。请参阅答案Hyperref \pageref 链接指向第一页更多细节。
完整代码如下:
\documentclass{amsart}
\usepackage{lipsum,hyperref}
\hypersetup{colorlinks=true}
\newtheorem{thm}{Theorem}
\begin{document}
\lipsum
\begin{thm}\phantomsection\label{theorem}
\begin{enumerate}
\item An item.
\end{enumerate}
\end{thm}
Check out Theorem \ref{theorem}.
\end{document}