算法和 IEEEtran

算法和 IEEEtran

我正在尝试在IEEEtranLaTeX 模板中编写一个算法,但它根本不起作用。

\usepackage{algorithm}
\usepackage{algorithmc}

%\begin{algorithm}[H]
\begin{algorithm*}
\caption{ASGP Merge and Pruning Step}
\label{alg:stuff}
\begin{algorithmic}[1]
\REQUIRE {$stuff$}
\STATE $stuff$
\RETURN $stuff$
\end{algorithmic}
%\end{algorithm}
\end{algorithm*}

但这就是我得到的:

!LaTeX 错误:\begin{ALC@g} 在输入第 31 行以 \end{algorithmic} 结束。

请参阅 LaTeX 手册或 LaTeX Companion 了解解释。输入 H 可立即获得帮助。...

l.47 \end{算法}

我已经尝试过使用\begin{figure*}它来代替\begin{algorithm*}但是也不起作用。

我看到了一篇关于使用的帖子\begin{algpseudocode},但是那也不起作用,如果我还\include{algorithmic}

!LaTeX 错误:命令 \algorithmicindent 已定义。或名称 \end... 非法,请参阅手册第 192 页。

如果没有,我会得到:

\REQUIRE 未定义的控制序列。

有人能帮助我吗?

答案1

IEEEtran的文档表明:

B.算法

IEEE 出版物使用figure环境来包含 algorithms不属于正文流的内容。Peter Williams 和 Rogerio Brito 的algorithmic.sty软件包 [24] 或 Szász János 的algorithmicx.sty软件包 [25](后者比前者更具可定制性)可能有助于生成类似算法的结构(尽管作者当然可以自由使用他们在这方面最喜欢的 LaTeX 命令)。但是,不要使用(也是由 Williams 和 Brito 编写的)或(由 Christophe Fiorio 编写的)algorithm的浮动环境, 因为 IEEE 使用的唯一浮动结构是 s 和。此外,IEEEtran 不会控制由或 float 环境生成的(非 IEEE)标题样式。algorithm.styalgorithm2e.styfiguretablesalgorithm.styalgorithm2e.sty

因此,按照建议,不是使用algorithm浮动环境;你可以将算法包装在figure(或figure*) 环境中(如果需要标题,并且标题要IEEEtran符合要求),并使用算法包;像这样:

\documentclass{IEEEtran}
\usepackage{algpseudocode}

\begin{document}

\begin{figure}
\begin{algorithmic}[1]
\Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of a and b}
\State $r\gets a\bmod b$
\While{$r\not=0$}\Comment{We have the answer if r is 0}
\State $a\gets b$
\State $b\gets r$
\State $r\gets a\bmod b$
\EndWhile\label{euclidendwhile}
\State \textbf{return} $b$\Comment{The gcd is b}
\EndProcedure
\end{algorithmic}
\caption{Euclid's algorithm}\label{euclid}
\end{figure}

\end{document}

在此处输入图片描述

如果不需要标题,则根本不要使用该figure环境。

相关内容