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.sty
algorithm2e.sty
此外,IEEEtran
将无法控制algorithm.sty
或algorithm2e.sty
浮动环境产生的(非 IEEE)标题样式。
我尝试使用建议的包algorithmic
,algorithmicx
但我对结果并不满意,我宁愿使用该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
...
产量