Comment mettre en page des algorithmes ou des programmes?

$\Reponse$ Le package algorithm2e permet comme son nom l'indique d'écrire des algorithmes. Il a l'avantage d'avoir une présentation souple et d'être facilement extensible. En effet, les petites instructions conditionnelles peuvent être présentées sur une ligne et l'on peut facilement ajouter un filet sur le côté. Il dispose également de commandes telles que \SetKw qui permettent de rajouter facilement des mots-clés.

Voici un algorithme écrit avec algorithm2e:


\documentclass[french]{article}
\usepackage{babel}
\usepackage[ruled,lined]{algorithm2e}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
\begin{algorithm}
  \caption{Comment utiliser <latex>\LaTeX</latex>}
  \Entree{un utilisateur quelconque}
  \Sortie{un utilisateur connaissant <latex>\LaTeX</latex>}

  initialisation \;
  \Tq{pas à la fin de la FAQ}{
    l'utilisateur lit la section courante \;
    \eSi{comprise}{
      aller à la section suivante \;
      la section courante devient cette dernière \;
    }{
      revenir au début de cette section \;
    }
  }
\end{algorithm}
\end{document}

$\Reponse$ Les packages algorithm et algorithmic disponibles dans algorithms, ont été spécifiquement conçus pour mettre en forme des algorithmes. algorithmic sert à décrire les algorithmes et algorithm fournit un environnement flottant semblable à figure ou table (cf. les pages à propose des flottants). Un exemple d'utilisation possible:

Utilisation d'algorithm


\documentclass{article}
\usepackage{algorithm,algorithmic}
\begin{document}
\begin{algorithm}
\caption{Un joli algorithme}
\begin{algorithmic}
\REQUIRE{habiter près des montagnes}
\REPEAT
 \IF{il fait beau}
  \STATE faire une randonnée
 \ELSE[il fait moche]
  \STATE résoudre P $\neq$ NP
 \ENDIF
\UNTIL{foulure de cheville}
\ENSURE{bobo}
\end{algorithmic}
\end{algorithm}
\end{document}

$\Reponse$ Le package frpseudocode, d'Oliver Irwin, s'appuie sur algorithmicx (équivalent récent des packages présentés ci-dessus) en le françisant. Son ut est avant tout de fournir une traduction en français de termes utilisés dans les algorithmes, pour permettre leurt intégration dans un document en français. Il suffit de charger frpseudocode, puis d'utiliser les commandes habituelles de algorithmicx, puisque leur nom est conservé.

$\Reponse$ Le package algpseudocodex, de Christian Matt, est lui aussi basé sur algorithmicx, dont il reprend la syntaxe, mais il lui ajoute de nombreuses fonctionnalités.

$\Reponse$ Il existe aussi le package alg.

$\Reponse$ Le package newalg propose un environnement algorithm qui par défaut utilise le mode mathématique et l'environnement array pour les alignements. La commande \text est également disponible. Le package gère les instructions : if-then-else, for, while, repeat, switch et propose un certain nombre de macros telles que call, error, algkey, return, nil.

Utilisation de newalg


\documentclass{article}
\usepackage{newalg}
\begin{document}
\begin{algorithm}{StrictSup}{x, y}
  \begin{IF}{x > y}
    \RETURN x
  \ELSE
    \ERROR{x leq y}
  \end{IF}
\end{algorithm}
\end{document}
</latex>



$\Reponse$  Le package [[ctanpkg>program|program]] permet de mettre en relief des
mots clés, d'utiliser des mathématiques dans des algorithmes, etc.

Utilisation de [[ctanpkg>program|program]]:

<latexdoc>
\documentclass{article}
\usepackage{program}
\begin{document}
\begin{program}
\mbox{Exponentiation rapide :} \\
\BEGIN
  \FOR i:=1 \TO 10 \STEP 1 \DO
     |afficher|(|exp|(2,i)); \\ |newline|() \OD
\WHERE
\FUNCT |exp|(x,n) \BODY
          \EXP z:=1;
               \WHILE n \ne 0 \DO 
                  \WHILE |pair|(n) \DO
                     n:=n/2; x:=x*x \OD;
                  n:=n-1; z:=z*x \OD;
               z \ENDEXP \ENDFUNCT
\END\label{fin}
\end{program}
\end{document}
program doit être chargé après amsmath lors d'une utilisation conjointe de ces deux packages.

$\Reponse$ Le style programs.sty du package progkeys permet lui aussi d'utiliser des mathématiques et de mettre en gras des mots-clefs.


Sources:

domaines_specialises/informatique/mettre_en_page_des_algorithmes_ou_des_programmes.txt · Dernière modification: 2020/08/18 19:17 par jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0