mirror of https://github.com/CGAL/cgal
111 lines
3.7 KiB
TeX
111 lines
3.7 KiB
TeX
% PSEUDOCODE ALGORITHMIC STYLE -- Released 18 MAR 2004
|
|
% for LaTeX version 2e
|
|
%
|
|
% Copyright Szasz Janos
|
|
% E-mail szaszjanos@users.sourceforge.net
|
|
% Based on Peter Williams's algorithmic.sty
|
|
%
|
|
\NeedsTeXFormat{LaTeX2e}%
|
|
\ProvidesPackage{algpseudocode}%
|
|
\RequirePackage{ifthen}%
|
|
\RequirePackage{algorithmicx}%
|
|
\typeout{Document Style - pseudocode environments for use with the `algorithmicx' style}%
|
|
%
|
|
\def\ALG@setpseudocode{t}%
|
|
\newboolean{ALG@noend}%
|
|
\setboolean{ALG@noend}{false}%
|
|
\newboolean{ALG@compatible}%
|
|
\setboolean{ALG@compatible}{false}%
|
|
%
|
|
\DeclareOption{noset}{\def\ALG@setpseudocode{}}%
|
|
\DeclareOption{set}{\def\ALG@setpseudocode{t}}%
|
|
\DeclareOption{noend}{\setboolean{ALG@noend}{true}}%
|
|
\DeclareOption{end}{\setboolean{ALG@noend}{false}}%
|
|
\DeclareOption{compatible}{\setboolean{ALG@compatible}{true}}%
|
|
\DeclareOption{noncompatible}{\setboolean{ALG@noncompatible}{false}}%
|
|
\ProcessOptions%
|
|
%
|
|
% *** DECLARATIONS ***
|
|
%
|
|
\ALG@deflanguage{pseudocode}{\ALG@setpseudocode}%
|
|
{%
|
|
%
|
|
% *** KEYWORDS ***
|
|
%
|
|
\newcommand\algorithmicend{\textbf{end}}
|
|
\newcommand\algorithmicdo{\textbf{do}}
|
|
\newcommand\algorithmicwhile{\textbf{while}}
|
|
\newcommand\algorithmicfor{\textbf{for}}
|
|
\newcommand\algorithmicforall{\textbf{for all}}
|
|
\newcommand\algorithmicloop{\textbf{loop}}
|
|
\newcommand\algorithmicrepeat{\textbf{repeat}}
|
|
\newcommand\algorithmicuntil{\textbf{until}}
|
|
\newcommand\algorithmicprocedure{\textbf{procedure}}
|
|
\newcommand\algorithmicfunction{\textbf{function}}
|
|
\newcommand\algorithmicif{\textbf{if}}
|
|
\newcommand\algorithmicthen{\textbf{then}}
|
|
\newcommand\algorithmicelse{\textbf{else}}
|
|
\newcommand\algorithmicrequire{\textbf{Require:}}
|
|
\newcommand\algorithmicensure{\textbf{Ensure:}}
|
|
\newcommand{\algorithmicreturn}{\textbf{return}}
|
|
\newcommand\textproc{\textsc}
|
|
%
|
|
% *** DECLARED LOOPS ***
|
|
%
|
|
\algdef{SE}[WHILE]{While}{EndWhile}[1]{\algorithmicwhile\ ##1\ \algorithmicdo}{\algorithmicend\ \algorithmicwhile}%
|
|
\algdef{SE}[FOR]{For}{EndFor}[1]{\algorithmicfor\ ##1\ \algorithmicdo}{\algorithmicend\ \algorithmicfor}%
|
|
\algdef{S}[FOR]{ForAll}[1]{\algorithmicforall\ ##1\ \algorithmicdo}%
|
|
\algdef{SE}[LOOP]{Loop}{EndLoop}{\algorithmicloop}{\algorithmicend\ \algorithmicloop}%
|
|
\algdef{SE}[REPEAT]{Repeat}{Until}{\algorithmicrepeat}[1]{\algorithmicuntil\ ##1}%
|
|
\algdef{SE}[IF]{If}{EndIf}[1]{\algorithmicif\ ##1\ \algorithmicthen}{\algorithmicend\ \algorithmicif}%
|
|
\algdef{C}[IF]{IF}{ElsIf}[1]{\algorithmicelse\ \algorithmicif\ ##1\ \algorithmicthen}%
|
|
\algdef{Ce}[ELSE]{IF}{Else}{EndIf}{\algorithmicelse}%
|
|
\algdef{SE}[PROCEDURE]{Procedure}{EndProcedure}%
|
|
[2]{\algorithmicprocedure\ \textproc{##1}\ifthenelse{\equal{##2}{}}{}{(##2)}}%
|
|
{\algorithmicend\ \algorithmicprocedure}%
|
|
\algdef{SE}[FUNCTION]{Function}{EndFunction}%
|
|
[2]{\algorithmicfunction\ \textproc{##1}\ifthenelse{\equal{##2}{}}{}{(##2)}}%
|
|
{\algorithmicend\ \algorithmicfunction}%
|
|
%
|
|
\ifthenelse{\boolean{ALG@noend}}%
|
|
{%
|
|
\algtext*{EndWhile}%
|
|
\algtext*{EndFor}%
|
|
\algtext*{EndLoop}%
|
|
\algtext*{EndIf}%
|
|
\algtext*{EndProcedure}%
|
|
\algtext*{EndFunction}%
|
|
}{}%
|
|
%
|
|
% *** OTHER DECLARATIONS ***
|
|
%
|
|
\def\Require{\item[\algorithmicrequire]}
|
|
\def\Ensure{\item[\algorithmicensure]}
|
|
\def\Return{\algorithmicreturn{} }%
|
|
%
|
|
%
|
|
%
|
|
\ifthenelse{\boolean{ALG@compatible}}%
|
|
{%
|
|
\let\WHILE\While\let\ENDWHILE\EndWhile%
|
|
\let\FOR\For\let\FORALL\ForAll\let\ENDFOR\EndFor%
|
|
\let\LOOP\Loop\let\ENDLOOP\EndLoop%
|
|
\let\REPEAT\Repeat\let\UNTIL\Until%
|
|
\let\PROCEDURE\Procedure\let\ENDPROCEDURE\EndProcedure%
|
|
\let\FUNCTION\Function\let\ENDFUNCTION\EndFunction%
|
|
\let\IF\If\let\ELSIF\ElsIf\let\ELSE\Else\let\ENDIF\EndIf%
|
|
\let\REQUIRE\Require\let\ENSURE\Ensure%
|
|
\let\STATE\State\let\STATEx\Statex%
|
|
\let\COMMENT\Comment%
|
|
}%
|
|
{}%
|
|
%
|
|
%
|
|
%
|
|
}%
|
|
%
|
|
%
|
|
%
|
|
\let\ALG@setpseudocode\relax%
|
|
%
|