From f9cec0269e223cd3048e427f1d6e4ad0247521cb Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Wed, 11 Jan 2006 23:55:39 +0000
Subject: trunk/Master/texmf-dist/source/latex/ntgclass

git-svn-id: svn://tug.org/texlive/trunk@418 c570f23f-e606-0410-a88d-b1316a301751
---
 .../texmf-dist/source/latex/ntgclass/ntgclass.dtx  | 5273 ++++++++++++++++++++
 1 file changed, 5273 insertions(+)
 create mode 100644 Master/texmf-dist/source/latex/ntgclass/ntgclass.dtx

(limited to 'Master/texmf-dist/source/latex/ntgclass/ntgclass.dtx')

diff --git a/Master/texmf-dist/source/latex/ntgclass/ntgclass.dtx b/Master/texmf-dist/source/latex/ntgclass/ntgclass.dtx
new file mode 100644
index 00000000000..53b1064b112
--- /dev/null
+++ b/Master/texmf-dist/source/latex/ntgclass/ntgclass.dtx
@@ -0,0 +1,5273 @@
+% \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         \~}
+%
+% \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]
+%    \end{macrocode}
+%
+%    Announce the Class name and its version:
+%    \begin{macrocode}
+%<*artikel>
+%<type1>\ProvidesClass{artikel1}%
+%<type2>\ProvidesClass{artikel2}%
+%<type3>\ProvidesClass{artikel3}%
+%</artikel>
+%<*rapport>
+%<type1>\ProvidesClass{rapport1}%
+%<type3>\ProvidesClass{rapport3}%
+%</rapport>
+%<*boek>
+%<type1>\ProvidesClass{boek}%
+%<type3>\ProvidesClass{boek3}%
+%</boek>
+%<10pt>\ProvidesFile{ntg10.clo}
+%<11pt>\ProvidesFile{ntg11.clo}
+%<12pt>\ProvidesFile{ntg12.clo}
+%<*driver>
+\ProvidesFile{ntgclass.drv}
+%</driver>
+              [2004/06/07 v2.1a
+%<artikel|rapport|boek>       NTG LaTeX document class]
+%<10pt|11pt|12pt>             NTG LaTeX file (size option)]
+%    \end{macrocode}
+% \changes{v2.0e}{1994/03/20}{removed the typeout statements they are
+%    no longer needed separately}
+% 
+% \section{The documentation driver file}
+%
+%    We use the document class provided by the \LaTeXe distribution
+%    for producing the documentation.
+% \changes{v2.0e}{1994/03/20}{moved the driver code in order not to
+%    need a separate driver}
+%    \begin{macrocode}
+%<*driver>
+]
+\documentclass{ltxdoc}
+%    \end{macrocode}
+%
+%    We don't want everything to appear in the index
+%    \begin{macrocode}
+\DoNotIndex{\',\.,\@M,\@@input,\@Alph,\@alph,\@addtoreset,\@arabic}
+\DoNotIndex{\@badmath,\@centercr,\@cite}
+\DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
+\DoNotIndex{\@input,\@ixpt,\@m,\@minus,\@mkboth}
+\DoNotIndex{\@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}
+\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily}
+\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@}
+%    \end{macrocode}
+%    We do want an index, using linenumbers
+% \changes{v2.0t}{1996/03/31}{Added \cs{CodelineIndex} to make sure a
+%    \texttt{.idx} file is produced}
+%    \begin{macrocode}
+\EnableCrossrefs
+\CodelineIndex
+%    \end{macrocode}
+%    We use so many \file{docstrip} modules that we set the
+%    \texttt{StandardModuleDepth} counter to 1.
+%    \begin{macrocode}
+\setcounter{StandardModuleDepth}{1}
+%    \end{macrocode}
+%    The following command retrieves the date and version information
+%    from the file.
+%    \begin{macrocode}
+\GetFileInfo{ntgclass.drv}
+%    \end{macrocode}
+%    Some commonly used abbreviations
+%    \begin{macrocode}
+\newcommand*\Lopt[1]{\textsf {#1}}
+\newcommand*\file[1]{\texttt {#1}}
+\newcommand*\Lcount[1]{\textsl {\small#1}}
+\newcommand*\pstyle[1]{\textsl {#1}}
+\newcommand*\Lenv[1]{\textsf {#1}}
+%    \end{macrocode}
+%    We also want the full details.
+%    \begin{macrocode}
+\begin{document}
+\DocInput{ntgclass.dtx}
+\PrintIndex
+% ^^A\PrintChanges
+\end{document}
+%</driver>
+%    \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}
+% \changes{v2.0f}{1994/04/18}{Sync'ed with classes.dtx}
+% \changes{v2.0g}{1994/06/01}{Moved the identification section up
+%    front; removed the use of \cs{fileversion} c.s.}
+% \changes{v2.0g}{1994/06/01}{Added the 'v' to \cs{changes}}
+% \changes{v2.0m}{1994/12/20}{Use \cs{newcommand*} instead of
+%    \cs{newcommand} in most places}
+% \changes{v2.0m}{1994/12/23}{Made the oneside option work for the
+%    book class}
+% \changes{v2.0p}{1995/08/09}{Use \cs{cs} instead of \cs{cmd} in
+%    \cs{changes} entries}
+% \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}
+%
+% \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
+% }
+% \date{\filedate}
+%
+% \maketitle
+% \tableofcontents
+%
+% \StopEventually{}    ^^A 
+%
+% \section{Introduction}
+%
+%    This file contains the set of document classes that were made
+%    available by Working Group 13 of the NTG (Nederlandstalige \TeX\
+%    Gebruikersgroep). They are compatible with the standard \LaTeX2e
+%    document classes, but implement different layouts.
+%
+% \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}
+%   artikel & produce the documentclasses artikel?\\
+%   rapport & produce the documentclasses rapport?\\
+%   10pt    & produce the class option for 10pt\\
+%   11pt    & produce the class option for 11pt\\
+%   12pt    & produce the class option for 12pt\\
+%   boek    & produce the documentclasses boek?\\
+%   type1   & produce the `1' variants of the classes\\
+%   type2   & produce the `2' 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}
+%<*artikel|rapport|boek>
+\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.  For the
+%    artikel document class the default is not to make a seperate
+%    titlepage.
+%    \begin{macrocode}
+\newif\if@titlepage
+%<artikel>\@titlepagefalse
+%<!artikel>\@titlepagetrue
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@openright}
+% \changes{v2.0f}{1994/04/18}{Macro added}
+%    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}
+%<!artikel>\newif\if@openright
+%    \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.0r}{1995/10/05}{Macro \cs{if@openbib} removed}
+%
+% \begin{macro}{\if@mainmatter}
+% \changes{v2.0m}{1994/12/23}{Moved the allocation of
+%    \cs{if@mainmatter} here}
+%
+%    The switch |\if@mainmatter|, only available in the document class
+%    book, indicates whether we are processing the main material in
+%    the book.
+%    \begin{macrocode}
+%<boek>\newif\if@mainmatter \@mainmattertrue
+%    \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{macrocode}
+% \end{macro}
+%
+%  \begin{macro}{\if@titlecentered}
+%    In the document classes \file{artikel3} and \file{rapport3} 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.
+% \changes{v1.0.7}{1993/12/09}{Removed typo, A4 is not 279 mm high}
+%    \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 wont 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}
+% \changes{v2.0f}{1994/04/18}{Option openright and openany added}
+%    This option determines whether or not a chapter must start on
+%    a right-hand page 
+%    request one.
+%    \begin{macrocode}
+%<!artikel>\DeclareOption{openright}{\@openrighttrue}
+%<!artikel>\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 the \file{rapport} and \file{boek} document styles the
+%    titlepage uses all capital letters. The option \Lopt{mctitle}
+%    (for `mixed case') prevents this. 
+%    \begin{macrocode}
+%<rapport|boek>\DeclareOption{mctitle}{\@allcapsfalse}
+%<rapport|boek>\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. It loads code which is generated
+%    automatically from the kernel files when the format is built.
+%    If the equation number does get a special formatting then instead
+%    of using the kernel file the class would need to provide the code
+%    explicitly.
+%    \begin{macrocode}
+\DeclareOption{leqno}{\input{leqno.clo}}
+%    \end{macrocode}
+%
+%  \subsection{Flush left displays}
+%
+%    The option \Lopt{fleqn} redefines the displayed math environments
+%    in such a way that they come out flush left, with an indentation
+%    of |\mathindent| from the prevailing left margin. It loads code
+%    which is generated automatically from the kernel files when the
+%    format is built.
+% \changes{v1.0.8}{1993/12/18}{Corrected some typos.  ASAJ.}
+%    \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|.
+% \changes{v2.0r}{1995/10/05}{openbib option reimplemented}
+%    \begin{macrocode}
+\DeclareOption{openbib}{%
+%    \end{macrocode}
+%    First some hook into the bibliography environment is filled.
+%    \begin{macrocode}
+ \AtEndOfPackage{%
+   \renewcommand\@openbib@code{%
+     \advance\leftmargin\bibindent
+     \itemindent -\bibindent
+     \listparindent \itemindent
+     \parsep \z@
+     }%
+%    \end{macrocode}
+%    In addition the definition of |\newblock| is overwritten.
+%    \begin{macrocode}
+   \renewcommand\newblock{\par}}%
+}
+%    \end{macrocode}
+%
+% \section{Executing Options}
+%
+%    Here we execute the default options to initialize certain
+%    variables. Note that the document class `boek' always uses two
+%    sided printing.
+%    \begin{macrocode}
+%<*artikel>
+\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,uctitle}
+%</artikel>
+%<*rapport>
+\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,uctitle,openany}
+%</rapport>
+%<*boek>
+\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,uctitle,openright}
+%</boek>
+%    \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}
+%</artikel|rapport|boek>
+%    \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{Fonts}
+%
+%    \LaTeX\ offers the user commands to change the size of the font,
+%    relative to the `main' size. Each relative size changing command
+%    |\size| executes the command
+%    |\@setfontsize||\size|\meta{font-size}\meta{baselineskip} where:
+%
+%    \begin{description}
+%    \item[\meta{font-size}] The absolute size of the font to use from
+%        now on.
+%
+%    \item[\meta{baselineskip}] The normal value of |\baselineskip|
+%        for the size of the font selected. (The actual value will be
+%        |\baselinestretch| * \meta{baselineskip}.)
+%    \end{description}
+%
+%    A number of commands, defined in the \LaTeX{} kernel, shorten the
+%    following  definitions and are used throughout. They are:
+% \begin{center}
+% \begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
+%  \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\
+%  \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\
+%  \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\
+%  ...
+%  \end{tabular}
+%  \end{center}
+%
+% \begin{macro}{\normalsize}
+% \begin{macro}{\@normalsize}
+% \changes{v2.0b}{1994/02/02}{\cs{@normalsize} now defined in the
+%    kernel}
+%
+%    The user level command for the main size is |\normalsize|.
+%    Internally \LaTeX{} uses |\@normalsize| when it refers to the
+%    main size. |\@normalsize| will be defined to work like
+%    |\normalsize| if the latter is redefined from its default
+%    definition (that just issues an error message). Otherwise
+%    |\@normalsize| simply selects a 10pt/12pt size.
+%
+%    The |\normalsize| macro also sets new values for\\
+%    |\abovedisplayskip|, |\abovedisplayshortskip| and
+%
+% \changes{v1.0.5}{1993/12/07}{\cs{normalsize} doesn't exist, so use
+%    \cs{newcommand}}
+% \changes{v1.0.8}{1993/12/18}{\cs{normalsize} is now defined in the
+%    kernel, so use \cs{renewcommand}.  ASAJ.}
+%    \begin{macrocode}
+%<*10pt|11pt|12pt>
+\renewcommand\normalsize{%
+%<*10pt>
+   \@setfontsize\normalsize\@xpt\@xiipt
+   \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+   \abovedisplayshortskip \z@ \@plus3\p@
+   \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+%</10pt>
+%<*11pt>
+   \@setfontsize\normalsize\@xipt{13.6}%
+   \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
+   \abovedisplayshortskip \z@ \@plus3\p@
+   \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
+%</11pt>
+%<*12pt>
+   \@setfontsize\normalsize\@xiipt{14.5}%
+   \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
+   \abovedisplayshortskip \z@ \@plus3\p@
+   \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
+%</12pt>
+%    \end{macrocode}
+%    The |\belowdisplayskip| is always equal to the
+%    |\abovedisplayskip|. The parameters of the first level list are
+%    always given by |\@listI|.
+%    \begin{macrocode}
+   \belowdisplayskip \abovedisplayskip
+   \let\@listi\@listI}
+%    \end{macrocode}
+%    Make |\@normalsize| a synonymn for |\normalsize|.
+%    \begin{macrocode}
+\let\@normalsize\normalsize
+%    \end{macrocode}
+%
+%    We initially choose the normalsize font.
+%    \begin{macrocode}
+\normalsize
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\small}
+% \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|.
+%    \begin{macrocode}
+\newcommand*\small{%
+%<*10pt>
+   \@setfontsize\small\@ixpt{11}%
+   \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
+   \abovedisplayshortskip \z@ \@plus2\p@
+   \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+%</10pt>
+%<*11pt>
+   \@setfontsize\small\@xpt\@xiipt
+   \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+   \abovedisplayshortskip \z@ \@plus3\p@
+   \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+%</11pt>
+%<*12pt>
+   \@setfontsize\small\@xipt{13.6}%
+   \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
+   \abovedisplayshortskip \z@ \@plus3\p@
+   \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
+%</12pt>
+   \belowdisplayskip \abovedisplayskip
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\footnotesize}
+% \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|.
+%    \begin{macrocode}
+\newcommand*\footnotesize{%
+%<*10pt>
+   \@setfontsize\footnotesize\@viiipt{9.5}%
+   \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
+   \abovedisplayshortskip \z@ \@plus\p@
+   \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+%</10pt>
+%<*11pt>
+   \@setfontsize\footnotesize\@ixpt{11}%
+   \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@
+   \abovedisplayshortskip \z@ \@plus\p@
+   \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+%</11pt>
+%<*12pt>
+   \@setfontsize\footnotesize\@xpt\@xiipt
+   \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+   \abovedisplayshortskip \z@ \@plus3\p@
+   \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+%</12pt>
+   \belowdisplayskip \abovedisplayskip
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scriptsize}
+% \begin{macro}{\tiny}
+% \begin{macro}{\large}
+% \begin{macro}{\Large}
+% \begin{macro}{\LARGE}
+% \begin{macro}{\huge}
+% \begin{macro}{\Huge}
+% \changes{v2.0f}{1994/04/18}{Use \cs{newcommand} instead of
+%    \cs{renewcommand} because of change in the \LaTeX kernel}
+%    These are all much simpler than the previous macros, they just
+%    select a new fontsize, but leave the parameters for displays and
+%    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}}
+%</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}}
+%</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}}
+\let\Huge=\huge
+%</12pt>
+%</10pt|11pt|12pt>
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \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}
+%<*artikel|rapport|boek>
+\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 \emph{not} stretch the baselines. Note that if this command
+%    doesn't resolve to ``empty'' any \texttt{plus} or \texttt{minus}
+%    part in the specification of |\baselineskip| is ignored.
+%    \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}
+%<*type1|type3>
+{\setbox0\hbox{\normalsize\rmfamily 2.2.2\hskip.5em}
+ \global\unitindent=\wd0}
+%</type1|type3>
+%    \end{macrocode}
+%
+% \begin{macro}{\othermargin}
+%    Other indentations are maximal label width plus white space.
+% \changes{v2.0l}{1994/07/11}{\cs{othermargin} is also used in type2
+%    document classes; changed docstrip guards accordingly}
+%    \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}
+%<*type1|type3>
+\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}
+%</type1|type3>
+%    \end{macrocode}
+%
+%    In the document class \file{artikel2} the width of |\unitindent|
+%    is fixed and related to |\othermargin|.
+%    \begin{macrocode}
+%<type2>\unitindent=2\othermargin
+%    \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
+%</artikel|rapport|boek>
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Page Layout}
+%
+%    All margin dimensions are measured from a point one inch from the
+%    top and lefthand side of the page.
+%
+% \subsubsection{Vertical spacing}
+%
+% \begin{macro}{\headheight}
+% \begin{macro}{\headsep}
+% \begin{macro}{\topskip}
+%    The |\headheight| is the height of the box that will contain the
+%    running head. The |\headsep| is the distance between the bottom
+%    of the running head and the top of the text. |\topskip| is the
+%    |\baselineskip| for the first line on a page.
+%    \begin{macrocode}
+%<*10pt|11pt|12pt>
+\setlength\headheight{12\p@}
+\setlength\headsep   {25\p@}
+%<10pt>\setlength\topskip   {10\p@}
+%<11pt>\setlength\topskip   {11\p@}
+%<12pt>\setlength\topskip   {12\p@}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\footskip}
+%    The distance from the baseline of the box which contains the
+%    running footer to the baseline of last line of text is controlled
+%    by the |\footskip|.
+%    Bottom of page:
+%    \begin{macrocode}
+\setlength\footskip{30\p@}   %
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maxdepth}
+% \changes{v2.0r}{1995/10/05}{Added setting of \cs{maxdepth}}
+%    The \TeX\ primitive register |\maxdepth| has a function that is
+%    similar to that of |\topskip|. The register |\@maxdepth| should
+%    always contain a copy of |\maxdepth|. In both plain \TeX\ and
+%    \LaTeX~2.09 |\maxdepth| had a fixed value of \texttt{4pt}; in
+%    native \LaTeX2e\ mode we let the value depend on the typesize. We
+%    set it so that |\maxdepth| $+$ |\topskip| $=$ typesize $\times
+%    1.5$. As it happens, in these classes |\topskip| is equal to the
+%    typesize, therefor we set |\maxdepth| to half the value of
+%    |\topskip|.
+%    \begin{macrocode}
+\if@compatibility 
+  \setlength\maxdepth{4\p@}
+\else
+  \setlength\maxdepth{.5\topskip}
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{The dimension of text}
+%
+% \begin{macro}{\textwidth}
+%    When we are in compatibility mode we have to make sure that the
+%    dimensions of the printed area are not different from what the
+%    user was used to see.
+%
+%    \begin{macrocode}
+\if@compatibility
+  \if@twocolumn
+    \setlength\textwidth{410\p@}
+  \else
+%<10pt>    \setlength\textwidth{345\p@}
+%<11pt>    \setlength\textwidth{360\p@}
+%<12pt>    \setlength\textwidth{390\p@}
+  \fi
+%    \end{macrocode}
+%    When we are not in compatibility mode we can set some of the
+%    dimensions differently, taking into account the paper size for
+%    instance.
+%    \begin{macrocode}
+\else
+%    \end{macrocode}
+%    First, we calculate the maximum textwidth, which will we will
+%    allow on the selected paper and store it in |\@tempdima|. Then we
+%    store the length of a line with approximately 60 -- 70 characters
+%    in |\@tempdimb|. The values given are taken from the file
+%    \texttt{a4.sty} by Johannes Braams and Nico Poppelier and are
+%    more or less suitable when Computer Modern fonts are used.
+%    \begin{macrocode}
+  \setlength\@tempdima{\paperwidth}
+  \addtolength\@tempdima{-2in}
+%<10pt>  \setlength\@tempdimb{361\p@}
+%<11pt>  \setlength\@tempdimb{376\p@}
+%<12pt>  \setlength\@tempdimb{412\p@}
+%    \end{macrocode}
+%
+%    Now we can set the |\textwidth|, depending on whether we will be
+%    setting one or two columns.
+%
+%    In two column mode each \emph{column} shouldn't be wider than
+%    |\@tempdimb| (which could happen on \textsc{a3} paper for
+%    instance).
+%    \begin{macrocode}
+  \if@twocolumn
+    \ifdim\@tempdima>2\@tempdimb\relax
+      \setlength\textwidth{2\@tempdimb}
+    \else
+      \setlength\textwidth{\@tempdima}
+    \fi
+%    \end{macrocode}
+
+%    In one column mode the text should not be wider than the minimum
+%    of the paperwidth (minus 2 inches for the margins) and the
+%    maximum length of a line as defined by the number of characters.
+%    \begin{macrocode}
+  \else
+    \ifdim\@tempdima>\@tempdimb\relax
+      \setlength\textwidth{\@tempdimb}
+    \else
+      \setlength\textwidth{\@tempdima}
+    \fi
+  \fi
+\fi
+%    \end{macrocode}
+%
+%    Here we modify the width of the text a little to be a whole
+%    number of points.
+%    \begin{macrocode}
+\if@compatibility
+\else
+  \@settopoint\textwidth
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textheight}
+%    Now that we have computed the width of the text, we have to take
+%    care of the height. The |\textheight| is the height of text
+%    (including footnotes and figures, excluding running head and
+%    foot).
+%
+%    First make sure that the compatibility mode gets the same
+%    dimensions as we had with \LaTeX2.09. The number of lines was
+%    calculated as the floor of the old |\textheight| minus
+%    |\topskip|, divided by |\baselineskip| for |\normalsize|. The
+%    old value of |\textheight| was 528pt.
+%
+%    \begin{macrocode}
+\if@compatibility
+%<10pt>  \setlength\textheight{43\baselineskip}
+%<11pt>  \setlength\textheight{38\baselineskip}
+%<12pt>  \setlength\textheight{36\baselineskip}
+%    \end{macrocode}
+%
+%    Again we compute this, depending on the papersize and depending
+%    on the baselineskip that is used, in order to have a whole number
+%    of lines on the page.
+%    \begin{macrocode}
+\else
+  \setlength\@tempdima{\paperheight}
+%    \end{macrocode}
+%
+%    We leave at least a 1 inch margin on the top and the bottom of
+%    the page.
+%    \begin{macrocode}
+  \addtolength\@tempdima{-2in}
+%    \end{macrocode}
+%
+%    We also have to leave room for the running headers and footers.
+%    \begin{macrocode}
+  \addtolength\@tempdima{-1.5in}
+%    \end{macrocode}
+%
+%    Then we divide the result by the current |\baselineskip| and
+%    store this in the count register |\@tempcnta|, which then
+%    contains the number of lines that fit on this page.
+%    \begin{macrocode}
+  \divide\@tempdima\baselineskip
+  \@tempcnta=\@tempdima
+%    \end{macrocode}
+%
+%    From this we can calculate the height of the text.
+%    \begin{macrocode}
+  \setlength\textheight{\@tempcnta\baselineskip}
+\fi
+%    \end{macrocode}
+%
+%    The first line on the page has a height of |\topskip|.
+%    \begin{macrocode}
+\advance\textheight by \topskip
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Margins}
+%
+%    Most of the values of these parameters are now calculated, based
+%    on the papersize in use. In the calculations the |\marginparsep|
+%    needs to be taken into account so we give it its value first.
+%
+% \begin{macro}{\marginparsep}
+% \begin{macro}{\marginparpush}
+%    The horizontal space between the main text and marginal notes is
+%    determined by |\marginparsep|, the minimum vertical separation
+%    between two marginal notes is controlled by |\marginparpush|.
+%    \begin{macrocode}
+\if@twocolumn
+ \setlength\marginparsep {10\p@}
+\else
+%<10pt>  \setlength\marginparsep{11\p@}
+%<11pt>  \setlength\marginparsep{10\p@}
+%<12pt>  \setlength\marginparsep{10\p@}
+\fi
+%<10pt|11pt>\setlength\marginparpush{5\p@}
+%<12pt>\setlength\marginparpush{7\p@}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%    Now we can give the values for the other margin parameters. For
+%    native \LaTeXe, these are calculated.
+% \begin{macro}{\oddsidemargin}
+% \begin{macro}{\evensidemargin}
+% \begin{macro}{\marginparwidth}
+%    First we give the values for the compatibility mode.
+%
+%    Values for two-sided printing:
+%    \begin{macrocode}
+\if@compatibility
+  \if@twoside
+%<10pt>     \setlength\oddsidemargin   {44\p@}
+%<11pt>     \setlength\oddsidemargin   {36\p@}
+%<12pt>     \setlength\oddsidemargin   {21\p@}
+%<10pt>     \setlength\evensidemargin  {82\p@}
+%<11pt>     \setlength\evensidemargin  {74\p@}
+%<12pt>     \setlength\evensidemargin  {59\p@}
+%<10pt>     \setlength\marginparwidth {107\p@}
+%<11pt>     \setlength\marginparwidth {100\p@}
+%<12pt>     \setlength\marginparwidth {85\p@}
+%    \end{macrocode}
+%    Values for one-sided printing:
+%    \begin{macrocode}
+  \else
+%<10pt>     \setlength\oddsidemargin   {63\p@}
+%<11pt>     \setlength\oddsidemargin   {54\p@}
+%<12pt>     \setlength\oddsidemargin   {39.5\p@}
+%<10pt>     \setlength\evensidemargin  {63\p@}
+%<11pt>     \setlength\evensidemargin  {54\p@}
+%<12pt>     \setlength\evensidemargin  {39.5\p@}
+%<10pt>     \setlength\marginparwidth  {90\p@}
+%<11pt>     \setlength\marginparwidth  {83\p@}
+%<12pt>     \setlength\marginparwidth  {68\p@}
+  \fi
+%    \end{macrocode}
+%    And values for two column mode:
+%    \begin{macrocode}
+  \if@twocolumn
+     \setlength\oddsidemargin  {30\p@}
+     \setlength\evensidemargin {30\p@}
+     \setlength\marginparwidth {48\p@}
+  \fi
+%    \end{macrocode}
+%
+%    When we are not in compatibility mode we can take the dimensions
+%    of the selected paper into account.
+%
+%    The values for |\oddsidemargin| and |\marginparwidth| will be set
+%    depending on the status of the |\if@twoside|.
+%
+%    If |@twoside| is true (which is always the case for boek) we make
+%    the inner margin smaller than the outer one.
+% \changes{v2.0f}{1994/04/18}{New algorithm for \cs{oddsidemargin}}
+%    \begin{macrocode}
+\else
+  \if@twoside
+    \setlength\@tempdima        {\paperwidth}
+    \addtolength\@tempdima      {-\textwidth}
+    \setlength\oddsidemargin    {.4\@tempdima}
+    \addtolength\oddsidemargin  {-1in}
+%    \end{macrocode}
+%    The width of the margin for text is set to the remainder of the
+%    width except for a `real margin' of white space of width 0.4in.
+%    A check should perhaps be built in to ensure that the (text)
+%    margin width does not get too small!
+%    
+% \changes{v2.0f}{1994/04/18}{New algorithm for \cs{marginparwidth}}
+% \changes{v2.0p}{1995/08/09}{Also take \cs{marginparsep} into account
+%    here}
+%    \begin{macrocode}
+    \setlength\marginparwidth   {.6\@tempdima}
+    \addtolength\marginparwidth {-\marginparsep}
+    \addtolength\marginparwidth {-0.4in}
+%    \end{macrocode}
+%    For one-sided printing we center the text on the page, by
+%    calculating the difference between |textwidth| and
+%    |\paperwidth|. Half of that difference is than used for
+%    the margin (thus |\oddsidemargin| is |1in| less). 
+%    \begin{macrocode}
+  \else
+    \setlength\@tempdima        {\paperwidth}
+    \addtolength\@tempdima      {-\textwidth}
+    \setlength\oddsidemargin    {.5\@tempdima}
+    \addtolength\oddsidemargin  {-1in}
+    \setlength\marginparwidth   {.5\@tempdima}
+    \addtolength\marginparwidth {-\marginparsep}
+    \addtolength\marginparwidth {-.4in}
+  \fi
+%    \end{macrocode}
+%    With the above algorithm the |\marginparwidth| can come out quite
+%    large which we may not want.
+%    \begin{macrocode}
+  \ifdim \marginparwidth >2in
+     \setlength\marginparwidth{2in}
+  \fi
+%    \end{macrocode}
+%    Having done these calculations we make them pt values.
+%    \begin{macrocode}
+  \@settopoint\oddsidemargin
+  \@settopoint\marginparwidth
+%    \end{macrocode}
+%
+%    The |\evensidemargin| can now be computed from the values set
+%    above.
+%    \begin{macrocode}
+  \setlength\evensidemargin  {\paperwidth}
+  \addtolength\evensidemargin{-2in}
+  \addtolength\evensidemargin{-\textwidth}
+  \addtolength\evensidemargin{-\oddsidemargin}
+%    \end{macrocode}
+%    Setting |\evensidemargin| to a full point value may produce a
+%    small error. However it will lie within the error range a
+%    doublesided printer of todays technology can accuratly print.
+%    \begin{macrocode}
+  \@settopoint\evensidemargin
+\fi
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\topmargin}
+%    The |\topmargin| is the distance between the top of `the
+%    printable area' ---which is 1 inch below the top of the paper---
+%    and the top of the box which contains the running head.
+%
+%    It can now be computed from the values set above.
+%    \begin{macrocode}
+\if@compatibility
+  \setlength\topmargin{27pt}
+\else
+  \setlength\topmargin{\paperheight}
+  \addtolength\topmargin{-2in}
+  \addtolength\topmargin{-\headheight}
+  \addtolength\topmargin{-\headsep}
+  \addtolength\topmargin{-\textheight}
+  \addtolength\topmargin{-\footskip}     % this might be wrong!
+%    \end{macrocode}
+%    By changing the factor in the next line the complete page
+%    can be shifted vertically.
+% \changes{v2.0m}{1994/07/13}{Moved rounding of \cs{topmargin} to
+%    native mode}
+%    \begin{macrocode}
+  \addtolength\topmargin{-.5\topmargin}
+  \@settopoint\topmargin
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Footnotes}
+%
+% \begin{macro}{\footnotesep}
+%    |\footnotesep| is the height of the strut placed at the beginning
+%    of every footnote. It equals the  height of a normal
+%    |\footnotesize| strut in this
+%    class, thus no extra space occurs between footnotes.
+%    \begin{macrocode}
+%<10pt>\setlength\footnotesep{6.65\p@}
+%<11pt>\setlength\footnotesep{7.7\p@}
+%<12pt>\setlength\footnotesep{8.4\p@}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\footins}
+%    |\skip\footins| is the space between the last line of the main
+%    text and the top of the first footnote.
+%    \begin{macrocode}
+%<10pt>\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
+%<11pt>\setlength{\skip\footins}{10\p@ \@plus 4\p@ \@minus 2\p@}
+%<12pt>\setlength{\skip\footins}{10.8\p@ \@plus 4\p@ \@minus 2\p@}
+%</10pt|11pt|12pt>
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Float placement parameters}
+%
+% All float parameters are given default values in the \LaTeXe{}
+% kernel. For this reason parameters that are not counters
+% need to be set with |\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}
+%<*artikel|rapport|boek>
+\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.
+%    \changes{v1.0.8}{1993/12/18}{Replaced \cs{newcommand} with
+%       \cs{renewcommand}.  ASAJ.}
+%    \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.
+%    \changes{v1.0.8}{1993/12/18}{Replaced \cs{newcommand} with
+%       \cs{renewcommand}.  ASAJ.}
+%    \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.
+%    \changes{v1.0.8}{1993/12/18}{Replaced \cs{newcommand} with
+%       \cs{renewcommand}.  ASAJ.}
+%    \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.
+%    \changes{v1.0.8}{1993/12/18}{Replaced \cs{newcommand} with
+%       \cs{renewcommand}.  ASAJ.}
+%    \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.
+%    \changes{v1.0.8}{1993/12/18}{Replaced \cs{newcommand} with
+%       \cs{renewcommand}.  ASAJ.}
+%    \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.
+%    \changes{v1.0.8}{1993/12/18}{Replaced \cs{newcommand} with
+%       \cs{renewcommand}.  ASAJ.}
+%    \begin{macrocode}
+\renewcommand\dblfloatpagefraction{.5}
+%</artikel|rapport|boek>
+%    \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Floats on a text page}
+%
+% \begin{macro}{\floatsep}
+% \begin{macro}{\textfloatsep}
+% \begin{macro}{\intextsep}
+%    When a floating object is placed on a page with text, these
+%    parameters control the seperation between the float and the other
+%    objects on the page. These parameters are used for both
+%    one-column mode and single-column floats in two-column mode.
+%
+%    |\floatsep| is the space between adjacent floats that are moved
+%    to the top or bottom of the text page.
+%
+%    |\textfloatsep| is the space between the main text and floats
+%    at the top or bottom of the page.
+%
+%    |\intextsep| is the space between in-text floats and the text.
+%    \begin{macrocode}
+%<*10pt>
+\setlength\floatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep   {12\p@ \@plus 2\p@ \@minus 2\p@}
+%</10pt>
+%<*11pt>
+\setlength\floatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep   {12\p@ \@plus 2\p@ \@minus 2\p@}
+%</11pt>
+%<*12pt>
+\setlength\floatsep    {12\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep   {14\p@ \@plus 4\p@ \@minus 4\p@}
+%</12pt>
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\dblfloatsep}
+% \begin{macro}{\dbltextfloatsep}
+%    When floating objects that span the whole |\textwidth| are placed
+%    on a text page when we are in twocolumn mode the separation
+%    between the float and the text is controlled by |\dblfloatsep|
+%    and |\dbltextfloatsep|.
+%
+%    |\dblfloatsep| is the space between adjacent floats that are moved
+%    to the top or bottom of the text page.
+%
+%    |\dbltextfloatsep| is the space between the main text and floats
+%    at the top or bottom of the page.
+%
+%    \begin{macrocode}
+%<*10pt>
+\setlength\dblfloatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+%</10pt>
+%<*11pt>
+\setlength\dblfloatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+%</11pt>
+%<*12pt>
+\setlength\dblfloatsep    {14\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+%</12pt>
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{Floats on their own page or column}
+%
+% \begin{macro}{\@fptop}
+% \begin{macro}{\@fpsep}
+% \begin{macro}{\@fpbot}
+%    When floating objects are placed on seperate pages the layout of
+%    such pages is controlled by these parameters. At the top of the
+%    page |\@fptop| amount of stretchable whitespace is inserted, at
+%    the bottom of the page we get an |\@fpbot| amount of stretchable
+%    whitespace. Between adjacent floats the |\@fpsep| is inserted.
+%
+%    These paramaters are used for the placement of floating objects
+%    in one column mode, or in single column floats in two column
+%    mode.
+%
+%    Note that at least one of the two parameters |\@fptop| and
+%    |\@fpbot| should contain a |plus ...fil| to allow filling the
+%    remaining empty space.
+%    \begin{macrocode}
+%<*10pt>
+\setlength\@fptop{0\p@ \@plus 1fil}
+\setlength\@fpsep{8\p@ \@plus 2fil}
+\setlength\@fpbot{0\p@ \@plus 1fil}
+%</10pt>
+%<*11pt>
+\setlength\@fptop{0\p@ \@plus 1fil}
+\setlength\@fpsep{8\p@ \@plus 2fil}
+\setlength\@fpbot{0\p@ \@plus 1fil}
+%</11pt>
+%<*12pt>
+\setlength\@fptop{0\p@ \@plus 1fil}
+\setlength\@fpsep{10\p@ \@plus 2fil}
+\setlength\@fpbot{0\p@ \@plus 1fil}
+%</12pt>
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@dblfptop}
+% \begin{macro}{\@dblfpsep}
+% \begin{macro}{\@dblfpbot}
+%    Double column floats in two column mode are handled with similar
+%    parameters.
+%    \begin{macrocode}
+%<*10pt>
+\setlength\@dblfptop{0\p@ \@plus 1fil}
+\setlength\@dblfpsep{8\p@ \@plus 2fil}
+\setlength\@dblfpbot{0\p@ \@plus 1fil}
+%</10pt>
+%<*11pt>
+\setlength\@dblfptop{0\p@ \@plus 1fil}
+\setlength\@dblfpsep{8\p@ \@plus 2fil}
+\setlength\@dblfpbot{0\p@ \@plus 1fil}
+%</11pt>
+%<*12pt>
+\setlength\@dblfptop{0\p@ \@plus 1fil}
+\setlength\@dblfpsep{10\p@ \@plus 2fil}
+\setlength\@dblfpbot{0\p@ \@plus 1fil}
+%</12pt>
+%<*artikel|rapport|boek>
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \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.
+%
+% \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}
+%
+%    For the artikel document classes we define |\sectionmark| to clear
+%    the right mark and put the number of the section (when it is
+%    numbered) and its title in the left mark. The rightmark is set by
+%    |\subsectionmark| to contain the subsection titles.
+%
+%    Note the use of |##1| for the parameter of the |\sectionmark|
+%    command, which will be defined when |\ps@headings| is executed.
+%
+% \changes{v2.0p}{1995/08/09}{Removed extra dot after \cs{thesection}
+%    (PR 1519)}
+% \changes{v2.0p}{1995/08/09}{Replace \cs{hskip} \texttt{1em}\cs{relax}
+%    with \cs{quad}}
+% \changes{v2.0p}{1995/08/10}{Use \cs{MakeUppercase} instead of
+%    \cs{uppercase}}
+%    \begin{macrocode}
+%<*artikel>
+      \def\sectionmark##1{%
+        \markboth {\MakeUppercase{%
+            \ifnum \c@secnumdepth >\z@
+              \thesection\quad
+            \fi
+            ##1}}{}}%
+      \def\subsectionmark##1{%
+        \markright {%
+          \ifnum \c@secnumdepth >\@ne
+            \thesubsection\quad
+          \fi
+          ##1}}}
+%</artikel>
+%    \end{macrocode}
+%
+%    In the rapport and boek document classes 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}
+%<*rapport|boek>
+      \def\chaptermark##1{%
+        \markboth {\MakeUppercase{\ifnum \c@secnumdepth >\m@ne
+%<boek>          \if@mainmatter
+              \@chapapp\ \thechapter. \ %
+%<boek>          \fi
+            \fi
+            ##1}}{}}%
+      \def\sectionmark##1{%
+        \markright {\MakeUppercase{\ifnum \c@secnumdepth >\z@
+            \thesection. \ \fi
+            ##1}}}}
+%</rapport|boek>
+%    \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}
+%<*artikel>
+    \def\sectionmark##1{%
+      \markright {\MakeUppercase{%
+          \ifnum \c@secnumdepth >\m@ne
+            \thesection\quad
+          \fi
+          ##1}}}}
+%</artikel>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<*rapport|boek>
+    \def\chaptermark##1{%
+      \markright {\MakeUppercase{%
+          \ifnum \c@secnumdepth >\m@ne
+%<boek>            \if@mainmatter
+              \@chapapp\ \thechapter. \ %
+%<boek>            \fi
+          \fi
+          ##1}}}}
+%</rapport|boek>
+\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
+%<!artikel>    \let\chaptermark\@gobble
+    \let\sectionmark\@gobble
+%<artikel>    \let\subsectionmark\@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}
+% \changes{v2.0d}{1994/02/23}{Macro added}
+%    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 the rapport and boek
+%    document classes, but for the artikel classes it is optional.
+%    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.
+% \changes{v2.0z}{2004/02/20}{Make \cs{footnote} work in the title}
+%    \begin{macrocode}
+%<!boek>\if@titlepage
+\renewcommand*\TitleFont{\rmfamily}
+\newcommand*\maketitle{%
+  \begin{titlepage}%
+    \let\footnotesize\small
+    \let\footnoterule\relax
+    \let \footnote \thanks
+%    \end{macrocode}
+%    Footnotes on the titlepage, generated by the use of |\thanks|,
+%    use symbols in these document classes.
+% \changes{v2.0v}{1997/03/02}{Use \cs{textendash} instead of
+%    \texttt{-{}-}} 
+%    \begin{macrocode}
+    \long\def\@makefntext##1{\parindent\z@
+         \def\labelitemi{\textendash}\@revlabeltrue
+         \leavevmode\@textsuperscript{\@thefnmark}\kern1em\relax ##1}
+    \renewcommand*\thefootnote{\@fnsymbol\c@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.
+% \changes{v2.0d}{1994/02/23}{Added selection of font by
+%    \cs{TitleFont}}
+%    \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.
+% \changes{v2.0r}{1995/10/05}{use \cs{let} to save space, empty
+%    \cs{@date} as well}
+%    \begin{macrocode}
+  \setcounter{footnote}{0}%
+  \global\let\thanks\relax
+  \global\let\maketitle\relax
+  \global\let\@thanks\@empty
+  \global\let\@author\@empty
+  \global\let\@title\@empty
+  \global\let\@date\@empty
+%    \end{macrocode}
+%    After the title is set the declaration commands |\title|, etc.\
+%    can vanish.
+%    The definition of |\and| makes only sense within the argument of
+%    |\author| so this can go as well.
+% \changes{v2.0r}{1995/10/05}{Disable \cs{title} and similar decls}
+%    \begin{macrocode}
+  \global\let\title\relax
+  \global\let\author\relax
+  \global\let\date\relax
+  \global\let\and\relax
+}
+%    \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.
+% \changes{v2.0p}{1995/08/10}{Now use \cs{@textsuperscript} in the
+%    definition of footnotes}
+%    \begin{macrocode}
+%<*!boek>
+\else
+\newcommand*\maketitle{\par
+  \begingroup
+    \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
+%<!type2>    \def\@makefnmark{\rlap{%
+%<!type2>      \@textsuperscript{\normalfont\@thefnmark}}}%
+%<!type2>    \long\def\@makefntext{\@xmakefntext{%
+%<!type2>      \@textsuperscript{\normalfont\@thefnmark}}}%
+%<*type2>
+%    \end{macrocode}
+% \changes{v2.0v}{1997/03/02}{Use \cs{textendash} instead of
+%    \texttt{-{}-}} 
+%    \begin{macrocode}
+    \long\def\@makefntext##1{\parindent\z@
+      \def\labelitemi{\textendash}%
+      \leavevmode\hb@xt@.5\unitindent{%
+        \@textsuperscript{\normalfont\@thefnmark}\hfil}##1}
+%</type2>
+%    \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|.
+% \changes{v2.0h}{1994/06/02}{Added check on number of columns in use
+%    locally}
+%    \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.
+% \changes{v2.0r}{1995/10/05}{use \cs{let} to save space, disable
+%    \cs{title} and similar decls an empty \cs{@date} as well}
+%    \begin{macrocode}
+  \endgroup
+  \setcounter{footnote}{0}%
+  \global\let\thanks\relax
+  \global\let\maketitle\relax
+  \global\let\@maketitle\relax
+  \global\let\@thanks\@empty
+  \global\let\@author\@empty
+  \global\let\@title\@empty
+  \global\let\@date\@empty
+  \global\let\title\relax
+  \global\let\author\relax
+  \global\let\date\relax
+  \global\let\and\relax
+  }
+%    \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.
+% \changes{v2.0d}{1994/02/23}{Added slection of font by \cs{TitleFont}}
+% \changes{v2.0z}{2004/02/20}{Make \cs{footnote} work}
+%    \begin{macrocode}
+\def\@maketitle{%
+  \newpage
+  \null
+  \vskip 2em%
+%<type3>\if@titlecentered
+  \begin{center}%
+    \let \footnote \thanks
+    {\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
+%</!boek>
+%    \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. Since the June 1996 release of \LaTeX\ the
+%          \emph{last} command in this argument may be a command such
+%          as |\MakeUppercase| or |\fbox| that takes an argument. The
+%          section heading will be supplied as the argument to this
+%          command. So setting |#6| to, say, |\bfseries\MakeUppercase|
+%          would produce bold, uppercase headings.
+%    \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 not 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}
+%<*type1|type3>
+    \begingroup
+      \setbox\@tempboxa=\hbox{#6\relax
+                              \csname the#1\endcsname
+                              \hskip.5em}
+      \ifdim\wd\@tempboxa>\unitindent
+        \global\unitindent=\wd\@tempboxa
+        \@indentset
+      \fi
+    \endgroup
+%</type1|type3>
+%    \end{macrocode}
+%    Since |\@seccntformat| might end with an improper |\hskip| which
+%    is scanning forward for |plus| or |minus| we end the definition
+%    of |\@svsec| with |\relax| as a precaution.
+% \changes{v2.0n}{1995/01/06}{No longer redefine \cs{protect} but use
+%    one of the available settings}
+% \changes{v2.0o}{1995/05/07}{Added \cs{relax} to prevent problems
+%    with a section starting with plus or minus}
+%    \begin{macrocode}
+    \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+  \fi
+  \@tempskipa #5\relax
+  \ifdim \@tempskipa>\z@
+    \begingroup
+%    \end{macrocode}
+% \changes{v2.0u}{1996/09/23}{Moved brace to allow commands like
+%    \cs{MakeUppercase} in 6th argument. Changed \cs{par} to
+%    \cs{endgraf} to allow non-long commands. This follows a change in
+%    \LaTeX.}
+%    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|.
+%    \begin{macrocode}
+    #6{%
+%<*type1|type3>
+      \@hangfrom{\hskip #3\relax\@svsec}\head@style #8\endgraf}%
+%</type1|type3>
+%<*type2>
+       \@hangfrom{\hskip #3}
+                  \head@style\@svsec \hskip.3em\relax #8\endgraf}
+%</type2>
+     \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.
+% \changes{v2.0o}{1995/05/07}{added \cs{relax} in the type2 case}
+%    \begin{macrocode}
+\def\@seccntformat#1{%
+%<!type2>  \hb@xt@\unitindent{\csname the#1\endcsname \hfil}%
+%<type2>  \csname the#1\endcsname\hskip.3em\relax
+  }
+%    \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
+%    \end{macrocode}
+% \changes{v2.0u}{1996/09/23}{Moved brace to allow commands like
+%    \cs{MakeUppercase} in 4th argument. Changed \cs{par} to
+%    \cs{endgraf} to allow non-long commands. This follows a change in
+%    \LaTeX.}
+%    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|.
+%    \begin{macrocode}
+      #4{%
+        \@hangfrom{\hskip #1}\head@style #5\endgraf}%
+    \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.tex}, so they are only shown here.
+%
+%    \begin{macrocode}
+%<!artikel>\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}
+%<artikel>\setcounter{secnumdepth}{3}
+%<!artikel>\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}
+%<artikel>\newcounter {section}
+%<*rapport|boek>
+\newcounter {chapter}
+\newcounter {section}[chapter]
+%</rapport|boek>
+\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.
+%
+%    Actually to save space the internal counter repesentations
+%    and the commands operating on those are used.
+%    \begin{macrocode}
+\renewcommand*\thepart{\@Roman\c@part}
+%<artikel>\renewcommand\thesection{\@arabic\c@section}
+%<*rapport|boek>
+\renewcommand*\thechapter{\@arabic\c@chapter}
+\renewcommand*\thesection{\thechapter.\@arabic\c@section}
+%</rapport|boek>               
+\renewcommand*\thesubsection{\thesection.\@arabic\c@subsection}
+\renewcommand*\thesubsubsection{\thesubsection.\@arabic\c@subsubsection}
+\renewcommand*\theparagraph{\thesubsubsection.\@arabic\c@paragraph}
+\renewcommand*\thesubparagraph{\theparagraph.\@arabic\c@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}
+%<rapport|boek>\newcommand*\@chapapp{\chaptername}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Front Matter, Main Matter, and Back Matter}
+%
+% \changes{v2.0f}{1994/04/18}{Added LL's additions to the book class to
+%    the boek class}
+%
+%    A boek contains these three sections.  First, we define the
+%    switch |\@mainmatter| that is true iff we are processing Main
+%    Matter.  When this switch is false, the |\chapter| command does
+%    not print chapter numbers.
+%
+%    Here we define the commands that start these sections.
+%  \begin{macro}{\frontmatter}
+%    This command starts Roman page numbering and turns off chapter
+%    numbering.
+%    \begin{macrocode}
+%<*boek>
+\newcommand*\frontmatter{%
+  \cleardoublepage
+  \@mainmatterfalse
+  \pagenumbering{roman}}
+%    \end{macrocode}
+%  \end{macro}
+%
+%  \begin{macro}{\mainmatter}
+%    This command clears the page, starts arabic page numbering and 
+%    turns on chapter numbering.
+%    \begin{macrocode}
+\newcommand*\mainmatter{%
+  \cleardoublepage
+  \@mainmattertrue
+  \pagenumbering{arabic}}
+%    \end{macrocode}
+%  \end{macro}
+%
+%  \begin{macro}{\backmatter}
+%    This clears the page, turns off chapter numbering and leaves page 
+%    numbering unchanged.
+%    \begin{macrocode}
+\newcommand*\backmatter{%
+  \if@openright\cleardoublepage\else\clearpage\fi
+  \@mainmatterfalse}
+%</boek>
+%    \end{macrocode}
+%  \end{macro}
+%
+% \subsubsection{Parts}
+%
+% \begin{macro}{\part}
+%    The command to start a new part of our document.
+%
+%    In the artikel classes the definition of |\part| is rather simple;
+%    we start a new paragraph, add a little white space, suppress the
+%    indentation of the first paragraph (not for the \file{artikel2}
+%    document class) and make use of |\@secdef|.
+% \changes{v2.0z}{2004/02/20}{Check \texttt{@noskipsec} switch and
+%      possibly force horizontal mode; see \LaTeX{} PR/2889.}
+%    \begin{macrocode}
+%<*artikel>
+\newcommand*\part{%
+  \if@noskipsec \leavevmode \fi
+  \par
+  \addvspace{4ex}%
+%<!type2>   \@afterindentfalse
+%<type2>   \@afterindenttrue
+  \secdef\@part\@spart}
+%</artikel>
+%    \end{macrocode}
+%
+%    For the rapport and boek classes we things a bit different.
+%
+%    We start a new (righthand) page and use the \pstyle{empty}
+%    pagestyle.
+%    \begin{macrocode}
+%<*rapport|boek>
+\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.
+% \changes{v2.0r}{1995/10/05}{Replace \cs{hbox} by \cs{null}}
+%    \begin{macrocode}
+  \null\vfil
+%    \end{macrocode}
+%    Here we use |\secdef| to indicate which commands to use to make
+%    the actual heading.
+%    \begin{macrocode}
+  \secdef\@part\@spart}
+%</rapport|boek>
+%    \end{macrocode}
+%
+% \begin{macro}{\@part}
+%    This macro does the actual formatting of the title of the part.
+%    Again the macro is differently defined for the artikel document
+%    classes than for the document classes rapport and boek.
+%
+% \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 $-1$ for the
+%    artikel document classes, we have a numbered
+%    part, otherwise it is unnumbered.
+% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
+%    \cs{normalfont}}
+%    \begin{macrocode}
+%<*artikel>
+\def\@part[#1]#2{%
+    \ifnum \c@secnumdepth >\m@ne
+      \refstepcounter{part}%
+      \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+    \else
+      \addcontentsline{toc}{part}{#1}%
+    \fi
+%    \end{macrocode}
+%    We  print the title flush left in the artikel classes.
+%    Also we prevent breaking between lines and reset the font.
+%    \begin{macrocode}
+    {\head@style
+     \parindent\unitindent
+     \normalfont
+%    \end{macrocode}
+%    When this is a numbered part we have to print the number and the
+%    title. The |\nobreak| should prevent a page break here.
+% \changes{v2.0z}{2004/02/20}{Replaced tilde with \cs{nobreakspace},
+%    see \LaTeX{} (pr/3310)}
+%    \begin{macrocode}
+     \ifnum \c@secnumdepth >\m@ne
+%<!type2>       \Large\PartFont\noindent \partname\nobreakspace\thepart
+%<type2>       \Large\PartFont\indent \partname\nobreakspace\thepart
+       \par\nobreak
+     \fi
+%<!type2>     \Large \PartFont \noindent #2%
+%<type2>     \Large \PartFont #2%
+%    \end{macrocode}
+%    Then we empty the mark registers, leave some white space and call
+%    |\@afterheading| to  takes care of suppressing the indentation.
+%    \begin{macrocode}
+     \markboth{}{}\par}%
+    \nobreak
+    \vskip 3ex
+    \@afterheading}
+%</artikel>
+%    \end{macrocode}
+%
+%    When \Lcount{secnumdepth} is larger than $-2$ for the
+%    document class rapport and boek, we have a numbered
+%    part, otherwise it is unnumbered.
+%    \begin{macrocode}
+%<*rapport|boek>
+\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 in the
+%    rapport and boek document classes.
+%    Also we prevent breaking between lines and reset the font.
+% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
+%    \cs{normalfont}}
+% \changes{v2.0r}{1995/10/05}{Added missing percent}
+%    \begin{macrocode}
+    \markboth{}{}%
+    {\centering
+     \interlinepenalty \@M
+     \normalfont
+%    \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
+       \nobreakspace\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}
+%</rapport|boek>
+%    \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
+%    \emph{never} print a number. Otherwise the formatting is the same.
+%
+%    The differences between the definition of this macro in the
+%    artikel document classes and in the rapport and boek document
+%    classes are similar as they were for |\@part|.
+% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
+%    \cs{normalfont}}
+%    \begin{macrocode}
+%<*artikel>
+\def\@spart#1{%
+    {\parindent \z@
+     \head@style
+     \normalfont
+%<!type2>     \Large \PartFont \noindent #1\par}%
+%<type2>     \Large \PartFont \indent #1\par}%
+     \nobreak
+     \vskip 3ex
+     \@afterheading}
+%</artikel>
+%    \end{macrocode}
+% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
+%    \cs{normalfont}}
+%    \begin{macrocode}
+%<*rapport|boek>
+\def\@spart#1{%
+    {\centering
+     \interlinepenalty \@M
+     \normalfont
+     \Large \PartFont #1\par}%
+    \@endpart}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@endpart}
+% \changes{v2.0r}{1995/10/05}{move docstrip guard to avoid defining
+%    \cs{@endpart} in artikelx}
+%    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 and chapters are supposed to
+%    be on right hand sides, we produce a completely blank
+%    page.
+% \changes{v2.0z}{2004/02/20}{Only add empty page after part if
+%    twoside and openright (\LaTeX{} pr/3155)}
+%    \begin{macrocode}
+%<!boek>              \if@twoside
+                \if@openright
+                  \null
+                  \thispagestyle{empty}%
+                  \newpage
+                \fi
+%<!boek>              \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}
+%</rapport|boek>
+%    \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}.
+% \changes{v2.0f}{1994/04/18}{Make \cs{chapter} listen to the openright
+%    and openany options}
+%    \begin{macrocode}
+%<*rapport|boek>
+\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$ and, in the boek class,
+%    |\@mainmatter| is true, 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.
+% \changes{v2.0k}{1994/06/08}{Removed carriage return behind +boek}
+%    \begin{macrocode}
+\def\@chapter[#1]#2{%
+    \ifnum \c@secnumdepth >\m@ne
+%<boek>      \if@mainmatter
+        \refstepcounter{chapter}%
+        \typeout{\@chapapp\space\thechapter.}%
+        \addcontentsline{toc}{chapter}%
+                      {\protect\numberline{\thechapter}\toc@font0 #1}%
+%<*boek>
+      \else
+        \addcontentsline{toc}{chapter}{\toc@font0 #1}%
+      \fi
+%</boek>
+    \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.
+% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
+%    \cs{normalfont}}
+%    \begin{macrocode}
+\def\@makechapterhead#1{%
+%<!boek>  \vspace*{50\p@ \@plus 5\p@}%
+%<boek>  \vspace*{50\p@ \@plus 20\p@}%
+  {\setlength\parindent{\z@}%
+   \setlength\parskip  {\z@}%
+   \head@style \normalfont
+%    \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.
+% \changes{v2.0j}{1994/06/03}{Removed carriage return behind +boek}
+% \changes{v2.0m}{1994/12/20}{Added a \cs{nobreak} to prevent a
+%    pagebreak between the chapternumber and the chaptertitle}
+%    \begin{macrocode}
+    \ifnum \c@secnumdepth >\m@ne
+%<boek>      \if@mainmatter
+        \Large\ChapFont \@chapapp{} \thechapter
+        \par\nobreak
+        \vskip 20\p@
+%<boek>      \fi
+    \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.
+%
+% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
+%    \cs{normalfont}}
+%    \begin{macrocode}
+\def\@makeschapterhead#1{%
+%<!boek>  \vspace*{50\p@\@plus 5\p@}%
+%<boek>  \vspace*{50\p@\@plus 20\p@}%
+  {\setlength\parindent{\z@}%
+    \setlength\parskip{\z@}%
+    \head@style
+    \normalfont
+    \Large \ChapFont  #1\par
+    \nobreak
+    \vskip 40\p@
+  }}
+%</rapport|boek>
+%    \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.
+% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
+%    \cs{normalfont}}
+%    \begin{macrocode}
+\newcommand*\section{%
+%<*type1|type3>
+  \@startsection {section}{1}{\z@}%
+    {-2\baselineskip\@plus -1\baselineskip \@minus -.5\baselineskip}%
+%</type1|type3>
+%<*type2>
+  \@startsection {section}{1}{\unitindent}%
+    {2\baselineskip\@plus \baselineskip \@minus .5\baselineskip}%
+%</type2>
+%<type1>    {.5\baselineskip}%
+%<type2|type3>    {.01\baselineskip}%
+    {\normalfont\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.
+% \changes{v2.0n}{1995/01/06}{Use 1\cs{baselineskip} instead of
+%    \cs{baselineskip} for artikel2}
+% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
+%    \cs{normalfont}}
+%    \begin{macrocode}
+\newcommand*\subsection{%
+%<*type1|type3>
+  \@startsection{subsection}{2}{\z@}%
+    {-1\baselineskip\@plus -.5\baselineskip \@minus -.25\baselineskip}%
+%</type1|type3>
+%<*type2>
+  \@startsection{subsection}{2}{\unitindent}%
+    {1\baselineskip\@plus .5\baselineskip \@minus .25\baselineskip}%
+%</type2>
+%<type1>    {.25\baselineskip}%
+%<type2|type3>    {.01\baselineskip}%
+    {\normalfont\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.
+% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
+%    \cs{normalfont}}
+%    \begin{macrocode}
+\newcommand*\subsubsection{%
+%<*type1|type3>
+  \@startsection{subsubsection}{3}{\z@}%
+    {-1\baselineskip plus -.5\baselineskip minus -.25\baselineskip}%
+%</type1|type3>
+%<*type2>
+  \@startsection{subsubsection}{3}{\unitindent}%
+    {1\baselineskip plus .5\baselineskip minus .25\baselineskip}%
+%</type2>
+%<type1>    {.25\baselineskip}%
+%<type2|type3>    {.01\baselineskip}%
+    {\normalfont\normalsize\SSSectFont}}
+%    \end{macrocode}
+%
+% \begin{macro}{\SSSectFont}
+%    The font used to typeset the subsubsections is stored in this maro.
+%    \begin{macrocode}
+%<artikel&(type1|type3)>\newcommand*\SSSectFont{\rmfamily}
+%<type2>\newcommand*\SSSectFont{\scshape}
+%<rapport|boek>\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|.
+% \changes{v2.0d}{1994/02/23}{Forgot to change \cs{slshape} into
+%    \cs{ParaFont}}
+% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
+%    \cs{normalfont}}
+%    \begin{macrocode}
+\newcommand*\paragraph{%
+%<!type2>  \@startsection{paragraph}{4}{\z@}%
+%<type2>  \@startsection{paragraph}{4}{\unitindent}%
+    {3.25ex \@plus1ex \@minus.2ex}%
+    {-1em}%
+    {\normalfont\normalsize\ParaFont}}
+%    \end{macrocode}
+%
+% \begin{macro}{\ParaFont}
+%    The font used to typeset the paragraphs is stored in this maro.
+%    \begin{macrocode}
+%<!type2>\newcommand*\ParaFont{\slshape}
+%<type2>\newcommand*\ParaFont{\scshape}
+%    \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|.
+% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
+%    \cs{normalfont}}
+%    \begin{macrocode}
+\newcommand*\subparagraph{%
+%<!type2>  \@startsection{subparagraph}{5}{\parindent}%
+%<type2>  \@startsection{subparagraph}{5}{\unitindent}%
+    {3.25ex \@plus1ex \@minus .2ex}%
+    {-1em}%
+    {\normalfont\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.
+% \changes{v2.0d}{1994/02/23}{Added \cs{TitleFont}}
+%    \begin{macrocode}
+%<*artikel>
+\newcommand*\HeadingFonts[7]{%
+  \renewcommand*\TitleFont{#1}%
+  \renewcommand*\PartFont{#2}%
+  \renewcommand*\SectFont{#3}%
+  \renewcommand*\SSectFont{#4}%
+  \renewcommand*\SSSectFont{#5}%
+  \renewcommand*\ParaFont{#6}%
+  \renewcommand*\SParaFont{#7}}
+%</artikel>
+%<*rapport|boek>
+\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}}
+%</rapport|boek>
+%    \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}
+%<!type2>\setlength\leftmargini  {\unitindent}
+%<type2>\setlength\leftmargini  {\othermargin}
+\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  values of
+% |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep|, etc.\ for the
+% lists that appear on top-level. Its definition is modified by the 
+% font-size commands (eg within |\small| the list parameters get
+% ``smaller'' values).
+%
+% For this reason \@listI is defined to hold a saved copy of \@listi
+% so that |\normalsize| can switch all parameters back.
+%
+%    \begin{macrocode}
+\def\@listi{%
+%<!type2>            \leftmargin\unitindent
+%<type2>            \leftmargin\leftmargini
+%<!type2>            \labelsep.5em%
+%<type2>            \labelsep.45em%
+            \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 initialise these parameters although strictly speaking that
+%    is not necessary.
+%    \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. Note that
+%    they don't have saved versions and are not modified by the font
+%    size commands. In other words this class assumes that nested
+%    lists only appear in |\normalsize|, i.e.\ the main document size.
+%    \begin{macrocode}
+\def\@listii {\leftmargin\leftmarginii
+%<!type2>              \labelsep  .5em%
+%<type2>              \labelsep  .3em%
+              \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
+%<!type2>              \labelsep  .5em%
+%<type2>              \labelsep  .3em%
+              \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
+%<!type2>              \labelsep  .5em%
+%<type2>              \labelsep  .3em%
+              \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
+%<!type2>              \labelsep  .5em%
+%<type2>              \labelsep  .3em%
+              \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
+%<!type2>              \labelsep  .5em
+%<type2>              \labelsep  .3em
+              \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\c@enumi}
+\renewcommand*\theenumii{\@alph\c@enumii}
+\renewcommand*\theenumiii{\@roman\c@enumiii}
+\renewcommand*\theenumiv{\@Alph\c@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
+%<*type1|type3>
+             \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|type3>
+%<type1>           \else
+%<type1|type2>             \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.
+%
+% \changes{v2.0u}{1996/09/23}{Changed \texttt{--} to \cs{textendash}
+%    following \file{classes.dtx}} 
+% \changes{v2.0u}{1996/09/23}{Did similar for the bullet and centered
+%    dot.} 
+% \changes{v2.0v}{1997/03/02}{Now also \cs{textasteriskcentered}}
+%    \begin{macrocode}
+\newcommand*{\labelitemi}{\textbullet}
+\newcommand*{\labelitemii}{\normalfont\bfseries \textendash}
+\newcommand*{\labelitemiii}{\textasteriskcentered}
+\newcommand*{\labelitemiv}{\textperiodcentered}
+%    \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
+%<*type1|type3>
+            \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|type3>
+%<type1>          \else
+%<type1|type2>            \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{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 in the document classes \file{artikel1}
+%    and \file{rapport1}.
+%
+%  \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{artikel3} and \file{rapport3} is negative to
+%    compensate for the positive |\parskip|-- but also an indent for
+%    the \file{artikel1} and \file{rapport1} document classess.
+%    \begin{macrocode}
+\def\verbatim{%
+%<*type1|type2>
+  \topsep=.25\baselineskip \@plus .1\baselineskip
+                           \@minus .1\baselineskip
+   \@verbatim
+%</type1|type2>
+%<type1>   \leftskip\unitindent
+%<type2>   \leftskip\z@
+%<*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.
+%
+%    Note that this environment is not defined for boeks.
+% \changes{v2.0e}{1994/03/19}{Use \cs{SectFont} for the abstract title}
+%    \begin{macrocode}
+%<!boek>\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 titlepage --the default for the
+%    artikel document classes-- we 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}
+%<*artikel|rapport>
+\else
+  \newenvironment{abstract}{%
+      \if@twocolumn
+        \section*{\abstractname}%
+      \else
+        \small
+%<*type1|type3>
+        \bgroup\rightskip=\unitindent
+        \hbox{\SectFont \abstractname}%
+        \noindent\ignorespaces
+%</type1|type3>
+%    \end{macrocode}
+%    As always, the \file{artikel2} document class has a
+%    different implementation.
+% \changes{v2.0m}{1994/12/30}{Removed superfluous closing brace}
+%    \begin{macrocode}
+%<*type2>
+        \hbox{\hskip\unitindent\SectFont \abstractname}%
+        \list{}{\setlength\listparindent{\unitindent}%
+                \setlength\parindent    {\z@}%
+                \setlength\leftmargin   {\unitindent}%
+                \setlength\rightmargin  {\unitindent}%
+                \setlength\parsep       {\z@}}%
+        \item[]%
+%</type2>
+      \fi}
+%    \end{macrocode}
+%    Which implies that the definition of |\end{abstract}| is also
+%    different. 
+%    \begin{macrocode}
+%<!type2>      {\if@twocolumn\else\par\egroup\fi}
+%<type2>      {\if@twocolumn\else\par\endlist\fi}
+\fi
+%</artikel|rapport>
+%    \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|.
+%
+% \changes{v2.0r}{1995/10/05}{stop \cs{item} scanning for [ with
+%    \cs{relax}}
+%    \begin{macrocode}
+\newenvironment{verse}
+               {\let\\\@centercr
+                \list{}{\itemsep\z@
+                        \itemindent-1.5em%
+                        \listparindent\itemindent
+                        \rightmargin\leftmargin
+                        \advance\leftmargin1.5em}%
+                \item\relax}
+               {\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.
+%
+% \changes{v2.0r}{1995/10/05}{stop \cs{item} scanning for [ with
+%    \cs{relax}}
+%    \begin{macrocode}
+\newenvironment{quotation}
+               {\list{}{%
+%<!type2>                        \listparindent\z@
+%<type2>                        \listparindent\unitindent
+%<boek>                        \listparindent1.5em%
+                        \itemindent\listparindent
+                        \rightmargin\leftmargin
+                        \parsep\z@ \@plus\p@}%
+                \item\relax}
+               {\endlist}
+%    \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Quote}
+%
+% \begin{environment}{quote}
+%   The quote environment is like the quotation environment except
+%   that paragraphs are not indented.
+%
+% \changes{v2.0r}{1995/10/05}{stop \cs{item} scanning for [ with
+%    \cs{relax}}
+%    \begin{macrocode}
+\newenvironment{quote}
+               {\list{}{\rightmargin\leftmargin}%
+                \item\relax}
+               {\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. This is incorrect since it
+%    results in using the page parameters for a right-hand page but it
+%    is the way it was. In two-column style, it still makes a
+%    one-column page.
+%
+% \changes{v1.0.7}{1993/12/09}{Moved the setting of
+%    \cs{@restonecolfalse}}
+% \changes{v2.0f}{1994/04/18}{Incorporated LL's changes to this
+%    environment}
+%    \begin{macrocode}
+\newenvironment{titlepage}
+    {
+%<boek>      \cleardoublepage
+      \if@twocolumn
+        \@restonecoltrue\onecolumn
+      \else
+        \@restonecolfalse\newpage
+      \fi
+      \thispagestyle{empty}%
+      \if@compatibility
+        \setcounter{page}\z@
+%<*artikel|rapport>
+      \else
+        \setcounter{page}\@ne
+%</artikel|rapport>
+      \fi}
+     {\if@restonecol\twocolumn \else \newpage \fi
+%<artikel|rapport>       \setcounter{page}\@ne
+       }
+%    \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 the artikel document classes the |\appendix| command must do the
+%    following:
+%    \begin{itemize}
+%    \item reset the section and subsection counters to zero,
+%    \item redefine |\thesection| to produce alphabetic appendix
+%        numbers.
+%    \end{itemize}
+%
+% \changes{v2.0z}{2004/02/20}{Redefine \cs{thesection} globally
+%    (\LaTeX{} pr/2862)}
+%    \begin{macrocode}
+%<*artikel>
+\newcommand*\appendix{\par
+  \setcounter{section}{0}%
+  \setcounter{subsection}{0}%
+  \gdef\thesection{\@Alph\c@section}}
+%</artikel>
+%    \end{macrocode}
+%
+%    In the rapport and boek document classes 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}
+%
+% \changes{v2.0z}{2004/02/20}{Redefine \cs{thechapter} and
+%    \cs{@chapapp} globally (\LaTeX{} pr/2862)} 
+%    \begin{macrocode}
+%<*rapport|boek>
+\newcommand*\appendix{\par
+  \setcounter{chapter}{0}%
+  \setcounter{section}{0}%
+  \gdef\@chapapp{\appendixname}%
+  \gdef\thechapter{\@Alph\c@chapter}}
+%</rapport|boek>
+%    \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}
+%    When within chapters, 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.
+% \changes{v2.0v}{1997/03/02}{Added test for non-zero chapter number}
+%    \begin{macrocode}
+%<artikel>\renewcommand*\theequation{\@arabic\c@equation}
+%<*rapport|boek>
+\@addtoreset{equation}{chapter}
+\renewcommand*\theequation{%
+  \ifnum \c@chapter>\z@ \thechapter.\fi\@arabic\c@equation}
+%</rapport|boek>
+%    \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 \emph{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 the
+%    rapport and boek document classes the figures are numbered per
+%    chapter.
+%    \begin{macrocode}
+%<*artikel>
+\newcounter{figure}
+\renewcommand*\thefigure{\@arabic\c@figure}
+%</artikel>
+%<*rapport|boek>
+%    \end{macrocode}
+% \changes{v2.0v}{1997/03/02}{Added test for non-zero chapter number}
+%    \begin{macrocode}
+\newcounter{figure}[chapter]
+\renewcommand*\thefigure{%
+  \ifnum\c@chapter>\z@\thechapter.\fi\@arabic\c@figure}
+%</rapport|boek>
+%    \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'.
+% \changes{v2.0z}{2004/02/20}{Replaced tilde with \cs{nobreakspace}
+%    (\LaTeX{} pr/3310)} 
+%    \begin{macrocode}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{\figurename\nobreakspace\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 the
+%    rapport and boek document classes the tables are numbered per
+%    chapter.
+%    \begin{macrocode}
+%<*artikel>
+\newcounter{table}
+\renewcommand*\thetable{\@arabic\c@table}
+%</artikel>
+%<*rapport|boek>
+%    \end{macrocode}
+% \changes{v2.0v}{1997/03/02}{Added test for non-zero chapter number}
+%    \begin{macrocode}
+\newcounter{table}[chapter]
+\renewcommand*\thetable{%
+  \ifnum\c@chapter>\z@\thechapter.\fi\@arabic\c@table}
+%</rapport|boek>
+%    \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'.
+% \changes{v2.0z}{2004/02/20}{Replaced tilde with \cs{nobreakspace}
+%    (\LaTeX{} pr/3310)} 
+%    \begin{macrocode}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{\tablename\nobreakspace\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.
+% \changes{v2.0d}{1994/02/23}{Introduced \cs{CaptionLabelFont} and
+%    \cs{CaptionTextFont}}
+% \changes{v2.0e}{1994/03/19}{\cs{CaptionLabelFont} shouldn't
+%    influence the font for the caption text}
+%    \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.
+% \changes{vv2.0g}{1994/06/01}{Use \cs{sbox}\cs{@tempboxa} instead of
+%    \cs{setbox}\cs{@tempboxa}\cs{hbox} to make this colour safe}
+%    \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. Because this uses an |\hbox|
+%    directly in vertical mode, it does not execute the |\everypar|
+%    tokens; the only thing that could be needed here is resetting the
+%    `minipage flag' so we do this explicitly.
+% \changes{v2.0m}{1994/12/20}{Due to a change in the way floats are
+%    handled we need to set the \cs{if@minipage} switch to false}
+%    \begin{macrocode}
+  \else
+    \global \@minipagefalse
+    \hb@xt@\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}
+%
+% \changes{v2.0f}{1994/04/18}{\cs{@newfontswitch} and
+%    \cs{@renewfontswitch} have become \cs{DeclareOldFontCommand}}
+%
+%    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.
+%
+% \changes{v1.0.7}{1993/12/12}{Distinguished between compatibility and
+%    `normal' mode for the font changing commands.}
+% \changes{v1.0.8}{1993/12/18}{These are now defined in the kernel,
+%    so use \cs{@renewfontswitch}.  Compatibility mode defines
+%    \cs{@renewfontswitch} to do nothing, so we don't need to check for
+%    compatibility mode any more.}
+% \changes{v1.0.10}{1993/12/20}{Added \cs{normalfont} back in the
+%    definitions of \cs{rm} etc. as this should be the default
+%    behaviour}
+%  \begin{macro}{\rm}
+% \changes{v1.0.6}{1993/12/08}{Macro added}
+%  \begin{macro}{\tt}
+% \changes{v1.0.6}{1993/12/08}{Macro added}
+%  \begin{macro}{\sf}
+% \changes{v1.0.6}{1993/12/08}{Macro added}
+%
+%    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}
+% \changes{v1.0.6}{1993/12/08}{Macro added}
+%    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}
+% \changes{v1.0.6}{1993/12/08}{Macro added}
+%  \begin{macro}{\it}
+% \changes{v1.0.6}{1993/12/08}{Macro added}
+%  \begin{macro}{\sc}
+% \changes{v1.0.6}{1993/12/08}{Macro added}
+%
+%    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}
+% \changes{v1.0.7}{1993/12/12}{Macro added}
+% \begin{macro}{\mit}
+% \changes{v1.0.7}{1993/12/12}{Macro added}
+%
+%    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'.
+% \changes{v2.0m}{1994/12/20}{Now define \cs{cal} and \cs{mit} using
+%    \cs{DeclareRobustCommand*}}
+% \changes{v2.0t}{1996/04/01}{Repaired a couple of typos}
+%    \begin{macrocode}
+\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
+\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
+%    \end{macrocode}
+%  \end{macro}
+%  \end{macro}
+%
+%  \begin{macro}{\em}
+%    The definition of \verb*|\em| is changed here to have slanted
+%    instead of italic fonts.
+% \changes{v2.0s}{1995/11/28}{Now redefine \cs*{em} instead of \cs{pem}}
+%    \begin{macrocode}
+\DeclareRobustCommand*\em{%
+  \@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.
+% \changes{v2.0m}{1994/12/20}{Changed documentation from > or = to
+%    $\ge$}
+%    \item[\texttt{\bslash @tocrmarg}] The right margin for multiple
+%        line entries.  One wants |\@tocrmarg| $\ge$ |\@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}
+%<artikel>\setcounter{tocdepth}{3}
+%<!artikel>\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. In the rapport and boek document classes the tables of
+%    contents, figures etc. are always set in single-column style.
+%
+% \changes{v1.0.7}{1993/12/09}{Moved the setting of
+%    \cs{@restonecolfalse}}
+%    \begin{macrocode}
+\newcommand*\tableofcontents{%
+%<*rapport|boek>
+    \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.
+% \changes{v2.1a}{2004/06/07}{Moved \cs{@mkboth} out of heading arg
+%    (\LaTeX{} pr/3285)}
+%    \begin{macrocode}
+    \chapter*{\contentsname}%
+%</rapport|boek>
+%<artikel>    \section*{\contentsname}%
+    \@mkboth{\MakeUppercase{\contentsname}}%
+            {\MakeUppercase{\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}%
+%<!artikel>    \if@restonecol\twocolumn\fi
+    }
+%    \end{macrocode}
+% \end{macro}
+%
+%  \begin{macro}{\@starttoc}
+%    The internal \LaTeXe macro |\@starttoc| needs to be adapted for
+%    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.
+%    \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.2\p@
+    {\hangindent\z@ \@afterindenttrue \interlinepenalty\@M
+     \leftskip\unitindent
+     \rightskip\unitindent\@plus 1fil
+     \parfillskip\z@
+     \@tempdima\unitindent
+%<type2>     \advance\@tempdima by \othermargin
+     \parindent\z@
+     \leavevmode
+     \hbox{}\hskip -\leftskip\relax#2\nobreak
+     \hskip 1em \nobreak{\slshape #3}\par
+     }%
+  \fi}
+%    \end{macrocode}
+%  \end{macro}
+%
+%  \begin{macro}{\numberline}
+%    This internal macro is redefined for the \file{artikel2} document
+%    class. 
+%    \begin{macrocode}
+%<type2>\def\numberline#1{\hb@xt@\@tempdima{\hfil#1\hskip.3em}}
+%    \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]{%
+%<*artikel>
+    \ifcase#1\relax
+%<type2>    \Large\bfseries
+    \or\bfseries
+    \or\slshape
+    \or\rmfamily
+%</artikel>
+%<*rapport|boek>
+    \ifcase#1\relax
+    \bfseries
+    \or\slshape
+    \or\rmfamily
+%</rapport|boek>
+    \fi}
+\fi
+%    \end{macrocode}
+%  \end{macro}
+%
+%  \begin{macro}{\toc@case}
+%    In the \file{rapport} and \file{boek} document classes, 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{\MakeUppercase}
+\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
+%    \emph{before} this entry. Also a little whitespace is added and a
+%    group begun to keep changes local.
+%  \changes{v1.0.8}{1993/12/18}{Replaced -\cs{@secpenalty} by
+%    \cs{@secpenalty}.  ASAJ.}
+%
+%    First we have the definition from the standard classes.
+% \changes{v2.0q}{1995/08/22}{Don't print a toc line when the tocdepth
+%    counter is less then -1; Added missing braces around argument to
+%    \cs{addpenalty}.}
+%    \begin{macrocode}
+\if@oldtoc
+\newcommand*\l@part[2]{%
+  \ifnum \c@tocdepth >-2\relax
+%<artikel>    \addpenalty\@secpenalty
+%<!artikel>    \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 \hb@xt@\@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.
+% \changes{v2.0r}{1995/10/05}{Added missing percent}
+%    \begin{macrocode}
+        \nobreak
+%<artikel>       \if@compatibility
+        \global\@nobreaktrue
+        \everypar{\global\@nobreakfalse\everypar{}}%
+%<artikel>      \fi
+    \endgroup
+  \fi}
+%    \end{macrocode}
+%    Then we can introduce our new definition.
+%    \begin{macrocode}
+\else
+   \newcommand*\l@part{%
+     \ifnum \c@tocdepth >-2\relax
+%<artikel>     \addpenalty\@secpenalty
+%<!artikel>     \addpenalty{-\@highpenalty}%
+     \addvspace{2.25em \@plus \p@}%
+     \@regtocline{0}%
+   \fi}
+\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
+%    \emph{before} this entry. Also a little whitespace is added and a
+%    group begun to keep changes local.
+%
+%    Again we first present the `standard' definition
+% \changes{v2.0q}{1995/08/22}{Added missing braces around argument to
+%    \cs{addpenalty}.}
+%    \begin{macrocode}
+%<*rapport|boek>
+\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\hb@xt@\@pnumwidth{\hss #2}\par
+    \penalty\@highpenalty
+   \endgroup}
+%    \end{macrocode}
+%    Then we present our new definition.
+%    \begin{macrocode}
+\else
+  \newcommand*\l@chapter{\@regtocline{0}}
+\fi
+%</rapport|boek>
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@section}
+%    In the artikel document classes the entry in the table of contents
+%    for sections looks much like the chapter entries for the rapport
+%    and boek document classes.
+%
+%    First we make sure that if a pagebreak should occur, it occurs
+%    \emph{before} this entry. Also a little whitespace is added and a
+%    group begun to keep changes local.
+% \changes{v1.0.8}{1993/12/18}{Replaced -\cs{@secpenalty} by
+%    \cs{@secpenalty}.  ASAJ.}
+%    \begin{macrocode}
+%<*artikel>
+\if@oldtoc
+\newcommand*\l@section[2]{%
+    \addpenalty\@secpenalty
+    \addvspace{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 paramters.
+%    \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\hb@xt@\@pnumwidth{\hss #2}\par
+   \endgroup}
+%    \end{macrocode}
+%    The new definition:
+%    \begin{macrocode}
+\else
+   \newcommand*\l@section{\@regtocline{1}}
+\fi
+%</artikel>
+%    \end{macrocode}
+%    In the rapport and boek document classes the definition for
+%    |\l@section| is much simpler.
+% \changes{v2.0g}{1994/06/01}{Added a missing backslash}
+%    \begin{macrocode}
+%<*rapport|boek>
+\if@oldtoc
+  \newcommand*\l@section      {\@dottedtocline{1}{1.5em}{2.3em}}
+\else
+  \newcommand*\l@section      {\@regtocline{1}}
+\fi
+%</rapport|boek>
+%    \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
+%<*artikel>
+  \newcommand*\l@subsection   {\@dottedtocline{2}{1.5em}{2.3em}}
+  \newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+  \newcommand*\l@paragraph    {\@dottedtocline{4}{7.0em}{4.1em}}
+  \newcommand*\l@subparagraph {\@dottedtocline{5}{10em}{5em}}
+%</artikel>
+%<*rapport|boek>
+  \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}}
+%</rapport|boek>
+\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|.
+%
+% \changes{v1.0.7}{1993/12/09}{Moved the setting of
+%    \cs{@restonecolfalse}}
+% \changes{v2.0z}{2004/02/20}{Moved \cs{@mkboth} out of heading arg
+%    (\LaTeX{} pr/3285)} 
+% \changes{v2.1a}{2004/06/07}{Added a missing closing brace}
+%    \begin{macrocode}
+\newcommand*\listoffigures{%
+%<*rapport|boek>
+    \if@twocolumn
+      \@restonecoltrue\onecolumn
+    \else
+      \@restonecolfalse
+    \fi
+    \chapter*{\listfigurename}%
+%</rapport|boek>
+%<artikel>    \section*{\listfigurename}%
+    \@mkboth{\MakeUppercase{\listfigurename}}%
+            {\MakeUppercase{\listfigurename}}%
+    \@starttoc{lof}%
+%<rapport|boek>    \if@restonecol\twocolumn\fi
+    }
+%    \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|.
+%
+% \changes{v1.0.7}{1993/12/09}{Moved the setting of \cs{@restonecolfalse}}
+% \changes{v2.0z}{2004/02/20}{Moved \cs{@mkboth} out of heading arg
+%    (\LaTeX{} pr/3285)} 
+% \changes{v2.1a}{2004/06/07}{Added a missing closing brace}
+%    \begin{macrocode}
+\newcommand*\listoftables{%
+%<*rapport|boek>
+    \if@twocolumn
+      \@restonecoltrue\onecolumn
+    \else
+      \@restonecolfalse
+    \fi
+    \chapter*{\listtablename}%
+%</rapport|boek>
+%<artikel>    \section*{\listtablename}%
+    \@mkboth{\MakeUppercase{\listtablename}}%
+            {\MakeUppercase{\listtablename}}%
+    \@starttoc{lot}%
+%<rapport|boek>    \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
+\setlength\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.
+%
+% \changes{v1.0.9}{1993/12/19}{Corrected definition of thebibliography
+%           for artikel}
+% \changes{v2.0r}{1995/10/05}{Removed unneeded braces}
+% \changes{v2.0z}{2004/02/20}{Moved \cs{@mkboth} out of heading arg
+%    (\LaTeX{} pr/3285)} 
+%    \begin{macrocode}
+\newenvironment{thebibliography}[1]
+%<*artikel>
+     {\section*{\refname}%
+       \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%
+%</artikel>
+%<*!artikel>
+     {\chapter*{\bibname}%
+       \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}%
+%</!artikel>
+      \list{\@biblabel{\@arabic\c@enumiv}}%
+           {\settowidth\labelwidth{\@biblabel{#1}}%
+            \leftmargin\labelwidth
+            \advance\leftmargin\labelsep
+            \@openbib@code
+            \usecounter{enumiv}%
+            \let\p@enumiv\@empty
+            \renewcommand*\theenumiv{\@arabic\c@enumiv}}%
+      \sloppy\clubpenalty4000\widowpenalty4000%
+      \sfcode`\.\@m}
+     {\def\@noitemerr
+       {\@latex@warning{Empty `thebibliography' environment}}%
+      \endlist}
+%    \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\newblock}
+%    The default definition for |\newblock| is to produce a small space.
+%    \begin{macrocode}
+% \changes{v2.0t}{1996/04/01}{use \cs{renewcommand} instead of
+%    \cs{newcommand}} 
+\renewcommand\newblock{\hskip.11em\@plus.33em\@minus.07em}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@openbib@code}
+%    The default definition for |\@openbib@code| is to do nothing.
+%    It will be changed by the \Lopt{openbib} option.
+% \changes{v2.0r}{1995/10/05}{Macro added}
+%    \begin{macrocode}
+\let\@openbib@code\@empty
+%    \end{macrocode}
+% \end{macro}
+%
+% \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.
+%
+%
+% \changes{v1.0.7}{1993/12/09}{Moved the setting of
+%    \cs{@restonecoltrue}}
+%    \begin{macrocode}
+\newenvironment{theindex}{%
+  \if@twocolumn
+    \@restonecolfalse
+  \else
+    \@restonecoltrue
+  \fi
+%<artikel>  \twocolumn[\section*{\indexname}]%
+%<!artikel>  \twocolumn[\@makeschapterhead{\indexname}]%
+  \@mkboth{\MakeUppercase{\indexname}}{\MakeUppercase{\indexname}}%
+  \thispagestyle{plain}\parindent\z@
+%    \end{macrocode}
+%    Parameter changes to |\columnseprule| and |\columnsep| have to be
+%    done after |\twocolumn| has acted. Otherwise they can affect the
+%    last page before the index.
+% \changes{v2.0z}{2004/02/20}{Moved setting of \cs{columnsep} and
+%    \cs{columnseprule} later to avoid affecting the wrong page (cf
+%    \LaTeX{} pr/3616)}
+%    \begin{macrocode}
+  \columnseprule \z@
+  \columnsep 35\p@
+  \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.
+%    \begin{macrocode}
+\newcommand*\@idxitem  {\par\hangindent 40\p@}
+\newcommand*\subitem   {\@idxitem\hspace*{20\p@}}
+\newcommand*\subsubitem{\@idxitem\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\vskip10\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|.
+%    The standard \LaTeX\ document classes make sure that the rule
+%    takes no vertical space (see \file{plain.tex}) and compensate for
+%    the natural heigth of the rule of 0.4pt by adding the right
+%    amount of vertical skip. For the \file{artikel2} document class
+%    this is still true, but for the others the amount of whitespace
+%    between the last line of the text and the start of the footnotes
+%    is increased by giving |\footnoterule| a positive
+%    height\footnote{This should perhaps have been done by increasing
+%    the value of \cs{skip}\cs{footins}, but changing that now would
+%    mean changing the formatting of existing
+%    documents. (\small\texttt{JLB, 08/09/1997})}.
+%
+%    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@
+%<*type1|type3>
+  \kern.5\baselineskip
+  \hrule\@width\unitindent
+  \kern.4\baselineskip
+%</type1|type3>
+%<*type2>
+  \hrule\@width 3\unitindent
+  \kern 2.6\p@
+%</type2>
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@footnote}
+%    Footnotes are numbered within chapters in the rapport and boek
+%    document styles.
+%    \begin{macrocode}
+% \newcounter{footnote}
+%<!artikel>\@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.
+% \changes{v2.0c}{1994/02/21}{Adapted example to artikel style.}
+% \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{\hb@xt@.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|. 
+% \changes{v2.0l}{1994/07/11}{Moved `.' from within \cs{@xmakefntext}
+%    to \cs{@makefntext}}
+% \changes{v2.0t}{1996/04/01}{Repaired a typo}
+% \changes{v2.0u}{1996/09/23}{Changed \texttt{--} to \cs{textendash}
+%    following \file{classes.dtx}}
+%    \begin{macrocode}
+%<*type1|type3>
+\newcommand*\@makefntext{\@xmakefntext{\normalfont\@thefnmark.}}
+\newcommand*\@xmakefntext[1]{%
+    \parindent\z@
+    \def\labelitemi{\textendash}\@revlabeltrue
+    {\setbox0\hbox {#1\hskip.5em plus 1fil}
+      \dimen0=2\wd0\relax
+      \ifdim\dimen0>\unitindent
+        \global\unitindent\dimen0\relax
+        \@indentset
+      \fi}
+    \leavevmode\hb@xt@.5\unitindent{#1\hfil}}
+%</type1|type3>
+%    \end{macrocode}
+%    For the \file{artikel2} document class we have a simpler
+%    definition of |\@makefntext|.
+% \changes{v2.0m}{1994/12/30}{Added missing parameter}
+% \changes{v2.0w}{1997/04/01}{Mixed \cs{def} and \cs{newcommand} syntax}
+%    \begin{macrocode}
+%<*type2>
+\newcommand\@makefntext[1]{%
+    \parindent\othermargin
+    \noindent\hb@xt@\othermargin{\normalfont\@thefnmark\hfil\relax}#1}
+%</type2>
+%    \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}
+%\renewcommand\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \section{Initialization}
+%
+% \subsection{Words}
+%
+% \begin{macro}{\contentsname}
+% \begin{macro}{\listfigurename}
+% \begin{macro}{\listtablename}
+% 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}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\refname}
+% \begin{macro}{\bibname}
+% \begin{macro}{\indexname}
+%    \begin{macrocode}
+%<artikel>\newcommand*\refname{References}
+%<rapport|boek>\newcommand*\bibname{Bibliography}
+\newcommand*\indexname{Index}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\figurename}
+% \begin{macro}{\tablename}
+%    \begin{macrocode}
+\newcommand*\figurename{Figure}
+\newcommand*\tablename{Table}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\partname}
+% \begin{macro}{\chaptername}
+% \begin{macro}{\appendixname}
+% \begin{macro}{\abstractname}
+% \begin{macro}{\seename}
+% \begin{macro}{\andname}
+%    \begin{macrocode}
+\newcommand*\partname{Part}
+%<rapport|boek>\newcommand*\chaptername{Chapter}
+\newcommand*\appendixname{Appendix}
+%<!boek>\newcommand*\abstractname{Abstract}
+\newcommand*\seename{see}
+\newcommand*\andname{and}
+%    \end{macrocode}
+% \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{}
+%    \end{macrocode}
+%    To save space we define |\today| in a way that it is expanded
+%    when the class file is read in. This means that low-level changes
+%    to the internal \TeX{} registers that are happening later on
+%    (e.g.\ if some packages goes |\month=5|) are not reflected in
+%    |\today|.
+% \changes{v2.0r}{1995/10/05}{use \cs{edef} to save a lot of space}
+% \changes{v2.0z}{2004/02/20}{use \cs{def} again, latex/2620}
+%    \begin{macrocode}
+\def\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 in the document classes
+%    \file{artikel} and \file{rapport} unless the user specified
+%    otherwise. In the \file{boek} document class we use the page
+%    style \pstyle{headings} by default. We use arabic pagenumbers.
+%    \begin{macrocode}
+%<!boek>\pagestyle{plain}
+%<boek>\pagestyle{headings}
+\pagenumbering{arabic}      % Arabic page numbers
+%    \end{macrocode}
+%
+% \subsection{Single or double sided printing}
+%
+% \changes{v2.0m}{1994/12/20}{removed typo}
+%    When the \Lopt{twoside} option wasn't specified, we don't try to
+%    make each page as long as all the others.
+%    \begin{macrocode}
+%<*artikel>
+\if@twoside
+\else
+  \raggedbottom
+\fi
+%</artikel>
+%    \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
+%</artikel|rapport|boek>
+%    \end{macrocode}
+%  \end{macro}
+%
+% \Finale
+%
+\endinput
+%
-- 
cgit v1.2.3

