考虑到这个 MWE,我发现当不加载选项时,交叉引用的超链接\Cref{algo1}
总是导航到算法底部,在那里打印标题ruled
。
我的问题是如何强制交叉引用超链接导航到算法的顶部?
\RequirePackage{luatex85}
\documentclass{article}
\usepackage{varioref}
\usepackage{hyperref}
\usepackage{cleveref}
\usepackage{lipsum}
\usepackage[ruled]{algorithm2e}
\Crefname{algocf}{Algorithm}{Algorithms}
\begin{document}
\Cref{algo1}
\lipsum[1-5]
\begin{algorithm}
Some\;
Algorithm\;
\caption{some caption}\label{algo1}
\end{algorithm}
\end{document}
答案1
除非持续警告ruled
,以下解决方案通过在标题显示的顶部插入重复的超链接目标来实现pre
:
\documentclass{article}
\usepackage{lipsum}
\usepackage{hyperref,cleveref}
\usepackage[ruled]{algorithm2e}
\Crefname{algocf}{Algorithm}{Algorithms}
\makeatletter
\let\old@algocf@pre@ruled\@algocf@pre@ruled
\renewcommand{\@algocf@pre@ruled}{%
\Hy@raisedlink{\hyper@anchorstart{algocf.\thealgocf}\hyper@anchorend}%
\old@algocf@pre@ruled}
\makeatother
\begin{document}
\Cref{algo1}
\lipsum[1-5]
\begin{algorithm}
Some\;
Algorithm\;
\caption{some caption\label{algo1}}
\end{algorithm}
\end{document}