
Estoy confundido acerca de los paquetes para escribir "algoritmos" simples. Hay demasiadas opciones y resulta confuso cuándo usar qué. Por ejemplo, si uso algpseudocode
, no puedo agregarlo algorithmic
porque ya está incluido en el algorithm
paquete.
¿Existen directrices definitivas para un enfoque simplificado? Cualquier sugerencia será apreciada.
Respuesta1
Versión TL;DR:
- algoritmo- contenedor flotante para algoritmos.
- algorítmico- primer entorno de composición tipográfica de algoritmos.
- algorítmicox- segundo entorno de composición tipográfica de algoritmos.
- pseudocódigo alg- diseño para
algorithmicx
. - algoritmo2e- tercer entorno de composición tipográfica de algoritmo.
Yo uso algorithmicx
with algpseudocode
ya que son superiores a algorithmic
. Creo que algorithmicx
ofrece la misma funcionalidad que algorithm2e
, pero encuentro su sintaxis más clara que la proporcionada por algorithm2e
.
Versión detallada
algoritmo
Envoltorio flotante para algoritmos. Es similar a bloquear comandos table
o figure
, que envuelves alrededor de tu tabla/figura para darle un número y evitar que se divida en dos páginas. Eldocumentacióndice:
Cuando se colocan dentro del texto sin estar encapsulados en un entorno flotante,
algorithmic
los entornos pueden dividirse sobre el límite de una página, lo que resta valor en gran medida a su apariencia. Además, es útil tener algoritmos numerados como referencia y para agregar listas de algoritmos a la lista de contenidos. Elalgorithm
entorno está destinado a abordar estas preocupaciones proporcionando un entorno flotante para los algoritmos.
Ejemplo:
\begin{algorithm}
\caption{Algorithm caption}
\label{alg:algorithm-label}
\begin{algorithmic}
... Your pseudocode ...
\end{algorithmic}
\end{algorithm}
algorítmico
Este es el entorno en el que escribe su pseudocódigo. Tiene comandos predefinidos para estructuras comunes como if
, while
, procedure
. Todos los comandos están en mayúscula, por ejemplo \IF{cond} ... \ELSE ...
. La documentación1dice:
El
algorithmic
entorno proporciona un entorno para describir algoritmos y elalgorithm
entorno proporciona un contenedor "flotante" para los algoritmos (implementado mediantealgorithmic
algún otro método a elección de los usuarios). La razón para proporcionar dos entornos es permitir al usuario la máxima flexibilidad.
Ejemplo:
\begin{algorithmic}
\IF{some condition is true}
\STATE do some processing
\ELSIF{some other condition is true}
\STATE do some different processing
\ELSE
\STATE do the default actions
\ENDIF
\end{algorithmic}
algorítmicox
Este paquete está como algorithmic
actualizado. Le permite definir comandos personalizados, algo que algorithmic
no se puede hacer. Entonces, si no quieres escribir tus (locos) comandos personalizados, estarás bien con algorithmic
. Se utiliza algorithmicx
de la misma manera que se utiliza algorithmic
, sólo que la sintaxis y los detalles son ligeramente diferentes. Consulte el ejemplo siguiente para obtener más detalles. Eldocumentacióndice:
El paquete algorítmicox en sí no define ningún comando algorítmico, pero proporciona un conjunto de macros para definir dicho conjunto de comandos. Puede utilizar sólo algorítmicox y definir los comandos usted mismo, o puede utilizar uno de los conjuntos de comandos predefinidos.
Ejemplo:
\begin{algorithm}
\caption{Euclid’s algorithm}
\label{euclid}
\begin{algorithmic}[1] % The number tells where the line numbering should start
\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}
\end{algorithm}
pseudocódigo alg
Este es solo un diseño algorithmicx
que intenta ser lo más similar posible a algorithmic
. También hay otros diseños, como:
algcompatible
(totalmente compatible con el paquete algorítmico),algpascal
(Tiene como objetivo crear un programa Pascal formateado, puede transformar un programa Pascal en unaalgpascal
descripción de algoritmo con algunas reglas de sustitución básicas).algc
(igual que el algpascal, pero para c. Este diseño está incompleto).
Eldocumentacióndice:
Si está familiarizado con el paquete algorítmico, le resultará fácil cambiar. Puede utilizar los algoritmos antiguos con el
algcompatible
diseño, pero utilice elalgpseudocode
diseño para los algoritmos nuevos. Para usarloalgpseudocode
, simplemente use\usepackage{algpseudocode}
.No es necesario cargar elalgorithmicx
paquete manualmente, ya que esto se hace mediantealgpseudocode
.
Vea el ejemplo de algorithmicx
, utiliza el algpseudocode
diseño.
algoritmo2e
Este es otro entorno de algoritmo como algorithmic
o algorithmicx
. Eldocumentacióndice:
Algorithm2e es un entorno para escribir algoritmos en LaTeX2e. Un
algorithm
se define como un objeto flotante como figuras. Proporciona macros que le permiten crear diferentes tipos de palabras clave, por lo que se proporciona un conjunto de palabras clave predefinidas. También puedes cambiar la tipografía de las palabras clave.
Ejemplo:
\begin{algorithm}[H]
\SetAlgoLined
\KwData{this text}
\KwResult{how to write algorithm with \LaTeX2e }
initialization\;
\While{not at end of this document}{
read current\;
\eIf{understand}{
go to next section\;
current section becomes this one\;
}{
go back to the beginning of current section\;
}
}
\caption{How to write algorithms}
\end{algorithm}
Respuesta2
- encontré el reciente
algpseudocodex
paqueteun buen paso hacia la unificación de la variedad dealgorithm*
paquetes. - Ese paquete combina muy bien algunas características (por ejemplo, genérica, creación de plantillas)
algorithmicx
y el diseño sencillo dealgorithm2e
, es decir, las líneas de alcance verticales.