% \OnlyDescription
% \iffalse meta-comment
%
% Copyright 1995 Gundolf Frank.
% All rights reserved. For further copyright information see the file
% legal.txt, and any other copyright indicated in this file.
% 
%  This system is distributed in the hope that it will be useful,
%  but WITHOUT ANY WARRANTY; without even the implied warranty of
%  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% 
% 
% IMPORTANT NOTICE:
% 
% For error reports in case of UNCHANGED versions see bugs.txt.
% 
% Please do not request updates from us directly.  Distribution is
% done through Mail-Servers and TeX organizations.
% 
% You are not allowed to change this file.
% 
% You are allowed to distribute this file under the condition that
% it is distributed together with all files mentioned in manifest.txt.
% 
% If you receive only some of these files from someone, complain!
% 
% You are NOT ALLOWED to distribute this file alone.  You are NOT
% ALLOWED to take money for the distribution or use of either this
% file or a changed version, except for a nominal charge for copying
% etc.
% \fi
%
%\CheckSum{2617}
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%
% \iffalse
% \section{Identification}
%
%    This document class can only be used with \LaTeXe, so we make
%    sure that an appropriate message is displayed when another \TeX{}
%    format is used.
%    \begin{macrocode}
%<+lettGF>\newcommand{\ClassName}{lettGF}
\newcommand{\Version}{0.91$\beta$}
%<+lettGF>\NeedsTeXFormat{LaTeX2e}[1994/12/01]
%    \end{macrocode}
%
%    Announce the Class name and its version.
%    \begin{macrocode}
%<+lettGF>\ProvidesClass{\ClassName}
%<10pt>\ProvidesFile{size10.clo}
%<11pt>\ProvidesFile{size11.clo}
%<12pt>\ProvidesFile{size12.clo}
%<leqno>\ProvidesFile{leqno.clo}
%<fleqn>\ProvidesFile{fleqn.clo}
%<*driver>
       \ProvidesFile{lettGF.drv}
%</driver>
              [1995/07/26 v\Version
%<+lettGF>               Extended LaTeX document class from Standard LaTeX document class 'letter'
%<+lettGF>               Written by Gundolf Frank @ AC.Maus.de]
%<10pt|11pt|12pt>      Standard LaTeX file (size option)]
%<leqno>               Standard LaTeX option (left equation numbers)]
%<fleqn>               Standard LaTeX option (flush left equations)]
%    \end{macrocode}
%
% \section{The documentation driver file}
%
%    We have our own document class to format the \LaTeXe
%    documentation.
%    \begin{macrocode}
%<*driver>
]
\documentclass{ltxdoc}
\usepackage{t1enc}
%    \end{macrocode}
%
%    We don't want everything to appear in the index.
%    \begin{macrocode}
\DoNotIndex{\@M,\@badmath}
\DoNotIndex{\@centercr}
\DoNotIndex{\@empty,\@ignoretrue}
\DoNotIndex{\@ixpt}
\DoNotIndex{\@minus,\@ne,\@plus}
\DoNotIndex{\\,\addtolength}
\DoNotIndex{\advance,\Alph,\alph}
\DoNotIndex{\arabic,\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,\roman}
\DoNotIndex{\roman,\setbox,\setcounter,\setlength}
\DoNotIndex{\skip,\slshape,\space}
\DoNotIndex{\trivlist,\typeout,\tw@}
\DoNotIndex{\vskip,\vspace,\year,\z@}
%    \end{macrocode}
%    We do want an index, using linenumbers
%    \begin{macrocode}
\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{lettGF.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{lettGF.dtx}
\PrintIndex
\PrintChanges
\end{document}
%</driver>
%    \end{macrocode}
% \fi
%
% \changes{v0.91$\beta$}{1995/8/1}
%   {\\
%    -First version of LettGF.DTX}
% \changes{v0.90$\beta$}{1995/7/26}
%   {\\
%    -First version for \LaTeX2e{}.\\
%    -The most parts work now with the Style 'ifthenelse'.\\
%    -The MultiLetter-function is now more easy and better.\\
%    -And more or less great changes are made with the translation
%     to \LaTeX2e{} (Option DIN (Din $\rightarrow$ a4paper etc.)}
% \changes{v0.61$\beta$}{1994/12/12}
%   {\\
%    -Error in the closingtext corrected.\\
%    -Manual updated.\\
%    -The Style is now shorter.\\
%    -You can search now directly for a address in the datafile.}.
% \changes{v0.60$\beta$}{1994/12/6}
%   {\\
%    -Small error in the signature and picture corrected.\\
%    -The INI-file is now new organised. Different User can use it now.}
% \changes{v0.53$\beta$}{1994/5/2}
%   {\\
%    -At multiletter every letter can get a new closingtext.\\
%    -Faxnumber and email-address are now saved in the data-file.\\
%    -You don't need any \% behind each line in the data-file.}
% \changes{v0.52$\beta$}{1994/2/28}
%   {\\
%    -In the data-file are only three posibilities at contact.\\
%    -Controll output is killed.\\
%    -Small Errors are corrected.}
% \changes{v0.51$\beta$}{1994/2/26}
%   {\\
%    -With Faxoption the total pagenumber is shown.\\
%    -Error with the textlength is corrected.}
% \changes{v0.50$\beta$}{1994/2/24}
%   {\\
%    -First official betaversion.\\
%    -New: Multiletterfunction.}
%
% \iffalse
% Copyright (C) 1995 Gundolf Frank, all rights reserved.
% \fi
%
% \author{ Gundolf Frank}
%
% \title{Extended Letter Document Class for \LaTeX{} version \Version}
% \date{\filedate}
%
% \maketitle
% \tableofcontents
%
% \section{Introduction}
%
%    This \LaTeXe\ package is a reimplementation of
%    \texttt{brief.sty} by my own. It defines the class
%    |\begin{letter}| which produces letter of the current
%    document.
%
% \section{Copyright and Your Rights}
%
%    Copyright 1995 Gundolf Frank. All rights reserved.
%
%    You are not allowed to change this part of the documentation.
%
%    \subsection{Distribution of unchanged versions:}
%
%    You are NOT ALLOWED to take money for the distribution or use of
%    these files except for a nominal charge for copying etc.
%
%    Redistribution of unchanged files is allowed provided that all files
%    listed in the corresponding package README file are distributed
%    including this readme file.
%
%    If you receive only some of these files from someone, complain!
%
%    However, if these files are distributed by established suppliers as
%    part of a complete TeX distribution, and the structure of the
%    distribution would make it difficult to distribute the whole set of
%    files, *those parties* are allowed to distribute only some of the
%    files provided that it is made clear that the user will get a
%    complete distribution-set upon request to that supplier (not me).
%
%    Notice that this permission is not granted to the end user.
%
%
%    \subsection{Generation and distribution of changed versions:}
%
%    The generation of changed versions of the files included in the
%    packages is allowed under the following restrictions:
%
%    \begin{itemize}
%      \item
%        You rename the file before you make any changes to it.
%      \item
%        You acknowledge the origin of the original version in the file and
%        keep the information that it (or a changed version) has to be
%        distributed under the restrictions mentioned in this file.
%      \item
%        You change the ERROR REPORT address so that we don't get error
%        reports for files *not* maintained by us.
%    \end{itemize}
%
%    The distribution of changed versions of the files included in the
%    packages is allowed under the following restrictions:
%
%    \begin{itemize}
%      \item
%        You provide the user with information how to obtain the original
%        package or, even better, distribute it with your files.
%      \item
%        You make sure that the changed versions contain a notice that
%        prevents others to take money for distribution or use of your
%        files, i.e. they have to be distributed under the restrictions
%        mentioned in this file.
%      \item
%        You inform us that you created a changed version of the files.
%        This is only necessary if you want to distribute it to others.
%    \end{itemize}
%
%    \subsection{Error reports:}
%
%    Before you report an error please check that
%
%    \begin{itemize}
%      \item
%        the error is not already mentioned in the *.bug file of the
%        distribution. (In this case it is a feature :-)
%      \item
%        the error isn't caused by obsolete versions of other software;
%        LaTeX from 1986 is a good candidate ...
%      \item
%        you use an original version of the package.
%    \end{itemize}
%
%    If you think you found a genuine bug please report it together
%    with the following information:
%
%    \begin{itemize}
%      \item
%        version of the file
%      \item
%        version (date!) of your LaTeX
%      \item
%        a short test file showing the behavior with all unnecessary
%        code removed.
%      \item
%        a transcript (log file) of the session that shows the error.
%    \end{itemize}
%
%    Please note that it is important to make the file as small as possible
%    to allow us to find and fix the error soon.
%
%    Error reports in case of UNCHANGED versions to\par
%
%    \begin{center}
%      \begin{tabular}{ll}
%                            & Gundolf Frank\\
%                            & Triere Str.116\\
%                            & 52078 Aachen\\
%                   Internet:& <gundolf\_frank.ac.maus.de>\\
%                   Mausnet: & Gundolf Frank @ AC\\
%      \end{tabular}
%    \end{center}
%
%   Please send error reports for contributed files to the original authors.
%
%   \section{The User Interface}
%
%   This section defines everything an average user should know.
%   All commands, which you can use in the original style from the \LaTeX
%   3 team, are also available, only more commands are included. You
%   don't have to change anything in your old letters, only the output
%   looks a little bit other.
%
%
%   \subsection[\string\bslash\space package\{Multiletter\}]
%            {\bslash package\{MultiLetter\}}
%   The most difference in usage result from the including the package
%   <MultiLetter>, which handeles the addressfiles and of course the
%   multiletter function. So read also the documentation of this file,
%   which desribes the structure of the addressfile.
%
%   \subsection{The functions of the options}
%
%   \DeleteShortVerb{\|}
%   \begin{tabular}{|l|p{9cm}|}
%     \hline
%     a4paper        & \\
%     a5paper        & \\
%     b5paper        & \\
%     letterpaper    & \\
%     legalpaper     & \\
%     executivepaper & Chose the papersize.\\
%     \hline
%     landscape      & Switches the values of paperheight and
%                      paperwidth.\\
%     \hline
%     10pt           & \\
%     11pt           & \\
%     12pt           & Coosing the size of the characters.\\
%     \hline
%     leqno          & To put the equation number on the left side of an
%                      equation.\\
%     \hline
%     fleqn          & To get the displayed math environments to print the
%                      contents flush left (with an indentation).\\
%     \hline
%     bank           & Print the bankconnection in the footline.\\
%     \hline
%     address        & Print the fulladdress in the footline.\\
%     \hline
%     noheader       & Print no headline\\
%     \hline
%     fax            & Print on the first page some special fax thinks,
%                      as the total pagenumber and time.\\
%     \hline
%     german         & \\
%     english        & Select the used languages.\\
%     \hline
%   \end{tabular}
%   \MakeShortVerb{\|}
%
%  \subsection{An example}
%
%\begin{verbatim}
%  \documentclass[12pt,a4paper,english]{lettgf}
%  \Signature{Zipper}
%  \Fromstreet{Liverpoolstr. 29}
%  \Fromlocation{DF-4567-Birmingthon}
%  \Fromname{Frank Zipper}
%  \begin{document}
%    \begin{letter}[firstname]{Thomas}
%      \opening{}
%      How are you. I write this letter without a special reason.
%      \closing{}
%    \end{letter}
%  \end{document}
%\end{verbatim}
%
%  In this example any |Frank Zipper| write s a nosense letter to a person
%  with the first name |Thomas|.
%
%  \subsection[\string\bslash\space begin\{letter\}\{\ldots\}]
              {\bslash begin\{letter\}$[$\#1$]$\{\#2\}}
%  This command begins a letter with the name and the address. The first
%  parameter is the searchoption (e.g. firstname, fax, telephone) and the
%  second parameter the string you search for. The first one is optional.
%  The letter ends with |\end{letter}|.
%
%  \subsection[\string\bslash\space opening\{\ldots\}\&
%              \string\bslash\space closing\{\ldots\}]
%             {\bslash opening$[$\#1$]$\{\#2\}\&
%              \bslash closing\{\#1\}}
%  |\opening{\ldots}| und |\closing{\ldots}| writes the
%  text of the beginning and of the letter. It also sets the address. The
%  signature is set below the closing text and if you use the fax-option
%  the scanned signature is seted too. In the opening text you can put a
%  abbrevation in the first parameter and also in the closing, e.g.
%  |`Yf'| in the closing text you get |`Yours faithfully'| in the letter.
%  If you want to know more about it look in the source code under
%  option english in the <MultiLetter>-Style.
%
% \StopEventually{}
%
%  \section{Loading Packages}
%
%  The class file needs three additional packages.
%    \begin{macrocode}
%<*lettGF>
\RequirePackage{ifthen}
\RequirePackage{german}
\RequirePackage{MultiLetter}
%    \end{macrocode}
%
% \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}
%<*lettGF>
\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.
%    \begin{macrocode}
\DeclareOption{a4paper}
   {\setlength\paperheight {297mm}%
    \setlength\paperwidth  {210mm}}
\DeclareOption{a5paper}
   {\setlength\paperheight {210mm}%
    \setlength\paperwidth  {148mm}}
\DeclareOption{b5paper}
   {\setlength\paperheight {250mm}%
    \setlength\paperwidth  {176mm}}
\DeclareOption{letterpaper}
   {\setlength\paperheight {11in}%
    \setlength\paperwidth  {8.5in}}
\DeclareOption{legalpaper}
   {\setlength\paperheight {14in}%
    \setlength\paperwidth  {8.5in}}
\DeclareOption{executivepaper}
   {\setlength\paperheight {10.5in}%
    \setlength\paperwidth  {7.25in}}
%    \end{macrocode}
%
%    The option \Lopt{landscape} switches the values of |\paperheight|
%    and |\paperwidth|, assuming the dimensions wer given for portrait
%    paper.
%    \begin{macrocode}
\DeclareOption{landscape}
   {\setlength\@tempdima   {\paperheight}%
    \setlength\paperheight {\paperwidth}%
    \setlength\paperwidth  {\@tempdima}}
%    \end{macrocode}
%
% \subsection{Choosing the type size}
%
%    The type size options are handled by defining |\@ptsize| to
%    contain the last digit of the size in question and branching on
%    |\ifcase| statements. This is done for historical reasons to stay
%    compatible with other packages that use the |\@ptsize| variable
%    to select special actions. It makes the declarations of size
%    options less than 10pt difficult, although one can probably use
%    \texttt{9} and \texttt{8} assuming that a class wont define both
%    \Lopt{8pt} and \Lopt{18pt} options.
%
%    \begin{macrocode}
\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
%    \end{macrocode}
%
%  \subsection{Two-side or one-side printing}
%
%    The option \Lopt{twoside} and option \Lopt{oneside} decide between
%    two-sided or one-sided printing 
%    \begin{macrocode}
\DeclareOption{twoside}{\@twosidetrue  \@mparswitchtrue}
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
%    \end{macrocode}
%
%  \subsection{Draft option}
%
%    If the user requests \Lopt{draft} we show any overfull boxes.
%    We could probably add some more interesting stuff to this option.
%    \begin{macrocode}
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
\DeclareOption{final}{\setlength\overfullrule{0pt}}
%    \end{macrocode}
%
%
%  \subsection{Equation numbering on the left}
%
%    The option \Lopt{leqno} can be used to get the equation numbers
%    on the left side of the equation.
%    \begin{macrocode}
\DeclareOption{leqno}{\input{leqno.clo}}
%    \end{macrocode}
%
%  \subsection{Flush left displays}
%
%    The option \Lopt{fleqn} redefines the displayed math environments
%    in such a way that they come out flush left, with an indentation
%    of |\mathindent| from the prevailing left margin.
%    \begin{macrocode}
\DeclareOption{fleqn}{\input{fleqn.clo}}
%    \end{macrocode}
%
%  \subsection{Bankconnection}
% 
%    A new if to choose, whether the bankconnection is printed.
%    \begin{macrocode}
\newboolean{bankconnection}
\setboolean{bankconnection}{false}
%    \end{macrocode}
%    The option \Lopt{bank} decide, whether the bankconnection is printed in the
%    footline.
%    \begin{macrocode}
\DeclareOption{bank}{\setboolean{bankconnection}{true}}
%    \end{macrocode}
%
%  \subsection{Full address}
% 
%    A new if to choose, if the full address is printed.
%    \begin{macrocode}
\newboolean{fulladdress}
\setboolean{fulladdress}{false}
%    \end{macrocode}
%    The option \Lopt{address} decide, whether the full address is printed in the
%    footer.
%    \begin{macrocode}
\DeclareOption{address}{\setboolean{fulladdress}{true}}
%    \end{macrocode}
%
%  \subsection{No headline}
% 
%    A new if to choose, whether headline is printed.
%    \begin{macrocode}
\newboolean{noheader}
\setboolean{noheader}{false}
%    \end{macrocode}
%    The option \Lopt{fleqn} decide, whether the headline is printed.
%    \begin{macrocode}
\DeclareOption{noheader}{\setboolean{noheader}{true}}
%    \end{macrocode}
%
%  \subsection{Fax}
% 
%    A new if to choose, whether the letter is printed as fax.
%    \begin{macrocode}
\newboolean{faxpaper}
\setboolean{faxpaper}{false}
%    \end{macrocode}
%    The option \Lopt{fax} decide, whether specialparts of the faxpaper are
%    printed.
%    \begin{macrocode}
\DeclareOption{fax}{\setboolean{faxpaper}{true}}
%    \end{macrocode}
%
%  \subsection{Languages}
% 
%    In the letter several words appear. They are stored in control sequences 
%    to be able to select a different language.
%
%  \subsubsection{German}
%  \begin{macrocode}
\DeclareOption{german}
  {\germanTeX
   \xdef\banknamestr{Bank}
   \expandafter\def\csname\banknamestr\endcsname##1
                                       {\def\bankname{##1}}
   \xdef\banknrstr{BLZ}
   \expandafter\def\csname\banknrstr\endcsname##1
                                       {\def\banknr{##1}}
   \xdef\accountnrstr{Kontonummer}
   \expandafter\def\csname\accountnrstr\endcsname##1
                                       {\def\accountnr{##1}}
   \providecommand{\bankconnectionstr}{Bankverbindung}
   \xdef\faxnrstr{Faxnummer}
   \expandafter\def\csname\faxnrstr\endcsname##1
                                       {\def\myfax{##1}}
   \xdef\precodestr{Vorwahl}
   \expandafter\def\csname\precodestr\endcsname##1
                                       {\def\precode{##1}}
   \xdef\telephonestr{Telefonnummer}
   \expandafter\def\csname\telephonestr\endcsname##1
                                       {\def\telephonenum{##1}}
   \providecommand{\emailadrstr}{E-Mail-Adresse}
   \def\EMail##1{\def\myemail{##1}}
   \xdef\fromnamestr{Absendername}
   \expandafter\def\csname\fromnamestr\endcsname##1
                                       {\def\fromname{##1}}
   \xdef\fromstreetstr{Absenderstrasse}
   \expandafter\def\csname\fromstreetstr\endcsname##1
                                       {\def\fromstreet{##1}}
   \xdef\fromlocationstr{Absenderort}
   \expandafter\def\csname\fromlocationstr\endcsname##1
                                       {\def\fromlocation{##1}}
   \xdef\fromsigstr{Unterschrift}
   \expandafter\def\csname\fromsigstr\endcsname##1
                                       {\def\fromsig{##1}}
   \providecommand{\@datelong}{\dategerman}
   \providecommand{\@dateshort}{
      \number\day.\number\month.\number\year}
   \xdef\datestr{Datum}
   \expandafter\def\csname\datestr\endcsname##1{\def\@date{##1}}
   \xdef\timestr{Uhrzeit}
   \expandafter\def\csname\timestr\endcsname##1{\def\@time{##1}}
   \newcommand{\psname}{PS.:}
   \newcommand{\Anlagen}[1]{encl{##1}}
   \newcommand{\Verteiler}[2]{cc{##1}}
   \newcommand{\pagenumstr}{Seitenanzahl}
   \newcommand{\yrefstr}{Ihr Zeichen}
   \newcommand{\mrefstr}{Mein Zeichen}
   \newcommand{\ymaildatestr}{Ihre Nachricht vom}
   \newcommand{\subjectstr}{}
   \newcommand{\Betrifft}[1]{\def\@subject{##1}}
   \newcommand{\Anrede}[2][empty]{\opening[##1]{##2}}
   \newcommand{\Gruss}[1]{\closing{##1}}
   \newcommand{\errormesc}{Es wurde bei \string\begin{letter} ein
                           Suchkriterium\MessageBreak angegeben!}
   \newcommand{\errorhelpc}{Bei \string\begin{letter}[Optionen]
                            {suchkriterium} darf kein Suchkriterium
                            \MessageBreak im Serienbriefmodus
                            angegeben werden.\MessageBreak Meistens
                            bringt Weitercompilien das gew�nschte
                            Ergebnis}
  }
%    \end{macrocode}
%    \subsubsection{English}
%    \begin{macrocode}
\DeclareOption{english}
  {\originalTeX
   \selectlanguage{english}
   \xdef\banknamestr{Bankname}
   \expandafter\def\csname\banknamestr\endcsname##1
                                       {\def\bankname{##1}}
   \xdef\banknrstr{Banknumber}
   \expandafter\def\csname\banknrstr\endcsname##1
                                       {\def\banknr{##1}}
   \xdef\accountnrstr{Accountnumber}
   \expandafter\def\csname\accountnrstr\endcsname##1
                                       {\def\accountnr{##1}}
   \providecommand{\bankconnectionstr}{Bankconnection}
   \xdef\faxnrstr{Faxnumber}
   \expandafter\def\csname\faxnrstr\endcsname##1
                                       {\def\myfax{##1}}
   \xdef\precodestr{Precode}
   \expandafter\def\csname\precodestr\endcsname##1
                                       {\def\precode{##1}}
   \xdef\telephonestr{Telephonenumber}
   \expandafter\def\csname\telephonestr\endcsname##1
                                       {\def\telephonenum{##1}}
   \providecommand{\emailadrstr}{Email-address}
   \def\email##1{\def\myemail{##1}}
   \xdef\fromnamestr{Sendername}
   \expandafter\def\csname\fromnamestr\endcsname##1
                                       {\def\fromname{##1}}
   \xdef\fromstreetstr{Senderstreet}
   \expandafter\def\csname\fromstreetstr\endcsname##1
                                       {\def\fromstreet{##1}}
   \xdef\fromlocationstr{Senderlocation}
   \expandafter\def\csname\fromlocationstr\endcsname##1
                                       {\def\fromlocation{##1}}
   \xdef\fromsigstr{Signature}
   \expandafter\def\csname\fromsigstr\endcsname##1
                                       {\def\fromsig{##1}}
   \providecommand{\@datelong}{\dateenglish}
   \providecommand{\@dateshort}{
      \number\day.\number\month.\number\year}
   \xdef\datestr{Date}
   \expandafter\def\csname\datestr\endcsname##1
                                       {\def\@date{##1}}
   \xdef\timestr{Time}
   \expandafter\def\csname\timestr\endcsname##1
                                       {\def\@time{##1}}
   \newcommand{\psname}{PS.:}
   \newcommand{\pagenumstr}{Pages}
   \newcommand{\yrefstr}{Your sign}
   \newcommand{\mrefstr}{My sign}
   \newcommand{\ymaildatestr}{Yout mail from}
   \newcommand{\subjectstr}{}
   \newcommand{\subject}[1]{\def\@subject{##1}}
   \newcommand{\errormesc}{There is a search option at
                           \string\begin{letter}[options]
                           {search options}!}
   \newcommand{\errorhelpc}{At \string\begin{letter}[options]
                            {search option} isn't a search option
                            allowed\MessageBreak in the
                            multiletter-mode.}
  }
%    \end{macrocode}
%
% \section{Executing Options}
%
%    Here we execute the default options to initialize certain
%    variables.
%    \begin{macrocode}
\ExecuteOptions{a4paper,12pt,oneside,onecolumn,final}
%    \end{macrocode}
%
%    The |\ProcessOptions| command causes the execution of the code
%    for every option \Lopt{foo} which is declared and for which the
%    user typed the \Lopt{foo} option in his |\documentclass| command.
%    For every option \Lopt{bar} he typed, which is not declared, the
%    option is assumed to be a global option.  All options will be
%    passed as document options to any |\usepackage| command in the
%    document preamble.
%    \begin{macrocode}
\ProcessOptions
%    \end{macrocode}
%    Now that all the options have been executed we can load the
%    chosen class option file that contains all size dependant code.
%    \begin{macrocode}
\input{size1\@ptsize.clo}
%    \end{macrocode}
%
% \section{Document Layout}
% \label{sec:maincode}
%
%  In this section we are finally dealing with the nasty typographical
%  details.
%
% \subsection{Fonts}
%
%    \LaTeX\ offers the user commands to change the size of the font,
%    relative to the `main' size. Each relative size changing command
%    |\size| executes the command
%    |\@setfontsize||\size|\meta{font-size}\meta{baselineskip} where:
%
%    \begin{description}
%    \item[\meta{font-size}] The absolute size of the font to use from
%        now on.
%
%    \item[\meta{baselineskip}] The normal value of |\baselineskip|
%        for the size of the font selected. (The actual value will be
%        |\baselinestretch| * \meta{baselineskip}.)
%    \end{description}
%
%    A number of commands, defined in the \LaTeX{} kernel, shorten the
%    following  definitions and are used throughout. They are:
% \begin{center}
% \begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
%  \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\
%  \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\
%  \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\
%  ...
%  \end{tabular}
%  \end{center}
%
% \begin{macro}{\normalsize}
% \begin{macro}{\@normalsize}
%
%    The user level command for the main size is |\normalsize|.
%    Internally \LaTeX{} uses |\@normalsize| when it refers to the
%    main size. |\@normalsize| will be defined to work like
%    |\normalsize| if the latter is redefined from its default
%    definition (that just issues an error message). Otherwise
%    |\@normalsize| simply selects a 10pt/12pt size.
%
%    The |\normalsize| macro also sets new values for\\
%    |\abovedisplayskip|, |\abovedisplayshortskip| and
%    |\belowdisplayshortskip|.
%
%    \begin{macrocode}
%<*10pt|11pt|12pt>
\renewcommand{\normalsize}{%
%<*10pt>
   \@setfontsize\normalsize\@xpt\@xiipt
   \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
   \abovedisplayshortskip \z@ \@plus3\p@
   \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
%</10pt>
%<*11pt>
   \@setfontsize\normalsize\@xipt{13.6}%
   \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
   \abovedisplayshortskip \z@ \@plus3\p@
   \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
%</11pt>
%<*12pt>
   \@setfontsize\normalsize\@xiipt{14.5}%
   \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
   \abovedisplayshortskip \z@ \@plus3\p@
   \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
%</12pt>
%    \end{macrocode}
%    The |\belowdisplayskip| is always equal to the
%    |\abovedisplayskip|. The parameters of the first level list are
%    always given by |\@listI|.
%    \begin{macrocode}
   \belowdisplayskip \abovedisplayskip
   \let\@listi\@listI}
%    \end{macrocode}
%
%    We initially choose the normalsize font.
%    \begin{macrocode}
\normalsize
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\small}
%    This is similar to |\normalsize|.
%    \begin{macrocode}
\newcommand{\small}{%
%<*10pt>
   \@setfontsize\small\@ixpt{11}%
   \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
   \abovedisplayshortskip \z@ \@plus2\p@
   \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
   \def\@listi{\leftmargin\leftmargini
               \topsep 4\p@ \@plus2\p@ \@minus2\p@
               \parsep 2\p@ \@plus\p@ \@minus\p@
               \itemsep \parsep}%
%</10pt>
%<*11pt>
   \@setfontsize\small\@xpt\@xiipt
   \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
   \abovedisplayshortskip \z@ \@plus3\p@
   \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
   \def\@listi{\leftmargin\leftmargini
               \topsep 6\p@ \@plus2\p@ \@minus2\p@
               \parsep 3\p@ \@plus2\p@ \@minus\p@
               \itemsep \parsep}%
%</11pt>
%<*12pt>
   \@setfontsize\small\@xipt{13.6}%
   \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
   \abovedisplayshortskip \z@ \@plus3\p@
   \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
   \def\@listi{\leftmargin\leftmargini
               \topsep 9\p@ \@plus3\p@ \@minus5\p@
               \parsep 4.5\p@ \@plus2\p@ \@minus\p@
               \itemsep \parsep}%
%</12pt>
   \belowdisplayskip \abovedisplayskip
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\footnotesize}
%    This is similar to |\normalsize|.
%    \begin{macrocode}
\newcommand{\footnotesize}{%
%<*10pt>
   \@setfontsize\footnotesize\@viiipt{9.5}%
   \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
   \abovedisplayshortskip \z@ \@plus\p@
   \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
   \def\@listi{\leftmargin\leftmargini
               \topsep 3\p@ \@plus\p@ \@minus\p@
               \parsep 2\p@ \@plus\p@ \@minus\p@
               \itemsep \parsep}%
%</10pt>
%<*11pt>
   \@setfontsize\footnotesize\@ixpt{11}%
   \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@
   \abovedisplayshortskip \z@ \@plus\p@
   \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
   \def\@listi{\leftmargin\leftmargini
               \topsep 4\p@ \@plus2\p@ \@minus2\p@
               \parsep 2\p@ \@plus\p@ \@minus\p@
               \itemsep \parsep}%
%</11pt>
%<*12pt>
   \@setfontsize\footnotesize\@xpt\@xiipt
   \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
   \abovedisplayshortskip \z@ \@plus3\p@
   \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
   \def\@listi{\leftmargin\leftmargini
               \topsep 6\p@ \@plus2\p@ \@minus2\p@
               \parsep 3\p@ \@plus2\p@ \@minus\p@
               \itemsep \parsep}%
%</12pt>
   \belowdisplayskip \abovedisplayskip
}
%</10pt|11pt|12pt>
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scriptsize}
% \begin{macro}{\tiny}
% \begin{macro}{\large}
% \begin{macro}{\Large}
% \begin{macro}{\LARGE}
% \begin{macro}{\huge}
% \begin{macro}{\Huge}
%    These are all much simpler than the previous macros, they just
%    select a new fontsize, but leave the parameters for displays and
%    lists alone.
%    \begin{macrocode}
%<*10pt>
\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt}
\newcommand{\tiny}{\@setfontsize\tiny\@vpt\@vipt}
\newcommand{\large}{\@setfontsize\large\@xiipt{14}}
\newcommand{\Large}{\@setfontsize\Large\@xivpt{18}}
\newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{22}}
\newcommand{\huge}{\@setfontsize\huge\@xxpt{25}}
\newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{30}}
%</10pt>
%<*11pt>
\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viiipt{9.5}}
\newcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt}
\newcommand{\large}{\@setfontsize\large\@xiipt{14}}
\newcommand{\Large}{\@setfontsize\Large\@xivpt{18}}
\newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{22}}
\newcommand{\huge}{\@setfontsize\huge\@xxpt{25}}
\newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{30}}
%</11pt>
%<*12pt>
\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viiipt{9.5}}
\newcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt}
\newcommand{\large}{\@setfontsize\large\@xivpt{18}}
\newcommand{\Large}{\@setfontsize\Large\@xviipt{22}}
\newcommand{\LARGE}{\@setfontsize\LARGE\@xxpt{25}}
\newcommand{\huge}{\@setfontsize\huge\@xxvpt{30}}
\let\Huge=\huge
%</12pt>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{Paragraphing}
%
% \begin{macro}{\lineskip}
% \begin{macro}{\normallineskip}
%    These parameters control \TeX's behavior when two lines tend to
%    come too close together.
%    \begin{macrocode}
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\baselinestretch}
%    This is used as a multiplier for |\baselineskip|. The default is
%    to {\em not\/} stretch the baselines.
%    \begin{macrocode}
\renewcommand\baselinestretch{}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\parskip}
% \begin{macro}{\parindent}
%    |\parskip| gives extra vertical space between paragraphs and
%    |\parindent| is the width of the paragraph indentation.
%    Letters are typeset without paragraph indentation.
%    \begin{macrocode}
\setlength\parskip{0.7em}
\setlength\parindent{0\p@}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@lowpenalty}
% \begin{macro}{\@medpenalty}
% \begin{macro}{\@highpenalty}
%    The commands |\nopagebreak| and |\nolinebreak| put in penalties
%    to discourage these breaks at the point they are put in.
%    They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|,
%    dependant on their argument.
%    \begin{macrocode}
\@lowpenalty   51
\@medpenalty  151
\@highpenalty 301
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\clubpenalty}
% \begin{macro}{\widowpenalty}
%    These penalties are used to discourage club and widow lines.
%    Because we use their default values we only show them here,
%    commented out.
%    \begin{macrocode}
% \clubpenalty  150
% \widowpenalty 150
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\displaywidowpenalty}
% \begin{macro}{\predisplaypenalty}
% \begin{macro}{\postdisplaypenalty}
%    Discourage (but not so much) widows in front of a math display
%    and forbid breaking directly in front of a display. Allow break
%    after a display without a penalty. Again the default values are
%    used, therefore we only show them here.
%    \begin{macrocode}
% \displaywidowpenalty 50
% \predisplaypenalty   10000
% \postdisplaypenalty  0
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\interlinepenalty}
%    Allow the breaking of a page in the middle of a paragraph.
%    \begin{macrocode}
% \interlinepenalty 0
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\brokenpenalty}
%    We allow the breaking of a page after a hyphenated line.
%    \begin{macrocode}
% \brokenpenalty 0
%</lettGF>
%    \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.
%    \LaTeX's output routine will not work properly if it has the
%    value 0pt, so do not do that!
%    \begin{macrocode}
%<*10pt|11pt|12pt>
\setlength\headheight{12\p@}
\setlength\headsep   {45\p@}
%<10pt>\setlength\topskip   {10\p@}
%<11pt>\setlength\topskip   {11\p@}
%<12pt>\setlength\topskip   {12\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}
%
% \begin{macro}{\maxdepth}
% \begin{macro}{\@maxdepth}
%    The \TeX\ primitive register |\maxdepth| has a function that is
%    similar to that of |\topskip|. The register |\@maxdepth| should
%    always contain a copy of |\maxdepth|. In both plain \TeX\ and
%    \LaTeX~2.09 |\maxdepth| had a fixed value of \texttt{4pt}; in
%    native \LaTeX2e\ mode we let the value depend on the typesize. We
%    set it so that |\maxdepth| $+$ |\topskip| $=$ typesize $\times
%    1.5$. As it happens, in these classes |\topskip| is equal to the
%    typesize, therefor we set |\maxdepth| to half the value of
%    |\topskip|.
%    \begin{macrocode}
\setlength\maxdepth{.5\topskip}
\setlength\@maxdepth\maxdepth
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsubsection{The dimension of text}
%
% \begin{macro}{\textwidth}
%    First, we calculate the maximum |\textwidth|, which we will allow
%    on the selected paper and store it in |\@tempdima|. Then we store
%    the length of a line with approximately 60--70 characters in
%    |\@tempdimb|. The values given are more or less suitable when
%    Computer Modern fonts are used.
%    \begin{macrocode}
  \setlength\@tempdima{\paperwidth}
  \addtolength\@tempdima{-2in}
%<10pt>  \setlength\@tempdimb{345\p@}
%<11pt>  \setlength\@tempdimb{360\p@}
%<12pt>  \setlength\@tempdimb{390\p@}
%    \end{macrocode}
%
%    Now we can set the |\textwidth|, depending on whether we will be
%    setting one or two columns.
%
%    In two column mode each {\em column} shouldn't be wider than
%    |\@tempdimb| (which could happen on \textsc{a3} paper for
%    instance).
%    \begin{macrocode}
  \if@twocolumn
    \ifdim\@tempdima>2\@tempdimb\relax
      \setlength\textwidth{2\@tempdimb}
    \else
      \setlength\textwidth{\@tempdima}
    \fi
%    \end{macrocode}
%
%    In one column mode the text should not be wider than the minimum
%    of the paperwidth (minus 2 inches for the margins) and the
%    maximum length of a line as defined by the number of characters.
%    \begin{macrocode}
  \else
    \ifdim\@tempdima>\@tempdimb\relax
      \setlength\textwidth{\@tempdimb}
    \else
      \setlength\textwidth{\@tempdima}
    \fi
  \fi
%    \end{macrocode}
%
%    Here we modify the width of the text a little to be a whole
%    number of points.
%    \begin{macrocode}
  \@settopoint\textwidth
%    \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).
%
%    Again we compute this, depending on the papersize and depending
%    on the baselineskip that is used, in order to have a whole number
%    of lines on the page.
%    \begin{macrocode}
  \setlength\@tempdima{\paperheight}
%    \end{macrocode}
%
%    We leave at least a 1 inch margin on the top and the bottom of
%    the page.
%    \begin{macrocode}
  \addtolength\@tempdima{-2in}
%    \end{macrocode}
%
%    We also have to leave room for the running headers and footers.
%    \begin{macrocode}
  \addtolength\@tempdima{-1.5in}
%    \end{macrocode}
%
%    Then we divide the result by the current |\baselineskip| and
%    store this in the count register |\@tempcnta|, which then
%    contains the number of lines that fit on this page.
%    \begin{macrocode}
  \divide\@tempdima\baselineskip
  \@tempcnta=\@tempdima
%    \end{macrocode}
%
%    From this we can calculate the height of the text.
%    \begin{macrocode}
  \setlength\textheight{\@tempcnta\baselineskip}
%    \end{macrocode}
%
%    The first line on the page has a height of |\topskip|.
%    \begin{macrocode}
\addtolength\textheight{\topskip}
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{Margins}
%
% \begin{macro}{\oddsidemargin}
% \begin{macro}{\evensidemargin}
% \begin{macro}{\marginparwidth}
%    The values for |\oddsidemargin| and |\marginparwidth| will be set
%    depending on the status of the |\if@twoside|.
%
%    If |@twoside| is true (which is always the case for book) we make
%    the inner margin smaller than the outer one.
%    \begin{macrocode}
  \setlength{\@tempdima}{\paperwidth}
  \addtolength{\@tempdima}{-2in}
  \addtolength{\@tempdima}{-\textwidth}
  \setlength\oddsidemargin   {.5\@tempdima}
  \setlength\evensidemargin  {\oddsidemargin}
%    \end{macrocode}
%    The width of the margin for text is set to the remainder of the
%    width except for a `real margin' of white space of width 0.4in.
%    A check should perhaps be built in to ensure that the (text)
%    margin width does not get too small!
%    \begin{macrocode}
    \setlength\marginparwidth   {.6\@tempdima}
    \addtolength\marginparwidth {-0.4in}
%    \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}
%<10pt>  \setlength\marginparsep{11\p@}
%<11pt>  \setlength\marginparsep{10\p@}
%<12pt>  \setlength\marginparsep{10\p@}
%<10pt|11pt>\setlength\marginparpush{5\p@}
%<12pt>\setlength\marginparpush{7\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{\paperheight}
  \addtolength\topmargin{-2in}
  \addtolength\topmargin{-\headheight}
  \addtolength\topmargin{-\headsep}
  \addtolength\topmargin{-\textheight}
  \addtolength\topmargin{-\footskip}     % this might be wrong!
%    \end{macrocode}
% \end{macro}
%
%
% \subsubsection{Footnotes}
%
% \begin{macro}{\footnotesep}
%    |\footnotesep| is the height of the strut placed at the beginning
%    of every footnote. It equals the  height of a normal
%    |\footnotesize| strut in this
%    class, thus no extra space occurs between footnotes.
%    \begin{macrocode}
%<10pt>\setlength\footnotesep{6.65\p@}
%<11pt>\setlength\footnotesep{7.7\p@}
%<12pt>\setlength\footnotesep{8.4\p@}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\footins}
%    |\skip\footins| is the space between the last line of the main
%    text and the top of the first footnote.
%    \begin{macrocode}
%<10pt>\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
%<11pt>\setlength{\skip\footins}{10\p@ \@plus 4\p@ \@minus 2\p@}
%<12pt>\setlength{\skip\footins}{10.8\p@ \@plus 4\p@ \@minus 2\p@}
%</10pt|11pt|12pt>
%    \end{macrocode}
% \end{macro}
%
%
% \subsubsection{Float placement parameters}
%
% All float parameters are given default values in the \LaTeXe{}
% kernel. For this reason counters only need to be set with
% |\setcounter| and other parameters are set using |\renewcommand|.
%
% \paragraph{Limits for the placement of floating objects}
%
% \begin{macro}{\c@topnumber}
%    The \Lcount{topnumber} counter holds the maximum number of
%    floats that can appear on the top of a text page.
%    \begin{macrocode}
%<*lettGF>
\setcounter{topnumber}{2}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\topfraction}
%    This indicates the maximum part of a text page that can be
%    occupied by floats at the top.
%    \begin{macrocode}
\renewcommand{\topfraction}{.7}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\c@bottomnumber}
%    The \Lcount{bottomnumber} counter holds the maximum number of
%    floats that can appear on the bottom of a text page.
%    \begin{macrocode}
\setcounter{bottomnumber}{1}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\bottomfraction}
%    This indicates the maximum part of a text page that can be
%    occupied by floats at the bottom.
%    \begin{macrocode}
\renewcommand{\bottomfraction}{.3}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\c@totalnumber}
%    This indicates the maximum number of floats that can appear on
%    any text page.
%    \begin{macrocode}
\setcounter{totalnumber}{3}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\textfraction}
%    This indicates the minimum part of a text page that has to be
%    occupied by text.
%    \begin{macrocode}
\renewcommand{\textfraction}{.2}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\floatpagefraction}
%    This indicates the minimum part of a page that has to be
%    occupied by floating objects before a `float page' is produced.
%    \begin{macrocode}
\renewcommand{\floatpagefraction}{.5}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\c@dbltopnumber}
%    The \Lcount{dbltopnumber} counter holds the maximum number of
%    two column floats that can appear on the top of a two column text
%    page.
%    \begin{macrocode}
\setcounter{dbltopnumber}{2}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dbltopfraction}
%    This indicates the maximum part of a two column text page that
%    can be occupied by two column floats at the top.
%    \begin{macrocode}
\renewcommand{\dbltopfraction}{.7}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dblfloatpagefraction}
%    This indicates the minimum part of a page that has to be
%    occupied by two column wide floating objects before a `float
%    page' is produced.
%    \begin{macrocode}
\renewcommand{\dblfloatpagefraction}{.5}
%</lettGF>
%    \end{macrocode}
% \end{macro}
%
% \paragraph{Floats on a text page}
%
% \begin{macro}{\floatsep}
% \begin{macro}{\textfloatsep}
% \begin{macro}{\intextsep}
%    When a floating object is placed on a page with text, these
%    parameters control the separation between the float and the other
%    objects on the page. These parameters are used for both
%    one-column mode and single-column floats in two-column mode.
%
%    |\floatsep| is the space between adjacent floats that are moved
%    to the top or bottom of the text page.
%
%    |\textfloatsep| is the space between the main text and floats
%    at the top or bottom of the page.
%
%    |\intextsep| is the space between in-text floats and the text.
%    \begin{macrocode}
%<*10pt>
\setlength\floatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep   {12\p@ \@plus 2\p@ \@minus 2\p@}
%</10pt>
%<*11pt>
\setlength\floatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep   {12\p@ \@plus 2\p@ \@minus 2\p@}
%</11pt>
%<*12pt>
\setlength\floatsep    {12\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep   {14\p@ \@plus 4\p@ \@minus 4\p@}
%</12pt>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dblfloatsep}
% \begin{macro}{\dbltextfloatsep}
%    When floating objects that span the whole |\textwidth| are placed
%    on a text page when we are in twocolumn mode the separation
%    between the float and the text is controlled by |\dblfloatsep|
%    and |\dbltextfloatsep|.
%
%    |\dblfloatsep| is the space between adjacent floats that are moved
%    to the top or bottom of the text page.
%
%    |\dbltextfloatsep| is the space between the main text and floats
%    at the top or bottom of the page.
%
%    \begin{macrocode}
%<*10pt>
\setlength\dblfloatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
%</10pt>
%<*11pt>
\setlength\dblfloatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
%</11pt>
%<*12pt>
\setlength\dblfloatsep    {14\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
%</12pt>
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \paragraph{Floats on their own page or column}
%
% \begin{macro}{\@fptop}
% \begin{macro}{\@fpsep}
% \begin{macro}{\@fpbot}
%    When floating objects are placed on separate pages the layout of
%    such pages is controlled by these parameters. At the top of the
%    page |\@fptop| amount of stretchable whitespace is inserted, at
%    the bottom of the page we get an |\@fpbot| amount of stretchable
%    whitespace. Between adjacent floats the |\@fpsep| is inserted.
%
%    These parameters are used for the placement of floating objects
%    in one column mode, or in single column floats in two column
%    mode.
%
%    Note that at least one of the two parameters |\@fptop| and
%    |\@fpbot| should contain a |plus ...fil| to allow filling the
%    remaining empty space.
%    \begin{macrocode}
%<*10pt>
\setlength\@fptop{0\p@ \@plus 1fil}
\setlength\@fpsep{8\p@ \@plus 2fil}
\setlength\@fpbot{0\p@ \@plus 1fil}
%</10pt>
%<*11pt>
\setlength\@fptop{0\p@ \@plus 1fil}
\setlength\@fpsep{8\p@ \@plus 2fil}
\setlength\@fpbot{0\p@ \@plus 1fil}
%</11pt>
%<*12pt>
\setlength\@fptop{0\p@ \@plus 1fil}
\setlength\@fpsep{10\p@ \@plus 2fil}
\setlength\@fpbot{0\p@ \@plus 1fil}
%</12pt>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@dblfptop}
% \begin{macro}{\@dblfpsep}
% \begin{macro}{\@dblfpbot}
%    Double column floats in two column mode are handled with similar
%    parameters.
%    \begin{macrocode}
%<*10pt>
\setlength\@dblfptop{0\p@ \@plus 1fil}
\setlength\@dblfpsep{8\p@ \@plus 2fil}
\setlength\@dblfpbot{0\p@ \@plus 1fil}
%</10pt>
%<*11pt>
\setlength\@dblfptop{0\p@ \@plus 1fil}
\setlength\@dblfpsep{8\p@ \@plus 2fil}
\setlength\@dblfpbot{0\p@ \@plus 1fil}
%</11pt>
%<*12pt>
\setlength\@dblfptop{0\p@ \@plus 1fil}
\setlength\@dblfpsep{10\p@ \@plus 2fil}
\setlength\@dblfpbot{0\p@ \@plus 1fil}
%</12pt>
%<*lettGF>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \subsection{Page Styles}
%
%    The page style \pstyle{foo} is defined by defining the command
%    |\ps@foo|.   This command should make only local definitions.
%    There should be no stray spaces in the definition, since they
%    could lead to mysterious extra spaces in the output (well, that's
%    something that should be always avoided).
%
% \begin{macro}{\@evenhead}
% \begin{macro}{\@oddhead}
% \begin{macro}{\@evenfoot}
% \begin{macro}{\@oddfoot}
%    The |\ps@...| command defines the macros |\@oddhead|,
%    |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running
%    heads and feet---e.g., |\@oddhead| is the macro to produce the
%    contents of the heading box for odd-numbered pages.  It is called
%    inside an |\hbox| of width |\textwidth|.
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Marking conventions}
%
%    To make headings determined by the sectioning commands, the page
%    style defines the commands |\chaptermark|, |\sectionmark|,
%    \ldots, where |\chaptermark{|\meta{text}|}| is called by
%    |\chapter| to set a mark, and so on.
%
%    The |\...mark| commands and the |\...head| macros are defined
%    with the help of the following macros.  (All the |\...mark|
%    commands should be initialized to no-ops.)
%
%    \LaTeX{} extends \TeX's |\mark| facility by producing two kinds
%    of marks, a `left' and a `right' mark, using the following
%    commands:
%    \begin{flushleft}
%     |\markboth{|\meta{left}|}{|\meta{right}|}|: Adds both marks.
%
%     |\markright{|\meta{right}|}|: Adds a `right' mark.
%
%     |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
%                  or |\@evenfoot| macros, it gets the current `left'
%                  mark.  |\leftmark| works like \TeX's |\botmark|
%                  command.
%
%     |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
%                   or  |\@evenfoot| macros, it gets the current
%                   `right' mark. |\rightmark| works like \TeX's
%                   |\firstmark| command.
%    \end{flushleft}
%
%    The marking commands work reasonably well for right marks
%    `numbered within' left marks--e.g., the left mark is changed by a
%    |\chapter| command and the right mark is changed by a |\section|
%    command.  However, it does produce somewhat anomalous results if
%    two |\markboth|'s occur on the same page.
%
%
%    Commands like |\tableofcontents| that should set the marks in some
%    page styles use a |\@mkboth| command, which is |\let| by the
%    pagestyle command (|\ps@...|)  to |\markboth| for setting the
%    heading or to |\@gobbletwo| to do nothing.
%
%
%    \begin{macrocode}
% %%%\mark{{}{}}   % Initializes TeX's marks   <--- can vanish
%    \end{macrocode}
%
% \subsubsection{Defining the page styles}
% \label{sec:pagestyle}
%
%    The pagestyles \pstyle{empty} and \pstyle{plain} are defined in
%    \file{latex.tex}.
%
% \begin{macro}{\ps@headings}
%    The definition of the page style \pstyle{headings} has to be
%    different for two sided printing than it is for one sided
%    printing.
%    \begin{macrocode}
\ifthenelse{\boolean{@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.
%    \begin{macrocode}
      \ifthenelse{\setboolean{noheader}}
        {\let\@oddhead\@empty}
        {\setlength\headheight{36\p@}
         \def\@oddhead{\@setheader}}
      \let\@evenhead\@oddhead}}
%    \end{macrocode}
%    For one sided printing we don't need to define |\@evenhead| so
%    the definition is somewhat simpler.
%    \begin{macrocode}
 {\def\ps@headings{%
      \let\@oddfoot\@empty
      \ifthenelse{\setboolean{noheader}}
        {\let\@oddhead\@empty}
        {\setlength\headheight{36\p@}
         \def\@oddhead{\@setheader}}}}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\ps@empty}
%    The definition of the page style \pstyle{empty} is simple:
%    No running head or foot at all.
%    \begin{macrocode}
\def\ps@empty{%
  \let\@oddfoot\@empty
  \let\@oddhead\@empty
  \let\@evenfoot\@empty
  \let\@evenhead\@empty}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ps@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{%
  \ifnoheader
    \let\@oddhead\@empty
   \else
    \setlength\headheight{36\p@}
    \def\@evenhead{\@setheader}
  \fi
  \def\@oddfoot{\raisebox{0\p@}[\z@]{\@setfooter}
  \hss}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ps@plain}
%    The definition of the page style \pstyle{plain} is again simple.
%    \begin{macrocode}
\def\ps@plain{%
  \ifnoheader
    \let\@oddhead\@empty
   \else
    \setlength\headheight{36\p@}
    \def\@oddhead{\@setheader}
  \fi
  \def\@oddfoot{
    \rmfamily
    \hfil
    \thepage
    \ifthenelse{\boolean{faxpaper}}
     {/\pagenum}
     {}
    \hfil}%
  \let\@evenfoot\@oddfoot}%
%    \end{macrocode}
% \end{macro}
%
%  \subsection{documentbegin/end with faxoption}
%
%    At the end of the document write out the total number of
%    page in the auxfile.
%    \begin{macrocode}
\ifthenelse{\boolean{faxpaper}}
  {\@fileswtrue
   \AtEndDocument{
     \addtocounter{page}{-1}
     \immediate\write\@mainaux{\string\def\string\pagenum{\thepage}}
     \addtocounter{page}{1}
     }}
  {\@fileswfalse}
%    \end{macrocode}
%
% \section{Document Markup}
%
% \subsection{Global Declarations}
%
%  \begin{macro}{\leftfield}
%    Width of the left part of the headline.
%    \begin{macrocode}
\setlength\unitlength{\p@}
\newlength{\leftfield}
\setlength\leftfield{0.6\textwidth}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\rightfield}
%    Width of the right part of the headline.
%    \begin{macrocode}
\newlength{\rightfield}
\setlength\rightfield{\textwidth}
\addtolength{\rightfield}{-\leftfield}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@date}
%    This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
%    to provide the date of the \LaTeX-run.
%    \begin{macrocode}
\providecommand{\@date}
          {\newboolean{@datelongboo}
           \setboolean{@datelongboo}{false}
           \ifthenelse{\equal{\@yref}{}}
            {\ifthenelse{\equal{\@myref}{}}
              {\setboolean{@datelongboo}{true}}{}
            }{}
           \ifthenelse{\equal{\@ymail}{}}
            {\ifthenelse{\boolean{fax}}
              {\ifthenelse{\equal{\@myref}{}}
                {\setboolean{@datelongboo}{true}}{}
               \ifthenelse{\equal{\@yref}{}}
                {\setboolean{@datelongboo}{true}}{}
              }
              {\setboolean{@datelongboo}{true}}{}
            }
            {\ifthenelse{\boolean{fax}}
              {}
              {\ifthenelse{\equal{\@myref}{}}
                {\setboolean{@datelongboo}{true}}{}
               \ifthenelse{\equal{\@yref}{}}
                {\setboolean{@datelongboo}{true}}{}
              }
            }
           \ifthenelse{\boolean{@datelongboo}}
            {\@datelong}
            {\@dateshort}
          }
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@date}
%    Macro to to caculate the actual time, but not to print it.
%    \begin{macrocode}
\newcommand{\@calculate@time}{
%    \end{macrocode}
%    expands to the actual time (hours:minutes)
%    written by Dimitris Dranidis
%    (modified by Michael Mehlich to avoid temporary counter)
%    \begin{macrocode}
  \newcount\hours
  \newcount\minutes
%    \end{macrocode}
%    calculate hours and minutes\\
%    hours = time/60 = ((time/60)*60)/60\\
%    minutes = time-(time/60)*60\\
%    \begin{macrocode}
  \minutes\time
  \hours\minutes\divide\hours60\multiply\hours60
  \advance\minutes-\hours
  \divide\hours60
 }
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@date}
%    macro to output calculated time
%    \begin{macrocode}
\def\@time{\@calculate@time
           \the\hours:%
           \ifnum\minutes<10
             0%
            \else
           \fi
           \the\minutes}
%    \end{macrocode}
%  \end{macro}
%
% \begin{macro}{\pagenum}
% \begin{macro}{\@yref}
% \begin{macro}{\@mref}
% \begin{macro}{\@ymaildate}
% \begin{macro}{\@subject}
%    We make sure that the internal control sequences that are used to
%    store the information exist and are empty.
%    \begin{macrocode}
\def\pagenum{??}
\def\@yref{}
\def\@mref{}
\def\@ymaildate{}
\def\@subject{}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%                       
% \begin{macro}{\@setheader}
%    Command to print the header, that exist out of two parts.
%    \begin{macrocode}
\newcommand{\@setheader}
  {\parbox[t]{\textwidth}%
%    \end{macrocode}
%    Set the left part.
%    \begin{macrocode}
     {\parbox[b]{\leftfield}
        {\ifcase\@ptsize\relax
           \LARGE
          \or
           \Large
          \or
           \large
         \fi
         \sffamily\fromname}%
%    \end{macrocode}
%    Set the right part with the picture or anythingelse.
%    \begin{macrocode}
      \parbox[b]{\rightfield}
        {\hfill
         \ifx\bilddateiname\empty
          \else
           \input{\bilddateiname}%
           \csname set\bilddateiname\endcsname%
         \fi}\\[1mm]%
      \rule{\textwidth}{0.1mm}
     }%
  }%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@setfooter}
%    Command to print the footer, which contents the bankconnection 
%    or/and the full adress.
%    \begin{macrocode}
\newcommand{\@setfooter}
  {\parbox[b]{\textwidth}
     {\ifcase\@ptsize\relax
        \small
       \or
        \footnotesize
       \or
        \scriptsize
      \fi
      \tabcolsep0.5ex
%    \end{macrocode}
%    Print the full address.
%    \begin{macrocode}
      \ifthenelse{\boolean{fulladdress}}
       {\sffamily\rule{\textwidth}{1pt}
        \begin{tabular}{l}
          \fromname\\
          \fromstreet\\
          \fromlocation
        \end{tabular}
        \hfill
        \begin{tabular}{ll}
          \telephonestr:&\precode/\telephonenum\\
          \faxnrstr:    &\precode/\myfax\\
          \emailadrstr: &\myemail
        \end{tabular}
%    \end{macrocode}
%    Print the bankconnection.
%    \begin{macrocode}
        \ifthenelse{\boolean{bankconnection}}
         {\hfill
          \begin{tabular}{ll}
            \banknamestr:  &\bankname\\
            \banknrstr:    &\banknr\\
            \accountnrstr: &\accountnr
          \end{tabular}
         }{}
       }
       {\ifthenelse{\boolean{bankconnection}}
         {\sffamily\rule{\textwidth}{1pt}
          \underline{\bankconnectionstr:} \bankname \hfill
          \banknrstr: \banknr \hfill \accountnrstr: \accountnr
         }{}
       }
    }
  }
%    \end{macrocode}
% \end{macro}
%
% \subsection{The generic letter commands}
%
% \begin{environment}{letter}
%     The letter environment creates a new letter, starting from page 1.
%     (The first page is unnumbered.)  It has a single argument, which
%     is the addressee and his address, as in
%\begin{verbatim}
%  \begin{letter}{Sam Jones \\
%                 Institute for Retarded Study\\
%                 Princeton, N.J.}
%\end{verbatim}
%     Local declarations, such as |\address|, can follow the
%     |\begin{letter}|.
%    \begin{macrocode}
\newenvironment{letter}[2][empty]
  {\pagestyle{plain}
   \newpage
   \ifthenelse{\boolean{@twoside}}
    {\ifthenelse{\isodd{\c@page}}
      {}
      {\thispagestyle{plain} \hbox{}\newpage}
    }{}
   \c@page\@ne
   \interlinepenalty=200 % smaller than the TeXbook value
   \ifthenelse{\boolean{mletterboo}}
    {\ifthenelse{\equal{#1}{empty}}
      {}
      {\ClassError{\ClassName}{\errormesc}{\errorhelpc}}
     \ifthenelse{\equal{#2}{\empty}}
      {}
      {\ClassError{\ClassName}{\errormesc}{\errorhelpc}}}
    {\searchaddress[#1]{#2}}
%    \end{macrocode}
%    The |\leavevmode| and |\ignorespaces| commands are there for
%    protecting against an empty argument.
%    \begin{macrocode}
   \@processto{\leavevmode\ignorespaces \csname\adr\endcsname}}
%    \end{macrocode}
%    The end of the environment possibly writes the address
%    information on the \file{.aux} file.
%    \begin{macrocode}
  {\stopletter\@@par
   \ifthenelse{\value{psnum}=1}{\psname\space\@ps\\}{}
   \pagebreak\@@par}
%    \end{macrocode}
% \end{environment}
%
%
% \begin{macro}{\@processto}
% \begin{macro}{\@xproc}
% \begin{macro}{\@yproc}
%    |\@processto| gets the |\toname| and |\toaddress| from the letter
%    environment's macro argument. |\@xproc| and |\@yproc| are auxiliary
%    macros.
%    \begin{macrocode}
\long\def\@processto#1{\@xproc #1\\@@@\ifx\toaddress\@empty
    \else \@yproc #1@@@\fi}
\long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}}
\long\def\@yproc #1\\#2@@@{\def\toaddress{#2}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \subsubsection{Page breaking control}
%
% \begin{macro}{\stopbreaks}
%    When the command |\stopbreaks| is issued no page breaks should
%    occur until |\startbreaks| is called.
%    \begin{macrocode}
\newcommand*{\stopbreaks}{\interlinepenalty \@M
   \def\par{\@@par\nobreak}\let\\=\@nobreakcr
   \let\vspace\@nobreakvspace}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\nobreakvspace}
% \begin{macro}{\nobreakvspacex}
% \begin{macro}{\nobreakcr}
%    These are needed by |\stopbreaks|
%    \begin{macrocode}
\def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
\def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else
               \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
\def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\startbreaks}
%    This cancels the effect of |\stopbreaks|.
%    \begin{macrocode}
\newcommand*{\startbreaks}{\let\\=\@normalcr
   \interlinepenalty 200\def\par{\@@par\penalty 200\relax}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\to@label}
%    Because the german post can deliver the letters faster, if the 
%    addresslabel written in sanserif 10pt-12pt, because of maschinell 
%    reading.
%    \begin{macrocode}
\newcommand{\to@label}[2]
  {\setbox0\vbox
    {\parbox{\leftfield}
       {\ifcase\@ptsize\relax
          \LARGE
         \or
          \Large
         \or
          \large
        \fi
        \sf#1\\#2}}
   \vbox to 3.5cm{\vss\box0\vss}}
%    \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}[2][empty]{
   \thispagestyle{firstpage}
   \parbox[t]{\leftfield}
     {\ifcase \@ptsize\relax
        \normalsize
       \or
        \small
       \or
        \footnotesize
      \fi
      \underline{\sf \fromaddress}\\
      \to@label{\toname}{\toaddress}
     }
   \parbox[t]{\rightfield}{}
   \par
   \rule{\textwidth}{0.1mm}
   \tabcolsep0em
   \begin{tabular}{l}
      \ifcase \@ptsize\relax
        \small
       \or
        \footnotesize
       \or
        \scriptsize
       \fi
       \datestr\\
       \normalsize
       \@date
   \end{tabular}
   \ifthenelse{\boolean{faxpaper}}
    {\hfill
     \begin{tabular}{c}
      \ifcase \@ptsize\relax
        \small
       \or
        \footnotesize
       \or
        \scriptsize
      \fi
      \timestr\\
      \normalsize
      \@time
     \end{tabular}
     \hfill
     \begin{tabular}{c}
      \ifcase \@ptsize\relax
        \small
       \or
        \footnotesize
       \or
        \scriptsize
       \fi
       \pagenumstr\\
       \normalsize
       \pagenum
     \end{tabular}
    }
   \hfill
   \ifthenelse{\equal{\@myref}{\empty}}
    {}
    {\begin{tabular}{c}
       \ifcase\@ptsize\relax
         \small
        \or
         \footnotesize
        \or
         \scriptsize
       \fi
       \myrefname\\
       \normalsize
       \@myref
     \end{tabular}\hfill
    }
   \ifthenelse{\equal{\@yref}{\empty}}
    {}
    {\begin{tabular}{c}
       \ifcase\@ptsize\relax
         \small
        \or
         \footnotesize
        \or
         \scriptsize
       \fi
       \yrefstr\\
       \normalsize\@yref%
     \end{tabular}
     \hfill
    }
   \ifthenelse{\equal{\@ymaildate}{\empty}}
    {}
    {\begin{tabular}{r}
       \ifcase\@ptsize\relax
         \small
        \or
         \footnotesize
        \or
         \scriptsize
       \fi
       \ymaildatestr\\
       \normalsize\@ymaildate%
     \end{tabular}
     \hfill
    }
   \par
   \tabcolsep1em
   \vspace{3\parskip}
   \ifthenelse{\equal{\@subject}{\empty}}
    {}
    {\ifthenelse{\equal{\subjectstr}{\empty}}
      {{\bf \@subject}}
      {{\bf\subjectstr}\space\@subject}
     \par
     \vspace{2\parskip}
    }
   \ifthenelse{\equal{#1}{empty}}
    {\ifthenelse{\equal{#2}{\empty}}
      {\openingtext}
      {#2}}
    {\csname #1\endcsname
     \ifthenelse{\equal{#2}{\empty}}
      {}
      {\space #2},}
   \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%
  \hspace*{\longindentation}%
  \parbox{\indentedwidth}
      {\raggedright
       \ifthenelse{\equal{#1}{\empty}}
        {\closingtext}
        {\@ifundefined{#1}%
          {#1}
          {\csname #1\endcsname}
        }\\
       \ifthenelse{\equal{\csname\contactstr\endcsname}{\contactgood}}%
        {Dein%
         \ifthenelse{\boolean{faxpaper}}%
          {\ifthenelse{\equal{\unterschriftdateiname}{\empty}}%
            {\vspace{6\medskipamount}}%
            {\par%
             \vspace{3\medskipamount}%
             \hspace{1em}%
             \input{\unterschriftdateiname}%
             \csname set\unterschriftdateiname\endcsname%
             \par}}
          {\vspace{6\medskipamount}}
        }
        {\ifthenelse{\boolean{faxpaper}}%
          {\ifthenelse{\equal{\unterschriftdateiname}{\empty}}%
            {\vspace{6\medskipamount}}%
            {\par%
             \vspace{3 \medskipamount}%
             \hspace{1em}%
             \input{\unterschriftdateiname}%
             \csname set\unterschriftdateiname\endcsname%
             \par}}
          {\vspace{6\medskipamount}}%
         \vspace{1\medskipamount}%
         \ifthenelse{\equal{\fromsig}{\empty}}%
          {}
          {(\fromsig)}
        }%
       \strut
      }%
  \vfill}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\smallskipamount}
% \begin{macro}{\mdeskipamount}
% \begin{macro}{\bigskipamount}
%   Of these three, only |\medskipmount| is actually used above.
%    \begin{macrocode}
%\smallskipamount=.5\parskip
\medskipamount=\parskip
%\bigskipamount=2\parskip
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\cc}
% \begin{macro}{\encl}
% \begin{macro}{\ps}
%    After the |\closing| you can put arbitrary stuff, which is typeset
%    with zero |\parindent| and no page breaking.  Commands designed
%    for use after the closing are:
%    \begin{verbatim}
%  \cc{Tinker\\Evers\\Chance}
%\end{verbatim}
%    which produces:\\
%    \begin{tabular}{ll}
%        cc: & Tinker\\
%            & Evers\\
%            & Chance
%    \end{tabular}\\
%    Note the obvious use of |\parbox|.
%    \begin{macrocode}
\newlength{\word}
\newcommand*{\cc}[1]{%
  \par\noindent
  \parbox[t]{\textwidth}{%
    \@hangfrom{\reset@font\rm \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{\reset@font\rm \enclname: }%
    \ignorespaces #1\strut}\par}
%    \end{macrocode}
%
%\begin{verbatim}
%  \ps{Bar}
%\end{verbatim}
%    which produces:\\
%  PS.: Bar
%but
%\begin{verbatim}
%  \ps{Foo(2)
%  \ps{Bar}
%\end{verbatim}
%    \begin{tabular}{ll}
%        encl: & 1) Foo(2)\\
%              & 2) Bar
%    \end{tabular}
%    \begin{macrocode}
\newcounter{psnum}
\newcommand*{\ps}[1]
  {\stepcounter{psnum}
   \ifthenelse{\value{psnum}=1}
    {\def\@ps{#1}}
    {\ifthenelse{\value{psnum}=2}
      {\psname\space1.\ \@ps\\}
      {}
     \settowidth{\word}{\psname\space}
     \hspace*{\word}\the\value{psnum}.\ #1\\}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \begin{macro}{\stopletter}
%     The |\stopletter| command is called by |\endletter| to do the
%     following:
%     Add any desired  fill  or other material at the end of the
%     letter.
%    \begin{macrocode}
\newcommand*{\stopletter}{}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\fromaddress}
%    The return address for the labels can be stored in this
%    macro.
%    \begin{macrocode}
\newcommand*{\fromaddress}
  {\fromname\space
   \fromstreet\space
   \fromlocation}
%    \end{macrocode}
% \end{macro}
%
% \subsection{Lists}
%
% \subsubsection{General List Parameters}
%
% The following commands are used to set the default values for the list
% environment's parameters. See the \LaTeX{} manual for an explanation
% of the meanings of the parameters.  Defaults for the list
% environment are set as follows.  First, |\rightmargin|,
% |\listparindent| and |\itemindent| are set to 0pt.  Then, for a Kth
% level list, the command |\@listK| is called, where `K' denotes `i',
% `i', ... , `vi'.  (I.e., |\@listiii| is called for a third-level
% list.)  By convention, |\@listK| should set |\leftmargin| to
% |\leftmarginK|.
%
% \begin{macro}{\leftmargin}
% \begin{macro}{\leftmargini}
% \begin{macro}{\leftmarginii}
% \begin{macro}{\leftmarginiii}
% \begin{macro}{\leftmarginiv}
% \begin{macro}{\leftmarginv}
% \begin{macro}{\leftmarginvi}
% For efficiency, level-one list's values are defined at top level, and
% |\@listi| is defined to set only |\leftmargin|.
%    \begin{macrocode}
\setlength\leftmargini  {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}
%<10pt>\setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@}
%<11pt>\setlength\partopsep{3\p@ \@plus 1\p@ \@minus 1\p@}
%<12pt>\setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\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}
%<*10pt|11pt|12pt>
\def\@listI{\leftmargin\leftmargini
%<*10pt>    
            \parsep 4\p@ \@plus2\p@ \@minus\p@
            \topsep 8\p@ \@plus2\p@ \@minus4\p@
            \itemsep4\p@ \@plus2\p@ \@minus\p@}
%</10pt>            
%<*11pt>            
            \parsep 4.5\p@ \@plus2\p@ \@minus\p@
            \topsep 9\p@   \@plus3\p@ \@minus5\p@
            \itemsep4.5\p@ \@plus2\p@ \@minus\p@}
%</11pt>            
%<*12pt>            
            \parsep 5\p@  \@plus2.5\p@ \@minus\p@
            \topsep 10\p@ \@plus4\p@   \@minus6\p@
            \itemsep5\p@  \@plus2.5\p@ \@minus\p@}
%</12pt>
\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 {\leftmargin\leftmarginii
              \labelwidth\leftmarginii
              \advance\labelwidth-\labelsep
%<*10pt>
              \topsep    4\p@ \@plus2\p@ \@minus\p@
              \parsep    2\p@ \@plus\p@  \@minus\p@
%</10pt>                 
%<*11pt>                 
              \topsep    4.5\p@ \@plus2\p@ \@minus\p@
              \parsep    2\p@   \@plus\p@  \@minus\p@
%</11pt>                 
%<*12pt>                 
              \topsep    5\p@   \@plus2.5\p@ \@minus\p@
              \parsep    2.5\p@ \@plus\p@    \@minus\p@
%</12pt>                 
              \itemsep   \parsep}
\def\@listiii{\leftmargin\leftmarginiii
              \labelwidth\leftmarginiii
              \advance\labelwidth-\labelsep
%<10pt>              \topsep    2\p@ \@plus\p@\@minus\p@
%<11pt>              \topsep    2\p@ \@plus\p@\@minus\p@
%<12pt>              \topsep    2.5\p@\@plus\p@\@minus\p@
              \parsep    \z@
              \partopsep \p@ \@plus\z@ \@minus\p@
              \itemsep   \topsep}
\def\@listiv {\leftmargin\leftmarginiv
              \labelwidth\leftmarginiv
              \advance\labelwidth-\labelsep}
\def\@listv  {\leftmargin\leftmarginv
              \labelwidth\leftmarginv
              \advance\labelwidth-\labelsep}
\def\@listvi {\leftmargin\leftmarginvi
              \labelwidth\leftmarginvi
              \advance\labelwidth-\labelsep}
%</10pt|11pt|12pt>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Enumerate}
%
%    The enumerate environment uses  four counters: \Lcount{enumi},
%    \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where
%    \Lcount{enumN} controls the numbering of the Nth level
%    enumeration.
%
% \begin{macro}{\theenumi}
% \begin{macro}{\theenumii}
% \begin{macro}{\theenumiii}
% \begin{macro}{\theenumiv}
%    The counters are already defined in \file{latex.tex}, but their
%    representation is changed here.
%
%    \begin{macrocode}
\renewcommand\theenumi{\arabic{enumi}}
\renewcommand\theenumii{\alph{enumii}}
\renewcommand\theenumiii{\roman{enumiii}}
\renewcommand\theenumiv{\Alph{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}
% \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.
%    \begin{macrocode}
\newcommand\labelitemi{$\m@th\bullet$}
\newcommand\labelitemii{\normalfont\bfseries --}
\newcommand\labelitemiii{$\m@th\ast$}
\newcommand\labelitemiv{$\m@th\cdot$}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Description}
%
% \begin{environment}{description}
%    The description environment is defined here -- while the itemize
%    and enumerate environments are defined in \file{latex.tex}.
%
%    \begin{macrocode}
\newenvironment{description}
               {\list{}{\labelwidth\z@ \itemindent-\leftmargin
                        \let\makelabel\descriptionlabel}}
               {\endlist}
%    \end{macrocode}
% \end{environment}
%
% \begin{macro}{\descriptionlabel}
%    To change the formatting of the label, you must redefine
%    |\descriptionlabel|.
%
%    \begin{macrocode}
\newcommand\descriptionlabel[1]{\hspace\labelsep
                                \normalfont\bfseries #1}
%    \end{macrocode}
% \end{macro}
%
% \subsection{Defining new environments}
%

% \subsubsection{Verse}
%
% \begin{environment}{verse}
%   The verse environment is defined by making clever use of the
%   list environment's parameters.  The user types |\\| to end a line.
%   This is implemented by |\let|'ing |\\| equal |\@centercr|.
%
%    \begin{macrocode}
\newenvironment{verse}
               {\let\\=\@centercr
                \list{}{\setlength\itemsep{\z@}%
                        \setlength\itemindent{-15\p@}%
                        \setlength\listparindent{\itemindent}%
                        \setlength\rightmargin{\leftmargin}%
                        \addtolength\leftmargin{15\p@}}%
                \item[]}
               {\endlist}
%    \end{macrocode}
% \end{environment}
%
% \subsubsection{Quotation}
%
% \begin{environment}{quotation}
%   The quotation environment is also defined by making clever use of
%   the list environment's parameters. The lines in the environment
%   are set smaller than |\textwidth|. The first line of a paragraph
%   inside this environment is indented.
%
%    \begin{macrocode}
\newenvironment{quotation}
               {\list{}{\setlength\listparindent{1.5em}%
                        \setlength\itemindent{\listparindent}%
                        \setlength\rightmargin{\leftmargin}}%
                \item[]}
               {\endlist}
%    \end{macrocode}
% \end{environment}
%
% \subsubsection{Quote}
%
% \begin{environment}{quote}
%   The quote environment is like the quotation environment except
%   that paragraphs are not indented.
%
%    \begin{macrocode}
\newenvironment{quote}
               {\list{}{\setlength\rightmargin{\leftmargin}}%
                \item[]}
               {\endlist}
%    \end{macrocode}
% \end{environment}
%
% \subsubsection{Theorem}
%
%    This document class does not define it's own theorem environments,
%    the defaults, supplied by \file{latex.ltx} are available.
%

% \subsection{Setting parameters for existing environments}
%
% \subsubsection{Array and tabular}
%
% \begin{macro}{\arraycolsep}
%    The columns in an array environment are separated by
%    2|\arraycolsep|.
%    \begin{macrocode}
\setlength\arraycolsep{5\p@}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\tabcolsep}
%    The columns in an tabular environment are separated by
%    2|\tabcolsep|.
%    \begin{macrocode}
\setlength\tabcolsep{6\p@}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\arrayrulewidth}
%    The width of vertical rules in the array and tabular environments
%    is given by |\arrayrulewidth|.
%    \begin{macrocode}
\setlength\arrayrulewidth{.4\p@}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\doublerulesep}
%    The space between adjacent rules in the array and tabular
%    environments is given by |\doublerulesep|.
%    \begin{macrocode}
\setlength\doublerulesep{2\p@}
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{Tabbing}
%
% \begin{macro}{\tabbingsep}
%    This controls the space that the |\'| command puts in. (See
%    \LaTeX{} manual for an explanation.)
%    \begin{macrocode}
\setlength\tabbingsep{\labelsep}
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{Minipage}
%
% \begin{macro}{\@minipagerestore}
%    The macro |\@minipagerestore| is called upon entry to a minipage
%    environment to set up things that are to be handled differently
%    inside a minipage environment. In the current styles, it does
%    nothing.
% \end{macro}
%
% \begin{macro}{\@mpfootins}
%    Minipages have their own footnotes; |\skip||\@mpfootins| plays
%    same r\^ole for footnotes in a minipage as |\skip||\footins| does
%    for ordinary footnotes.
%
%    \begin{macrocode}
\skip\@mpfootins = \skip\footins
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{Framed boxes}
%
% \begin{macro}{\fboxsep}
%    The space left by |\fbox| and |\framebox| between the box and the
%    text in it.
% \begin{macro}{\fboxrule}
%    The width of the rules in the box made by |\fbox| and |\framebox|.
%    \begin{macrocode}
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsubsection{Equation and eqnarray}
%
% \begin{macro}{\theequation}
%    The equation counter will be typeset using arabic numbers.
%    \begin{macrocode}
\renewcommand\theequation{\arabic{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.
%    \begin{macrocode}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\bf}
%    The command to change to the bold series. One should use
%    |\mdseries| to explicitly switch back to medium series.
%    \begin{macrocode}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\sl}
%  \begin{macro}{\it}
%  \begin{macro}{\sc}
%
%    And the commands to change the shape of the font. The slanted and
%    small caps shapes are not available by default as math alphabets,
%    so those changes do nothing in math mode. One should use
%    |\upshape| to explicitly change back to the upright shape.
%    \begin{macrocode}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\relax}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\relax}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% \begin{macro}{\cal}
% \begin{macro}{\mit}
%
%    The commands |\cal| and |\mit| should only be used in math mode,
%    outside math mode they have no effect. Currently the New Font
%    Selection Scheme defines these commands to generate warning
%    messages. Therefore we have to define them `by hand'.
%    \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}
%    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
%             \hbox to \z@{\hss\@makefnmark}#1}
% \end{verbatim}
%    The effect of this definition is that all lines of the footnote
%    are indented by 10pt, while the first line of a new paragraph is
%    indented by 1em. To change these dimensions, just substitute the
%    desired value for `10pt' (in both places) or `1em'.  The mark is
%    flush right against the footnote.
%
%    In these document class we use a simpler macro, in which the
%    footnote text is set like an ordinary text paragraph, with no
%    indentation except on the first line of a paragraph, and the
%    first line of the footnote. Thus, all the macro must do is set
%    |\parindent| to the appropriate value for succeeding paragraphs
%    and put the proper indentation before the mark.
%
%    \begin{macrocode}
\long\def\@makefntext#1{%
    \noindent
    \hangindent 5\p@
    \hbox to5\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{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{empty} pages in this document class by
%    default. We use arabic page numbers.
%    \begin{macrocode}
\pagestyle{empty}
\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 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
%</lettGF>
%    \end{macrocode}
%
%
%
% \section{External options to the standard document classes}
%
% \subsection{Left equation numbering}
%
%  \begin{macro}{\@eqnnum}
%    To put the equation number on the left side of an equation we
%    have to use a little trick. The number is shifted |\displaywidth|
%    to the left inside a box of (approximately) zero width. This
%    fails when the quation is too wide, the equation number than may
%    overprint the equation itself.
%    \begin{macrocode}
%<*leqno>
\renewcommand{\@eqnnum}{\hbox to .01\p@{}%
                      \rlap{\reset@font\rmfamily
                        \hskip -\displaywidth(\theequation)}}
%</leqno>
%    \end{macrocode}
%  \end{macro}
%
% \subsection{Flush left equations}
%
%    To get the displayed math environments to print the contents
%    flush left (with an indentation) we have to redefine all of
%    \LaTeXe's displayed math environments.
%
%  \begin{macro}{\mathindent}
%    The amount of indentation of the equations is stored in a register.
%    \begin{macrocode}
%<*fleqn>
\newdimen\mathindent
%    \end{macrocode}
%    The setting of |\mathindent| has to be deferred until the class
%    file has been processed, because |\leftmargini| is still 0pt
%    wide at the moment \file{fleqn.clo} is read in.
%    \begin{macrocode}
\AtEndOfClass{\mathindent\leftmargini}
%    \end{macrocode}
% \end{macro}
%
%  \begin{macro}{\[}
%    Begin display math;
%    \begin{macrocode}
\renewcommand{\[}{\relax
                 \ifmmode\@badmath
                 \else
                   \begin{trivlist}%
                     \@beginparpenalty\predisplaypenalty
                     \@endparpenalty\postdisplaypenalty
                     \item[]\leavevmode
                     \hbox to\linewidth\bgroup $\m@th\displaystyle %$
                       \hskip\mathindent\bgroup
                 \fi}
%    \end{macrocode}
% \end{macro}
%
%  \begin{macro}{\]}
%    end display math;
%    \begin{macrocode}
\renewcommand{\]}{\relax
                 \ifmmode
                       \egroup $\hfil% $
                     \egroup
                   \end{trivlist}%
                 \else \@badmath
                 \fi}
%    \end{macrocode}
% \end{macro}
%
%  \begin{environment}{equation}
%    The \textsf{equation} environment
%    \begin{macrocode}
\renewenvironment{equation}%
    {\@beginparpenalty\predisplaypenalty
     \@endparpenalty\postdisplaypenalty
     \refstepcounter{equation}%
     \trivlist \item[]\leavevmode
       \hbox to\linewidth\bgroup $\m@th% $
         \displaystyle
         \hskip\mathindent}%
        {$\hfil % $
         \displaywidth\linewidth\hbox{\@eqnnum}%
       \egroup
     \endtrivlist}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{eqnarray}
%    The \textsf{eqnarray} environment
%    \begin{macrocode}
\renewenvironment{eqnarray}{%
    \stepcounter{equation}%
    \def\@currentlabel{\p@equation\theequation}%
    \global\@eqnswtrue\m@th
    \global\@eqcnt\z@
    \tabskip\mathindent
    \let\\=\@eqncr
    \setlength{\abovedisplayskip}{\topsep}%
    \ifvmode
      \addtolength{\abovedisplayskip}{\partopsep}%
    \fi
%    \end{macrocode}
%    When the documentclass uses a non-zero |\parskip| setting the
%    |\topsep| might have a negative value to compensate for
%    that. Therefor we add |\parskip| to |\abovedisplayskip|.
%    \begin{macrocode}
    \addtolength{\abovedisplayskip}{\parskip}%
    \setlength{\belowdisplayskip}{\abovedisplayskip}%
    \setlength{\belowdisplayshortskip}{\abovedisplayskip}%
    \setlength{\abovedisplayshortskip}{\abovedisplayskip}%
    $$\everycr{}\halign to\linewidth% $$
    \bgroup
      \hskip\@centering
      $\displaystyle\tabskip\z@skip{##}$\@eqnsel&%
      \global\@eqcnt\@ne \hskip \tw@\arraycolsep \hfil${##}$\hfil&%
      \global\@eqcnt\tw@ \hskip \tw@\arraycolsep
        $\displaystyle{##}$\hfil \tabskip\@centering&%
      \global\@eqcnt\thr@@
        \hbox to \z@\bgroup\hss##\egroup\tabskip\z@skip\cr}%
      {\@@eqncr
    \egroup
    \global\advance\c@equation\m@ne$$% $$
    \global\@ignoretrue
    }
%</fleqn>
%    \end{macrocode}
% \end{environment}
%
% \Finale
%
\endinput
%
% End of file `lettGF.cls'.
