% \iffalse meta-comment
%
% Copyright (C) 1994 Nederlandstalige TeX Gebruikersgroep.
% All rights reserved.
% For additional copyright information see further down in this file.
% 
% This file is part of the NTG document classes distribution
% ----------------------------------------------------------
% 
% This file is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% 
% 
% IMPORTANT NOTICE:
% 
% For error reports in case of UNCHANGED versions see readme file.
% 
% Please do not request updates from us directly.  Distribution is
% done through Mail-Servers and TeX organizations.
% 
% You are not allowed to change this file.
% 
% You are allowed to distribute this file under the condition that
% it is distributed together with all files mentioned in 00readme.txt.
% 
% If you receive only some of these files from someone, complain!
% 
% You are NOT ALLOWED to distribute this file alone.  You are NOT
% ALLOWED to take money for the distribution or use of either this
% file or a changed version, except for a nominal charge for copying
% etc.
% \fi
% \CheckSum{3609}
%% \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         \~}
%
% \changes{v2.0g}{1994/06/01}{Moved the identification section up
%    front; removed the use of \cmd\fileversion c.s.}
% \changes{v2.0g}{1994/06/01}{Added the 'v' to \cmd\changes}
% \changes{v2.0m}{1994/12/20}{Use \cs{newcommand*} instead of
%    \cs{newcommand} in most places}
%
% \iffalse
% \section{Identification}
%
%    These document classes can only be used with \LaTeXe, so we make
%    sure that an appropriate message is displayed when another \TeX{}
%    format is used.
%    \begin{macrocode}
%<artikel|rapport|boek>\NeedsTeXFormat{LaTeX2e}[1994/12/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>
              [1994/12/20 v2.0m
%<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}
% \fi
%
% \iffalse
% \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,\@addtoreset,\@arabic,\@badmath}
\DoNotIndex{\@centercr,\@cite}
\DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
\DoNotIndex{\@input,\@ixpt,\@m}
\DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint}
\DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
\DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
\DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
\DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
\DoNotIndex{\advance,\Alph,\alph}
\DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
\DoNotIndex{\bullet}
\DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
\DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
\DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
\DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
\DoNotIndex{\fbox}
\DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
\DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi}
\DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
\DoNotIndex{\input}
\DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
\DoNotIndex{\NeedsTeXFormat,\newdimen}
\DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
\DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
\DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
\DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman}
\DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength}
\DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
\DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
\DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
\DoNotIndex{\viipt,\vipt,\vskip,\vspace}
\DoNotIndex{\wd,\xiipt,\year,\z@}
%    \end{macrocode}
%    We do want an index, using linenumbers
%    \begin{macrocode}
\EnableCrossrefs
%    \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}}
\newcommand8\pstyle[1]{\textsl {#1}}
\newcommand8\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.0m}{1994/12/23}{Made the oneside option work for the
%    book class}
% 
%
% \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 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}
%
% \begin{macro}{\if@openbib}
%    A switch to indicate if the bibliography has to be produced in
%    the ``open'' format. The default is to use a ``closed'' format.
%    \begin{macrocode}
\newif\if@openbib
\@openbibfalse
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\if@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{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.
%    \begin{macrocode}
\DeclareOption{leqno}{\input{leqno.clo}}
%    \end{macrocode}
%
%  \subsection{Flush left displays}
%
%    The option \Lopt{fleqn} redefines the displayed math environmens
%    in such a way that they come out flush left, with an indentation
%    of |\mathindent| from the prevailing left margin.
%    \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|.
%    \begin{macrocode}
\DeclareOption{openbib}{\@openbibtrue}
%    \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}{\cmd\@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}{\cmd\normalsize doesn't exist, so use
%    \cmd\newcommand}
% \changes{v1.0.8}{1993/12/18}{\cmd\normalsize is now defined in the
%    kernel, so use \cmd\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 \cmd\newcommand instead of
%    \cmd\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 \cmd\newcommand instead of
%    \cmd\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 \cmd\newcommand instead of
%    \cmd\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 {\em not\/} stretch the baselines.
%    \begin{macrocode}
\renewcommand\baselinestretch{}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\unitindent}
%    These document classes all use a single dimension for a number of
%    layout parameters:
%    \begin{itemize}
%      \item the label width in section heading,
%      \item the |\parindent|
%      \item the footnote label indent (= half |\unitindent|)
%      \item listindent on the first level
%    \end{itemize}
%    \begin{macrocode}
\newdimen\unitindent
%    \end{macrocode}
%    The default setting accomodates three levels of single digit
%    section numbering.  
%    \begin{macrocode}
%<*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}
%
% \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 {\em 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}
%
% \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 \cmd\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 \cmd\marginparwidth}
%    \begin{macrocode}
    \setlength\marginparwidth   {.6\@tempdima}
    \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 {-.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 calculation 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}{\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}
%
% \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 counters only need to be set with
% |\setcounter| and other parameters are set using |\renewcommand|.
%
% \paragraph{Limits for the placement of floating objects}
%
% \begin{macro}{\c@topnumber}
%    The \Lcount{topnumber} counter holds the maximum number of
%    floats that can appear on the top of a text page.
%    \begin{macrocode}
%<*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 \cmd\newcommand with
%       \cmd\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 \cmd\newcommand with
%       \cmd\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 \cmd\newcommand with
%       \cmd\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 \cmd\newcommand with
%       \cmd\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 \cmd\newcommand with
%       \cmd\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 \cmd\newcommand with
%       \cmd\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.
%
%
%    \begin{macrocode}
% %%%\mark{{}{}}   % Initializes TeX's marks   <--- can vanish
%    \end{macrocode}
%
% \subsubsection{Defining the page styles}
% \label{sec:pagestyle}
%
%    The pagestyle \pstyle{empty} is defined in \file{latex.dtx}, but
%    the pagestyle \pstyle{plain} is slightly altered here. The
%    difference is that the page numbers are set flush right in
%    onesided and flush left and right in the twosided style.
%
%  \begin{macro}{\ps@plain}
%    
%    \begin{macrocode}
\renewcommand*\ps@plain{%
%    \end{macrocode}
%    The running head are empty in this pagestyle, the page number
%    appears in the running foot.
%    \begin{macrocode}
    \let\@oddhead\@empty\let\@evenhead\@empty
    \def\@oddfoot{\hfil\PageFont\thepage}%
    \if@twoside
      \def\@evenfoot{\PageFont\thepage\hfil}%
    \else
      \let\@evenfoot\@oddfoot
    \fi
%    \end{macrocode}
%    Because the running heads should be empty we |let| |\@mkboth| to
%    |\@gobbletwo|, thus disabling the mark commands.
%    \begin{macrocode}
    \let\@mkboth\@gobbletwo}
%    \end{macrocode}
%  \end{macro}
%
% \begin{macro}{\ps@headings}
%    The definition of the page style \pstyle{headings} has to be
%    different for two sided printing than it is for one sided
%    printing.
%
%    \begin{macrocode}
\if@twoside
    \def\ps@headings{%
%    \end{macrocode}
%    The running feet are empty in this page style, the running head
%    contains the page number and one of the marks.
%    \begin{macrocode}
      \let\@oddfoot\@empty\let\@evenfoot\@empty
      \def\@evenhead{{\PageFont\thepage}\hfil\MarkFont\leftmark}%
      \def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}%
%    \end{macrocode}
%
%    When using this page style, the contents of the running head is
%    determined by the chapter and section titles. So we |\let|
%    |\@mkboth| to |\markboth|.
%    \begin{macrocode}
      \let\@mkboth\markboth
%    \end{macrocode}
%
%    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.
%
%    \begin{macrocode}
%<*artikel>
      \def\sectionmark##1{%
        \markboth {\uppercase{\ifnum \c@secnumdepth >\z@
            \thesection.\hskip 1em\relax\fi
            ##1}}{}}%
      \def\subsectionmark##1{%
        \markright {\ifnum \c@secnumdepth >\@ne
            \thesubsection\hskip 1em\relax \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 {\uppercase{\ifnum \c@secnumdepth >\m@ne
%<boek>          \if@mainmatter
              \@chapapp\ \thechapter. \ %
%<boek>          \fi
            \fi
            ##1}}{}}%
      \def\sectionmark##1{%
        \markright {\uppercase{\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 {\uppercase{%
          \ifnum \c@secnumdepth >\m@ne
            \thesection\hskip 1em\relax
          \fi
          ##1}}}}
%</artikel>
%    \end{macrocode}
%
%    \begin{macrocode}
%<*rapport|boek>
    \def\chaptermark##1{%
      \markright {\uppercase{%
          \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.
%    \begin{macrocode}
%<!boek>\if@titlepage
\renewcommand*\TitleFont{\rmfamily}
\newcommand*\maketitle{%
  \begin{titlepage}%
    \let\footnotesize\small
    \let\footnoterule\relax
%    \end{macrocode}
%    Footnotes on the titlepage, generated by the use of |\thanks|,
%    use symbols in these document classes.
%    \begin{macrocode}
    \long\def\@makefntext##1{\parindent\z@
         \def\labelitemi{--}\@revlabeltrue
         \leavevmode$\m@th^{\@thefnmark}$\kern1em\relax ##1}
    \renewcommand*\thefootnote{\fnsymbol{footnote}}%
%    \end{macrocode}
%    We center the entire title vertically; the centering is set off a
%    little by adding a |\vskip|. In compatibility mode the pagenumber
%    is set to 0 to keep the behaviour of \LaTeX\ 2.09 style files
%    \begin{macrocode}
    \if@compatibility\setcounter{page}{0}\fi
    \null\vfil
    \vskip 60\p@
%    \end{macrocode}
%    Then we set the title, in a |\LARGE| font; leave a little space
%    and set the author(s) in a |\large| font. We do this inside a
%    tabular environment to get them in a single column.
%    Before the date we leave a little whitespace again.
% \changes{v2.0d}{1994/02/23}{Added selection of font by
%    \cmd\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.
%    \begin{macrocode}
  \setcounter{footnote}{0}%
  \let\thanks\relax\let\maketitle\relax
  \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
%    \end{macrocode}
%
%    We want to have the title, author and date information in
%    uppercase, but we have to be very carefull not to put too much
%    text in uppercase. The macros that perform the filtering of texts
%    that shouldn't be in uppercase were developped with th help of
%    Howard Trickey. 
%
% \begin{macro}{\uc@nothanks}
%    This macro takes all the text up to the first use of |\thanks|
%    and passes it to |\uppercase|. The use of |\futurelet| will store
%    the token \emph{after} the |\thanks| in |\@tempa|. The macro
%    |\u@tx| uses that information to determine what to do next.
%    \begin{macrocode}
\def\uc@nothanks#1\thanks{\uppercase{#1}\futurelet\@tempa\uc@tx}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\uc@authornothanks}
%    A document can have more than one author. Usually they are
%    seperated with |\and|. For each author a footnote --using
%    |\thanks| can be present. Therefore this macro takes all the text
%    up to the first use of |\and|, thus picking up all the
%    information for one author. This is than passsed to
%    |\uc@nothanks|, which checks for the presence of |\thanks|. For
%    this to work the argument of |\uc@nothanks| has to be delimited
%    by |\thanks\relax|. 
%    \begin{macrocode}
\def\uc@authornothanks#1\and{\uc@nothanks#1\thanks\relax
%    \end{macrocode}
%    Then we have to check whether the |\and| we ound earlier was put
%    in by the user, in which case information for another user will
%    follow, or by the call from another macro, in which case the
%    |\and| will be followed by a |\relax| token. The |\futurelet|
%    contstruct stores the first token \emph{after} the |\and| in
%    |\@tempa| to be inspected by |\u@ax|.
%    \begin{macrocode}
    \futurelet\@tempa\uc@ax}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\uc@ax}
%    When |\@tempa| contains a |\relax| token nothing needs to be
%    done, when it doesn't we put in a linebreak |\\| the word `and'
%    (stored in |\andname| so that this control sequence can be
%    redeined for other languages), another linebreak and we call
%    |\uc@authornothanks| to continue processing. The |\expandafter|
%    lets \TeX\ see the |\fi| first.
%    \begin{macrocode}
\def\uc@ax{%
  \ifx\@tempa\relax
  \else
    \\ \andname \\ \expandafter\uc@authornothanks
  \fi}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\uc@tx}
%    This macro simply checks whether |\@tempa| contains a |\relax|
%    token. When it doesn't further processing is performed by
%    |\u@ty|. 
%    \begin{macrocode}
\def\uc@tx{\ifx\@tempa\relax
    \else \expandafter\uc@ty \fi}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\uc@ty}
%    The macro |\uc@ty| gets executed when the |\thanks| that
%    delimited text earlier on in the processing had a real argument.
%    In that case it was a |\thanks| put in by the user, \emph{not} by
%    these macros. Therefore the argument is now passed to |\thanks|
%    and processing continues by calling |\uc@nothanks|.
%    \begin{macrocode}
\def\uc@ty#1{\thanks{#1}\uc@nothanks}
%    \end{macrocode}
% \end{macro}
%
%    When the title is not on a page of its own, the layout of the
%    title is a little different. We use symbols to mark the footnotes
%    and we have to deal with two column documents.
%
%    Therefore we first start a new group to keep changes local. Then
%    we redefine |\thefootnote| to use |\fnsymbol|; and change
%    |\@makefnmark| so that footnotemarks have zero width (to make the
%    centering of the author names look better). We also want raised
%    footnotemarkers in the footnotes here.
%    \begin{macrocode}
%<*!boek>
\else
\newcommand*\maketitle{\par
  \begingroup
    \renewcommand*\thefootnote{\fnsymbol{footnote}}%
%<!type2>    \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
%<!type2>    \def\@makefntext{\@xmakefntext{$\m@th^{\@thefnmark}$}}%
%<*type2>
    \long\def\@makefntext##1{\parindent=\z@
      \def\labelitemi{--}%
      \leavevmode\hbox to .5\unitindent{$\m@th^{\@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.
%    \begin{macrocode}
  \endgroup
  \setcounter{footnote}{0}%
  \let\thanks\relax
  \let\maketitle\relax\let\@maketitle\relax
  \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
%    \end{macrocode}
%
% \begin{macro}{\@maketitle}
%    This macro takes care of formatting the title information when we
%    have no seperate title page.
%
%    We always start a new page, leave some white space and center the
%    information. The title is set in a |\LARGE| font, the author
%    names and the in a |\large| font.
% \changes{v2.0d}{1994/02/23}{Added slection of font by \cmd\TitleFont}
%    \begin{macrocode}
\def\@maketitle{%
  \newpage
  \null
  \vskip 2em%
%<type3>\if@titlecentered
  \begin{center}%
    {\LARGE \TitleFont \@title \par}%
    \vskip 1.5em%
    {\large \TitleFont
      \lineskip .5em%
      \begin{tabular}[t]{c}%
        \@author
      \end{tabular}\par}%
    \vskip 1em%
    {\large \TitleFont \@date}%
  \end{center}%
%<*type3>
 \else
     {\LARGE \TitleFont \head@style \@title \par} \vskip 1.5em
     {\large \TitleFont \lineskip .5em \tabcolsep\z@
             \def\and{%%% \begin{tabular} has already started
                      \end{tabular}\hskip 1em plus .17fil
                      \begin{tabular}[t]{l}}%% \end{tabular} will come
             \begin{tabular}[t]{l}\@author\end{tabular}\par}
     \vskip 1em {\large \TitleFont \@date}
 \fi
%</type3>
  \par
  \vskip 1.5em}
\fi
%</!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.
%    \item[$*$] When this is missing the heading is numbered and the
%          corresponding counter is incremented.
%    \item[\meta{altheading}] Gives an alternative heading to use in
%          the table of contents and in the running heads. This should
%          be present when the $*$ form is used.
%    \item[\meta{heading}] The heading of the new section.
%    \end{description}
%  A sectioning command is normally defined to |\@startsection| and
%  its first six arguments.
%
%    The macro |\secdef| can be used when a sectioning command is
%    defined without using |\@startsection|. It has two arguments:
%
%    |\secdef|\meta{unstarcmds}\meta{starcmds}
%
%    \begin{description}
%    \item[\meta{unstarcmds}] Used for the normal form of the
%          sectioning command.
%    \item[\meta{starcmds}] Used for the $*$-form of the
%          sectioning command.
%    \end{description}
%
%    You can use |\secdef| as follows:
% \begin{verbatim}
%       \def\chapter { ... \secdef \CMDA \CMDB }
%       \def\CMDA    [#1]#2{ ... }  % Command to define
%                                   % \chapter[...]{...}
%       \def\CMDB    #1{ ... }      % Command to define
%                                   % \chapter*{...}
% \end{verbatim}
%
%  \begin{macro}{\head@style}
%    In the definition of chapter and section commands a number of
%    settings frequently occur. Therefore we store them in a control
%    sequence. 
%
%    Section headings are to be set extremely raggedright, with no
%    hyphenations, not even at explicit hyphens.
%
%    \begin{macrocode}
\newcommand*\head@style{%
    \interlinepenalty \@M
    \hyphenpenalty=\@M \exhyphenpenalty=\@M
    \rightskip=0cm plus .7\hsize\relax}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@sect}
%    The definition of this macro from \file{latex.dtx} needs to be
%    repeated here because we want to modify its behaviour with
%    respect to:
%    \begin{enumerate}
%      \item the width of the number, which is fixed;
%      \item checking the value of |\unitindent|;
%      \item formatting the section title ragged right;
%      \item changing the argument of |\contentsline|.
%    \end{enumerate}
%    \begin{macrocode}
\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
     \let\@svsec\@empty\else
     \refstepcounter{#1}%
%    \end{macrocode}
%    The following code (within the group) checks the value of
%    |\unitindent|. If the sectionnumber is wider than |\unitindent|
%    its value is adapted and a flag is set to rememeber to store the
%    new value in the \file{.aux}-file.
%    \begin{macrocode}
%<*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>
     \let\@@protect\protect
     \def\protect{\noexpand\protect\noexpand}%
     \edef\@svsec{\@seccntformat{#1}}%
     \let\protect\@@protect\fi
     \@tempskipa #5\relax
      \ifdim \@tempskipa>\z@
        \begingroup #6\relax
%<*type1|type3>
          \@hangfrom{\hskip #3\relax\@svsec}{\head@style #8\par}%
%</type1|type3>
%<*type2>
          \@hangfrom{\hskip #3}
                    {\head@style\@svsec \hskip.3em\relax #8\par}
%</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.
%    \begin{macrocode}
\def\@seccntformat#1{%
%<!type2>  \hbox to \unitindent{\csname the#1\endcsname \hfil}%
%<type2>  \csname the#1\endcsname\hskip.3em
  }
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@ssect}
%    Similar changes need to be made to the definition of |\@ssect|,
%    which is used in `starred' sections.
%    \begin{macrocode}
\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
   \ifdim \@tempskipa>\z@
     \begingroup #4\relax
       \@hangfrom{\hskip #1}{\head@style #5\par}\endgroup
   \else \def\@svsechd{#4\hskip #1\relax #5}\fi
    \@xsect{#3}}
%    \end{macrocode}
%  \end{macro}
%
% \subsubsection{Mark commands}
%
% \begin{macro}{\chaptermark}
% \begin{macro}{\sectionmark}
% \begin{macro}{\subsectionmark}
% \begin{macro}{\subsubsectionmark}
% \begin{macro}{\paragraphmark}
% \begin{macro}{\subparagraphmark}
%    Default initializations of |\...mark| commands.  These commands
%    are used in the definition of the page styles (see
%    section~\ref{sec:pagestyle}) Most of them are already defined by
%    \file{latex.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.
%
%    \begin{macrocode}
\renewcommand*\thepart          {\Roman{part}}
%<artikel>\renewcommand\thesection       {\arabic{section}}
%<*rapport|boek>
\renewcommand*\thechapter       {\arabic{chapter}}
\renewcommand*\thesection       {\thechapter.\arabic{section}}
%</rapport|boek>
\renewcommand*\thesubsection    {\thesection.\arabic{subsection}}
\renewcommand*\thesubsubsection {\thesubsection .\arabic{subsubsection}}
\renewcommand*\theparagraph     {\thesubsubsection.\arabic{paragraph}}
\renewcommand*\thesubparagraph  {\theparagraph.\arabic{subparagraph}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@chapapp}
%    |\@chapapp| is initially defined to be `|\chaptername|'. The
%    |\appendix| command redefines it to be `|\appendixname|'.
%
%    \begin{macrocode}
%<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|.
%    \begin{macrocode}
%<*artikel>
\newcommand*\part{\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}.
%    \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.
%    \begin{macrocode}
                 \hbox{}\vfil
%    \end{macrocode}
%    Here we use |\secdef| to indicate wwhich commands to use to make
%    the actual heading.
%    \begin{macrocode}
                 \secdef\@part\@spart}
%</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.
%    \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
     \reset@font
%    \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.
%    \begin{macrocode}
     \ifnum \c@secnumdepth >\m@ne
%<!type2>       \Large\PartFont\noindent \partname~\thepart
%<type2>       \Large\PartFont\indent \partname~\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.
%    \begin{macrocode}
    \markboth{}{}
    {\centering
     \interlinepenalty \@M
     \reset@font
%    \end{macrocode}
%    When this is a numbered part we have to print the number. We have
%    to expand |\partname| before |\uppercase| is called, therefore we
%    use a temporary control sequence that, when called will execute
%    |\uppercase| on the contents of |\partname|.
%    \begin{macrocode}
     \ifnum \c@secnumdepth >-2\relax
       \Large\PartFont
       \edef\@tempa{\noexpand\uppercase{\partname}}\@tempa~\thepart
       \par
%    \end{macrocode}
%    We leave some space before we print the title and leave the
%    finishing up to |\@endpart|.
%    \begin{macrocode}
       \vskip 20\p@
     \fi
     \Large \PartFont \uppercase{#2}\par}%
    \@endpart}
%</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
%    {\em 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|.
%    \begin{macrocode}
%<*artikel>
\def\@spart#1{%
    {\parindent \z@
     \head@style
     \reset@font
%<!type2>     \Large \PartFont \noindent #1\par}%
%<type2>     \Large \PartFont \indent #1\par}%
     \nobreak
     \vskip 3ex
     \@afterheading}
%</artikel>
%<*rapport|boek>
\def\@spart#1{%
    {\centering
     \interlinepenalty \@M
     \reset@font
     \Large \PartFont #1\par}%
    \@endpart}
%</rapport|boek>
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@endpart}
%    This macro finishes the part page, for both |\@part| and
%    |\@spart|.
%
%    First we fill the current page.
%    \begin{macrocode}
\def\@endpart{\vfil\newpage
%    \end{macrocode}
%    Then, when we are in twosided mode, we produce a completely blank
%    page.
%    \begin{macrocode}
%<!boek>              \if@twoside
                \hbox{}%
                \thispagestyle{empty}%
                \newpage
%<!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}
%    \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 \cmd\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.
%    \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 \reset@font
%    \end{macrocode}
%    Then we check whether the number of the chapter has to be printed.
%    If so we leave some whitespace between the chapternumber and its
%    title.
% \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.
%
%    \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
    \reset@font
    \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.
%    \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}%
    {\reset@font\large\SectFont}}
%    \end{macrocode}
%
% \begin{macro}{\SectFont}
%    The font used to typeset the sections is stored in this maro.
%    \begin{macrocode}
\newcommand*\SectFont{\bfseries}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\subsection}
%    This gives a normal heading with white space above the heading,
%    the title set in |\normalsize\bfseries|, and no indentation on
%    the first paragraph.
%    \begin{macrocode}
\newcommand*\subsection{%
%<*type1|type3>
  \@startsection{subsection}{2}{\z@}%
    {-1\baselineskip\@plus -.5\baselineskip \@minus -.25\baselineskip}%
%</type1|type3>
%<*type2>
  \@startsection{subsection}{2}{\unitindent}%
    {\baselineskip\@plus .5\baselineskip \@minus .25\baselineskip}%
%</type2>
%<type1>    {.25\baselineskip}%
%<type2|type3>    {.01\baselineskip}%
    {\reset@font\normalsize\SSectFont}}
%    \end{macrocode}
%
% \begin{macro}{\SSectFont}
%    The font used to typeset the subsections is stored in this maro.
%    \begin{macrocode}
\newcommand*\SSectFont{\bfseries}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\subsubsection}
%    This gives a normal heading with white space above the heading,
%    the title set in |\normalsize\tm|, and no indentation on the
%    first paragraph.
%    \begin{macrocode}
\newcommand*\subsubsection{%
%<*type1|type3>
  \@startsection{subsubsection}{3}{\z@}%
    {-1\baselineskip plus -.5\baselineskip minus -.25\baselineskip}%
%</type1|type3>
%<*type2>
  \@startsection{subsubsection}{3}{\unitindent}%
    {\baselineskip plus .5\baselineskip minus .25\baselineskip}%
%</type2>
%<type1>    {.25\baselineskip}%
%<type2|type3>    {.01\baselineskip}%
    {\reset@font\normalsize\SSSectFont}}
%    \end{macrocode}
%
% \begin{macro}{\SSSectFont}
%    The font used to typeset the subsubsections is stored in this maro.
%    \begin{macrocode}
%<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 \cmd\slshape into
%                            \cmd\ParaFont} 
%    \begin{macrocode}
\newcommand*\paragraph{%
%<!type2>  \@startsection{paragraph}{4}{\z@}%
%<type2>  \@startsection{paragraph}{4}{\unitindent}%
    {3.25ex \@plus1ex \@minus.2ex}%
    {-1em}%
    {\reset@font\normalsize\ParaFont}}
%    \end{macrocode}
%
% \begin{macro}{\ParaFont}
%    The font used to typeset the paragraphs is stored in this maro.
%    \begin{macrocode}
%<!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|.
%    \begin{macrocode}
\newcommand*\subparagraph{%
%<!type2>  \@startsection{subparagraph}{5}{\parindent}%
%<type2>  \@startsection{subparagraph}{5}{\unitindent}%
    {3.25ex \@plus1ex \@minus .2ex}%
    {-1em}%
    {\reset@font\normalsize\SParaFont}} 
%    \end{macrocode}
%
% \begin{macro}{\SParaFont}
%    The font used to typeset the subparagraphs is stored in this maro.
%    \begin{macrocode}
\newcommand*\SParaFont{\slshape}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Headingfonts}
%    To change the fonts that are used to typeset the title,part,
%    chapter and section headings this macro can be used.
% \changes{v2.0d}{1994/02/23}{Added \cmd\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 top level and |\@listi| values of
% |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep|
%
%    \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 have to initialise these parameters.
%    \begin{macrocode}
\@listi
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@listii}
% \begin{macro}{\@listiii}
% \begin{macro}{\@listiv}
% \begin{macro}{\@listv}
% \begin{macro}{\@listvi}
%    Here are the same macros for the higher level lists.
%    \begin{macrocode}
\def\@listii {\leftmargin\leftmarginii
%<!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{enumi}}
\renewcommand*\theenumii{\alph{enumii}}
\renewcommand*\theenumiii{\roman{enumiii}}
\renewcommand*\theenumiv{\Alph{enumiv}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\labelenumi}
% \begin{macro}{\labelenumii}
% \begin{macro}{\labelenumiii}
% \begin{macro}{\labelenumiv}
%    The label for each item is generated by the commands\\
%    |\labelenumi| ... |\labelenumiv|.
%    \begin{macrocode}
\newcommand*\labelenumi{\theenumi.}
\newcommand*\labelenumii{(\theenumii)}
\newcommand*\labelenumiii{\theenumiii.}
\newcommand*\labelenumiv{\theenumiv.}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\p@enumii}
% \begin{macro}{\p@enumiii}
% \begin{macro}{\p@enumiv}
%    The expansion of |\p@enumN||\theenumN| defines the output of a
%    |\ref| command when referencing an item of the Nth level of an
%    enumerated list.
%    \begin{macrocode}
\renewcommand*\p@enumii{\theenumi}
\renewcommand*\p@enumiii{\theenumi(\theenumii)}
\renewcommand*\p@enumiv{\p@enumiii\theenumiii}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
%  \begin{environment}{enumerate}
%    We want to have different label positioning on different levels of
%    list. To acheive this we have to redefine the \Lenv{enumerate}
%    environment. 
%    
%    \begin{macrocode}
\renewenvironment{enumerate}{%
  \ifnum \@enumdepth >3
    \@toodeep
  \else
    \advance\@enumdepth \@ne
    \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
    \list{\csname label\@enumctr\endcsname}
         {\usecounter{\@enumctr}%
%<type1>           \ifnum \@listdepth=1
%<*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.
%
%    \begin{macrocode}
\newcommand*\labelitemi{$\m@th\bullet$}
\newcommand*\labelitemii{\bfseries --}
\newcommand*\labelitemiii{$\m@th\ast$}
\newcommand*\labelitemiv{$\m@th\cdot$}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%  \begin{environment}{itemize}
%    We want to have differen label positioning on different levels of
%    list. To acheive this we have to redefine the \Lenv{itemize}
%    environment. 
%    \begin{macrocode}
\renewenvironment{itemize}{%
  \ifnum \@itemdepth >3
    \@toodeep
  \else
    \advance\@itemdepth \@ne
    \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
    \list{\csname\@itemitem\endcsname}%
         {%
%<type1>           \ifnum \@listdepth=1\relax
%<*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 \cmd\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|.
%
%    \begin{macrocode}
\newenvironment{verse}
               {\let\\=\@centercr
                \list{}{\itemsep\z@
                        \itemindent-1.5em%
                        \listparindent\itemindent
                        \rightmargin\leftmargin
                        \advance\leftmargin1.5em}%
                \item[]}
               {\endlist}
%    \end{macrocode}
% \end{environment}
%
% \subsubsection{Quotation}
%
% \begin{environment}{quotation}
%   The quotation environment is also defined by making clever use of
%   the list environment's parameters. The lines in the environment
%   are set smaller than |\textwidth|. The first line of a paragraph
%   inside this environment is indented.
%
%    \begin{macrocode}
\newenvironment{quotation}
               {\list{}{%
%<!type2>                        \listparindent\z@
%<type2>                        \listparindent\unitindent
%<boek>                        \listparindent1.5em%
                        \itemindent\listparindent
                        \rightmargin\leftmargin
                        \parsep\z@ \@plus\p@}%
                \item[]}
               {\endlist}
%    \end{macrocode}
% \end{environment}
%
% \subsubsection{Quote}
%
% \begin{environment}{quote}
%   The quote environment is like the quotation environment except
%   that paragraphs are not indented.
%
%    \begin{macrocode}
\newenvironment{quote}
               {\list{}{\rightmargin\leftmargin}%
                \item[]}
               {\endlist}
%    \end{macrocode}
% \end{environment}
%
% \subsubsection{Theorem}
%
%  \begin{macro}{\@begintheorem}
%  \begin{macro}{\@opargbegintheorem}
%  \begin{macro}{\@endtheorem}
%    These document classes have a slightly modified \Lenv{theorem}
%    environment style. Surrounding whitespace is added and an
%    initialisation of |\labelsep|. Finally a slanted font instead of
%    an italic font is used.
%    \begin{macrocode}
\def\@begintheorem#1#2{%
    \vskip\baselineskip \labelsep=.5em%
    \trivlist 
    \item[\hskip \labelsep{\bfseries #1\ #2}]\slshape}
\def\@opargbegintheorem#1#2#3{%
    \vskip\baselineskip \labelsep=.5em%
    \trivlist
    \item[\hskip \labelsep{\bfseries #1\ #2\ (#3)}]\slshape}
\def\@endtheorem{\endtrivlist \vskip\baselineskip}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% \subsubsection{Titlepage}
%
% \begin{environment}{titlepage}
%  In the normal environments, the titlepage environment does nothing
%  but start and end a page, and inhibit page numbers.  It also resets
%  the page number to zero.  In two-column style, it still makes a
%  one-column page.
%
% \changes{v1.0.7}{1993/12/09}{Moved the setting of
%    \cmd\@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}{0}
%<*artikel|rapport>
      \else
        \setcounter{page}{1}%
%</artikel|rapport>
      \fi}
     {\if@restonecol\twocolumn \else \newpage \fi
%<artikel|rapport>       \setcounter{page}{1}%
       }
%    \end{macrocode}
% \end{environment}
%
% \subsubsection{Appendix}
%
% \begin{macro}{\appendix}
%
%    The |\appendix| command is not really an environment, it is a
%    macro that makes some changes in the way things are done.
%
%    In 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}
%
%    \begin{macrocode}
%<*artikel>
\newcommand*\appendix{\par
  \setcounter{section}{0}%
  \setcounter{subsection}{0}%
  \renewcommand*\thesection{\Alph{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}
%
%    \begin{macrocode}
%<*rapport|boek>
\newcommand*\appendix{\par
  \setcounter{chapter}{0}%
  \setcounter{section}{0}%
  \renewcommand*\@chapapp{\appendixname}%
  \renewcommand*\thechapter{\Alph{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}
%    The equation counter will be reset at beginning of a new chapter
%    and the equation number will be prefixed by the chapter number.
%
%    This code  must follow the |\chapter| definition, or more exactly
%    the definition of the chapter counter.
%    \begin{macrocode}
%<artikel>\renewcommand*\theequation{\arabic{equation}}
%<*rapport|boek>
\@addtoreset{equation}{chapter}
\renewcommand*\theequation{\thechapter.\arabic{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 {\em all} floating objects.
%
%    \end{description}
%
%    The actual environment that implements a floating object such as
%    a figure is defined using the macros |\@float| and |\end@float|,
%    which are defined in \file{latex.dtx}.
%
%    An environment that implements a single column floating object is
%    started with |\@float{|\texttt{TYPE}|}[|\meta{placement}|]| of type
%    \texttt{TYPE} with \meta{placement} as the placement specifier.
%    The default value of \meta{PLACEMENT} is defined by |\fps@TYPE|.
%
%    The environment is ended by |\end@float|.  E.g., |\figure| ==
%    |\@float|{figure}, |\endfigure| == |\end@float|.
%
% \subsubsection{Figure}
%
%    Here is the implementation of the figure environment.
%
% \begin{macro}{\c@figure}
%    First we have to allocate a counter to number the figures. In 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>
\newcounter{figure}[chapter]
\renewcommand*\thefigure{\thechapter.\@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'.
%    \begin{macrocode}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename~\thefigure}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{environment}{figure}
% \begin{environment}{figure*}
%    And the definition of the actual environment. The form with the
%    |*| is used for double column figures.
%    \begin{macrocode}
\newenvironment{figure}
               {\@float{figure}}
               {\end@float}
\newenvironment{figure*}
               {\@dblfloat{figure}}
               {\end@dblfloat}
%    \end{macrocode}
% \end{environment}
% \end{environment}
%
% \subsubsection{Table}
%
%    Here is the implementation of the table environment. It is very
%    much the same as the figure environment.
%
% \begin{macro}{\c@table}
%    First we have to allocate a counter to number the tables. In 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>
\newcounter{table}[chapter]
\renewcommand*\thetable{\thechapter.\@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'.
%    \begin{macrocode}
\def\fps@table{tbp}
\def\ftype@table{2}
\def\ext@table{lot}
\def\fnum@table{\tablename~\thetable}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{environment}{table}
% \begin{environment}{table*}
%    And the definition of the actual environment. The form with the
%    |*| is used for double column tables.
%    \begin{macrocode}
\newenvironment{table}
               {\@float{table}}
               {\end@float}
\newenvironment{table*}
               {\@dblfloat{table}}
               {\end@dblfloat}
%    \end{macrocode}
% \end{environment}
% \end{environment}
%
% \subsubsection{Captions}
%
% \begin{macro}{\@makecaption}
%    The |\caption| command calls |\@makecaption| to format the
%    caption of floating objects. It gets two arguments,
%    \meta{number}, the number of the floating object and \meta{text},
%    the text of the caption. Usually \meta{number} contains a string
%    such as `Figure 3.2'. The macro can assume it is called inside a
%    |\parbox| of right width, with |\normalsize|.
%
% \begin{macro}{\abovecaptionskip}
% \begin{macro}{\belowcaptionskip}
%    These lengths contain the amount of white space to leave above
%    and below the caption.
%    \begin{macrocode}
\newlength\abovecaptionskip
\newlength\belowcaptionskip
\setlength\abovecaptionskip{10\p@}
\setlength\belowcaptionskip{0\p@}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
%    The definition of this macro is |\long| in order to allow more
%    then one paragraph in a caption.
% \changes{v2.0d}{1994/02/23}{Introduced \cmd\CaptionLabelFont and
%                            \cmd\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
    \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip}
%    \end{macrocode}
% \end{macro}
%
%  \begin{macro}{\CaptionLabelFont}
%  \begin{macro}{\CaptionTextFont}
%    These macros can contain the fonts used for typesetting captions.
%    By default they do nothing.
%    \begin{macrocode}
\newcommand*\CaptionLabelFont{\relax}
\newcommand*\CaptionTextFont{\relax}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\CaptionFonts}
%    To change the fonts that are used to typeset captions
%    this macro can be used.
%    \begin{macrocode}
\newcommand*\CaptionFonts[2]{%
  \renewcommand*\CaptionLabelFont{#1}%
  \renewcommand*\CaptionTextFont{#2}%
  }
%    \end{macrocode}
%  \end{macro}
%
% \subsection{Font changing}
%
% \changes{v2.0f}{1994/04/18}{\cmd\@newfontswitch and
%    \cmd\@renewfontswitch have become \cmd\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 \cmd\@renewfontswitch.  Compatibility mode defines
%    \cmd\@renewfontswitch to do nothing, so we don't need to check for
%    compatibility mode any more.}
% \changes{v1.0.10}{1993/12/20}{Added \cmd\normalfont back in the
%                              definitions of \cmd\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*}}
%    \begin{macrocode}
\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\pem}
%    The definition of |\pem| is changed here to have slanted instead
%    of italic fonts.
%    \begin{macrocode}
\def\pem{\@nomath\em \ifdim \fontdimen\@ne\font >\z@
                       \upshape \else \slshape \fi}
%    \end{macrocode}
%  \end{macro}
%
% \section{Cross Referencing}
% \subsection{Table of Contents, etc.}
%
%     A |\section| command writes a
%     |\contentsline{section}{|\meta{title}|}{|\meta{page}|}| command
%     on the \file{.toc} file, where \meta{title} contains the
%     contents of the entry and \meta{page} is the page number. If
%     sections are being numbered, then \meta{title} will be of the
%     form |\numberline{|\meta{num}|}{|\meta{heading}|}| where
%     \meta{num} is the number produced by |\thesection|.  Other
%     sectioning commands work similarly.
%
%     A |\caption| command in a `figure' environment writes
%
%     |\contentsline{figure}{\numberline{|\meta{num}|}{|%
%                    \meta{caption}|}}{|\meta{page}|}|
%
%     on the .\file{lof} file, where \meta{num} is the number produced
%     by |\thefigure| and \meta{caption} is the figure caption.  It
%     works similarly for a `table' environment.
%
%    The command |\contentsline{|\meta{name}|}| expands to
%    |\l@|\meta{name}.  So, to specify the table of contents, we must
%    define |\l@chapter|, |\l@section|, |\l@subsection|, ... ; to
%    specify the list of figures, we must define |\l@figure|; and so
%    on.  Most of these can be defined with either the
%    |\@dottedtocline| or the |\@regtocline| command, which work as
%    follows. 
%
%    |\@dottedtocline{|\meta{level}|}{|\meta{indent}|}{|^^A
%                      \meta{numwidth}|}{|^^A
%                      \meta{title}|}{|\meta{page}|}|
%
%    |\@regtocline{|\meta{level}|}{|\meta{title}|}{|\meta{page}|}|
%
%    \begin{description}
%    \item[\meta{level}] An entry is produced only if\meta{ level}
%        $<=$ value of the \Lcount{tocdepth} counter.  Note,
%        |\chapter| is level 0, |\section| is level 1, etc.
%    \item[\meta{indent}] The indentation from the outer left margin
%        of the start   of the contents line.
%    \item[\meta{numwidth}] The width of a box in which the section
%        number is to go, if \meta{title} includes a |\numberline|
%        command.
%    \end{description}
%
% \begin{macro}{\@pnumwidth}
% \begin{macro}{\@tocrmarg}
% \begin{macro}{\@dotsep}
%    This command uses the following three parameters, which are set
%    with a |\newcommand| (so em's can be used to make them depend upon
%    the font).
%    \begin{description}
%    \item[\texttt{\bslash @pnumwidth}] The width of a box in which the
%        page number is put.
% \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
%    \cmd\@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.
%    \begin{macrocode}
    \chapter*{\contentsname
%</rapport|boek>
%<artikel>    \section*{\contentsname
        \@mkboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}}%
%    \end{macrocode}
%    The the actual table of contents is made by calling
%    |\@starttoc{toc}|. After that we restore twocolumn mode if
%    necessary.
%    \begin{macrocode}
    \@starttoc{toc}%
%<!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 .2pt
    {\hangindent\z@ \@afterindenttrue \interlinepenalty\@M
     \leftskip\unitindent
     \rightskip=\unitindent plus 1fil
     \parfillskip=0cm
     \@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{\hbox to\@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{\uppercase}
\fi
%    \end{macrocode}
%  \end{macro}
%
% \begin{macro}{\l@part}
%    Each sectioning command needs an additional macro to format its
%    entry in the table of contents, as described above. The macro for
%    the entry for parts is defined in a special way.
%
%    First we make sure that if a pagebreak should occur, it occurs
%    {\em before} this entry. Also a little whitespace is added and a
%    group begun to keep changes local.
%    \changes{v1.0.8}{1993/12/18}{Replaced -\cmd\@secpenalty by
%       \cmd\@secpenalty.  ASAJ.}
%
%    First we have the definition from the standard classes.
%    \begin{macrocode}
\if@oldtoc
\newcommand*\l@part[2]{%
%<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 \hbox to\@pnumwidth{\hss #2}}\par
%    \end{macrocode}
%    Prevent a pagebreak immediately after this entry, but use
%    |\everypar| to reset the |\if@nobreak| switch. Finally we close
%    the group.
%    \begin{macrocode}
       \nobreak
%<artikel>       \if@compatibility
         \global\@nobreaktrue
         \everypar{\global\@nobreakfalse\everypar{}}
%<artikel>      \fi
      \endgroup}
%    \end{macrocode}
%    Then we can introduce our new definition.
%    \begin{macrocode}
\else
%<artikel>   \newcommand*\l@part{\addpenalty{\@secpenalty}
%<!artikel>   \newcommand*\l@part{\addpenalty{-\@highpenalty}
               \addvspace{2.25em \@plus \p@}\@regtocline{0}}
\fi
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\l@chapter}
%    This macro formats the entries in the table of contents for
%    chapters. It is very similar to |\l@part|
%
%    First we make sure that if a pagebreak should occur, it occurs
%    {\em before} this entry. Also a little whitespace is added and a
%    group begun to keep changes local.
%
%    Again we first present the `standard' definition
%    \begin{macrocode}
%<*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\hbox to\@pnumwidth{\hss #2}\par
    \penalty\@highpenalty
   \endgroup}
%    \end{macrocode}
%    Then we present our new definition.
%    \begin{macrocode}
\else
  \newcommand*\l@chapter{\@regtocline{0}}
\fi
%</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 bok document classes.
%
%    First we make sure that if a pagebreak should occur, it occurs
%    {\em before} this entry. Also a little whitespace is added and a
%    group begun to keep changes local.
%    \changes{v1.0.8}{1993/12/18}{Replaced -\cmd\@secpenalty by
%       \cmd\@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\hbox to\@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
%                             \cmd\@restonecolfalse}
%    \begin{macrocode}
\newcommand*\listoffigures{%
%<*rapport|boek>
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \chapter*{\listfigurename
%</rapport|boek>
%<artikel>    \section*{\listfigurename
      \@mkboth{\uppercase{\listfigurename}}%
              {\uppercase{\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
%                             \cmd\@restonecolfalse}
%    \begin{macrocode}
\newcommand*\listoftables{%
%<*rapport|boek>
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \chapter*{\listtablename
%</rapport|boek>
%<artikel>    \section*{\listtablename
      \@mkboth{\uppercase{\listtablename}}{\uppercase{\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
\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}
%    \begin{macrocode}
\newenvironment{thebibliography}[1]
%<artikel>     {\section*{\refname
%<artikel>         \@mkboth{\uppercase{\refname}}%
%<artikel>                {\uppercase{\refname}}}%
%<!artikel>     {\chapter*{\bibname
%<!artikel>         \@mkboth{\uppercase{\bibname}}%
%<!artikel>                 {\uppercase{\bibname}}}%
      \list{\@biblabel{\arabic{enumiv}}}%
           {\settowidth\labelwidth{\@biblabel{#1}}%
            \leftmargin\labelwidth
            \advance\leftmargin\labelsep
            \if@openbib
              \advance\leftmargin\bibindent
              \itemindent -\bibindent
              \listparindent \itemindent
              \parsep \z@
            \fi
            \usecounter{enumiv}%
            \let\p@enumiv\@empty
            \renewcommand*\theenumiv{\arabic{enumiv}}}%
      \if@openbib
        \renewcommand*\newblock{\par}
      \else
        \renewcommand*\newblock{\hskip .11em \@plus.33em \@minus.07em}%
      \fi
      \sloppy\clubpenalty4000\widowpenalty4000%
      \sfcode`\.=\@m}
     {\def\@noitemerr{\@warning{Empty `thebibliography' environment}}%
      \endlist}
%    \end{macrocode}
% \end{environment}
%
% \begin{macro}{\@biblabel}
%    The label for a |\bibitem[...]| command is produced by this
%    macro. The default from \file{latex.dtx} is used.
%    \begin{macrocode}
% \renewcommand*\@biblabel[1]{[#1]\hfill}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@cite}
%    The output of the |\cite| command is produced by this macro. The
%    default from \file{latex.dtx} is used.
%    \begin{macrocode}
% \renewcommand*\@cite[1]{[#1]}
%    \end{macrocode}
% \end{macro}
%
%  \subsection{The index}
%
% \begin{environment}{theindex}
%    The environment `theindex' can be used for indices. It makes an
%    index with two columns, with each entry a seperate paragraph. At
%    the user level the commands |\item|, |\subitem| and |\subsubitem|
%    are used to produce index entries of various levels. When a new
%    letter of the alphabet is encountered an amount of |\indexspace|
%    white space can be added.
%
%
% \changes{v1.0.7}{1993/12/09}{Moved the setting of
%                             \cmd\@restonecoltrue}
%    \begin{macrocode}
\newenvironment{theindex}
               {\if@twocolumn
                  \@restonecolfalse
                \else
                  \@restonecoltrue
                \fi
                \columnseprule \z@
                \columnsep 35\p@
%<artikel>                \twocolumn[\section*{\indexname}]%
%<!artikel>                \twocolumn[\@makeschapterhead{\indexname}]%
                \@mkboth{\uppercase{\indexname}}%
                        {\uppercase{\indexname}}%
                \thispagestyle{plain}\parindent\z@
                \parskip\z@ \@plus .3\p@\relax
                \let\item\@idxitem}
%    \end{macrocode}
%    When the document continues after the index and it was a one
%    column document we have to switch back to one column after the
%    index.
%    \begin{macrocode}
               {\if@restonecol\onecolumn\else\clearpage\fi}
%    \end{macrocode}
% \end{environment}
%
% \begin{macro}{\@idxitem}
% \begin{macro}{\subitem}
% \begin{macro}{\subsubitem}
%    Thsee macros are used to format the entries in the index. ^^AA ???
%    \begin{macrocode}
\newcommand*\@idxitem  {\par\hangindent 40\p@}
\newcommand*\subitem   {\par\hangindent 40\p@ \hspace*{20\p@}}
\newcommand*\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\indexspace}
%    The amount of white space that is inserted between `letter
%    blocks' in the index.
%    \begin{macrocode}
\newcommand*\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
%    \end{macrocode}
% \end{macro}
%
% \subsection{Footnotes}
%
% \begin{macro}{\footnoterule}
%    Usually, footnotes are separated from the main body of the text
%    by a small rule. This rule is drawn by the macro |\footnoterule|.
%    We have to make sure that the rule takes no vertical space (see
%    \file{plain.tex}) so we compensate for the natural heigth of the
%    rule of 0.4pt by adding the right amount of vertical skip.
%
%    To prevent the rule from colliding with the footnote we first add
%    a little negative vertical skip, then we put the rule and add
%    some positive vertical skip.
%    \begin{macrocode}
\renewcommand*\footnoterule{%
  \kern-3\p@
%<*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{\hbox to .5\unitindent{#1\hfil}}#2}
% \end{verbatim}
%    The effect of this definition is that all lines of the footnote
%    are indented by 10pt, while the first line of a new paragraph is
%    indented by 1em. To change these dimensions, just substitute the
%    desired value for `10pt' (in both places) or `1em'.  The mark is
%    flushright against the footnote.
%
%    In these document classes we use a simpler macro, in which the
%    footnote text is set like an ordinary text paragraph, with no
%    indentation except on the first line of the footnote. Thus, all
%    the macro must do is set |\parindent| to the appropriate value
%    for succeeding paragraphs and put the proper indentation before
%    the mark. We change the label of itemized lists inside footnotes
%    and need to check that the |\unitindent| is large enough for our
%    purposes. 
%
%    For most of the document classes produced from this file we need
%    a slightly modified |\@makefntext| on the title page, so we
%    introduce an extra macro, |\@xmakefntext|. 
% \changes{v2.0l}{1994/07/11}{Moved `.' from within \cs{@xmakefntext}
%    to \cs{@makefntext}}
%    \begin{macrocode}
%<*type1|type3>
\def\@makefntext{\@xmakefntext{$\m@th\@thefnmark$.}}
\long\def\@xmakefntext#1{%
    \parindent\z@
    \def\labelitemi{--}\@revlabeltrue
    {\setbox0=\hbox {#1\hskip.5em plus 1fil}
      \dimen0=2\wd0\relax
      \ifdim\dimen0>\unitindent
        \global\unitindent=\dimen0\relax
        \@indentset
      \fi}
    \leavevmode\hbox to .5\unitindent{#1\hfil}}
%</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}
%    \begin{macrocode}
%<*type2>
\long\def\@makefntext#1{%
    \parindent=\othermargin
    \noindent\hbox to \othermargin{$\@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}
%\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
%    \end{macrocode}
% \end{macro}
%
% \section{Initialization}
%
% \subsection{Words}
%
% \begin{macro}{\contentsname}
% \begin{macro}{\listfigurename}
% \begin{macro}{\listtablename}
% \begin{macro}{\refname}
% \begin{macro}{\bibname}
% \begin{macro}{\indexname}
% \begin{macro}{\figurename}
% \begin{macro}{\tablename}
% \begin{macro}{\partname}
% \begin{macro}{\chaptername}
% \begin{macro}{\appendixname}
% \begin{macro}{\abstractname}
% \begin{macro}{\seename}
% \begin{macro}{\andname}
% This document class is for documents prepared in the English language.
% To prepare a version for another language, various English words must
% be replaced.  All the English words that require replacement are
% defined below in command names.
%
%    \begin{macrocode}
\newcommand*\contentsname{Contents}
\newcommand*\listfigurename{List of Figures}
\newcommand*\listtablename{List of Tables}
%<artikel>\newcommand*\refname{References}
%<rapport|boek>\newcommand*\bibname{Bibliography}
\newcommand*\indexname{Index}
\newcommand*\figurename{Figure}
\newcommand*\tablename{Table}
\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}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{Date}
%
% \begin{macro}{\today}
%    This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
%    to provide the date of the \LaTeX-run.
%    \begin{macrocode}
\newcommand*\today{\ifcase\month\or
  January\or February\or March\or April\or May\or June\or
  July\or August\or September\or October\or November\or December\fi
  \space\number\day, \number\year}
%    \end{macrocode}
% \end{macro}
%
% \subsection{Two column mode}
%
% \begin{macro}{\columnsep}
%    This gives the distance between two columns in two column mode.
%    \begin{macrocode}
\setlength\columnsep{10\p@}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\columnseprule}
%    This gives the width of the rule between two columns in two
%    column mode. We have no visible rule.
%    \begin{macrocode}
\setlength\columnseprule{0\p@}
%    \end{macrocode}
% \end{macro}
%
% \subsection{The page style}
%    We have \pstyle{plain} pages 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
%
