算法末尾的行下方有文本?

算法末尾的行下方有文本?

我正在使用 algorithm 和 algpseudocode 包。当我定义一个算法时,它以一条水平线结束。我想在这条水平线下方放一些文字来解释一些特殊情况。我在各种书籍中都看到过这种用法。我如何将文字放在这条水平线下方?

答案1

\algcomment我已经定义了一个在环境之后立即使用的新命令algorithm

\newcommand{\algcomment}[1]{%
    \vspace{-\baselineskip}%
    \noindent%
    {\footnotesize #1\par}%
    \vspace{\baselineskip}%
    }

唯一的限制是您不能允许其algorithm浮动。

梅威瑟:

\documentclass{article}

\usepackage{algorithm}
\usepackage{algpseudocode}

\usepackage{lipsum} % just for the example

\newcommand{\algcomment}[1]{%
    \vspace{-\baselineskip}%
    \noindent%
    {\footnotesize #1\par}%
    \vspace{\baselineskip}%
    }

\begin{document}
\lipsum[1-2]
\begin{algorithm}[H]
    \begin{algorithmic}[1]
        \For{$x<10$}
            \State $x\gets x+1$
        \EndFor
    \end{algorithmic}
    \caption{My algorithm}
\end{algorithm}
\algcomment{This algorithm talks about}
\lipsum[1-2]
\end{document} 

输出:

在此处输入图片描述

答案2

这是另一种选择,消除了卡尔·科勒答案(如果需要,环境可以自由浮动,并且可以在环境内使用 \algcomment algorithm):

\documentclass{article}s
\usepackage{etoolbox}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{lipsum} % just for the example

\makeatletter
\AfterEndEnvironment{algorithm}{\let\@algcomment\relax}
\AtEndEnvironment{algorithm}{\kern2pt\hrule\relax\vskip3pt\@algcomment}
\let\@algcomment\relax
\newcommand\algcomment[1]{\def\@algcomment{\footnotesize#1}}

\renewcommand\fs@ruled{\def\@fs@cfont{\bfseries}\let\@fs@capt\floatc@ruled
  \def\@fs@pre{\hrule height.8pt depth0pt \kern2pt}%
  \def\@fs@post{}%
  \def\@fs@mid{\kern2pt\hrule\kern2pt}%
  \let\@fs@iftopcapt\iftrue}
\makeatother

\begin{document}

Some test text.
\begin{algorithm}
  \algcomment{This algorithm talks about a really special procedure which will be described elsewhere in this document}
  \begin{algorithmic}[1]
    \For{$x<10$}
    \State $x\gets x+1$
    \EndFor
  \end{algorithmic}
  \caption{My algorithm}
\end{algorithm}
\lipsum[4]

\end{document}

在此处输入图片描述

相关内容