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