Ceci est une ancienne révision du document !
Comment mettre en page des algorithmes ou des programmes?
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. Vous pouvez
le trouver sur https://www.ctan.org/{macros/latex/contrib/algorithm2e/} puis essayer
l'exemple~\vref{ex=algo2e}.
Un algorithme écrit avec algorithm2e:
![Fail: image too wide or too tall: : 622x1039, maximum allowed:1000x500px
\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}](/lib/plugins/latex/images/renderfail.png)
Les packages algorithm et algorithmic disponibles sur
https://www.ctan.org/{macros/latex/contrib/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. le paragraphe \vref{paragraphe=flottant}).
L'exemple \vref{ex=algorithm} en montre une utilisation possible.
Utilisation d'algorithm
![Fail: triggered security filter; contains blacklisted LaTeX tags.
\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}](/lib/plugins/latex/images/renderfail.png)
Il existe aussi le package alg disponible sur
https://www.ctan.org/{macros/latex/contrib/alg/}.
Le package newalg est également disponible sur https://www.ctan.org/ à
l'adresse https://www.ctan.org/{macros/latex/contrib/newalg/}. Il 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. L'exemple~\vref{ex=newalg} en donne une
illustration.
Utilisation de newalg
![Fail: LaTeX compilation failed.
\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]] (disponible sur
https://www.ctan.org/{macros/latex/contrib/program/}) permet de mettre en relief des
mots clés, d'utiliser des mathématiques dans des algorithmes, etc.
Voir l'exemple \vref{ex=program}.
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}](/lib/plugins/latex/images/renderfail.png)
programs (https://www.ctan.org/{macros/latex/contrib/progkeys/})
permet lui aussi d'utiliser des mathématiques et de mettre en gras des
mots clés.