我已经为一个算法创建了伪代码,并想在该算法下添加脚注。但是,当我尝试应用提供的答案时这里,则不会出现脚注。请参见以下示例:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[margin=2.5cm]{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{algorithm, algpseudocode}
\makeatletter
\newcommand{\StatexIndent}[1][3]{%
\setlength\@tempdima{\algorithmicindent}%
\Statex\hskip\dimexpr#1\@tempdima\relax}
\algdef{S}[WHILE]{WhileNoDo}[1]{\algorithmicwhile\ #1}%
\newcommand{\algorithmfootnote}[2][\footnotesize]{%
\let\old@algocf@finish\@algocf@finish% Store algorithm finish macro
\def\@algocf@finish{\old@algocf@finish% Update finish macro to insert "footnote"
\leavevmode\rlap{\begin{minipage}{\linewidth}
#1#2
\end{minipage}}%
}%
}
\begin{document}
\begin{algorithm}[H]
\caption{Algorithm}
\algorithmfootnote{This is a footnote.}
\label{alg:algorithm}
\textbf{Input:} An input\\
\textbf{Output:} An output
\begin{algorithmic}[1]
\Procedure{Test}{}
\State $ x \gets$ 1
\State \Return x
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}
输出结果如下:
有人能告诉我我做错了什么吗?提前谢谢!
PS. 由于有其他布局结构,我希望继续使用 algorithmic(而不是 algorithmicx、algorithm2e 等)
答案1
一种可能的解决方案是使用包savenotes
中的环境footnote
。从文档:
有多个命令和环境(特别是 \parbox、minipage 和 tabular)可以“捕获”脚注,使它们无法逃逸并出现在页面底部。savenotes 环境会保存其中遇到的任何脚注,并在最后执行它们。
如果您希望脚注直接位于算法下方而不是页面底部,则可以使用minipage
。可以通过重新定义 来本地删除脚注行\footnoterule
。请注意,minipage 将脚注的编号从数字更改为字母,如果您也在正文中使用常规脚注,这可能是所需的。
MWE,a6paper
截图如下:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[a6paper]{geometry}
\usepackage{algorithm, algpseudocode}
\usepackage{footnote}
\begin{document}
Regular text\footnote{with footnote}
% minipage to show footnote directly below the algorithm
% width of the minipage equal to the textwidth
\begin{minipage}{\textwidth}
% switch off footnote line locally
\renewcommand*\footnoterule{}
% collect footnotes within algorithm environment
\begin{savenotes}
\begin{algorithm}[H]
\caption{Algorithm}
\footnote{This is a footnote.}
\label{alg:algorithm}
\textbf{Input:} An input\\
\textbf{Output:} An output
\begin{algorithmic}[1]
\Procedure{Test}{}
\State $ x \gets$ 1
\State \Return x
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{savenotes}
% footnotes are displayed at the end of the savenotes environment
\end{minipage}
\end{document}
结果: