algorithm2e:如何使交叉引用超链接导航到算法的顶部?

algorithm2e:如何使交叉引用超链接导航到算法的顶部?

考虑到这个 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}

相关内容