Improve build script for amsmath
[latex2e.git] / latex2e-20160201 / base / classes.dtx
bloba6a31d5246500c91bb368e6491836b887ecb2987
1 % \iffalse meta-comment
3 % Copyright 1993-2016
4 % The LaTeX3 Project and any individual authors listed elsewhere
5 % in this file.
7 % This file is part of the LaTeX base system.
8 % -------------------------------------------
10 % It may be distributed and/or modified under the
11 % conditions of the LaTeX Project Public License, either version 1.3c
12 % of this license or (at your option) any later version.
13 % The latest version of this license is in
14 %    http://www.latex-project.org/lppl.txt
15 % and version 1.3c or later is part of all distributions of LaTeX
16 % version 2005/12/01 or later.
18 % This file has the LPPL maintenance status "maintained".
20 % The list of all files belonging to the LaTeX base distribution is
21 % given in the file `manifest.txt'. See also `legal.txt' for additional
22 % information.
24 % The list of derived (unpacked) files belonging to the distribution
25 % and covered by LPPL is defined by the unpacking scripts (with
26 % extension .ins) which are part of the distribution.
28 % \fi
29 % \CheckSum{2976}
30 %% \CharacterTable
31 %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
32 %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
33 %%   Digits        \0\1\2\3\4\5\6\7\8\9
34 %%   Exclamation   \!     Double quote  \"     Hash (number) \#
35 %%   Dollar        \$     Percent       \%     Ampersand     \&
36 %%   Acute accent  \'     Left paren    \(     Right paren   \)
37 %%   Asterisk      \*     Plus          \+     Comma         \,
38 %%   Minus         \-     Point         \.     Solidus       \/
39 %%   Colon         \:     Semicolon     \;     Less than     \<
40 %%   Equals        \=     Greater than  \>     Question mark \?
41 %%   Commercial at \@     Left bracket  \[     Backslash     \\
42 %%   Right bracket \]     Circumflex    \^     Underscore    \_
43 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
44 %%   Right brace   \}     Tilde         \~}
46 % \iffalse
47 % \section{Identification}
49 %    These document classes can only be used with \LaTeXe, so we make
50 %    sure that an appropriate message is displayed when another \TeX{}
51 %    format is used.
52 % \changes{v1.3p}{1995/11/30}{Added date of \LaTeX\ format to argument
53 %    of \cs{NeedsTeXFormat}}
54 %    \begin{macrocode}
55 %<article|report|book>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
56 %    \end{macrocode}
58 %    Announce the Class name and its version:
59 %    \begin{macrocode}
60 %<article>\ProvidesClass{article}
61 %<report>\ProvidesClass{report}
62 %<book>\ProvidesClass{book}
63 %<10pt&!bk>\ProvidesFile{size10.clo}
64 %<11pt&!bk>\ProvidesFile{size11.clo}
65 %<12pt&!bk>\ProvidesFile{size12.clo}
66 %<10pt&bk>\ProvidesFile{bk10.clo}
67 %<11pt&bk>\ProvidesFile{bk11.clo}
68 %<12pt&bk>\ProvidesFile{bk12.clo}
69 %<*driver>
70 \ProvidesFile{classes.drv}
71 %</driver>
72               [2014/09/29 v1.4h
73 %<article|report|book> Standard LaTeX document class]
74 %<10pt|11pt|12pt>      Standard LaTeX file (size option)]
75 %    \end{macrocode}
77 % \section{A driver for this document}
79 % The next bit of code contains the documentation driver file for
80 % \TeX{}, i.e., the file that will produce the documentation you are
81 % currently reading. It will be extracted from this file by the
82 % {\sc docstrip} program.
84 % \changes{1.0f}{1993/12/07}{Use class ltxdoc document class}
85 % \changes{1.0r}{1994/02/28}{Moved driver code in order not to need a
86 %    separate driver}
87 %    \begin{macrocode}
88 %<*driver>
90 \documentclass{ltxdoc}
91 %    \end{macrocode}
93 %    We don't want everything to appear in the index
94 %    \begin{macrocode}
95 \DoNotIndex{\',\.,\@M,\@@input,\@Alph,\@alph,\@addtoreset,\@arabic}
96 \DoNotIndex{\@badmath,\@centercr,\@cite}
97 \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
98 \DoNotIndex{\@input,\@ixpt,\@m,\@minus,\@mkboth}
99 \DoNotIndex{\@ne,\@nil,\@nomath,\@plus,\roman,\@set@topoint}
100 \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
101 \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
102 \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
103 \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
104 \DoNotIndex{\advance,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
105 \DoNotIndex{\bullet}
106 \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
107 \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
108 \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
109 \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
110 \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
111 \DoNotIndex{\fbox}
112 \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
113 \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
114 \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi}
115 \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
116 \DoNotIndex{\input}
117 \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
118 \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
119 \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
120 \DoNotIndex{\NeedsTeXFormat,\newdimen}
121 \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
122 \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
123 \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
124 \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
125 \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
126 \DoNotIndex{\refstepcounter,\relax,\renewcommand}
127 \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily}
128 \DoNotIndex{\secdef,\selectfont,\setbox,\setcounter,\setlength}
129 \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
130 \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
131 \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
132 \DoNotIndex{\viipt,\vipt,\vskip,\vspace}
133 \DoNotIndex{\wd,\xiipt,\year,\z@}
134 %    \end{macrocode}
135 %    We do want an index, using linenumbers
136 %    \begin{macrocode}
137 \EnableCrossrefs
138 \CodelineIndex
139 %    \end{macrocode}
140 %    We use so many \file{docstrip} modules that we set the
141 %    \texttt{StandardModuleDepth} counter to 1.
142 %    \begin{macrocode}
143 \setcounter{StandardModuleDepth}{1}
144 %    \end{macrocode}
145 %    The following command retrieves the date and version information
146 %    from the file.
147 %    \begin{macrocode}
148 \GetFileInfo{classes.drv}
149 %    \end{macrocode}
150 %    Some commonly used abbreviations
151 % \changes{v1.2w}{1994/12/01}{Use \cs{newcommand*}}
152 %    \begin{macrocode}
153 \newcommand*{\Lopt}[1]{\textsf {#1}}
154 \newcommand*{\file}[1]{\texttt {#1}}
155 \newcommand*{\Lcount}[1]{\textsl {\small#1}}
156 \newcommand*{\pstyle}[1]{\textsl {#1}}
157 %    \end{macrocode}
158 %    We also want the full details.
159 %    \begin{macrocode}
160 \begin{document}
161 \DocInput{classes.dtx}
162 \PrintIndex
163 % ^^A\PrintChanges
164 \end{document}
165 %</driver>
166 %    \end{macrocode}
168 % \fi
170 % \changes{v1.0d}{1993/11/30}{remove \cs{@in}, made option makeindex
171 %    a synonym for option makeidx}
172 % \changes{v1.0d}{1993/11/30}{removed \cs{@minus}, \cs{@plus},
173 %    \cs{@settopoint}, \cs{@setfontsize}; they are now in the
174 %    kernel}
175 % \changes{v1.0d}{1993/11/30}{Added use of \cs{NeedsTeXFormat}}
176 % \changes{v1.0d}{1993/11/30}{Replaced \cs{bf} with \cs{bfseries};
177 %    \cs{rm} with \cs{rmfamily}}
178 % \changes{v1.0d}{1993/11/30}{Made equation and eqnarray environments
179 %    in the fleqn option up to date with latex.dtx}
180 % \changes{v1.0f}{1993/12/08}{Made all lines shorter than 72 characters}
181 % \changes{v1.0g}{1993/12/08}{Made change in eqnarray for the fleqn
182 %    option, as suggested by Rainer.}
183 % \changes{v1.0h}{1993/12/18}{Made the definitions of the font- and
184 %    size-changing commands use \cs{renew} rather than \cs{new}.
185 %    Defined the float parameters with \cs{renewcommand} rather than
186 %    \cs{newcommand}.  Corrected some typos in the fleqn option.
187 %    Replaced two occurrences of -\cs{@secpenalty} by
188 %    \cs{@secpenalty}.  ASAJ.}
189 % \changes{v1.0j}{1993/12/20}{Added \cs{ProvidesFile} to size files}
190 % \changes{v1.0j}{1993/12/10}{Use \cs{cmd} in change entries}
191 % \changes{v1.0k}{1994/01/09}{Removed some typos/bugs}
192 % \changes{v1.0l}{1994/01/11}{add the extension to the names of the
193 %     files}
194 % \changes{v1.0l}{1994/01/10}{Changed version numbering; moved leqno
195 %    and fleqn options to an external file.}
196 % \changes{v1.0n}{1994/01/19}{Removed code for makeidx option and made
197 %    it a separate package; removed use of \cs{setlength} from list
198 %    parameters.}
199 % \changes{v1.0o}{1994/01/31}{Small documentation changes}
200 % \changes{v1.0q}{1994/02/16}{Small documentation changes}
201 % \changes{v1.1a}{1994/03/12}{Removed \cs{typeout} messages}
202 % \changes{v1.1f}{1994/04/15}{Inserted forgotten line break}
203 % \changes{v1.2a}{1994/03/17}{Added openright option. (LL)}
204 % \changes{v1.2b}{1994/03/17}{Added the \ldots{}matter commands. (LL)}
205 % \changes{v1.2c}{1994/03/17}{Fixed page numbering in titlepage
206 %    env. (LL)}
207 % \changes{v1.2d}{1994/04/11}{Checked the file for long lines and
208 %    wrapped them when necessary; made a slight implementation
209 %    modification to the openright and openany options.}
210 % \changes{v1.2i}{1994/04/28}{Use LaTeX instead of LaTeX2e in messages}
211 % \changes{v1.2j}{1994/05/01}{Removed the use of \cs{fileversion}
212 %    c.s.}
213 % \changes{v1.2l}{1994/05/11}{changed some \cs{changes} entries}
214 % \changes{v1.2m}{1994/05/12}{Forgot a few entries}
215 % \changes{v1.2o}{1994/05/24}{Changed file information}
216 % \changes{v1.2p}{1994/05/27}{Moved identification and driver to the
217 %    front of the file}
218 % \changes{v1.2t}{1994/06/22}{Refrased a few sentences to prevent
219 %    overfull hboxes}
220 % \changes{v1.2v}{1994/12/01}{Made the oneside option work for the
221 %    book class}
222 % \changes{v1.2w}{1994/12/01}{Use \cs{newcommand*} for commands with
223 %    arguments}
224 % \changes{v1.2z}{1995/05/16}{Always use \cs{cs} in \cs{changes}
225 %    entries}
226 % \changes{v1.3a}{1995/05/17}{Replaced all \cs{hbox to} by \cs{hb@xt@}}
227 % \changes{v1.3d}{1995/06/05}{Replaced all \cs{uppercase} by
228 %    \cs{MakeUppercase}}
229 % \changes{v1.3l}{1995/10/20}{Disabled in compatibility mode all
230 %    options that are new in \LaTeXe.}
231 % \changes{v1.3v}{1997/06/16}{Documentation fixes.}
234 % \title{Standard Document Classes for \LaTeX{} version 2e\thanks{This
235 %    file has version number \fileversion, last revised \filedate.}}
237 % \author{%
238 % Copyright (C) 1992 by Leslie Lamport \and
239 % Copyright (C) 1994-97 by Frank Mittelbach \and Johannes Braams
240 % }
241 % \date{\filedate}
242 % \MaintainedByLaTeXTeam{latex}
243 % \maketitle
244 % \tableofcontents
246 % \StopEventually{}    ^^A
248 % \section{The {\sc docstrip} modules}
250 % The following modules are used in the implementation to direct
251 % {\sc docstrip} in generating the external files:
252 % \begin{center}
253 % \begin{tabular}{ll}
254 %   article & produce the documentclass article\\
255 %   report  & produce the documentclass report\\
256 %   size10  & produce the class option for 10pt\\
257 %   size11  & produce the class option for 11pt\\
258 %   size12  & produce the class option for 12pt\\
259 %   book    & produce the documentclass book\\
260 %   bk10    & produce the book class option for 10pt\\
261 %   bk11    & produce the book class option for 11pt\\
262 %   bk12    & produce the book class option for 12pt\\
263 %   driver  & produce a documentation driver file \\
264 % \end{tabular}
265 % \end{center}
267 % \section{Initial Code}
269 %    In this part we define a few commands that are used later on.
271 % \begin{macro}{\@ptsize}
272 %    This control sequence is used to store the second digit of the
273 %    pointsize we are typesetting in. So, normally, it's value is one
274 %    of 0, 1 or 2.
275 %    \begin{macrocode}
276 %<*article|report|book>
277 \newcommand\@ptsize{}
278 %    \end{macrocode}
279 % \end{macro}
281 % \begin{macro}{\if@restonecol}
282 %    When the document has to printed in two columns, we sometimes
283 %    have to temporarily switch to one column. This switch is used to
284 %    remember to switch back.
285 %    \begin{macrocode}
286 \newif\if@restonecol
287 %    \end{macrocode}
288 % \end{macro}
290 % \begin{macro}{\if@titlepage}
291 %    A switch to indicate if a titlepage has to be produced.  For the
292 %    article document class the default is not to make a separate
293 %    titlepage.
294 %    \begin{macrocode}
295 \newif\if@titlepage
296 %<article>\@titlepagefalse
297 %<!article>\@titlepagetrue
298 %    \end{macrocode}
299 % \end{macro}
301 % \begin{macro}{\if@openright}
302 %    A switch to indicate if chapters must start on a right-hand page.
303 %    The default for the report class is no; for the book class it's
304 %    yes.
305 %    \begin{macrocode}
306 %<!article>\newif\if@openright
307 %    \end{macrocode}
308 % \end{macro}
310 % \changes{v1.3k}{1995/08/27}{Macro \cs{if@openbib} removed}
312 % \begin{macro}{\if@mainmatter}
313 % \changes{v1.2v}{1994/12/01}{Moved the allocation of
314 %    \cs{if@mainmatter} here}
316 %    The switch |\if@mainmatter|, only available in the document class
317 %    book, indicates whether we are processing the main material in
318 %    the book.
319 %    \begin{macrocode}
320 %<book>\newif\if@mainmatter \@mainmattertrue
321 %    \end{macrocode}
322 %  \end{macro}
324 % \section{Declaration of Options}
327 % \subsection{Setting Paper Sizes}
329 %    The variables |\paperwidth| and |\paperheight| should reflect the
330 %    physical paper size after trimming. For desk printer output this
331 %    is usually the real paper size since there is no post-processing.
332 %    Classes for real book production will probably add other paper
333 %    sizes and additionally the production of crop marks for trimming.
334 %    In compatibility mode, these (and some of the subsequent) options
335 %    are disabled, as they were not present in \LaTeX 2.09.
336 % \changes{v1.0g}{1993/12/09}{Removed typo, A4 is not 279 mm high}
337 %    \begin{macrocode}
338 \if@compatibility\else
339 \DeclareOption{a4paper}
340    {\setlength\paperheight {297mm}%
341     \setlength\paperwidth  {210mm}}
342 \DeclareOption{a5paper}
343    {\setlength\paperheight {210mm}%
344     \setlength\paperwidth  {148mm}}
345 \DeclareOption{b5paper}
346    {\setlength\paperheight {250mm}%
347     \setlength\paperwidth  {176mm}}
348 \DeclareOption{letterpaper}
349    {\setlength\paperheight {11in}%
350     \setlength\paperwidth  {8.5in}}
351 \DeclareOption{legalpaper}
352    {\setlength\paperheight {14in}%
353     \setlength\paperwidth  {8.5in}}
354 \DeclareOption{executivepaper}
355    {\setlength\paperheight {10.5in}%
356     \setlength\paperwidth  {7.25in}}
357 %    \end{macrocode}
359 %    The option \Lopt{landscape} switches the values of |\paperheight|
360 %    and |\paperwidth|, assuming the dimensions were given for portrait
361 %    paper.
362 %    \begin{macrocode}
363 \DeclareOption{landscape}
364    {\setlength\@tempdima   {\paperheight}%
365     \setlength\paperheight {\paperwidth}%
366     \setlength\paperwidth  {\@tempdima}}
368 %    \end{macrocode}
370 % \subsection{Choosing the type size}
372 %    The type size options are handled by defining |\@ptsize| to contain
373 %    the last digit of the size in question and branching on |\ifcase|
374 %    statements. This is done for historical reasons to stay compatible
375 %    with other packages that use the |\@ptsize| variable to select
376 %    special actions. It makes the declarations of size options less
377 %    than 10pt difficult, although one can probably use \texttt{9}
378 %    and \texttt{8} assuming that a class wont define both
379 %    \Lopt{8pt} and \Lopt{18pt} options.
381 %    \begin{macrocode}
382 \if@compatibility
383   \renewcommand\@ptsize{0}
384 \else
385 \DeclareOption{10pt}{\renewcommand\@ptsize{0}}
387 \DeclareOption{11pt}{\renewcommand\@ptsize{1}}
388 \DeclareOption{12pt}{\renewcommand\@ptsize{2}}
389 %    \end{macrocode}
392 %  \subsection{Two-side or one-side printing}
394 %    For two-sided printing we use the switch |\if@twoside|. In
395 %    addition we have to set the |\if@mparswitch| to get any margin
396 %    paragraphs into the outside margin.
397 %    \begin{macrocode}
398 \if@compatibility\else
399 \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
401 \DeclareOption{twoside}{\@twosidetrue  \@mparswitchtrue}
402 %    \end{macrocode}
405 %  \subsection{Draft option}
407 %    If the user requests \Lopt{draft} we show any overfull boxes.
408 %    We could probably add some more interesting stuff to this option.
409 %    \begin{macrocode}
410 \DeclareOption{draft}{\setlength\overfullrule{5pt}}
411 \if@compatibility\else
412 \DeclareOption{final}{\setlength\overfullrule{0pt}}
414 %    \end{macrocode}
416 %  \subsection{Titlepage option}
417 %    An article usually has no separate titlepage, but the user can
418 %    request one.
419 %    \begin{macrocode}
420 \DeclareOption{titlepage}{\@titlepagetrue}
421 \if@compatibility\else
422 \DeclareOption{notitlepage}{\@titlepagefalse}
424 %    \end{macrocode}
426 %  \subsection{openright option}
427 %    This option determines whether or not a chapter must start on
428 %    a right-hand page
429 %    request one.
430 %    \begin{macrocode}
431 %<!article>\if@compatibility
432 %<book>\@openrighttrue
433 %<!article>\else
434 %<!article>\DeclareOption{openright}{\@openrighttrue}
435 %<!article>\DeclareOption{openany}{\@openrightfalse}
436 %<!article>\fi
437 %    \end{macrocode}
439 %  \subsection{Twocolumn printing}
441 %    Two-column and one-column printing is again realized via a switch.
442 %    \begin{macrocode}
443 \if@compatibility\else
444 \DeclareOption{onecolumn}{\@twocolumnfalse}
446 \DeclareOption{twocolumn}{\@twocolumntrue}
447 %    \end{macrocode}
449 %  \subsection{Equation numbering on the left}
451 %    The option \Lopt{leqno} can be used to get the equation numbers
452 %    on the left side of the equation. It loads code which is generated
453 %    automatically from the kernel files when the format is built.
454 %    If the equation number does get a special formatting then instead
455 %    of using the kernel file the class would need to provide the code
456 %    explicitly.
457 %    \begin{macrocode}
458 \DeclareOption{leqno}{\input{leqno.clo}}
459 %    \end{macrocode}
461 %  \subsection{Flush left displays}
463 %    The option \Lopt{fleqn} redefines the displayed math environments
464 %    in such a way that they come out flush left, with an indentation
465 %    of |\mathindent| from the prevailing left margin. It loads
466 %    code which is generated
467 %    automatically from the kernel files when the format is built.
468 % \changes{v1.0h}{1993/12/18}{Corrected some typos.  ASAJ.}
469 %    \begin{macrocode}
470 \DeclareOption{fleqn}{\input{fleqn.clo}}
471 %    \end{macrocode}
473 % \subsection{Open bibliography}
475 %    The option \Lopt{openbib} produces the ``open'' bibliography
476 %    style, in which each block starts on a new line, and succeeding
477 %    lines in a block are indented by |\bibindent|.
478 % \changes{v1.3k}{1995/08/27}{openbib option reimplemented}
479 %    \begin{macrocode}
480 \DeclareOption{openbib}{%
481 %    \end{macrocode}
482 %    First some hook into the bibliography environment is filled.
483 %    \begin{macrocode}
484   \AtEndOfPackage{%
485    \renewcommand\@openbib@code{%
486       \advance\leftmargin\bibindent
487       \itemindent -\bibindent
488       \listparindent \itemindent
489       \parsep \z@
490       }%
491 %    \end{macrocode}
492 %    In addition the definition of |\newblock| is overwritten.
493 %    \begin{macrocode}
494    \renewcommand\newblock{\par}}%
496 %    \end{macrocode}
499 % \section{Executing Options}
501 %    Here we execute the default options to initialize certain
502 %    variables. Note that the document class `book' always uses two
503 %    sided printing.
504 %    \begin{macrocode}
505 %<*article>
506 \ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final}
507 %</article>
508 %<*report>
509 \ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final,openany}
510 %</report>
511 %<*book>
512 \ExecuteOptions{letterpaper,10pt,twoside,onecolumn,final,openright}
513 %</book>
514 %    \end{macrocode}
516 %    The |\ProcessOptions| command causes the execution of the code
517 %    for every option \Lopt{FOO}
518 %    which is declared and for which the user typed
519 %    the \Lopt{FOO} option in his
520 %    |\documentclass| command.  For every option \Lopt{BAR} he typed,
521 %    which is not declared, the option is assumed to be a global option.
522 %    All options will be passed as document options to any
523 %    |\usepackage| command in the document preamble.
524 %    \begin{macrocode}
525 \ProcessOptions
526 %    \end{macrocode}
527 %    Now that all the options have been executed we can load the
528 %    chosen class option file that contains all size dependent code.
529 %    \begin{macrocode}
530 %<!book>\input{size1\@ptsize.clo}
531 %<book>\input{bk1\@ptsize.clo}
532 %</article|report|book>
533 %    \end{macrocode}
535 %  \section{Loading Packages}
537 %  The standard class files do not load additional packages.
540 % \section{Document Layout}
541 % \label{sec:classes:maincode}
543 %  In this section we are finally dealing with the nasty typographical
544 %  details.
546 % \subsection{Fonts}
548 %    \LaTeX\ offers the user commands to change the size of the font,
549 %    relative to the `main' size. Each relative size changing command
550 %    |\size| executes the command
551 %    |\@setfontsize||\size|\meta{font-size}\meta{baselineskip} where:
553 %    \begin{description}
554 %    \item[\meta{font-size}] The absolute size of the font to use from
555 %        now on.
557 %    \item[\meta{baselineskip}] The normal value of |\baselineskip|
558 %        for the size of the font selected. (The actual value will be
559 %        |\baselinestretch| * \meta{baselineskip}.)
560 %    \end{description}
562 %    A number of commands, defined in the \LaTeX{} kernel, shorten the
563 %    following  definitions and are used throughout. They are:
564 % \begin{center}
565 % \begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
566 %  \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\
567 %  \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\
568 %  \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\
569 %  ...
570 %  \end{tabular}
571 %  \end{center}
573 % \begin{macro}{\normalsize}
574 % \begin{macro}{\@normalsize}
575 % \changes{v1.0o}{1994/01/31}{\cs{@normalsize} now defined in the
576 %    kernel}
578 %    The user level command for the main size is |\normalsize|.
579 %    Internally \LaTeX{} uses |\@normalsize| when it refers to the
580 %    main size. |\@normalsize| will be defined to work like
581 %    |\normalsize| if the latter is redefined from its default
582 %    definition (that just issues an error message). Otherwise
583 %    |\@normalsize| simply selects a 10pt/12pt size.
585 %    The |\normalsize| macro also sets new values for\\
586 %    |\abovedisplayskip|, |\abovedisplayshortskip| and
587 %    |\belowdisplayshortskip|.
589 % \changes{v1.0e}{1993/12/07}{\cs{normalsize} doesn't exist, so use
590 %    \cs{newcommand}}
591 % \changes{v1.0h}{1993/12/18}{\cs{normalsize} is now defined in the
592 %    kernel, so use \cs{renewcommand}.  ASAJ.}
593 %    \begin{macrocode}
594 %<*10pt|11pt|12pt>
595 \renewcommand\normalsize{%
596 %<*10pt>
597    \@setfontsize\normalsize\@xpt\@xiipt
598    \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
599    \abovedisplayshortskip \z@ \@plus3\p@
600    \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
601 %</10pt>
602 %<*11pt>
603    \@setfontsize\normalsize\@xipt{13.6}%
604    \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
605    \abovedisplayshortskip \z@ \@plus3\p@
606    \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
607 %</11pt>
608 %<*12pt>
609    \@setfontsize\normalsize\@xiipt{14.5}%
610    \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
611    \abovedisplayshortskip \z@ \@plus3\p@
612    \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
613 %</12pt>
614 %    \end{macrocode}
615 %    The |\belowdisplayskip| is always equal to the
616 %    |\abovedisplayskip|. The parameters of the first level list are
617 %    always given by |\@listI|.
618 %    \begin{macrocode}
619    \belowdisplayskip \abovedisplayskip
620    \let\@listi\@listI}
621 %    \end{macrocode}
623 %    We initially choose the normalsize font.
624 %    \begin{macrocode}
625 \normalsize
626 %    \end{macrocode}
627 % \end{macro}
628 % \end{macro}
630 % \begin{macro}{\small}
631 %    This is similar to |\normalsize|.
632 % \changes{v1.0h}{1993/12/18}{\cs{small} is now defined in the kernel,
633 %    so use \cs{renewcommand}.  ASAJ.}
634 % \changes{v1.2e}{1994/04/14}{\cs{small} is no longer defined in the
635 %    kernel; use \cs{newcommand}}
636 %    \begin{macrocode}
637 \newcommand\small{%
638 %<*10pt>
639    \@setfontsize\small\@ixpt{11}%
640    \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
641    \abovedisplayshortskip \z@ \@plus2\p@
642    \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
643    \def\@listi{\leftmargin\leftmargini
644                \topsep 4\p@ \@plus2\p@ \@minus2\p@
645                \parsep 2\p@ \@plus\p@ \@minus\p@
646                \itemsep \parsep}%
647 %</10pt>
648 %<*11pt>
649    \@setfontsize\small\@xpt\@xiipt
650    \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
651    \abovedisplayshortskip \z@ \@plus3\p@
652    \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
653    \def\@listi{\leftmargin\leftmargini
654                \topsep 6\p@ \@plus2\p@ \@minus2\p@
655                \parsep 3\p@ \@plus2\p@ \@minus\p@
656                \itemsep \parsep}%
657 %</11pt>
658 %<*12pt>
659    \@setfontsize\small\@xipt{13.6}%
660    \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
661    \abovedisplayshortskip \z@ \@plus3\p@
662    \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
663    \def\@listi{\leftmargin\leftmargini
664                \topsep 9\p@ \@plus3\p@ \@minus5\p@
665                \parsep 4.5\p@ \@plus2\p@ \@minus\p@
666                \itemsep \parsep}%
667 %</12pt>
668    \belowdisplayskip \abovedisplayskip
670 %    \end{macrocode}
671 % \end{macro}
673 % \begin{macro}{\footnotesize}
674 %    This is similar to |\normalsize|.
675 % \changes{v1.0h}{1993/12/18}{\cs{footnotesize} is now defined in the
676 %    kernel, so use \cs{renewcommand}.  ASAJ.}
677 % \changes{v1.2e}{1994/04/14}{use \cs{newcommand} again}
678 %    \begin{macrocode}
679 \newcommand\footnotesize{%
680 %<*10pt>
681    \@setfontsize\footnotesize\@viiipt{9.5}%
682    \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
683    \abovedisplayshortskip \z@ \@plus\p@
684    \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
685    \def\@listi{\leftmargin\leftmargini
686                \topsep 3\p@ \@plus\p@ \@minus\p@
687                \parsep 2\p@ \@plus\p@ \@minus\p@
688                \itemsep \parsep}%
689 %</10pt>
690 %<*11pt>
691    \@setfontsize\footnotesize\@ixpt{11}%
692    \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@
693    \abovedisplayshortskip \z@ \@plus\p@
694    \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
695    \def\@listi{\leftmargin\leftmargini
696                \topsep 4\p@ \@plus2\p@ \@minus2\p@
697                \parsep 2\p@ \@plus\p@ \@minus\p@
698                \itemsep \parsep}%
699 %</11pt>
700 %<*12pt>
701    \@setfontsize\footnotesize\@xpt\@xiipt
702    \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
703    \abovedisplayshortskip \z@ \@plus3\p@
704    \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
705    \def\@listi{\leftmargin\leftmargini
706                \topsep 6\p@ \@plus2\p@ \@minus2\p@
707                \parsep 3\p@ \@plus2\p@ \@minus\p@
708                \itemsep \parsep}%
709 %</12pt>
710    \belowdisplayskip \abovedisplayskip
712 %</10pt|11pt|12pt>
713 %    \end{macrocode}
714 % \end{macro}
716 % \begin{macro}{\scriptsize}
717 % \begin{macro}{\tiny}
718 % \begin{macro}{\large}
719 % \begin{macro}{\Large}
720 % \begin{macro}{\LARGE}
721 % \begin{macro}{\huge}
722 % \begin{macro}{\Huge}
723 %    These are all much simpler than the previous macros, they just
724 %    select a new fontsize, but leave the parameters for displays and
725 %    lists alone.
726 % \changes{v1.0h}{1993/12/18}{These are now defined in the kernel,
727 %    so use \cs{renewcommand}.  ASAJ.}
728 % \changes{v1.2e}{1994/04/14}{use \cs{newcommand} again}
729 %    \begin{macrocode}
730 %<*10pt>
731 \newcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
732 \newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
733 \newcommand\large{\@setfontsize\large\@xiipt{14}}
734 \newcommand\Large{\@setfontsize\Large\@xivpt{18}}
735 \newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
736 \newcommand\huge{\@setfontsize\huge\@xxpt{25}}
737 \newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
738 %</10pt>
739 %<*11pt>
740 \newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
741 \newcommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
742 \newcommand\large{\@setfontsize\large\@xiipt{14}}
743 \newcommand\Large{\@setfontsize\Large\@xivpt{18}}
744 \newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
745 \newcommand\huge{\@setfontsize\huge\@xxpt{25}}
746 \newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
747 %</11pt>
748 %<*12pt>
749 \newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
750 \newcommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
751 \newcommand\large{\@setfontsize\large\@xivpt{18}}
752 \newcommand\Large{\@setfontsize\Large\@xviipt{22}}
753 \newcommand\LARGE{\@setfontsize\LARGE\@xxpt{25}}
754 \newcommand\huge{\@setfontsize\huge\@xxvpt{30}}
755 \let\Huge=\huge
756 %</12pt>
757 %    \end{macrocode}
758 % \end{macro}
759 % \end{macro}
760 % \end{macro}
761 % \end{macro}
762 % \end{macro}
763 % \end{macro}
764 % \end{macro}
767 % \subsection{Paragraphing}
769 % \begin{macro}{\lineskip}
770 % \begin{macro}{\normallineskip}
771 %    These parameters control \TeX's behaviour when two lines tend to
772 %    come too close together.
773 %    \begin{macrocode}
774 %<*article|report|book>
775 \setlength\lineskip{1\p@}
776 \setlength\normallineskip{1\p@}
777 %    \end{macrocode}
778 % \end{macro}
779 % \end{macro}
781 % \begin{macro}{\baselinestretch}
782 %    This is used as a multiplier for |\baselineskip|. The default is
783 %    to \emph{not} stretch the baselines. Note that if this command
784 %    doesn't resolve to ``empty'' any \texttt{plus} or \texttt{minus}
785 %    part in the specification of |\baselineskip| is ignored.
786 %    \begin{macrocode}
787 \renewcommand\baselinestretch{}
788 %    \end{macrocode}
789 % \end{macro}
791 % \begin{macro}{\parskip}
792 % \begin{macro}{\parindent}
793 %    |\parskip| gives extra vertical space between paragraphs and
794 %    |\parindent| is the width of the paragraph indentation. The value
795 %    of |\parindent| depends on whether we are in two column mode.
796 % \changes{v1.0m}{1994/01/12}{\cs{parindent} should be different,
797 %    depending on the pointsize}
798 %    \begin{macrocode}
799 \setlength\parskip{0\p@ \@plus \p@}
800 %</article|report|book>
801 %<*10pt|11pt|12pt>
802 \if@twocolumn
803   \setlength\parindent{1em}
804 \else
805 %<10pt>  \setlength\parindent{15\p@}
806 %<11pt>  \setlength\parindent{17\p@}
807 %<12pt>  \setlength\parindent{1.5em}
809 %</10pt|11pt|12pt>
810 %    \end{macrocode}
811 % \end{macro}
812 % \end{macro}
814 %  \begin{macro}{\smallskipamount}
815 %  \begin{macro}{\medskipamount}
816 %  \begin{macro}{\bigskipamount}
817 %    The values for these three parameters are set in the \LaTeX\
818 %    kernel. They should perhaps vary, according to the size option
819 %    specified. But as they have always had the same value regardless
820 %    of the size option we do not change them to stay compatible with
821 %    both \LaTeX~2.09 and older releases of \LaTeXe.
822 % \changes{v1.3n}{1995/10/29}{Added setting the values of
823 %    \cs{...skipamount}}
824 %    \begin{macrocode}
825 %<*10pt|11pt|12pt>
826 \setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@}
827 \setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@}
828 \setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@}
829 %</10pt|11pt|12pt>
830 %    \end{macrocode}
831 %  \end{macro}
832 %  \end{macro}
833 %  \end{macro}
835 % \begin{macro}{\@lowpenalty}
836 % \begin{macro}{\@medpenalty}
837 % \begin{macro}{\@highpenalty}%
838 %    The commands |\nopagebreak| and |\nolinebreak| put in penalties
839 %    to discourage these breaks at the point they are put in.
840 %    They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|,
841 %    dependent on their argument.
842 %    \begin{macrocode}
843 %<*article|report|book>
844 \@lowpenalty   51
845 \@medpenalty  151
846 \@highpenalty 301
847 %    \end{macrocode}
848 % \end{macro}
849 % \end{macro}
850 % \end{macro}
852 % \begin{macro}{\clubpenalty}
853 % \begin{macro}{\widowpenalty}
854 %    These penalties are use to discourage club and widow lines.
855 %    Because we use their default values we only show them here,
856 %    commented out.
857 %    \begin{macrocode}
858 % \clubpenalty  150
859 % \widowpenalty 150
860 %    \end{macrocode}
861 % \end{macro}
862 % \end{macro}
864 % \begin{macro}{\displaywidowpenalty}
865 % \begin{macro}{\predisplaypenalty}
866 % \begin{macro}{\postdisplaypenalty}
867 %    Discourage (but not so much) widows in front of a math display
868 %    and forbid breaking directly in front of a display. Allow break
869 %    after a display without a penalty. Again the default values are
870 %    used, therefore we only show them here.
871 %    \begin{macrocode}
872 % \displaywidowpenalty 50
873 % \predisplaypenalty   10000
874 % \postdisplaypenalty  0
875 %    \end{macrocode}
876 % \end{macro}
877 % \end{macro}
878 % \end{macro}
880 % \begin{macro}{\interlinepenalty}
881 %    Allow the breaking of a page in the middle of a paragraph.
882 %    \begin{macrocode}
883 % \interlinepenalty 0
884 %    \end{macrocode}
885 % \end{macro}
888 % \begin{macro}{\brokenpenalty}
889 %    We allow the breaking of a page after a hyphenated line.
890 % \changes{v1.1a}{1994/03/12}{Show correct default which is 100}
891 %    \begin{macrocode}
892 % \brokenpenalty 100
893 %</article|report|book>
894 %    \end{macrocode}
895 % \end{macro}
898 % \subsection{Page Layout}
900 %    All margin dimensions are measured from a point one inch from the
901 %    top and lefthand side of the page.
903 % \subsubsection{Vertical spacing}
905 % \begin{macro}{\headheight}
906 % \begin{macro}{\headsep}
907 % \begin{macro}{\topskip}
908 %    The |\headheight| is the height of the box that will contain the
909 %    running head. The |\headsep| is the distance between the bottom
910 %    of the running head and the top of the text. The |\topskip| is
911 %    the |\baselineskip| for the first line on a page; \LaTeX's output
912 %    routine will not work properly if it has the value 0pt, so do not
913 %    do that!
914 %    \begin{macrocode}
915 %<*10pt|11pt|12pt>
916 \setlength\headheight{12\p@}
917 %<!bk>\setlength\headsep   {25\p@}
918 %<10pt&bk>\setlength\headsep   {.25in}
919 %<11pt&bk>\setlength\headsep   {.275in}
920 %<12pt&bk>\setlength\headsep   {.275in}
921 %<10pt>\setlength\topskip   {10\p@}
922 %<11pt>\setlength\topskip   {11\p@}
923 %<12pt>\setlength\topskip   {12\p@}
924 %    \end{macrocode}
925 % \end{macro}
926 % \end{macro}
927 % \end{macro}
929 % \begin{macro}{\footskip}
930 %    The distance from the baseline of the box which contains the
931 %    running footer to the baseline of last line of text is controlled
932 %    by the |\footskip|.
933 %    \begin{macrocode}
934 %<!bk>\setlength\footskip{30\p@}
935 %<10pt&bk>\setlength\footskip{.35in}
936 %<11pt&bk>\setlength\footskip{.38in}
937 %<12pt&bk>\setlength\footskip{30\p@}
938 %    \end{macrocode}
939 % \end{macro}
941 % \begin{macro}{\maxdepth}
942 % \changes{v1.2k}{1994/05/06}{Added setting of \cs{maxdepth} and
943 %    \cs{@maxdepth}}
944 % \changes{v1.3j}{1995/08/16}{Take setting of
945 %    \cs{@maxdepth} out again}
946 %    The \TeX\ primitive register |\maxdepth| has a function that is
947 %    similar to that of |\topskip|. The register |\@maxdepth| should
948 %    always contain a copy of |\maxdepth|. This is achieved by setting
949 %    it internally at |\begin{document}|. In both plain \TeX\ and
950 %    \LaTeX~2.09 |\maxdepth| had a fixed value of \texttt{4pt}; in
951 %    native \LaTeX2e\ mode we let the value depend on the typesize. We
952 %    set it so that |\maxdepth| $+$ |\topskip| $=$ typesize $\times
953 %    1.5$. As it happens, in these classes |\topskip| is equal to the
954 %    typesize, therefore we set |\maxdepth| to half the value of
955 %    |\topskip|.
956 %    \begin{macrocode}
957 \if@compatibility \setlength\maxdepth{4\p@} \else
958 \setlength\maxdepth{.5\topskip} \fi
959 %    \end{macrocode}
960 % \end{macro}
962 % \subsubsection{The dimension of text}
964 % \begin{macro}{\textwidth}
965 %    When we are in compatibility mode we have to make sure that the
966 %    dimensions of the printed area are not different from what the
967 %    user was used to see.
969 %    \begin{macrocode}
970 \if@compatibility
971   \if@twocolumn
972     \setlength\textwidth{410\p@}
973   \else
974 %<10pt&!bk>    \setlength\textwidth{345\p@}
975 %<11pt&!bk>    \setlength\textwidth{360\p@}
976 %<12pt&!bk>    \setlength\textwidth{390\p@}
977 %<10pt&bk>    \setlength\textwidth{4.5in}
978 %<11pt&bk>    \setlength\textwidth{5in}
979 %<12pt&bk>    \setlength\textwidth{5in}
980   \fi
981 %    \end{macrocode}
982 %    When we are not in compatibility mode we can set some of the
983 %    dimensions differently, taking into account the paper size for
984 %    instance.
985 %    \begin{macrocode}
986 \else
987 %    \end{macrocode}
988 %    First, we calculate the maximum |\textwidth|, which we will allow
989 %    on the selected paper and store it in |\@tempdima|. Then we store
990 %    the length of a line with approximately 60--70 characters in
991 %    |\@tempdimb|. The values given are more or less suitable when
992 %    Computer Modern fonts are used.
993 % \changes{v1.1a}{1994/03/12}{Have old values for width in native mode}
994 %    \begin{macrocode}
995   \setlength\@tempdima{\paperwidth}
996   \addtolength\@tempdima{-2in}
997 %<10pt>  \setlength\@tempdimb{345\p@}
998 %<11pt>  \setlength\@tempdimb{360\p@}
999 %<12pt>  \setlength\@tempdimb{390\p@}
1000 %    \end{macrocode}
1002 %    Now we can set the |\textwidth|, depending on whether we will be
1003 %    setting one or two columns.
1005 %    In two column mode each \emph{column} shouldn't be wider than
1006 %    |\@tempdimb| (which could happen on \textsc{a3} paper for
1007 %    instance).
1008 %    \begin{macrocode}
1009   \if@twocolumn
1010     \ifdim\@tempdima>2\@tempdimb\relax
1011       \setlength\textwidth{2\@tempdimb}
1012     \else
1013       \setlength\textwidth{\@tempdima}
1014     \fi
1015 %    \end{macrocode}
1017 %    In one column mode the text should not be wider than the minimum
1018 %    of the paperwidth (minus 2 inches for the margins) and the
1019 %    maximum length of a line as defined by the number of characters.
1020 %    \begin{macrocode}
1021   \else
1022     \ifdim\@tempdima>\@tempdimb\relax
1023       \setlength\textwidth{\@tempdimb}
1024     \else
1025       \setlength\textwidth{\@tempdima}
1026     \fi
1027   \fi
1029 %    \end{macrocode}
1031 %    Here we modify the width of the text a little to be a whole
1032 %    number of points.
1033 %    \begin{macrocode}
1034 \if@compatibility\else
1035   \@settopoint\textwidth
1037 %    \end{macrocode}
1038 % \end{macro}
1040 % \begin{macro}{\textheight}
1041 %    Now that we have computed the width of the text, we have to take
1042 %    care of the height. The |\textheight| is the height of text
1043 %    (including footnotes and figures, excluding running head and
1044 %    foot).
1046 %    First make sure that the compatibility mode gets the same
1047 %    dimensions as we had with \LaTeX2.09. The number of lines was
1048 %    calculated as the floor of the old |\textheight| minus
1049 %    |\topskip|, divided by |\baselineskip| for |\normalsize|. The
1050 %    old value of |\textheight| was 528pt.
1052 %    \begin{macrocode}
1053 \if@compatibility
1054 %<10pt&!bk>  \setlength\textheight{43\baselineskip}
1055 %<10pt&bk>  \setlength\textheight{41\baselineskip}
1056 %<11pt>  \setlength\textheight{38\baselineskip}
1057 %<12pt>  \setlength\textheight{36\baselineskip}
1058 %    \end{macrocode}
1060 %    Again we compute this, depending on the papersize and depending
1061 %    on the baselineskip that is used, in order to have a whole number
1062 %    of lines on the page.
1063 %    \begin{macrocode}
1064 \else
1065   \setlength\@tempdima{\paperheight}
1066 %    \end{macrocode}
1068 %    We leave at least a 1 inch margin on the top and the bottom of
1069 %    the page.
1070 %    \begin{macrocode}
1071   \addtolength\@tempdima{-2in}
1072 %    \end{macrocode}
1074 %    We also have to leave room for the running headers and footers.
1075 %    \begin{macrocode}
1076   \addtolength\@tempdima{-1.5in}
1077 %    \end{macrocode}
1079 %    Then we divide the result by the current |\baselineskip| and
1080 %    store this in the count register |\@tempcnta|, which then
1081 %    contains the number of lines that fit on this page.
1082 %    \begin{macrocode}
1083   \divide\@tempdima\baselineskip
1084   \@tempcnta=\@tempdima
1085 %    \end{macrocode}
1087 %    From this we can calculate the height of the text.
1088 %    \begin{macrocode}
1089   \setlength\textheight{\@tempcnta\baselineskip}
1091 %    \end{macrocode}
1093 %    The first line on the page has a height of |\topskip|.
1094 %    \begin{macrocode}
1095 \addtolength\textheight{\topskip}
1096 %    \end{macrocode}
1097 % \end{macro}
1101 % \subsubsection{Margins}
1103 %    Most of the values of these parameters are now calculated, based
1104 %    on the papersize in use. In the calculations the |\marginparsep|
1105 %    needs to be taken into account so we give it its value first.
1107 % \begin{macro}{\marginparsep}
1108 % \begin{macro}{\marginparpush}
1109 %    The horizontal space between the main text and marginal notes is
1110 %    determined by |\marginparsep|, the minimum vertical separation
1111 %    between two marginal notes is controlled by |\marginparpush|.
1112 %    \begin{macrocode}
1113 \if@twocolumn
1114  \setlength\marginparsep {10\p@}
1115 \else
1116 %<10pt&!bk>  \setlength\marginparsep{11\p@}
1117 %<11pt&!bk>  \setlength\marginparsep{10\p@}
1118 %<12pt&!bk>  \setlength\marginparsep{10\p@}
1119 %<bk>  \setlength\marginparsep{7\p@}
1121 %<10pt|11pt>\setlength\marginparpush{5\p@}
1122 %<12pt>\setlength\marginparpush{7\p@}
1123 %    \end{macrocode}
1124 % \end{macro}
1125 % \end{macro}
1127 %    Now we can give the values for the other margin parameters. For
1128 %    native \LaTeXe, these are calculated.
1129 % \begin{macro}{\oddsidemargin}
1130 % \begin{macro}{\evensidemargin}
1131 % \begin{macro}{\marginparwidth}
1132 %    First we give the values for the compatibility mode.
1134 %    Values for two-sided printing:
1135 %    \begin{macrocode}
1136 \if@compatibility
1137 %<*bk>
1138 %<10pt>   \setlength\oddsidemargin   {.5in}
1139 %<11pt>   \setlength\oddsidemargin   {.25in}
1140 %<12pt>   \setlength\oddsidemargin   {.25in}
1141 %<10pt>   \setlength\evensidemargin  {1.5in}
1142 %<11pt>   \setlength\evensidemargin  {1.25in}
1143 %<12pt>   \setlength\evensidemargin  {1.25in}
1144 %<10pt>   \setlength\marginparwidth {.75in}
1145 %<11pt>   \setlength\marginparwidth {1in}
1146 %<12pt>   \setlength\marginparwidth {1in}
1147 %</bk>
1148 %<*!bk>
1149   \if@twoside
1150 %<10pt>     \setlength\oddsidemargin   {44\p@}
1151 %<11pt>     \setlength\oddsidemargin   {36\p@}
1152 %<12pt>     \setlength\oddsidemargin   {21\p@}
1153 %<10pt>     \setlength\evensidemargin  {82\p@}
1154 %<11pt>     \setlength\evensidemargin  {74\p@}
1155 %<12pt>     \setlength\evensidemargin  {59\p@}
1156 %<10pt>     \setlength\marginparwidth {107\p@}
1157 %<11pt>     \setlength\marginparwidth {100\p@}
1158 %<12pt>     \setlength\marginparwidth {85\p@}
1159 %    \end{macrocode}
1160 %    Values for one-sided printing:
1161 %    \begin{macrocode}
1162   \else
1163 %<10pt>     \setlength\oddsidemargin   {63\p@}
1164 %<11pt>     \setlength\oddsidemargin   {54\p@}
1165 %<12pt>     \setlength\oddsidemargin   {39.5\p@}
1166 %<10pt>     \setlength\evensidemargin  {63\p@}
1167 %<11pt>     \setlength\evensidemargin  {54\p@}
1168 %<12pt>     \setlength\evensidemargin  {39.5\p@}
1169 %<10pt>     \setlength\marginparwidth  {90\p@}
1170 %<11pt>     \setlength\marginparwidth  {83\p@}
1171 %<12pt>     \setlength\marginparwidth  {68\p@}
1172   \fi
1173 %</!bk>
1174 %    \end{macrocode}
1175 %    And values for two column mode:
1176 %    \begin{macrocode}
1177   \if@twocolumn
1178      \setlength\oddsidemargin  {30\p@}
1179      \setlength\evensidemargin {30\p@}
1180      \setlength\marginparwidth {48\p@}
1181   \fi
1182 %    \end{macrocode}
1184 %    When we are not in compatibility mode we can take the dimensions
1185 %    of the selected paper into account.
1187 %    The values for |\oddsidemargin| and |\marginparwidth| will be set
1188 %    depending on the status of the |\if@twoside|.
1190 %    If |@twoside| is true (which is always the case for book) we make
1191 %    the inner margin smaller than the outer one.
1192 %    \begin{macrocode}
1193 \else
1194   \if@twoside
1195     \setlength\@tempdima        {\paperwidth}
1196     \addtolength\@tempdima      {-\textwidth}
1197     \setlength\oddsidemargin    {.4\@tempdima}
1198     \addtolength\oddsidemargin  {-1in}
1199 %    \end{macrocode}
1200 %    The width of the margin for text is set to the remainder of the
1201 %    width except for a `real margin' of white space of width 0.4in.
1202 %    A check should perhaps be built in to ensure that the (text)
1203 %    margin width does not get too small!
1205 % \changes{v1.1a}{1994/03/12}{New algorithm for \cs{oddsidemargin}}
1206 % \changes{v1.1a}{1994/03/12}{New algorithm for \cs{marginparwidth}}
1207 % \changes{v1.2z}{1995/04/14}{Also take \cs{marginparsep} into account
1208 %    here}
1209 %    \begin{macrocode}
1210     \setlength\marginparwidth   {.6\@tempdima}
1211     \addtolength\marginparwidth {-\marginparsep}
1212     \addtolength\marginparwidth {-0.4in}
1213 %    \end{macrocode}
1214 %    For one-sided printing we center the text on the page, by
1215 %    calculating the difference between |\textwidth| and
1216 %    |\paperwidth|. Half of that difference is than used for
1217 %    the margin (thus |\oddsidemargin| is |1in| less).
1218 %    \begin{macrocode}
1219   \else
1220     \setlength\@tempdima        {\paperwidth}
1221     \addtolength\@tempdima      {-\textwidth}
1222     \setlength\oddsidemargin    {.5\@tempdima}
1223     \addtolength\oddsidemargin  {-1in}
1224     \setlength\marginparwidth   {.5\@tempdima}
1225     \addtolength\marginparwidth {-\marginparsep}
1226     \addtolength\marginparwidth {-0.4in}
1227     \addtolength\marginparwidth {-.4in}
1228   \fi
1229 %    \end{macrocode}
1230 %    With the above algorithm the |\marginparwidth| can come out quite
1231 %    large which we may not want.
1232 %    \begin{macrocode}
1233   \ifdim \marginparwidth >2in
1234      \setlength\marginparwidth{2in}
1235   \fi
1236 %    \end{macrocode}
1237 %    Having done these calculations we make them pt values.
1238 %    \begin{macrocode}
1239   \@settopoint\oddsidemargin
1240   \@settopoint\marginparwidth
1241 %    \end{macrocode}
1243 %    The |\evensidemargin| can now be computed from the values set
1244 %    above.
1245 % \changes{v1.0l}{1994/01/11}{Computing of \cs{evensidemargin}
1246 %    should only occur in compatibility mode}
1247 %    \begin{macrocode}
1248   \setlength\evensidemargin  {\paperwidth}
1249   \addtolength\evensidemargin{-2in}
1250   \addtolength\evensidemargin{-\textwidth}
1251   \addtolength\evensidemargin{-\oddsidemargin}
1252 %    \end{macrocode}
1253 %    Setting |\evensidemargin| to a full point value may produce a
1254 %    small error. However it will lie within the error range a
1255 %    doublesided printer of today's technology can accurately print.
1256 %    \begin{macrocode}
1257   \@settopoint\evensidemargin
1259 %    \end{macrocode}
1260 % \end{macro}
1261 % \end{macro}
1262 % \end{macro}
1264 % \begin{macro}{\topmargin}
1265 %    The |\topmargin| is the distance between the top of `the
1266 %    printable area'---which is 1 inch below the top of the
1267 %    paper--and the top of the box which contains the running head.
1269 %    It can now be computed from the values set above.
1270 %    \begin{macrocode}
1271 \if@compatibility
1272 %<!bk>  \setlength\topmargin{27pt}
1273 %<10pt&bk>  \setlength\topmargin{.75in}
1274 %<11pt&bk>  \setlength\topmargin{.73in}
1275 %<12pt&bk>  \setlength\topmargin{.73in}
1276 \else
1277   \setlength\topmargin{\paperheight}
1278   \addtolength\topmargin{-2in}
1279   \addtolength\topmargin{-\headheight}
1280   \addtolength\topmargin{-\headsep}
1281   \addtolength\topmargin{-\textheight}
1282   \addtolength\topmargin{-\footskip}     % this might be wrong!
1283 %    \end{macrocode}
1284 %    By changing the factor in the next line the complete page
1285 %    can be shifted vertically.
1286 % \changes{v1.2u}{1994/07/13}{Moved rounding of \cs{topmargin} to
1287 %    native mode}
1288 %    \begin{macrocode}
1289   \addtolength\topmargin{-.5\topmargin}
1290   \@settopoint\topmargin
1292 %    \end{macrocode}
1293 % \end{macro}
1296 % \subsubsection{Footnotes}
1298 % \begin{macro}{\footnotesep}
1299 %    |\footnotesep| is the height of the strut placed at the beginning
1300 %    of every footnote. It equals the  height of a normal
1301 %    |\footnotesize| strut in this
1302 %    class, thus no extra space occurs between footnotes.
1303 %    \begin{macrocode}
1304 %<10pt>\setlength\footnotesep{6.65\p@}
1305 %<11pt>\setlength\footnotesep{7.7\p@}
1306 %<12pt>\setlength\footnotesep{8.4\p@}
1307 %    \end{macrocode}
1308 % \end{macro}
1310 % \begin{macro}{\footins}
1311 %    |\skip\footins| is the space between the last line of the main
1312 %    text and the top of the first footnote.
1313 %    \begin{macrocode}
1314 %<10pt>\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
1315 %<11pt>\setlength{\skip\footins}{10\p@ \@plus 4\p@ \@minus 2\p@}
1316 %<12pt>\setlength{\skip\footins}{10.8\p@ \@plus 4\p@ \@minus 2\p@}
1317 %</10pt|11pt|12pt>
1318 %    \end{macrocode}
1319 % \end{macro}
1321 % \subsubsection{Float placement parameters}
1323 % All float parameters are given default values in the \LaTeXe{}
1324 % kernel. For this reason parameters that are not counters
1325 % need to be set with |\renewcommand|.
1327 % \paragraph{Limits for the placement of floating objects}
1329 % \begin{macro}{\c@topnumber}
1330 %    The \Lcount{topnumber} counter holds the maximum number of
1331 %    floats that can appear on the top of a text page.
1332 %    \begin{macrocode}
1333 %<*article|report|book>
1334 \setcounter{topnumber}{2}
1335 %    \end{macrocode}
1336 % \end{macro}
1338 % \begin{macro}{\topfraction}
1339 %    This indicates the maximum part of a text page that can be
1340 %    occupied by floats at the top.
1341 % \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with
1342 %    \cs{renewcommand}.  ASAJ.}
1343 %    \begin{macrocode}
1344 \renewcommand\topfraction{.7}
1345 %    \end{macrocode}
1346 % \end{macro}
1348 % \begin{macro}{\c@bottomnumber}
1349 %    The \Lcount{bottomnumber} counter holds the maximum number of
1350 %    floats that can appear on the bottom of a text page.
1351 %    \begin{macrocode}
1352 \setcounter{bottomnumber}{1}
1353 %    \end{macrocode}
1354 % \end{macro}
1356 % \begin{macro}{\bottomfraction}
1357 %    This indicates the maximum part of a text page that can be
1358 %    occupied by floats at the bottom.
1359 % \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with
1360 %    \cs{renewcommand}.  ASAJ.}
1361 %    \begin{macrocode}
1362 \renewcommand\bottomfraction{.3}
1363 %    \end{macrocode}
1364 % \end{macro}
1366 % \begin{macro}{\c@totalnumber}
1367 %    This indicates the maximum number of floats that can appear on
1368 %    any text page.
1369 %    \begin{macrocode}
1370 \setcounter{totalnumber}{3}
1371 %    \end{macrocode}
1372 % \end{macro}
1374 % \begin{macro}{\textfraction}
1375 %    This indicates the minimum part of a text page that has to be
1376 %    occupied by text.
1377 % \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with
1378 %    \cs{renewcommand}.  ASAJ.}
1379 %    \begin{macrocode}
1380 \renewcommand\textfraction{.2}
1381 %    \end{macrocode}
1382 % \end{macro}
1384 % \begin{macro}{\floatpagefraction}
1385 %    This indicates the minimum part of a page that has to be
1386 %    occupied by floating objects before a `float page' is produced.
1387 % \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with
1388 %    \cs{renewcommand}.  ASAJ.}
1389 %    \begin{macrocode}
1390 \renewcommand\floatpagefraction{.5}
1391 %    \end{macrocode}
1392 % \end{macro}
1394 % \begin{macro}{\c@dbltopnumber}
1395 %    The \Lcount{dbltopnumber} counter holds the maximum number of
1396 %    two column floats that can appear on the top of a two column text
1397 %    page.
1398 %    \begin{macrocode}
1399 \setcounter{dbltopnumber}{2}
1400 %    \end{macrocode}
1401 % \end{macro}
1403 % \begin{macro}{\dbltopfraction}
1404 %    This indicates the maximum part of a two column text page that
1405 %    can be occupied by two column floats at the top.
1406 % \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with
1407 %    \cs{renewcommand}.  ASAJ.}
1408 %    \begin{macrocode}
1409 \renewcommand\dbltopfraction{.7}
1410 %    \end{macrocode}
1411 % \end{macro}
1413 % \begin{macro}{\dblfloatpagefraction}
1414 %    This indicates the minimum part of a page that has to be
1415 %    occupied by two column wide floating objects before a `float
1416 %    page' is produced.
1417 % \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with
1418 %    \cs{renewcommand}.  ASAJ.}
1419 %    \begin{macrocode}
1420 \renewcommand\dblfloatpagefraction{.5}
1421 %</article|report|book>
1422 %    \end{macrocode}
1423 % \end{macro}
1425 % \paragraph{Floats on a text page}
1427 % \begin{macro}{\floatsep}
1428 % \begin{macro}{\textfloatsep}
1429 % \begin{macro}{\intextsep}
1430 %    When a floating object is placed on a page with text, these
1431 %    parameters control the separation between the float and the other
1432 %    objects on the page. These parameters are used for both
1433 %    one-column mode and single-column floats in two-column mode.
1435 %    |\floatsep| is the space between adjacent floats that are moved
1436 %    to the top or bottom of the text page.
1438 %    |\textfloatsep| is the space between the main text and floats
1439 %    at the top or bottom of the page.
1441 %    |\intextsep| is the space between in-text floats and the text.
1442 %    \begin{macrocode}
1443 %<*10pt>
1444 \setlength\floatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
1445 \setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
1446 \setlength\intextsep   {12\p@ \@plus 2\p@ \@minus 2\p@}
1447 %</10pt>
1448 %<*11pt>
1449 \setlength\floatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
1450 \setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
1451 \setlength\intextsep   {12\p@ \@plus 2\p@ \@minus 2\p@}
1452 %</11pt>
1453 %<*12pt>
1454 \setlength\floatsep    {12\p@ \@plus 2\p@ \@minus 4\p@}
1455 \setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
1456 \setlength\intextsep   {14\p@ \@plus 4\p@ \@minus 4\p@}
1457 %</12pt>
1458 %    \end{macrocode}
1459 % \end{macro}
1460 % \end{macro}
1461 % \end{macro}
1463 % \begin{macro}{\dblfloatsep}
1464 % \begin{macro}{\dbltextfloatsep}
1465 %    When floating objects that span the whole |\textwidth| are placed
1466 %    on a text page when we are in twocolumn mode the separation
1467 %    between the float and the text is controlled by |\dblfloatsep|
1468 %    and |\dbltextfloatsep|.
1470 %    |\dblfloatsep| is the space between adjacent floats that are moved
1471 %    to the top or bottom of the text page.
1473 %    |\dbltextfloatsep| is the space between the main text and floats
1474 %    at the top or bottom of the page.
1476 %    \begin{macrocode}
1477 %<*10pt>
1478 \setlength\dblfloatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
1479 \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
1480 %</10pt>
1481 %<*11pt>
1482 \setlength\dblfloatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
1483 \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
1484 %</11pt>
1485 %<*12pt>
1486 \setlength\dblfloatsep    {14\p@ \@plus 2\p@ \@minus 4\p@}
1487 \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
1488 %</12pt>
1489 %    \end{macrocode}
1490 % \end{macro}
1491 % \end{macro}
1493 % \paragraph{Floats on their own page or column}
1495 % \begin{macro}{\@fptop}
1496 % \begin{macro}{\@fpsep}
1497 % \begin{macro}{\@fpbot}
1498 %    When floating objects are placed on separate pages the layout of
1499 %    such pages is controlled by these parameters. At the top of the
1500 %    page |\@fptop| amount of stretchable whitespace is inserted, at
1501 %    the bottom of the page we get an |\@fpbot| amount of stretchable
1502 %    whitespace. Between adjacent floats the |\@fpsep| is inserted.
1504 %    These parameters are used for the placement of floating objects
1505 %    in one column mode, or in single column floats in two column
1506 %    mode.
1508 %    Note that at least one of the two parameters |\@fptop| and
1509 %    |\@fpbot| should contain a |plus ...fil| to allow filling the
1510 %    remaining empty space.
1511 %    \begin{macrocode}
1512 %<*10pt>
1513 \setlength\@fptop{0\p@ \@plus 1fil}
1514 \setlength\@fpsep{8\p@ \@plus 2fil}
1515 \setlength\@fpbot{0\p@ \@plus 1fil}
1516 %</10pt>
1517 %<*11pt>
1518 \setlength\@fptop{0\p@ \@plus 1fil}
1519 \setlength\@fpsep{8\p@ \@plus 2fil}
1520 \setlength\@fpbot{0\p@ \@plus 1fil}
1521 %</11pt>
1522 %<*12pt>
1523 \setlength\@fptop{0\p@ \@plus 1fil}
1524 \setlength\@fpsep{10\p@ \@plus 2fil}
1525 \setlength\@fpbot{0\p@ \@plus 1fil}
1526 %</12pt>
1527 %    \end{macrocode}
1528 % \end{macro}
1529 % \end{macro}
1530 % \end{macro}
1532 % \begin{macro}{\@dblfptop}
1533 % \begin{macro}{\@dblfpsep}
1534 % \begin{macro}{\@dblfpbot}
1535 %    Double column floats in two column mode are handled with similar
1536 %    parameters.
1537 %    \begin{macrocode}
1538 %<*10pt>
1539 \setlength\@dblfptop{0\p@ \@plus 1fil}
1540 \setlength\@dblfpsep{8\p@ \@plus 2fil}
1541 \setlength\@dblfpbot{0\p@ \@plus 1fil}
1542 %</10pt>
1543 %<*11pt>
1544 \setlength\@dblfptop{0\p@ \@plus 1fil}
1545 \setlength\@dblfpsep{8\p@ \@plus 2fil}
1546 \setlength\@dblfpbot{0\p@ \@plus 1fil}
1547 %</11pt>
1548 %<*12pt>
1549 \setlength\@dblfptop{0\p@ \@plus 1fil}
1550 \setlength\@dblfpsep{10\p@ \@plus 2fil}
1551 \setlength\@dblfpbot{0\p@ \@plus 1fil}
1552 %</12pt>
1553 %<*article|report|book>
1554 %    \end{macrocode}
1555 % \end{macro}
1556 % \end{macro}
1557 % \end{macro}
1559 % \subsection{Page Styles}
1561 %    The page style \pstyle{foo} is defined by defining the command
1562 %    |\ps@foo|.   This command should make only local definitions.
1563 %    There should be no stray spaces in the definition, since they
1564 %    could lead to mysterious extra spaces in the output (well, that's
1565 %    something that should be always avoided).
1567 % \begin{macro}{\@evenhead}
1568 % \begin{macro}{\@oddhead}
1569 % \begin{macro}{\@evenfoot}
1570 % \begin{macro}{\@oddfoot}
1571 %    The |\ps@...| command defines the macros |\@oddhead|,
1572 %    |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running
1573 %    heads and feet---e.g., |\@oddhead| is the macro to produce the
1574 %    contents of the heading box for odd-numbered pages.  It is called
1575 %    inside an |\hbox| of width |\textwidth|.
1576 % \end{macro}
1577 % \end{macro}
1578 % \end{macro}
1579 % \end{macro}
1581 % \subsubsection{Marking conventions}
1583 %    To make headings determined by the sectioning commands, the page
1584 %    style defines the commands |\chaptermark|, |\sectionmark|,
1585 %    \ldots,\\
1586 %     where |\chaptermark{|\meta{TEXT}|}| is called by
1587 %    |\chapter| to set a mark, and so on.
1589 %    The |\...mark| commands and the |\...head| macros are defined
1590 %    with the help of the following macros.  (All the |\...mark|
1591 %    commands should be initialized to no-ops.)
1593 %    \LaTeX{} extends \TeX's |\mark| facility by producing two kinds
1594 %    of marks, a `left' and a `right' mark, using the following
1595 %    commands:
1596 %    \begin{flushleft}
1597 %     |\markboth{|\meta{LEFT}|}{|\meta{RIGHT}|}|: Adds both marks.
1599 %     |\markright{|\meta{RIGHT}|}|: Adds a `right' mark.
1601 %     |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
1602 %                  or |\@evenfoot| macros, it gets the current `left'
1603 %                  mark.  |\leftmark| works like \TeX's |\botmark|
1604 %                  command.
1606 %     |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
1607 %                   or  |\@evenfoot| macros, it gets the current
1608 %                   `right' mark. |\rightmark| works like \TeX's
1609 %                   |\firstmark| command.
1610 %    \end{flushleft}
1612 %    The marking commands work reasonably well for right marks
1613 %    `numbered within' left marks---e.g., the left mark is changed by a
1614 %    |\chapter| command and the right mark is changed by a |\section|
1615 %    command.  However, it does produce somewhat anomalous results if
1616 %    two |\markboth|'s occur on the same page.
1619 %    Commands like |\tableofcontents| that should set the marks in some
1620 %    page styles use a |\@mkboth| command, which is |\let| by the
1621 %    pagestyle command (|\ps@...|)  to |\markboth| for setting the
1622 %    heading or to |\@gobbletwo| to do nothing.
1625 % \subsubsection{Defining the page styles}
1626 % \label{sec:classes:pagestyle}
1628 %    The pagestyles \pstyle{empty} and \pstyle{plain} are defined in
1629 %    \file{latex.dtx}.
1631 % \begin{macro}{\ps@headings}
1632 %    The definition of the page style \pstyle{headings} has to be
1633 %    different for two sided printing than it is for one sided
1634 %    printing.
1636 %    \begin{macrocode}
1637 \if@twoside
1638   \def\ps@headings{%
1639 %    \end{macrocode}
1640 %    The running feet are empty in this page style, the running head
1641 %    contains the page number and one of the marks.
1642 %    \begin{macrocode}
1643       \let\@oddfoot\@empty\let\@evenfoot\@empty
1644       \def\@evenhead{\thepage\hfil\slshape\leftmark}%
1645       \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
1646 %    \end{macrocode}
1648 %    When using this page style, the contents of the running head is
1649 %    determined by the chapter and section titles. So we |\let|
1650 %    |\@mkboth| to |\markboth|.
1651 %    \begin{macrocode}
1652       \let\@mkboth\markboth
1653 %    \end{macrocode}
1655 %    For the article document class we define |\sectionmark| to clear
1656 %    the right mark and put the number of the section (when it is
1657 %    numbered) and its title in the left mark. The rightmark is set by
1658 %    |\subsectionmark| to contain the subsection titles.
1660 %    Note the use of |##1| for the parameter of the |\sectionmark|
1661 %    command, which will be defined when |\ps@headings| is executed.
1663 % \changes{v1.2z}{1995/04/03}{Removed extra dot after \cs{thesection}
1664 %    (PR 1519)}
1665 % \changes{v1.3c}{1995/05/25}{Replace \cs{hskip}
1666 %    \texttt{1em}\cs{relax} with \cs{quad}}
1667 %    \begin{macrocode}
1668 %<*article>
1669     \def\sectionmark##1{%
1670       \markboth {\MakeUppercase{%
1671         \ifnum \c@secnumdepth >\z@
1672           \thesection\quad
1673         \fi
1674         ##1}}{}}%
1675     \def\subsectionmark##1{%
1676       \markright {%
1677         \ifnum \c@secnumdepth >\@ne
1678           \thesubsection\quad
1679         \fi
1680         ##1}}}
1681 %</article>
1682 %    \end{macrocode}
1684 %    In the report and book document classes we use the |\chaptermark|
1685 %    and |\sectionmark| macros to fill the running heads.
1687 %    Note the use of |##1| for the parameter of the |\chaptermark|
1688 %    command, which will be defined when |\ps@headings| is executed.
1690 %    \begin{macrocode}
1691 %<*report|book>
1692     \def\chaptermark##1{%
1693       \markboth {\MakeUppercase{%
1694         \ifnum \c@secnumdepth >\m@ne
1695 %<book>          \if@mainmatter
1696             \@chapapp\ \thechapter. \ %
1697 %<book>          \fi
1698         \fi
1699         ##1}}{}}%
1700     \def\sectionmark##1{%
1701       \markright {\MakeUppercase{%
1702         \ifnum \c@secnumdepth >\z@
1703           \thesection. \ %
1704         \fi
1705         ##1}}}}
1706 %</report|book>
1707 %    \end{macrocode}
1709 %    The definition of |\ps@headings| for one sided printing can be
1710 %    much simpler, because we treat even and odd pages the same.
1711 %    Therefore we don't need to define |\@even...|.
1712 %    \begin{macrocode}
1713 \else
1714   \def\ps@headings{%
1715     \let\@oddfoot\@empty
1716     \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
1717     \let\@mkboth\markboth
1718 %    \end{macrocode}
1719 %    We use |\markright| now instead of |\markboth| as we did for two
1720 %    sided printing.
1721 %    \begin{macrocode}
1722 %<*article>
1723     \def\sectionmark##1{%
1724       \markright {\MakeUppercase{%
1725         \ifnum \c@secnumdepth >\m@ne
1726           \thesection\quad
1727         \fi
1728         ##1}}}}
1729 %</article>
1730 %    \end{macrocode}
1732 %    \begin{macrocode}
1733 %<*report|book>
1734     \def\chaptermark##1{%
1735       \markright {\MakeUppercase{%
1736         \ifnum \c@secnumdepth >\m@ne
1737 %<book>          \if@mainmatter
1738             \@chapapp\ \thechapter. \ %
1739 %<book>          \fi
1740         \fi
1741         ##1}}}}
1742 %</report|book>
1744 %    \end{macrocode}
1745 % \end{macro}
1747 % \begin{macro}{\ps@myheadings}
1748 %    The definition of the page style \pstyle{myheadings} is fairly
1749 %    simple because the user determines the contents of the running
1750 %    head himself by using the |\markboth| and |\markright| commands.
1752 %    \begin{macrocode}
1753 \def\ps@myheadings{%
1754     \let\@oddfoot\@empty\let\@evenfoot\@empty
1755     \def\@evenhead{\thepage\hfil\slshape\leftmark}%
1756     \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
1757 %    \end{macrocode}
1759 %    We have to make sure that the marking commands that are used by
1760 %    the chapter and section headings are disabled. We do this
1761 %    |\let|ting them to a macro that gobbles its argument(s).
1762 %    \begin{macrocode}
1763     \let\@mkboth\@gobbletwo
1764 %<!article>    \let\chaptermark\@gobble
1765     \let\sectionmark\@gobble
1766 %<article>    \let\subsectionmark\@gobble
1767     }
1768 %    \end{macrocode}
1769 % \end{macro}
1771 % \section{Document Markup}
1773 % \subsection{The title}
1775 % \begin{macro}{\title}
1776 % \begin{macro}{\author}
1777 % \begin{macro}{\date}
1778 %    These three macros are provided by \file{latex.dtx} to provide
1779 %    information about the title, author(s) and date of the document.
1780 %    The information is stored away in internal control sequences.
1781 %    It is the task of the |\maketitle| command to use the
1782 %    information provided. The definitions of these macros are shown
1783 %    here for information.
1784 %    \begin{macrocode}
1785 % \newcommand*{\title}[1]{\gdef\@title{#1}}
1786 % \newcommand*{\author}[1]{\gdef\@author{#1}}
1787 % \newcommand*{\date}[1]{\gdef\@date{#1}}
1788 %    \end{macrocode}
1789 %    The |\date| macro gets today's date by default.
1790 %    \begin{macrocode}
1791 % \date{\today}
1792 %    \end{macrocode}
1793 % \end{macro}
1794 % \end{macro}
1795 % \end{macro}
1797 % \begin{macro}{\maketitle}
1798 %    The definition of |\maketitle| depends on whether a separate
1799 %    title page is made. This is the default for the report and book
1800 %    document classes, but for the article class it is optional.
1802 %    When we are making a title page, we locally redefine
1803 %    |\footnotesize| and |footnoterule| to change the appearance of
1804 %    the footnotes that are produced by the |\thanks| command;
1805 %    these changes affect all footnotes.
1806 % \changes{v1.3o}{1995/11/02}{(CAR) Make \cs{footnote} always work in
1807 %      title, etc}
1808 %    \begin{macrocode}
1809   \if@titlepage
1810   \newcommand\maketitle{\begin{titlepage}%
1811   \let\footnotesize\small
1812   \let\footnoterule\relax
1813   \let \footnote \thanks
1814 %    \end{macrocode}
1815 %    We center the entire title vertically; the centering is set off a
1816 %    little by adding a |\vskip|. (In compatibility mode the pagenumber
1817 %    is set to 0 by the titlepage environment to keep the behaviour
1818 %    of \LaTeX\ 2.09 style files.)
1819 % \changes{v1.0g}{1993/12/09}{Removed the setting of the page number,
1820 %    when not in compatibility mode}
1821 % \changes{v1.2c}{1994/03/17}{Removed setting of page number, now done
1822 %    in titlepage environment}
1823 %    \begin{macrocode}
1824   \null\vfil
1825   \vskip 60\p@
1826 %    \end{macrocode}
1827 %    Then we set the title, in a |\LARGE| font; leave a little space
1828 %    and set the author(s) in a |\large| font. We do this inside a
1829 %    tabular environment to get them in a single column.
1830 %    Before the date we leave a little whitespace again.
1831 %    \begin{macrocode}
1832   \begin{center}%
1833     {\LARGE \@title \par}%
1834     \vskip 3em%
1835     {\large
1836      \lineskip .75em%
1837       \begin{tabular}[t]{c}%
1838         \@author
1839       \end{tabular}\par}%
1840       \vskip 1.5em%
1841     {\large \@date \par}%       % Set date in \large size.
1842   \end{center}\par
1843 %    \end{macrocode}
1844 %    Then we call |\@thanks| to print the information that goes into
1845 %    the footnote and finish the page.
1846 %    \begin{macrocode}
1847   \@thanks
1848   \vfil\null
1849   \end{titlepage}%
1850 %    \end{macrocode}
1851 %    We reset the \Lcount{footnote} counter, disable |\thanks| and
1852 %    |\maketitle| and save some storage space by emptying the internal
1853 %    information macros.
1854 % \changes{v1.3j}{1995/08/16}{use \cs{let} to save space}
1855 % \changes{v1.3n}{1995/10/29}{Empty \cs{@date} as well}
1856 %    \begin{macrocode}
1857   \setcounter{footnote}{0}%
1858   \global\let\thanks\relax
1859   \global\let\maketitle\relax
1860   \global\let\@thanks\@empty
1861   \global\let\@author\@empty
1862   \global\let\@date\@empty
1863   \global\let\@title\@empty
1864 %    \end{macrocode}
1865 %    After the title is set the declaration commands |\title|, etc.\
1866 %    can vanish.
1867 %    The definition of |\and| makes only sense within the argument of
1868 %    |\author| so this can go as well.
1869 % \changes{v1.3k}{1995/08/27}{Disable \cs{title} and similar decls}
1870 %    \begin{macrocode}
1871   \global\let\title\relax
1872   \global\let\author\relax
1873   \global\let\date\relax
1874   \global\let\and\relax
1876 %    \end{macrocode}
1877 %    When the title is not on a page of its own, the layout of the
1878 %    title is a little different. We use symbols to mark the footnotes
1879 %    and we have to deal with two column documents.
1881 %    Therefore we first start a new group to keep changes local. Then
1882 %    we redefine |\thefootnote| to use |\fnsymbol|; and change
1883 %    |\@makefnmark| so that footnotemarks have zero width (to make the
1884 %    centering of the author names look better).
1885 % \changes{v1.2s}{1994/06/02}{Reset \cs{@makefntext}}
1886 % \changes{v1.3a}{1995/05/17}{Use \cs{@makefnmark} in definition of
1887 %    \cs{@makefntext}}
1888 % \changes{v1.3g}{1995/06/26}{Fix definition of \cs{@makefnmark} and
1889 %    \cs{@makefntext} to a) work and b) without using math}
1890 %    \begin{macrocode}
1891 \else
1892 \newcommand\maketitle{\par
1893   \begingroup
1894     \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
1895     \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
1896     \long\def\@makefntext##1{\parindent 1em\noindent
1897             \hb@xt@1.8em{%
1898                 \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
1899 %    \end{macrocode}
1900 %    If this is a twocolumn document we start a new page in twocolumn
1901 %    mode, with the title set to the full width of the text. The
1902 %    actual printing of the title information is left to
1903 %    |\@maketitle|.
1904 % \changes{v1.2k}{1994/05/06}{Added check on number of columns in use
1905 %    locally}
1906 %    \begin{macrocode}
1907     \if@twocolumn
1908       \ifnum \col@number=\@ne
1909         \@maketitle
1910       \else
1911         \twocolumn[\@maketitle]%
1912       \fi
1913     \else
1914 %    \end{macrocode}
1915 %    When this is not a twocolumn document we just start a new page,
1916 %    prevent floating objects from appearing on the top of this page
1917 %    and print the title information.
1918 %    \begin{macrocode}
1919       \newpage
1920       \global\@topnum\z@   % Prevents figures from going at top of page.
1921       \@maketitle
1922     \fi
1923 %    \end{macrocode}
1924 %    This page gets a \pstyle{plain} layout. We call |\@thanks| to
1925 %    produce the footnotes.
1926 %    \begin{macrocode}
1927     \thispagestyle{plain}\@thanks
1928 %    \end{macrocode}
1929 %    Now we can close the group, reset the \Lcount{footnote} counter,
1930 %    disable |\thanks|, |\maketitle| and |\@maketitle| and save some
1931 %    storage space by emptying the internal information macros.
1932 % \changes{v1.3j}{1995/08/16}{use \cs{let} to save space}
1933 % \changes{v1.3k}{1995/08/27}{Disable \cs{title} and similar decls}
1934 % \changes{v1.3n}{1995/10/29}{Empty \cs{@date} as well}
1935 %    \begin{macrocode}
1936   \endgroup
1937   \setcounter{footnote}{0}%
1938   \global\let\thanks\relax
1939   \global\let\maketitle\relax
1940   \global\let\@maketitle\relax
1941   \global\let\@thanks\@empty
1942   \global\let\@author\@empty
1943   \global\let\@date\@empty
1944   \global\let\@title\@empty
1945   \global\let\title\relax
1946   \global\let\author\relax
1947   \global\let\date\relax
1948   \global\let\and\relax
1950 %    \end{macrocode}
1951 % \end{macro}
1953 % \begin{macro}{\@maketitle}
1954 %    This macro takes care of formatting the title information when we
1955 %    have no separate title page.
1957 %    We always start a new page, leave some white space and center the
1958 %    information. The title is set in a |\LARGE| font, the author
1959 %    names and the date in a |\large| font.
1960 % \changes{v1.3o}{1995/11/02}{(CAR) Make \cs{footnote} always work in
1961 %      title, etc}
1962 %    \begin{macrocode}
1963 \def\@maketitle{%
1964   \newpage
1965   \null
1966   \vskip 2em%
1967   \begin{center}%
1968   \let \footnote \thanks
1969     {\LARGE \@title \par}%
1970     \vskip 1.5em%
1971     {\large
1972       \lineskip .5em%
1973       \begin{tabular}[t]{c}%
1974         \@author
1975       \end{tabular}\par}%
1976     \vskip 1em%
1977     {\large \@date}%
1978   \end{center}%
1979   \par
1980   \vskip 1.5em}
1982 %    \end{macrocode}
1983 % \end{macro}
1985 % \subsection{Chapters and Sections}
1987 % \subsubsection{Building blocks} The definitions in this part of the
1988 %    class file make use of two internal macros, |\@startsection| and
1989 %    |\secdef|. To understand
1990 %    what is going on here, we describe their syntax.
1992 %    The macro |\@startsection| has 6 required arguments, optionally
1993 %    followed by  a $*$, an optional argument and a required argument:
1995 %    |\@startsection|\meta{name}\meta{level}\meta{indent}^^A
1996 %                    \meta{beforeskip}\meta{afterskip}\meta{style}
1997 %            optional *\\
1998 %    \null\hphantom{\bslash @startsection}^^A
1999 %            |[|\meta{altheading}|]|\meta{heading}
2001 %    It is a generic command to start a section, the arguments have
2002 %    the following meaning:
2004 %    \begin{description}
2005 %    \item[\meta{name}] The name of the user level command, e.g.,
2006 %          `section'.
2007 %    \item[\meta{level}] A number, denoting the depth of the section
2008 %          -- e.g., chapter=1, section = 2, etc.  A section number
2009 %          will be printed if and only if \meta{level} $<=$  the value
2010 %          of the \Lcount{secnumdepth} counter.
2011 %    \item[\meta{indent}] The indentation of the heading from the left
2012 %          margin
2013 %    \item[\meta{beforeskip}] The absolute value of this argument
2014 %          gives the skip to leave above the heading. If it is
2015 %          negative, then the paragraph indent of the text following
2016 %          the heading is suppressed.
2017 %    \item[\meta{afterskip}] If positive, this gives the skip to leave
2018 %          below the heading, else it gives the skip to leave to the
2019 %          right of a run-in heading.
2020 %    \item[\meta{style}] Commands to set the style of the heading.
2021 %    \item[$*$] When this is missing the heading is numbered and the
2022 %          corresponding counter is incremented.
2023 %    \item[\meta{altheading}] Gives an alternative heading to use in
2024 %          the table of contents and in the running heads. This should
2025 %          not be present when the $*$ form is used.
2026 %    \item[\meta{heading}] The heading of the new section.
2027 %    \end{description}
2028 %  A sectioning command is normally defined to |\@startsection| and
2029 %  its first six arguments.
2031 %    The macro |\secdef| can be used when a sectioning command is
2032 %    defined without using |\@startsection|. It has two arguments:
2034 %    |\secdef|\meta{unstarcmds}\meta{starcmds}
2036 %    \begin{description}
2037 %    \item[\meta{unstarcmds}] Used for the normal form of the
2038 %          sectioning command.
2039 %    \item[\meta{starcmds}] Used for the $*$-form of the
2040 %          sectioning command.
2041 %    \end{description}
2043 %    You can use |\secdef| as follows:
2044 % \begin{verbatim}
2045 %       \def\chapter { ... \secdef \CMDA \CMDB }
2046 %       \def\CMDA    [#1]#2{ ... }  % Command to define
2047 %                                   % \chapter[...]{...}
2048 %       \def\CMDB    #1{ ... }      % Command to define
2049 %                                   % \chapter*{...}
2050 % \end{verbatim}
2052 % \subsubsection{Mark commands}
2054 % \begin{macro}{\chaptermark}
2055 % \begin{macro}{\sectionmark}
2056 % \begin{macro}{\subsectionmark}
2057 % \begin{macro}{\subsubsectionmark}
2058 % \begin{macro}{\paragraphmark}
2059 % \begin{macro}{\subparagraphmark}
2060 %    Default initializations of |\...mark| commands.  These commands
2061 %    are used in the definition of the page styles (see
2062 %    section~\ref{sec:classes:pagestyle}) Most of them are already defined by
2063 %    \file{latex.dtx}, so they are only shown here.
2065 %    \begin{macrocode}
2066 %<!article>\newcommand*\chaptermark[1]{}
2067 % \newcommand*\sectionmark[1]{}
2068 % \newcommand*\subsectionmark[1]{}
2069 % \newcommand*\subsubsectionmark[1]{}
2070 % \newcommand*\paragraphmark[1]{}
2071 % \newcommand*\subparagraphmark[1]{}
2072 %    \end{macrocode}
2073 % \end{macro}
2074 % \end{macro}
2075 % \end{macro}
2076 % \end{macro}
2077 % \end{macro}
2078 % \end{macro}
2080 % \subsubsection{Define Counters}
2082 % \begin{macro}{\c@secnumdepth}
2083 %    The value of the counter \Lcount{secnumdepth} gives the depth of
2084 %    the highest-level sectioning command that is to produce section
2085 %    numbers.
2086 %    \begin{macrocode}
2087 %<article>\setcounter{secnumdepth}{3}
2088 %<!article>\setcounter{secnumdepth}{2}
2089 %    \end{macrocode}
2090 % \end{macro}
2092 % \begin{macro}{\c@part}
2093 % \begin{macro}{\c@chapter}
2094 % \begin{macro}{\c@section}
2095 % \begin{macro}{\c@subsection}
2096 % \begin{macro}{\c@subsubsection}
2097 % \begin{macro}{\c@paragraph}
2098 % \begin{macro}{\c@subparagraph}
2099 %    These counters are used for the section numbers. The macro\\
2100 %    |\newcounter{|\meta{newctr}|}[|\meta{oldctr}|]|\\
2101 %     defines\meta{newctr} to be a counter, which is reset to zero when
2102 %    counter \meta{oldctr} is stepped. Counter \meta{oldctr} must
2103 %    already be defined.
2105 %    \begin{macrocode}
2106 \newcounter {part}
2107 %<article>\newcounter {section}
2108 %<*report|book>
2109 \newcounter {chapter}
2110 \newcounter {section}[chapter]
2111 %</report|book>
2112 \newcounter {subsection}[section]
2113 \newcounter {subsubsection}[subsection]
2114 \newcounter {paragraph}[subsubsection]
2115 \newcounter {subparagraph}[paragraph]
2116 %    \end{macrocode}
2117 % \end{macro}
2118 % \end{macro}
2119 % \end{macro}
2120 % \end{macro}
2121 % \end{macro}
2122 % \end{macro}
2123 % \end{macro}
2125 % \begin{macro}{\thepart}
2126 % \begin{macro}{\thechapter}
2127 % \begin{macro}{\thesection}
2128 % \begin{macro}{\thesubsection}
2129 % \begin{macro}{\thesubsubsection}
2130 % \begin{macro}{\theparagraph}
2131 % \begin{macro}{\thesubparagraph}
2132 %    For any counter \Lcount{CTR}, |\theCTR| is a macro that defines
2133 %    the printed version of counter \Lcount{CTR}.  It is defined in
2134 %    terms of the following macros:
2136 %    |\arabic{|\Lcount{COUNTER}|}| prints the value of
2137 %    \Lcount{COUNTER} as an arabic numeral.
2139 %    |\roman{|\Lcount{COUNTER}|}| prints the value of
2140 %    \Lcount{COUNTER} as a lowercase roman numberal.
2142 %    |\Roman{|\Lcount{COUNTER}|}| prints the value of
2143 %    \Lcount{COUNTER} as an uppercase roman numberal.
2145 %    |\alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
2146 %    as a lowercase letter: $1 =$~a, $2 =$~ b, etc.
2148 %    |\Alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
2149 %    as an uppercase letter: $1 =$~A, $2 =$~B, etc.
2151 %    Actually to save space the internal counter repesentations
2152 %    and the commands operating on those are used.
2153 %    \begin{macrocode}
2154 \renewcommand \thepart {\@Roman\c@part}
2155 %<article>\renewcommand \thesection {\@arabic\c@section}
2156 %<*report|book>
2157 \renewcommand \thechapter {\@arabic\c@chapter}
2158 \renewcommand \thesection {\thechapter.\@arabic\c@section}
2159 %</report|book>
2160 \renewcommand\thesubsection   {\thesection.\@arabic\c@subsection}
2161 \renewcommand\thesubsubsection{\thesubsection.\@arabic\c@subsubsection}
2162 \renewcommand\theparagraph    {\thesubsubsection.\@arabic\c@paragraph}
2163 \renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}
2164 %    \end{macrocode}
2165 % \end{macro}
2166 % \end{macro}
2167 % \end{macro}
2168 % \end{macro}
2169 % \end{macro}
2170 % \end{macro}
2171 % \end{macro}
2173 % \begin{macro}{\@chapapp}
2174 %    |\@chapapp| is initially defined to be `|\chaptername|'. The
2175 %    |\appendix| command redefines it to be `|\appendixname|'.
2177 %    \begin{macrocode}
2178 %<report|book>\newcommand\@chapapp{\chaptername}
2179 %    \end{macrocode}
2180 % \end{macro}
2182 %  \subsubsection{Front Matter, Main Matter, and Back Matter}
2184 %    A book contains these three (logical) sections. The switch
2185 %    |\@mainmatter| is true iff we are processing Main Matter.  When
2186 %    this switch is false, the |\chapter| command does not print
2187 %    chapter numbers.
2189 %    Here we define the commands that start these sections.
2190 %  \begin{macro}{\frontmatter}
2191 %    This command starts Roman page numbering and turns off chapter
2192 %    numbering.  Since this restarts the page numbering from 1, it
2193 %    should also ensure that a recto page is used.
2194 % \changes{v1.3r}{1996/05/26}{Make this command react to the option
2195 %    \texttt{openany}}
2196 % \changes{v1.3y}{1998/05/05}{Two years on: Make this command not
2197 %    react to the option \texttt{openany} as this makes the
2198 %    verso/recto numbering wrong: see pr/2754 for discussion}
2199 %    \begin{macrocode}
2200 %<*book>
2201 \newcommand\frontmatter{%
2202 %   \if@openright
2203     \cleardoublepage
2204 %   \else
2205 %     \clearpage
2206 %   \fi
2207   \@mainmatterfalse
2208   \pagenumbering{roman}}
2209 %    \end{macrocode}
2210 %  \end{macro}
2212 %  \begin{macro}{\mainmatter}
2213 %    This command clears the page, starts arabic page numbering and
2214 %    turns on chapter numbering.  Since this restarts the page numbering
2215 %    from 1, it should also ensure that a recto page is used.
2216 % \changes{v1.3r}{1996/05/26}{Make this command react to the option
2217 %    \texttt{openany}}
2218 % \changes{v1.3y}{1998/05/05}{Two years on: Make this command not
2219 %    react to the option \texttt{openany} as this makes the
2220 %    verso/recto numbering wrong: see pr/2754 for discussion}
2221 %    \begin{macrocode}
2222 \newcommand\mainmatter{%
2223 %   \if@openright
2224     \cleardoublepage
2225 %   \else
2226 %     \clearpage
2227 %   \fi
2228   \@mainmattertrue
2229   \pagenumbering{arabic}}
2230 %    \end{macrocode}
2231 %  \end{macro}
2233 %  \begin{macro}{\backmatter}
2234 %    This clears the page, turns off chapter numbering and leaves page
2235 %    numbering unchanged.
2236 %    \begin{macrocode}
2237 \newcommand\backmatter{%
2238   \if@openright
2239     \cleardoublepage
2240   \else
2241     \clearpage
2242   \fi
2243   \@mainmatterfalse}
2244 %</book>
2245 %    \end{macrocode}
2246 %  \end{macro}
2248 % \subsubsection{Parts}
2250 % \begin{macro}{\part}
2251 %    The command to start a new part of our document.
2253 %    In the article class the definition of |\part| is rather simple;
2254 %    we start a new paragraph, add a little white space, suppress the
2255 %    indentation of the first paragraph and make use of |\secdef|.
2256 %    As in other sectioning commands (cf.\ |\@startsection| in the
2257 %    {\LaTeXe} kernel), we need to check the |@noskipsec| switch and
2258 %    force horizontal mode if it is set.
2259 % \changes{v1.4a}{1999/01/07}{Check \texttt{@noskipsec} switch and
2260 %      possibly force horizontal mode; see PR/2889.}
2261 %    \begin{macrocode}
2262 %<*article>
2263 \newcommand\part{%
2264    \if@noskipsec \leavevmode \fi
2265    \par
2266    \addvspace{4ex}%
2267    \@afterindentfalse
2268    \secdef\@part\@spart}
2269 %</article>
2270 %    \end{macrocode}
2272 %    For the report and book classes we things a bit different.
2274 %    We start a new (righthand) page and use the \pstyle{plain}
2275 %    pagestyle.
2276 % \changes{v1.3r}{1996/05/26}{Make this command react to the option
2277 %    \texttt{openany}}
2278 %    \begin{macrocode}
2279 %<*report|book>
2280 \newcommand\part{%
2281   \if@openright
2282     \cleardoublepage
2283   \else
2284     \clearpage
2285   \fi
2286   \thispagestyle{plain}%
2287 %    \end{macrocode}
2288 %    When we are making a two column document, this will be a one
2289 %    column page. We use |@tempswa| to remember to switch back to two
2290 %    columns.
2291 %    \begin{macrocode}
2292   \if@twocolumn
2293     \onecolumn
2294     \@tempswatrue
2295   \else
2296     \@tempswafalse
2297   \fi
2298 %    \end{macrocode}
2299 %    We need an empty box to prevent the fil glue from disappearing.
2300 % \changes{v1.3j}{1995/08/16}{Replace \cs{hbox} by \cs{null}}
2301 %    \begin{macrocode}
2302   \null\vfil
2303 %    \end{macrocode}
2304 %    Here we use |\secdef| to indicate which commands to use to make
2305 %    the actual heading.
2306 %    \begin{macrocode}
2307   \secdef\@part\@spart}
2308 %</report|book>
2309 %    \end{macrocode}
2311 % \begin{macro}{\@part}
2312 %    This macro does the actual formatting of the title of the part.
2313 %    Again the macro is differently defined for the article document
2314 %    class than for the document classes report and book.
2316 %    When \Lcount{secnumdepth} is larger than $-1$ for the
2317 %    document class article, we have a numbered
2318 %    part, otherwise it is unnumbered.
2319 %    \begin{macrocode}
2320 %<*article>
2321 \def\@part[#1]#2{%
2322     \ifnum \c@secnumdepth >\m@ne
2323       \refstepcounter{part}%
2324       \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
2325     \else
2326       \addcontentsline{toc}{part}{#1}%
2327     \fi
2328 %    \end{macrocode}
2329 %    We  print the title flush left in the article class.
2330 %    Also we prevent breaking between lines and reset the font.
2331 % \changes{v1.3c}{1995/05/25}{replace \cs{reset@font} with
2332 %    \cs{normalfont}}
2333 %    \begin{macrocode}
2334     {\parindent \z@ \raggedright
2335      \interlinepenalty \@M
2336      \normalfont
2337 %    \end{macrocode}
2338 %    When this is a numbered part we have to print the number and the
2339 %    title. The |\nobreak| should prevent a page break here.
2340 % \changes{v1.4e}{2001/05/24}{Replaced tilde with \cs{nobreakspace}
2341 %                             (pr/3310)}
2342 %    \begin{macrocode}
2343      \ifnum \c@secnumdepth >\m@ne
2344        \Large\bfseries \partname\nobreakspace\thepart
2345        \par\nobreak
2346      \fi
2347      \huge \bfseries #2%
2348 %    \end{macrocode}
2349 %    Now we empty the mark registers, leave some white space and let
2350 %    |\@afterheading| take care of suppressing the indentation.
2351 %    \begin{macrocode}
2352      \markboth{}{}\par}%
2353     \nobreak
2354     \vskip 3ex
2355     \@afterheading}
2356 %</article>
2357 %    \end{macrocode}
2359 %    When \Lcount{secnumdepth} is larger than $-2$ for the
2360 %    document class report and book, we have a numbered
2361 %    part, otherwise it is unnumbered.
2362 %    \begin{macrocode}
2363 %<*report|book>
2364 \def\@part[#1]#2{%
2365     \ifnum \c@secnumdepth >-2\relax
2366       \refstepcounter{part}%
2367       \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
2368     \else
2369       \addcontentsline{toc}{part}{#1}%
2370     \fi
2371 %    \end{macrocode}
2372 %    We empty the mark registers and center the title on the page in the
2373 %    report and book document classes.
2374 %    Also we prevent breaking between lines and reset the font.
2375 % \changes{v1.3c}{1995/05/25}{replace \cs{reset@font} with
2376 %    \cs{normalfont}}
2377 % \changes{v1.3j}{1995/08/16}{add missing percent}
2378 %    \begin{macrocode}
2379     \markboth{}{}%
2380     {\centering
2381      \interlinepenalty \@M
2382      \normalfont
2383 %    \end{macrocode}
2384 %    When this is a numbered part we have to print the number.
2385 % \changes{v1.4e}{2001/05/24}{Replaced tilde with \cs{nobreakspace}
2386 %                             (pr/3310)}
2387 %    \begin{macrocode}
2388      \ifnum \c@secnumdepth >-2\relax
2389        \huge\bfseries \partname\nobreakspace\thepart
2390        \par
2391 %    \end{macrocode}
2392 %    We leave some space before we print the title and leave the
2393 %    finishing up to |\@endpart|.
2394 %    \begin{macrocode}
2395        \vskip 20\p@
2396      \fi
2397      \Huge \bfseries #2\par}%
2398     \@endpart}
2399 %</report|book>
2400 %    \end{macrocode}
2401 % \end{macro}
2403 % \begin{macro}{\@spart}
2404 %    This macro does the actual formatting of the title of the part
2405 %    when the star form of the user command was used. In this case we
2406 %    \emph{never} print a number. Otherwise the formatting is the
2407 %    same.
2409 %    The differences between the definition of this macro in the
2410 %    article document class and in the report and book document
2411 %    classes are similar as they were for |\@part|.
2412 % \changes{v1.3c}{1995/05/25}{replace \cs{reset@font} with
2413 %    \cs{normalfont}}
2414 %    \begin{macrocode}
2415 %<*article>
2416 \def\@spart#1{%
2417     {\parindent \z@ \raggedright
2418      \interlinepenalty \@M
2419      \normalfont
2420      \huge \bfseries #1\par}%
2421      \nobreak
2422      \vskip 3ex
2423      \@afterheading}
2424 %</article>
2425 %<*report|book>
2426 \def\@spart#1{%
2427     {\centering
2428      \interlinepenalty \@M
2429      \normalfont
2430      \Huge \bfseries #1\par}%
2431     \@endpart}
2432 %</report|book>
2433 %    \end{macrocode}
2434 % \end{macro}
2436 % \begin{macro}{\@endpart}
2437 % \changes{v1.3j}{1995/08/16}{move docstrip guard to avoid defining
2438 %    \cs{@endpart} in article}
2439 %    This macro finishes the part page, for both |\@part| and
2440 %    |\@spart|.
2442 %    First we fill the current page.
2443 %    \begin{macrocode}
2444 %<*report|book>
2445 \def\@endpart{\vfil\newpage
2446 %    \end{macrocode}
2447 %    Then, when we are in twosided mode and chapters are supposed to
2448 %    be on right hand sides, we produce a completely blank page.
2449 % \changes{v1.4b}{2000/05/19}{Only add empty page after part if
2450 %    twoside and openright (pr/3155)}
2451 %    \begin{macrocode}
2452               \if@twoside
2453                \if@openright
2454                 \null
2455                 \thispagestyle{empty}%
2456                 \newpage
2457                \fi
2458               \fi
2459 %    \end{macrocode}
2460 %    When this was a two column document we have to switch back to two
2461 %    column mode.
2462 %    \begin{macrocode}
2463               \if@tempswa
2464                 \twocolumn
2465               \fi}
2466 %</report|book>
2467 %    \end{macrocode}
2468 % \end{macro}
2469 % \end{macro}
2471 % \subsubsection{Chapters}
2473 % \begin{macro}{\chapter}
2474 %    A chapter should always start on a new page therefore we start by
2475 %    calling |\clearpage| and setting the pagestyle for this page to
2476 %    \pstyle{plain}.
2477 %    \begin{macrocode}
2478 %<*report|book>
2479 \newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
2480                     \thispagestyle{plain}%
2481 %    \end{macrocode}
2482 %    Then we prevent floats from appearing at the top of this page
2483 %    because it looks weird to see a floating object above a chapter
2484 %    title.
2485 %    \begin{macrocode}
2486                     \global\@topnum\z@
2487 %    \end{macrocode}
2488 %    Then we suppress the indentation of the first paragraph by
2489 %    setting the switch |\@afterindent| to |false|. We use |\secdef|
2490 %    to specify the macros to use for actually setting the chapter
2491 %    title.
2492 %    \begin{macrocode}
2493                     \@afterindentfalse
2494                     \secdef\@chapter\@schapter}
2495 %    \end{macrocode}
2497 % \begin{macro}{\@chapter}
2498 %    This macro is called when we have a numbered chapter. When
2499 %    \Lcount{secnumdepth} is larger than $-1$ and, in the book
2500 %    class, |\@mainmatter| is true, we display the chapter
2501 %    number. We also inform the user that a new chapter is about to be
2502 %    typeset by writing a message to the terminal.
2503 %    \begin{macrocode}
2504 \def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
2505 %<book>                       \if@mainmatter
2506                          \refstepcounter{chapter}%
2507                          \typeout{\@chapapp\space\thechapter.}%
2508                          \addcontentsline{toc}{chapter}%
2509                                    {\protect\numberline{\thechapter}#1}%
2510 %<*book>
2511                        \else
2512                          \addcontentsline{toc}{chapter}{#1}%
2513                        \fi
2514 %</book>
2515                     \else
2516                       \addcontentsline{toc}{chapter}{#1}%
2517                     \fi
2518 %    \end{macrocode}
2519 %    After having written an entry to the table of contents we store
2520 %    the (alternative) title of this chapter with |\chaptermark| and
2521 %    add some white space to the lists of figures and tables.
2522 %    \begin{macrocode}
2523                     \chaptermark{#1}%
2524                     \addtocontents{lof}{\protect\addvspace{10\p@}}%
2525                     \addtocontents{lot}{\protect\addvspace{10\p@}}%
2526 %    \end{macrocode}
2527 %    Then we call upon |\@makechapterhead| to format the actual
2528 %    chapter title. We have to do this in a special way when we are in
2529 %    twocolumn mode in order to have the chapter title use the entire
2530 %    |\textwidth|. In one column mode we call |\@afterheading| which
2531 %    takes care of suppressing the indentation.
2532 %    \begin{macrocode}
2533                     \if@twocolumn
2534                       \@topnewpage[\@makechapterhead{#2}]%
2535                     \else
2536                       \@makechapterhead{#2}%
2537                       \@afterheading
2538                     \fi}
2539 %    \end{macrocode}
2541 % \begin{macro}{\@makechapterhead}
2542 %    The macro above uses |\@makechapterhead|\meta{text} to format the
2543 %    heading of the chapter.
2545 %    We begin by leaving some white space. The we open a group in
2546 %    which we have a paragraph indent of 0pt, and in which we have the
2547 %    text set ragged right. We also reset the font.
2548 % \changes{v1.3c}{1995/05/25}{replace \cs{reset@font} with
2549 %    \cs{normalfont}}
2550 %    \begin{macrocode}
2551 \def\@makechapterhead#1{%
2552   \vspace*{50\p@}%
2553   {\parindent \z@ \raggedright \normalfont
2554 %    \end{macrocode}
2555 %    Then we check whether the number of the chapter has to be printed.
2556 %    If so we leave some whitespace between the chapternumber and its
2557 %    title.
2558 % \changes{v1.2v}{1994/11/30}{Added a \cs{nobreak} to prevent a
2559 %    pagebreak between the chapternumber and the chaptertitle}
2560 % \changes{v1.3j}{1995/08/16}{replace braces by \cs{space}}
2561 %    \begin{macrocode}
2562     \ifnum \c@secnumdepth >\m@ne
2563 %<book>      \if@mainmatter
2564         \huge\bfseries \@chapapp\space \thechapter
2565         \par\nobreak
2566         \vskip 20\p@
2567 %<book>      \fi
2568     \fi
2569 %    \end{macrocode}
2570 %    Now we set the title in a large bold font. We prevent a pagebreak
2571 %    from occurring in the middle of or after the title. Finally we
2572 %    leave some whitespace before the text begins.
2573 % \changes{v1.2v}{1994/11/30}{Added \cs{interlinepenalty}\cs{@M} to
2574 %    prevent a pagebreak in the middle of a title}
2575 %    \begin{macrocode}
2576     \interlinepenalty\@M
2577     \Huge \bfseries #1\par\nobreak
2578     \vskip 40\p@
2579   }}
2580 %    \end{macrocode}
2581 % \end{macro}
2582 % \end{macro}
2584 % \begin{macro}{\@schapter}
2585 %    This macro is called when we have an unnumbered chapter. It is
2586 %    much simpler than |\@chapter| because it only needs to typeset
2587 %    the chapter title.
2588 %    \begin{macrocode}
2589 \def\@schapter#1{\if@twocolumn
2590                    \@topnewpage[\@makeschapterhead{#1}]%
2591                  \else
2592                    \@makeschapterhead{#1}%
2593                    \@afterheading
2594                  \fi}
2595 %    \end{macrocode}
2597 % \begin{macro}{\@makeschapterhead}
2598 %    The macro above uses |\@makeschapterhead|\meta{text}to format
2599 %    the heading of the chapter. It is similar to |\@makechapterhead|
2600 %    except that it never has to print a chapter number.
2602 % \changes{v1.2v}{1994/11/30}{Added \cs{interlinepenalty}\cs{@M} to
2603 %    prevent a pagebreak in the middle of a title}
2604 % \changes{v1.3c}{1995/05/25}{replace \cs{reset@font} with
2605 %    \cs{normalfont}}
2606 %    \begin{macrocode}
2607 \def\@makeschapterhead#1{%
2608   \vspace*{50\p@}%
2609   {\parindent \z@ \raggedright
2610     \normalfont
2611     \interlinepenalty\@M
2612     \Huge \bfseries  #1\par\nobreak
2613     \vskip 40\p@
2614   }}
2615 %</report|book>
2616 %    \end{macrocode}
2617 % \end{macro}
2618 % \end{macro}
2619 % \end{macro}
2622 % \subsubsection{Lower level headings}
2624 %    These commands all make use of |\@startsection|.
2625 % \begin{macro}{\section}
2626 %    This gives a normal heading with white space above and below the
2627 %    heading, the title set in |\Large\bfseries|, and no indentation
2628 %    on the first paragraph.
2629 % \changes{v1.3c}{1995/05/25}{replace \cs{reset@font} with
2630 %    \cs{normalfont}}
2631 %    \begin{macrocode}
2632 \newcommand\section{\@startsection {section}{1}{\z@}%
2633                                    {-3.5ex \@plus -1ex \@minus -.2ex}%
2634                                    {2.3ex \@plus.2ex}%
2635                                    {\normalfont\Large\bfseries}}
2636 %    \end{macrocode}
2637 % \end{macro}
2639 % \begin{macro}{\subsection}
2640 %    This gives a normal heading with white space above and below the
2641 %    heading, the title set in |\large\bfseries|, and no indentation
2642 %    on the first paragraph.
2643 %    \begin{macrocode}
2644 \newcommand\subsection{\@startsection{subsection}{2}{\z@}%
2645                                      {-3.25ex\@plus -1ex \@minus -.2ex}%
2646                                      {1.5ex \@plus .2ex}%
2647                                      {\normalfont\large\bfseries}}
2648 %    \end{macrocode}
2649 % \end{macro}
2651 % \begin{macro}{\subsubsection}
2652 %    This gives a normal heading with white space above and below the
2653 %    heading, the title set in |\normalsize\bfseries|, and no
2654 %    indentation on the first paragraph.
2655 %    \begin{macrocode}
2656 \newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
2657                                      {-3.25ex\@plus -1ex \@minus -.2ex}%
2658                                      {1.5ex \@plus .2ex}%
2659                                      {\normalfont\normalsize\bfseries}}
2660 %    \end{macrocode}
2661 % \end{macro}
2663 % \begin{macro}{\paragraph}
2664 %    This gives a run-in heading with white space above and to the
2665 %    right of the heading, the title set in |\normalsize\bfseries|.
2666 %    \begin{macrocode}
2667 \newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
2668                                     {3.25ex \@plus1ex \@minus.2ex}%
2669                                     {-1em}%
2670                                     {\normalfont\normalsize\bfseries}}
2671 %    \end{macrocode}
2672 % \end{macro}
2674 % \begin{macro}{\subparagraph}
2675 %    This gives an indented run-in heading with white space above and
2676 %    to the right of the heading, the title set in
2677 %    |\normalsize\bfseries|.
2678 %    \begin{macrocode}
2679 \newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
2680                                        {3.25ex \@plus1ex \@minus .2ex}%
2681                                        {-1em}%
2682                                       {\normalfont\normalsize\bfseries}}
2683 %    \end{macrocode}
2684 % \end{macro}
2686 % \subsection{Lists}
2688 % \subsubsection{General List Parameters}
2690 % The following commands are used to set the default values for the list
2691 % environment's parameters. See the \LaTeX{} manual for an explanation
2692 % of the meanings of the parameters.  Defaults for the list
2693 % environment are set as follows.  First, |\rightmargin|,
2694 % |\listparindent| and |\itemindent| are set to 0pt.  Then, for a Kth
2695 % level list, the command |\@listK| is called, where `K' denotes `i',
2696 % '`i', ... , `vi'.  (I.e., |\@listiii| is called for a third-level
2697 % list.)  By convention, |\@listK| should set |\leftmargin| to
2698 % |\leftmarginK|.
2700 % \begin{macro}{\leftmargin}
2701 % \begin{macro}{\leftmargini}
2702 % \begin{macro}{\leftmarginii}
2703 % \begin{macro}{\leftmarginiii}
2704 % \begin{macro}{\leftmarginiv}
2705 % \begin{macro}{\leftmarginv}
2706 % \begin{macro}{\leftmarginvi}
2707 % \changes{v1.0m}{1994/01/12}{Use em instead of pt to remain
2708 %    compatible with old styles}
2709 % \changes{v1.3q}{1995/12/20}{Temporary(?) fix: revert to setting
2710 %    \cs{leftmargin} at outer level}
2712 % When we are in two column mode some of the margins are set somewhat
2713 % smaller.
2714 %    \begin{macrocode}
2715 \if@twocolumn
2716   \setlength\leftmargini  {2em}
2717 \else
2718   \setlength\leftmargini  {2.5em}
2720 %    \end{macrocode}
2721 %    Until the whole of the parameter setting in these files is
2722 %    rationalised, we need to set the value of |\leftmargin| at this
2723 %    outer level.
2724 %    \begin{macrocode}
2725 \leftmargin  \leftmargini
2726 %    \end{macrocode}
2727 %    The following three are calculated so  that they are larger than
2728 %    the sum of |\labelsep| and the width of the default labels (which
2729 %    are `(m)', `vii.' and `M.').
2730 %    \begin{macrocode}
2731 \setlength\leftmarginii  {2.2em}
2732 \setlength\leftmarginiii {1.87em}
2733 \setlength\leftmarginiv  {1.7em}
2734 \if@twocolumn
2735   \setlength\leftmarginv  {.5em}
2736   \setlength\leftmarginvi {.5em}
2737 \else
2738   \setlength\leftmarginv  {1em}
2739   \setlength\leftmarginvi {1em}
2741 %    \end{macrocode}
2742 % \end{macro}
2743 % \end{macro}
2744 % \end{macro}
2745 % \end{macro}
2746 % \end{macro}
2747 % \end{macro}
2748 % \end{macro}
2750 % \begin{macro}{\labelsep}
2751 % \begin{macro}{\labelwidth}
2752 % \changes{v1.0m}{1994/01/12}{Use em instead of pt to remain
2753 %    compatible with old styles}
2754 %    |\labelsep| is the distance between the label and the text of an
2755 %    item; |\labelwidth| is the width of the label.
2756 %    \begin{macrocode}
2757 \setlength  \labelsep  {.5em}
2758 \setlength  \labelwidth{\leftmargini}
2759 \addtolength\labelwidth{-\labelsep}
2760 %    \end{macrocode}
2761 % \end{macro}
2762 % \end{macro}
2764 % \begin{macro}{\partopsep}
2765 %    When the user leaves a blank line before the environment an extra
2766 %    vertical space of |\partopsep| is inserted, in addition to
2767 %    |\parskip| and |\topsep|.
2768 % \changes{v1.0m}{1994/01/12}{\cs{partopsep} should be different,
2769 %    depending on the pointsize}
2770 %    \begin{macrocode}
2771 %</article|report|book>
2772 %<10pt>\setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@}
2773 %<11pt>\setlength\partopsep{3\p@ \@plus 1\p@ \@minus 1\p@}
2774 %<12pt>\setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\p@}
2775 %    \end{macrocode}
2776 % \end{macro}
2778 % \begin{macro}{\@beginparpenalty}
2779 % \begin{macro}{\@endparpenalty}
2780 %    These penalties are inserted before and after a list or paragraph
2781 %    environment. They are set to a bonus value to encourage page
2782 %    breaking at these points.
2783 % \begin{macro}{\@itempenalty}
2784 %    This penalty is inserted between list items.
2785 %    \begin{macrocode}
2786 %<*article|report|book>
2787 \@beginparpenalty -\@lowpenalty
2788 \@endparpenalty   -\@lowpenalty
2789 \@itempenalty     -\@lowpenalty
2790 %</article|report|book>
2791 %    \end{macrocode}
2792 % \end{macro}
2793 % \end{macro}
2794 % \end{macro}
2796 % \begin{macro}{\@listi}
2797 % \begin{macro}{\@listI}
2798 % |\@listi| defines the values of
2799 % |\leftmargin|, |\parsep|, |\topsep|, |\itemsep|, etc.\ for the
2800 % lists that appear on top-level. Its definition is modified by the
2801 % font-size commands (eg within |\small| the list parameters get
2802 % ``smaller'' values).
2804 % For this reason \@listI is defined to hold a saved copy of \@listi
2805 % so that |\normalsize| can switch all parameters back.
2807 %    \begin{macrocode}
2808 %<*10pt|11pt|12pt>
2809 \def\@listi{\leftmargin\leftmargini
2810 %<*10pt>
2811             \parsep 4\p@ \@plus2\p@ \@minus\p@
2812             \topsep 8\p@ \@plus2\p@ \@minus4\p@
2813             \itemsep4\p@ \@plus2\p@ \@minus\p@}
2814 %</10pt>
2815 %<*11pt>
2816             \parsep 4.5\p@ \@plus2\p@ \@minus\p@
2817             \topsep 9\p@   \@plus3\p@ \@minus5\p@
2818             \itemsep4.5\p@ \@plus2\p@ \@minus\p@}
2819 %</11pt>
2820 %<*12pt>
2821             \parsep 5\p@  \@plus2.5\p@ \@minus\p@
2822             \topsep 10\p@ \@plus4\p@   \@minus6\p@
2823             \itemsep5\p@  \@plus2.5\p@ \@minus\p@}
2824 %</12pt>
2825 \let\@listI\@listi
2826 %    \end{macrocode}
2827 %    We initialise the parameters although strictly speaking that
2828 %    is not necessary.
2829 %    \begin{macrocode}
2830 \@listi
2831 %    \end{macrocode}
2832 % \end{macro}
2833 % \end{macro}
2835 % \begin{macro}{\@listii}
2836 % \begin{macro}{\@listiii}
2837 % \begin{macro}{\@listiv}
2838 % \begin{macro}{\@listv}
2839 % \begin{macro}{\@listvi}
2840 %    Here are the same macros for the higher level lists. Note that
2841 %    they don't have saved versions and are not modified by the font
2842 %    size commands. In other words this class assumes that nested
2843 %    lists only appear in |\normalsize|, i.e.\ the main document size.
2844 %    \begin{macrocode}
2845 \def\@listii {\leftmargin\leftmarginii
2846               \labelwidth\leftmarginii
2847               \advance\labelwidth-\labelsep
2848 %<*10pt>
2849               \topsep    4\p@ \@plus2\p@ \@minus\p@
2850               \parsep    2\p@ \@plus\p@  \@minus\p@
2851 %</10pt>
2852 %<*11pt>
2853               \topsep    4.5\p@ \@plus2\p@ \@minus\p@
2854               \parsep    2\p@   \@plus\p@  \@minus\p@
2855 %</11pt>
2856 %<*12pt>
2857               \topsep    5\p@   \@plus2.5\p@ \@minus\p@
2858               \parsep    2.5\p@ \@plus\p@    \@minus\p@
2859 %</12pt>
2860               \itemsep   \parsep}
2861 \def\@listiii{\leftmargin\leftmarginiii
2862               \labelwidth\leftmarginiii
2863               \advance\labelwidth-\labelsep
2864 %<10pt>              \topsep    2\p@ \@plus\p@\@minus\p@
2865 %<11pt>              \topsep    2\p@ \@plus\p@\@minus\p@
2866 %<12pt>              \topsep    2.5\p@\@plus\p@\@minus\p@
2867               \parsep    \z@
2868               \partopsep \p@ \@plus\z@ \@minus\p@
2869               \itemsep   \topsep}
2870 \def\@listiv {\leftmargin\leftmarginiv
2871               \labelwidth\leftmarginiv
2872               \advance\labelwidth-\labelsep}
2873 \def\@listv  {\leftmargin\leftmarginv
2874               \labelwidth\leftmarginv
2875               \advance\labelwidth-\labelsep}
2876 \def\@listvi {\leftmargin\leftmarginvi
2877               \labelwidth\leftmarginvi
2878               \advance\labelwidth-\labelsep}
2879 %</10pt|11pt|12pt>
2880 %    \end{macrocode}
2881 % \end{macro}
2882 % \end{macro}
2883 % \end{macro}
2884 % \end{macro}
2885 % \end{macro}
2887 % \subsubsection{Enumerate}
2889 %    The enumerate environment uses  four counters: \Lcount{enumi},
2890 %    \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where
2891 %    \Lcount{enumN} controls the numbering of the Nth level
2892 %    enumeration.
2894 % \begin{macro}{\theenumi}
2895 % \begin{macro}{\theenumii}
2896 % \begin{macro}{\theenumiii}
2897 % \begin{macro}{\theenumiv}
2898 %    The counters are already defined in \file{latex.dtx}, but their
2899 %    representation is changed here.
2901 %    \begin{macrocode}
2902 %<*article|report|book>
2903 \renewcommand\theenumi{\@arabic\c@enumi}
2904 \renewcommand\theenumii{\@alph\c@enumii}
2905 \renewcommand\theenumiii{\@roman\c@enumiii}
2906 \renewcommand\theenumiv{\@Alph\c@enumiv}
2907 %    \end{macrocode}
2908 % \end{macro}
2909 % \end{macro}
2910 % \end{macro}
2911 % \end{macro}
2913 % \begin{macro}{\labelenumi}
2914 % \begin{macro}{\labelenumii}
2915 % \begin{macro}{\labelenumiii}
2916 % \begin{macro}{\labelenumiv}
2917 %    The label for each item is generated by the commands\\
2918 %    |\labelenumi| \ldots\ |\labelenumiv|.
2919 %    \begin{macrocode}
2920 \newcommand\labelenumi{\theenumi.}
2921 \newcommand\labelenumii{(\theenumii)}
2922 \newcommand\labelenumiii{\theenumiii.}
2923 \newcommand\labelenumiv{\theenumiv.}
2924 %    \end{macrocode}
2925 % \end{macro}
2926 % \end{macro}
2927 % \end{macro}
2928 % \end{macro}
2930 % \begin{macro}{\p@enumii}
2931 % \begin{macro}{\p@enumiii}
2932 % \begin{macro}{\p@enumiv}
2933 %    The expansion of |\p@enumN||\theenumN| defines the output of a
2934 %    |\ref| command when referencing an item of the Nth level of an
2935 %    enumerated list.
2936 %    \begin{macrocode}
2937 \renewcommand\p@enumii{\theenumi}
2938 \renewcommand\p@enumiii{\theenumi(\theenumii)}
2939 \renewcommand\p@enumiv{\p@enumiii\theenumiii}
2940 %    \end{macrocode}
2941 % \end{macro}
2942 % \end{macro}
2943 % \end{macro}
2945 % \subsubsection{Itemize}
2947 % \begin{macro}{\labelitemi}
2948 % \begin{macro}{\labelitemii}
2949 % \changes{v1.2k}{1994/05/06}{Inserted \cs{normalfont}}
2950 % \changes{v1.3s}{1996/08/24}{Replaced -{}- with \cs{textendash}}
2951 % \changes{v1.3u}{1996/10/31}{Changed to \cs{textbullet},
2952 %                 \cs{textasteriskcentered} and \cs{textperiodcentered}}
2953 % \begin{macro}{\labelitemiii}
2954 % \begin{macro}{\labelitemiv}
2955 %    Itemization is controlled by four commands: |\labelitemi|,
2956 %    |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define
2957 %    the labels of thevarious itemization levels: the symbols used are
2958 %    bullet, bold en-dash, centered asterisk and centred dot.
2960 %    \begin{macrocode}
2961 \newcommand\labelitemi{\textbullet}
2962 \newcommand\labelitemii{\normalfont\bfseries \textendash}
2963 \newcommand\labelitemiii{\textasteriskcentered}
2964 \newcommand\labelitemiv{\textperiodcentered}
2965 %    \end{macrocode}
2966 % \end{macro}
2967 % \end{macro}
2968 % \end{macro}
2969 % \end{macro}
2971 % \subsubsection{Description}
2973 % \begin{environment}{description}
2974 %    The description environment is defined here -- while the itemize
2975 %    and enumerate environments are defined in \file{latex.dtx}.
2977 %    \begin{macrocode}
2978 \newenvironment{description}
2979                {\list{}{\labelwidth\z@ \itemindent-\leftmargin
2980                         \let\makelabel\descriptionlabel}}
2981                {\endlist}
2982 %    \end{macrocode}
2983 % \end{environment}
2985 % \begin{macro}{\descriptionlabel}
2986 %    To change the formatting of the label, you must redefine
2987 %    |\descriptionlabel|.
2989 % \changes{v1.2k}{1994/05/06}{Inserted \cs{normalfont}}
2990 % \changes{v1.2y}{1995/01/31}{made command short}
2991 %    \begin{macrocode}
2992 \newcommand*\descriptionlabel[1]{\hspace\labelsep
2993                                 \normalfont\bfseries #1}
2994 %    \end{macrocode}
2995 % \end{macro}
2997 % \subsection{Defining new environments}
2999 % \subsubsection{Abstract}
3001 % \begin{environment}{abstract}
3002 %    When we are producing a separate titlepage we also put the
3003 %    abstract on a page of its own. It will be centred vertically on
3004 %    the page.
3006 %    Note that this environment is not defined for books.
3007 % \changes{v1.3e}{1995/06/19}{Added setting of \cs{@endparpenalty}
3008 %         to avoid page break after abstract heading.}
3009 %    \begin{macrocode}
3010 % \changes{v1.3m}{1995/10/23}{Added setting of \cs{beginparpenalty} to
3011 %    discourage page break before abstract heading.}
3012 %<*article|report>
3013 \if@titlepage
3014   \newenvironment{abstract}{%
3015       \titlepage
3016       \null\vfil
3017       \@beginparpenalty\@lowpenalty
3018       \begin{center}%
3019         \bfseries \abstractname
3020         \@endparpenalty\@M
3021       \end{center}}%
3022      {\par\vfil\null\endtitlepage}
3023 %    \end{macrocode}
3024 %    When we are not making a separate titlepage --the default for the
3025 %    article document class-- we have to check if we are in twocolumn
3026 %    mode. In that case the abstract is as a |\section*|, otherwise
3027 %    the quotation environment is used to typeset the abstract.
3028 %    \begin{macrocode}
3029 \else
3030   \newenvironment{abstract}{%
3031       \if@twocolumn
3032         \section*{\abstractname}%
3033       \else
3034         \small
3035         \begin{center}%
3036           {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
3037         \end{center}%
3038         \quotation
3039       \fi}
3040       {\if@twocolumn\else\endquotation\fi}
3042 %</article|report>
3043 %    \end{macrocode}
3044 % \end{environment}
3046 % \subsubsection{Verse}
3048 % \begin{environment}{verse}
3049 %   The verse environment is defined by making clever use of the
3050 %   list environment's parameters.  The user types |\\| to end a line.
3051 %   This is implemented by |\let|'ing |\\| equal |\@centercr|.
3053 % \changes{v1.3j}{1995/08/16}{stop \cs{item} scanning for [ with
3054 %    \cs{relax}}
3055 %    \begin{macrocode}
3056 \newenvironment{verse}
3057                {\let\\\@centercr
3058                 \list{}{\itemsep      \z@
3059                         \itemindent   -1.5em%
3060                         \listparindent\itemindent
3061                         \rightmargin  \leftmargin
3062                         \advance\leftmargin 1.5em}%
3063                 \item\relax}
3064                {\endlist}
3065 %    \end{macrocode}
3066 % \end{environment}
3068 % \subsubsection{Quotation}
3070 % \begin{environment}{quotation}
3071 %   The quotation environment is also defined by making clever use of
3072 %   the list environment's parameters. The lines in the environment
3073 %   are set smaller than |\textwidth|. The first line of a paragraph
3074 %   inside this environment is indented.
3076 % \changes{v1.3j}{1995/08/16}{stop \cs{item} scanning for [ with
3077 %    \cs{relax}}
3078 %    \begin{macrocode}
3079 \newenvironment{quotation}
3080                {\list{}{\listparindent 1.5em%
3081                         \itemindent    \listparindent
3082                         \rightmargin   \leftmargin
3083                         \parsep        \z@ \@plus\p@}%
3084                 \item\relax}
3085                {\endlist}
3086 %    \end{macrocode}
3087 % \end{environment}
3089 % \subsubsection{Quote}
3091 % \begin{environment}{quote}
3092 %   The quote environment is like the quotation environment except
3093 %   that paragraphs are not indented.
3095 % \changes{v1.3j}{1995/08/16}{stop \cs{item} scanning for [ with
3096 %    \cs{relax}}
3097 %    \begin{macrocode}
3098 \newenvironment{quote}
3099                {\list{}{\rightmargin\leftmargin}%
3100                 \item\relax}
3101                {\endlist}
3102 %    \end{macrocode}
3103 % \end{environment}
3105 % \subsubsection{Theorem}
3107 %    This document class does not define it's own theorem environments,
3108 %    the defaults, supplied by \file{latex.dtx} are available.
3110 % \subsubsection{Titlepage}
3112 % \begin{environment}{titlepage}
3113 %  In the normal environments, the titlepage environment does nothing
3114 %  but start and end a page, and inhibit page numbers.  In the report
3115 %  style, it also resets the page number to one, and then sets it
3116 %  back to one at the end.  In compatibility mode, it sets the
3117 %  page number to zero. This is incorrect since it results in using
3118 %  the page parameters for a right-hand page but it is the way it was.
3119 %  In two-column style, it still makes a
3120 %  one-column page.
3122 % \changes{v1.0g}{1993/12/09}{Moved the setting of
3123 %    \cs{@restonecolfalse}}
3124 % \changes{v1.2c}{1994/03/17}{page :!= 0 only in compatibility mode
3125 %    (LL)}
3126 % \changes{v1.2d}{1994/04/11}{Moved \cs{cleardoublepage} inside
3127 %    definition of titlepage environment}
3128 % \changes{v1.3i}{1995/08/08}{New implementation with support for
3129 %      twoside and openright option}
3131 %    First we do give the definition for compatibility mode.
3132 %    \begin{macrocode}
3133 \if@compatibility
3134 \newenvironment{titlepage}
3135     {%
3136 %<book>      \cleardoublepage
3137       \if@twocolumn
3138         \@restonecoltrue\onecolumn
3139       \else
3140         \@restonecolfalse\newpage
3141       \fi
3142       \thispagestyle{empty}%
3143       \setcounter{page}\z@
3144     }%
3145     {\if@restonecol\twocolumn \else \newpage \fi
3146     }
3147 %    \end{macrocode}
3149 %    And here is the one for native \LaTeXe{}.
3150 %    \begin{macrocode}
3151 \else
3152 \newenvironment{titlepage}
3153     {%
3154 %<book>      \cleardoublepage
3155       \if@twocolumn
3156         \@restonecoltrue\onecolumn
3157       \else
3158         \@restonecolfalse\newpage
3159       \fi
3160       \thispagestyle{empty}%
3161       \setcounter{page}\@ne
3162     }%
3163     {\if@restonecol\twocolumn \else \newpage \fi
3164 %    \end{macrocode}
3165 %    If we are not in two-side mode the first page after the title page
3166 %    should also get page number 1.
3167 %    \begin{macrocode}
3168      \if@twoside\else
3169         \setcounter{page}\@ne
3170      \fi
3171     }
3173 %    \end{macrocode}
3174 % \end{environment}
3176 % \subsubsection{Appendix}
3178 % \begin{macro}{\appendix}
3180 %    The |\appendix| command is not really an environment, it is a
3181 %    macro that makes some changes in the way things are done.
3183 %    In the article document class the |\appendix| command must do the
3184 %    following:
3185 %    \begin{itemize}
3186 %    \item reset the section and subsection counters to zero,
3187 %    \item redefine |\thesection| to produce alphabetic appendix
3188 %        numbers. This redefinition is done globally to ensure that it
3189 %        survives even if |\appendix| is issued within an environment such
3190 %        as \texttt{multicols}.
3191 %    \end{itemize}
3193 % \changes{1.3z}{1998/09/19}{Redefine \cs{thesection} globally (pr/2862)}
3194 %    \begin{macrocode}
3195 %<*article>
3196 \newcommand\appendix{\par
3197   \setcounter{section}{0}%
3198   \setcounter{subsection}{0}%
3199   \gdef\thesection{\@Alph\c@section}}
3200 %</article>
3201 %    \end{macrocode}
3203 %    In the report and book document classes the |\appendix| command
3204 %    must do the following:
3205 %    \begin{itemize}
3206 %    \item reset the chapter and section counters to zero,
3207 %    \item set |\@chapapp| to |\appendixname| (for messages),
3208 %    \item redefine the chapter counter to produce appendix numbers,
3209 %    \item possibly redefine the |\chapter| command if appendix titles
3210 %        and headings are to look different from chapter titles and
3211 %        headings. This redefinition is done globally to ensure that it
3212 %        survives even if |\appendix| is issued within an environment such
3213 %        as \texttt{multicols}.
3214 %    \end{itemize}
3216 % \changes{1.3z}{1998/09/19}{Redefine \cs{thechapter} and
3217 %                            \cs{@chapapp} globally (pr/2862)}
3218 %    \begin{macrocode}
3219 %<*report|book>
3220 \newcommand\appendix{\par
3221   \setcounter{chapter}{0}%
3222   \setcounter{section}{0}%
3223   \gdef\@chapapp{\appendixname}%
3224   \gdef\thechapter{\@Alph\c@chapter}}
3225 %</report|book>
3226 %    \end{macrocode}
3227 % \end{macro}
3229 % \subsection{Setting parameters for existing environments}
3231 % \subsubsection{Array and tabular}
3233 % \begin{macro}{\arraycolsep}
3234 %    The columns in an array environment are separated by
3235 %    2|\arraycolsep|.
3236 %    \begin{macrocode}
3237 \setlength\arraycolsep{5\p@}
3238 %    \end{macrocode}
3239 % \end{macro}
3241 % \begin{macro}{\tabcolsep}
3242 %    The columns in an tabular environment are separated by
3243 %    2|\tabcolsep|.
3244 %    \begin{macrocode}
3245 \setlength\tabcolsep{6\p@}
3246 %    \end{macrocode}
3247 % \end{macro}
3249 % \begin{macro}{\arrayrulewidth}
3250 %    The width of rules in the array and tabular environments is given
3251 %    by\\ |\arrayrulewidth|.
3252 %    \begin{macrocode}
3253 \setlength\arrayrulewidth{.4\p@}
3254 %    \end{macrocode}
3255 % \end{macro}
3257 % \begin{macro}{\doublerulesep}
3258 %    The space between adjacent rules in the array and tabular
3259 %    environments is given by |\doublerulesep|.
3260 %    \begin{macrocode}
3261 \setlength\doublerulesep{2\p@}
3262 %    \end{macrocode}
3263 % \end{macro}
3265 % \subsubsection{Tabbing}
3267 % \begin{macro}{\tabbingsep}
3268 %    This controls the space that the |\'| command puts in. (See
3269 %    \LaTeX{} manual for an explanation.)
3270 %    \begin{macrocode}
3271 \setlength\tabbingsep{\labelsep}
3272 %    \end{macrocode}
3273 % \end{macro}
3275 % \subsubsection{Minipage}
3277 % \begin{macro}{\@minipagerestore}
3278 %    The macro |\@minipagerestore| is called upon entry to a minipage
3279 %    environment to set up things that are to be handled differently
3280 %    inside a minipage environment. In the current styles, it does
3281 %    nothing.
3282 % \end{macro}
3284 % \begin{macro}{\@mpfootins}
3285 %    Minipages have their own footnotes; |\skip||\@mpfootins| plays
3286 %    same r\^ole for footnotes in a minipage as |\skip||\footins| does
3287 %    for ordinary footnotes.
3289 %    \begin{macrocode}
3290 \skip\@mpfootins = \skip\footins
3291 %    \end{macrocode}
3292 % \end{macro}
3294 % \subsubsection{Framed boxes}
3296 % \begin{macro}{\fboxsep}
3297 %    The space left by |\fbox| and |\framebox| between the box and the
3298 %    text in it.
3299 % \begin{macro}{\fboxrule}
3300 %    The width of the rules in the box made by |\fbox| and |\framebox|.
3301 %    \begin{macrocode}
3302 \setlength\fboxsep{3\p@}
3303 \setlength\fboxrule{.4\p@}
3304 %    \end{macrocode}
3305 % \end{macro}
3306 % \end{macro}
3308 % \subsubsection{Equation and eqnarray}
3310 % \begin{macro}{\theequation}
3311 %    When within chapters, the equation counter will be reset at
3312 %    the beginning of a new chapter and the equation number will
3313 %    be prefixed by the chapter number.
3314 % \changes{v1.3u}{1996/10/31}{Added test for non-zero chapter number}
3316 %    This code  must follow the |\chapter| definition or, more exactly,
3317 %    the definition of the chapter counter.
3318 %    \begin{macrocode}
3319 %<article>\renewcommand \theequation {\@arabic\c@equation}
3320 %<*report|book>
3321 \@addtoreset {equation}{chapter}
3322 \renewcommand\theequation
3323   {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@equation}
3324 %</report|book>
3325 %    \end{macrocode}
3326 % \end{macro}
3328 % \begin{macro}{\jot}
3329 %    |\jot| is the extra space added between lines of an eqnarray
3330 %    environment. The default value is used.
3331 %    \begin{macrocode}
3332 % \setlength\jot{3pt}
3333 %    \end{macrocode}
3334 % \end{macro}
3336 % \begin{macro}{\@eqnnum}
3337 %    The macro |\@eqnnum| defines how equation numbers are to appear in
3338 %    equations. Again the default is used.
3340 %    \begin{macrocode}
3341 % \def\@eqnnum{(\theequation)}
3342 %    \end{macrocode}
3343 % \end{macro}
3345 % \subsection{Floating objects}
3347 %    The file \file{latex.dtx} only defines a number of tools with
3348 %    which floating objects can be defined. This is done in the
3349 %    document class. It needs to define the following macros for each
3350 %    floating object of type \texttt{TYPE} (e.g., \texttt{TYPE} =
3351 %    figure).
3353 %    \begin{description}
3354 %    \item[\texttt{\bslash fps@TYPE}]
3355 %        The default placement specifier for floats of type
3356 %        \texttt{TYPE}.
3358 %    \item[\texttt{\bslash ftype@TYPE}]
3359 %        The type number for floats of type \texttt{TYPE}.  Each
3360 %        \texttt{TYPE} has associated a unique positive \texttt
3361 %        {TYPE} number, which is a power of two.  E.g., figures might
3362 %        have type number 1, tables type number 2, programs type
3363 %        number 4, etc.
3365 %    \item[\texttt{\bslash ext@TYPE}]
3366 %        The file extension indicating the file on which the contents
3367 %        list for float type \texttt{TYPE} is stored.  For example,
3368 %        |\ext@figure| = `lof'.
3370 %    \item[\texttt{\bslash fnum@TYPE}]
3371 %        A macro to generate the figure number for a caption. For
3372 %        example, |\fnum@TYPE| == `Figure |\thefigure|'.
3374 %    \item[\texttt{\bslash @makecaption}{\meta{num}}{\meta{text}}]
3375 %        A macro to make a caption, with \meta{num} the value produced
3376 %        by |\fnum@...| and \meta{text} the text of the caption. It
3377 %        can assume it's in a |\parbox| of the appropriate width.
3378 %        This will be used for \emph{all} floating objects.
3380 %    \end{description}
3382 %    The actual environment that implements a floating object such as
3383 %    a figure is defined using the macros |\@float| and |\end@float|,
3384 %    which are defined in \file{latex.dtx}.
3386 %    An environment that implements a single column floating object is
3387 %    started with |\@float{|\texttt{TYPE}|}[|\meta{placement}|]| of type
3388 %    \texttt{TYPE} with \meta{placement} as the placement specifier.
3389 %    The default value of \meta{PLACEMENT} is defined by |\fps@TYPE|.
3391 %    The environment is ended by |\end@float|.  E.g., |\figure| ==
3392 %    |\@float|{figure}, |\endfigure| == |\end@float|.
3394 % \subsubsection{Figure}
3396 %    Here is the implementation of the figure environment.
3398 % \begin{macro}{\c@figure}
3399 %    First we have to allocate a counter to number the figures.
3401 %    In the report and book document classes figures within chapters are
3402 %    numbered per chapter.
3403 % \changes{v1.3u}{1996/10/31}{Added test for non-zero chapter number}
3404 %    \begin{macrocode}
3405 %<*article>
3406 \newcounter{figure}
3407 \renewcommand \thefigure {\@arabic\c@figure}
3408 %</article>
3409 %<*report|book>
3410 \newcounter{figure}[chapter]
3411 \renewcommand \thefigure
3412      {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure}
3413 %</report|book>
3414 %    \end{macrocode}
3415 % \end{macro}
3417 % \begin{macro}{\fps@figure}
3418 % \begin{macro}{\ftype@figure}
3419 % \begin{macro}{\ext@figure}
3420 % \begin{macro}{\num@figure}
3421 %    Here are the parameters for the floating objects of type `figure'.
3422 % \changes{v1.4e}{2001/05/24}{Replaced tilde with \cs{nobreakspace}
3423 %                             (pr/3310)}
3424 %    \begin{macrocode}
3425 \def\fps@figure{tbp}
3426 \def\ftype@figure{1}
3427 \def\ext@figure{lof}
3428 \def\fnum@figure{\figurename\nobreakspace\thefigure}
3429 %    \end{macrocode}
3430 % \end{macro}
3431 % \end{macro}
3432 % \end{macro}
3433 % \end{macro}
3435 % \begin{environment}{figure}
3436 % \begin{environment}{figure*}
3437 %    And the definition of the actual environment. The form with the
3438 %    |*| is used for double column figures.
3439 %    \begin{macrocode}
3440 \newenvironment{figure}
3441                {\@float{figure}}
3442                {\end@float}
3443 \newenvironment{figure*}
3444                {\@dblfloat{figure}}
3445                {\end@dblfloat}
3446 %    \end{macrocode}
3447 % \end{environment}
3448 % \end{environment}
3450 % \subsubsection{Table}
3452 %    Here is the implementation of the table environment. It is very
3453 %    much the same as the figure environment.
3455 % \begin{macro}{\c@table}
3456 %    First we have to allocate a counter to number the tables.
3458 %    In the report and book document classes tables within chapters are
3459 %    numbered per chapter.
3460 % \changes{v1.3u}{1996/10/31}{Added test for non-zero chapter number}
3461 %    \begin{macrocode}
3462 %<*article>
3463 \newcounter{table}
3464 \renewcommand\thetable{\@arabic\c@table}
3465 %</article>
3466 %<*report|book>
3467 \newcounter{table}[chapter]
3468 \renewcommand \thetable
3469      {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@table}
3470 %</report|book>
3471 %    \end{macrocode}
3472 % \end{macro}
3474 % \begin{macro}{\fps@table}
3475 % \begin{macro}{\ftype@table}
3476 % \begin{macro}{\ext@table}
3477 % \begin{macro}{\num@table}
3478 %    Here are the parameters for the floating objects of type `table'.
3479 % \changes{v1.4e}{2001/05/24}{Replaced tilde with \cs{nobreakspace}
3480 %                             (pr/3310)}
3481 %    \begin{macrocode}
3482 \def\fps@table{tbp}
3483 \def\ftype@table{2}
3484 \def\ext@table{lot}
3485 \def\fnum@table{\tablename\nobreakspace\thetable}
3486 %    \end{macrocode}
3487 % \end{macro}
3488 % \end{macro}
3489 % \end{macro}
3490 % \end{macro}
3492 % \begin{environment}{table}
3493 % \begin{environment}{table*}
3494 %    And the definition of the actual environment. The form with the
3495 %    |*| is used for double column tables.
3496 %    \begin{macrocode}
3497 \newenvironment{table}
3498                {\@float{table}}
3499                {\end@float}
3500 \newenvironment{table*}
3501                {\@dblfloat{table}}
3502                {\end@dblfloat}
3503 %    \end{macrocode}
3504 % \end{environment}
3505 % \end{environment}
3507 % \subsubsection{Captions}
3509 % \begin{macro}{\@makecaption}
3510 %    The |\caption| command calls |\@makecaption| to format the
3511 %    caption of floating objects. It gets two arguments,
3512 %    \meta{number}, the number of the floating object and \meta{text},
3513 %    the text of the caption. Usually \meta{number} contains a string
3514 %    such as `Figure 3.2'. The macro can assume it is called inside a
3515 %    |\parbox| of right width, with |\normalsize|.
3517 % \begin{macro}{\abovecaptionskip}
3518 % \begin{macro}{\belowcaptionskip}
3519 %    These lengths contain the amount of white space to leave above
3520 %    and below the caption.
3521 %    \begin{macrocode}
3522 \newlength\abovecaptionskip
3523 \newlength\belowcaptionskip
3524 \setlength\abovecaptionskip{10\p@}
3525 \setlength\belowcaptionskip{0\p@}
3526 %    \end{macrocode}
3527 % \end{macro}
3528 % \end{macro}
3530 %    The definition of this macro is |\long| in order to allow more
3531 %    then one paragraph in a caption.
3532 %    \begin{macrocode}
3533 \long\def\@makecaption#1#2{%
3534   \vskip\abovecaptionskip
3535 %    \end{macrocode}
3536 %    We want to see if the caption fits on one line on the page,
3537 %    therefore we first typeset it in a temporary box.
3538 % \changes{v1.2q}{1994/05/29}{Use \cs{sbox}\cs{@tempboxa} instead of
3539 %    \cs{setbox}\cs{@tempboxa}\cs{hbox} to make this colour safe}
3540 %    \begin{macrocode}
3541   \sbox\@tempboxa{#1: #2}%
3542 %    \end{macrocode}
3543 %    We can the measure its width. It that is larger than the current
3544 %    |\hsize| we typeset the caption as an ordinary paragraph.
3545 %    \begin{macrocode}
3546   \ifdim \wd\@tempboxa >\hsize
3547     #1: #2\par
3548 %    \end{macrocode}
3549 %    If the caption fits, we center it. Because this uses an |\hbox|
3550 %    directly in vertical mode, it does not execute the |\everypar|
3551 %    tokens; the only thing that could be needed here is resetting the
3552 %    `minipage flag' so we do this explicitly.
3553 % \changes{v1.2x}{1994/12/09}{Due to a change in the way floats are
3554 %    handled we need to set the \cs{if@minipage} switch to false}
3555 %    \begin{macrocode}
3556   \else
3557     \global \@minipagefalse
3558     \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
3559   \fi
3560   \vskip\belowcaptionskip}
3561 %    \end{macrocode}
3562 % \end{macro}
3564 % \subsection{Font changing}
3566 %    Here we supply the declarative font changing commands that were
3567 %    common in \LaTeX\ version 2.09 and earlier. These commands work
3568 %    in text mode \emph{and} in math mode. They are provided for
3569 %    compatibility, but one should start using the |\text...| and
3570 %    |\math...| commands instead. These commands are defined using
3571 %    |\DeclareTextFontCommand|, a command with three arguments: the
3572 %    user command to be defined; \LaTeX\ commands to execute in text
3573 %    mode and \LaTeX\ commands to execute in math mode.
3575 % \changes{v1.0g}{1993/12/12}{Distinguished between compatibility and
3576 %    `normal' mode for the font changing commands.}
3577 % \changes{v1.0h}{1993/12/18}{These are now defined in the kernel, so
3578 %    use \cs{@renewfontswitch}.  Compatibility mode defines
3579 %    \cs{@renewfontswitch} to do nothing, so we don't need to check
3580 %    for compatibility mode any more.}
3581 % \changes{v1.0j}{1993/12/20}{Added \cs{normalfont} back in the
3582 %    definitions of \cs{rm} etc. as this should be the default
3583 %    behaviour}
3584 % \changes{v1.2e}{1994/04/14}{\cs{@renewfontswitch} has become
3585 %    \cs{DeclareOldFontCommand}}
3587 %  \begin{macro}{\rm}
3588 % \changes{v1.0f}{1993/12/08}{Macro added}
3589 %  \begin{macro}{\tt}
3590 % \changes{v1.0f}{1993/12/08}{Macro added}
3591 %  \begin{macro}{\sf}
3592 % \changes{v1.0f}{1993/12/08}{Macro added}
3594 %    The commands to change the family. When in compatibility mode we
3595 %    select the `default' font first, to get \LaTeX2.09 behaviour.
3596 %    \begin{macrocode}
3597 \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
3598 \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
3599 \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
3600 %    \end{macrocode}
3601 %  \end{macro}
3602 %  \end{macro}
3603 %  \end{macro}
3605 %  \begin{macro}{\bf}
3606 % \changes{v1.0f}{1993/12/08}{Macro added}
3607 %    The command to change to the bold series. One should use
3608 %    |\mdseries| to explicitly switch back to medium series.
3609 %    \begin{macrocode}
3610 \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
3611 %    \end{macrocode}
3612 %  \end{macro}
3614 %  \begin{macro}{\sl}
3615 % \changes{v1.0f}{1993/12/08}{Macro added}
3616 % \changes{v1.2g}{1994/04/24}{Added warning if used in math mode}
3617 %  \begin{macro}{\it}
3618 % \changes{v1.0f}{1993/12/08}{Macro added}
3619 %  \begin{macro}{\sc}
3620 % \changes{v1.0f}{1993/12/08}{Macro added}
3621 % \changes{v1.2g}{1994/04/24}{Added warning if used in math mode}
3623 %    And the commands to change the shape of the font. The slanted and
3624 %    small caps shapes are not available by default as math alphabets,
3625 %    so those changes do nothing in math mode. However, we do warn the
3626 %    user that the selection will not have any effect.One should use
3627 %    |\upshape| to explicitly change back to the upright shape.
3628 %    \begin{macrocode}
3629 \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
3630 \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
3631 \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
3632 %    \end{macrocode}
3633 %  \end{macro}
3634 %  \end{macro}
3635 %  \end{macro}
3637 % \begin{macro}{\cal}
3638 % \changes{v1.0g}{1993/12/12}{Macro added}
3639 % \begin{macro}{\mit}
3640 % \changes{v1.0g}{1993/12/12}{Macro added}
3642 %    The commands |\cal| and |\mit| should only be used in math mode,
3643 %    outside math mode they have no effect. Currently the New Font
3644 %    Selection Scheme defines these commands to generate warning
3645 %    messages. Therefore we have to define them `by hand'.
3646 % \changes{v1.2w}{1994/12/01}{Now define \cs{cal} and \cs{mit} using
3647 %    \cs{DeclareRobustCommand*}}
3648 % \changes{v1.3j}{1995/08/16}{Remove surplus braces}
3649 %    \begin{macrocode}
3650 \DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
3651 \DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
3652 %    \end{macrocode}
3653 %  \end{macro}
3654 %  \end{macro}
3656 % \section{Cross Referencing}
3657 % \subsection{Table of Contents, etc.}
3659 %     A |\section| command writes a
3660 %     |\contentsline{section}{|\meta{title}|}{|\meta{page}|}| command
3661 %     on the \file{.toc} file, where \meta{title} contains the
3662 %     contents of the entry and \meta{page} is the page number. If
3663 %     sections are being numbered, then \meta{title} will be of the
3664 %     form |\numberline{|\meta{num}|}{|\meta{heading}|}| where
3665 %     \meta{num} is the number produced by |\thesection|.  Other
3666 %     sectioning commands work similarly.
3668 %     A |\caption| command in a `figure' environment writes
3670 %     |\contentsline{figure}{\numberline{|\meta{num}|}{|%
3671 %                    \meta{caption}|}}{|\meta{page}|}|
3673 %     on the .\file{lof} file, where \meta{num} is the number produced
3674 %     by |\thefigure| and \meta{caption} is the figure caption.  It
3675 %     works similarly for a `table' environment.
3677 %    The command |\contentsline{|\meta{name}|}| expands to
3678 %    |\l@|\meta{name}.  So, to specify the table of contents, we must
3679 %    define |\l@chapter|, |\l@section|, |\l@subsection|, ... ; to
3680 %    specify the list of figures, we must define |\l@figure|; and so
3681 %    on.  Most of these can be defined with the |\@dottedtocline|
3682 %    command, which works as follows.
3684 %    |\@dottedtocline{|\meta{level}|}{|\meta{indent}|}{|^^A
3685 %                      \meta{numwidth}|}{|^^A
3686 %                      \meta{title}|}{|\meta{page}|}|
3688 %    \begin{description}
3689 %    \item[\meta{level}] An entry is produced only if\meta{ level}
3690 %        $<=$ value of the \Lcount{tocdepth} counter.  Note,
3691 %        |\chapter| is level 0, |\section| is level 1, etc.
3692 %    \item[\meta{indent}] The indentation from the outer left margin
3693 %        of the start   of the contents line.
3694 %    \item[\meta{numwidth}] The width of a box in which the section
3695 %        number is to go, if \meta{title} includes a |\numberline|
3696 %        command.
3697 %    \end{description}
3699 % \begin{macro}{\@pnumwidth}
3700 % \begin{macro}{\@tocrmarg}
3701 % \begin{macro}{\@dotsep}
3702 %    This command uses the following three parameters, which are set
3703 %    with a |\newcommand| (so em's can be used to make them depend upon
3704 %    the font).
3705 %    \begin{description}
3706 %    \item[\texttt{\bslash @pnumwidth}] The width of a box in which the
3707 %        page number is put.
3708 % \changes{v1.2v}{1994/10/29}{Changed documentation from $!>$ or $!=$ to
3709 %    $\ge$}
3710 %    \item[\texttt{\bslash @tocrmarg}] The right margin for multiple
3711 %        line entries.  One wants |\@tocrmarg| $\ge$ |\@pnumwidth|
3712 %    \item[\texttt{\bslash @dotsep}] Separation between dots, in mu
3713 %        units. Should be defined as a number like 2 or 1.7
3714 %    \end{description}
3716 %    \begin{macrocode}
3717 \newcommand\@pnumwidth{1.55em}
3718 \newcommand\@tocrmarg{2.55em}
3719 \newcommand\@dotsep{4.5}
3720 %<article>\setcounter{tocdepth}{3}
3721 %<!article>\setcounter{tocdepth}{2}
3722 %    \end{macrocode}
3723 % \end{macro}
3724 % \end{macro}
3725 % \end{macro}
3727 % \subsubsection{Table of Contents}
3729 % \begin{macro}{\tableofcontents}
3730 %    This macro is used to request that \LaTeX{} produces a table of
3731 %    contents. In the report and book document classes the tables of
3732 %    contents, figures etc. are always set in single-column style.
3734 % \changes{v1.0g}{1993/12/09}{Moved the setting of
3735 %    \cs{@restonecolfalse}}
3736 % \changes{v1.4h}{2007/10/19}{Explain why \cs{@mkboth} is inside the heading
3737 %                         arg for \cs{tableofcontents} (pr/3285 and pr/3984)}
3738 %    \begin{macrocode}
3739 \newcommand\tableofcontents{%
3740 %<*report|book>
3741     \if@twocolumn
3742       \@restonecoltrue\onecolumn
3743     \else
3744       \@restonecolfalse
3745     \fi
3746 %    \end{macrocode}
3747 %    The title is set using the |\chapter*| command, making sure that
3748 %    the running head --if one is required-- contains the right
3749 %    information.
3750 %    \begin{macrocode}
3751     \chapter*{\contentsname
3752 %</report|book>
3753 %<article>    \section*{\contentsname
3754 %    \end{macrocode}
3755 %    The code for |\@mkboth| is placed inside the heading to avoid any
3756 %    influence on vertical spacing after the heading (in some cases). For
3757 %    other commands, such as |\listoffigures| below this has been changed from
3758 %    the \LaTeX{}2.09 version as it will produce a serious bug if used in
3759 %    two-column mode (see, pr/3285). However |\tableofcontents| is always
3760 %    typeset in one-column mode in these classes, therefore the somewhat
3761 %    inconsistent setting has been retained for compatibility reasons.
3762 %    \begin{macrocode}
3763         \@mkboth{%
3764            \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
3765 %    \end{macrocode}
3766 %    The the actual table of contents is made by calling
3767 %    |\@starttoc{toc}|. After that we restore twocolumn mode if
3768 %    necessary.
3769 %    \begin{macrocode}
3770     \@starttoc{toc}%
3771 %<!article>    \if@restonecol\twocolumn\fi
3772     }
3773 %    \end{macrocode}
3774 % \end{macro}
3776 % \begin{macro}{\l@part}
3777 %    Each sectioning command needs an additional macro  to format its
3778 %    entry in the table of contents, as described above. The macro for
3779 %    the entry for parts is defined in a special way.
3781 %    First we make sure that if a pagebreak should occur, it occurs
3782 %    \emph{before} this entry. Also a little whitespace is added and a
3783 %    group begun to keep changes local.
3784 % \changes{v1.0h}{1993/12/18}{Replaced -\cs{@secpenalty} by
3785 %    \cs{@secpenalty}.  ASAJ.}
3786 % \changes{v1.2i}{1994/04/28}{Don't print a toc line when the tocdepth
3787 %    counter is less then -1}
3788 % \changes{v1.3b}{1995/05/23}{Added missing braces around argument
3789 %           to \cs{addpenalty}.}
3790 % \changes{v1.3x}{1997/10/10}{Removed setting of \cs{@tempdima} as
3791 %    this macro does not use \cs{numberline} to set the toc line.}
3792 % \changes{v1.4a}{1998/10/12}{we should use \cs{@tocrmarg}; see PR/2881.}
3793 %    \begin{macrocode}
3794 \newcommand*\l@part[2]{%
3795   \ifnum \c@tocdepth >-2\relax
3796 %<article>    \addpenalty\@secpenalty
3797 %<!article>    \addpenalty{-\@highpenalty}%
3798     \addvspace{2.25em \@plus\p@}%
3799 %    \end{macrocode}
3800 %    The macro |\numberline| requires that the width of the box that
3801 %    holds the part number is stored in \LaTeX's scratch register
3802 %    |\@tempdima|. Therefore we initialize it there even though we do
3803 %    not use |\numberline| internally---the value used is quite large
3804 %    so that something like |\numberline{VIII}| would still work.
3805 % \changes{v1.4d}{2001/04/21}{Initialize \cs{@tempdima} to some
3806 %    sensible value (pr/3327)}
3807 %    \begin{macrocode}
3808     \setlength\@tempdima{3em}%
3809     \begingroup
3810 %    \end{macrocode}
3811 %    We set |\parindent| to 0pt and use |\rightskip| to leave
3812 %    enough room for the pagenumbers.\footnote{^^A
3813 %        We should really set \cs{rightskip} to \cs{@tocrmarg} instead
3814 %        of \cs{@pnumwidth} (no version of {\LaTeX} ever did this),
3815 %        otherwise the \cs{rightskip} is too small.
3816 %        Unfortunately this can't be changed in {\LaTeXe} as we don't
3817 %        want to create different versions of {\LaTeXe} which produce
3818 %        different typset output unless this is absolutely necessary;
3819 %        instead we suspend it for \LaTeX3.}
3820 %    To prevent overfull box messages the |\parfillskip| is set to a
3821 %    negative value.
3822 %    \begin{macrocode}
3823       \parindent \z@ \rightskip \@pnumwidth
3824       \parfillskip -\@pnumwidth
3825 %    \end{macrocode}
3826 %    Now we can set the entry, in a large bold font. We make sure to
3827 %    leave vertical mode, set the part title and add the pagenumber,
3828 %    set flush right.
3829 %    \begin{macrocode}
3830       {\leavevmode
3831        \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
3832 %    \end{macrocode}
3833 %    Prevent a pagebreak immediately after this entry, but use
3834 %    |\everypar| to reset the |\if@nobreak| switch. Finally we close
3835 %    the group.
3836 % \changes{v1.3j}{1995/08/16}{Add missing percent}
3837 %    \begin{macrocode}
3838        \nobreak
3839 %<article>       \if@compatibility
3840          \global\@nobreaktrue
3841          \everypar{\global\@nobreakfalse\everypar{}}%
3842 %<article>      \fi
3843     \endgroup
3844   \fi}
3845 %    \end{macrocode}
3846 % \end{macro}
3848 % \begin{macro}{\l@chapter}
3849 %    This macro formats the entries in the table of contents for
3850 %    chapters. It is very similar to |\l@part|
3852 %    First we make sure that if a pagebreak should occur, it occurs
3853 %    \emph{before} this entry. Also a little whitespace is added and a
3854 %    group begun to keep changes local.
3855 % \changes{v1.2i}{1994/04/28}{Don't print a toc line when the tocdepth
3856 %    counter is less than 0}
3857 % \changes{v1.3b}{1995/05/23}{Added missing braces around argument
3858 %           to \cs{addpenalty}.}
3859 % \changes{v1.4a}{1998/10/12}{we should use \cs{@tocrmarg}; see PR/2881.}
3860 %    \begin{macrocode}
3861 %<*report|book>
3862 \newcommand*\l@chapter[2]{%
3863   \ifnum \c@tocdepth >\m@ne
3864     \addpenalty{-\@highpenalty}%
3865     \vskip 1.0em \@plus\p@
3866 %    \end{macrocode}
3868 %    The macro |\numberline| requires that the width of the box that
3869 %    holds the part number is stored in \LaTeX's scratch register
3870 %    |\@tempdima|. Therefore we initialize it there even though we do
3871 %    not use |\numberline| internally (the position as well as the
3872 %    values seems questionable but can't be changed without producing
3873 %    compatibility problems). We begin a group, and change
3874 %    some of the paragraph parameters (see also the remark at
3875 %    \cs{l@part} regarding \cs{rightskip}).
3876 %    \begin{macrocode}
3877     \setlength\@tempdima{1.5em}%
3878     \begingroup
3879       \parindent \z@ \rightskip \@pnumwidth
3880       \parfillskip -\@pnumwidth
3881 %    \end{macrocode}
3882 %    Then we leave vertical mode and switch to a bold font.
3883 %    \begin{macrocode}
3884       \leavevmode \bfseries
3885 %    \end{macrocode}
3886 %    Because we do not use |\numberline| here, we have do some fine
3887 %    tuning `by hand', before we can set the entry. We discourage but
3888 %    not disallow a pagebreak immediately after a chapter entry.
3889 %    \begin{macrocode}
3890       \advance\leftskip\@tempdima
3891       \hskip -\leftskip
3892       #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
3893       \penalty\@highpenalty
3894     \endgroup
3895   \fi}
3896 %</report|book>
3897 %    \end{macrocode}
3898 % \end{macro}
3900 % \begin{macro}{\l@section}
3901 %    In the article document class the entry in the table of contents
3902 %    for sections looks much like the chapter entries for the report
3903 %    and book document classes.
3905 %    First we make sure that if a pagebreak should occur, it occurs
3906 %    \emph{before} this entry. Also a little whitespace is added and a
3907 %    group begun to keep changes local.
3908 % \changes{v1.0h}{1993/12/18}{Replaced -\cs{@secpenalty} by
3909 %    \cs{@secpenalty}.  ASAJ.}
3910 % \changes{v1.2i}{1994/04/28}{Don't print a toc line when the tocdepth
3911 %    counter is less than 1.}
3912 % \changes{v1.4a}{1998/10/12}{we should use \cs{@tocrmarg}; see PR/2881.}
3913 %    \begin{macrocode}
3914 %<*article>
3915 \newcommand*\l@section[2]{%
3916   \ifnum \c@tocdepth >\z@
3917     \addpenalty\@secpenalty
3918     \addvspace{1.0em \@plus\p@}%
3919 %    \end{macrocode}
3921 %    The macro |\numberline| requires that the width of the box that
3922 %    holds the part number is stored in \LaTeX's scratch register
3923 %    |\@tempdima|. Therefore we put it there. We begin a group, and
3924 %    change some of the paragraph parameters (see also the remark at
3925 %    \cs{l@part} regarding \cs{rightskip}).
3926 %    \begin{macrocode}
3927     \setlength\@tempdima{1.5em}%
3928     \begingroup
3929       \parindent \z@ \rightskip \@pnumwidth
3930       \parfillskip -\@pnumwidth
3931 %    \end{macrocode}
3932 %    Then we leave vertical mode and switch to a bold font.
3933 %    \begin{macrocode}
3934       \leavevmode \bfseries
3935 %    \end{macrocode}
3936 %    Because we do not use |\numberline| here, we have do some fine
3937 %    tuning `by hand', before we can set the entry. We discourage but
3938 %    not disallow a pagebreak immediately after a chapter entry.
3939 %    \begin{macrocode}
3940       \advance\leftskip\@tempdima
3941       \hskip -\leftskip
3942       #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
3943     \endgroup
3944   \fi}
3945 %</article>
3946 %    \end{macrocode}
3947 %    In the report and book document classes the definition for
3948 %    |\l@section| is much simpler.
3949 %    \begin{macrocode}
3950 %<*report|book>
3951 \newcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
3952 %</report|book>
3953 %    \end{macrocode}
3954 % \end{macro}
3956 % \begin{macro}{\l@subsection}
3957 % \begin{macro}{\l@subsubsection}
3958 % \begin{macro}{\l@paragraph}
3959 % \begin{macro}{\l@subparagraph}
3960 %    All lower level entries are defined using the macro
3961 %    |\@dottedtocline| (see above).
3962 %    \begin{macrocode}
3963 %<*article>
3964 \newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
3965 \newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
3966 \newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
3967 \newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
3968 %</article>
3969 %<*report|book>
3970 \newcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}}
3971 \newcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
3972 \newcommand*\l@paragraph{\@dottedtocline{4}{10em}{5em}}
3973 \newcommand*\l@subparagraph{\@dottedtocline{5}{12em}{6em}}
3974 %</report|book>
3975 %    \end{macrocode}
3976 % \end{macro}
3977 % \end{macro}
3978 % \end{macro}
3979 % \end{macro}
3981 % \subsubsection{List of figures}
3983 % \begin{macro}{\listoffigures}
3984 %    This macro is used to request that \LaTeX{} produces a list of
3985 %    figures. It is very similar to |\tableofcontents|.
3987 % \changes{v1.0g}{1993/12/09}{Moved the setting of
3988 %    \cs{@restonecolfalse}}
3989 % \changes{v1.4c}{2001/01/06}{Moved \cs{@mkboth} out of heading
3990 %                             arg (pr/3285)}
3991 %    \begin{macrocode}
3992 \newcommand\listoffigures{%
3993 %<*report|book>
3994     \if@twocolumn
3995       \@restonecoltrue\onecolumn
3996     \else
3997       \@restonecolfalse
3998     \fi
3999     \chapter*{\listfigurename}%
4000 %</report|book>
4001 %<article>    \section*{\listfigurename}%
4002       \@mkboth{\MakeUppercase\listfigurename}%
4003               {\MakeUppercase\listfigurename}%
4004     \@starttoc{lof}%
4005 %<report|book>    \if@restonecol\twocolumn\fi
4006     }
4007 %    \end{macrocode}
4008 % \end{macro}
4010 % \begin{macro}{\l@figure}
4011 %    This macro produces an entry in the list of figures.
4012 %    \begin{macrocode}
4013 \newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
4014 %    \end{macrocode}
4015 % \end{macro}
4017 % \subsubsection{List of tables}
4019 % \begin{macro}{\listoftables}
4020 %    This macro is used to request that \LaTeX{} produces a list of
4021 %    tables. It is very similar to |\tableofcontents|.
4023 % \changes{v1.0g}{1993/12/09}{Moved the setting of
4024 %    \cs{@restonecolfalse}}
4025 % \changes{v1.4c}{2001/01/06}{Moved \cs{@mkboth} out of heading
4026 %                             arg (pr/3285)}
4027 %    \begin{macrocode}
4028 \newcommand\listoftables{%
4029 %<*report|book>
4030     \if@twocolumn
4031       \@restonecoltrue\onecolumn
4032     \else
4033       \@restonecolfalse
4034     \fi
4035     \chapter*{\listtablename}%
4036 %</report|book>
4037 %<article>    \section*{\listtablename}%
4038       \@mkboth{%
4039           \MakeUppercase\listtablename}%
4040          {\MakeUppercase\listtablename}%
4041     \@starttoc{lot}%
4042 %<report|book>    \if@restonecol\twocolumn\fi
4043     }
4044 %    \end{macrocode}
4045 % \end{macro}
4047 % \begin{macro}{\l@table}
4048 %    This macro produces an entry in the list of tables.
4049 %    \begin{macrocode}
4050 \let\l@table\l@figure
4051 %    \end{macrocode}
4052 % \end{macro}
4054 % \subsection{Bibliography}
4056 % \begin{macro}{\bibindent}
4057 %    The ``open'' bibliography format uses an indentation of
4058 %    |\bibindent|.
4059 %    \begin{macrocode}
4060 \newdimen\bibindent
4061 \setlength\bibindent{1.5em}
4062 %    \end{macrocode}
4063 % \end{macro}
4065 % \begin{environment}{thebibliography}
4066 %    The `thebibliography' environment executes the following
4067 %    commands:
4069 %    |\renewcommand{\newblock}{\hskip.11em \@plus.33em \@minus.07em}|\\
4070 %      --- Defines the ``closed'' format, where the blocks (major units
4071 %      of information) of an entry run together.
4073 %    |\sloppy|  --- Used because it's rather hard to do line breaks in
4074 %      bibliographies,
4076 %    |\sfcode`\.=1000\relax| ---
4077 %      Causes a `.' (period) not to produce an end-of-sentence space.
4079 %    The implementation of this environment is based on the generic
4080 %    list environment. It uses the \Lcount{enumiv} counter internally
4081 %    to generate the labels of the list.
4083 %    When an empty `thebibliography' environment is found, a warning
4084 %    is issued.
4086 % \changes{v1.0i}{1993/12/19}{Corrected definition of thebibliography
4087 %    for article}
4088 % \changes{v1.2z}{1995/05/09}{added a missing percent character}
4089 % \changes{v1.3b}{1995/05/23}{Added missing braces in definition
4090 %    of thebibliography environment.}
4091 % \changes{v1.3j}{1995/08/16}{remove surplus spaces}
4092 % \changes{v1.3k}{1995/08/27}{Code for openbib changed}
4093 % \changes{v1.3t}{1996/10/05}{Added setting value of \cs{@clubpenalty}}
4094 %    \begin{macrocode}
4095 \newenvironment{thebibliography}[1]
4096 %<*article>
4097      {\section*{\refname}%
4098 %    \end{macrocode}
4099 %    The |\@mkboth| was moved out of the heading argument since at
4100 %    least in report and book (twocolumn option) there are definitions
4101 %    for |\chapter| which would swallow it otherwise.
4102 % \changes{v1.4c}{2001/01/06}{Moved \cs{@mkboth} out of heading
4103 %                             arg (pr/3285)}
4104 %    \begin{macrocode}
4105       \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%
4106 %</article>
4107 %<*!article>
4108      {\chapter*{\bibname}%
4109       \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}%
4110 %</!article>
4111       \list{\@biblabel{\@arabic\c@enumiv}}%
4112            {\settowidth\labelwidth{\@biblabel{#1}}%
4113             \leftmargin\labelwidth
4114             \advance\leftmargin\labelsep
4115             \@openbib@code
4116             \usecounter{enumiv}%
4117             \let\p@enumiv\@empty
4118             \renewcommand\theenumiv{\@arabic\c@enumiv}}%
4119       \sloppy
4120 %    \end{macrocode}
4121 %    This is setting the normal (non-infinite) value of
4122 %    |\clubpenalty| for the whole of this environment,
4123 %    so we must reset its stored value also.  (Why is there a |%| after
4124 %    the second 4000 below?)
4125 %    \begin{macrocode}
4126       \clubpenalty4000
4127       \@clubpenalty \clubpenalty
4128       \widowpenalty4000%
4129       \sfcode`\.\@m}
4130      {\def\@noitemerr
4131        {\@latex@warning{Empty `thebibliography' environment}}%
4132       \endlist}
4133 %    \end{macrocode}
4134 % \end{environment}
4136 % \begin{macro}{\newblock}
4137 %    The default definition for |\newblock| is to produce a small space.
4138 % \changes{v1.3k}{1995/08/27}{Default changed.}
4139 %    \begin{macrocode}
4140 \newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
4141 %    \end{macrocode}
4142 % \end{macro}
4144 % \begin{macro}{\@openbib@code}
4145 %    The default definition for |\@openbib@code| is to do nothing.
4146 %    It will be changed by the \Lopt{openbib} option.
4147 % \changes{v1.3k}{1995/08/27}{Macro added}
4148 %    \begin{macrocode}
4149 \let\@openbib@code\@empty
4150 %    \end{macrocode}
4151 % \end{macro}
4153 % \begin{macro}{\@biblabel}
4154 %    The label for a |\bibitem[...]| command is produced by this
4155 %    macro. The default from \file{latex.dtx} is used.
4156 %    \begin{macrocode}
4157 % \renewcommand*{\@biblabel}[1]{[#1]\hfill}
4158 %    \end{macrocode}
4159 % \end{macro}
4161 % \begin{macro}{\@cite}
4162 %    The output of the |\cite| command is produced by this macro. The
4163 %    default from \file{latex.dtx} is used.
4164 %    \begin{macrocode}
4165 % \renewcommand*{\@cite}[1]{[#1]}
4166 %    \end{macrocode}
4167 % \end{macro}
4169 %  \subsection{The index}
4171 % \begin{environment}{theindex}
4172 %    The environment `theindex' can be used for indices. It makes an
4173 %    index with two columns, with each entry a separate paragraph. At
4174 %    the user level the commands |\item|, |\subitem| and |\subsubitem|
4175 %    are used to produce index entries of various levels. When a new
4176 %    letter of the alphabet is encountered an amount of |\indexspace|
4177 %    white space can be added.
4180 % \changes{v1.0g}{1993/12/09}{Moved the setting of
4181 %    \cs{@restonecoltrue}}
4182 %    \begin{macrocode}
4183 \newenvironment{theindex}
4184                {\if@twocolumn
4185                   \@restonecolfalse
4186                 \else
4187                   \@restonecoltrue
4188                 \fi
4189 %<article>                \twocolumn[\section*{\indexname}]%
4190 %<!article>                \twocolumn[\@makeschapterhead{\indexname}]%
4191                 \@mkboth{\MakeUppercase\indexname}%
4192                         {\MakeUppercase\indexname}%
4193                 \thispagestyle{plain}\parindent\z@
4194 %    \end{macrocode}
4195 %    Parameter changes to |\columnseprule| and |\columnsep| have to be
4196 %    done after |\twocolumn| has acted. Otherwise they can affect the
4197 %    last page before the index.
4198 % \changes{ v1.4f}{2004/02/16}{Moved setting of \cs{columnsep} and
4199 %    \cs{columnseprule} later to avoid affecting the wrong page (pr/3616)}
4200 %    \begin{macrocode}
4201                 \parskip\z@ \@plus .3\p@\relax
4202                 \columnseprule \z@
4203                 \columnsep 35\p@
4204                 \let\item\@idxitem}
4205 %    \end{macrocode}
4206 %    When the document continues after the index and it was a one
4207 %    column document we have to switch back to one column after the
4208 %    index.
4209 %    \begin{macrocode}
4210                {\if@restonecol\onecolumn\else\clearpage\fi}
4211 %    \end{macrocode}
4212 % \end{environment}
4214 % \begin{macro}{\@idxitem}
4215 % \begin{macro}{\subitem}
4216 % \begin{macro}{\subsubitem}
4217 %    These macros are used to format the entries in the index. ^^AA ???
4218 % \changes{v1.3f}{1995/06/23}{Corrected error in definition of
4219 %                         \cs{@idxitem}.}
4220 % \changes{v1.3j}{1995/08/16}{use \cs{@idxitem} to save space}
4221 %    \begin{macrocode}
4222 \newcommand\@idxitem{\par\hangindent 40\p@}
4223 \newcommand\subitem{\@idxitem \hspace*{20\p@}}
4224 \newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
4225 %    \end{macrocode}
4226 % \end{macro}
4227 % \end{macro}
4228 % \end{macro}
4230 % \begin{macro}{\indexspace}
4231 %    The amount of white space that is inserted between `letter
4232 %    blocks' in the index.
4233 %    \begin{macrocode}
4234 \newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
4235 %    \end{macrocode}
4236 % \end{macro}
4238 % \subsection{Footnotes}
4240 % \begin{macro}{\footnoterule}
4241 %    Usually, footnotes are separated from the main body of the text
4242 %    by a small rule. This rule is drawn by the macro |\footnoterule|.
4243 %    We have to make sure that the rule takes no vertical space (see
4244 %    \file{plain.tex}) so we compensate for the natural height of the
4245 %    rule of 0.4pt by adding the right amount of vertical skip.
4247 %    To prevent the rule from colliding with the footnote we first add
4248 %    a little negative vertical skip, then we put the rule and make
4249 %    sure we end up at the same point where we begun this operation.
4250 % \changes{v1.3a}{1995/05/17}{use \cs{@width}}
4251 %    \begin{macrocode}
4252 \renewcommand\footnoterule{%
4253   \kern-3\p@
4254   \hrule\@width.4\columnwidth
4255   \kern2.6\p@}
4256 %    \end{macrocode}
4257 % \end{macro}
4259 % \begin{macro}{\c@footnote}
4260 %    Footnotes are numbered within chapters in the report and book
4261 %    document styles.
4262 %    \begin{macrocode}
4263 %<!article>\@addtoreset{footnote}{chapter}
4264 %    \end{macrocode}
4265 % \end{macro}
4267 % \begin{macro}{\@makefntext}
4268 %    The footnote mechanism of \LaTeX{} calls the macro |\@makefntext|
4269 %    to produce the actual footnote. The macro gets the text of the
4270 %    footnote as its argument and should use |\@thefnmark| as the mark
4271 %    of the footnote. The macro |\@makefntext|is called when
4272 %    effectively inside a |\parbox| of width |\columnwidth| (i.e.,
4273 %    with |\hsize| = |\columnwidth|).
4275 %   An example of what can be achieved is given by the following piece
4276 %   of \TeX\ code.
4277 % \begin{verbatim}
4278 %          \newcommand\@makefntext[1]{%
4279 %             \@setpar{\@@par
4280 %                      \@tempdima = \hsize
4281 %                      \advance\@tempdima-10pt
4282 %                      \parshape \@ne 10pt \@tempdima}%
4283 %             \par
4284 %             \parindent 1em\noindent
4285 %             \hbox to \z@{\hss\@makefnmark}#1}
4286 % \end{verbatim}
4287 %    The effect of this definition is that all lines of the footnote
4288 %    are indented by 10pt, while the first line of a new paragraph is
4289 %    indented by 1em. To change these dimensions, just substitute the
4290 %    desired value for `10pt' (in both places) or `1em'.  The mark is
4291 %    flushright against the footnote.
4293 %    In these document classes we use a simpler macro, in which the
4294 %    footnote text is set like an ordinary text paragraph, with no
4295 %    indentation except on the first line of a paragraph, and the
4296 %    first line of the footnote. Thus, all the macro must do is set
4297 %    |\parindent| to the appropriate value for succeeding paragraphs
4298 %    and put the proper indentation before the mark.
4300 % \changes{v1.1a}{1994/03/13}{Use \cs{@makefnmark} to generate
4301 %    footnote marker}
4302 %    \begin{macrocode}
4303 \newcommand\@makefntext[1]{%
4304     \parindent 1em%
4305     \noindent
4306     \hb@xt@1.8em{\hss\@makefnmark}#1}
4307 %    \end{macrocode}
4308 % \end{macro}
4310 % \begin{macro}{\@makefnmark}
4311 %    The footnote markers that are printed in the text to point to the
4312 %    footnotes should be produced by the macro |\@makefnmark|. We use
4313 %    the default definition for it.
4314 %    \begin{macrocode}
4315 %\renewcommand\@makefnmark{\hbox{\@textsuperscript
4316 %                                  {\normalfont\@thefnmark}}}
4317 %    \end{macrocode}
4318 % \end{macro}
4320 % \section{Initialization}
4322 % \subsection{Words}
4324 % This document class is for documents prepared in the English language.
4325 % To prepare a version for another language, various English words must
4326 % be replaced.  All the English words that require replacement are
4327 % defined below in command names. These commands may be redefined in
4328 % any class or package that is customising \LaTeX\ for use with
4329 % non-English languages.
4330 % \changes{v1.3h}{1995/07/20}{Split up to save save stack /1742}
4332 % \begin{macro}{\contentsname}
4333 % \begin{macro}{\listfigurename}
4334 % \begin{macro}{\listtablename}
4335 %    \begin{macrocode}
4336 \newcommand\contentsname{Contents}
4337 \newcommand\listfigurename{List of Figures}
4338 \newcommand\listtablename{List of Tables}
4339 %    \end{macrocode}
4340 % \end{macro}
4341 % \end{macro}
4342 % \end{macro}
4344 % \begin{macro}{\refname}
4345 % \begin{macro}{\bibname}
4346 % \begin{macro}{\indexname}
4347 %    \begin{macrocode}
4348 %<article>\newcommand\refname{References}
4349 %<report|book>\newcommand\bibname{Bibliography}
4350 \newcommand\indexname{Index}
4351 %    \end{macrocode}
4352 % \end{macro}
4353 % \end{macro}
4354 % \end{macro}
4356 % \begin{macro}{\figurename}
4357 % \begin{macro}{\tablename}
4358 %    \begin{macrocode}
4359 \newcommand\figurename{Figure}
4360 \newcommand\tablename{Table}
4361 %    \end{macrocode}
4362 % \end{macro}
4363 % \end{macro}
4365 % \begin{macro}{\partname}
4366 % \begin{macro}{\chaptername}
4367 % \begin{macro}{\appendixname}
4368 % \begin{macro}{\abstractname}
4369 %    \begin{macrocode}
4370 \newcommand\partname{Part}
4371 %<report|book>\newcommand\chaptername{Chapter}
4372 \newcommand\appendixname{Appendix}
4373 %<!book>\newcommand\abstractname{Abstract}
4374 %    \end{macrocode}
4375 % \end{macro}
4376 % \end{macro}
4377 % \end{macro}
4378 % \end{macro}
4380 % \subsection{Date}
4382 % \begin{macro}{\today}
4383 %    This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
4384 %    to provide the date of the \LaTeX-run.
4386 %    At |\begin{document}| this definition will be optimised
4387 %    so that the names of all the `wrong' months are not stored.
4388 %    This optimisation is not done here as that would `freeze'
4389 %    |\today| in any special purpose format made by loading the class
4390 %    file into the format file.
4391 % \changes{v1.3j}{1995/08/16}{use \cs{edef} to save a lot of space}
4392 % \changes{v1.3w}{1997/10/06}{use \cs{def} again, latex/2620}
4393 %    \begin{macrocode}
4394 \def\today{\ifcase\month\or
4395   January\or February\or March\or April\or May\or June\or
4396   July\or August\or September\or October\or November\or December\fi
4397   \space\number\day, \number\year}
4398 %    \end{macrocode}
4399 % \end{macro}
4401 % \subsection{Two column mode}
4403 % \begin{macro}{\columnsep}
4404 %    This gives the distance between two columns in two column mode.
4405 %    \begin{macrocode}
4406 \setlength\columnsep{10\p@}
4407 %    \end{macrocode}
4408 % \end{macro}
4410 % \begin{macro}{\columnseprule}
4411 %    This gives the width of the rule between two columns in two
4412 %    column mode. We have no visible rule.
4413 %    \begin{macrocode}
4414 \setlength\columnseprule{0\p@}
4415 %    \end{macrocode}
4416 % \end{macro}
4418 % \subsection{The page style}
4419 %    We have \pstyle{plain} pages in the document classes article and
4420 %    report unless the user specified otherwise. In the `book'
4421 %    document class we use the page style \pstyle{headings} by
4422 %    default. We use arabic pagenumbers.
4423 %    \begin{macrocode}
4424 %<!book>\pagestyle{plain}
4425 %<book>\pagestyle{headings}
4426 \pagenumbering{arabic}
4427 %    \end{macrocode}
4429 % \subsection{Single or double sided printing}
4432 % \changes{v1.2v}{1994/11/10}{removed typo}
4433 %    When the \Lopt{twoside} option wasn't specified, we don't try to
4434 %    make each page as long as all the others.
4435 %    \begin{macrocode}
4436 \if@twoside
4437 \else
4438   \raggedbottom
4440 %    \end{macrocode}
4441 %    When the \Lopt{twocolumn} option was specified we call
4442 %    |\twocolumn| to activate this mode. We try to make each column as
4443 %    long as the others, but call |sloppy| to make our life easier.
4444 %    \begin{macrocode}
4445 \if@twocolumn
4446   \twocolumn
4447   \sloppy
4448   \flushbottom
4449 %    \end{macrocode}
4450 %    Normally we call |\onecolumn| to initiate typesetting in one
4451 %    column.
4452 %    \begin{macrocode}
4453 \else
4454   \onecolumn
4456 %</article|report|book>
4457 %    \end{macrocode}
4459 % \changes{v1.3i}{1995/08/09}{Moved code for generic class options
4460 % leqno and fleqn to kernel file}
4462 % \Finale
4464 \endinput