我正在尝试在IEEEtran
LaTeX 模板中编写一个算法,但它根本不起作用。
\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.sty
algorithm2e.sty
figure
tables
algorithm.sty
algorithm2e.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
环境。