diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex-dev/base/letter.dtx |
Initial commit
Diffstat (limited to 'macros/latex-dev/base/letter.dtx')
-rw-r--r-- | macros/latex-dev/base/letter.dtx | 1903 |
1 files changed, 1903 insertions, 0 deletions
diff --git a/macros/latex-dev/base/letter.dtx b/macros/latex-dev/base/letter.dtx new file mode 100644 index 0000000000..d3d3fa4e6a --- /dev/null +++ b/macros/latex-dev/base/letter.dtx @@ -0,0 +1,1903 @@ +% \iffalse meta-comment +% +% Copyright 1993-2016 +% The LaTeX3 Project and any individual authors listed elsewhere +% in this file. +% +% This file is part of the LaTeX base system. +% ------------------------------------------- +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% https://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This file has the LPPL maintenance status "maintained". +% +% The list of all files belonging to the LaTeX base distribution is +% given in the file `manifest.txt'. See also `legal.txt' for additional +% information. +% +% 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 +% +% +% \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}[1996/06/01] +% \end{macrocode} +% +% Announce the Class name and its version. +% \begin{macrocode} +%<+letter>\ProvidesClass{letter} +%<*driver> + \ProvidesFile{letter.drv} +%</driver> + [2014/09/29 v1.2z +%<+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}{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} +% +% +% \MaintainedByLaTeXTeam{latex} +% \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 were 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 dependent 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|, +% 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 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 compatibility 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. +% +% +% \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. +% +% \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$, with footnotes starting from $1$ as well. +% (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.} +% \changes{v1.2z}{1999/04/29}{Reset footnote counter to 0, (PR 2957).} +% \begin{macrocode} +\newenvironment{letter}[1] + {\newpage + \if@twoside \ifodd\c@page + \else\thispagestyle{empty}\null\newpage\fi + \fi + \c@page \@ne + \c@footnote \z@ + \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} +% \end{macrocode} +% +% \begin{macrocode} +\long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}} +% \end{macrocode} +% +% \begin{macrocode} +\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} +% \changes{v1.2t}{1996/01/20}{Made robust pr/2049} +% \begin{macro}{\@nobreakvspacex} +% \begin{macro}{\@nobreakcr} +% These are needed by |\stopbreaks| +% \begin{macrocode} +\DeclareRobustCommand\@nobreakvspace + {\@ifstar\@nobreakvspacex\@nobreakvspacex} +% \end{macrocode} +% +% \begin{macrocode} +\def\@nobreakvspacex#1{% + \ifvmode + \nobreak\vskip #1\relax + \else + \@bsphack\vadjust{\nobreak\vskip #1}\@esphack + \fi} +% \end{macrocode} +% +% \changes{v1.2w}{1997/01/07} +% {Simplify definition, for ltspace 1.2u. /2341} +% \begin{macrocode} +\def\@nobreakcr{\@ifstar{\@normalcr*}{\@normalcr*}} +% \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}% +% \end{macrocode} +% \changes{v1.2y}{1998/05/10}{Avoid space at right of tabular +% (pr2794)} +% \begin{macrocode} + {\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}{\medskipamount} +% \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 address} : 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 define 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} +% The macro |\@mlabel| is written to the \file{.aux} file instead +% of |\mlabel|. This allows us to make it a no-op by default, +% and then 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 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 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}} +% \changes{v1.2u}{1996/08/25}{replaced -{}- with \cs{textendash}} +% \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}} +% \changes{v1.2x}{1997/04/16}{Changed to \cs{textbullet}, +% \cs{textasteriskcentered} and \cs{textperiodcentered}} +% \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|. +% +% \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 the \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 +% 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 this 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 |