考虑以下带有的 MWE cleveref
:
\documentclass{article}
\usepackage{hyperref}
\usepackage{cleveref}
\begin{document}
Page one
\label{one}
\newpage
Page two
\label{two}
\newpage
\cpagerefrange{one}{two}
\end{document}
生成的文档看起来正确,但是范围的第二部分(“2”)的超链接是错误的,它指向与第一部分相同的页面。
这只是一个错误,还是我遗漏了某些重要的东西?
答案1
链接需要锚点。在发出hyperref
时设置这样的锚点\refstepcounter
。因此,对正常编号对象的引用和链接通常可以正常工作。但是,如果您“在野外”设置标签,则需要hyperref
通过发出来告诉它应该使用哪些锚点\phantomsection
。
您可以链接到整个页面\hyperpage
(例如,索引使用此方法),但随后您需要一种(可扩展的)方法来获取页码。
\documentclass{article}
\usepackage{hyperref}
\usepackage{cleveref}
\begin{document}
Page one
\phantomsection\label{one}
\newpage
Page two
\phantomsection\label{two}
\newpage
\cpageref{one}, \pageref{one}, \cpageref{two}, \pageref{two}
\cpagerefrange{one}{two}
\hyperpage{\getpagerefnumber{two}}
\end{document}