算法下未出现脚注

算法下未出现脚注

我已经为一个算法创建了伪代码,并想在该算法下添加脚注。但是,当我尝试应用提供的答案时这里,则不会出现脚注。请参见以下示例:

\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}

结果:

在此处输入图片描述

相关内容