From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/ntgclass/00readme.txt | 30 + macros/latex/contrib/ntgclass/a4.dtx | 618 ++++ macros/latex/contrib/ntgclass/a4.ins | 84 + macros/latex/contrib/ntgclass/a4.pdf | Bin 0 -> 149067 bytes macros/latex/contrib/ntgclass/artdoc.pdf | Bin 0 -> 146448 bytes macros/latex/contrib/ntgclass/artdoc.tex | 682 ++++ macros/latex/contrib/ntgclass/brief.dtx | 2723 ++++++++++++++ macros/latex/contrib/ntgclass/brief.pdf | Bin 0 -> 198831 bytes macros/latex/contrib/ntgclass/brief.tex | 229 ++ macros/latex/contrib/ntgclass/briefdoc.pdf | Bin 0 -> 81879 bytes macros/latex/contrib/ntgclass/briefdoc.tex | 306 ++ macros/latex/contrib/ntgclass/catalog.txt | 25 + macros/latex/contrib/ntgclass/changes.txt | 5 + macros/latex/contrib/ntgclass/classdoc.pdf | Bin 0 -> 69777 bytes macros/latex/contrib/ntgclass/classdoc.tex | 164 + macros/latex/contrib/ntgclass/manifest.txt | 47 + macros/latex/contrib/ntgclass/ntgclass.dtx | 5273 ++++++++++++++++++++++++++++ macros/latex/contrib/ntgclass/ntgclass.ins | 101 + macros/latex/contrib/ntgclass/ntgclass.pdf | Bin 0 -> 376559 bytes macros/latex/contrib/ntgclass/rapdoc.pdf | Bin 0 -> 138589 bytes macros/latex/contrib/ntgclass/rapdoc.tex | 710 ++++ 21 files changed, 10997 insertions(+) create mode 100644 macros/latex/contrib/ntgclass/00readme.txt create mode 100644 macros/latex/contrib/ntgclass/a4.dtx create mode 100644 macros/latex/contrib/ntgclass/a4.ins create mode 100644 macros/latex/contrib/ntgclass/a4.pdf create mode 100644 macros/latex/contrib/ntgclass/artdoc.pdf create mode 100644 macros/latex/contrib/ntgclass/artdoc.tex create mode 100644 macros/latex/contrib/ntgclass/brief.dtx create mode 100644 macros/latex/contrib/ntgclass/brief.pdf create mode 100644 macros/latex/contrib/ntgclass/brief.tex create mode 100644 macros/latex/contrib/ntgclass/briefdoc.pdf create mode 100644 macros/latex/contrib/ntgclass/briefdoc.tex create mode 100644 macros/latex/contrib/ntgclass/catalog.txt create mode 100644 macros/latex/contrib/ntgclass/changes.txt create mode 100644 macros/latex/contrib/ntgclass/classdoc.pdf create mode 100644 macros/latex/contrib/ntgclass/classdoc.tex create mode 100644 macros/latex/contrib/ntgclass/manifest.txt create mode 100644 macros/latex/contrib/ntgclass/ntgclass.dtx create mode 100644 macros/latex/contrib/ntgclass/ntgclass.ins create mode 100644 macros/latex/contrib/ntgclass/ntgclass.pdf create mode 100644 macros/latex/contrib/ntgclass/rapdoc.pdf create mode 100644 macros/latex/contrib/ntgclass/rapdoc.tex (limited to 'macros/latex/contrib/ntgclass') diff --git a/macros/latex/contrib/ntgclass/00readme.txt b/macros/latex/contrib/ntgclass/00readme.txt new file mode 100644 index 0000000000..be1dcc6ad3 --- /dev/null +++ b/macros/latex/contrib/ntgclass/00readme.txt @@ -0,0 +1,30 @@ + NTG document classes distribution + + 20 February 2004 + +This file contains the distribution guide for the new version +of the NTG document classes and the A4 package. +The classes are maintained by NTG Working Group 13 + +This distribution is described in the files ending with .txt. + + * 00readme.txt is this file. + + * manifest.txt lists all the files in the distribution. + +For more information about the document classes see the file +ntgclass.tex. + +These files may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3 +of this license or (at your option) any later version. +The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of LaTeX +version 2003/12/01 or later. + +Please do not request updates from us. Distribution is done only +through mail servers and TeX organisations. + + +--- Copyright 1994-2004 NTG. All rights reserved --- diff --git a/macros/latex/contrib/ntgclass/a4.dtx b/macros/latex/contrib/ntgclass/a4.dtx new file mode 100644 index 0000000000..4b58747e6d --- /dev/null +++ b/macros/latex/contrib/ntgclass/a4.dtx @@ -0,0 +1,618 @@ +% \iffalse meta-comment +% +% Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. +% All rights reserved. +% +% This file is part of the NTG document classes distribution +% ---------------------------------------------------------- +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2003/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is Johannes Braams. +% +% The list of all files belonging to the NTG document classes +% distribution is given in the file `manifest.txt. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% \fi +% \CheckSum{153} +% +%\iffalse +%% Style option `A4' to be used with LaTeX V2.09 +%% Copyright (C) 1990-2004 Johannes Braams, Nico Poppelier. +%% All rights reserved. +%% +% We begin by identifying the version of this file on the terminal and +% in the transcript file. +%<*package> +\ifx\ProvidesPackage\undefined + \def\ProvidesPackage#1[#2 #3 #4]{% + \wlog{LaTeX Package `#1' #3 <#2> #4}} +\fi +% +%<*dtx> +\ProvidesFile{a4.dtx} +% +%\ProvidesPackage{a4} + [2004/04/15 v1.2g A4 based page layout] +% +% Copying of this file is authorized only if either +% (1) you make absolutely no changes to your copy, including name, or +% (2) if you do make changes, you name it something other than +% A4.doc or A4.sty. +% This restriction helps ensure that all files developed By NTG WG13 +% are identical. +% +% Error reports for UNCHANGED versions please to: +% J.L. Braams +% TeXniek at braams.cistron.nl +% or: N.A.F.M. Poppelier +% N.Poppelier at elsevier.nl +% +% +%\fi +% +% \GetFileInfo{a4.dtx} +% +% \changes{1.0}{10 Jan 90}{Changed the margins for one-sided printing} +% \changes{1.1}{23 Jan 90}{Added \cs{WideMargins} macros} +% \changes{1.2}{26 Feb 90}{Consolidated setting of +% \cs{marginparwidth}} +% \changes{1.2a}{30 Nov 90}{replaced \cs{typeout} with \cs{wlog}} +% \changes{1.2b}{1994/02/28}{Update for \LaTeXe} +% \changes{1.2b}{1994/02/28}{Removed some ltugboat remnants} +% \changes{1.2c}{1994/03/15}{Provide package a4 instead of A4} +% \changes{1.2c}{1994/03/15}{Added \cs{ProcessOptions}} +% \changes{1.2c}{1994/03/15}{Moved \cs{wlog} to the \LaTeX2.09 case} +% \changes{1.2c}{1994/03/15}{Moved execution of \cs{ProcessOptions} to +% end of file} +% \changes{v1.2d}{1995/08/11}{Moved identification part to the top of +% the file} +% +% \title{A style option to adapt the standard \LaTeX\ document +% styles to A4 paper\thanks{This file +% has version number \fileversion -- +% last revision \filedate.}} +% +% \author{Nico Poppelier\\ +% \TeX nique \\ +% Washingtondreef 153\\ +% 3564 KD Utrecht\\ +% \texttt{Poppelier@elsevier.nl}\\ +% \and +% Johannes Braams\\ +% \TeX niek\\ +% Kooienswater 62\\ +% 2715 AJ Zoetermeer\\ +% \texttt{JLBraams@cistron.nl}} +% +% \date{Printed \today} +% +% \maketitle +% +% \begin{abstract} +% This article describes a new style option that can be used with the +% document styles that are distributed with the \LaTeX\ distributions. +% It modifies the page layout to conform to the paper format most +% commonly used in Europe, portrait A4. +% \end{abstract} +% +% \section{Introduction} +% +% This file is based on the document style options \file{A4.sty} +% and \file{A4wide.sty}, which can be found in the Rochester style +% archive. The original style option \file{A4.sty} we started from +% was written by John Pavel, and is dated May 1987. This option +% only changes the vertical size of the text somewhat, by +% increasing the number of lines on a page. The style option +% \file{A4wide.sty} was written by Jean-Francois Lamy, and is dated +% July 1986. This option only increases the width of the text. +% +% \section{Goals and design decisions} +% +% As many people before us, we found the page layout as implemented +% in the standard \LaTeX\ document styles too much geared towards +% the American-sized paper, which is somewhat wider than A4 paper, +% but also noticeably less high. +% +% Our goal was to get a page layout that was suitable for A4 paper, +% and produced legible texts. There are a number of layout +% parameters that influence the legibility of a text. A parameter +% of major importance is the number of words (or characters) on a +% line. The maximum number of words per line is ten to twelve for +% optimal legibility, a rule-of-thumb that can be found in +% typographic literature (we used~\cite{treebus}). This results in +% a number of characters per line which lies somewhere between +% sixty and seventy. +% +% Another important parameter is the amount of white space +% surrounding the text. Here we have to distinguish between texts +% that are printed one-sided and texts that are printed two-sided +% (back to back). In the first case the margins on odd and even +% pages should be equal; in the latter case care should be taken +% that the texts on both sides of the paper overlap. Also a printed +% document is likely to be bound some way or another, so there +% should be enough white space in the `inner' margin\footnote{For +% two-sided printing, this is the left margin on odd-numbered pages +% and the right margin on even-numbered ones; for one-sided +% printing, this is always the left margin.} of the text to allow +% this. +% +% There is yet one more thing to take into account when designing a +% page layout. \LaTeX\ offers the possibility of using marginal +% notes and if someone wants to use marginal notes, they should of +% course fit on the paper. +% +% So, we have the following goals: +% \begin{enumerate} +% \item Choose the text width such that there will be sixty to +% seventy characters on a line; +% \item See to it that in documents that are printed two-sided, the +% texts which end up on two sides of one sheet of paper overlap; +% \item Leave enough white space in the `inner' margin to allow for +% the binding of the document; +% \item Leave enough white space in the `outer' margin for marginal +% notes if they are going to be used. +% \end{enumerate} +% +% \section{Update for \LaTeXe} +% +% With the new document classes this package may not be needed much +% longer, because A4 paper is now supported through the standard +% option \Lopt{a4paper}. Yet this package additional functionality, +% not available in the standard document classes. With \LaTeXe, you +% can now use this package with the command: +% \begin{verbatim} +% \usepacke[widemargins]{a4} +% \end{verbatim} +% The option \Lopt{widemargins} executes the |\WideMargins| +% command. +% +% \section{The implementation} +% +% \subsection{The starting point} +% +% Thus we set out to modify some of the design decisions in the +% standard document styles. Because we knew that we were not the +% first to tackle the problem, we started by having a look at what +% was already available. We came up with the two options mentioned +% earlier, which are publicly available. Undoubtedly there will +% exist many more such files, some of them maybe modifications of +% those two files. +% +% We had a look at the layout produced by both options and were not +% satisfied with it. For one thing, both of the original options +% \Lopt{a4} and \Lopt{A4wide} modify only one aspect of the page +% layout. The first thing to do was to put these two files +% together. This resulted in a layout which was still +% unsatisfactory, since for the 10-point and 11-point options lines +% in the text contained on the average eighty characters or more. +% +% \subsection{What else?} +% +% \DescribeMacro\textwidth +% \DescribeMacro\marginparwidth +% Because the result so far gave us lines that contained too many +% characters, we decreased the |\textwidth| to get lines that +% contain about sixty to seventy characters for all three size +% options. Still more work had to be done. As it turned out, using +% our new \file{A4.sty} together with the option |twosided| had a +% drawback: when the document was printed two-sided the texts on +% both side of one piece of paper overlapped only partly, which +% does not look good. We solved this by modifying the width of the +% margins for two-sided printing. At the same time we modified the +% |\marginparwidth| so that if someone uses a marginal note it +% would completely fit on the paper instead of falling off the +% page, which obviously would render the note unreadable. +% +% \DescribeMacro\WideMargins +% The decisions described above allow for marginal notes to be printed +% along with the normal text, but if someone makes heavy use of +% marginal notes, the resultant layout will not be very +% satisfactory, because if the full width of the marginal notes is +% used, they will take up too much space in the `outer' margin. For +% this case we provide the macro |\WideMargins|. This macro +% modifies the page-layout parameters in such a way that the width +% reserved for marginal notes becomes 1.5 inches. To achieve this +% the width of the main body of the text is decreased. This macro +% is meant to be used only in the preamble of the document. +% +%\StopEventually{ +% \section{Conclusion} +% +% We have presented a new approach to adapt the page layout of the +% document styles that are part of the standard \LaTeX\ +% distributions to the dimensions of A4 paper. The width of +% marginal notes has been taken into account and a means to get +% wider marginal notes at the cost of shorter lines in the main +% body of the text has been provided. +% +% \begin{thebibliography}{9} +% \bibitem{treebus} K.F. Treebus. +% \emph{Tekstwijzer, een gids voor het grafisch verwerken van tekst.} +% SDU Uitgeverij ('s-Gravenhage, 1988). A Dutch book on layout +% design and typography. +% \end{thebibliography} +% } +% +% +% \subsection{The \textsc{docstrip} modules} +% +% The following modules are used in the implementation to direct +% \textsc{docstrip} in generating the external files: +% \begin{center} +% \begin{tabular}{ll} +% driver & produce a documentation driver file \\ +% package & produce a package file \\ +% \end{tabular} +% \end{center} +% +% \subsection{Producing the documentation} +% +% A short driver is provided that can be extracted if necessary by +% the \textsc{docstrip} program provided with \LaTeXe. +% \begin{macrocode} +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\documentclass{ltxdoc} +\DisableCrossrefs + +\CodelineIndex + +\MakeShortVerb{\|} +\newcommand\Lopt[1]{\textsf{#1}} +\newcommand\file[1]{\texttt{#1}} +\begin{document} + +\DocInput{a4.dtx} + +\end{document} +% +% \end{macrocode} +% +% \subsection{The code} +% +% Declare the option \Lopt{widemargins}. +% \begin{macrocode} +%<*package> +\ifx\documentclass\undefined +\else + \DeclareOption{widemargins}{\WideMargins} +\fi +% \end{macrocode} +% +% \begin{macro}{\topmargin} + +% First, we redefine the |\textheight| and |\topmargin|. The +% |\topmargin| is the distance from the reference point on the page +% to the top of the page of text. In most cases extra white space +% is not necessary since one inch of white space at the top of the +% page suffices. +% \begin{macrocode} +\topmargin 0pt +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textheight} +% The dimension parameter |\textheight| gives the total height of +% the text, including footnotes and figures, excluding the running +% head and foot. This height is given as an integral number times +% the |\baselineskip|, which results in an integral number of lines +% on a page. +% +% We have to include definitions of all relevant dimension +% parameters for each of the cases 10-point, 11-point and +% 12-point. We do this with a case statement: +% +% \begin{macrocode} +\ifcase \@ptsize + \textheight 53\baselineskip +% \end{macrocode} +% which modifies the height of the text for texts to be produced +% with the ten-point typeface: +% \begin{macrocode} +\or + \textheight 46\baselineskip +% \end{macrocode} +% the same for eleven point: +% \begin{macrocode} +\or + \textheight 42\baselineskip +% \end{macrocode} +% and for twelve point. Finally we close the |\ifcase| statement: +% \begin{macrocode} +\fi +% \end{macrocode} +% +% The only thing left to be done is to add the |\topskip| to the +% |\textheight|. The value of |\topskip| appears always to be 10pt. +% +% \begin{macrocode} +\advance\textheight by \topskip +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textwidth} +% \begin{macro}{\oddsidemargin} +% \begin{macro}{\evensidemargin} +% That was the `vertical part' of the work. Now we have some work +% to do to get things right horizontally. Again we have to +% distinguish between the various character sizes because sixty +% eleven-point characters take up more space than sixty ten-point +% characters. But there's more to take into account. If documents +% are printed two-sided, the texts on both sides of the paper +% should overlap completely. This can be done be assigning +% appropriate values to |\oddsidemargin| and |\evensidemargin|, the +% parameters that define the left margins on odd and even pages +% respectively. +% +% First we start a case statement to distinguish between the +% various typeface sizes. +% \begin{macrocode} +\ifcase \@ptsize +% \end{macrocode} +% Then we specify the width of the text. +% \begin{macrocode} + \textwidth 5.00in +% \end{macrocode} +% Also specify the width of marginal notes. They must have a +% reasonable width to be of any use, and this should be the same +% for either one-sided or two-sided printing. +% \begin{macrocode} + \marginparwidth 1.00in +% \end{macrocode} +% Here we need an if statement to test whether the option +% |twosided| has been specified. +% \begin{macrocode} + \if@twoside +% \end{macrocode} +% If it was, assign appropriate values to the margin parameters +% \begin{macrocode} + \oddsidemargin 0.55in + \evensidemargin 0.75in + \else +% \end{macrocode} +% If the option |twosided| was not used, both margin parameters +% must have the same value, for texts on consecutive pages have to +% be put in the same place on the paper. +% \begin{macrocode} + \oddsidemargin 0.55in + \evensidemargin 0.55in +% \end{macrocode} +% Now we close the if statement. +% \begin{macrocode} + \fi +% \end{macrocode} +% We are ready with the modifications for the ten-point typeface +% size, so now we do something similar for the eleven-point +% typeface. +% \begin{macrocode} +\or + \textwidth 5.20in + \marginparwidth 1.00in + \if@twoside + \oddsidemargin 0.45in + \evensidemargin 0.65in + \else + \oddsidemargin 0.45in + \evensidemargin 0.45in + \fi +% \end{macrocode} +% One more time, now for the twelve-point typeface. +% \begin{macrocode} +\or + \textwidth 5.70in + \marginparwidth 0.80in + \if@twoside + \oddsidemargin 0.20in + \evensidemargin 0.40in + \else + \oddsidemargin 0.20in + \evensidemargin 0.20in + \fi +% \end{macrocode} +% Finally we close the case statement. +% \begin{macrocode} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\WideMargins} +% This macro is somewhat tricky: it has to find out +% which typeface size is used, whether the document should be printed +% two-sided, and whether the |\reversemarginpar| is in effect. +% |\reversemarginpar| makes the marginal notes appear in the +% margin on the opposite side of the normal placement. +% \begin{macrocode} +\def\WideMargins{% +% \end{macrocode} +% \noindent +% Because for each typeface size the changes to the parameters that +% need to be made are similar, the macro |\WideMargins| +% uses an internal macro |\@widemargins|. +% +% \begin{macro}{\ExtraWidth} +% In order to store the amount of extra width needed for the marginal +% notes an extra dimension parameter is defined. +% +% \begin{macrocode} + \newdimen\ExtraWidth +% \end{macrocode} +% \end{macro} +% +% \noindent +% First find out about the point size, then call |\@widemargins| to +% modify the margin widths by the amount given in |\ExtraWidth|. +% \begin{macrocode} + \ifcase \@ptsize +% \end{macrocode} +% +% \noindent +% For both 10-point and 11-point texts the width for marginal notes is +% already 1 inch, so we increase it by half an inch. We subtract half an +% inch from the text width and modify the margins appropriately. +% +% \begin{macrocode} + \ExtraWidth = 0.5in + \@widemargins + \or + \ExtraWidth = 0.5in + \@widemargins + \or +% \end{macrocode} +% +% \noindent +% For 12-point texts the marginal notes are only 0.8 inch wide, so +% now we have to add 0.7 inch to get them 1.5 inch wide. +% +% \begin{macrocode} + \ExtraWidth = 0.7in + \@widemargins +% \end{macrocode} +% +% \noindent +% This macro should only be called once, during the preamble of a +% document, so we |\let| it be equal to |\relax| as soon +% as the work is done. +% \begin{macrocode} + \fi\let\WideMargins\relax\let\@widemargins\relax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@preamblecmds} +% We add |\WideMargins| to |\@preamblecmds|, which is a +% list of commands to be used only in the preamble of a document. +% +% \begin{macrocode} +{\def\do{\noexpand\do\noexpand} + \xdef\@preamblecmds{\@preamblecmds \do\WideMargins} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@widemargins} +% This macro modifies the margin parameters. To do this it uses +% the dimension variable |\ExtraWidth|, which was defined by +% |\WideMargins|. +% +% \noindent +% First the |\ExtraWidth| is subtracted from the |\textwidth| +% and added to the |\marginparwidth|. +% \begin{macrocode} +\def\@widemargins{% + \global\advance\textwidth by -\ExtraWidth + \global\advance\marginparwidth by \ExtraWidth +% \end{macrocode} +% +% \noindent +% Then we modify the margins, but the value of the switch +% |\if@twoside| has to be taken into account. Because +% we have to test another switch (|\if@reversemargin|) +% we add another level of macros to modify the margin parameters% +% +% \begin{macrocode} + \if@twoside + \tw@sidedwidemargins + \else + \@nesidedwidemargins + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\tw@sidedwidemargins} +% Normally the marginal notes are printed in the `outer' margins, so +% we have to increase the |\evensidemargin| to keep the text +% balanced on both sides of the paper, but if |\reversemarginpar| +% is in effect we have to increase the |\oddsidemargin| and +% decrease the |\evensidemargin| accordingly. +% +% \begin{macrocode} +\def\tw@sidedwidemargins{% + \if@reversemargin +% \end{macrocode} +% +% \noindent +% Notice that for documents printed two-sided, the +% |\evensidemargin| is wider than the |\oddsidemargin|; +% this difference in width is transferred to the other margin. +% +% \begin{macrocode} + \@tempdima=\evensidemargin + \advance\@tempdima by -\oddsidemargin + \advance\oddsidemargin by \ExtraWidth + \advance\oddsidemargin by \@tempdima + \advance\evensidemargin by -\@tempdima + \else +% \end{macrocode} +% +% \noindent +% If the marginal notes go on the normal side of the paper, only the +% |\evensidemargin| has to be increased. +% +% \begin{macrocode} + \advance\evensidemargin by \ExtraWidth + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@nesidedwidemargins} +% For documents that are printed one-sided, both margins have the same +% width. The default placement for the marginal notes is in the right +% margin, so if |\reversemarginpar| is \emph{not} in effect the +% margin parameters need not be modified. If it is in effect, both the +% |\oddsidemargin| and the |\evensidemargin| need to be +% increased. +% +% \begin{macrocode} +\def\@nesidedwidemargins{% + \if@reversemargin + \advance\oddsidemargin by \ExtraWidth + \advance\evensidemargin by \ExtraWidth + \fi} +% \end{macrocode} +% \end{macro} +% +% The command |\ProcessOptions| can only be executed \emph{after} +% |\WideMargins| has been defined. Defering the execution of +% |\WideMargins| with |\AtBeginDocument| doesn't work, the changing +% of |\textwidth| then comes too late because of the time when the +% |\@begindocumenthook| gets executed by |\begin{document|. +% \begin{macrocode} +\ifx\documentclass\undefined +\else + \ProcessOptions +\fi +% +% \end{macrocode} +% +% \Finale +% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\endinput diff --git a/macros/latex/contrib/ntgclass/a4.ins b/macros/latex/contrib/ntgclass/a4.ins new file mode 100644 index 0000000000..e512961050 --- /dev/null +++ b/macros/latex/contrib/ntgclass/a4.ins @@ -0,0 +1,84 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% Copyright (C) 1990-1999 Nederlandstalige TeX Gebruikersgroep. +%% +%% This file is part of the NTG document classes distribution +%% ---------------------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2003/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainer of this work is Johannes Braams. +%% +%% The list of all files belonging to the NTG document classes +%% distribution is given in the file `manifest.txt. +%% +%% The list of derived (unpacked) files belonging to the distribution +%% and covered by LPPL is defined by the unpacking scripts (with +%% extension .ins) which are part of the distribution. +%% +%% --------------- start of docstrip commands ------------------ +%% +\input docstrip.tex % ignored in distribution + +\preamble +This is a generated file. + +Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. +All rights reserved. + +This file was generated from file(s) of the NTG document classes distribution. +------------------------------------------------------------------------------ + +It may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3 +of this license or (at your option) any later version. +The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of LaTeX +version 2003/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +The Current Maintainer of this work is Johannes Braams. + +This file may only be distributed together with a copy of the NTG +document classes distribution. You may however distribute the NTG +document classes distribution without such generated files. + +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. +\endpreamble + +\keepsilent + +\usedir{tex/latex/ntgclass} +\generateFile{a4.sty}{t}{\from{a4.dtx}{package}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space a4.sty} +\Msg{*} +\Msg{* To produce the documentation run `a4.dtx' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/macros/latex/contrib/ntgclass/a4.pdf b/macros/latex/contrib/ntgclass/a4.pdf new file mode 100644 index 0000000000..fb63ff89f6 Binary files /dev/null and b/macros/latex/contrib/ntgclass/a4.pdf differ diff --git a/macros/latex/contrib/ntgclass/artdoc.pdf b/macros/latex/contrib/ntgclass/artdoc.pdf new file mode 100644 index 0000000000..c52fa417ef Binary files /dev/null and b/macros/latex/contrib/ntgclass/artdoc.pdf differ diff --git a/macros/latex/contrib/ntgclass/artdoc.tex b/macros/latex/contrib/ntgclass/artdoc.tex new file mode 100644 index 0000000000..b581d23529 --- /dev/null +++ b/macros/latex/contrib/ntgclass/artdoc.tex @@ -0,0 +1,682 @@ +% \iffalse meta-comment +% +% % \iffalse meta-comment +% % +% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. +% % All rights reserved. +% % +% % This file is part of the NTG document classes distribution +% % ---------------------------------------------------------- +% % +% % It may be distributed and/or modified under the +% % conditions of the LaTeX Project Public License, either version 1.3 +% % of this license or (at your option) any later version. +% % The latest version of this license is in +% % http://www.latex-project.org/lppl.txt +% % and version 1.3 or later is part of all distributions of LaTeX +% % version 2003/12/01 or later. +% % +% % This work has the LPPL maintenance status "maintained". +% % +% % The Current Maintainer of this work is Johannes Braams. +% % +% % The list of all files belonging to the NTG document classes +% % distribution is given in the file `manifest.txt. +% % +% % The list of derived (unpacked) files belonging to the distribution +% % and covered by LPPL is defined by the unpacking scripts (with +% % extension .ins) which are part of the distribution. +% % \fi +% \fi +\documentclass[a4paper]{artikel1} %ja,ja, onze eigen documentstijl! +\usepackage[dutch]{babel} + +\begin{document} +\date{3 september 1989 / 3 juni 1994} +\title{Documentstijlen Artikel$x$\\ + Verantwoording} +\author{Victor Eijkhout} +\maketitle + +\begin{abstract} + Dit is de verantwoording voor de documentstijlen `Artikel1', + `Artikel2', en~`Artikel3'. Deze stijlen zijn bedoeld als een + \emph{mogelijke} vervanging van de stijl `article'. In dit verhaal + zijn beschreven +\begin{enumerate} +\item de redenen waarom bepaalde veranderingen zijn aangebracht; +\item de parameters en commando's die op de veranderingen betrekking + hebben; en +\item de wijze waarop de veranderingen zijn ge"implementeerd. +\end{enumerate} +Tegelijk is dit document een uitprobeerobject voor de nieuwe +stijlen\footnote{De hoeveelheid gebruikte \LaTeX-constructies is + derhalve aan de ruime kant. De lezer wordt vriendelijk gevraagd zich + hieraan niet te ergeren.}. +\end{abstract} + + +\part{Algemeen} + +\section{Verantwoording} + +De documentstijlen `Artikel$x$' zijn bedoeld als verbetering van de +standaard \LaTeX-document\-stijl `Article'. De meeste macros zijn +derhalve modificaties van constructies uit `article.sty' of +`latex.tex'. + +Bij het ontwerpen van de opmaak heb ik advies gehad van Inge +Eijkhout~\cite{Inge}. Het boek `Tekstwijzer'~\cite{Karel} van Karel +Treebus was verder een hulp (de opmaak van de inhoudsopgave in +`Artikel1' is daar zelfs compleet uit overgenomen). Ook erken ik de +invloed van John Miles' `Ontwerpen voor Desktop +Publishing'~\cite{Miles}. Nico Poppelier heeft met raad en daad ter +zijde gestaan. Wat er fout is aan deze stijlen blijft natuurlijk voor +mijn rekening komen. + +\section{Overzicht}\label{overzicht:sectie} + +De documentstijlen `Artikel$x$' zijn geheel compatibel met `Article': +er zijn geen commando's toegevoegd of weggelaten. De veranderingen +ten opzichte van `Article' betreffen enkel de opmaak. In het +bijzonder is er gesleuteld aan: +\begin{enumerate} +\item witregels rond koppen van secties, subsecties en subsubsecties + (van nu af aan `sectiekoppen' genoemd), +\item verdere veranderingen aan de opmaak van deze koppen, +\item de hoeveelheid inspringing bij lijststructuren (gegenereerd met + het \LaTeX\ \verb.\@list. commando), in het bijzonder `itemize', + `enumerate', en (specifiek voor `article') `description', en +\item verdere opmaak van lijststructuren, +\item verdere opmaak van sectiekoppen, en +\item de inhoudsopgave. +\end{enumerate} +Over het algemeen is het de bedoeling geweest een strakke opmaak te +krijgen (de standaard stijlen van \LaTeX\ `zwemmen' over de pagina). + +\section{Exportkwaliteit documentstijlen} + +De documentstijlen `Artikel$x$' kunnen zowel gebruik maken van de +stijloptie `Dutch' (auteur: Johannes Braams) als van `German' (auteur: +Hubert Partl), als van elke andere optie die de door Partl in `German' +gesuggereerde parametrisaties doorvoert. Deze opties zijn een +reparatie voor het euvel dat de meeste taalspecifieke termen in de +stijlen van de heer Lamport niet geparametriseerd zijn. + +In `Dutch' worden definities uit `Article' en dergelijke overreden +door geparametriseerde versies\footnote{Een listige truc laat `Dutch' + achterhalen door welke stijl hij aangeroepen is; de `Artikel' + stijlen zijn een onbekende stijl voor `Dutch'}, die op verschillende +talen ingesteld kunnen worden. Deze definities hadden natuurlijk al +in de stijlen van heer Lamport geparametriseerd moeten zijn. + +De optie `German' is minder drastisch dan `Dutch': deze gaat ervan uit +dat hij door geparametriseerde stijlbestanden opgeroepen wordt, en zet +zelf alleen de parameters. De `Artikel' stijlen zijn geparametriseerd +volgens de suggestie van Partl. + +\subsection{Kanttekening}De stijl `Dutch' parametriseert +onder andere het commando `abstract'. Aangezien ik dit commando om +opmaaktechnische redenen al herdefinieer, kan `Dutch' niet op +`Artikel' losgelaten worden alsof het gewoon `Article' was. Momenteel +is `Artikel' dus een `onbekende documentstijl' waar het `Dutch' +betreft, en wordt er geen gebruik gemaakt van het feit dat een aantal +definities zich ook in `Dutch' bevinden. + +\subsection{Een steek onder water} +Hoewel het mij tegen de borst stuit het Engels een voorkeurspositie te +geven onder de wereldtalen --~zeker in een voor het Nederlands +bedoelde stijl~-- heb ik besloten de Engelse parameterwaarden uit +`Dutch' als verstekwaarde in de `Artikel'-stijlen op te nemen. Een +belangrijk argument hiervoor is dat dit de stijlen geheel gelijk maakt +aan `Article' op commando\-nivo: zonder extra opties worden er Engelse +teksten geleverd, en voor Nederlands of Duits in een optiebestand +nodig. + +Een minstens zo belangrijk argument\footnote{mij door Nico Poppelier + aan de hand gedaan} hiervoor is dat de `Artikel'-stijlen zo een +steek onder water naar Leslie Lamport vormen. Ze zeggen als het ware +`\emph{Look here buster,} zo had het van begin af aan moeten zijn'. + +\part{Mechanismen; veranderingen in Artikel1} + +In de nu volgende subsecties worden de veranderingen ten opzichte van +de oude artikelstijl besproken in volgorde van oplopende +moeilijkheidsgraad van implementatie. De algemene mechanismen worden +besproken, alsmede hun concrete realisatie in~`Artikel1'. + +\section{Trivialiteiten} + +In de `article'-stijl staat `raggedbottom' aan voor enkelzijdige +documenten. Dit moet uit. `Frenchspacing' dient altijd aan te staan. + +\subsection{Paginanummers} +De gebruiker kan met \verb.\pagestyle{STIJL}. een stijl van kop- en +voetregels opgeven. De `Article' stijl definieert `plain' +(gecentreerde voetregels), en `headings' en `myheadings' +(asymmetrische kopregels). Als een gebruiker een stijl specificeert, +resulteert dat in de aanroep van een commando \verb.\ps@STIJL.. + +Omdat ik paginanummers wil hebben die rechts staan voor enkelzijdige +documenten, en links/rechts voor tweezijdige documenten heb ik het +commando \verb.\ps@plain., de verstekwaarde, omgebouwd. + +\subsection{De samenvatting in `Artikel1'} +In `Artikel1' heb ik de samenvatting tegen de linker kantlijn aan +getrokken. Het is nu enkel een groep waarbinnen de korpsgrootte +`small' gebruikt wordt. + +\section{Makkelijke veranderingen: witregels} + +De \LaTeX\ artikelstijl wordt gekenmerkt door een overmaat aan +witregels. Hierin is stevig gesnoeid. + +\subsection{Witregels rond koppen} + +De `article'-stijl maak zowel het wit boven als onder koppen rekbaar. +Gevoegd bij het feit dat de `natuurlijke lengte' van dit wit al aan de +ruime kant is, maakt dit het paginabeeld erg los. Witregels moeten +kleiner worden, en mogen tussen kop en de eerste regel van de tekst +niet rekbaar zijn. Verder verdient het aanbeveling de witruimte in +termen van het regeltransport aan te geven. + +\subsubsection{Relevante concepten} +Het wit onder en boven koppen wordt bepaald door parameters 4~en~5 van +\verb.\@start.\-\verb.section., hetwelk commando in `art1$x$.sty' +gebruikt wordt om de sectiekopcommando's te defini"eren. Parameter~4 +dient (in ons geval) het negatieve van de gewenste skip te +specificeren. + +\newpage +\subsubsection{Implementatie van de veranderingen} +De volgende waarden voor de verticale witruimte zijn gebruikt +\begin{table}[ht] + \begin{center} + \begin{tabular}{|l|r|r|} \hline + \emph{kop} & \emph{wit boven kop}&\emph{wit onder kop}\\ \hline + section & -2-1+.5 & .5\\ + subsection & -1-.5+.25 & .25\\ + subsubsection& -1-.5+.25 & .25\\ \hline + \end{tabular} + \end{center} + \caption{Hoeveelheid vertikaal wit in termen van + `normalbaselineskip'} +\end{table} +(in eerste instantie waren mij hogere waarden gesuggereerd, na +inspectie bleken deze waarden beter te voldoen). + +De hoeveelheid wit boven koppen steekt niet zo nauw. Die eronder wel. +In het bijzonder is het een merkwaardig idee het wit onder koppen +rekbaar te hebben. De grootte van dit wit draagt aanzienlijk bij aan +het ritme van de pagina. + + +Opmerking: Aangezien alle skips in termen van de `baselineskip' +gegeven worden, kunnen deze definities opgetild worden van het +optiebestand naar het stijlbestand. + + +\subsection{Witregels rond lijststructuren} + +Witregels rond de items van een lijststructuur maken het paginabeeld +onrustiger, en zijn vaak niet functioneel: een `itemize'-structuur is +meestal \'e\'en doorlopend betoog waarin witregels ongewenst zijn. Er +valt iets voor te zeggen rondom `description'-structuren wel witregels +toe te staan, aangezien de beschrijvende termen in feite een kopje +vormen. + +De eerste tekstregel na een lijststructuur dient niet ingesprongen te +worden, ongeacht of de gebruiker een regel open gelaten heeft achter +de lijst (bij voorbeeld om zijn invoer overzichtelijker te maken). + + +\subsubsection{Inventaris van relevante concepten} +\LaTeX\ bestuurt witregels rond en in lijststructuren met de +parameters `topsep', `partopsep', `itemsep', `parsep'. +\begin{figure}[hb] + \begin{center} + \begin{tabular}{ll} + topsep & ruimte boven een lijst\\ + partopsep & extra als de lijst een nieuwe paragraaf opent\\ + itemsep & ruimte tussen items\\ + parsep & ruimte tussen paragrafen.\\ + \end{tabular} + \end{center} + \caption{Parameters in tabel-omgeving} +\end{figure} +Deze parameters worden gezet in `art1$x$.sty' in het commando +\begin{verbatim} +@list\romannumeral\the\@listdepth +\end{verbatim} +hetgeen ge`eval'd wordt in \verb.\@list.. + +Spaties na een lijststructuur kunnen onderdrukt worden door +\verb.\if@ignoretrue. toe te voegen aan `enditemize' +en~`endenumerate'. Het is nog niet duidelijk of voorkomen kan worden +dat er ingesprongen wordt als de gebruiker een lege regel ingeeft. + + +\subsubsection{Implementatie van de veranderingen} +Voor de gebruikte lijststructuren (met mogelijke uitzondering van +`description') dienen al deze parameters nul te zijn. + +Opmerking: als voor de `labelwidth' en de `labelsep' een oplossing in +termen van fontparameters gevonden wordt, kunnen de `listi' en +dergelijke commando's opgetild worden van het stijloptiebestand naar +het stijlbestand zelf. + + +\subsection{Verdere witregels} +Het wit rond lijststructuren wordt bestuurd door de locale `topsep', +die we boven nul gemaakt hebben, en door de globale `topsep'. Voor +een strakke opmaak is het wenselijk die nul te maken, echter hiermee +verdwijnt ook het wit op een plaats waar dat wel wenselijk is: rond +`verbatim' delen van het document. De oplossing zou kunnen zijn het +invoegen van een `topsep' in het \verb.\verbatim. commando. + +De witregel tussen voetnoten wordt bestuurd door de `footnotesep'. Ik +zou niet weten waarom die anders dan nul zou moeten zijn. + + +\section{Ook niet moeilijk: fonts} + +Er moet wat met fonts gerommeld worden. Voornamelijk moeten ze +kleiner, en het cursief moet vervangen worden door wat in Nederlandse +terminologie `gecursiveerd' heet; wij \TeX ies kennen dit als +`slanted'. + +\subsection{Fonts in sectiekoppen} + +De fonts gebruikt in tussenkopjes zijn proefondervindelijk tot stand +gekomen, en waarschijnlijk nog aan mutatie onderhevig. De +oorspronkelijk idee"en komen uit de `Sober'-stijl van Nico Poppelier. +Daarna is het `italic' vervangen door `slanted'. Kwestie van smaak. +Ik hou niet van de~\mbox{\emph{cmti}}. Verder is het klein kapitalen +font als `\dots~en hopeloos ouderwets'~\cite{Inge} de laan +uitgestuurd. + +\subsection{Theorems en het `emphasize' font} + +Om tekst te beklemtonen gebruikt \LaTeX\ het cursieve font +\texttt{cmti}. Dit vin' ik niet mooi. Binnen de Nederlandse stijlen +wordt er dus beklemtoond met \texttt{cmsl}. Ook in de `theorem' +omgevingen is deze vervanging doorgevoerd. + + +\section{Moeilijke veranderingen: eenheidsinspringing} + +Ten einde een strakke paginaopmaak te verkrijgen, verdient het +aanbeveling het aantal (impliciete) kantlijnen tot een minimum te +beperken. De radicaalste oplossing voor dit probleem bestaat uit + +\begin{enumerate} +\item alle labels in lijststructuren tegen de linkerkantlijn aan te + plaatsen (dit is niet zo mooi als er ver ingesprongen wordt), +\item voetnoten niet te laten inspringen (ingesprongen voetnoten zien + er alleen goed uit als ze meer dan \'e\'en regel lang zijn), en +\item een eenheidsinspringing in te voeren voor + \begin{itemize} + \item alinea's, + \item teksten van koppen op alle nivo's, en + \item de ingesprongen tekst in lijststructuren. + \end{itemize} +\end{enumerate} +Laten we er voorlopig dus vanuit gaan dat er een parameter +`unitindent' is. De berekening van deze grootheid komt verderop aan de +orde. + +\subsection{Inspring bij lijststructuren} + +Labels voor items in een lijst defini"eren gemakkelijk een tweede +kantlijn. Het kan dus gewenst zijn ze tegen de linkerkantlijn van de +omringende tekst aan te plaatsen. + +\subsubsection{Inventaris van relevante concepten} +Een lijst op het eerste nivo springt in over `leftmargini'. Het label +wordt van de tekst gescheiden door `labelsep', en heeft breedte +`labelwidth', tenzij de natuurlijke breedte groter is. De linkerkant +van het label staat echter altijd op `labelwidth' plus `labelsep' van +de ingesprongen kantlijn. De inhoud van het label wordt in de +omringende box geplaatst door het commando `makelabel'. + +Al deze begrippen worden ingevuld in de commando's `list$x$'. + +\subsubsection{Implementatie van de veranderingen} +Het zetten van parameters kan mooi in de `list$x$' commando's +gebeuren: +\begin{verbatim} +\def\@listi{\leftmargin=\unitindent + \labelsep=\enspace + \labelwidth=\leftmargin + \advance\labelwidth by -\labelsep}} +\end{verbatim} +Als de `unitindent' door fontparameters bepaald wordt, hoeft deze +definitie niet meer in het optiebestand te staan, maar kan naar de +stijldefinitie opgetild worden. + +Het veranderen van de definitie van `makelabel' is lastiger: dit moet +in het tweede argument van `list' gebeuren. We zullen dus `itemize' en +`enumerate' moeten herdefini"eren met een nieuwe definitie van +`makelabel'. + +\subsubsection{Speciale behandeling eerste nivo} + +Omdat de `unitindent' tamelijk groot uitvalt, heb ik ervoor gekozen +labels op het eerste nivo rechts aan te lijnen (waardoor ze dus in +bescheiden mate een nieuwe kantlijn definieren), andere labels lijnen +links. + +Dit is ge"implementeerd door in het `commands' argument van +\verb.\@list. de definitie van `makelabel' afhankelijk te maken van de +\verb.\@listdepth.. + + + +\subsection{Inspring bij koppen} + +De plaatsing van de tekst van koppen (achter het sectienummer) is in +\LaTeX\ ogenschijnlijk willekeurig, en draagt hiermee (zeker als twee +koppen onder elkaar staan) bij tot een onrustig paginabeeld. Dit kan +aanmerkelijk verbeterd worden door voor het sectienummer en de erop +volgende spatie een eenheidsbreedte te nemen. + +\subsubsection{Inventaris van relevante concepten} +In het commando \verb.\@sect. wordt een commando \verb.\@svsec. +ge`edef't dat het sectie nummer afdrukt, gevolgd door +`1~em'\footnote{Ter herinnering: + \begin{itemize} + \item Er zijn 5 nivo's van sectiekoppen: `section', `subsection', + `subsubsection', `paragraph', en `subparagraph'. + \item De eerste 3 nivo's zijn genummerd. + \item De laatste twee nivo's geven een kop die in de tekst is + ingebed. + \end{itemize}}\footnote{Aangezien de definitie van 'em' met het + gebruikte font meeverandert, geeft het gebruik van twee of drie + koppen onder elkaar een merkwaardig visueel effect.}. + +\subsubsection{Implementatie van de veranderingen} +Er moet een nieuwe versie van \verb.\@sect. komen die een verbeterde +\verb.\@svsec. bevat: +\begin{verbatim} +\edef\@svsec{\hbox to \unitindent + {\csname the#1\endcsname\hfil}} +\end{verbatim} +In plaats van `unitindent' kan als breedte ook een verdere +parametrisatie met +\begin{verbatim}\csname #1labelwidth\endcsname +\end{verbatim} +gekozen worden. De `unitindent' kan als volgt gegenereerd worden: +\begin{verbatim} +\newdimen\unitindent +{\setbox0\hbox{\normalsize\bf 2.2.2\ } + \global\unitindent=\wd0} +\parindent=\unitindent +\leftmargini=\unitindent +\end{verbatim} + +Dit is helaas nog niet voldoende. Als een gebruiker erg veel van +secties en subsecties houdt, kunnen de nummers een grotere breedte dan +die van `2.2.2' krijgen. Daarom wordt het label iedere keer bij een +nieuw kopje opgemeten, en zonodig wordt de `unitindent' bijgesteld. +Bij het afsluiten van het document wordt dan de definitieve waarde +(die misschien de oude is, en misschien veel meer) naar het +\texttt{.aux}-bestand geschreven. Dat wil zeggen: er wordt een +toewijzing van die waarde aan de unitindent weggeschreven. + +Adders en voetangels te over: hiervoor moet het commando `enddocument' +herschreven worden. + + +\section{Verdere moeilijke veranderingen: de opmaak van + lange koppen. Zoals deze dus. Reeds. Antidisestablishmentarianism. + Hottentottententententoonstelling.} + +\LaTeX\ zet koppen als ingesprongen paragrafen. Het is echter niet +gewoon dat een meerregelige kop zo behandeld wordt: beter is het vrije +regelval te gebruiken en vooral woordafbreking (zelfs in samengestelde +woorden) te verbieden. + +\subsection{Inventaris van relevante concepten} +Binnen het commando \verb.\@sect. wordt de kop van de sectie gezet als +\begin{verbatim} +{\interlinepenalty\@M #8\par} +\end{verbatim} + +\subsection{Implementatie van de veranderingen} +Aan de zetcommando's voor de sectiekoppen dient een aanroep van +`headstyle' toegevoegd te worden, waar +\begin{verbatim} +\def\headstyle{\nohyphenation \rightskip=0cm plus 3cm} +\end{verbatim} +of zoiets. Het commando `nohyphenation' kan op verschillende manieren +bereikt worden, ik heb gekozen voor \verb+\hyphenpenalty=10000+, en +idem zo voor de `exhyphenpenalty'. + +\section{Opties} + +De stijlen `Artikel1' en `Artikel3' hebben een door de gebruiker te +kiezen optie. Hiermee kan de gebruiker de opmaak naar eigen +goeddunken varieren. Misschien dat er nog wel meer van dat soort +opties komen. + +\subsection{Hoe werken opties} +Een door de gebruiker gespecificeerde stijloptie wordt soms +gerealiseerd door een commando in het stijlbestand, en soms door een +in te laden optiebestand. Het mechanisme dat dit bewerkstelligt is +het volgende. + +Ergens bovenin het stijlbestand worden commando's \verb.\ds@OPTION. +gedefinieerd. Als de gebruiker de betreffende optie meegegeven heeft, +wordt dit commando uitgevoerd door \verb.\@options., dat ook ergens +bovenin het stijlbestand staat. Voor die opties waarvoor geen +\verb.\ds@OPTION. macro gedefinieerd is, wordt na de verwerking van +het stijlbestand door \LaTeX\ een bestand \verb.OPTION.STY. geladen. + +\section{De inhoudsopgave} + +\subsection{Beschrijving} +\subsubsection{Inventaris van kwalen} +Treebus vindt het zogenaamde `uitpunten' van een inhoudsopgave een +minder geslaagd idee. Ook over het steeds verder inspringen van kopjes +in de inhoudsopgave is hij niet te spreken. Laat dit nu precies zijn +wat \LaTeX\ doet. + +Wat mij dan nog stoort zijn de grote verschillen in zetwijze +van kopjes op verschillende nivo's. + +\subsubsection{Remedie} + +\paragraph{Kantlijnen} +Alle nummers worden tegen de linker kantlijn getrokken, en de kopjes +staan dan (allemaal) op `unitindent' van de linker kantlijn. Dit +levert geen problemen op omdat er net zoveel nivo's nummering in +kopjes als in de inhoudsopgave voorkomen. + +\paragraph{Fonts} +Kopjes worden in drie verschillende fonts gezet om de hierarchie uit +te doen komen. Ik heb gekozen voor `bf', `sl', en `rm' in +`normalsize'. Er valt over te twisten of dit misschien gewoon de fonts +van de koppen zelf moeten zijn. + +\paragraph{Verdere zetwijze} +Er wordt vrije regelval gebruikt. Het paginanummer verschijnt direct +achter het kopje (met een vaste hoeveelheid wit). + +\subsection{Implementatie} + +Ten eerste is er een commando \verb+\toc@font+ gekomen dat het font +bepaalt waarmee een kop in de inhoudsopgave gaat verschijnen. Deze +bepaling gebeurt in \verb+\@sect+, die daartoe verder is aangepast. + +Ten tweede is er, als vervanging van \verb+\@dottedtocline+, +een commando\\ \verb+\@regtocline+ dat de opmaak van de kop regelt. +De merkwaardige sequentie +\begin{verbatim} +\@tempdima=\unitindent +\end{verbatim} +zorgt ervoor dat het nummer (dat in \verb+\@sect+ in een `numberline' +gestopt is) op de goede breedte gezet wordt. + +De \verb+\l@TYPE+ commando's (waar `type' is `section' en dergelijke) +zijn omgezet zodat ze \verb+\@regtocline+ gebruiken. Uitzondering: +\verb+\l@part+. Daar kom ik nog wel een keer aan toe. + + + +\part{Veranderingen in Artikel2} + +In de documentstijl `Artikel2' is voor veel zaken een geheel andere +keuze gemaakt dan in~`Artikel1'. Vaak betekende dit dat, gegeven de +moeite die in `Artikel1' geinvesteerd was, slechts een paar parameters +veranderd hoefden te worden. In enkele gevallen, echter, moest een +geheel nieuwe aanpak gevolgd worden. + +\section{Variaties} + +De beide hier beschreven documentstijlen hebben als voornaamste +verbetering ten opzichte van `Article' een nadrukkelijk aanwezige +tweede kantlijn. In `Artikel1' wordt deze kantlijn gebruikt door al +het eenmaal ingesprongen materiaal. In~`Artikel2' wordt deze kantlijn +minder radicaal gevolgd: +\begin{itemize} +\item`verbatim' omgevingen worden weer gewoon tegen de linkerkantlijn + geplaatst; +\item de eerste kantlijn voor lijststructuren bedraagt de helft van de + paragraafinspinging; en +\item de labelbreedte van voetnoten is hieraan gelijk gemaakt. +\end{itemize} +Alles bij elkaar wordt het gewicht van de pagina verder tegen de +linkerkantlijn geplaatst. + +Van een andere kant bekeken is de tweede kantlijn (zeg dat die door de +`parindent' bepaald wordt) in de stijl~`Artikel2' juist nadrukkelijker +aanwezig: +\begin{itemize} +\item alle tussenkopjes springen in over de `parindent, en +\item de eerste regel na een kopje springt ook in. +\end{itemize} + + +\section{Behandeling van koppen} +\subsection{Sectie, subsectie, subsubsectie} +\subsubsection{Elementaria} + +Het laten inspringen van koppen gaat door een positieve waarde voor de +derde parameter van \verb.\@startsection. te specificeren. Door de +vierde parameter positief te maken springt de eerste regel na de kop +ook in. + +Omdat de tekst van de kopjes nu geen verdere kantlijn definieert hoeft +er niet zo'n moeite gedaan te worden om die te plaatsen als +in~`Artikel1'. Ik heb de normale \LaTeX-constructie van een vaste +`skip' weer in ere hersteld; op drie-tiende `em' deze keer. + +\subsubsection{Complicaties} + +Om te voorkomen dat bij lange koppen de tekst alsnog een tweede +kantlijn gaat defini"eren moest de \verb.\@hangfrom. die dit +bewerkstelligt verwijderd worden. Bij volledig verwijderen, echter, +zal de tweede regel van de kop tegen de linker kantlijn geplaatst +worden. Ook niet de bedoeling. + +In de aanpak die ik gevolgd heb hangt de tekst nu aan de inspringing; +het commando \verb.\@svsec. dat het nummer zet is gewoon in de tekst +geplaatst. + + +\subsection{Part} + +Het zou leuk zijn als de eerste regel na een `part'-kop ook insprong. +Het al dan niet inspringen van deze regel wordt bestuurd door de +schakelaar \verb.\@ifafterindent. waarop getest wordt in +\verb.\@afterheading.. Normaal wordt inspringen voorkomen door deze +schakelaar in `part' op onwaar te zetten. + +Het zal de perceptieve lezer duidelijk zijn wat ik gedaan heb om +inspringen van de eerste regel na een `part' af te dwingen. + +\section{De samenvatting} + +In `Article' (maar niet in `Artikel1') wordt de samenvatting gezet +door middel van de `quotation' omgeving. Dit, op zijn beurt, is een +`list' met slechts een item, in dit geval de tekst van de +samenvatting. Net als in~`Article' zou ik de samenvatting ingesprongen +willen zien over de alineainspring. Dit lukt niet meer als de +samenvatting als een `quotation' gezet wordt, aangezien de +lijstinspringing (op het eerste nivo) de helft van de +alineainspringing bedraagt. + +Ik heb er derhalve voor gekozen de samenvatting expliciet als een +lijst te zetten, waarbij in het tweede argument van `list' (het +argument waarin commando's meegegeven kunnen worden) de `leftmargin' +op `unitindent' gezet wordt. + +\section{De inhoudsopgave} + +De inhoudsopgave wordt in `Artikel2' net zo gezet als in~`Artikel1', +met het verschil dat de sectienummers nu niet links maar rechts +lijnen. Dit in het kader van het beklemtonen van de tweede kantlijn. +Hiertoe moest het commando `numberline' uit `LaTeX.tex' overgenomen en +aangepast worden. + +Overigens is de tweede kantlijn in de inhoudsopgave verder naar rechts +dan in de rest van het document. De inhoudsopgave dient dus liever +niet op een tekstpagina te beginnen. + +Dat de tweede kantlijn verder naar rechts staat betekent overigens dat +het woord `inhoudsopgave', dat als een sectiekop gezet wordt, +voorafgegaan moet worden door een `skip' ter breedte van het verschil. + + + +\part{Veranderingen in Artikel3} + +Uitgaande van `Artikel1' was het kinderspel een stijl te maken die net +zo strak links lijnend oogde, maar die bovendien geen +alinea\-inspringing heeft en dit compenseert met een `parskip'. +\begin{itemize} +\item Er is gekozen voor een `parskip' ter grootte van de helft van de + `baselineskip'. +\item De `topsep' in lijststructuren --~de witruimte boven en onder de + gehele lijst~-- is \emph{minus} de halve `parskip'; netto effect is + dat hier de helft van de witruimte komt die zich tussen alineas + bevindt. +\item De grootte van de `unitindent' kon ongewijzigd blijven, + aangezien kopjes nog steeds op dezelfde wijze gezet worden. +\item Het wit onder kopjes is op nul gezet. Dit betekent niet dat er + geen wit staat, want de `parskip' krijg je hoe dan ook kado. +\end{itemize} +Het geheel oogt wel aardig. + +\begin{thebibliography}{9} + +\bibitem{Inge}Inge Eijkhout, Gesprekken en correspondentie, 1989. + +\bibitem{Leslie}Leslie Lamport, \emph{\LaTeX, a document preparation + system}, Addison-Wesley, 1986. + +\bibitem{Miles}John Miles, \emph{Ontwerpen voor Desktop + Publishing\footnote{De Nederlandse uitgave is goedkoper dan de + Engelse, maar doet een zware aanslag op je ogen, door het soort + zetfout dat in \TeX\ onmogelijk zou kunnen voorkomen.}, Alles + over layout en typografie op de personal computer}, Uitgeverij + Mingus, Baarn~1988. + +\bibitem{Karel}Karel Treebus, \emph{Tekstwijzer, een gids voor het + grafisch verwerken van tekst}, SDU~uitgeverij, 1988. + +\end{thebibliography} + + +\newpage +\tableofcontents +\listoftables +\listoffigures + +\end{document} + + + + + + diff --git a/macros/latex/contrib/ntgclass/brief.dtx b/macros/latex/contrib/ntgclass/brief.dtx new file mode 100644 index 0000000000..96a1525bf0 --- /dev/null +++ b/macros/latex/contrib/ntgclass/brief.dtx @@ -0,0 +1,2723 @@ +% \iffalse meta-comment +% +% % \iffalse meta-comment +% % +% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. +% % All rights reserved. +% % +% % This file is part of the NTG document classes distribution +% % ---------------------------------------------------------- +% % +% % It may be distributed and/or modified under the +% % conditions of the LaTeX Project Public License, either version 1.3 +% % of this license or (at your option) any later version. +% % The latest version of this license is in +% % http://www.latex-project.org/lppl.txt +% % and version 1.3 or later is part of all distributions of LaTeX +% % version 2003/12/01 or later. +% % +% % This work has the LPPL maintenance status "maintained". +% % +% % The Current Maintainer of this work is Johannes Braams. +% % +% % The list of all files belonging to the NTG document classes +% % distribution is given in the file `manifest.txt. +% % +% % The list of derived (unpacked) files belonging to the distribution +% % and covered by LPPL is defined by the unpacking scripts (with +% % extension .ins) which are part of the distribution. +% % \fi +% \fi +% \CheckSum{2200} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \iffalse +%% Copyright (C) 1994 -- 1999 by Victor Eijkhout \and Johannes Braams +%% Based on letter.dtx version 1.2i +%% Copyright (C) 1994 LaTeX3 project, Frank Mittelbach +%% and Rainer Sch\"opf, all rights reserved. +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt; either +%% version 1 of the License, or any later version. +%% +% \section{Identification} +% +% +% This document class can only be used with \LaTeXe, so we make +% sure that an appropriate message is displayed when another \TeX{} +% format is used. +% \begin{macrocode} +%<+brief>\NeedsTeXFormat{LaTeX2e}[1995/06/01] +% \end{macrocode} +% +% Announce the Class name and its version. +% \begin{macrocode} +%<+brief>\ProvidesClass{brief} +%<*driver> +\ProvidesFile{brief.drv} +% + [1999/03/03 v2.0r +%<+brief> NTG LaTeX document class] +% \end{macrocode} +% +% \section{The documentation driver file} +% +% We use the document class \cls{ltxdoc} which is also used to +% format the \LaTeXe\ documentation. +% \begin{macrocode} +%<*driver> +] +\documentclass{ltxdoc} +% \end{macrocode} +% +% We don't want everything to appear in the index. +% \changes{v2.0c}{1994/06/15}{Reordered DoNotIndex list} +% \changes{v2.0f}{1994/10/04}{Added a missing comma} +% \begin{macrocode} +\DoNotIndex{\@Alph,\@alph,\@arabic,\@badmath} +\DoNotIndex{\@centercr} +\DoNotIndex{\@empty,\@ignoretrue} +\DoNotIndex{\@ixpt} +\DoNotIndex{\@M,\@minus,\@ne,\@plus} +\DoNotIndex{\\,\addtolength} +\DoNotIndex{\advance} +\DoNotIndex{\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +\DoNotIndex{\bullet} +\DoNotIndex{\cdot,\cr,\day,\DeclareOption} +\DoNotIndex{\def,\DocInput,\documentclass} +\DoNotIndex{\DoNotIndex,\egroup,\ifx,\else,\fi,\endtrivlist} +\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +\DoNotIndex{\endlist,\everycr,\ExecuteOptions} +\DoNotIndex{\filedate,\filename,\fileversion} +\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +\DoNotIndex{\hsize,\hskip,\hspace,\hss,\ifcase,\or,\fi} +\DoNotIndex{\ifvmode,\ifnum,\fi,\fi,\input} +\DoNotIndex{\kern,\leavevmode,\let,\leftmark} +\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark} +\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +\DoNotIndex{\NeedsTeXFormat,\newdimen} +\DoNotIndex{\newpage,\nobreak,\noindent,\number} +\DoNotIndex{\p@} +\DoNotIndex{\pagestyle,\par} +\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +\DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +\DoNotIndex{\rightmargin,\rlap,\rmfamily} +\DoNotIndex{\roman,\setbox,\setcounter,\setlength} +\DoNotIndex{\skip,\slshape,\space} +\DoNotIndex{\trivlist,\typeout,\tw@} +\DoNotIndex{\vskip,\vspace,\year,\z@} +% \end{macrocode} +% Produce a listing of the changes. +% \begin{macrocode} +\RecordChanges +% \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. +% \changes{v2.0c}{1994/06/15}{Removed remnant from \file{letter.dtx}, +% now get the file info from \file{bief.dtx}} +% \begin{macrocode} +\GetFileInfo{brief.drv} +% \end{macrocode} +% Some commonly used abbreviations +% \begin{macrocode} +\newcommand*{\Lopt}[1]{\textsf{#1}} +\newcommand*{\Lenv}[1]{\textsf{#1}} +\newcommand*{\file}[1]{\texttt{#1}} +\newcommand*{\cls}[1]{\texttt{#1}} +\newcommand*{\Lcount}[1]{\textsl{\small#1}} +\newcommand*{\pstyle}[1]{\textsl{#1}} +% \end{macrocode} +% We also want the full details. +% \changes{v2.0c}{1994/06/15}{Removed another remnant of +% \file{letter.dtx}} +% \begin{macrocode} +\begin{document} +\DocInput{brief.dtx} +\PrintIndex +\end{document} +% +% \end{macrocode} +% \fi +% +% \changes{v2.0g}{1994/12/23}{Use \cs{newcommand*} instead of +% \cs{newcommand} in most places} +% \changes{v2.0l}{1995/08/10}{Use \cs{hb@xt@} instead of \cs{hbox} +% \texttt{to}} +% \changes{v2.0q}{1997/09/09}{Added a few more synonimes for commands} +% +% +% \author{Victor Eijkhout \and Johannes Braams} +% +% \title{NTG Document Class \texttt{brief} for \LaTeX{} version 2e} +% +% +% \maketitle +% \tableofcontents +% +% \section{Introduction} +% +% This file contains the document class \cls{brief} that was made +% available by Working Group 13 of the NTG (Nederlandstalige \TeX\ +% Gebruikersgroep). It defines more commands than the standard +% document class \cls{letter}, but a letter made with the +% \cls{letter} document class is still processable with this +% document class. +% +% \StopEventually +% +% \section{Initial Code} +% +% In this part we define a few comands 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} +%<*brief> +\newcommand*\@ptsize{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@typhulp} +% This switch is used to decide whether or not to put a small line +% on the paper that is used to align the paper in a typewriter. +% \begin{macrocode} +\newif\if@typhulp +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@streepjes} +% A switch to indicate if the `folding lines' should be printed +% \begin{macrocode} +\newif\if@streepjes +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@adresrechts} +% This switch indicates if the addressing information is to be set +% on the left or on the right side of the letter. +% \begin{macrocode} +\newif\if@adresrechts +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@elfinch} +% A switch to remember whether we are using A4 or letter +% paper. (possibly obsolete) +% \begin{macrocode} +\newif\if@elfinch +% \end{macrocode} +% \end{macro} +% +% +% \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. +% \begin{macrocode} +\DeclareOption{a4paper} + {\setlength\paperheight {297mm}% + \setlength\paperwidth {210mm}\@elfinchfalse} +\DeclareOption{a5paper} + {\ClassWarning{brief}{Paper size A5 not supported, using A4}% + \setlength\paperheight {297mm}% + \setlength\paperwidth {210mm}\@elfinchfalse} +\DeclareOption{b5paper} + {\ClassWarning{brief}{Paper size B5 not supported, using A4}% + \setlength\paperheight {297mm}% + \setlength\paperwidth {210mm}\@elfinchfalse} +\DeclareOption{letterpaper} + {\setlength\paperheight {11in}% + \setlength\paperwidth {8.5in}\@elfinchtrue} +\DeclareOption{USletter} + {\setlength\paperheight {11in}% + \setlength\paperwidth {8.5in}\@elfinchtrue} +\DeclareOption{legalpaper} + {\ClassWarning{brief} + {Paper size `legal' not supported, using `letter'}% + \setlength\paperheight {14in}% + \setlength\paperwidth {8.5in}\@elfinchtrue} +\DeclareOption{executivepaper} + {\ClassWarning{brief} + {Paper size `executive' not supported, using `letter'}% + \setlength\paperheight {10.5in}% + \setlength\paperwidth {7.25in}\@elfinchtrue} +% \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} +% +% Two-sided printing was not supported in the \LaTeX~2.09 version +% of this documentclass. +% \begin{macrocode} +\if@compatibility + \DeclareOption{twoside}{\@latexerr{No 'twoside' layout for letters}% + \@eha} +\else + \DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue} +\fi +% \end{macrocode} +% +% +% \begin{macrocode} +\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse} +% \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{Equation numbering on the left} +% +% The option \Lopt{leqno} can be used to get the equation numbers +% on the left side of the equation. +% \begin{macrocode} +\DeclareOption{leqno}{\input{leqno.clo}} +% \end{macrocode} +% +% \subsection{Flush left displays} +% +% The option \Lopt{fleqn} redefines the displayed math environmens +% in such a way that they come out flush left, with an indentation +% of |\mathindent| from the prevailing left margin. +% \begin{macrocode} +\DeclareOption{fleqn}{\input{fleqn.clo}} +% \end{macrocode} +% +% \subsection{Typewriter alignment} +% +% \begin{macrocode} +\DeclareOption{typhulp}{\@typhulptrue} +\DeclareOption{geentyphulp}{\@typhulpfalse} +% \end{macrocode} +% \subsection{Folding lines} +% It is possible to print `folding lines' on the far right side of +% the paper. +% +% \begin{macrocode} +\DeclareOption{streepjes}{\@streepjestrue} +\DeclareOption{geenstreepjes}{\@streepjesfalse} +% \end{macrocode} +% +% \subsection{Address placement} +% The address information can be put either on the left or on the +% right side of the letter +% +% \begin{macrocode} +\DeclareOption{adreslinks}{\@adresrechtsfalse} +\DeclareOption{adresrechts}{\@adresrechtstrue} +% \end{macrocode} +% +% \subsection{Support for different languages} +% +% In the original document style \cls{brief} the options to support +% the various languages were all dutch words. To be compatible with +% both the old version of the document class and with the +% recommended set of language options we have at least two options +% for each language. +% +% First Dutch, +% \begin{macrocode} +\DeclareOption{nederlands}{\AtEndOfClass{\dutchbrief}} +\DeclareOption{dutch} {\AtEndOfClass{\dutchbrief}} +% \end{macrocode} +% then British English, +% \begin{macrocode} +\DeclareOption{engels} {\AtEndOfClass{\englishbrief}} +\DeclareOption{english} {\AtEndOfClass{\englishbrief}} +% \end{macrocode} +% American English, +% \begin{macrocode} +\DeclareOption{USengels} {\AtEndOfClass{\americanbrief}} +\DeclareOption{american} {\AtEndOfClass{\americanbrief}} +% \end{macrocode} +% German +% \begin{macrocode} +\DeclareOption{duits} {\AtEndOfClass{\germanbrief}} +\DeclareOption{german} {\AtEndOfClass{\germanbrief}} +% \end{macrocode} +% and finally french. +% \begin{macrocode} +\DeclareOption{frans} {\AtEndOfClass{\frenchbrief}} +\DeclareOption{french} {\AtEndOfClass{\frenchbrief}} +\DeclareOption{francais} {\AtEndOfClass{\frenchbrief}} +% \end{macrocode} +% +% \section{Executing Options} +% +% Here we execute the default options to initialize certain +% variables. +% \begin{macrocode} +\ExecuteOptions{a4paper,11pt,oneside,onecolumn,final,% + geentyphulp,geenstreepjes,adreslinks,% + nederlands} +% \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. +% \changes{v2.0h}{1994/12/30}{Added a \cs{relax} to prevent an +% incomplete \cs{ifcase} error} +% \begin{macrocode} +\ProcessOptions\relax +% \end{macrocode} +% Now that all the options have been executed we can define the +% user-level size changing commands. Their definition depends on +% which of the \Lopt{10pt}, \Lopt{11pt} or \Lopt{12pt} options was +% specified. +% +% \begin{macro}{\normalsize} +% \begin{macro}{\@normalsize} +% +% 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 +% +% \begin{macrocode} +\ifcase\@ptsize + \renewcommand*\normalsize{% + \@setfontsize\normalsize\@xpt\@xiipt + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI} +\or + \renewcommand*\normalsize{% + \@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@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI} +\or + \renewcommand*\normalsize{% + \@setfontsize\normalsize\@xiipt{15}% + \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI} +\fi +% \end{macrocode} +% Make |\@normalsize| a synonymn for |\normalsize|. +% \begin{macrocode} +\let\@normalsize\normalsize +% \end{macrocode} +% +% We initially choose the normalsize font. +% \begin{macrocode} +\normalsize +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\small} +% +% This is similar to |\normalsize|. +% \begin{macrocode} +\ifcase\@ptsize + \newcommand*\small{% + \@setfontsize\small\@ixpt{11}% + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus2\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \belowdisplayskip \abovedisplayskip} +\or + \newcommand*\small{% + \@setfontsize\small\@xpt\@xiipt + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip} +\or + \newcommand*\small{% + \@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@ + \belowdisplayskip \abovedisplayskip} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\footnotesize} +% +% This is similar to |\normalsize|. +% \begin{macrocode} +\ifcase\@ptsize + \newcommand*\footnotesize{% + \@setfontsize\footnotesize\@viiipt{9.5}% + \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus\p@ + \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ + \belowdisplayskip \abovedisplayskip} +\or + \newcommand*\footnotesize{% + \@setfontsize\footnotesize\@ixpt{11}% + \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \belowdisplayskip \abovedisplayskip} +\or + \newcommand*\footnotesize{% + \@setfontsize\footnotesize\@xpt\@xiipt + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip} +\fi +% \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} +% 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} +\ifcase\@ptsize + \newcommand*\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt} + \newcommand*\tiny{\@setfontsize\tiny\@vpt\@vipt} + \newcommand*\large{\@setfontsize\large\@xiipt{14}} + \newcommand*\Large{\@setfontsize\Large\@xivpt{18}} + \newcommand*\LARGE{\@setfontsize\LARGE\@xviipt{22}} + \newcommand*\huge{\@setfontsize\huge\@xxpt{25}} + \newcommand*\Huge{\@setfontsize\Huge\@xxvpt{30}} +\or + \newcommand*\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} + \newcommand*\tiny{\@setfontsize\tiny\@vipt\@viipt} + \newcommand*\large{\@setfontsize\large\@xiipt{14}} + \newcommand*\Large{\@setfontsize\Large\@xivpt{18}} + \newcommand*\LARGE{\@setfontsize\LARGE\@xviipt{22}} + \newcommand*\huge{\@setfontsize\huge\@xxpt{25}} + \newcommand*\Huge{\@setfontsize\Huge\@xxvpt{30}} +\or + \newcommand*\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} + \newcommand*\tiny{\@setfontsize\tiny\@vipt\@viipt} + \newcommand*\large{\@setfontsize\large\@xivpt{18}} + \newcommand*\Large{\@setfontsize\Large\@xviipt{22}} + \newcommand*\LARGE{\@setfontsize\LARGE\@xxpt{25}} + \newcommand*\huge{\@setfontsize\huge\@xxvpt{30}} + \let\Huge=\huge +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Loading Packages} +% +% This class file does not load additional packages. +% +% +% \section{Document Layout} +% \label{sec:maincode} +% +% In this section we are finally dealing with the nasty typographical +% details. +% +% \subsection{Fonts} +% +% We use two fixed fonts in these letters. +%^^A possibly need to update for DC fonts in future? +% \begin{macrocode} +\newfont\refkopfont{cmssq8} +\DeclareFixedFont\kleinvet{\encodingdefault}% + {\rmdefault}% + {\bfdefault}% + {\shapedefault}% + {7} +% \end{macrocode} +% \subsection{Paragraphing} +% +% \begin{macro}{\lineskip} +% \begin{macro}{\normallineskip} +% These parameters control \TeX's behaviour when two lines tend to +% come too close together. +% \begin{macrocode} +\setlength\lineskip{1\p@} +\setlength\normallineskip{1\p@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\baselinestretch} +% This is used as a multiplier for |\baselineskip|. The default is +% to {\em not\/} stretch the baselines. +% \begin{macrocode} +\renewcommand*\baselinestretch{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\parskip} +% \begin{macro}{\parindent} +% |\parskip| gives extra vertical space between paragraphs and +% |\parindent| is the width of the paragraph indentation. +% Letters are typeset without paragraph indentation. +% \begin{macrocode} +\setlength\parskip{0.7em \@plus .3em \@minus .2em} +\setlength\parindent{0\p@} +% \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|, +% dependant 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 discourage 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} +% Discourage (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} +% 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} +\setlength\headheight{37mm} +\setlength\headsep {0mm} +% \end{macrocode} +% \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{25\p@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\maxdepth} +% \begin{macro}{\@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 +\setlength\@maxdepth\maxdepth +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{The dimension of text} +% +% \begin{macro}{\textwidth} +% \begin{macro}{\textheight} +% The dimensions of the text are fixed; they are defined in the +% \textsc{nen} norm which this class implements. +% +% \begin{macrocode} +\setlength\textwidth{144mm} +\setlength\textheight{197mm} +\if@elfinch \addtolength\textheight{-17.6mm} \fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\rightskip} +% \begin{macro}{\@rightskip} +% +% \begin{macrocode} +\setlength\@rightskip{0cm \@plus 5cm} +\setlength\rightskip{\@rightskip} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{Margins} +% +% \begin{macro}{\oddsidemargin} +% \begin{macro}{\evensidemargin} +% \begin{macro}{\marginparwidth} +% Again, these dimensions are based on the \textsc{nen} norm. +% \begin{macrocode} +\setlength\@tempdima{\paperwidth} +\addtolength\@tempdima{-2in} +\addtolength\@tempdima{-\textwidth} +\setlength\oddsidemargin {7.6mm} +\setlength\evensidemargin {\oddsidemargin} +\setlength\marginparwidth {0\p@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\marginparsep} +% \begin{macro}{\marginparpush} +% The horizontal space between the main text and marginal notes is +% determined by |\marginparsep|, the minimum vertical separation +% between two marginal notes is controlled by |\marginparpush|. +% \begin{macrocode} +\setlength\marginparsep {0\p@} +\setlength\marginparpush{0\p@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\topmargin} +% The |\topmargin| is the distance between the top of `the +% printable area' --which is 1 inch below the top of the paper-- +% and the top of the box which contains the running head. +% +% \begin{macrocode} +\setlength\topmargin{-12.4mm} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{The address field} +% +% The address information has to be put on a specific place. +% +% \begin{macro}{\vensterskip} +% \begin{macro}{\@vensterskip} +% +% \begin{macrocode} +\newdimen\vensterskip +\setlength\vensterskip{50mm} +\newdimen\@vensterskip +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{Changing head and text heights} +% +% This class has a much higher head on the first page of a letter +% than on subsequent pages. +% +% \begin{macro}{\@firstheadheight} +% \begin{macro}{\@otherheadheight} +% \begin{macro}{\@othertextheight} +% \begin{macro}{\@otherheadsep} +% \begin{macro}{\@vervolgsep} +% +% \begin{macrocode} +\newdimen\@firstheadheight +\newdimen\@otherheadheight +\newdimen\@othertextheight +\newdimen\@otherheadsep +\newdimen\@vervolgsep +\setlength\@otherheadsep{2mm} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@prepareerhoofden} +% +% \begin{macrocode} +\def\@prepareerhoofden{% + \setlength\@vensterskip{\vensterskip}% + \addtolength\@vensterskip{-50mm}% + \setlength\@firstheadheight{\headheight}% + \setlength\@otherheadheight{\headheight}% + \setlength\@othertextheight{\textheight}% + } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Information in the foot} +% +% We also reserve some space at the bottom of the paper to print +% some information about the sender of the letter. +% +% \begin{macro}{\footsep} +% The distance between the text and this foot information +% \begin{macrocode} +\newdimen\footsep +\setlength\footsep{15mm} +% \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} +\setlength\footnotesep{12\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} +\setlength{\skip\footins}{10\p@ \@plus 2\p@ \@minus 4\p@} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Page Styles} +% +% The page style \pstyle{foo} is defined by defining the command +% |\ps@foo|. This command should make only local definitions. +% There should be no stray spaces in the definition, since they +% could lead to mysterious extra spaces in the output (well, that's +% something that should be always avoided). +% +% \begin{macro}{\@evenhead} +% \begin{macro}{\@oddhead} +% \begin{macro}{\@evenfoot} +% \begin{macro}{\@oddfoot} +% The |\ps@...| command defines the macros |\@oddhead|, +% |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running +% heads and feet---e.g., |\@oddhead| is the macro to produce the +% contents of the heading box for odd-numbered pages. It is called +% inside an |\hbox| of width |\textwidth|. +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Marking conventions} +% +% To make headings determined by the sectioning commands, the page +% style defines the commands |\chaptermark|, |\sectionmark|, +% \ldots, where |\chaptermark{|\meta{TEXT}|}| is called by +% |\chapter| to set a mark, and so on. +% +% The |\...mark| commands and the |\...head| macros are defined +% with the help of the following macros. (All the |\...mark| +% commands should be initialized to no-ops.) +% +% \LaTeX{} extends \TeX's |\mark| facility by producing two kinds +% of marks, a `left' and a `right' mark, using the following +% commands: +% \begin{flushleft} +% |\markboth{|\meta{LEFT}|}{|\meta{RIGHT}|}|: Adds both marks. +% +% |\markright{|\meta{RIGHT}|}|: Adds a `right' mark. +% +% |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead| +% or |\@evenfoot| macros, it gets the current `left' +% mark. |\leftmark| works like \TeX's |\botmark| +% command. +% +% |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead| +% or |\@evenfoot| macros, it gets the current +% `right' mark. |\rightmark| works like \TeX's +% |\firstmark| command. +% \end{flushleft} +% +% The marking commands work reasonably well for right marks +% `numbered within' left marks--e.g., the left mark is changed by a +% |\chapter| command and the right mark is changed by a |\section| +% command. However, it does produce somewhat anomalous results if +% two |\markboth|'s occur on the same page. +% +% +% Commands like |\tableofcontents| that should set the marks in some +% page styles use a |\@mkboth| command, which is |\let| by the +% pagestyle command (|\ps@...|) to |\markboth| for setting the +% heading or to |\@gobbletwo| to do nothing. +% +% +% \begin{macrocode} +% %%%\mark{{}{}} % Initializes TeX's marks <--- can vanish +% \end{macrocode} +% +% \subsubsection{Defining the page styles} +% \label{sec:pagestyle} +% +% The pagestyles \pstyle{empty} and \pstyle{plain} are defined in +% the \LaTeX{} kernel (\file{ltpage.dtx}), but these definitions +% are changed to a simpler version for this document class. +% +% \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 contain some information about the sender of the +% letter. The feet aer the same for even and odd pages. +% \begin{macrocode} + \def\@oddfoot{\voetregel\hss}% + \let\@evenfoot\@oddfoot +% \end{macrocode} +% The running head contains some information about this letter. The +% head is the same for even and odd pages. +% \begin{macrocode} + \def\@oddhead{% + \vbox to \@otherheadheight + {\vervolghoofd\vfil + \if@streepjes\streepjes{\@firstheadheight}\fi}\hss} + \let\@evenhead\@oddhead} +% \end{macrocode} +% For one sided printing we don't need to define |\@evenhead| so +% the definition is somewhat simpler. +% \changes{v2.0e}{1994/07/12}{Removed a typo (\cs{othertheadheight})} +% \begin{macrocode} +\else + \def\ps@headings{% + \def\@oddfoot{\voetregel\hss}% + \def\@oddhead{% + \vbox to \@otherheadheight + {\vervolghoofd\vfil + \if@streepjes\streepjes{\@otherheadheight}\fi}\hss}} +\fi +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\ps@firstpage} +% On the first page the head contains much more than on other +% pages, therefore the height of the head and text need to be +% adapted. +% \begin{macrocode} +\def\ps@firstpage{% + \global\headheight=\@otherheadheight + \global\textheight=\@othertextheight %?? werkt dit ?? + \global\headsep=\@otherheadsep + \def\@oddhead{\vbox to \@firstheadheight + {\briefhoofd\vfil + \if@streepjes\streepjes{\@firstheadheight}\fi}% + \hss} + \def\@evenhead{} + \def\@oddfoot{\voetregel\hss} \let\@evenfoot\@oddfoot} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ps@empty} +% The definition of the page style \pstyle{empty} is simple: +% No running head or foot at all. +% \begin{macrocode} +\def\ps@empty{% + \let\@oddfoot\@empty\let\@oddhead\@empty + \let\@evenfoot\@empty\let\@evenhead\@empty} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ps@plain} +% The definition of the page style \pstyle{plain} is again simple. +% \changes{v2.0l}{1995/08/10}{replace \cs{rmfamily} with +% \cs{normalfont} (PR 1578)} +% \begin{macrocode} +\def\ps@plain{% + \let\@oddhead\@empty + \def\@oddfoot{\normalfont\hfil\thepage}% + \def\@evenfoot{\normalfont\hfil\thepage}} +% \end{macrocode} +% \end{macro} +% +% \section{Document Markup} +% +% \subsection{Global Declarations} +% +% The following declarations, shown with examples, give information +% about the sender: +% \begin{itemize} +% \item |\name{Dr. L. User}| : to be used for the return address on +% the envelope. +% \item |\signature{Larry User}| : goes after the closing. +% \item |\address{3245 Foo St.\\Gnu York}| : used as the return +% address in the +% letter and on the envelope. If not declared, then an +% institutional standard address is used. +% \item |\location{Room 374}| : Acts as modifier to the standard +% institutional address. +% \item |\telephone{(415)123-4567}| : Just in case some style puts it +% on the letter. +% \end{itemize} +% +% \begin{macro}{\name} +% \begin{macro}{\fromname} +% \begin{macrocode} +\def\name#1{\def\fromname{#1}} +\def\fromname{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ondertekening} +% \begin{macro}{\signature} +% \begin{macro}{\fromsig} +% This macro stores the signature. +% \changes{v2.0b}{1994/06/05}{Can't use (re)newcommand for +% \cs{fromsig} as that breaks the test against \cs{@empty}} +% \begin{macrocode} +\newcommand*\ondertekening[1]{\def\fromsig{#1}} +\def\fromsig{} +\let\signature\ondertekening +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\address} +% \begin{macrocode} +\newcommand*\address[1]{\maakbriefhoofd*{}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\location} +% \begin{macro}{\fromlocation} +% \begin{macrocode} +\newcommand*{\location}[1]{\def\fromlocation{#1}} +\def\fromlocation{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\telephone} +% \begin{macro}{\telephonenum} +% \begin{macrocode} +\newcommand*{\telephone}[1]{\def\telephonenum{#1}} +\def\telephonenum{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\makelabels} +% The |\makelabels| declaration causes mailing labels to be made. +% \begin{macrocode} +\newcommand*{\makelabels}{% +% \end{macrocode} +% At the beginning of the document, we need to activate the +% |\@mlabel| and |\@startlabels| commands, as well as write +% |\@startlabels| to the |.aux| file. +% \begin{macrocode} + \AtBeginDocument{% + \let\@startlabels\startlabels + \let\@mlabel\mlabel + \if@filesw + \immediate\write\@mainaux{\string\@startlabels}\fi}% +% \end{macrocode} +% At the end of the document we need to write |\clearpage| to the +% |.aux| file. +% \begin{macrocode} + \AtEndDocument{% + \if@filesw\immediate\write\@mainaux{\string\clearpage}\fi}} +% \end{macrocode} +% |\makelabels| is allowed only before the |\begin{document}| +% command. +% \begin{macrocode} +\@onlypreamble\makelabels +% \end{macrocode} +% \end{macro} +% +% \subsection{The generic letter commands} +% +% \begin{environment}{brief} +% The \Lenv{brief} environment creates a new letter, starting from +% page 1. (The first page is unnumbered.) It has a single +% argument, which is the adressee and his address, as in +%\begin{verbatim} +% \begin{brief}{Sam Jones \\ +% Institute for Retarded Study\\ +% Princeton, N.J.} +%\end{verbatim} +% Local declarations, such as |\address|, can follow the +% |\begin{brief}|. +% \begin{macrocode} +\newenvironment{brief}[1] + {\newpage + \if@twoside \ifodd\c@page + \else\thispagestyle{empty} \hbox{}\newpage\fi + \fi + \c@page\@ne + \interlinepenalty=200 % smaller than the TeXbook value +% \end{macrocode} +% The |\leavevmode| and |\ignorespaces| commands are there for +% protecting against an empty argument. +% \begin{macrocode} + \@processto{\leavevmode\ignorespaces #1}% +% \end{macrocode} +% Now we can start filling in the various fields in the references +% line. First the adressee. +% \begin{macrocode} + \@defrefveld{\@Ad}{\geadresseerdetekst}{\toname} +% \end{macrocode} +% Then the date. When nothing was specified we use |\vandaag|. +% \begin{macrocode} + \ifdim\wd\@Dt=0cm \@defrefveld{\@Dt}{\datumtekst}{\vandaag}\fi +% \end{macrocode} +% Now we can prepare the letterheads. It couldn't be done earlier +% because the user can specify that he uses a different kind of +% `window envelope'. +% \begin{macrocode} + \@prepareerhoofden +% \end{macrocode} +% We may need to adapt the height of the head and the text body on +% the following pages. Therefore we measure the height of the head +% on those pages. +% \begin{macrocode} + {\setbox\@tempboxa\vervolghoofd + \@tempdima\ht\@tempboxa + \advance\@tempdima by -\@otherheadheight + \ifdim\@tempdima>0\p@ + \global\advance\@otherheadheight by \@tempdima + \global\advance\@othertextheight by -\@tempdima + \fi} +% \end{macrocode} +% We have to do the same for the foot of the letter. +% \begin{macrocode} + {\setbox\@tempboxa=\vbox{\voetregel} + \global\footskip=\ht\@tempboxa + \global\advance\footskip by \footsep}% + } +% \end{macrocode} +% The end of the environment possibly writes the address +% information on the \file{.aux} file. +% \changes{v2.0g}{1994/12/23}{No longer redefine \cs{protect} but use +% one of the available settings} +% \begin{macrocode} + {\stopletter\@@par\pagebreak\@@par + \if@filesw + \begingroup + \let\\=\relax + \let\protect\@unexpandable@protect + \immediate\write\@auxout + {\string\@mlabel{\returnaddress}{\toname\\\toaddress}}% + \endgroup + \fi} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{letter} +% The \Lenv{letter} environment is a synonime for the \Lenv{brief} +% environment, to provide compatibility with the standard +% \file{letter} document class. +% \begin{macrocode} +\let\letter\brief +\let\endletter\endbrief +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\@processto} +% \begin{macro}{\@xproc} +% \begin{macro}{\@yproc} +% |\@processto| gets the |\toname| and |\toaddress| from the letter +% environment's macro argument. |\@xproc| and |\@yproc| are auxiliary +% macros. +% \begin{macrocode} +\long\def\@processto#1{\@xproc #1\\@@@\ifx\toaddress\@empty + \else \@yproc #1@@@\fi} +\long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}} +\long\def\@yproc #1\\#2@@@{\def\toaddress{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\antwoordadres} +% The command |\antwoordadres| takes the return address as an +% argument. The various parts of the address should be separated by +% |\\|, which will be turned into bullets. +% \begin{macrocode} +\newif\if@antwoordadres +\newcommand*\antwoordadres[1]{% + \@antwoordadrestrue\renewcommand*\@antwoordadres{#1}} +\newcommand*\@antwoordadres{} +\let\replyaddress\antwoordadres +% \end{macrocode} +% \end{macro} +% +% \subsubsection{The address window} +% +% The address for the letter will be placed in such a way that a +% `window envelope' can be used to send the letter. +% +% \begin{macro}{\adresveldbreedte} +% The width of the address window. +% \begin{macrocode} +\newdimen\adresveldbreedte +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\adresveld} +% This command formats the address window. +% \begin{macrocode} +\newcommand*{\adresveld}{% + \hbox{}\kern-\topskip + \kern\@vensterskip + \begingroup +% \end{macrocode} +% Compute the width of the address window +% \begin{macrocode} + \if@adresrechts + \setlength\adresveldbreedte{4\refveldbreedte}% + \addtolength\adresveldbreedte{-76mm}% + \def\@tempa{\moveright 76mm}% + \else + \let\@tempa\relax + \setlength\adresveldbreedte{83mm}% + \fi +% \end{macrocode} +% Store the address in a box. +% \changes{v2.0m}{1995/11/29}{Set both \cs{parskip} and \cs{parindent} +% to zero in \cs{adresveld}} +% \changes{v2.0n}{1996/04/01}{Repaired a typo (\cs{parksip})} +% \begin{macrocode} + \setbox\@tempboxa\vtop{% + \hsize\adresveldbreedte + \@normalsize + \parindent\z@\parskip\z@ + \rightskip0\p@\@plus\adresveldbreedte + \let\\\@nobreakcr \toname \\ \toaddress} +% \end{macrocode} +% Format the return address if one was given. +% \changes{v2.0q}{1997/09/08}{Put \cs{textbullet} in a group to keep +% the font change local} +% \begin{macrocode} + {\baselineskip\z@\lineskip\z@ + \if@antwoordadres + \@tempa\vbox to \z@{% + \hb@xt@\adresveldbreedte{% + \kleinvet + \def\\{\unskip\enspace{\textbullet}\enspace\ignorespaces}% + \@antwoordadres\hfil} + \kern2\p@\hrule \vss} + \fi +% \end{macrocode} +% Print a small rule as typing aid if required. +% \begin{macrocode} + \if@typhulp + \@tempa\llap{\vbox to \z@{\vskip9mm\streepje\vss}} + \fi +% \end{macrocode} +% And finally print the address information. Note that this way of +% position the box which contains the address information has the +% advantage that no matter how high or deep the box is, the +% following information will always be printed in the same spot on +% the paper. +% \begin{macrocode} + \kern9mm \kern-\ht\@tempboxa \@tempdima=\dp\@tempboxa + \@tempa\box\@tempboxa \kern-\@tempdima + \vskip31mm}\endgroup} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{The reference line} +% +% \begin{macro}{\refveldbreedte} +% The width of the various fields in this line. It is determined in +% \textsc{nen}~\oldstylenums{3516} +% \begin{macrocode} +\newdimen\refveldbreedte +\setlength\refveldbreedte{38mm} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@defrefveld} +% A macro to help in defining the various fields. +% \begin{macrocode} +\def\@defrefveld#1#2#3{\setbox#1\@refveld{#2}{#3}} +% \end{macrocode} +% \begin{macro}{\@refveld} +% The macro |\@refveld| stores the formatted field in a box. +% \changes{v2.0m}{1995/11/29}{Also set \cs{parindent} to zero} +% \begin{macrocode} +\def\@refveld#1#2{% + \vtop{\hsize\refveldbreedte + \parskip\z@\parindent\z@ + \everypar{}% + \lineskiplimit\z@\baselineskip12\p@ + \lineskip\z@ + \rightskip0\p@ \@plus \refveldbreedte \@minus .5\refveldbreedte + \vbox{\refkopfont\baselineskip10\p@#1\@@par} + \kern2\p@ + \strut #2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@UB} +% \begin{macro}{\@UK} +% \begin{macro}{\@OK} +% \begin{macro}{\@Dt} +% We allocate four box registers to store the four fields in +% \begin{macrocode} +\newbox\@UB \newbox\@UK \newbox\@OK \newbox\@Dt +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\uwbriefvan} +% The command|\uwbriefvan| can be used to show the date of the +% letter to which your letter is an answer +% \begin{macrocode} +\newcommand*\uwbriefvan[1]{\@defrefveld{\@UB}{\uwbrieftekst}{#1}} +\let\yourletterof\uwbriefvan +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\uwkenmerk} +% The command |\uwkenmerk| can be used to show the reference of the +% letter to which your letter is an answer +% \begin{macrocode} +\newcommand*\uwkenmerk[1]{\@defrefveld{\@UK}{\uwkenmerktekst}{#1}} +\let\yourreference\uwkenmerk +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\onskenmerk} +% Store our reference in a box register. +% \begin{macrocode} +\newcommand*\onskenmerk[1]{\@defrefveld{\@OK}{\onskenmerktekst}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datum} +% To store the date in a box register. When the user gives an empty +% argument no date will be printed. When he doesn't use |\datum| he +% will get today's date. +% \begin{macrocode} +\newcommand*\datum[1]{\def\@tempa{}\def\@tempb{#1}% + \ifx\@tempa\@tempb + \setbox\@Dt\hbox{ }% + \else + \@defrefveld{\@Dt}{\datumtekst}{#1}% + \fi} +\let\date\datum +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\referentieregel} +% This collects all the information for the reference line. +% \begin{macrocode} +\def\referentieregel{\hbox + {\hb@xt@\refveldbreedte{\copy\@UB\hfil}% + \hb@xt@\refveldbreedte{\copy\@UK\hfil}% + \hb@xt@\refveldbreedte{\copy\@OK\hfil}% + \hb@xt@\refveldbreedte{\copy\@Dt\hfil}\hss}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\vervolgreferentieregel} +% On the second and following pages a simple reference line can be +% printed. It contains the address information, the date and the +% page number. +% \begin{macro}{\@Ad} +% For this purpose we need to allocate another box register. +% \begin{macrocode} +\newbox\@Ad +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\def\vervolgreferentieregel{% + \hbox{% + \hb@xt@\refveldbreedte{\copy\@Ad\hfil}% + \hskip\refveldbreedte + \hb@xt@\refveldbreedte{\copy\@Dt\hfil}% + \@refveld{\bladnummertekst}{\thepage}\hss}} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{The headers and footers} +% +% \begin{macro}{\briefhoofd} +% \begin{macro}{\vervolghoofd} +% The headings are empty by default. +% \begin{macrocode} +\newcommand*\briefhoofd{} +\newcommand*\vervolghoofd{\vbox{}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\maakbriefhoofd} +% The usage of this command creates non-empty headers. +% \begin{macrocode} +\newcommand*\maakbriefhoofd + {\@ifstar {\@kortvervolgbriefhoofd}{\@langvervolgbriefhoofd}} +\let\makeheader\maakbriefhoofd +% \end{macrocode} +% +% \begin{macro}{\@kortvervolgbriefhoofd} +% This creates a shortened heading for following pages +% \begin{macrocode} +\newcommand*\@kortvervolgbriefhoofd[2]{% + \@maakbriefhoofd{#1}{#2} + \def\vervolghoofd{% + \vbox{\hsize=4\refveldbreedte + \hb@xt@\hsize{\Large \normalfont\sffamily #1\strut\hfil} + \hrule \kern2mm \vervolgreferentieregel}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@langvervolgbriefhoofd} +% This creates a long heading for following pages by just using +% |\briefhoofd|. +% \begin{macrocode} +\newcommand*\@langvervolgbriefhoofd[2]{ + \@maakbriefhoofd{#1}{#2} + \def\vervolghoofd{% + \vbox{\briefhoofd\vskip2mm + \vervolgreferentieregel + \vbox{}}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@maakbriefhoofd} +% This was used in the two preceding macros; it defines +% |\briefhoofd|. +% \begin{macrocode} +\newcommand*\@maakbriefhoofd[2]{\def\briefhoofd{% + \vbox{\hsize=4\refveldbreedte + \hb@xt@\hsize{\Large \normalfont\sffamily #1\strut\hfil} + \hrule + \moveright 3\refveldbreedte\@refveld{\strut #2}{} + \vbox{}}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@voetruimte} +% A box to store the footer in. +% \begin{macrocode} +\newbox\@voetruimte +\setbox\@voetruimte=\hbox{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@voetteller} +% We need to know how many items are placed in the footer. +% \begin{macrocode} +\newcount\@voetteller +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\voetregel} +% |\voetregel| just copies the box |\@voetruimte|. +% \begin{macrocode} +\newcommand*\voetregel{\copy\@voetruimte} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\voetitem} +% A command to add an information field to the footer. +% \begin{macrocode} +\newcommand*\voetitem[2]{% + \advance\@voetteller by 1 + \setbox\@voetruimte\hb@xt@4\refveldbreedte{% + \unhbox\@voetruimte + \ifcase\@voetteller \relax \or \relax \or \hfil \else \hfill + \fi + \@refveld{#1}{#2}\hskip0\p@ \@plus 3\refveldbreedte}} +\let\footitem\voetitem +% \end{macrocode} +% \end{macro} +% +% \subsubsection{The little rules} +% +% \begin{macro}{\streepje} +% A shorthand for one little rule. +% \changes{v2.0q}{1997/09/09}{Make the `streepje's a little smaller} +% \begin{macrocode} +\newcommand*\streepje{\hb@xt@2mm{\rule{2mm}{.1pt}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\streepjes} +% This prints the folding rules +% \begin{macrocode} +\newcommand*\streepjes[1]{% + \vbox to \z@{% +% \end{macrocode} +% We have to backup to a position 13mm below the edge of the paper. +% \begin{macrocode} + \kern-#1\relax + \hb@xt@\textwidth{% +% \end{macrocode} +% Then we can print a rule on the left side of the paper, half way +% down to align for a perforator. +% \begin{macrocode} + \llap{\perfstreepje\kern24mm}\hfill +% \end{macrocode} +% The folding rules are printed on the right hand side of the paper. +% \begin{macrocode} + \rlap{\kern24mm\vouwstreepjes}} + \vss}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\perfstreepje} +% Prints a |\streepje| halfway down the paper. A4 paper is 297 mm +% high; we start from a position 13mm below the edge of the paper. +% Hence the |\kern 135mm|. +% \begin{macrocode} +\newcommand*\perfstreepje{\vtop{\kern\z@ \kern 135mm \streepje}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\vouwstreepjes} +% This prints two folding rules. +% \changes{v2.0q}{1997/09/09}{Change the positioning of the +% `streepje's a little} +% \begin{macrocode} +\newcommand*\vouwstreepjes{% + \vtop{\kern\z@ + \kern 95mm %% 108-13 + \streepje %% denk maar dat dit geen dikte heeft + \kern 45mm %% 155-150 + \streepje}} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Page breaking control} +% +% \begin{macro}{\stopbreaks} +% \begin{macrocode} +\def\stopbreaks{\interlinepenalty \@M + \def\par{\@@par\nobreak}\let\\=\@nobreakcr + \let\vspace\@nobreakvspace} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\nobreakvspace} +% \begin{macro}{\nobreakvspacex} +% \begin{macro}{\nobreakcr} +% \begin{macrocode} +\def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}} + +\def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else + \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi} +% \end{macrocode} +% +% \changes{v2.0p}{1997/03/02}{Added setting of \cs{reserved@e} and +% \cs{reserved@f} as this is now needed for \LaTeX.} +% \begin{macrocode} +\def\@nobreakcr{% + \let\reserved@e\relax + \let\reserved@f\relax + \vadjust{\nobreak}\@ifstar{\@xnewline}{\@xnewline}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\startbreaks} +% \begin{macrocode} +\def\startbreaks{\let\\=\@normalcr + \interlinepenalty 200\def\par{\@@par\penalty 200\relax}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\opening} +% Text is begun with the |\opening| command, whose argument +% generates the salutation, as in +%\begin{verbatim} +% \opening{Dear Henry,} +%\end{verbatim} +% This should produce everything up to and including the `Dear Henry,' +% and a \par command that follows. Since there's a |\vfil| at the +% bottom of every page, it can add vertical fil to position a +% short letter. It should use the following commands: +% \begin{itemize} +% \item |\toname| : name part of 'to' address. +% Will be one line long. +% \item |\toaddress| : address part of 'to' address. +% The lines separated by |\\|. +% \item |\fromname| : name of sender. +% \item |\fromaddress| : argument of current |\address| +% declaration-- +% null if none. Should use standard institutional +% address if null. +% \item |\fromlocation| : argument of current |\location| +% declaration--null if none. +% \item |\telephonenum| : argument of current |\telephone| +% declaration--null if none. +% \end{itemize} +% \begin{macrocode} +\newcommand*\opening[1]{% + \thispagestyle{firstpage}% + \adresveld + \prevdepth=-1000\p@ \vskip-2\p@ %% ???? + \referentieregel + \@dosubject #1\par\nobreak} +% \end{macrocode} +% +% \begin{macro}{\@dosubject} +% This prints the subject of the letter if one was specified. +% \begin{macrocode} +\def\@dosubject{% + \ifx\@empty\@subject + \else + \par\noindent + \parbox[t]{\textwidth} + {\@hangfrom{\refkopfont \betrefttekst \enspace}% + \normalfont\rmfamily\ignorespaces \@subject\strut}% + \par + \fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\afsluiting} +% \begin{macro}{\closing} +% The body of the letter follows, ended by a |\afsluiting| command, +% as in +%\begin{verbatim} +% \afsluiting{Yours truly,} +%\end{verbatim} +% This commands generates the closing matter, and the signature. +% An obvious thing to do is to use a |\parbox| for the closing +% and the signature. Should use the following: +% \begin{itemize} +% \item |\fromsig| : argument of current |\signature| declaration +% or, if null, the |\fromname|. +% \item |\stopbreaks| : a macro that inhibits page breaking. +% \end{itemize} +% \changes{v2.0k}{1995/06/01}{removed a \cs{noindent} which caused an +% anomalous space to appear in the output} +% \begin{macrocode} +\newcommand*\afsluiting[1]{\par\nobreak\vspace{\parskip}% + \stopbreaks + \ifx\@empty\fromsig + \def\ondertekening##1{\def\fromsig{##1}\@afsluiting{#1}}% + \else + \@afsluiting{#1}% + \fi} +\let\closing\afsluiting +\def\open@af{\vtop\bgroup\hsize.3\textwidth \raggedright} +% \end{macrocode} +% The internal command |\@afsluiting| takes care of printing the +% closing text. +% \changes{v2.0j}{1994/12/31}{Don't put an \cs{hbox} of \cs{textwidth} +% inside a \cs{parbox} of .5\cs{textwidth}} +% \changes{v2.0k}{1995/06/02}{inserted the \cs{noindent} which was +% removed from \cs{afsluiting}} +% \begin{macrocode} +\newcommand*\@afsluiting[1]{% + \def\en{\strut\egroup\open@af}% + \let\and\en + \noindent + \parbox{.5\textwidth}{% + \raggedright \ignorespaces #1\\[6\medskipamount]% +% \end{macrocode} +% \changes{v2.0q}{1997/09/09}{Added \cs{leavevmode} to get the +% signatures on one line} +% \begin{macrocode} + \leavevmode\open@af \fromsig \strut\egroup}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\smallskipamount} +% \begin{macro}{\mdeskipamount} +% \begin{macro}{\bigskipamount} +% Of these three, only |\medskipmount| is actually used above. +% \begin{macrocode} +%\smallskipamount=.5\parskip +\medskipamount=\parskip +%\bigskipamount=2\parskip +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\betreft} +% \begin{macro}{\re} +% The command |\betreft| (|\re|) stores the subject of the letter. +% \changes{v2.0b}{1994/06/05}{Can't use (re)newcommand for +% \cs{@subject} as that breaks the test against \cs{@empty}} +% \begin{macrocode} +\newcommand*\betreft[1]{\def\@subject{#1}} +\let\onderwerp\betreft +\let\subject\betreft +\def\@subject{} +\let\re\betreft +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\cc} +% After the |\closing| you can put arbitrary stuff, which is typeset +% with zero |\parindent| and no page breaking. Commands designed +% for use after the closing are: +% \begin{verbatim} +% \cc{Tinker\\Evers\\Chance} +%\end{verbatim} +% which produces:\\ +% \begin{tabular}{ll} +% cc: & Tinker\\ +% & Evers\\ +% & Chance +% \end{tabular}\\ +% Note the obvious use of |\parbox|. +% \changes{v2.0l}{1995/08/10}{replace \cs{reset@font} with +% \cs{normalfont}; remove \cs{rm}} +% \begin{macrocode} +\newcommand*{\cc}[1]{\par\noindent + \parbox[t]{\textwidth}{\@hangfrom{\normalfont\ccname: }% + \ignorespaces #1\strut}\par} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bijlage} +% \begin{macro}{\bijlagen} +% \begin{macro}{\encl} +%\begin{verbatim} +% \bijlagen{Foo(2)\\Bar} +%\end{verbatim} +% which produces:\\ +% \begin{tabular}{ll} +% bijlagen: & Foo(2)\\ +% & Bar +% \end{tabular} +% \changes{v2.0l}{1995/08/10}{replace \cs{reset@font} with +% \cs{normalfont}; remove \cs{rm}} +% \begin{macrocode} +\newcommand*{\bijlage}[1]{% + \par\noindent + \parbox[t]{\textwidth}{\@hangfrom{\normalfont\bijlagetekst\ }% + \ignorespaces #1\strut}\par} +\newcommand*{\bijlagen}[1]{% + \par\noindent + \parbox[t]{\textwidth}{\@hangfrom{\normalfont\bijlagentekst\ }% + \ignorespaces #1\strut}\par} +\let\encl\bijlagen +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ps} +% The only thing |\ps| needs to do is call |\startbreaks|, +% which allows page breaking again. +% \begin{macrocode} +\def\ps{\par\startbreaks} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\stopletter} +% The |\stopletter| command is called by |\endletter| to do the +% following: +% \begin{itemize} +% \item Add any desired fil or other material at the end of the +% letter. +% \item Define |\returnaddress| to be the return address for the +% mailing label. +% More precisely, it is the first argument of the |\mlabel| +% command described below. It should be defined to null if the +% return address doesn't appear on the labels. Any command, +% other than |\\|, that should not be expanded until the |\mlabel| +% command is actually executed must be preceded by |\protect|. +% Whenever possible, |\protect| commands in the definition of +% |\returnaddress|---it's much more efficient that way. In +% particular, when the standard return address is used, you +% should define |\returnaddress| to something like +% |\protect\standardreturnaddress|. +% \end{itemize} +% \begin{macrocode} +\def\stopletter{} +% \end{macrocode} +% \end{macro} +% +% \subsection{Customizing the labels} +% +% Commands for generating the labels are put on the .AUX file, which is +% read in and processed by the |\end{document}| command. You have to +% define the following two commands: +% \begin{itemize} +% \item +% |\startlabels| : Should reset the page layout parameters if +% necessary. +% \item +% |\mlabel|\marg{return address}\marg{to adress} : Command to +% generate a single label. +% \end{itemize} +% +% +% +% \begin{macro}{\returnaddress} +% \begin{macrocode} +\def\returnaddress{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\labelcount} +% \begin{macrocode} +\newcount\labelcount +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\startlabels} +% The following |\startlabels| command sets things up for producing +% labels in two columns of five 2" $\times$ 4-1/4" labels each, +% suitable for reproducing onto Avery brand number 5352 address +% labels. +% \changes{v2.0l}{1995/08/10}{changed value of \cs{columnsep} by 1pt} +% \begin{macrocode} +\newcommand*{\startlabels}{\labelcount\z@ + \pagestyle{empty}% + \let\@texttop\relax + \topmargin -50\p@ + \headsep \z@ + \oddsidemargin -35\p@ + \evensidemargin -35\p@ + \textheight 10in + \@colht\textheight \@colroom\textheight \vsize\textheight + \textwidth 550\p@ + \columnsep 26\p@ + \ifcase \@ptsize\relax + \normalsize + \or + \small + \or + \footnotesize + \fi + \baselineskip \z@ + \lineskip \z@ + \boxmaxdepth \z@ + \parindent \z@ + \twocolumn\relax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@startlabels} +% |\@startlabels| is the command name that is written to the |.aux| +% file. It is a no-op at first, and defined to be the same as +% |\startlabels| in the |\begin{document}| hook. +% \begin{macrocode} +\let\@startlabels=\relax +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\mlabel} +% This command prints an address label; it is used when the user +% specified |\makelabels| in the preamble of his document. The +% command |\mlabel| takes two arguments; the second argument is +% supposed to be the address; the first argument can be used to +% print a return address. In this document class we ignore the +% first argument. Also the labels are supposed to be 2~inch high +% and 3.6~inch wide. When your address labels have a different +% width you will have to defined your own |\mlabel| command. +% \changes{v2.0g}{1994/12/23}{Redefined \cs{mlabel} to not use the +% \cs{setbox} primitive} +% \changes{v2.0l}{1995/08/10}{changed width of the labels slightly to +% prevent \LaTeX\ stuffing two on each line} +% \begin{macrocode} +\newcommand*{\mlabel}[2]{% + \parbox[b][2in][c]{262\p@}{\strut\ignorespaces #2}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@mlabel} +% |\@mlabel| is written to the \file{.aux} file in place of +% |\mlabel|. That allows to define it as a no-op per default, and +% activate it in the |\begin{document}| hook. +% \begin{macrocode} +\let\@mlabel=\@gobbletwo +% \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 +% \texttt{K}th level list, the command |\@listK| is called, where +% `\texttt{K'} denotes `\texttt{i}', `\texttt{ii}', ... , +% `\texttt{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 {2.5em} +% \end{macrocode} +% The following three are calculated so that they are larger than +% the sum of |\labelsep| and the width of the default labels (which +% are `(m)', `vii.' and `M.'). +% \begin{macrocode} +\setlength\leftmarginii {2.2em} +\setlength\leftmarginiii {1.87em} +\setlength\leftmarginiv {1.7em} +\setlength\leftmarginv {1em} +\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{0\p@} +% \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{.4em} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@beginparpenalty} +% \begin{macro}{\@endparpenalty} +% These penalties are inserted before and after a list or paragraph +% environment. They are set to a bonus value to encourage page +% breaking at these points. +% \begin{macro}{\@itempenalty} +% This penalty is inserted between list items. +% \begin{macrocode} +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@listI} +% \begin{macro}{\@listi} +% |\@listI| defines top level and |\@listi| values of +% |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep| +% +% These values have been taken from the ones in the document class +% \cls{artikel3}. +% \begin{macrocode} +\def\@listI{\leftmargin\leftmargini + \labelsep.5em% + \labelwidth\leftmargin + \advance\labelwidth-\labelsep + \topsep .5\parskip \@plus \p@ + \parsep \z@ + \itemsep\parsep} +\let\@listi\@listI +% \end{macrocode} +% We have to initialise these parameters. +% \begin{macrocode} +\@listi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@listii} +% \begin{macro}{\@listiii} +% \begin{macro}{\@listiv} +% \begin{macro}{\@listv} +% \begin{macro}{\@listvi} +% Here are the same macros for the higher level lists. +% \begin{macrocode} +\def\@listii {\leftmargin\leftmarginii + \labelsep .5em% + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep -.5\parskip \@plus \p@ + \parsep \z@ + \itemsep\parsep} +\def\@listiii{\leftmargin\leftmarginiii + \labelsep .5em% + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep -.5\parskip \@plus \p@ + \parsep \z@ + \partopsep \z@ + \itemsep \topsep} +\def\@listiv {\leftmargin\leftmarginiv + \labelsep .5em% + \labelwidth\leftmarginiv + \advance\labelwidth-\labelsep + \topsep -.5\parskip \@plus \p@} +\def\@listv {\leftmargin\leftmarginv + \labelsep .5em% + \labelwidth\leftmarginv + \advance\labelwidth-\labelsep + \topsep -.5\parskip \@plus \p@} +\def\@listvi {\leftmargin\leftmarginvi + \labelsep .5em% + \labelwidth\leftmarginvi + \advance\labelwidth-\labelsep + \topsep -.5\parskip \@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 in the \LaTeX{} kernel +% (\file{ltlists.dtx}), but their representation is changed here. +% +% \begin{macrocode} +\renewcommand*{\theenumi}{\@arabic\c@enumi} +\renewcommand*{\theenumii}{\@alph\c@enumii} +\renewcommand*{\theenumiii}{\@roman\c@enumiii} +\renewcommand*{\theenumiv}{\@Alph\c@enumiv} +% \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} +% +% \subsubsection{Itemize} +% +% \begin{macro}{\labelitemi} +% \begin{macro}{\labelitemii} +% \begin{macro}{\labelitemiii} +% \begin{macro}{\labelitemiv} +% Itemization is controlled by |\labelitemi|, |\labelitemii|, +% |\labelitemiii|, and |\labelitemiv|, which define the labels of +% the various itemization levels: the symbols used are bullet, bold +% en-dash, asterisk and centred dot. +% +% \changes{v2.0d}{1994/07/11}{renamed \cs{labelitemiiii} to +% \cs{labelitemiii}} +% \changes{v2.0o}{1996/09/23}{Changed \texttt{-{}-} to \cs{textendash} +% following \file{classes.dtx}} +% \changes{v2.0o}{1996/09/23}{Did similar for the bullet and centered +% dot.} +% \changes{v2.0p}{1997/03/02}{Now also \cs{textasteriskcentered}} +% \begin{macrocode} +\newcommand*{\labelitemi}{\textbullet} +\newcommand*{\labelitemii}{\normalfont\bfseries \textendash} +\newcommand*{\labelitemiii}{\textasteriskcentered} +\newcommand*{\labelitemiv}{\textperiodcentered} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Description} +% +% \begin{environment}{description} +% The description environment is defined here -- while the itemize +% and enumerate environments are defined in the \LaTeX{} kernel +% (\file{ltlists.dtx}). +% +% \begin{macrocode} +\newenvironment{description} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + {\endlist} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\descriptionlabel} +% To change the formatting of the label, you must redefine +% |\descriptionlabel|. +% +% \begin{macrocode} +\newcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont\bfseries #1} +% \end{macrocode} +% \end{macro} +% +% \subsection{Defining new environments} +% +% \subsubsection{Verse} +% +% \begin{environment}{verse} +% The verse environment is defined by making clever use of the +% list environment's parameters. The user types |\\| to end a line. +% This is implemented by |\let|'ing |\\| equal |\@centercr|. +% +% \begin{macrocode} +\newenvironment{verse} + {\let\\=\@centercr + \list{}{\setlength\itemsep{\z@}% + \setlength\itemindent{-15\p@}% + \setlength\listparindent{\itemindent}% + \setlength\rightmargin{\leftmargin}% + \addtolength\leftmargin{15\p@}}% + \item[]} + {\endlist} +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Quotation} +% +% \begin{environment}{quotation} +% The quotation environment is also defined by making clever use of +% the list environment's parameters. The lines in the environment +% are set smaller than |\textwidth|. The first line of a paragraph +% inside this environment is indented. +% +% \begin{macrocode} +\newenvironment{quotation} + {\list{}{\setlength\listparindent{1.5em}% + \setlength\itemindent{\listparindent}% + \setlength\rightmargin{\leftmargin}}% + \item[]} + {\endlist} +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Quote} +% +% \begin{environment}{quote} +% The quote environment is like the quotation environment except +% that paragraphs are not indented. +% +% \begin{macrocode} +\newenvironment{quote} + {\list{}{\setlength\rightmargin{\leftmargin}}% + \item[]} + {\endlist} +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Theorem} +% +% This document class does not define it's own theorem environemts, +% the defaults, supplied by \LaTeX{} kernel (\file{ltthm.dtx}) are +% available. +% +% \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 vertical 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. In the current styles, it does +% nothing. +% \end{macro} +% +% \begin{macro}{\@mpfootins} +% Minipages have their own footnotes; |\skip||\@mpfootins| plays +% same r\^ole for footnotes in a minipage as |\skip||\footins| does +% for ordinary footnotes. +% +% \begin{macrocode} +\skip\@mpfootins = \skip\footins +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Framed boxes} +% +% \begin{macro}{\fboxsep} +% The space left by |\fbox| and |\framebox| between the box and the +% text in it. +% \begin{macro}{\fboxrule} +% The width of the rules in the box made by |\fbox| and |\framebox|. +% \begin{macrocode} +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{Equation and eqnarray} +% +% \begin{macro}{\theequation} +% The equation counter will be typeset using arabic numbers. +% \begin{macrocode} +\renewcommand*{\theequation}{\@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{Font changing} +% +% Here we supply the declarative font changing commands that were +% common in \LaTeX\ version 2.09 and earlier. These commands work +% in text mode \emph{and} in math mode. They are provided for +% compatiblity, but one should start using the |\text...| and +% |\math...| commands instead. These commands are redefined using +% |\@renewfontswitch|, a command with three arguments: the user +% command to be defined; \LaTeX\ commands to execute in text mode +% and \LaTeX\ commands to execute in math mode. +% +% \begin{macro}{\rm} +% \begin{macro}{\tt} +% \begin{macro}{\sf} +% The commands to change the family. +% \begin{macrocode} +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\bf} +% The command to change to the bold series. One should use +% |\mdseries| to explicitly switch back to medium series. +% \begin{macrocode} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sl} +% \begin{macro}{\it} +% \begin{macro}{\sc} +% +% And the commands to change the shape of the font. The slanted and +% small caps shapes are not available by default as math alphabets, +% so those changes do nothing in math mode. One should use +% |\upshape| to explicitly change back to the upright shape. +% \begin{macrocode} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\relax} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\relax} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\cal} +% \begin{macro}{\mit} +% +% The commands |\cal| and |\mit| should only be used in math mode, +% outside math mode they have no effect. Currently the New Font +% Selection Scheme defines these commands to generate warning +% messages. Therefore we have to define them `by hand'. +% \changes{v2.0g}{1994/12/23}{Now define \cs{cal} and \cs{mit} using +% \cs{DeclareRobustCommand*}} +% \begin{macrocode} +\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}} +\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Footnotes} +% +% \begin{macro}{\footnoterule} +% Usually, footnotes are separated from the main body of the text +% by a small rule. This rule is drawn by the macro |\footnoterule|. +% We have to make sure that the rule takes no vertical space (see +% \file{plain.tex}) so we compensate for the natural heigth of the +% rule of 0.4pt by adding the right amount of vertical skip. +% +% To prevent the rule from colliding with the footnote we first add +% a little negative vertical skip, then we put the rule and make +% sure we end up at the same point where we begun this operation. +% \begin{macrocode} +\renewcommand*{\footnoterule}{% + \kern-\p@ + \hrule \@width .4\columnwidth + \kern .6\p@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c@footnote} +% Footnotes are numbered within chapters in the report and book +% document styles. +% \begin{macrocode} +% \newcounter{footnote} +% \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 |\@makefnmark| to produce +% the mark of the footnote. The macro |\@makefntext| is called when +% effectively inside a |\parbox| of width |\columnwidth| (i.e., +% with |\hsize| = |\columnwidth|). +% +% An example of what can be achieved is given by the following piece +% of \TeX\ code. +% \begin{verbatim} +% \long\def\@makefntext#1{% +% \@setpar{\@@par +% \@tempdima = \hsize +% \advance\@tempdima-10pt +% \parshape \@ne 10pt \@tempdima}% +% \par +% \parindent 1em\noindent +% \hb@xt@\z@{\hss\@makefnmark}#1} +% \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 a paragraph, and 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. +% +% \changes{v2.0q}{1997/09/08}{As we want to have different appearances +% of the footnotemarker in the text and in the footnotes, we can't +% use \cs{@makefnmark} here} +% \begin{macrocode} +\long\def\@makefntext#1{% + \noindent\hb@xt@\leftmargini{\normalfont\@thefnmark.\hfil}#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|. +% \changes{v2.0l}{1995/08/10}{No longer use hidden math} +% \changes{v2.0q}{1997/09/08}{Use the default definition for +% \cs{@makefnmark}} +% \begin{macrocode} +% \def\@makefnmark{\hb@xt@\leftmargini{\normalfont\@thefnmark.\hfil}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Words} +% +% This document class supports a number of languages. All words +% that will be printed byu the class code are stored in commands +% which can be redefined if you want to use a different language. +% +% \begin{macro}{\dutchbrief} +% This stores dutch strings. +% \begin{macrocode} +\newcommand*{\dutchbrief}{% + \def\uwbrieftekst{Uw brief van} + \def\uwkenmerktekst{Uw kenmerk} + \def\onskenmerktekst{Ons kenmerk} + \def\datumtekst{Datum} + \def\geadresseerdetekst{Geadresseerde} + \def\bladnummertekst{Bladnummer} + \def\vandaag{\number\day~\ifcase\month\or + januari\or februari\or maart\or april\or mei\or juni\or juli\or + augustus\or september\or oktober\or november\or december\fi + \space \number\year} + \def\betrefttekst{Onderwerp:} + \def\ccname{cc} + \def\bijlagetekst{Bijlage:} + \def\bijlagentekst{Bijlagen:} + \def\telefoontekst{telefoon}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\englishbrief} +% This stores English strings. +% \changes{v2.0i}{1994/12/30}{Repaired typo} +% \begin{macrocode} +\newcommand*{\englishbrief}{% + \def\uwbrieftekst{Your letter of} + \def\uwkenmerktekst{Your reference} + \def\onskenmerktekst{Our reference} + \def\datumtekst{Date} + \def\geadresseerdetekst{To} + \def\bladnummertekst{Page} + \def\vandaag{\ifcase\day\or + 1st\or 2nd\or 3rd\or 4th\or 5th\or + 6th\or 7th\or 8th\or 9th\or 10th\or + 11th\or 12th\or 13th\or 14th\or 15th\or + 16th\or 17th\or 18th\or 19th\or 20th\or + 21st\or 22nd\or 23rd\or 24th\or 25th\or + 26th\or 27th\or 28th\or 29th\or 30th\or + 31st\fi~\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\year} + \def\betrefttekst{Re:} + \def\ccname{cc} + \def\bijlagetekst{Enclosure:} + \def\bijlagentekst{Enclosures:} + \def\telefoontekst{telephone}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\americanbrief} +% This stores American english strings +% \begin{macrocode} +\newcommand*{\americanbrief}{% + \def\uwbrieftekst{Your letter of} + \def\uwkenmerktekst{Your reference} + \def\onskenmerktekst{Our reference} + \def\datumtekst{Date} + \def\geadresseerdetekst{To} + \def\bladnummertekst{Page} + \def\vandaag{\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} + \def\betrefttekst{Re:} + \def\ccname{cc} + \def\bijlagetekst{Enclosure:} + \def\bijlagentekst{Enclosures:} + \def\telefoontekst{telephone}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\germanbrief} +% This stores the German versions of the strings. +% \begin{macrocode} +\newcommand*{\germanbrief}{% + \def\uwbrieftekst{Ihr Brief vom} + \def\uwkenmerktekst{Ihr Zeichen} + \def\onskenmerktekst{Unser Zeichen} + \def\datumtekst{Datum} + \def\geadresseerdetekst{An} + \def\bladnummertekst{Seite} + \def\vandaag{\number\day.~\ifcase\month\or + Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or + Juli\or August\or September\or Oktober\or November\or Dezember\fi + \space\number\year} + \def\betrefttekst{Betrifft:} + \def\ccname{Kopien an} + \def\bijlagetekst{Anlage:} + \def\bijlagentekst{Anlagen:} + \def\telefoontekst{Telefon}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\frenchbrief} +% And finally to store the french strings +% \begin{macrocode} +\newcommand*{\frenchbrief}{% + \def\uwbrieftekst{Votre lettre du} + \def\uwkenmerktekst{Vos r\'ef\'erences:} + \def\onskenmerktekst{Nos r\'ef\'erences:} + \def\datumtekst{Date:} + \def\geadresseerdetekst{\`A l'attention de} + \def\bladnummertekst{Page} + \def\vandaag{\number\day\ifnum\day=1$^{er}$\fi + ~\ifcase\month\or janvier\or + f\'evrier\or mars\or avril\or mai\or juin\or + juillet\or ao\^ut\or septembre\or octobre\or + novembre\or d\'ecembre\fi \space \number\year} + \def\betrefttekst{Objet:} + \def\ccname{Copie \`a} + \def\bijlagetekst{Pi\`ece jointe:} + \def\bijlagentekst{Pi\`eces jointes:} + \def\telefoontekst{T\'el\'ephone:}} +% \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{headings} pages in this document class by +% default. We use arabic pagenumbers. +% \begin{macrocode} +\pagestyle{headings} +\pagenumbering{arabic} +% \end{macrocode} +% +% \subsection{Single or double sided printing} +% +% We don't try to make each page as long as all the others. +% \begin{macrocode} +\raggedbottom +% \end{macrocode} +% +% \begin{macro}{\@texttop} +% The document class \cls{letter} sets |\@texttop| to |\vskip| 0pt +% \texttt{plus} .00006fil on the first page of a letter, which +% centers a short letter on the page. This class however doesn't +% want the letter to be centered on the page. +% \begin{macrocode} +\let\@texttop\relax +% \end{macrocode} +% \end{macro} +% +% We always start in one column mode. +% \begin{macrocode} +\onecolumn +% +% \end{macrocode} +% +% +% +% \Finale +% +\endinput diff --git a/macros/latex/contrib/ntgclass/brief.pdf b/macros/latex/contrib/ntgclass/brief.pdf new file mode 100644 index 0000000000..2237d5783a Binary files /dev/null and b/macros/latex/contrib/ntgclass/brief.pdf differ diff --git a/macros/latex/contrib/ntgclass/brief.tex b/macros/latex/contrib/ntgclass/brief.tex new file mode 100644 index 0000000000..e05f3445a0 --- /dev/null +++ b/macros/latex/contrib/ntgclass/brief.tex @@ -0,0 +1,229 @@ +% \iffalse meta-comment +% +% % \iffalse meta-comment +% % +% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. +% % All rights reserved. +% % +% % This file is part of the NTG document classes distribution +% % ---------------------------------------------------------- +% % +% % It may be distributed and/or modified under the +% % conditions of the LaTeX Project Public License, either version 1.3 +% % of this license or (at your option) any later version. +% % The latest version of this license is in +% % http://www.latex-project.org/lppl.txt +% % and version 1.3 or later is part of all distributions of LaTeX +% % version 2003/12/01 or later. +% % +% % This work has the LPPL maintenance status "maintained". +% % +% % The Current Maintainer of this work is Johannes Braams. +% % +% % The list of all files belonging to the NTG document classes +% % distribution is given in the file `manifest.txt. +% % +% % The list of derived (unpacked) files belonging to the distribution +% % and covered by LPPL is defined by the unpacking scripts (with +% % extension .ins) which are part of the distribution. +% % \fi +% \fi +\documentclass{brief} %% er is een optie 'adresrechts' + +%\maaketiketten %% werkt nog niet naar behoren + +\begin{document} + +%%%%%%%%%%%%%%%%%%%%%%%%%%% briefhoofd %%%%%%%%%%%%%%%%%%%%%%%%%% +% De gebruiker wordt geacht zijn eigen \briefhoofd te definieren, +% of voorgedrukt briefpapier te gebruiken, +% maar hij kan een redelijk standaard hoofd aangemeten krijgen +% door \maakbriefhoofd. +\maakbriefhoofd{WG 13}{Werkgroep 13\\ de De Facto Standaard + \\ in Nederlandse \TeX pertise} + +% De PTT staat toe dat boven in het venster klein (5 a 6 punt) +% een antwoordadres gedrukt wordt. Het hoeft natuurlijk niet. +% En svp alleen voor binnenlands gebruik. +\antwoordadres{Toernooiveld 5, \\ 6525 ED Nijmegen} + +%%%%%%%%%%%%%%%%%%% de referentieregel %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\uwbriefvan{13 januari 1988} % vier gegevens in de referentieregels +\datum{8 october 1989} % hier mist alleen de 'uwkenmerk' +\onskenmerk{VE-NTG 002} % volgorde en plaatsing ligt vast +% datum wordt automatisch ingevuld wanneer niet gespecificeerd + +%%%%%%%%%%%%%%%%%%%%%%%%%%% voetregel %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% maximaal vier gegevens, de gebruiker specificeert zowel het +% kopje, als wat er onder komt. Gegevens worden geplaatst in de +% opgegeven volgorde. +\voetitem{fax:}{12345 abc} +\voetitem{telefoon:}{080-613169} +\voetitem{telefoon \\ priv\'e:}{080-448664} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% de brief zelf %%%%%%%%%%%%%%%%%%%%%%%%%% +% bijna zoals in 'letter.sty', alleen zijn de commando's +% nu in de nederlandse taal. +\begin{brief}{Werkgroep 13\\Nederlandse \TeX\ groep\\Nederland} + +\betreft{nieuwe briefstijl} +\opening{Hallo volkjes,} + +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. + + + +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. + +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. + +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. + +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. + +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. + +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. + +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. +Dit is een test om te zien hoe ver ik gevorderd ben met het +autentieke Nederlandse briefontwerp. +Het zal waarschijnlijk nog wel een tijdje duren voor er +echt iets moois uitkomt. Sprak hij bescheiden. + +\ondertekening{Victor Eijkhout \\ co\"ordinator \en Johannes Braams \\ lid + \en Nico Poppelier \\ lid} +\afsluiting{Hoogachtend,\\ Werkgroep 13} + +\bijlagen{De broncode van deze brief} +\cc{Stichting `de Kettingbrief'} +\ps{PS: panta rei} + + +\end{brief} + +%\end{document} %% hier stoppen, behalve als je 'maaketiketten' + %% wil testen. + +\onskenmerk{VE-JD1} +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\onskenmerk{VE-JD2} +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\end{document} + +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\begin{brief}{Jan Doedel\\ klinkhamerdreef 37\\ Duckstad} +\opening{Hallo,} daar ben ik dan \ondertekening{Victor}\afsluiting{doei} +\end{brief} + +\end{document} diff --git a/macros/latex/contrib/ntgclass/briefdoc.pdf b/macros/latex/contrib/ntgclass/briefdoc.pdf new file mode 100644 index 0000000000..558ce17b42 Binary files /dev/null and b/macros/latex/contrib/ntgclass/briefdoc.pdf differ diff --git a/macros/latex/contrib/ntgclass/briefdoc.tex b/macros/latex/contrib/ntgclass/briefdoc.tex new file mode 100644 index 0000000000..bf1c38be08 --- /dev/null +++ b/macros/latex/contrib/ntgclass/briefdoc.tex @@ -0,0 +1,306 @@ +% \iffalse meta-comment +% +% % \iffalse meta-comment +% % +% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. +% % All rights reserved. +% % +% % This file is part of the NTG document classes distribution +% % ---------------------------------------------------------- +% % +% % It may be distributed and/or modified under the +% % conditions of the LaTeX Project Public License, either version 1.3 +% % of this license or (at your option) any later version. +% % The latest version of this license is in +% % http://www.latex-project.org/lppl.txt +% % and version 1.3 or later is part of all distributions of LaTeX +% % version 2003/12/01 or later. +% % +% % This work has the LPPL maintenance status "maintained". +% % +% % The Current Maintainer of this work is Johannes Braams. +% % +% % The list of all files belonging to the NTG document classes +% % distribution is given in the file `manifest.txt. +% % +% % The list of derived (unpacked) files belonging to the distribution +% % and covered by LPPL is defined by the unpacking scripts (with +% % extension .ins) which are part of the distribution. +% % \fi +% \fi +\documentclass[a4paper,10pt]{artikel1} +\usepackage[dutch]{babel} + +\begin{document} +\title{De Nederlandse Briefstijl} +\author{Victor Eijkhout} +\date{4 december 1991} +\maketitle + +\begin{abstract} + Een bescheiden handleiding voor de Nederlandse briefstijl, met + opmerkingen over het wat, hoe en waarom. +\end{abstract} + +\section{Verantwoording} + +De Nederlandse \LaTeX-stijl `brief' conformeert zich aan +NEN-normen\footnote{Mijn zeer grote dank aan Jan Grootenhuis die mijn + aandacht vestigde op het bestaan van de normbladen.} 1026 voor +briefpapier, 3162 voor het indelen van documenten, 1025 voor +enveloppen, en 3516 voor het ontwerp van formulieren. + +Briefontwerp is controversieel. Iedereen heeft een smaak, en met name +bij briefpapier is die vaak zeer uitgesproken. Ik wil beklemtonen dat +ik bij de implementatie van de briefstijl bijna nergens mijn smaak +nodig heb gehad. Dankzij de NEN-normen is het ontwerp van briefpapier +een zaak van exacte wetenschap, niet van schone kunsten. + +Deze stijl is redelijk incompatibel met de \LaTeX\ `letter' stijl. +Hij is in bescheiden mate met opties in te stellen, en de +sleutelwoorden kunnen uit een aantal talen gekozen worden. Alle +teksten zijn verder geparametriseerd. Het is dus goed mogelijk +stijlopties te maken om deze stijl aan een specifieke omgeving aan te +passen. + +Als de gebruiker geen gebruik maakt van een voorgedrukt briefhoofd, +kan hij zijn eigen briefhoofd in \LaTeX\ implementeren, of door de +stijl een briefhoofd geleverd krijgen. Het ontwerp van dit briefhoofd +is de enige plaats waar mijn smaak zich heeft doen gelden, maar zelfs +dit ontwerp heb ik gejat uit een NEN-norm. + +Opmerking: zeker bij het gebruik van vensterenveloppen is het voor de +briefstijl van cruciaal belang dat de gebruikte printer goed afgesteld +staat. Dit valt te controleren aan de hand van het adres: dit dient op +33mm van de linker kantlijn te staan, terwijl de `baseline' van de +eerste regel zich 59mm onder de bovenrand van het papier dient te +bevinden. + +\section{Velden van het briefpapier} + +Deze sectie behandelt de indeling van brieven aan de hand van +NEN-norm~1026. + +\subsection{Marges} + +Alle marges conformeren zich aan NEN-1026, behalve de rechtermarge die +ik voor een evenwichtiger bladverdeling gelijk gemaakt heb aan de +linkermarge. Met een gezette brief ziet dit er beduidend beter uit. + +De linkermarge is 33 millimeter; er zijn nog geen voorzieningen voor +de versmalde marge van 20 millimeter, die voor facturen beter is. Dit +zal misschien ooit een optie worden. + +Om aan te sluiten by traditionele getypte briefopmaak is `raggedright' +bij verstek ingeschakeld. Aangezien briefhoofd, referentieregels, en +voetregel de brief vrij breed kunnen maken, is de corpsgrootte bij +verstek 11-punt. 10~en~12 zijn opties. + +\subsection{Briefhoofd} + +Het moeilijkste deel van een brief, en de voornaamste plek waar de +ontwerper van briefpapier zijn creativiteit kwijt kan is het +briefhoofd. In de huidige stijl heeft de gebruiker drie +mogelijkheden. + +Een. Hij gebruikt voorgedrukt briefpapier. Als dit zich een beetje aan +NEN-normen houdt is er verder niets aan de hand. + +Twee. De gebruiker kan zelf een macro \verb.\briefhoofd. schrijven. +Als dit binnen de hoogte van \verb.\@headheight. blijft, is er niets +aan de hand; voorkeursbreedte is \verb.4\refveldbreedte., dat wil +zeggen, de breedte van de referentieregel. + +Drie. Er is een macro van twee argumenten, `maakbriefhoofd', die een +briefhoofd levert dat ge"inspireerd is op de voorbeeldbrief in +NEN-1026. Voorbeeld: +\begin{verbatim} +\maakbriefhoofd{WG13}{Werkgroep 13 \\ + Mathematisch Instituut \\ + Toernooiveld 5 \\ + 6525 ED Nijmegen} +\end{verbatim} +Het eerste argument levert een tekst op die links boven een verticale +lijn gezet wordt. Het links aanlijnen gebeurt met \verb.\hfil., dus +met een \verb.\hfill. in het argument kan een deel van het hoofd naar +rechts worden geschoven. + +Het tweede argument van `maakbriefhoofd' wordt als een blokje tekst +rechts onder de lijn in het briefhoofd gehangen. In principe is dit +argument er voor het adres van de afzender. Er is echter een +mogelijkheid het antwoordadres in het adresveld op te nemen, zie hier +onder. In het briefhoofd kan dan een omschrijving als `adviesburo +voor gespecialiseerde algemeenheden' staan. + +Het tekstblok in het tweede argument lijnt links met de datum en het +vierde voetitem (zie onder), en blijft idealiter binnen de marge van +de pagina. Er worden echter geen `overfull box' meldingen gegeven als +de tekst te breed is. + +Er is een `sterretje'-versie van `maakbriefhoofd'; deze geeft op de +vervolgbladen alleen het eerste argument plus de streep. Dat maakt de +kop van de pagina wat minder zwaar. + +\subsection{Adresveld} + +Het adresveld wordt zodanig geplaatst dat het in het venster van een +vensterenvelop zichtbaar is als het venster 5cm onder de bovenrand van +de envelop begint. Omdat er zowel vensterenveloppen zijn met het +venster links als rechts, is er een optie \texttt{adresrechts} die het +adresveld rechts plaatst. De voorkeurspositie is echter links; er +blijft dan namelijk rechts een `ontvangerruimte' waar de geadresseerde +stempels (`binnen gekomen dd.') en dergelijke kan zetten. + +Het adresveld komt op dezelfde manier tot stand als in de oude +`letter' stijl: de gebruiker geeft +\begin{verbatim} +\begin{brief}{Jan \TeX er\\ + Overfullplein 10000 \\ + Baselinestad} +\end{verbatim} +in, en hieruit destilleert \LaTeX\ de naam en het verdere adres van de +geadresseerde. De naam komt nog voor op de vervolgbladen. + +Het schijnt van de PTT te mogen dat er (helemaal boven) in het ruitje +van de vensterenvelop een antwoordadres wordt opgenomen, als dat maar +gebeurt zodanig dat het geen verwarring schept met het adres. Er is +een commando \verb.\antwoordadres. dat een adres als argument +accepteert, met de regels gescheiden door~\verb.\\.. Voorbeeld: +\begin{verbatim} +\maakbriefhoofd{WG13}{De de facto standaard \\ + in Vaderlandse \\ + \TeX verwerking} +\antwoordadres{Mathematisch Instituut \\ + Toernooiveld 5 \\ + 6525 ED Nijmegen} +\end{verbatim} + + +\subsection{De Referentieregels} + +Direct onder het adresveld volgt ruimte voor gegevens van de +geadresseerde, `Uw brief van' en `Uw kenmerk', en van afzender, `Ons +kenmerk' en `Datum'. + +Voor deze referentiegegevens staan de gebruiker de commando's +\verb.\uwbriefvan., \verb.\uwkenmerk., \verb.\onskenmerk., en +\verb.\datum. ter beschikking. Deze macro's hebben elk \'e\'en +argument tussen accolades. De datum wordt automatisch ingevuld; niet +ingevulde gegevens worden niet opgenomen. + +De teksten die hier in de kopjes staan worden in eerste instantie door +de taalopties bepaald. Verstekwaarde is natuurlijk `nederlands', maar +er zijn `engels', `amerikaans', en `duits' beschikbaar. Ik houd me +aanbevolen voor correcte terminologie in andere talen; enkele fouten +in de Duitse termen zijn op aanwijzing van Marc van Woerkom verbeterd. +Wie geeft me de Franse termen? + +De teksten in de referentieregel zijn waardes van de macros\\ +\verb.\uwbriefvantekst., \verb.\uwkenmerktekst., +\verb.\onskenmerktekst., en \verb.\datumtekst.. Het is dus mogelijk +`doorkiesnummer' in plaats van `ons kenmerk' te krijgen door deze +tekst als `onskernmerktekst' te declareren, bij voorbeeld met +\verb.\renewcommand. in het preamble. + + +\subsection{De tekst van de brief} + +Hier hoeft op deze plaats niets over gezegd te worden, anders dan dat +de aanhef, net als in de `letter' stijl met \verb.\opening. gebeurt. +Er is een `betreft' commando. + +Ook de afsluiting staat in het \LaTeX-boek beschreven, maar de +commandonamen zijn Nederlands geworden: `ondertekening' (was +`signature'), `afsluiting' (was `closing'), `ps', en `cc' Dit is +Engels, maar bijna niemand weet wat het betekent. Verder is er zowel +een `bijlage' als `bijlagen' (was~`encl'). + +\subsection{Ondertekening} + +Hier is iets meer vrijheid dan in de standaard briefstijl. Commando's +`ondertekening' en `afsluiting' kunnen in willekeurig welke volgorde +gegeven worden. + +Meervoudige auteurs in de ondertekening zijn mogelijk: +\begin{verbatim} +\ondertekening{Ik \\ directeur \en + Jij \\ adjunct \\ (oprichter)} +\end{verbatim} +geeft twee naast elkaar geplaatste handtekeningen. + +\subsection{Voetruimte} + +`In de voetruimte' (ik citeer NEN-1026) `komen die gegevens van de +afzender die niet reeds in het briefhoofd zijn vermeld'. De keuze +hiervan wordt aan de gebruiker overgelaten. Enkele suggesties zijn: +kantooradres, telefoonnummer van de centrale, faxnummer, +inschrijvingsnummer en -plaats in het handelsregister. + +Er kunnen maximaal vier voetitems zijn. Items verschijnen op de +pagina in de volgorder waarin de gebruiker ze gedeclareerd heeft. Bij +twee items of meer is het laatste rechtsgeplaatst. Goeie truc. + +Omdat hier beduidend meer keuze is dan bij de referentieregel, moet de +gebruiker zelf het hoofdje en de daaronder geplaatste tekst van items +in de voetregel voorschrijven. De macro van twee argumenten +\verb.\voetitem. staat hem/haar daartoe ter beschikking. Elke van de +argumenten kan meer dan \'e\'en regel lang zijn, gebruik~\verb.\\.. +Voorbeeld: +\begin{verbatim} +\voetitem{fax:}{12345 Winat nl} +\voetitem{telefoon:}{080-613169\\ bgg: 612986} +\voetitem{telefoon\\ priv\'e:}{080-448664} +\end{verbatim} + +\subsection{Hulplijntjes; vouwstreepjes} + +Door een optie `streepjes' in te schakelen, is het briefpapier van +hulpstreepjes te voorzien. + +Volgens NEN-1026 heeft briefpapier een instelstreepje halverwege, niet +voor vouwen in twee"en zoals hele volksstammen denken, maar voor het +aanlijnen van de perforator. Aan de rechterzijde van het blad zijn +twee vouwstreepjes, een voor vouwen in drie"en, en een voor vouwen in +twee"en. Geen van beide bevindt zich op de helft of een-derde van de +papierhoogte. Omdat enveloppen hoger zijn dan een A4-tje gedeeld door +2 of~3 zou dat ook niet kunnen. Vensters, weet U wel? + +Ik ben uitgegaan van envelopformaten EN-C5 ($162\times229$mm voor een +A4 in twee"en) en EN-DL ($110\times220$ voor een A4 in drie"en) +volgens NEN-1025 en ISO 269-1979. Vouwstreepjes bevinden zich op +105mm en 155mm onder de bovenrand van het papier. + + +\section{Vervolgbladen} + +Boven elk vervolgblad komt het briefhoofd (mogelijk verkort, zie +boven) en een verkorte vorm van de referentieregel; deze regel bevat +het bladnummer. + +Als het briefhoofd met daaronder de `vervolgreferentieregel' (galgje! +galgje!) te veel ruimte innemen, gaat de extra ruimte af van de +teksthoogte. Voor dit mechanisme durf ik niet voor de volle +achtien-en-een-half procent in te staan. Het lijkt in ieder geval te +werken. + + +\section{Opties} + +De optie `adresrechts' is boven al genoemd, evenals `streepjes'; +verder is er nog een optie `typhulp' die een hulplijntje voor het +aanlijnen van het adres zet. Misschien leuk als je deze stijl gebruikt +voor briefpapier dat daarna voor de typmachine gebruikt wordt. + +Belangrijker zijn natuurlijk de taalopties. + +Voor mensen met te goede of slechte ogen zijn er de 10- en 12-punts +opties. Let op: de kopjes in de referentie- en voetregel blijven in +\texttt{cmssq8} staan. + +Puur voor het genoegen van de implementator van de briefstijl is er de +optie `USletter' die het papier 19.7 millimeter korter maakt. + +\section{Labels} + +Pijnlijk punt. Dit moet nog gedaan worden. +\end{document} diff --git a/macros/latex/contrib/ntgclass/catalog.txt b/macros/latex/contrib/ntgclass/catalog.txt new file mode 100644 index 0000000000..abe4c3330c --- /dev/null +++ b/macros/latex/contrib/ntgclass/catalog.txt @@ -0,0 +1,25 @@ +Name: ntgclass +Problems-To: JLBraams@cistron.nl +Author: J.L. Braams and V. Eijkhout +Version: 2.2-patch level 3 + +Description: + +The ntgclass bundle provides a number of document classes that +implement alternative layouts for the standard LaTeX document classes. +These classes were originally developped by Victor Eijkhout and the +NTG WG13. +The classes provided are: +artikel1, artikel2, artikel3; rapport1, rapport3; boek, boek3; brief. +This bundle also includes the a4 package, originally written for +LaTeX209 to support printing on A4 paper. + +Keywords: latex, document classes + +See-Also: + +Address: +J.L. Braams +Kooienswater 62 +2715 AJ Zoetermeer +The Netherlands diff --git a/macros/latex/contrib/ntgclass/changes.txt b/macros/latex/contrib/ntgclass/changes.txt new file mode 100644 index 0000000000..afedf7a879 --- /dev/null +++ b/macros/latex/contrib/ntgclass/changes.txt @@ -0,0 +1,5 @@ + +This file lists changes to the NTG files in reverse chronological order. +======================================================================== + + diff --git a/macros/latex/contrib/ntgclass/classdoc.pdf b/macros/latex/contrib/ntgclass/classdoc.pdf new file mode 100644 index 0000000000..8e16c04cc5 Binary files /dev/null and b/macros/latex/contrib/ntgclass/classdoc.pdf differ diff --git a/macros/latex/contrib/ntgclass/classdoc.tex b/macros/latex/contrib/ntgclass/classdoc.tex new file mode 100644 index 0000000000..94e0cb8665 --- /dev/null +++ b/macros/latex/contrib/ntgclass/classdoc.tex @@ -0,0 +1,164 @@ +% \iffalse meta-comment +% +% % \iffalse meta-comment +% % +% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. +% % All rights reserved. +% % +% % This file is part of the NTG document classes distribution +% % ---------------------------------------------------------- +% % +% % It may be distributed and/or modified under the +% % conditions of the LaTeX Project Public License, either version 1.3 +% % of this license or (at your option) any later version. +% % The latest version of this license is in +% % http://www.latex-project.org/lppl.txt +% % and version 1.3 or later is part of all distributions of LaTeX +% % version 2003/12/01 or later. +% % +% % This work has the LPPL maintenance status "maintained". +% % +% % The Current Maintainer of this work is Johannes Braams. +% % +% % The list of all files belonging to the NTG document classes +% % distribution is given in the file `manifest.txt. +% % +% % The list of derived (unpacked) files belonging to the distribution +% % and covered by LPPL is defined by the unpacking scripts (with +% % extension .ins) which are part of the distribution. +% % \fi +% \fi +\documentclass[a4paper,10pt]{artikel1} % or just 'article' +\usepackage{shortvrb} +\newcommand\Lopt[1]{\textsf{#1}} +\newcommand\file[1]{\texttt{#1}} + +\begin{document} + +\title{An introduction to the Dutch \LaTeX\ document + classes\thanks{Updated for \LaTeXe\ by Johannes Braams, 6 february + 1994}} +\author{Victor Eijkhout} +\date{3 September 1989} +\maketitle + +\section{Background} + +The Dutch \LaTeX\ document classes are an attempt to provide \LaTeX\ +users with facilities of the standard distribution document classes +`article' and `report', but coupled to typography that is geared +towards Dutch usage. In order to ensure interchangeability, the new +styles implemented the commands of the distribution styles. In +principle, then, no manual for these styles would be needed. There +are a few points, however, that can't go without comment. + +Table 1 lists all files connected with the Dutch document classes. +These files can be found on the \texttt{tex-nl} fileserver +on the \texttt{hearn} node of Bitnet/Earn and on the \textsc{ctan}. +Not all of them are necessary, the ones with extension \file{.tex} +contain just blah. + +Remark: there exists a Dutch version of `letter', which is so +specifically Dutch that I decided not to include it in this list. + +\begin{table}[hbtp] + \begin{center} + \begin{tabular}{|@{\tt\hspace{1em}}r|l|} + \hline + ntgclass.tex & The \LaTeXe\ source for this text\\ + ntgclass.dtx & The source for all the class files\\ + ntgclass.dst & A \textsf{docstrip} program to produce\\ + & the class files from the source.\\ + artikel1.cls & article compatible, design 1, straightforward \\ + artikel2.cls & article compatible, design 2, rather different \\ + artikel3.cls & article compatible, design 3, + parskip instead of indent\\ + rapport1.cls & report compatible, design 1 \\ + rapport3.cls & report compatible, design 3 \\ + book.cls & book compatible, design 1\\ + ntg10.clo & 10 point option for all styles \\ + ntg11.clo & 11 point option for all styles \\ + ntg12.clo & 12 point option for all styles \\ + artdoc.tex & the genesis of the `artikel' classes, in Dutch \\ + briefdoc.tex & the genesis of the `brief class, also in Dutch \\ + rapdoc.tex & the genesis of the `rapport' classes, also in + Dutch.\\ + \hline + \end{tabular} + \end{center} + \caption{List of files} +\end{table} + + +\section{Languages} + +These styles have been developed bearing in mind suggestions of Hubert +Partl for making the language of styles switchable. Thus, on their +own these styles will produce English captions like `chapter' and +`table of contents', but specifying the options `dutch' or `german', +or any language option that follows the directions of Partl, will +switch these to the language of the option. + +\MakeShortVerb{\|} + +\section{Design} + +At the moment there are styles compatible with `article' and with +`report'. The Dutch names for these are `artikel' and `rapport'. In +contrast to the standard styles, however, the user can now choose from +different visual designs. Names of the styles are formed by appending +their number to the name, for instance `rapport3'. +\begin{enumerate} +\item Design one is meant to be a universally acceptable style. It + has been kept as uncontroversial as possible. Under heavy protests + of the implementer (me) the one point that has turned out to be + controversial, the table of contents, has been made subject to a + switch that can restore the old \LaTeX\ layout. Explanation of this + follows. +\item Design two will probably never be heavily used. It is more + something of a heroic attempt to be different. At the moment only + available in `artikel' form. +\item Design three meets the wishes of people who like a zero + |\parindent| and a positive |\parskip|. As just setting these + parameters within for instance `artikel1' will give some unwanted + side effects, I~decided to repair these in a separate style. +\end{enumerate} +Credits for the visual design go to one real-life designer and a +couple of books by designers I consulted. The full story can be found +elsewhere. + +\subsection{User options} + +As was mentioned above, the new layout of the table of contents has +turned out to be somewhat controversial. So, in order to ensure wider +acceptance of these styles I~have incorporated a switch that will +restore the old layout. Just specify the \Lopt{oldtoc} option. This is +available in designs 1 and~3. Number~2 really insists on being +different. + +%I~do no page sizing, so kindly use an option like \texttt{a4}. +%There is a nice one on the server, which is not the one +%by John Pavel. + +\subsection{Option files} + +Like in the standard styles there exist option files for $10/11/12$ +point layout. Until now, however, I~have managed to get away with +using the same option files for both the `artikel' `rapport', and +`boek' styles. The option files then have to have some neutral names. +Which are at the moment \file{ntg10}, \file{ntg11}, +and~\file{ntg12}. `NTG', of course, stands for Nederlandse \TeX\ +Gebruikersgroep, i.e., Dutch \TeX\ Users Group. + +When doing the `rapport' styles, I~needed to modify the `\file{titlepag}' +option file. Thus there is a Dutch version of that, bearing the name +of `voorwerk' (literal translation: `frontwork'). Probably the +majority of Dutch \LaTeX\ users don't even know that this is the +correct term. You're never too old to learn. + +With the \LaTeXe\ version of thes classes the file \file{voorwerk.sty} +has disappeared. It has been turned into the internal option +\Lopt{voorwerk}, just like \file{titlpage.sty} has disappeared into +the internal option \Lopt{titlepage}. +\end{document} + diff --git a/macros/latex/contrib/ntgclass/manifest.txt b/macros/latex/contrib/ntgclass/manifest.txt new file mode 100644 index 0000000000..43d088f2db --- /dev/null +++ b/macros/latex/contrib/ntgclass/manifest.txt @@ -0,0 +1,47 @@ +% +% CONTENTS OF THE NTG DOCUMENT CLASSES DISTRIBUTION +% ================================================= +% +% Documentation: +% -------------- +% +% 00readme.txt -- The distribution guide. +% manifest.txt -- This file. +% changes.txt -- List of changes in reverse chronological order. +% catalog.txt -- A short description for the macro catalog. +% +% artdoc.tex -- A description of the artikel classes, in dutch +% artdoc.pdf +% briefdoc.tex -- A description of the brief class, in dutch +% briefdoc.pdf +% rapdoc.tex -- A description of the rapport classes, in dutch +% rapdoc.pdf +% classdoc.tex -- A description of the document classes, in english +% classdoc.pdf +% +% Classes: +% -------- +% +% ntgclass.dtx -- NTG document classes artikel1,2,3/boek,boek3/rapport1,3. +% ntgclass.pdf +% brief.dtx -- NTG document class brief +% brief.pdf +% +% Classes: +% -------- +% +% a4.dtx -- The package a4 from NTG/WG13 (Braams, Poppelier) +% a4.pdf +% +% Installation script for the various parts: +% ------------------------------------------- +% +% a4.ins -- installation script for the a4 package +% ntgclass.ins -- NTG document classes installation script +% +% +% Support files: +% -------------- +% +% brief.tex -- A sample file with three letters +% diff --git a/macros/latex/contrib/ntgclass/ntgclass.dtx b/macros/latex/contrib/ntgclass/ntgclass.dtx new file mode 100644 index 0000000000..53b1064b11 --- /dev/null +++ b/macros/latex/contrib/ntgclass/ntgclass.dtx @@ -0,0 +1,5273 @@ +% \iffalse meta-comment +% +% % \iffalse meta-comment +% % +% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. +% % All rights reserved. +% % +% % This file is part of the NTG document classes distribution +% % ---------------------------------------------------------- +% % +% % It may be distributed and/or modified under the +% % conditions of the LaTeX Project Public License, either version 1.3 +% % of this license or (at your option) any later version. +% % The latest version of this license is in +% % http://www.latex-project.org/lppl.txt +% % and version 1.3 or later is part of all distributions of LaTeX +% % version 2003/12/01 or later. +% % +% % This work has the LPPL maintenance status "maintained". +% % +% % The Current Maintainer of this work is Johannes Braams. +% % +% % The list of all files belonging to the NTG document classes +% % distribution is given in the file `manifest.txt. +% % +% % The list of derived (unpacked) files belonging to the distribution +% % and covered by LPPL is defined by the unpacking scripts (with +% % extension .ins) which are part of the distribution. +% % \fi +% \fi +% \CheckSum{3726} +% \iffalse +%% Copyright (C) 1994 -- 2004 by Victor Eijkhout and Johannes Braams +%% Based on classes.dtx +%% Copyright (C) 1999 LaTeX3 project, all rights reserved. +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \section{Identification} +% +% These document classes can only be used with \LaTeXe, so we make +% sure that an appropriate message is displayed when another \TeX{} +% format is used. +% \begin{macrocode} +%\NeedsTeXFormat{LaTeX2e}[1995/06/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} +% + [2004/06/07 v2.1a +% 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} +% +% \title{NTG Document Classes for \LaTeX{} version 2e\thanks{This file +% has version number \fileversion, last revised \filedate.}} +% +% \author{% +% Copyright (C) 1992 by Leslie Lamport \and +% Copyright (C) 1994,1999 by Victor Eijkhout \and Johannes Braams +% } +% \date{\filedate} +% +% \maketitle +% \tableofcontents +% +% \StopEventually{} ^^A +% +% \section{Introduction} +% +% This file contains the set of document classes that were made +% available by Working Group 13 of the NTG (Nederlandstalige \TeX\ +% Gebruikersgroep). They are compatible with the standard \LaTeX2e +% document classes, but implement different layouts. +% +% \section{The {\sc docstrip} modules} +% +% The following modules are used in the implementation to direct +% {\sc docstrip} in generating the external files: +% \begin{center} +% \begin{tabular}{ll} +% artikel & produce the documentclasses artikel?\\ +% rapport & produce the documentclasses rapport?\\ +% 10pt & produce the class option for 10pt\\ +% 11pt & produce the class option for 11pt\\ +% 12pt & produce the class option for 12pt\\ +% boek & produce the documentclasses boek?\\ +% type1 & produce the `1' variants of the classes\\ +% type2 & produce the `2' variants of the classes\\ +% type3 & produce the `3' variants of the classes\\ +% driver & produce a documentation driver file \\ +% \end{tabular} +% \end{center} +% +% \section{Initial Code} +% +% In this part we define a few commands that are used later on. +% +% \begin{macro}{\@ptsize} +% This control sequence is used to store the second digit of the +% pointsize we are typesetting in. So, normally, it's value is one +% of 0, 1 or 2. +% \begin{macrocode} +%<*artikel|rapport|boek> +\newcommand*\@ptsize{} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@restonecol} +% When the document has to printed in two columns, we sometimes +% have to temporarily switch to one column. This switch is used to +% remember to switch back. +% \begin{macrocode} +\newif\if@restonecol +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@titlepage} +% A switch to indicate if a titlepage has to be produced. For the +% artikel document class the default is not to make a seperate +% titlepage. +% \begin{macrocode} +\newif\if@titlepage +%\@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@ +% +%<*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@ +% +%<*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@ +% +% \end{macrocode} +% The |\belowdisplayskip| is always equal to the +% |\abovedisplayskip|. The parameters of the first level list are +% always given by |\@listI|. +% \begin{macrocode} + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI} +% \end{macrocode} +% Make |\@normalsize| a synonymn for |\normalsize|. +% \begin{macrocode} +\let\@normalsize\normalsize +% \end{macrocode} +% +% We initially choose the normalsize font. +% \begin{macrocode} +\normalsize +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\small} +% \changes{v2.0f}{1994/04/18}{Use \cs{newcommand} instead of +% \cs{renewcommand} because of change in the \LaTeX kernel} +% This is similar to |\normalsize|. +% \begin{macrocode} +\newcommand*\small{% +%<*10pt> + \@setfontsize\small\@ixpt{11}% + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus2\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ +% +%<*11pt> + \@setfontsize\small\@xpt\@xiipt + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ +% +%<*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@ +% + \belowdisplayskip \abovedisplayskip +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\footnotesize} +% \changes{v2.0f}{1994/04/18}{Use \cs{newcommand} instead of +% \cs{renewcommand} because of change in the \LaTeX kernel} +% This is similar to |\normalsize|. +% \begin{macrocode} +\newcommand*\footnotesize{% +%<*10pt> + \@setfontsize\footnotesize\@viiipt{9.5}% + \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus\p@ + \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ +% +%<*11pt> + \@setfontsize\footnotesize\@ixpt{11}% + \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ +% +%<*12pt> + \@setfontsize\footnotesize\@xpt\@xiipt + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ +% + \belowdisplayskip \abovedisplayskip +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\scriptsize} +% \begin{macro}{\tiny} +% \begin{macro}{\large} +% \begin{macro}{\Large} +% \begin{macro}{\LARGE} +% \begin{macro}{\huge} +% \begin{macro}{\Huge} +% \changes{v2.0f}{1994/04/18}{Use \cs{newcommand} instead of +% \cs{renewcommand} because of change in the \LaTeX kernel} +% These are all much simpler than the previous macros, they just +% select a new fontsize, but leave the parameters for displays and +% lists alone. +% \begin{macrocode} +%<*10pt> +\newcommand*\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt} +\newcommand*\tiny{\@setfontsize\tiny\@vpt\@vipt} +\newcommand*\large{\@setfontsize\large\@xiipt{14}} +\newcommand*\Large{\@setfontsize\Large\@xivpt{18}} +\newcommand*\LARGE{\@setfontsize\LARGE\@xviipt{22}} +\newcommand*\huge{\@setfontsize\huge\@xxpt{25}} +\newcommand*\Huge{\@setfontsize\Huge\@xxvpt{30}} +% +%<*11pt> +\newcommand*\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} +\newcommand*\tiny{\@setfontsize\tiny\@vipt\@viipt} +\newcommand*\large{\@setfontsize\large\@xiipt{14}} +\newcommand*\Large{\@setfontsize\Large\@xivpt{18}} +\newcommand*\LARGE{\@setfontsize\LARGE\@xviipt{22}} +\newcommand*\huge{\@setfontsize\huge\@xxpt{25}} +\newcommand*\Huge{\@setfontsize\Huge\@xxvpt{30}} +% +%<*12pt> +\newcommand*\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} +\newcommand*\tiny{\@setfontsize\tiny\@vipt\@viipt} +\newcommand*\large{\@setfontsize\large\@xivpt{18}} +\newcommand*\Large{\@setfontsize\Large\@xviipt{22}} +\newcommand*\LARGE{\@setfontsize\LARGE\@xxpt{25}} +\newcommand*\huge{\@setfontsize\huge\@xxvpt{30}} +\let\Huge=\huge +% +% +% \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@} +% +% \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@} +% +%<*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@} +% +%<*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@} +% +% \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@} +% +%<*11pt> +\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} +% +%<*12pt> +\setlength\dblfloatsep {14\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} +% +% \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} +% +%<*11pt> +\setlength\@fptop{0\p@ \@plus 1fil} +\setlength\@fpsep{8\p@ \@plus 2fil} +\setlength\@fpbot{0\p@ \@plus 1fil} +% +%<*12pt> +\setlength\@fptop{0\p@ \@plus 1fil} +\setlength\@fpsep{10\p@ \@plus 2fil} +\setlength\@fpbot{0\p@ \@plus 1fil} +% +% \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} +% +%<*11pt> +\setlength\@dblfptop{0\p@ \@plus 1fil} +\setlength\@dblfpsep{8\p@ \@plus 2fil} +\setlength\@dblfpbot{0\p@ \@plus 1fil} +% +%<*12pt> +\setlength\@dblfptop{0\p@ \@plus 1fil} +\setlength\@dblfpsep{10\p@ \@plus 2fil} +\setlength\@dblfpbot{0\p@ \@plus 1fil} +% +%<*artikel|rapport|boek> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Page Styles} +% +% The page style \pstyle{foo} is defined by defining the command +% |\ps@foo|. This command should make only local definitions. +% There should be no stray spaces in the definition, since they +% could lead to mysterious extra spaces in the output (well, that's +% something that should be always avoided). +% +% \begin{macro}{\@evenhead} +% \begin{macro}{\@oddhead} +% \begin{macro}{\@evenfoot} +% \begin{macro}{\@oddfoot} +% The |\ps@...| command defines the macros |\@oddhead|, +% |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running +% heads and feet---e.g., |\@oddhead| is the macro to produce the +% contents of the heading box for odd-numbered pages. It is called +% inside an |\hbox| of width |\textwidth|. +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\thispagestyle} +% Several commands (|\index|, |\maketitle|) give a +% |\thispagestyle{plain}| command, which will overrule a +% |\pagestyle{empty}| command. This situation is almost always +% unwanted. Therefore we provide a more careful definition. +% +% First save the original definition. +% \begin{macrocode} +\let\Thispagestyle\thispagestyle +% \end{macrocode} +% Then we provide the new definition, for which we must also adapt +% |\pagestyle| a little. +% \begin{macrocode} +\newcommand*\@emptypagestyle{empty} +\renewcommand*\pagestyle[1]{\@nameuse{ps@#1}\def\@currentpagestyle{#1}} +\renewcommand*\thispagestyle[1]{% + \ifx\@currentpagestyle\@emptypagestyle + \else + \global\@specialpagetrue + \gdef\@specialstyle{#1}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Marking conventions} +% +% To make headings determined by the sectioning commands, the page +% style defines the commands |\chaptermark|, |\sectionmark|, +% \ldots,\\ +% where |\chaptermark{|\meta{TEXT}|}| is called by +% |\chapter| to set a mark, and so on. +% +% The |\...mark| commands and the |\...head| macros are defined +% with the help of the following macros. (All the |\...mark| +% commands should be initialized to no-ops.) +% +% \LaTeX{} extends \TeX's |\mark| facility by producing two kinds +% of marks, a `left' and a `right' mark, using the following +% commands: +% \begin{flushleft} +% |\markboth{|\meta{LEFT}|}{|\meta{RIGHT}|}|: Adds both marks. +% +% |\markright{|\meta{RIGHT}|}|: Adds a `right' mark. +% +% |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead| +% or |\@evenfoot| macros, it gets the current `left' +% mark. |\leftmark| works like \TeX's |\botmark| +% command. +% +% |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead| +% or |\@evenfoot| macros, it gets the current +% `right' mark. |\rightmark| works like \TeX's +% |\firstmark| command. +% \end{flushleft} +% +% The marking commands work reasonably well for right marks +% `numbered within' left marks--e.g., the left mark is changed by a +% |\chapter| command and the right mark is changed by a |\section| +% command. However, it does produce somewhat anomalous results if +% two |\markboth|'s occur on the same page. +% +% Commands like |\tableofcontents| that should set the marks in some +% page styles use a |\@mkboth| command, which is |\let| by the +% pagestyle command (|\ps@...|) to |\markboth| for setting the +% heading or to |\@gobbletwo| to do nothing. +% +% \subsubsection{Defining the page styles} +% \label{sec:pagestyle} +% +% The pagestyle \pstyle{empty} is defined in \file{latex.dtx}, but +% the pagestyle \pstyle{plain} is slightly altered here. The +% difference is that the page numbers are set flush right in +% onesided and flush left and right in the twosided style. +% +% \begin{macro}{\ps@plain} +% +% \begin{macrocode} +\renewcommand*\ps@plain{% +% \end{macrocode} +% The running head are empty in this pagestyle, the page number +% appears in the running foot. +% \begin{macrocode} + \let\@oddhead\@empty\let\@evenhead\@empty + \def\@oddfoot{\hfil\PageFont\thepage}% + \if@twoside + \def\@evenfoot{\PageFont\thepage\hfil}% + \else + \let\@evenfoot\@oddfoot + \fi +% \end{macrocode} +% Because the running heads should be empty we |let| |\@mkboth| to +% |\@gobbletwo|, thus disabling the mark commands. +% \begin{macrocode} + \let\@mkboth\@gobbletwo} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ps@headings} +% The definition of the page style \pstyle{headings} has to be +% different for two sided printing than it is for one sided +% printing. +% +% \begin{macrocode} +\if@twoside + \def\ps@headings{% +% \end{macrocode} +% The running feet are empty in this page style, the running head +% contains the page number and one of the marks. +% \begin{macrocode} + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{{\PageFont\thepage}\hfil\MarkFont\leftmark}% + \def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}% +% \end{macrocode} +% +% When using this page style, the contents of the running head is +% determined by the chapter and section titles. So we |\let| +% |\@mkboth| to |\markboth|. +% \begin{macrocode} + \let\@mkboth\markboth +% \end{macrocode} +% +% For the artikel document classes we define |\sectionmark| to clear +% the right mark and put the number of the section (when it is +% numbered) and its title in the left mark. The rightmark is set by +% |\subsectionmark| to contain the subsection titles. +% +% Note the use of |##1| for the parameter of the |\sectionmark| +% command, which will be defined when |\ps@headings| is executed. +% +% \changes{v2.0p}{1995/08/09}{Removed extra dot after \cs{thesection} +% (PR 1519)} +% \changes{v2.0p}{1995/08/09}{Replace \cs{hskip} \texttt{1em}\cs{relax} +% with \cs{quad}} +% \changes{v2.0p}{1995/08/10}{Use \cs{MakeUppercase} instead of +% \cs{uppercase}} +% \begin{macrocode} +%<*artikel> + \def\sectionmark##1{% + \markboth {\MakeUppercase{% + \ifnum \c@secnumdepth >\z@ + \thesection\quad + \fi + ##1}}{}}% + \def\subsectionmark##1{% + \markright {% + \ifnum \c@secnumdepth >\@ne + \thesubsection\quad + \fi + ##1}}} +% +% \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 +% +% \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|. +% \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 + \toc@font#2 #7}% + \else + \def\@svsechd{#6\hskip #3\relax + \@svsec #8\csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth + \else + \protect\numberline{\csname the#1\endcsname}% + \fi + \toc@font#2 #7}}% + \fi + \@xsect{#5}} +% \end{macrocode} +% This macro was introduced in \LaTeXe, its definition is changed +% here to get the fixed with of the section number. +% \changes{v2.0o}{1995/05/07}{added \cs{relax} in the type2 case} +% \begin{macrocode} +\def\@seccntformat#1{% +% \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}} +% \begin{macrocode} +%<*artikel> +\def\@part[#1]#2{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi +% \end{macrocode} +% We print the title flush left in the artikel classes. +% Also we prevent breaking between lines and reset the font. +% \begin{macrocode} + {\head@style + \parindent\unitindent + \normalfont +% \end{macrocode} +% When this is a numbered part we have to print the number and the +% title. The |\nobreak| should prevent a page break here. +% \changes{v2.0z}{2004/02/20}{Replaced tilde with \cs{nobreakspace}, +% see \LaTeX{} (pr/3310)} +% \begin{macrocode} + \ifnum \c@secnumdepth >\m@ne +% \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. +% \begin{macrocode} +%<*rapport|boek> +\def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}\toc@case{#1}}% + \else + \addcontentsline{toc}{part}{\toc@case{#1}}% + \fi +% \end{macrocode} +% We empty the mark registers and center the title on the page in the +% rapport and boek document classes. +% Also we prevent breaking between lines and reset the font. +% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with +% \cs{normalfont}} +% \changes{v2.0r}{1995/10/05}{Added missing percent} +% \begin{macrocode} + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont +% \end{macrocode} +% When this is a numbered part we have to print the number. We have +% to expand |\partname| before |\uppercase| is called, therefore we +% use a temporary control sequence that, when called will execute +% |\uppercase| on the contents of |\partname|. +% \begin{macrocode} + \ifnum \c@secnumdepth >-2\relax + \Large\PartFont + \edef\@tempa{\noexpand\uppercase{\partname}}\@tempa + \nobreakspace\thepart + \par +% \end{macrocode} +% We leave some space before we print the title and leave the +% finishing up to |\@endpart|. +% \begin{macrocode} + \vskip 20\p@ + \fi + \Large \PartFont \uppercase{#2}\par}% + \@endpart} +% +% \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} +% \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}\toc@font0 #1}% +%<*boek> + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi +% + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi +% \end{macrocode} +% After having written an entry to the table of contents we store +% the (alternative) title of this chapter with |\chaptermark| and +% add some white space to the lists of figures and tables. +% \begin{macrocode} + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% +% \end{macrocode} +% Then we call upon |\@makechapterhead| to format the actual +% chapter title. We have to do this in a special way when we are in +% twocolumn mode in order to have the chapter title use the entire +% |\textwidth|. In one column mode we call |\@afterheading| which +% takes care of suppressing the indentation. +% \begin{macrocode} + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% +% \begin{macro}{\ChapFont} +% The font used to typeset the chapters is stored in this maro. +% \begin{macrocode} +\newcommand*\ChapFont{\bfseries} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@makechapterhead} +% The macro above uses |\@makechapterhead|\meta{text} to format the +% heading of the chapter. +% +% We begin by leaving some white space. The we open a group in +% which we have a paragraph indent of 0pt, and in which we have the +% text set ragged right. We also reset the font. +% \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with +% \cs{normalfont}} +% \begin{macrocode} +\def\@makechapterhead#1{% +% \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. +% +% \begin{macrocode} +\renewenvironment{enumerate}{% + \ifnum \@enumdepth >3 + \@toodeep + \else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \list{\csname label\@enumctr\endcsname} + {\usecounter{\@enumctr}% +% \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}} +% \begin{macrocode} +\newcommand*{\labelitemi}{\textbullet} +\newcommand*{\labelitemii}{\normalfont\bfseries \textendash} +\newcommand*{\labelitemiii}{\textasteriskcentered} +\newcommand*{\labelitemiv}{\textperiodcentered} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{environment}{itemize} +% We want to have differen label positioning on different levels of +% list. To acheive this we have to redefine the \Lenv{itemize} +% environment. +% \begin{macrocode} +\renewenvironment{itemize}{% + \ifnum \@itemdepth >3 + \@toodeep + \else + \advance\@itemdepth \@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \list{\csname\@itemitem\endcsname}% + {% +% \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|. +% +% \begin{macrocode} +\newcommand*\descriptionlabel[1]{\hspace\labelsep \bfseries #1} +% \end{macrocode} +% \end{macro} +% +% \subsection{Adapting existing environments} +% +% Because we globally set |\topsep| to zero, we need to modify the +% definitions of a number of environments slightly to get a litle +% whitespace around them in the document classes \file{artikel1} +% and \file{rapport1}. +% +% \begin{environment}{center} +% Add a litle surrounding whitespace. +% \begin{macrocode} +%<*type1> +\def\center + {\topsep=.25\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip + \trivlist \centering\item[]} +\let\endcenter\endtrivlist +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{flushleft} +% Add a litle surrounding whitespace. +% \begin{macrocode} +\def\flushleft + {\topsep=.25\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip + \trivlist \raggedright\item[]} +\let\endflushleft=\endtrivlist +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{flushright} +% Add a litle surrounding whitespace. +% \begin{macrocode} +\def\flushright + {\topsep=.25\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip + \trivlist \raggedleft\item[]} +\let\endflushright=\endtrivlist +% +% \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} +% \begin{macrocode} +%\if@titlepage + \newenvironment{abstract}{% + \titlepage + \null\vfil + \hbox{\SectFont \abstractname} + \noindent\ignorespaces} + {\par\vfil\null\endtitlepage} +% \end{macrocode} +% When we are not making a seperate 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)} +% \begin{macrocode} + \chapter*{\contentsname}% +% +% \section*{\contentsname}% + \@mkboth{\MakeUppercase{\contentsname}}% + {\MakeUppercase{\contentsname}}% +% \end{macrocode} +% The the actual table of contents is made by calling +% |\@starttoc{toc}|. After that we restore twocolumn mode if +% necessary. +% \begin{macrocode} + \@starttoc{toc}% +% \if@restonecol\twocolumn\fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@starttoc} +% The internal \LaTeXe macro |\@starttoc| needs to be adapted for +% the \file{artikel3} and \file{rapport3} document classes,in order +% to deal with a the fact that for these document classes the +% |\parskip| is normally non-zero. We don't want that in the table +% of contents. +% \begin{macrocode} +%<*type3> +\def\@starttoc#1{\begingroup + \makeatletter + \parskip\z@ + \@input{\jobname.#1}% + \if@filesw + \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax + \fi \global\@nobreakfalse \endgroup} +% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@regtocline} +% These document classes use a different format for the table of +% contents than the standard classes from which they were +% developped. In order to acheive this different format we defined +% the macro |\@regtocline|. +% \begin{macrocode} +\newcommand*\@regtocline[3]{% + \ifnum #1>\c@tocdepth + \else + \vskip\z@\@plus.2\p@ + {\hangindent\z@ \@afterindenttrue \interlinepenalty\@M + \leftskip\unitindent + \rightskip\unitindent\@plus 1fil + \parfillskip\z@ + \@tempdima\unitindent +% \advance\@tempdima by \othermargin + \parindent\z@ + \leavevmode + \hbox{}\hskip -\leftskip\relax#2\nobreak + \hskip 1em \nobreak{\slshape #3}\par + }% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\numberline} +% This internal macro is redefined for the \file{artikel2} document +% class. +% \begin{macrocode} +%\def\numberline#1{\hb@xt@\@tempdima{\hfil#1\hskip.3em}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\toc@font} +% The changed definition of |\@sect| that we use, selects a +% different font for the table of contents for the various header +% levels. It does this using |\toc@font|. +% \begin{macrocode} +\if@oldtoc + \newcommand*\toc@font[1]{\relax} +\else + \newcommand*\toc@font[1]{% +%<*artikel> + \ifcase#1\relax +% \Large\bfseries + \or\bfseries + \or\slshape + \or\rmfamily +% +%<*rapport|boek> + \ifcase#1\relax + \bfseries + \or\slshape + \or\rmfamily +% + \fi} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\toc@case} +% In the \file{rapport} and \file{boek} document classes, the +% entries for parts are typeset in capital letters in the new style +% of the table of contents. In the old style this isn't done. The +% macro |\toc@case| is used to switch this. +% \begin{macrocode} +\if@oldtoc + \newcommand*\toc@case{\relax} +\else + \newcommand*\toc@case{\MakeUppercase} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@part} +% Each sectioning command needs an additional macro to format its +% entry in the table of contents, as described above. The macro for +% the entry for parts is defined in a special way. +% +% First we make sure that if a pagebreak should occur, it occurs +% \emph{before} this entry. Also a little whitespace is added and a +% group begun to keep changes local. +% \changes{v1.0.8}{1993/12/18}{Replaced -\cs{@secpenalty} by +% \cs{@secpenalty}. ASAJ.} +% +% First we have the definition from the standard classes. +% \changes{v2.0q}{1995/08/22}{Don't print a toc line when the tocdepth +% counter is less then -1; Added missing braces around argument to +% \cs{addpenalty}.} +% \begin{macrocode} +\if@oldtoc +\newcommand*\l@part[2]{% + \ifnum \c@tocdepth >-2\relax +% \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}}\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. +% \begin{macrocode} +\else + \newcommand*\l@part{% + \ifnum \c@tocdepth >-2\relax +% \addpenalty\@secpenalty +% \addpenalty{-\@highpenalty}% + \addvspace{2.25em \@plus \p@}% + \@regtocline{0}% + \fi} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@chapter} +% This macro formats the entries in the table of contents for +% chapters. It is very similar to |\l@part| +% +% First we make sure that if a pagebreak should occur, it occurs +% \emph{before} this entry. Also a little whitespace is added and a +% group begun to keep changes local. +% +% Again we first present the `standard' definition +% \changes{v2.0q}{1995/08/22}{Added missing braces around argument to +% \cs{addpenalty}.} +% \begin{macrocode} +%<*rapport|boek> +\if@oldtoc +\newcommand*\l@chapter[2]{% + \addpenalty{-\@highpenalty}% + \vskip 1.0em \@plus\p@ +% \end{macrocode} +% +% The macro |\numberline| requires that the width of the box that +% holds the part number is stored in \LaTeX's scratch register +% |\@tempdima|. Therefore we put it there. We begin a group, and +% change some of the paragraph parameters. +% \begin{macrocode} + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth +% \end{macrocode} +% Then we leave vertical mode and switch to a bold font. +% \begin{macrocode} + \leavevmode \bfseries +% \end{macrocode} +% Because we do not use |\numberline| here, we have do some fine +% tuning `by hand', before we can set the entry. We discourage but +% not disallow a pagebreak immediately after a chapter entry. +% \begin{macrocode} + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \penalty\@highpenalty + \endgroup} +% \end{macrocode} +% Then we present our new definition. +% \begin{macrocode} +\else + \newcommand*\l@chapter{\@regtocline{0}} +\fi +% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@section} +% In the artikel document classes the entry in the table of contents +% for sections looks much like the chapter entries for the rapport +% and boek document classes. +% +% First we make sure that if a pagebreak should occur, it occurs +% \emph{before} this entry. Also a little whitespace is added and a +% group begun to keep changes local. +% \changes{v1.0.8}{1993/12/18}{Replaced -\cs{@secpenalty} by +% \cs{@secpenalty}. ASAJ.} +% \begin{macrocode} +%<*artikel> +\if@oldtoc +\newcommand*\l@section[2]{% + \addpenalty\@secpenalty + \addvspace{1.0em \@plus\p@}% +% \end{macrocode} +% +% The macro |\numberline| requires that the width of the box that +% holds the part number is stored in \LaTeX's scratch register +% |\@tempdima|. Therefore we put it there. We begin a group, and +% change some of the paragraph paramters. +% \begin{macrocode} + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth +% \end{macrocode} +% Then we leave vertical mode and switch to a bold font. +% \begin{macrocode} + \leavevmode \bfseries +% \end{macrocode} +% Because we do not use |\numberline| here, we have do some fine +% tuning `by hand', before we can set the entry. We discourage but +% not disallow a pagebreak immediately after a chapter entry. +% \begin{macrocode} + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \endgroup} +% \end{macrocode} +% The new definition: +% \begin{macrocode} +\else + \newcommand*\l@section{\@regtocline{1}} +\fi +% +% \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}% +% + \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 +% diff --git a/macros/latex/contrib/ntgclass/ntgclass.ins b/macros/latex/contrib/ntgclass/ntgclass.ins new file mode 100644 index 0000000000..c0b15021c9 --- /dev/null +++ b/macros/latex/contrib/ntgclass/ntgclass.ins @@ -0,0 +1,101 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% Copyright (C) 1990-1999 Nederlandstalige TeX Gebruikersgroep. +%% +%% This file is part of the NTG document classes distribution +%% ---------------------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2003/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainer of this work is Johannes Braams. +%% +%% The list of all files belonging to the NTG document classes +%% distribution is given in the file `manifest.txt. +%% +%% The list of derived (unpacked) files belonging to the distribution +%% and covered by LPPL is defined by the unpacking scripts (with +%% extension .ins) which are part of the distribution. +%% +%% --------------- start of docstrip commands ------------------ +%% +\input docstrip.tex % ignored in distribution + +\preamble +This is a generated file. + +Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. +All rights reserved. + +This file was generated from file(s) of the NTG document classes distribution. +------------------------------------------------------------------------------ + +It may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3 +of this license or (at your option) any later version. +The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of LaTeX +version 2003/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +The Current Maintainer of this work is Johannes Braams. + +This file may only be distributed together with a copy of the NTG +document classes distribution. You may however distribute the NTG +document classes distribution without such generated files. + +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. +\endpreamble + +\keepsilent +\askonceonly + +\usedir{tex/latex/ntgclass} +\Msg{*** Generating the files ***} + +\generate{\file{artikel1.cls}{\from{ntgclass.dtx}{artikel,type1}} + \file{artikel2.cls}{\from{ntgclass.dtx}{artikel,type2}} + \file{artikel3.cls}{\from{ntgclass.dtx}{artikel,type3}} + \file{rapport1.cls}{\from{ntgclass.dtx}{rapport,type1}} + \file{rapport3.cls}{\from{ntgclass.dtx}{rapport,type3}} + \file{boek.cls}{\from{ntgclass.dtx}{boek,type1}} + \file{boek3.cls}{\from{ntgclass.dtx}{boek,type3}} + \file{brief.cls}{\from{brief.dtx}{brief}} + \file{ntg10.clo}{\from{ntgclass.dtx}{10pt}} + \file{ntg11.clo}{\from{ntgclass.dtx}{11pt}} + \file{ntg12.clo}{\from{ntgclass.dtx}{12pt}}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move all the files} +\Msg{* with names ending in .cls into a directory searched by TeX} +\Msg{*} +\Msg{* To produce source listings you can run files with names} +\Msg{* ending in .dtx through LaTeX} +\Msg{*} +\Msg{* To produce the complete source listing MakeIndex needs to be} +\Msg{* able to find the following files} +\Msg{* \space\space bbind.ist} +\Msg{* \space\space bbglo.ist} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/macros/latex/contrib/ntgclass/ntgclass.pdf b/macros/latex/contrib/ntgclass/ntgclass.pdf new file mode 100644 index 0000000000..d743d45d68 Binary files /dev/null and b/macros/latex/contrib/ntgclass/ntgclass.pdf differ diff --git a/macros/latex/contrib/ntgclass/rapdoc.pdf b/macros/latex/contrib/ntgclass/rapdoc.pdf new file mode 100644 index 0000000000..b129c6d24c Binary files /dev/null and b/macros/latex/contrib/ntgclass/rapdoc.pdf differ diff --git a/macros/latex/contrib/ntgclass/rapdoc.tex b/macros/latex/contrib/ntgclass/rapdoc.tex new file mode 100644 index 0000000000..c241b5f665 --- /dev/null +++ b/macros/latex/contrib/ntgclass/rapdoc.tex @@ -0,0 +1,710 @@ +% \iffalse meta-comment +% +% % \iffalse meta-comment +% % +% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. +% % All rights reserved. +% % +% % This file is part of the NTG document classes distribution +% % ---------------------------------------------------------- +% % +% % It may be distributed and/or modified under the +% % conditions of the LaTeX Project Public License, either version 1.3 +% % of this license or (at your option) any later version. +% % The latest version of this license is in +% % http://www.latex-project.org/lppl.txt +% % and version 1.3 or later is part of all distributions of LaTeX +% % version 2003/12/01 or later. +% % +% % This work has the LPPL maintenance status "maintained". +% % +% % The Current Maintainer of this work is Johannes Braams. +% % +% % The list of all files belonging to the NTG document classes +% % distribution is given in the file `manifest.txt. +% % +% % The list of derived (unpacked) files belonging to the distribution +% % and covered by LPPL is defined by the unpacking scripts (with +% % extension .ins) which are part of the distribution. +% % \fi +% \fi +\documentclass[oldtoc,a4paper,10pt]{rapport3} +\usepackage[dutch]{babel} + + +\begin{document} +\date{3 september 1989 / 3 juni 1994} +\title{Documentstijlen RAPPORT$x$\\ + Verantwoording} +\author{Victor Eijkhout} +\maketitle + +\begin{abstract} + Dit is de verantwoording voor de documentstijlen `Rapport$x$'. Deze + stijlen zijn bedoeld als een mogelijke vervanging van de stijl + `Report'. In dit verhaal zijn beschreven +\begin{enumerate} +\item de redenen waarom bepaalde veranderingen zijn aangebracht; +\item de parameters en commando's die op de veranderingen betrekking + hebben; en +\item de wijze waarop de veranderingen zijn ge"implementeerd. +\end{enumerate} +Tegelijk is dit document een uitprobeerobject voor de nieuwe +stijlen\footnote{De hoeveelheid gebruikte \LaTeX-constructies is + derhalve aan de ruime kant. De lezer wordt vriendelijk gevraagd zich + hieraan niet te ergeren.}. +\end{abstract} + +\tableofcontents +\listoftables +\listoffigures + +\part{Algemeen} + +\chapter{Verantwoording} + +De documentstijlen `Rapport$x$' zijn bedoeld als verbetering van de +standaard \LaTeX-document\-stijl `report'. De meeste macros zijn +derhalve modificaties van constructies uit `report.sty' of +`latex.tex'. Ook zijn deze stijlen te beschouwen als opwerking van +`Artikel1' en `Artikel2' (`Article'-compatibel) tot `Report'-status. + +Bij het ontwerpen van de opmaak heb ik het advies van Inge +Eijkhout~\cite{Inge} dat ik kreeg bij het ontwerpen van de `Artikel1' +stijl onverminderd kunnen gebruiken. Evenzo vermeld ik wederom de +`Tekstwijzer'~\cite{Treebus} van Karel Treebus en John Miles' +`Ontwerpen voor Desktop Publishing'~\cite{Miles}. Voor het ontwerp +van het zogenaamde `voorwerk' ben ik te rade gegaan bij Stanley +Morison~\cite{Morison}. Wat er fout is aan deze stijlen blijft +natuurlijk voor mijn rekening komen. + + +\section{Overzicht} + +De documentstijlen `Rapport1' en `Rapport2' zijn geheel compatibel met +`report': er zijn geen commando's toegevoegd of weggelaten. De +veranderingen ten opzichte van `report' betreffen enkel de opmaak. In +het bijzonder is er gesleuteld aan: +\begin{enumerate} +\item witregels rond koppen van secties, subsecties en subsubsecties + (van nu af aan `sectiekoppen' genoemd), +\item verdere veranderingen aan de opmaak van deze koppen, +\item de hoeveelheid inspringing bij lijststructuren (gegenereerd met + het \LaTeX\ \verb.\@list. commando), in het bijzonder `itemize', + `enumerate', en (specifiek voor `report') `description', en +\item verdere opmaak van lijststructuren, +\item verdere opmaak van sectiekoppen, en +\item de inhoudsopgave. +\end{enumerate} +Over het algemeen is het de bedoeling geweest een strakke opmaak te +krijgen (de standaard stijlen van \LaTeX\ `zwemmen' over de pagina). + + + +\chapter{Exportkwaliteit documentstijlen} + +De documentstijlen `Rapport$x$' kunnen zowel gebruik maken van de +stijloptie `Dutch' (auteur: Johannes Braams) als van `German' (auteur: +Hubert Partl), als van elke andere optie die de door Partl in `German' +gesuggereerde parametrisaties doorvoert. Deze opties zijn een +reparatie voor het euvel dat de meeste taalspecifieke termen in de +stijlen van de heer Lamport niet geparametriseerd zijn. + +In `Dutch' worden definities uit `Article' en dergelijke overreden +door geparametriseerde versies\footnote{Een listige truc laat `Dutch' + achterhalen door welke stijl hij aangeroepen is; de `Artikel' + stijlen zijn een onbekende stijl voor `Dutch'}, die op verschillende +talen ingesteld kunnen worden. Deze definities hadden natuurlijk al +in de stijlen van heer Lamport geparametriseerd moeten zijn. + + +De optie `German' is minder drastisch dan `Dutch': deze gaat ervan uit +dat hij door geparametriseerde stijlbestanden opgeroepen wordt, en zet +zelf alleen de parameters. De `Artikel' stijlen zijn geparametriseerd +volgens de suggestie van Partl. + +\section{Kanttekeningen} +De stijl `Dutch' parametriseert onder andere het commando `abstract'. +Aangezien ik dit commando om opmaaktechnische redenen al herdefinieer, +kan `Dutch' niet op `Artikel' losgelaten worden alsof het gewoon +`Article' was. Momenteel is `Artikel' dus een `onbekende +documentstijl' waar het `Dutch' betreft, en wordt er geen gebruik +gemaakt van het feit dat een aantal definities zich ook in `Dutch' +bevinden. + +\section{Een steek onder water} +Hoewel het mij tegen de borst stuit het Engels een voorkeurspositie te +geven onder de wereldtalen --~zeker in een voor het Nederlands +bedoelde stijl~-- heb ik besloten de Engelse parameterwaarden uit +`Dutch' als verstekwaarde in de `Artikel'-stijlen op te nemen. Een +belangrijk argument hiervoor is dat dit de stijlen geheel gelijk maakt +aan `Article' op commando\-nivo: zonder extra opties worden er Engelse +teksten geleverd, en voor Nederlands of Duits in een optiebestand +nodig. + +Een minstens zo belangrijk argument\footnote{mij door Nico Poppelier + aan de hand gedaan} hiervoor is dat de `Artikel'-stijlen zo een +steek onder water naar Leslie Lamport vormen. Ze zeggen als het ware +`\emph{Look here buster,} zo had het van begin af aan moeten zijn'. + + +\part{Specifiek} + +\chapter{Mechanismen; veranderingen in Rapport1} + +In de nu volgende subsecties worden de veranderingen ten opzichte van +de oude artikelstijl besproken in volgorde van oplopende +moeilijkheidsgraad van implementatie. De algemene mechanismen worden +besproken, alsmede hun concrete realisatie in~`Rapport1'. + +\section{Trivialiteiten} + +In de `report'-stijl staat `raggedbottom' aan voor enkelzijdige +documenten. Dit moet uit. `Frenchspacing' dient altijd aan te staan. + +\subsection{Paginanummers} +De gebruiker kan met \verb.\pagestyle{STIJL}. een stijl van kop- en +voetregels opgeven. De `Article' stijl definieert `plain' +(gecentreerde voetregels), en `headings' en `myheadings' +(asymmetrische kopregels). Als een gebruiker een stijl specificeert, +resulteert dat in de aanroep van een commando \verb.\ps@STIJL.. + +Omdat ik paginanummers wil hebben die rechts staan voor enkelzijdige +documenten, en links/rechts voor tweezijdige documenten heb ik het +commando \verb.\ps@plain., de verstekwaarde, omgebouwd. + + +\section{Makkelijke veranderingen: witregels} + +De \LaTeX\ artikelstijl wordt gekenmerkt door een overmaat aan +witregels. Hierin is stevig gesnoeid. + +\subsection{Witregels rond koppen} + +De `report'-stijl maak zowel het wit boven als onder koppen rekbaar. +Gevoegd bij het feit dat de `natuurlijke lengte' van dit wit al aan de +ruime kant is, maakt dit het paginabeeld erg los. Witregels moeten +kleiner worden, en mogen tussen kop en de eerste regel van de tekst +niet rekbaar zijn. Verder verdient het aanbeveling de witruimte in +termen van het regeltransport aan te geven. + +\subsubsection{Relevante concepten} +Het wit onder en boven koppen wordt bepaald door parameters 4~en~5 van +\verb.\@start.\-\verb.section., hetwelk commando in `art1$x$.sty' +gebruikt wordt om de sectiekopcommando's te defini"eren. Parameter~4 +dient (in ons geval) het negatieve van de gewenste skip te +specificeren. + +\subsubsection{Implementatie van de veranderingen} +De volgende waarden voor de verticale witruimte zijn gebruikt +\begin{table}[h] + \begin{center} + \begin{tabular}{|l|r|r|} + \hline + \emph{kop} & \emph{wit boven kop}&\emph{wit onder kop}\\ + \hline + section & -2-1+.5 & .5\\ + subsection & -1-.5+.25 & .25\\ + subsubsection& -1-.5+.25 & .25\\ + \hline + \end{tabular} + \end{center} + \caption{Hoeveelheid vertikaal wit in termen van + `normalbaselineskip'} +\end{table} +(in eerste instantie waren mij hogere waarden gesuggereerd, na +inspectie bleken deze waarden beter te voldoen). + +De hoeveelheid wit boven koppen steekt niet zo nauw. Die eronder wel. +In het bijzonder is het een merkwaardig idee het wit onder koppen +rekbaar te hebben. De grootte van dit wit draagt aanzienlijk bij aan +het ritme van de pagina. + + + +\noindent Opmerking: Aangezien alle skips in termen van de +`baselineskip' gegeven worden, kunnen deze definities opgetild worden +van het optiebestand naar het stijlbestand. + + +\subsection{Witregels rond lijststructuren} + +Witregels rond de items van een lijststructuur maken het paginabeeld +onrustiger, en zijn vaak niet functioneel: een `itemize'-structuur is +meestal \'e\'en doorlopend betoog waarin witregels ongewenst zijn. Er +valt iets voor te zeggen rondom `description'-structuren wel witregels +toe te staan, aangezien de beschrijvende termen in feite een kopje +vormen. + +De eerste tekstregel na een lijststructuur dient niet ingesprongen te +worden, ongeacht of de gebruiker een regel open gelaten heeft achter +de lijst (bij voorbeeld om zijn invoer overzichtelijker te maken). + + +\subsubsection{Inventaris van relevante concepten} +\LaTeX\ bestuurt witregels rond en in lijststructuren met de +parameters uit figuur~1. + +\begin{figure} + \begin{center} + \begin{tabular}{ll} + topsep & ruimte boven een lijst\\ + partopsep & extra als de lijst een nieuwe paragraaf opent\\ + itemsep & ruimte tussen items\\ + parsep & ruimte tussen paragrafen.\\ + \end{tabular} + \end{center} + \caption{witregelparameters in lijsten.} +\end{figure} + + +\noindent Deze parameters worden gezet in `art1$x$.sty' in het +commando +\begin{verbatim} +@list\romannumeral\the\@listdepth +\end{verbatim} +hetgeen ge`eval'd wordt in \verb.\@list.. + +Spaties na een lijststructuur kunnen onderdrukt worden door +\verb.\if@ignoretrue. toe te voegen aan `enditemize' +en~`endenumerate'. Het is nog niet duidelijk of voorkomen kan worden +dat er ingesprongen wordt als de gebruiker een lege regel ingeeft. + + +\subsubsection{Implementatie van de veranderingen} +Voor de gebruikte lijststructuren (met mogelijke uitzondering van +`description') dienen al deze parameters nul te zijn. + +Opmerking: als voor de `labelwidth' en de `labelsep' een oplossing in +termen van fontparameters gevonden wordt, kunnen de `listi' en +dergelijke commando's opgetild worden van het stijloptiebestand naar +het stijlbestand zelf. + + +\subsection{Verdere witregels} +Het wit rond lijststructuren wordt bestuurd door de locale `topsep', +die we boven nul gemaakt hebben, en door de globale `topsep'. Voor +een strakke opmaak is het wenselijk die nul te maken, echter hiermee +verdwijnt ook het wit op een plaats waar dat wel wenselijk is: rond +`verbatim' delen van het document. De oplossing zou kunnen zijn het +invoegen van een `topsep' in het \verb.\verbatim. commando. + +De witregel tussen voetnoten wordt bestuurd door de `footnotesep'. Ik +zou niet weten waarom die anders dan nul zou moeten zijn. + + +\section{Ook niet moeilijk: fonts} + +Er moet wat met fonts gerommeld worden. Voornamelijk moeten ze +kleiner, en het cursief moet vervangen worden door wat in Nederlandse +terminologie `gecursiveerd' heet; wij \TeX ies kennen dit als +`slanted'. + +\subsection{Fonts in sectiekoppen} + +De fonts gebruikt in tussenkopjes zijn proefondervindelijk tot stand +gekomen, en waarschijnlijk nog aan mutatie onderhevig. De +oorspronkelijk idee"en komen uit de `Sober'-stijl van Nico Poppelier. +Daarna is het `italic' vervangen door `slanted'. Kwestie van smaak. +Ik hou niet van de~\mbox{\emph{cmti}}. Verder is het klein kapitalen +font als `\dots~en hopeloos ouderwets'~\cite{Inge} de laan +uitgestuurd. + +\subsection{Theorems en het `emphasize' font} + +Om tekst te beklemtonen gebruikt \LaTeX\ het cursieve font +\texttt{cmti}. Dit vin' ik niet mooi. Binnen de Nederlandse stijlen +wordt er dus beklemtoond met \texttt{cmsl}. Ook in de `theorem' +omgevingen is deze vervanging doorgevoerd. + + +\section{Moeilijke veranderingen: eenheidsinspringing} + +Ten einde een strakke paginaopmaak te verkrijgen, verdient het +aanbeveling het aantal (impliciete) kantlijnen tot een minimum te +beperken. De radicaalste oplossing voor dit probleem bestaat uit + +\begin{enumerate} +\item alle labels in lijststructuren tegen de linkerkantlijn aan te + plaatsen (dit is niet zo mooi als er ver ingesprongen wordt), +\item voetnoten niet te laten inspringen (ingesprongen voetnoten zien + er alleen goed uit als ze meer dan \'e\'en regel lang zijn), en +\item een eenheidsinspringing in te voeren voor + \begin{itemize} + \item alinea's, + \item teksten van koppen op alle nivo's, en + \item de ingesprongen tekst in lijststructuren. + \end{itemize} +\end{enumerate} +Laten we er voorlopig dus vanuit gaan dat er een parameter +`unitindent' is. De berekening van deze grootheid komt verderop aan de +orde. + +\subsection{Inspring bij lijststructuren} + +Labels voor items in een lijst defini"eren gemakkelijk een tweede +kantlijn. Het kan dus gewenst zijn ze tegen de linkerkantlijn van de +omringende tekst aan te plaatsen. + +\subsubsection{Inventaris van relevante concepten} +Een lijst op het eerste nivo springt in over `leftmargini'. Het label +wordt van de tekst gescheiden door `labelsep', en heeft breedte +`labelwidth', tenzij de natuurlijke breedte groter is. De linkerkant +van het label staat echter altijd op `labelwidth' plus `labelsep' van +de ingesprongen kantlijn. De inhoud van het label wordt in de +omringende box geplaatst door het commando `makelabel'. + +Al deze begrippen worden ingevuld in de commando's `list$x$'. + +\subsubsection{Implementatie van de veranderingen} +Het zetten van parameters kan mooi in de `list$x$' commando's +gebeuren: +\begin{verbatim} +\def\@listi{\leftmargin=\unitindent + \labelsep=\enspace + \labelwidth=\leftmargin + \advance\labelwidth by -\labelsep}} +\end{verbatim} +Als de `unitindent' door fontparameters bepaald wordt, hoeft deze +definitie niet meer in het optiebestand te staan, maar kan naar de +stijldefinitie opgetild worden. + +Het veranderen van de definitie van `makelabel' is lastiger: dit moet +in het tweede argument van `list' gebeuren. We zullen dus `itemize' en +`enumerate' moeten herdefini"eren met een nieuwe definitie van +`makelabel'. + +Omdat de `unitindent' tamelijk groot uitvalt, heb ik ervoor gekozen +labels op het eerste nivo rechts aan te lijnen (waardoor ze dus in +bescheiden mate een nieuwe kantlijn definieren), andere labels lijnen +links. + + + +\subsection{Inspring bij koppen} + +De plaatsing van de tekst van koppen (achter het sectienummer) is in +\LaTeX\ ogenschijnlijk willekeurig, en draagt hiermee (zeker als twee +koppen onder elkaar staan) bij tot een onrustig paginabeeld. Dit kan +aanmerkelijk verbeterd worden door voor het sectienummer en de erop +volgende spatie een eenheidsbreedte te nemen. + +\subsubsection{Inventaris van relevante concepten} +In het commando \verb.\@sect. wordt een commando \verb.\@svsec. +ge`edef't dat het sectie nummer afdrukt, gevolgd door +`1~em'\footnote{Ter herinnering: + \begin{enumerate} + \item Er zijn 5 nivo's van sectiekoppen: `section', `subsection', + `subsubsection', `paragraph', en `subparagraph'. + \item De eerste 3 nivo's zijn genummerd. + \item De laatste twee nivo's geven een kop die in de tekst is + ingebed. + \end{enumerate}}\footnote{Aangezien de definitie van 'em' met het + gebruikte font meeverandert, geeft het gebruik van twee of drie + koppen onder elkaar een merkwaardig visueel effect.}. + +\subsubsection{Implementatie van de veranderingen} +Er moet een nieuwe versie van \verb.\@sect. komen die een verbeterde +\verb.\@svsec. bevat: +\begin{verbatim} +\edef\@svsec{\hbox to \unitindent + {\csname the#1\endcsname\hfil}} +\end{verbatim} +In plaats van `unitindent' kan als breedte ook een verdere +parametrisatie met +\begin{verbatim} +\csname #1labelwidth\endcsname +\end{verbatim} +gekozen worden. De `unitindent' kan als volgt gegenereerd worden: +\begin{verbatim} +\newdimen\unitindent +{\setbox0\hbox{\normalsize\bf 2.2.2\ } + \global\unitindent=\wd0} +\parindent=\unitindent +\leftmargini=\unitindent +\end{verbatim} + +Dit is helaas nog niet voldoende. Als een gebruiker erg veel van +secties en subsecties houdt, kunnen de nummers een grotere breedte dan +die van `2.2.2' krijgen. Daarom wordt het label iedere keer bij een +nieuw kopje opgemeten, en zonodig wordt de `unitindent' bijgesteld. +Bij het afsluiten van het document wordt dan de definitieve waarde +(die misschien de oude is, en misschien veel meer) naar het +\texttt{.aux}-bestand geschreven. Dat wil zeggen: er wordt een +toewijzing van die waarde aan de unitindent weggeschreven. + +Adders en voetangels te over: hiervoor moet het commando +`enddocument' herschreven worden. + + + +\section{Verdere moeilijke veranderingen: de opmaak van + lange koppen. Zoals deze dus. Reeds. Antidisestablishmentarianism. + Hottentottententententoonstelling.} + +\LaTeX\ zet koppen als ingesprongen paragrafen. Het is echter niet +gewoon dat een meerregelige kop zo behandeld wordt: beter is het vrije +regelval te gebruiken en vooral woordafbreking (zelfs in samengestelde +woorden) te verbieden. + +\subsection{Inventaris van relevante concepten} +Binnen het commando \verb.\@sect. wordt de kop van de sectie gezet als +\begin{verbatim} +{\interlinepenalty\@M #8\par} +\end{verbatim} + +\subsection{Implementatie van de veranderingen} +Aan de zetcommando's voor de sectiekoppen dient een aanroep van +`headstyle' toegevoegd te worden, waar +\begin{verbatim} +\def\headstyle{\nohyphenation \rightskip=0cm plus 3cm} +\end{verbatim} +of zoiets. Het commando `nohyphenation' kan op verschillende manieren +bereikt worden, ik heb gekozen voor \verb+\hyphenpenalty=10000+, en +idem zo voor de `exhyphenpenalty'. + + +\section{Opties} + +De stijlen `Rapport1' en `Rapport3' hebben een door de gebruiker te +kiezen optie. Hiermee kan de gebruiker de opmaak naar eigen +goeddunken varieren. Misschien dat er nog wel meer van dat soort +opties komen. + + +\subsection{Hoe werken opties} +Een door de gebruiker gespecificeerde stijloptie wordt soms +gerealiseerd door een commando in het stijlbestand, en soms door een +in te laden optiebestand. Het mechanisme dat dit bewerkstelligt is +het volgende. + +Ergens bovenin het stijlbestand worden commando's \verb.\ds@OPTION. +gedefinieerd. Als de gebruiker de betreffende optie meegegeven heeft, +wordt dit commando uitgevoerd door \verb.\@options., dat ook ergens +bovenin het stijlbestand staat. Voor die opties waarvoor geen +\verb.\ds@OPTION. macro gedefinieerd is, wordt na de verwerking van +het stijlbestand door \LaTeX\ een bestand \verb.OPTION.STY. geladen. + +\subsection{De `oldtoc' optie} +Sommige mensen houden nogal van uitgepunte inhoudsopgaves. Ik niet, +vandaar dat een inhoudsopgave analoog aan die van de `Tekstwijzer' +standaard is. Met de optie `oldtoc' kan de oude \LaTeX\ inhoudsopgave +verkregen worden. + + +\subsection{Het `Voorwerk' optiebestand} +Een essentieel verschil tussen `Rapport' en `Artikel' is dat de eerste +een heus voorwerk heeft: een titelpagina, een afzonderlijke pagina +voor de samenvatting, en losse pagina's voor de titels van de delen. +Met in het achterhoofd een citaat van Stanley Morison~\cite{Morison} +over de opbouw van de titelpagina: +\begin{quotation} + Daar onderkast een noodzakelijk kwaad is, dat we in de hand moeten + houden als we het niet kunnen uitroeien, moet het gebruik daarvan + worden vermeden daar waar dat het minst logisch en het + onaantrekkelijkst is: in grote corpsen. De belangrijkste regel moet + uit kapitalen worden gezet~[\dots]. En wat er ook nog met de rest + van de pagina moge gebeuren, de naam van de schrijver moet, zoals + alle met nadruk gepresenteerde eigennamen, uit kapitalen worden + gezet. +\end{quotation} +heb ik de `Titlepage.sty' vervangen door een `Voorwerk' stijloptie, +die titel en schrijversnaam in kapitalen zet. + + +\section{De inhoudsopgave} + +\subsection{Beschrijving} +\subsubsection{Inventaris van kwalen} +Treebus vindt het zogenaamde `uitpunten' van een inhoudsopgave een +minder geslaagd idee. Ook over het steeds verder inspringen van kopjes +in de inhoudsopgave is hij niet te spreken. Laat dit nu precies zijn +wat \LaTeX\ doet. + +Wat mij dan nog stoort zijn de grote verschillen in zetwijze van +kopjes op verschillende nivo's. + +\subsubsection{Remedie} + +\paragraph{Kantlijnen} +Alle nummers worden tegen de linker kantlijn getrokken, en de kopjes +staan dan (allemaal) op `unitindent' van de linker kantlijn. Dit +levert geen problemen op omdat er net zoveel nivo's nummering in +kopjes als in de inhoudsopgave voorkomen. + +\paragraph{Fonts} +Kopjes worden in drie verschillende fonts gezet om de hierarchie uit +te doen komen. Ik heb gekozen voor `bf', `sl', en `rm' in +`normalsize'. Er valt over te twisten of dit misschien gewoon de fonts +van de koppen zelf moeten zijn. + +\paragraph{Verdere zetwijze} +Er wordt vrije regelval gebruikt. Het paginanummer verschijnt direct +achter het kopje (met een vaste hoeveelheid wit). + +\subsection{Implementatie} + +Ten eerste is er een commando \verb+\toc@font+ gekomen dat het font +bepaalt waarmee een kop in de inhoudsopgave gaat verschijnen. Deze +bepaling gebeurt in \verb+\@sect+, die daartoe verder is aangepast. + +Ten tweede is er, als vervanging van \verb+\@dottedtocline+, een +commando \verb+\@regtocline+\\ dat de opmaak van de kop regelt. De +merkwaardige sequentie +\begin{verbatim} +\@tempdima=\unitindent +\end{verbatim} +zorgt ervoor dat het nummer (dat in \verb+\@sect+ in een `numberline' +gestopt is) op de goede breedte gezet wordt. + +De \verb+\l@TYPE+ commando's (waar `type' is `section' en dergelijke) +zijn omgezet zodat ze \verb+\@regtocline+ gebruiken. Uitzondering: +\verb+\l@part+. Daar kom ik nog wel een keer aan toe. + + + +\chapter{Veranderingen in Rapport2} + +In de documentstijl `Rapport2' is voor veel zaken een geheel andere +keuze gemaakt dan in~`Rapport1'. Vaak betekende dit dat, gegeven de +moeite die in `Rapport1' geinvesteerd was, slechts een paar parameters +veranderd hoefden te worden. In enkele gevallen, echter, moest een +geheel nieuwe aanpak gevolgd worden. + +\section{Variaties} + +De beide hier beschreven documentstijlen hebben als voornaamste +verbetering ten opzichte van `report' een nadrukkelijk aanwezige +tweede kantlijn. In `Rapport1' wordt deze kantlijn gebruikt door al +het eenmaal ingesprongen materiaal. In~`Rapport2' wordt deze kantlijn +minder radicaal gevolgd: +\begin{itemize} +\item`verbatim' omgevingen worden weer gewoon tegen de linkerkantlijn + geplaatst; +\item de eerste kantlijn voor lijststructuren bedraagt de helft van de + paragraafinspinging; en +\item de labelbreedte van voetnoten is hieraan gelijk gemaakt. +\end{itemize} +Alles bij elkaar wordt het gewicht van de pagina verder tegen de +linkerkantlijn geplaatst. + +Van een andere kant bekeken is de tweede kantlijn (zeg dat die door de +`parindent' bepaald wordt) in de stijl~`Rapport2' juist nadrukkelijker +aanwezig: +\begin{itemize} +\item alle tussenkopjes springen in over de `parindent, en +\item de eerste regel na een kopje springt ook in. +\end{itemize} + + +\section{Behandeling van koppen} +\subsection{Sectie, subsectie, subsubsectie} +\subsubsection{Elementaria} + +Het laten inspringen van koppen gaat door een positieve waarde voor de +derde parameter van \verb.\@startsection. te specificeren. Door de +vierde parameter positief te maken springt de eerste regel na de kop +ook in. + +Omdat de tekst van de kopjes nu geen verdere kantlijn definieert hoeft +er niet zo'n moeite gedaan te worden om die te plaatsen als +in~`Rapport1'. Ik heb de normale \LaTeX-constructie van een vaste +`skip' weer in ere hersteld; op drie-tiende `em' deze keer. + +\subsubsection{Complicaties} + +Om te voorkomen dat bij lange koppen de tekst alsnog een tweede +kantlijn gaat defini"eren moest de \verb.\@hangfrom. die dit +bewerkstelligt verwijderd worden. Bij volledig verwijderen, echter, +zal de tweede regel van de kop tegen de linker kantlijn geplaatst +worden. Ook niet de bedoeling. + +In de aanpak die ik gevolgd heb hangt de tekst nu aan de inspringing; +het commando \verb.\@svsec. dat het nummer zet is gewoon in de tekst +geplaatst. + + +\subsection{Part} + +Het zou leuk zijn als de eerste regel na een `part'-kop ook insprong. +Het al dan niet inspringen van deze regel wordt bestuurd door de +schakelaar \verb.\@ifafterindent. waarop getest wordt in +\verb.\@afterheading.. Normaal wordt inspringen voorkomen door deze +schakelaar in `part' op onwaar te zetten. + +Het zal de perceptieve lezer duidelijk zijn wat ik gedaan heb om +inspringen van de eerste regel na een `part' af te dwingen. + +\section{De inhoudsopgave} + +De inhoudsopgave wordt in `Rapport2' net zo gezet als in~`Rapport1', +met het verschil dat de sectienummers nu niet links maar rechts +lijnen. Dit in het kader van het beklemtonen van de tweede kantlijn. +Hiertoe moest het commando `numberline' uit `LaTeX.tex' overgenomen en +aangepast worden. + +Overigens is de tweede kantlijn in de inhoudsopgave verder naar rechts +dan in de rest van het document. De inhoudsopgave dient dus liever +niet op een tekstpagina te beginnen. + +Dat de tweede kantlijn verder naar rechts staat betekent overigens dat +het woord `inhoudsopgave', dat als een sectiekop gezet wordt, +voorafgegaan moet worden door een `skip' ter breedte van het verschil. + + +\part{Veranderingen in Rapport3} + +Uitgaande van `Rapport1' was het kinderspel een stijl te maken die net +zo strak links lijnend oogde, maar die bovendien geen +alinea\-inspringing heeft en dit compenseert met een `parskip'. +\begin{itemize} +\item Er is gekozen voor een `parskip' ter grootte van de helft van de + `baselineskip'. +\item De `topsep' in lijststructuren --~de witruimte boven en onder de + gehele lijst~-- is \emph{minus} de halve `parskip'; netto effect is + dat hier de helft van de witruimte komt die zich tussen alineas + bevindt. +\item De grootte van de `unitindent' kon ongewijzigd blijven, + aangezien kopjes nog steeds op dezelfde wijze gezet worden. +\item Het wit onder kopjes is op nul gezet. Dit betekent niet dat er + geen wit staat, want de `parskip' krijg je hoe dan ook kado. +\end{itemize} +Het geheel oogt wel aardig. + + +\begin{thebibliography}{9} + +\bibitem{Inge}Inge Eijkhout, \emph{Gesprekken en correspondentie}, + 1989. + +\bibitem{Leslie}Leslie Lamport, \emph{\LaTeX, a document preparation + system}, Addison-Wesley, 1986. + +\bibitem{Miles}John Miles, \emph{Ontwerpen voor Desktop + Publishing\footnote{De Nederlandse uitgave is goedkoper dan de + Engelse, maar doet een zware aanslag op je ogen, door het soort + zetfout dat in \TeX\ onmogelijk zou kunnen voorkomen.}, Alles + over layout en typografie op de personal computer}, Uitgeverij + Mingus, Baarn~1988. + +\bibitem{Morison}Stanley Morison, \emph{Grondbeginselen der + Typografie}, (vertaling uit het Engels door Huib van Krimpen) + Uitgeverij de Buitenkant, Amsterdam 1987. + +\bibitem{Treebus}Karel Treebus, \emph{Tekstwijzer, een gids voor het + grafisch verwerken van tekst}, SDU~uitgeverij, 1988. + +\end{thebibliography} + + +%\vfill\eject +%\tableofcontents + + +\end{document} + + + + + + -- cgit v1.2.3