为“algpseudocode”算法添加带有超链接的多个脚注

为“algpseudocode”算法添加带有超链接的多个脚注

我使用这个algpseudocode包来编写算法,使用这个hyperref包来为脚注添加超链接。我希望能够在我的算法中添加带有超链接的脚注。

像这样的事情就很好了:

\documentclass[12pt]{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{hyperref}

\begin{document}

\begin{algorithm}[H]\caption{Do something}
    \label{alg: CR}
    On input, do:
    \begin{enumerate}
        \item Do something. \footnote{Footnote one}
        \item Do a second thing.
        \item Aha! The final thing. \footnote{Footnote two}
        \item Oops, do one more. \footnote{Footnote three}
    \end{enumerate}
\end{algorithm}


Text\footnote{Footnote four}

\end{document}

不幸的是,这不起作用;只显示脚注四: 在此处输入图片描述

我认为这与算法环境是浮点数有关,类似于图形或表格。因此,我希望“表格中的脚注”类型问题的解决方案会有所帮助,但我运气不佳。将环境包装algorithm在环境中是可行的,因为所有脚注都会显示出来,但只有脚注三和脚注四的超链接有效(其他两个只会将您带到文档的开头)。使用并手动添加savenotes可以获得类似的结果。tablefootnotesfootnotetext

如有任何建议我们将不胜感激!

答案1

savenotes从包中使用footnotehyper是正确的方法,虽然可以使用\savenotes和来实现预期的结果\spewnotes,但更简单的方法是使用\makesavenoteenv

来自footnotehpyer 包文档

最后有一个\makesavenoteenv宏,它将环境名称作为参数并对其进行修补以自动执行\savenotes/ \spewnotes

语法要么是\makesavenoteenv{foo}哪个补丁环境foo[...]自动执行\savenotes/ \spewnotes,要么\makesavenoteenv[bar]{foo}是将环境定义bar为环境foo内部savenotes

如果可以覆盖算法环境,则\makesavenoteenv{algorithm}\usepackage{footnotehyper}和之后添加\usepackage{algorithm}应该可以工作。

在问题的上下文中:

\documentclass[12pt]{article}
\usepackage{hyperref, footnotehyper}
\usepackage{algorithm}
\makesavenoteenv{algorithm}
\usepackage{algpseudocode}

\begin{document}

\begin{algorithm}[H]\caption{Do something}
    \label{alg: CR}
    On input:
    \begin{enumerate}
        \item Do something. \footnote{Footnote one}
        \item Do a second thing.
        \item Aha! Do the final thing. \footnote{Footnote two}
        \item Oops, do one more. \footnote{Footnote three}
    \end{enumerate}
\end{algorithm}

Text\footnote{Footnote four}

\end{document}

tex 输出显示具有四个脚注的算法,并且脚注文本正确显示在页面底部

请注意,超链接也有效,但是在这个答案中很难显示!

相关内容