algorithm2e 带有“ruled”,但下方有标题?

algorithm2e 带有“ruled”,但下方有标题?

我想在我的文章中介绍一种算法。为此,我使用了该algorithm2e软件包(我已经使用了很多年)。

我想使用该ruled选项,即我像这样加载包:

\usepackage[ruled,noend,noline,slide]{algorithm2e}

不幸的是,使用该ruled选项后,该algorithm2e包会将标题放在伪代码上方。

但是,我希望标题出现在伪代码下方,就像图形或表格中的任何其他标题一样。

有人知道我需要在样式文件中更改什么才能实现这一点吗?或者我可以借助包来实现吗float?(请注意,我仍然希望拥有一种这样的算法环境

\begin{myalgorithm}[tb]
\If{...}
\caption{An algorithm}
\end{myalgorithm}

)我使用的是最新版本,即4.01 algorithm2e.sty

答案1

您可以通过定义一个新环境来实现这一点,该环境将标题替换under为默认值top,并调整规则和标题文本之间的垂直跳跃:

\documentclass{book}
\usepackage[ruled,noend,noline,slide]{algorithm2e}

\makeatletter
\newenvironment{Ualgorithm}[1][htpb]
  {\def\@algocf@post@ruled{\kern\interspacealgoruled\hrule  height\algoheightrule\kern3pt\relax}%
    \def\@algocf@capt@ruled{under}
    \begin{algorithm}[#1]}
  {\end{algorithm}}
\makeatother

\begin{document}

\begin{algorithm}
\If{$i<5$}{some action}
\caption{A ruled algorithm with caption above}
\end{algorithm}

\begin{Ualgorithm}
\If{$i<5$}{some action}
\caption{A ruled algorithm with caption below}
\end{Ualgorithm}

\end{document}

在此处输入图片描述

相关内容