Estoy confundido acerca de los paquetes para escribir «algoritmos» simples. Hay demasiadas opciones y resulta confuso cuándo usar qué. Por ejemplo, si utilizo algpseudocode, no puedo «agregar algorithmic porque ya está incluido en el algorithm paquete.

¿Existe alguna guía definitiva para un enfoque simplificado? Cualquier sugerencia será apreciada.

Comentarios

Respuesta

TL; Versión de DR:

  • algoritmo – contenedor flotante para algoritmos.
  • algorítmico – primer entorno de composición tipográfica de algoritmo.
  • algorítmicox – segundo algoritmo typesetti ng entorno.
  • algpseudocode – diseño para algorithmicx .
  • algoritmom2e – tercer entorno de composición tipográfica del algoritmo.

Utilizo algorithmicx con algpseudocode ya que son superiores a algorithmic. Creo que algorithmicx ofrece la misma funcionalidad en comparación con algorithm2e, pero encuentro su sintaxis más clara que la proporcionada por algorithm2e.

Versión detallada

algoritmo

Contenedor flotante para algoritmos. Es similar a los comandos de bloque table o figure, que envuelve tu tabla / figura para darle un número y evitar que sea dividido en dos páginas. La documentación dice:

Cuando se coloca dentro del texto sin estar encapsulado en un entorno algorithmic los entornos pueden dividirse en el límite de una página, lo que perjudica enormemente su apariencia. Además, es útil tener algoritmos numerados como referencia y para que se añadan listas de algoritmos a la lista de contenidos. El entorno algorithm está destinado a abordar estas preocupaciones al proporcionar 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, p. Ej. \IF{cond} ... \ELSE .... La documentación 1 dice:

El algorithmic proporciona un entorno para describir algoritmos y el entorno algorithm proporciona un contenedor «flotante» para los algoritmos (implementado con algorithmic o algunos otro método a elección del usuario). La razón por la que se proporcionan 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ítmico

Este paquete es como algorithmic actualizado. Le permite definir comandos personalizados, que es algo que algorithmic no puede «hacer. Por lo tanto, si no quiere escribir sus (locos) comandos personalizados, estará bien con algorithmic. Usa algorithmicx de la misma manera que usa algorithmic, solo que la sintaxis y los detalles son ligeramente diferentes. Consulte el ejemplo a continuación para obtener más detalles. La documentación dice:

El paquete algorítmico en sí no define ningún comando algorítmico. , pero proporciona un conjunto de macros para definir dicho conjunto de comandos. Puede usar sólo algorítmicox y definir los comandos usted mismo, o puede usar 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} 

algpseudocode

Este es solo un diseño para algorithmicx que 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 algpascal descripción de algoritmo con algunas reglas básicas de sustitución).
  3. algc (igual que el algpascal, pero para c. Este diseño está incompleto).

El documentación dice:

Si está familiarizado con el paquete algorítmico, lo encontrará fácil de cambiar. Puede utilizar los algoritmos antiguos con el diseño algcompatible, pero utilice el diseño algpseudocode para los nuevos algoritmos. Para usar algpseudocode, simplemente use \usepackage{algpseudocode}. No es necesario que cargue manualmente el paquete algorithmicx, ya que algpseudocode.

Vea el ejemplo de algorithmicx , usa el diseño algpseudocode.


algorítmm2e

Este es otro entorno de algoritmos como algorithmic o algorithmicx. La documentación dice:

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 puede 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} 

Comentarios

  • ¡Una respuesta hermosa y detallada! Parece que la versión TL; DRTL; DR es: " use algorithmicx "? Su discusión es muy clara acerca de por qué y si preferir algorithmicx a algorithmic, pero no ' t ofrece mucha comparación con algorithm2e. ¿Se debe a que está menos familiarizado con él, porque se sabe que es inferior o es algo más?
  • Sí, tiene razón: no estoy muy familiarizado con algorithm2e. Creo que deberían ofrecer una funcionalidad similar, pero prefiero la sintaxis de algorithmicx. Edité mi respuesta para dejar en claro que es solo mi preferencia (subjetiva).
  • Incluso si carga algorithmicx, entiendo que aún tiene que cargar algorithm ¿también?
  • ¡Respuesta extensa! Para tomar una decisión rápida, puede ser útil incluir imágenes de los resultados compilados para cada paquete
  • Cuando leí la sección sobre algorithmicx, no lo hice ' t obtienes inmediatamente que algpseudocode también debe cargarse para poder usar el paquete. Quizás yo ' soy el único que experimentó eso, de lo contrario, podría agregarse en alguna parte.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *