1 |
% PSEUDOCODE ALGORITHMIC STYLE -- Released 27 APR 2005 |
2 |
% for LaTeX version 2e |
3 |
% |
4 |
% Copyright Szasz Janos |
5 |
% E-mail szaszjanos@users.sourceforge.net |
6 |
% Based on Peter Williams's algorithmic.sty |
7 |
% |
8 |
\NeedsTeXFormat{LaTeX2e}% |
9 |
\ProvidesPackage{algpseudocode}% |
10 |
\RequirePackage{ifthen}% |
11 |
\RequirePackage{algorithmicx}% |
12 |
\typeout{Document Style - pseudocode environments for use with the `algorithmicx' style}% |
13 |
% |
14 |
\def\ALG@noend{f}% |
15 |
\newboolean{ALG@compatible}% |
16 |
\setboolean{ALG@compatible}{false}% |
17 |
% |
18 |
\DeclareOption{noend}{\def\ALG@noend{t}}% |
19 |
\DeclareOption{end}{\def\ALG@noend{f}}% |
20 |
\DeclareOption{compatible}{\typeout{For compatibility mode use algcompatible.sty!!!}\setboolean{ALG@compatible}{true}}% |
21 |
\DeclareOption{noncompatible}{\setboolean{ALG@noncompatible}{false}}% |
22 |
\ProcessOptions% |
23 |
% |
24 |
% *** DECLARATIONS *** |
25 |
% |
26 |
\algnewlanguage{pseudocode}% |
27 |
\alglanguage{pseudocode}% |
28 |
% |
29 |
% *** KEYWORDS *** |
30 |
% |
31 |
\algnewcommand\algorithmicend{\textbf{end}} |
32 |
\algnewcommand\algorithmicdo{\textbf{do}} |
33 |
\algnewcommand\algorithmicwhile{\textbf{while}} |
34 |
\algnewcommand\algorithmicfor{\textbf{for}} |
35 |
\algnewcommand\algorithmicforall{\textbf{for all}} |
36 |
\algnewcommand\algorithmicloop{\textbf{loop}} |
37 |
\algnewcommand\algorithmicrepeat{\textbf{repeat}} |
38 |
\algnewcommand\algorithmicuntil{\textbf{until}} |
39 |
\algnewcommand\algorithmicprocedure{\textbf{procedure}} |
40 |
\algnewcommand\algorithmicfunction{\textbf{function}} |
41 |
\algnewcommand\algorithmicif{\textbf{if}} |
42 |
\algnewcommand\algorithmicthen{\textbf{then}} |
43 |
\algnewcommand\algorithmicelse{\textbf{else}} |
44 |
\algnewcommand\algorithmicrequire{\textbf{Require:}} |
45 |
\algnewcommand\algorithmicensure{\textbf{Ensure:}} |
46 |
\algnewcommand\algorithmicreturn{\textbf{return}} |
47 |
\algnewcommand\textproc{\textsc} |
48 |
% |
49 |
% *** DECLARED LOOPS *** |
50 |
% |
51 |
\algdef{SE}[WHILE]{While}{EndWhile}[1]{\algorithmicwhile\ #1\ \algorithmicdo}{\algorithmicend\ \algorithmicwhile}% |
52 |
\algdef{SE}[FOR]{For}{EndFor}[1]{\algorithmicfor\ #1\ \algorithmicdo}{\algorithmicend\ \algorithmicfor}% |
53 |
\algdef{S}[FOR]{ForAll}[1]{\algorithmicforall\ #1\ \algorithmicdo}% |
54 |
\algdef{SE}[LOOP]{Loop}{EndLoop}{\algorithmicloop}{\algorithmicend\ \algorithmicloop}% |
55 |
\algdef{SE}[REPEAT]{Repeat}{Until}{\algorithmicrepeat}[1]{\algorithmicuntil\ #1}% |
56 |
\algdef{SE}[IF]{If}{EndIf}[1]{\algorithmicif\ #1\ \algorithmicthen}{\algorithmicend\ \algorithmicif}% |
57 |
\algdef{C}[IF]{IF}{ElsIf}[1]{\algorithmicelse\ \algorithmicif\ #1\ \algorithmicthen}% |
58 |
\algdef{Ce}[ELSE]{IF}{Else}{EndIf}{\algorithmicelse}% |
59 |
\algdef{SE}[PROCEDURE]{Procedure}{EndProcedure}% |
60 |
[2]{\algorithmicprocedure\ \textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}% |
61 |
{\algorithmicend\ \algorithmicprocedure}% |
62 |
\algdef{SE}[FUNCTION]{Function}{EndFunction}% |
63 |
[2]{\algorithmicfunction\ \textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}% |
64 |
{\algorithmicend\ \algorithmicfunction}% |
65 |
% |
66 |
\ifthenelse{\equal{\ALG@noend}{t}}% |
67 |
{% |
68 |
\algtext*{EndWhile}% |
69 |
\algtext*{EndFor}% |
70 |
\algtext*{EndLoop}% |
71 |
\algtext*{EndIf}% |
72 |
\algtext*{EndProcedure}% |
73 |
\algtext*{EndFunction}% |
74 |
}{}% |
75 |
% |
76 |
% *** OTHER DECLARATIONS *** |
77 |
% |
78 |
\algnewcommand\Require{\item[\algorithmicrequire]}% |
79 |
\algnewcommand\Ensure{\item[\algorithmicensure]}% |
80 |
\algnewcommand\Return{\algorithmicreturn{} }% |
81 |
\algnewcommand\Call[2]{\textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}% |
82 |
% |
83 |
% |
84 |
% |
85 |
\ifthenelse{\boolean{ALG@compatible}}% |
86 |
{% |
87 |
\ifthenelse{\equal{\ALG@noend}{t}}% |
88 |
{\RequirePackage[noend]{algcompatible}}% |
89 |
{\RequirePackage{algcompatible}}% |
90 |
}% |
91 |
{}% |
92 |
% |