1 % \iffalse meta-comment
4 % The LaTeX3 Project and any individual authors listed elsewhere
7 % This file is part of the LaTeX base system.
8 % -------------------------------------------
10 % It may be distributed and/or modified under the
11 % conditions of the LaTeX Project Public License, either version 1.3c
12 % of this license or (at your option) any later version.
13 % The latest version of this license is in
14 % http://www.latex-project.org/lppl.txt
15 % and version 1.3c or later is part of all distributions of LaTeX
16 % version 2005/12/01 or later.
18 % This file has the LPPL maintenance status "maintained".
20 % The list of all files belonging to the LaTeX base distribution is
21 % given in the file `manifest.txt'. See also `legal.txt' for additional
24 % The list of derived (unpacked) files belonging to the distribution
25 % and covered by LPPL is defined by the unpacking scripts (with
26 % extension .ins) which are part of the distribution.
32 % \section{Identification}
35 % This document class can only be used with \LaTeXe, so we make
36 % sure that an appropriate message is displayed when another \TeX{}
39 %<+letter>\NeedsTeXFormat{LaTeX2e}[1996/06/01]
42 % Announce the Class name and its version.
44 %<+letter>\ProvidesClass{letter}
46 \ProvidesFile{letter.drv}
49 %<+letter> Standard LaTeX document class]
52 % \section{The documentation driver file}
54 % We have our own document class to format the \LaTeXe{}
57 % \changes{v1.0}{1993/12/07}{Use class ltxdoc document class}
62 \documentclass{ltxdoc}
65 % We don't want everything to appear in the index.
67 \DoNotIndex{\@Alph,\@alph,\@arabic,\@badmath}
68 \DoNotIndex{\@centercr}
69 \DoNotIndex{\@empty,\@ignoretrue}
71 \DoNotIndex{\@M,\@minus,\@ne,\@plus}
72 \DoNotIndex{\\,\addtolength}
74 \DoNotIndex{\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
76 \DoNotIndex{\cdot,\cr,\day,\DeclareOption}
77 \DoNotIndex{\def,\DocInput,\documentclass}
78 \DoNotIndex{\DoNotIndex,\egroup,\ifx,\else,\fi,\endtrivlist}
79 \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
80 \DoNotIndex{\endlist,\everycr,\ExecuteOptions}
81 \DoNotIndex{\filedate,\filename,\fileversion}
82 \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
83 \DoNotIndex{\hsize,\hskip,\hspace,\hss,\ifcase,\or,\fi}
84 \DoNotIndex{\ifvmode,\fi,\ifnum,\fi,\input}
85 \DoNotIndex{\kern,\leavevmode,\let,\leftmark}
86 \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark}
87 \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
88 \DoNotIndex{\NeedsTeXFormat,\newdimen}
89 \DoNotIndex{\newpage,\nobreak,\noindent,\number}
91 \DoNotIndex{\pagestyle,\par}
92 \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
93 \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
94 \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
95 \DoNotIndex{\rightmargin,\rlap,\rmfamily}
96 \DoNotIndex{\setbox,\setcounter,\setlength}
97 \DoNotIndex{\skip,\slshape,\space}
98 \DoNotIndex{\trivlist,\typeout,\tw@}
99 \DoNotIndex{\vskip,\vspace,\year,\z@}
106 % We use so many \file{docstrip} modules that we set the
107 % \texttt{StandardModuleDepth} counter to 1.
109 \setcounter{StandardModuleDepth}{1}
111 % The following command retrieves the date and version information
114 \GetFileInfo{letter.drv}
116 % Some commonly used abbreviations
118 \newcommand*{\Lopt}[1]{\textsf {#1}}
119 \newcommand*{\file}[1]{\texttt {#1}}
120 \newcommand*{\Lcount}[1]{\textsl {\small#1}}
121 \newcommand*{\pstyle}[1]{\textsl {#1}}
123 % We also want the full details.
126 \DocInput{letter.dtx}
134 % \changes{v1.1}{1993/12/18}{Changes to make it work with
135 % compatibility mode.}
136 % \changes{v1.1a}{1993/12/19}{Removed float parms}
138 % \changes{v1.1c}{1994/01/17}{Moved definition of \cs{@textop} to
139 % initialization section, to counteract setting of \cs{@texttop} in
140 % \cs{raggedbottom}.}
142 % \changes{v1.1d}{1994/01/20}{Corrected margins: Now computed from
143 % \cs{paperwidth} and \cs{textwidth}, so that the text is
144 % horizontally centered.}
145 % \changes{v1.1e}{1994/02/03}{Corrected checksum}
147 % \changes{v1.2a}{1994/02/12}{Removed onecolumn and twocolumn options.}
148 % \changes{v1.2a}{1994/02/12}{Changed label producing commands in .aux
151 % \changes{v1.2b}{1994/02/28}{Moved driver further up.}
153 % \changes{v1.2c}{1994/03/08}{Always write .aux file.}
154 % \changes{v1.2f}{1994/04/29}{Use LaTeX instead of LaTeX2e in messages}
155 % \changes{v1.2f}{1994/04/29}{Removed \cs{typeout} message}
156 % \changes{v1.2g}{1994/05/01}{Removed the use of \cs{fileversion}
158 % \changes{v1.2j}{1994/06/01}{Corrected driver code.}
159 % \changes{v1.2k}{1994/06/17}{Various documentation enhancements}
160 % \changes{v1.2p}{1994/12/11}{Use \cs{newcommand*} to define
161 % user-level commands that take an argument}
162 % \changes{v1.2q}{1995/05/17}{cleaned up \cs{changes entries}}
163 % \changes{v1.2q}{1995/05/18}{replaced \cs{hbox to} by \cs{hb@xt@}}
164 % \changes{v1.2r}{1995/05/23}{removed a superfluous brace}
167 % Copyright (C) 1994 LaTeX3 project, Frank Mittelbach
168 % and Rainer Sch\"opf, all rights reserved.
171 % \author{Leslie Lamport and Frank Mittelbach and Rainer Sch\"opf}
173 % \title{Standard Letter Document Class for \LaTeX{} version 2e}
176 % \MaintainedByLaTeXTeam{latex}
183 % \section{Initial Code}
185 % In this part we define a few commands that are used later on.
187 % \begin{macro}{\@ptsize}
188 % This control sequence is used to store the second digit of the
189 % pointsize we are typesetting in. So, normally, it's value is one
193 \newcommand\@ptsize{}
199 % \subsection{Setting Paper Sizes}
201 % The variables |\paperwidth| and |\paperheight| should reflect the
202 % physical paper size after trimming. For desk printer output this
203 % is usually the real paper size since there is no post-processing.
204 % \changes{v1.0a}{1993/12/14}{Corrected typo, A4 is not 279 mm high}
206 \DeclareOption{a4paper}
207 {\setlength\paperheight {297mm}%
208 \setlength\paperwidth {210mm}}
209 \DeclareOption{a5paper}
210 {\setlength\paperheight {210mm}%
211 \setlength\paperwidth {148mm}}
212 \DeclareOption{b5paper}
213 {\setlength\paperheight {250mm}%
214 \setlength\paperwidth {176mm}}
215 \DeclareOption{letterpaper}
216 {\setlength\paperheight {11in}%
217 \setlength\paperwidth {8.5in}}
218 \DeclareOption{legalpaper}
219 {\setlength\paperheight {14in}%
220 \setlength\paperwidth {8.5in}}
221 \DeclareOption{executivepaper}
222 {\setlength\paperheight {10.5in}%
223 \setlength\paperwidth {7.25in}}
226 % \changes{v1.2o}{1994/08/26}{Added the option \textsf{landscape}}
227 % The option \Lopt{landscape} switches the values of |\paperheight|
228 % and |\paperwidth|, assuming the dimensions were given for portrait
231 \DeclareOption{landscape}
232 {\setlength\@tempdima {\paperheight}%
233 \setlength\paperheight {\paperwidth}%
234 \setlength\paperwidth {\@tempdima}}
237 % \subsection{Choosing the type size}
239 % The type size options are handled by defining |\@ptsize| to
240 % contain the last digit of the size in question and branching on
241 % |\ifcase| statements. This is done for historical reasons to stay
242 % compatible with other packages that use the |\@ptsize| variable
243 % to select special actions. It makes the declarations of size
244 % options less than 10pt difficult, although one can probably use
245 % \texttt{9} and \texttt{8} assuming that a class wont define both
246 % \Lopt{8pt} and \Lopt{18pt} options.
249 \DeclareOption{10pt}{\renewcommand\@ptsize{0}}
250 \DeclareOption{11pt}{\renewcommand\@ptsize{1}}
251 \DeclareOption{12pt}{\renewcommand\@ptsize{2}}
255 % \subsection{Two-side or one-side printing}
257 % Two-sided printing was not supported in the \LaTeX~2.09 version
258 % of this document class.
259 % \changes{v1.2e}{1994/04/28}{Added oneside option and twoside option
263 \DeclareOption{twoside}{\@latexerr{No `twoside' layout for letters}%
266 \DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
272 \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
275 % \subsection{Draft option}
277 % If the user requests \Lopt{draft} we show any overfull boxes.
278 % We could probably add some more interesting stuff to this option.
280 \DeclareOption{draft}{\setlength\overfullrule{5pt}}
281 \DeclareOption{final}{\setlength\overfullrule{0pt}}
285 % \subsection{Equation numbering on the left}
287 % The option \Lopt{leqno} can be used to get the equation numbers
288 % on the left side of the equation.
289 % \changes{v1.1c}{1994/01/17}{Option leqno now read from
292 \DeclareOption{leqno}{\input{leqno.clo}}
295 % \subsection{Flush left displays}
297 % The option \Lopt{fleqn} redefines the displayed math environments
298 % in such a way that they come out flush left, with an indentation
299 % of |\mathindent| from the prevailing left margin.
300 % \changes{v1.1}{1993/12/18}{Corrected typo in \cs{renewcommand},
301 % doubled hash marks.}
302 % \changes{v1.1c}{1994/01/17}{Option fleqn now read from
305 \DeclareOption{fleqn}{\input{fleqn.clo}}
309 % \section{Executing Options}
311 % Here we execute the default options to initialize certain
313 % \changes{v1.2e}{1994/04/28}{Added execution of `oneside' option}
315 \ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final}
318 % The |\ProcessOptions| command causes the execution of the code
319 % for every option \Lopt{foo} which is declared and for which the
320 % user typed the \Lopt{foo} option in his |\documentclass| command.
321 % For every option \Lopt{bar} he typed, which is not declared, the
322 % option is assumed to be a global option. All options will be
323 % passed as document options to any |\usepackage| command in the
328 % Now that all the options have been executed we can load the
329 % chosen class option file that contains all size dependent code.
331 \input{size1\@ptsize.clo}
335 % \section{Loading Packages}
337 % The standard class files do not load additional packages.
340 % \section{Document Layout}
341 % \label{sec:maincode}
343 % In this section we are finally dealing with the nasty typographical
346 % \subsection{Paragraphing}
348 % \begin{macro}{\lineskip}
349 % \begin{macro}{\normallineskip}
350 % These parameters control \TeX's behavior when two lines tend to
351 % come too close together.
353 \setlength\lineskip{1\p@}
354 \setlength\normallineskip{1\p@}
359 % \begin{macro}{\baselinestretch}
360 % This is used as a multiplier for |\baselineskip|. The default is
361 % to {\em not\/} stretch the baselines.
363 \renewcommand\baselinestretch{}
367 % \begin{macro}{\parskip}
368 % \begin{macro}{\parindent}
369 % |\parskip| gives extra vertical space between paragraphs and
370 % |\parindent| is the width of the paragraph indentation.
371 % Letters are typeset without paragraph indentation.
373 \setlength\parskip{0.7em}
374 \setlength\parindent{0\p@}
379 % \begin{macro}{\@lowpenalty}
380 % \begin{macro}{\@medpenalty}
381 % \begin{macro}{\@highpenalty}
382 % The commands |\nopagebreak| and |\nolinebreak| put in penalties
383 % to discourage these breaks at the point they are put in.
384 % They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|,
385 % dependent on their argument.
395 % \begin{macro}{\clubpenalty}
396 % \begin{macro}{\widowpenalty}
397 % These penalties are used to discourage club and widow lines.
398 % Because we use their default values we only show them here,
407 % \begin{macro}{\displaywidowpenalty}
408 % \begin{macro}{\predisplaypenalty}
409 % \begin{macro}{\postdisplaypenalty}
410 % Discourage (but not so much) widows in front of a math display
411 % and forbid breaking directly in front of a display. Allow break
412 % after a display without a penalty. Again the default values are
413 % used, therefore we only show them here.
415 % \displaywidowpenalty 50
416 % \predisplaypenalty 10000
417 % \postdisplaypenalty 0
423 % \begin{macro}{\interlinepenalty}
424 % Allow the breaking of a page in the middle of a paragraph.
426 % \interlinepenalty 0
431 % \begin{macro}{\brokenpenalty}
432 % We allow the breaking of a page after a hyphenated line.
439 % \subsection{Page Layout}
441 % All margin dimensions are measured from a point one inch from the
442 % top and lefthand side of the page.
444 % \subsubsection{Vertical spacing}
446 % \begin{macro}{\headheight}
447 % \begin{macro}{\headsep}
448 % The |\headheight| is the height of the box that will contain the
449 % running head. The |\headsep| is the distance between the bottom
450 % of the running head and the top of the text. |\topskip| is the
451 % |\baselineskip| for the first line on a page, its value depends
452 % on the size option that was specified. Therefore it is
453 % initialized in one of the \file{size1x.clo} files.
455 \setlength\headheight{12\p@}
456 \setlength\headsep {45\p@}
461 % \begin{macro}{\footskip}
462 % The distance from the baseline of the box which contains the
463 % running footer to the baseline of last line of text is controlled
464 % by the |\footskip|.
467 \setlength\footskip{25\p@}
471 % \changes{v1.2n}{1994/07/13}{Setting of \cs{maxdepth} and
472 % \cs{@maxdepth} already happens in the size.. files, removed
475 % \subsubsection{The dimension of text}
477 % \begin{macro}{\textwidth}
478 % When we are in compatibility mode we have to make sure that the
479 % dimensions of the printed area are not different from what the
480 % user was used to see.
482 % \changes{v1.2n}{1994/07/13}{Setting \cs{textwidth} to a fixed value
483 % should only happen in compatibility mode}
486 \setlength\textwidth{365\p@}
490 % \begin{macro}{\textheight}
491 % Now that we have computed the width of the text, we have to take
492 % care of the height. The |\textheight| is the height of text
493 % (including footnotes and figures, excluding running head and
495 % \changes{v1.2n}{1994/07/13}{Setting \cs{textheight} to a fixed value
496 % should only happen in compatibility mode}
498 \setlength\textheight{505\p@}
501 % In native mode we use the dimensions as they were computed by one
502 % of the \Lopt{xxpt} options, together with one of the
503 % \Lopt{..paper} options.
506 % \subsubsection{Margins}
508 % \begin{macro}{\oddsidemargin}
509 % \begin{macro}{\evensidemargin}
510 % \begin{macro}{\marginparwidth}
511 % \changes{v1.1d}{1994/01/20}{Corrected margins: Now computed from
512 % \cs{paperwidth} and \cs{textwidth}.} The values of
513 % |\oddsidemargin| and |\evensidemargin| are computed from those of
514 % |\paperwidth| and |\textwidth|.
515 % \changes{v1.2n}{1994/07/13}{Added fixed values for these parameters
516 % in compatibility mode}
519 \setlength\oddsidemargin{53pt}
520 \setlength\evensidemargin{53pt}
521 \setlength\marginparwidth{90pt}
523 \setlength\@tempdima{\paperwidth}
524 \addtolength\@tempdima{-2in}
525 \addtolength\@tempdima{-\textwidth}
526 \setlength\oddsidemargin {.5\@tempdima}
527 \setlength\evensidemargin {\oddsidemargin}
528 \setlength\marginparwidth {90\p@}
535 % \begin{macro}{\marginparsep}
536 % \begin{macro}{\marginparpush}
537 % The horizontal space between the main text and marginal notes is
538 % determined by |\marginparsep|, the minimum vertical separation
539 % between two marginal notes is controlled by |\marginparpush|.
541 \setlength\marginparsep {11\p@}
542 \setlength\marginparpush{5\p@}
547 % \begin{macro}{\topmargin}
548 % The |\topmargin| is the distance between the top of `the
549 % printable area' --which is 1 inch below the top of the paper--
550 % and the top of the box which contains the running head.
552 % It can now be computed from the values set above.
554 \setlength\topmargin{27pt}
559 % \subsubsection{Footnotes}
561 % \begin{macro}{\footnotesep}
562 % |\footnotesep| is the height of the strut placed at the beginning
563 % of every footnote. It equals the height of a normal
564 % |\footnotesize| strut in this
565 % class, thus no extra space occurs between footnotes.
567 \setlength\footnotesep{12\p@}
571 % \begin{macro}{\footins}
572 % |\skip\footins| is the space between the last line of the main
573 % text and the top of the first footnote.
575 \setlength{\skip\footins}{10\p@ \@plus 2\p@ \@minus 4\p@}
580 % \subsection{Page Styles}
582 % The page style \pstyle{foo} is defined by defining the command
583 % |\ps@foo|. This command should make only local definitions.
584 % There should be no stray spaces in the definition, since they
585 % could lead to mysterious extra spaces in the output (well, that's
586 % something that should be always avoided).
588 % \begin{macro}{\@evenhead}
589 % \begin{macro}{\@oddhead}
590 % \begin{macro}{\@evenfoot}
591 % \begin{macro}{\@oddfoot}
592 % The |\ps@...| command defines the macros |\@oddhead|,
593 % |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running
594 % heads and feet---e.g., |\@oddhead| is the macro to produce the
595 % contents of the heading box for odd-numbered pages. It is called
596 % inside an |\hbox| of width |\textwidth|.
602 % \subsubsection{Marking conventions}
604 % To make headings determined by the sectioning commands, the page
605 % style defines the commands |\chaptermark|, |\sectionmark|,
606 % \ldots, where |\chaptermark{|\meta{text}|}| is called by
607 % |\chapter| to set a mark, and so on.
609 % The |\...mark| commands and the |\...head| macros are defined
610 % with the help of the following macros. (All the |\...mark|
611 % commands should be initialized to no-ops.)
613 % \LaTeX{} extends \TeX's |\mark| facility by producing two kinds
614 % of marks, a `left' and a `right' mark, using the following
617 % |\markboth{|\meta{left}|}{|\meta{right}|}|: Adds both marks.
619 % |\markright{|\meta{right}|}|: Adds a `right' mark.
621 % |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
622 % or |\@evenfoot| macros, it gets the current `left'
623 % mark. |\leftmark| works like \TeX's |\botmark|
626 % |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
627 % or |\@evenfoot| macros, it gets the current
628 % `right' mark. |\rightmark| works like \TeX's
629 % |\firstmark| command.
632 % The marking commands work reasonably well for right marks
633 % `numbered within' left marks--e.g., the left mark is changed by a
634 % |\chapter| command and the right mark is changed by a |\section|
635 % command. However, it does produce somewhat anomalous results if
636 % two |\markboth|'s occur on the same page.
639 % Commands like |\tableofcontents| that should set the marks in some
640 % page styles use a |\@mkboth| command, which is |\let| by the
641 % pagestyle command (|\ps@...|) to |\markboth| for setting the
642 % heading or to |\@gobbletwo| to do nothing.
645 % \subsubsection{Defining the page styles}
646 % \label{sec:pagestyle}
648 % The pagestyles \pstyle{empty} and \pstyle{plain} are defined in
649 % the \LaTeX{} kernel (\file{ltpage.dtx}), but these definitions
650 % are changed to a simpler version for this document class.
652 % \begin{macro}{\ps@headings}
653 % The definition of the page style \pstyle{headings} has to be
654 % different for two sided printing than it is for one sided
657 % \changes{v1.2e}{1994/04/28}{Added twoside support}
662 % The running feet are empty in this page style.
664 \let\@oddfoot\@empty\let\@evenfoot\@empty
666 % The running head contains some information about this letter. The
667 % head is the same for even and odd pages.
668 % \changes{v1.2i}{1994/05/12}{Made running heads the same on odd and
670 % \changes{v1.2k}{1994/06/17}{Added a missing brace}
672 \def\@oddhead{\slshape\headtoname{} \ignorespaces\toname
674 \hfil \pagename{} \thepage}%
675 \let\@evenhead\@oddhead}
677 % For one sided printing we don't need to define |\@evenhead| so
678 % the definition is somewhat simpler.
683 \def\@oddhead{\slshape\headtoname{} \ignorespaces\toname
685 \hfil \pagename{} \thepage}}
691 % \begin{macro}{\ps@empty}
692 % The definition of the page style \pstyle{empty} is simple:
693 % No running head or foot at all.
694 % \changes{v1.2e}{1994/04/28}{Also make even feet and head empty}
697 \let\@oddfoot\@empty\let\@oddhead\@empty
698 \let\@evenfoot\@empty\let\@evenhead\@empty}
702 % \begin{macro}{\ps@firstpage}
703 % The page style \pstyle{firstpage} puts the telephone number
704 % in the proper place for the letterhead. It should be adapted
705 % to site conventions. The size of the number is determined
706 % depending on the main size.
710 \def\@oddfoot{\raisebox{-45\p@}[\z@]{%
711 \hb@xt@\textwidth{\hspace*{100\p@}%
712 \ifcase \@ptsize\relax
719 \fromlocation \hfill \telephonenum}}\hss}}
723 % \begin{macro}{\ps@plain}
724 % The definition of the page style \pstyle{plain} is again simple.
725 % \changes{v1.2e}{1994/04/28}{Added definition of \cs{@evenfoot}
726 % because of twoside option}
727 % \changes{v1.2s}{1995/05/25}{replace \cs{rmfamily} with
728 % \cs{normalfont} (PR 1578)}
732 \def\@oddfoot{\normalfont\hfil\thepage\hfil}%
733 \def\@evenfoot{\normalfont\hfil\thepage\hfil}}
739 % \section{Document Markup}
741 % \subsection{Global Declarations}
743 % \begin{macro}{\name}
744 % \begin{macro}{\signature}
745 % \begin{macro}{\address}
746 % \begin{macro}{\location}
747 % \begin{macro}{\telephone}
748 % The following declarations, shown with examples, give information
751 % \item |\name{Dr. L. User}| : to be used for the return address on
754 \newcommand*{\name}[1]{\def\fromname{#1}}
756 % \item |\signature{Larry User}| : goes after the closing.
758 \newcommand*{\signature}[1]{\def\fromsig{#1}}
760 % \item |\address{3245 Foo St.\\Gnu York}| : used as the return
762 % letter and on the envelope. If not declared, then an
763 % institutional standard address is used.
765 \newcommand*{\address}[1]{\def\fromaddress{#1}}
767 % \item |\location{Room 374}| : Acts as modifier to the standard
768 % institutional address.
770 \newcommand*{\location}[1]{\def\fromlocation{#1}}
772 % \item |\telephone{(415)123-4567}| : Just in case some style puts it
774 % \changes{v1.2m}{1994/06/23}{Removed typo (\#[] instead of [1])}
776 \newcommand*{\telephone}[1]{\def\telephonenum{#1}}
785 % \begin{macro}{\fromname}
786 % \begin{macro}{\fromsig}
787 % \begin{macro}{\fromaddress}
788 % \begin{macro}{\fromlocation}
789 % \begin{macro}{\telephonenum}
790 % We make sure that the internal control sequences that are used to
791 % store the information exist and are empty.
805 % \begin{macro}{\makelabels}
806 % The |\makelabels| declaration causes mailing labels to be made.
808 \newcommand*{\makelabels}{%
810 % At the beginning of the document, we need to activate the
811 % |\@mlabel| and |\@startlabels| commands, as well as write
812 % |\@startlabels| to the |.aux| file.
815 \let\@startlabels\startlabels
818 \immediate\write\@mainaux{\string\@startlabels}\fi}%
820 % At the end of the document we need to write |\clearpage| to the
824 \if@filesw\immediate\write\@mainaux{\string\clearpage}\fi}}
826 % |\makelabels| is allowed only before the |\begin{document}|
829 \@onlypreamble\makelabels
833 % \subsection{The generic letter commands}
835 % \begin{environment}{letter}
836 % The letter environment creates a new letter, starting from page
837 % $1$, with footnotes starting from $1$ as well.
838 % (The first page is unnumbered.) It has a single argument, which
839 % is the addressee and his address, as in
841 % \begin{letter}{Sam Jones \\
842 % Institute for Retarded Study\\
845 % Local declarations, such as |\address|, can follow the
847 % \changes{v1.2e}{1994/04/28}{When printing twosided a new letter
848 % shouldn't start on the back of the previous one. Added insertion
849 % of a blank page when necessary.}
850 % \changes{v1.2z}{1999/04/29}{Reset footnote counter to 0, (PR 2957).}
852 \newenvironment{letter}[1]
854 \if@twoside \ifodd\c@page
855 \else\thispagestyle{empty}\null\newpage\fi
859 \interlinepenalty=200 % smaller than the TeXbook value
861 % The |\leavevmode| and |\ignorespaces| commands are there for
862 % protecting against an empty argument.
864 \@processto{\leavevmode\ignorespaces #1}}
866 % The end of the environment possibly writes the address
867 % information on the \file{.aux} file.
868 % \changes{v1.2p}{1994/12/11}{No longer redefine \cs{protect} but use
869 % one of the available settings}
871 {\stopletter\@@par\pagebreak\@@par
875 \let\protect\@unexpandable@protect
876 \immediate\write\@auxout{%
877 \string\@mlabel{\returnaddress}{\toname\\\toaddress}}%
884 % \begin{macro}{\@processto}
885 % \begin{macro}{\@xproc}
886 % \begin{macro}{\@yproc}
887 % |\@processto| gets the |\toname| and |\toaddress| from the letter
888 % environment's macro argument. |\@xproc| and |\@yproc| are auxiliary
891 \long\def\@processto#1{%
893 \ifx\toaddress\@empty
900 \long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}}
904 \long\def\@yproc #1\\#2@@@{\def\toaddress{#2}}
911 % \subsubsection{Page breaking control}
913 % \begin{macro}{\stopbreaks}
914 % When the command |\stopbreaks| is issued no page breaks should
915 % occur until |\startbreaks| is called.
917 \newcommand*{\stopbreaks}{%
919 \def\par{\@@par\nobreak}%
921 \let\vspace\@nobreakvspace}
925 % \begin{macro}{\nobreakvspace}
926 % \changes{v1.2t}{1996/01/20}{Made robust pr/2049}
927 % \begin{macro}{\@nobreakvspacex}
928 % \begin{macro}{\@nobreakcr}
929 % These are needed by |\stopbreaks|
931 \DeclareRobustCommand\@nobreakvspace
932 {\@ifstar\@nobreakvspacex\@nobreakvspacex}
936 \def\@nobreakvspacex#1{%
938 \nobreak\vskip #1\relax
940 \@bsphack\vadjust{\nobreak\vskip #1}\@esphack
944 % \changes{v1.2w}{1997/01/07}
945 % {Simplify definition, for ltspace 1.2u. /2341}
947 \def\@nobreakcr{\@ifstar{\@normalcr*}{\@normalcr*}}
953 % \begin{macro}{\startbreaks}
954 % This cancels the effect of |\stopbreaks|.
956 \newcommand*{\startbreaks}{%
958 \interlinepenalty 200%
959 \def\par{\@@par\penalty 200\relax}}
964 % \begin{macro}{\longindentation}
965 % The size of the indent to use before the closing of the letter.
967 \newdimen\longindentation
968 \longindentation=.5\textwidth
972 % \begin{macro}{\indentedwidth}
973 % The width of the closing of the letter.
975 \newdimen\indentedwidth
976 \indentedwidth=\textwidth
977 \advance\indentedwidth -\longindentation
981 % \begin{macro}{\opening}
982 % Text is begun with the |\opening| command, whose argument
983 % generates the salutation, as in
985 % \opening{Dear Henry,}
987 % This should produce everything up to and including the
988 % `Dear Henry,' and a |\par| command that follows.
989 % Since there's a |\vfil| at the bottom of every page,
990 % it can add vertical fill to position a short letter.
991 % It should use the following commands:
993 % \item |\toname| : name part of `to' address.
994 % Will be one line long.
995 % \item |\toaddress| : address part of `to' address.
996 % The lines separated by |\\|.
997 % \item |\fromname| : name of sender.
998 % \item |\fromaddress| : argument of current |\address|
999 % declaration-- null if none. Should use standard institutional
1001 % \item |\fromlocation| : argument of current |\location|
1002 % declaration--null if none.
1003 % \item |\telephonenum| : argument of current |\telephone|
1004 % declaration--null if none.
1007 \newcommand*{\opening}[1]{\ifx\@empty\fromaddress
1008 \thispagestyle{firstpage}%
1009 {\raggedleft\@date\par}%
1010 \else % home address
1011 \thispagestyle{empty}%
1013 % \changes{v1.2y}{1998/05/10}{Avoid space at right of tabular
1016 {\raggedleft\begin{tabular}{l@{}}\ignorespaces
1017 \fromaddress \\*[2\parskip]%
1018 \@date \end{tabular}\par}%
1021 {\raggedright \toname \\ \toaddress \par}%
1027 % \begin{macro}{\closing}
1028 % The body of the letter follows, ended by a |\closing| command,
1031 % \closing{Yours truly,}
1033 % This command generates the closing matter, and the signature.
1034 % An obvious thing to do is to use a |\parbox| for the closing
1035 % and the signature. Should use the following:
1037 % \item |\fromsig| : argument of current |\signature| declaration
1038 % or, if null, the |\fromname|.
1039 % \item |\stopbreaks| : a macro that inhibits page breaking.
1042 \newcommand{\closing}[1]{\par\nobreak\vspace{\parskip}%
1045 \ifx\@empty\fromaddress\else
1046 \hspace*{\longindentation}\fi
1047 \parbox{\indentedwidth}{\raggedright
1048 \ignorespaces #1\\[6\medskipamount]%
1051 \else \fromsig \fi\strut}%
1056 % \begin{macro}{\smallskipamount}
1057 % \begin{macro}{\medskipamount}
1058 % \begin{macro}{\bigskipamount}
1059 % Of these three, only |\medskipmount| is actually used above.
1061 %\smallskipamount=.5\parskip
1062 \medskipamount=\parskip
1063 %\bigskipamount=2\parskip
1069 % \begin{macro}{\cc}
1070 % \begin{macro}{\encl}
1071 % \begin{macro}{\ps}
1072 % After the |\closing| you can put arbitrary stuff, which is typeset
1073 % with zero |\parindent| and no page breaking. Commands designed
1074 % for use after the closing are:
1076 % \cc{Tinker\\Evers\\Chance}
1079 % \begin{tabular}{ll}
1084 % Note the obvious use of |\parbox|.
1085 % \changes{v1.2s}{1995/05/25}{replace \cs{reset@font} with
1086 % \cs{normalfont}; remove \cs{rm}}
1088 \newcommand*{\cc}[1]{%
1090 \parbox[t]{\textwidth}{%
1091 \@hangfrom{\normalfont\ccname: }%
1092 \ignorespaces #1\strut}\par}
1095 % \encl{Foo(2)\\Bar}
1098 % \begin{tabular}{ll}
1103 \newcommand*{\encl}[1]{%
1105 \parbox[t]{\textwidth}{%
1106 \@hangfrom{\normalfont\enclname: }%
1107 \ignorespaces #1\strut}\par}
1110 % The only thing |\ps| needs to do is call |\startbreaks|,
1111 % which allows page breaking again.
1113 \newcommand*{\ps}{\par\startbreaks}
1120 % \begin{macro}{\stopletter}
1121 % The |\stopletter| command is called by |\endletter| to do the
1124 % \item Add any desired fill or other material at the end of the
1126 % \item Define |\returnaddress| to be the return address for the
1128 % More precisely, it is the first argument of the |\mlabel|
1129 % command described below. It should be defined to null if the
1130 % return address doesn't appear on the labels. Any command,
1131 % other than |\\|, that should not be expanded until the |\mlabel|
1132 % command is actually executed must be preceded by |\protect|.
1133 % Whenever possible, |\protect| commands in the definition of
1134 % |\returnaddress|---it's much more efficient that way. In
1135 % particular, when the standard return address is used, you
1136 % should define |\returnaddress| to something like
1137 % |\protect\standardreturnaddress|.
1140 \newcommand*{\stopletter}{}
1144 % \subsection{Customizing the labels}
1146 % Commands for generating the labels are put on the \file{.aux} file,
1147 % which is read in and processed by the |\end{document}| command.
1148 % You have to define the following two commands:
1150 % \item |\startlabels| : Should reset the page layout parameters if
1152 % \item |\mlabel|\marg{return address}\marg{to address} : Command to
1153 % generate a single label.
1158 % \begin{macro}{\returnaddress}
1159 % The return address for the mailing labels can be stored in this
1162 \newcommand*{\returnaddress}{}
1166 % \begin{macro}{\labelcount}
1167 % A register to count the labels
1169 \newcount\labelcount
1173 % \begin{macro}{\startlabels}
1174 % The following |\startlabels| command sets things up for
1175 % producing labels in two columns of five 2" $\times$ 4-1/4"
1176 % labels each, suitable for reproducing onto Avery brand number
1177 % 5352 address labels.
1178 % \changes{v1.2q}{1995/03/14}{changed value of \cs{columnsep} by 1pt}
1180 \newcommand*{\startlabels}{\labelcount\z@
1185 \oddsidemargin -35\p@
1186 \evensidemargin -35\p@
1188 \@colht\textheight \@colroom\textheight \vsize\textheight
1191 \ifcase \@ptsize\relax
1206 % \begin{macro}{\@startlabels}
1207 % |\@startlabels| is the command name that is written to the |.aux|
1208 % file. It is a no-op at first, and defined to be the same as
1209 % |\startlabels| in the |\begin{document}| hook.
1211 \let\@startlabels=\relax
1215 % \begin{macro}{\mlabel}
1216 % This command prints an address label; it is used when the user
1217 % specified |\makelabels| in the preamble of his document. The
1218 % command |\mlabel| takes two arguments; the second argument is
1219 % supposed to be the address; the first argument can be used to
1220 % print a return address. In this document class we ignore the
1221 % first argument. Also the labels are supposed to be 2~inch high
1222 % and 3.6~inch wide. When your address labels have a different you
1223 % will have to define your own |\mlabel| command.
1224 % \changes{v1.2p}{1994/12/11}{Redefined \cs{mlabel} to not use the
1225 % \cs{setbox} primitive}
1226 % \changes{v1.2q}{1995/03/14}{changed width of the labels slightly to
1227 % prevent \LaTeX\ stuffing two on each line}
1229 \newcommand*{\mlabel}[2]{%
1230 \parbox[b][2in][c]{262\p@}{\strut\ignorespaces #2}%
1235 % \begin{macro}{\@mlabel}
1236 % The macro |\@mlabel| is written to the \file{.aux} file instead
1237 % of |\mlabel|. This allows us to make it a no-op by default,
1238 % and then activate it in the |\begin{document}| hook.
1240 \let\@mlabel=\@gobbletwo
1245 % \subsection{Lists}
1247 % \subsubsection{General List Parameters}
1249 % The following commands are used to set the default values for the
1250 % list environment's parameters. See the \LaTeX{} manual for an
1251 % explanation of the meanings of the parameters. Defaults for the
1252 % list environment are set as follows. First, |\rightmargin|,
1253 % |\listparindent| and |\itemindent| are set to 0pt. Then, for a
1254 % \texttt{K}th level list, the command |\@listK| is called, where
1255 % `\texttt{K}' denotes `\texttt{i}', `\texttt{ii}', ... ,
1256 % `\texttt{vi}'. (I.e., |\@listiii| is called for a third-level
1257 % list.) By convention, |\@listK| should set |\leftmargin| to
1260 % \begin{macro}{\leftmargin}
1261 % \begin{macro}{\leftmargini}
1262 % \begin{macro}{\leftmarginii}
1263 % \begin{macro}{\leftmarginiii}
1264 % \begin{macro}{\leftmarginiv}
1265 % \begin{macro}{\leftmarginv}
1266 % \begin{macro}{\leftmarginvi}
1267 % For efficiency, level-one list's values are defined at top level, and
1268 % |\@listi| is defined to set only |\leftmargin|.
1270 \setlength\leftmargini {2.5em}
1272 % The following three are calculated so that they are larger than
1273 % the sum of |\labelsep| and the width of the default labels (which
1274 % are `(m)', `vii.' and `M.').
1276 \setlength\leftmarginii {2.2em}
1277 \setlength\leftmarginiii {1.87em}
1278 \setlength\leftmarginiv {1.7em}
1279 \setlength\leftmarginv {1em}
1280 \setlength\leftmarginvi {1em}
1282 % Here we set the top level leftmargin.
1284 \setlength\leftmargin {\leftmargini}
1294 % \begin{macro}{\labelsep}
1295 % \begin{macro}{\labelwidth}
1296 % |\labelsep| is the distance between the label and the text of an
1297 % item; |\labelwidth| is the width of the label.
1299 \setlength \labelsep {5\p@}
1300 \setlength \labelwidth{\leftmargini}
1301 \addtolength\labelwidth{-\labelsep}
1306 % \begin{macro}{\partopsep}
1307 % When the user leaves a blank line before the environment an extra
1308 % vertical space of |\partopsep| is inserted, in addition to
1309 % |\parskip| and |\topsep|.
1311 \setlength\partopsep{0\p@}
1315 % \begin{macro}{\@beginparpenalty}
1316 % \begin{macro}{\@endparpenalty}
1317 % These penalties are inserted before and after a list or paragraph
1318 % environment. They are set to a bonus value to encourage page
1319 % breaking at these points.
1320 % \begin{macro}{\@itempenalty}
1321 % This penalty is inserted between list items.
1323 \@beginparpenalty -\@lowpenalty
1324 \@endparpenalty -\@lowpenalty
1325 \@itempenalty -\@lowpenalty
1331 % \begin{macro}{\@listI}
1332 % \begin{macro}{\@listi}
1333 % |\@listI| defines top level and |\@listi| values of
1334 % |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep|
1337 \def\@listI{\setlength\leftmargin{\leftmargini}%
1338 \setlength\parsep {0\p@}%
1339 \setlength\topsep {.4em}%
1340 \setlength\itemsep{.4em}}
1343 % We have to initialize these parameters.
1350 % \begin{macro}{\@listii}
1351 % \begin{macro}{\@listiii}
1352 % \begin{macro}{\@listiv}
1353 % \begin{macro}{\@listv}
1354 % \begin{macro}{\@listvi}
1355 % Here are the same macros for the higher level lists.
1357 \def\@listii {\setlength \leftmargin{\leftmarginii}%
1358 \setlength \labelwidth{\leftmarginii}%
1359 \addtolength\labelwidth{-\labelsep}}
1360 \def\@listiii{\setlength \leftmargin{\leftmarginiii}%
1361 \setlength \labelwidth{\leftmarginiii}%
1362 \addtolength\labelwidth{-\labelsep}%
1363 \setlength \topsep {.2em}%
1364 \setlength \itemsep {\topsep}}
1365 \def\@listiv {\setlength \leftmargin{\leftmarginiv}%
1366 \setlength \labelwidth{\leftmarginiv}%
1367 \addtolength\labelwidth{-\labelsep}}
1368 \def\@listv {\setlength \leftmargin{\leftmarginv}%
1369 \setlength \labelwidth{\leftmarginv}%
1370 \addtolength\labelwidth{-\labelsep}}
1371 \def\@listvi {\setlength \leftmargin{\leftmarginvi}%
1372 \setlength \labelwidth{\leftmarginvi}%
1373 \addtolength\labelwidth{-\labelsep}}
1381 % \subsubsection{Enumerate}
1383 % The enumerate environment uses four counters: \Lcount{enumi},
1384 % \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where
1385 % \Lcount{enumN} controls the numbering of the Nth level
1388 % \begin{macro}{\theenumi}
1389 % \begin{macro}{\theenumii}
1390 % \begin{macro}{\theenumiii}
1391 % \begin{macro}{\theenumiv}
1392 % The counters are already defined in the \LaTeX{} kernel
1393 % (\file{ltlists.dtx}), but their representation is changed here.
1396 \renewcommand\theenumi{\@arabic\c@enumi}
1397 \renewcommand\theenumii{\@alph\c@enumii}
1398 \renewcommand\theenumiii{\@roman\c@enumiii}
1399 \renewcommand\theenumiv{\@Alph\c@enumiv}
1406 % \begin{macro}{\labelenumi}
1407 % \begin{macro}{\labelenumii}
1408 % \begin{macro}{\labelenumiii}
1409 % \begin{macro}{\labelenumiv}
1410 % The commands |\labelenumi| ... |\labelenumiv| generate the label
1413 \newcommand\labelenumi{\theenumi.}
1414 \newcommand\labelenumii{(\theenumii)}
1415 \newcommand\labelenumiii{\theenumiii.}
1416 \newcommand\labelenumiv{\theenumiv.}
1423 % \begin{macro}{\p@enumii}
1424 % \begin{macro}{\p@enumiii}
1425 % \begin{macro}{\p@enumiv}
1426 % The expansion of |\p@enumN||\theenumN| defines the output of a
1427 % |\ref| command when referencing an item of the Nth level of an
1430 \renewcommand\p@enumii{\theenumi}
1431 \renewcommand\p@enumiii{\theenumi(\theenumii)}
1432 \renewcommand\p@enumiv{\p@enumiii\theenumiii}
1438 % \subsubsection{Itemize}
1440 % \begin{macro}{\labelitemi}
1441 % \begin{macro}{\labelitemii}
1442 % \changes{v1.2h}{1994/05/06}{Inserted \cs{normalfont}}
1443 % \changes{v1.2u}{1996/08/25}{replaced -{}- with \cs{textendash}}
1444 % \begin{macro}{\labelitemiii}
1445 % \begin{macro}{\labelitemiv}
1446 % Itemization is controlled by |\labelitemi|,
1447 % |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define
1448 % the labels of the various itemization levels: the symbols used are
1449 % bullet, bold en-dash, asterisk and centered dot.
1451 % \changes{v1.2n}{1994/07/11}{renamed \cs{labelitemiiii} to
1452 % \cs{labelitemiii}}
1453 % \changes{v1.2x}{1997/04/16}{Changed to \cs{textbullet},
1454 % \cs{textasteriskcentered} and \cs{textperiodcentered}}
1456 \newcommand\labelitemi{\textbullet}
1457 \newcommand\labelitemii{\normalfont\bfseries \textendash}
1458 \newcommand\labelitemiii{\textasteriskcentered}
1459 \newcommand\labelitemiv{\textperiodcentered}
1466 % \subsubsection{Description}
1468 % \begin{environment}{description}
1469 % The description environment is defined here -- while the itemize
1470 % and enumerate environments are defined in the \LaTeX{} kernel
1471 % (\file{ltlists.dtx}).
1474 \newenvironment{description}
1475 {\list{}{\labelwidth\z@ \itemindent-\leftmargin
1476 \let\makelabel\descriptionlabel}}
1481 % \begin{macro}{\descriptionlabel}
1482 % To change the formatting of the label, you must redefine
1483 % |\descriptionlabel|.
1485 % \changes{v1.2q}{1995/03/14}{made command short}
1487 \newcommand*{\descriptionlabel}[1]{\hspace\labelsep
1488 \normalfont\bfseries #1}
1492 % \subsection{Defining new environments}
1494 % \subsubsection{Verse}
1496 % \begin{environment}{verse}
1497 % The verse environment is defined by making clever use of the
1498 % list environment's parameters. The user types |\\| to end a line.
1499 % This is implemented by |\let|'ing |\\| equal |\@centercr|.
1502 \newenvironment{verse}
1504 \list{}{\setlength\itemsep{\z@}%
1505 \setlength\itemindent{-15\p@}%
1506 \setlength\listparindent{\itemindent}%
1507 \setlength\rightmargin{\leftmargin}%
1508 \addtolength\leftmargin{15\p@}}%
1514 % \subsubsection{Quotation}
1516 % \begin{environment}{quotation}
1517 % The quotation environment is also defined by making clever use of
1518 % the list environment's parameters. The lines in the environment
1519 % are set smaller than |\textwidth|. The first line of a paragraph
1520 % inside this environment is indented.
1523 \newenvironment{quotation}
1524 {\list{}{\setlength\listparindent{1.5em}%
1525 \setlength\itemindent{\listparindent}%
1526 \setlength\rightmargin{\leftmargin}}%
1532 % \subsubsection{Quote}
1534 % \begin{environment}{quote}
1535 % The quote environment is like the quotation environment except
1536 % that paragraphs are not indented.
1539 \newenvironment{quote}
1540 {\list{}{\setlength\rightmargin{\leftmargin}}%
1546 % \subsubsection{Theorem}
1548 % This document class does not define it's own theorem environments,
1549 % the defaults, supplied by the \LaTeX{} kernel (\file{ltthm.dtx})
1553 % \subsection{Setting parameters for existing environments}
1555 % \subsubsection{Array and tabular}
1557 % \begin{macro}{\arraycolsep}
1558 % The columns in an array environment are separated by
1561 \setlength\arraycolsep{5\p@}
1565 % \begin{macro}{\tabcolsep}
1566 % The columns in an tabular environment are separated by
1569 \setlength\tabcolsep{6\p@}
1573 % \begin{macro}{\arrayrulewidth}
1574 % The width of vertical rules in the array and tabular environments
1575 % is given by |\arrayrulewidth|.
1577 \setlength\arrayrulewidth{.4\p@}
1581 % \begin{macro}{\doublerulesep}
1582 % The space between adjacent rules in the array and tabular
1583 % environments is given by |\doublerulesep|.
1585 \setlength\doublerulesep{2\p@}
1589 % \subsubsection{Tabbing}
1591 % \begin{macro}{\tabbingsep}
1592 % This controls the space that the |\'| command puts in. (See
1593 % \LaTeX{} manual for an explanation.)
1595 \setlength\tabbingsep{\labelsep}
1599 % \subsubsection{Minipage}
1601 % \begin{macro}{\@minipagerestore}
1602 % The macro |\@minipagerestore| is called upon entry to a minipage
1603 % environment to set up things that are to be handled differently
1604 % inside a minipage environment. In the current styles, it does
1608 % \begin{macro}{\@mpfootins}
1609 % Minipages have their own footnotes; |\skip||\@mpfootins| plays
1610 % same r\^ole for footnotes in a minipage as |\skip||\footins| does
1611 % for ordinary footnotes.
1614 \skip\@mpfootins = \skip\footins
1618 % \subsubsection{Framed boxes}
1620 % \begin{macro}{\fboxsep}
1621 % The space left by |\fbox| and |\framebox| between the box and the
1623 % \begin{macro}{\fboxrule}
1624 % The width of the rules in the box made by |\fbox| and |\framebox|.
1626 \setlength\fboxsep{3\p@}
1627 \setlength\fboxrule{.4\p@}
1632 % \subsubsection{Equation and eqnarray}
1634 % \begin{macro}{\theequation}
1635 % The equation counter will be typeset using arabic numbers.
1637 \renewcommand\theequation{\@arabic\c@equation}
1641 % \begin{macro}{\jot}
1642 % |\jot| is the extra space added between lines of an eqnarray
1643 % environment. The default value is used.
1645 % \setlength\jot{3pt}
1649 % \begin{macro}{\@eqnnum}
1650 % The macro |\@eqnnum| defines how equation numbers are to appear in
1651 % equations. Again the default is used.
1654 % \def\@eqnnum{(\theequation)}
1658 % \subsection{Font changing}
1660 % Here we supply the declarative font changing commands that were
1661 % common in \LaTeX\ version 2.09 and earlier. These commands work
1662 % in text mode \emph{and} in math mode. They are provided for
1663 % compatibility, but one should start using the |\text...| and
1664 % |\math...| commands instead. These commands are redefined using
1665 % |\@renewfontswitch|, a command with three arguments: the user
1666 % command to be defined; \LaTeX\ commands to execute in text mode
1667 % and \LaTeX\ commands to execute in math mode.
1669 % \begin{macro}{\rm}
1670 % \begin{macro}{\tt}
1671 % \begin{macro}{\sf}
1672 % The commands to change the family.
1673 % \changes{v1.0a}{1993/12/14}{Added compatibility mode support.}
1674 % \changes{v1.1}{1993/12/18}{Changed \cs{@newfontswitch} to
1675 % \cs{@renewfontswitch}, removed switch.}
1676 % \changes{v1.2d}{1994/04/14}{\cs{@renewfontswitch} has become
1677 % \cs{DeclareOldFontCommand}}
1679 \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
1680 \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
1681 \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
1687 % \begin{macro}{\bf}
1688 % The command to change to the bold series. One should use
1689 % |\mdseries| to explicitly switch back to medium series.
1690 % \changes{v1.0a}{1993/12/14}{Added compatibility mode support.}
1691 % \changes{v1.1}{1993/12/18}{Changed \cs{@newfontswitch} to
1692 % \cs{@renewfontswitch}, removed switch.}
1694 \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
1698 % \begin{macro}{\sl}
1699 % \begin{macro}{\it}
1700 % \begin{macro}{\sc}
1702 % And the commands to change the shape of the font. The slanted and
1703 % small caps shapes are not available by default as math alphabets,
1704 % so those changes do nothing in math mode. One should use
1705 % |\upshape| to explicitly change back to the upright shape.
1706 % \changes{v1.0a}{1993/12/14}{Added compatibility mode support.}
1707 % \changes{v1.1}{1993/12/18}{Changed \cs{@newfontswitch} to
1708 % \cs{@renewfontswitch}, removed switch.}
1709 % \changes{v1.1b}{1993/12/20}{Added forgotten re.}
1711 \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
1712 \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\relax}
1713 \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\relax}
1719 % \begin{macro}{\cal}
1720 % \changes{v1.0a}{1993/12/14}{Macro added}
1721 % \begin{macro}{\mit}
1722 % \changes{v1.0a}{1993/12/14}{Macro added}
1724 % The commands |\cal| and |\mit| should only be used in math mode,
1725 % outside math mode they have no effect. Currently the New Font
1726 % Selection Scheme defines these commands to generate warning
1727 % messages. Therefore we have to define them `by hand'.
1728 % \changes{v1.2p}{1994/12/11}{Now define \cs{cal} and \cs{mit} using
1729 % \cs{DeclareRobustCommand*}}
1731 \DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
1732 \DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
1737 % \subsection{Footnotes}
1739 % \begin{macro}{\footnoterule}
1740 % Usually, footnotes are separated from the main body of the text
1741 % by a small rule. This rule is drawn by the macro |\footnoterule|.
1742 % We have to make sure that the rule takes no vertical space (see
1743 % \file{plain.tex}) so we compensate for the natural height of the
1744 % rule of 0.4pt by adding the right amount of vertical skip.
1746 % To prevent the rule from colliding with the footnote we first add
1747 % a little negative vertical skip, then we put the rule and make
1748 % sure we end up at the same point where we begun this operation.
1750 \renewcommand\footnoterule{%
1752 \hrule \@width .4\columnwidth
1757 % \begin{macro}{\c@footnote}
1758 % A counter for footnotes.
1760 % \newcounter{footnote}
1764 % \begin{macro}{\@makefntext}
1765 % \changes{v1.2c}{1994/03/08}{Always call \cs{@makefnmark}.}
1766 % The footnote mechanism of \LaTeX{} calls the macro |\@makefntext|
1767 % to produce the actual footnote. The macro gets the text of the
1768 % footnote as its argument and should use |\@makefnmark| to produce
1769 % the mark of the footnote. The macro |\@makefntext| is called when
1770 % effectively inside a |\parbox| of width |\columnwidth| (i.e.,
1771 % with |\hsize| = |\columnwidth|).
1773 % An example of what can be achieved is given by the following piece
1776 % \long\def\@makefntext#1{%
1778 % \@tempdima = \hsize
1779 % \advance\@tempdima-10pt
1780 % \parshape \@ne 10pt \@tempdima}%
1782 % \parindent 1em\noindent
1783 % \hb@xt@\z@{\hss\@makefnmark}#1}
1785 % The effect of this definition is that all lines of the footnote
1786 % are indented by 10pt, while the first line of a new paragraph is
1787 % indented by 1em. To change these dimensions, just substitute the
1788 % desired value for `10pt' (in both places) or `1em'. The mark is
1789 % flush right against the footnote.
1791 % In this document class we use a simpler macro, in which the
1792 % footnote text is set like an ordinary text paragraph, with no
1793 % indentation except on the first line of a paragraph, and the
1794 % first line of the footnote. Thus, all the macro must do is set
1795 % |\parindent| to the appropriate value for succeeding paragraphs
1796 % and put the proper indentation before the mark.
1799 \long\def\@makefntext#1{%
1802 \hb@xt@5\p@{\hss\@makefnmark}#1}
1806 % \begin{macro}{\@makefnmark}
1807 % The footnote markers that are printed in the text to point to the
1808 % footnotes should be produced by the macro |\@makefnmark|. We use
1809 % the default definition for it.
1811 %\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
1815 % \subsection{Words}
1817 % \begin{macro}{\ccname}
1818 % \begin{macro}{\enclname}
1819 % \begin{macro}{\pagename}
1820 % \begin{macro}{\headtoname}
1821 % This document class is for documents prepared in the English
1822 % language. To prepare a version for another language, various
1823 % English words must be replaced. All the English words that
1824 % require replacement are defined below in command names.
1826 \newcommand*{\ccname}{cc}
1827 \newcommand*{\enclname}{encl}
1828 \newcommand*{\pagename}{Page}
1829 \newcommand*{\headtoname}{To}
1838 % \begin{macro}{\today}
1839 % This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
1840 % to provide the date of the \LaTeX-run.
1842 \newcommand*{\today}{\ifcase\month\or
1843 January\or February\or March\or April\or May\or June\or
1844 July\or August\or September\or October\or November\or December\fi
1845 \space\number\day, \number\year}
1849 % \subsection{Two column mode}
1851 % \begin{macro}{\columnsep}
1852 % This gives the distance between two columns in two column mode.
1854 \setlength\columnsep{10\p@}
1858 % \begin{macro}{\columnseprule}
1859 % This gives the width of the rule between two columns in two
1860 % column mode. We have no visible rule.
1862 \setlength\columnseprule{0\p@}
1866 % \subsection{The page style}
1867 % We have \pstyle{plain} pages in this document class by
1868 % default. We use arabic page numbers.
1871 \pagenumbering{arabic}
1874 % \subsection{Single or double sided printing}
1876 % We don't try to make each page as long as all the others.
1881 % \begin{macro}{\@texttop}
1882 % The document class letter sets |\@texttop| to |\vskip| 0pt
1883 % \texttt{plus} .00006fil on the first page of a letter, which
1884 % centers a short letter on the page. This fil value may have to be
1885 % changed for other letterheads. This setting has to be done after
1886 % |\raggedbottom| is executed, since the latter sets |\@texttop| to
1889 \def\@texttop{\ifnum\c@page=1\vskip \z@ plus.00006fil\relax\fi}
1893 % We always start in one column mode.