如何将 algorithm2e 包与 IEEEtran 类一起使用?

如何将 algorithm2e 包与 IEEEtran 类一起使用?

IEEEtran 文档建议我不应该使用浮动算法环境算法2e.sty

B.算法

IEEE 出版物使用该figure环境来包含不属于正文流的算法。Peter Williams 和 Rogerio Brito 的algorithmic.sty包裹或 Szász János 的algorithmicx.sty包裹(后者设计得比前者更具可定制性)可能有助于生成类似算法的结构(尽管作者当然可以自由使用他们在这方面最熟悉的 LaTeX 命令)。但是,不要使用(也是由 Williams 和 Brito 设计的)或(由 Christophe Fiorio 设计的)浮动algorithm环境 ,因为 IEEE 使用的唯一浮动结构是图形和表格。algorithm.styalgorithm2e.sty此外,IEEEtran将无法控制algorithm.styalgorithm2e.sty浮动环境产生的(非 IEEE)标题样式。

我尝试使用建议的包algorithmicalgorithmicx但我对结果并不满意,我宁愿使用该algorithm2e包。

一位同事告诉我,IEEE 的建议仅适用于包的浮动algorithm环境,而不适用于包本身。她建议我将算法包装在一个figure环境中。

我尝试简单地将整个算法包装在figure

\documentclass[journal, a4paper]{IEEEtran}

\usepackage[ruled,norelsize]{algorithm2e}

\begin{document}

%\begin{figure}[!t]

\begin{algorithm}[h]
 \caption{multiobjective DE} 
 initialize population $P = \left \{ X_{1}, ... , X_{N} \right \} $\;
 \For( \emph{Evolutionary loop}){$g := 1$ to $G_{max}$}
 {
    Do things \;
    Trim the population to size $N$ using nondominated sorting and diversity estimation \;
 }
\end{algorithm}

%\end{figure}

\end{document}

但我得到了

Not in outer par mode. \begin{algorithm}[h]

错误。显然我不能这样做。我该如何解决这个问题?

答案1

你可以按照这个方法去做。

首先,您需要使用H说明符来强制algorithm环境不浮动。

然后,由于H双列模式下不允许使用该说明符,因此您可以使用 Werner 在此描述的解决方法回答,即在序言中添加以下几行

\makeatletter
\newcommand{\removelatexerror}{\let\@latex@error\@gobble}
\makeatother

\removelatexerror并在环境内发出命令figure

梅威瑟:

\documentclass[journal, a4paper]{IEEEtran}

\usepackage[ruled,norelsize]{algorithm2e}

\makeatletter
\newcommand{\removelatexerror}{\let\@latex@error\@gobble}
\makeatother

\begin{document}

\begin{figure}[!t]
 \removelatexerror
  \begin{algorithm}[H]
   \caption{multiobjective DE}
   initialize population $P = \left \{ X_{1}, ... , X_{N} \right \} $\;
   \For( \emph{Evolutionary loop}){$g := 1$ to $G_{max}$}
   {
      Do things \;
      Trim the population to size $N$ using nondominated sorting and diversity estimation \;
   }
  \end{algorithm}
\end{figure}

\end{document} 

输出:

在此处输入图片描述

如果你愿意,你现在甚至可以\caption在 中添加一个figure,例如

\begin{figure}[!t]
 \caption{My algorithm}
 \removelatexerror
 ...

产量

在此处输入图片描述

相关内容