249 lines
9.6 KiB
Plaintext
249 lines
9.6 KiB
Plaintext
|
%%
|
|||
|
%% 11 juin 2010
|
|||
|
%%
|
|||
|
%% algorithmique.sty
|
|||
|
%%
|
|||
|
%% S O F T W A R E L I C E N S E
|
|||
|
%% =================================
|
|||
|
%%
|
|||
|
%% The file pseudocode.sty
|
|||
|
%% is referred to as `the pseudocode package'
|
|||
|
%% or simply `the package'.
|
|||
|
%%
|
|||
|
%% The pseudocode package is copyright 1999 D.L. Kreher and D.R. Stinson.
|
|||
|
%%
|
|||
|
%% The pseudocode package and its drivers may be distributed and/or modified
|
|||
|
%% under the conditions of the LaTeX Project Public License, either version
|
|||
|
%% 1.3 of this license or (at your option) any later version.
|
|||
|
%% The latest version of this license is in
|
|||
|
%% http://www.latex-project.org/lppl.txt
|
|||
|
%% and version 1.3 or later is part of all distributions of LaTeX
|
|||
|
%% version 2003/12/01 or later.
|
|||
|
%%
|
|||
|
%% The package has the LPPL maintenance status "maintained".
|
|||
|
%%
|
|||
|
%% Francis<69> par Alain Busser, Lyc<79>e Roland-Garros, Le Tampon
|
|||
|
%%
|
|||
|
%% end of software license
|
|||
|
%%
|
|||
|
%%
|
|||
|
%% DESCRIPTION:
|
|||
|
%% algorithmique.sty est un fichier de style LaTeX, comprenant:
|
|||
|
%% l'environment pseudocode traduit en Fran<61>ais
|
|||
|
%%
|
|||
|
%% INSTALLATION:
|
|||
|
%% <20> placer l<> o<> LaTeX cherche des fichiers.
|
|||
|
%%
|
|||
|
%% DOCUMENTATION:
|
|||
|
%% Voir pseudocode.tex.
|
|||
|
%%
|
|||
|
%% COPYING:
|
|||
|
%% Copying of part or all of this file is allowed under the following
|
|||
|
%% conditions only:
|
|||
|
%% (1) You may freely distribute unchanged copies of the file. Please
|
|||
|
%% include the documentation when you do so.
|
|||
|
%% (2) You may modify a renamed copy of the file, but only for personal
|
|||
|
%% use or use within an organization.
|
|||
|
%% (3) You may copy fragments from the file, for personal use or for
|
|||
|
%% distribution, as long as credit is given where credit is due.
|
|||
|
%%
|
|||
|
%% You are NOT ALLOWED to take money for the distribution or use of
|
|||
|
%% this file or modified versions or fragments thereof, except for
|
|||
|
%% a nominal charge for copying etc.
|
|||
|
%%
|
|||
|
%%
|
|||
|
%% CODE:
|
|||
|
\typeout{** }
|
|||
|
\typeout{** Document Style `algorithmique' }
|
|||
|
\typeout{** by D.L. Kreher and D.R. Stinson }
|
|||
|
\typeout{** Alain Busser }
|
|||
|
|
|||
|
%
|
|||
|
\NeedsTeXFormat{LaTeX2e}
|
|||
|
\ProvidesPackage{algorithmique}
|
|||
|
%
|
|||
|
\if@twocolumn
|
|||
|
\newlength{\pcode@width}
|
|||
|
\setlength{\pcode@width}{\columnwidth}
|
|||
|
\addtolength{\pcode@width}{-40pt}
|
|||
|
\else
|
|||
|
\newlength{\pcode@width}
|
|||
|
\setlength{\pcode@width}{\textwidth}
|
|||
|
\addtolength{\pcode@width}{-40pt}
|
|||
|
\fi
|
|||
|
%
|
|||
|
\RequirePackage{fancybox}
|
|||
|
\RequirePackage{ifthen}
|
|||
|
%
|
|||
|
\newcommand{\pcode@AF}[1]{\mbox{\textsc{#1}}} % choix de la police
|
|||
|
\newcounter{pseudocode}[section]
|
|||
|
\newcounter{pseudonum}
|
|||
|
\renewcommand{\thepseudonum}{\arabic{pseudonum}}
|
|||
|
\newcommand{\pcode@tab}[1]{\hspace*{#1ex}}
|
|||
|
\renewcommand{\thepseudocode}{\thesection.\arabic{pseudocode}}
|
|||
|
%
|
|||
|
\newboolean{pcode@plain}
|
|||
|
\newboolean{pcode@ruled}
|
|||
|
\newboolean{pcode@disp}
|
|||
|
\newboolean{pcode@shad}
|
|||
|
\newboolean{pcode@dbox}
|
|||
|
\newboolean{pcode@obox}
|
|||
|
\newboolean{pcode@Obox}
|
|||
|
\newboolean{pcode@fbox}
|
|||
|
%
|
|||
|
\newenvironment{pseudocode}[3][plain]
|
|||
|
{%
|
|||
|
\refstepcounter{pseudocode}%
|
|||
|
\ifthenelse{\equal{#1}{plain}}{\setboolean{pcode@plain}{true}}{\setboolean{pcode@plain}{false}}%
|
|||
|
\ifthenelse{\equal{#1}{ruled}}{\setboolean{pcode@ruled}{true}}{\setboolean{pcode@ruled}{false}}%
|
|||
|
\ifthenelse{\equal{#1}{display}}{\setboolean{pcode@disp}{true}}{\setboolean{pcode@disp}{false}}%
|
|||
|
\ifthenelse{\equal{#1}{shadowbox}}{\setboolean{pcode@shad}{true}}{\setboolean{pcode@shad}{false}}%
|
|||
|
\ifthenelse{\equal{#1}{doublebox}}{\setboolean{pcode@dbox}{true}}{\setboolean{pcode@dbox}{false}}%
|
|||
|
\ifthenelse{\equal{#1}{ovalbox}}{\setboolean{pcode@obox}{true}}{\setboolean{pcode@obox}{false}}%
|
|||
|
\ifthenelse{\equal{#1}{Ovalbox}}{\setboolean{pcode@Obox}{true}}{\setboolean{pcode@Obox}{false}}%
|
|||
|
\ifthenelse{\equal{#1}{framebox}}{\setboolean{pcode@fbox}{true}}{\setboolean{pcode@fbox}{false}}%
|
|||
|
\setcounter{pseudonum}{0}%
|
|||
|
\ifthenelse{\boolean{pcode@disp}}%
|
|||
|
{%
|
|||
|
\noindent\begin{math}%
|
|||
|
}%
|
|||
|
{%
|
|||
|
\begin{Sbox}%
|
|||
|
\begin{minipage}{\pcode@width}%
|
|||
|
\ifthenelse{\boolean{pcode@ruled}}
|
|||
|
{
|
|||
|
\noindent\rule{\pcode@width}{1pt}\hfill\\
|
|||
|
{\bfseries Algorithme \thepseudocode:\pcode@tab{1}}\pcode@AF{#2}($#3$)\\
|
|||
|
\noindent\rule{\pcode@width}{1pt}\hfill\\[1ex]
|
|||
|
}
|
|||
|
{
|
|||
|
{\bfseries Algorithme \thepseudocode:\pcode@tab{1}}\pcode@AF{#2}($#3$)\\[2ex]
|
|||
|
}
|
|||
|
\noindent\begin{math}\begin{array}{@{\pcode@tab{1}}lr@{}}%
|
|||
|
}{}%
|
|||
|
}%
|
|||
|
{%
|
|||
|
\ifthenelse{\boolean{pcode@disp}}%
|
|||
|
{%
|
|||
|
\end{math}
|
|||
|
}%
|
|||
|
{%
|
|||
|
\ifthenelse{\boolean{pcode@ruled}}
|
|||
|
{
|
|||
|
\end{array}\end{math}\\[1ex]
|
|||
|
\noindent\rule{\pcode@width}{1pt}\hfill
|
|||
|
\end{minipage}\end{Sbox}\bigskip\noindent%
|
|||
|
}
|
|||
|
{\end{array}\end{math}\end{minipage}\end{Sbox}\bigskip\noindent}%
|
|||
|
\ifthenelse{\boolean{pcode@plain}}{\TheSbox}{}%
|
|||
|
\ifthenelse{\boolean{pcode@ruled}}{\TheSbox}{}%
|
|||
|
\ifthenelse{\boolean{pcode@shad}}{\shadowbox{\TheSbox}}{}%
|
|||
|
\ifthenelse{\boolean{pcode@dbox}}{\doublebox{\TheSbox}}{}%
|
|||
|
\ifthenelse{\boolean{pcode@obox}}{\cornersize*{4ex}\ovalbox{\TheSbox}}{}%
|
|||
|
\ifthenelse{\boolean{pcode@Obox}}{\cornersize*{4ex}\Ovalbox{\TheSbox}}{}%
|
|||
|
\ifthenelse{\boolean{pcode@fbox}}{\fbox{\TheSbox}}{}%
|
|||
|
\bigskip%
|
|||
|
}%
|
|||
|
}%
|
|||
|
%
|
|||
|
\newcommand{\STMTNUM}[2]{&\refstepcounter{pseudonum}\hspace*{#1}%
|
|||
|
\mbox{(\thepseudonum)\label{#2}}}
|
|||
|
\newcommand{\BOOL}[1]{\mbox{\bfseries variables bool<6F>ennes }\pcode@tab{1}#1}
|
|||
|
\newcommand{\INT}[1]{\mbox{\bfseries variables enti<74>res }\pcode@tab{1}#1}
|
|||
|
\newcommand{\ENT}[1]{\mbox{\bfseries variables enti<74>res }\pcode@tab{1}#1}
|
|||
|
\newcommand{\FLOAT}[1]{\mbox{\bfseries variables r<>elles }\pcode@tab{1}#1}
|
|||
|
\newcommand{\REAL}[1]{\mbox{\bfseries variables r<>elles }\pcode@tab{1}#1}
|
|||
|
\newcommand{\REEL}[1]{\mbox{\bfseries variables r<>elles }\pcode@tab{1}#1}
|
|||
|
\newcommand{\STRING}[1]{\mbox{\bfseries cha<68>nes de caract<63>res }\pcode@tab{1}#1}
|
|||
|
\newcommand{\CHAINE}[1]{\mbox{\bfseries cha<68>nes de caract<63>res }\pcode@tab{1}#1}
|
|||
|
\newcommand{\ARRAY}[1]{\mbox{\bfseries tableaux }\pcode@tab{1}#1}
|
|||
|
\newcommand{\TABLEAU}[1]{\mbox{\bfseries tableaux }\pcode@tab{1}#1}
|
|||
|
\newcommand{\LOCAL}[1]{\mbox{\bfseries variables locales }\pcode@tab{1}#1}
|
|||
|
\newcommand{\GLOBAL}[1]{\mbox{\bfseries variables globales }\pcode@tab{1}#1}
|
|||
|
\newcommand{\EXTERNAL}[1]{\mbox{\bfseries variables externes }\pcode@tab{1}#1}
|
|||
|
\newcommand{\EXTERNE}[1]{\mbox{\bfseries variables externes }\pcode@tab{1}#1}
|
|||
|
\newcommand{\COMMENT}[1]%
|
|||
|
{%
|
|||
|
\vspace*{1ex}%
|
|||
|
\mbox{\bfseries Commentaire: }\pcode@tab{.5} \mbox{#1}
|
|||
|
}
|
|||
|
\newcommand{\BEGIN}{\left\{\begin{array}{@{}lr@{}}}
|
|||
|
\newcommand{\DEBUT}{\left\{\begin{array}{@{}lr@{}}}
|
|||
|
\newcommand{\END}{\end{array}\right.}
|
|||
|
\newcommand{\FIN}{\end{array}\right.}
|
|||
|
\newcommand{\PROCEDURE}[2]%
|
|||
|
{%
|
|||
|
\mbox{\bfseries proc<6F>dure }\pcode@AF{#1}(\ensuremath{#2})\\%
|
|||
|
\begin{array}{@{\pcode@tab{1}}l@{}}%
|
|||
|
}
|
|||
|
\newcommand{\ENDPROCEDURE}{\vspace*{2ex}\end{array}\\ }
|
|||
|
\newcommand{\FINPROCEDURE}{\vspace*{2ex}\end{array}\\ }
|
|||
|
\newcommand{\CALL}[2]{\pcode@AF{#1}(#2)} %
|
|||
|
\newcommand{\APPEL}[2]{\pcode@AF{#1}(#2)} %
|
|||
|
\newcommand{\MAIN}{\mbox{\bfseries principal }\\\begin{array}{@{\pcode@tab{1}}lr@{}}}
|
|||
|
\newcommand{\ENDMAIN}{\end{array}}
|
|||
|
\newcommand{\RETURN}[1]{\ifthenelse{\equal{#1}{} }%
|
|||
|
{\mbox{\bfseries fini }}%
|
|||
|
{\mbox{\bfseries retourne }(#1)}}
|
|||
|
\newcommand{\RETOURNE}[1]{\ifthenelse{\equal{#1}{} }%
|
|||
|
{\mbox{\bfseries fini }}%
|
|||
|
{\mbox{\bfseries retourne }(#1)}}
|
|||
|
\newcommand{\INPUT}[1]{\mbox{\bfseries Entrer }(#1)}
|
|||
|
\newcommand{\ENTRER}[1]{\mbox{\bfseries Entrer }(#1)}
|
|||
|
\newcommand{\OUTPUT}[1]{\mbox{\bfseries Afficher }(#1)}
|
|||
|
\newcommand{\AFF}[1]{\mbox{\bfseries Afficher }(#1)}
|
|||
|
\newcommand{\EXIT}{\mbox{\bfseries quitte }}
|
|||
|
\newcommand{\BREAK}{\mbox{\bfseries rompt }}
|
|||
|
\newcommand{\IF}{\mbox{\bfseries si }}
|
|||
|
\newcommand{\SI}{\mbox{\bfseries si }}
|
|||
|
\newcommand{\LET}{\mbox{\bfseries soit }}
|
|||
|
\newcommand{\SOIT}{\mbox{\bfseries soit }}
|
|||
|
\newcommand{\THEN}{\\\pcode@tab{1}\mbox{ \bfseries alors }}
|
|||
|
\newcommand{\ALORS}{\\\pcode@tab{1}\mbox{ \bfseries alors }}
|
|||
|
\newcommand{\ELSE}{\\\pcode@tab{1}\mbox{ \bfseries sinon }}
|
|||
|
\newcommand{\SINON}{\\\pcode@tab{1}\mbox{ \bfseries sinon }}
|
|||
|
\newcommand{\ELSEIF}{\\\pcode@tab{1}\mbox{ \bfseries sinon, si }}
|
|||
|
\newcommand{\SINONSI}{\\\pcode@tab{1}\mbox{ \bfseries sinon, si }}
|
|||
|
\newcommand{\FOREACH}{\mbox{\bfseries pour chaque }}
|
|||
|
\newcommand{\POURTOUT}{\mbox{\bfseries pour tout }}
|
|||
|
\newcommand{\FORALL}{\mbox{\bfseries pour tout }}
|
|||
|
\newcommand{\FOR}{\mbox{\bfseries pour }}
|
|||
|
\newcommand{\POUR}{\mbox{\bfseries pour }}
|
|||
|
\newcommand{\TO}{\mbox{ \bfseries jusqu'<27> }}
|
|||
|
\newcommand{\JUSQUE}{\mbox{ \bfseries jusqu'<27> }}
|
|||
|
\newcommand{\DOWNTO}{\mbox{ \bfseries descendant jusqu'<27> }}
|
|||
|
\newcommand{\CASE}{\mbox{\bfseries selon }}
|
|||
|
\newcommand{\SELON}{\mbox{\bfseries selon }}
|
|||
|
\newcommand{\OF}{\\\pcode@tab{1}\mbox{ \bfseries parmi }\BEGIN}
|
|||
|
\newcommand{\PARMI}{\\\pcode@tab{1}\mbox{ \bfseries parmi }\BEGIN}
|
|||
|
\newcommand{\ENDCASE}{\END}
|
|||
|
\newcommand{\FINSELON}{\END}
|
|||
|
\newcommand{\AND}{\mbox{ \bfseries et }}
|
|||
|
\newcommand{\ET}{\mbox{ \bfseries et }}
|
|||
|
\newcommand{\OR}{\mbox{ \bfseries ou }}
|
|||
|
\newcommand{\OU}{\mbox{ \bfseries ou }}
|
|||
|
\newcommand{\NOT}{\mbox{ \bfseries non }}
|
|||
|
\newcommand{\NON}{\mbox{ \bfseries non }}
|
|||
|
\newcommand{\SUCCESS}{\mbox{ \bfseries succ<63>s }}
|
|||
|
\newcommand{\SUCCES}{\mbox{ \bfseries succ<63>s }}
|
|||
|
\newcommand{\FAIL}{\mbox{ \bfseries <20>chec }}
|
|||
|
\newcommand{\ECHEC}{\mbox{ \bfseries <20>chec }}
|
|||
|
\newcommand{\TRUE}{\mbox{ \bfseries vrai }}
|
|||
|
\newcommand{\VRAI}{\mbox{ \bfseries vrai }}
|
|||
|
\newcommand{\FALSE}{\mbox{ \bfseries faux }}
|
|||
|
\newcommand{\FAUX}{\mbox{ \bfseries faux }}
|
|||
|
\newcommand{\GOTO}{\mbox{\bfseries aller <20> }}
|
|||
|
\newcommand{\DO}{\\\pcode@tab{1}\mbox{ \bfseries faire }}
|
|||
|
\newcommand{\FAIRE}{\\\pcode@tab{1}\mbox{ \bfseries faire }}
|
|||
|
\newcommand{\WHILE}{\mbox{\bfseries tant que }}
|
|||
|
\newcommand{\TANTQUE}{\mbox{\bfseries tant que }}
|
|||
|
\newcommand{\REPEAT}{\mbox{\bfseries r<>p<EFBFBD>ter }\\\begin{array}{@{\pcode@tab{1}}lr@{}}}
|
|||
|
\newcommand{\REPETE}{\mbox{\bfseries r<>p<EFBFBD>ter }\\\begin{array}{@{\pcode@tab{1}}lr@{}}}
|
|||
|
\newcommand{\UNTIL}{\end{array}\\\mbox{\bfseries jusqu'<27> }}
|
|||
|
\newcommand{\JUSQUA}{\end{array}\\\mbox{\bfseries jusqu'<27> }}
|
|||
|
\newcommand{\GETS}{\leftarrow}
|
|||
|
\newcommand{\PREND}{\leftarrow}
|
|||
|
\endinput
|
|||
|
%% END pseudodcode.sty
|
|||
|
|