The “keywords.sty” style file^{∗}

Miguel Alabau

LaBRI, Université Bordeaux I (France)

                   e-mail: Miguel.Alabau@labri.u-bordeaux.fr

March 6, 1996

Abstract This style file contains a set of definitions that allow keywords to be defined and printed in several convenient ways. For each keyword two definitions may be provided. This is to allow the use of keywords in two contexts (for instance English/French translation of the keywords). At the same time, keyword can be printed in roman, teletype, boldfaced or underlined. The user can define other styles for printing keywords. A set of keywords is provided by default. Of course a user can define new keywords or redefine existing ones without modifying the style file.

Contents

1 Introduction 1

2 User’s Manual 2 2.1 Selecting a printing style . . . . . 2 2.2 Defining and Re-defining keywords 2 2.3 Defining a printing style . . . . . 3 2.4 The Index File . . . . . . . . . . 3 2.5 The Driver File . . . . . . . . . . 4 2.6 Extracting the documents in-

cluded in the file keywords.dtx . 5

3 Description of Macros 6 3.1 Defining and Re-defining keywords 6 3.2 Defining printing styles . . . . . . 6 3.3 Predefined printing styles …. 7 3.4 Predefined keywords . . . . . . . 8

1 Introduction

When typing programs or algorithms, it often happens for a same text to appear as an algoritm (pseudo-code) or as a program. In such cases different fonts are used. For instance, algorithms may appear with keywords italicised or underlined, while the same keywords appear boldfaced in the program text. Moreover algorithms are often typed with keywords belonging to the native language of the writer while program keywords appear usually to be english ones.

The file keywords.sty provides simple solutions to both of these problems by giving the user capability to define each keyword in two simultaneaous different manners and by providing different printing styles.

Keywords are commands to be issued in text. Hence this style file is origimally intended to be used in conjunction with the features provided by the programs.sty style file [4]. However, it can be used independently.

For instance, let be the following piece of program:

                                              \BEGIN
                                                  statements
                                              \END

∗This file has version number v1.0 dated 95/04/01. The documentation was last revised on 96/01/31.

where \BEGIN and \END are two predefined commands in this style file. If we issue the command \ProgKeywords, then we get:

begin

         statements

end

If we prefer to use the second language,

we can issue the \FProgKeywords:

début

         statements

fin

We can also use other typesetting rules, like underlined emphasized fonts

(UAlgoKeywords):

\underline{begin}

                                                        statements

\underline{end}

It is also possible to define new keywords or to redefine existing ones, by issuing a command like:

                                          \NewKeyword{\BEGIN}{this is the beginning}
                                          \NewKeyword{\END}{this is the end}

which leads to the following piece of code (default typesetting used is the last one specified, i.e. UAlgoKeywords):

this is the beginning

                                                        statements

this is the end

2 User’s Manual

A set of default keywords is provided in this file (see section 3.4). For each keyword, two definitions are provided: the first one in english, and the second one in french (because I am French). The switch between the two languages is performed by global commands wich serve also to define the font used for printing.

2.1 Selecting a printing style

\ProgKeywords
\FProgKeywords
\ttKeywords
\FttKeywords
\AlgoKeywords
\FAlgoKeywords
\NormalKeywords
\FNormalKeywords

The following printing styles are provided:

style  definition 1  definition 2

                \bf   \ProgKeywords    \FProgKeywords
                \tt   \ttKeywords      \FttKeywords
                \em   \AlgoKeywords    \FAlgoKeywords
                \rm   \NormalKeywords  \FNormalKeywords

\UAlgoKeywords There are also two underlined styles:

\UFAlgoKeywords
\FUAlgoKeywords

style  definition 1  definition 2

            underlined \em  \UAlgoKeywords  \FUAlgoKeywords

For compatability with previous versions of keywords.sty, the command \UFAlgoKeywords has been defined as a synonym for \FUAlgoKeywords.

2.2 Defining and Re-defining keywords

\NewKeyword The command
     \NewKeyword{\WORD}{SENTENCE1}[SENTENCE2]

defines the command \WORD to issue the text in SENTENCE1 or in SENTENCE2 when it is typed, according to the style currently in use. For instance, one could use SENTENCE1 for defining english keywords and SENTENCE2 for defining their french translation. If “[SENTENCE2]” is omitted, all happens as if the following command had been issued:

     \NewKeyword{\WORD}{SENTENCE1}[SENTENCE1]

The command \NewKeyword serves also to redefine existing keywords.

2.3 Defining a printing style

\DefineKeywordsStyles The command
     \DefineKeywordsStyles{MODE}{\STYLE}

allows for the user to define particular printing modes. Its main effect is to define the commands \MODEs and \FMODEs that will lead to print respectively the SENTENCE1 part or the SENTENCE2 part of the \NewKeyword definitions. For instance, the commands \ProgKeywords and \FProgKeywords have been automatically defined from a

\DefineKeywordsStyles{ProgKeyword}{\bf} command.
\DefineUnderlinedKeywordsStyles

For SENTENCE_{i} to be underlined, it is necessary to issue a

     \DefineUnderlinedKeywordsStyles{MODE}{\STYLE}

command, instead of the “\DefineKeywordsStyles” described above. This is how the \UAlgoKeywords and \FUAlgoKeywords commands have been defined, by issuing

a \DefineUnderlinedKeywordsStyles{UAlgoKeyword}{\em} command.

2.4 The Index File

In order for the processing of this file to be complete, an index format file is required. Let us assume that it is named keywords.ist, then the following command must be run and then another compilation of the current file:

1 ⟨index⟩

 2 ⟨index⟩%% -----------------------------------------------------------
 3 ⟨index⟩%% Assuming this file is named "keywords.ist" (after being
 4 ⟨index⟩%% generated from "keywords.dtx" by running "latex docstrip"),
 5 ⟨index⟩%% the following command will produce a well formated index:

6 ⟨index⟩%%

 7 ⟨index⟩%%                  makeindex -s keywords.ist keywords.idx
 8 ⟨index⟩%% -----------------------------------------------------------

9 ⟨index⟩

Another possibility is to set the environment variable INDEXSTYLE to a directory name where the “.ist” files (index format files) may be found. A possible index file is given below^{1}:

10 ⟨index⟩actual '='

11 ⟨index⟩quote '!' 12 ⟨index⟩level '>' 13 ⟨index⟩preamble

14 ⟨index⟩"\n \\begin{theindex} \n \\makeatletter\\scan@allowedfalse\n"

1It can be generated by invoquing the compilation of “docstrip” with the “index” option.

15 ⟨index⟩postamble
16 ⟨index⟩"\n\n \\end{theindex}\n"
17 ⟨index⟩item_x1   "\\efill \n \\subitem "
18 ⟨index⟩item_x2   "\\efill \n \\subsubitem "
19 ⟨index⟩delim_0   "\\pfill "
20 ⟨index⟩delim_1   "\\pfill "
21 ⟨index⟩delim_2   "\\pfill "
22 ⟨index⟩% The next lines will produce some warnings when
23 ⟨index⟩% running Makeindex as they try to cover two different
24 ⟨index⟩% versions of the program:
25 ⟨index⟩lethead_prefix   "{\\bf\\hfil "
26 ⟨index⟩lethead_suffix   "\\hfil}\\nopagebreak\n"
27 ⟨index⟩lethead_flag       1
28 ⟨index⟩heading_prefix   "{\\bf\\hfil "
29 ⟨index⟩heading_suffix   "\\hfil}\\nopagebreak\n"
30 ⟨index⟩headings_flag       1

2.5 The Driver File

There is also a driver file, called programs.drv, that is included in the distribution. It is devoted to control the latex compilation of the documentation. Its code is given below.

31 ⟨∗driver⟩

32 \newif\ifnoprogsfile
33 \openin1 programs.sty
34 \ifeof1 \noprogsfiletrue\else\noprogsfilefalse\fi\closein1
35 \ifnoprogsfile \relax\else
36 \openin1 keywords.sty
37 \ifeof1 \noprogsfiletrue\else\noprogsfilefalse\fi\closein1
38 \fi
39 \ifnoprogsfile
40  \typeout{*************************************************************}
41  \typeout{To get a more complete documentation, you should:}
42  \typeout{(1) generate the file 'programs.sty'(see 'programs.dtx'), and}
43  \typeout{(2) copy the current file into 'keywords.sty'}
44  \typeout{*************************************************************}
45 \fi
46 \ifnoprogsfile
47  \documentclass{ltxdoc}
48 \else
49  \documentclass{ltxdoc}
50  \usepackage{programs}
51  \usepackage{keywords}
52 \fi
53 \MakePercentIgnore%

54 %

55 \setlength{\textwidth}{31pc}%
56 \setlength{\textheight}{54pc}%
57 \setlength{\parindent}{0pt}%
58 \setlength{\parskip}{2pt plus 1pt minus 1pt}%
59 \setlength{\oddsidemargin}{8pc}%
60 \setlength{\marginparwidth}{8pc}%
61 \setlength{\topmargin}{-2.5pc}%
62 \setlength{\headsep}{20pt}%
63 \setlength{\columnsep}{1.5pc}%
64 \setlength{\columnwidth}{18.75pc}%
65 %%

66 \setcounter{IndexColumns}{2}%
67 \EnableCrossrefs%
68 \RecordChanges
69 \CodelineIndex
70 %\OldMakeindex     % use if your MakeIndex is pre-v2.9%
71 \begin{document}%
72  \DocInput{keywords.dtx}
73 \end{document}

74 ⟨/driver⟩

2.6 Extracting the documents included in the file keywords.dtx

There are three documents included in the keywords.dtx file: the style file (keywords.sty), the index style file for printing a cross-referenced document (keywords.ist), and the driver file for printing the document: keywords.drv. For file extraction it is necessary to use the docstrip utility, which is part of the doc distribution [3]. Normally, a file docstrip.tex should exist on the L^{A}TEX style files directory. Extraction is performed by typing:

latex docstrip

This is an interactive program, and the dialogue for generating the style file should be:

**********************************************************
* This program converts documented macro-files into fast *
* loadable files by stripping off (nearly) all comments! *
**********************************************************
****************************************************
* First type the extension of your input file(s):  *
\infileext=doc
****************************************************
****************************************************
* Now type the extension of your output file(s)  : *
\outfileext=sty
****************************************************
****************************************************
* Now type the name(s) of option(s) to include   : *
\Options=style
****************************************************
****************************************************
* Finally give the list of input file(s) without   *
* extension seperated by commas if necessary     : *
\filelist=Programs
****************************************************

For generating the index file it suffices to rerun the docstrip utility and to answer “ist/index” instead of “sty/style” int the above steps 2 and 3.

The three files may be produced in a single pass, by simply latexing the file keywords.ins which goes along with the file keywords.dtx.

Generation of the documentation is then simply performed as follows (the keywords.dtx file includes its own driver):

    latex keywords.dtx
    latex keywords.dtx
    latex keywords.dtx
    makeindex  -s keywords.ist keywords.idx
    latex keywords.dtx

75 ⟨∗style⟩

3 Description of Macros

\AlreadyDefined@@Keywords This macro can be tested by any style file to know if the file “keywords.sty” has been input. But it allows a modular programming style similar to the one used with the C header files. Hence, the first time the “keywords.sty” style file is included all of its body will be included; the second time, the body will not be included.

76 \expandafter\ifx\csname AlreadyDefined@@Keywords\endcsname\relax%
77 \expandafter\def\csname AlreadyDefined@@Keywords\endcsname{}%
78 \else\endinput\fi

A test for the existence of this macro is performed for compatability with ancient versions of L^{A}TEX.

79 \@ifundefined{reset@font}{\global\let\reset@font\relax}{}

3.1 Defining and Re-defining keywords

\NewKeyword \@@newkwrd The \NewKeyword command has three parameters, but the third one is optional. By default it is assumed to be equal to the second one:

80 \def\NewKeyword#1#2{\@ifnextchar[{\@@newkwrd{#1}{#2}}{\@@newkwrd{#1}{#2}[#2]}}

The \@@newkwrd performs the real work. It calls the command \@@KeywordsCurrentStyle whose effect is to define the command \@@kwrd and then invokes this last command.

81 \def\@@newkwrd#1#2[#3]{\def#1{\@@KeywordsCurrentStyle{\@@kwrd}{#2}{#3}\@@kwrd}}

3.2 Defining printing styles

\@@TypeStyle This command is expected to be called with a command name as first parameter. Its effect is to define #1 as the command that print #3 with style #2 :

82 \def\@@TypeStyle#1#2#3{\def#1{\mbox{\reset@font#2{}#3\/}}}
\DefineKeywordsStyles The macro \DefineKeywordsStyles has two parameters, let them be toto and bf. Its

effect is to define two commands called \@@toto and \F@@toto. Each of these two new commands has three parameters: the first one must be the name of a command (the keyword to be defined) and the other two must be two texts associated to the keyword. The \@@toto command will select the first text while the \F@@toto command will select the second text.

83 \newif\if@@underline \@@underlinefalse
84 \def\DefineKeywordsStyles#1#2{
85  \if@@underline
86  \@namedef{@@#1}##1##2##3{\@@TypeStyle{##1}{#2}{\underline{##2}}}
87  \@namedef{F@@#1}##1##2##3{\@@TypeStyle{##1}{#2}{\underline{##3}}}
88  \else
89  \@namedef{@@#1}##1##2##3{\@@TypeStyle{##1}{#2}{##2}}
90  \@namedef{F@@#1}##1##2##3{\@@TypeStyle{##1}{#2}{##3}}
91  \fi

A boolean switch is used to select underlined fonts. By default non underlined fonts are used, and a reset to non boolean fonts is performed after every definition of keyword:

92  \@@underlinefalse

At last two commands are provided to the user: \totos and \Ftotos whose effect is to

set the command \@@KeywordsCurrentStyle respectively to \@@toto or \F@@toto :
93  \@namedef{#1s}{\def\@@KeywordsCurrentStyle{\@nameuse{@@#1}}}
94  \@namedef{F#1s}{\def\@@KeywordsCurrentStyle{\@nameuse{F@@#1}}}

95 }

By this way when a command

         \NewKeyword{\WORD}{SENTENCE1}[SENTENCE2]

is issued, then \WORD is defined to

         \@@KeywordsCurrentStyle{\@@kwrd}{SENTENCE1}{SENTENCE2}\@@kwrd}

Hence, every time the command \WORD is issued by the user in the text of its programs, \@@kwrd is redefined and invoked under the running definition of \@@KeywordsCurrentStyle. This complicated trick ensures that every keyword, even if it is not defined in the style file (e.g. if it is defined in the text typed by the user) will be typed with the correct font selection.

\DefineUnderlinedKeywordsStyles This macro serves to switch to underlined fonts:

96 \def\DefineUnderlinedKeywordsStyles#1#2{
97  \@@underlinetrue
98  \DefineKeywordsStyles{#1}{#2}

99 }

3.3 Predefined printing styles

The commands in the margin are automatically generated (see above and section 2.1) by issuing the following commands:

\ProgKeywords
\FProgKeywords
100 \DefineKeywordsStyles{ProgKeyword}{\bf}
\ttKeywords
\FttKeywords
101 \DefineKeywordsStyles{ttKeyword}{\tt}
\AlgoKeywords
\FAlgoKeywords
102 \DefineKeywordsStyles{AlgoKeyword}{\em}
\UAlgoKeywords
\FUAlgoKeywords
103 \DefineUnderlinedKeywordsStyles{UAlgoKeyword}{\em}
\NormalKeywords
\FNormalKeywords
104 \DefineKeywordsStyles{NormalKeyword}{\relax}

\UFAlgoKeywords This macro is defined for compatability with previous versions of the style:

105 \let\UFAlgoKeywords\FUAlgoKeywords

3.4 Predefined keywords

The macros below are sorted alphabetically:

106 ⟨style⟩%% DEFAULT KEYWORDS
107 \NewKeyword{\ABORT}{abort}[avorter]
108 \NewKeyword{\ABS}{abs}
109 \NewKeyword{\ABSTRACT}{abstract}[abstrait]
110 \NewKeyword{\ACCEPT}{accept}[accepter]
111 \NewKeyword{\ACCESS}{access}[acc\`es]
112 \NewKeyword{\ALIASED}{aliased}[alias\'e]
113 \NewKeyword{\ALL}{all}[tout]
114 \NewKeyword{\ALT}{alt}
115 \NewKeyword{\AND}{and}[et]
116 \NewKeyword{\APPEND}{append}[ajouter\_\-en\_\-fin]
117 \NewKeyword{\ARRAY}{array}[tableau]
118 \NewKeyword{\ASSERT}{assert}[assertion]
119 \NewKeyword{\ASSIGN}{:=}
120 \NewKeyword{\AT}{at}
121 \NewKeyword{\BEGIN}{begin}[d\'ebut]
122 \NewKeyword{\BLOCK}{block}[bloc]
123 \NewKeyword{\BOOLEAN}{boolean}[bool\'een]
124 \NewKeyword{\BODY}{body}
125 \NewKeyword{\BOT}{$\bot$}
126 \NewKeyword{\BOX}{$<>$}
127 \NewKeyword{\BY}{by}[pas]
128 \NewKeyword{\CASE}{case}[choix]
129 \NewKeyword{\CATINDEX}{catindex}
130 \NewKeyword{\CHAN}{chan}[canal]
131 \NewKeyword{\CHANNEL}{channel}[canal]
132 \NewKeyword{\CHAR}{char}[car]
133 \NewKeyword{\CHARACTER}{character}[caract\`ere]
134 \NewKeyword{\CLOSE}{close}[fermer]
135 \NewKeyword{\CO}{co}
136 \NewKeyword{\COBEGIN}{cobegin}
137 \NewKeyword{\COEND}{coend}
138 \NewKeyword{\COMMUTATIVE}{commutative}[commutatif]
139 \NewKeyword{\COMPLEX}{complex}[complexe]
140 \NewKeyword{\COMPUTE}{compute}[calculer]
141 \NewKeyword{\CONNECT}{$\longrightarrow$}
142 \NewKeyword{\CONNECTB}{$\Longrightarrow$}
143 \NewKeyword{\CONST}{const}
144 \NewKeyword{\CONSTANT}{constant}[constante]
145 \NewKeyword{\CONSTRAINTS}{constraints}[contraintes]
146 \NewKeyword{\CONTINUE}{continue}
147 \NewKeyword{\DATA}{data}[donn\'ee]
148 \NewKeyword{\DECLARE}{declare}
149 \NewKeyword{\DECOMPOSE}{decompose}
150 \NewKeyword{\DELAY}{delay}[d\'elai]
151 \NewKeyword{\DELTA}{delta}
152 \NewKeyword{\DEPTH}{depth}[profondeur]
153 \NewKeyword{\DIGITS}{digits}[chiffres]
154 \NewKeyword{\DIMENSION}{dimension}
155 \NewKeyword{\DIST}{dist}
156 \NewKeyword{\DISTRIBUTE}{distribute}[r\'epartir]
157 \NewKeyword{\DIV}{div}
158 \NewKeyword{\DO}{do}[faire]
159 \NewKeyword{\DOALL}{doall}[faire en parall\`ele]
160 \NewKeyword{\DOM}{dom}

161 \NewKeyword{\DOMAIN}{domain}[domaine]
162 \NewKeyword{\DOMAINS}{domains}[domaines]
163 \NewKeyword{\DONE}{done}[fait]
164 \NewKeyword{\DOPAR}{dopar}[faire en parall\`ele]
165 \NewKeyword{\DOWNTO}{downto}[jusqu'\`a]
166 \NewKeyword{\DYNAMIC}{dynamic}[dynamique]
167 \NewKeyword{\EACH}{each}[chaque]
168 \NewKeyword{\EGO}{MyId}[EGO]
169 \NewKeyword{\ELSE}{else}[sinon]
170 \NewKeyword{\ELSIF}{elsif}[sinon si]
171 \NewKeyword{\END}{end}[fin]
172 \NewKeyword{\ENDCASE}{end case}[fin choix]
173 \NewKeyword{\ENDIF}{end if}[finsi]
174 \NewKeyword{\ENDDO}{end do}[fait]
175 \NewKeyword{\ENDLOOP}{end loop}[fait]
176 \NewKeyword{\ENTRY}{entry}[entr\'ee]
177 \NewKeyword{\EOT}{eot}
178 \NewKeyword{\EQ}{$=$}
179 \NewKeyword{\EXCEPTION}{exception}
180 \NewKeyword{\EXIT}{exit}[sortir]
181 \NewKeyword{\EXTERNAL}{external}[externe]
182 \NewKeyword{\FI}{fi}[finsi]
183 \NewKeyword{\FILE}{file}[fichier]
184 \NewKeyword{\FIRST}{first}[premier]
185 \NewKeyword{\FOR}{for}[pour]
186 \NewKeyword{\FORALL}{forall}[pour tout]
187 \NewKeyword{\FOREACH}{foreach}[pour chaque]
188 \NewKeyword{\FORWARD}{forward}
189 \NewKeyword{\FUNCTION}{function}[fonction]
190 \NewKeyword{\GE}{$\geq$}
191 \NewKeyword{\GENERIC}{generic}[g\'en\'erique]
192 \NewKeyword{\GETNODE}{getnode}[prendre\_\-noeud]
193 \NewKeyword{\GOTO}{goto}[aller\_\-\`a]
194 \NewKeyword{\GRAPH}{graph}[graphe]
195 \NewKeyword{\GT}{$>$}
196 \NewKeyword{\IF}{if}[si]
197 \NewKeyword{\IMPLICATION}{$\Rightarrow$}
198 \NewKeyword{\IMPLY}{$\Rightarrow$}
199 \NewKeyword{\IMPORT}{import}[importer]
200 \NewKeyword{\IN}{in}[dans]
201 \NewKeyword{\IND}{ind}
202 \NewKeyword{\INDEX}{index}
203 \NewKeyword{\INIT}{init}
204 \NewKeyword{\INOUT}{inout}
205 \NewKeyword{\INPORT}{inport}
206 \NewKeyword{\INPUT}{input}
207 \NewKeyword{\INTEGER}{integer}[entier]
208 \NewKeyword{\INTO}{into}
209 \NewKeyword{\IS}{is}[est]
210 \NewKeyword{\LABEL}{label}[\'etiquette]
211 \NewKeyword{\LAST}{last}[dernier]
212 \NewKeyword{\LE}{$\leq$}
213 \NewKeyword{\LENGTH}{length}[longueur]
214 \NewKeyword{\LIMITED}{limited}[limit\'e]
215 \NewKeyword{\LOOP}{loop}[faire]
216 \NewKeyword{\LT}{$<$}
217 \NewKeyword{\MAP}{map}[placer]
218 \NewKeyword{\MOD}{mod}
219 \NewKeyword{\MODULE}{module}

220 \NewKeyword{\MODULO}{modulo}
221 \NewKeyword{\MULTIPLE}{multiple}
222 \NewKeyword{\MYID}{MyId}[EGO]
223 \NewKeyword{\NE}{$\neq$}
224 \NewKeyword{\NEIGHBOUR}{neighbour}[voisin]
225 \NewKeyword{\NEIGHBOURS}{neighbours}[voisins]
226 \NewKeyword{\NEW}{new}[nouveau]
227 \NewKeyword{\NEWBLOCK}{newblock}
228 \NewKeyword{\NIL}{nil}
229 \NewKeyword{\NODE}{node}[noeud]
230 \NewKeyword{\NOT}{not}[non]
231 \NewKeyword{\NUL}{nul}
232 \NewKeyword{\NULL}{null}[nul]
233 \NewKeyword{\OD}{od}[fait]
234 \NewKeyword{\ODPAR}{odpar}[fait]
235 \NewKeyword{\OF}{of}
236 \NewKeyword{\ON}{on}
237 \NewKeyword{\OPEN}{open}[ouvrir]
238 \NewKeyword{\OR}{or}[ou]
239 \NewKeyword{\OTHERS}{others}
240 \NewKeyword{\OUT}{out}
241 \NewKeyword{\OUTPORT}{outport}
242 \NewKeyword{\OUTPOUT}{outpout}
243 \NewKeyword{\PACKAGE}{package}[paquetage]
244 \NewKeyword{\PARALLEL}{parallel}
245 \NewKeyword{\PARFOR}{parfor}[en parall\`ele: pour]
246 \NewKeyword{\PAR}{par}[en parall\`ele]
247 \NewKeyword{\PERCENT}{\%}
248 \NewKeyword{\PLACE}{place}[placer]
249 \NewKeyword{\PORT}{port}
250 \NewKeyword{\PRAGMA}{pragma}
251 \NewKeyword{\PRI}{pri}
252 \NewKeyword{\PRIVATE}{private}[priv\'e]
253 \NewKeyword{\PROCEDURE}{procedure}[proc\'edure]
254 \NewKeyword{\PROCESS}{process}[processus]
255 \NewKeyword{\PROGRAM}{program}[programme]
256 \NewKeyword{\PROTECTED}{protected}[prot\'eg\'e]
257 \NewKeyword{\RAISE}{raise}[lever]
258 \NewKeyword{\RANGE}{range}[intervalle]
259 \NewKeyword{\READ}{read}[lire]
260 \NewKeyword{\READY}{ready}[pr\^et]
261 \NewKeyword{\REAL}{real}[r\'eel]
262 \NewKeyword{\RECORD}{record}[enregistrement]
263 \NewKeyword{\RECV}{recv}[recevoir]
264 \NewKeyword{\RECEIVE}{receive}[recevoir]
265 \NewKeyword{\REM}{rem}
266 \NewKeyword{\RENAMES}{renames}[renomme]
267 \NewKeyword{\REPEAT}{repeat}[r\'ep\'eter]
268 \NewKeyword{\REQUEUE}{requeue}
269 \NewKeyword{\RESET}{reset}
270 \NewKeyword{\RETURN}{return}[retour]
271 \NewKeyword{\REVERSE}{reverse}
272 \NewKeyword{\REWIND}{rewind}
273 \NewKeyword{\REWRITE}{rewrite}
274 \NewKeyword{\ROOT}{root}[racine]
275 \NewKeyword{\SELECT}{select}
276 \NewKeyword{\SEND}{send}[\'emettre]
277 \NewKeyword{\SENDEOT}{sendeot}[\'emettre eot]
278 \NewKeyword{\SEPARATE}{separate}[s\'epar\'ement]

279 \NewKeyword{\SEQ}{seq}
280 \NewKeyword{\SET}{set}
281 \NewKeyword{\SIZE}{size}[taille]
282 \NewKeyword{\SKIP}{skip}[sauter]
283 \NewKeyword{\STRING}{string}[cha\^{\i}ne de caract\`eres]
284 \NewKeyword{\SUBTYPE}{subtype}[sous\_\-type]
285 \NewKeyword{\SWITCH}{switch}
286 \NewKeyword{\TAGGED}{tagged}[\'etiquett\'e]
287 \NewKeyword{\TASK}{task}[t\^ache]
288 \NewKeyword{\TERMINATE}{terminate}[terminer]
289 \NewKeyword{\THEN}{then}[alors]
290 \NewKeyword{\TO}{to}[jusqu'\`a]
291 \NewKeyword{\TOWARDS}{towards}[vers]
292 \NewKeyword{\TRANSMIT}{transmit}[\'emettre]
293 \NewKeyword{\TUPLE}{tuple}[n\_\-uplet]
294 \NewKeyword{\TYPE}{type}
295 \NewKeyword{\UNDEF}{undef}[ind\'efini]
296 \NewKeyword{\UNTIL}{until}[jusqu'\`a]
297 \NewKeyword{\USE}{use}
298 \NewKeyword{\VAR}{var}
299 \NewKeyword{\VARIABLE}{variable}
300 \NewKeyword{\WHEN}{when}[si]
301 \NewKeyword{\WHERE}{where}[si]
302 \NewKeyword{\WHILE}{while}[tant que]
303 \NewKeyword{\WITH}{with}[avec]
304 \NewKeyword{\WRITE}{write}[\'ecrire]
305 \NewKeyword{\XOR}{xor}

306 ⟨style⟩%%

307 ⟨style⟩%% French syntax

308 ⟨style⟩%%

309 \NewKeyword{\EMETTRE}{send}[\'emettre]
310 \NewKeyword{\RECEVOIR}{receive}[recevoir]
311 \NewKeyword{\POUR}{for}[pour]
312 \NewKeyword{\FAIRE}{do}[faire]
313 \NewKeyword{\FAIT}{end do}[fait]
314 \NewKeyword{\SI}{if}[si]
315 \NewKeyword{\ALORS}{then}[alors]
316 \NewKeyword{\SINON}{else}[sinon]
317 \NewKeyword{\FINSI}{end if}[fin si]
318 \NewKeyword{\DEBUT}{begin}[d\'ebut]
319 \NewKeyword{\FIN}{end}[fin]

Then we terminate by instructing L^{A}TEX to switch to the default font for typing keywords (which, in the current implementation is underlined \em).

320 \FUAlgoKeywords

321 ⟨/style⟩

References

[1] D.E. Knuth. Computers & Typesetting (The TEXbook). Addison-Wesley, Vol. A, 1986.

[2] L. Lamport. L^{A}TEX: a Document Preparation System. Addison-Wesley Publishing Company, 1986.

[3] F. Mittelbach. The doc-option. TUGboat, Vol. 10(2), pp. 245–273, July 1989.

[4] M. Alabau.  The “programs.sty” style file.  March 1995. e-mail:

   Miguel.Alabau@labri.u-bordeaux.fr

Index

The italic numbers denote the pages where the corresponding entry is described, numbers underlined point to the definition, all others indicate the places where it is used (ie. the line numbers where it appears).

ABORT=  \subitem *+\ABORT+, 107
ABS=  \subitem *+\ABS+, 108
ABSTRACT=  \subitem *+\ABSTRACT+, 109
ACCEPT=  \subitem *+\ACCEPT+, 110
ACCESS=  \subitem *+\ACCESS+, 111
AlgoKeywords=  \subitem *+\AlgoKeywords+, \usage{2}, \main{102}
ALIASED=  \subitem *+\ALIASED+, 112
ALL=  \subitem *+\ALL+, 113
ALORS=  \subitem *+\ALORS+, 315
ALT=  \subitem *+\ALT+, 114
AND=  \subitem *+\AND+, 115
APPEND=  \subitem *+\APPEND+, 116
ARRAY=  \subitem *+\ARRAY+, 117
ASSERT=  \subitem *+\ASSERT+, 118
ASSIGN=  \subitem *+\ASSIGN+, 119
AT=  \subitem *+\AT+, 120
BEGIN=  \subitem *+\BEGIN+, 121
BLOCK=  \subitem *+\BLOCK+, 122
BODY=  \subitem *+\BODY+, 124
BOOLEAN=  \subitem *+\BOOLEAN+, 123
BOT=  \subitem *+\BOT+, 125
bot=  \subitem *+\bot+, 125
BOX=  \subitem *+\BOX+, 126
BY=  \subitem *+\BY+, 127
CASE=  \subitem *+\CASE+, 128
CATINDEX=  \subitem *+\CATINDEX+, 129
CHAN=  \subitem *+\CHAN+, 130
CHANNEL=  \subitem *+\CHANNEL+, 131
CHAR=  \subitem *+\CHAR+, 132
CHARACTER=  \subitem *+\CHARACTER+, 133
CLOSE=  \subitem *+\CLOSE+, 134
CO=  \subitem *+\CO+, 135
COBEGIN=  \subitem *+\COBEGIN+, 136
CodelineIndex=  \subitem *+\CodelineIndex+, 69
COEND=  \subitem *+\COEND+, 137
columnsep=  \subitem *+\columnsep+, 63
COMMUTATIVE=  \subitem *+\COMMUTATIVE+, 138
COMPLEX=  \subitem *+\COMPLEX+, 139
COMPUTE=  \subitem *+\COMPUTE+, 140
CONNECT=  \subitem *+\CONNECT+, 141
CONNECTB=  \subitem *+\CONNECTB+, 142
CONST=  \subitem *+\CONST+, 143
CONSTANT=  \subitem *+\CONSTANT+, 144
CONSTRAINTS=  \subitem *+\CONSTRAINTS+, 145
CONTINUE=  \subitem *+\CONTINUE+, 146
DATA=  \subitem *+\DATA+, 147
DEBUT=  \subitem *+\DEBUT+, 318
DECLARE=  \subitem *+\DECLARE+, 148
DECOMPOSE=  \subitem *+\DECOMPOSE+, 149

DefineKeywordsStyles=  \subitem *+\DefineKeywordsStyles+, \usage{3}, \main{83}, 98,100–

102, 104

DefineUnderlinedKeywordsStyles=  \subitem *+\DefineUnderlinedKeywordsStyles+, \usage{3}, \main{96},103
DELAY=  \subitem *+\DELAY+, 150
DELTA=  \subitem *+\DELTA+, 151
DEPTH=  \subitem *+\DEPTH+, 152
DIGITS=  \subitem *+\DIGITS+, 153
DIMENSION=  \subitem *+\DIMENSION+, 154
DIST=  \subitem *+\DIST+, 155
DISTRIBUTE=  \subitem *+\DISTRIBUTE+, 156
DIV=  \subitem *+\DIV+, 157
DO=  \subitem *+\DO+, 158
DOALL=  \subitem *+\DOALL+, 159
DocInput=  \subitem *+\DocInput+, 72
DOM=  \subitem *+\DOM+, 160
DOMAIN=  \subitem *+\DOMAIN+, 161
DOMAINS=  \subitem *+\DOMAINS+, 162
DONE=  \subitem *+\DONE+, 163
DOPAR=  \subitem *+\DOPAR+, 164
DOWNTO=  \subitem *+\DOWNTO+, 165
DYNAMIC=  \subitem *+\DYNAMIC+, 166
EACH=  \subitem *+\EACH+, 167
EGO=  \subitem *+\EGO+, 168
ELSE=  \subitem *+\ELSE+, 169
ELSIF=  \subitem *+\ELSIF+, 170
EMETTRE=  \subitem *+\EMETTRE+, 309
EnableCrossrefs=  \subitem *+\EnableCrossrefs+, 67
END=  \subitem *+\END+, 171
ENDCASE=  \subitem *+\ENDCASE+, 172
ENDDO=  \subitem *+\ENDDO+, 174
ENDIF=  \subitem *+\ENDIF+, 173
ENDLOOP=  \subitem *+\ENDLOOP+, 175
ENTRY=  \subitem *+\ENTRY+, 176
EOT=  \subitem *+\EOT+, 177
EQ=  \subitem *+\EQ+, 178
EXCEPTION=  \subitem *+\EXCEPTION+, 179
EXIT=  \subitem *+\EXIT+, 180
EXTERNAL=  \subitem *+\EXTERNAL+, 181
FAIRE=  \subitem *+\FAIRE+, 312
FAIT=  \subitem *+\FAIT+, 313
FAlgoKeywords=  \subitem *+\FAlgoKeywords+, \usage{2}, \main{102}
FI=  \subitem *+\FI+, 182
FILE=  \subitem *+\FILE+, 183
FIN=  \subitem *+\FIN+, 319
FINSI=  \subitem *+\FINSI+, 317
FIRST=  \subitem *+\FIRST+, 184
FNormalKeywords=  \subitem *+\FNormalKeywords+, \usage{2}, \main{104}
FOR=  \subitem *+\FOR+, 185
FORALL=  \subitem *+\FORALL+, 186
FOREACH=  \subitem *+\FOREACH+, 187
FORWARD=  \subitem *+\FORWARD+, 188

FProgKeywords=  \subitem *+\FProgKeywords+, \usage{2}, \main{100}
FttKeywords=  \subitem *+\FttKeywords+, \usage{2}, \main{101}
FUAlgoKeywords=  \subitem *+\FUAlgoKeywords+, \usage{2}, \main{103}, 105, 320
FUNCTION=  \subitem *+\FUNCTION+, 189
GE=  \subitem *+\GE+, 190
GENERIC=  \subitem *+\GENERIC+, 191
geq=  \subitem *+\geq+, 190
GETNODE=  \subitem *+\GETNODE+, 192
GOTO=  \subitem *+\GOTO+, 193
GRAPH=  \subitem *+\GRAPH+, 194
GT=  \subitem *+\GT+, 195
headsep=  \subitem *+\headsep+, 62
IF=  \subitem *+\IF+, 196
ifnoprogsfile=  \subitem *+\ifnoprogsfile+, 32, 35, 39, 46
IMPLICATION=  \subitem *+\IMPLICATION+, 197
IMPLY=  \subitem *+\IMPLY+, 198
IMPORT=  \subitem *+\IMPORT+, 199
IN=  \subitem *+\IN+, 200
IND=  \subitem *+\IND+, 201
INDEX=  \subitem *+\INDEX+, 202
INIT=  \subitem *+\INIT+, 203
INOUT=  \subitem *+\INOUT+, 204
INPORT=  \subitem *+\INPORT+, 205
INPUT=  \subitem *+\INPUT+, 206
INTEGER=  \subitem *+\INTEGER+, 207
INTO=  \subitem *+\INTO+, 208
IS=  \subitem *+\IS+, 209
LABEL=  \subitem *+\LABEL+, 210
LAST=  \subitem *+\LAST+, 211
LE=  \subitem *+\LE+, 212
LENGTH=  \subitem *+\LENGTH+, 213
leq=  \subitem *+\leq+, 212
LIMITED=  \subitem *+\LIMITED+, 214
Longrightarrow=  \subitem *+\Longrightarrow+, 142
longrightarrow=  \subitem *+\longrightarrow+, 141
LOOP=  \subitem *+\LOOP+, 215
LT=  \subitem *+\LT+, 216
MakePercentIgnore=  \subitem *+\MakePercentIgnore+, 53
MAP=  \subitem *+\MAP+, 217
marginparwidth=  \subitem *+\marginparwidth+, 60
MOD=  \subitem *+\MOD+, 218
MODULE=  \subitem *+\MODULE+, 219
MODULO=  \subitem *+\MODULO+, 220
MULTIPLE=  \subitem *+\MULTIPLE+, 221
MYID=  \subitem *+\MYID+, 222
NE=  \subitem *+\NE+, 223
NEIGHBOUR=  \subitem *+\NEIGHBOUR+, 224
NEIGHBOURS=  \subitem *+\NEIGHBOURS+, 225
neq=  \subitem *+\neq+, 223
NEW=  \subitem *+\NEW+, 226
NEWBLOCK=  \subitem *+\NEWBLOCK+, 227
NewKeyword=  \subitem *+\NewKeyword+, \usage{2}, \main{80}, 107--305, 309--319
NIL=  \subitem *+\NIL+, 228

NODE=  \subitem *+\NODE+, 229
noprogsfilefalse=  \subitem *+\noprogsfilefalse+, 34, 37
noprogsfiletrue=  \subitem *+\noprogsfiletrue+, 34, 37
NormalKeywords=  \subitem *+\NormalKeywords+, \usage{2}, \main{104}
NOT=  \subitem *+\NOT+, 230
NUL=  \subitem *+\NUL+, 231
NULL=  \subitem *+\NULL+, 232
OD=  \subitem *+\OD+, 233
oddsidemargin=  \subitem *+\oddsidemargin+, 59
ODPAR=  \subitem *+\ODPAR+, 234
OF=  \subitem *+\OF+, 235
OldMakeindex=  \subitem *+\OldMakeindex+, 70
ON=  \subitem *+\ON+, 236
OPEN=  \subitem *+\OPEN+, 237
OR=  \subitem *+\OR+, 238
OTHERS=  \subitem *+\OTHERS+, 239
OUT=  \subitem *+\OUT+, 240
OUTPORT=  \subitem *+\OUTPORT+, 241
OUTPOUT=  \subitem *+\OUTPOUT+, 242
PACKAGE=  \subitem *+\PACKAGE+, 243
PAR=  \subitem *+\PAR+, 246
PARALLEL=  \subitem *+\PARALLEL+, 244
PARFOR=  \subitem *+\PARFOR+, 245
PERCENT=  \subitem *+\PERCENT+, 247
PLACE=  \subitem *+\PLACE+, 248
PORT=  \subitem *+\PORT+, 249
POUR=  \subitem *+\POUR+, 311
PRAGMA=  \subitem *+\PRAGMA+, 250
PRI=  \subitem *+\PRI+, 251
PRIVATE=  \subitem *+\PRIVATE+, 252
PROCEDURE=  \subitem *+\PROCEDURE+, 253
PROCESS=  \subitem *+\PROCESS+, 254
ProgKeywords=  \subitem *+\ProgKeywords+, \usage{2}, \main{100}
PROGRAM=  \subitem *+\PROGRAM+, 255
PROTECTED=  \subitem *+\PROTECTED+, 256
RAISE=  \subitem *+\RAISE+, 257
RANGE=  \subitem *+\RANGE+, 258
READ=  \subitem *+\READ+, 259
READY=  \subitem *+\READY+, 260
REAL=  \subitem *+\REAL+, 261
RECEIVE=  \subitem *+\RECEIVE+, 264
RECEVOIR=  \subitem *+\RECEVOIR+, 310
RECORD=  \subitem *+\RECORD+, 262
RecordChanges=  \subitem *+\RecordChanges+, 68
RECV=  \subitem *+\RECV+, 263
REM=  \subitem *+\REM+, 265
RENAMES=  \subitem *+\RENAMES+, 266
REPEAT=  \subitem *+\REPEAT+, 267
REQUEUE=  \subitem *+\REQUEUE+, 268
font=  \subitem font+, 79, 82
RESET=  \subitem *+\RESET+, 269
RETURN=  \subitem *+\RETURN+, 270
REVERSE=  \subitem *+\REVERSE+, 271
REWIND=  \subitem *+\REWIND+, 272
REWRITE=  \subitem *+\REWRITE+, 273
Rightarrow=  \subitem *+\Rightarrow+, 197, 198
ROOT=  \subitem *+\ROOT+, 274

SELECT=  \subitem *+\SELECT+, 275
SEND=  \subitem *+\SEND+, 276
SENDEOT=  \subitem *+\SENDEOT+, 277
SEPARATE=  \subitem *+\SEPARATE+, 278
SEQ=  \subitem *+\SEQ+, 279
SET=  \subitem *+\SET+, 280
SI=  \subitem *+\SI+, 314
SINON=  \subitem *+\SINON+, 316
SIZE=  \subitem *+\SIZE+, 281
SKIP=  \subitem *+\SKIP+, 282
STRING=  \subitem *+\STRING+, 283
SUBTYPE=  \subitem *+\SUBTYPE+, 284
SWITCH=  \subitem *+\SWITCH+, 285
TAGGED=  \subitem *+\TAGGED+, 286
TASK=  \subitem *+\TASK+, 287
TERMINATE=  \subitem *+\TERMINATE+, 288
textheight=  \subitem *+\textheight+, 56
textwidth=  \subitem *+\textwidth+, 55
THEN=  \subitem *+\THEN+, 289
TO=  \subitem *+\TO+, 290
TOWARDS=  \subitem *+\TOWARDS+, 291

                                         TRANSMIT=  \subitem *+\TRANSMIT+, 292
                                         ttKeywords=  \subitem *+\ttKeywords+, \usage{2}, \main{101}
                                         TUPLE=  \subitem *+\TUPLE+, 293
                                         TYPE=  \subitem *+\TYPE+, 294
                                         UAlgoKeywords=  \subitem *+\UAlgoKeywords+, \usage{2}, \main{103}
                                         UFAlgoKeywords=  \subitem *+\UFAlgoKeywords+, \usage{2}, \main{105}
                                         UNDEF=  \subitem *+\UNDEF+, 295
                                         UNTIL=  \subitem *+\UNTIL+, 296
                                         USE=  \subitem *+\USE+, 297
                                         usepackage=  \subitem *+\usepackage+, 50, 51
                                         VAR=  \subitem *+\VAR+, 298
                                         VARIABLE=  \subitem *+\VARIABLE+, 299
                                         WHEN=  \subitem *+\WHEN+, 300
                                         WHERE=  \subitem *+\WHERE+, 301
                                         WHILE=  \subitem *+\WHILE+, 302
                                         WITH=  \subitem *+\WITH+, 303
                                         WRITE=  \subitem *+\WRITE+, 304
                                         XOR=  \subitem *+\XOR+, 305