Je suis confus au sujet des paquets pour écrire des « algorithmes » simples. Il y a trop doptions et il est difficile de savoir quand utiliser quoi. Par exemple, si jutilise algpseudocode, alors je ne peux « t ajouter algorithmic car il est déjà inclus dans le algorithm package.

Existe-t-il des directives définitives pour une approche simplifiée? Toute suggestion sera appréciée.

Commentaires

Réponse

TL; version DR:

  • algorithme – wrapper float pour les algorithmes.
  • algorithmique – premier environnement de composition dalgorithmes.
  • algorithmicx – deuxième algorithme typesetti ng environnement.
  • algpseudocode – mise en page pour algorithmicx .
  • algorithm2e – troisième environnement de composition dalgorithmes.

Jutilise algorithmicx avec algpseudocode car ils sont supérieurs à algorithmic. Je pense que algorithmicx offre la même fonctionnalité que algorithm2e, mais je trouve sa syntaxe plus claire que celle fournie par algorithm2e.

Version détaillée

algorithme

Emballage flottant pour les algorithmes. Il est similaire aux commandes de bloc table ou figure, que vous enroulez autour de votre tableau / figure pour lui donner un nombre et pour éviter quil ne soit divisé sur deux pages. La documentation dit:

Lorsquil est placé dans le texte sans être encapsulé dans un flottant environnement algorithmic les environnements peuvent être répartis sur une limite de page, ce qui nuit considérablement à leur apparence. De plus, il est utile davoir des algorithmes numérotés pour référence et pour que des listes dalgorithmes soient annexées à la liste des contenus. Lenvironnement algorithm est censé répondre à ces préoccupations en fournissant un environnement flottant pour les algorithmes.

Exemple:

\begin{algorithm} \caption{Algorithm caption} \label{alg:algorithm-label} \begin{algorithmic} ... Your pseudocode ... \end{algorithmic} \end{algorithm} 

algorithmique

Cest lenvironnement dans lequel vous écrivez votre pseudocode. Vous avez des commandes prédéfinies pour des structures courantes telles que if, while, procedure. Toutes les commandes sont en majuscules, par exemple \IF{cond} ... \ELSE .... La documentation 1 dit:

Le algorithmic fournit un environnement pour décrire les algorithmes et lenvironnement algorithm fournit un wrapper «float» pour les algorithmes (implémenté en utilisant algorithmic ou certains autre méthode au choix des utilisateurs). La raison pour laquelle deux environnements sont fournis est de permettre à lutilisateur une flexibilité maximale.

Exemple:

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

algorithmicx

Ce paquet est comme algorithmic mis à jour. Il vous permet de définir des commandes personnalisées, ce que algorithmic ne peut pas faire. Donc, si vous ne voulez pas écrire vos commandes personnalisées (folles), tout ira bien avec algorithmic. Vous utilisez algorithmicx de la même manière que vous utilisez algorithmic, seules la syntaxe et les détails sont légèrement différents. Voir lexemple ci-dessous pour plus de détails. La documentation dit:

Le package algorithmicx lui-même ne définit aucune commande algorithmique , mais donne un ensemble de macros pour définir un tel jeu de commandes. Vous pouvez utiliser uniquement algorithmicx et définir les commandes vous-même, ou vous pouvez utiliser lun des ensembles de commandes prédéfinis

Exemple:

\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

Ceci est juste une mise en page pour algorithmicx qui essaie dêtre aussi similaire que possible pour algorithmic. Il existe également dautres mises en page, telles que:

  1. algcompatible (entièrement compatible avec le package algorithmique),
  2. algpascal (vise à créer un programme pascal formaté, vous pouvez transformer un programme pascal en une description dalgorithme algpascal avec quelques règles de substitution de base).
  3. algc (tout comme lalgpascal, mais pour c. Cette mise en page est incomplète).

Le documentation dit:

Si vous êtes familier avec le paquet algorithmique, vous le trouverez facile à changer. Vous pouvez utiliser les anciens algorithmes avec la disposition algcompatible, mais veuillez utiliser la disposition algpseudocode pour les nouveaux algorithmes. Pour utiliser algpseudocode, utilisez simplement \usepackage{algpseudocode}. Vous navez pas besoin de charger manuellement le package algorithmicx, car cela est fait par algpseudocode.

Voir lexemple pour algorithmicx , il utilise la disposition algpseudocode.


algorithm2e

Ceci est un autre environnement dalgorithme tout comme algorithmic ou algorithmicx. La documentation dit:

Algorithm2e est un environnement pour écrire des algorithmes en LaTeX2e. Un algorithm est défini comme un objet flottant comme des figures. Il fournit des macros qui vous permettent de créer différentes sortes de mots clés, ainsi un ensemble de mots clés prédéfinis est donné. Vous pouvez également modifier la typographie des mots-clés.

Exemple:

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

Commentaires

  • Une belle réponse détaillée! Cela ressemble à la version TL; DRTL; DR: " use algorithmicx "? Votre discussion est très claire sur pourquoi et si vous préférez algorithmicx à algorithmic, mais ' t offre beaucoup de comparaison avec algorithm2e. Est-ce parce que vous le connaissez moins, parce quil est bien connu pour être inférieur, ou autre chose?
  • Oui, vous avez raison: je ne connais pas très bien algorithm2e. Je pense quils devraient offrir des fonctionnalités similaires, mais je préfère la syntaxe de algorithmicx. Jai modifié ma réponse pour préciser que ce nest que ma préférence (subjective).
  • Même si vous chargez algorithmicx Je comprends que vous devez toujours charger algorithm aussi?
  • Réponse complète! Pour une décision rapide, il peut être utile dinclure des images des sorties compilées pour chaque paquet
  • Quand jai lu la section sur algorithmicx, je nai pas ' t obtenir immédiatement que algpseudocode doit également être chargé afin dutiliser le paquet. Peut-être que je ' suis le seul à avoir vécu cela, sinon cela pourrait peut-être être ajouté quelque part.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *