home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-06-21 | 60.6 KB | 1,898 lines |
- % \iffalse meta-comment
- %
- % Copyright 1993-1995 the LaTeX3 project and any individual authors
- % listed elsewhere in this file. All rights reserved.
- %
- % For further copyright information see the file legal.txt, and any
- % other copyright notices in this file.
- %
- % This file is part of the LaTeX2e system.
- % ----------------------------------------
- % This system is distributed in the hope that it will be useful,
- % but WITHOUT ANY WARRANTY; without even the implied warranty of
- % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- %
- % For error reports concerning UNCHANGED versions of this file no more
- % than one year old, see bugs.txt.
- %
- % Please do not request updates from us directly. Primary
- % distribution is through the CTAN archives.
- %
- %
- % IMPORTANT COPYRIGHT NOTICE:
- %
- % You are NOT ALLOWED to distribute this file alone.
- %
- % You are allowed to distribute this file under the condition that it is
- % distributed together with all the files listed in manifest.txt.
- %
- % If you receive only some of these files from someone, complain!
- %
- % Permission is granted to copy this file to another file with a clearly
- % different name and to customize the declarations in that copy to serve
- % the needs of your installation, provided that you comply with
- % the conditions in the file legal.txt.
- %
- % However, NO PERMISSION is granted to produce or to distribute a
- % modified version of this file under its original name.
- %
- % You are NOT ALLOWED to change this file.
- %
- %
- % \fi
- %
- % \CheckSum{984}
- %% \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
- % \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}
- %<+letter>\NeedsTeXFormat{LaTeX2e}[1994/12/01]
- % \end{macrocode}
- %
- % Announce the Class name and its version.
- % \begin{macrocode}
- %<+letter>\ProvidesClass{letter}
- %<*driver>
- \ProvidesFile{letter.drv}
- %</driver>
- [1995/05/25 v1.2s
- %<+letter> Standard LaTeX document class]
- % \end{macrocode}
- %
- % \section{The documentation driver file}
- %
- % We have our own document class to format the \LaTeXe
- % documentation.
- % \fi
- % \changes{v1.0.6}{1993/12/07}{Use class ltxdoc document class}
- % \iffalse
- % \begin{macrocode}
- %<*driver>
- ]
- \documentclass{ltxdoc}
- % \end{macrocode}
- %
- % We don't want everything to appear in the index.
- % \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,\fi,\ifnum,\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{\setbox,\setcounter,\setlength}
- \DoNotIndex{\skip,\slshape,\space}
- \DoNotIndex{\trivlist,\typeout,\tw@}
- \DoNotIndex{\vskip,\vspace,\year,\z@}
- %
- \CodelineNumbered
- \CodelineIndex
- \EnableCrossrefs
- \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.
- % \begin{macrocode}
- \GetFileInfo{letter.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}}
- % \end{macrocode}
- % We also want the full details.
- % \begin{macrocode}
- \begin{document}
- \DocInput{letter.dtx}
- \PrintIndex
- % ^^A\PrintChanges
- \end{document}
- %</driver>
- % \end{macrocode}
- % \fi
- %
- % \changes{v1.1}{1993/12/18}{Changes to make it work with
- % compatibility mode.}
- % \changes{v1.1a}{1993/12/19}{Removed float parms}
- %
- % \changes{v1.1c}{1994/01/17}{Moved definition of \cs{@textop} to
- % initialization section, to counteract setting of \cs{@texttop} in
- % \cs{raggedbottom}.}
- %
- % \changes{v1.1d}{1994/01/20}{Corrected margins: Now computed from
- % \cs{paperwidth} and \cs{textwidth}, so that the text is
- % horizontally centered.}
- % \changes{v1.1e}{1994/02/03}{Corrected checksum}
- %
- % \changes{v1.2a}{1994/02/12}{Removed onecolumn and twocolumn options.}
- % \changes{v1.2a}{1994/02/12}{Changed label producing commands in .aux
- % file.}
- %
- % \changes{v1.2b}{1994/02/28}{Moved driver further up.}
- %
- % \changes{v1.2c}{1994/03/08}{Always write .aux file.}
- % \changes{v1.2f}{1994/04/29}{Use LaTeX instead of LaTeX2e in messages}
- % \changes{v1.2f}{1994/04/29}{Removed \cs{typeout} message}
- % \changes{v1.2g}{1994/05/01}{Removed the use of \cs{fileversion}
- % c.s.}
- % \changes{v1.2j}{1994/06/01}{Corrected driver code.}
- % \changes{v1.2k}{1994/06/17}{Various documentation enhancements}
- % \changes{v1.2p}{1994/12/11}{Use \cs{newcommand*} to define
- % user-level commands that take an argument}
- % \changes{v1.2q}{1995/05/17}{cleaned up \cs{changes entries}}
- % \changes{v1.2q}{1995/05/18}{replaced \cs{hbox to} by \cs{hb@xt@}}
- % \changes{v1.2r}{1995/05/23}{removed a superfluous brace}
- %
- % \iffalse
- % Copyright (C) 1994 LaTeX3 project, Frank Mittelbach
- % and Rainer Sch\"opf, all rights reserved.
- % \fi
- %
- % \author{Leslie Lamport and Frank Mittelbach and Rainer Sch\"opf}
- %
- % \title{Standard Letter Document Class for \LaTeX{} version 2e}
- %
- %
- % \maketitle
- % \tableofcontents
- %
- % \StopEventually
- %
- %
- % \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}
- %<*letter>
- \newcommand\@ptsize{}
- % \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.
- % \changes{v1.0a}{1993/12/14}{Corrected 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}
- %
- % \changes{v1.2o}{1994/08/26}{Added the option \textsf{landscape}}
- % 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}
- %
- % Two-sided printing was not supported in the \LaTeX~2.09 version
- % of this document class.
- % \changes{v1.2e}{1994/04/28}{Added oneside option and twoside option
- % in native mode}
- % \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.
- % \changes{v1.1c}{1994/01/17}{Option leqno now read from
- % \file{leqno.clo}.}
- % \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.
- % \changes{v1.1}{1993/12/18}{Corrected typo in \cs{renewcommand},
- % doubled hash marks.}
- % \changes{v1.1c}{1994/01/17}{Option fleqn now read from
- % \file{fleqn.clo}.}
- % \begin{macrocode}
- \DeclareOption{fleqn}{\input{fleqn.clo}}
- % \end{macrocode}
- %
- %
- % \section{Executing Options}
- %
- % Here we execute the default options to initialize certain
- % variables.
- % \changes{v1.2e}{1994/04/28}{Added execution of `oneside' option}
- % \begin{macrocode}
- \ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final}
- % \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 dependant code.
- % \begin{macrocode}
- \input{size1\@ptsize.clo}
- % \end{macrocode}
- %
- %
- % \section{Loading Packages}
- %
- % The standard 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{Paragraphing}
- %
- % \begin{macro}{\lineskip}
- % \begin{macro}{\normallineskip}
- % These parameters control \TeX's behavior 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}
- \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 used 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, its value depends
- % on the size option that was specified. Therefore it is
- % initialized in one of the \file{size1x.clo} files.
- % \begin{macrocode}
- \setlength\headheight{12\p@}
- \setlength\headsep {45\p@}
- % \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}
- %
- % \changes{v1.2n}{1994/07/13}{Setting of \cs{maxdepth} and
- % \cs{@maxdepth} already happens in the size.. files, removed
- % here}
- %
- % \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.
- %
- % \changes{v1.2n}{1994/07/13}{Setting \cs{textwidth} to a fixed value
- % should only happen in compatibility mode}
- % \begin{macrocode}
- \if@compatibility
- \setlength\textwidth{365\p@}
- % \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).
- % \changes{v1.2n}{1994/07/13}{Setting \cs{textheight} to a fixed value
- % should only happen in compatibility mode}
- % \begin{macrocode}
- \setlength\textheight{505\p@}
- \fi
- % \end{macrocode}
- % In native mode we use the dimensions as they were computed by one
- % of the \Lopt{xxpt} options, together with one of the
- % \Lopt{..paper} options.
- % \end{macro}
- %
- % \subsubsection{Margins}
- %
- % \begin{macro}{\oddsidemargin}
- % \begin{macro}{\evensidemargin}
- % \begin{macro}{\marginparwidth}
- % \changes{v1.1d}{1994/01/20}{Corrected margins: Now computed from
- % \cs{paperwidth} and \cs{textwidth}.} The values of
- % |\oddsidemargin| and |\evensidemargin| are computed from those of
- % |\paperwidth| and |\textwidth|.
- % \changes{v1.2n}{1994/07/13}{Added fixed values for these parameters
- % in compatibillity mode}
- % \begin{macrocode}
- \if@compatibility
- \setlength\oddsidemargin{53pt}
- \setlength\evensidemargin{53pt}
- \setlength\marginparwidth{90pt}
- \else
- \setlength\@tempdima{\paperwidth}
- \addtolength\@tempdima{-2in}
- \addtolength\@tempdima{-\textwidth}
- \setlength\oddsidemargin {.5\@tempdima}
- \setlength\evensidemargin {\oddsidemargin}
- \setlength\marginparwidth {90\p@}
- \fi
- % \end{macrocode}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- %
- % \begin{macro}{\marginparsep}
- % \begin{macro}{\marginparpush}
- % The horizontal space between the main text and marginal notes is
- % determined by |\marginparsep|, the minimum vertical separation
- % between two marginal notes is controlled by |\marginparpush|.
- % \begin{macrocode}
- \setlength\marginparsep {11\p@}
- \setlength\marginparpush{5\p@}
- % \end{macrocode}
- % \end{macro}
- % \end{macro}
- %
- % \begin{macro}{\topmargin}
- % The |\topmargin| is the distance between the top of `the
- % printable area' --which is 1 inch below the top of the paper--
- % and the top of the box which contains the running head.
- %
- % It can now be computed from the values set above.
- % \begin{macrocode}
- \setlength\topmargin{27pt}
- % \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
- % \file{latex.tex}.
- %
- % \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.
- %
- % \changes{v1.2e}{1994/04/28}{Added twoside support}
- % \begin{macrocode}
- \if@twoside
- \def\ps@headings{%
- % \end{macrocode}
- % The running feet are empty in this page style.
- % \begin{macrocode}
- \let\@oddfoot\@empty\let\@evenfoot\@empty
- % \end{macrocode}
- % The running head contains some information about this letter. The
- % head is the same for even and odd pages.
- % \changes{v1.2i}{1994/05/12}{Made running heads the same on odd and
- % even pages}
- % \changes{v1.2k}{1994/06/17}{Added a missing brace}
- % \begin{macrocode}
- \def\@oddhead{\slshape\headtoname{} \ignorespaces\toname
- \hfil \@date
- \hfil \pagename{} \thepage}%
- \let\@evenhead\@oddhead}
- % \end{macrocode}
- % For one sided printing we don't need to define |\@evenhead| so
- % the definition is somewhat simpler.
- % \begin{macrocode}
- \else
- \def\ps@headings{%
- \let\@oddfoot\@empty
- \def\@oddhead{\slshape\headtoname{} \ignorespaces\toname
- \hfil \@date
- \hfil \pagename{} \thepage}}
- \fi
- % \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.
- % \changes{v1.2e}{1994/04/28}{Also make even feet and head empty}
- % \begin{macrocode}
- \def\ps@empty{%
- \let\@oddfoot\@empty\let\@oddhead\@empty
- \let\@evenfoot\@empty\let\@evenhead\@empty}
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\ps@firstpage}
- % The page style \pstyle{firstpage} puts the telephone number
- % in the proper place for the letterhead. It should be adapted
- % to site conventions. The size of the number is determined
- % depending on the main size.
- % \begin{macrocode}
- \def\ps@firstpage{%
- \let\@oddhead\@empty
- \def\@oddfoot{\raisebox{-45\p@}[\z@]{%
- \hb@xt@\textwidth{\hspace*{100\p@}%
- \ifcase \@ptsize\relax
- \normalsize
- \or
- \small
- \or
- \footnotesize
- \fi
- \fromlocation \hfill \telephonenum}}\hss}}
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\ps@plain}
- % The definition of the page style \pstyle{plain} is again simple.
- % \changes{v1.2e}{1994/04/28}{Added definition of \cs{@evenfoot}
- % because of twoside option}
- % \changes{v1.2s}{1995/05/25}{replace \cs{rmfamily} with
- % \cs{normalfont} (PR 1578)}
- % \begin{macrocode}
- \def\ps@plain{%
- \let\@oddhead\@empty
- \def\@oddfoot{\normalfont\hfil\thepage\hfil}%
- \def\@evenfoot{\normalfont\hfil\thepage\hfil}}
- % \end{macrocode}
- % \end{macro}
- %
- %
- %
- % \section{Document Markup}
- %
- % \subsection{Global Declarations}
- %
- % \begin{macro}{\name}
- % \begin{macro}{\signature}
- % \begin{macro}{\address}
- % \begin{macro}{\location}
- % \begin{macro}{\telephone}
- % 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.
- % \begin{macrocode}
- \newcommand*{\name}[1]{\def\fromname{#1}}
- % \end{macrocode}
- % \item |\signature{Larry User}| : goes after the closing.
- % \begin{macrocode}
- \newcommand*{\signature}[1]{\def\fromsig{#1}}
- % \end{macrocode}
- % \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.
- % \begin{macrocode}
- \newcommand*{\address}[1]{\def\fromaddress{#1}}
- % \end{macrocode}
- % \item |\location{Room 374}| : Acts as modifier to the standard
- % institutional address.
- % \begin{macrocode}
- \newcommand*{\location}[1]{\def\fromlocation{#1}}
- % \end{macrocode}
- % \item |\telephone{(415)123-4567}| : Just in case some style puts it
- % on the letter.
- % \changes{v1.2m}{1994/06/23}{Removed typo (\#[] instead of [1])}
- % \begin{macrocode}
- \newcommand*{\telephone}[1]{\def\telephonenum{#1}}
- % \end{macrocode}
- % \end{itemize}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- %
- % \begin{macro}{\fromname}
- % \begin{macro}{\fromsig}
- % \begin{macro}{\fromaddress}
- % \begin{macro}{\fromlocation}
- % \begin{macro}{\telephonenum}
- % We make sure that the internal control sequences that are used to
- % store the information exist and are empty.
- % \begin{macrocode}
- \name{}
- \signature{}
- \address{}
- \location{}
- \telephone{}
- % \end{macrocode}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- % \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}{letter}
- % The letter environment creates a new letter, starting from page 1.
- % (The first page is unnumbered.) It has a single argument, which
- % is the addressee and his address, as in
- %\begin{verbatim}
- % \begin{letter}{Sam Jones \\
- % Institute for Retarded Study\\
- % Princeton, N.J.}
- %\end{verbatim}
- % Local declarations, such as |\address|, can follow the
- % |\begin{letter}|.
- % \changes{v1.2e}{1994/04/28}{When printing twosided a new letter
- % shouldn't start on the back of the previous one. Added insertion
- % of a blank page when necessary.}
- % \begin{macrocode}
- \newenvironment{letter}[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}
- % The end of the environment possibly writes the address
- % information on the \file{.aux} file.
- % \changes{v1.2p}{1994/12/11}{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{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}
- %
- %
- % \subsubsection{Page breaking control}
- %
- % \begin{macro}{\stopbreaks}
- % When the command |\stopbreaks| is issued no page breaks should
- % occur until |\startbreaks| is called.
- % \begin{macrocode}
- \newcommand*{\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}
- % These are needed by |\stopbreaks|
- % \begin{macrocode}
- \def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
-
- \def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else
- \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
-
- \def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}}
- % \end{macrocode}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- %
- % \begin{macro}{\startbreaks}
- % This cancels the effect of |\stopbreaks|.
- % \begin{macrocode}
- \newcommand*{\startbreaks}{\let\\=\@normalcr
- \interlinepenalty 200\def\par{\@@par\penalty 200\relax}}
- % \end{macrocode}
- % \end{macro}
- %
- %
- % \begin{macro}{\longindentation}
- % The size of the indent to use before the closing of the letter.
- % \begin{macrocode}
- \newdimen\longindentation
- \longindentation=.5\textwidth
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\indentedwidth}
- % The width of the closing of the letter.
- % \begin{macrocode}
- \newdimen\indentedwidth
- \indentedwidth=\textwidth
- \advance\indentedwidth -\longindentation
- % \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 fill 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]{\ifx\@empty\fromaddress
- \thispagestyle{firstpage}%
- {\raggedleft\@date\par}%
- \else % home address
- \thispagestyle{empty}%
- {\raggedleft\begin{tabular}{l}\ignorespaces
- \fromaddress \\*[2\parskip]%
- \@date \end{tabular}\par}%
- \fi
- \vspace{2\parskip}%
- {\raggedright \toname \\ \toaddress \par}%
- \vspace{2\parskip}%
- #1\par\nobreak}
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\closing}
- % The body of the letter follows, ended by a |\closing| command,
- % as in
- %\begin{verbatim}
- % \closing{Yours truly,}
- %\end{verbatim}
- % This command 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}
- % \begin{macrocode}
- \newcommand{\closing}[1]{\par\nobreak\vspace{\parskip}%
- \stopbreaks
- \noindent
- \ifx\@empty\fromaddress\else
- \hspace*{\longindentation}\fi
- \parbox{\indentedwidth}{\raggedright
- \ignorespaces #1\\[6\medskipamount]%
- \ifx\@empty\fromsig
- \fromname
- \else \fromsig \fi\strut}%
- \par}
- % \end{macrocode}
- % \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}{\cc}
- % \begin{macro}{\encl}
- % \begin{macro}{\ps}
- % 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{v1.2s}{1995/05/25}{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}
- %\begin{verbatim}
- % \encl{Foo(2)\\Bar}
- %\end{verbatim}
- % which produces:\\
- % \begin{tabular}{ll}
- % encl: & Foo(2)\\
- % & Bar
- % \end{tabular}
- % \begin{macrocode}
- \newcommand*{\encl}[1]{%
- \par\noindent
- \parbox[t]{\textwidth}{%
- \@hangfrom{\normalfont\enclname: }%
- \ignorespaces #1\strut}\par}
- % \end{macrocode}
- %
- % The only thing |\ps| needs to do is call |\startbreaks|,
- % which allows page breaking again.
- % \begin{macrocode}
- \newcommand*{\ps}{\par\startbreaks}
- % \end{macrocode}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- %
- %
- % \begin{macro}{\stopletter}
- % The |\stopletter| command is called by |\endletter| to do the
- % following:
- % \begin{itemize}
- % \item Add any desired fill 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}
- \newcommand*{\stopletter}{}
- % \end{macrocode}
- % \end{macro}
- %
- % \subsection{Customizing the labels}
- %
- % Commands for generating the labels are put on the \file{.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}
- % The return address for the mailing labels can be stored in this
- % macro.
- % \begin{macrocode}
- \newcommand*{\returnaddress}{}
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\labelcount}
- % A register to count the labels
- % \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{v1.2q}{1995/03/14}{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 you
- % will have to defined your own |\mlabel| command.
- % \changes{v1.2p}{1994/12/11}{Redefined \cs{mlabel} to not use the
- % \cs{setbox} primitive}
- % \changes{v1.2q}{1995/03/14}{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}{\@beginparpenalty}
- % \begin{macro}{\@endparpenalty}
- % These penalties are inserted before and after a list or paragraph
- % environment. They are set to a bonus value to encourage page
- % breaking at these points.
- % \begin{macro}{\@itempenalty}
- % This penalty is inserted between list items.
- % \begin{macrocode}
- \@beginparpenalty -\@lowpenalty
- \@endparpenalty -\@lowpenalty
- \@itempenalty -\@lowpenalty
- % \end{macrocode}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- %
- % \begin{macro}{\@listI}
- % \begin{macro}{\@listi}
- % |\@listI| defines top level and |\@listi| values of
- % |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep|
- %
- % \begin{macrocode}
- \def\@listI{\setlength\leftmargin{\leftmargini}
- \setlength\parsep {0\p@}%
- \setlength\topsep {.4em}%
- \setlength\itemsep{.4em}}
- \let\@listi\@listI
- % \end{macrocode}
- % We have to initialize 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 {\setlength \leftmargin{\leftmarginii}%
- \setlength \labelwidth{\leftmarginii}%
- \addtolength\labelwidth{-\labelsep}}
- \def\@listiii{\setlength \leftmargin{\leftmarginiii}%
- \setlength \labelwidth{\leftmarginiii}%
- \addtolength\labelwidth{-\labelsep}%
- \setlength \topsep {.2em}%
- \setlength \itemsep {\topsep}}
- \def\@listiv {\setlength \leftmargin{\leftmarginiv}%
- \setlength \labelwidth{\leftmarginiv}%
- \addtolength\labelwidth{-\labelsep}}
- \def\@listv {\setlength \leftmargin{\leftmarginv}%
- \setlength \labelwidth{\leftmarginv}%
- \addtolength\labelwidth{-\labelsep}}
- \def\@listvi {\setlength \leftmargin{\leftmarginvi}%
- \setlength \labelwidth{\leftmarginvi}%
- \addtolength\labelwidth{-\labelsep}}
- % \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.tex}, 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 commands |\labelenumi| ... |\labelenumiv| generate the label
- % for each item.
- % \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}
- % \changes{v1.2h}{1994/05/06}{Inserted \cs{normalfont}}
- % \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 centered dot.
- %
- % \changes{v1.2n}{1994/07/11}{renamed \cs{labelitemiiii} to
- % \cs{labelitemiii}}
- % \begin{macrocode}
- \newcommand\labelitemi{$\m@th\bullet$}
- \newcommand\labelitemii{\normalfont\bfseries --}
- \newcommand\labelitemiii{$\m@th\ast$}
- \newcommand\labelitemiv{$\m@th\cdot$}
- % \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 \file{latex.tex}.
- %
- % \begin{macrocode}
- \newenvironment{description}
- {\list{}{\labelwidth\z@ \itemindent-\leftmargin
- \let\makelabel\descriptionlabel}}
- {\endlist}
- % \end{macrocode}
- % \end{environment}
- %
- % \begin{macro}{\descriptionlabel}
- % To change the formatting of the label, you must redefine
- % |\descriptionlabel|.
- %
- % \changes{v1.2q}{1995/03/14}{made command short}
- % \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 environments,
- % the defaults, supplied by \file{latex.ltx} 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
- % compatibility, 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.
- % \changes{v1.0a}{1993/12/14}{Added compatibility mode support.}
- % \changes{v1.1}{1993/12/18}{Changed \cs{@newfontswitch} to
- % \cs{@renewfontswitch}, removed switch.}
- % \changes{v1.2d}{1994/04/14}{\cs{@renewfontswitch} has become
- % \cs{DeclareOldFontCommand}}
- % \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.
- % \changes{v1.0a}{1993/12/14}{Added compatibility mode support.}
- % \changes{v1.1}{1993/12/18}{Changed \cs{@newfontswitch} to
- % \cs{@renewfontswitch}, removed switch.}
- % \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.
- % \changes{v1.0a}{1993/12/14}{Added compatibility mode support.}
- % \changes{v1.1}{1993/12/18}{Changed \cs{@newfontswitch} to
- % \cs{@renewfontswitch}, removed switch.}
- % \changes{v1.1b}{1993/12/20}{Added forgotten re.}
- % \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.0a}{1993/12/14}{Macro added}
- % \begin{macro}{\mit}
- % \changes{v1.0a}{1993/12/14}{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{v1.2p}{1994/12/11}{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 height 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}
- % A counter for footnotes.
- % \begin{macrocode}
- % \newcounter{footnote}
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\@makefntext}
- % \changes{v1.2c}{1994/03/08}{Always call \cs{@makefnmark}.}
- % 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
- % flush right against the footnote.
- %
- % In these document class 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.
- %
- % \begin{macrocode}
- \long\def\@makefntext#1{%
- \noindent
- \hangindent 5\p@
- \hb@xt@5\p@{\hss\@makefnmark}#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}
- %\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
- % \end{macrocode}
- % \end{macro}
- %
- % \subsection{Words}
- %
- % \begin{macro}{\ccname}
- % \begin{macro}{\enclname}
- % \begin{macro}{\pagename}
- % \begin{macro}{\headtoname}
- % 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*{\ccname}{cc}
- \newcommand*{\enclname}{encl}
- \newcommand*{\pagename}{Page}
- \newcommand*{\headtoname}{To}
- % \end{macrocode}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- % \end{macro}
-
- % \subsection{Date}
- %
- % \begin{macro}{\today}
- % This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
- % to provide the date of the \LaTeX-run.
- % \begin{macrocode}
- \newcommand*{\today}{\ifcase\month\or
- January\or February\or March\or April\or May\or June\or
- July\or August\or September\or October\or November\or December\fi
- \space\number\day, \number\year}
- % \end{macrocode}
- % \end{macro}
- %
- % \subsection{Two column mode}
- %
- % \begin{macro}{\columnsep}
- % This gives the distance between two columns in two column mode.
- % \begin{macrocode}
- \setlength\columnsep{10\p@}
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\columnseprule}
- % This gives the width of the rule between two columns in two
- % column mode. We have no visible rule.
- % \begin{macrocode}
- \setlength\columnseprule{0\p@}
- % \end{macrocode}
- % \end{macro}
- %
- % \subsection{The page style}
- % We have \pstyle{plain} pages in this document class by
- % default. We use arabic page numbers.
- % \begin{macrocode}
- \pagestyle{plain}
- \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 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 fil value may have to be
- % changed for other letterheads. This setting has to be done after
- % |\raggedbottom| is executed, since the latter sets |\@texttop| to
- % |\relax|.
- % \begin{macrocode}
- \def\@texttop{\ifnum\c@page=1\vskip \z@ plus.00006fil\relax\fi}
- % \end{macrocode}
- % \end{macro}
- %
- % We always start in one column mode.
- % \begin{macrocode}
- \onecolumn
- %</letter>
- % \end{macrocode}
- %
- %
- %
- % \Finale
- %
- \endinput
-