Versión TL;DR:

Versión TL;DR:

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 algorithmicporque ya está incluido en el algorithmpaquete.

¿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 algorithmicxwith algpseudocodeya que son superiores a algorithmic. Creo que algorithmicxofrece 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 tableo 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, algorithmiclos 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. El algorithm 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 algorithmicentorno proporciona un entorno para describir algoritmos y el algorithmentorno proporciona un contenedor "flotante" para los algoritmos (implementado mediante algorithmicalgú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 algorithmicactualizado. Le permite definir comandos personalizados, algo que algorithmicno se puede hacer. Entonces, si no quieres escribir tus (locos) comandos personalizados, estarás bien con algorithmic. Se utiliza algorithmicxde 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 algorithmicxque intenta ser lo más similar posible a algorithmic. También hay otros diseños, como:

  1. algcompatible(totalmente compatible con el paquete algorítmico),
  2. algpascal(Tiene como objetivo crear un programa Pascal formateado, puede transformar un programa Pascal en una algpascaldescripción de algoritmo con algunas reglas de sustitución básicas).
  3. 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 algcompatiblediseño, pero utilice el algpseudocodediseño para los algoritmos nuevos. Para usarlo algpseudocode, simplemente use \usepackage{algpseudocode}.No es necesario cargar el algorithmicxpaquete manualmente, ya que esto se hace mediante algpseudocode.

Vea el ejemplo de algorithmicx, utiliza el algpseudocodediseño.


algoritmo2e

Este es otro entorno de algoritmo como algorithmico algorithmicx. Eldocumentacióndice:

Algorithm2e es un entorno para escribir algoritmos en LaTeX2e. Un algorithmse 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 recientealgpseudocodexpaqueteun buen paso hacia la unificación de la variedad de algorithm*paquetes.
  • Ese paquete combina muy bien algunas características (por ejemplo, genérica, creación de plantillas) algorithmicxy el diseño sencillo de algorithm2e, es decir, las líneas de alcance verticales.

ingrese la descripción de la imagen aquí (El ejemplo está tomado del manual).

información relacionada