我使用这个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
可以获得类似的结果。tablefootnotes
footnotetext
如有任何建议我们将不胜感激!
答案1
savenotes
从包中使用footnotehyper
是正确的方法,虽然可以使用\savenotes
和来实现预期的结果\spewnotes
,但更简单的方法是使用\makesavenoteenv
。
最后有一个
\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}
请注意,超链接也有效,但是在这个答案中很难显示!