我正在使用 algpseudocode 包,我想编写一个伪代码。这是我的代码
\documentclass[conference]{IEEEtran}
\usepackage[spanish, es-tabla]{babel}
\usepackage{graphicx, times, amsmath, colortbl, psfrag}
\usepackage[ruled, vlined, english, boxed, linesnumbered, lined]{algorithm2e}
\usepackage{algpseudocode}
\usepackage{multirow}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{float}
\begin{document}
...
\begin{algorithm}
\caption{Buscar elemento en una lista}
\KwData{$lista[1,...,x_n]$: lista en la que se va a buscar, $elem$: elemento que se va a buscar}
\KwResult{$encontrado$: booleano que indica si se encontr\'o el elemento}
\begin{algorithmic}[1]
\Procedure{Buscar}{$lista$, $elem$}
\State $encontrado \gets False$
\For{i}{1}{n}
\If{$lista[i]=elem$}
\State $encontrado \gets True$
\EndIf
\EndFor
\Return $encontrado$
\EndProcedure
\end{algorithmic}
\end{algorithm}
...
\end{document}
但是当我尝试编译它时出现以下错误
! Missing number, treated as zero.
<to be read again>
\ALG@b@2@EndIf@0
l.113 \EndIf
?
! Missing number, treated as zero.
<to be read again>
\ALG@b@2@EndFor@0
l.114 \EndFor
?
有谁知道我该如何编译它?
谢谢回答。
答案1
您正在使用包algorithm2e
和中不兼容的命令algpseudocode
;您只能使用algpseudocode
并将\KwData
替换\KwResult
为\Require
:\Ensure
\documentclass[conference]{IEEEtran}
\usepackage[spanish, es-tabla]{babel}
\usepackage{amsmath}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
\begin{algorithm}
\caption{Buscar elemento en una lista}
\begin{algorithmic}[1]
\Require $lista[1,...,x_n]$: lista en la que se va a buscar, $elem$: elemento que se va a buscar
\Ensure $encontrado$: booleano que indica si se encontr\'o el elemento
\Procedure{Buscar}{$lista$, $elem$}
\State $encontrado \gets False$
\For{i}{1}{n}
\If{$lista[i]=elem$}
\State $encontrado \gets True$
\EndIf
\EndFor
\Return $encontrado$
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}
然而,请注意IEEEtran HowTo
文件建议不是algorithm
从包中使用algorithm
:
B.算法
IEEE 出版物使用
figure
环境来包含不属于正文流的算法。Peter Williams 和 Rogerio Brito 的algorithmic.sty
软件包 [24] 或 Szász János 的algorithmicx.sty
软件包 [25](后者的设计比前者更具可定制性)可能有助于生成类似算法的结构(尽管作者当然可以自由使用他们在这方面最熟悉的任何 LaTeX 命令)。但是,不是使用(也是由 Williams 和 Brito 编写的)或(由 Christophe Fiorio 编写的)algorithm
的 浮动环境,因为 IEEE 使用的唯一浮动结构是图形和表格。此外,IEEEtran 不会控制由或 浮动环境生成的(非 IEEE)标题样式。algorithm.sty
algorithm2e.sty
algorithm.sty
algorithm2e.sty
在这种情况下,按照课程的建议,您可以将算法封闭在figure
环境中:
\documentclass[conference]{IEEEtran}
\usepackage[spanish, es-tabla]{babel}
\usepackage{amsmath}
\usepackage{algpseudocode}
\begin{document}
\begin{figure}
\caption{Pseudocódigo para el algoritmo que busca un elemento en una lista}
\begin{algorithmic}[1]
\Require $lista[1,...,x_n]$: lista en la que se va a buscar, $elem$: elemento que se va a buscar
\Ensure $encontrado$: booleano que indica si se encontr\'o el elemento
\Procedure{Buscar}{$lista$, $elem$}
\State $encontrado \gets False$
\For{i}{1}{n}
\If{$lista[i]=elem$}
\State $encontrado \gets True$
\EndIf
\EndFor
\Return $encontrado$
\EndProcedure
\end{algorithmic}
\end{figure}
\end{document}