% \iffalse
%
% Copyright (C) 1994 -- 2023 by Nederlandstalige TeX Gebruikersgroep.
% Based on classes.dtx
% Copyright (C) 1999 LaTeX3 project, all rights reserved.
%
% This file is part of the NTG document classes distribution
% ----------------------------------------------------------
%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2008 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work is Johannes Braams.
%
% The list of all files belonging to the NTG document classes
% distribution is given in the file `manifest.txt.
%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
%
% \fi
% \CheckSum{3793}
%\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}
%\NeedsTeXFormat{LaTeX2e}[1995/12/01]
% \end{macrocode}
%
% Announce the Class name and its version:
% \begin{macrocode}
%<*artikel>
%\ProvidesClass{artikel1}%
%\ProvidesClass{artikel2}%
%\ProvidesClass{artikel3}%
%
%<*rapport>
%\ProvidesClass{rapport1}%
%\ProvidesClass{rapport3}%
%
%<*boek>
%\ProvidesClass{boek}%
%\ProvidesClass{boek3}%
%
%<10pt>\ProvidesFile{ntg10.clo}
%<11pt>\ProvidesFile{ntg11.clo}
%<12pt>\ProvidesFile{ntg12.clo}
%<*driver>
\ProvidesFile{ntgclass.drv}
%
[2023-01-10 v2.1f
% NTG LaTeX document class]
%<10pt|11pt|12pt> NTG LaTeX file (size option)]
% \end{macrocode}
% \changes{v2.0e}{1994/03/20}{removed the typeout statements they are
% no longer needed separately}
%
% \section{The documentation driver file}
%
% We use the document class provided by the \LaTeXe distribution
% for producing the documentation.
% \changes{v2.0e}{1994/03/20}{moved the driver code in order not to
% need a separate driver}
% \begin{macrocode}
%<*driver>
]
\documentclass{ltxdoc}
% \end{macrocode}
%
% We don't want everything to appear in the index
% \begin{macrocode}
\DoNotIndex{\',\.,\@M,\@@input,\@Alph,\@alph,\@addtoreset,\@arabic}
\DoNotIndex{\@badmath,\@centercr,\@cite}
\DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
\DoNotIndex{\@input,\@ixpt,\@m,\@minus,\@mkboth}
\DoNotIndex{\@ne,\@nil,\@nomath,\@plus,\@set@topoint}
\DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
\DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
\DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
\DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
\DoNotIndex{\advance,\Alph,\alph}
\DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
\DoNotIndex{\bullet}
\DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
\DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
\DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
\DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
\DoNotIndex{\fbox}
\DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
\DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi}
\DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
\DoNotIndex{\input}
\DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
\DoNotIndex{\NeedsTeXFormat,\newdimen}
\DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
\DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
\DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
\DoNotIndex{\refstepcounter,\relax,\renewcommand}
\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily}
\DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength}
\DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
\DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
\DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
\DoNotIndex{\viipt,\vipt,\vskip,\vspace}
\DoNotIndex{\wd,\xiipt,\year,\z@}
% \end{macrocode}
% We do want an index, using linenumbers
% \changes{v2.0t}{1996/03/31}{Added \cs{CodelineIndex} to make sure a
% \texttt{.idx} file is produced}
% \begin{macrocode}
\EnableCrossrefs
\CodelineIndex
% \end{macrocode}
% We use so many \file{docstrip} modules that we set the
% \texttt{StandardModuleDepth} counter to 1.
% \begin{macrocode}
\setcounter{StandardModuleDepth}{1}
% \end{macrocode}
% The following command retrieves the date and version information
% from the file.
% \begin{macrocode}
\GetFileInfo{ntgclass.drv}
% \end{macrocode}
% Some commonly used abbreviations
% \begin{macrocode}
\newcommand*\Lopt[1]{\textsf {#1}}
\newcommand*\file[1]{\texttt {#1}}
\newcommand*\Lcount[1]{\textsl {\small#1}}
\newcommand*\pstyle[1]{\textsl {#1}}
\newcommand*\Lenv[1]{\textsf {#1}}
% \end{macrocode}
% We also want the full details.
% \begin{macrocode}
\begin{document}
\DocInput{ntgclass.dtx}
\PrintIndex
% ^^A\PrintChanges
\end{document}
%
% \end{macrocode}
% \fi
%
% \changes{v2.0b}{1994/02/02}{Removed typos that were found in
% classes.dtx, synced with that file}
% \changes{v2.0d}{1994/02/23}{Fixed some errors in the documentation}
% \changes{v2.0f}{1994/04/18}{Sync'ed with classes.dtx}
% \changes{v2.0g}{1994/06/01}{Moved the identification section up
% front; removed the use of \cs{fileversion} c.s.}
% \changes{v2.0g}{1994/06/01}{Added the 'v' to \cs{changes}}
% \changes{v2.0m}{1994/12/20}{Use \cs{newcommand*} instead of
% \cs{newcommand} in most places}
% \changes{v2.0m}{1994/12/23}{Made the oneside option work for the
% book class}
% \changes{v2.0p}{1995/08/09}{Use \cs{cs} instead of \cs{cmd} in
% \cs{changes} entries}
% \changes{v2.0p}{1995/08/10}{use \cs{hb@xt@} instead of \cs{hbox}
% \texttt{to}}
% \changes{v2.0x}{1997/09/08}{Repaired a few documentation bugs}
% \changes{v2.1c}{2020/02/18}{Update to synchronize with classes.dtx}
% \changes{v2.1c}{2020/02/18}{Various commands made robust}
% \changes{v2.1d}{2020/02/20}{Upped version number for new upload to CTAN}
%
% \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-2023 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
%\@titlepagefalse
%\@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}
%\newif\if@openright
% \end{macrocode}
% \end{macro}
%
% \changes{v2.0r}{1995/10/05}{Macro \cs{if@openbib} removed}
%
% \begin{macro}{\if@mainmatter}
% \changes{v2.0m}{1994/12/23}{Moved the allocation of
% \cs{if@mainmatter} here}
%
% The switch |\if@mainmatter|, only available in the document class
% book, indicates whether we are processing the main material in
% the book.
% \begin{macrocode}
%\newif\if@mainmatter \@mainmattertrue
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\if@oldtoc}
% A switch to indicate if `old' layout of the table of contents
% should be produced. These document classes normally produce a
% table of contents that looks quite different from what the
% standard classes produce.
% \begin{macrocode}
\newif\if@oldtoc
\@oldtocfalse
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\if@allcaps}
% By default the text on the titlepage is set in capital letters.
% This can be disabled by the option \Lopt{mctitle}, which sets the
% switch |\if@allcaps| to false.
% \begin{macrocode}
\newif\if@allcaps
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\if@titlecentered}
% In the document classes \file{artikel3} and \file{rapport3} the
% default placement of the title that is produced by |\maketitle|
% is flushleft. This can be changed by the switch
% |\if@titlecentered|.
% \begin{macrocode}
%\newif\if@titlecentered
%\@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}
%\DeclareOption{openright}{\@openrighttrue}
%\DeclareOption{openany}{\@openrightfalse}
% \end{macrocode}
%
% For these document classes there used to be a file
% \file{voorwerk.sty} which was a replacement for
% \file{titlepag.sty}. Therefore we also have the option
% \Lopt{voorwerk}.
% \begin{macrocode}
\DeclareOption{voorwerk}{\@titlepagetrue}
\DeclareOption{geenvoorwerk}{\@titlepagefalse}
% \end{macrocode}
%
%
% \subsection{Table of contents formatting}
%
% This document class uses a new layout for the table of contents,
% but in order to maintain compatibility with the standard \LaTeXe
% document classes we supply an extra option: \Lopt{oldtoc}. If
% this option is specified the switch |\if@oldtoc| will be set
% true.
% \begin{macrocode}
\DeclareOption{oldtoc}{\@oldtoctrue}
% \end{macrocode}
%
% \subsection{Formatting of the title}
%
% The option \Lopt{titlecentered} changes the behaviour of the
% |\maketitle| command. It then produces a title like it does for
% the \file{artikel1} document class.
% \begin{macrocode}
%\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}
%\DeclareOption{mctitle}{\@allcapsfalse}
%\DeclareOption{uctitle}{\@allcapstrue}
% \end{macrocode}
%
% \subsection{Twocolumn printing}
%
% Two-column and one-column printing is again realized via a switch.
% \begin{macrocode}
\DeclareOption{onecolumn}{\@twocolumnfalse}
\DeclareOption{twocolumn}{\@twocolumntrue}
% \end{macrocode}
%
% \subsection{Equation numbering on the left}
%
% The option \Lopt{leqno} can be used to get the equation numbers
% on the left side of the equation. It loads code which is generated
% automatically from the kernel files when the format is built.
% If the equation number does get a special formatting then instead
% of using the kernel file the class would need to provide the code
% explicitly.
% \begin{macrocode}
\DeclareOption{leqno}{\input{leqno.clo}}
% \end{macrocode}
%
% \subsection{Flush left displays}
%
% The option \Lopt{fleqn} redefines the displayed math environments
% in such a way that they come out flush left, with an indentation
% of |\mathindent| from the prevailing left margin. It loads code
% which is generated automatically from the kernel files when the
% format is built.
% \changes{v1.0.8}{1993/12/18}{Corrected some typos. ASAJ.}
% \begin{macrocode}
\DeclareOption{fleqn}{\input{fleqn.clo}}
% \end{macrocode}
%
% \subsection{Open bibliography}
%
% The option \Lopt{openbib} produces the ``open'' bibliography
% style, in which each block starts on a new line, and succeeding
% lines in a block are indented by |\bibindent|.
% \changes{v2.0r}{1995/10/05}{openbib option reimplemented}
% \begin{macrocode}
\DeclareOption{openbib}{%
% \end{macrocode}
% First some hook into the bibliography environment is filled.
% \begin{macrocode}
\AtEndOfPackage{%
\renewcommand\@openbib@code{%
\advance\leftmargin\bibindent
\itemindent -\bibindent
\listparindent \itemindent
\parsep \z@
}%
% \end{macrocode}
% In addition the definition of |\newblock| is overwritten.
% \begin{macrocode}
\renewcommand\newblock{\par}}%
}
% \end{macrocode}
%
% \section{Executing Options}
%
% Here we execute the default options to initialize certain
% variables. Note that the document class `boek' always uses two
% sided printing.
% \begin{macrocode}
%<*artikel>
\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,uctitle}
%
%<*rapport>
\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,uctitle,openany}
%
%<*boek>
\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,uctitle,openright}
%
% \end{macrocode}
%
% The |\ProcessOptions| command causes the execution of the code
% for every option \Lopt{FOO}
% which is declared and for which the user typed
% the \Lopt{FOO} option in his
% |\documentclass| command. For every option \Lopt{BAR} he typed,
% which is not declared, the option is assumed to be a global option.
% All options will be passed as document options to any
% |\usepackage| command in the document preamble.
% \begin{macrocode}
\ProcessOptions
% \end{macrocode}
% Now that all the options have been executed we can load the
% chosen class option file that contains all size dependent code.
% \begin{macrocode}
\input{ntg1\@ptsize.clo}
%
% \end{macrocode}
%
% \section{Loading Packages}
%
% These class files do not load additional packages.
%
%
% \section{Document Layout}
% \label{sec:maincode}
%
% In this section we are finally dealing with the nasty typographical
% details.
%
% \subsection{Fonts}
%
% \LaTeX\ offers the user commands to change the size of the font,
% relative to the `main' size. Each relative size changing command
% |\size| executes the command
% |\@setfontsize||\size|\meta{font-size}\meta{baselineskip} where:
%
% \begin{description}
% \item[\meta{font-size}] The absolute size of the font to use from
% now on.
%
% \item[\meta{baselineskip}] The normal value of |\baselineskip|
% for the size of the font selected. (The actual value will be
% |\baselinestretch| * \meta{baselineskip}.)
% \end{description}
%
% A number of commands, defined in the \LaTeX{} kernel, shorten the
% following definitions and are used throughout. They are:
% \begin{center}
% \begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
% \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\
% \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\
% \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\
% ...
% \end{tabular}
% \end{center}
%
% \begin{macro}{\normalsize}
% \begin{macro}{\@normalsize}
% \changes{v2.0b}{1994/02/02}{\cs{@normalsize} now defined in the
% kernel}
%
% The user level command for the main size is |\normalsize|.
% Internally \LaTeX{} uses |\@normalsize| when it refers to the
% main size. |\@normalsize| will be defined to work like
% |\normalsize| if the latter is redefined from its default
% definition (that just issues an error message). Otherwise
% |\@normalsize| simply selects a 10pt/12pt size.
%
% The |\normalsize| macro also sets new values for\\
% |\abovedisplayskip|, |\abovedisplayshortskip| and
%
% \changes{v1.0.5}{1993/12/07}{\cs{normalsize} doesn't exist, so use
% \cs{newcommand}}
% \changes{v1.0.8}{1993/12/18}{\cs{normalsize} is now defined in the
% kernel, so use \cs{renewcommand}. ASAJ.}
% \begin{macrocode}
%<*10pt|11pt|12pt>
\renewcommand\normalsize{%
%<*10pt>
\@setfontsize\normalsize\@xpt\@xiipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
%10pt>
%<*11pt>
\@setfontsize\normalsize\@xipt{13.6}%
\abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
%11pt>
%<*12pt>
\@setfontsize\normalsize\@xiipt{14.5}%
\abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
%12pt>
% \end{macrocode}
% The |\belowdisplayskip| is always equal to the
% |\abovedisplayskip|. The parameters of the first level list are
% always given by |\@listI|.
% \begin{macrocode}
\belowdisplayskip \abovedisplayskip
\let\@listi\@listI}
% \end{macrocode}
% Make |\@normalsize| a synonymn for |\normalsize|.
% \begin{macrocode}
\let\@normalsize\normalsize
% \end{macrocode}
%
% We initially choose the normalsize font.
% \begin{macrocode}
\normalsize
% \end{macrocode}
% We use |\MakeRobust| instead of |\DeclareRobustCommand| above to
% avoid a log entry for the redefinition.
% But if we are running in a rollback situation
% (prior to 2015) we don't touch it.
% \changes{v2.1c}{2020/02/18}{Roll back handling (gh/201)}
% \begin{macrocode}
\ifx\MakeRobust\@undefined \else
\MakeRobust\normalsize
\fi
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\small}
% \changes{v2.0f}{1994/04/18}{Use \cs{newcommand} instead of
% \cs{renewcommand} because of change in the \LaTeX kernel}
% This is similar to |\normalsize|.
% \changes{v2.1c}{2020/02/18}{Use \cs{DeclareRobustCommand} instead of
% \cs{newcommand*}}
% \begin{macrocode}
\DeclareRobustCommand\small{%
%<*10pt>
\@setfontsize\small\@ixpt{11}%
\abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus2\p@
\belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
%10pt>
%<*11pt>
\@setfontsize\small\@xpt\@xiipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
%11pt>
%<*12pt>
\@setfontsize\small\@xipt{13.6}%
\abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
%12pt>
\belowdisplayskip \abovedisplayskip
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\footnotesize}
% \changes{v2.0f}{1994/04/18}{Use \cs{newcommand} instead of
% \cs{renewcommand} because of change in the \LaTeX kernel}
% This is similar to |\normalsize|.
% \begin{macrocode}
\DeclareRobustCommand\footnotesize{%
%<*10pt>
\@setfontsize\footnotesize\@viiipt{9.5}%
\abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus\p@
\belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
%10pt>
%<*11pt>
\@setfontsize\footnotesize\@ixpt{11}%
\abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus\p@
\belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
%11pt>
%<*12pt>
\@setfontsize\footnotesize\@xpt\@xiipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
%12pt>
\belowdisplayskip \abovedisplayskip
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scriptsize}
% \begin{macro}{\tiny}
% \begin{macro}{\large}
% \begin{macro}{\Large}
% \begin{macro}{\LARGE}
% \begin{macro}{\huge}
% \begin{macro}{\Huge}
% \changes{v2.0f}{1994/04/18}{Use \cs{newcommand} instead of
% \cs{renewcommand} because of change in the \LaTeX kernel}
% These are all much simpler than the previous macros, they just
% select a new fontsize, but leave the parameters for displays and
% lists alone.
% \begin{macrocode}
%<*10pt>
\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
\DeclareRobustCommand\large{\@setfontsize\large\@xiipt{14}}
\DeclareRobustCommand\Large{\@setfontsize\Large\@xivpt{18}}
\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
\DeclareRobustCommand\huge{\@setfontsize\huge\@xxpt{25}}
\DeclareRobustCommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
%10pt>
%<*11pt>
\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
\DeclareRobustCommand\large{\@setfontsize\large\@xiipt{14}}
\DeclareRobustCommand\Large{\@setfontsize\Large\@xivpt{18}}
\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
\DeclareRobustCommand\huge{\@setfontsize\huge\@xxpt{25}}
\DeclareRobustCommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
%11pt>
%<*12pt>
\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
\DeclareRobustCommand\large{\@setfontsize\large\@xivpt{18}}
\DeclareRobustCommand\Large{\@setfontsize\Large\@xviipt{22}}
\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xxpt{25}}
\DeclareRobustCommand\huge{\@setfontsize\huge\@xxvpt{30}}
\let\Huge=\huge
%12pt>
%10pt|11pt|12pt>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \subsection{Paragraphing}
%
% \begin{macro}{\lineskip}
% \begin{macro}{\normallineskip}
% These parameters control \TeX's behaviour when two lines tend to
% come too close together.
% \begin{macrocode}
%<*artikel|rapport|boek>
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\baselinestretch}
% This is used as a multiplier for |\baselineskip|. The default is
% to \emph{not} stretch the baselines. Note that if this command
% doesn't resolve to ``empty'' any \texttt{plus} or \texttt{minus}
% part in the specification of |\baselineskip| is ignored.
% \begin{macrocode}
\renewcommand\baselinestretch{}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\unitindent}
% These document classes all use a single dimension for a number of
% layout parameters:
% \begin{itemize}
% \item the label width in section heading,
% \item the |\parindent|
% \item the footnote label indent (= half |\unitindent|)
% \item listindent on the first level
% \end{itemize}
% \begin{macrocode}
\newdimen\unitindent
% \end{macrocode}
% The default setting accomodates three levels of single digit
% section numbering.
% \begin{macrocode}
%<*type1|type3>
{\setbox0\hbox{\normalsize\rmfamily 2.2.2\hskip.5em}
\global\unitindent=\wd0}
%
% \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{%
% \global\parindent=\unitindent
\global\leftmargini=\unitindent
\global\@needwriteindenttrue}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@writeindent}
% The |\end{document}| command will call |\@writeindent| to write
% the final width of |\unitindent| on the \file{.aux} file. Also a
% command is written to set |\unitindent|. To be compatible with
% other document classes a check is written to the \file{.aux} file
% for the existence of |\unitindent|. This prevents nasty errors
% when another document class is used.
% \begin{macrocode}
\newcommand*\@writeindent[1]{\immediate\write\@mainaux
{\string\@ifundefined{unitindent}{\string\newdimen\string\unitindent
\let\string\@indentset\relax}{}}
\immediate\write\@mainaux{\global\string\unitindent=#1\string\relax
\string\@indentset \string\relax}}
% \end{macrocode}
% \end{macro}
%
% We need to use the hook into |\end{document}| to write the final
% value of |\unitindent| om the file{.aux} file for the next run.
% \begin{macrocode}
\AtEndDocument{%
\if@filesw
\if@needwriteindent
\@writeindent{\the\unitindent}
\fi
\fi}
%
% \end{macrocode}
%
% In the document class \file{artikel2} the width of |\unitindent|
% is fixed and related to |\othermargin|.
% \begin{macrocode}
%\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}
%
%<*type3>
\setlength\parskip{.5\baselineskip \@plus .1\baselineskip
\@minus .1\baselineskip}
\setlength\parindent{\z@}
%
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@lowpenalty}
% \begin{macro}{\@medpenalty}
% \begin{macro}{\@highpenalty}%
% The commands |\nopagebreak| and |\nolinebreak| put in penalties
% to discourage these breaks at the point they are put in.
% They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|,
% dependent on their argument.
% \begin{macrocode}
\@lowpenalty 51
\@medpenalty 151
\@highpenalty 301
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\clubpenalty}
% \begin{macro}{\widowpenalty}
% These penalties are use to discourrage club and widow lines.
% Because we use their default values we only show them here,
% commented out.
% \begin{macrocode}
% \clubpenalty 150
% \widowpenalty 150
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\displaywidowpenalty}
% \begin{macro}{\predisplaypenalty}
% \begin{macro}{\postdisplaypenalty}
% Discourrage (but not so much) widows in front of a math display
% and forbid breaking directly in front of a display. Allow break
% after a display without a penalty. Again the default values are
% used, therefore we only show them here.
% \begin{macrocode}
% \displaywidowpenalty 50
% \predisplaypenalty 10000
% \postdisplaypenalty 0
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\interlinepenalty}
% Allow the breaking of a page in the middle of a paragraph.
% \begin{macrocode}
% \interlinepenalty 0
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\brokenpenalty}
% We allow the breaking of a page after a hyphenated line.
% \begin{macrocode}
% \brokenpenalty 0
%
% \end{macrocode}
% \end{macro}
%
%
% \subsection{Page Layout}
%
% All margin dimensions are measured from a point one inch from the
% top and lefthand side of the page.
%
% \subsubsection{Vertical spacing}
%
% \begin{macro}{\headheight}
% \begin{macro}{\headsep}
% \begin{macro}{\topskip}
% The |\headheight| is the height of the box that will contain the
% running head. The |\headsep| is the distance between the bottom
% of the running head and the top of the text. |\topskip| is the
% |\baselineskip| for the first line on a page.
% \begin{macrocode}
%<*10pt|11pt|12pt>
\setlength\headheight{12\p@}
\setlength\headsep {25\p@}
%<10pt>\setlength\topskip {10\p@}
%<11pt>\setlength\topskip {11\p@}
%<12pt>\setlength\topskip {12\p@}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\footskip}
% The distance from the baseline of the box which contains the
% running footer to the baseline of last line of text is controlled
% by the |\footskip|.
% Bottom of page:
% \begin{macrocode}
\setlength\footskip{30\p@} %
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\maxdepth}
% \changes{v2.0r}{1995/10/05}{Added setting of \cs{maxdepth}}
% The \TeX\ primitive register |\maxdepth| has a function that is
% similar to that of |\topskip|. The register |\@maxdepth| should
% always contain a copy of |\maxdepth|. In both plain \TeX\ and
% \LaTeX~2.09 |\maxdepth| had a fixed value of \texttt{4pt}; in
% native \LaTeX2e\ mode we let the value depend on the typesize. We
% set it so that |\maxdepth| $+$ |\topskip| $=$ typesize $\times
% 1.5$. As it happens, in these classes |\topskip| is equal to the
% typesize, therefor we set |\maxdepth| to half the value of
% |\topskip|.
% \begin{macrocode}
\if@compatibility
\setlength\maxdepth{4\p@}
\else
\setlength\maxdepth{.5\topskip}
\fi
% \end{macrocode}
% \end{macro}
%
% \subsubsection{The dimension of text}
%
% \begin{macro}{\textwidth}
% When we are in compatibility mode we have to make sure that the
% dimensions of the printed area are not different from what the
% user was used to see.
%
% \begin{macrocode}
\if@compatibility
\if@twocolumn
\setlength\textwidth{410\p@}
\else
%<10pt> \setlength\textwidth{345\p@}
%<11pt> \setlength\textwidth{360\p@}
%<12pt> \setlength\textwidth{390\p@}
\fi
% \end{macrocode}
% When we are not in compatibility mode we can set some of the
% dimensions differently, taking into account the paper size for
% instance.
% \begin{macrocode}
\else
% \end{macrocode}
% First, we calculate the maximum textwidth, which will we will
% allow on the selected paper and store it in |\@tempdima|. Then we
% store the length of a line with approximately 60 -- 70 characters
% in |\@tempdimb|. The values given are taken from the file
% \texttt{a4.sty} by Johannes Braams and Nico Poppelier and are
% more or less suitable when Computer Modern fonts are used.
% \begin{macrocode}
\setlength\@tempdima{\paperwidth}
\addtolength\@tempdima{-2in}
%<10pt> \setlength\@tempdimb{361\p@}
%<11pt> \setlength\@tempdimb{376\p@}
%<12pt> \setlength\@tempdimb{412\p@}
% \end{macrocode}
%
% Now we can set the |\textwidth|, depending on whether we will be
% setting one or two columns.
%
% In two column mode each \emph{column} shouldn't be wider than
% |\@tempdimb| (which could happen on \textsc{a3} paper for
% instance).
% \begin{macrocode}
\if@twocolumn
\ifdim\@tempdima>2\@tempdimb\relax
\setlength\textwidth{2\@tempdimb}
\else
\setlength\textwidth{\@tempdima}
\fi
% \end{macrocode}
% In one column mode the text should not be wider than the minimum
% of the paperwidth (minus 2 inches for the margins) and the
% maximum length of a line as defined by the number of characters.
% \begin{macrocode}
\else
\ifdim\@tempdima>\@tempdimb\relax
\setlength\textwidth{\@tempdimb}
\else
\setlength\textwidth{\@tempdima}
\fi
\fi
\fi
% \end{macrocode}
%
% Here we modify the width of the text a little to be a whole
% number of points.
% \begin{macrocode}
\if@compatibility
\else
\@settopoint\textwidth
\fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\textheight}
% Now that we have computed the width of the text, we have to take
% care of the height. The |\textheight| is the height of text
% (including footnotes and figures, excluding running head and
% foot).
%
% First make sure that the compatibility mode gets the same
% dimensions as we had with \LaTeX2.09. The number of lines was
% calculated as the floor of the old |\textheight| minus
% |\topskip|, divided by |\baselineskip| for |\normalsize|. The
% old value of |\textheight| was 528pt.
%
% \begin{macrocode}
\if@compatibility
%<10pt> \setlength\textheight{43\baselineskip}
%<11pt> \setlength\textheight{38\baselineskip}
%<12pt> \setlength\textheight{36\baselineskip}
% \end{macrocode}
%
% Again we compute this, depending on the papersize and depending
% on the baselineskip that is used, in order to have a whole number
% of lines on the page.
% \begin{macrocode}
\else
\setlength\@tempdima{\paperheight}
% \end{macrocode}
%
% We leave at least a 1 inch margin on the top and the bottom of
% the page.
% \begin{macrocode}
\addtolength\@tempdima{-2in}
% \end{macrocode}
%
% We also have to leave room for the running headers and footers.
% \begin{macrocode}
\addtolength\@tempdima{-1.5in}
% \end{macrocode}
%
% Then we divide the result by the current |\baselineskip| and
% store this in the count register |\@tempcnta|, which then
% contains the number of lines that fit on this page.
% \begin{macrocode}
\divide\@tempdima\baselineskip
\@tempcnta=\@tempdima
% \end{macrocode}
%
% From this we can calculate the height of the text.
% \begin{macrocode}
\setlength\textheight{\@tempcnta\baselineskip}
\fi
% \end{macrocode}
%
% The first line on the page has a height of |\topskip|.
% \begin{macrocode}
\advance\textheight by \topskip
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Margins}
%
% Most of the values of these parameters are now calculated, based
% on the papersize in use. In the calculations the |\marginparsep|
% needs to be taken into account so we give it its value first.
%
% \begin{macro}{\marginparsep}
% \begin{macro}{\marginparpush}
% The horizontal space between the main text and marginal notes is
% determined by |\marginparsep|, the minimum vertical separation
% between two marginal notes is controlled by |\marginparpush|.
% \begin{macrocode}
\if@twocolumn
\setlength\marginparsep {10\p@}
\else
%<10pt> \setlength\marginparsep{11\p@}
%<11pt> \setlength\marginparsep{10\p@}
%<12pt> \setlength\marginparsep{10\p@}
\fi
%<10pt|11pt>\setlength\marginparpush{5\p@}
%<12pt>\setlength\marginparpush{7\p@}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% Now we can give the values for the other margin parameters. For
% native \LaTeXe, these are calculated.
% \begin{macro}{\oddsidemargin}
% \begin{macro}{\evensidemargin}
% \begin{macro}{\marginparwidth}
% First we give the values for the compatibility mode.
%
% Values for two-sided printing:
% \begin{macrocode}
\if@compatibility
\if@twoside
%<10pt> \setlength\oddsidemargin {44\p@}
%<11pt> \setlength\oddsidemargin {36\p@}
%<12pt> \setlength\oddsidemargin {21\p@}
%<10pt> \setlength\evensidemargin {82\p@}
%<11pt> \setlength\evensidemargin {74\p@}
%<12pt> \setlength\evensidemargin {59\p@}
%<10pt> \setlength\marginparwidth {107\p@}
%<11pt> \setlength\marginparwidth {100\p@}
%<12pt> \setlength\marginparwidth {85\p@}
% \end{macrocode}
% Values for one-sided printing:
% \begin{macrocode}
\else
%<10pt> \setlength\oddsidemargin {63\p@}
%<11pt> \setlength\oddsidemargin {54\p@}
%<12pt> \setlength\oddsidemargin {39.5\p@}
%<10pt> \setlength\evensidemargin {63\p@}
%<11pt> \setlength\evensidemargin {54\p@}
%<12pt> \setlength\evensidemargin {39.5\p@}
%<10pt> \setlength\marginparwidth {90\p@}
%<11pt> \setlength\marginparwidth {83\p@}
%<12pt> \setlength\marginparwidth {68\p@}
\fi
% \end{macrocode}
% And values for two column mode:
% \begin{macrocode}
\if@twocolumn
\setlength\oddsidemargin {30\p@}
\setlength\evensidemargin {30\p@}
\setlength\marginparwidth {48\p@}
\fi
% \end{macrocode}
%
% When we are not in compatibility mode we can take the dimensions
% of the selected paper into account.
%
% The values for |\oddsidemargin| and |\marginparwidth| will be set
% depending on the status of the |\if@twoside|.
%
% If |@twoside| is true (which is always the case for boek) we make
% the inner margin smaller than the outer one.
% \changes{v2.0f}{1994/04/18}{New algorithm for \cs{oddsidemargin}}
% \begin{macrocode}
\else
\if@twoside
\setlength\@tempdima {\paperwidth}
\addtolength\@tempdima {-\textwidth}
\setlength\oddsidemargin {.4\@tempdima}
\addtolength\oddsidemargin {-1in}
% \end{macrocode}
% The width of the margin for text is set to the remainder of the
% width except for a `real margin' of white space of width 0.4in.
% A check should perhaps be built in to ensure that the (text)
% margin width does not get too small!
%
% \changes{v2.0f}{1994/04/18}{New algorithm for \cs{marginparwidth}}
% \changes{v2.0p}{1995/08/09}{Also take \cs{marginparsep} into account
% here}
% \begin{macrocode}
\setlength\marginparwidth {.6\@tempdima}
\addtolength\marginparwidth {-\marginparsep}
\addtolength\marginparwidth {-0.4in}
% \end{macrocode}
% For one-sided printing we center the text on the page, by
% calculating the difference between |textwidth| and
% |\paperwidth|. Half of that difference is than used for
% the margin (thus |\oddsidemargin| is |1in| less).
% \begin{macrocode}
\else
\setlength\@tempdima {\paperwidth}
\addtolength\@tempdima {-\textwidth}
\setlength\oddsidemargin {.5\@tempdima}
\addtolength\oddsidemargin {-1in}
\setlength\marginparwidth {.5\@tempdima}
\addtolength\marginparwidth {-\marginparsep}
\addtolength\marginparwidth {-.4in}
\fi
% \end{macrocode}
% With the above algorithm the |\marginparwidth| can come out quite
% large which we may not want.
% \begin{macrocode}
\ifdim \marginparwidth >2in
\setlength\marginparwidth{2in}
\fi
% \end{macrocode}
% Having done these calculations we make them pt values.
% \begin{macrocode}
\@settopoint\oddsidemargin
\@settopoint\marginparwidth
% \end{macrocode}
%
% The |\evensidemargin| can now be computed from the values set
% above.
% \begin{macrocode}
\setlength\evensidemargin {\paperwidth}
\addtolength\evensidemargin{-2in}
\addtolength\evensidemargin{-\textwidth}
\addtolength\evensidemargin{-\oddsidemargin}
% \end{macrocode}
% Setting |\evensidemargin| to a full point value may produce a
% small error. However it will lie within the error range a
% doublesided printer of todays technology can accuratly print.
% \begin{macrocode}
\@settopoint\evensidemargin
\fi
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\topmargin}
% The |\topmargin| is the distance between the top of `the
% printable area' ---which is 1 inch below the top of the paper---
% and the top of the box which contains the running head.
%
% It can now be computed from the values set above.
% \begin{macrocode}
\if@compatibility
\setlength\topmargin{27pt}
\else
\setlength\topmargin{\paperheight}
\addtolength\topmargin{-2in}
\addtolength\topmargin{-\headheight}
\addtolength\topmargin{-\headsep}
\addtolength\topmargin{-\textheight}
\addtolength\topmargin{-\footskip} % this might be wrong!
% \end{macrocode}
% By changing the factor in the next line the complete page
% can be shifted vertically.
% \changes{v2.0m}{1994/07/13}{Moved rounding of \cs{topmargin} to
% native mode}
% \begin{macrocode}
\addtolength\topmargin{-.5\topmargin}
\@settopoint\topmargin
\fi
% \end{macrocode}
% \end{macro}
%
%
% \subsubsection{Footnotes}
%
% \begin{macro}{\footnotesep}
% |\footnotesep| is the height of the strut placed at the beginning
% of every footnote. It equals the height of a normal
% |\footnotesize| strut in this
% class, thus no extra space occurs between footnotes.
% \begin{macrocode}
%<10pt>\setlength\footnotesep{6.65\p@}
%<11pt>\setlength\footnotesep{7.7\p@}
%<12pt>\setlength\footnotesep{8.4\p@}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\footins}
% |\skip\footins| is the space between the last line of the main
% text and the top of the first footnote.
% \begin{macrocode}
%<10pt>\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
%<11pt>\setlength{\skip\footins}{10\p@ \@plus 4\p@ \@minus 2\p@}
%<12pt>\setlength{\skip\footins}{10.8\p@ \@plus 4\p@ \@minus 2\p@}
%10pt|11pt|12pt>
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Float placement parameters}
%
% All float parameters are given default values in the \LaTeXe{}
% kernel. For this reason parameters that are not counters
% need to be set with |\renewcommand|.
%
% \paragraph{Limits for the placement of floating objects}
%
% \begin{macro}{\c@topnumber}
% The \Lcount{topnumber} counter holds the maximum number of
% floats that can appear on the top of a text page.
% \begin{macrocode}
%<*artikel|rapport|boek>
\setcounter{topnumber}{2}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\topfraction}
% This indicates the maximum part of a text page that can be
% occupied by floats at the top.
% \changes{v1.0.8}{1993/12/18}{Replaced \cs{newcommand} with
% \cs{renewcommand}. ASAJ.}
% \begin{macrocode}
\renewcommand\topfraction{.7}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\c@bottomnumber}
% The \Lcount{bottomnumber} counter holds the maximum number of
% floats that can appear on the bottom of a text page.
% \begin{macrocode}
\setcounter{bottomnumber}{1}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\bottomfraction}
% This indicates the maximum part of a text page that can be
% occupied by floats at the bottom.
% \changes{v1.0.8}{1993/12/18}{Replaced \cs{newcommand} with
% \cs{renewcommand}. ASAJ.}
% \begin{macrocode}
\renewcommand\bottomfraction{.3}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\c@totalnumber}
% This indicates the maximum number of floats that can appear on
% any text page.
% \begin{macrocode}
\setcounter{totalnumber}{3}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\textfraction}
% This indicates the minimum part of a text page that has to be
% occupied by text.
% \changes{v1.0.8}{1993/12/18}{Replaced \cs{newcommand} with
% \cs{renewcommand}. ASAJ.}
% \begin{macrocode}
\renewcommand\textfraction{.2}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\floatpagefraction}
% This indicates the minimum part of a page that has to be
% occupied by floating objects before a `float page' is produced.
% \changes{v1.0.8}{1993/12/18}{Replaced \cs{newcommand} with
% \cs{renewcommand}. ASAJ.}
% \begin{macrocode}
\renewcommand\floatpagefraction{.5}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\c@dbltopnumber}
% The \Lcount{dbltopnumber} counter holds the maximum number of
% two column floats that can appear on the top of a two column text
% page.
% \begin{macrocode}
\setcounter{dbltopnumber}{2}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dbltopfraction}
% This indicates the maximum part of a two column text page that
% can be occupied by two column floats at the top.
% \changes{v1.0.8}{1993/12/18}{Replaced \cs{newcommand} with
% \cs{renewcommand}. ASAJ.}
% \begin{macrocode}
\renewcommand\dbltopfraction{.7}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dblfloatpagefraction}
% This indicates the minimum part of a page that has to be
% occupied by two column wide floating objects before a `float
% page' is produced.
% \changes{v1.0.8}{1993/12/18}{Replaced \cs{newcommand} with
% \cs{renewcommand}. ASAJ.}
% \begin{macrocode}
\renewcommand\dblfloatpagefraction{.5}
%
% \end{macrocode}
% \end{macro}
%
% \paragraph{Floats on a text page}
%
% \begin{macro}{\floatsep}
% \begin{macro}{\textfloatsep}
% \begin{macro}{\intextsep}
% When a floating object is placed on a page with text, these
% parameters control the seperation between the float and the other
% objects on the page. These parameters are used for both
% one-column mode and single-column floats in two-column mode.
%
% |\floatsep| is the space between adjacent floats that are moved
% to the top or bottom of the text page.
%
% |\textfloatsep| is the space between the main text and floats
% at the top or bottom of the page.
%
% |\intextsep| is the space between in-text floats and the text.
% \begin{macrocode}
%<*10pt>
\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
%10pt>
%<*11pt>
\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
%11pt>
%<*12pt>
\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {14\p@ \@plus 4\p@ \@minus 4\p@}
%12pt>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dblfloatsep}
% \begin{macro}{\dbltextfloatsep}
% When floating objects that span the whole |\textwidth| are placed
% on a text page when we are in twocolumn mode the separation
% between the float and the text is controlled by |\dblfloatsep|
% and |\dbltextfloatsep|.
%
% |\dblfloatsep| is the space between adjacent floats that are moved
% to the top or bottom of the text page.
%
% |\dbltextfloatsep| is the space between the main text and floats
% at the top or bottom of the page.
%
% \begin{macrocode}
%<*10pt>
\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
%10pt>
%<*11pt>
\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
%11pt>
%<*12pt>
\setlength\dblfloatsep {14\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
%12pt>
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \paragraph{Floats on their own page or column}
%
% \begin{macro}{\@fptop}
% \begin{macro}{\@fpsep}
% \begin{macro}{\@fpbot}
% When floating objects are placed on seperate pages the layout of
% such pages is controlled by these parameters. At the top of the
% page |\@fptop| amount of stretchable whitespace is inserted, at
% the bottom of the page we get an |\@fpbot| amount of stretchable
% whitespace. Between adjacent floats the |\@fpsep| is inserted.
%
% These paramaters are used for the placement of floating objects
% in one column mode, or in single column floats in two column
% mode.
%
% Note that at least one of the two parameters |\@fptop| and
% |\@fpbot| should contain a |plus ...fil| to allow filling the
% remaining empty space.
% \begin{macrocode}
%<*10pt>
\setlength\@fptop{0\p@ \@plus 1fil}
\setlength\@fpsep{8\p@ \@plus 2fil}
\setlength\@fpbot{0\p@ \@plus 1fil}
%10pt>
%<*11pt>
\setlength\@fptop{0\p@ \@plus 1fil}
\setlength\@fpsep{8\p@ \@plus 2fil}
\setlength\@fpbot{0\p@ \@plus 1fil}
%11pt>
%<*12pt>
\setlength\@fptop{0\p@ \@plus 1fil}
\setlength\@fpsep{10\p@ \@plus 2fil}
\setlength\@fpbot{0\p@ \@plus 1fil}
%12pt>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@dblfptop}
% \begin{macro}{\@dblfpsep}
% \begin{macro}{\@dblfpbot}
% Double column floats in two column mode are handled with similar
% parameters.
% \begin{macrocode}
%<*10pt>
\setlength\@dblfptop{0\p@ \@plus 1fil}
\setlength\@dblfpsep{8\p@ \@plus 2fil}
\setlength\@dblfpbot{0\p@ \@plus 1fil}
%10pt>
%<*11pt>
\setlength\@dblfptop{0\p@ \@plus 1fil}
\setlength\@dblfpsep{8\p@ \@plus 2fil}
\setlength\@dblfpbot{0\p@ \@plus 1fil}
%11pt>
%<*12pt>
\setlength\@dblfptop{0\p@ \@plus 1fil}
\setlength\@dblfpsep{10\p@ \@plus 2fil}
\setlength\@dblfpbot{0\p@ \@plus 1fil}
%12pt>
%<*artikel|rapport|boek>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{Page Styles}
%
% The page style \pstyle{foo} is defined by defining the command
% |\ps@foo|. This command should make only local definitions.
% There should be no stray spaces in the definition, since they
% could lead to mysterious extra spaces in the output (well, that's
% something that should be always avoided).
%
% \begin{macro}{\@evenhead}
% \begin{macro}{\@oddhead}
% \begin{macro}{\@evenfoot}
% \begin{macro}{\@oddfoot}
% The |\ps@...| command defines the macros |\@oddhead|,
% |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running
% heads and feet---e.g., |\@oddhead| is the macro to produce the
% contents of the heading box for odd-numbered pages. It is called
% inside an |\hbox| of width |\textwidth|.
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\thispagestyle}
% Several commands (|\index|, |\maketitle|) give a
% |\thispagestyle{plain}| command, which will overrule a
% |\pagestyle{empty}| command. This situation is almost always
% unwanted. Therefore we provide a more careful definition.
%
% First save the original definition.
% \begin{macrocode}
\let\Thispagestyle\thispagestyle
% \end{macrocode}
% Then we provide the new definition, for which we must also adapt
% |\pagestyle| a little.
% \begin{macrocode}
\newcommand*\@emptypagestyle{empty}
\renewcommand*\pagestyle[1]{\@nameuse{ps@#1}\def\@currentpagestyle{#1}}
\renewcommand*\thispagestyle[1]{%
\ifx\@currentpagestyle\@emptypagestyle
\else
\global\@specialpagetrue
\gdef\@specialstyle{#1}%
\fi}
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Marking conventions}
%
% To make headings determined by the sectioning commands, the page
% style defines the commands |\chaptermark|, |\sectionmark|,
% \ldots,\\
% where |\chaptermark{|\meta{TEXT}|}| is called by
% |\chapter| to set a mark, and so on.
%
% The |\...mark| commands and the |\...head| macros are defined
% with the help of the following macros. (All the |\...mark|
% commands should be initialized to no-ops.)
%
% \LaTeX{} extends \TeX's |\mark| facility by producing two kinds
% of marks, a `left' and a `right' mark, using the following
% commands:
% \begin{flushleft}
% |\markboth{|\meta{LEFT}|}{|\meta{RIGHT}|}|: Adds both marks.
%
% |\markright{|\meta{RIGHT}|}|: Adds a `right' mark.
%
% |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
% or |\@evenfoot| macros, it gets the current `left'
% mark. |\leftmark| works like \TeX's |\botmark|
% command.
%
% |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
% or |\@evenfoot| macros, it gets the current
% `right' mark. |\rightmark| works like \TeX's
% |\firstmark| command.
% \end{flushleft}
%
% The marking commands work reasonably well for right marks
% `numbered within' left marks--e.g., the left mark is changed by a
% |\chapter| command and the right mark is changed by a |\section|
% command. However, it does produce somewhat anomalous results if
% two |\markboth|'s occur on the same page.
%
% Commands like |\tableofcontents| that should set the marks in some
% page styles use a |\@mkboth| command, which is |\let| by the
% pagestyle command (|\ps@...|) to |\markboth| for setting the
% heading or to |\@gobbletwo| to do nothing.
%
% \subsubsection{Defining the page styles}
% \label{sec:pagestyle}
%
% The pagestyle \pstyle{empty} is defined in \file{latex.dtx}, but
% the pagestyle \pstyle{plain} is slightly altered here. The
% difference is that the page numbers are set flush right in
% onesided and flush left and right in the twosided style.
%
% \begin{macro}{\ps@plain}
%
% \begin{macrocode}
\renewcommand*\ps@plain{%
% \end{macrocode}
% The running heads are empty in this pagestyle, the page number
% appears in the running foot.
% \begin{macrocode}
\let\@oddhead\@empty\let\@evenhead\@empty
\def\@oddfoot{\hfil\PageFont\thepage}%
\if@twoside
\def\@evenfoot{\PageFont\thepage\hfil}%
\else
\let\@evenfoot\@oddfoot
\fi
% \end{macrocode}
% Because the running heads should be empty we |let| |\@mkboth| to
% |\@gobbletwo|, thus disabling the mark commands.
% \begin{macrocode}
\let\@mkboth\@gobbletwo}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ps@headings}
% The definition of the page style \pstyle{headings} has to be
% different for two sided printing than it is for one sided
% printing.
%
% \begin{macrocode}
\if@twoside
\def\ps@headings{%
% \end{macrocode}
% The running feet are empty in this page style, the running head
% contains the page number and one of the marks.
% \begin{macrocode}
\let\@oddfoot\@empty\let\@evenfoot\@empty
\def\@evenhead{{\PageFont\thepage}\hfil\MarkFont\leftmark}%
\def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}%
% \end{macrocode}
%
% When using this page style, the contents of the running head is
% determined by the chapter and section titles. So we |\let|
% |\@mkboth| to |\markboth|.
% \begin{macrocode}
\let\@mkboth\markboth
% \end{macrocode}
%
% For the artikel document classes we define |\sectionmark| to clear
% the right mark and put the number of the section (when it is
% numbered) and its title in the left mark. The rightmark is set by
% |\subsectionmark| to contain the subsection titles.
%
% Note the use of |##1| for the parameter of the |\sectionmark|
% command, which will be defined when |\ps@headings| is executed.
%
% \changes{v2.0p}{1995/08/09}{Removed extra dot after \cs{thesection}
% (PR 1519)}
% \changes{v2.0p}{1995/08/09}{Replace \cs{hskip} \texttt{1em}\cs{relax}
% with \cs{quad}}
% \changes{v2.0p}{1995/08/10}{Use \cs{MakeUppercase} instead of
% \cs{uppercase}}
% \begin{macrocode}
%<*artikel>
\def\sectionmark##1{%
\markboth {\MakeUppercase{%
\ifnum \c@secnumdepth >\z@
\thesection\quad
\fi
##1}}{}}%
\def\subsectionmark##1{%
\markright {%
\ifnum \c@secnumdepth >\@ne
\thesubsection\quad
\fi
##1}}}
%
% \end{macrocode}
%
% In the rapport and boek document classes we use the |\chaptermark|
% and |\sectionmark| macros to fill the running heads.
%
% Note the use of |##1| for the parameter of the |\chaptermark|
% command, which will be defined when |\ps@headings| is executed.
%
% \begin{macrocode}
%<*rapport|boek>
\def\chaptermark##1{%
\markboth {\MakeUppercase{\ifnum \c@secnumdepth >\m@ne
% \if@mainmatter
\@chapapp\ \thechapter. \ %
% \fi
\fi
##1}}{}}%
\def\sectionmark##1{%
\markright {\MakeUppercase{\ifnum \c@secnumdepth >\z@
\thesection. \ \fi
##1}}}}
%
% \end{macrocode}
%
% The definition of |\ps@headings| for one sided printing can be
% much simpler, because we treat even and odd pages the same.
% Therefore we don't need to define |\@even...|.
% \begin{macrocode}
\else
\def\ps@headings{%
\let\@oddfoot\@empty
\def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}%
\let\@mkboth\markboth
% \end{macrocode}
% We use |\markright| now instead of |\markboth| as we did for two
% sided printing.
% \begin{macrocode}
%<*artikel>
\def\sectionmark##1{%
\markright {\MakeUppercase{%
\ifnum \c@secnumdepth >\m@ne
\thesection\quad
\fi
##1}}}}
%
% \end{macrocode}
%
% \begin{macrocode}
%<*rapport|boek>
\def\chaptermark##1{%
\markright {\MakeUppercase{%
\ifnum \c@secnumdepth >\m@ne
% \if@mainmatter
\@chapapp\ \thechapter. \ %
% \fi
\fi
##1}}}}
%
\fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ps@myheadings}
% The definition of the page style \pstyle{myheadings} is fairly
% simple because the user determines the contents of the running
% head himself by using the |\markboth| and |\markright| commands.
%
% \begin{macrocode}
\def\ps@myheadings{%
\let\@oddfoot\@empty\let\@evenfoot\@empty
\def\@evenhead{{\PageFont\thepage}\hfil\MarkFont\leftmark}%
\def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}%
% \end{macrocode}
%
% We have to make sure that the marking commands that are used by
% the chapter and section headings are disabled. We do this
% |\let|ting them to a macro that gobbles its argument(s).
% \begin{macrocode}
\let\@mkboth\@gobbletwo
% \let\chaptermark\@gobble
\let\sectionmark\@gobble
% \let\subsectionmark\@gobble
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\PageFont}
% \begin{macro}{\MarkFont}
% These macros are use to store the fonts that are used to typeset
% the pagenumber (|\PageFont|) and the marks (|\MarkFont|) in the
% running head and feet.
% \begin{macrocode}
\newcommand*\PageFont{\rmfamily}
\newcommand*\MarkFont{\slshape}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\RunningFonts}
% Use this macro to change the fonts that are used in the running
% heads.
% \begin{macrocode}
\newcommand*\RunningFonts[2]{%
\renewcommand*\PageFont{#1}\renewcommand*\MarkFont{#2}}
% \end{macrocode}
% \end{macro}
%
% \section{Document Markup}
%
% \subsection{The title}
%
% \begin{macro}{\title}
% \begin{macro}{\author}
% \begin{macro}{\date}
% These three macros are provided by \file{latex.dtx} to provide
% information about the title, author(s) and date of the document.
% The information is stored away in internal control sequences.
% It is the task of the |\maketitle| command to use the
% information provided. The definitions of these macros are shown
% here for information.
% \begin{macrocode}
% \newcommand*\title[1]{\gdef\@title{#1}}
% \newcommand*\author[1]{\gdef\@author{#1}}
% \newcommand*\date[1]{\gdef\@date{#1}}
% \end{macrocode}
% The |\date| macro gets today's date by default.
% \begin{macrocode}
% \gdef\@date{\today}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\TitleFont}
% \changes{v2.0d}{1994/02/23}{Macro added}
% This selects the font to use in the title of the document.
% \begin{macrocode}
\newcommand*\TitleFont{\bfseries}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\maketitle}
% The definition of |\maketitle| depends on whether a seperate
% title page is made. This is the default for the rapport and boek
% document classes, but for the artikel classes it is optional.
% Note that the title, author and date information is printed in
% capital letters by default. This can be changed by the option
% \Lopt{mctitle}.
%
% When we are making a title page, we locally redefine
% |\footnotesize| and |\footnoterule| to change the appearance of
% the footnotes that are produced by the |\thanks| command.
% \changes{v2.0z}{2004/02/20}{Make \cs{footnote} work in the title}
% \begin{macrocode}
%\if@titlepage
\renewcommand*\TitleFont{\rmfamily}
\newcommand*\maketitle{%
\begin{titlepage}%
\let\footnotesize\small
\let\footnoterule\relax
\let \footnote \thanks
% \end{macrocode}
% Footnotes on the titlepage, generated by the use of |\thanks|,
% use symbols in these document classes.
% \changes{v2.0v}{1997/03/02}{Use \cs{textendash} instead of
% \texttt{-{}-}}
% \begin{macrocode}
\long\def\@makefntext##1{\parindent\z@
\def\labelitemi{\textendash}\@revlabeltrue
\leavevmode\@textsuperscript{\@thefnmark}\kern1em\relax ##1}
\renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
% \end{macrocode}
% We center the entire title vertically; the centering is set off a
% little by adding a |\vskip|. In compatibility mode the pagenumber
% is set to 0 to keep the behaviour of \LaTeX\ 2.09 style files
% \begin{macrocode}
\if@compatibility\setcounter{page}{0}\fi
\null\vfil
\vskip 60\p@
% \end{macrocode}
% Then we set the title, in a |\LARGE| font; leave a little space
% and set the author(s) in a |\large| font. We do this inside a
% tabular environment to get them in a single column.
% Before the date we leave a little whitespace again.
% \changes{v2.0d}{1994/02/23}{Added selection of font by
% \cs{TitleFont}}
% \begin{macrocode}
\begin{center}%
\TitleFont
{\LARGE \def\\{\penalty -\@M}
\if@allcaps
\expandafter\uc@nothanks\@title\thanks\relax
\else
\@title
\fi\par}%
\vskip 3em%
{\large
\lineskip .75em \parindent\z@
\begin{tabular}[t]{c}%
\if@allcaps
\expandafter\uc@authornothanks\@author\and\relax
\else
\@author
\fi
\end{tabular}\par}%
\vskip 1.5em%
{\large
\if@allcaps
\uppercase\expandafter{\@date}%
\else
\@date
\fi\par}%
\end{center}\par
% \end{macrocode}
% Then we call |\@thanks| to print the information that goes into
% the footnote and finish the page.
% \begin{macrocode}
\@thanks
\vfil\null
\end{titlepage}%
% \end{macrocode}
% We reset the \Lcount{footnote} counter, disable |\thanks| and
% |\maketitle| and save some storage space by emptying the internal
% information macros.
% \changes{v2.0r}{1995/10/05}{use \cs{let} to save space, empty
% \cs{@date} as well}
% \begin{macrocode}
\setcounter{footnote}{0}%
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@thanks\@empty
\global\let\@author\@empty
\global\let\@title\@empty
\global\let\@date\@empty
% \end{macrocode}
% After the title is set the declaration commands |\title|, etc.\
% can vanish.
% The definition of |\and| makes only sense within the argument of
% |\author| so this can go as well.
% \changes{v2.0r}{1995/10/05}{Disable \cs{title} and similar decls}
% \begin{macrocode}
\global\let\title\relax
\global\let\author\relax
\global\let\date\relax
\global\let\and\relax
}
% \end{macrocode}
%
% We want to have the title, author and date information in
% uppercase, but we have to be very carefull not to put too much
% text in uppercase. The macros that perform the filtering of texts
% that shouldn't be in uppercase were developped with th help of
% Howard Trickey.
%
% \begin{macro}{\uc@nothanks}
% This macro takes all the text up to the first use of |\thanks|
% and passes it to |\uppercase|. The use of |\futurelet| will store
% the token \emph{after} the |\thanks| in |\@tempa|. The macro
% |\u@tx| uses that information to determine what to do next.
% \begin{macrocode}
\def\uc@nothanks#1\thanks{\uppercase{#1}\futurelet\@tempa\uc@tx}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\uc@authornothanks}
% A document can have more than one author. Usually they are
% seperated with |\and|. For each author a footnote --using
% |\thanks| can be present. Therefore this macro takes all the text
% up to the first use of |\and|, thus picking up all the
% information for one author. This is than passsed to
% |\uc@nothanks|, which checks for the presence of |\thanks|. For
% this to work the argument of |\uc@nothanks| has to be delimited
% by |\thanks\relax|.
% \begin{macrocode}
\def\uc@authornothanks#1\and{\uc@nothanks#1\thanks\relax
% \end{macrocode}
% Then we have to check whether the |\and| we ound earlier was put
% in by the user, in which case information for another user will
% follow, or by the call from another macro, in which case the
% |\and| will be followed by a |\relax| token. The |\futurelet|
% contstruct stores the first token \emph{after} the |\and| in
% |\@tempa| to be inspected by |\u@ax|.
% \begin{macrocode}
\futurelet\@tempa\uc@ax}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\uc@ax}
% When |\@tempa| contains a |\relax| token nothing needs to be
% done, when it doesn't we put in a linebreak |\\| the word `and'
% (stored in |\andname| so that this control sequence can be
% redeined for other languages), another linebreak and we call
% |\uc@authornothanks| to continue processing. The |\expandafter|
% lets \TeX\ see the |\fi| first.
% \begin{macrocode}
\def\uc@ax{%
\ifx\@tempa\relax
\else
\\ \andname \\ \expandafter\uc@authornothanks
\fi}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\uc@tx}
% This macro simply checks whether |\@tempa| contains a |\relax|
% token. When it doesn't further processing is performed by
% |\u@ty|.
% \begin{macrocode}
\def\uc@tx{\ifx\@tempa\relax
\else \expandafter\uc@ty \fi}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\uc@ty}
% The macro |\uc@ty| gets executed when the |\thanks| that
% delimited text earlier on in the processing had a real argument.
% In that case it was a |\thanks| put in by the user, \emph{not} by
% these macros. Therefore the argument is now passed to |\thanks|
% and processing continues by calling |\uc@nothanks|.
% \begin{macrocode}
\def\uc@ty#1{\thanks{#1}\uc@nothanks}
% \end{macrocode}
% \end{macro}
%
% When the title is not on a page of its own, the layout of the
% title is a little different. We use symbols to mark the footnotes
% and we have to deal with two column documents.
%
% Therefore we first start a new group to keep changes local. Then
% we redefine |\thefootnote| to use |\fnsymbol|; and change
% |\@makefnmark| so that footnotemarks have zero width (to make the
% centering of the author names look better). We also want raised
% footnotemarkers in the footnotes here.
% \changes{v2.0p}{1995/08/10}{Now use \cs{@textsuperscript} in the
% definition of footnotes}
% \begin{macrocode}
%<*!boek>
\else
\newcommand*\maketitle{\par
\begingroup
\renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
% \def\@makefnmark{\rlap{%
% \@textsuperscript{\normalfont\@thefnmark}}}%
% \long\def\@makefntext{\@xmakefntext{%
% \@textsuperscript{\normalfont\@thefnmark}}}%
%<*type2>
% \end{macrocode}
% \changes{v2.0v}{1997/03/02}{Use \cs{textendash} instead of
% \texttt{-{}-}}
% \begin{macrocode}
\long\def\@makefntext##1{\parindent\z@
\def\labelitemi{\textendash}%
\leavevmode\hb@xt@.5\unitindent{%
\@textsuperscript{\normalfont\@thefnmark}\hfil}##1}
%
% \end{macrocode}
% If this is a twocolumn document we start a new page in twocolumn
% mode, with the title set to the full width of the text. The
% actual printing of the title information is left to
% |\@maketitle|.
% \changes{v2.0h}{1994/06/02}{Added check on number of columns in use
% locally}
% \begin{macrocode}
\if@twocolumn
\ifnum \col@number=\@ne
\@maketitle
\else
\twocolumn[\@maketitle]%
\fi
\else
% \end{macrocode}
% When this is not a twocolumn document we just start a new page,
% prevent floating objects from appearing on the top of this page
% and print the title information.
% \begin{macrocode}
\newpage
\global\@topnum\z@
\@maketitle
\fi
% \end{macrocode}
% This page gets a \pstyle{plain} layout. We call |\@thanks| to
% produce the footnotes.
% \begin{macrocode}
\thispagestyle{plain}\@thanks
% \end{macrocode}
% Now we can close the group, reset the \Lcount{footnote} counter,
% disable |\thanks|, |\maketitle| and |\@maketitle| and save some
% storage space by emptying the internal information macros.
% \changes{v2.0r}{1995/10/05}{use \cs{let} to save space, disable
% \cs{title} and similar decls an empty \cs{@date} as well}
% \begin{macrocode}
\endgroup
\setcounter{footnote}{0}%
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@maketitle\relax
\global\let\@thanks\@empty
\global\let\@author\@empty
\global\let\@title\@empty
\global\let\@date\@empty
\global\let\title\relax
\global\let\author\relax
\global\let\date\relax
\global\let\and\relax
}
% \end{macrocode}
%
% \begin{macro}{\@maketitle}
% This macro takes care of formatting the title information when we
% have no seperate title page.
%
% We always start a new page, leave some white space and center the
% information. The title is set in a |\LARGE| font, the author
% names and the in a |\large| font.
% \changes{v2.0d}{1994/02/23}{Added slection of font by \cs{TitleFont}}
% \changes{v2.0z}{2004/02/20}{Make \cs{footnote} work}
% \begin{macrocode}
\def\@maketitle{%
\newpage
\null
\vskip 2em%
%\if@titlecentered
\begin{center}%
\let \footnote \thanks
{\LARGE \TitleFont \@title \par}%
\vskip 1.5em%
{\large \TitleFont
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1em%
{\large \TitleFont \@date}%
\end{center}%
%<*type3>
\else
{\LARGE \TitleFont \head@style \@title \par} \vskip 1.5em
{\large \TitleFont \lineskip .5em \tabcolsep\z@
\def\and{%%% \begin{tabular} has already started
\end{tabular}\hskip 1em plus .17fil
\begin{tabular}[t]{l}}%% \end{tabular} will come
\begin{tabular}[t]{l}\@author\end{tabular}\par}
\vskip 1em {\large \TitleFont \@date}
\fi
%
\par
\vskip 1.5em}
\fi
%!boek>
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsection{Chapters and Sections}
%
% \subsubsection{Building blocks}
% The definitions in this part of the class file make use of two
% macros, |\@startsection| and |\secdef|, which are defined by
% \file{latex.dtx}. To understand what is going on here, we
% describe their syntax.
%
% The macro |\@startsection| has 6 required arguments, optionally
% followed by a $*$, an optional argument and a required argument:
%
% |\@startsection|\meta{name}\meta{level}\meta{indent}^^A
% \meta{beforeskip}\meta{afterskip}\meta{style}
% optional *\\
% \null\hphantom{\bslash @startsection}^^A
% |[|\meta{altheading}|]|\meta{heading}
%
% It is a generic command to start a section, the arguments have
% the following meaning:
%
% \begin{description}
% \item[\meta{name}] The name of the user level command, e.g.,
% `section'.
% \item[\meta{level}] A number, denoting the depth of the section
% -- e.g., chapter=1, section = 2, etc. A section number
% will be printed if and only if \meta{level} $<=$ the value
% of the \Lcount{secnumdepth} counter.
% \item[\meta{indent}] The indentation of the heading from the left
% margin
% \item[\meta{beforeskip}] The absolute value of this argument
% gives the skip to leave above the heading. If it is
% negative, then the paragraph indent of the text following
% the heading is suppressed.
% \item[\meta{afterskip}] If positive, this gives the skip to leave
% below the heading, else it gives the skip to leave to the
% right of a run-in heading.
% \item[\meta{style}] Commands to set the style of the
% heading. Since the June 1996 release of \LaTeX\ the
% \emph{last} command in this argument may be a command such
% as |\MakeUppercase| or |\fbox| that takes an argument. The
% section heading will be supplied as the argument to this
% command. So setting |#6| to, say, |\bfseries\MakeUppercase|
% would produce bold, uppercase headings.
% \item[$*$] When this is missing the heading is numbered and the
% corresponding counter is incremented.
% \item[\meta{altheading}] Gives an alternative heading to use in
% the table of contents and in the running heads. This should
% be not present when the $*$ form is used.
% \item[\meta{heading}] The heading of the new section.
% \end{description}
% A sectioning command is normally defined to |\@startsection| and
% its first six arguments.
%
% The macro |\secdef| can be used when a sectioning command is
% defined without using |\@startsection|. It has two arguments:
%
% |\secdef|\meta{unstarcmds}\meta{starcmds}
%
% \begin{description}
% \item[\meta{unstarcmds}] Used for the normal form of the
% sectioning command.
% \item[\meta{starcmds}] Used for the $*$-form of the
% sectioning command.
% \end{description}
%
% You can use |\secdef| as follows:
% \begin{verbatim}
% \def\chapter { ... \secdef \CMDA \CMDB }
% \def\CMDA [#1]#2{ ... } % Command to define
% % \chapter[...]{...}
% \def\CMDB #1{ ... } % Command to define
% % \chapter*{...}
% \end{verbatim}
%
% \begin{macro}{\head@style}
% In the definition of chapter and section commands a number of
% settings frequently occur. Therefore we store them in a control
% sequence.
%
% Section headings are to be set extremely raggedright, with no
% hyphenations, not even at explicit hyphens.
%
% \begin{macrocode}
\newcommand*\head@style{%
\interlinepenalty \@M
\hyphenpenalty=\@M \exhyphenpenalty=\@M
\rightskip=0cm plus .7\hsize\relax}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@sect}
% The definition of this macro from \file{latex.dtx} needs to be
% repeated here because we want to modify its behaviour with
% respect to:
% \begin{enumerate}
% \item the width of the number, which is fixed;
% \item checking the value of |\unitindent|;
% \item formatting the section title ragged right;
% \item changing the argument of |\contentsline|.
% \end{enumerate}
% \begin{macrocode}
\def\@sect#1#2#3#4#5#6[#7]#8{%
\ifnum #2>\c@secnumdepth
\let\@svsec\@empty
\else
\refstepcounter{#1}%
% \end{macrocode}
% The following code (within the group) checks the value of
% |\unitindent|. If the sectionnumber is wider than |\unitindent|
% its value is adapted and a flag is set to rememeber to store the
% new value in the \file{.aux}-file.
% \begin{macrocode}
%<*type1|type3>
\begingroup
\setbox\@tempboxa=\hbox{#6\relax
\csname the#1\endcsname
\hskip.5em}
\ifdim\wd\@tempboxa>\unitindent
\global\unitindent=\wd\@tempboxa
\@indentset
\fi
\endgroup
%
% \end{macrocode}
% Since |\@seccntformat| might end with an improper |\hskip| which
% is scanning forward for |plus| or |minus| we end the definition
% of |\@svsec| with |\relax| as a precaution.
% \changes{v2.0n}{1995/01/06}{No longer redefine \cs{protect} but use
% one of the available settings}
% \changes{v2.0o}{1995/05/07}{Added \cs{relax} to prevent problems
% with a section starting with plus or minus}
% \begin{macrocode}
\protected@edef\@svsec{\@seccntformat{#1}\relax}%
\fi
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup
% \end{macrocode}
% \changes{v2.0u}{1996/09/23}{Moved brace to allow commands like
% \cs{MakeUppercase} in 6th argument. Changed \cs{par} to
% \cs{endgraf} to allow non-long commands. This follows a change in
% \LaTeX.}
% This |{| used to be after the argument to |\@hangfrom| but was
% moved here to allow commands such as |\MakeUppercase| to be used
% at the end of |#6|.
% \changes{v2.1b}{2004/08/14}{No longer pass \cs{toc@font} through the
% \texttt{.aux} file as this upsets pdf\LaTeX}
% \begin{macrocode}
#6{%
%<*type1|type3>
\@hangfrom{\hskip #3\relax\@svsec}\head@style #8\endgraf}%
%
%<*type2>
\@hangfrom{\hskip #3}
\head@style\@svsec \hskip.3em\relax #8\endgraf}
%
\endgroup
\csname #1mark\endcsname{#7}%
\addcontentsline{toc}{#1}{%
\ifnum #2>\c@secnumdepth
\else
\protect\numberline{\csname the#1\endcsname}%
\fi
#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
#7}}%
\fi
\@xsect{#5}}
% \end{macrocode}
% This macro was introduced in \LaTeXe, its definition is changed
% here to get the fixed with of the section number.
% \changes{v2.0o}{1995/05/07}{added \cs{relax} in the type2 case}
% \begin{macrocode}
\def\@seccntformat#1{%
% \hb@xt@\unitindent{\csname the#1\endcsname \hfil}%
% \csname the#1\endcsname\hskip.3em\relax
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@ssect}
% Similar changes need to be made to the definition of |\@ssect|,
% which is used in `starred' sections.
% \begin{macrocode}
\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
\ifdim \@tempskipa>\z@
\begingroup
% \end{macrocode}
% \changes{v2.0u}{1996/09/23}{Moved brace to allow commands like
% \cs{MakeUppercase} in 4th argument. Changed \cs{par} to
% \cs{endgraf} to allow non-long commands. This follows a change in
% \LaTeX.}
% This |{| used to be after the argument to |\@hangfrom| but was
% moved here to allow commands such as |\MakeUppercase| to be used
% at the end of |#6|.
% \begin{macrocode}
#4{%
\@hangfrom{\hskip #1}\head@style #5\endgraf}%
\endgroup
\else
\def\@svsechd{#4\hskip #1\relax #5}%
\fi
\@xsect{#3}}
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Mark commands}
%
% \begin{macro}{\chaptermark}
% \begin{macro}{\sectionmark}
% \begin{macro}{\subsectionmark}
% \begin{macro}{\subsubsectionmark}
% \begin{macro}{\paragraphmark}
% \begin{macro}{\subparagraphmark}
% Default initializations of |\...mark| commands. These commands
% are used in the definition of the page styles (see
% section~\ref{sec:pagestyle}) Most of them are already defined by
% \file{latex.tex}, so they are only shown here.
%
% \begin{macrocode}
%\newcommand*\chaptermark[1]{}
% \newcommand*\sectionmark[1]{}
% \newcommand*\subsectionmark[1]{}
% \newcommand*\subsubsectionmark[1]{}
% \newcommand*\paragraphmark[1]{}
% \newcommand*\subparagraphmark[1]{}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Define Counters}
%
% \begin{macro}{\c@secnumdepth}
% The value of the counter \Lcount{secnumdepth} gives the depth of
% the highest-level sectioning command that is to produce section
% numbers.
% \begin{macrocode}
%\setcounter{secnumdepth}{3}
%\setcounter{secnumdepth}{2}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\c@part}
% \begin{macro}{\c@chapter}
% \begin{macro}{\c@section}
% \begin{macro}{\c@subsection}
% \begin{macro}{\c@subsubsection}
% \begin{macro}{\c@paragraph}
% \begin{macro}{\c@subparagraph}
% These counters are used for the section numbers. The macro\\
% |\newcounter{|\meta{newctr}|}[|\meta{oldctr}|]|\\
% defines \meta{newctr} to be a counter, which is reset to zero when
% counter \meta{oldctr} is stepped. Counter \meta{oldctr} must
% already be defined.
%
% \begin{macrocode}
\newcounter {part}
%\newcounter {section}
%<*rapport|boek>
\newcounter {chapter}
\newcounter {section}[chapter]
%
\newcounter {subsection}[section]
\newcounter {subsubsection}[subsection]
\newcounter {paragraph}[subsubsection]
\newcounter {subparagraph}[paragraph]
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\thepart}
% \begin{macro}{\thechapter}
% \begin{macro}{\thesection}
% \begin{macro}{\thesubsection}
% \begin{macro}{\thesubsubsection}
% \begin{macro}{\theparagraph}
% \begin{macro}{\thesubparagraph}
% For any counter \Lcount{CTR}, |\theCTR| is a macro that defines
% the printed version of counter \Lcount{CTR}. It is defined in
% terms of the following macros:
%
% |\arabic{|\Lcount{COUNTER}|}| prints the value of
% \Lcount{COUNTER} as an arabic numeral.
%
% |\roman{|\Lcount{COUNTER}|}| prints the value of
% \Lcount{COUNTER} as a lowercase roman numberal.
%
% |\Roman{|\Lcount{COUNTER}|}| prints the value of
% \Lcount{COUNTER} as an uppercase roman numberal.
%
% |\alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
% as a lowercase letter: $1 =$~a, $2 =$~ b, etc.
%
% |\Alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
% as an uppercase letter: $1 =$~A, $2 =$~B, etc.
%
% Actually to save space the internal counter repesentations
% and the commands operating on those are used.
% \begin{macrocode}
\renewcommand*\thepart{\@Roman\c@part}
%\renewcommand\thesection{\@arabic\c@section}
%<*rapport|boek>
\renewcommand*\thechapter{\@arabic\c@chapter}
\renewcommand*\thesection{\thechapter.\@arabic\c@section}
%
\renewcommand*\thesubsection{\thesection.\@arabic\c@subsection}
\renewcommand*\thesubsubsection{\thesubsection.\@arabic\c@subsubsection}
\renewcommand*\theparagraph{\thesubsubsection.\@arabic\c@paragraph}
\renewcommand*\thesubparagraph{\theparagraph.\@arabic\c@subparagraph}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@chapapp}
% |\@chapapp| is initially defined to be `|\chaptername|'. The
% |\appendix| command redefines it to be `|\appendixname|'.
%
% \begin{macrocode}
%\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}
%
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Parts}
%
% \begin{macro}{\part}
% The command to start a new part of our document.
%
% In the artikel classes the definition of |\part| is rather simple;
% we start a new paragraph, add a little white space, suppress the
% indentation of the first paragraph (not for the \file{artikel2}
% document class) and make use of |\@secdef|.
% \changes{v2.0z}{2004/02/20}{Check \texttt{@noskipsec} switch and
% possibly force horizontal mode; see \LaTeX{} PR/2889.}
% \begin{macrocode}
%<*artikel>
\newcommand*\part{%
\if@noskipsec \leavevmode \fi
\par
\addvspace{4ex}%
% \@afterindentfalse
% \@afterindenttrue
\secdef\@part\@spart}
%
% \end{macrocode}
%
% For the rapport and boek classes we things a bit different.
%
% We start a new (righthand) page and use the \pstyle{empty}
% pagestyle.
% \begin{macrocode}
%<*rapport|boek>
\newcommand*\part{%
\cleardoublepage
\thispagestyle{empty}%
% \end{macrocode}
% When we are making a two column document, this will be a one
% column page. We use |@tempswa| to remember to switch back to two
% columns.
% \begin{macrocode}
\if@twocolumn
\onecolumn
\@tempswatrue
\else
\@tempswafalse
\fi
% \end{macrocode}
% We need an empty box to prevent the fil glue from disappearing.
% \changes{v2.0r}{1995/10/05}{Replace \cs{hbox} by \cs{null}}
% \begin{macrocode}
\null\vfil
% \end{macrocode}
% Here we use |\secdef| to indicate which commands to use to make
% the actual heading.
% \begin{macrocode}
\secdef\@part\@spart}
%
% \end{macrocode}
%
% \begin{macro}{\@part}
% This macro does the actual formatting of the title of the part.
% Again the macro is differently defined for the artikel document
% classes than for the document classes rapport and boek.
%
% \begin{macro}{\PartFont}
% The font used to typeset the part is stored in this maro.
% \begin{macrocode}
\newcommand*\PartFont{\bfseries}
% \end{macrocode}
% \end{macro}
%
% When \Lcount{secnumdepth} is larger than $-1$ for the
% artikel document classes, we have a numbered
% part, otherwise it is unnumbered.
% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
% \cs{normalfont}}
% \changes{v2.1b}{2004/08/16}{use \cs{numberline} instead of a fixed
% space of \texttt{1 em}}
% \begin{macrocode}
%<*artikel>
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >\m@ne
\refstepcounter{part}%
\addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
% \end{macrocode}
% We print the title flush left in the artikel classes.
% Also we prevent breaking between lines and reset the font.
% \begin{macrocode}
{\head@style
\parindent\unitindent
\normalfont
% \end{macrocode}
% When this is a numbered part we have to print the number and the
% title. The |\nobreak| should prevent a page break here.
% \changes{v2.0z}{2004/02/20}{Replaced tilde with \cs{nobreakspace},
% see \LaTeX{} (pr/3310)}
% \begin{macrocode}
\ifnum \c@secnumdepth >\m@ne
% \Large\PartFont\noindent \partname\nobreakspace\thepart
% \Large\PartFont\indent \partname\nobreakspace\thepart
\par\nobreak
\fi
% \Large \PartFont \noindent #2%
% \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}
%
% \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.
% \changes{v2.1b}{2004/08/16}{use \cs{numberline} instead of a fixed
% space of \texttt{1 em}}
% \begin{macrocode}
%<*rapport|boek>
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\protect\numberline{\thepart}{#1}}%
\else
\addcontentsline{toc}{part}{\toc@case{#1}}%
\fi
% \end{macrocode}
% We empty the mark registers and center the title on the page in the
% rapport and boek document classes.
% Also we prevent breaking between lines and reset the font.
% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
% \cs{normalfont}}
% \changes{v2.0r}{1995/10/05}{Added missing percent}
% \begin{macrocode}
\markboth{}{}%
{\centering
\interlinepenalty \@M
\normalfont
% \end{macrocode}
% When this is a numbered part we have to print the number. We have
% to expand |\partname| before |\uppercase| is called, therefore we
% use a temporary control sequence that, when called will execute
% |\MakeUppercase| on the contents of |\partname|.
% \changes{v2.1c}{2020/02/22}{Use \cs{MakeUppercase} instead of
% \cs{uppercase}}
% \begin{macrocode}
\ifnum \c@secnumdepth >-2\relax
\Large\PartFont
\edef\@tempa{\noexpand\MakeUppercase{\partname}}\@tempa
\nobreakspace\thepart
\par
% \end{macrocode}
% We leave some space before we print the title and leave the
% finishing up to |\@endpart|.
% \begin{macrocode}
\vskip 20\p@
\fi
\Large \PartFont \MakeUppercase{#2}\par}%
\@endpart}
%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@spart}
% This macro does the actual formatting of the title of the part
% when the star form of the user command was used. In this case we
% \emph{never} print a number. Otherwise the formatting is the same.
%
% The differences between the definition of this macro in the
% artikel document classes and in the rapport and boek document
% classes are similar as they were for |\@part|.
% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
% \cs{normalfont}}
% \begin{macrocode}
%<*artikel>
\def\@spart#1{%
{\parindent \z@
\head@style
\normalfont
% \Large \PartFont \noindent #1\par}%
% \Large \PartFont \indent #1\par}%
\nobreak
\vskip 3ex
\@afterheading}
%
% \end{macrocode}
% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
% \cs{normalfont}}
% \begin{macrocode}
%<*rapport|boek>
\def\@spart#1{%
{\centering
\interlinepenalty \@M
\normalfont
\Large \PartFont #1\par}%
\@endpart}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@endpart}
% \changes{v2.0r}{1995/10/05}{move docstrip guard to avoid defining
% \cs{@endpart} in artikelx}
% This macro finishes the part page, for both |\@part| and
% |\@spart|.
%
% First we fill the current page.
% \begin{macrocode}
\def\@endpart{\vfil\newpage
% \end{macrocode}
% Then, when we are in twosided mode and chapters are supposed to
% be on right hand sides, we produce a completely blank
% page.
% \changes{v2.0z}{2004/02/20}{Only add empty page after part if
% twoside and openright (\LaTeX{} pr/3155)}
% \begin{macrocode}
% \if@twoside
\if@openright
\null
\thispagestyle{empty}%
\newpage
\fi
% \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 \cs{chapter} listen to the openright
% and openany options}
% \begin{macrocode}
%<*rapport|boek>
\newcommand*\chapter{\if@openright\cleardoublepage\else\clearpage\fi
\thispagestyle{plain}%
% \end{macrocode}
% Then we prevent floats from appearing at the top of this page
% because it looks weird to see a floating object above a chapter
% title.
% \begin{macrocode}
\global\@topnum\z@
% \end{macrocode}
% Then we suppress the indentation of the first paragraph by
% setting the switch |\@afterindent| to |false|. We use |\secdef|
% to specify the macros to use for actually setting the chapter
% title.
% \begin{macrocode}
\@afterindentfalse
\secdef\@chapter\@schapter}
% \end{macrocode}
%
% \begin{macro}{\@chapter}
% This macro is called when we have a numbered chapter. When
% \Lcount{secnumdepth} is larger than $-1$ and, in the boek class,
% |\@mainmatter| is true, we display the chapter number. We also
% inform the user that a new chapter is about to be typeset by
% writing a message to the terminal.
% \changes{v2.0k}{1994/06/08}{Removed carriage return behind +boek}
% \changes{v2.1b}{2004/08/14}{No longer pass \cs{toc@font} through the
% \texttt{.aux} file as this upsets pdf\LaTeX}
% \begin{macrocode}
\def\@chapter[#1]#2{%
\ifnum \c@secnumdepth >\m@ne
% \if@mainmatter
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}#1}%
%<*boek>
\else
\addcontentsline{toc}{chapter}{#1}%
\fi
%
\else
\addcontentsline{toc}{chapter}{#1}%
\fi
% \end{macrocode}
% After having written an entry to the table of contents we store
% the (alternative) title of this chapter with |\chaptermark| and
% add some white space to the lists of figures and tables.
% \begin{macrocode}
\chaptermark{#1}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
% \end{macrocode}
% Then we call upon |\@makechapterhead| to format the actual
% chapter title. We have to do this in a special way when we are in
% twocolumn mode in order to have the chapter title use the entire
% |\textwidth|. In one column mode we call |\@afterheading| which
% takes care of suppressing the indentation.
% \begin{macrocode}
\if@twocolumn
\@topnewpage[\@makechapterhead{#2}]%
\else
\@makechapterhead{#2}%
\@afterheading
\fi}
% \end{macrocode}
%
% \begin{macro}{\ChapFont}
% The font used to typeset the chapters is stored in this maro.
% \begin{macrocode}
\newcommand*\ChapFont{\bfseries}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@makechapterhead}
% The macro above uses |\@makechapterhead|\meta{text} to format the
% heading of the chapter.
%
% We begin by leaving some white space. The we open a group in
% which we have a paragraph indent of 0pt, and in which we have the
% text set ragged right. We also reset the font.
% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
% \cs{normalfont}}
% \begin{macrocode}
\def\@makechapterhead#1{%
% \vspace*{50\p@ \@plus 5\p@}%
% \vspace*{50\p@ \@plus 20\p@}%
{\setlength\parindent{\z@}%
\setlength\parskip {\z@}%
\head@style \normalfont
% \end{macrocode}
% Then we check whether the number of the chapter has to be printed.
% If so we leave some whitespace between the chapternumber and its
% title.
% \changes{v2.0j}{1994/06/03}{Removed carriage return behind +boek}
% \changes{v2.0m}{1994/12/20}{Added a \cs{nobreak} to prevent a
% pagebreak between the chapternumber and the chaptertitle}
% \begin{macrocode}
\ifnum \c@secnumdepth >\m@ne
% \if@mainmatter
\Large\ChapFont \@chapapp{} \thechapter
\par\nobreak
\vskip 20\p@
% \fi
\fi
% \end{macrocode}
% Now we set the title in a large bold font. We prevent a pagebreak
% at this point and leave some whitespace before the text begins.
% \begin{macrocode}
\Large \ChapFont #1\par
\nobreak
\vskip 40\p@
}}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@schapter}
% This macro is called when we have an unnumbered chapter. It is
% much simpler than |\@chapter| because it only needs to typeset
% the chapter title.
% \begin{macrocode}
\def\@schapter#1{\if@twocolumn
\@topnewpage[\@makeschapterhead{#1}]%
\else
\@makeschapterhead{#1}%
\@afterheading
\fi}
% \end{macrocode}
%
% \begin{macro}{\@makeschapterhead}
% The macro above uses |\@makeschapterhead|\meta{text}to format
% the heading of the chapter. It is similar to |\@makechapterhead|
% except that it never has to print a chapter number.
%
% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
% \cs{normalfont}}
% \begin{macrocode}
\def\@makeschapterhead#1{%
% \vspace*{50\p@\@plus 5\p@}%
% \vspace*{50\p@\@plus 20\p@}%
{\setlength\parindent{\z@}%
\setlength\parskip{\z@}%
\head@style
\normalfont
\Large \ChapFont #1\par
\nobreak
\vskip 40\p@
}}
%
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \subsubsection{Lower level headings}
%
% These commands all make use of |\@startsection|.
% \begin{macro}{\section}
% This gives a normal heading with white space above the heading
% (the whitespace below the heading will be generated by the
% |\parskip| that is inserted at the start of the first paragraph),
% the title set in |\large\bfseries|, and no indentation on the
% first paragraph.
% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
% \cs{normalfont}}
% \begin{macrocode}
\newcommand*\section{%
%<*type1|type3>
\@startsection {section}{1}{\z@}%
{-2\baselineskip\@plus -1\baselineskip \@minus -.5\baselineskip}%
%
%<*type2>
\@startsection {section}{1}{\unitindent}%
{2\baselineskip\@plus \baselineskip \@minus .5\baselineskip}%
%
% {.5\baselineskip}%
% {.01\baselineskip}%
{\normalfont\large\SectFont}}
% \end{macrocode}
%
% \begin{macro}{\SectFont}
% The font used to typeset the sections is stored in this maro.
% \begin{macrocode}
\newcommand*\SectFont{\bfseries}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\subsection}
% This gives a normal heading with white space above the heading,
% the title set in |\normalsize\bfseries|, and no indentation on
% the first paragraph.
% \changes{v2.0n}{1995/01/06}{Use 1\cs{baselineskip} instead of
% \cs{baselineskip} for artikel2}
% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
% \cs{normalfont}}
% \begin{macrocode}
\newcommand*\subsection{%
%<*type1|type3>
\@startsection{subsection}{2}{\z@}%
{-1\baselineskip\@plus -.5\baselineskip \@minus -.25\baselineskip}%
%
%<*type2>
\@startsection{subsection}{2}{\unitindent}%
{1\baselineskip\@plus .5\baselineskip \@minus .25\baselineskip}%
%
% {.25\baselineskip}%
% {.01\baselineskip}%
{\normalfont\normalsize\SSectFont}}
% \end{macrocode}
%
% \begin{macro}{\SSectFont}
% The font used to typeset the subsections is stored in this maro.
% \begin{macrocode}
\newcommand*\SSectFont{\bfseries}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\subsubsection}
% This gives a normal heading with white space above the heading,
% the title set in |\normalsize\tm|, and no indentation on the
% first paragraph.
% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
% \cs{normalfont}}
% \begin{macrocode}
\newcommand*\subsubsection{%
%<*type1|type3>
\@startsection{subsubsection}{3}{\z@}%
{-1\baselineskip plus -.5\baselineskip minus -.25\baselineskip}%
%
%<*type2>
\@startsection{subsubsection}{3}{\unitindent}%
{1\baselineskip plus .5\baselineskip minus .25\baselineskip}%
%
% {.25\baselineskip}%
% {.01\baselineskip}%
{\normalfont\normalsize\SSSectFont}}
% \end{macrocode}
%
% \begin{macro}{\SSSectFont}
% The font used to typeset the subsubsections is stored in this maro.
% \begin{macrocode}
%\newcommand*\SSSectFont{\rmfamily}
%\newcommand*\SSSectFont{\scshape}
%\newcommand*\SSSectFont{\slshape}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\paragraph}
% This gives a run-in heading with white space above and to the
% right of the heading, the title set in |\normalsize\slshape|.
% \changes{v2.0d}{1994/02/23}{Forgot to change \cs{slshape} into
% \cs{ParaFont}}
% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
% \cs{normalfont}}
% \begin{macrocode}
\newcommand*\paragraph{%
% \@startsection{paragraph}{4}{\z@}%
% \@startsection{paragraph}{4}{\unitindent}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\normalfont\normalsize\ParaFont}}
% \end{macrocode}
%
% \begin{macro}{\ParaFont}
% The font used to typeset the paragraphs is stored in this maro.
% \begin{macrocode}
%\newcommand*\ParaFont{\slshape}
%\newcommand*\ParaFont{\scshape}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\subparagraph}
% This gives an indented run-in heading with white space above and
% to the right of the heading, the title set in
% |\normalsize\slshape|.
% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with
% \cs{normalfont}}
% \begin{macrocode}
\newcommand*\subparagraph{%
% \@startsection{subparagraph}{5}{\parindent}%
% \@startsection{subparagraph}{5}{\unitindent}%
{3.25ex \@plus1ex \@minus .2ex}%
{-1em}%
{\normalfont\normalsize\SParaFont}}
% \end{macrocode}
%
% \begin{macro}{\SParaFont}
% The font used to typeset the subparagraphs is stored in this maro.
% \begin{macrocode}
\newcommand*\SParaFont{\slshape}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Headingfonts}
% To change the fonts that are used to typeset the title,part,
% chapter and section headings this macro can be used.
% \changes{v2.0d}{1994/02/23}{Added \cs{TitleFont}}
% \begin{macrocode}
%<*artikel>
\newcommand*\HeadingFonts[7]{%
\renewcommand*\TitleFont{#1}%
\renewcommand*\PartFont{#2}%
\renewcommand*\SectFont{#3}%
\renewcommand*\SSectFont{#4}%
\renewcommand*\SSSectFont{#5}%
\renewcommand*\ParaFont{#6}%
\renewcommand*\SParaFont{#7}}
%
%<*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}}
%
% \end{macrocode}
% \end{macro}
%
% \subsection{Lists}
%
% \subsubsection{General List Parameters}
%
% The following commands are used to set the default values for the list
% environment's parameters. See the \LaTeX{} manual for an explanation
% of the meanings of the parameters. Defaults for the list
% environment are set as follows. First, |\rightmargin|,
% |\listparindent| and |\itemindent| are set to 0pt. Then, for a Kth
% level list, the command |\@listK| is called, where `K' denotes `i',
% '`i', ... , `vi'. (I.e., |\@listiii| is called for a third-level
% list.) By convention, |\@listK| should set |\leftmargin| to
% |\leftmarginK|.
%
% \begin{macro}{\leftmargin}
% \begin{macro}{\leftmargini}
% \begin{macro}{\leftmarginii}
% \begin{macro}{\leftmarginiii}
% \begin{macro}{\leftmarginiv}
% \begin{macro}{\leftmarginv}
% \begin{macro}{\leftmarginvi}
% For efficiency, level-one list's values are defined at top level, and
% |\@listi| is defined to set only |\leftmargin|.
%
% \begin{macrocode}
%\setlength\leftmargini {\unitindent}
%\setlength\leftmargini {\othermargin}
\setlength\leftmarginii {\othermargin}
\setlength\leftmarginiii{\othermargin}
\setlength\leftmarginiv {\othermargin}
\setlength\leftmarginv {\othermargin}
\setlength\leftmarginvi {1em}
% \end{macrocode}
% Here we set the top level leftmargin.
% \begin{macrocode}
\setlength\leftmargin {\leftmargini}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\labelsep}
% \begin{macro}{\labelwidth}
% |\labelsep| is the distance between the label and the text of an
% item; |\labelwidth| is the width of the label.
% \begin{macrocode}
\setlength \labelsep {5\p@}
\setlength \labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\partopsep}
% When the user leaves a blank line before the environment an extra
% vertical space of |\partopsep| is inserted, in addition to
% |\parskip| and |\topsep|.
% \begin{macrocode}
\setlength\partopsep{\z@}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\topsep}
% Extra vertical space, in addition to |\parskip|, added above and
% below list and paragraphing environments.
% \begin{macrocode}
\setlength\topsep{\z@}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@beginparpenalty}
% \begin{macro}{\@endparpenalty}
% These penalties are inserted before and after a list or paragraph
% environment. They are set to a bonus value to encourage page
% breaking at these points.
% \begin{macro}{\@itempenalty}
% This penalty is inserted between list items.
% \begin{macrocode}
\@beginparpenalty -\@lowpenalty
\@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@listi}
% \begin{macro}{\@listI}
% |\@listi| defines values of
% |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep|, etc.\ for the
% lists that appear on top-level. Its definition is modified by the
% font-size commands (eg within |\small| the list parameters get
% ``smaller'' values).
%
% For this reason \@listI is defined to hold a saved copy of \@listi
% so that |\normalsize| can switch all parameters back.
%
% \begin{macrocode}
\def\@listi{%
% \leftmargin\unitindent
% \leftmargin\leftmargini
% \labelsep.5em%
% \labelsep.45em%
\labelwidth\leftmargin
\advance\labelwidth-\labelsep
\parsep \z@
% \topsep 0\p@ \@plus\p@
% \topsep -.5\parskip \@plus\p@
\itemsep 0\p@ \@plus1\p@}
\let\@listI\@listi
% \end{macrocode}
% We initialise these parameters although strictly speaking that
% is not necessary.
% \begin{macrocode}
\@listi
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@listii}
% \begin{macro}{\@listiii}
% \begin{macro}{\@listiv}
% \begin{macro}{\@listv}
% \begin{macro}{\@listvi}
% Here are the same macros for the higher level lists. Note that
% they don't have saved versions and are not modified by the font
% size commands. In other words this class assumes that nested
% lists only appear in |\normalsize|, i.e.\ the main document size.
% \begin{macrocode}
\def\@listii {\leftmargin\leftmarginii
% \labelsep .5em%
% \labelsep .3em%
\labelwidth\leftmarginii
\advance\labelwidth-\labelsep
% \topsep 0\p@ \@plus\p@
% \topsep -.5\parskip\@plus\p@
\parsep \z@
\itemsep \z@ \@plus\p@}
\def\@listiii{\leftmargin\leftmarginiii
% \labelsep .5em%
% \labelsep .3em%
\labelwidth\leftmarginiii
\advance\labelwidth-\labelsep
% \topsep 0\p@ \@plus\p@
% \topsep -.5\parskip\@plus\p@
\parsep \z@
\partopsep \z@ \@plus\p@
\itemsep \z@ \@plus\p@}
\def\@listiv {\leftmargin\leftmarginiv
% \labelsep .5em%
% \labelsep .3em%
\labelwidth\leftmarginiv%
\advance\labelwidth-\labelsep
% \topsep 0\p@ \@plus\p@
% \topsep -.5\parskip\@plus\p@
\parsep \z@
\itemsep \z@ \@plus\p@}
\def\@listv {\leftmargin\leftmarginv
% \labelsep .5em%
% \labelsep .3em%
\labelwidth\leftmarginv
\advance\labelwidth-\labelsep%
% \topsep 0\p@ \@plus\p@
% \topsep -.5\parskip\@plus\p@
\parsep \z@
\itemsep \z@ \@plus\p@}
\def\@listvi {\leftmargin\leftmarginvi
% \labelsep .5em
% \labelsep .3em
\labelwidth\leftmarginvi
\advance\labelwidth{-\labelsep}%
% \topsep 0\p@ \@plus\p@
% \topsep -.5\parskip\@plus\p@
\parsep \z@
\itemsep \z@ \@plus\p@}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Enumerate}
%
% The enumerate environment uses four counters: \Lcount{enumi},
% \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where
% \Lcount{enumN} controls the numbering of the Nth level
% enumeration.
%
% \begin{macro}{\theenumi}
% \begin{macro}{\theenumii}
% \begin{macro}{\theenumiii}
% \begin{macro}{\theenumiv}
% The counters are already defined in \file{latex.dtx}, but their
% representation is changed here.
%
% \begin{macrocode}
\renewcommand*\theenumi{\@arabic\c@enumi}
\renewcommand*\theenumii{\@alph\c@enumii}
\renewcommand*\theenumiii{\@roman\c@enumiii}
\renewcommand*\theenumiv{\@Alph\c@enumiv}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\labelenumi}
% \begin{macro}{\labelenumii}
% \begin{macro}{\labelenumiii}
% \begin{macro}{\labelenumiv}
% The label for each item is generated by the commands\\
% |\labelenumi| ... |\labelenumiv|.
% \begin{macrocode}
\newcommand*\labelenumi{\theenumi.}
\newcommand*\labelenumii{(\theenumii)}
\newcommand*\labelenumiii{\theenumiii.}
\newcommand*\labelenumiv{\theenumiv.}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\p@enumii}
% \begin{macro}{\p@enumiii}
% \begin{macro}{\p@enumiv}
% The expansion of |\p@enumN||\theenumN| defines the output of a
% |\ref| command when referencing an item of the Nth level of an
% enumerated list.
% \begin{macrocode}
\renewcommand*\p@enumii{\theenumi}
\renewcommand*\p@enumiii{\theenumi(\theenumii)}
\renewcommand*\p@enumiv{\p@enumiii\theenumiii}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \begin{environment}{enumerate}
% We want to have different label positioning on different levels of
% list. To acheive this we have to redefine the \Lenv{enumerate}
% environment.
% \changes{v2.1c}{2020/02/21}{Use \cs{thr@@}}
% \begin{macrocode}
\renewenvironment{enumerate}{%
\ifnum \@enumdepth >\thr@@
\@toodeep
\else
\advance\@enumdepth \@ne
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
% \end{macrocode}
% \changes{v2.1c}{2020/02/21}{Use \cs{expandafter}}
% \begin{macrocode}
\expandafter
\list
\csname label\@enumctr\endcsname
{\usecounter{\@enumctr}%
% \ifnum \@listdepth=1
%<*type1|type3>
\if@revlabel
\def\makelabel##1{\hskip .5\unitindent{##1\hfil}}%
\else
% \def\makelabel##1{\hfil##1}
% \def\makelabel##1{##1\hfil}
\fi
%
% \else
% \def\makelabel##1{##1\hfil}%
% \fi
}%
\fi}
% \end{macrocode}
% We try to suppress spaces after these list constructs.
% \begin{macrocode}
{\global\@ignoretrue \endlist}
% \end{macrocode}
% \end{environment}
%
% \subsubsection{Itemize}
%
% \begin{macro}{\labelitemi}
% \begin{macro}{\labelitemii}
% \begin{macro}{\labelitemiii}
% \begin{macro}{\labelitemiv}
% Itemization is controlled by four commands: |\labelitemi|,
% |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define
% the labels of thevarious itemization levels: the symbols used are
% bullet, bold en-dash, asterisk and centred dot.
%
% \changes{v2.0u}{1996/09/23}{Changed \texttt{--} to \cs{textendash}
% following \file{classes.dtx}}
% \changes{v2.0u}{1996/09/23}{Did similar for the bullet and centered
% dot.}
% \changes{v2.0v}{1997/03/02}{Now also \cs{textasteriskcentered}}
% \changes{v2.1c}{2020/02/18}{Use \cs{labelitemfont}}
% \begin{macrocode}
\newcommand\labelitemi {\labelitemfont \textbullet}
\newcommand\labelitemii {\labelitemfont \bfseries \textendash}
\newcommand\labelitemiii{\labelitemfont \textasteriskcentered}
\newcommand\labelitemiv {\labelitemfont \textperiodcentered}
% \end{macrocode}
%
% \begin{macro}{\labelitemfont}
% The default definition for \cs{labelitemfont} is to reset the
% font to \cs{normalfont} so that always the same symbol is
% produced regardless of surrounding conditions.
%
% \changes{v2.1c}{2020/02/18}{Normalize label fonts}
% A possible alternative would be
%\begin{verbatim}
%\renewcommand\labelitemfont{%
% \fontseries\seriesdefault
% \fontshape\shapedefault\selectfont}
%\end{verbatim}
% which resets series and shape doesn't touch the family.
% \begin{macrocode}
\newcommand\labelitemfont{\normalfont}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{environment}{itemize}
% We want to have differen label positioning on different levels of
% list. To acheive this we have to redefine the \Lenv{itemize}
% environment.
% \changes{v2.1c}{2020/02/21}{Use \cs{thr@@}}
% \begin{macrocode}
\renewenvironment{itemize}{%
\ifnum \@itemdepth >\thr@@
\@toodeep
\else
\advance\@itemdepth \@ne
\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
% \end{macrocode}
% \changes{v2.1c}{2020/02/21}{Use \cs{expandafter}}
% \begin{macrocode}
\expandafter
\list
\csname\@itemitem\endcsname
{%
% \ifnum \@listdepth=1\relax
%<*type1|type3>
\if@revlabel
\def\makelabel##1{\hskip .5\unitindent{##1\hfil}}\else
% \def\makelabel##1{\hfil##1}
% \def\makelabel##1{##1\hfil}
\fi
%
% \else
% \def\makelabel##1{##1\hfil}
% \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|.
%
% \changes{v2.1c}{2020/02/18}{Inserted \cs{normalfont}}
% \begin{macrocode}
\newcommand*\descriptionlabel[1]{\hspace\labelsep
\normalfont\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
%
% \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
%
% \leftskip\unitindent
% \leftskip\z@
%<*type3>
\topsep=-.5\parskip
\@verbatim
%
\frenchspacing\@vobeyspaces \@xverbatim}
%\def\endverbatim{\if@newlist \leavevmode\fi\endtrivlist}
% \end{macrocode}
% \end{environment}
%
% \subsection{Defining new environments}
%
% \subsubsection{Abstract}
%
% \begin{environment}{abstract}
% When we are producing a separate titlepage we also put the
% abstract on a page of its own. It will be centred vertically on
% the page.
%
% Note that this environment is not defined for boeks.
% \changes{v2.0e}{1994/03/19}{Use \cs{SectFont} for the abstract title}
% \changes{v2.1c}{2020/02/18}{Added setting of \cs{beginparpenalty}
% to discourage page break before abstract heading and setting of
% \cs{@endparpenalty} to avoid page break after abstract heading.}
% \begin{macrocode}
%\if@titlepage
\newenvironment{abstract}{%
\titlepage
\null\vfil
\@beginparpenalty\@lowpenalty
\hbox{\SectFont \abstractname}%
\@endparpenalty\@M
\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
%
% \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[]%
%
\fi}
% \end{macrocode}
% Which implies that the definition of |\end{abstract}| is also
% different.
% \begin{macrocode}
% {\if@twocolumn\else\par\egroup\fi}
% {\if@twocolumn\else\par\endlist\fi}
\fi
%
% \end{macrocode}
% \end{environment}
%
% \subsubsection{Verse}
%
% \begin{environment}{verse}
% The verse environment is defined by making clever use of the
% list environment's parameters. The user types |\\| to end a line.
% This is implemented by |\let|'ing |\\| equal |\@centercr|.
%
% \changes{v2.0r}{1995/10/05}{stop \cs{item} scanning for [ with
% \cs{relax}}
% \begin{macrocode}
\newenvironment{verse}
{\let\\\@centercr
\list{}{\itemsep\z@
\itemindent-1.5em%
\listparindent\itemindent
\rightmargin\leftmargin
\advance\leftmargin1.5em}%
\item\relax}
{\endlist}
% \end{macrocode}
% \end{environment}
%
% \subsubsection{Quotation}
%
% \begin{environment}{quotation}
% The quotation environment is also defined by making clever use of
% the list environment's parameters. The lines in the environment
% are set smaller than |\textwidth|. The first line of a paragraph
% inside this environment is indented.
%
% \changes{v2.0r}{1995/10/05}{stop \cs{item} scanning for [ with
% \cs{relax}}
% \begin{macrocode}
\newenvironment{quotation}
{\list{}{%
% \listparindent\z@
% \listparindent\unitindent
% \listparindent1.5em%
\itemindent\listparindent
\rightmargin\leftmargin
\parsep\z@ \@plus\p@}%
\item\relax}
{\endlist}
% \end{macrocode}
% \end{environment}
%
% \subsubsection{Quote}
%
% \begin{environment}{quote}
% The quote environment is like the quotation environment except
% that paragraphs are not indented.
%
% \changes{v2.0r}{1995/10/05}{stop \cs{item} scanning for [ with
% \cs{relax}}
% \begin{macrocode}
\newenvironment{quote}
{\list{}{\rightmargin\leftmargin}%
\item\relax}
{\endlist}
% \end{macrocode}
% \end{environment}
%
% \subsubsection{Theorem}
%
% \begin{macro}{\@begintheorem}
% \begin{macro}{\@opargbegintheorem}
% \begin{macro}{\@endtheorem}
% These document classes have a slightly modified \Lenv{theorem}
% environment style. Surrounding whitespace is added and an
% initialisation of |\labelsep|. Finally a slanted font instead of
% an italic font is used.
% \begin{macrocode}
\def\@begintheorem#1#2{%
\vskip\baselineskip \labelsep=.5em%
\trivlist
\item[\hskip \labelsep{\bfseries #1\ #2}]\slshape}
\def\@opargbegintheorem#1#2#3{%
\vskip\baselineskip \labelsep=.5em%
\trivlist
\item[\hskip \labelsep{\bfseries #1\ #2\ (#3)}]\slshape}
\def\@endtheorem{\endtrivlist \vskip\baselineskip}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Titlepage}
%
% \begin{environment}{titlepage}
% In the normal environments, the titlepage environment does
% nothing but start and end a page, and inhibit page numbers. It
% also resets the page number to zero. This is incorrect since it
% results in using the page parameters for a right-hand page but it
% is the way it was. In two-column style, it still makes a
% one-column page.
%
% \changes{v1.0.7}{1993/12/09}{Moved the setting of
% \cs{@restonecolfalse}}
% \changes{v2.0f}{1994/04/18}{Incorporated LL's changes to this
% environment}
% \begin{macrocode}
\newenvironment{titlepage}
{
% \cleardoublepage
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse\newpage
\fi
\thispagestyle{empty}%
\if@compatibility
\setcounter{page}\z@
%<*artikel|rapport>
\else
\setcounter{page}\@ne
%
\fi}
{\if@restonecol\twocolumn \else \newpage \fi
% \setcounter{page}\@ne
}
% \end{macrocode}
% \end{environment}
%
% \subsubsection{Appendix}
%
% \begin{macro}{\appendix}
%
% The |\appendix| command is not really an environment, it is a
% macro that makes some changes in the way things are done.
%
% In the artikel document classes the |\appendix| command must do the
% following:
% \begin{itemize}
% \item reset the section and subsection counters to zero,
% \item redefine |\thesection| to produce alphabetic appendix
% numbers.
% \end{itemize}
%
% \changes{v2.0z}{2004/02/20}{Redefine \cs{thesection} globally
% (\LaTeX{} pr/2862)}
% \begin{macrocode}
%<*artikel>
\newcommand*\appendix{\par
\setcounter{section}{0}%
\setcounter{subsection}{0}%
\gdef\thesection{\@Alph\c@section}}
%
% \end{macrocode}
%
% In the rapport and boek document classes the |\appendix| command
% must do the following:
% \begin{itemize}
% \item reset the chapter and section counters to zero,
% \item set |\@chapapp| to |\appendixname| (for messages),
% \item redefine the chapter counter to produce appendix numbers,
% \item possibly redefine the |\chapter| command if appendix titles
% and headings are to look different from chapter titles and
% headings.
% \end{itemize}
%
% \changes{v2.0z}{2004/02/20}{Redefine \cs{thechapter} and
% \cs{@chapapp} globally (\LaTeX{} pr/2862)}
% \begin{macrocode}
%<*rapport|boek>
\newcommand*\appendix{\par
\setcounter{chapter}{0}%
\setcounter{section}{0}%
\gdef\@chapapp{\appendixname}%
\gdef\thechapter{\@Alph\c@chapter}}
%
% \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}
%\def\@minipagerestore{\parindent\unitindent}
%<*type3>
\def\@minipagerestore{%
\parskip=.5\baselineskip \@plus .1\baselineskip
\@minus .1\baselineskip}
%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@mpfootins}
% Minipages have their own footnotes; |\skip||\@mpfootins| plays
% same r\^ole for footnotes in a minipage as |\skip||\footins| does
% for ordinary footnotes.
%
% \begin{macrocode}
\skip\@mpfootins = \skip\footins
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Framed boxes}
%
% \begin{macro}{\fboxsep}
% The space left by |\fbox| and |\framebox| between the box and the
% text in it.
% \begin{macro}{\fboxrule}
% The width of the rules in the box made by |\fbox| and |\framebox|.
% \begin{macrocode}
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsubsection{Equation and eqnarray}
%
% \begin{macro}{\theequation}
% When within chapters, the equation counter will be reset at
% beginning of a new chapter and the equation number will be
% prefixed by the chapter number.
%
% This code must follow the |\chapter| definition, or more exactly
% the definition of the chapter counter.
% \changes{v2.0v}{1997/03/02}{Added test for non-zero chapter number}
% \begin{macrocode}
%\renewcommand*\theequation{\@arabic\c@equation}
%<*rapport|boek>
\@addtoreset{equation}{chapter}
\renewcommand*\theequation{%
\ifnum \c@chapter>\z@ \thechapter.\fi\@arabic\c@equation}
%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\jot}
% |\jot| is the extra space added between lines of an eqnarray
% environment. The default value is used.
% \begin{macrocode}
% \setlength\jot{3pt}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@eqnnum}
% The macro |\@eqnnum| defines how equation numbers are to appear in
% equations. Again the default is used.
%
% \begin{macrocode}
% \def\@eqnnum{(\theequation)}
% \end{macrocode}
% \end{macro}
%
% \subsection{Floating objects}
%
% The file \file{latex.dtx} only defines a number of tools with
% which floating objects can be defined. This is done in the
% document class. It needs to define the following macros for each
% floating object of type \texttt{TYPE} (e.g., \texttt{TYPE} =
% figure).
%
% \begin{description}
% \item[\texttt{\bslash fps@TYPE}]
% The default placement specifier for floats of type
% \texttt{TYPE}.
%
% \item[\texttt{\bslash ftype@TYPE}]
% The type number for floats of type \texttt{TYPE}. Each
% \texttt{TYPE} has associated a unique positive {\texttt
% TYPE} number, which is a power of two. E.g., figures might
% have type number 1, tables type number 2, programs type
% number 4, etc.
%
% \item[\texttt{\bslash ext@TYPE}]
% The file extension indicating the file on which the contents
% list for float type \texttt{TYPE} is stored. For example,
% |\ext@figure| = `lof'.
%
% \item[\texttt{\bslash fnum@TYPE}]
% A macro to generate the figure number for a caption. For
% example, |\fnum@TYPE| == `Figure |\thefigure|'.
%
% \item[\texttt{\bslash @makecaption{\meta{num}}{\meta{text}}}]
% A macro to make a caption, with \meta{num} the value produced
% by |\fnum@...| and \meta{text} the text of the caption. It
% can assume it's in a |\parbox| of the appropriate width.
% This will be used for \emph{all} floating objects.
%
% \end{description}
%
% The actual environment that implements a floating object such as
% a figure is defined using the macros |\@float| and |\end@float|,
% which are defined in \file{latex.dtx}.
%
% An environment that implements a single column floating object is
% started with |\@float{|\texttt{TYPE}|}[|\meta{placement}|]| of type
% \texttt{TYPE} with \meta{placement} as the placement specifier.
% The default value of \meta{PLACEMENT} is defined by |\fps@TYPE|.
%
% The environment is ended by |\end@float|. E.g., |\figure| ==
% |\@float|{figure}, |\endfigure| == |\end@float|.
%
% \subsubsection{Figure}
%
% Here is the implementation of the figure environment.
%
% \begin{macro}{\c@figure}
% First we have to allocate a counter to number the figures. In the
% rapport and boek document classes the figures are numbered per
% chapter.
% \begin{macrocode}
%<*artikel>
\newcounter{figure}
\renewcommand*\thefigure{\@arabic\c@figure}
%
%<*rapport|boek>
% \end{macrocode}
% \changes{v2.0v}{1997/03/02}{Added test for non-zero chapter number}
% \begin{macrocode}
\newcounter{figure}[chapter]
\renewcommand*\thefigure{%
\ifnum\c@chapter>\z@\thechapter.\fi\@arabic\c@figure}
%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\fps@figure}
% \begin{macro}{\ftype@figure}
% \begin{macro}{\ext@figure}
% \begin{macro}{\num@figure}
% Here are the parameters for the floating objects of type `figure'.
% \changes{v2.0z}{2004/02/20}{Replaced tilde with \cs{nobreakspace}
% (\LaTeX{} pr/3310)}
% \begin{macrocode}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename\nobreakspace\thefigure}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{environment}{figure}
% \begin{environment}{figure*}
% And the definition of the actual environment. The form with the
% |*| is used for double column figures.
% \begin{macrocode}
\newenvironment{figure}
{\@float{figure}}
{\end@float}
\newenvironment{figure*}
{\@dblfloat{figure}}
{\end@dblfloat}
% \end{macrocode}
% \end{environment}
% \end{environment}
%
% \subsubsection{Table}
%
% Here is the implementation of the table environment. It is very
% much the same as the figure environment.
%
% \begin{macro}{\c@table}
% First we have to allocate a counter to number the tables. In the
% rapport and boek document classes the tables are numbered per
% chapter.
% \begin{macrocode}
%<*artikel>
\newcounter{table}
\renewcommand*\thetable{\@arabic\c@table}
%
%<*rapport|boek>
% \end{macrocode}
% \changes{v2.0v}{1997/03/02}{Added test for non-zero chapter number}
% \begin{macrocode}
\newcounter{table}[chapter]
\renewcommand*\thetable{%
\ifnum\c@chapter>\z@\thechapter.\fi\@arabic\c@table}
%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\fps@table}
% \begin{macro}{\ftype@table}
% \begin{macro}{\ext@table}
% \begin{macro}{\num@table}
% Here are the parameters for the floating objects of type `table'.
% \changes{v2.0z}{2004/02/20}{Replaced tilde with \cs{nobreakspace}
% (\LaTeX{} pr/3310)}
% \begin{macrocode}
\def\fps@table{tbp}
\def\ftype@table{2}
\def\ext@table{lot}
\def\fnum@table{\tablename\nobreakspace\thetable}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{environment}{table}
% \begin{environment}{table*}
% And the definition of the actual environment. The form with the
% |*| is used for double column tables.
% \begin{macrocode}
\newenvironment{table}
{\@float{table}}
{\end@float}
\newenvironment{table*}
{\@dblfloat{table}}
{\end@dblfloat}
% \end{macrocode}
% \end{environment}
% \end{environment}
%
% \subsubsection{Captions}
%
% \begin{macro}{\@makecaption}
% The |\caption| command calls |\@makecaption| to format the
% caption of floating objects. It gets two arguments,
% \meta{number}, the number of the floating object and \meta{text},
% the text of the caption. Usually \meta{number} contains a string
% such as `Figure 3.2'. The macro can assume it is called inside a
% |\parbox| of right width, with |\normalsize|.
%
% \begin{macro}{\abovecaptionskip}
% \begin{macro}{\belowcaptionskip}
% These lengths contain the amount of white space to leave above
% and below the caption.
% \begin{macrocode}
\newlength\abovecaptionskip
\newlength\belowcaptionskip
\setlength\abovecaptionskip{10\p@}
\setlength\belowcaptionskip{0\p@}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% The definition of this macro is |\long| in order to allow more
% then one paragraph in a caption.
% \changes{v2.0d}{1994/02/23}{Introduced \cs{CaptionLabelFont} and
% \cs{CaptionTextFont}}
% \changes{v2.0e}{1994/03/19}{\cs{CaptionLabelFont} shouldn't
% influence the font for the caption text}
% \begin{macrocode}
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
% \end{macrocode}
% We want to see if the caption fits on one line on the page,
% therefore we first typeset it in a temporary box.
% \changes{vv2.0g}{1994/06/01}{Use \cs{sbox}\cs{@tempboxa} instead of
% \cs{setbox}\cs{@tempboxa}\cs{hbox} to make this colour safe}
% \begin{macrocode}
\sbox\@tempboxa{{\CaptionLabelFont#1:} \CaptionTextFont#2}%
% \end{macrocode}
% We can the measure its width. It that is larger than the current
% |\hsize| we typeset the caption as an ordinary paragraph.
% \begin{macrocode}
\ifdim \wd\@tempboxa >\hsize
{\CaptionLabelFont#1:} \CaptionTextFont#2\par
% \end{macrocode}
% If the caption fits, we center it. Because this uses an |\hbox|
% directly in vertical mode, it does not execute the |\everypar|
% tokens; the only thing that could be needed here is resetting the
% `minipage flag' so we do this explicitly.
% \changes{v2.0m}{1994/12/20}{Due to a change in the way floats are
% handled we need to set the \cs{if@minipage} switch to false}
% \begin{macrocode}
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\CaptionLabelFont}
% \begin{macro}{\CaptionTextFont}
% These macros can contain the fonts used for typesetting captions.
% By default they do nothing.
% \begin{macrocode}
\newcommand*\CaptionLabelFont{\relax}
\newcommand*\CaptionTextFont{\relax}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\CaptionFonts}
% To change the fonts that are used to typeset captions
% this macro can be used.
% \begin{macrocode}
\newcommand*\CaptionFonts[2]{%
\renewcommand*\CaptionLabelFont{#1}%
\renewcommand*\CaptionTextFont{#2}%
}
% \end{macrocode}
% \end{macro}
%
% \subsection{Font changing}
%
% \changes{v2.0f}{1994/04/18}{\cs{@newfontswitch} and
% \cs{@renewfontswitch} have become \cs{DeclareOldFontCommand}}
%
% Here we supply the declarative font changing commands that were
% common in \LaTeX\ version 2.09 and earlier. These commands work
% in text mode \emph{and} in math mode. They are provided for
% compatibility, but one should start using the |\text...| and
% |\math...| commands instead. These commands are defined using
% |\DeclareOldFontCommand|, a command with three arguments: the user
% command to be defined; \LaTeX\ commands to execute in text mode
% and \LaTeX\ commands to execute in math mode.
%
% \changes{v1.0.7}{1993/12/12}{Distinguished between compatibility and
% `normal' mode for the font changing commands.}
% \changes{v1.0.8}{1993/12/18}{These are now defined in the kernel,
% so use \cs{@renewfontswitch}. Compatibility mode defines
% \cs{@renewfontswitch} to do nothing, so we don't need to check for
% compatibility mode any more.}
% \changes{v1.0.10}{1993/12/20}{Added \cs{normalfont} back in the
% definitions of \cs{rm} etc. as this should be the default
% behaviour}
% \begin{macro}{\rm}
% \changes{v1.0.6}{1993/12/08}{Macro added}
% \begin{macro}{\tt}
% \changes{v1.0.6}{1993/12/08}{Macro added}
% \begin{macro}{\sf}
% \changes{v1.0.6}{1993/12/08}{Macro added}
%
% The commands to change the family. When in compatibility mode we
% select the `default' font first, to get \LaTeX2.09 behviour.
% \begin{macrocode}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\bf}
% \changes{v1.0.6}{1993/12/08}{Macro added}
% The command to change to the bold series. One should use
% |\mdseries| to explicitly switch back to medium series.
% \begin{macrocode}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\sl}
% \changes{v1.0.6}{1993/12/08}{Macro added}
% \begin{macro}{\it}
% \changes{v1.0.6}{1993/12/08}{Macro added}
% \begin{macro}{\sc}
% \changes{v1.0.6}{1993/12/08}{Macro added}
%
% And the commands to change the shape of the font. The slanted and
% small caps shapes are not available by default as math alphabets,
% so those changes do nothing in math mode. One should use
% |\upshape| to explicitly change back to the upright shape.
% \begin{macrocode}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\relax}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\relax}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\cal}
% \changes{v1.0.7}{1993/12/12}{Macro added}
% \begin{macro}{\mit}
% \changes{v1.0.7}{1993/12/12}{Macro added}
%
% The commands |\cal| and |\mit| should only be used in math mode,
% outside math mode they have no effect. Currently the New Font
% Selection Scheme defines these commands to generate warning
% messages. Therefore we have to define them `by hand'.
% \changes{v2.0m}{1994/12/20}{Now define \cs{cal} and \cs{mit} using
% \cs{DeclareRobustCommand*}}
% \changes{v2.0t}{1996/04/01}{Repaired a couple of typos}
% \begin{macrocode}
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\em}
% The definition of \verb*|\em| is changed here to have slanted
% instead of italic fonts.
% \changes{v2.0s}{1995/11/28}{Now redefine \cs*{em} instead of \cs{pem}}
% \begin{macrocode}
\DeclareRobustCommand*\em{%
\@nomath\em
\ifdim\fontdimen\@ne\font>\z@
\upshape
\else
\slshape
\fi}
% \end{macrocode}
% \end{macro}
%
% \section{Cross Referencing}
% \subsection{Table of Contents, etc.}
%
% A |\section| command writes a
% |\contentsline{section}{|\meta{title}|}{|\meta{page}|}| command
% on the \file{.toc} file, where \meta{title} contains the
% contents of the entry and \meta{page} is the page number. If
% sections are being numbered, then \meta{title} will be of the
% form |\numberline{|\meta{num}|}{|\meta{heading}|}| where
% \meta{num} is the number produced by |\thesection|. Other
% sectioning commands work similarly.
%
% A |\caption| command in a `figure' environment writes
%
% |\contentsline{figure}{\numberline{|\meta{num}|}{|%
% \meta{caption}|}}{|\meta{page}|}|
%
% on the .\file{lof} file, where \meta{num} is the number produced
% by |\thefigure| and \meta{caption} is the figure caption. It
% works similarly for a `table' environment.
%
% The command |\contentsline{|\meta{name}|}| expands to
% |\l@|\meta{name}. So, to specify the table of contents, we must
% define |\l@chapter|, |\l@section|, |\l@subsection|, ... ; to
% specify the list of figures, we must define |\l@figure|; and so
% on. Most of these can be defined with either the
% |\@dottedtocline| or the |\@regtocline| command, which work as
% follows.
%
% |\@dottedtocline{|\meta{level}|}{|\meta{indent}|}{|^^A
% \meta{numwidth}|}{|^^A
% \meta{title}|}{|\meta{page}|}|
%
% |\@regtocline{|\meta{level}|}{|\meta{title}|}{|\meta{page}|}|
%
% \begin{description}
% \item[\meta{level}] An entry is produced only if\meta{ level}
% $<=$ value of the \Lcount{tocdepth} counter. Note,
% |\chapter| is level 0, |\section| is level 1, etc.
% \item[\meta{indent}] The indentation from the outer left margin
% of the start of the contents line.
% \item[\meta{numwidth}] The width of a box in which the section
% number is to go, if \meta{title} includes a |\numberline|
% command.
% \end{description}
%
% \begin{macro}{\@pnumwidth}
% \begin{macro}{\@tocrmarg}
% \begin{macro}{\@dotsep}
% This command uses the following three parameters, which are set
% with a |\newcommand| (so em's can be used to make them depend upon
% the font).
% \begin{description}
% \item[\texttt{\bslash @pnumwidth}] The width of a box in which the
% page number is put.
% \changes{v2.0m}{1994/12/20}{Changed documentation from > or = to
% $\ge$}
% \item[\texttt{\bslash @tocrmarg}] The right margin for multiple
% line entries. One wants |\@tocrmarg| $\ge$ |\@pnumwidth|
% \item[\texttt{\bslash @dotsep}] Separation between dots, in mu
% units. Should be defined as a number like 2 or 1.7
% \end{description}
%
% \begin{macrocode}
\newcommand*\@pnumwidth{1.55em}
\newcommand*\@tocrmarg {2.55em}
\newcommand*\@dotsep{4.5}
%\setcounter{tocdepth}{3}
%\setcounter{tocdepth}{2}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Table of Contents}
%
% \begin{macro}{\tableofcontents}
% This macro is used to request that \LaTeX{} produces a table of
% contents. In the rapport and boek document classes the tables of
% contents, figures etc. are always set in single-column style.
%
% \changes{v1.0.7}{1993/12/09}{Moved the setting of
% \cs{@restonecolfalse}}
% \begin{macrocode}
\newcommand*\tableofcontents{%
%<*rapport|boek>
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
% \end{macrocode}
% The title is set using the |\chapter*| command, making sure that
% the running head --if one is required-- contains the right
% information.
% \changes{v2.1a}{2004/06/07}{Moved \cs{@mkboth} out of heading arg
% (\LaTeX{} pr/3285)}
% \changes{v2.1c}{2020/02/18}{Explain why \cs{@mkboth} is inside the heading
% arg for \cs{tableofcontents} (\LaTeX{} pr/3285 and pr/3984)}
% \begin{macrocode}
\chapter*{\contentsname}%
%
% \section*{\contentsname}%
% \end{macrocode}
% The code for |\@mkboth| is placed inside the heading to avoid any
% influence on vertical spacing after the heading (in some cases). For
% other commands, such as |\listoffigures| below this has been changed from
% the \LaTeX{}2.09 version as it will produce a serious bug if used in
% two-column mode (see, \LaTeX{} pr/3285). However
% |\tableofcontents| is always
% typeset in one-column mode in these classes, therefore the somewhat
% inconsistent setting has been retained for compatibility reasons.
% \begin{macrocode}
\@mkboth{\MakeUppercase{\contentsname}}%
{\MakeUppercase{\contentsname}}%
% \end{macrocode}
% The the actual table of contents is made by calling
% |\@starttoc{toc}|. After that we restore twocolumn mode if
% necessary.
% \begin{macrocode}
\@starttoc{toc}%
% \if@restonecol\twocolumn\fi
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@starttoc}
% The internal \LaTeXe macro |\@starttoc| needs to be adapted for
% the \file{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
% \end{macrocode}
%
% \changes{v2.1c}{2020/02/21}{Remove \cs{global} before
% \cs{@nobreakfalse} as was done in \LaTeX}
% \begin{macrocode}
\fi \@nobreakfalse \endgroup}
%
% \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|.
% \changes{v2.1b}{2004/08/14}{\cs{toc@font} is no longer passed
% throughthe \texttt{.aux}-file, we set it here directly}
% \changes{v2.1b}{2004/08/16}{\cs{toc@case} is no longer passed
% through the \texttt{.aux} file, set it directly}
% \begin{macrocode}
\newcommand*\@regtocline[3]{%
\ifnum #1>\c@tocdepth
\else
\vskip\z@\@plus.2\p@
{\hangindent\z@ \@afterindenttrue \interlinepenalty\@M
\leftskip\unitindent
\rightskip\unitindent\@plus 1fil
\parfillskip\z@
\@tempdima\unitindent
% \advance\@tempdima by \othermargin
\parindent\z@
\leavevmode
\hbox{}\hskip -\leftskip\relax
\ifnum#1<0\toc@case{#2}\else
\toc@font#1 #2\fi\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}
%\def\numberline#1{\hb@xt@\@tempdima{\hfil#1\hskip.3em}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\toc@font}
% \begin{macro}{\toc@fontsel}
% The changed definition of |\@sect| that we use, selects a
% different font for the table of contents for the various header
% levels. It does this using |\toc@font|.
% \changes{v2.1b}{2004/08/16}{We want this font change to only affect
% the section title, \emph{not} the section number, therefor we
% need to push it behind \cs{numberline} and its argument}
% \begin{macrocode}
\if@oldtoc
\newcommand*\toc@font[1]{\relax}
\else
% \end{macrocode}
% A line of the table of contents contains |\numberline| and the
% section number as its first two elements. We don't want to set
% the section number using |\toc@font|, therefor we give it two
% additional arguments and pass them on first, \emph{before}
% changing the font. Note that we need to re-insert the braces
% around the second argument.
% \changes{v2.1b}{2004/08/16}{Introduce a separarte macro
% \cs{toc@fontsel}}
% \changes{v2.1c}{2020/02/22}{We need to jump another token, so we
% need 4 arguments to accomplish that}
% \changes{v2.1f}{2023-01-10}{The fix in 2.1c was buggy without
% hyperref; aply proposal by Piet van Oostrum to explicitly test
% for hyperref}
% \begin{macrocode}
\newcommand*\toc@font[4]{%
\ifx\Hy@toclinkstart#2%
\def\@next{#2\toc@font#1#3#4}%
\else
\def\@next{#2{#3}\toc@fontsel#1#4}%
\expandafter\fi\@next}
\newcommand*\toc@fontsel[1]{%
%<*artikel>
\ifcase#1\relax
% \Large\bfseries
\or\bfseries
\or\slshape
\or\rmfamily
%
%<*rapport|boek>
\ifcase#1\relax
\bfseries
\or\slshape
\or\rmfamily
%
\fi}
% \end{macrocode}
% \changes{v2.1b}{2004/08/16}{Take \textsf{hyperref} into account}
% When the user wants to produce a hyper-document using
% \textsf{hyperref} we need to take special precautions to make it
% work for the table of contents. We check for the existence of
% |\hyper@linkstart| to detect this situation at
% |\begin{document}|.
%
% \textsf{Hyperref} injects extra tokens
% (|\hyper@linkstart{link}{Hy@tocdestname}|)
% into the stream in front of thde real contentsline. The command
% |\hyper@linkstart| and its arguments need to be protected from
% expanding too early or being ``upperccased'' themselves.
%
% \begin{macrocode}
\AtBeginDocument{%
\ifx\hyper@linkstart\undefined
\else
% \end{macrocode}
% In the contentslines for chapters, sections etc., the command
% selection of the appropriate font needs to come after the code
% that \textsf{hyperref} injects. we do this with some argument
% shuffling.
% \changes{v2.1c}{2020/02/21}{removed the space between \#1 and \#5}
% \begin{macrocode}
\let\ORG@hyper@linkstart\hyper@linkstart
\protected\def\hyper@linkstart#1#2{%
\lowercase{\ORG@hyper@linkstart{#1}{#2}}}
\fi}
\fi
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\toc@case}
% In the \file{rapport} and \file{boek} document classes, the
% entries for parts are typeset in capital letters in the new style
% of the table of contents. In the old style this isn't done. The
% macro |\toc@case| is used to switch this.
% \begin{macrocode}
\if@oldtoc
\newcommand*\toc@case{\relax}
\else
\newcommand*\toc@case{\MakeUppercase}
\fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\l@part}
% Each sectioning command needs an additional macro to format its
% entry in the table of contents, as described above. The macro for
% the entry for parts is defined in a special way.
%
% First we make sure that if a pagebreak should occur, it occurs
% \emph{before} this entry. Also a little whitespace is added and a
% group begun to keep changes local.
% \changes{v1.0.8}{1993/12/18}{Replaced -\cs{@secpenalty} by
% \cs{@secpenalty}. ASAJ.}
%
% First we have the definition from the standard classes.
% \changes{v2.0q}{1995/08/22}{Don't print a toc line when the tocdepth
% counter is less then -1; Added missing braces around argument to
% \cs{addpenalty}.}
% \begin{macrocode}
\if@oldtoc
\newcommand*\l@part[2]{%
\ifnum \c@tocdepth >-2\relax
% \addpenalty\@secpenalty
% \addpenalty{-\@highpenalty}%
\addvspace{2.25em \@plus\p@}%
\begingroup
% \end{macrocode}
% The macro |\numberline| requires that the width of the box that
% holds the part number is stored in \LaTeX's scratch register
% |\@tempdima|. Therefore we put it there.
% \begin{macrocode}
\setlength\@tempdima{3em}%
% \end{macrocode}
% The we set |\parindent| to 0pt and use |\rightskip| to leave
% enough room for the pagenumbers. To prevent overfull box messages
% the |\parfillskip| is set to a negative value.
% \begin{macrocode}
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
% \end{macrocode}
% Now we can set the entry, in a large bold font. We make sure to
% leave vertical mode, set the part title and add the pagenumber,
% set flush right.
% \begin{macrocode}
{\leavevmode
\large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2%
% \end{macrocode}
%
% \changes{v2.1c}{2020/02/18}{Prevent protrusion
% (\url{https://tex.stackexchange.com/q/172785/10109})}
% \begin{macrocode}
\kern-\p@\kern\p@}}\par
% \end{macrocode}
% Prevent a pagebreak immediately after this entry, but use
% |\everypar| to reset the |\if@nobreak| switch. Finally we close
% the group.
% \changes{v2.0r}{1995/10/05}{Added missing percent}
% \begin{macrocode}
\nobreak
% \if@compatibility
\global\@nobreaktrue
\everypar{\global\@nobreakfalse\everypar{}}%
% \fi
\endgroup
\fi}
% \end{macrocode}
% Then we can introduce our new definition.
% \changes{v2.1b}{2004/08/16}{Use \cs{l@@part} to prevent the \cs{fi}
% from intervening}
% \begin{macrocode}
\else
\newcommand*\l@part{%
\ifnum \c@tocdepth >-2\let\l@@part\relax
% \addpenalty\@secpenalty
% \addpenalty{-\@highpenalty}%
\addvspace{2.25em \@plus \p@}%
\def\l@@part{\@regtocline{-1}}%
\fi\l@@part}
\fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\l@chapter}
% This macro formats the entries in the table of contents for
% chapters. It is very similar to |\l@part|
%
% First we make sure that if a pagebreak should occur, it occurs
% \emph{before} this entry. Also a little whitespace is added and a
% group begun to keep changes local.
%
% Again we first present the `standard' definition
% \changes{v2.0q}{1995/08/22}{Added missing braces around argument to
% \cs{addpenalty}.}
% \begin{macrocode}
%<*rapport|boek>
\if@oldtoc
\newcommand*\l@chapter[2]{%
\addpenalty{-\@highpenalty}%
\vskip 1.0em \@plus\p@
% \end{macrocode}
%
% The macro |\numberline| requires that the width of the box that
% holds the part number is stored in \LaTeX's scratch register
% |\@tempdima|. Therefore we put it there. We begin a group, and
% change some of the paragraph parameters.
% \begin{macrocode}
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
% \end{macrocode}
% Then we leave vertical mode and switch to a bold font.
% \begin{macrocode}
\leavevmode \bfseries
% \end{macrocode}
% Because we do not use |\numberline| here, we have do some fine
% tuning `by hand', before we can set the entry. We discourage but
% not disallow a pagebreak immediately after a chapter entry.
% \begin{macrocode}
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2%
% \end{macrocode}
%
% \changes{v2.1b}{2020/02/17}{Prevent protrusion
% (\url{https://tex.stackexchange.com/q/172785/10109})}
% \begin{macrocode}
\kern-\p@\kern\p@}\par
\penalty\@highpenalty
\endgroup}
% \end{macrocode}
% Then we present our new definition.
% \begin{macrocode}
\else
\newcommand*\l@chapter{\@regtocline{0}}
\fi
%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\l@section}
% In the artikel document classes the entry in the table of contents
% for sections looks much like the chapter entries for the rapport
% and boek document classes.
%
% First we make sure that if a pagebreak should occur, it occurs
% \emph{before} this entry. Also a little whitespace is added and a
% group begun to keep changes local.
% \changes{v1.0.8}{1993/12/18}{Replaced -\cs{@secpenalty} by
% \cs{@secpenalty}. ASAJ.}
% \begin{macrocode}
%<*artikel>
\if@oldtoc
\newcommand*\l@section[2]{%
\addpenalty\@secpenalty
\addvspace{1.0em \@plus\p@}%
% \end{macrocode}
%
% The macro |\numberline| requires that the width of the box that
% holds the part number is stored in \LaTeX's scratch register
% |\@tempdima|. Therefore we put it there. We begin a group, and
% change some of the paragraph paramters.
% \begin{macrocode}
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
% \end{macrocode}
% Then we leave vertical mode and switch to a bold font.
% \begin{macrocode}
\leavevmode \bfseries
% \end{macrocode}
% Because we do not use |\numberline| here, we have do some fine
% tuning `by hand', before we can set the entry. We discourage but
% not disallow a pagebreak immediately after a chapter entry.
% \begin{macrocode}
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2%
% \end{macrocode}
%
% \changes{v2.1b}{2020/02/18}{Prevent protrusion
% (\url{https://tex.stackexchange.com/q/172785/10109})}
% \changes{v2.1e}{2020-11-17}{removed a superfluous closing brace}
% \begin{macrocode}
\kern-\p@\kern\p@}\par
\endgroup}
% \end{macrocode}
% The new definition:
% \begin{macrocode}
\else
\newcommand*\l@section{\@regtocline{1}}
\fi
%
% \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
%
% \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}}
%
%<*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}}
%
\else
\newcommand*\l@subsection {\@regtocline{2}}
\newcommand*\l@subsubsection{\@regtocline{3}}
\newcommand*\l@paragraph {\@regtocline{4}}
\newcommand*\l@subparagraph {\@regtocline{5}}
\fi
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{List of figures}
%
% \begin{macro}{\listoffigures}
% This macro is used to request that \LaTeX{} produces a list of
% figures. It is very similar to |\tableofcontents|.
%
% \changes{v1.0.7}{1993/12/09}{Moved the setting of
% \cs{@restonecolfalse}}
% \changes{v2.0z}{2004/02/20}{Moved \cs{@mkboth} out of heading arg
% (\LaTeX{} pr/3285)}
% \changes{v2.1a}{2004/06/07}{Added a missing closing brace}
% \begin{macrocode}
\newcommand*\listoffigures{%
%<*rapport|boek>
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
\chapter*{\listfigurename}%
%
% \section*{\listfigurename}%
\@mkboth{\MakeUppercase{\listfigurename}}%
{\MakeUppercase{\listfigurename}}%
\@starttoc{lof}%
% \if@restonecol\twocolumn\fi
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\l@figure}
% This macro produces an entry in the list of figures.
% \begin{macrocode}
\if@oldtoc
\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
\else
\newcommand*\l@figure{\@regtocline{1}}
\fi
% \end{macrocode}
% \end{macro}
%
% \subsubsection{List of tables}
%
% \begin{macro}{\listoftables}
% This macro is used to request that \LaTeX{} produces a list of
% tables. It is very similar to |\tableofcontents|.
%
% \changes{v1.0.7}{1993/12/09}{Moved the setting of \cs{@restonecolfalse}}
% \changes{v2.0z}{2004/02/20}{Moved \cs{@mkboth} out of heading arg
% (\LaTeX{} pr/3285)}
% \changes{v2.1a}{2004/06/07}{Added a missing closing brace}
% \begin{macrocode}
\newcommand*\listoftables{%
%<*rapport|boek>
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
\chapter*{\listtablename}%
%
% \section*{\listtablename}%
\@mkboth{\MakeUppercase{\listtablename}}%
{\MakeUppercase{\listtablename}}%
\@starttoc{lot}%
% \if@restonecol\twocolumn\fi
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\l@table}
% This macro produces an entry in the list of tables.
% \begin{macrocode}
\let\l@table\l@figure
% \end{macrocode}
% \end{macro}
%
% \subsection{Bibliography}
%
% \begin{macro}{\bibindent}
% The ``open'' bibliography format uses an indentation of
% |\bibindent|.
% \begin{macrocode}
\newdimen\bibindent
\setlength\bibindent{1.5em}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\newblock}
% This is a dummy definition for this macro which is used in the
% \textsf{thebibliography} environment.
% \begin{macrocode}
\newcommand*\newblock{}
% \end{macrocode}
% \end{macro}
%
% \begin{environment}{thebibliography}
% The `thebibliography' environment executes the following
% commands:
%
% |\renewcommand\newblock{\hskip .11em \@plus .33em \@minus .07em}|
% -- Defines the ``closed'' format, where the blocks (major units
% of information) of an entry run together.
%
% |\sloppy| -- Used because it's rather hard to do line breaks in
% bibliographies,
%
% |\sfcode`\.=1000\relax| --
% Causes a `.' (period) not to produce an end-of-sentence space.
%
% The implementation of this environment is based on the generic
% list environment. It uses the \Lcount{enumiv} counter internally
% to generate the labels of the list.
%
% When an empty `thebibliography' environment is found, a warning
% is issued.
%
% \changes{v1.0.9}{1993/12/19}{Corrected definition of thebibliography
% for artikel}
% \changes{v2.0r}{1995/10/05}{Removed unneeded braces}
% \changes{v2.0z}{2004/02/20}{Moved \cs{@mkboth} out of heading arg
% (\LaTeX{} pr/3285)}
% \begin{macrocode}
\newenvironment{thebibliography}[1]
%<*artikel>
{\section*{\refname}%
\@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%
%
%<*!artikel>
{\chapter*{\bibname}%
\@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}%
%!artikel>
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand*\theenumiv{\@arabic\c@enumiv}}%
\sloppy\clubpenalty4000\widowpenalty4000%
\sfcode`\.\@m}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
% \end{macrocode}
% \end{environment}
%
% \begin{macro}{\newblock}
% The default definition for |\newblock| is to produce a small space.
% \begin{macrocode}
% \changes{v2.0t}{1996/04/01}{use \cs{renewcommand} instead of
% \cs{newcommand}}
\renewcommand\newblock{\hskip.11em\@plus.33em\@minus.07em}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@openbib@code}
% The default definition for |\@openbib@code| is to do nothing.
% It will be changed by the \Lopt{openbib} option.
% \changes{v2.0r}{1995/10/05}{Macro added}
% \begin{macrocode}
\let\@openbib@code\@empty
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@biblabel}
% The label for a |\bibitem[...]| command is produced by this
% macro. The default from \file{latex.dtx} is used.
% \begin{macrocode}
% \renewcommand*\@biblabel[1]{[#1]\hfill}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@cite}
% The output of the |\cite| command is produced by this macro. The
% default from \file{latex.dtx} is used.
% \begin{macrocode}
% \renewcommand*\@cite[1]{[#1]}
% \end{macrocode}
% \end{macro}
%
% \subsection{The index}
%
% \begin{environment}{theindex}
% The environment `theindex' can be used for indices. It makes an
% index with two columns, with each entry a seperate paragraph. At
% the user level the commands |\item|, |\subitem| and |\subsubitem|
% are used to produce index entries of various levels. When a new
% letter of the alphabet is encountered an amount of |\indexspace|
% white space can be added.
%
%
% \changes{v1.0.7}{1993/12/09}{Moved the setting of
% \cs{@restonecoltrue}}
% \begin{macrocode}
\newenvironment{theindex}{%
\if@twocolumn
\@restonecolfalse
\else
\@restonecoltrue
\fi
% \twocolumn[\section*{\indexname}]%
% \twocolumn[\@makeschapterhead{\indexname}]%
\@mkboth{\MakeUppercase{\indexname}}{\MakeUppercase{\indexname}}%
\thispagestyle{plain}\parindent\z@
% \end{macrocode}
% Parameter changes to |\columnseprule| and |\columnsep| have to be
% done after |\twocolumn| has acted. Otherwise they can affect the
% last page before the index.
% \changes{v2.0z}{2004/02/20}{Moved setting of \cs{columnsep} and
% \cs{columnseprule} later to avoid affecting the wrong page (cf
% \LaTeX{} pr/3616)}
% \begin{macrocode}
\columnseprule \z@
\columnsep 35\p@
\parskip\z@ \@plus .3\p@\relax
\let\item\@idxitem
}{%
% \end{macrocode}
% When the document continues after the index and it was a one
% column document we have to switch back to one column after the
% index.
% \begin{macrocode}
\if@restonecol\onecolumn\else\clearpage\fi}
% \end{macrocode}
% \end{environment}
%
% \begin{macro}{\@idxitem}
% \begin{macro}{\subitem}
% \begin{macro}{\subsubitem}
% Thsee macros are used to format the entries in the index.
% \begin{macrocode}
\newcommand*\@idxitem {\par\hangindent 40\p@}
\newcommand*\subitem {\@idxitem\hspace*{20\p@}}
\newcommand*\subsubitem{\@idxitem\hspace*{30\p@}}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\indexspace}
% The amount of white space that is inserted between `letter
% blocks' in the index.
% \begin{macrocode}
\newcommand*\indexspace{\par\vskip10\p@\@plus5\p@\@minus3\p@\relax}
% \end{macrocode}
% \end{macro}
%
% \subsection{Footnotes}
%
% \begin{macro}{\footnoterule}
% Usually, footnotes are separated from the main body of the text
% by a small rule. This rule is drawn by the macro |\footnoterule|.
% The standard \LaTeX\ document classes make sure that the rule
% takes no vertical space (see \file{plain.tex}) and compensate for
% the natural heigth of the rule of 0.4pt by adding the right
% amount of vertical skip. For the \file{artikel2} document class
% this is still true, but for the others the amount of whitespace
% between the last line of the text and the start of the footnotes
% is increased by giving |\footnoterule| a positive
% height\footnote{This should perhaps have been done by increasing
% the value of \cs{skip}\cs{footins}, but changing that now would
% mean changing the formatting of existing
% documents. (\small\texttt{JLB, 08/09/1997})}.
%
% To prevent the rule from colliding with the footnote we first add
% a little negative vertical skip, then we put the rule and add
% some positive vertical skip.
% \begin{macrocode}
\renewcommand*\footnoterule{%
\kern-3\p@
%<*type1|type3>
\kern.5\baselineskip
\hrule\@width\unitindent
\kern.4\baselineskip
%
%<*type2>
\hrule\@width 3\unitindent
\kern 2.6\p@
%
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\c@footnote}
% Footnotes are numbered within chapters in the rapport and boek
% document styles.
% \begin{macrocode}
% \newcounter{footnote}
%\@addtoreset{footnote}{chapter}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@makefntext}
% The footnote mechanism of \LaTeX{} calls the macro |\@makefntext|
% to produce the actual footnote. The macro gets the text of the
% footnote as its argument and should use |\@thefnmark| as the mark
% of the footnote. The macro |\@makefntext|is called when
% effectively inside a |\parbox| of width |\columnwidth| (i.e.,
% with |\hsize| = |\columnwidth|).
%
% An example of what can be achieved is given by the following piece
% of \TeX\ code.
% \changes{v2.0c}{1994/02/21}{Adapted example to artikel style.}
% \begin{verbatim}
% \long\def\@xmakefntext#1#2{%
% % \parindent=.5\unitindent
% % \parindent=\z@\parskip=.5\baselineskip
% \def\labelitemi{--}\@revlabeltrue
% {\setbox0=\hbox {#1\hskip.5em plus 1fil}%
% \dimen0=2\wd0
% \ifdim\dimen0>\unitindent
% \global\unitindent=\dimen0
% \@indentset
% \fi}%
% \@setpar{\@@par
% \@tempdima \hsize
% \advance\@tempdima-.5\unitindent
% \parshape \@ne .5\unitindent \@tempdima}%
% \par
% \noindent\llap{\hb@xt@.5\unitindent{#1\hfil}}#2}
% \end{verbatim}
% The effect of this definition is that all lines of the footnote
% are indented by 10pt, while the first line of a new paragraph is
% indented by 1em. To change these dimensions, just substitute the
% desired value for `10pt' (in both places) or `1em'. The mark is
% flushright against the footnote.
%
% In these document classes we use a simpler macro, in which the
% footnote text is set like an ordinary text paragraph, with no
% indentation except on the first line of the footnote. Thus, all
% the macro must do is set |\parindent| to the appropriate value
% for succeeding paragraphs and put the proper indentation before
% the mark. We change the label of itemized lists inside footnotes
% and need to check that the |\unitindent| is large enough for our
% purposes.
%
% For most of the document classes produced from this file we need
% a slightly modified |\@makefntext| on the title page, so we
% introduce an extra macro, |\@xmakefntext|.
% \changes{v2.0l}{1994/07/11}{Moved `.' from within \cs{@xmakefntext}
% to \cs{@makefntext}}
% \changes{v2.0t}{1996/04/01}{Repaired a typo}
% \changes{v2.0u}{1996/09/23}{Changed \texttt{--} to \cs{textendash}
% following \file{classes.dtx}}
% \begin{macrocode}
%<*type1|type3>
\newcommand*\@makefntext{\@xmakefntext{\normalfont\@thefnmark.}}
\newcommand*\@xmakefntext[1]{%
\parindent\z@
\def\labelitemi{\textendash}\@revlabeltrue
{\setbox0\hbox {#1\hskip.5em plus 1fil}
\dimen0=2\wd0\relax
\ifdim\dimen0>\unitindent
\global\unitindent\dimen0\relax
\@indentset
\fi}
\leavevmode\hb@xt@.5\unitindent{#1\hfil}}
%
% \end{macrocode}
% For the \file{artikel2} document class we have a simpler
% definition of |\@makefntext|.
% \changes{v2.0m}{1994/12/30}{Added missing parameter}
% \changes{v2.0w}{1997/04/01}{Mixed \cs{def} and \cs{newcommand} syntax}
% \begin{macrocode}
%<*type2>
\newcommand\@makefntext[1]{%
\parindent\othermargin
\noindent\hb@xt@\othermargin{\normalfont\@thefnmark\hfil\relax}#1}
%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@makefnmark}
% The footnote markers that are printed in the text to point to the
% footnotes should be produced by the macro |\@makefnmark|. We use
% the default definition for it.
% \begin{macrocode}
%\renewcommand\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
% \end{macrocode}
% \end{macro}
%
% \section{Initialization}
%
% \subsection{Words}
%
% \begin{macro}{\contentsname}
% \begin{macro}{\listfigurename}
% \begin{macro}{\listtablename}
% This document class is for documents prepared in the English language.
% To prepare a version for another language, various English words must
% be replaced. All the English words that require replacement are
% defined below in command names.
% \begin{macrocode}
\newcommand*\contentsname{Contents}
\newcommand*\listfigurename{List of Figures}
\newcommand*\listtablename{List of Tables}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\refname}
% \begin{macro}{\bibname}
% \begin{macro}{\indexname}
% \begin{macrocode}
%\newcommand*\refname{References}
%\newcommand*\bibname{Bibliography}
\newcommand*\indexname{Index}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\figurename}
% \begin{macro}{\tablename}
% \begin{macrocode}
\newcommand*\figurename{Figure}
\newcommand*\tablename{Table}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\partname}
% \begin{macro}{\chaptername}
% \begin{macro}{\appendixname}
% \begin{macro}{\abstractname}
% \begin{macro}{\seename}
% \begin{macro}{\andname}
% \begin{macrocode}
\newcommand*\partname{Part}
%\newcommand*\chaptername{Chapter}
\newcommand*\appendixname{Appendix}
%\newcommand*\abstractname{Abstract}
\newcommand*\seename{see}
\newcommand*\andname{and}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{Date}
%
% \begin{macro}{\today}
% This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
% to provide the date of the \LaTeX-run.
% \begin{macrocode}
\newcommand*\today{}
% \end{macrocode}
% To save space we define |\today| in a way that it is expanded
% when the class file is read in. This means that low-level changes
% to the internal \TeX{} registers that are happening later on
% (e.g.\ if some packages goes |\month=5|) are not reflected in
% |\today|.
% \changes{v2.0r}{1995/10/05}{use \cs{edef} to save a lot of space}
% \changes{v2.0z}{2004/02/20}{use \cs{def} again, latex/2620}
% \begin{macrocode}
\def\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\day, \number\year}
% \end{macrocode}
% \end{macro}
%
% \subsection{Two column mode}
%
% \begin{macro}{\columnsep}
% This gives the distance between two columns in two column mode.
% \begin{macrocode}
\setlength\columnsep{10\p@}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\columnseprule}
% This gives the width of the rule between two columns in two
% column mode. We have no visible rule.
% \begin{macrocode}
\setlength\columnseprule{0\p@}
% \end{macrocode}
% \end{macro}
%
% \subsection{The page style}
% We have \pstyle{plain} pages in the document classes
% \file{artikel} and \file{rapport} unless the user specified
% otherwise. In the \file{boek} document class we use the page
% style \pstyle{headings} by default. We use arabic pagenumbers.
% \begin{macrocode}
%\pagestyle{plain}
%\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
%
% \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
%
% \end{macrocode}
% \end{macro}
%
% \Finale
%
\endinput
%