cleveref:第二个超链接在范围内设置不正确

cleveref:第二个超链接在范围内设置不正确

考虑以下带有的 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}

相关内容