\def\fileversion{1.2c} \def\filedate{1994/03/15} % % \CheckSum{196} % %\iffalse % Style option `A4' to be used with LaTeX V2.09 % Copyright (C) 1990 Johannes Braams, Nico Poppelier. All rights reserved. % % 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 % J.L.Braams@research.ptt.nl % or: N.A.F.M. Poppelier % N.Poppelier@elsevier.nl % % %\fi % % \changes{1.0}{10 Jan 90}{Changed the margins for one-sided printing} % \changes{1.1}{23 Jan 90}{Added `WideMargins macros} % \changes{1.2}{26 Feb 90}{Consolidated setting of `marginparwidth} % \changes{1.2a}{30 Nov 90}{replaced `typeout with `wlog} % \changes{1.2b}{1994/02/28}{Update for LaTeX2e} % \changes{1.2b}{1994/02/28}{Removed some ltugboat remnants} % % \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\\ % {\tt Poppelier@elsevier.nl}\\ % \and % Johannes Braams\\ % PTT Research\\ % P.O. Box 421\\ % 2260 AK Leidschendam\\ % {\tt J.L.Braams@research.ptt.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. % {\em 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 {\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} % 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 {\sc docstrip} program provided with \LaTeXe. % \begin{macrocode} %<*driver> \ifx\documentclass\undefined \documentstyle[doc]{article} \newcommand\LaTeXe{\LaTeX\kern .15em$2_{\textstyle \varepsilon }$} \else \documentclass{article}% \usepackage{doc} \fi %\docstart % dimensions from ltugboat.sty: \setlength\textwidth{31pc} \setlength\textheight{54pc} \setlength{\parindent}{0pt} \setlength{\parskip}{2pt plus 1pt minus 1pt} \setlength{\oddsidemargin}{8pc} \setlength{\marginparwidth}{8pc} \setlength{\topmargin}{-2.5pc} \setlength{\headsep}{20pt} \setlength{\columnsep}{1.5pc} \setlength{\columnwidth}{18.75pc} \DisableCrossrefs \CodelineIndex \MakeShortVerb{\|} \newcommand\Lopt[1]{{\sf #1}} \newcommand\file[1]{{\tt #1}} \begin{document} \DocInput{a4.dtx} \end{document} % % \end{macrocode} % % \subsection{The code} % % We begin by identifying the version of this file on the terminal and % in the transcript file. % \changes{1.2c}{1994/03/15}{Provide package a4 instead of A4} % \changes{1.2c}{1994/03/15}{Added `ProcessOptions} % \changes{1.2c}{1994/03/15}{Moved `wlog to the LaTeX2.09 case} % \changes{1.2c}{1994/03/15}{Moved execution of `ProcessOptions to end % of file} % \begin{macrocode} %<*package> \ifx\documentclass\undefined \wlog{LaTeX Package `A4' \fileversion\space<\filedate> (NP and JLB)} \else \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{a4}[\filedate\space\fileversion\space A4 based page layout] \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. % % \noindent % 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} % \noindent % 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} % \noindent % the same for eleven point: % \begin{macrocode} \or \textheight 42\baselineskip % \end{macrocode} % \noindent % and for twelve point. Finally we close the |\ifcase| statement: % \begin{macrocode} \fi % \end{macrocode} % % \noindent % 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. % % \noindent % 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} % \noindent % 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} % \noindent % Here we need an if statement to test whether the option |twosided| % has been specified. % \begin{macrocode} \if@twoside % \end{macrocode} % \noindent % If it was, assign appropriate values to the margin parameters % \begin{macrocode} \oddsidemargin 0.55in \evensidemargin 0.75in \else % \end{macrocode} % \noindent % 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} % \noindent % Now we close the if statement. % \begin{macrocode} \fi % \end{macrocode} % \noindent % 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} % \noindent % 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} % \noindent % 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 {\em 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