summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/ntgclass
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-02-23 00:28:45 +0000
committerKarl Berry <karl@freefriends.org>2020-02-23 00:28:45 +0000
commitf24377c5813241f4296f4b9d5118dbde63f296ed (patch)
tree7ff345a605796219a6bbe7e1b034dbf5dc8b6802 /Master/texmf-dist/source/latex/ntgclass
parent518c6e7b162ab91af2be637db0700cf235c1513c (diff)
ntgclass (22feb20)
git-svn-id: svn://tug.org/texlive/trunk@53870 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/ntgclass')
-rw-r--r--Master/texmf-dist/source/latex/ntgclass/a4.dtx62
-rw-r--r--Master/texmf-dist/source/latex/ntgclass/a4.ins62
-rw-r--r--Master/texmf-dist/source/latex/ntgclass/brief.dtx291
-rw-r--r--Master/texmf-dist/source/latex/ntgclass/ntgclass.dtx349
-rw-r--r--Master/texmf-dist/source/latex/ntgclass/ntgclass.ins66
-rw-r--r--Master/texmf-dist/source/latex/ntgclass/rapport.dtx3560
-rw-r--r--Master/texmf-dist/source/latex/ntgclass/wijzer.dtx3560
7 files changed, 7611 insertions, 339 deletions
diff --git a/Master/texmf-dist/source/latex/ntgclass/a4.dtx b/Master/texmf-dist/source/latex/ntgclass/a4.dtx
index 4b58747e6d5..e480bfbde99 100644
--- a/Master/texmf-dist/source/latex/ntgclass/a4.dtx
+++ b/Master/texmf-dist/source/latex/ntgclass/a4.dtx
@@ -1,37 +1,34 @@
-% \iffalse meta-comment
+% \iffalse
+%
+% Copyright (C) 1994 -- 2020 by Nederlandstalige TeX Gebruikersgroep.
%
-% Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep.
-% All rights reserved.
-%
% This file is part of the NTG document classes distribution
% ----------------------------------------------------------
-%
+%
% It may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
+% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2003/12/01 or later.
-%
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008 or later.
+%
% This work has the LPPL maintenance status "maintained".
-%
+%
% The Current Maintainer of this work is Johannes Braams.
-%
+%
% The list of all files belonging to the NTG document classes
% distribution is given in the file `manifest.txt.
-%
+%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
+%
% \fi
% \CheckSum{153}
%
%\iffalse
-%% Style option `A4' to be used with LaTeX V2.09
-%% Copyright (C) 1990-2004 Johannes Braams, Nico Poppelier.
-%% All rights reserved.
-%%
+%
% We begin by identifying the version of this file on the terminal and
% in the transcript file.
%<*package>
@@ -44,7 +41,7 @@
\ProvidesFile{a4.dtx}
%</dtx>
%<package>\ProvidesPackage{a4}
- [2004/04/15 v1.2g A4 based page layout]
+ [2020/02/18 v1.2g A4 based page layout]
%
% Copying of this file is authorized only if either
% (1) you make absolutely no changes to your copy, including name, or
@@ -55,9 +52,9 @@
%
% Error reports for UNCHANGED versions please to:
% J.L. Braams
-% TeXniek at braams.cistron.nl
+% texniek at braams.xs4all.nl
% or: N.A.F.M. Poppelier
-% N.Poppelier at elsevier.nl
+% N.Poppelier@elsevier.nl
%
%
%\fi
@@ -78,6 +75,7 @@
% end of file}
% \changes{v1.2d}{1995/08/11}{Moved identification part to the top of
% the file}
+% \changes{v1.2g}{2020/02/18}{Updated address info of authors}
%
% \title{A style option to adapt the standard \LaTeX\ document
% styles to A4 paper\thanks{This file
@@ -86,15 +84,13 @@
%
% \author{Nico Poppelier\\
% \TeX nique \\
-% Washingtondreef 153\\
-% 3564 KD Utrecht\\
+% Utrecht\\
% \texttt{Poppelier@elsevier.nl}\\
% \and
% Johannes Braams\\
% \TeX niek\\
-% Kooienswater 62\\
-% 2715 AJ Zoetermeer\\
-% \texttt{JLBraams@cistron.nl}}
+% Zoetermeer\\
+% \texttt{JLBraams@texniek@braams.xs4all.nl}}
%
% \date{Printed \today}
%
@@ -599,20 +595,4 @@
%
% \Finale
%
-%% \CharacterTable
-%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%% Digits \0\1\2\3\4\5\6\7\8\9
-%% Exclamation \! Double quote \" Hash (number) \#
-%% Dollar \$ Percent \% Ampersand \&
-%% Acute accent \' Left paren \( Right paren \)
-%% Asterisk \* Plus \+ Comma \,
-%% Minus \- Point \. Solidus \/
-%% Colon \: Semicolon \; Less than \<
-%% Equals \= Greater than \> Question mark \?
-%% Commercial at \@ Left bracket \[ Backslash \\
-%% Right bracket \] Circumflex \^ Underscore \_
-%% Grave accent \` Left brace \{ Vertical bar \|
-%% Right brace \} Tilde \~}
-%%
-\endinput
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/ntgclass/a4.ins b/Master/texmf-dist/source/latex/ntgclass/a4.ins
index e5129610508..09300056a7a 100644
--- a/Master/texmf-dist/source/latex/ntgclass/a4.ins
+++ b/Master/texmf-dist/source/latex/ntgclass/a4.ins
@@ -1,52 +1,60 @@
-%%
+%
%% This file will generate fast loadable files and documentation
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1990-1999 Nederlandstalige TeX Gebruikersgroep.
-%%
-%% This file is part of the NTG document classes distribution
-%% ----------------------------------------------------------
-%%
+%% Copyright (C) 1993-2020
+%% The Nederlandstalige TeX Gebruikersgroep and any individual
+%% authors listed elsewhere in this file.
+%%
+%% This file is part of the NTG document classes distribution.
+%% -----------------------------------------------------------
+%%
%% It may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
+%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2003/12/01 or later.
-%%
-%% This work has the LPPL maintenance status "maintained".
-%%
-%% The Current Maintainer of this work is Johannes Braams.
-%%
-%% The list of all files belonging to the NTG document classes
-%% distribution is given in the file `manifest.txt.
-%%
-%% The list of derived (unpacked) files belonging to the distribution
-%% and covered by LPPL is defined by the unpacking scripts (with
-%% extension .ins) which are part of the distribution.
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%%
+%% This file has the LPPL maintenance status "maintained".
+%%
+%% As this file contains legal notices, it is NOT PERMITTED to modify
+%% this file in any way that the legal information placed into
+%% generated files is changed (i.e., the files generated when the
+%% original file is executed). This restriction does not apply if
+%% (parts of) the content is reused in a different WORK producing its
+%% own generated files.
+%%
+%% The list of all files belonging to the LaTeX base distribution is
+%% given in the file `manifest.txt'. See also `legal.txt' for additional
+%% information.
+%%
+%%
+%%
%%
%% --------------- start of docstrip commands ------------------
%%
-\input docstrip.tex % ignored in distribution
+
+\input docstrip.tex % ignored in distribution
\preamble
This is a generated file.
-Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep.
+Copyright (C) 1990-2020 Nederlandstalige TeX Gebruikersgroep.
All rights reserved.
This file was generated from file(s) of the NTG document classes distribution.
------------------------------------------------------------------------------
It may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either version 1.3
+conditions of the LaTeX Project Public License, either version 1.3c
of this license or (at your option) any later version.
The latest version of this license is in
http://www.latex-project.org/lppl.txt
-and version 1.3 or later is part of all distributions of LaTeX
-version 2003/12/01 or later.
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008 or later.
This work has the LPPL maintenance status "maintained".
@@ -81,4 +89,4 @@ extension .ins) which are part of the distribution.
\Msg{* Happy TeXing}
\Msg{***********************************************************}
-\endinput
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/ntgclass/brief.dtx b/Master/texmf-dist/source/latex/ntgclass/brief.dtx
index 96a1525bf08..fcc32e4e844 100644
--- a/Master/texmf-dist/source/latex/ntgclass/brief.dtx
+++ b/Master/texmf-dist/source/latex/ntgclass/brief.dtx
@@ -1,69 +1,44 @@
-% \iffalse meta-comment
-%
-% % \iffalse meta-comment
-% %
-% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep.
-% % All rights reserved.
-% %
-% % This file is part of the NTG document classes distribution
-% % ----------------------------------------------------------
-% %
-% % It may be distributed and/or modified under the
-% % conditions of the LaTeX Project Public License, either version 1.3
-% % of this license or (at your option) any later version.
-% % The latest version of this license is in
-% % http://www.latex-project.org/lppl.txt
-% % and version 1.3 or later is part of all distributions of LaTeX
-% % version 2003/12/01 or later.
-% %
-% % This work has the LPPL maintenance status "maintained".
-% %
-% % The Current Maintainer of this work is Johannes Braams.
-% %
-% % The list of all files belonging to the NTG document classes
-% % distribution is given in the file `manifest.txt.
-% %
-% % The list of derived (unpacked) files belonging to the distribution
-% % and covered by LPPL is defined by the unpacking scripts (with
-% % extension .ins) which are part of the distribution.
-% % \fi
-% \fi
-% \CheckSum{2200}
-%% \CharacterTable
-%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%% Digits \0\1\2\3\4\5\6\7\8\9
-%% Exclamation \! Double quote \" Hash (number) \#
-%% Dollar \$ Percent \% Ampersand \&
-%% Acute accent \' Left paren \( Right paren \)
-%% Asterisk \* Plus \+ Comma \,
-%% Minus \- Point \. Solidus \/
-%% Colon \: Semicolon \; Less than \<
-%% Equals \= Greater than \> Question mark \?
-%% Commercial at \@ Left bracket \[ Backslash \\
-%% Right bracket \] Circumflex \^ Underscore \_
-%% Grave accent \` Left brace \{ Vertical bar \|
-%% Right brace \} Tilde \~}
+% \iffalse
+%
+% Copyright (C) 1994 -- 2020 by Nederlandstalige TeX Gebruikersgroep.
+% Based on letter.dtx version 1.3a
+%
+% Copyright (C) 1994 LaTeX3 project, Frank Mittelbach
+% and Rainer Sch\"opf, all rights reserved.
+%
+% This file is part of the NTG document classes distribution
+% ----------------------------------------------------------
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work is Johannes Braams.
%
+% The list of all files belonging to the NTG document classes
+% distribution is given in the file `manifest.txt.
+%
+% The list of derived (unpacked) files belonging to the distribution
+% and covered by LPPL is defined by the unpacking scripts (with
+% extension .ins) which are part of the distribution.
+%
+% \fi
+% \CheckSum{2213}
% \iffalse
-%% Copyright (C) 1994 -- 1999 by Victor Eijkhout \and Johannes Braams
-%% Based on letter.dtx version 1.2i
-%% Copyright (C) 1994 LaTeX3 project, Frank Mittelbach
-%% and Rainer Sch\"opf, all rights reserved.
-%%
-%% This program can be redistributed and/or modified under the terms
-%% of the LaTeX Project Public License Distributed from CTAN
-%% archives in directory macros/latex/base/lppl.txt; either
-%% version 1 of the License, or any later version.
-%%
-% \section{Identification}
%
+% \section{Identification}
%
% This document class can only be used with \LaTeXe, so we make
% sure that an appropriate message is displayed when another \TeX{}
% format is used.
% \begin{macrocode}
-%<+brief>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<+brief>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
% \end{macrocode}
%
% Announce the Class name and its version.
@@ -72,7 +47,7 @@
%<*driver>
\ProvidesFile{brief.drv}
%</driver>
- [1999/03/03 v2.0r
+ [2020/02/18 v2.0s
%<+brief> NTG LaTeX document class]
% \end{macrocode}
%
@@ -124,6 +99,13 @@
\DoNotIndex{\trivlist,\typeout,\tw@}
\DoNotIndex{\vskip,\vspace,\year,\z@}
% \end{macrocode}
+% We do want an index, using linenumbers.
+% \changes{v2.0s}{2020/02/18}{Added \cs{CodelineIndex} to make sure a
+% \texttt{.idx} file is produced}
+% \begin{macrocode}
+\EnableCrossrefs
+\CodelineIndex
+% \end{macrocode}
% Produce a listing of the changes.
% \begin{macrocode}
\RecordChanges
@@ -142,12 +124,12 @@
% \end{macrocode}
% Some commonly used abbreviations
% \begin{macrocode}
-\newcommand*{\Lopt}[1]{\textsf{#1}}
-\newcommand*{\Lenv}[1]{\textsf{#1}}
-\newcommand*{\file}[1]{\texttt{#1}}
-\newcommand*{\cls}[1]{\texttt{#1}}
-\newcommand*{\Lcount}[1]{\textsl{\small#1}}
-\newcommand*{\pstyle}[1]{\textsl{#1}}
+\newcommand*\Lopt[1]{\textsf{#1}}
+\newcommand*\Lenv[1]{\textsf{#1}}
+\newcommand*\file[1]{\texttt{#1}}
+\newcommand*\cls[1]{\texttt{#1}}
+\newcommand*\Lcount[1]{\textsl{\small#1}}
+\newcommand*\pstyle[1]{\textsl{#1}}
% \end{macrocode}
% We also want the full details.
% \changes{v2.0c}{1994/06/15}{Removed another remnant of
@@ -156,6 +138,7 @@
\begin{document}
\DocInput{brief.dtx}
\PrintIndex
+\PrintChanges
\end{document}
%</driver>
% \end{macrocode}
@@ -166,6 +149,8 @@
% \changes{v2.0l}{1995/08/10}{Use \cs{hb@xt@} instead of \cs{hbox}
% \texttt{to}}
% \changes{v2.0q}{1997/09/09}{Added a few more synonimes for commands}
+% \changes{v2.0s}{2020/02/18}{Synchronised with the standard document
+% classes}
%
%
% \author{Victor Eijkhout \and Johannes Braams}
@@ -468,29 +453,41 @@
% \begin{macrocode}
\normalsize
% \end{macrocode}
+% We use |\MakeRobust| instead of |\DeclareRobustCommand| above to
+% avoid a log entry for the redefinition.
+% But if we are running in a rollback situation
+% (prior to 2015) we don't touch it.
+% \changes{v2.0s}{2020/02/18}{Roll back handling (gh/201)}
+% \begin{macrocode}
+\ifx\MakeRobust\@undefined \else
+ \MakeRobust\normalsize
+\fi
+% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\small}
%
% This is similar to |\normalsize|.
+% \changes{v2.0s}{2020/02/18}{Use \cs{DeclareRobustCommand} instead of
+% \cs{newcommand*}}
% \begin{macrocode}
\ifcase\@ptsize
- \newcommand*\small{%
+ \DeclareRobustCommand\small{%
\@setfontsize\small\@ixpt{11}%
\abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus2\p@
\belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
\belowdisplayskip \abovedisplayskip}
\or
- \newcommand*\small{%
+ \DeclareRobustCommand\small{%
\@setfontsize\small\@xpt\@xiipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
\belowdisplayskip \abovedisplayskip}
\or
- \newcommand*\small{%
+ \DeclareRobustCommand\small{%
\@setfontsize\small\@xipt{13.6}%
\abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
\abovedisplayshortskip \z@ \@plus3\p@
@@ -505,21 +502,21 @@
% This is similar to |\normalsize|.
% \begin{macrocode}
\ifcase\@ptsize
- \newcommand*\footnotesize{%
+ \DeclareRobustCommand\footnotesize{%
\@setfontsize\footnotesize\@viiipt{9.5}%
\abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus\p@
\belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
\belowdisplayskip \abovedisplayskip}
\or
- \newcommand*\footnotesize{%
+ \DeclareRobustCommand\footnotesize{%
\@setfontsize\footnotesize\@ixpt{11}%
\abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus\p@
\belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
\belowdisplayskip \abovedisplayskip}
\or
- \newcommand*\footnotesize{%
+ \DeclareRobustCommand\footnotesize{%
\@setfontsize\footnotesize\@xpt\@xiipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
@@ -541,28 +538,28 @@
% lists alone.
% \begin{macrocode}
\ifcase\@ptsize
- \newcommand*\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
- \newcommand*\tiny{\@setfontsize\tiny\@vpt\@vipt}
- \newcommand*\large{\@setfontsize\large\@xiipt{14}}
- \newcommand*\Large{\@setfontsize\Large\@xivpt{18}}
- \newcommand*\LARGE{\@setfontsize\LARGE\@xviipt{22}}
- \newcommand*\huge{\@setfontsize\huge\@xxpt{25}}
- \newcommand*\Huge{\@setfontsize\Huge\@xxvpt{30}}
+ \DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
+ \DeclareRobustCommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
+ \DeclareRobustCommand\large{\@setfontsize\large\@xiipt{14}}
+ \DeclareRobustCommand\Large{\@setfontsize\Large\@xivpt{18}}
+ \DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+ \DeclareRobustCommand\huge{\@setfontsize\huge\@xxpt{25}}
+ \DeclareRobustCommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
\or
- \newcommand*\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
- \newcommand*\tiny{\@setfontsize\tiny\@vipt\@viipt}
- \newcommand*\large{\@setfontsize\large\@xiipt{14}}
- \newcommand*\Large{\@setfontsize\Large\@xivpt{18}}
- \newcommand*\LARGE{\@setfontsize\LARGE\@xviipt{22}}
- \newcommand*\huge{\@setfontsize\huge\@xxpt{25}}
- \newcommand*\Huge{\@setfontsize\Huge\@xxvpt{30}}
+ \DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
+ \DeclareRobustCommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
+ \DeclareRobustCommand\large{\@setfontsize\large\@xiipt{14}}
+ \DeclareRobustCommand\Large{\@setfontsize\Large\@xivpt{18}}
+ \DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+ \DeclareRobustCommand\huge{\@setfontsize\huge\@xxpt{25}}
+ \DeclareRobustCommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
\or
- \newcommand*\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
- \newcommand*\tiny{\@setfontsize\tiny\@vipt\@viipt}
- \newcommand*\large{\@setfontsize\large\@xivpt{18}}
- \newcommand*\Large{\@setfontsize\Large\@xviipt{22}}
- \newcommand*\LARGE{\@setfontsize\LARGE\@xxpt{25}}
- \newcommand*\huge{\@setfontsize\huge\@xxvpt{30}}
+ \DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
+ \DeclareRobustCommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
+ \DeclareRobustCommand\large{\@setfontsize\large\@xivpt{18}}
+ \DeclareRobustCommand\Large{\@setfontsize\Large\@xviipt{22}}
+ \DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xxpt{25}}
+ \DeclareRobustCommand\huge{\@setfontsize\huge\@xxvpt{30}}
\let\Huge=\huge
\fi
% \end{macrocode}
@@ -1073,7 +1070,7 @@
% \begin{macro}{\name}
% \begin{macro}{\fromname}
% \begin{macrocode}
-\def\name#1{\def\fromname{#1}}
+\newcommand*\name[1]{\def\fromname{#1}}
\def\fromname{}
% \end{macrocode}
% \end{macro}
@@ -1103,7 +1100,7 @@
% \begin{macro}{\location}
% \begin{macro}{\fromlocation}
% \begin{macrocode}
-\newcommand*{\location}[1]{\def\fromlocation{#1}}
+\newcommand*\location[1]{\def\fromlocation{#1}}
\def\fromlocation{}
% \end{macrocode}
% \end{macro}
@@ -1111,7 +1108,7 @@
% \begin{macro}{\telephone}
% \begin{macro}{\telephonenum}
% \begin{macrocode}
-\newcommand*{\telephone}[1]{\def\telephonenum{#1}}
+\newcommand*\telephone[1]{\def\telephonenum{#1}}
\def\telephonenum{}
% \end{macrocode}
% \end{macro}
@@ -1120,7 +1117,7 @@
% \begin{macro}{\makelabels}
% The |\makelabels| declaration causes mailing labels to be made.
% \begin{macrocode}
-\newcommand*{\makelabels}{%
+\newcommand*\makelabels{%
% \end{macrocode}
% At the beginning of the document, we need to activate the
% |\@mlabel| and |\@startlabels| commands, as well as write
@@ -1278,7 +1275,7 @@
% \begin{macro}{\adresveld}
% This command formats the address window.
% \begin{macrocode}
-\newcommand*{\adresveld}{%
+\newcommand*\adresveld{%
\hbox{}\kern-\topskip
\kern\@vensterskip
\begingroup
@@ -1612,20 +1609,28 @@
%
% \begin{macro}{\stopbreaks}
% \begin{macrocode}
-\def\stopbreaks{\interlinepenalty \@M
+\newcommand*\stopbreaks{\interlinepenalty \@M
\def\par{\@@par\nobreak}\let\\=\@nobreakcr
\let\vspace\@nobreakvspace}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\nobreakvspace}
-% \begin{macro}{\nobreakvspacex}
-% \begin{macro}{\nobreakcr}
+% \begin{macro}{\@nobreakvspace}
+% \changes{v2.0s}{2020/02/18}{Made robust (\LaTeX{} pr/2049)}
+% \begin{macro}{\@nobreakvspacex}
+% \begin{macro}{\@nobreakcr}
+% \begin{macrocode}
+\DeclareRobustCommand\@nobreakvspace
+ {\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
+% \end{macrocode}
+%
% \begin{macrocode}
-\def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
-
-\def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else
- \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
+\def\@nobreakvspacex#1{%
+ \ifvmode
+ \nobreak\vskip #1\relax
+ \else
+ \@bsphack\vadjust{\nobreak\vskip #1}\@esphack
+ \fi}
% \end{macrocode}
%
% \changes{v2.0p}{1997/03/02}{Added setting of \cs{reserved@e} and
@@ -1812,11 +1817,11 @@
% \changes{v2.0l}{1995/08/10}{replace \cs{reset@font} with
% \cs{normalfont}; remove \cs{rm}}
% \begin{macrocode}
-\newcommand*{\bijlage}[1]{%
+\newcommand*\bijlage[1]{%
\par\noindent
\parbox[t]{\textwidth}{\@hangfrom{\normalfont\bijlagetekst\ }%
\ignorespaces #1\strut}\par}
-\newcommand*{\bijlagen}[1]{%
+\newcommand*\bijlagen[1]{%
\par\noindent
\parbox[t]{\textwidth}{\@hangfrom{\normalfont\bijlagentekst\ }%
\ignorespaces #1\strut}\par}
@@ -1830,7 +1835,7 @@
% The only thing |\ps| needs to do is call |\startbreaks|,
% which allows page breaking again.
% \begin{macrocode}
-\def\ps{\par\startbreaks}
+\newcommand*\ps{\par\startbreaks}
% \end{macrocode}
% \end{macro}
%
@@ -1855,7 +1860,7 @@
% |\protect\standardreturnaddress|.
% \end{itemize}
% \begin{macrocode}
-\def\stopletter{}
+\newcommand*\stopletter{}
% \end{macrocode}
% \end{macro}
%
@@ -1877,7 +1882,7 @@
%
% \begin{macro}{\returnaddress}
% \begin{macrocode}
-\def\returnaddress{}
+\newcommand*\returnaddress{}
% \end{macrocode}
% \end{macro}
%
@@ -1894,7 +1899,7 @@
% labels.
% \changes{v2.0l}{1995/08/10}{changed value of \cs{columnsep} by 1pt}
% \begin{macrocode}
-\newcommand*{\startlabels}{\labelcount\z@
+\newcommand*\startlabels{\labelcount\z@
\pagestyle{empty}%
\let\@texttop\relax
\topmargin -50\p@
@@ -1916,7 +1921,7 @@
\lineskip \z@
\boxmaxdepth \z@
\parindent \z@
- \twocolumn\relax}
+ \twocolumn\relax}
% \end{macrocode}
% \end{macro}
%
@@ -1943,7 +1948,7 @@
% \changes{v2.0l}{1995/08/10}{changed width of the labels slightly to
% prevent \LaTeX\ stuffing two on each line}
% \begin{macrocode}
-\newcommand*{\mlabel}[2]{%
+\newcommand*\mlabel[2]{%
\parbox[b][2in][c]{262\p@}{\strut\ignorespaces #2}%
}
% \end{macrocode}
@@ -2136,10 +2141,10 @@
% (\file{ltlists.dtx}), but their representation is changed here.
%
% \begin{macrocode}
-\renewcommand*{\theenumi}{\@arabic\c@enumi}
-\renewcommand*{\theenumii}{\@alph\c@enumii}
-\renewcommand*{\theenumiii}{\@roman\c@enumiii}
-\renewcommand*{\theenumiv}{\@Alph\c@enumiv}
+\renewcommand*\theenumi {\@arabic\c@enumi}
+\renewcommand*\theenumii {\@alph\c@enumii}
+\renewcommand*\theenumiii{\@roman\c@enumiii}
+\renewcommand*\theenumiv {\@Alph\c@enumiv}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2153,10 +2158,10 @@
% The label for each item is generated by the commands
% |\labelenumi| ... |\labelenumiv|.
% \begin{macrocode}
-\newcommand*{\labelenumi}{\theenumi.}
-\newcommand*{\labelenumii}{(\theenumii)}
-\newcommand*{\labelenumiii}{\theenumiii.}
-\newcommand*{\labelenumiv}{\theenumiv.}
+\newcommand*\labelenumi {\theenumi.}
+\newcommand*\labelenumii {(\theenumii)}
+\newcommand*\labelenumiii{\theenumiii.}
+\newcommand*\labelenumiv {\theenumiv.}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2170,9 +2175,9 @@
% |\ref| command when referencing an item of the Nth level of an
% enumerated list.
% \begin{macrocode}
-\renewcommand*{\p@enumii}{\theenumi}
-\renewcommand*{\p@enumiii}{\theenumi(\theenumii)}
-\renewcommand*{\p@enumiv}{\p@enumiii\theenumiii}
+\renewcommand*\p@enumii {\theenumi}
+\renewcommand*\p@enumiii{\theenumi(\theenumii)}
+\renewcommand*\p@enumiv {\p@enumiii\theenumiii}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2197,11 +2202,29 @@
% dot.}
% \changes{v2.0p}{1997/03/02}{Now also \cs{textasteriskcentered}}
% \begin{macrocode}
-\newcommand*{\labelitemi}{\textbullet}
-\newcommand*{\labelitemii}{\normalfont\bfseries \textendash}
-\newcommand*{\labelitemiii}{\textasteriskcentered}
-\newcommand*{\labelitemiv}{\textperiodcentered}
+\newcommand*\labelitemi {\labelitemfont \textbullet}
+\newcommand*\labelitemii {\labelitemfont \bfseries \textendash}
+\newcommand*\labelitemiii{\labelitemfont \textasteriskcentered}
+\newcommand*\labelitemiv {\labelitemfont \textperiodcentered}
% \end{macrocode}
+%
+% \begin{macro}{\labelitemfont}
+% The default definition for \cs{labelitemfont} is to reset the
+% font to \cs{normalfont} so that always the same symbol is
+% produced regardless of surrounding conditions.
+%
+% \changes{v2.0s}{2020/02/18}{Normalize label fonts}
+% A possible alternative would be
+%\begin{verbatim}
+%\renewcommand\labelitemfont{%
+% \fontseries\seriesdefault
+% \fontshape\shapedefault\selectfont}
+%\end{verbatim}
+% which resets series and shape doesn't touch the family.
+% \begin{macrocode}
+\newcommand\labelitemfont{\normalfont}
+% \end{macrocode}
+% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
@@ -2376,7 +2399,7 @@
% \begin{macro}{\theequation}
% The equation counter will be typeset using arabic numbers.
% \begin{macrocode}
-\renewcommand*{\theequation}{\@arabic\c@equation}
+\renewcommand*\theequation{\@arabic\c@equation}
% \end{macrocode}
% \end{macro}
%
@@ -2475,7 +2498,7 @@
% a little negative vertical skip, then we put the rule and make
% sure we end up at the same point where we begun this operation.
% \begin{macrocode}
-\renewcommand*{\footnoterule}{%
+\renewcommand*\footnoterule{%
\kern-\p@
\hrule \@width .4\columnwidth
\kern .6\p@}
@@ -2552,7 +2575,7 @@
% \begin{macro}{\dutchbrief}
% This stores dutch strings.
% \begin{macrocode}
-\newcommand*{\dutchbrief}{%
+\newcommand*\dutchbrief{%
\def\uwbrieftekst{Uw brief van}
\def\uwkenmerktekst{Uw kenmerk}
\def\onskenmerktekst{Ons kenmerk}
@@ -2575,7 +2598,7 @@
% This stores English strings.
% \changes{v2.0i}{1994/12/30}{Repaired typo}
% \begin{macrocode}
-\newcommand*{\englishbrief}{%
+\newcommand*\englishbrief{%
\def\uwbrieftekst{Your letter of}
\def\uwkenmerktekst{Your reference}
\def\onskenmerktekst{Our reference}
@@ -2604,7 +2627,7 @@
% \begin{macro}{\americanbrief}
% This stores American english strings
% \begin{macrocode}
-\newcommand*{\americanbrief}{%
+\newcommand*\americanbrief{%
\def\uwbrieftekst{Your letter of}
\def\uwkenmerktekst{Your reference}
\def\onskenmerktekst{Our reference}
@@ -2626,7 +2649,7 @@
% \begin{macro}{\germanbrief}
% This stores the German versions of the strings.
% \begin{macrocode}
-\newcommand*{\germanbrief}{%
+\newcommand*\germanbrief{%
\def\uwbrieftekst{Ihr Brief vom}
\def\uwkenmerktekst{Ihr Zeichen}
\def\onskenmerktekst{Unser Zeichen}
@@ -2648,7 +2671,7 @@
% \begin{macro}{\frenchbrief}
% And finally to store the french strings
% \begin{macrocode}
-\newcommand*{\frenchbrief}{%
+\newcommand*\frenchbrief{%
\def\uwbrieftekst{Votre lettre du}
\def\uwkenmerktekst{Vos r\'ef\'erences:}
\def\onskenmerktekst{Nos r\'ef\'erences:}
diff --git a/Master/texmf-dist/source/latex/ntgclass/ntgclass.dtx b/Master/texmf-dist/source/latex/ntgclass/ntgclass.dtx
index 53b1064b112..b8322eb68f5 100644
--- a/Master/texmf-dist/source/latex/ntgclass/ntgclass.dtx
+++ b/Master/texmf-dist/source/latex/ntgclass/ntgclass.dtx
@@ -1,62 +1,41 @@
-% \iffalse meta-comment
-%
-% % \iffalse meta-comment
-% %
-% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep.
-% % All rights reserved.
-% %
-% % This file is part of the NTG document classes distribution
-% % ----------------------------------------------------------
-% %
-% % It may be distributed and/or modified under the
-% % conditions of the LaTeX Project Public License, either version 1.3
-% % of this license or (at your option) any later version.
-% % The latest version of this license is in
-% % http://www.latex-project.org/lppl.txt
-% % and version 1.3 or later is part of all distributions of LaTeX
-% % version 2003/12/01 or later.
-% %
-% % This work has the LPPL maintenance status "maintained".
-% %
-% % The Current Maintainer of this work is Johannes Braams.
-% %
-% % The list of all files belonging to the NTG document classes
-% % distribution is given in the file `manifest.txt.
-% %
-% % The list of derived (unpacked) files belonging to the distribution
-% % and covered by LPPL is defined by the unpacking scripts (with
-% % extension .ins) which are part of the distribution.
-% % \fi
-% \fi
-% \CheckSum{3726}
% \iffalse
-%% Copyright (C) 1994 -- 2004 by Victor Eijkhout and Johannes Braams
-%% Based on classes.dtx
-%% Copyright (C) 1999 LaTeX3 project, all rights reserved.
-%%
-%% \CharacterTable
-%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%% Digits \0\1\2\3\4\5\6\7\8\9
-%% Exclamation \! Double quote \" Hash (number) \#
-%% Dollar \$ Percent \% Ampersand \&
-%% Acute accent \' Left paren \( Right paren \)
-%% Asterisk \* Plus \+ Comma \,
-%% Minus \- Point \. Solidus \/
-%% Colon \: Semicolon \; Less than \<
-%% Equals \= Greater than \> Question mark \?
-%% Commercial at \@ Left bracket \[ Backslash \\
-%% Right bracket \] Circumflex \^ Underscore \_
-%% Grave accent \` Left brace \{ Vertical bar \|
-%% Right brace \} Tilde \~}
%
+% Copyright (C) 1994 -- 2020 by Nederlandstalige TeX Gebruikersgroep.
+% Based on classes.dtx
+% Copyright (C) 1999 LaTeX3 project, all rights reserved.
+%
+% This file is part of the NTG document classes distribution
+% ----------------------------------------------------------
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work is Johannes Braams.
+%
+% The list of all files belonging to the NTG document classes
+% distribution is given in the file `manifest.txt.
+%
+% The list of derived (unpacked) files belonging to the distribution
+% and covered by LPPL is defined by the unpacking scripts (with
+% extension .ins) which are part of the distribution.
+%
+% \fi
+% \CheckSum{3782}
+%\iffalse
% \section{Identification}
%
% These document classes can only be used with \LaTeXe, so we make
% sure that an appropriate message is displayed when another \TeX{}
% format is used.
% \begin{macrocode}
-%<artikel|rapport|boek>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<artikel|rapport|boek>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
% \end{macrocode}
%
% Announce the Class name and its version:
@@ -80,7 +59,7 @@
%<*driver>
\ProvidesFile{ntgclass.drv}
%</driver>
- [2004/06/07 v2.1a
+ [2020/02/22 v2.1c
%<artikel|rapport|boek> NTG LaTeX document class]
%<10pt|11pt|12pt> NTG LaTeX file (size option)]
% \end{macrocode}
@@ -178,8 +157,6 @@
% \end{macrocode}
% \fi
%
-%
-%
% \changes{v2.0b}{1994/02/02}{Removed typos that were found in
% classes.dtx, synced with that file}
% \changes{v2.0d}{1994/02/23}{Fixed some errors in the documentation}
@@ -196,13 +173,15 @@
% \changes{v2.0p}{1995/08/10}{use \cs{hb@xt@} instead of \cs{hbox}
% \texttt{to}}
% \changes{v2.0x}{1997/09/08}{Repaired a few documentation bugs}
+% \changes{v2.1c}{2020/02/18}{Update to synchronize with classes.dtx}
+% \changes{v2.1c}{2020/02/18}{Various commands made robust}
%
% \title{NTG Document Classes for \LaTeX{} version 2e\thanks{This file
% has version number \fileversion, last revised \filedate.}}
%
% \author{%
% Copyright (C) 1992 by Leslie Lamport \and
-% Copyright (C) 1994,1999 by Victor Eijkhout \and Johannes Braams
+% Copyright (C) 1994-2020 by Victor Eijkhout \and Johannes Braams
% }
% \date{\filedate}
%
@@ -659,6 +638,16 @@
% \begin{macrocode}
\normalsize
% \end{macrocode}
+% We use |\MakeRobust| instead of |\DeclareRobustCommand| above to
+% avoid a log entry for the redefinition.
+% But if we are running in a rollback situation
+% (prior to 2015) we don't touch it.
+% \changes{v2.1c}{2020/02/18}{Roll back handling (gh/201)}
+% \begin{macrocode}
+\ifx\MakeRobust\@undefined \else
+ \MakeRobust\normalsize
+\fi
+% \end{macrocode}
% \end{macro}
% \end{macro}
%
@@ -666,8 +655,10 @@
% \changes{v2.0f}{1994/04/18}{Use \cs{newcommand} instead of
% \cs{renewcommand} because of change in the \LaTeX kernel}
% This is similar to |\normalsize|.
+% \changes{v2.1c}{2020/02/18}{Use \cs{DeclareRobustCommand} instead of
+% \cs{newcommand*}}
% \begin{macrocode}
-\newcommand*\small{%
+\DeclareRobustCommand\small{%
%<*10pt>
\@setfontsize\small\@ixpt{11}%
\abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
@@ -696,7 +687,7 @@
% \cs{renewcommand} because of change in the \LaTeX kernel}
% This is similar to |\normalsize|.
% \begin{macrocode}
-\newcommand*\footnotesize{%
+\DeclareRobustCommand\footnotesize{%
%<*10pt>
\@setfontsize\footnotesize\@viiipt{9.5}%
\abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
@@ -734,30 +725,30 @@
% lists alone.
% \begin{macrocode}
%<*10pt>
-\newcommand*\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
-\newcommand*\tiny{\@setfontsize\tiny\@vpt\@vipt}
-\newcommand*\large{\@setfontsize\large\@xiipt{14}}
-\newcommand*\Large{\@setfontsize\Large\@xivpt{18}}
-\newcommand*\LARGE{\@setfontsize\LARGE\@xviipt{22}}
-\newcommand*\huge{\@setfontsize\huge\@xxpt{25}}
-\newcommand*\Huge{\@setfontsize\Huge\@xxvpt{30}}
+\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
+\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
+\DeclareRobustCommand\large{\@setfontsize\large\@xiipt{14}}
+\DeclareRobustCommand\Large{\@setfontsize\Large\@xivpt{18}}
+\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+\DeclareRobustCommand\huge{\@setfontsize\huge\@xxpt{25}}
+\DeclareRobustCommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
%</10pt>
%<*11pt>
-\newcommand*\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
-\newcommand*\tiny{\@setfontsize\tiny\@vipt\@viipt}
-\newcommand*\large{\@setfontsize\large\@xiipt{14}}
-\newcommand*\Large{\@setfontsize\Large\@xivpt{18}}
-\newcommand*\LARGE{\@setfontsize\LARGE\@xviipt{22}}
-\newcommand*\huge{\@setfontsize\huge\@xxpt{25}}
-\newcommand*\Huge{\@setfontsize\Huge\@xxvpt{30}}
+\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
+\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
+\DeclareRobustCommand\large{\@setfontsize\large\@xiipt{14}}
+\DeclareRobustCommand\Large{\@setfontsize\Large\@xivpt{18}}
+\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+\DeclareRobustCommand\huge{\@setfontsize\huge\@xxpt{25}}
+\DeclareRobustCommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
%</11pt>
%<*12pt>
-\newcommand*\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
-\newcommand*\tiny{\@setfontsize\tiny\@vipt\@viipt}
-\newcommand*\large{\@setfontsize\large\@xivpt{18}}
-\newcommand*\Large{\@setfontsize\Large\@xviipt{22}}
-\newcommand*\LARGE{\@setfontsize\LARGE\@xxpt{25}}
-\newcommand*\huge{\@setfontsize\huge\@xxvpt{30}}
+\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
+\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
+\DeclareRobustCommand\large{\@setfontsize\large\@xivpt{18}}
+\DeclareRobustCommand\Large{\@setfontsize\Large\@xviipt{22}}
+\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xxpt{25}}
+\DeclareRobustCommand\huge{\@setfontsize\huge\@xxvpt{30}}
\let\Huge=\huge
%</12pt>
%</10pt|11pt|12pt>
@@ -1692,7 +1683,7 @@
% \begin{macrocode}
\renewcommand*\ps@plain{%
% \end{macrocode}
-% The running head are empty in this pagestyle, the page number
+% The running heads are empty in this pagestyle, the page number
% appears in the running foot.
% \begin{macrocode}
\let\@oddhead\@empty\let\@evenhead\@empty
@@ -2361,6 +2352,8 @@
% This |{| used to be after the argument to |\@hangfrom| but was
% moved here to allow commands such as |\MakeUppercase| to be used
% at the end of |#6|.
+% \changes{v2.1b}{2004/08/14}{No longer pass \cs{toc@font} through the
+% \texttt{.aux} file as this upsets pdf\LaTeX}
% \begin{macrocode}
#6{%
%<*type1|type3>
@@ -2377,7 +2370,7 @@
\else
\protect\numberline{\csname the#1\endcsname}%
\fi
- \toc@font#2 #7}%
+ #7}%
\else
\def\@svsechd{#6\hskip #3\relax
\@svsec #8\csname #1mark\endcsname{#7}%
@@ -2386,7 +2379,7 @@
\else
\protect\numberline{\csname the#1\endcsname}%
\fi
- \toc@font#2 #7}}%
+ #7}}%
\fi
\@xsect{#5}}
% \end{macrocode}
@@ -2675,12 +2668,14 @@
% part, otherwise it is unnumbered.
% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
% \cs{normalfont}}
+% \changes{v2.1b}{2004/08/16}{use \cs{numberline} instead of a fixed
+% space of \texttt{1 em}}
% \begin{macrocode}
%<*artikel>
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >\m@ne
\refstepcounter{part}%
- \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+ \addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
@@ -2718,12 +2713,14 @@
% When \Lcount{secnumdepth} is larger than $-2$ for the
% document class rapport and boek, we have a numbered
% part, otherwise it is unnumbered.
+% \changes{v2.1b}{2004/08/16}{use \cs{numberline} instead of a fixed
+% space of \texttt{1 em}}
% \begin{macrocode}
%<*rapport|boek>
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
- \addcontentsline{toc}{part}{\thepart\hspace{1em}\toc@case{#1}}%
+ \addcontentsline{toc}{part}{\protect\numberline{\thepart}{#1}}%
\else
\addcontentsline{toc}{part}{\toc@case{#1}}%
\fi
@@ -2743,11 +2740,13 @@
% When this is a numbered part we have to print the number. We have
% to expand |\partname| before |\uppercase| is called, therefore we
% use a temporary control sequence that, when called will execute
-% |\uppercase| on the contents of |\partname|.
+% |\MakeUppercase| on the contents of |\partname|.
+% \changes{v2.1c}{2020/02/22}{Use \cs{MakeUppercase} instead of
+% \cs{uppercase}}
% \begin{macrocode}
\ifnum \c@secnumdepth >-2\relax
\Large\PartFont
- \edef\@tempa{\noexpand\uppercase{\partname}}\@tempa
+ \edef\@tempa{\noexpand\MakeUppercase{\partname}}\@tempa
\nobreakspace\thepart
\par
% \end{macrocode}
@@ -2756,7 +2755,7 @@
% \begin{macrocode}
\vskip 20\p@
\fi
- \Large \PartFont \uppercase{#2}\par}%
+ \Large \PartFont \MakeUppercase{#2}\par}%
\@endpart}
%</rapport|boek>
% \end{macrocode}
@@ -2868,6 +2867,8 @@
% inform the user that a new chapter is about to be typeset by
% writing a message to the terminal.
% \changes{v2.0k}{1994/06/08}{Removed carriage return behind +boek}
+% \changes{v2.1b}{2004/08/14}{No longer pass \cs{toc@font} through the
+% \texttt{.aux} file as this upsets pdf\LaTeX}
% \begin{macrocode}
\def\@chapter[#1]#2{%
\ifnum \c@secnumdepth >\m@ne
@@ -2875,14 +2876,14 @@
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addcontentsline{toc}{chapter}%
- {\protect\numberline{\thechapter}\toc@font0 #1}%
+ {\protect\numberline{\thechapter}#1}%
%<*boek>
\else
- \addcontentsline{toc}{chapter}{\toc@font0 #1}%
+ \addcontentsline{toc}{chapter}{#1}%
\fi
%</boek>
\else
- \addcontentsline{toc}{chapter}{\toc@font0 #1}%
+ \addcontentsline{toc}{chapter}{#1}%
\fi
% \end{macrocode}
% After having written an entry to the table of contents we store
@@ -3417,15 +3418,20 @@
% We want to have different label positioning on different levels of
% list. To acheive this we have to redefine the \Lenv{enumerate}
% environment.
-%
+% \changes{v2.1c}{2020/02/21}{Use \cs{thr@@}}
% \begin{macrocode}
\renewenvironment{enumerate}{%
- \ifnum \@enumdepth >3
+ \ifnum \@enumdepth >\thr@@
\@toodeep
\else
\advance\@enumdepth \@ne
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
- \list{\csname label\@enumctr\endcsname}
+% \end{macrocode}
+% \changes{v2.1c}{2020/02/21}{Use \cs{expandafter}}
+% \begin{macrocode}
+ \expandafter
+ \list
+ \csname label\@enumctr\endcsname
{\usecounter{\@enumctr}%
%<type1> \ifnum \@listdepth=1
%<*type1|type3>
@@ -3464,29 +3470,54 @@
% \changes{v2.0u}{1996/09/23}{Did similar for the bullet and centered
% dot.}
% \changes{v2.0v}{1997/03/02}{Now also \cs{textasteriskcentered}}
+% \changes{v2.1c}{2020/02/18}{Use \cs{labelitemfont}}
+% \begin{macrocode}
+\newcommand\labelitemi {\labelitemfont \textbullet}
+\newcommand\labelitemii {\labelitemfont \bfseries \textendash}
+\newcommand\labelitemiii{\labelitemfont \textasteriskcentered}
+\newcommand\labelitemiv {\labelitemfont \textperiodcentered}
+% \end{macrocode}
+%
+% \begin{macro}{\labelitemfont}
+% The default definition for \cs{labelitemfont} is to reset the
+% font to \cs{normalfont} so that always the same symbol is
+% produced regardless of surrounding conditions.
+%
+% \changes{v2.1c}{2020/02/18}{Normalize label fonts}
+% A possible alternative would be
+%\begin{verbatim}
+%\renewcommand\labelitemfont{%
+% \fontseries\seriesdefault
+% \fontshape\shapedefault\selectfont}
+%\end{verbatim}
+% which resets series and shape doesn't touch the family.
% \begin{macrocode}
-\newcommand*{\labelitemi}{\textbullet}
-\newcommand*{\labelitemii}{\normalfont\bfseries \textendash}
-\newcommand*{\labelitemiii}{\textasteriskcentered}
-\newcommand*{\labelitemiv}{\textperiodcentered}
+\newcommand\labelitemfont{\normalfont}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{environment}{itemize}
% We want to have differen label positioning on different levels of
% list. To acheive this we have to redefine the \Lenv{itemize}
% environment.
+% \changes{v2.1c}{2020/02/21}{Use \cs{thr@@}}
% \begin{macrocode}
\renewenvironment{itemize}{%
- \ifnum \@itemdepth >3
+ \ifnum \@itemdepth >\thr@@
\@toodeep
\else
\advance\@itemdepth \@ne
\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
- \list{\csname\@itemitem\endcsname}%
+% \end{macrocode}
+% \changes{v2.1c}{2020/02/21}{Use \cs{expandafter}}
+% \begin{macrocode}
+ \expandafter
+ \list
+ \csname\@itemitem\endcsname
{%
%<type1> \ifnum \@listdepth=1\relax
%<*type1|type3>
@@ -3526,8 +3557,10 @@
% To change the formatting of the label, you must redefine
% |\descriptionlabel|.
%
+% \changes{v2.1c}{2020/02/18}{Inserted \cs{normalfont}}
% \begin{macrocode}
-\newcommand*\descriptionlabel[1]{\hspace\labelsep \bfseries #1}
+\newcommand*\descriptionlabel[1]{\hspace\labelsep
+ \normalfont\bfseries #1}
% \end{macrocode}
% \end{macro}
%
@@ -3607,12 +3640,17 @@
%
% Note that this environment is not defined for boeks.
% \changes{v2.0e}{1994/03/19}{Use \cs{SectFont} for the abstract title}
+% \changes{v2.1c}{2020/02/18}{Added setting of \cs{beginparpenalty}
+% to discourage page break before abstract heading and setting of
+% \cs{@endparpenalty} to avoid page break after abstract heading.}
% \begin{macrocode}
%<!boek>\if@titlepage
\newenvironment{abstract}{%
\titlepage
\null\vfil
- \hbox{\SectFont \abstractname}
+ \@beginparpenalty\@lowpenalty
+ \hbox{\SectFont \abstractname}%
+ \@endparpenalty\@M
\noindent\ignorespaces}
{\par\vfil\null\endtitlepage}
% \end{macrocode}
@@ -4405,10 +4443,22 @@
% information.
% \changes{v2.1a}{2004/06/07}{Moved \cs{@mkboth} out of heading arg
% (\LaTeX{} pr/3285)}
+% \changes{v2.1c}{2020/02/18}{Explain why \cs{@mkboth} is inside the heading
+% arg for \cs{tableofcontents} (\LaTeX{} pr/3285 and pr/3984)}
% \begin{macrocode}
\chapter*{\contentsname}%
%</rapport|boek>
%<artikel> \section*{\contentsname}%
+% \end{macrocode}
+% The code for |\@mkboth| is placed inside the heading to avoid any
+% influence on vertical spacing after the heading (in some cases). For
+% other commands, such as |\listoffigures| below this has been changed from
+% the \LaTeX{}2.09 version as it will produce a serious bug if used in
+% two-column mode (see, \LaTeX{} pr/3285). However
+% |\tableofcontents| is always
+% typeset in one-column mode in these classes, therefore the somewhat
+% inconsistent setting has been retained for compatibility reasons.
+% \begin{macrocode}
\@mkboth{\MakeUppercase{\contentsname}}%
{\MakeUppercase{\contentsname}}%
% \end{macrocode}
@@ -4424,7 +4474,7 @@
%
% \begin{macro}{\@starttoc}
% The internal \LaTeXe macro |\@starttoc| needs to be adapted for
-% the \file{artikel3} and \file{rapport3} document classes,in order
+% the \file{artikel3} and \file{rapport3} document classes, in order
% to deal with a the fact that for these document classes the
% |\parskip| is normally non-zero. We don't want that in the table
% of contents.
@@ -4437,7 +4487,12 @@
\if@filesw
\expandafter\newwrite\csname tf@#1\endcsname
\immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
- \fi \global\@nobreakfalse \endgroup}
+% \end{macrocode}
+%
+% \changes{v2.1c}{2020/02/21}{Remove \cs{global} before
+% \cs{@nobreakfalse} as was done in \LaTeX}
+% \begin{macrocode}
+ \fi \@nobreakfalse \endgroup}
%</type3>
% \end{macrocode}
% \end{macro}
@@ -4447,6 +4502,10 @@
% contents than the standard classes from which they were
% developped. In order to acheive this different format we defined
% the macro |\@regtocline|.
+% \changes{v2.1b}{2004/08/14}{\cs{toc@font} is no longer passed
+% throughthe \texttt{.aux}-file, we set it here directly}
+% \changes{v2.1b}{2004/08/16}{\cs{toc@case} is no longer passed
+% through the \texttt{.aux} file, set it directly}
% \begin{macrocode}
\newcommand*\@regtocline[3]{%
\ifnum #1>\c@tocdepth
@@ -4460,7 +4519,9 @@
%<type2> \advance\@tempdima by \othermargin
\parindent\z@
\leavevmode
- \hbox{}\hskip -\leftskip\relax#2\nobreak
+ \hbox{}\hskip -\leftskip\relax
+ \ifnum#1<0\toc@case{#2}\else
+ \toc@font#1 #2\fi\nobreak
\hskip 1em \nobreak{\slshape #3}\par
}%
\fi}
@@ -4476,14 +4537,32 @@
% \end{macro}
%
% \begin{macro}{\toc@font}
+% \begin{macro}{\toc@fontsel}
% The changed definition of |\@sect| that we use, selects a
% different font for the table of contents for the various header
% levels. It does this using |\toc@font|.
+% \changes{v2.1b}{2004/08/16}{We want this font change to only affect
+% the section title, \emph{not} the section number, therefor we
+% need to push it behind \cs{numberline} and its argument}
% \begin{macrocode}
\if@oldtoc
\newcommand*\toc@font[1]{\relax}
\else
- \newcommand*\toc@font[1]{%
+% \end{macrocode}
+% A line of the table of contents contains |\numberline| and the
+% section number as its first two elements. We don't want to set
+% the section number using |\toc@font|, therefor we give it two
+% additional arguments and pass them on first, \emph{before}
+% changing the font. Note that we need to re-insert the braces
+% around the second argument.
+% \changes{v2.1b}{2004/08/16}{Introduce a separarte macro
+% \cs{toc@fontsel}}
+% \changes{v2.1c}{2020/02/22}{We need to jump another tolken, so we
+% need 4 arguments to accomplish that}
+% \begin{macrocode}
+ \newcommand*\toc@font[4]{%
+ #2{#3}#4\toc@fontsel#1}
+ \newcommand*\toc@fontsel[1]{%
%<*artikel>
\ifcase#1\relax
%<type2> \Large\bfseries
@@ -4498,9 +4577,39 @@
\or\rmfamily
%</rapport|boek>
\fi}
+% \end{macrocode}
+% \changes{v2.1b}{2004/08/16}{Take \textsf{hyperref} into account}
+% When the user wants to produce a hyper-document using
+% \textsf{hyperref} we need to take special precautions to make it
+% work for the table of contents. We check for the existence of
+% |\hyper@linkstart| to detect this situation at
+% |\begin{document}|.
+%
+% \textsf{Hyperref} injects extra tokens
+% (|\hyper@linkstart{link}{Hy@tocdestname}|)
+% into the stream in front of thde real contentsline. The command
+% |\hyper@linkstart| and its arguments need to be protected from
+% expanding too early or being ``upperccased'' themselves.
+%
+% \begin{macrocode}
+\AtBeginDocument{%
+ \ifx\hyper@linkstart\undefined
+ \else
+% \end{macrocode}
+% In the contentslines for chapters, sections etc., the command
+% selection of the appropriate font needs to come after the code
+% that \textsf{hyperref} injects. we do this with some argument
+% shuffling.
+% \changes{v2.1c}{2020/02/21}{removed the space between \#1 and \#5}
+% \begin{macrocode}
+ \let\ORG@hyper@linkstart\hyper@linkstart
+ \protected\def\hyper@linkstart#1#2{%
+ \lowercase{\ORG@hyper@linkstart{#1}{#2}}}
+ \fi}
\fi
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\toc@case}
% In the \file{rapport} and \file{boek} document classes, the
@@ -4558,7 +4667,13 @@
% set flush right.
% \begin{macrocode}
{\leavevmode
- \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
+ \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2%
+% \end{macrocode}
+%
+% \changes{v2.1c}{2020/02/18}{Prevent protrusion
+% (\url{https://tex.stackexchange.com/q/172785/10109})}
+% \begin{macrocode}
+ \kern-\p@\kern\p@}}\par
% \end{macrocode}
% Prevent a pagebreak immediately after this entry, but use
% |\everypar| to reset the |\if@nobreak| switch. Finally we close
@@ -4574,15 +4689,17 @@
\fi}
% \end{macrocode}
% Then we can introduce our new definition.
+% \changes{v2.1b}{2004/08/16}{Use \cs{l@@part} to prevent the \cs{fi}
+% from intervening}
% \begin{macrocode}
\else
\newcommand*\l@part{%
- \ifnum \c@tocdepth >-2\relax
+ \ifnum \c@tocdepth >-2\let\l@@part\relax
%<artikel> \addpenalty\@secpenalty
%<!artikel> \addpenalty{-\@highpenalty}%
\addvspace{2.25em \@plus \p@}%
- \@regtocline{0}%
- \fi}
+ \def\l@@part{\@regtocline{-1}}%
+ \fi\l@@part}
\fi
% \end{macrocode}
% \end{macro}
@@ -4626,7 +4743,13 @@
% \begin{macrocode}
\advance\leftskip\@tempdima
\hskip -\leftskip
- #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+ #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2%
+% \end{macrocode}
+%
+% \changes{v2.1b}{2020/02/17}{Prevent protrusion
+% (\url{https://tex.stackexchange.com/q/172785/10109})}
+% \begin{macrocode}
+ \kern-\p@\kern\p@}\par
\penalty\@highpenalty
\endgroup}
% \end{macrocode}
@@ -4677,7 +4800,13 @@
% \begin{macrocode}
\advance\leftskip\@tempdima
\hskip -\leftskip
- #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+ #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2%
+% \end{macrocode}
+%
+% \changes{v2.1b}{2020/02/18}{Prevent protrusion
+% (\url{https://tex.stackexchange.com/q/172785/10109})}
+% \begin{macrocode}
+ \kern-\p@\kern\p@}}\par
\endgroup}
% \end{macrocode}
% The new definition:
@@ -5270,4 +5399,4 @@
% \Finale
%
\endinput
-%
+% \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/ntgclass/ntgclass.ins b/Master/texmf-dist/source/latex/ntgclass/ntgclass.ins
index c0b15021c90..d14cbbaf649 100644
--- a/Master/texmf-dist/source/latex/ntgclass/ntgclass.ins
+++ b/Master/texmf-dist/source/latex/ntgclass/ntgclass.ins
@@ -1,52 +1,63 @@
-%%
+%
%% This file will generate fast loadable files and documentation
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1990-1999 Nederlandstalige TeX Gebruikersgroep.
-%%
-%% This file is part of the NTG document classes distribution
-%% ----------------------------------------------------------
-%%
+%% Copyright (C) 1993-2020
+%% The Nederlandstalige TeX Gebruikersgroep and any individual
+%% authors listed elsewhere in this file.
+%%
+%% This file is part of the NTG document classes distribution.
+%% -----------------------------------------------------------
+%%
%% It may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
+%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2003/12/01 or later.
-%%
-%% This work has the LPPL maintenance status "maintained".
-%%
-%% The Current Maintainer of this work is Johannes Braams.
-%%
-%% The list of all files belonging to the NTG document classes
-%% distribution is given in the file `manifest.txt.
-%%
-%% The list of derived (unpacked) files belonging to the distribution
-%% and covered by LPPL is defined by the unpacking scripts (with
-%% extension .ins) which are part of the distribution.
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%%
+%% This file has the LPPL maintenance status "maintained".
+%%
+%% As this file contains legal notices, it is NOT PERMITTED to modify
+%% this file in any way that the legal information placed into
+%% generated files is changed (i.e., the files generated when the
+%% original file is executed). This restriction does not apply if
+%% (parts of) the content is reused in a different WORK producing its
+%% own generated files.
+%%
+%% The list of all files belonging to the LaTeX base distribution is
+%% given in the file `manifest.txt'. See also `legal.txt' for additional
+%% information.
+%%
+%%
+%%
%%
%% --------------- start of docstrip commands ------------------
%%
+
\input docstrip.tex % ignored in distribution
\preamble
This is a generated file.
-Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep.
+The source is maintained by Johannes Braams and bug
+reports for it can be sent to texniek at braams.xs4all.nl
+
+Copyright (C) 1990-2020 Nederlandstalige TeX Gebruikersgroep.
All rights reserved.
This file was generated from file(s) of the NTG document classes distribution.
------------------------------------------------------------------------------
It may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either version 1.3
+conditions of the LaTeX Project Public License, either version 1.3c
of this license or (at your option) any later version.
The latest version of this license is in
http://www.latex-project.org/lppl.txt
-and version 1.3 or later is part of all distributions of LaTeX
-version 2003/12/01 or later.
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008 or later.
This work has the LPPL maintenance status "maintained".
@@ -80,7 +91,8 @@ extension .ins) which are part of the distribution.
\file{brief.cls}{\from{brief.dtx}{brief}}
\file{ntg10.clo}{\from{ntgclass.dtx}{10pt}}
\file{ntg11.clo}{\from{ntgclass.dtx}{11pt}}
- \file{ntg12.clo}{\from{ntgclass.dtx}{12pt}}}
+ \file{ntg12.clo}{\from{ntgclass.dtx}{12pt}}
+ }
\Msg{***********************************************************}
\Msg{*}
@@ -98,4 +110,4 @@ extension .ins) which are part of the distribution.
\Msg{* Happy TeXing}
\Msg{***********************************************************}
-\endinput
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/ntgclass/rapport.dtx b/Master/texmf-dist/source/latex/ntgclass/rapport.dtx
new file mode 100644
index 00000000000..9033f939acb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/ntgclass/rapport.dtx
@@ -0,0 +1,3560 @@
+% \CheckSum{0}
+%
+%
+% \iffalse
+%<*dtx>
+\Providesfile{wijzer.dtx}
+%</dtx>
+%<class>\NeedsTeXFormat{LaTeX2e}
+%<class>\ProvidesClass{wijzer}
+%<driver>\ProvidesFile{wijzer.drv}
+%\Providesfile{wijzer.dtx}
+ [PTT Research computer handboeken]
+%
+%<*driver>
+\documentclass{ptt-ltxdoc}
+\usepackage[dutch]{babel}
+\CodelineNumbered
+\CodelineIndex
+\EnableCrossrefs
+\DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath}
+\DoNotIndex{\@centercr,\@cite}
+\DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
+\DoNotIndex{\@input,\@ixpt,\@m}
+\DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint}
+\DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
+\DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
+\DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
+\DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
+\DoNotIndex{\advance,\Alph,\alph}
+\DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
+\DoNotIndex{\bullet}
+\DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
+\DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
+\DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
+\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
+\DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
+\DoNotIndex{\fbox}
+\DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
+\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
+\DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi}
+\DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
+\DoNotIndex{\input}
+\DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
+\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
+\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
+\DoNotIndex{\NeedsTeXFormat,\newdimen}
+\DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
+\DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
+\DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
+\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
+\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
+\DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
+\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman}
+\DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength}
+\DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
+\DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
+\DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
+\DoNotIndex{\viipt,\vipt,\vskip,\vspace}
+\DoNotIndex{\wd,\xiipt,\year,\z@}
+\newcommand{\m}[1]{\mbox{$\langle$\it #1\/$\rangle$}}
+\providecommand{\marg}[1]{{\ttfamiliy\char`\{}\m{#1}{\ttfamiliy\char`\}}}
+\providecommand{\oarg}[1]{{\ttfamiliy[}\m{#1}{\ttfamiliy]}}
+\begin{document}
+\DocInput{wijzer.dtx}
+\clearpage
+\PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{wijzer.dtx}
+% \title{Document Class \texttt{wijzer}}
+% \author{Johannes Braams}
+% \date{Version~\fileversion, dated~\filedate}
+% \maketitle
+% \tableofcontents
+% \clearpage
+%
+% \StopEventually{} ^^A
+%
+% \section{Introduction}
+%
+% \section{The {\sc docstrip} modules}
+%
+% The following modules are used in the implementation to direct
+% {\sc docstrip} in generating the external files:
+% \begin{center}
+% \begin{tabular}{ll}
+% class & produce the document class\\
+% type1 & produce the `1' variants of the classes\\
+% type3 & produce the `3' variants of the classes\\
+% driver & produce a documentation driver file \\
+% \end{tabular}
+% \end{center}
+%
+% \section{Initial Code}
+%
+% In this part we define a few commands that are used later on.
+%
+% \begin{macro}{\@ptsize}
+% This control sequence is used to store the second digit of the
+% pointsize we are typesetting in. So, normally, it's value is one
+% of 0, 1 or 2.
+% \begin{macrocode}
+%<*class>
+\newcommand\@ptsize{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@restonecol}
+% When the document has to printed in two columns, we sometimes
+% have to temporarily switch to one column. This switch is used to
+% remember to switch back.
+% \begin{macrocode}
+\newif\if@restonecol
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@titlepage}
+% A switch to indicate if a titlepage has to be produced.
+% \begin{macrocode}
+\newif\if@titlepage
+\@titlepagetrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@openright}
+% A switch to indicate if chapters must start on a right-hand page.
+% The default for the report class is no; for the book class it's
+% yes.
+% \begin{macrocode}
+\newif\if@openright
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@openbib}
+% A switch to indicate if the bibliography has to be produced in
+% the ``open'' format. The default is to use a ``closed'' format.
+% \begin{macrocode}
+\newif\if@openbib
+\@openbibfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@oldtoc}
+% A switch to indicate if `old' layout of the table of contents
+% should be produced. These document classes normally produce a
+% table of contents that looks quite different from what the
+% standard classes produce.
+% \begin{macrocode}
+\newif\if@oldtoc
+\@oldtocfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@allcaps}
+% By default the text on the titlepage is set in capital letters.
+% This can be disabled by the option \Lopt{mctitle}, which sets the
+% switch |\if@allcaps| to false.
+% \begin{macrocode}
+\newif\if@allcaps
+% \end{macro}
+%
+% \begin{macro}{\if@titlecentered}
+% In the document classes \file{wijzer3} the
+% default placement of the title that is produced by |\maketitle|
+% is flushleft. This can be changed by the switch
+% |\if@titlecentered|.
+% \begin{macrocode}
+%<+type3>\newif\if@titlecentered
+%<+type3>\@titlecenteredfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@revlabel}
+% These document classes need to be able to change the positioning
+% of the label in labeled lists. This switch is used for that
+% purpose.
+% \begin{macrocode}
+\newif\if@revlabel
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Declaration of Options}
+%
+%
+% \subsection{Setting Paper Sizes}
+%
+% The variables |\paperwidth| and |\paperheight| should reflect the
+% physical paper size after trimming. For desk printer output this
+% is usually the real paper size since there is no post-processing.
+% Classes for real book production will probably add other paper
+% sizes and additionally the production of crop marks for trimming.
+% \begin{macrocode}
+\DeclareOption{a4paper}
+ {\setlength\paperheight {297mm}%
+ \setlength\paperwidth {210mm}}
+\DeclareOption{a5paper}
+ {\setlength\paperheight {210mm}%
+ \setlength\paperwidth {148mm}}
+\DeclareOption{b5paper}
+ {\setlength\paperheight {250mm}%
+ \setlength\paperwidth {176mm}}
+\DeclareOption{letterpaper}
+ {\setlength\paperheight {11in}%
+ \setlength\paperwidth {8.5in}}
+\DeclareOption{legalpaper}
+ {\setlength\paperheight {14in}%
+ \setlength\paperwidth {8.5in}}
+\DeclareOption{executivepaper}
+ {\setlength\paperheight {10.5in}%
+ \setlength\paperwidth {7.25in}}
+% \end{macrocode}
+%
+% The option \Lopt{landscape} switches the values of |\paperheight|
+% and |\paperwidth|, assuming the dimensions wer given for portrait
+% paper.
+% \begin{macrocode}
+\DeclareOption{landscape}
+ {\setlength\@tempdima {\paperheight}%
+ \setlength\paperheight {\paperwidth}%
+ \setlength\paperwidth {\@tempdima}}
+% \end{macrocode}
+%
+% \subsection{Choosing the type size}
+%
+% The type size options are handled by defining |\@ptsize| to contain
+% the last digit of the size in question and branching on |\ifcase|
+% statements. This is done for historical reasons to stay compatible
+% with other packages that use the |\@ptsize| variable to select
+% special actions. It makes the declarations of size options less
+% than 10pt difficult, although one can probably use \texttt{9}
+% and \texttt{8} assuming that a class won't define both
+% \Lopt{8pt} and \Lopt{18pt} options.
+%
+% \begin{macrocode}
+\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
+\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
+\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
+% \end{macrocode}
+%
+%
+% \subsection{Two-side or one-side printing}
+%
+% For two-sided printing we use the switch |\if@twoside|. In
+% addition we have to set the |\if@mparswitch| to get any margin
+% paragraphs into the outside margin.
+% \begin{macrocode}
+\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
+\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
+% \end{macrocode}
+%
+%
+% \subsection{Draft option}
+%
+% If the user requests \Lopt{draft} we show any overfull boxes.
+% We could probably add some more interesting stuff to this option.
+% \begin{macrocode}
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+% \end{macrocode}
+%
+% \subsection{Titlepage option}
+% An article usually has no separate titlepage, but the user can
+% request one.
+% \begin{macrocode}
+\DeclareOption{titlepage}{\@titlepagetrue}
+\DeclareOption{notitlepage}{\@titlepagefalse}
+% \end{macrocode}
+%
+% \subsection{openright option}
+% This option determines whether or not a chapter must start on
+% a right-hand page
+% request one.
+% \begin{macrocode}
+\DeclareOption{openright}{\@openrighttrue}
+\DeclareOption{openany}{\@openrightfalse}
+% \end{macrocode}
+%
+% For these document classes there used to be a file
+% \file{voorwerk.sty} which was a replacement for
+% \file{titlepag.sty}. Therefore we also have the option
+% \Lopt{voorwerk}.
+% \begin{macrocode}
+\DeclareOption{voorwerk}{\@titlepagetrue}
+\DeclareOption{geenvoorwerk}{\@titlepagefalse}
+% \end{macrocode}
+%
+%
+% \subsection{Table of contents formatting}
+%
+% This document class uses a new layout for the table of contents,
+% but in order to maintain compatibility with the standard \LaTeXe
+% document classes we supply an extra option: \Lopt{oldtoc}. If
+% this option is specified the switch |\if@oldtoc| will be set
+% true.
+% \begin{macrocode}
+\DeclareOption{oldtoc}{\@oldtoctrue}
+% \end{macrocode}
+%
+% \subsection{Formatting of the title}
+%
+% The option \Lopt{titlecentered} changes the behaviour of the
+% |\maketitle| command. It then produces a title like it does for
+% the \file{artikel1} document class.
+% \begin{macrocode}
+%<+type3>\DeclareOption{titlecentered}{\@titlecenteredtrue}
+% \end{macrocode}
+%
+% In this document class the titlepage uses all capital
+% letters. The option \Lopt{mctitle} (for `mixed case') prevents
+% this.
+% \begin{macrocode}
+\DeclareOption{mctitle}{\@allcapsfalse}
+\DeclareOption{uctitle}{\@allcapstrue}
+% \end{macrocode}
+%
+% \subsection{Twocolumn printing}
+%
+% Two-column and one-column printing is again realized via a switch.
+% \begin{macrocode}
+\DeclareOption{onecolumn}{\@twocolumnfalse}
+\DeclareOption{twocolumn}{\@twocolumntrue}
+% \end{macrocode}
+%
+% \subsection{Equation numbering on the left}
+%
+% The option \Lopt{leqno} can be used to get the equation numbers
+% on the left side of the equation.
+% \begin{macrocode}
+\DeclareOption{leqno}{\input{leqno.clo}}
+% \end{macrocode}
+%
+% \subsection{Flush left displays}
+%
+% The option \Lopt{fleqn} redefines the displayed math environmens
+% in such a way that they come out flush left, with an indentation
+% of |\mathindent| from the prevailing left margin.
+% \begin{macrocode}
+\DeclareOption{fleqn}{\input{fleqn.clo}}
+% \end{macrocode}
+%
+% \subsection{Open bibliography}
+%
+% The option \Lopt{openbib} produces the ``open'' bibliography
+% style, in which each block starts on a new line, and succeeding
+% lines in a block are indented by |\bibindent|.
+% \begin{macrocode}
+\DeclareOption{openbib}{\@openbibtrue}
+% \end{macrocode}
+%
+%
+% \section{Executing Options}
+%
+% Here we execute the default options to initialize certain
+% variables.
+% \begin{macrocode}
+\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,uctitle,openany}
+% \end{macrocode}
+%
+% The |\ProcessOptions| command causes the execution of the code
+% for every option \Lopt{FOO}
+% which is declared and for which the user typed
+% the \Lopt{FOO} option in his
+% |\documentclass| command. For every option \Lopt{BAR} he typed,
+% which is not declared, the option is assumed to be a global option.
+% All options will be passed as document options to any
+% |\usepackage| command in the document preamble.
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+% Now that all the options have been executed we can load the
+% chosen class option file that contains all size dependent code.
+% \begin{macrocode}
+\input{ntg1\@ptsize.clo}
+% \end{macrocode}
+%
+% \section{Loading Packages}
+%
+% These class files do not load additional packages.
+%
+%
+% \section{Document Layout}
+% \label{sec:maincode}
+%
+% In this section we are finally dealing with the nasty typographical
+% details.
+%
+% \subsection{Paragraphing}
+%
+% \begin{macro}{\lineskip}
+% \begin{macro}{\normallineskip}
+% These parameters control \TeX's behaviour when two lines tend to
+% come too close together.
+% \begin{macrocode}
+\setlength\lineskip{1\p@}
+\setlength\normallineskip{1\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\baselinestretch}
+% This is used as a multiplier for |\baselineskip|. The default is
+% to {\em not\/} stretch the baselines.
+% \begin{macrocode}
+\renewcommand\baselinestretch{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\unitindent}
+% These document classes all use a single dimension for a number of
+% layout parameters:
+% \begin{itemize}
+% \item the label width in section heading,
+% \item the |\parindent|
+% \item the footnote label indent (= half |\unitindent|)
+% \item listindent on the first level
+% \end{itemize}
+% \begin{macrocode}
+\newdimen\unitindent
+% \end{macrocode}
+% The default setting accomodates three levels of single digit
+% section numbering.
+% \begin{macrocode}
+{\setbox0\hbox{\normalsize\rmfamily 2.2.2\hskip.5em}
+ \global\unitindent=\wd0}
+% \end{macrocode}
+%
+% \begin{macro}{\othermargin}
+% Other indentations are maximal label width plus white space.
+% \begin{macrocode}
+\newdimen\othermargin
+{\setbox0\hbox{\normalsize (m)\hskip.6em}\global\othermargin=\wd0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{if@needwriteindent}
+% If this is not enough, a new width is calculated, set, and the
+% file{.aux} file contains an instruction that will set
+% |\unitindent| on the next run.
+%
+% For this we need a switch
+% \begin{macrocode}
+\newif\if@needwriteindent
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@indentset}
+% And a command that sets the various parameters.
+% \begin{macrocode}
+\newcommand\@indentset{%
+%<-type3> \global\parindent=\unitindent
+ \global\leftmargini=\unitindent
+ \global\@needwriteindenttrue}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@writeindent}
+% The |\end{document}| command will call |\@writeindent| to write
+% the final width of |\unitindent| on the \file{.aux} file. Also a
+% command is written to set |\unitindent|. To be compatible with
+% other document classes a check is written to the \file{.aux} file
+% for the existence of |\unitindent|. This prevents nasty errors
+% when another document class is used.
+% \begin{macrocode}
+\newcommand\@writeindent[1]{\immediate\write\@mainaux
+ {\string\@ifundefined{unitindent}{\string\newdimen\string\unitindent
+ \let\string\@indentset\relax}{}}
+ \immediate\write\@mainaux{\global\string\unitindent=#1\string\relax
+ \string\@indentset \string\relax}}
+% \end{macrocode}
+% \end{macro}
+%
+% We need to use the hook into |\end{document}| to write the final
+% value of |\unitindent| om the file{.aux} file for the next run.
+% \begin{macrocode}
+\AtEndDocument{%
+ \if@filesw
+ \if@needwriteindent
+ \@writeindent{\the\unitindent}
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\parskip}
+% \begin{macro}{\parindent}
+% |\parskip| gives extra vertical space between paragraphs and
+% |\parindent| is the width of the paragraph indentation. The value
+% of |\parindent| depends on whether we are in two column mode.
+% \begin{macrocode}
+%<*type1>
+\setlength\parskip{0\p@}
+\setlength\parindent{\unitindent}
+%</type1>
+%<*type3>
+\setlength\parskip{.5\baselineskip \@plus .1\baselineskip
+ \@minus .1\baselineskip}
+\setlength\parindent{\z@}
+%</type3>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@lowpenalty}
+% \begin{macro}{\@medpenalty}
+% \begin{macro}{\@highpenalty}%
+% The commands |\nopagebreak| and |\nolinebreak| put in penalties
+% to discourage these breaks at the point they are put in.
+% They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|,
+% dependent on their argument.
+% \begin{macrocode}
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\clubpenalty}
+% \begin{macro}{\widowpenalty}
+% These penalties are use to discourrage club and widow lines.
+% Because we use their default values we only show them here,
+% commented out.
+% \begin{macrocode}
+% \clubpenalty 150
+% \widowpenalty 150
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\displaywidowpenalty}
+% \begin{macro}{\predisplaypenalty}
+% \begin{macro}{\postdisplaypenalty}
+% Discourrage (but not so much) widows in front of a math display
+% and forbid breaking directly in front of a display. Allow break
+% after a display without a penalty. Again the default values are
+% used, therefore we only show them here.
+% \begin{macrocode}
+% \displaywidowpenalty 50
+% \predisplaypenalty 10000
+% \postdisplaypenalty 0
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\interlinepenalty}
+% Allow the breaking of a page in the middle of a paragraph.
+% \begin{macrocode}
+% \interlinepenalty 0
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\brokenpenalty}
+% We allow the breaking of a page after a hyphenated line.
+% \begin{macrocode}
+% \brokenpenalty 0
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Float placement parameters}
+%
+% All float parameters are given default values in the \LaTeXe{}
+% kernel. For this reason counters only need to be set with
+% |\setcounter| and other parameters are set using |\renewcommand|.
+%
+% \paragraph{Limits for the placement of floating objects}
+%
+% \begin{macro}{\c@topnumber}
+% The \Lcount{topnumber} counter holds the maximum number of
+% floats that can appear on the top of a text page.
+% \begin{macrocode}
+\setcounter{topnumber}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\topfraction}
+% This indicates the maximum part of a text page that can be
+% occupied by floats at the top.
+% \begin{macrocode}
+\renewcommand\topfraction{.7}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@bottomnumber}
+% The \Lcount{bottomnumber} counter holds the maximum number of
+% floats that can appear on the bottom of a text page.
+% \begin{macrocode}
+\setcounter{bottomnumber}{1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bottomfraction}
+% This indicates the maximum part of a text page that can be
+% occupied by floats at the bottom.
+% \begin{macrocode}
+\renewcommand\bottomfraction{.3}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@totalnumber}
+% This indicates the maximum number of floats that can appear on
+% any text page.
+% \begin{macrocode}
+\setcounter{totalnumber}{3}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textfraction}
+% This indicates the minimum part of a text page that has to be
+% occupied by text.
+% \begin{macrocode}
+\renewcommand\textfraction{.2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\floatpagefraction}
+% This indicates the minimum part of a page that has to be
+% occupied by floating objects before a `float page' is produced.
+% \begin{macrocode}
+\renewcommand\floatpagefraction{.5}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@dbltopnumber}
+% The \Lcount{dbltopnumber} counter holds the maximum number of
+% two column floats that can appear on the top of a two column text
+% page.
+% \begin{macrocode}
+\setcounter{dbltopnumber}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dbltopfraction}
+% This indicates the maximum part of a two column text page that
+% can be occupied by two column floats at the top.
+% \begin{macrocode}
+\renewcommand\dbltopfraction{.7}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dblfloatpagefraction}
+% This indicates the minimum part of a page that has to be
+% occupied by two column wide floating objects before a `float
+% page' is produced.
+% \begin{macrocode}
+\renewcommand\dblfloatpagefraction{.5}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Page Styles}
+%
+% The page style \pstyle{foo} is defined by defining the command
+% |\ps@foo|. This command should make only local definitions.
+% There should be no stray spaces in the definition, since they
+% could lead to mysterious extra spaces in the output (well, that's
+% something that should be always avoided).
+%
+% \begin{macro}{\@evenhead}
+% \begin{macro}{\@oddhead}
+% \begin{macro}{\@evenfoot}
+% \begin{macro}{\@oddfoot}
+% The |\ps@...| command defines the macros |\@oddhead|,
+% |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running
+% heads and feet---e.g., |\@oddhead| is the macro to produce the
+% contents of the heading box for odd-numbered pages. It is called
+% inside an |\hbox| of width |\textwidth|.
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\thispagestyle}
+% Several commands (|\index|, |\maketitle|) give a
+% |\thispagestyle{plain}| command, which will overrule a
+% |\pagestyle{empty}| command. This situation is almost always
+% unwanted. Therefore we provide a more careful definition.
+%
+% First save the original definition.
+% \begin{macrocode}
+\let\Thispagestyle\thispagestyle
+% \end{macrocode}
+% Then we provide the new definition, for which we must also adapt
+% |\pagestyle| a little.
+% \begin{macrocode}
+\newcommand\@emptypagestyle{empty}
+\renewcommand\pagestyle[1]{\@nameuse{ps@#1}\def\@currentpagestyle{#1}}
+\renewcommand\thispagestyle[1]{%
+ \ifx\@currentpagestyle\@emptypagestyle
+ \else
+ \global\@specialpagetrue
+ \gdef\@specialstyle{#1}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Marking conventions}
+%
+% To make headings determined by the sectioning commands, the page
+% style defines the commands |\chaptermark|, |\sectionmark|,
+% \ldots,\\
+% where |\chaptermark{|\meta{TEXT}|}| is called by
+% |\chapter| to set a mark, and so on.
+%
+% The |\...mark| commands and the |\...head| macros are defined
+% with the help of the following macros. (All the |\...mark|
+% commands should be initialized to no-ops.)
+%
+% \LaTeX{} extends \TeX's |\mark| facility by producing two kinds
+% of marks, a `left' and a `right' mark, using the following
+% commands:
+% \begin{flushleft}
+% |\markboth{|\meta{LEFT}|}{|\meta{RIGHT}|}|: Adds both marks.
+%
+% |\markright{|\meta{RIGHT}|}|: Adds a `right' mark.
+%
+% |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
+% or |\@evenfoot| macros, it gets the current `left'
+% mark. |\leftmark| works like \TeX's |\botmark|
+% command.
+%
+% |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
+% or |\@evenfoot| macros, it gets the current
+% `right' mark. |\rightmark| works like \TeX's
+% |\firstmark| command.
+% \end{flushleft}
+%
+% The marking commands work reasonably well for right marks
+% `numbered within' left marks--e.g., the left mark is changed by a
+% |\chapter| command and the right mark is changed by a |\section|
+% command. However, it does produce somewhat anomalous results if
+% two |\markboth|'s occur on the same page.
+%
+%
+% Commands like |\tableofcontents| that should set the marks in some
+% page styles use a |\@mkboth| command, which is |\let| by the
+% pagestyle command (|\ps@...|) to |\markboth| for setting the
+% heading or to |\@gobbletwo| to do nothing.
+%
+%
+% \begin{macrocode}
+% %%%\mark{{}{}} % Initializes TeX's marks <--- can vanish
+% \end{macrocode}
+%
+% \subsubsection{Defining the page styles}
+% \label{sec:pagestyle}
+%
+% The pagestyle \pstyle{empty} is defined in \file{latex.dtx}, but
+% the pagestyle \pstyle{plain} is slightly altered here. The
+% difference is that the page numbers are set flush right in
+% onesided and flush left and right in the twosided style.
+%
+% \begin{macro}{\ps@plain}
+%
+% \begin{macrocode}
+\renewcommand\ps@plain{%
+% \end{macrocode}
+% The running head are empty in this pagestyle, the page number
+% appears in the running foot.
+% \begin{macrocode}
+ \let\@oddhead\@empty\let\@evenhead\@empty
+ \def\@oddfoot{\hfil\PageFont\thepage}%
+ \if@twoside
+ \def\@evenfoot{\PageFont\thepage\hfil}%
+ \else
+ \let\@evenfoot\@oddfoot
+ \fi
+% \end{macrocode}
+% Because the running heads should be empty we |let| |\@mkboth| to
+% |\@gobbletwo|, thus disabling the mark commands.
+% \begin{macrocode}
+ \let\@mkboth\@gobbletwo}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ps@headings}
+% The definition of the page style \pstyle{headings} has to be
+% different for two sided printing than it is for one sided
+% printing.
+%
+% \begin{macrocode}
+\if@twoside
+ \def\ps@headings{%
+% \end{macrocode}
+% The running feet are empty in this page style, the running head
+% contains the page number and one of the marks.
+% \begin{macrocode}
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{{\PageFont\thepage}\hfil\MarkFont\leftmark}%
+ \def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}%
+% \end{macrocode}
+%
+% When using this page style, the contents of the running head is
+% determined by the chapter and section titles. So we |\let|
+% |\@mkboth| to |\markboth|.
+% \begin{macrocode}
+ \let\@mkboth\markboth
+% \end{macrocode}
+%
+% In thisdocument class we use the |\chaptermark|
+% and |\sectionmark| macros to fill the running heads.
+%
+% Note the use of |##1| for the parameter of the |\chaptermark|
+% command, which will be defined when |\ps@headings| is executed.
+%
+% \begin{macrocode}
+ \def\chaptermark##1{%
+ \markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
+ \@chapapp\ \thechapter. \ \fi
+ ##1}}{}}%
+ \def\sectionmark##1{%
+ \markright {\uppercase{\ifnum \c@secnumdepth >\z@
+ \thesection. \ \fi
+ ##1}}}}
+% \end{macrocode}
+%
+% The definition of |\ps@headings| for one sided printing can be
+% much simpler, because we treat even and odd pages the same.
+% Therefore we don't need to define |\@even...|.
+% \begin{macrocode}
+\else
+ \def\ps@headings{%
+ \let\@oddfoot\@empty
+ \def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}%
+ \let\@mkboth\markboth
+% \end{macrocode}
+% We use |\markright| now instead of |\markboth| as we did for two
+% sided printing.
+% \begin{macrocode}
+ \def\chaptermark##1{%
+ \markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
+ \@chapapp\ \thechapter. \ \fi
+ ##1}}}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ps@myheadings}
+% The definition of the page style \pstyle{myheadings} is fairly
+% simple because the user determines the contents of the running
+% head himself by using the |\markboth| and |\markright| commands.
+%
+% \begin{macrocode}
+\def\ps@myheadings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{{\PageFont\thepage}\hfil\MarkFont\leftmark}%
+ \def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}%
+% \end{macrocode}
+%
+% We have to make sure that the marking commands that are used by
+% the chapter and section headings are disabled. We do this
+% |\let|ting them to a macro that gobbles its argument(s).
+% \begin{macrocode}
+ \let\@mkboth\@gobbletwo
+ \let\chaptermark\@gobble
+ \let\sectionmark\@gobble
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\PageFont}
+% \begin{macro}{\MarkFont}
+% These macros are use to store the fonts that are used to typeset
+% the pagenumber (|\PageFont|) and the marks (|\MarkFont|) in the
+% running head and feet.
+% \begin{macrocode}
+\newcommand\PageFont{\rmfamily}
+\newcommand\MarkFont{\slshape}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\RunningFonts}
+% Use this macro to change the fonts that are used in the running
+% heads.
+% \begin{macrocode}
+\newcommand\RunningFonts[2]{%
+ \renewcommand\PageFont{#1}\renewcommand\MarkFont{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Document Markup}
+%
+% \subsection{The title}
+%
+% \begin{macro}{\title}
+% \begin{macro}{\author}
+% \begin{macro}{\date}
+% These three macros are provided by \file{latex.dtx} to provide
+% information about the title, author(s) and date of the document.
+% The information is stored away in internal control sequences.
+% It is the task of the |\maketitle| command to use the
+% information provided. The definitions of these macros are shown
+% here for information.
+% \begin{macrocode}
+% \newcommand\title[1]{\gdef\@title{#1}}
+% \newcommand\author[1]{\gdef\@author{#1}}
+% \newcommand\date[1]{\gdef\@date{#1}}
+% \end{macrocode}
+% The |\date| macro gets today's date by default.
+% \begin{macrocode}
+% \gdef\@date{\today}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\TitleFont}
+% This selects the font to use in the title of the document.
+% \begin{macrocode}
+\newcommand\TitleFont{\bfseries}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maketitle}
+% The definition of |\maketitle| depends on whether a seperate
+% title page is made. This is the default for this document class.
+% Note that the title, author and date information is printed in
+% capital letters by default. This can be changed by the option
+% \Lopt{mctitle}.
+%
+% When we are making a title page, we locally redefine
+% |\footnotesize| and |\footnoterule| to change the appearance of
+% the footnotes that are produced by the |\thanks| command.
+% \begin{macrocode}
+\renewcommand\TitleFont{\rmfamily}
+\newcommand\maketitle{%
+ \begin{titlepage}%
+ \let\footnotesize\small
+ \let\footnoterule\relax
+% \end{macrocode}
+% Footnotes on the titlepage, generated by the use of |\thanks|,
+% use symbols in these document classes.
+% \begin{macrocode}
+ \long\def\@makefntext##1{\parindent\z@
+ \def\labelitemi{--}\@revlabeltrue
+ \leavevmode$\m@th^{\@thefnmark}$\kern1em\relax ##1}
+ \renewcommand\thefootnote{\fnsymbol{footnote}}%
+% \end{macrocode}
+% We center the entire title vertically; the centering is set off a
+% little by adding a |\vskip|. In compatibility mode the pagenumber
+% is set to 0 to keep the behaviour of \LaTeX\ 2.09 style files
+% \begin{macrocode}
+ \if@compatibility\setcounter{page}{0}\fi
+ \null\vfil
+ \vskip 60\p@
+% \end{macrocode}
+% Then we set the title, in a |\LARGE| font; leave a little space
+% and set the author(s) in a |\large| font. We do this inside a
+% tabular environment to get them in a single column.
+% Before the date we leave a little whitespace again.
+% \begin{macrocode}
+ \begin{center}%
+ \TitleFont
+ {\LARGE \def\\{\penalty -\@M}
+ \if@allcaps
+ \expandafter\uc@nothanks\@title\thanks\relax
+ \else
+ \@title
+ \fi\par}%
+ \vskip 3em%
+ {\large
+ \lineskip .75em \parindent\z@
+ \begin{tabular}[t]{c}%
+ \if@allcaps
+ \expandafter\uc@authornothanks\@author\and\relax
+ \else
+ \@author
+ \fi
+ \end{tabular}\par}%
+ \vskip 1.5em%
+ {\large
+ \if@allcaps
+ \uppercase\expandafter{\@date}%
+ \else
+ \@date
+ \fi\par}%
+ \end{center}\par
+% \end{macrocode}
+% Then we call |\@thanks| to print the information that goes into
+% the footnote and finish the page.
+% \begin{macrocode}
+ \@thanks
+ \vfil\null
+ \end{titlepage}%
+% \end{macrocode}
+% We reset the \Lcount{footnote} counter, disable |\thanks| and
+% |\maketitle| and save some storage space by emptying the internal
+% information macros.
+% \begin{macrocode}
+ \setcounter{footnote}{0}%
+ \let\thanks\relax\let\maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
+% \end{macrocode}
+%
+% We want to have the title, author and date information in
+% uppercase, but we have to be very carefull not to put too much
+% text in uppercase. The macros that perform the filtering of texts
+% that shouldn't be in uppercase were developped with th help of
+% Howard Trickey.
+%
+% \begin{macro}{\uc@nothanks}
+% This macro takes all the text up to the first use of |\thanks|
+% and passes it to |\uppercase|. The use of |\futurelet| will store
+% the token \emph{after} the |\thanks| in |\@tempa|. The macro
+% |\u@tx| uses that information to determine what to do next.
+% \begin{macrocode}
+\def\uc@nothanks#1\thanks{\uppercase{#1}\futurelet\@tempa\uc@tx}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\uc@authornothanks}
+% A document can have more than one author. Usually they are
+% seperated with |\and|. For each author a footnote --using
+% |\thanks| can be present. Therefore this macro takes all the text
+% up to the first use of |\and|, thus picking up all the
+% information for one author. This is than passsed to
+% |\uc@nothanks|, which checks for the presence of |\thanks|. For
+% this to work the argument of |\uc@nothanks| has to be delimited
+% by |\thanks\relax|.
+% \begin{macrocode}
+\def\uc@authornothanks#1\and{\uc@nothanks#1\thanks\relax
+% \end{macrocode}
+% Then we have to check whether the |\and| we ound earlier was put
+% in by the user, in which case information for another user will
+% follow, or by the call from another macro, in which case the
+% |\and| will be followed by a |\relax| token. The |\futurelet|
+% contstruct stores the first token \emph{after} the |\and| in
+% |\@tempa| to be inspected by |\u@ax|.
+% \begin{macrocode}
+ \futurelet\@tempa\uc@ax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\uc@ax}
+% When |\@tempa| contains a |\relax| token nothing needs to be
+% done, when it doesn't we put in a linebreak |\\| the word `and'
+% (stored in |\andname| so that this control sequence can be
+% redeined for other languages), another linebreak and we call
+% |\uc@authornothanks| to continue processing. The |\expandafter|
+% lets \TeX\ see the |\fi| first.
+% \begin{macrocode}
+\def\uc@ax{%
+ \ifx\@tempa\relax
+ \else
+ \\ \andname \\ \expandafter\uc@authornothanks
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\uc@tx}
+% This macro simply checks whether |\@tempa| contains a |\relax|
+% token. When it doesn't further processing is performed by
+% |\u@ty|.
+% \begin{macrocode}
+\def\uc@tx{\ifx\@tempa\relax
+ \else \expandafter\uc@ty \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\uc@ty}
+% The macro |\uc@ty| gets executed when the |\thanks| that
+% delimited text earlier on in the processing had a real argument.
+% In that case it was a |\thanks| put in by the user, \emph{not} by
+% these macros. Therefore the argument is now passed to |\thanks|
+% and processing continues by calling |\uc@nothanks|.
+% \begin{macrocode}
+\def\uc@ty#1{\thanks{#1}\uc@nothanks}
+% \end{macrocode}
+% \end{macro}
+%
+% When the title is not on a page of its own, the layout of the
+% title is a little different. We use symbols to mark the footnotes
+% and we have to deal with two column documents.
+%
+% Therefore we first start a new group to keep changes local. Then
+% we redefine |\thefootnote| to use |\fnsymbol|; and change
+% |\@makefnmark| so that footnotemarks have zero width (to make the
+% centering of the author names look better). We also want raised
+% footnotemarkers in the footnotes here.
+% \begin{macrocode}
+\else
+\newcommand\maketitle{\par
+ \begingroup
+ \renewcommand\thefootnote{\fnsymbol{footnote}}%
+ \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
+ \def\@makefntext{\@xmakefntext{$\m@th^{\@thefnmark}$}}%
+% \end{macrocode}
+% If this is a twocolumn document we start a new page in twocolumn
+% mode, with the title set to the full width of the text. The
+% actual printing of the title information is left to
+% |\@maketitle|.
+% \begin{macrocode}
+ \if@twocolumn
+ \ifnum \col@number=\@ne
+ \@maketitle
+ \else
+ \twocolumn[\@maketitle]%
+ \fi
+ \else
+% \end{macrocode}
+% When this is not a twocolumn document we just start a new page,
+% prevent floating objects from appearing on the top of this page
+% and print the title information.
+% \begin{macrocode}
+ \newpage
+ \global\@topnum\z@
+ \@maketitle
+ \fi
+% \end{macrocode}
+% This page gets a \pstyle{plain} layout. We call |\@thanks| to
+% produce the footnotes.
+% \begin{macrocode}
+ \thispagestyle{plain}\@thanks
+% \end{macrocode}
+% Now we can close the group, reset the \Lcount{footnote} counter,
+% disable |\thanks|, |\maketitle| and |\@maketitle| and save some
+% storage space by emptying the internal information macros.
+% \begin{macrocode}
+ \endgroup
+ \setcounter{footnote}{0}%
+ \let\thanks\relax
+ \let\maketitle\relax\let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
+% \end{macrocode}
+%
+% \begin{macro}{\@maketitle}
+% This macro takes care of formatting the title information when we
+% have no seperate title page.
+%
+% We always start a new page, leave some white space and center the
+% information. The title is set in a |\LARGE| font, the author
+% names and the in a |\large| font.
+% \begin{macrocode}
+\def\@maketitle{%
+ \newpage
+ \null
+ \vskip 2em%
+%<+type3>\if@titlecentered
+ \begin{center}%
+ {\LARGE \TitleFont \@title \par}%
+ \vskip 1.5em%
+ {\large \TitleFont
+ \lineskip .5em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1em%
+ {\large \TitleFont \@date}%
+ \end{center}%
+%<*type3>
+ \else
+ {\LARGE \TitleFont \head@style \@title \par} \vskip 1.5em
+ {\large \TitleFont \lineskip .5em \tabcolsep\z@
+ \def\and{%%% \begin{tabular} has already started
+ \end{tabular}\hskip 1em plus .17fil
+ \begin{tabular}[t]{l}}%% \end{tabular} will come
+ \begin{tabular}[t]{l}\@author\end{tabular}\par}
+ \vskip 1em {\large \TitleFont \@date}
+ \fi
+%</type3>
+ \par
+ \vskip 1.5em}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Chapters and Sections}
+%
+% \subsubsection{Building blocks}
+% The definitions in this part of the class file make use of two
+% macros, |\@startsection| and |\secdef|, which are defined by
+% \file{latex.dtx}. To understand what is going on here, we
+% describe their syntax.
+%
+% The macro |\@startsection| has 6 required arguments, optionally
+% followed by a $*$, an optional argument and a required argument:
+%
+% |\@startsection|\meta{name}\meta{level}\meta{indent}^^A
+% \meta{beforeskip}\meta{afterskip}\meta{style}
+% optional *\\
+% \null\hphantom{\bslash @startsection}^^A
+% |[|\meta{altheading}|]|\meta{heading}
+%
+% It is a generic command to start a section, the arguments have
+% the following meaning:
+%
+% \begin{description}
+% \item[\meta{name}] The name of the user level command, e.g.,
+% `section'.
+% \item[\meta{level}] A number, denoting the depth of the section
+% -- e.g., chapter=1, section = 2, etc. A section number
+% will be printed if and only if \meta{level} $<=$ the value
+% of the \Lcount{secnumdepth} counter.
+% \item[\meta{indent}] The indentation of the heading from the left
+% margin
+% \item[\meta{beforeskip}] The absolute value of this argument
+% gives the skip to leave above the heading. If it is
+% negative, then the paragraph indent of the text following
+% the heading is suppressed.
+% \item[\meta{afterskip}] If positive, this gives the skip to leave
+% below the heading, else it gives the skip to leave to the
+% right of a run-in heading.
+% \item[\meta{style}] Commands to set the style of the heading.
+% \item[$*$] When this is missing the heading is numbered and the
+% corresponding counter is incremented.
+% \item[\meta{altheading}] Gives an alternative heading to use in
+% the table of contents and in the running heads. This should
+% be present when the $*$ form is used.
+% \item[\meta{heading}] The heading of the new section.
+% \end{description}
+% A sectioning command is normally defined to |\@startsection| and
+% its first six arguments.
+%
+% The macro |\secdef| can be used when a sectioning command is
+% defined without using |\@startsection|. It has two arguments:
+%
+% |\secdef|\meta{unstarcmds}\meta{starcmds}
+%
+% \begin{description}
+% \item[\meta{unstarcmds}] Used for the normal form of the
+% sectioning command.
+% \item[\meta{starcmds}] Used for the $*$-form of the
+% sectioning command.
+% \end{description}
+%
+% You can use |\secdef| as follows:
+% \begin{verbatim}
+% \def\chapter { ... \secdef \CMDA \CMDB }
+% \def\CMDA [#1]#2{ ... } % Command to define
+% % \chapter[...]{...}
+% \def\CMDB #1{ ... } % Command to define
+% % \chapter*{...}
+% \end{verbatim}
+%
+% \begin{macro}{\head@style}
+% In the definition of chapter and section commands a number of
+% settings frequently occur. Therefore we store them in a control
+% sequence.
+%
+% Section headings are to be set extremely raggedright, with no
+% hyphenations, not even at explicit hyphens.
+%
+% \begin{macrocode}
+\newcommand\head@style{%
+ \interlinepenalty \@M
+ \hyphenpenalty=\@M \exhyphenpenalty=\@M
+ \rightskip=0cm plus .7\hsize\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@sect}
+% The definition of this macro from \file{latex.dtx} needs to be
+% repeated here because we want to modify its behaviour with
+% respect to:
+% \begin{enumerate}
+% \item the width of the number, which is fixed;
+% \item checking the value of |\unitindent|;
+% \item formatting the section title ragged right;
+% \item changing the argument of |\contentsline|.
+% \end{enumerate}
+% \begin{macrocode}
+\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty\else
+ \refstepcounter{#1}%
+% \end{macrocode}
+% The following code (within the group) checks the value of
+% |\unitindent|. If the sectionnumber is wider than |\unitindent|
+% its value is adapted and a flag is set to rememeber to store the
+% new value in the \file{.aux}-file.
+% \begin{macrocode}
+ \begingroup
+ \setbox\@tempboxa=\hbox{#6\relax
+ \csname the#1\endcsname
+ \hskip.5em}
+ \ifdim\wd\@tempboxa>\unitindent
+ \global\unitindent=\wd\@tempboxa
+ \@indentset
+ \fi
+ \endgroup
+ \let\@@protect\protect
+ \def\protect{\noexpand\protect\noexpand}%
+ \edef\@svsec{\@seccntformat{#1}}%
+ \let\protect\@@protect\fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #6\relax
+ \@hangfrom{\hskip #3\relax\@svsec}{\head@style #8\par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth
+ \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ \toc@font#2 #7}%
+ \else
+ \def\@svsechd{#6\hskip #3\relax
+ \@svsec #8\csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth
+ \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ \toc@font#2 #7}}%
+ \fi
+ \@xsect{#5}}
+% \end{macrocode}
+% This macro was introduced in \LaTeXe, its definition is changed
+% here to get the fixed with of the section number.
+% \begin{macrocode}
+\def\@seccntformat#1{%
+ \hbox to \unitindent{\csname the#1\endcsname \hfil}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@ssect}
+% Similar changes need to be made to the definition of |\@ssect|,
+% which is used in `starred' sections.
+% \begin{macrocode}
+\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #4\relax
+ \@hangfrom{\hskip #1}{\head@style #5\par}\endgroup
+ \else \def\@svsechd{#4\hskip #1\relax #5}\fi
+ \@xsect{#3}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Mark commands}
+%
+% \begin{macro}{\chaptermark}
+% \begin{macro}{\sectionmark}
+% \begin{macro}{\subsectionmark}
+% \begin{macro}{\subsubsectionmark}
+% \begin{macro}{\paragraphmark}
+% \begin{macro}{\subparagraphmark}
+% Default initializations of |\...mark| commands. These commands
+% are used in the definition of the page styles (see
+% section~\ref{sec:pagestyle}) Most of them are already defined by
+% \file{latex.ltx}, so they are only shown here.
+%
+% \begin{macrocode}
+\newcommand\chaptermark[1]{}
+% \newcommand\sectionmark[1]{}
+% \newcommand\subsectionmark[1]{}
+% \newcommand\subsubsectionmark[1]{}
+% \newcommand\paragraphmark[1]{}
+% \newcommand\subparagraphmark[1]{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Define Counters}
+%
+% \begin{macro}{\c@secnumdepth}
+% The value of the counter \Lcount{secnumdepth} gives the depth of
+% the highest-level sectioning command that is to produce section
+% numbers.
+% \begin{macrocode}
+\setcounter{secnumdepth}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@part}
+% \begin{macro}{\c@chapter}
+% \begin{macro}{\c@section}
+% \begin{macro}{\c@subsection}
+% \begin{macro}{\c@subsubsection}
+% \begin{macro}{\c@paragraph}
+% \begin{macro}{\c@subparagraph}
+% These counters are used for the section numbers. The macro\\
+% |\newcounter{|\meta{newctr}|}[|\meta{oldctr}|]|\\
+% defines \meta{newctr} to be a counter, which is reset to zero when
+% counter \meta{oldctr} is stepped. Counter \meta{oldctr} must
+% already be defined.
+%
+% \begin{macrocode}
+\newcounter {part}
+\newcounter {chapter}
+\newcounter {section}[chapter]
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {paragraph}[subsubsection]
+\newcounter {subparagraph}[paragraph]
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\thepart}
+% \begin{macro}{\thechapter}
+% \begin{macro}{\thesection}
+% \begin{macro}{\thesubsection}
+% \begin{macro}{\thesubsubsection}
+% \begin{macro}{\theparagraph}
+% \begin{macro}{\thesubparagraph}
+% For any counter \Lcount{CTR}, |\theCTR| is a macro that defines
+% the printed version of counter \Lcount{CTR}. It is defined in
+% terms of the following macros:
+%
+% |\arabic{|\Lcount{COUNTER}|}| prints the value of
+% \Lcount{COUNTER} as an arabic numeral.
+%
+% |\roman{|\Lcount{COUNTER}|}| prints the value of
+% \Lcount{COUNTER} as a lowercase roman numberal.
+%
+% |\Roman{|\Lcount{COUNTER}|}| prints the value of
+% \Lcount{COUNTER} as an uppercase roman numberal.
+%
+% |\alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
+% as a lowercase letter: $1 =$~a, $2 =$~ b, etc.
+%
+% |\Alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
+% as an uppercase letter: $1 =$~A, $2 =$~B, etc.
+%
+% \begin{macrocode}
+\renewcommand\thepart {\Roman{part}}
+\renewcommand\thechapter {\arabic{chapter}}
+\renewcommand\thesection {\thechapter.\arabic{section}}
+\renewcommand\thesubsection {\thesection.\arabic{subsection}}
+\renewcommand\thesubsubsection {\thesubsection .\arabic{subsubsection}}
+\renewcommand\theparagraph {\thesubsubsection.\arabic{paragraph}}
+\renewcommand\thesubparagraph {\theparagraph.\arabic{subparagraph}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@chapapp}
+% |\@chapapp| is initially defined to be `|\chaptername|'. The
+% |\appendix| command redefines it to be `|\appendixname|'.
+%
+% \begin{macrocode}
+\newcommand\@chapapp{\chaptername}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Parts}
+%
+% \begin{macro}{\part}
+% The command to start a new part of our document.
+%
+% We start a new (righthand) page and use the \pstyle{empty}.
+% \begin{macrocode}
+\newcommand\part{\cleardoublepage
+ \thispagestyle{empty}%
+% \end{macrocode}
+% When we are making a two column document, this will be a one
+% column page. We use |@tempswa| to remember to switch back to two
+% columns.
+% \begin{macrocode}
+ \if@twocolumn
+ \onecolumn
+ \@tempswatrue
+ \else
+ \@tempswafalse
+ \fi
+% \end{macrocode}
+% We need an empty box to prevent the fil glue from disappearing.
+% \begin{macrocode}
+ \hbox{}\vfil
+% \end{macrocode}
+% Here we use |\secdef| to indicate wwhich commands to use to make
+% the actual heading.
+% \begin{macrocode}
+ \secdef\@part\@spart}
+% \end{macrocode}
+%
+% \begin{macro}{\@part}
+% This macro does the actual formatting of the title of the part.
+%
+% \begin{macro}{\PartFont}
+% The font used to typeset the part is stored in this maro.
+% \begin{macrocode}
+\newcommand\PartFont{\bfseries}
+% \end{macrocode}
+% \end{macro}
+%
+% When \Lcount{secnumdepth} is larger than $-2$ for this document
+% class, we have a numbered part, otherwise it is unnumbered.
+% \begin{macrocode}
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}\toc@case{#1}}%
+ \else
+ \addcontentsline{toc}{part}{\toc@case{#1}}%
+ \fi
+% \end{macrocode}
+% We empty the mark registers and center the title on the page.
+% Also we prevent breaking between lines and reset the font.
+% \begin{macrocode}
+ \markboth{}{}
+ {\centering
+ \interlinepenalty \@M
+ \reset@font
+% \end{macrocode}
+% When this is a numbered part we have to print the number. We have
+% to expand |\partname| before |\uppercase| is called, therefore we
+% use a temporary control sequence that, when called will execute
+% |\uppercase| on the contents of |\partname|.
+% \begin{macrocode}
+ \ifnum \c@secnumdepth >-2\relax
+ \Large\PartFont
+ \edef\@tempa{\noexpand\uppercase{\partname}}\@tempa~\thepart
+ \par
+% \end{macrocode}
+% We leave some space before we print the title and leave the
+% finishing up to |\@endpart|.
+% \begin{macrocode}
+ \vskip 20\p@
+ \fi
+ \Large \PartFont \uppercase{#2}\par}%
+ \@endpart}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@spart}
+% This macro does the actual formatting of the title of the part
+% when the star form of the user command was used. In this case we
+% {\em never} print a number. Otherwise the formatting is the same.
+%
+% \begin{macrocode}
+\def\@spart#1{%
+ {\centering
+ \interlinepenalty \@M
+ \reset@font
+ \Large \PartFont #1\par}%
+ \@endpart}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@endpart}
+% This macro finishes the part page, for both |\@part| and
+% |\@spart|.
+%
+% First we fill the current page.
+% \begin{macrocode}
+\def\@endpart{\vfil\newpage
+% \end{macrocode}
+% Then, when we are in twosided mode, we produce a completely blank
+% page.
+% \begin{macrocode}
+ \if@twoside
+ \hbox{}%
+ \thispagestyle{empty}%
+ \newpage
+ \fi
+% \end{macrocode}
+% When this was a two column document we have to switch back to two
+% column mode.
+% \begin{macrocode}
+ \if@tempswa
+ \twocolumn
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Chapters}
+%
+% \begin{macro}{\chapter}
+% A chapter should always start on a new page therefore we start by
+% calling |\clearpage| and setting the pagestyle for this page to
+% \pstyle{plain}.
+% \begin{macrocode}
+\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
+ \thispagestyle{plain}%
+% \end{macrocode}
+% Then we prevent floats from appearing at the top of this page
+% because it looks weird to see a floating object above a chapter
+% title.
+% \begin{macrocode}
+ \global\@topnum\z@
+% \end{macrocode}
+% Then we suppress the indentation of the first paragraph by
+% setting the switch |\@afterindent| to |false|. We use |\secdef|
+% to specify the macros to use for actually setting the chapter
+% title.
+% \begin{macrocode}
+ \@afterindentfalse
+ \secdef\@chapter\@schapter}
+% \end{macrocode}
+%
+% \begin{macro}{\@chapter}
+% This macro is called when we have a numbered chapter. When
+% \Lcount{secnumdepth} is larger than $-1$ we display the chapter
+% number. We also inform the user that a new chapter is about to be
+% typeset by writing a message to the terminal.
+% \begin{macrocode}
+\def\@chapter[#1]#2{%
+ \ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{chapter}%
+ \typeout{\@chapapp\space\thechapter.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter}\toc@font0 #1}%
+ \else
+ \addcontentsline{toc}{chapter}{\toc@font0 #1}%
+ \fi
+% \end{macrocode}
+% After having written an entry to the table of contents we store
+% the (alternative) title of this chapter with |\chaptermark| and
+% add some white space to the lists of figures and tables.
+% \begin{macrocode}
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+% \end{macrocode}
+% Then we call upon |\@makechapterhead| to format the actual
+% chapter title. We have to do this in a special way when we are in
+% twocolumn mode in order to have the chapter title use the entire
+% |\textwidth|. In one column mode we call |\@afterheading| which
+% takes care of suppressing the indentation.
+% \begin{macrocode}
+ \if@twocolumn
+ \@topnewpage[\@makechapterhead{#2}]%
+ \else
+ \@makechapterhead{#2}%
+ \@afterheading
+ \fi}
+% \end{macrocode}
+%
+% \begin{macro}{\ChapFont}
+% The font used to typeset the chapters is stored in this maro.
+% \begin{macrocode}
+\newcommand\ChapFont{\bfseries}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makechapterhead}
+% The macro above uses |\@makechapterhead|\meta{text} to format the
+% heading of the chapter.
+%
+% We begin by leaving some white space. The we open a group in
+% which we have a paragraph indent of 0pt, and in which we have the
+% text set ragged right. We also reset the font.
+% \begin{macrocode}
+\def\@makechapterhead#1{%
+ \vspace*{50\p@ \@plus 5\p@}%
+ {\setlength\parindent{\z@}%
+ \setlength\parskip {\z@}%
+ \head@style \reset@font
+% \end{macrocode}
+% Then we check whether the number of the chapter has to be printed.
+% If so we leave some whitespace between the chapternumber and its
+% title.
+% \begin{macrocode}
+ \ifnum \c@secnumdepth >\m@ne
+ \Large\ChapFont \@chapapp{} \thechapter
+ \par
+ \vskip 20\p@
+ \fi
+% \end{macrocode}
+% Now we set the title in a large bold font. We prevent a pagebreak
+% at this point and leave some whitespace before the text begins.
+% \begin{macrocode}
+ \Large \ChapFont #1\par
+ \nobreak
+ \vskip 40\p@
+ }}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@schapter}
+% This macro is called when we have an unnumbered chapter. It is
+% much simpler than |\@chapter| because it only needs to typeset
+% the chapter title.
+% \begin{macrocode}
+\def\@schapter#1{\if@twocolumn
+ \@topnewpage[\@makeschapterhead{#1}]%
+ \else
+ \@makeschapterhead{#1}%
+ \@afterheading
+ \fi}
+% \end{macrocode}
+%
+% \begin{macro}{\@makeschapterhead}
+% The macro above uses |\@makeschapterhead|\meta{text}to format
+% the heading of the chapter. It is similar to |\@makechapterhead|
+% except that it never has to print a chapter number.
+%
+% \begin{macrocode}
+\def\@makeschapterhead#1{%
+ \vspace*{50\p@\@plus 5\p@}%
+ {\setlength\parindent{\z@}%
+ \setlength\parskip{\z@}%
+ \head@style
+ \reset@font
+ \Large \ChapFont #1\par
+ \nobreak
+ \vskip 40\p@
+ }}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{Lower level headings}
+%
+% These commands all make use of |\@startsection|.
+% \begin{macro}{\section}
+% This gives a normal heading with white space above the heading
+% (the whitespace below the heading will be generated by the
+% |\parskip| that is inserted at the start of the first paragraph),
+% the title set in |\large\bfseries|, and no indentation on the
+% first paragraph.
+% \begin{macrocode}
+\newcommand\section{%
+ \@startsection {section}{1}{\z@}%
+ {-2\baselineskip\@plus -1\baselineskip \@minus -.5\baselineskip}%
+%<+type1> {.5\baselineskip}%
+%<+type3> {.01\baselineskip}%
+ {\reset@font\large\SectFont}}
+% \end{macrocode}
+%
+% \begin{macro}{\SectFont}
+% The font used to typeset the sections is stored in this maro.
+% \begin{macrocode}
+\newcommand\SectFont{\bfseries}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\subsection}
+% This gives a normal heading with white space above the heading,
+% the title set in |\normalsize\bfseries|, and no indentation on
+% the first paragraph.
+% \begin{macrocode}
+\newcommand\subsection{%
+ \@startsection{subsection}{2}{\z@}%
+ {-1\baselineskip\@plus -.5\baselineskip \@minus -.25\baselineskip}%
+%<+type1> {.25\baselineskip}%
+%<+type3> {.01\baselineskip}%
+ {\reset@font\normalsize\SSectFont}}
+% \end{macrocode}
+%
+% \begin{macro}{\SSectFont}
+% The font used to typeset the subsections is stored in this maro.
+% \begin{macrocode}
+\newcommand\SSectFont{\bfseries}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\subsubsection}
+% This gives a normal heading with white space above the heading,
+% the title set in |\normalsize\tm|, and no indentation on the
+% first paragraph.
+% \begin{macrocode}
+\newcommand\subsubsection{%
+ \@startsection{subsubsection}{3}{\z@}%
+ {-1\baselineskip plus -.5\baselineskip minus -.25\baselineskip}%
+%<+type1> {.25\baselineskip}%
+%<+type3> {.01\baselineskip}%
+ {\reset@font\normalsize\SSSectFont}}
+% \end{macrocode}
+%
+% \begin{macro}{\SSSectFont}
+% The font used to typeset the subsubsections is stored in this maro.
+% \begin{macrocode}
+\newcommand\SSSectFont{\rmfamily}
+\newcommand\SSSectFont{\slshape}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\paragraph}
+% This gives a run-in heading with white space above and to the
+% right of the heading, the title set in |\normalsize\slshape|.
+% \begin{macrocode}
+\newcommand\paragraph{%
+ \@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\reset@font\normalsize\ParaFont}}
+% \end{macrocode}
+%
+% \begin{macro}{\ParaFont}
+% The font used to typeset the paragraphs is stored in this maro.
+% \begin{macrocode}
+\newcommand\ParaFont{\slshape}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\subparagraph}
+% This gives an indented run-in heading with white space above and
+% to the right of the heading, the title set in
+% |\normalsize\slshape|.
+% \begin{macrocode}
+\newcommand\subparagraph{%
+ \@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\reset@font\normalsize\SParaFont}}
+% \end{macrocode}
+%
+% \begin{macro}{\SParaFont}
+% The font used to typeset the subparagraphs is stored in this maro.
+% \begin{macrocode}
+\newcommand\SParaFont{\slshape}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Headingfonts}
+% To change the fonts that are used to typeset the title,part,
+% chapter and section headings this macro can be used.
+% \begin{macrocode}
+\newcommand\HeadingFonts[8]{%
+ \renewcommand\TitleFont{#1}%
+ \renewcommand\PartFont{#2}%
+ \renewcommand\ChapFont{#3}%
+ \renewcommand\SectFont{#4}%
+ \renewcommand\SSectFont{#5}%
+ \renewcommand\SSSectFont{#6}%
+ \renewcommand\ParaFont{#7}%
+ \renewcommand\SParaFont{#8}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Lists}
+%
+% \subsubsection{General List Parameters}
+%
+% The following commands are used to set the default values for the list
+% environment's parameters. See the \LaTeX{} manual for an explanation
+% of the meanings of the parameters. Defaults for the list
+% environment are set as follows. First, |\rightmargin|,
+% |\listparindent| and |\itemindent| are set to 0pt. Then, for a Kth
+% level list, the command |\@listK| is called, where `K' denotes `i',
+% '`i', ... , `vi'. (I.e., |\@listiii| is called for a third-level
+% list.) By convention, |\@listK| should set |\leftmargin| to
+% |\leftmarginK|.
+%
+% \begin{macro}{\leftmargin}
+% \begin{macro}{\leftmargini}
+% \begin{macro}{\leftmarginii}
+% \begin{macro}{\leftmarginiii}
+% \begin{macro}{\leftmarginiv}
+% \begin{macro}{\leftmarginv}
+% \begin{macro}{\leftmarginvi}
+% For efficiency, level-one list's values are defined at top level, and
+% |\@listi| is defined to set only |\leftmargin|.
+%
+% \begin{macrocode}
+\setlength\leftmargini {\unitindent}
+\setlength\leftmarginii {\othermargin}
+\setlength\leftmarginiii{\othermargin}
+\setlength\leftmarginiv {\othermargin}
+\setlength\leftmarginv {\othermargin}
+\setlength\leftmarginvi {1em}
+% \end{macrocode}
+% Here we set the top level leftmargin.
+% \begin{macrocode}
+\setlength\leftmargin {\leftmargini}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\labelsep}
+% \begin{macro}{\labelwidth}
+% |\labelsep| is the distance between the label and the text of an
+% item; |\labelwidth| is the width of the label.
+% \begin{macrocode}
+\setlength \labelsep {5\p@}
+\setlength \labelwidth{\leftmargini}
+\addtolength\labelwidth{-\labelsep}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\partopsep}
+% When the user leaves a blank line before the environment an extra
+% vertical space of |\partopsep| is inserted, in addition to
+% |\parskip| and |\topsep|.
+% \begin{macrocode}
+\setlength\partopsep{\z@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\topsep}
+% Extra vertical space, in addition to |\parskip|, added above and
+% below list and paragraphing environments.
+% \begin{macrocode}
+\setlength\topsep{\z@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@beginparpenalty}
+% \begin{macro}{\@endparpenalty}
+% These penalties are inserted before and after a list or paragraph
+% environment. They are set to a bonus value to encourage page
+% breaking at these points.
+% \begin{macro}{\@itempenalty}
+% This penalty is inserted between list items.
+% \begin{macrocode}
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@listI}
+% \begin{macro}{\@listi}
+% |\@listI| defines top level and |\@listi| values of
+% |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep|
+%
+% \begin{macrocode}
+\def\@listI{%
+ \leftmargin\unitindent
+ \labelsep.5em%
+ \labelwidth\leftmargin
+ \advance\labelwidth-\labelsep
+ \parsep \z@
+%<-type3> \topsep 0\p@ \@plus\p@
+%<+type3> \topsep -.5\parskip \@plus\p@
+ \itemsep 0\p@ \@plus1\p@}
+\let\@listi\@listI
+% \end{macrocode}
+% We have to initialise these parameters.
+% \begin{macrocode}
+\@listi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@listii}
+% \begin{macro}{\@listiii}
+% \begin{macro}{\@listiv}
+% \begin{macro}{\@listv}
+% \begin{macro}{\@listvi}
+% Here are the same macros for the higher level lists.
+% \begin{macrocode}
+\def\@listii {\leftmargin\leftmarginii
+ \labelsep .5em%
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+%<-type3> \topsep 0\p@ \@plus\p@
+%<+type3> \topsep -.5\parskip\@plus\p@
+ \parsep \z@
+ \itemsep \z@ \@plus\p@}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelsep .5em%
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+%<-type3> \topsep 0\p@ \@plus\p@
+%<+type3> \topsep -.5\parskip\@plus\p@
+ \parsep \z@
+ \partopsep \z@ \@plus\p@
+ \itemsep \z@ \@plus\p@}
+\def\@listiv {\leftmargin\leftmarginiv
+ \labelsep .5em%
+ \labelwidth\leftmarginiv%
+ \advance\labelwidth-\labelsep
+%<-type3> \topsep 0\p@ \@plus\p@
+%<+type3> \topsep -.5\parskip\@plus\p@
+ \parsep \z@
+ \itemsep \z@ \@plus\p@}
+\def\@listv {\leftmargin\leftmarginv
+ \labelsep .5em%
+ \labelwidth\leftmarginv
+ \advance\labelwidth-\labelsep%
+%<-type3> \topsep 0\p@ \@plus\p@
+%<+type3> \topsep -.5\parskip\@plus\p@
+ \parsep \z@
+ \itemsep \z@ \@plus\p@}
+\def\@listvi {\leftmargin\leftmarginvi
+ \labelsep .5em
+ \labelwidth\leftmarginvi
+ \advance\labelwidth{-\labelsep}%
+%<-type3> \topsep 0\p@ \@plus\p@
+%<+type3> \topsep -.5\parskip\@plus\p@
+ \parsep \z@
+ \itemsep \z@ \@plus\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Enumerate}
+%
+% The enumerate environment uses four counters: \Lcount{enumi},
+% \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where
+% \Lcount{enumN} controls the numbering of the Nth level
+% enumeration.
+%
+% \begin{macro}{\theenumi}
+% \begin{macro}{\theenumii}
+% \begin{macro}{\theenumiii}
+% \begin{macro}{\theenumiv}
+% The counters are already defined in \file{latex.dtx}, but their
+% representation is changed here.
+%
+% \begin{macrocode}
+\renewcommand\theenumi{\arabic{enumi}}
+\renewcommand\theenumii{\alph{enumii}}
+\renewcommand\theenumiii{\roman{enumiii}}
+\renewcommand\theenumiv{\Alph{enumiv}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\labelenumi}
+% \begin{macro}{\labelenumii}
+% \begin{macro}{\labelenumiii}
+% \begin{macro}{\labelenumiv}
+% The label for each item is generated by the commands\\
+% |\labelenumi| ... |\labelenumiv|.
+% \begin{macrocode}
+\newcommand\labelenumi{\theenumi.}
+\newcommand\labelenumii{(\theenumii)}
+\newcommand\labelenumiii{\theenumiii.}
+\newcommand\labelenumiv{\theenumiv.}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\p@enumii}
+% \begin{macro}{\p@enumiii}
+% \begin{macro}{\p@enumiv}
+% The expansion of |\p@enumN||\theenumN| defines the output of a
+% |\ref| command when referencing an item of the Nth level of an
+% enumerated list.
+% \begin{macrocode}
+\renewcommand\p@enumii{\theenumi}
+\renewcommand\p@enumiii{\theenumi(\theenumii)}
+\renewcommand\p@enumiv{\p@enumiii\theenumiii}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{environment}{enumerate}
+% We want to have different label positioning on different levels of
+% list. To acheive this we have to redefine the \Lenv{enumerate}
+% environment.
+%
+% \begin{macrocode}
+\renewenvironment{enumerate}{%
+ \ifnum \@enumdepth >3
+ \@toodeep
+ \else
+ \advance\@enumdepth \@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \list{\csname label\@enumctr\endcsname}
+ {\usecounter{\@enumctr}%
+%<+type1> \ifnum \@listdepth=1
+ \if@revlabel
+ \def\makelabel##1{\hskip .5\unitindent{##1\hfil}}%
+ \else
+%<-type3> \def\makelabel##1{\hfil##1}
+%<+type3> \def\makelabel##1{##1\hfil}
+ \fi
+%<*type1>
+ \else
+ \def\makelabel##1{##1\hfil}%
+%</type1>
+ \fi
+ }%
+ \fi}
+% \end{macrocode}
+% We try to suppress spaces after these list constructs.
+% \begin{macrocode}
+ {\global\@ignoretrue \endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Itemize}
+%
+% \begin{macro}{\labelitemi}
+% \begin{macro}{\labelitemii}
+% \begin{macro}{\labelitemiii}
+% \begin{macro}{\labelitemiv}
+% Itemization is controlled by four commands: |\labelitemi|,
+% |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define
+% the labels of thevarious itemization levels: the symbols used are
+% bullet, bold en-dash, asterisk and centred dot.
+%
+% \begin{macrocode}
+\newcommand\labelitemi{$\m@th\bullet$}
+\newcommand\labelitemii{\bfseries --}
+\newcommand\labelitemiii{$\m@th\ast$}
+\newcommand\labelitemiv{$\m@th\cdot$}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{itemize}
+% We want to have differen label positioning on different levels of
+% list. To acheive this we have to redefine the \Lenv{itemize}
+% environment.
+% \begin{macrocode}
+\renewenvironment{itemize}{%
+ \ifnum \@itemdepth >3
+ \@toodeep
+ \else
+ \advance\@itemdepth \@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \list{\csname\@itemitem\endcsname}%
+ {%
+%<+type1> \ifnum \@listdepth=1\relax
+ \if@revlabel
+ \def\makelabel##1{\hskip .5\unitindent{##1\hfil}}\else
+%<+type1> \def\makelabel##1{\hfil##1}
+%<+type3> \def\makelabel##1{##1\hfil}
+ \fi
+%<*type1>
+ \else
+ \def\makelabel##1{##1\hfil}
+ \fi
+%</type1>
+ }%
+ \fi}
+% \end{macrocode}
+% We try to suppress spaces after these list constructs.
+% \begin{macrocode}
+ {\global\@ignoretrue \endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Description}
+%
+% \begin{environment}{description}
+% The description environment is defined here -- while the itemize
+% and enumerate environments are defined in \file{latex.dtx}.
+%
+% \begin{macrocode}
+\newenvironment{description}
+ {\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\descriptionlabel}
+% To change the formatting of the label, you must redefine
+% |\descriptionlabel|.
+%
+% \begin{macrocode}
+\newcommand\descriptionlabel[1]{\hspace\labelsep \bfseries #1}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Adapting existing environments}
+%
+% Because we globally set |\topsep| to zero, we need to modify the
+% definitions of a number of environments slightly to get a litle
+% whitespace around them.
+%
+% \begin{environment}{center}
+% Add a litle surrounding whitespace.
+% \begin{macrocode}
+%<*type1>
+\def\center
+ {\topsep=.25\baselineskip \@plus .1\baselineskip
+ \@minus .1\baselineskip
+ \trivlist \centering\item[]}
+\let\endcenter\endtrivlist
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{flushleft}
+% Add a litle surrounding whitespace.
+% \begin{macrocode}
+\def\flushleft
+ {\topsep=.25\baselineskip \@plus .1\baselineskip
+ \@minus .1\baselineskip
+ \trivlist \raggedright\item[]}
+\let\endflushleft=\endtrivlist
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{flushright}
+% Add a litle surrounding whitespace.
+% \begin{macrocode}
+\def\flushright
+ {\topsep=.25\baselineskip \@plus .1\baselineskip
+ \@minus .1\baselineskip
+ \trivlist \raggedleft\item[]}
+\let\endflushright=\endtrivlist
+%</type1>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{verbatim}
+% In \Lenv{verbatim} we add a little surrounding whitespace,
+% --which for \file{rapport3} is negative to
+% compensate for the positive |\parskip|-- but also an indent for
+% the \file{rapport1} document class.
+% \begin{macrocode}
+\def\verbatim{%
+%<*type1>
+ \topsep=.25\baselineskip \@plus .1\baselineskip
+ \@minus .1\baselineskip
+ \@verbatim
+ \leftskip\unitindent
+%</type1>
+%<*type3>
+ \topsep=-.5\parskip
+ \@verbatim
+%</type3>
+ \frenchspacing\@vobeyspaces \@xverbatim}
+%<+type1>\def\endverbatim{\if@newlist \leavevmode\fi\endtrivlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Defining new environments}
+%
+% \subsubsection{Abstract}
+%
+% \begin{environment}{abstract}
+% When we are producing a separate titlepage we also put the
+% abstract on a page of its own. It will be centred vertically on
+% the page.
+%
+% \begin{macrocode}
+\if@titlepage
+ \newenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \hbox{\SectFont \abstractname}
+ \noindent\ignorespaces}
+ {\par\vfil\null\endtitlepage}
+% \end{macrocode}
+% When we are not making a seperate titlepagewe have to check if we
+% are in twocolumn mode. In that case the abstract is set as a
+% |\section*|, otherwise the abstract is typeset flushleft, an
+% amount |\unitindent| smaller as the normal text.
+% \begin{macrocode}
+\else
+ \newenvironment{abstract}{%
+ \if@twocolumn
+ \section*{\abstractname}%
+ \else
+ \small
+ \bgroup\rightskip=\unitindent
+ \hbox{\SectFont \abstractname}%
+ \noindent\ignorespaces
+% \end{macrocode}
+ \fi}
+% \end{macrocode}
+% Which implies that the definition of |\end{abstract}| is also
+% different.
+% \begin{macrocode}
+ {\if@twocolumn\else\par\egroup\fi}
+\fi
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Verse}
+%
+% \begin{environment}{verse}
+% The verse environment is defined by making clever use of the
+% list environment's parameters. The user types |\\| to end a line.
+% This is implemented by |\let|'ing |\\| equal |\@centercr|.
+%
+% \begin{macrocode}
+\newenvironment{verse}
+ {\let\\=\@centercr
+ \list{}{\itemsep\z@
+ \itemindent-1.5em%
+ \listparindent\itemindent
+ \rightmargin\leftmargin
+ \advance\leftmargin1.5em}%
+ \item[]}
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Quotation}
+%
+% \begin{environment}{quotation}
+% The quotation environment is also defined by making clever use of
+% the list environment's parameters. The lines in the environment
+% are set smaller than |\textwidth|. The first line of a paragraph
+% inside this environment is indented.
+%
+% \begin{macrocode}
+\newenvironment{quotation}
+ {\list{}{%
+ \listparindent\z@
+ \itemindent\listparindent
+ \rightmargin\leftmargin
+ \parsep\z@ \@plus\p@}%
+ \item[]}
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Quote}
+%
+% \begin{environment}{quote}
+% The quote environment is like the quotation environment except
+% that paragraphs are not indented.
+%
+% \begin{macrocode}
+\newenvironment{quote}
+ {\list{}{\rightmargin\leftmargin}%
+ \item[]}
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Theorem}
+%
+% \begin{macro}{\@begintheorem}
+% \begin{macro}{\@opargbegintheorem}
+% \begin{macro}{\@endtheorem}
+% These document classes have a slightly modified \Lenv{theorem}
+% environment style. Surrounding whitespace is added and an
+% initialisation of |\labelsep|. Finally a slanted font instead of
+% an italic font is used.
+% \begin{macrocode}
+\def\@begintheorem#1#2{%
+ \vskip\baselineskip \labelsep=.5em%
+ \trivlist
+ \item[\hskip \labelsep{\bfseries #1\ #2}]\slshape}
+\def\@opargbegintheorem#1#2#3{%
+ \vskip\baselineskip \labelsep=.5em%
+ \trivlist
+ \item[\hskip \labelsep{\bfseries #1\ #2\ (#3)}]\slshape}
+\def\@endtheorem{\endtrivlist \vskip\baselineskip}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Titlepage}
+%
+% \begin{environment}{titlepage}
+% In the normal environments, the titlepage environment does nothing
+% but start and end a page, and inhibit page numbers. It also resets
+% the page number to zero. In two-column style, it still makes a
+% one-column page.
+%
+% \begin{macrocode}
+\newenvironment{titlepage}
+ {
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+ \if@compatibility
+ \setcounter{page}{0}
+ \else
+ \setcounter{page}{1}%
+ \fi}
+ {\if@restonecol\twocolumn \else \newpage \fi
+ \setcounter{page}{1}%
+ }
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Appendix}
+%
+% \begin{macro}{\appendix}
+%
+% The |\appendix| command is not really an environment, it is a
+% macro that makes some changes in the way things are done.
+%
+% In this document class the |\appendix| command must do the
+% following:
+% \begin{itemize}
+% \item reset the chapter and section counters to zero,
+% \item set |\@chapapp| to |\appendixname| (for messages),
+% \item redefine the chapter counter to produce appendix numbers,
+% \item possibly redefine the |\chapter| command if appendix titles
+% and headings are to look different from chapter titles and
+% headings.
+% \end{itemize}
+%
+% \begin{macrocode}
+\newcommand\appendix{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \renewcommand\@chapapp{\appendixname}%
+ \renewcommand\thechapter{\Alph{chapter}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Setting parameters for existing environments}
+%
+% \subsubsection{Array and tabular}
+%
+% \begin{macro}{\arraycolsep}
+% The columns in an array environment are separated by
+% 2|\arraycolsep|.
+% \begin{macrocode}
+\setlength\arraycolsep{5\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tabcolsep}
+% The columns in an tabular environment are separated by
+% 2|\tabcolsep|.
+% \begin{macrocode}
+\setlength\tabcolsep{6\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\arrayrulewidth}
+% The width of rules in the array and tabular environments is given
+% by |\arrayrulewidth|.
+% \begin{macrocode}
+\setlength\arrayrulewidth{.4\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\doublerulesep}
+% The space between adjacent rules in the array and tabular
+% environments is given by |\doublerulesep|.
+% \begin{macrocode}
+\setlength\doublerulesep{2\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Tabbing}
+%
+% \begin{macro}{\tabbingsep}
+% This controls the space that the |\'| command puts in. (See
+% \LaTeX{} manual for an explanation.)
+% \begin{macrocode}
+\setlength\tabbingsep{\labelsep}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Minipage}
+%
+% \begin{macro}{\@minipagerestore}
+% The macro |\@minipagerestore| is called upon entry to a minipage
+% environment to set up things that are to be handled differently
+% inside a minipage environment.
+%
+% \begin{macrocode}
+%<+type1>\def\@minipagerestore{\parindent\unitindent}
+%<*type3>
+\def\@minipagerestore{%
+ \parskip=.5\baselineskip \@plus .1\baselineskip
+ \@minus .1\baselineskip}
+%</type3>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@mpfootins}
+% Minipages have their own footnotes; |\skip||\@mpfootins| plays
+% same r\^ole for footnotes in a minipage as |\skip||\footins| does
+% for ordinary footnotes.
+%
+% \begin{macrocode}
+\skip\@mpfootins = \skip\footins
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Framed boxes}
+%
+% \begin{macro}{\fboxsep}
+% The space left by |\fbox| and |\framebox| between the box and the
+% text in it.
+% \begin{macro}{\fboxrule}
+% The width of the rules in the box made by |\fbox| and |\framebox|.
+% \begin{macrocode}
+\setlength\fboxsep{3\p@}
+\setlength\fboxrule{.4\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Equation and eqnarray}
+%
+% \begin{macro}{\theequation}
+% The equation counter will be reset at beginning of a new chapter
+% and the equation number will be prefixed by the chapter number.
+%
+% This code must follow the |\chapter| definition, or more exactly
+% the definition of the chapter counter.
+% \begin{macrocode}
+\@addtoreset{equation}{chapter}
+\renewcommand\theequation{\thechapter.\arabic{equation}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jot}
+% |\jot| is the extra space added between lines of an eqnarray
+% environment. The default value is used.
+% \begin{macrocode}
+% \setlength\jot{3pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@eqnnum}
+% The macro |\@eqnnum| defines how equation numbers are to appear in
+% equations. Again the default is used.
+%
+% \begin{macrocode}
+% \def\@eqnnum{(\theequation)}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Floating objects}
+%
+% The file \file{latex.dtx} only defines a number of tools with
+% which floating objects can be defined. This is done in the
+% document class. It needs to define the following macros for each
+% floating object of type \texttt{TYPE} (e.g., \texttt{TYPE} =
+% figure).
+%
+% \begin{description}
+% \item[\texttt{\bslash fps@TYPE}]
+% The default placement specifier for floats of type
+% \texttt{TYPE}.
+%
+% \item[\texttt{\bslash ftype@TYPE}]
+% The type number for floats of type \texttt{TYPE}. Each
+% \texttt{TYPE} has associated a unique positive {\texttt
+% TYPE} number, which is a power of two. E.g., figures might
+% have type number 1, tables type number 2, programs type
+% number 4, etc.
+%
+% \item[\texttt{\bslash ext@TYPE}]
+% The file extension indicating the file on which the contents
+% list for float type \texttt{TYPE} is stored. For example,
+% |\ext@figure| = `lof'.
+%
+% \item[\texttt{\bslash fnum@TYPE}]
+% A macro to generate the figure number for a caption. For
+% example, |\fnum@TYPE| == `Figure |\thefigure|'.
+%
+% \item[\texttt{\bslash @makecaption{\meta{num}}{\meta{text}}}]
+% A macro to make a caption, with \meta{num} the value produced
+% by |\fnum@...| and \meta{text} the text of the caption. It
+% can assume it's in a |\parbox| of the appropriate width.
+% This will be used for {\em all} floating objects.
+%
+% \end{description}
+%
+% The actual environment that implements a floating object such as
+% a figure is defined using the macros |\@float| and |\end@float|,
+% which are defined in \file{latex.dtx}.
+%
+% An environment that implements a single column floating object is
+% started with |\@float{|\texttt{TYPE}|}[|\meta{placement}|]| of type
+% \texttt{TYPE} with \meta{placement} as the placement specifier.
+% The default value of \meta{PLACEMENT} is defined by |\fps@TYPE|.
+%
+% The environment is ended by |\end@float|. E.g., |\figure| ==
+% |\@float|{figure}, |\endfigure| == |\end@float|.
+%
+% \subsubsection{Figure}
+%
+% Here is the implementation of the figure environment.
+%
+% \begin{macro}{\c@figure}
+% First we have to allocate a counter to number the figures. In
+% this document class the figures are numbered per chapter.
+% \begin{macrocode}
+\newcounter{figure}[chapter]
+\renewcommand\thefigure{\thechapter.\@arabic\c@figure}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fps@figure}
+% \begin{macro}{\ftype@figure}
+% \begin{macro}{\ext@figure}
+% \begin{macro}{\num@figure}
+% Here are the parameters for the floating objects of type `figure'.
+% \begin{macrocode}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{\figurename~\thefigure}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{figure}
+% \begin{environment}{figure*}
+% And the definition of the actual environment. The form with the
+% |*| is used for double column figures.
+% \begin{macrocode}
+\newenvironment{figure}
+ {\@float{figure}}
+ {\end@float}
+\newenvironment{figure*}
+ {\@dblfloat{figure}}
+ {\end@dblfloat}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \subsubsection{Table}
+%
+% Here is the implementation of the table environment. It is very
+% much the same as the figure environment.
+%
+% \begin{macro}{\c@table}
+% First we have to allocate a counter to number the tables. In this
+% document class the tables are numbered per chapter.
+% \begin{macrocode}
+\newcounter{table}[chapter]
+\renewcommand\thetable{\thechapter.\@arabic\c@table}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fps@table}
+% \begin{macro}{\ftype@table}
+% \begin{macro}{\ext@table}
+% \begin{macro}{\num@table}
+% Here are the parameters for the floating objects of type `table'.
+% \begin{macrocode}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{\tablename~\thetable}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{table}
+% \begin{environment}{table*}
+% And the definition of the actual environment. The form with the
+% |*| is used for double column tables.
+% \begin{macrocode}
+\newenvironment{table}
+ {\@float{table}}
+ {\end@float}
+\newenvironment{table*}
+ {\@dblfloat{table}}
+ {\end@dblfloat}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \subsubsection{Captions}
+%
+% \begin{macro}{\@makecaption}
+% The |\caption| command calls |\@makecaption| to format the
+% caption of floating objects. It gets two arguments,
+% \meta{number}, the number of the floating object and \meta{text},
+% the text of the caption. Usually \meta{number} contains a string
+% such as `Figure 3.2'. The macro can assume it is called inside a
+% |\parbox| of right width, with |\normalsize|.
+%
+% \begin{macro}{\abovecaptionskip}
+% \begin{macro}{\belowcaptionskip}
+% These lengths contain the amount of white space to leave above
+% and below the caption.
+% \begin{macrocode}
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+\setlength\abovecaptionskip{10\p@}
+\setlength\belowcaptionskip{0\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The definition of this macro is |\long| in order to allow more
+% then one paragraph in a caption.
+% \begin{macrocode}
+\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+% \end{macrocode}
+% We want to see if the caption fits on one line on the page,
+% therefore we first typeset it in a temporary box.
+% \begin{macrocode}
+ \sbox\@tempboxa{{\CaptionLabelFont#1:} \CaptionTextFont#2}%
+% \end{macrocode}
+% We can the measure its width. It that is larger than the current
+% |\hsize| we typeset the caption as an ordinary paragraph.
+% \begin{macrocode}
+ \ifdim \wd\@tempboxa >\hsize
+ {\CaptionLabelFont#1:} \CaptionTextFont#2\par
+% \end{macrocode}
+% If the caption fits, we center it.
+% \begin{macrocode}
+ \else
+ \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\CaptionLabelFont}
+% \begin{macro}{\CaptionTextFont}
+% These macros can contain the fonts used for typesetting captions.
+% By default they do nothing.
+% \begin{macrocode}
+\newcommand\CaptionLabelFont{\relax}
+\newcommand\CaptionTextFont{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\CaptionFonts}
+% To change the fonts that are used to typeset captions
+% this macro can be used.
+% \begin{macrocode}
+\newcommand\CaptionFonts[2]{%
+ \renewcommand\CaptionLabelFont{#1}%
+ \renewcommand\CaptionTextFont{#2}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Font changing}
+%
+% Here we supply the declarative font changing commands that were
+% common in \LaTeX\ version 2.09 and earlier. These commands work
+% in text mode \emph{and} in math mode. They are provided for
+% compatibility, but one should start using the |\text...| and
+% |\math...| commands instead. These commands are defined using
+% |\DeclareOldFontCommand|, a command with three arguments: the user
+% command to be defined; \LaTeX\ commands to execute in text mode
+% and \LaTeX\ commands to execute in math mode.
+%
+% \begin{macro}{\rm}
+% \begin{macro}{\tt}
+% \begin{macro}{\sf}
+%
+% The commands to change the family. When in compatibility mode we
+% select the `default' font first, to get \LaTeX2.09 behviour.
+% \begin{macrocode}
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bf}
+% The command to change to the bold series. One should use
+% |\mdseries| to explicitly switch back to medium series.
+% \begin{macrocode}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sl}
+% \begin{macro}{\it}
+% \begin{macro}{\sc}
+%
+% And the commands to change the shape of the font. The slanted and
+% small caps shapes are not available by default as math alphabets,
+% so those changes do nothing in math mode. One should use
+% |\upshape| to explicitly change back to the upright shape.
+% \begin{macrocode}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\relax}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cal}
+% \begin{macro}{\mit}
+%
+% The commands |\cal| and |\mit| should only be used in math mode,
+% outside math mode they have no effect. Currently the New Font
+% Selection Scheme defines these commands to generate warning
+% messages. Therefore we have to define them `by hand'.
+% \begin{macrocode}
+\renewcommand{\cal}{\protect\pcal}
+\newcommand{\pcal}{\@fontswitch{\relax}{\mathcal}}
+\renewcommand{\mit}{\protect\pmit}
+\newcommand{\pmit}{\@fontswitch{\relax}{\mathnormal}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pem}
+% The definition of |\pem| is changed here to have slanted instead
+% of italic fonts.
+% \begin{macrocode}
+\def\pem{\@nomath\em \ifdim \fontdimen\@ne\font >\z@
+ \upshape \else \slshape \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Cross Referencing}
+% \subsection{Table of Contents, etc.}
+%
+% A |\section| command writes a
+% |\contentsline{section}{|\meta{title}|}{|\meta{page}|}| command
+% on the \file{.toc} file, where \meta{title} contains the
+% contents of the entry and \meta{page} is the page number. If
+% sections are being numbered, then \meta{title} will be of the
+% form |\numberline{|\meta{num}|}{|\meta{heading}|}| where
+% \meta{num} is the number produced by |\thesection|. Other
+% sectioning commands work similarly.
+%
+% A |\caption| command in a `figure' environment writes
+%
+% |\contentsline{figure}{\numberline{|\meta{num}|}{|%
+% \meta{caption}|}}{|\meta{page}|}|
+%
+% on the .\file{lof} file, where \meta{num} is the number produced
+% by |\thefigure| and \meta{caption} is the figure caption. It
+% works similarly for a `table' environment.
+%
+% The command |\contentsline{|\meta{name}|}| expands to
+% |\l@|\meta{name}. So, to specify the table of contents, we must
+% define |\l@chapter|, |\l@section|, |\l@subsection|, ... ; to
+% specify the list of figures, we must define |\l@figure|; and so
+% on. Most of these can be defined with either the
+% |\@dottedtocline| or the |\@regtocline| command, which work as
+% follows.
+%
+% |\@dottedtocline{|\meta{level}|}{|\meta{indent}|}{|^^A
+% \meta{numwidth}|}{|^^A
+% \meta{title}|}{|\meta{page}|}|
+%
+% |\@regtocline{|\meta{level}|}{|\meta{title}|}{|\meta{page}|}|
+%
+% \begin{description}
+% \item[\meta{level}] An entry is produced only if\meta{ level}
+% $<=$ value of the \Lcount{tocdepth} counter. Note,
+% |\chapter| is level 0, |\section| is level 1, etc.
+% \item[\meta{indent}] The indentation from the outer left margin
+% of the start of the contents line.
+% \item[\meta{numwidth}] The width of a box in which the section
+% number is to go, if \meta{title} includes a |\numberline|
+% command.
+% \end{description}
+%
+% \begin{macro}{\@pnumwidth}
+% \begin{macro}{\@tocrmarg}
+% \begin{macro}{\@dotsep}
+% This command uses the following three parameters, which are set
+% with a |\newcommand| (so em's can be used to make them depend upon
+% the font).
+% \begin{description}
+% \item[\texttt{\bslash @pnumwidth}] The width of a box in which the
+% page number is put.
+% \item[\texttt{\bslash @tocrmarg}] The right margin for multiple
+% line entries. One wants |\@tocrmarg| > or = |\@pnumwidth|
+% \item[\texttt{\bslash @dotsep}] Separation between dots, in mu
+% units. Should be defined as a number like 2 or 1.7
+% \end{description}
+%
+% \begin{macrocode}
+\newcommand\@pnumwidth{1.55em}
+\newcommand\@tocrmarg {2.55em}
+\newcommand\@dotsep{4.5}
+\setcounter{tocdepth}{2}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Table of Contents}
+%
+% \begin{macro}{\tableofcontents}
+% This macro is used to request that \LaTeX{} produces a table of
+% contents. The tables of contents, figures etc. are always set in
+% single-column style.
+%
+% \begin{macrocode}
+\newcommand\tableofcontents{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+% \end{macrocode}
+% The title is set using the |\chapter*| command, making sure that
+% the running head --if one is required-- contains the right
+% information.
+% \begin{macrocode}
+ \chapter*{\contentsname
+ \@mkboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}}%
+% \end{macrocode}
+% The the actual table of contents is made by calling
+% |\@starttoc{toc}|. After that we restore twocolumn mode if
+% necessary.
+% \begin{macrocode}
+ \@starttoc{toc}%
+ \if@restonecol\twocolumn\fi
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@starttoc}
+% The internal \LaTeXe macro |\@starttoc| needs to be adapted for
+% the \file{rapport3} document classes,in order to deal with a the
+% fact that for these document classes the |\parskip| is normally
+% non-zero. We don't want that in the table of contents.
+% \begin{macrocode}
+%<*type3>
+\def\@starttoc#1{\begingroup
+ \makeatletter
+ \parskip\z@
+ \@input{\jobname.#1}%
+ \if@filesw
+ \expandafter\newwrite\csname tf@#1\endcsname
+ \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
+ \fi \global\@nobreakfalse \endgroup}
+%</type3>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@regtocline}
+% These document classes use a different format for the table of
+% contents than the standard classes from which they were
+% developped. In order to acheive this different format we defined
+% the macro |\@regtocline|.
+% \begin{macrocode}
+\newcommand\@regtocline[3]{%
+ \ifnum #1>\c@tocdepth
+ \else
+ \vskip \z@ plus .2pt
+ {\hangindent\z@ \@afterindenttrue \interlinepenalty\@M
+ \leftskip\unitindent
+ \rightskip=\unitindent plus 1fil
+ \parfillskip=0cm
+ \@tempdima=\unitindent
+ \parindent\z@
+ \leavevmode
+ \hbox{}\hskip -\leftskip\relax#2\nobreak
+ \hskip 1em \nobreak{\slshape #3}\par
+ }%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\toc@font}
+% The changed definition of |\@sect| that we use, selects a
+% different font for the table of contents for the various header
+% levels. It does this using |\toc@font|.
+% \begin{macrocode}
+\if@oldtoc
+ \newcommand\toc@font[1]{\relax}
+\else
+ \newcommand\toc@font[1]{%
+ \ifcase#1\relax
+ \bfseries
+ \or\slshape
+ \or\rmfamily
+ \fi}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\toc@case}
+% The entries for parts are typeset in capital letters in the new
+% style of the table of contents. In the old style this isn't
+% done. The macro |\toc@case| is used to switch this.
+% \begin{macrocode}
+\if@oldtoc
+ \newcommand\toc@case{\relax}
+\else
+ \newcommand\toc@case{\uppercase}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@part}
+% Each sectioning command needs an additional macro to format its
+% entry in the table of contents, as described above. The macro for
+% the entry for parts is defined in a special way.
+%
+% First we make sure that if a pagebreak should occur, it occurs
+% {\em before} this entry. Also a little whitespace is added and a
+% group begun to keep changes local.
+%
+% First we have the definition from the standard classes.
+% \begin{macrocode}
+\if@oldtoc
+\newcommand\l@part[2]{%
+ \addpenalty{-\@highpenalty}%
+ \addvspace{2.25em \@plus\p@}%
+ \begingroup
+% \end{macrocode}
+% The macro |\numberline| requires that the width of the box that
+% holds the part number is stored in \LaTeX's scratch register
+% |\@tempdima|. Therefore we put it there.
+% \begin{macrocode}
+ \setlength\@tempdima{3em}%
+% \end{macrocode}
+% The we set |\parindent| to 0pt and use |\rightskip| to leave
+% enough room for the pagenumbers. To prevent overfull box messages
+% the |\parfillskip| is set to a negative value.
+% \begin{macrocode}
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+% \end{macrocode}
+% Now we can set the entry, in a large bold font. We make sure to
+% leave vertical mode, set the part title and add the pagenumber,
+% set flush right.
+% \begin{macrocode}
+ {\leavevmode
+ \large \bfseries #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
+% \end{macrocode}
+% Prevent a pagebreak immediately after this entry, but use
+% |\everypar| to reset the |\if@nobreak| switch. Finally we close
+% the group.
+% \begin{macrocode}
+ \nobreak
+ \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}
+ \endgroup}
+% \end{macrocode}
+% Then we can introduce our new definition.
+% \begin{macrocode}
+\else
+ \newcommand\l@part{\addpenalty{-\@highpenalty}
+ \addvspace{2.25em \@plus \p@}\@regtocline{0}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@chapter}
+% This macro formats the entries in the table of contents for
+% chapters. It is very similar to |\l@part|
+%
+% First we make sure that if a pagebreak should occur, it occurs
+% {\em before} this entry. Also a little whitespace is added and a
+% group begun to keep changes local.
+%
+% Again we first present the `standard' definition
+% \begin{macrocode}
+\if@oldtoc
+\newcommand\l@chapter[2]{%
+ \addpenalty{-\@highpenalty}%
+ \vskip 1.0em \@plus\p@
+% \end{macrocode}
+%
+% The macro |\numberline| requires that the width of the box that
+% holds the part number is stored in \LaTeX's scratch register
+% |\@tempdima|. Therefore we put it there. We begin a group, and
+% change some of the paragraph parameters.
+% \begin{macrocode}
+ \setlength\@tempdima{1.5em}%
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+% \end{macrocode}
+% Then we leave vertical mode and switch to a bold font.
+% \begin{macrocode}
+ \leavevmode \bfseries
+% \end{macrocode}
+% Because we do not use |\numberline| here, we have do some fine
+% tuning `by hand', before we can set the entry. We discourage but
+% not disallow a pagebreak immediately after a chapter entry.
+% \begin{macrocode}
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par
+ \penalty\@highpenalty
+ \endgroup}
+% \end{macrocode}
+% Then we present our new definition.
+% \begin{macrocode}
+\else
+ \newcommand\l@chapter{\@regtocline{0}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@section}
+% In this document class the definition for
+% |\l@section| is very simple.
+% \begin{macrocode}
+\if@oldtoc
+ \newcommand\l@section {\@dottedtocline{1}{1.5em}{2.3em}}
+\else
+ \newcommand\l@section {\@regtocline{1}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@subsection}
+% \begin{macro}{\l@subsubsection}
+% \begin{macro}{\l@paragraph}
+% \begin{macro}{\l@subparagraph}
+% All lower level entries are defined using the macro
+% |\@dottedtocline| or |\@regtocline| (see above).
+% \begin{macrocode}
+\if@oldtoc
+ \newcommand\l@subsection {\@dottedtocline{2}{3.8em}{3.2em}}
+ \newcommand\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
+ \newcommand\l@paragraph {\@dottedtocline{4}{10em}{5em}}
+ \newcommand\l@subparagraph {\@dottedtocline{5}{12em}{6em}}
+\else
+ \newcommand\l@subsection {\@regtocline{2}}
+ \newcommand\l@subsubsection{\@regtocline{3}}
+ \newcommand\l@paragraph {\@regtocline{4}}
+ \newcommand\l@subparagraph {\@regtocline{5}}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{List of figures}
+%
+% \begin{macro}{\listoffigures}
+% This macro is used to request that \LaTeX{} produces a list of
+% figures. It is very similar to |\tableofcontents|.
+%
+% \begin{macrocode}
+\newcommand\listoffigures{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \chapter*{\listfigurename
+ \@mkboth{\uppercase{\listfigurename}}%
+ {\uppercase{\listfigurename}}}%
+ \@starttoc{lof}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@figure}
+% This macro produces an entry in the list of figures.
+% \begin{macrocode}
+\if@oldtoc
+ \newcommand\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+\else
+ \newcommand\l@figure{\@regtocline{1}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{List of tables}
+%
+% \begin{macro}{\listoftables}
+% This macro is used to request that \LaTeX{} produces a list of
+% tables. It is very similar to |\tableofcontents|.
+%
+% \begin{macrocode}
+\newcommand\listoftables{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \chapter*{\listtablename
+ \@mkboth{\uppercase{\listtablename}}{\uppercase{\listtablename}}}%
+ \@starttoc{lot}%
+ \if@restonecol\twocolumn\fi
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@table}
+% This macro produces an entry in the list of tables.
+% \begin{macrocode}
+\let\l@table\l@figure
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Bibliography}
+%
+% \begin{macro}{\bibindent}
+% The ``open'' bibliography format uses an indentation of
+% |\bibindent|.
+% \begin{macrocode}
+\newdimen\bibindent
+\bibindent=1.5em
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newblock}
+% This is a dummy definition for this macro which is used in the
+% \textsf{thebibliography} environment.
+% \begin{macrocode}
+\newcommand\newblock{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{thebibliography}
+% The `thebibliography' environment executes the following
+% commands:
+%
+% |\renewcommand\newblock{\hskip .11em \@plus .33em \@minus .07em}|
+% -- Defines the ``closed'' format, where the blocks (major units
+% of information) of an entry run together.
+%
+% |\sloppy| -- Used because it's rather hard to do line breaks in
+% bibliographies,
+%
+% |\sfcode`\.=1000\relax| --
+% Causes a `.' (period) not to produce an end-of-sentence space.
+%
+% The implementation of this environment is based on the generic
+% list environment. It uses the \Lcount{enumiv} counter internally
+% to generate the labels of the list.
+%
+% When an empty `thebibliography' environment is found, a warning
+% is issued.
+%
+% \begin{macrocode}
+\newenvironment{thebibliography}[1]
+ {\chapter*{\bibname
+ \@mkboth{\uppercase{\bibname}}%
+ {\uppercase{\bibname}}}%
+ \list{\@biblabel{\arabic{enumiv}}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \if@openbib
+ \advance\leftmargin\bibindent
+ \itemindent -\bibindent
+ \listparindent \itemindent
+ \parsep \z@
+ \fi
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\arabic{enumiv}}}%
+ \if@openbib
+ \renewcommand\newblock{\par}
+ \else
+ \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
+ \fi
+ \sloppy\clubpenalty4000\widowpenalty4000%
+ \sfcode`\.=\@m}
+ {\def\@noitemerr{\@warning{Empty `thebibliography' environment}}%
+ \endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\@biblabel}
+% The label for a |\bibitem[...]| command is produced by this
+% macro. The default from \file{latex.dtx} is used.
+% \begin{macrocode}
+% \renewcommand\@biblabel[1]{[#1]\hfill}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@cite}
+% The output of the |\cite| command is produced by this macro. The
+% default from \file{latex.dtx} is used.
+% \begin{macrocode}
+% \renewcommand\@cite[1]{[#1]}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{The index}
+%
+% \begin{environment}{theindex}
+% The environment `theindex' can be used for indices. It makes an
+% index with two columns, with each entry a seperate paragraph. At
+% the user level the commands |\item|, |\subitem| and |\subsubitem|
+% are used to produce index entries of various levels. When a new
+% letter of the alphabet is encountered an amount of |\indexspace|
+% white space can be added.
+%
+% \begin{macrocode}
+\newenvironment{theindex}
+ {\if@twocolumn
+ \@restonecolfalse
+ \else
+ \@restonecoltrue
+ \fi
+ \columnseprule \z@
+ \columnsep 35\p@
+ \twocolumn[\@makeschapterhead{\indexname}]%
+ \@mkboth{\uppercase{\indexname}}%
+ {\uppercase{\indexname}}%
+ \thispagestyle{plain}\parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \let\item\@idxitem}
+% \end{macrocode}
+% When the document continues after the index and it was a one
+% column document we have to switch back to one column after the
+% index.
+% \begin{macrocode}
+ {\if@restonecol\onecolumn\else\clearpage\fi}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\@idxitem}
+% \begin{macro}{\subitem}
+% \begin{macro}{\subsubitem}
+% Thsee macros are used to format the entries in the index. ^^AA ???
+% \begin{macrocode}
+\newcommand\@idxitem {\par\hangindent 40\p@}
+\newcommand\subitem {\par\hangindent 40\p@ \hspace*{20\p@}}
+\newcommand\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\indexspace}
+% The amount of white space that is inserted between `letter
+% blocks' in the index.
+% \begin{macrocode}
+\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Footnotes}
+%
+% \begin{macro}{\footnoterule}
+% Usually, footnotes are separated from the main body of the text
+% by a small rule. This rule is drawn by the macro |\footnoterule|.
+% We have to make sure that the rule takes no vertical space (see
+% \file{plain.tex}) so we compensate for the natural heigth of the
+% rule of 0.4pt by adding the right amount of vertical skip.
+%
+% To prevent the rule from colliding with the footnote we first add
+% a little negative vertical skip, then we put the rule and add
+% some positive vertical skip.
+% \begin{macrocode}
+\renewcommand\footnoterule{%
+ \kern-3\p@
+ \kern.5\baselineskip
+ \hrule\@width\unitindent
+ \kern.4\baselineskip
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@footnote}
+% Footnotes are numbered within chapters.
+% \begin{macrocode}
+% \newcounter{footnote}
+\@addtoreset{footnote}{chapter}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makefntext}
+% The footnote mechanism of \LaTeX{} calls the macro |\@makefntext|
+% to produce the actual footnote. The macro gets the text of the
+% footnote as its argument and should use |\@thefnmark| as the mark
+% of the footnote. The macro |\@makefntext|is called when
+% effectively inside a |\parbox| of width |\columnwidth| (i.e.,
+% with |\hsize| = |\columnwidth|).
+%
+% An example of what can be achieved is given by the following piece
+% of \TeX\ code.
+% \begin{verbatim}
+% \long\def\@xmakefntext#1#2{%
+% %<-type3> \parindent=.5\unitindent
+% %<+type3> \parindent=\z@\parskip=.5\baselineskip
+% \def\labelitemi{--}\@revlabeltrue
+% {\setbox0=\hbox {#1\hskip.5em plus 1fil}%
+% \dimen0=2\wd0
+% \ifdim\dimen0>\unitindent
+% \global\unitindent=\dimen0
+% \@indentset
+% \fi}%
+% \@setpar{\@@par
+% \@tempdima \hsize
+% \advance\@tempdima-.5\unitindent
+% \parshape \@ne .5\unitindent \@tempdima}%
+% \par
+% \noindent\llap{\hbox to .5\unitindent{#1\hfil}}#2}
+% \end{verbatim}
+% The effect of this definition is that all lines of the footnote
+% are indented by 10pt, while the first line of a new paragraph is
+% indented by 1em. To change these dimensions, just substitute the
+% desired value for `10pt' (in both places) or `1em'. The mark is
+% flushright against the footnote.
+%
+% In these document classes we use a simpler macro, in which the
+% footnote text is set like an ordinary text paragraph, with no
+% indentation except on the first line of the footnote. Thus, all
+% the macro must do is set |\parindent| to the appropriate value
+% for succeeding paragraphs and put the proper indentation before
+% the mark. We change the label of itemized lists inside footnotes
+% and need to check that the |\unitindent| is large enough for our
+% purposes.
+%
+% For most of the document classes produced from this file we need
+% a slightly modified |\@makefntext| on the title page, so we
+% introduce an extra macro, |\@xmakefntext|.
+% \begin{macrocode}
+\def\@makefntext{\@xmakefntext{$\m@th\@thefnmark$.}}
+\long\def\@xmakefntext#1{%
+ \parindent\z@
+ \def\labelitemi{--}\@revlabeltrue
+ {\setbox0=\hbox {#1\hskip.5em plus 1fil}
+ \dimen0=2\wd0\relax
+ \ifdim\dimen0>\unitindent
+ \global\unitindent=\dimen0\relax
+ \@indentset
+ \fi}
+ \leavevmode\hbox to .5\unitindent{#1\hfil}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makefnmark}
+% The footnote markers that are printed in the text to point to the
+% footnotes should be produced by the macro |\@makefnmark|. We use
+% the default definition for it.
+% \begin{macrocode}
+%\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Initialization}
+%
+% \subsection{Words}
+%
+% \begin{macro}{\contentsname}
+% \begin{macro}{\listfigurename}
+% \begin{macro}{\listtablename}
+% \begin{macro}{\refname}
+% \begin{macro}{\bibname}
+% \begin{macro}{\indexname}
+% \begin{macro}{\figurename}
+% \begin{macro}{\tablename}
+% \begin{macro}{\partname}
+% \begin{macro}{\chaptername}
+% \begin{macro}{\appendixname}
+% \begin{macro}{\abstractname}
+% \begin{macro}{\seename}
+% \begin{macro}{\andname}
+% This document class is for documents prepared in the English language.
+% To prepare a version for another language, various English words must
+% be replaced. All the English words that require replacement are
+% defined below in command names.
+%
+% \begin{macrocode}
+\newcommand\contentsname{Contents}
+\newcommand\listfigurename{List of Figures}
+\newcommand\listtablename{List of Tables}
+\newcommand\bibname{Bibliography}
+\newcommand\indexname{Index}
+\newcommand\figurename{Figure}
+\newcommand\tablename{Table}
+\newcommand\partname{Part}
+\newcommand\chaptername{Chapter}
+\newcommand\appendixname{Appendix}
+\newcommand\abstractname{Abstract}
+\newcommand\seename{see}
+\newcommand\andname{and}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Date}
+%
+% \begin{macro}{\today}
+% This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
+% to provide the date of the \LaTeX-run.
+% \begin{macrocode}
+\newcommand\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Two column mode}
+%
+% \begin{macro}{\columnsep}
+% This gives the distance between two columns in two column mode.
+% \begin{macrocode}
+\setlength\columnsep{10\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\columnseprule}
+% This gives the width of the rule between two columns in two
+% column mode. We have no visible rule.
+% \begin{macrocode}
+\setlength\columnseprule{0\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{The page style}
+%
+% We have \pstyle{plain} pages unless the user specified
+% otherwise. We use arabic pagenumbers.
+% \begin{macrocode}
+\pagestyle{plain}
+\pagenumbering{arabic} % Arabic page numbers
+% \end{macrocode}
+%
+% When the \Lopt{twocolumn} option was specified we call
+% |\twocolumn| to activate this mode. We try to make each column as
+% long as the others, but call |sloppy| to make our life easier.
+% \begin{macrocode}
+\if@twocolumn
+ \twocolumn
+ \sloppy
+ \flushbottom
+% \end{macrocode}
+% Normally we call |\onecolumn| to initiate typesetting in one
+% column.
+% \begin{macrocode}
+\else
+ \onecolumn
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\frenchspacing}
+% Controls the amount of space after a punctuation mark.
+% \begin{macrocode}
+\frenchspacing
+%</class>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
+%
diff --git a/Master/texmf-dist/source/latex/ntgclass/wijzer.dtx b/Master/texmf-dist/source/latex/ntgclass/wijzer.dtx
new file mode 100644
index 00000000000..9033f939acb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/ntgclass/wijzer.dtx
@@ -0,0 +1,3560 @@
+% \CheckSum{0}
+%
+%
+% \iffalse
+%<*dtx>
+\Providesfile{wijzer.dtx}
+%</dtx>
+%<class>\NeedsTeXFormat{LaTeX2e}
+%<class>\ProvidesClass{wijzer}
+%<driver>\ProvidesFile{wijzer.drv}
+%\Providesfile{wijzer.dtx}
+ [PTT Research computer handboeken]
+%
+%<*driver>
+\documentclass{ptt-ltxdoc}
+\usepackage[dutch]{babel}
+\CodelineNumbered
+\CodelineIndex
+\EnableCrossrefs
+\DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath}
+\DoNotIndex{\@centercr,\@cite}
+\DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
+\DoNotIndex{\@input,\@ixpt,\@m}
+\DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint}
+\DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
+\DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
+\DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
+\DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
+\DoNotIndex{\advance,\Alph,\alph}
+\DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
+\DoNotIndex{\bullet}
+\DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
+\DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
+\DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
+\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
+\DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
+\DoNotIndex{\fbox}
+\DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
+\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
+\DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi}
+\DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
+\DoNotIndex{\input}
+\DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
+\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
+\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
+\DoNotIndex{\NeedsTeXFormat,\newdimen}
+\DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
+\DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
+\DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
+\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
+\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
+\DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
+\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman}
+\DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength}
+\DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
+\DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
+\DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
+\DoNotIndex{\viipt,\vipt,\vskip,\vspace}
+\DoNotIndex{\wd,\xiipt,\year,\z@}
+\newcommand{\m}[1]{\mbox{$\langle$\it #1\/$\rangle$}}
+\providecommand{\marg}[1]{{\ttfamiliy\char`\{}\m{#1}{\ttfamiliy\char`\}}}
+\providecommand{\oarg}[1]{{\ttfamiliy[}\m{#1}{\ttfamiliy]}}
+\begin{document}
+\DocInput{wijzer.dtx}
+\clearpage
+\PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{wijzer.dtx}
+% \title{Document Class \texttt{wijzer}}
+% \author{Johannes Braams}
+% \date{Version~\fileversion, dated~\filedate}
+% \maketitle
+% \tableofcontents
+% \clearpage
+%
+% \StopEventually{} ^^A
+%
+% \section{Introduction}
+%
+% \section{The {\sc docstrip} modules}
+%
+% The following modules are used in the implementation to direct
+% {\sc docstrip} in generating the external files:
+% \begin{center}
+% \begin{tabular}{ll}
+% class & produce the document class\\
+% type1 & produce the `1' variants of the classes\\
+% type3 & produce the `3' variants of the classes\\
+% driver & produce a documentation driver file \\
+% \end{tabular}
+% \end{center}
+%
+% \section{Initial Code}
+%
+% In this part we define a few commands that are used later on.
+%
+% \begin{macro}{\@ptsize}
+% This control sequence is used to store the second digit of the
+% pointsize we are typesetting in. So, normally, it's value is one
+% of 0, 1 or 2.
+% \begin{macrocode}
+%<*class>
+\newcommand\@ptsize{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@restonecol}
+% When the document has to printed in two columns, we sometimes
+% have to temporarily switch to one column. This switch is used to
+% remember to switch back.
+% \begin{macrocode}
+\newif\if@restonecol
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@titlepage}
+% A switch to indicate if a titlepage has to be produced.
+% \begin{macrocode}
+\newif\if@titlepage
+\@titlepagetrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@openright}
+% A switch to indicate if chapters must start on a right-hand page.
+% The default for the report class is no; for the book class it's
+% yes.
+% \begin{macrocode}
+\newif\if@openright
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@openbib}
+% A switch to indicate if the bibliography has to be produced in
+% the ``open'' format. The default is to use a ``closed'' format.
+% \begin{macrocode}
+\newif\if@openbib
+\@openbibfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@oldtoc}
+% A switch to indicate if `old' layout of the table of contents
+% should be produced. These document classes normally produce a
+% table of contents that looks quite different from what the
+% standard classes produce.
+% \begin{macrocode}
+\newif\if@oldtoc
+\@oldtocfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@allcaps}
+% By default the text on the titlepage is set in capital letters.
+% This can be disabled by the option \Lopt{mctitle}, which sets the
+% switch |\if@allcaps| to false.
+% \begin{macrocode}
+\newif\if@allcaps
+% \end{macro}
+%
+% \begin{macro}{\if@titlecentered}
+% In the document classes \file{wijzer3} the
+% default placement of the title that is produced by |\maketitle|
+% is flushleft. This can be changed by the switch
+% |\if@titlecentered|.
+% \begin{macrocode}
+%<+type3>\newif\if@titlecentered
+%<+type3>\@titlecenteredfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@revlabel}
+% These document classes need to be able to change the positioning
+% of the label in labeled lists. This switch is used for that
+% purpose.
+% \begin{macrocode}
+\newif\if@revlabel
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Declaration of Options}
+%
+%
+% \subsection{Setting Paper Sizes}
+%
+% The variables |\paperwidth| and |\paperheight| should reflect the
+% physical paper size after trimming. For desk printer output this
+% is usually the real paper size since there is no post-processing.
+% Classes for real book production will probably add other paper
+% sizes and additionally the production of crop marks for trimming.
+% \begin{macrocode}
+\DeclareOption{a4paper}
+ {\setlength\paperheight {297mm}%
+ \setlength\paperwidth {210mm}}
+\DeclareOption{a5paper}
+ {\setlength\paperheight {210mm}%
+ \setlength\paperwidth {148mm}}
+\DeclareOption{b5paper}
+ {\setlength\paperheight {250mm}%
+ \setlength\paperwidth {176mm}}
+\DeclareOption{letterpaper}
+ {\setlength\paperheight {11in}%
+ \setlength\paperwidth {8.5in}}
+\DeclareOption{legalpaper}
+ {\setlength\paperheight {14in}%
+ \setlength\paperwidth {8.5in}}
+\DeclareOption{executivepaper}
+ {\setlength\paperheight {10.5in}%
+ \setlength\paperwidth {7.25in}}
+% \end{macrocode}
+%
+% The option \Lopt{landscape} switches the values of |\paperheight|
+% and |\paperwidth|, assuming the dimensions wer given for portrait
+% paper.
+% \begin{macrocode}
+\DeclareOption{landscape}
+ {\setlength\@tempdima {\paperheight}%
+ \setlength\paperheight {\paperwidth}%
+ \setlength\paperwidth {\@tempdima}}
+% \end{macrocode}
+%
+% \subsection{Choosing the type size}
+%
+% The type size options are handled by defining |\@ptsize| to contain
+% the last digit of the size in question and branching on |\ifcase|
+% statements. This is done for historical reasons to stay compatible
+% with other packages that use the |\@ptsize| variable to select
+% special actions. It makes the declarations of size options less
+% than 10pt difficult, although one can probably use \texttt{9}
+% and \texttt{8} assuming that a class won't define both
+% \Lopt{8pt} and \Lopt{18pt} options.
+%
+% \begin{macrocode}
+\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
+\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
+\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
+% \end{macrocode}
+%
+%
+% \subsection{Two-side or one-side printing}
+%
+% For two-sided printing we use the switch |\if@twoside|. In
+% addition we have to set the |\if@mparswitch| to get any margin
+% paragraphs into the outside margin.
+% \begin{macrocode}
+\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
+\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
+% \end{macrocode}
+%
+%
+% \subsection{Draft option}
+%
+% If the user requests \Lopt{draft} we show any overfull boxes.
+% We could probably add some more interesting stuff to this option.
+% \begin{macrocode}
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+% \end{macrocode}
+%
+% \subsection{Titlepage option}
+% An article usually has no separate titlepage, but the user can
+% request one.
+% \begin{macrocode}
+\DeclareOption{titlepage}{\@titlepagetrue}
+\DeclareOption{notitlepage}{\@titlepagefalse}
+% \end{macrocode}
+%
+% \subsection{openright option}
+% This option determines whether or not a chapter must start on
+% a right-hand page
+% request one.
+% \begin{macrocode}
+\DeclareOption{openright}{\@openrighttrue}
+\DeclareOption{openany}{\@openrightfalse}
+% \end{macrocode}
+%
+% For these document classes there used to be a file
+% \file{voorwerk.sty} which was a replacement for
+% \file{titlepag.sty}. Therefore we also have the option
+% \Lopt{voorwerk}.
+% \begin{macrocode}
+\DeclareOption{voorwerk}{\@titlepagetrue}
+\DeclareOption{geenvoorwerk}{\@titlepagefalse}
+% \end{macrocode}
+%
+%
+% \subsection{Table of contents formatting}
+%
+% This document class uses a new layout for the table of contents,
+% but in order to maintain compatibility with the standard \LaTeXe
+% document classes we supply an extra option: \Lopt{oldtoc}. If
+% this option is specified the switch |\if@oldtoc| will be set
+% true.
+% \begin{macrocode}
+\DeclareOption{oldtoc}{\@oldtoctrue}
+% \end{macrocode}
+%
+% \subsection{Formatting of the title}
+%
+% The option \Lopt{titlecentered} changes the behaviour of the
+% |\maketitle| command. It then produces a title like it does for
+% the \file{artikel1} document class.
+% \begin{macrocode}
+%<+type3>\DeclareOption{titlecentered}{\@titlecenteredtrue}
+% \end{macrocode}
+%
+% In this document class the titlepage uses all capital
+% letters. The option \Lopt{mctitle} (for `mixed case') prevents
+% this.
+% \begin{macrocode}
+\DeclareOption{mctitle}{\@allcapsfalse}
+\DeclareOption{uctitle}{\@allcapstrue}
+% \end{macrocode}
+%
+% \subsection{Twocolumn printing}
+%
+% Two-column and one-column printing is again realized via a switch.
+% \begin{macrocode}
+\DeclareOption{onecolumn}{\@twocolumnfalse}
+\DeclareOption{twocolumn}{\@twocolumntrue}
+% \end{macrocode}
+%
+% \subsection{Equation numbering on the left}
+%
+% The option \Lopt{leqno} can be used to get the equation numbers
+% on the left side of the equation.
+% \begin{macrocode}
+\DeclareOption{leqno}{\input{leqno.clo}}
+% \end{macrocode}
+%
+% \subsection{Flush left displays}
+%
+% The option \Lopt{fleqn} redefines the displayed math environmens
+% in such a way that they come out flush left, with an indentation
+% of |\mathindent| from the prevailing left margin.
+% \begin{macrocode}
+\DeclareOption{fleqn}{\input{fleqn.clo}}
+% \end{macrocode}
+%
+% \subsection{Open bibliography}
+%
+% The option \Lopt{openbib} produces the ``open'' bibliography
+% style, in which each block starts on a new line, and succeeding
+% lines in a block are indented by |\bibindent|.
+% \begin{macrocode}
+\DeclareOption{openbib}{\@openbibtrue}
+% \end{macrocode}
+%
+%
+% \section{Executing Options}
+%
+% Here we execute the default options to initialize certain
+% variables.
+% \begin{macrocode}
+\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,uctitle,openany}
+% \end{macrocode}
+%
+% The |\ProcessOptions| command causes the execution of the code
+% for every option \Lopt{FOO}
+% which is declared and for which the user typed
+% the \Lopt{FOO} option in his
+% |\documentclass| command. For every option \Lopt{BAR} he typed,
+% which is not declared, the option is assumed to be a global option.
+% All options will be passed as document options to any
+% |\usepackage| command in the document preamble.
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+% Now that all the options have been executed we can load the
+% chosen class option file that contains all size dependent code.
+% \begin{macrocode}
+\input{ntg1\@ptsize.clo}
+% \end{macrocode}
+%
+% \section{Loading Packages}
+%
+% These class files do not load additional packages.
+%
+%
+% \section{Document Layout}
+% \label{sec:maincode}
+%
+% In this section we are finally dealing with the nasty typographical
+% details.
+%
+% \subsection{Paragraphing}
+%
+% \begin{macro}{\lineskip}
+% \begin{macro}{\normallineskip}
+% These parameters control \TeX's behaviour when two lines tend to
+% come too close together.
+% \begin{macrocode}
+\setlength\lineskip{1\p@}
+\setlength\normallineskip{1\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\baselinestretch}
+% This is used as a multiplier for |\baselineskip|. The default is
+% to {\em not\/} stretch the baselines.
+% \begin{macrocode}
+\renewcommand\baselinestretch{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\unitindent}
+% These document classes all use a single dimension for a number of
+% layout parameters:
+% \begin{itemize}
+% \item the label width in section heading,
+% \item the |\parindent|
+% \item the footnote label indent (= half |\unitindent|)
+% \item listindent on the first level
+% \end{itemize}
+% \begin{macrocode}
+\newdimen\unitindent
+% \end{macrocode}
+% The default setting accomodates three levels of single digit
+% section numbering.
+% \begin{macrocode}
+{\setbox0\hbox{\normalsize\rmfamily 2.2.2\hskip.5em}
+ \global\unitindent=\wd0}
+% \end{macrocode}
+%
+% \begin{macro}{\othermargin}
+% Other indentations are maximal label width plus white space.
+% \begin{macrocode}
+\newdimen\othermargin
+{\setbox0\hbox{\normalsize (m)\hskip.6em}\global\othermargin=\wd0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{if@needwriteindent}
+% If this is not enough, a new width is calculated, set, and the
+% file{.aux} file contains an instruction that will set
+% |\unitindent| on the next run.
+%
+% For this we need a switch
+% \begin{macrocode}
+\newif\if@needwriteindent
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@indentset}
+% And a command that sets the various parameters.
+% \begin{macrocode}
+\newcommand\@indentset{%
+%<-type3> \global\parindent=\unitindent
+ \global\leftmargini=\unitindent
+ \global\@needwriteindenttrue}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@writeindent}
+% The |\end{document}| command will call |\@writeindent| to write
+% the final width of |\unitindent| on the \file{.aux} file. Also a
+% command is written to set |\unitindent|. To be compatible with
+% other document classes a check is written to the \file{.aux} file
+% for the existence of |\unitindent|. This prevents nasty errors
+% when another document class is used.
+% \begin{macrocode}
+\newcommand\@writeindent[1]{\immediate\write\@mainaux
+ {\string\@ifundefined{unitindent}{\string\newdimen\string\unitindent
+ \let\string\@indentset\relax}{}}
+ \immediate\write\@mainaux{\global\string\unitindent=#1\string\relax
+ \string\@indentset \string\relax}}
+% \end{macrocode}
+% \end{macro}
+%
+% We need to use the hook into |\end{document}| to write the final
+% value of |\unitindent| om the file{.aux} file for the next run.
+% \begin{macrocode}
+\AtEndDocument{%
+ \if@filesw
+ \if@needwriteindent
+ \@writeindent{\the\unitindent}
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\parskip}
+% \begin{macro}{\parindent}
+% |\parskip| gives extra vertical space between paragraphs and
+% |\parindent| is the width of the paragraph indentation. The value
+% of |\parindent| depends on whether we are in two column mode.
+% \begin{macrocode}
+%<*type1>
+\setlength\parskip{0\p@}
+\setlength\parindent{\unitindent}
+%</type1>
+%<*type3>
+\setlength\parskip{.5\baselineskip \@plus .1\baselineskip
+ \@minus .1\baselineskip}
+\setlength\parindent{\z@}
+%</type3>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@lowpenalty}
+% \begin{macro}{\@medpenalty}
+% \begin{macro}{\@highpenalty}%
+% The commands |\nopagebreak| and |\nolinebreak| put in penalties
+% to discourage these breaks at the point they are put in.
+% They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|,
+% dependent on their argument.
+% \begin{macrocode}
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\clubpenalty}
+% \begin{macro}{\widowpenalty}
+% These penalties are use to discourrage club and widow lines.
+% Because we use their default values we only show them here,
+% commented out.
+% \begin{macrocode}
+% \clubpenalty 150
+% \widowpenalty 150
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\displaywidowpenalty}
+% \begin{macro}{\predisplaypenalty}
+% \begin{macro}{\postdisplaypenalty}
+% Discourrage (but not so much) widows in front of a math display
+% and forbid breaking directly in front of a display. Allow break
+% after a display without a penalty. Again the default values are
+% used, therefore we only show them here.
+% \begin{macrocode}
+% \displaywidowpenalty 50
+% \predisplaypenalty 10000
+% \postdisplaypenalty 0
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\interlinepenalty}
+% Allow the breaking of a page in the middle of a paragraph.
+% \begin{macrocode}
+% \interlinepenalty 0
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\brokenpenalty}
+% We allow the breaking of a page after a hyphenated line.
+% \begin{macrocode}
+% \brokenpenalty 0
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Float placement parameters}
+%
+% All float parameters are given default values in the \LaTeXe{}
+% kernel. For this reason counters only need to be set with
+% |\setcounter| and other parameters are set using |\renewcommand|.
+%
+% \paragraph{Limits for the placement of floating objects}
+%
+% \begin{macro}{\c@topnumber}
+% The \Lcount{topnumber} counter holds the maximum number of
+% floats that can appear on the top of a text page.
+% \begin{macrocode}
+\setcounter{topnumber}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\topfraction}
+% This indicates the maximum part of a text page that can be
+% occupied by floats at the top.
+% \begin{macrocode}
+\renewcommand\topfraction{.7}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@bottomnumber}
+% The \Lcount{bottomnumber} counter holds the maximum number of
+% floats that can appear on the bottom of a text page.
+% \begin{macrocode}
+\setcounter{bottomnumber}{1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bottomfraction}
+% This indicates the maximum part of a text page that can be
+% occupied by floats at the bottom.
+% \begin{macrocode}
+\renewcommand\bottomfraction{.3}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@totalnumber}
+% This indicates the maximum number of floats that can appear on
+% any text page.
+% \begin{macrocode}
+\setcounter{totalnumber}{3}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textfraction}
+% This indicates the minimum part of a text page that has to be
+% occupied by text.
+% \begin{macrocode}
+\renewcommand\textfraction{.2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\floatpagefraction}
+% This indicates the minimum part of a page that has to be
+% occupied by floating objects before a `float page' is produced.
+% \begin{macrocode}
+\renewcommand\floatpagefraction{.5}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@dbltopnumber}
+% The \Lcount{dbltopnumber} counter holds the maximum number of
+% two column floats that can appear on the top of a two column text
+% page.
+% \begin{macrocode}
+\setcounter{dbltopnumber}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dbltopfraction}
+% This indicates the maximum part of a two column text page that
+% can be occupied by two column floats at the top.
+% \begin{macrocode}
+\renewcommand\dbltopfraction{.7}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dblfloatpagefraction}
+% This indicates the minimum part of a page that has to be
+% occupied by two column wide floating objects before a `float
+% page' is produced.
+% \begin{macrocode}
+\renewcommand\dblfloatpagefraction{.5}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Page Styles}
+%
+% The page style \pstyle{foo} is defined by defining the command
+% |\ps@foo|. This command should make only local definitions.
+% There should be no stray spaces in the definition, since they
+% could lead to mysterious extra spaces in the output (well, that's
+% something that should be always avoided).
+%
+% \begin{macro}{\@evenhead}
+% \begin{macro}{\@oddhead}
+% \begin{macro}{\@evenfoot}
+% \begin{macro}{\@oddfoot}
+% The |\ps@...| command defines the macros |\@oddhead|,
+% |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running
+% heads and feet---e.g., |\@oddhead| is the macro to produce the
+% contents of the heading box for odd-numbered pages. It is called
+% inside an |\hbox| of width |\textwidth|.
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\thispagestyle}
+% Several commands (|\index|, |\maketitle|) give a
+% |\thispagestyle{plain}| command, which will overrule a
+% |\pagestyle{empty}| command. This situation is almost always
+% unwanted. Therefore we provide a more careful definition.
+%
+% First save the original definition.
+% \begin{macrocode}
+\let\Thispagestyle\thispagestyle
+% \end{macrocode}
+% Then we provide the new definition, for which we must also adapt
+% |\pagestyle| a little.
+% \begin{macrocode}
+\newcommand\@emptypagestyle{empty}
+\renewcommand\pagestyle[1]{\@nameuse{ps@#1}\def\@currentpagestyle{#1}}
+\renewcommand\thispagestyle[1]{%
+ \ifx\@currentpagestyle\@emptypagestyle
+ \else
+ \global\@specialpagetrue
+ \gdef\@specialstyle{#1}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Marking conventions}
+%
+% To make headings determined by the sectioning commands, the page
+% style defines the commands |\chaptermark|, |\sectionmark|,
+% \ldots,\\
+% where |\chaptermark{|\meta{TEXT}|}| is called by
+% |\chapter| to set a mark, and so on.
+%
+% The |\...mark| commands and the |\...head| macros are defined
+% with the help of the following macros. (All the |\...mark|
+% commands should be initialized to no-ops.)
+%
+% \LaTeX{} extends \TeX's |\mark| facility by producing two kinds
+% of marks, a `left' and a `right' mark, using the following
+% commands:
+% \begin{flushleft}
+% |\markboth{|\meta{LEFT}|}{|\meta{RIGHT}|}|: Adds both marks.
+%
+% |\markright{|\meta{RIGHT}|}|: Adds a `right' mark.
+%
+% |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
+% or |\@evenfoot| macros, it gets the current `left'
+% mark. |\leftmark| works like \TeX's |\botmark|
+% command.
+%
+% |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
+% or |\@evenfoot| macros, it gets the current
+% `right' mark. |\rightmark| works like \TeX's
+% |\firstmark| command.
+% \end{flushleft}
+%
+% The marking commands work reasonably well for right marks
+% `numbered within' left marks--e.g., the left mark is changed by a
+% |\chapter| command and the right mark is changed by a |\section|
+% command. However, it does produce somewhat anomalous results if
+% two |\markboth|'s occur on the same page.
+%
+%
+% Commands like |\tableofcontents| that should set the marks in some
+% page styles use a |\@mkboth| command, which is |\let| by the
+% pagestyle command (|\ps@...|) to |\markboth| for setting the
+% heading or to |\@gobbletwo| to do nothing.
+%
+%
+% \begin{macrocode}
+% %%%\mark{{}{}} % Initializes TeX's marks <--- can vanish
+% \end{macrocode}
+%
+% \subsubsection{Defining the page styles}
+% \label{sec:pagestyle}
+%
+% The pagestyle \pstyle{empty} is defined in \file{latex.dtx}, but
+% the pagestyle \pstyle{plain} is slightly altered here. The
+% difference is that the page numbers are set flush right in
+% onesided and flush left and right in the twosided style.
+%
+% \begin{macro}{\ps@plain}
+%
+% \begin{macrocode}
+\renewcommand\ps@plain{%
+% \end{macrocode}
+% The running head are empty in this pagestyle, the page number
+% appears in the running foot.
+% \begin{macrocode}
+ \let\@oddhead\@empty\let\@evenhead\@empty
+ \def\@oddfoot{\hfil\PageFont\thepage}%
+ \if@twoside
+ \def\@evenfoot{\PageFont\thepage\hfil}%
+ \else
+ \let\@evenfoot\@oddfoot
+ \fi
+% \end{macrocode}
+% Because the running heads should be empty we |let| |\@mkboth| to
+% |\@gobbletwo|, thus disabling the mark commands.
+% \begin{macrocode}
+ \let\@mkboth\@gobbletwo}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ps@headings}
+% The definition of the page style \pstyle{headings} has to be
+% different for two sided printing than it is for one sided
+% printing.
+%
+% \begin{macrocode}
+\if@twoside
+ \def\ps@headings{%
+% \end{macrocode}
+% The running feet are empty in this page style, the running head
+% contains the page number and one of the marks.
+% \begin{macrocode}
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{{\PageFont\thepage}\hfil\MarkFont\leftmark}%
+ \def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}%
+% \end{macrocode}
+%
+% When using this page style, the contents of the running head is
+% determined by the chapter and section titles. So we |\let|
+% |\@mkboth| to |\markboth|.
+% \begin{macrocode}
+ \let\@mkboth\markboth
+% \end{macrocode}
+%
+% In thisdocument class we use the |\chaptermark|
+% and |\sectionmark| macros to fill the running heads.
+%
+% Note the use of |##1| for the parameter of the |\chaptermark|
+% command, which will be defined when |\ps@headings| is executed.
+%
+% \begin{macrocode}
+ \def\chaptermark##1{%
+ \markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
+ \@chapapp\ \thechapter. \ \fi
+ ##1}}{}}%
+ \def\sectionmark##1{%
+ \markright {\uppercase{\ifnum \c@secnumdepth >\z@
+ \thesection. \ \fi
+ ##1}}}}
+% \end{macrocode}
+%
+% The definition of |\ps@headings| for one sided printing can be
+% much simpler, because we treat even and odd pages the same.
+% Therefore we don't need to define |\@even...|.
+% \begin{macrocode}
+\else
+ \def\ps@headings{%
+ \let\@oddfoot\@empty
+ \def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}%
+ \let\@mkboth\markboth
+% \end{macrocode}
+% We use |\markright| now instead of |\markboth| as we did for two
+% sided printing.
+% \begin{macrocode}
+ \def\chaptermark##1{%
+ \markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
+ \@chapapp\ \thechapter. \ \fi
+ ##1}}}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ps@myheadings}
+% The definition of the page style \pstyle{myheadings} is fairly
+% simple because the user determines the contents of the running
+% head himself by using the |\markboth| and |\markright| commands.
+%
+% \begin{macrocode}
+\def\ps@myheadings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{{\PageFont\thepage}\hfil\MarkFont\leftmark}%
+ \def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}%
+% \end{macrocode}
+%
+% We have to make sure that the marking commands that are used by
+% the chapter and section headings are disabled. We do this
+% |\let|ting them to a macro that gobbles its argument(s).
+% \begin{macrocode}
+ \let\@mkboth\@gobbletwo
+ \let\chaptermark\@gobble
+ \let\sectionmark\@gobble
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\PageFont}
+% \begin{macro}{\MarkFont}
+% These macros are use to store the fonts that are used to typeset
+% the pagenumber (|\PageFont|) and the marks (|\MarkFont|) in the
+% running head and feet.
+% \begin{macrocode}
+\newcommand\PageFont{\rmfamily}
+\newcommand\MarkFont{\slshape}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\RunningFonts}
+% Use this macro to change the fonts that are used in the running
+% heads.
+% \begin{macrocode}
+\newcommand\RunningFonts[2]{%
+ \renewcommand\PageFont{#1}\renewcommand\MarkFont{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Document Markup}
+%
+% \subsection{The title}
+%
+% \begin{macro}{\title}
+% \begin{macro}{\author}
+% \begin{macro}{\date}
+% These three macros are provided by \file{latex.dtx} to provide
+% information about the title, author(s) and date of the document.
+% The information is stored away in internal control sequences.
+% It is the task of the |\maketitle| command to use the
+% information provided. The definitions of these macros are shown
+% here for information.
+% \begin{macrocode}
+% \newcommand\title[1]{\gdef\@title{#1}}
+% \newcommand\author[1]{\gdef\@author{#1}}
+% \newcommand\date[1]{\gdef\@date{#1}}
+% \end{macrocode}
+% The |\date| macro gets today's date by default.
+% \begin{macrocode}
+% \gdef\@date{\today}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\TitleFont}
+% This selects the font to use in the title of the document.
+% \begin{macrocode}
+\newcommand\TitleFont{\bfseries}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maketitle}
+% The definition of |\maketitle| depends on whether a seperate
+% title page is made. This is the default for this document class.
+% Note that the title, author and date information is printed in
+% capital letters by default. This can be changed by the option
+% \Lopt{mctitle}.
+%
+% When we are making a title page, we locally redefine
+% |\footnotesize| and |\footnoterule| to change the appearance of
+% the footnotes that are produced by the |\thanks| command.
+% \begin{macrocode}
+\renewcommand\TitleFont{\rmfamily}
+\newcommand\maketitle{%
+ \begin{titlepage}%
+ \let\footnotesize\small
+ \let\footnoterule\relax
+% \end{macrocode}
+% Footnotes on the titlepage, generated by the use of |\thanks|,
+% use symbols in these document classes.
+% \begin{macrocode}
+ \long\def\@makefntext##1{\parindent\z@
+ \def\labelitemi{--}\@revlabeltrue
+ \leavevmode$\m@th^{\@thefnmark}$\kern1em\relax ##1}
+ \renewcommand\thefootnote{\fnsymbol{footnote}}%
+% \end{macrocode}
+% We center the entire title vertically; the centering is set off a
+% little by adding a |\vskip|. In compatibility mode the pagenumber
+% is set to 0 to keep the behaviour of \LaTeX\ 2.09 style files
+% \begin{macrocode}
+ \if@compatibility\setcounter{page}{0}\fi
+ \null\vfil
+ \vskip 60\p@
+% \end{macrocode}
+% Then we set the title, in a |\LARGE| font; leave a little space
+% and set the author(s) in a |\large| font. We do this inside a
+% tabular environment to get them in a single column.
+% Before the date we leave a little whitespace again.
+% \begin{macrocode}
+ \begin{center}%
+ \TitleFont
+ {\LARGE \def\\{\penalty -\@M}
+ \if@allcaps
+ \expandafter\uc@nothanks\@title\thanks\relax
+ \else
+ \@title
+ \fi\par}%
+ \vskip 3em%
+ {\large
+ \lineskip .75em \parindent\z@
+ \begin{tabular}[t]{c}%
+ \if@allcaps
+ \expandafter\uc@authornothanks\@author\and\relax
+ \else
+ \@author
+ \fi
+ \end{tabular}\par}%
+ \vskip 1.5em%
+ {\large
+ \if@allcaps
+ \uppercase\expandafter{\@date}%
+ \else
+ \@date
+ \fi\par}%
+ \end{center}\par
+% \end{macrocode}
+% Then we call |\@thanks| to print the information that goes into
+% the footnote and finish the page.
+% \begin{macrocode}
+ \@thanks
+ \vfil\null
+ \end{titlepage}%
+% \end{macrocode}
+% We reset the \Lcount{footnote} counter, disable |\thanks| and
+% |\maketitle| and save some storage space by emptying the internal
+% information macros.
+% \begin{macrocode}
+ \setcounter{footnote}{0}%
+ \let\thanks\relax\let\maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
+% \end{macrocode}
+%
+% We want to have the title, author and date information in
+% uppercase, but we have to be very carefull not to put too much
+% text in uppercase. The macros that perform the filtering of texts
+% that shouldn't be in uppercase were developped with th help of
+% Howard Trickey.
+%
+% \begin{macro}{\uc@nothanks}
+% This macro takes all the text up to the first use of |\thanks|
+% and passes it to |\uppercase|. The use of |\futurelet| will store
+% the token \emph{after} the |\thanks| in |\@tempa|. The macro
+% |\u@tx| uses that information to determine what to do next.
+% \begin{macrocode}
+\def\uc@nothanks#1\thanks{\uppercase{#1}\futurelet\@tempa\uc@tx}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\uc@authornothanks}
+% A document can have more than one author. Usually they are
+% seperated with |\and|. For each author a footnote --using
+% |\thanks| can be present. Therefore this macro takes all the text
+% up to the first use of |\and|, thus picking up all the
+% information for one author. This is than passsed to
+% |\uc@nothanks|, which checks for the presence of |\thanks|. For
+% this to work the argument of |\uc@nothanks| has to be delimited
+% by |\thanks\relax|.
+% \begin{macrocode}
+\def\uc@authornothanks#1\and{\uc@nothanks#1\thanks\relax
+% \end{macrocode}
+% Then we have to check whether the |\and| we ound earlier was put
+% in by the user, in which case information for another user will
+% follow, or by the call from another macro, in which case the
+% |\and| will be followed by a |\relax| token. The |\futurelet|
+% contstruct stores the first token \emph{after} the |\and| in
+% |\@tempa| to be inspected by |\u@ax|.
+% \begin{macrocode}
+ \futurelet\@tempa\uc@ax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\uc@ax}
+% When |\@tempa| contains a |\relax| token nothing needs to be
+% done, when it doesn't we put in a linebreak |\\| the word `and'
+% (stored in |\andname| so that this control sequence can be
+% redeined for other languages), another linebreak and we call
+% |\uc@authornothanks| to continue processing. The |\expandafter|
+% lets \TeX\ see the |\fi| first.
+% \begin{macrocode}
+\def\uc@ax{%
+ \ifx\@tempa\relax
+ \else
+ \\ \andname \\ \expandafter\uc@authornothanks
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\uc@tx}
+% This macro simply checks whether |\@tempa| contains a |\relax|
+% token. When it doesn't further processing is performed by
+% |\u@ty|.
+% \begin{macrocode}
+\def\uc@tx{\ifx\@tempa\relax
+ \else \expandafter\uc@ty \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\uc@ty}
+% The macro |\uc@ty| gets executed when the |\thanks| that
+% delimited text earlier on in the processing had a real argument.
+% In that case it was a |\thanks| put in by the user, \emph{not} by
+% these macros. Therefore the argument is now passed to |\thanks|
+% and processing continues by calling |\uc@nothanks|.
+% \begin{macrocode}
+\def\uc@ty#1{\thanks{#1}\uc@nothanks}
+% \end{macrocode}
+% \end{macro}
+%
+% When the title is not on a page of its own, the layout of the
+% title is a little different. We use symbols to mark the footnotes
+% and we have to deal with two column documents.
+%
+% Therefore we first start a new group to keep changes local. Then
+% we redefine |\thefootnote| to use |\fnsymbol|; and change
+% |\@makefnmark| so that footnotemarks have zero width (to make the
+% centering of the author names look better). We also want raised
+% footnotemarkers in the footnotes here.
+% \begin{macrocode}
+\else
+\newcommand\maketitle{\par
+ \begingroup
+ \renewcommand\thefootnote{\fnsymbol{footnote}}%
+ \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
+ \def\@makefntext{\@xmakefntext{$\m@th^{\@thefnmark}$}}%
+% \end{macrocode}
+% If this is a twocolumn document we start a new page in twocolumn
+% mode, with the title set to the full width of the text. The
+% actual printing of the title information is left to
+% |\@maketitle|.
+% \begin{macrocode}
+ \if@twocolumn
+ \ifnum \col@number=\@ne
+ \@maketitle
+ \else
+ \twocolumn[\@maketitle]%
+ \fi
+ \else
+% \end{macrocode}
+% When this is not a twocolumn document we just start a new page,
+% prevent floating objects from appearing on the top of this page
+% and print the title information.
+% \begin{macrocode}
+ \newpage
+ \global\@topnum\z@
+ \@maketitle
+ \fi
+% \end{macrocode}
+% This page gets a \pstyle{plain} layout. We call |\@thanks| to
+% produce the footnotes.
+% \begin{macrocode}
+ \thispagestyle{plain}\@thanks
+% \end{macrocode}
+% Now we can close the group, reset the \Lcount{footnote} counter,
+% disable |\thanks|, |\maketitle| and |\@maketitle| and save some
+% storage space by emptying the internal information macros.
+% \begin{macrocode}
+ \endgroup
+ \setcounter{footnote}{0}%
+ \let\thanks\relax
+ \let\maketitle\relax\let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
+% \end{macrocode}
+%
+% \begin{macro}{\@maketitle}
+% This macro takes care of formatting the title information when we
+% have no seperate title page.
+%
+% We always start a new page, leave some white space and center the
+% information. The title is set in a |\LARGE| font, the author
+% names and the in a |\large| font.
+% \begin{macrocode}
+\def\@maketitle{%
+ \newpage
+ \null
+ \vskip 2em%
+%<+type3>\if@titlecentered
+ \begin{center}%
+ {\LARGE \TitleFont \@title \par}%
+ \vskip 1.5em%
+ {\large \TitleFont
+ \lineskip .5em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1em%
+ {\large \TitleFont \@date}%
+ \end{center}%
+%<*type3>
+ \else
+ {\LARGE \TitleFont \head@style \@title \par} \vskip 1.5em
+ {\large \TitleFont \lineskip .5em \tabcolsep\z@
+ \def\and{%%% \begin{tabular} has already started
+ \end{tabular}\hskip 1em plus .17fil
+ \begin{tabular}[t]{l}}%% \end{tabular} will come
+ \begin{tabular}[t]{l}\@author\end{tabular}\par}
+ \vskip 1em {\large \TitleFont \@date}
+ \fi
+%</type3>
+ \par
+ \vskip 1.5em}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Chapters and Sections}
+%
+% \subsubsection{Building blocks}
+% The definitions in this part of the class file make use of two
+% macros, |\@startsection| and |\secdef|, which are defined by
+% \file{latex.dtx}. To understand what is going on here, we
+% describe their syntax.
+%
+% The macro |\@startsection| has 6 required arguments, optionally
+% followed by a $*$, an optional argument and a required argument:
+%
+% |\@startsection|\meta{name}\meta{level}\meta{indent}^^A
+% \meta{beforeskip}\meta{afterskip}\meta{style}
+% optional *\\
+% \null\hphantom{\bslash @startsection}^^A
+% |[|\meta{altheading}|]|\meta{heading}
+%
+% It is a generic command to start a section, the arguments have
+% the following meaning:
+%
+% \begin{description}
+% \item[\meta{name}] The name of the user level command, e.g.,
+% `section'.
+% \item[\meta{level}] A number, denoting the depth of the section
+% -- e.g., chapter=1, section = 2, etc. A section number
+% will be printed if and only if \meta{level} $<=$ the value
+% of the \Lcount{secnumdepth} counter.
+% \item[\meta{indent}] The indentation of the heading from the left
+% margin
+% \item[\meta{beforeskip}] The absolute value of this argument
+% gives the skip to leave above the heading. If it is
+% negative, then the paragraph indent of the text following
+% the heading is suppressed.
+% \item[\meta{afterskip}] If positive, this gives the skip to leave
+% below the heading, else it gives the skip to leave to the
+% right of a run-in heading.
+% \item[\meta{style}] Commands to set the style of the heading.
+% \item[$*$] When this is missing the heading is numbered and the
+% corresponding counter is incremented.
+% \item[\meta{altheading}] Gives an alternative heading to use in
+% the table of contents and in the running heads. This should
+% be present when the $*$ form is used.
+% \item[\meta{heading}] The heading of the new section.
+% \end{description}
+% A sectioning command is normally defined to |\@startsection| and
+% its first six arguments.
+%
+% The macro |\secdef| can be used when a sectioning command is
+% defined without using |\@startsection|. It has two arguments:
+%
+% |\secdef|\meta{unstarcmds}\meta{starcmds}
+%
+% \begin{description}
+% \item[\meta{unstarcmds}] Used for the normal form of the
+% sectioning command.
+% \item[\meta{starcmds}] Used for the $*$-form of the
+% sectioning command.
+% \end{description}
+%
+% You can use |\secdef| as follows:
+% \begin{verbatim}
+% \def\chapter { ... \secdef \CMDA \CMDB }
+% \def\CMDA [#1]#2{ ... } % Command to define
+% % \chapter[...]{...}
+% \def\CMDB #1{ ... } % Command to define
+% % \chapter*{...}
+% \end{verbatim}
+%
+% \begin{macro}{\head@style}
+% In the definition of chapter and section commands a number of
+% settings frequently occur. Therefore we store them in a control
+% sequence.
+%
+% Section headings are to be set extremely raggedright, with no
+% hyphenations, not even at explicit hyphens.
+%
+% \begin{macrocode}
+\newcommand\head@style{%
+ \interlinepenalty \@M
+ \hyphenpenalty=\@M \exhyphenpenalty=\@M
+ \rightskip=0cm plus .7\hsize\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@sect}
+% The definition of this macro from \file{latex.dtx} needs to be
+% repeated here because we want to modify its behaviour with
+% respect to:
+% \begin{enumerate}
+% \item the width of the number, which is fixed;
+% \item checking the value of |\unitindent|;
+% \item formatting the section title ragged right;
+% \item changing the argument of |\contentsline|.
+% \end{enumerate}
+% \begin{macrocode}
+\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty\else
+ \refstepcounter{#1}%
+% \end{macrocode}
+% The following code (within the group) checks the value of
+% |\unitindent|. If the sectionnumber is wider than |\unitindent|
+% its value is adapted and a flag is set to rememeber to store the
+% new value in the \file{.aux}-file.
+% \begin{macrocode}
+ \begingroup
+ \setbox\@tempboxa=\hbox{#6\relax
+ \csname the#1\endcsname
+ \hskip.5em}
+ \ifdim\wd\@tempboxa>\unitindent
+ \global\unitindent=\wd\@tempboxa
+ \@indentset
+ \fi
+ \endgroup
+ \let\@@protect\protect
+ \def\protect{\noexpand\protect\noexpand}%
+ \edef\@svsec{\@seccntformat{#1}}%
+ \let\protect\@@protect\fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #6\relax
+ \@hangfrom{\hskip #3\relax\@svsec}{\head@style #8\par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth
+ \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ \toc@font#2 #7}%
+ \else
+ \def\@svsechd{#6\hskip #3\relax
+ \@svsec #8\csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth
+ \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ \toc@font#2 #7}}%
+ \fi
+ \@xsect{#5}}
+% \end{macrocode}
+% This macro was introduced in \LaTeXe, its definition is changed
+% here to get the fixed with of the section number.
+% \begin{macrocode}
+\def\@seccntformat#1{%
+ \hbox to \unitindent{\csname the#1\endcsname \hfil}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@ssect}
+% Similar changes need to be made to the definition of |\@ssect|,
+% which is used in `starred' sections.
+% \begin{macrocode}
+\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #4\relax
+ \@hangfrom{\hskip #1}{\head@style #5\par}\endgroup
+ \else \def\@svsechd{#4\hskip #1\relax #5}\fi
+ \@xsect{#3}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Mark commands}
+%
+% \begin{macro}{\chaptermark}
+% \begin{macro}{\sectionmark}
+% \begin{macro}{\subsectionmark}
+% \begin{macro}{\subsubsectionmark}
+% \begin{macro}{\paragraphmark}
+% \begin{macro}{\subparagraphmark}
+% Default initializations of |\...mark| commands. These commands
+% are used in the definition of the page styles (see
+% section~\ref{sec:pagestyle}) Most of them are already defined by
+% \file{latex.ltx}, so they are only shown here.
+%
+% \begin{macrocode}
+\newcommand\chaptermark[1]{}
+% \newcommand\sectionmark[1]{}
+% \newcommand\subsectionmark[1]{}
+% \newcommand\subsubsectionmark[1]{}
+% \newcommand\paragraphmark[1]{}
+% \newcommand\subparagraphmark[1]{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Define Counters}
+%
+% \begin{macro}{\c@secnumdepth}
+% The value of the counter \Lcount{secnumdepth} gives the depth of
+% the highest-level sectioning command that is to produce section
+% numbers.
+% \begin{macrocode}
+\setcounter{secnumdepth}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@part}
+% \begin{macro}{\c@chapter}
+% \begin{macro}{\c@section}
+% \begin{macro}{\c@subsection}
+% \begin{macro}{\c@subsubsection}
+% \begin{macro}{\c@paragraph}
+% \begin{macro}{\c@subparagraph}
+% These counters are used for the section numbers. The macro\\
+% |\newcounter{|\meta{newctr}|}[|\meta{oldctr}|]|\\
+% defines \meta{newctr} to be a counter, which is reset to zero when
+% counter \meta{oldctr} is stepped. Counter \meta{oldctr} must
+% already be defined.
+%
+% \begin{macrocode}
+\newcounter {part}
+\newcounter {chapter}
+\newcounter {section}[chapter]
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {paragraph}[subsubsection]
+\newcounter {subparagraph}[paragraph]
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\thepart}
+% \begin{macro}{\thechapter}
+% \begin{macro}{\thesection}
+% \begin{macro}{\thesubsection}
+% \begin{macro}{\thesubsubsection}
+% \begin{macro}{\theparagraph}
+% \begin{macro}{\thesubparagraph}
+% For any counter \Lcount{CTR}, |\theCTR| is a macro that defines
+% the printed version of counter \Lcount{CTR}. It is defined in
+% terms of the following macros:
+%
+% |\arabic{|\Lcount{COUNTER}|}| prints the value of
+% \Lcount{COUNTER} as an arabic numeral.
+%
+% |\roman{|\Lcount{COUNTER}|}| prints the value of
+% \Lcount{COUNTER} as a lowercase roman numberal.
+%
+% |\Roman{|\Lcount{COUNTER}|}| prints the value of
+% \Lcount{COUNTER} as an uppercase roman numberal.
+%
+% |\alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
+% as a lowercase letter: $1 =$~a, $2 =$~ b, etc.
+%
+% |\Alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
+% as an uppercase letter: $1 =$~A, $2 =$~B, etc.
+%
+% \begin{macrocode}
+\renewcommand\thepart {\Roman{part}}
+\renewcommand\thechapter {\arabic{chapter}}
+\renewcommand\thesection {\thechapter.\arabic{section}}
+\renewcommand\thesubsection {\thesection.\arabic{subsection}}
+\renewcommand\thesubsubsection {\thesubsection .\arabic{subsubsection}}
+\renewcommand\theparagraph {\thesubsubsection.\arabic{paragraph}}
+\renewcommand\thesubparagraph {\theparagraph.\arabic{subparagraph}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@chapapp}
+% |\@chapapp| is initially defined to be `|\chaptername|'. The
+% |\appendix| command redefines it to be `|\appendixname|'.
+%
+% \begin{macrocode}
+\newcommand\@chapapp{\chaptername}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Parts}
+%
+% \begin{macro}{\part}
+% The command to start a new part of our document.
+%
+% We start a new (righthand) page and use the \pstyle{empty}.
+% \begin{macrocode}
+\newcommand\part{\cleardoublepage
+ \thispagestyle{empty}%
+% \end{macrocode}
+% When we are making a two column document, this will be a one
+% column page. We use |@tempswa| to remember to switch back to two
+% columns.
+% \begin{macrocode}
+ \if@twocolumn
+ \onecolumn
+ \@tempswatrue
+ \else
+ \@tempswafalse
+ \fi
+% \end{macrocode}
+% We need an empty box to prevent the fil glue from disappearing.
+% \begin{macrocode}
+ \hbox{}\vfil
+% \end{macrocode}
+% Here we use |\secdef| to indicate wwhich commands to use to make
+% the actual heading.
+% \begin{macrocode}
+ \secdef\@part\@spart}
+% \end{macrocode}
+%
+% \begin{macro}{\@part}
+% This macro does the actual formatting of the title of the part.
+%
+% \begin{macro}{\PartFont}
+% The font used to typeset the part is stored in this maro.
+% \begin{macrocode}
+\newcommand\PartFont{\bfseries}
+% \end{macrocode}
+% \end{macro}
+%
+% When \Lcount{secnumdepth} is larger than $-2$ for this document
+% class, we have a numbered part, otherwise it is unnumbered.
+% \begin{macrocode}
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}\toc@case{#1}}%
+ \else
+ \addcontentsline{toc}{part}{\toc@case{#1}}%
+ \fi
+% \end{macrocode}
+% We empty the mark registers and center the title on the page.
+% Also we prevent breaking between lines and reset the font.
+% \begin{macrocode}
+ \markboth{}{}
+ {\centering
+ \interlinepenalty \@M
+ \reset@font
+% \end{macrocode}
+% When this is a numbered part we have to print the number. We have
+% to expand |\partname| before |\uppercase| is called, therefore we
+% use a temporary control sequence that, when called will execute
+% |\uppercase| on the contents of |\partname|.
+% \begin{macrocode}
+ \ifnum \c@secnumdepth >-2\relax
+ \Large\PartFont
+ \edef\@tempa{\noexpand\uppercase{\partname}}\@tempa~\thepart
+ \par
+% \end{macrocode}
+% We leave some space before we print the title and leave the
+% finishing up to |\@endpart|.
+% \begin{macrocode}
+ \vskip 20\p@
+ \fi
+ \Large \PartFont \uppercase{#2}\par}%
+ \@endpart}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@spart}
+% This macro does the actual formatting of the title of the part
+% when the star form of the user command was used. In this case we
+% {\em never} print a number. Otherwise the formatting is the same.
+%
+% \begin{macrocode}
+\def\@spart#1{%
+ {\centering
+ \interlinepenalty \@M
+ \reset@font
+ \Large \PartFont #1\par}%
+ \@endpart}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@endpart}
+% This macro finishes the part page, for both |\@part| and
+% |\@spart|.
+%
+% First we fill the current page.
+% \begin{macrocode}
+\def\@endpart{\vfil\newpage
+% \end{macrocode}
+% Then, when we are in twosided mode, we produce a completely blank
+% page.
+% \begin{macrocode}
+ \if@twoside
+ \hbox{}%
+ \thispagestyle{empty}%
+ \newpage
+ \fi
+% \end{macrocode}
+% When this was a two column document we have to switch back to two
+% column mode.
+% \begin{macrocode}
+ \if@tempswa
+ \twocolumn
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Chapters}
+%
+% \begin{macro}{\chapter}
+% A chapter should always start on a new page therefore we start by
+% calling |\clearpage| and setting the pagestyle for this page to
+% \pstyle{plain}.
+% \begin{macrocode}
+\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
+ \thispagestyle{plain}%
+% \end{macrocode}
+% Then we prevent floats from appearing at the top of this page
+% because it looks weird to see a floating object above a chapter
+% title.
+% \begin{macrocode}
+ \global\@topnum\z@
+% \end{macrocode}
+% Then we suppress the indentation of the first paragraph by
+% setting the switch |\@afterindent| to |false|. We use |\secdef|
+% to specify the macros to use for actually setting the chapter
+% title.
+% \begin{macrocode}
+ \@afterindentfalse
+ \secdef\@chapter\@schapter}
+% \end{macrocode}
+%
+% \begin{macro}{\@chapter}
+% This macro is called when we have a numbered chapter. When
+% \Lcount{secnumdepth} is larger than $-1$ we display the chapter
+% number. We also inform the user that a new chapter is about to be
+% typeset by writing a message to the terminal.
+% \begin{macrocode}
+\def\@chapter[#1]#2{%
+ \ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{chapter}%
+ \typeout{\@chapapp\space\thechapter.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter}\toc@font0 #1}%
+ \else
+ \addcontentsline{toc}{chapter}{\toc@font0 #1}%
+ \fi
+% \end{macrocode}
+% After having written an entry to the table of contents we store
+% the (alternative) title of this chapter with |\chaptermark| and
+% add some white space to the lists of figures and tables.
+% \begin{macrocode}
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+% \end{macrocode}
+% Then we call upon |\@makechapterhead| to format the actual
+% chapter title. We have to do this in a special way when we are in
+% twocolumn mode in order to have the chapter title use the entire
+% |\textwidth|. In one column mode we call |\@afterheading| which
+% takes care of suppressing the indentation.
+% \begin{macrocode}
+ \if@twocolumn
+ \@topnewpage[\@makechapterhead{#2}]%
+ \else
+ \@makechapterhead{#2}%
+ \@afterheading
+ \fi}
+% \end{macrocode}
+%
+% \begin{macro}{\ChapFont}
+% The font used to typeset the chapters is stored in this maro.
+% \begin{macrocode}
+\newcommand\ChapFont{\bfseries}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makechapterhead}
+% The macro above uses |\@makechapterhead|\meta{text} to format the
+% heading of the chapter.
+%
+% We begin by leaving some white space. The we open a group in
+% which we have a paragraph indent of 0pt, and in which we have the
+% text set ragged right. We also reset the font.
+% \begin{macrocode}
+\def\@makechapterhead#1{%
+ \vspace*{50\p@ \@plus 5\p@}%
+ {\setlength\parindent{\z@}%
+ \setlength\parskip {\z@}%
+ \head@style \reset@font
+% \end{macrocode}
+% Then we check whether the number of the chapter has to be printed.
+% If so we leave some whitespace between the chapternumber and its
+% title.
+% \begin{macrocode}
+ \ifnum \c@secnumdepth >\m@ne
+ \Large\ChapFont \@chapapp{} \thechapter
+ \par
+ \vskip 20\p@
+ \fi
+% \end{macrocode}
+% Now we set the title in a large bold font. We prevent a pagebreak
+% at this point and leave some whitespace before the text begins.
+% \begin{macrocode}
+ \Large \ChapFont #1\par
+ \nobreak
+ \vskip 40\p@
+ }}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@schapter}
+% This macro is called when we have an unnumbered chapter. It is
+% much simpler than |\@chapter| because it only needs to typeset
+% the chapter title.
+% \begin{macrocode}
+\def\@schapter#1{\if@twocolumn
+ \@topnewpage[\@makeschapterhead{#1}]%
+ \else
+ \@makeschapterhead{#1}%
+ \@afterheading
+ \fi}
+% \end{macrocode}
+%
+% \begin{macro}{\@makeschapterhead}
+% The macro above uses |\@makeschapterhead|\meta{text}to format
+% the heading of the chapter. It is similar to |\@makechapterhead|
+% except that it never has to print a chapter number.
+%
+% \begin{macrocode}
+\def\@makeschapterhead#1{%
+ \vspace*{50\p@\@plus 5\p@}%
+ {\setlength\parindent{\z@}%
+ \setlength\parskip{\z@}%
+ \head@style
+ \reset@font
+ \Large \ChapFont #1\par
+ \nobreak
+ \vskip 40\p@
+ }}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{Lower level headings}
+%
+% These commands all make use of |\@startsection|.
+% \begin{macro}{\section}
+% This gives a normal heading with white space above the heading
+% (the whitespace below the heading will be generated by the
+% |\parskip| that is inserted at the start of the first paragraph),
+% the title set in |\large\bfseries|, and no indentation on the
+% first paragraph.
+% \begin{macrocode}
+\newcommand\section{%
+ \@startsection {section}{1}{\z@}%
+ {-2\baselineskip\@plus -1\baselineskip \@minus -.5\baselineskip}%
+%<+type1> {.5\baselineskip}%
+%<+type3> {.01\baselineskip}%
+ {\reset@font\large\SectFont}}
+% \end{macrocode}
+%
+% \begin{macro}{\SectFont}
+% The font used to typeset the sections is stored in this maro.
+% \begin{macrocode}
+\newcommand\SectFont{\bfseries}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\subsection}
+% This gives a normal heading with white space above the heading,
+% the title set in |\normalsize\bfseries|, and no indentation on
+% the first paragraph.
+% \begin{macrocode}
+\newcommand\subsection{%
+ \@startsection{subsection}{2}{\z@}%
+ {-1\baselineskip\@plus -.5\baselineskip \@minus -.25\baselineskip}%
+%<+type1> {.25\baselineskip}%
+%<+type3> {.01\baselineskip}%
+ {\reset@font\normalsize\SSectFont}}
+% \end{macrocode}
+%
+% \begin{macro}{\SSectFont}
+% The font used to typeset the subsections is stored in this maro.
+% \begin{macrocode}
+\newcommand\SSectFont{\bfseries}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\subsubsection}
+% This gives a normal heading with white space above the heading,
+% the title set in |\normalsize\tm|, and no indentation on the
+% first paragraph.
+% \begin{macrocode}
+\newcommand\subsubsection{%
+ \@startsection{subsubsection}{3}{\z@}%
+ {-1\baselineskip plus -.5\baselineskip minus -.25\baselineskip}%
+%<+type1> {.25\baselineskip}%
+%<+type3> {.01\baselineskip}%
+ {\reset@font\normalsize\SSSectFont}}
+% \end{macrocode}
+%
+% \begin{macro}{\SSSectFont}
+% The font used to typeset the subsubsections is stored in this maro.
+% \begin{macrocode}
+\newcommand\SSSectFont{\rmfamily}
+\newcommand\SSSectFont{\slshape}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\paragraph}
+% This gives a run-in heading with white space above and to the
+% right of the heading, the title set in |\normalsize\slshape|.
+% \begin{macrocode}
+\newcommand\paragraph{%
+ \@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\reset@font\normalsize\ParaFont}}
+% \end{macrocode}
+%
+% \begin{macro}{\ParaFont}
+% The font used to typeset the paragraphs is stored in this maro.
+% \begin{macrocode}
+\newcommand\ParaFont{\slshape}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\subparagraph}
+% This gives an indented run-in heading with white space above and
+% to the right of the heading, the title set in
+% |\normalsize\slshape|.
+% \begin{macrocode}
+\newcommand\subparagraph{%
+ \@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\reset@font\normalsize\SParaFont}}
+% \end{macrocode}
+%
+% \begin{macro}{\SParaFont}
+% The font used to typeset the subparagraphs is stored in this maro.
+% \begin{macrocode}
+\newcommand\SParaFont{\slshape}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Headingfonts}
+% To change the fonts that are used to typeset the title,part,
+% chapter and section headings this macro can be used.
+% \begin{macrocode}
+\newcommand\HeadingFonts[8]{%
+ \renewcommand\TitleFont{#1}%
+ \renewcommand\PartFont{#2}%
+ \renewcommand\ChapFont{#3}%
+ \renewcommand\SectFont{#4}%
+ \renewcommand\SSectFont{#5}%
+ \renewcommand\SSSectFont{#6}%
+ \renewcommand\ParaFont{#7}%
+ \renewcommand\SParaFont{#8}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Lists}
+%
+% \subsubsection{General List Parameters}
+%
+% The following commands are used to set the default values for the list
+% environment's parameters. See the \LaTeX{} manual for an explanation
+% of the meanings of the parameters. Defaults for the list
+% environment are set as follows. First, |\rightmargin|,
+% |\listparindent| and |\itemindent| are set to 0pt. Then, for a Kth
+% level list, the command |\@listK| is called, where `K' denotes `i',
+% '`i', ... , `vi'. (I.e., |\@listiii| is called for a third-level
+% list.) By convention, |\@listK| should set |\leftmargin| to
+% |\leftmarginK|.
+%
+% \begin{macro}{\leftmargin}
+% \begin{macro}{\leftmargini}
+% \begin{macro}{\leftmarginii}
+% \begin{macro}{\leftmarginiii}
+% \begin{macro}{\leftmarginiv}
+% \begin{macro}{\leftmarginv}
+% \begin{macro}{\leftmarginvi}
+% For efficiency, level-one list's values are defined at top level, and
+% |\@listi| is defined to set only |\leftmargin|.
+%
+% \begin{macrocode}
+\setlength\leftmargini {\unitindent}
+\setlength\leftmarginii {\othermargin}
+\setlength\leftmarginiii{\othermargin}
+\setlength\leftmarginiv {\othermargin}
+\setlength\leftmarginv {\othermargin}
+\setlength\leftmarginvi {1em}
+% \end{macrocode}
+% Here we set the top level leftmargin.
+% \begin{macrocode}
+\setlength\leftmargin {\leftmargini}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\labelsep}
+% \begin{macro}{\labelwidth}
+% |\labelsep| is the distance between the label and the text of an
+% item; |\labelwidth| is the width of the label.
+% \begin{macrocode}
+\setlength \labelsep {5\p@}
+\setlength \labelwidth{\leftmargini}
+\addtolength\labelwidth{-\labelsep}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\partopsep}
+% When the user leaves a blank line before the environment an extra
+% vertical space of |\partopsep| is inserted, in addition to
+% |\parskip| and |\topsep|.
+% \begin{macrocode}
+\setlength\partopsep{\z@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\topsep}
+% Extra vertical space, in addition to |\parskip|, added above and
+% below list and paragraphing environments.
+% \begin{macrocode}
+\setlength\topsep{\z@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@beginparpenalty}
+% \begin{macro}{\@endparpenalty}
+% These penalties are inserted before and after a list or paragraph
+% environment. They are set to a bonus value to encourage page
+% breaking at these points.
+% \begin{macro}{\@itempenalty}
+% This penalty is inserted between list items.
+% \begin{macrocode}
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@listI}
+% \begin{macro}{\@listi}
+% |\@listI| defines top level and |\@listi| values of
+% |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep|
+%
+% \begin{macrocode}
+\def\@listI{%
+ \leftmargin\unitindent
+ \labelsep.5em%
+ \labelwidth\leftmargin
+ \advance\labelwidth-\labelsep
+ \parsep \z@
+%<-type3> \topsep 0\p@ \@plus\p@
+%<+type3> \topsep -.5\parskip \@plus\p@
+ \itemsep 0\p@ \@plus1\p@}
+\let\@listi\@listI
+% \end{macrocode}
+% We have to initialise these parameters.
+% \begin{macrocode}
+\@listi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@listii}
+% \begin{macro}{\@listiii}
+% \begin{macro}{\@listiv}
+% \begin{macro}{\@listv}
+% \begin{macro}{\@listvi}
+% Here are the same macros for the higher level lists.
+% \begin{macrocode}
+\def\@listii {\leftmargin\leftmarginii
+ \labelsep .5em%
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+%<-type3> \topsep 0\p@ \@plus\p@
+%<+type3> \topsep -.5\parskip\@plus\p@
+ \parsep \z@
+ \itemsep \z@ \@plus\p@}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelsep .5em%
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+%<-type3> \topsep 0\p@ \@plus\p@
+%<+type3> \topsep -.5\parskip\@plus\p@
+ \parsep \z@
+ \partopsep \z@ \@plus\p@
+ \itemsep \z@ \@plus\p@}
+\def\@listiv {\leftmargin\leftmarginiv
+ \labelsep .5em%
+ \labelwidth\leftmarginiv%
+ \advance\labelwidth-\labelsep
+%<-type3> \topsep 0\p@ \@plus\p@
+%<+type3> \topsep -.5\parskip\@plus\p@
+ \parsep \z@
+ \itemsep \z@ \@plus\p@}
+\def\@listv {\leftmargin\leftmarginv
+ \labelsep .5em%
+ \labelwidth\leftmarginv
+ \advance\labelwidth-\labelsep%
+%<-type3> \topsep 0\p@ \@plus\p@
+%<+type3> \topsep -.5\parskip\@plus\p@
+ \parsep \z@
+ \itemsep \z@ \@plus\p@}
+\def\@listvi {\leftmargin\leftmarginvi
+ \labelsep .5em
+ \labelwidth\leftmarginvi
+ \advance\labelwidth{-\labelsep}%
+%<-type3> \topsep 0\p@ \@plus\p@
+%<+type3> \topsep -.5\parskip\@plus\p@
+ \parsep \z@
+ \itemsep \z@ \@plus\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Enumerate}
+%
+% The enumerate environment uses four counters: \Lcount{enumi},
+% \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where
+% \Lcount{enumN} controls the numbering of the Nth level
+% enumeration.
+%
+% \begin{macro}{\theenumi}
+% \begin{macro}{\theenumii}
+% \begin{macro}{\theenumiii}
+% \begin{macro}{\theenumiv}
+% The counters are already defined in \file{latex.dtx}, but their
+% representation is changed here.
+%
+% \begin{macrocode}
+\renewcommand\theenumi{\arabic{enumi}}
+\renewcommand\theenumii{\alph{enumii}}
+\renewcommand\theenumiii{\roman{enumiii}}
+\renewcommand\theenumiv{\Alph{enumiv}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\labelenumi}
+% \begin{macro}{\labelenumii}
+% \begin{macro}{\labelenumiii}
+% \begin{macro}{\labelenumiv}
+% The label for each item is generated by the commands\\
+% |\labelenumi| ... |\labelenumiv|.
+% \begin{macrocode}
+\newcommand\labelenumi{\theenumi.}
+\newcommand\labelenumii{(\theenumii)}
+\newcommand\labelenumiii{\theenumiii.}
+\newcommand\labelenumiv{\theenumiv.}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\p@enumii}
+% \begin{macro}{\p@enumiii}
+% \begin{macro}{\p@enumiv}
+% The expansion of |\p@enumN||\theenumN| defines the output of a
+% |\ref| command when referencing an item of the Nth level of an
+% enumerated list.
+% \begin{macrocode}
+\renewcommand\p@enumii{\theenumi}
+\renewcommand\p@enumiii{\theenumi(\theenumii)}
+\renewcommand\p@enumiv{\p@enumiii\theenumiii}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{environment}{enumerate}
+% We want to have different label positioning on different levels of
+% list. To acheive this we have to redefine the \Lenv{enumerate}
+% environment.
+%
+% \begin{macrocode}
+\renewenvironment{enumerate}{%
+ \ifnum \@enumdepth >3
+ \@toodeep
+ \else
+ \advance\@enumdepth \@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \list{\csname label\@enumctr\endcsname}
+ {\usecounter{\@enumctr}%
+%<+type1> \ifnum \@listdepth=1
+ \if@revlabel
+ \def\makelabel##1{\hskip .5\unitindent{##1\hfil}}%
+ \else
+%<-type3> \def\makelabel##1{\hfil##1}
+%<+type3> \def\makelabel##1{##1\hfil}
+ \fi
+%<*type1>
+ \else
+ \def\makelabel##1{##1\hfil}%
+%</type1>
+ \fi
+ }%
+ \fi}
+% \end{macrocode}
+% We try to suppress spaces after these list constructs.
+% \begin{macrocode}
+ {\global\@ignoretrue \endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Itemize}
+%
+% \begin{macro}{\labelitemi}
+% \begin{macro}{\labelitemii}
+% \begin{macro}{\labelitemiii}
+% \begin{macro}{\labelitemiv}
+% Itemization is controlled by four commands: |\labelitemi|,
+% |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define
+% the labels of thevarious itemization levels: the symbols used are
+% bullet, bold en-dash, asterisk and centred dot.
+%
+% \begin{macrocode}
+\newcommand\labelitemi{$\m@th\bullet$}
+\newcommand\labelitemii{\bfseries --}
+\newcommand\labelitemiii{$\m@th\ast$}
+\newcommand\labelitemiv{$\m@th\cdot$}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{itemize}
+% We want to have differen label positioning on different levels of
+% list. To acheive this we have to redefine the \Lenv{itemize}
+% environment.
+% \begin{macrocode}
+\renewenvironment{itemize}{%
+ \ifnum \@itemdepth >3
+ \@toodeep
+ \else
+ \advance\@itemdepth \@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \list{\csname\@itemitem\endcsname}%
+ {%
+%<+type1> \ifnum \@listdepth=1\relax
+ \if@revlabel
+ \def\makelabel##1{\hskip .5\unitindent{##1\hfil}}\else
+%<+type1> \def\makelabel##1{\hfil##1}
+%<+type3> \def\makelabel##1{##1\hfil}
+ \fi
+%<*type1>
+ \else
+ \def\makelabel##1{##1\hfil}
+ \fi
+%</type1>
+ }%
+ \fi}
+% \end{macrocode}
+% We try to suppress spaces after these list constructs.
+% \begin{macrocode}
+ {\global\@ignoretrue \endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Description}
+%
+% \begin{environment}{description}
+% The description environment is defined here -- while the itemize
+% and enumerate environments are defined in \file{latex.dtx}.
+%
+% \begin{macrocode}
+\newenvironment{description}
+ {\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\descriptionlabel}
+% To change the formatting of the label, you must redefine
+% |\descriptionlabel|.
+%
+% \begin{macrocode}
+\newcommand\descriptionlabel[1]{\hspace\labelsep \bfseries #1}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Adapting existing environments}
+%
+% Because we globally set |\topsep| to zero, we need to modify the
+% definitions of a number of environments slightly to get a litle
+% whitespace around them.
+%
+% \begin{environment}{center}
+% Add a litle surrounding whitespace.
+% \begin{macrocode}
+%<*type1>
+\def\center
+ {\topsep=.25\baselineskip \@plus .1\baselineskip
+ \@minus .1\baselineskip
+ \trivlist \centering\item[]}
+\let\endcenter\endtrivlist
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{flushleft}
+% Add a litle surrounding whitespace.
+% \begin{macrocode}
+\def\flushleft
+ {\topsep=.25\baselineskip \@plus .1\baselineskip
+ \@minus .1\baselineskip
+ \trivlist \raggedright\item[]}
+\let\endflushleft=\endtrivlist
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{flushright}
+% Add a litle surrounding whitespace.
+% \begin{macrocode}
+\def\flushright
+ {\topsep=.25\baselineskip \@plus .1\baselineskip
+ \@minus .1\baselineskip
+ \trivlist \raggedleft\item[]}
+\let\endflushright=\endtrivlist
+%</type1>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{verbatim}
+% In \Lenv{verbatim} we add a little surrounding whitespace,
+% --which for \file{rapport3} is negative to
+% compensate for the positive |\parskip|-- but also an indent for
+% the \file{rapport1} document class.
+% \begin{macrocode}
+\def\verbatim{%
+%<*type1>
+ \topsep=.25\baselineskip \@plus .1\baselineskip
+ \@minus .1\baselineskip
+ \@verbatim
+ \leftskip\unitindent
+%</type1>
+%<*type3>
+ \topsep=-.5\parskip
+ \@verbatim
+%</type3>
+ \frenchspacing\@vobeyspaces \@xverbatim}
+%<+type1>\def\endverbatim{\if@newlist \leavevmode\fi\endtrivlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Defining new environments}
+%
+% \subsubsection{Abstract}
+%
+% \begin{environment}{abstract}
+% When we are producing a separate titlepage we also put the
+% abstract on a page of its own. It will be centred vertically on
+% the page.
+%
+% \begin{macrocode}
+\if@titlepage
+ \newenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \hbox{\SectFont \abstractname}
+ \noindent\ignorespaces}
+ {\par\vfil\null\endtitlepage}
+% \end{macrocode}
+% When we are not making a seperate titlepagewe have to check if we
+% are in twocolumn mode. In that case the abstract is set as a
+% |\section*|, otherwise the abstract is typeset flushleft, an
+% amount |\unitindent| smaller as the normal text.
+% \begin{macrocode}
+\else
+ \newenvironment{abstract}{%
+ \if@twocolumn
+ \section*{\abstractname}%
+ \else
+ \small
+ \bgroup\rightskip=\unitindent
+ \hbox{\SectFont \abstractname}%
+ \noindent\ignorespaces
+% \end{macrocode}
+ \fi}
+% \end{macrocode}
+% Which implies that the definition of |\end{abstract}| is also
+% different.
+% \begin{macrocode}
+ {\if@twocolumn\else\par\egroup\fi}
+\fi
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Verse}
+%
+% \begin{environment}{verse}
+% The verse environment is defined by making clever use of the
+% list environment's parameters. The user types |\\| to end a line.
+% This is implemented by |\let|'ing |\\| equal |\@centercr|.
+%
+% \begin{macrocode}
+\newenvironment{verse}
+ {\let\\=\@centercr
+ \list{}{\itemsep\z@
+ \itemindent-1.5em%
+ \listparindent\itemindent
+ \rightmargin\leftmargin
+ \advance\leftmargin1.5em}%
+ \item[]}
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Quotation}
+%
+% \begin{environment}{quotation}
+% The quotation environment is also defined by making clever use of
+% the list environment's parameters. The lines in the environment
+% are set smaller than |\textwidth|. The first line of a paragraph
+% inside this environment is indented.
+%
+% \begin{macrocode}
+\newenvironment{quotation}
+ {\list{}{%
+ \listparindent\z@
+ \itemindent\listparindent
+ \rightmargin\leftmargin
+ \parsep\z@ \@plus\p@}%
+ \item[]}
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Quote}
+%
+% \begin{environment}{quote}
+% The quote environment is like the quotation environment except
+% that paragraphs are not indented.
+%
+% \begin{macrocode}
+\newenvironment{quote}
+ {\list{}{\rightmargin\leftmargin}%
+ \item[]}
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Theorem}
+%
+% \begin{macro}{\@begintheorem}
+% \begin{macro}{\@opargbegintheorem}
+% \begin{macro}{\@endtheorem}
+% These document classes have a slightly modified \Lenv{theorem}
+% environment style. Surrounding whitespace is added and an
+% initialisation of |\labelsep|. Finally a slanted font instead of
+% an italic font is used.
+% \begin{macrocode}
+\def\@begintheorem#1#2{%
+ \vskip\baselineskip \labelsep=.5em%
+ \trivlist
+ \item[\hskip \labelsep{\bfseries #1\ #2}]\slshape}
+\def\@opargbegintheorem#1#2#3{%
+ \vskip\baselineskip \labelsep=.5em%
+ \trivlist
+ \item[\hskip \labelsep{\bfseries #1\ #2\ (#3)}]\slshape}
+\def\@endtheorem{\endtrivlist \vskip\baselineskip}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Titlepage}
+%
+% \begin{environment}{titlepage}
+% In the normal environments, the titlepage environment does nothing
+% but start and end a page, and inhibit page numbers. It also resets
+% the page number to zero. In two-column style, it still makes a
+% one-column page.
+%
+% \begin{macrocode}
+\newenvironment{titlepage}
+ {
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+ \if@compatibility
+ \setcounter{page}{0}
+ \else
+ \setcounter{page}{1}%
+ \fi}
+ {\if@restonecol\twocolumn \else \newpage \fi
+ \setcounter{page}{1}%
+ }
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Appendix}
+%
+% \begin{macro}{\appendix}
+%
+% The |\appendix| command is not really an environment, it is a
+% macro that makes some changes in the way things are done.
+%
+% In this document class the |\appendix| command must do the
+% following:
+% \begin{itemize}
+% \item reset the chapter and section counters to zero,
+% \item set |\@chapapp| to |\appendixname| (for messages),
+% \item redefine the chapter counter to produce appendix numbers,
+% \item possibly redefine the |\chapter| command if appendix titles
+% and headings are to look different from chapter titles and
+% headings.
+% \end{itemize}
+%
+% \begin{macrocode}
+\newcommand\appendix{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \renewcommand\@chapapp{\appendixname}%
+ \renewcommand\thechapter{\Alph{chapter}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Setting parameters for existing environments}
+%
+% \subsubsection{Array and tabular}
+%
+% \begin{macro}{\arraycolsep}
+% The columns in an array environment are separated by
+% 2|\arraycolsep|.
+% \begin{macrocode}
+\setlength\arraycolsep{5\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tabcolsep}
+% The columns in an tabular environment are separated by
+% 2|\tabcolsep|.
+% \begin{macrocode}
+\setlength\tabcolsep{6\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\arrayrulewidth}
+% The width of rules in the array and tabular environments is given
+% by |\arrayrulewidth|.
+% \begin{macrocode}
+\setlength\arrayrulewidth{.4\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\doublerulesep}
+% The space between adjacent rules in the array and tabular
+% environments is given by |\doublerulesep|.
+% \begin{macrocode}
+\setlength\doublerulesep{2\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Tabbing}
+%
+% \begin{macro}{\tabbingsep}
+% This controls the space that the |\'| command puts in. (See
+% \LaTeX{} manual for an explanation.)
+% \begin{macrocode}
+\setlength\tabbingsep{\labelsep}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Minipage}
+%
+% \begin{macro}{\@minipagerestore}
+% The macro |\@minipagerestore| is called upon entry to a minipage
+% environment to set up things that are to be handled differently
+% inside a minipage environment.
+%
+% \begin{macrocode}
+%<+type1>\def\@minipagerestore{\parindent\unitindent}
+%<*type3>
+\def\@minipagerestore{%
+ \parskip=.5\baselineskip \@plus .1\baselineskip
+ \@minus .1\baselineskip}
+%</type3>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@mpfootins}
+% Minipages have their own footnotes; |\skip||\@mpfootins| plays
+% same r\^ole for footnotes in a minipage as |\skip||\footins| does
+% for ordinary footnotes.
+%
+% \begin{macrocode}
+\skip\@mpfootins = \skip\footins
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Framed boxes}
+%
+% \begin{macro}{\fboxsep}
+% The space left by |\fbox| and |\framebox| between the box and the
+% text in it.
+% \begin{macro}{\fboxrule}
+% The width of the rules in the box made by |\fbox| and |\framebox|.
+% \begin{macrocode}
+\setlength\fboxsep{3\p@}
+\setlength\fboxrule{.4\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Equation and eqnarray}
+%
+% \begin{macro}{\theequation}
+% The equation counter will be reset at beginning of a new chapter
+% and the equation number will be prefixed by the chapter number.
+%
+% This code must follow the |\chapter| definition, or more exactly
+% the definition of the chapter counter.
+% \begin{macrocode}
+\@addtoreset{equation}{chapter}
+\renewcommand\theequation{\thechapter.\arabic{equation}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jot}
+% |\jot| is the extra space added between lines of an eqnarray
+% environment. The default value is used.
+% \begin{macrocode}
+% \setlength\jot{3pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@eqnnum}
+% The macro |\@eqnnum| defines how equation numbers are to appear in
+% equations. Again the default is used.
+%
+% \begin{macrocode}
+% \def\@eqnnum{(\theequation)}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Floating objects}
+%
+% The file \file{latex.dtx} only defines a number of tools with
+% which floating objects can be defined. This is done in the
+% document class. It needs to define the following macros for each
+% floating object of type \texttt{TYPE} (e.g., \texttt{TYPE} =
+% figure).
+%
+% \begin{description}
+% \item[\texttt{\bslash fps@TYPE}]
+% The default placement specifier for floats of type
+% \texttt{TYPE}.
+%
+% \item[\texttt{\bslash ftype@TYPE}]
+% The type number for floats of type \texttt{TYPE}. Each
+% \texttt{TYPE} has associated a unique positive {\texttt
+% TYPE} number, which is a power of two. E.g., figures might
+% have type number 1, tables type number 2, programs type
+% number 4, etc.
+%
+% \item[\texttt{\bslash ext@TYPE}]
+% The file extension indicating the file on which the contents
+% list for float type \texttt{TYPE} is stored. For example,
+% |\ext@figure| = `lof'.
+%
+% \item[\texttt{\bslash fnum@TYPE}]
+% A macro to generate the figure number for a caption. For
+% example, |\fnum@TYPE| == `Figure |\thefigure|'.
+%
+% \item[\texttt{\bslash @makecaption{\meta{num}}{\meta{text}}}]
+% A macro to make a caption, with \meta{num} the value produced
+% by |\fnum@...| and \meta{text} the text of the caption. It
+% can assume it's in a |\parbox| of the appropriate width.
+% This will be used for {\em all} floating objects.
+%
+% \end{description}
+%
+% The actual environment that implements a floating object such as
+% a figure is defined using the macros |\@float| and |\end@float|,
+% which are defined in \file{latex.dtx}.
+%
+% An environment that implements a single column floating object is
+% started with |\@float{|\texttt{TYPE}|}[|\meta{placement}|]| of type
+% \texttt{TYPE} with \meta{placement} as the placement specifier.
+% The default value of \meta{PLACEMENT} is defined by |\fps@TYPE|.
+%
+% The environment is ended by |\end@float|. E.g., |\figure| ==
+% |\@float|{figure}, |\endfigure| == |\end@float|.
+%
+% \subsubsection{Figure}
+%
+% Here is the implementation of the figure environment.
+%
+% \begin{macro}{\c@figure}
+% First we have to allocate a counter to number the figures. In
+% this document class the figures are numbered per chapter.
+% \begin{macrocode}
+\newcounter{figure}[chapter]
+\renewcommand\thefigure{\thechapter.\@arabic\c@figure}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fps@figure}
+% \begin{macro}{\ftype@figure}
+% \begin{macro}{\ext@figure}
+% \begin{macro}{\num@figure}
+% Here are the parameters for the floating objects of type `figure'.
+% \begin{macrocode}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{\figurename~\thefigure}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{figure}
+% \begin{environment}{figure*}
+% And the definition of the actual environment. The form with the
+% |*| is used for double column figures.
+% \begin{macrocode}
+\newenvironment{figure}
+ {\@float{figure}}
+ {\end@float}
+\newenvironment{figure*}
+ {\@dblfloat{figure}}
+ {\end@dblfloat}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \subsubsection{Table}
+%
+% Here is the implementation of the table environment. It is very
+% much the same as the figure environment.
+%
+% \begin{macro}{\c@table}
+% First we have to allocate a counter to number the tables. In this
+% document class the tables are numbered per chapter.
+% \begin{macrocode}
+\newcounter{table}[chapter]
+\renewcommand\thetable{\thechapter.\@arabic\c@table}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fps@table}
+% \begin{macro}{\ftype@table}
+% \begin{macro}{\ext@table}
+% \begin{macro}{\num@table}
+% Here are the parameters for the floating objects of type `table'.
+% \begin{macrocode}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{\tablename~\thetable}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{table}
+% \begin{environment}{table*}
+% And the definition of the actual environment. The form with the
+% |*| is used for double column tables.
+% \begin{macrocode}
+\newenvironment{table}
+ {\@float{table}}
+ {\end@float}
+\newenvironment{table*}
+ {\@dblfloat{table}}
+ {\end@dblfloat}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \subsubsection{Captions}
+%
+% \begin{macro}{\@makecaption}
+% The |\caption| command calls |\@makecaption| to format the
+% caption of floating objects. It gets two arguments,
+% \meta{number}, the number of the floating object and \meta{text},
+% the text of the caption. Usually \meta{number} contains a string
+% such as `Figure 3.2'. The macro can assume it is called inside a
+% |\parbox| of right width, with |\normalsize|.
+%
+% \begin{macro}{\abovecaptionskip}
+% \begin{macro}{\belowcaptionskip}
+% These lengths contain the amount of white space to leave above
+% and below the caption.
+% \begin{macrocode}
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+\setlength\abovecaptionskip{10\p@}
+\setlength\belowcaptionskip{0\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The definition of this macro is |\long| in order to allow more
+% then one paragraph in a caption.
+% \begin{macrocode}
+\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+% \end{macrocode}
+% We want to see if the caption fits on one line on the page,
+% therefore we first typeset it in a temporary box.
+% \begin{macrocode}
+ \sbox\@tempboxa{{\CaptionLabelFont#1:} \CaptionTextFont#2}%
+% \end{macrocode}
+% We can the measure its width. It that is larger than the current
+% |\hsize| we typeset the caption as an ordinary paragraph.
+% \begin{macrocode}
+ \ifdim \wd\@tempboxa >\hsize
+ {\CaptionLabelFont#1:} \CaptionTextFont#2\par
+% \end{macrocode}
+% If the caption fits, we center it.
+% \begin{macrocode}
+ \else
+ \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\CaptionLabelFont}
+% \begin{macro}{\CaptionTextFont}
+% These macros can contain the fonts used for typesetting captions.
+% By default they do nothing.
+% \begin{macrocode}
+\newcommand\CaptionLabelFont{\relax}
+\newcommand\CaptionTextFont{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\CaptionFonts}
+% To change the fonts that are used to typeset captions
+% this macro can be used.
+% \begin{macrocode}
+\newcommand\CaptionFonts[2]{%
+ \renewcommand\CaptionLabelFont{#1}%
+ \renewcommand\CaptionTextFont{#2}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Font changing}
+%
+% Here we supply the declarative font changing commands that were
+% common in \LaTeX\ version 2.09 and earlier. These commands work
+% in text mode \emph{and} in math mode. They are provided for
+% compatibility, but one should start using the |\text...| and
+% |\math...| commands instead. These commands are defined using
+% |\DeclareOldFontCommand|, a command with three arguments: the user
+% command to be defined; \LaTeX\ commands to execute in text mode
+% and \LaTeX\ commands to execute in math mode.
+%
+% \begin{macro}{\rm}
+% \begin{macro}{\tt}
+% \begin{macro}{\sf}
+%
+% The commands to change the family. When in compatibility mode we
+% select the `default' font first, to get \LaTeX2.09 behviour.
+% \begin{macrocode}
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bf}
+% The command to change to the bold series. One should use
+% |\mdseries| to explicitly switch back to medium series.
+% \begin{macrocode}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sl}
+% \begin{macro}{\it}
+% \begin{macro}{\sc}
+%
+% And the commands to change the shape of the font. The slanted and
+% small caps shapes are not available by default as math alphabets,
+% so those changes do nothing in math mode. One should use
+% |\upshape| to explicitly change back to the upright shape.
+% \begin{macrocode}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\relax}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cal}
+% \begin{macro}{\mit}
+%
+% The commands |\cal| and |\mit| should only be used in math mode,
+% outside math mode they have no effect. Currently the New Font
+% Selection Scheme defines these commands to generate warning
+% messages. Therefore we have to define them `by hand'.
+% \begin{macrocode}
+\renewcommand{\cal}{\protect\pcal}
+\newcommand{\pcal}{\@fontswitch{\relax}{\mathcal}}
+\renewcommand{\mit}{\protect\pmit}
+\newcommand{\pmit}{\@fontswitch{\relax}{\mathnormal}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pem}
+% The definition of |\pem| is changed here to have slanted instead
+% of italic fonts.
+% \begin{macrocode}
+\def\pem{\@nomath\em \ifdim \fontdimen\@ne\font >\z@
+ \upshape \else \slshape \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Cross Referencing}
+% \subsection{Table of Contents, etc.}
+%
+% A |\section| command writes a
+% |\contentsline{section}{|\meta{title}|}{|\meta{page}|}| command
+% on the \file{.toc} file, where \meta{title} contains the
+% contents of the entry and \meta{page} is the page number. If
+% sections are being numbered, then \meta{title} will be of the
+% form |\numberline{|\meta{num}|}{|\meta{heading}|}| where
+% \meta{num} is the number produced by |\thesection|. Other
+% sectioning commands work similarly.
+%
+% A |\caption| command in a `figure' environment writes
+%
+% |\contentsline{figure}{\numberline{|\meta{num}|}{|%
+% \meta{caption}|}}{|\meta{page}|}|
+%
+% on the .\file{lof} file, where \meta{num} is the number produced
+% by |\thefigure| and \meta{caption} is the figure caption. It
+% works similarly for a `table' environment.
+%
+% The command |\contentsline{|\meta{name}|}| expands to
+% |\l@|\meta{name}. So, to specify the table of contents, we must
+% define |\l@chapter|, |\l@section|, |\l@subsection|, ... ; to
+% specify the list of figures, we must define |\l@figure|; and so
+% on. Most of these can be defined with either the
+% |\@dottedtocline| or the |\@regtocline| command, which work as
+% follows.
+%
+% |\@dottedtocline{|\meta{level}|}{|\meta{indent}|}{|^^A
+% \meta{numwidth}|}{|^^A
+% \meta{title}|}{|\meta{page}|}|
+%
+% |\@regtocline{|\meta{level}|}{|\meta{title}|}{|\meta{page}|}|
+%
+% \begin{description}
+% \item[\meta{level}] An entry is produced only if\meta{ level}
+% $<=$ value of the \Lcount{tocdepth} counter. Note,
+% |\chapter| is level 0, |\section| is level 1, etc.
+% \item[\meta{indent}] The indentation from the outer left margin
+% of the start of the contents line.
+% \item[\meta{numwidth}] The width of a box in which the section
+% number is to go, if \meta{title} includes a |\numberline|
+% command.
+% \end{description}
+%
+% \begin{macro}{\@pnumwidth}
+% \begin{macro}{\@tocrmarg}
+% \begin{macro}{\@dotsep}
+% This command uses the following three parameters, which are set
+% with a |\newcommand| (so em's can be used to make them depend upon
+% the font).
+% \begin{description}
+% \item[\texttt{\bslash @pnumwidth}] The width of a box in which the
+% page number is put.
+% \item[\texttt{\bslash @tocrmarg}] The right margin for multiple
+% line entries. One wants |\@tocrmarg| > or = |\@pnumwidth|
+% \item[\texttt{\bslash @dotsep}] Separation between dots, in mu
+% units. Should be defined as a number like 2 or 1.7
+% \end{description}
+%
+% \begin{macrocode}
+\newcommand\@pnumwidth{1.55em}
+\newcommand\@tocrmarg {2.55em}
+\newcommand\@dotsep{4.5}
+\setcounter{tocdepth}{2}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Table of Contents}
+%
+% \begin{macro}{\tableofcontents}
+% This macro is used to request that \LaTeX{} produces a table of
+% contents. The tables of contents, figures etc. are always set in
+% single-column style.
+%
+% \begin{macrocode}
+\newcommand\tableofcontents{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+% \end{macrocode}
+% The title is set using the |\chapter*| command, making sure that
+% the running head --if one is required-- contains the right
+% information.
+% \begin{macrocode}
+ \chapter*{\contentsname
+ \@mkboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}}%
+% \end{macrocode}
+% The the actual table of contents is made by calling
+% |\@starttoc{toc}|. After that we restore twocolumn mode if
+% necessary.
+% \begin{macrocode}
+ \@starttoc{toc}%
+ \if@restonecol\twocolumn\fi
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@starttoc}
+% The internal \LaTeXe macro |\@starttoc| needs to be adapted for
+% the \file{rapport3} document classes,in order to deal with a the
+% fact that for these document classes the |\parskip| is normally
+% non-zero. We don't want that in the table of contents.
+% \begin{macrocode}
+%<*type3>
+\def\@starttoc#1{\begingroup
+ \makeatletter
+ \parskip\z@
+ \@input{\jobname.#1}%
+ \if@filesw
+ \expandafter\newwrite\csname tf@#1\endcsname
+ \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
+ \fi \global\@nobreakfalse \endgroup}
+%</type3>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@regtocline}
+% These document classes use a different format for the table of
+% contents than the standard classes from which they were
+% developped. In order to acheive this different format we defined
+% the macro |\@regtocline|.
+% \begin{macrocode}
+\newcommand\@regtocline[3]{%
+ \ifnum #1>\c@tocdepth
+ \else
+ \vskip \z@ plus .2pt
+ {\hangindent\z@ \@afterindenttrue \interlinepenalty\@M
+ \leftskip\unitindent
+ \rightskip=\unitindent plus 1fil
+ \parfillskip=0cm
+ \@tempdima=\unitindent
+ \parindent\z@
+ \leavevmode
+ \hbox{}\hskip -\leftskip\relax#2\nobreak
+ \hskip 1em \nobreak{\slshape #3}\par
+ }%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\toc@font}
+% The changed definition of |\@sect| that we use, selects a
+% different font for the table of contents for the various header
+% levels. It does this using |\toc@font|.
+% \begin{macrocode}
+\if@oldtoc
+ \newcommand\toc@font[1]{\relax}
+\else
+ \newcommand\toc@font[1]{%
+ \ifcase#1\relax
+ \bfseries
+ \or\slshape
+ \or\rmfamily
+ \fi}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\toc@case}
+% The entries for parts are typeset in capital letters in the new
+% style of the table of contents. In the old style this isn't
+% done. The macro |\toc@case| is used to switch this.
+% \begin{macrocode}
+\if@oldtoc
+ \newcommand\toc@case{\relax}
+\else
+ \newcommand\toc@case{\uppercase}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@part}
+% Each sectioning command needs an additional macro to format its
+% entry in the table of contents, as described above. The macro for
+% the entry for parts is defined in a special way.
+%
+% First we make sure that if a pagebreak should occur, it occurs
+% {\em before} this entry. Also a little whitespace is added and a
+% group begun to keep changes local.
+%
+% First we have the definition from the standard classes.
+% \begin{macrocode}
+\if@oldtoc
+\newcommand\l@part[2]{%
+ \addpenalty{-\@highpenalty}%
+ \addvspace{2.25em \@plus\p@}%
+ \begingroup
+% \end{macrocode}
+% The macro |\numberline| requires that the width of the box that
+% holds the part number is stored in \LaTeX's scratch register
+% |\@tempdima|. Therefore we put it there.
+% \begin{macrocode}
+ \setlength\@tempdima{3em}%
+% \end{macrocode}
+% The we set |\parindent| to 0pt and use |\rightskip| to leave
+% enough room for the pagenumbers. To prevent overfull box messages
+% the |\parfillskip| is set to a negative value.
+% \begin{macrocode}
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+% \end{macrocode}
+% Now we can set the entry, in a large bold font. We make sure to
+% leave vertical mode, set the part title and add the pagenumber,
+% set flush right.
+% \begin{macrocode}
+ {\leavevmode
+ \large \bfseries #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
+% \end{macrocode}
+% Prevent a pagebreak immediately after this entry, but use
+% |\everypar| to reset the |\if@nobreak| switch. Finally we close
+% the group.
+% \begin{macrocode}
+ \nobreak
+ \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}
+ \endgroup}
+% \end{macrocode}
+% Then we can introduce our new definition.
+% \begin{macrocode}
+\else
+ \newcommand\l@part{\addpenalty{-\@highpenalty}
+ \addvspace{2.25em \@plus \p@}\@regtocline{0}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@chapter}
+% This macro formats the entries in the table of contents for
+% chapters. It is very similar to |\l@part|
+%
+% First we make sure that if a pagebreak should occur, it occurs
+% {\em before} this entry. Also a little whitespace is added and a
+% group begun to keep changes local.
+%
+% Again we first present the `standard' definition
+% \begin{macrocode}
+\if@oldtoc
+\newcommand\l@chapter[2]{%
+ \addpenalty{-\@highpenalty}%
+ \vskip 1.0em \@plus\p@
+% \end{macrocode}
+%
+% The macro |\numberline| requires that the width of the box that
+% holds the part number is stored in \LaTeX's scratch register
+% |\@tempdima|. Therefore we put it there. We begin a group, and
+% change some of the paragraph parameters.
+% \begin{macrocode}
+ \setlength\@tempdima{1.5em}%
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+% \end{macrocode}
+% Then we leave vertical mode and switch to a bold font.
+% \begin{macrocode}
+ \leavevmode \bfseries
+% \end{macrocode}
+% Because we do not use |\numberline| here, we have do some fine
+% tuning `by hand', before we can set the entry. We discourage but
+% not disallow a pagebreak immediately after a chapter entry.
+% \begin{macrocode}
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par
+ \penalty\@highpenalty
+ \endgroup}
+% \end{macrocode}
+% Then we present our new definition.
+% \begin{macrocode}
+\else
+ \newcommand\l@chapter{\@regtocline{0}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@section}
+% In this document class the definition for
+% |\l@section| is very simple.
+% \begin{macrocode}
+\if@oldtoc
+ \newcommand\l@section {\@dottedtocline{1}{1.5em}{2.3em}}
+\else
+ \newcommand\l@section {\@regtocline{1}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@subsection}
+% \begin{macro}{\l@subsubsection}
+% \begin{macro}{\l@paragraph}
+% \begin{macro}{\l@subparagraph}
+% All lower level entries are defined using the macro
+% |\@dottedtocline| or |\@regtocline| (see above).
+% \begin{macrocode}
+\if@oldtoc
+ \newcommand\l@subsection {\@dottedtocline{2}{3.8em}{3.2em}}
+ \newcommand\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
+ \newcommand\l@paragraph {\@dottedtocline{4}{10em}{5em}}
+ \newcommand\l@subparagraph {\@dottedtocline{5}{12em}{6em}}
+\else
+ \newcommand\l@subsection {\@regtocline{2}}
+ \newcommand\l@subsubsection{\@regtocline{3}}
+ \newcommand\l@paragraph {\@regtocline{4}}
+ \newcommand\l@subparagraph {\@regtocline{5}}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{List of figures}
+%
+% \begin{macro}{\listoffigures}
+% This macro is used to request that \LaTeX{} produces a list of
+% figures. It is very similar to |\tableofcontents|.
+%
+% \begin{macrocode}
+\newcommand\listoffigures{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \chapter*{\listfigurename
+ \@mkboth{\uppercase{\listfigurename}}%
+ {\uppercase{\listfigurename}}}%
+ \@starttoc{lof}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@figure}
+% This macro produces an entry in the list of figures.
+% \begin{macrocode}
+\if@oldtoc
+ \newcommand\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+\else
+ \newcommand\l@figure{\@regtocline{1}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{List of tables}
+%
+% \begin{macro}{\listoftables}
+% This macro is used to request that \LaTeX{} produces a list of
+% tables. It is very similar to |\tableofcontents|.
+%
+% \begin{macrocode}
+\newcommand\listoftables{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \chapter*{\listtablename
+ \@mkboth{\uppercase{\listtablename}}{\uppercase{\listtablename}}}%
+ \@starttoc{lot}%
+ \if@restonecol\twocolumn\fi
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@table}
+% This macro produces an entry in the list of tables.
+% \begin{macrocode}
+\let\l@table\l@figure
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Bibliography}
+%
+% \begin{macro}{\bibindent}
+% The ``open'' bibliography format uses an indentation of
+% |\bibindent|.
+% \begin{macrocode}
+\newdimen\bibindent
+\bibindent=1.5em
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newblock}
+% This is a dummy definition for this macro which is used in the
+% \textsf{thebibliography} environment.
+% \begin{macrocode}
+\newcommand\newblock{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{thebibliography}
+% The `thebibliography' environment executes the following
+% commands:
+%
+% |\renewcommand\newblock{\hskip .11em \@plus .33em \@minus .07em}|
+% -- Defines the ``closed'' format, where the blocks (major units
+% of information) of an entry run together.
+%
+% |\sloppy| -- Used because it's rather hard to do line breaks in
+% bibliographies,
+%
+% |\sfcode`\.=1000\relax| --
+% Causes a `.' (period) not to produce an end-of-sentence space.
+%
+% The implementation of this environment is based on the generic
+% list environment. It uses the \Lcount{enumiv} counter internally
+% to generate the labels of the list.
+%
+% When an empty `thebibliography' environment is found, a warning
+% is issued.
+%
+% \begin{macrocode}
+\newenvironment{thebibliography}[1]
+ {\chapter*{\bibname
+ \@mkboth{\uppercase{\bibname}}%
+ {\uppercase{\bibname}}}%
+ \list{\@biblabel{\arabic{enumiv}}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \if@openbib
+ \advance\leftmargin\bibindent
+ \itemindent -\bibindent
+ \listparindent \itemindent
+ \parsep \z@
+ \fi
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\arabic{enumiv}}}%
+ \if@openbib
+ \renewcommand\newblock{\par}
+ \else
+ \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
+ \fi
+ \sloppy\clubpenalty4000\widowpenalty4000%
+ \sfcode`\.=\@m}
+ {\def\@noitemerr{\@warning{Empty `thebibliography' environment}}%
+ \endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\@biblabel}
+% The label for a |\bibitem[...]| command is produced by this
+% macro. The default from \file{latex.dtx} is used.
+% \begin{macrocode}
+% \renewcommand\@biblabel[1]{[#1]\hfill}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@cite}
+% The output of the |\cite| command is produced by this macro. The
+% default from \file{latex.dtx} is used.
+% \begin{macrocode}
+% \renewcommand\@cite[1]{[#1]}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{The index}
+%
+% \begin{environment}{theindex}
+% The environment `theindex' can be used for indices. It makes an
+% index with two columns, with each entry a seperate paragraph. At
+% the user level the commands |\item|, |\subitem| and |\subsubitem|
+% are used to produce index entries of various levels. When a new
+% letter of the alphabet is encountered an amount of |\indexspace|
+% white space can be added.
+%
+% \begin{macrocode}
+\newenvironment{theindex}
+ {\if@twocolumn
+ \@restonecolfalse
+ \else
+ \@restonecoltrue
+ \fi
+ \columnseprule \z@
+ \columnsep 35\p@
+ \twocolumn[\@makeschapterhead{\indexname}]%
+ \@mkboth{\uppercase{\indexname}}%
+ {\uppercase{\indexname}}%
+ \thispagestyle{plain}\parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \let\item\@idxitem}
+% \end{macrocode}
+% When the document continues after the index and it was a one
+% column document we have to switch back to one column after the
+% index.
+% \begin{macrocode}
+ {\if@restonecol\onecolumn\else\clearpage\fi}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\@idxitem}
+% \begin{macro}{\subitem}
+% \begin{macro}{\subsubitem}
+% Thsee macros are used to format the entries in the index. ^^AA ???
+% \begin{macrocode}
+\newcommand\@idxitem {\par\hangindent 40\p@}
+\newcommand\subitem {\par\hangindent 40\p@ \hspace*{20\p@}}
+\newcommand\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\indexspace}
+% The amount of white space that is inserted between `letter
+% blocks' in the index.
+% \begin{macrocode}
+\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Footnotes}
+%
+% \begin{macro}{\footnoterule}
+% Usually, footnotes are separated from the main body of the text
+% by a small rule. This rule is drawn by the macro |\footnoterule|.
+% We have to make sure that the rule takes no vertical space (see
+% \file{plain.tex}) so we compensate for the natural heigth of the
+% rule of 0.4pt by adding the right amount of vertical skip.
+%
+% To prevent the rule from colliding with the footnote we first add
+% a little negative vertical skip, then we put the rule and add
+% some positive vertical skip.
+% \begin{macrocode}
+\renewcommand\footnoterule{%
+ \kern-3\p@
+ \kern.5\baselineskip
+ \hrule\@width\unitindent
+ \kern.4\baselineskip
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@footnote}
+% Footnotes are numbered within chapters.
+% \begin{macrocode}
+% \newcounter{footnote}
+\@addtoreset{footnote}{chapter}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makefntext}
+% The footnote mechanism of \LaTeX{} calls the macro |\@makefntext|
+% to produce the actual footnote. The macro gets the text of the
+% footnote as its argument and should use |\@thefnmark| as the mark
+% of the footnote. The macro |\@makefntext|is called when
+% effectively inside a |\parbox| of width |\columnwidth| (i.e.,
+% with |\hsize| = |\columnwidth|).
+%
+% An example of what can be achieved is given by the following piece
+% of \TeX\ code.
+% \begin{verbatim}
+% \long\def\@xmakefntext#1#2{%
+% %<-type3> \parindent=.5\unitindent
+% %<+type3> \parindent=\z@\parskip=.5\baselineskip
+% \def\labelitemi{--}\@revlabeltrue
+% {\setbox0=\hbox {#1\hskip.5em plus 1fil}%
+% \dimen0=2\wd0
+% \ifdim\dimen0>\unitindent
+% \global\unitindent=\dimen0
+% \@indentset
+% \fi}%
+% \@setpar{\@@par
+% \@tempdima \hsize
+% \advance\@tempdima-.5\unitindent
+% \parshape \@ne .5\unitindent \@tempdima}%
+% \par
+% \noindent\llap{\hbox to .5\unitindent{#1\hfil}}#2}
+% \end{verbatim}
+% The effect of this definition is that all lines of the footnote
+% are indented by 10pt, while the first line of a new paragraph is
+% indented by 1em. To change these dimensions, just substitute the
+% desired value for `10pt' (in both places) or `1em'. The mark is
+% flushright against the footnote.
+%
+% In these document classes we use a simpler macro, in which the
+% footnote text is set like an ordinary text paragraph, with no
+% indentation except on the first line of the footnote. Thus, all
+% the macro must do is set |\parindent| to the appropriate value
+% for succeeding paragraphs and put the proper indentation before
+% the mark. We change the label of itemized lists inside footnotes
+% and need to check that the |\unitindent| is large enough for our
+% purposes.
+%
+% For most of the document classes produced from this file we need
+% a slightly modified |\@makefntext| on the title page, so we
+% introduce an extra macro, |\@xmakefntext|.
+% \begin{macrocode}
+\def\@makefntext{\@xmakefntext{$\m@th\@thefnmark$.}}
+\long\def\@xmakefntext#1{%
+ \parindent\z@
+ \def\labelitemi{--}\@revlabeltrue
+ {\setbox0=\hbox {#1\hskip.5em plus 1fil}
+ \dimen0=2\wd0\relax
+ \ifdim\dimen0>\unitindent
+ \global\unitindent=\dimen0\relax
+ \@indentset
+ \fi}
+ \leavevmode\hbox to .5\unitindent{#1\hfil}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makefnmark}
+% The footnote markers that are printed in the text to point to the
+% footnotes should be produced by the macro |\@makefnmark|. We use
+% the default definition for it.
+% \begin{macrocode}
+%\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Initialization}
+%
+% \subsection{Words}
+%
+% \begin{macro}{\contentsname}
+% \begin{macro}{\listfigurename}
+% \begin{macro}{\listtablename}
+% \begin{macro}{\refname}
+% \begin{macro}{\bibname}
+% \begin{macro}{\indexname}
+% \begin{macro}{\figurename}
+% \begin{macro}{\tablename}
+% \begin{macro}{\partname}
+% \begin{macro}{\chaptername}
+% \begin{macro}{\appendixname}
+% \begin{macro}{\abstractname}
+% \begin{macro}{\seename}
+% \begin{macro}{\andname}
+% This document class is for documents prepared in the English language.
+% To prepare a version for another language, various English words must
+% be replaced. All the English words that require replacement are
+% defined below in command names.
+%
+% \begin{macrocode}
+\newcommand\contentsname{Contents}
+\newcommand\listfigurename{List of Figures}
+\newcommand\listtablename{List of Tables}
+\newcommand\bibname{Bibliography}
+\newcommand\indexname{Index}
+\newcommand\figurename{Figure}
+\newcommand\tablename{Table}
+\newcommand\partname{Part}
+\newcommand\chaptername{Chapter}
+\newcommand\appendixname{Appendix}
+\newcommand\abstractname{Abstract}
+\newcommand\seename{see}
+\newcommand\andname{and}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Date}
+%
+% \begin{macro}{\today}
+% This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
+% to provide the date of the \LaTeX-run.
+% \begin{macrocode}
+\newcommand\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Two column mode}
+%
+% \begin{macro}{\columnsep}
+% This gives the distance between two columns in two column mode.
+% \begin{macrocode}
+\setlength\columnsep{10\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\columnseprule}
+% This gives the width of the rule between two columns in two
+% column mode. We have no visible rule.
+% \begin{macrocode}
+\setlength\columnseprule{0\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{The page style}
+%
+% We have \pstyle{plain} pages unless the user specified
+% otherwise. We use arabic pagenumbers.
+% \begin{macrocode}
+\pagestyle{plain}
+\pagenumbering{arabic} % Arabic page numbers
+% \end{macrocode}
+%
+% When the \Lopt{twocolumn} option was specified we call
+% |\twocolumn| to activate this mode. We try to make each column as
+% long as the others, but call |sloppy| to make our life easier.
+% \begin{macrocode}
+\if@twocolumn
+ \twocolumn
+ \sloppy
+ \flushbottom
+% \end{macrocode}
+% Normally we call |\onecolumn| to initiate typesetting in one
+% column.
+% \begin{macrocode}
+\else
+ \onecolumn
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\frenchspacing}
+% Controls the amount of space after a punctuation mark.
+% \begin{macrocode}
+\frenchspacing
+%</class>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
+%