%
% \iffalse meta-comment
%
% $Id: dinbrief.dtx 1.66 1996/10/29 20:50:05 Gussmann Exp $
%
%<*styleinfo>
=======================================================================
@stylefile{Ltall
shortpackagename = {dinbrief},
longpackagename  = {dinbrief},
baseformats      = {\LaTeX\ 2.09 and \LaTeXe},
version          = {$Revision: 1.66 $},
date             = {$Date: 1996/10/29 20:50:05 $},
author           = {K.D. Braune, R. Gussmann,
                   rz32@dkauni2.bitnet
                   braune@rz.uni-karlsruhe.de
                   ry46@dkauni2.bitnet
                   gussmann@rz.uni-karlsruhe.de
                   Universit\"at Karlsruhe
                   Rechenzentrum
                   Postfach 6980
                   76128 Karlsruhe
                   +49 721 608-40 31},
abstract         = {This document serves as User's Guide
                   and as documentation of the new \LaTeX-Style
                   or a \LaTeXe-Class.  This class/style implements
                   a new document layout for writing letters,
                   according to the rules of DIN (Deutsches
                   Institut f\"ur Normung, German standardization
                   institute). The User's Guide is written in
                   German, since we assume the class/style is of
                   minor interest outside Germany.  Of course,
                   most of the macros are explained in English.},
support          = {yes},
comments         = {},
requirements     = {},
incompatibilities = {not full compatible to R. Sengerlings dinbrief}}
=======================================================================
%</styleinfo>
%
% $Log: dinbrief.dtx $
% Revision 1.66  1996/10/29 20:50:05  Gussmann
% - lots of minor changes.
%
% Revision 1.65  1996/08/06 01:17:29  Gussmann
% - \cmd\closing extended.
% - minor bugs fixed.
%
% Revision 1.64  1996/05/30 22:36:59  Gussmann
% - Fixed a typo.
%
% Revision 1.63  1996/05/21 19:13:50  Gussmann
% - twoside option added.
%
% Revision 1.62  1996/01/09 19:59:40  Gussmann
% - \@multiplelabelsfalse is no longer defined in LaTeX2e.
%   Removed this line from the code.
%
% Revision 1.61  1995/12/12 20:31:16  Gussmann
% - Fixed wrong headline.
% - Removed \cs\G@refundefined\ from \cs\document\ to work with
%   the December 1995 release of LaTeX2e.
%
% Revision 1.60  1995/10/27 00:13:16  Gussmann
% File: brfkopf.tex changed. \vspace* moved before the picture.
%
% Revision 1.59  1995/10/05 22:53:59  Gussmann
% Forgot to change the \cmd\checksum.
%
% Revision 1.58  1995/10/05 22:37:22  Gussmann
% Fixed bug in \cmd\document. Problems with ats in the aux-file
% should not longer arise.
%
% Revision 1.57  1995/08/15 23:31:20  Gussmann
% - Documentation changed.
% - Checksum set.
%
% Revision 1.56  1995/08/15 23:04:24  Gussmann
% - \cmd\subject changed. It's now a link to \cmd\concern.
%
% Revision 1.55  1995/08/15 22:55:53  Gussmann
% - Empty white page on the very end of the document will not longer shipped
%   out.
% - Fixed bug in the generation of labels with style label@plain.
% - Command \string\subject added. Same behavior as \string\concern.
%
% Revision 1.54  1995/07/06 02:35:55  Gussmann
% - Code for the readme-file removed. It can now be found in dbaddon.dtx.
% - Code for tracing removed. It can now be found in dbaddon.dtx.
%
% Revision 1.53  1995/07/06 01:37:11  Gussmann
% - Readme-file added.
% - structure of dinbrief.dtx changed.
% - pagestyle contheadins didn't work correct in all cases.
%
% Revision 1.52  1995/06/30 15:15:28  Gussmann
% - pagestyle contheadings did not work.
% - fixed bug in placing the enclosures right.
% - \cmd\nofiles and \cmd\makelabels did now work as expected.
%   (Warning \cmd\nofiles switches also the generation of the
%   labels off).
%
% Revision 1.51  1995/06/29 12:48:35  Gussmann
% *** empty log message ***
%
% Revision 1.50  1995/06/29 12:45:15  Gussmann
% - Versionnumber is overtaken from rcs.
%
% Revision 1.49  1995/06/29 12:41:20  Gussmann
% - \cmd\letter\ changed. \cmd\vspace\ is set to \cmd\relax\ while
%   splitting the receivers address.
% - \cmd\ntoday\ added. The behavior is quite the same as in \cmd\today.
% - \cmd\@ntoday changed.
%
% Revision 1.48  1995/06/28 02:34:32  Gussmann
% - Fixed bug in redefinition of \cmd\cal\ und \cmd\mit.
% - Behavior of \cmd\Anlagen\ and \cmd\Verteiler\ changed
%   to be compatible with old dinbrief.
% - Commands \cmd\encl\ and \cmd\cc\ changed. Now an
%   optional argument can replace the predefined strings
%   or avoid them if an empty optional argument is given.
%   This will be a feature and not documented.
% - LaTeX warnings changed to Class dinbrief warnings.
%   In LaTeX209 mode a new command \cmd\ClassWarning\
%   defined.
%
% Revision 1.47  1995/06/12 23:43:58  Gussmann
% - Only the position of the windowtics changed (all of them
%   moved 1.1mm down).
%
% Revision 1.46  1995/06/12 23:03:54  Gussmann
% - Documentation updated.
% - Some test messages removed.
% - Some macros changed.
%
% Revision 1.45  1995/06/01 00:42:51  Gussmann
% Documentation has been updated und completed (not complete yet).
%
% Revision 1.44  1995/05/31 18:17:45  Gussmann
% - \cmd\labelnumber\ changed to \cmd\setlabelnumber
% - \cmd\labelheight\ changed to \cmd\setlabelheight
% - \cmd\labeltopmargin\ changed to \cmd\setlabeltopmargin
% - Reason: One of the commands above is also used inside the list
%           environment.
%
% Revision 1.43  1995/05/11 02:45:55  Gussmann
% - Thousends of overfull hboxes removed.
% - Character table added.
% - Checksum added.
% - LaTeX2e version check added.
%   (but still the wrong date.)
%
% Revision 1.42  1995/05/11 01:32:40  Gussmann
% Section for the commands of the old dinbrief from Rainer Sengerling
% added.
%
% Revision 1.41  1995/05/09 00:48:54  Gussmann
% - Yeah! Labels can now be printed on Herma copy-print 4452 (105mm x 42mm)
% - \cmd\hoffset will not be changed, therefore \cmd\evensidemargin and
%   \cmd\oddsidemargin hold now other values.
% - \cmd\voffset will not be changed, therefore \cmd\topmargin
%   hold now other values.
% - \cmd\setlabelwidth holds now the width of one label.
% - still inconsistent label commands: \setlabelwidth, \labelheight,
%   \labeltopmargin.
% - new trace flag \cs{if@kadb@tracinglabels}.
%
% Revision 1.40  1995/04/28 01:36:09  Gussmann
% - Fixed bug in switch commands for the generation of labels, \cmd\nolabels,.
% - Fixed bug in typesetting the labels.
%
% Revision 1.39  1995/04/28 01:26:27  Gussmann
% - New commands: \cmd\offlabels, \cmd\onlabels and \cmd\nolabels.
% - fixed bug in typesetting the labels.
%
% Revision 1.38  1995/04/27 23:46:43  Gussmann
% - Generation of labels with different sizes work now.
% - \cmd\spare works also now.
% - Fine tuning of the labels and their adjustement on the
%   page is beeing still missing.
%
% Revision 1.37  1995/04/26 00:49:03  Gussmann
% - Label management not yet complete (Try \Etizahl{4} to get
%   funny results).
% - Former authors are still not mentioned. (Some people
%   will grumble about this!)
%
% Revision 1.36  1995/04/25 23:54:35  Gussmann
% Assignments for \labelnumber, \labelheight and \labelwidth are now
% global.
%
% Revision 1.35  1995/04/25 23:51:49  Gussmann
% Only comments added behind some closing braces.
%
% Revision 1.34  1995/04/25 23:36:01  Gussmann
% Changes:
%   - \newdimen\ka@db@tmpdima\ introduced.
%   - \cmd\closing\ changed.
%
% Revision 1.33  1995/04/25 23:20:03  Gussmann
% \cmd\closing\ changed. Forgott to insert a minus sign in the calculation
% of the witdh of the parboxes.
%
% Revision 1.32  1995/04/25 23:13:18  Gussmann
% *** empty log message ***
%
% Revision 1.31  1995/03/02 00:54:57  Gussmann
% * Test messages has being commented out.
% * Some bugs fixed in \cmd\label@plain.
% * \cmd\label@plain still contains errors.
%
% Revision 1.30  1995/03/01 23:44:04  Gussmann
% * \cmd\spare implemented (still not complete).
% * \cmd\Etihoehe, \cmd\Etirand and \cmd\Etizahl implemented.
% * \cmd\labelheight, \cmd\labeltopmargin and \cmd\labelnumber
%   implemented.
% * comments in the label section added.
%
% Revision 1.29  1995/02/22 20:07:31  Gussmann
% *** empty log message ***
%
% Revision 1.28  1995/01/22 21:45:47  Gussmann
% * macro \cmd\ka@db@tstoaddress\space changed.
% * \cmd\postremark\space works.
%
% Revision 1.27  1995/01/22 21:28:52  Gussmann
% \cmd\ka@db@ifemptydynvar\space inserts phantom spaces. (Fixed!)
%
% Revision 1.26  1995/01/22 21:25:59  Gussmann
% * many changes (lot of intern commands changed)
% * \cmd\postremark\space added
%
% Revision 1.25  1995/01/22 00:27:24  Gussmann
% * layout bug in envelope window detected and fixed.
%
% Revision 1.24  1995/01/19 02:43:30  Gussmann
% \cmd\letter sequence \let\\=\relax added to avaid error message
% in LaTeX209.
%
% Revision 1.23  1995/01/19 02:28:36  Gussmann
% * lots of changes, not all mentioned here!
% * layout incomplete (some positions differ up to 6mm from norm position)!
% * commands changed (list incomplete)
%   - NEW counter \c@lt@state
%   - \cmd\letter (counter cmds added, old cmds not deletet yet)
%   - \cmd\opening (counter cmds added)
%   - \cmd\closing (counter cmds added)
%   - \cmd\endletter (counter cmds added)
%   - \cmd\cc changed
%   - \cmd\encl changed
%   - \cmd\Anlagen changed
%   - \cmd\Verteiler changed
%   - \cmd\signature changed
%
% Revision 1.22  1995/01/15 23:48:40  Gussmann
% Many changes:
%  * old dinbrief API added (not yet complete).
%  * dinbrief programming API introduced (not used at the moment).
%  * \cmd\opening rewritten:
%    - \cmd\opening is now not longer a large monolitc macro. It
%      is small and calls several other macros.
%    - all other macros called by the \cmd\opening introduced.
%    - new macros causes other base positions of the
%      normed positions of some letter objects. Final
%      position of these objects (i.e. the frames and tics)
%      not checked (+- 2.5mm).
% * macros \cmd\ifka@db@windowrules and \cmd\ifka@db@windowtics
%   replace old macros.
% * new example called: dbold.tex added.
% * driver changed (generate now also dbold.tex, hopefully and index
%   and the changelog.
%
% Revision 1.21  1995/01/13 16:27:49  Gussmann
% * \cmd\splitoncr introduced, to split the address of the receiver
%   in a more user friendly way.
% * old DINBRIEF API functions added.
%
% Revision 1.20  1995/01/12 01:12:12  Gussmann
% Fixed bug to work correctly with NFSS.
% PSNFSS gets now the right fonts.
% Only command \document changed.
%
% Revision 1.19  1994/12/21 23:54:46  Gussmann
% * Work around removed, which fixes a bug from the beta release
%   of LaTeX2e.
% * Date updated.
%
% Revision 1.18  1994/12/20 09:45:03  Gussmann
% *** empty log message ***
%
% Revision 1.17  1994/12/14 19:25:07  Gussmann
% \cs\envname can't being used in headlines.
%
% Revision 1.16  1994/12/14 18:25:36  Gussmann
% * Errors removed: - Definition of \concern contains \newbox command!
%                     \newbox moved outside.
%                   - Equation numbers not reset at the end of a letter.
%                     (Fixed)
% * Still more documentation added and some (a lot of) errors corrected.
% * Test for equation added.
%
% Revision 1.15  1994/12/14 14:18:44  Braune
% *** empty log message ***
%
% Revision 1.14  1994/12/09 14:56:53  Gussmann
% 10pt option removed from files dinbrief.tex and test10.tex
% in the \cmd\documentstyle-command.
%
% Revision 1.13  1994/12/09 14:26:08  Gussmann
% Documentation changed (only some little layout questions).
% Layout of documenation file dinbrief.tex is still unsatisfied.
%
% Revision 1.12  1994/12/09 13:24:53  Gussmann
% I've forgotten to include description of \cmd\closing{}.
% I deleted some doubbled explanations.
%
% Revision 1.11  1994/12/08 12:42:15  Gussmann
% Documentation finished.
% First public release.
%
% Revision 1.10  1994/12/02 02:59:21  Gussmann
% Documentation completed.
%
% Revision 1.9  1994/11/17 03:11:56  Gussmann
% Error corrected within the documentation.
%
% Revision 1.8  1994/11/17 02:44:47  Gussmann
% - More documentation added.
% - Errors corrected:
%   * \verb|\bottomtext| works only with the first letter in a
%     file. Fixed. \verb|\unhbox| changed to \verb|\unhcopy|.
%   * Fixed some errors in the documentation.
% - Test suite extended.
%
% Revision 1.7  1994/11/16 22:03:58  Gussmann
% Documentation has been updated and corrected.
%
% Revision 1.6  1994/11/16 19:26:52  Gussmann
% The document starts now with the user guide.
%
% Revision 1.5  1994/11/16 19:25:04  Gussmann
% *** empty log message ***
%
% Revision 1.4  1994/11/16 19:21:20  Gussmann
% *** empty log message ***
%
% Revision 1.3  1994/11/16 19:17:38  Gussmann
% *** empty log message ***
%
% Revision 1.2  1994/11/16 19:08:08  Gussmann
% *** empty log message ***
%
% Revision 1.1  1994/11/16  23:37:01  Gussmann
% Initial revision (rcs introduced)
%
% =======================================================================
%
% Copyright (C) 1993, 96 by University of Karlsruhe (Computing Center).
% All rights reserved.
% For additional copyright information see further down in this file.
%
% This file is part of the DINBRIEF package
% -----------------------------------------------------------------------
% 
%  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 readme files.
% 
% 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 00readme.din.
% 
% 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{4843}
%%
%% \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         \~}
%%
% \setcounter{StandardModuleDepth}{1}
% \newcommand\Lopt[1]{\textsf {#1}}
% \newcommand\file[1]{\texttt {#1}}
% \newcommand\Lcount[1]{\textsl {\small#1}}
% \newcommand\pstyle[1]{\textsl {#1}}
%
%
% \title{Standard Document Class `dinbrief'\\ for \LaTeX{} version 2e\\
%        Standard Document Style `dinbrief'\\ for \LaTeX{} version 2.09}
%
% \author{%
% Copyright \copyright\ 1993,\ 94,\ 95,\ 96\\
% by Klaus Dieter Braune, Richard Gussmann
% }
%
% \maketitle
%
% \begin{abstract}
%   This document serves as User's Guide and as documentation of the new
%   \LaTeX-Style or a \LaTeXe-Class.  This class/style implements
%   a new document layout for writing letters, according to the rules
%   of DIN (Deutsches Institut f\"ur Normung, German standardization
%   institute). The User's Guide is written in German, since we assume
%   the style is of minor interest outside Germany.  Of course, most of
%   the macros are explained in English.
% \end{abstract}
%
% \tableofcontents
%
% \iffalse
%<*documentation|dintab>
% \fi
%
% \iffalse
\expandafter\ifx\csname documentclass\endcsname\relax
    \documentstyle[german]{article}
    \typeout{Using the command \string\documentstyle.}
  \else
    \documentclass[10pt]{article}
    \usepackage{german}
    \typeout{Using the command \string\documentclass.}
  \fi

\title{Standard Document Class `dinbrief'\\ for \LaTeX{} version 2e\\
       Standard Document Style `dinbrief'\\ for \LaTeX{} version 2.09}

\author{%
Copyright \copyright\ 1993,\ 96\\ by Klaus Dieter Braune, Richard Gussmann
}
% \fi
%
\newenvironment{decl}%
    {\par\small\addvspace{4.5ex plus 1ex}%
     \vskip -\parskip
     \noindent\hspace{-\leftmargini}%
     \begin{tabular}{|l|}\hline\ignorespaces}%
    {\\\hline\end{tabular}\par\nopagebreak\addvspace{2.3ex}%
     \vskip -\parskip}
%
\newcommand{\declline}[1]{\\\multicolumn1{|r|}{\small#1}}
%
\newcommand{\m}[1]{\mbox{$\langle$\emph{#1}$\rangle$}}
%
\renewcommand{\arg}[1]{{\tt\string{}\m{#1}{\tt\string}}}
%
\expandafter\ifx\csname oarg\endcsname\relax
  \newcommand{\oarg}[1]{{\tt[}\m{#1}{\tt]}}
\fi
%
\makeatletter
\expandafter\ifx\csname cmd\endcsname\relax
  \def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
\fi
%
\expandafter\ifx\csname cmd@to@cs\endcsname\relax
\def\cmd@to@cs#1#2{\char\number`#2\relax}
\fi
\makeatother
%
\expandafter\ifx\csname cs\endcsname\relax
\def\cs#1{{\tt\char`\\#1}}
\fi
%
\newcommand{\env}[2]{\cmd{#1}{\protect\tt\char`\{#2\char`\}}}
\newcommand{\envname}[1]{{\protect\tt#1}}
%
\germanTeX
%
\expandafter\ifx\csname emph\endcsname\relax
  \newcommand\emph[1]{{\em#1\/}}% This is \emph{not} the LaTeX2e
                                %  definition!
\fi

% \iffalse
\begin{document}
\maketitle
% \fi
%
% \iffalse
%</documentation|dintab>
% \fi
% \iffalse
%<*documentation>
% \fi
%
\renewcommand{\textfraction}{0.10}
\renewcommand{\topfraction}{0.65}
\renewcommand{\bottomfraction}{0.85}
%
\expandafter\ifx\csname sect\endcsname\relax
  \let\sect=\section
\fi
\expandafter\ifx\csname ssect\endcsname\relax
  \let\ssect=\subsection
\fi
\expandafter\ifx\csname sssect\endcsname\relax
  \let\sssect=\subsubsection
\fi
%
\sect{Benutzerhandbuch (User's Guide)}
%

Mit \LaTeX\ k"onnen (nat"urlich) auch Briefe geschrieben werden.
F"ur englische Briefe gibt es die Dokumentklasse \envname{letter}.
Deutsche Briefe k"onnen mit der Klasse \envname{dinbrief}
geschrieben werden.

Die vorliegende Klasse \envname{dinbrief} basiert auf dem
\envname{dinbrief}-Stil der Universit"at Karlsruhe. Dieser
Stil wurde aus \envname{dletter.sty} entwickelt, welcher
von D.~Heinrich abgefa"st wurde. Seinerseits geht dieser
zur"uck auf den Stil \envname{a4letter} von H.~Partl, welcher
seinen Ursprung im urspr"unglichen \envname{letter}-Stil
von L.~Lamport hatte. Zus"atzlich wurden aus den \envname{dinbrief.sty}
von R.~Sengerling der Befehlsvorrat und die Option \verb|norm|
"ubernommen. Ferner enth"alt diese Klasse Tips und Anregungen von
B.~Raichle.

In den Briefen k"onnen u.a.\ Formeln,
Tabellen und beliebige Listen verwendet werden.
In einem Dokument k"onnen mehrere Briefe geschrieben werden.
Die Gliederung in Abs"atze erfolgt durch Einf"ugen einer
Leerzeile (wie in \LaTeX\ "ublich).

\sect{Befehle in der {\protect\tt dinbrief}-Klasse}
\index{Briefe!DIN 676}\index{DIN-Brief}\index{Briefe!dinbrief@\envname{dinbrief}}

Bereits vor \env\begin{document} kann man Angaben machen, die f"ur
alle Briefe g"ultig sind, z.B.\ {\bf Absender\/} (\cs{address}
bzw.\ \cs{backaddress}), {\bf Absendeort\/} (\cs{place}),
{\bf Telefon\/} (\cs{phone}) und {\bf Unterschrift\/} (\cs{signature}).

\ssect{Aus der {\protect\tt letter}-Klasse "ubernommene Befehle}

Jeder Brief steht in einer eigenen \envname{letter}-Umgebung.
Der Empf"anger wird als Argument des
\env\begin{letter}-Befehls angegeben
(\env\begin{letter}\arg{Anschrift}).

Eine entscheidende Bedeutung beim Schreiben von Briefen
hat der \cs{opening}-Befehl. Nur dieser Befehl setzt
den Briefkopf, die Absenderangaben und die Adresse des
Empf"angers. Die {\bf Anrede des Empf"angers\/} wird als
Argument angegeben (\cmd\opening\arg{Anrede}).

Danach folgt der eigentliche Brieftext. Die abschlie"sende
{\bf Gru"sformel\/} wird mit dem Befehl \cmd\closing\arg{Gru"sformel}
gesetzt. Dieser Befehl f"ugt auch die maschinenschriftliche
Wiederholung der Unterschrift an, wie sie mit dem
\cs{signature}-Befehl festgelegt wurde.

Im Anschlu"s an die Gru"sformel werden {\bf Anlagen-\/}
(\cmd\encl\arg{Anlage}), {\bf Verteilvermerke\/}
(\cmd\cc\arg{Verteiler}) und das {\bf Postscriptum\/}
(\cmd\ps\arg{Postscriptum}) an den Brief angef"ugt.

Mit dem Befehl \cs{makelabels} (vor \env\begin{document})
werden zus"atzlich {\bf Adre"s-Etiketten\/} erzeugt.

Dar"uberhinaus wurden die oben erw"ahnten Befehle
\cs{address}, \cs{place} und \cs{signature} aus
der \envname{letter}-Klasse "ubernommen.
 
\begin{figure}[p]
\begin{center}
{\small
\begin{verbatim}
\documentclass[12pt]{dinbrief}
\usepackage{german}

\address{R"udiger Kurz\\
         Am See 1\\
         76133 Karlsruhe}
\backaddress{R. Kurz, Am See 1, 76133 Karslruhe}
 
\signature{R"udiger Kurz}
\place{Karlsruhe}
 
\begin{document}
\phone{0721}{222222}
\begin{letter}{Deutsche Bundespost\\
               Fernmeldeamt Karlsruhe\\
               Postfach 7300\\[\medskipamount]
               {\bf 76131 Karlsruhe}}
 
\yourmail{01.04.93}
\sign{123456}
\subject{Betrieb eines Mikrowellensenders}
 
\opening{Sehr geehrte Damen und Herren,}
 
anbei sende ich Ihnen eine Kopie der bisherigen Genehmigung f"ur
unseren Mikrowellenherd...
 
... Ihre Bem"uhungen im voraus vielen Dank.
 
\closing{Mit freundlichen Gr"u"sen,}
 
\ps{Wir bitten um schnelle Erledigung.}
\cc{Deutsche Bundespost\\
    Karlsruher Privatfunk \\
    S"uddeutscher Rundfunk}
 
\encl{Abschrift der Urkunde}
 
\end{letter}
\end{document}
\end{verbatim}}
\caption{Brief mit \LaTeX.}\label{brief}
\end{center}
\end{figure}

\ssect{Zus"atzliche Befehle im DIN-Brief}

Der Befehl \cmd\phone\arg{Vorwahl}\arg{Rufnummer/Durchwahl}
legt die {\bf Telefonnummer\/} des Absenders fest.
Sie wird in der Bezugszeichenzeile ausgegeben.

Der {\bf Bezug\/} auf einen empfangenen Brief ist m"oglich
mit Hilfe des Befehls
\cmd\yourmail\arg{Ihre Zeichen, Ihre Nachricht vom}.

Mit dem Befehl \cmd\sign\arg{Unsere Zeichen, unsere Nachricht vom}
kann eine {\bf eigene Kennzeichnung\/} des Briefes angegeben werden.

Mit dem Befehl \cmd\writer\arg{Sachbearbeiter} kann
der {\bf Name des Sachbearbeiters\/} festgelegt werden.

Die Bezugszeichenzeile wird nur gesetzt, falls einer der
Befehle \cs{yourmail}, \cs{sign} oder \cs{writer} verwendet
wird. Der Befehl \cs{writer} schaltet zus"atzlich auf das
in der DIN Norm~676 (Entwurf Mai~1991) festgelegte Layout um.

Der {\bf Betreff (die stichwortartige Inhaltsangabe)\/} des
Briefes wird durch den Befehl \cs{subject}\arg{Betreff}
angegeben. Mit \cs{backaddress} wird die Adresse festgelegt,
die als {\bf Absenderadresse im Brief\kern0pt fenster}
eingeblendet wird.

Abbildung~\ref{brief} enth"alt ein Beispiel f"ur einen Brief.
Die Anwendung der Befehle und ihre Reihenfolge in der Quelldatei
kann dem Beispiel entnommen werden.

F"ur alle, denen das "`Fenster"' um die Adresse nicht gef"allt,
besteht die M"oglichkeit, durch Angabe von
\cmd\nowindowrules\index{nowindowrules@\verb+\nowindowrules+}
vor dem Befehl \cmd\opening\ dieses abzuschalten.
Durch \cmd\windowrules\index{windowrules@\verb+\windowrules+} l"a"st es
sich wieder aktivieren.
 
Die Faltmarkierung am linken Papierrand wird durch den Befehl
\cmd\nowindowtics\index{nowindowtics@\verb+\nowindowtics+} ab- und mit
\cmd\windowtics\index{windowtics@\verb+\windowtics+} wieder angeschaltet.

% \iffalse
% Die Gr"o"se und Form von Adre"s-Etiketten kann mit den Befehlen
% \cmd\setlabelwidth\arg{Breite}\ und \cmd\setlabelheight\arg{H"ohe}\
% festgelegt werden. Die Anzahl der Labels in einer Spalte wird durch
% \cmd\setlabelnumber{Anzahl} angegeben. Der obere Rand kann mit dem
% Befehl \cmd\setlabeltopmargin{H"ohe} eingestellt werden. Mit
% \cmd\spare{Anzahl} k"onnen am Anfang {\sl Anzahl\/} Labels frei
% gelassen werden.
% \fi
Ausf"uhrungen und Erl"auterungen zum Erstellen von Adre"s-Etiketten
finden Sie in einem eigenen Abschnitt weiter hinten in diesem Dokument.
Die Befehlsreferenz enth"alt ebenfalls kurze Beschreibungen der
Befehle zu den Adre"s-Etiketten.

Eine einfache Absenderanschrift in der auf Schreibmaschinen "ublichen
Form (DIN~5008) wird durch den Befehl \cmd\stdaddress\arg{Absenderanschrift}
anstelle von \cmd\address{} erreicht. Die einzelnen Zeilen sind durch
\verb.\\. zu trennen. Das Datum wird ebenfalls oben ausgegeben.
Die Bezugszeichenzeile entf"allt.

Mit dem Befehl \cmd\postremark\ kann ein Postvermerk gesetzt werden.
Dieser Vermerk erscheint im Anschriftenfeld oben, von den "ubrigen
im Argument des Befehls \env\begin{letter}\arg{Anschrift} durch eine
Leerzeile getrennt. Der Behandlungsvermerk wird durch den
Befehl \cmd\handling\arg{Text}\ vereinbart.

Die Anlagen- und Verteilvermerke k"onnen mit dem Befehl \cmd\enclright\
rechts auf Grad~50 anstelle nach der Gru"sformel ausgegeben werden.
Die Befehle \cmd\encl\ und \cmd\cc\ sind dazu vor dem \cmd\closing-Befehl
anzugeben.

\ssect{Befehlsreferenz}

\begin{description}
  \item[\env\begin{letter}\arg{{Anschrift}} \dots\ \env\end{letter}] \hfil\break
        Diese Befehle rahmen jeden einzelnen Brief ein. Die
        Anschrift des Em\-pf"an\-gers wird als Argument des Befehls
        \env\begin{letter}\arg{Anschrift} angegeben.
        Die einzelnen Zeilen in der Anschrift werden durch
        \cmd\\ getrennt.
        Es d"urfen weitere Briefe folgen.

  \item[\cmd\signature\arg{Unterschrift des Absenders}] \hfil\break
        Dieser Befehl legt die maschinenschriftliche
        Wiederholung der Unterschrift fest.
        Der Befehl gilt solange, bis ein weiterer
        \cmd\signature-Befehl eine neue "`Unterschrift"'
        festlegt.

  \item[\cmd\address\arg{{Name und Adresse des Absenders}}] \hfil\break
        Die Adresse des Absenders wird vereinbart.
        Dieser Befehl gilt f"ur den laufenden und alle
        weiteren Briefe; er gilt solange, bis ein
        weiterer \cmd\address-Befehl angegeben wird.

  \item[\cmd\backaddress\arg{{Absenderadresse im Brief\kern 0pt fenster}}] \hfil\break
        Der Befehl legt die Anschrift des Absenders oben im
        Anschriftenfeld des Briefs fest.

  \item[\cmd\place\arg{{Ortsangabe im Brief}}] \hfil\break
        Mit diesem Befehl wird der Absendeort angegeben, der
        zusammen mit dem Datum im Briefkopf ausgegeben wird.

  \item[\cmd\date\arg{{Briefdatum}}] \hfil\break
        Soll als Absendedatum {\sl nicht\/} das aktuelle
        Tagesdatum (des Rechners) eingesetzt werden,
        kann mit diesem Befehl das Datum
        explizit angegeben werden.

        Ohne diesen Befehl wird das aktuelle Tagesdatum
        im Brief verwendet.

  \item[\cmd\yourmail\arg{{Ihre Zeichen, Ihre Nachricht vom}}] \hfil\break
        Der Befehl legt den Inhalt des Feldes {\bf Ihre
        Zeichen, Ihre Nachricht vom\/} in der
        Bezugszeichenzeile fest.

  \item[\cmd\sign\arg{{Unsere Zeichen (, unsere Nachricht vom)}}] \hfil\break
        Dieser Befehl legt den Inhalt des Feldes
        {\bf Unsere Zeichen \dots\/} fest.

  \item[\cmd\phone\arg{{Vorwahl}}\arg{{Rufnummer/Durchwahl}}] \hfil\break
        Die Telefonnummer aufgeteilt nach Vorwahl und Rufnummer oder
        Durchwahl wird mit dem Befehl \cmd\phone{} vereinbart. Diese
        Angaben werden in der Bezugszeichenzeile ausgegeben.

  \item[\cmd\writer\arg{{Sachbearbeiter}}] \hfil\break
        Die Neufassung der Norm DIN~676 vom Mai 1991 sieht in
        der Bezugszeichenzeile ein weiteres Feld f"ur den
        Sachbearbeiter vor. Mit dem Befehl \cmd\writer{}
        kann ein solcher Sachbearbeiter angegeben werden.

        {\sl Die Verwendung dieses Befehls gestaltet den Brief
        entsprechend der Norm DIN~676 vom Mai 1991.\/}

  \item[\cmd\subject\arg{{Betreff}}] \hfil\break
        Mit diesem Befehl wird der Betreff gesetzt, der den
        Empf"anger "uber den Gegenstand des Briefes
        informiert.

        \cmd\concern{} steht aus historischen Gr"unden
        als Synonym bis auf weiteres zur Verf"ugung.

  \item[\cmd\centeraddress] \hfil\break
        Die Empf"angeranschrift wird im Brief\kern 0pt fenster
        vertikal zentriert.

  \item[\cmd\normaladdress] \hfil\break
        Die Empf"angeranschrift wird im Anschriftenfeld unten gesetzt.

  \item[\cmd\opening\arg{{Anrede}}] \hfil\break
        Dieser Befehl vereinbart die Anrede des Empf"angers und setzt
        den Briefkopf, die Empf"angerangaben, eine eventuell vorhandene
        Bezugszeichenzeile, den Betreff und die Anrede des Empf"angers.

        {\bf Dieser Befehl darf nicht fehlen!\/}

  \item[\cmd\closing\arg{{Gru"sformel}}] \hfil\break
        Der Befehl \cmd\closing{} setzt die Gru"sformel und nach
        drei Leerzeilen die maschinenschrifliche Wiederholung
        der Unterschrift.

  \item[\cmd\encl\arg{{Anlagen}}] \hfil\break
        Der Vermerk "uber dem Brief beigef"ugte Anlagen
        wird mit dem Befehl \cmd\encl{} an den Brief
        angeh"angt. Die einzelnen Eintragungen k"onnen
        durch \cmd\\{} getrennt werden.

        Die Reihenfolge der Verwendung der Befehle
        \cmd\encl, \cmd\cc{} und \cmd\ps{} ist beliebig,
        falls die Befehle nach dem \cmd\closing-Befehl
        angegeben werden. Die Norm empfiehlt allerdings
        den Anlagenvermerk vor dem Verteilvermerk
        anzubringen.

  \item[\cmd\cc\arg{{Verteiler}}] \hfil\break
        Der Vermerk "uber weitere Empf"anger dieses Briefes wird
        mit dem Befehl \cmd\cc{} gesetzt. Die einzelnen Eintragungen
        k"onnen durch \cmd\\ getrennt werden.

        Die Befehle \cmd\encl{} und \cmd\cc{} k"onnen sowohl
        vor wie auch nach dem \cmd\closing-Befehl stehen. Wird
        der Befehl \cmd\enclright{} verwendet, m"ussen die beiden
        Befehle vor dem \cmd\closing-Befehl stehen.

  \item[\cmd\ps\arg{{Postscriptum}}] \hfil\break
        Gesch"aftsbriefe enthalten kein Postskriptum.
        Es wurde trotzdem die M"og\-lich\-keit geschaffen,
        ein solches zu verwenden. Mit dem Befehl
        \cmd\ps{} wird ein Postskriptum gesetzt.

  \item[\cmd\makelabels] \hfil\break
        Dieser Befehl mu"s in der Pr"aambel stehen; also
        zwischen \cmd\documentstyle{} oder \cmd\documentclass{}
        und dem \env\begin{document}-Befehl.
        Er aktiviert das Ausdrucken von Adress-Etiketten.

  \item[\cmd\labelstyle\arg{{Stil der Label}}] \hfil\break
        Dieser Befehl vereinbart das Layout der
        Adress-Etiketten. Es gibt Drucker, die in der
        Lage sind, Briefumschl"age zu bedrucken. Mit diesem
        Befehl legt man die Form der Briefumschl"age fest.

        {\sl Zur Zeit steht nur das Layout \env\labelstyle{plain}
        zur Verf"ugung.\/}

  \item[\cmd\bottomtext\arg{{Feld f\"ur Kapitalgesellschaften}}] \hfil\break
        Am Fu"s der ersten Briefseite werden Gesch"aftsangaben und
        zus"atzlich bei Kapitalgesellschaften gesellschaftsrechtliche
        Angaben angegeben. Der Befehl \cmd\bottomtext{} vereinbart
        diese Angaben.

        {\sl Dieser Befehl mu"s nach \env\begin{document}{} stehen.\/}

  \item[\cmd\windowrules] \hfil\break
        Das Anschriftenfeld im Brief wird durch Linien ober-
        und unterhalb vom "ubrigen Brief abgegrenzt.
        Die Hervorhebung wird aktiviert.

  \item[\cmd\nowindowrules] \hfil\break
        Der Befehl schaltet den Rahmen ab.

  \item[\cmd\windowtics] \hfil\break
        Es werden Faltmarkierungen am linken Briefrand
        geruckt.

  \item[\cmd\nowindowtics] \hfil\break
        Es werden keine Faltmarkierungen am linken Briefrand
        ausgedruckt.

  \item[\cmd\disabledraftstandard] \hfil\break
        Der Brief wird entsprechend den
        Vorschriften der Norm DIN~676 vom Dezember 1976 auf
        dem Briefbogen ausgegeben.

  \item[\cmd\enabledraftstandard] \hfil\break
        Der Brief wird entsprechend den
        Vorschriften des Entwurfs der Norm DIN~676 vom
        Mai~1991 auf dem Briefbogen ausgegeben.

  \item[\cmd\setlabelwidth\arg{Breite eines Labels}] \hfil\break
        Dieser Befehl legt die Breite eines Labels fest.
        Als Argument erwartet dieser Befehl eine L"angenangabe.

        {\sl Die Labelbreite ist in der vorliegenden Version
        auf 105~$mm$ festgelegt worden und sollte nicht
        ge"andert werden. Dieser Befehl ist f"ur sp"atere
        Erweiterungen reserviert.\/}

  \item[\cmd\setlabelheight\arg{H"ohe eines Labels}] \hfil\break
        Der Befehl \cmd\setlabelheight{} vereinbart die im
        Argument angegebene L"ange als Labelh"ohe.

  \item[\cmd\setlabeltopmargin\arg{oberer Rand}] \hfil\break
        Bevor die beiden obersten Label (bei beiden Spalten)
        ausgegeben werden, wird oben ein Rand gelassen, dessen
        H"ohe mit \cmd\setlabeltopmargin{} angegeben wird.
        Es wird eine L"angenangabe erwartet.

  \item[\cmd\setlabelnumber\arg{Labelanzahl pro Spalte}] \hfil\break
        Dieser Befehl bestimmt die Zahl der Labels in einer Spalte.

  \item[\cmd\spare\arg{Anzahl leerer Labels}] \hfil\break
        Es werden die im Argument des Befehls angegebene
        Anzahl von Label freigelassen, bevor das erste
        Adre"s--Etikett ausgegeben wird. Die Label werden
        spaltenweise durchgez"ahlt.

% \iffalse
  \item[\cmd\offlabels] \hfil\break
  \item[\cmd\onlabels] \hfil\break
  \item[\cmd\nolabels] \hfil\break
% \fi
  \item[\cmd\stdaddress\arg{Adresse des Absenders}] \hfil\break
        Dieser Befehl setzt die Absenderanschrift in der
        auf Schreibmaschinen "ublichen Form (DIN 5008).
        Mit diesem Befehl kann der Briefkopf nicht frei gestaltet
        werden.

  \item[\env\begin{dinquote} \dots\ \env\end{dinquote}] \hfil\break
        Diese Umgebung r"uckt den Text auf der linken Seite um
        ein Inch ein. Rechts folgt keine Einr"uckung.

  \item[\cmd\enclright] \hfil\break
        Die Anlagen- und Verteilvermerke beginnen, falls sie vor
        den \cmd\closing-Befehl angegeben wurden, rechts
        neben der Gru"sformel.

  \item[\cmd\postremark\arg{Postvermerk}] \hfil\break
        Der Postvermerk wird mit dem Befehl \cmd\postremark{}
        vereinbart. Der Postvermerk geht der Empf"angeranschrift
        mit einer Leerzeile voraus. Dieser Befehl mu"s zwischen
        \env\begin{letter} und dem Befehl \cmd\opening\ stehen.

  \item[\cmd\handling\arg{Behandlungsvermerk}] \hfil\break
        Der Behandlungsvermerk wird rechts neben der
        Empf"angeranschrift auf Grad 50 (bei einer 10er Teilung)
        in H"ohe der letzten Zeile der Empf"angeranschrift
        ausgegeben. Dieser Befehl mu"s zwischen
        \env\begin{letter} und dem Befehl \cmd\opening\ stehen.
\end{description}

% \iffalse
%</documentation>
% \fi
% \iffalse
%<*documentation|dintab>
% \fi

\begin{table}[htp]
\caption{Zusammenfassung der Dinbrief-Befehle:}\index{dinbrief!Befehle}

\begin{center}
\begin{tabular}{l}
  \hline
    \verb|\begin{document}|                                          \\
    \verb|\end{document}|                                            \\
  \hline
    \verb|\begin{letter}|\arg{{Anschrift}}                           \\
    \verb|\end{letter}|                                              \\
  \hline
    \verb|\signature|\arg{Unterschrift des Absenders}           \\
    \verb|\address|\arg{{Name und Adresse des Absenders}}       \\
    \verb|\backaddress|\arg{{Absenderadresse im Brieffenster}}  \\
  \hline
    \verb|\place|\arg{{Ortsangabe im Brief}}                    \\
    \verb|\date|\arg{{Briefdatum}}                              \\
    \verb|\yourmail|\arg{{Ihre Zeichen, Ihre Nachricht vom}}    \\
    \verb|\sign|\arg{{Unsere Zeichen (, unsere Nachricht vom)}} \\
    \verb|\phone|\arg{{Vorwahl}}\arg{{Rufnummer/Durchwahl}}     \\
    \verb|\writer|\arg{{Sachbearbeiter}}                        \\
  \hline
    \verb|\subject|\arg{{Betreff}}                              \\
    \verb|\concern|\arg{{Betreff}}                              \\
    \verb|\opening|\arg{{Anrede}}                               \\
    \verb|\closing|\arg{{Gru"sformel}}                          \\
  \hline
    \verb|\centeraddress|                                       \\
    \verb|\normaladdress|                                       \\
  \hline
    \verb|\encl|\arg{{Anlagen}}                               \\
    \verb|\ps|\arg{{Postscriptum}}                            \\
    \verb|\cc|\arg{{Verteiler}}                               \\
  \hline
    \verb|\makelabels|                                        \\
    \verb|\labelstyle|\arg{{Stil der Label}}                  \\
  \hline
    \verb|\bottomtext|\arg{{Feld f\"ur Kapitalgesellschaften}}\\
  \hline
    \verb|\nowindowrules|                                     \\
    \verb|\windowrules|                                       \\
    \verb|\nowindowtics|                                      \\
    \verb|\windowtics|                                        \\
  \hline
    \verb|\disabledraftstandard|                              \\
    \verb|\enabledraftstandard|                               \\
  \hline
    \verb|\setlabelwidth|\arg{Breite eines Labels}            \\
    \verb|\setlabelheight|\arg{H"ohe eines Labels}            \\
    \verb|\setlabeltopmargin|\arg{oberer Rand}                \\
    \verb|\setlabelnumber|\arg{Labelanzahl pro Spalte}        \\
    \verb|\spare|\arg{Anzahl leerer Labels}                   \\
  \hline
    \verb|\stdaddress|\arg{Adresse des Absenders}             \\
    \verb|\begin{dinquote}|                                   \\
    \verb|\end{dinquote}|                                     \\
    \verb|\enclright|                                         \\
    \verb|\postremark|\arg{Postvermerk}                       \\
    \verb|\handling|\arg{Behandlungsvermerk}                  \\
  \hline
\end{tabular}
\end{center}
\end{table}

% \iffalse
%</documentation|dintab>
% \fi
% \iffalse
%<*documentation>
% \fi

\begin{table}[ht]
\caption{"Uberschriftvariablen und deren Inhalt}
\index{dinbrief!"Uberschriftvariablen}

\begin{center}
(Voreinstellung entspricht DIN)

\begin{tabular}{l}
 \hline
  \verb|\ccname|\{{\tt Verteiler}\}        \\
  \verb|\enclname|\{{\tt Anlage(n)}\}      \\
  \verb|\psname|\{{\tt PS}\}               \\
 \hline
  \verb|\phonemsg|\{{\tt Telefon}\}        \\
  \verb|\signmsgold|\{{\tt Unsere Zeichen}\}  \\
  \verb|\signmsgnew|\{{\tt Unsere Zeichen, unsere Nachricht vom}\}  \\
  \verb|\yourmailmsg|\{{\tt Ihre Zeichen, Ihre Nachricht vom}\}  \\
 \hline
\end{tabular}
\end{center}

\end{table}

%
\ssect{Bezugszeichenzeile}\index{Bezugszeichenzeile}
Die vorliegende Version des \envname{dinbrief}s enth"alt
zwei verschiedene Formen von Bezugszeichenzeilen.
Die beiden Formen sind in der Norm 676 vom Dezember 1976 und
im Entwurf zur Norm 676 vom Mai 1991 definiert. Mit den
Befehlen \cmd\enabledraftstandard\ und \cmd\disabledraftstandard\
schaltet man auf die Form des Entwurfs oder der geltenden Norm
um. Die beiden Formen sind zur besseren Unterscheidung in
Abbildung~\ref{fig:referlines} wiedergegeben.

\begin{figure}[htb]
\begin{center}
\unitlength0.65mm
\begin{picture}(190, 60)
  \linethickness{0.4pt}
  \thinlines
  %
    \put( 10.0, 49){\parbox[t]{50.8\unitlength}{{\sffamily\tiny Ihre Zeichen, Ihre Nachricht vom}\\{\cmd\yourmail}}}
    \put( 60.8, 49){\parbox[t]{50.8\unitlength}{{\sffamily\tiny Unsere Zeichen}\\{\cmd\sign}}}
    \put(111.6, 49){\parbox[t]{25.4\unitlength}{{\sffamily\tiny Telefon}\\{\cmd\phone}}}
    \put(137.0, 49){\parbox[t]{25.4\unitlength}{{\sffamily\tiny Ortsname\\[-2ex] (Datum)}\\{\cmd\place}\\{\cmd\date}}}
    \put(  0.0, 56){\makebox(190, 0){Bezugszeichenzeile nach DIN 676 vom Dezember 1976}}
    \put(  0.0, 30){\framebox(190, 30){}}
  %
    \put( 10.0, 16){\parbox[t]{50.8\unitlength}{{\sffamily\tiny Ihr Zeichen, Ihre Nachricht vom}\\{\cmd\yourmail}}}
    \put( 60.8, 16){\parbox[t]{50.8\unitlength}{{\sffamily\tiny Unser Zeichen, unsere Nachricht vom}\\{\cmd\sign}}}
    \put(111.6, 16){\parbox[t]{50.8\unitlength}{{\sffamily\tiny Telefon, Bearbeiter}\\{\cmd\phone}\\{\cmd\writer}}}
    \put(162.4, 16){\parbox[t]{15.0\unitlength}{{\sffamily\tiny Datum}\\{\cmd\place}\\{\cmd\date}}}
    \put(  0.0, 23){\makebox(190, 0){Bezugszeichenzeile nach DIN 676 vom Mai 1991 (Entwurf)}}
    \put(  0.0,  1){\framebox(190, 27){}}
\end{picture}%
\caption{Formen von Bezugszeichenzeilen}\label{fig:referlines}
\end{center}
\end{figure}
%

%
\ssect{Briefkopf}\index{Briefkopf}
%
Bei h"aufigem Briefeschreiben kommt sicher bald der
Wunsch nach einem eigenen Briefkopf auf; auch dies ist
mit \LaTeX\ zu verwirklichen.
% Am besten er"offnet man sich in seiner Briefdatei (die man
% sicher fr"uher oder sp"ater anlegen wird) ein File mit dem
% Namen {\tt brfkopf.tex}. In dieses kann man z.B.\ den Briefkopf
% in Abb.~\ref{briefkopf} aufnehmen.
Am besten erstellt man eine Datei mit den Einstellungen
f"ur eigene Briefe, wie im Beispiel die Datei {\tt brfkopf.tex}.
Diese Datei kann z.B.\ den Briefkopf aus
Abb.~\ref{briefkopf} enthalten.

\renewcommand{\textfraction}{0.35}

\begin{figure}[p]
\begin{center}
\begin{verbatim}
\newlength{\UKAwd}
\newlength{\ADDRwd}
%
\font\fa=cmcsc10  scaled 1440
\font\fb=cmss12   scaled 1095
\font\fc=cmss10   scaled 1000
%
\def\briefkopf{
 \settowidth{\UKAwd}{\fa Institut f"ur Verpackungen}
 \settowidth{\ADDRwd}{\fc EARN/BITNET: yx99 at dkauni2}
%
 \vspace*{7truemm}
 \raisebox{-11.3mm}{%
   \setlength{\unitlength}{1truemm}
   \begin{picture}(15,15)(0,0)
     \thicklines
     \put(7.5,7.5){\circle{15}}
     \put(7.5,7.5){\circle{10}}
     \put(7.5,7.5){\circle{ 5}}
   \end{picture}%
 }
 {\fc\hspace{.7em}}
 \parbox[t]{\UKAwd}{
        \centering{\fa Universit\"at Gralsruhe} \\
        \centering{\fa Institut f"ur Verpackungen} \\[.5ex]
        \centering{\fb Prof.\ Dr.\ Fritz Schreiber}
        }
 \hfill
 \parbox[t]{\ADDRwd}{
        \fc Engesserstr.\ 9 $\cdot$ Postfach 6980 \\
        \fc 76128 Karlsruhe\\
        \fc Telefon: (0721) 608-9790 \\
        }  }
%
\signature{Prof.\ Dr.\ Fritz Schreiber}
\place{Karlsruhe}
\address{\briefkopf}
\phone{(0721)}{608-9790}
\def\FS{Prof.\,F.\,Schreiber, Univ.\,Karlsruhe,
        Postf.\,6980, 76128\,Karlsruhe\rule[-1ex]{0pt}{0pt}}
\end{verbatim}
\caption{Definition eines Briefkopfs}\label{briefkopf}
\end{center}
\end{figure}

Am Anfang des Briefes sollte nun der Befehl \verb+\input{brfkopf}+
aufgenommen werden gefolgt von \verb+\address{\myaddress}+
\index{myaddress@\verb+\myaddress+}. Dies sorgt
f"ur die gew"unschte Ausgabe des Briefkopfes am Beginn des Briefes.
Nat"urlich lassen sich auch andere als die hier verwendeten Schriftarten
verwenden.
 
\ssect{Kopfzeilen}\index{Kopfzeilen}
 
Es stehen verschiedene Kopfzeilen zur Verf"ugung die "uber die
Option \linebreak[4]\verb+\pagestyle{...}+\index{pagestyle@\verb+\pagestyle+}
ausgew"ahlt werden k"onnen.
Bei \verb+plain+\index{plain@\verb+plain+} wird eine Seitennumerierung
bei mehrseitigen Briefen in der Fu"szeile eingeblendet, die Kopfzeile
bleibt leer. Durch \verb+headings+\index{headings@\verb+headings+} wird
die Kopfzeile mit einer Anrede und der Seitenzahl bei mehrseitigen
Briefen gesetzt.
 
\ssect{Briefe in englischer oder franz"osischer Sprache}
 
Wer Briefe in anderen Sprachen schreiben m"ochte, kann f"ur Englisch und
Franz"osisch die Trennung (abh"angig von der Installation) und Befehle f"ur
Buchstaben mit Akzenten mit dem Befehl
\cmd\selectlanguage\arg{Sprache}
\index{selectlanguage@\verb+\selectlanguage+} umschalten.
Das Umsetzen von Bezeichnungen z.B.\ f"ur Anlage \dots{} mu"s explizit durch
Befehle erfolgen, die in der Dokumentation zum {\tt dinbrief} beschrieben sind.

 
\ssect{Serienbriefe}\index{Serienbriefe}
 
Mit \LaTeX\ lassen sich auch Serienbriefe schreiben. Man ben"otigt dazu
nur ein kleines Makro wie z.B. das folgende:

\begin{center}
\begin{minipage}{0.75\textwidth}
\begin{verbatim}
\def\mailto#1{
  \begin{letter}{#1}
  \input{brftext}
  \end{letter}}
\end{verbatim}
\end{minipage}
\end{center}
 
Mit dem Befehl \verb+\input{brftext}+ wird die Datei geladen, die den Text f"ur
den Serienbrief enth"alt. In einer weiteren Datei stehen unsere Adressaten im
folgenden Format:

\begin{center}
\begin{minipage}{0.75\textwidth}
\begin{verbatim}
\mailto{Karle Huber\\
        Lichtensteinstr. 45\\[\medskipamount]
        77777 Hintertupfingen}
\mailto{Anna H"aberle\\
        Wallstra"se 7\\[\medskipamount]
        88888 L"andle}
\end{verbatim}
\end{minipage}
\end{center}
 
Die Briefe k"onnen nun mit einer Umgebung wie der in Abbildung~\ref{serie}
ausgedruckt werden. In der Zeile \verb|\input{#address}| ist der
Platzhalter \verb|#address| durch den Dateinamen zu ersetzen.

\begin{figure}[p]
\begin{center}
\begin{verbatim}
\documentclass[12pt]{dinbrief}
\usepackage{german}
 
\input{brfkopf}
\address{\myaddress}
\backaddress{R. Kurz, Am See 1, 76139 Karlsruhe}
 
\signature{R. Kurz}
\place{76139 Karlsruhe}
 
\def\mailto#1{                % zum ausdrucken von
                              % Serienbriefen
  \begin{letter}{#1}
  \input{brftext}             % Datei, die den Text enthaelt
  \end{letter}}
 
\begin{document}
 
\input{#address}              % Adress-Datei
 
\end{document}
\end{verbatim}
\caption{Erstellen von Serienbriefen}
\label{serie}
\end{center}
\end{figure}

Beachten sollte man, da"s dann der Text in der Datei {\tt brftext.tex}
direkt mit
\verb+\opening{...}+ beginnt (also kein \verb+\begin{letter}+ und
\verb+\end{letter}+ enth"alt) und mit \verb+\closing{...}+ bzw.
\verb+\ps{...}+ abschlie"st.
 
Ein Beispiel f"ur die Datei {\tt brftext.tex} finden Sie in
Abbildung~\ref{brftext}.
 
\begin{figure}[p]
\begin{center}
\begin{verbatim}
\opening{Betrieb eines Mikrowellensenders}
 
Sehr geehrte Damen und Herren,
 
anbei sende ich Ihnen eine Kopie der bisherigen Genehmigung f"ur
unseren Mikrowellenherd...
 
... Ihre Bem"uhungen im voraus vielen Dank.
 
\closing{Mit freundlichen Gr"u"sen,}
 
\ps{Wir bitten um schnelle Erledigung.}
\cc{Deutsche Bundespost\\
    Karlsruher Privatfunk\\
    S"uddeutscher Rundfunk}
 
\encl{Abschrift der Urkunde}
\end{verbatim}
\caption{Rumpf eines Serienbriefes}
\label{brftext}
\end{center}
\end{figure}

\ssect{Einige Regeln f"ur das Briefeschreiben}

Dieser Abschnitt enth"alt Passagen aus den
Normen DIN~5008 (Regeln f"ur das Maschinenschreiben) und
DIN~676 (Gesch"aftsbrief), erg"anzt um einige
zus"atzliche Hinweise und Tips.
Der Abschnitt erhebt keinen Anspruch auf
Vollst"andigkeit. Er soll Anf"angern wie auch
Ge"ubten einen "Uberblick "uber die wichtigsten
Regeln geben. Ferner werden die Grenzen der
vorliegenden Version aufgezeigt und es wird
auf bekannte Fehler hingewiesen.

\begin{enumerate}
  \item {\bf Zeilenabstand}

        Es wird mit einfachem Grundzeilenabstand geschrieben.

  \item {\bf Anschriftenfeld}

        Die Angaben im Anschriftenfeld werden auf
        folgende Weise gegliedert:
        \begin{enumerate}
          \item Sendungsart, Versendungsform, Vorausverf"ugung
          \item Leerzeile
          \item Empf"angerbezeichnung
          \item Postfach oder Stra"se und Hausnummer
          \item Leerzeile
          \item Postleitzahl und Bestimmungsort
          \item Leerzeile
          \item Bestimmungsland
        \end{enumerate}

        Bei Auslandsanschriften ist die Leerzeile zwischen
        der Zeile mit Postfach oder Stra"se und Hausnummer
        und der Zeile mit dem Bestimmungsort entbehrlich,
        wenn das Bestimmungsland unter der entsprechenden
        Zeile angegeben werden mu"s.

        Im Verkehr mit bestimmten L"andern kann auf die
        Angabe des Bestimmungslandes verzichtet werden,
        wenn das Unterscheidungskennzeichen f"ur den
        grenz"uberschreitenden Kraftfahrzeugverkehr
        der Postleitzahl --- durch einen Bindestrich
        getrennt --- vorangestellt wird.

% \iffalse
        Nach dem ersten Eintrag im Anschriftenfeld
        darf nur ein \verb|\\| stehen. Direkte
        L"angenangaben (z.B.\ \verb|\\[\medskipamount]|)
        sind nicht zul"assig und verursachen einen Fehler.
        Der Fehler kann umgangen werden, indem eine
        Konstruktion
        \m{Versendungsform}\verb|\\~\\|%
        \m{Empf"angerbezeichnung} usw.\
        verwendet wird.
% \fi

  \item {\bf Bezugszeichen und Tagangabe}

        Die Eintragungen in dieser Zeile werden automatisch
        an der richtigen Stelle plaziert.

  \item {\bf Betreff und Teilbetreff}

        Betreff und Teilbetreff sind stichwortartige
        Inhaltsangaben. Der Betreff bezieht sich auf den
        ganzen Brief, Teilbetreffe beziehen sich auf
        Briefteile.

        Der {\em Wortlauf des Betreffs\/} wird ohne
        Schlu"spunkt geschrieben.
% \iffalse
        Der {\em Teilbetreff\/} beginnt an der Fluchtlinie
        (linker Rand), schlie"st mit einem Punkt und wird
        unterstrichen. Wir empfehlen diesen Text besser
        durch eine andere Schriftart (z.B.\ fett)
        hervorzuheben. Der Text wird unmittelbar angef"ugt.
% \fi
  \item {\bf Behandlungsvermerke}

        Behandlungsvermerke (z.B.\ eilt) werden
        neben das Anschriftenfeld, beginnend auf
        Grad 50 (bei einer 10er Teilung), oder im
        Anschlu"s an die Betreffangabe geschrieben;
        sie k"onnen hervorgehoben werden.

  \item {\bf Anlagen- und Verteilvermerke}

        Anlagen- und Verteilvermerke beginnen an der
        Fluchtlinie oder auf Grad 50 (60 oder 75).
        Die vorliegende Version des `dinbriefs'
        unterst"utzt nur Anlagen- und Verteilvermerke
        auf der Fluchtlinie.

        Der Anlagenvermerk geht dem Verteilvermerk
        voraus.

  \item {\bf Postscriptum}

        Die DIN Norm 5008 sieht kein Postscriptum vor.
        Die vorliegende Version des `dinbriefs'
        unterst"utzt trotzdem ein Postscriptum.
        Wir empfehlen das Postscriptum unmittelbar
        nach der Gru"sformel \verb|\closing| oder
        nach Anlagen- und Verteilvermerken zu setzen.

  \item {\bf Seitennumerierung}

        Die Seiten eines Schriftst"ucks sind von der
        2.~Seite an oben fortlaufend zu benummern.
        Die Pagestyles \verb|headings| und
        \verb|contheadings| unterst"utzen diese
        Forderung. Das Verfahren ist jedoch noch nicht
        befriedigend.

  \item {\bf Hinweis auf Folgeseiten}

        Wenn der Text eines Schriftst"ucks eine n"achste
        Seite beansprucht, wird empfohlen
        \begin{itemize}
          \item am Fu"s der bereits beschrifteten Seite,
          \item nach der letzten Textzeile,
          \item mit mindestens einer Leerzeile Abstand,
          \item auf Grad 60 (72 oder 90) beginnend,
        \end{itemize}
        als Hinweis auf die folgende Seite drei Punkte
        zu schreiben.

        Dieses Vorgehen wird zur Zeit nicht unterst"utzt.
        Der Pagestyle \verb|contheadings| schreibt jedoch
        an das Ende der laufenden Seite die Seitenzahl
        der Folgeseite und auf Folgeseiten die
        aktuelle Seite in der Kopf der Seite.

        Die Kombination des Befehls \verb|\bottomtext|,
        zum Einblenden einer weiteren Kommunikationszeile
        am unteren Blattende der ersten Seite sowie
        von gesellschaftsrechtlichen Angaben,
        mit Seitenstilen, die die Fu"szeile unten mit
        der Seitennummer oder Folgeseitennummer
        beschriften, hat unter Umst"anden zur Folge,
        da"s die Seiten- oder Folgeseitennummer
        von diesen Feldern "uberschrieben wird.

  \item {\bf Kommunikationszeile am Blattende und
        gesellschaftsrechtliche Angaben}

        Eine Kommunikationszeile am Blattende kann die folgenden
        Angaben enthalten: Gesch"aftsr"aume, Telefon, Telefax,
        Teletex, Telex, Btx und Kontoverbindungen.

        Bei Kapitalgesellschaften sind die Angaben "uber
        \begin{itemize}
          \item die Rechtsform und den Sitz der Gesellschaft,
          \item das Registergericht des Sitzes der Gesellschaft
                und die Nummer, unter der die Gesellschaft in
                das Handelsregister eingetragen ist,
          \item den Namen des Vorsitzenden des Aufsichtsrates
                (sofern die Gesellschaft nach gesetzlicher
                Vorschrift einen Aufsichtsrat zu bilden hat),
          \item die Namen des Vorsitzenden und aller Mitglieder
                des Vorstandes (bei Gesellschaften mit
                beschr"ankter Haftung die Namen der
                Gesch"afts\-f"uhrer),
        \end{itemize}
        am Fu"s des Vordrucks aufzuf"uhren.\hfil\break
        Die Rechtsform kann auch im Briefkopf als Bestandteil
        der Firma angegeben werden.
\end{enumerate}

\ssect{Adre"s--Etiketten}
Das Ausdrucken von Adre"s-Etiketten ist w"unschenswert, wenn
keine Fensterbriefh"ullen verwendet werden. Damit das Bedrucken
von verschiedenen Etiketts"atzen m"oglich wird, kann die Breite
und H"ohe der einzelnen Etiketten mit den Befehlen
\verb|\setlabelwidth|\arg{Breite} und
\verb|\setlabelheight|\arg{H"ohe} eingestellt
werden. Der obere Rand kann mit dem Befehl
\verb|\setlabeltopmargin|\arg{oberer Rand} festgelegt werden.
Die Anzahl der Labels in einer Spalte wird durch den Befehl
\verb|\setlabelnumber|\arg{Anzahl} angegeben. Die mehrfache
Verwendung eines Etikettenblatts wird durch den Befehl
\verb|\spare|\arg{Anzahl} m"oglich. Dieser Befehl r"uckt
den Druckbeginn um {\em Anzahl\/} Positionen vor.
Die Ausgabe der Adre"s--Etiketten erfolgt spaltenweise.

In vielen Druckern bleiben die Etikettenbl"atter h"angen,
wenn die Tr"agerfolie in beiden Spalten freiliegt. Drucker,
die alternativ einen ebenen Papiertransport besitzen, sollten
zur Ausgabe von Etiketten auf diesen umgeschaltet werden.

\ssect{Kompatibilit"at zu Rainer Sengerlings `dinbrief'}
Im Jahr 1992 wurde an der Universit"at Karlsruhe ein Briefstil
entwickelt, dem der Namen `dinbrief' gegeben wurde. Im gleichen
Jahr ver"offentlichte Rainer Sengerling einen Briefstil unter
dem gleichen Namen.

Rainer Sengerling hat darauf verzichtet seinen Briefstil
an \LaTeXe\ anzupassen. Daraufhin haben wir den Briefstil
`dinbrief' im Dezember 1994 als \LaTeXe-Klasse ver"offentlicht.
Die beiden Briefstile haben unterschiedliche Befehlss"atze,
was bei vielen Benutzern zu Verwirrung und Irritationen
gef"uhrt hat. Wegen der unterschiedlichen Befehle der beiden
Stile haben uns viele Anfragen erreicht. Die jetzt vorliegende
Fassung stellt beide Befehlss"atze zur Verf"ugung und f"uhrt die
bisher unabh"anigen Briefstile zusammen.

Gegenw"artig wird die Klassenoption \verb|german| nicht ausgewertet
und f"uhrt zu einer Warnung. Alternativ mu"s mit dem Befehl
\begin{quote}
  \verb|\usepackage{german}|\\
\end{quote}
der Stil "`{\tt german}"' geladen werden.

\begin{description}

  \item[\cmd\Retouradresse\arg{{Absenderadresse im Brief\kern 0pt fenster}}]
        Der Befehl legt die Anschrift des Absenders oben im
        Anschriftenfeld des Briefs fest.

  \item[\cmd\Retourlabel] \hfil\break
        Dieser Befehl erzeugt Absenderadre"s-Etiketten, falls
        die Erzeugung der Etiketten aktiviert wurde.

        Ferner wird die Ausgabe der \cmd\Retouradresse\ unterdr"uckt.

        {\bf Dieser Befehl wird gegenw"artig nicht unterst"utzt und
        erzeugt eine Warnung.\/}

  \item[\cmd\Fenster] \hfil\break
        Bei der Verwendung von Fensterbriefh"ullen wird die mit
        \cmd\Retouradresse\ vereinbarte einzeilige R"ucksendeadresse
        (Absenderadresse) oben im Anschriftenfeld eingeblendet,
        falls der Befehl \cmd\Fenster\ angegeben wurde. Ferner
        werden die Faltmarken am linken Rand ausgegeben.

        Daf"ur wird die Ausgabe der Etiketten unterdr"uckt.

        {\bf Dieser Befehl wird gegenw"artig nicht unterst"utzt und
        erzeugt eine Warnung.\/}

  \item[\cmd\Postvermerk\arg{Postvermerk}] \hfil\break
        Dieser Befehl vereinbart Vermerke f"ur den
        Postversand wie z.B.\ Einschreiben.

  \item[\cmd\Behandlungsvermerk\arg{Behandlungsvermerk}] \hfil\break
        Der Befehl \cmd\Behandlungsvermerk\ dient zur
        Angabe von (man wirds kaum glauben) Behandlungsvermerken
        wie z.B.\ Eilt, pers"onlich oder "`F"ur die unterste
        Schublade"'.

  \item[\cmd\Absender\arg{Name und Adresse des Absenders}] \hfil\break
        Die Adresse des Absenders wird vereinbart.
        Dieser Befehl gilt f"ur den laufenden und alle
        weiteren Briefe; er gilt solange, bis ein
        weiterer \cmd\Absender- oder \cmd\address-Befehl
        angegeben wird.

  \item[\cmd\Absender\arg{Teil 1::Teil 2}] \hfil\break
        Dies ist eine Sonderform des \cmd\Absender-Befehls.
        Der durch \verb|::| abgetrennte {\em Teil2\/}
        erscheint im Briefkopf, aber nicht im
        Absenderetikett, falls ein solches mit dem
        Befehl \cmd\Retourlabel\ angefordert
        wurde.

        Dieser Befehl wird korrekt unterst"utzt. Da aber
        der Befehl \cmd\Retourlabel\ nicht implementiert
        wurde, hat die Aufteilung im Moment praktisch keine
        Bedeutung; sie kann aber in sp"ateren Versionen
        wieder notwendig sein.

  \item[\cmd\Datum\arg{Briefdatum}] \hfil\break
        Soll als Absendedatum {\sl nicht\/} das aktuelle
        Tagesdatum (des Rechners) eingesetzt werden, kann
        mit diesem Befehl das Datum explizit angegeben werden.

        Der Befehl \cmd\heute\ wird nicht unterst"utzt.

  \item[\cmd\Betreff\arg{{Betreff}}] \hfil\break
        Mit diesem Befehl wird der Betreff gesetzt, der den
        Empf"anger "uber den Gegenstand des Briefes
        informiert. Der Betreff kann ein oder mehrzeilig sein.

  \item[\cmd\Einrueckung\arg{Text}] \hfil\break
        Der Text wird um $1 in$ einger"uckt und geht bis zum
        rechten Rand. Der Text darf Abs"atze enthalten.

  \item[\cmd\anlagenrechts] \hfil\break
        Die Anlagen- und Verteilvermerke beginnen {\sl rechts\/}
        neben der Gru"sformel auf Grad 50. Mit diesem Befehl
        kann Platz gespart werden, falls die Seite fast voll
        ist, und kein neues Blatt begonnen werden soll.
        Dieser Befehl mu"s vor \cmd\closing\ stehen.
        Die Anlagen- und Verteilvermerke m"ussen in diesem
        Fall ebenfalls vor dem \cmd\closing-Befehl stehen.

  \item[\cmd\Anlagen\arg{Anlagenvermerk}] \hfil\break
        Mit diesem Befehl werden eventuelle Anlagenvermerke
        vereinbart oder gesetzt. Dieser Befehl darf sowohl
        vor dem \cmd\closing-Befehl als auch hinter diesem
        stehen. Der Anlagenvermerk wird nur vereinbart falls
        der Befehl vor dem \cmd\closing-Befehl angegeben wird.
        Der Anlagenvermerk wird sofort ausgegeben und gesetzt,
        falls der Befehl nach dem \cmd\closing-Befehl angegeben
        wird.

  \item[\cmd\Verteiler\arg{Verteilvermerk}] \hfil\break
        Dieser Befehl vereinbart oder setzt Verteilvermerke.
        Die Ausf"uhrungen zum \cmd\Anlagen-Befehl gelten
        auch f"ur diesen Befehl.

  \item[\cmd\Etihoehe\arg{H"ohe eines Adressetiketts}] \hfil\break
        Verschiedene Herstelle vertreiben Adressetiketten,
        die alle ein bischen anders sind. Um den Briefstil
        an unterschiedlich hohe Adre"setiketten anzupassen,
        kann mit dem Befehl \cmd\Etihoehe\ die H"ohe eines
        Etiketts angegeben werden.

  \item[\cmd\Etirand\arg{oberer Rand}] \hfil\break
        Die B"ogen mit den Adre"setiketten haben oft einen
        Versatz oder oberen Rand. Mit dem Befehl \cmd\Etirand\
        kann dieser Versatz eingestellt werden.

  \item[\cmd\Etizahl\arg{Zahl der Etiketten}] \hfil\break
        Auf ein Blatt mit Adre"setiketten passen leider
        nicht beliebig viele sondern nur eine begrenzte
        Anzahl von Etiketten, die sich dann auch nicht kunterbunt
        auf dem Blatt tummeln, sondern Spaltenweise angeordnet
        sind. Die Zahl der Etiketten, die in eine Spalte
        passen werden durch den Befehl \cmd\Etizahl\
        angegeben.

  \item[\cmd\spare\arg{{n}}] \hfil\break
        Das Bedrucken der Adre"setiketten beginnt nach {\em n\/}
        leeren Adre"slabeln. Die Label werden spaltenweise
        durchgez"ahlt.

\end{description}

\clearpage
% \iffalse
%</documentation>
% \fi
% \iffalse
%<*documentation|dintab>
% \fi
% \iffalse
\end{document}
% \fi
% \iffalse
%</documentation|dintab>
% \fi
%
% \StopEventually{}
%
% \clearpage
%
% \originalTeX
%
% \section{Documentation}
%
%    \begin{macrocode}
%<*class|style>
%    \end{macrocode}
%
%    We store the date, version and name of this file in four control
%    sequences, for future use.
%    \begin{macrocode}
\def\RCSdate{$Date: 1996/10/29 20:50:05 $}
\def\RCSrevision{$Revision: 1.66 $}
%
{%
  \def\stripone $#1${\def\partone{#1}}
  \def\striptwo Date: #1\stop{\gdef\filedate{#1}\gdef\docdate{#1}}
  \expandafter\stripone\RCSdate
  \expandafter\striptwo\partone\stop
}%
%
{%
  \def\stripone $#1${\def\partone{#1}}
  \def\striptwo Revision: #1\stop{\gdef\fileversion{#1}}
  \expandafter\stripone\RCSrevision
  \expandafter\striptwo\partone\stop
}%
%
% ^^A \def\fileversion{0.94.1}
% ^^A \def\filedate{1994/08/15}
\def\filename{dinbrief.dtx}
% ^^A \def\docdate {1994/08/15}
%    \end{macrocode}
%
%
% \subsection{The class/style file `dinbrief'}
%
% This is |DINBRIEF.STY| in text format, as of 1994/12/21,
% by K.~Braune and R.~Gussmann
%    (Rechenzentrum der Universit\"at Karlsruhe).
%
% It is based on |DLETTER.STY| in text format, as of December 16, 1987,
% by D.~Heinrich (TH Karlsruhe).
%
% It is based on |A4LETTER.STY| in text format, as of June 16, 1987,
% and |letter.sty| 17-Jan-86 with modifications
% for DIN-A4 paper + window envelopes, by H.~Partl (Wien)
%
% \changes{0.0.0}{1991/09/09}{(KB) Inserted blank space behind "P.S.:"}
% \changes{0.0.0}{1991/10/02}{(KB) Changed "P.S.:" to "PS\cmd\newline"
%                                  Diminished space before \cmd\ps, \cmd\cc
%                                  and \cmd\encl.
%                                  Inserted code to generate labels using
%                                  a 12pt font and changed references
%                                  to \cmd\scriptsize to \cmd{\size{9}{11pt}}}
% \changes{0.0.0}{1991/10/31}{(KB) Changes to allow \cmd\place not set}
% \changes{0.0.0}{1991/11/15}{(RG) Moved \cmd\newlength from inside
%                                  \cmd\@answerto outside to allow
%                                  multiple letters within a single document.
%                                  Changed command sequences}
% \changes{0.0.0}{1991/11/19}{(KB) Replaced \cmd\rm by code for the
%                                  new fontselection scheme}
% \changes{0.0.0}{1991/11/19}{(KB) Changed first page to use pagestyle
%                                  firstpage}
% \changes{0.0.0}{1992/02/05}{(KB) Changes of R.~Gussmann inserted}
% \changes{0.0.0}{1992/02/27}{(KB) Page offsets corrected}
% \changes{0.0.0}{1994/02/08}{(RG) Changes of K.~D.~Braune inserted}
% \changes{0.92.20}{1994/02/23}{(RG) some more Comments added}
% \changes{0.93.0}{1994/06/07}{(RG) some more Comments added\hfil\break
%                                   styles for labels added}
%
% \subsection{Get system information}
% First we use three conditions to identify whether or not this file
% is running under LaTeX 2.09 or \LaTeXe\ and which font selection
% scheme is in use.
%
% |\ifka@db@ltxtwoe| is true if and only if this style is running in
% an \LaTeXe-environment. |\ifka@db@nfss| is true if we are using an
% NFSS 1 and \linebreak[4]
% |\ifka@db@nfsstwo| is true if we are using the NFSS 2.
%
%    \begin{macrocode}
\newif\ifka@db@ltxtwoe
\ka@db@ltxtwoefalse
\newif\ifka@db@nfss
\ka@db@nfssfalse
\newif\ifka@db@nfsstwo
\ka@db@nfsstwofalse
%    \end{macrocode}
%
% Then we check what is present on the system.
%
%    \begin{macrocode}
\expandafter\ifx\csname documentclass\endcsname\relax\else
    \ka@db@ltxtwoetrue
  \fi
\expandafter\ifx\csname size\endcsname\relax\else
    \ka@db@nfsstrue
  \fi
\expandafter\ifx\csname fontsize\endcsname\relax\else
    \ka@db@nfsstwotrue
  \fi
%    \end{macrocode}
%
% \subsection{Print informations about this style}
%
% \subsubsection{Print the banner}
%
%    \begin{macrocode}
\typeout{}
\typeout{Document Class/Style 'dinbrief' - %
         (Preliminary) Version \fileversion}
\typeout{University of Karlsruhe - \filedate}
\typeout{}
%    \end{macrocode}
%
% \subsubsection{Print system information}
%    \begin{macrocode}
\ifka@db@ltxtwoe
    \typeout{*** dinbrief: Running in LaTeX 2e mode!}
  \else
    \typeout{*** dinbrief: Running in LaTeX 2.09 mode!}
  \fi
\ifka@db@nfss
    \typeout{*** dinbrief: NFSS!}
  \else
    \ifka@db@nfsstwo
      \typeout{*** dinbrief: NFSS 2!}
    \else
      \typeout{*** dinbrief: original LaTeX 2.09 font %
               selection mechanism found!!!}
    \fi
  \fi
%    \end{macrocode}
%
% \subsection{\LaTeXe\ version control}
%
%    \begin{macrocode}
\ifka@db@ltxtwoe
  \NeedsTeXFormat{LaTeX2e}[1994/12/01]
  \ProvidesClass{dinbrief}[1995/07/01 LaTeX2e class]
\fi
%    \end{macrocode}
%
% \subsection{Initial code}
%
%    In this part we define a few comands that are used later on.
%
% \subsubsection{temporary variables}
%
%  \begin{macro}{\ka@db@tmpdima}
%  Unfortunately we have to define our own temporary dimen
%  variable, because inside a parbox \cmd\@tempdima\ and
%  \cmd\@tempdimb\ are used. \cmd\@tempdimc\ ist used maybe
%  in fontswitch commands.
%    \begin{macrocode}
\newdimen\ka@db@tmpdima
%    \end{macrocode}
%  \end{macro}
%
% \subsubsection{{\tt dinbrief\/} programming environment}
%
% \changes{1.22.0}{1995/01/15}{(RG) \cmd\section\space programming
%                              environment added.}
%
%    We define a few commands that are used later on.
%
%  {\tt dinbrief\/} has many variables to store information about
%  a letter in it. These informations can be local to one letter
%  or global to all letters in the file. Here is a table of all
%  variables, and a mark if they are local, global or both.
%
%    \DeleteShortVerb{\|}
%    \begin{tabular}{ll|c|c|l}
%      \hline
%        \multicolumn{1}{c}{\bf\small old name} &
%          \multicolumn{1}{c}{\bf\small new name}&
%          \multicolumn{1}{c}{\bf\small local} &
%          \multicolumn{1}{c}{\bf\small global} &
%          \multicolumn{1}{c}{\bf\small holds}\\
%      \hline
%        \cmd\@backaddress & backaddress & $\bullet$ & $\bullet$ & backaddress\\
%        not used          & cc          & $\bullet$ &           & carbon copy\\
%        not used          & encl        & $\bullet$ &           & enclosures \\
%        not used          & ps          & $\bullet$ &           & postscriptum\\
%        \cmd\@fromsig     & signature   & $\bullet$ & $\bullet$ & sign of author\\
%        \cmd\@fromaddress & fromaddress & $\bullet$ & $\bullet$ & address of author\\
%        \cmd\@place       & place       &           & $\bullet$ & place \\
%        \cmd\@prephone    & prephone    &           & $\bullet$ & dialing code\\
%        \cmd\@phone       & phone       &           & $\bullet$ & telephone number\\
%        \cmd\@mymail      & sign        & $\bullet$ & $\bullet$ & my sign\\
%        \cmd\@yourmail    & yourmail    & $\bullet$ &           & your mail\\
%        \cmd\@writer      & writer      & $\bullet$ & $\bullet$ & writer, processor\\
%    \end{tabular}
%    \MakeShortVerb{\|}
%
%  Currently the new nameing scheme is only used for |cc|, |encl| and
%  |ps|. No features of are currently used.
%
%  \begin{macro}{\ka@db@assignvarglobal}
%    Assigns the argument to the global entity of that variable.
%    \begin{macrocode}
\long\def\ka@db@assignvarglobal#1#2{%
  \protect\pka@db@assignvarglobal{#1}{#2}}%
\long\def\pka@db@assignvarglobal#1#2{%
  % \bgroup
  %   \let\\=\relax
  %   \message{assignvarglobal: #1 = #2}%
  % \egroup
  \global\@namedef{ka@db@g@#1}{#2}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@assignvarlocal}
%    Assigns the argument to the local entity of that vairable.
%    \begin{macrocode}
\long\def\ka@db@assignvarlocal#1#2{%
  \protect\pka@db@assignvarlocal{#1}{#2}}%
\long\def\pka@db@assignvarlocal#1#2{%
  % \bgroup
  %   \let\\=\relax
  %   \message{assignvarlocal: #1 = #2}%
  % \egroup
  \global\@namedef{ka@db@l@#1}{#2}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@declvar}
%    The macro \cmd\ka@db@declvar\arg{NAME} defines two control sequences
%    with the following names |\kd@db@l@|NAME and |\ka@db@g|NAME.
%    The control sequences are initialized with |\@empty|.
%    \begin{macrocode}
\def\ka@db@declvar#1{%
  \ka@db@assignvarglobal{#1}{}%
  \ka@db@assignvarlocal{#1}{}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@assignvar}
%    Assigns the given argument either to the local or global entity
%    depending on the value of the boolean variable |ifka@db@inletter|.
%    We do the same as in \LaTeX. We define a normal and a protected
%    version.
%    \begin{macrocode}
\long\def\ka@db@assignvar#1#2{\protect\pka@db@assignvar{#1}{#2}}%
\long\def\pka@db@assignvar#1#2{%
  % \message{assignvar: #1 = #2}%
  \ifnum\c@lt@state>0\relax
    \pka@db@assignvarlocal{#1}{#2}%
  \else
    \pka@db@assignvarglobal{#1}{#2}%
  \fi
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@usevarglobal}
%    Use the global entity.
%    \begin{macrocode}
\def\ka@db@usevarglobal#1{\protect\pka@db@usevarglobal{#1}}%
\def\pka@db@usevarglobal#1{%
  \@nameuse{ka@db@g@#1}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@usevarlocal}
%    Use the local entity.
%    \begin{macrocode}
\def\ka@db@usevarlocal#1{\protect\pka@db@usevarlocal{#1}}%
\def\pka@db@usevarlocal#1{%
  \@nameuse{ka@db@l@#1}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@usevar}
%    Use the global or local entity. If the local entity is empty
%    take the value from the global entity. There is no check if
%    the local entity holds valid data. |\ka@db@inletter|-Flag is
%    not used.
%    \begin{macrocode}
\def\ka@db@usevar#1{%
  \bgroup
    \def\protect{\noexpand\protect\noexpand}%
    \let\\=\relax
    \edef\tmpa{\pka@db@usevarlocal{#1}}%
    % \typeout{usevar: varlocal #1 = \meaning\tmpa}%
    \expandafter\egroup
    \ifx\tmpa\@empty
      % \message{Using global var, because local var is empty!}%
      \pka@db@usevarglobal{#1}%
    \else
      % \message{Using local var!}%
      \pka@db@usevarlocal{#1}%
    \fi
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@ifemptydynvar}
%  Argument one has to be a control sequence. Argument two is
%  the argument of the control sequence given in the first argument.
%  If the macro combined with the first two arguments is empty, then
%  the third argument is executed. Otherwise the fourth argument is
%  executed. We do an expansion into a temporary controlsequence.
%  Therefore all control sequences in the expanded macro which
%  should not be expanded should be protected. \cmd\protect\ and
%  \cmd\\\ are set so that no expansion is given for protected
%  control sequences and also for \cmd\\.
%    \begin{macrocode}
\long\def\ka@db@ifemptydynvar#1#2#3#4{%
  \bgroup
    \def\protect{\noexpand\protect\noexpand}%
    \let\\=a% because characters are not expanded
    \edef\tmpa{#1{#2}}%
    % \typeout{ifempty: \string#1\space var #2 = \meaning#1{#2}}%
    % \typeout{ifempty: \string#1\space var #2 = \meaning\tmpa}%
    \expandafter\egroup
    \ifx\tmpa\@empty
      % \message{var is empty!}%
      #3% <- otherwise a space is inserted
    \else
      % \message{var is not empty!}%
      #4% <- otherwise a space is inserted
    \fi
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@ifemptyvarlocal}
%  Checks if the local entity of a variable is empty or not.
%    \begin{macrocode}
\long\def\ka@db@ifemptyvarlocal#1#2#3{%
  \ka@db@ifemptydynvar{\pka@db@usevarlocal}{#1}{#2}{#3}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@ifemptyvarglobal}
%  Checks if the global entity of a variable is empty or not.
%    \begin{macrocode}
\long\def\ka@db@ifemptyvarglobal#1#2#3{%
  \ka@db@ifemptydynvar{\pka@db@usevarglobal}{#1}{#2}{#3}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@ifemptyvar}
%  If both entities of the variable (local and global) are
%  empty then the second argument is executed. Otherwise the
%  third argument is executed.
%    \begin{macrocode}
\long\def\ka@db@ifemptyvar#1#2#3{%
  \ka@db@ifemptyvarlocal{#1}{% then
    \ka@db@ifemptyvarglobal{#1}{#2}{#3}%
    }{#3}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@execatletter}
%  \begin{macro}{\ka@db@atletter}
%  The macro |\ka@db@execatletter| appends at the end of the
%  macro \hfil\break |\ka@db@atletter| the stuff added in the
%  argument of |\ka@db@execatletter|. The macro |\@ka@db@atletter|
%  will be executed everytime the |\begin{letter}|-command is
%  processed.
%    \begin{macrocode}
\def\ka@db@execatletter#1{%
  \bgroup
    \let\\=\relax
    \def\protect{\noexpand\protect\noexpand}%
    \xdef\ka@db@atletter{\ka@db@atletter #1}
  \egroup
}
\def\ka@db@atletter{}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\ka@db@execatendletter}
%  \begin{macro}{\ka@db@endletter}
%  The same as above except that the list is executed
%  if the |\end{letter}|-command is processed.
%    \begin{macrocode}
\def\ka@db@execatendletter#1{%
  \bgroup
    \let\\=\relax
    \def\protect{\noexpand\protect\noexpand}%
    \xdef\ka@db@atendletter{\ka@db@atendletter #1}
  \egroup
}
\def\ka@db@atendletter{}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
% \subsubsection{Choosing the type size}
%
% \begin{macro}{\@ptsize}
% \begin{macro}{\ds@12pt}
% \begin{macro}{\ds@11pt}
% \begin{macro}{\ds@10pt}
% \begin{macro}{\ds@norm}
%    The control sequence |\@ptsize| 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.
%
%    To be compatible with the old `dinbrief', pointsize 3 is used to
% \iffalse
%    switch to special size having $\frac{1}{6}$ in as |\baselineskip|.
% \fi
%    switch to a special size setting exactly 6 lines per inch.
%    (\dots\ it's used to feature some other size following the rules
%    of old stupid typewriters).
%
%    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.
%
%    To follow the programming conventions of \LaTeXe, we split the
%    definition of the macros into two parts. One for the old \LaTeX\
%    and one for \LaTeXe.
%
%    \begin{macrocode}
\ifka@db@ltxtwoe
  \newcommand\@ptsize{}
  \DeclareOption{10pt}{\renewcommand\@ptsize{0}}
  \DeclareOption{11pt}{\renewcommand\@ptsize{1}}
  \DeclareOption{12pt}{\renewcommand\@ptsize{2}}
  \DeclareOption{norm}{\renewcommand\@ptsize{3}}
\else
  \def\@ptsize{0}
  \@namedef{ds@10pt}{\def\@ptsize{0}}
  \@namedef{ds@11pt}{\def\@ptsize{1}}
  \@namedef{ds@12pt}{\def\@ptsize{2}}
  \@namedef{ds@norm}{\def\@ptsize{3}}
\fi
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{Defining the jobname}
%
% \begin{macro}{\jobname@aux}
% \begin{macro}{\jobname@lbl}
%    This control sequence is used to store the name of the aux-file.
%    Therefore character |_| temporally is given catcode 12.
%
%    \begin{macrocode}
{%
  \catcode`\_=12
  \gdef\jobname@aux{\jobname.aux}% .aux or _aux or ...
  \gdef\jobname@lbl{\jobname.lbl}%
}%
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@mainlbl}
%    \begin{macrocode}
\newwrite\@mainlbl
%    \end{macrocode}
% \end{macro}
%
% \subsection{Stuff from original classes}
%
% \begin{macro}{\if@restonecol}
%    If the document has to be printed in two columns, we sometimes
%    have to temporarily switch to one column. This switch is used to
%    remember to switch back.
%    \begin{macrocode}
\newif\if@restonecol
%    \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}
\ifka@db@ltxtwoe
  \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}}
\fi
%    \end{macrocode}
%
%  \subsection{Two-side or one-side printing}
%
%    Sometimes it's necessary to have two-sided printing. For example
%    if you have a two-sided printer, and you write two letters the
%    first one having an odd number of pages. The second then starts
%    on the backside of the last page of the first letter. To avoid
%    this problem you can specify the twoside option. Each letters
%    then starts on a new sheet on a two-sided printer.
%
%    \begin{macrocode}
\ifka@db@ltxtwoe
  \DeclareOption{twoside}{\@twosidetrue}
\fi
\@twosidefalse
%    \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}
\def\ds@draft{\overfullrule 5pt}
\def\ds@final{\overfullrule 0pt}
%    \end{macrocode}
%
%  \subsection{Twocolumn printing}
%
%    Two-column and one-column printing is again realized via a switch.
%
%    This makes no sense in letters following the rules of DIN. But
%    maybe it is sometimes usefull.
%
%    Some labels use twocolumn output.
%    \begin{macrocode}
\ifka@db@ltxtwoe
  \DeclareOption{onecolumn}{\@twocolumnfalse}
  \DeclareOption{twocolumn}{\@twocolumntrue}
\fi
%    \end{macrocode}
%
%  \subsection{Defining internal font selection commands}
%
%  To be compatible to all font selection schemes we define our own
%  font selection commands |\ka@db@fontshape| (1), |\ka@db@fontseries| (1),
%  |ka@db@fontsize| (2), |\ka@db@selectfont| (0).
%
% Note: In the definition of the original \LaTeX\ 2.09 font selection system
%       the command |\rm| is used. This causes no error because |\rm| is
%       well defined in this version of \LaTeX.
%
% \iffalse
% Note: The code for the font selection with the original mechanism
%       had been written by K.~Braune.
% \fi
%
%    \begin{macrocode}
\ifka@db@nfss
    \let\ka@db@selectfont\selectfont
    \let\ka@db@fontseries\series
    \let\ka@db@fontshape\shape
    \let\ka@db@fontsize\size
  \else
    \ifka@db@nfsstwo
        \let\ka@db@selectfont\selectfont
        \let\ka@db@fontseries\fontseries
        \let\ka@db@fontshape\fontshape
        \let\ka@db@fontsize\fontsize
      \else
        \def\ka@db@selectfont{\relax}
        \def\ka@db@fontseries#1{\relax}
        \def\ka@db@fontshape#1{\ifx#1n\rm\else\relax\fi}
        \def\ka@db@fontsize#1#2{\expandafter
            \ifnum#1=12
                \@setsize\normalsize{15pt}\xiipt\@xiipt
                \abovedisplayskip 12pt plus3pt minus7pt
                \belowdisplayskip \abovedisplayskip
                \abovedisplayshortskip \z@ plus3pt
                \belowdisplayshortskip 6.5pt plus3.5pt minus3pt
              \else
                \ifnum#1=8
                    \@setsize\scriptsize{8pt}\viipt\@viipt
                  \else
                    \@setsize\scriptsize{9.5pt}\viiipt\@viiipt
                  \fi
              \fi}
      \fi
  \fi
%    \end{macrocode}
%
% \subsection{Executing options}
%
%    Here we execute the default options to initialize certain
%    variables.
%    \begin{macrocode}
\ifka@db@ltxtwoe
  \ExecuteOptions{a4paper,10pt,onecolumn,final}
\fi
%    \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.
%
%    In the old \LaTeX\ the user starts his file with the command
%    \linebreak[4]|\documentstyle [OPTION1, ... ,OPTIONk]{STYLE}|
%    which saves the |OPTION|'s and |\input|'s the file |STYLE.STY|.
%    When the |STYLE.STY| file issues the command |\@options|, the
%    following happens for each i:
%
%    If the control sequence |\ds@OPTIONi| is defined then
%    execute this option |\ds@OPTIONi|. In the other case
%    save OPTIONi on a list of unprocessed options.
%
%    After |STYLE.STY| has been executed, the file |OPTIONi.STY| is read for
%    each |OPTIONi| on the list of unprocessed options.
%
%    \begin{macrocode}
\ifka@db@ltxtwoe
    \ProcessOptions
  \else
    \@options
  \fi
%    \end{macrocode}
%
%  \subsection{Loading Packages}
%
%  The `dinbrief' class/style file does not load additional packages.
%  The user should load `german.sty'.
%
% \subsection{Error messages in this class/style}
%
% \subsubsection{General error message}
%
%  \begin{macro}{\ka@db@error}
%    \begin{macrocode}
\def\ka@db@error#1{%
   \@latexerr{%
      Document style/class `dinbrief' error^^J%
      #1%
   }{%
      No help is available for this error message.^^J%
      Please check your input file!
   }%
}
%    \end{macrocode}
%  \end{macro}
%
%  \subsubsection{Warning within \LaTeXe\ for forbidden commands}
%
%  Therefore we define a warning message in case forbidden
%  commands are used.
%  \begin{macro}{\ka@db@warning}
%    \begin{macrocode}
\ifka@db@ltxtwoe
  \def\ka@db@warning#1{%
    \@@warning{The control sequence \string#1\space should %
               not be used in LaTeX 2e}%
  }
\fi
%    \end{macrocode}
%  \end{macro}
%
%  \subsubsection{Modelling {\tt \char92 ClassWarning} in \LaTeX\ 2.09}
%    \begin{macrocode}
\ifka@db@ltxtwoe\else
  \def\ClassWarning#1#2{%
    \typeout{Style #1 Warning: #2\on@line.}%
  }
\fi
%    \end{macrocode}
%
%  \subsection{Font changing}
%
%  \subsubsection{Defining old font changing commands for \LaTeXe}
%
%  \changes{0.92.20}{1994/02/20}{The font changing has to
%                                be redefined in \LaTeXe.
%                                Code copied from letter class.}
%  \changes{0.94.0}{1994/08/15}{\cmd\@rewnewfontswitch renamed to
%                               \cmd\DeclareOldFontCommand}
%  \changes{0.95.0}{1994/11/10}{Deleted wrong explanation.}
%
%  Defining the font change commands for \LaTeXe.
%
%  The following commands are only available in \LaTeXe. In older
%  versions of \LaTeX\ the commands are defined in |lfonts.???|
%  (I think so).
%
%    \begin{macrocode}
\ifka@db@ltxtwoe
%    \end{macrocode}
%  Here we supply the declarative font changing commands that were common
%  in \LaTeX\ version 2.09 and earlier. These commands work in text mode
%  \textit{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's command
%  to be executed in text mode, and \LaTeX's command to be executed in math
%  mode.
%
%  \begin{macro}{\rm}
%  \begin{macro}{\sf}
%  \begin{macro}{\tt}
%  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}{\it}
%  \begin{macro}{\sl}
%  \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
%  these 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}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
%    \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 manually.
% \changes{1.48}{1995/06/28}{Now define \cs{cal} and \cs{mit} using
%    \cs{DeclareRobustCommand*}}
%    \begin{macrocode}
\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  The end of the conditional code for the font changing commands for
%  \LaTeXe.
%    \begin{macrocode}
\fi
%    \end{macrocode}
%
% \subsection{A special distance}
% \begin{macro}{\GZA}
%  Baselinedistance 1/6 in = 4,23 mm (Grundzeilenabstand DIN 2107, 2142)
%    \begin{macrocode}
\newdimen\GZA
\GZA=1in \divide\GZA by 6
%    \end{macrocode}
% \end{macro}
%
% \subsection{Fontsizes und other parameters}
%
%    \begin{macrocode}
\ifcase \@ptsize\relax
%    \end{macrocode}
% \begin{macro}{\@normalsize}
%    \begin{macrocode}
 \def\@normalsize{\@setsize\normalsize{12pt}\xpt\@xpt
  \abovedisplayskip 10\p@ plus2\p@ minus5\p@
  \belowdisplayskip \abovedisplayskip
  \abovedisplayshortskip \z@ plus3\p@
  \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@
  \let\@listi\@listI
  }%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\small}
%    \begin{macrocode}
 \def\small{\@setsize\small{11pt}\ixpt\@ixpt
  \abovedisplayskip 8.5\p@ plus 3\p@ minus 4\p@
  \belowdisplayskip \abovedisplayskip
  \abovedisplayshortskip \z@ plus2\p@
  \belowdisplayshortskip 4\p@ plus2\p@ minus 2\p@
  \def\@listi{\leftmargin\leftmargini
              \topsep 4\p@ \@plus2\p@ \@minus2\p@
              \parsep 2\p@ \@plus\p@ \@minus\p@
               \itemsep \parsep}%
  }%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\footnotesize}
%    \begin{macrocode}
 \def\footnotesize{\@setsize\footnotesize{9.5pt}\viiipt\@viiipt
  \abovedisplayskip 6\p@ plus 2\p@ minus 4\p@
  \belowdisplayskip \abovedisplayskip
  \abovedisplayshortskip \z@ plus 1\p@
  \belowdisplayshortskip 3\p@ plus 1\p@ minus 2\p@
  \def\@listi{\leftmargin\leftmargini
              \topsep 3\p@ \@plus\p@ \@minus\p@
              \parsep 2\p@ \@plus\p@ \@minus\p@
              \itemsep \parsep}%
  }%
%    \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}
%    \begin{macrocode}
 \def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
 \def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
 \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
 \def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
 \def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
 \def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
 \def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
%    \end{macrocode}
% \end{macro}^^A \Huge
% \end{macro}^^A \huge
% \end{macro}^^A \LARGE
% \end{macro}^^A \Large
% \end{macro}^^A \large
% \end{macro}^^A \tiny
% \end{macro}^^A \scriptsize
%    \begin{macrocode}
\or % 11 pt option
%    \end{macrocode}
% \begin{macro}{\@normalsize}
%    \begin{macrocode}
 \def\@normalsize{\@setsize\normalsize{13.6pt}\xipt\@xipt
  \abovedisplayskip 11\p@ plus3\p@ minus6\p@
  \belowdisplayskip \abovedisplayskip
  \abovedisplayshortskip \z@ plus3\p@
  \belowdisplayshortskip 6.5\p@ plus3.5\p@ minus3\p@
  \let\@listi\@listI
  }%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\small}
%    \begin{macrocode}
 \def\small{\@setsize\small{12pt}\xpt\@xpt
  \abovedisplayskip 10\p@ plus2\p@ minus5\p@
  \belowdisplayskip \abovedisplayskip
  \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}%
  }%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\footnotesize}
%    \begin{macrocode}
 \def\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt
  \abovedisplayskip 8\p@ plus 2\p@ minus 4\p@
  \belowdisplayskip \abovedisplayskip
  \abovedisplayshortskip \z@ plus 1\p@
  \belowdisplayshortskip 4\p@ plus 2\p@ minus 2\p@
  \def\@listi{\leftmargin\leftmargini
              \topsep 4\p@ \@plus2\p@ \@minus2\p@
              \parsep 2\p@ \@plus\p@ \@minus\p@
              \itemsep \parsep}%
  }%
%    \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}
%    \begin{macrocode}
 \def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
 \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
 \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
 \def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
 \def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
 \def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
 \def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
%    \end{macrocode}
% \end{macro}^^A \Huge
% \end{macro}^^A \huge
% \end{macro}^^A \LARGE
% \end{macro}^^A \Large
% \end{macro}^^A \large
% \end{macro}^^A \tiny
% \end{macro}^^A \scriptsize
%    \begin{macrocode}
\or % 12pt option
%    \end{macrocode}
% \begin{macro}{\@normalsize}
%    \begin{macrocode}
 \def\@normalsize{\@setsize\normalsize{15pt}\xiipt\@xiipt
  \abovedisplayskip 12\p@ plus3\p@ minus7\p@
  \belowdisplayskip \abovedisplayskip
  \abovedisplayshortskip \z@ plus3\p@
  \belowdisplayshortskip 6.5\p@ plus3.5\p@ minus3\p@
  \let\listi\listI
  }%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\small}
%    \begin{macrocode}
 \def\small{\@setsize\small{13.6pt}\xipt\@xipt
  \abovedisplayskip 11\p@ plus3\p@ minus6\p@
  \belowdisplayskip \abovedisplayskip
  \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}%
  }%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\footnotesize}
%    \begin{macrocode}
 \def\footnotesize{\@setsize\footnotesize{12pt}\xpt\@xpt
  \abovedisplayskip 10\p@ plus2\p@ minus5\p@
  \belowdisplayskip \abovedisplayskip
  \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}%
  }%
%    \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}
%    \begin{macrocode}
 \def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
 \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
 \def\large{\@setsize\large{18pt}\xivpt\@xivpt}
 \def\Large{\@setsize\Large{22pt}\xviipt\@xviipt}
 \def\LARGE{\@setsize\LARGE{25pt}\xxpt\@xxpt}
 \def\huge{\@setsize\huge{30pt}\xxvpt\@xxvpt}
 \let\Huge=\huge
%    \end{macrocode}
% \end{macro}^^A \Huge
% \end{macro}^^A \huge
% \end{macro}^^A \LARGE
% \end{macro}^^A \Large
% \end{macro}^^A \large
% \end{macro}^^A \tiny
% \end{macro}^^A \scriptsize
%    \begin{macrocode}
\or  % Norm-Option (DIN 2107, 2142)
%    \end{macrocode}
% \begin{macro}{\@normalsize}
%    \begin{macrocode}
 \def\@normalsize{\@setsize\normalsize{\GZA}\xipt\@xipt
  \abovedisplayskip 11\p@ plus3\p@ minus6\p@
  \belowdisplayskip \abovedisplayskip
  \abovedisplayshortskip \z@ plus3\p@
  \belowdisplayshortskip 6.5\p@ plus3.5\p@ minus3\p@
  \let\@listi\@listI
  }% Setting of \@listi added 22 Dec 87
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\small}
%    \begin{macrocode}
 \def\small{\@setsize\small{11pt}\xpt\@xpt
  \abovedisplayskip 10\p@ plus2\p@ minus5\p@
  \belowdisplayskip \abovedisplayskip
  \abovedisplayshortskip  \z@ plus3\p@
  \belowdisplayshortskip  6\p@ plus3\p@ minus3\p@
  \def\@listi{\leftmargin\leftmargini %% Def of \@listi added 22 Dec 87
              \topsep 6\p@ plus2\p@ minus2\p@
              \parsep 3\p@ plus2\p@ minus\p@
              \itemsep \parsep}%
  }%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\footnotesize}
%    \begin{macrocode}
 \def\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt
  \abovedisplayskip 8\p@ plus2\p@ minus4\p@
  \belowdisplayskip \abovedisplayskip
  \abovedisplayshortskip \z@ plus\p@
  \belowdisplayshortskip 4\p@ plus2\p@ minus2\p@
  \def\@listi{\leftmargin\leftmargini %% Def of \@listi added 22 Dec 87
              \topsep 4\p@ plus2\p@ minus2\p@
              \parsep 2\p@ plus\p@ minus\p@
              \itemsep \parsep}%
  }%
%    \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}
%    \begin{macrocode}
 \def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
 \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
 \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
 \def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
 \def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
 \def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
 \def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
%    \end{macrocode}
% \end{macro}^^A \Huge
% \end{macro}^^A \huge
% \end{macro}^^A \LARGE
% \end{macro}^^A \Large
% \end{macro}^^A \large
% \end{macro}^^A \tiny
% \end{macro}^^A \scriptsize
%    \begin{macrocode}
\fi
%    \end{macrocode}
%
%  \begin{macro}{\normalsize}
%  We are doing here something different from the class files of
%  \LaTeXe. This may be necessary for backward compatibility.
%
%  If we are in \LaTeXe, then we have to define the
%  controlsequence |\normalsize|.
%
%    \begin{macrocode}
\ifka@db@ltxtwoe
\let\normalsize\@normalsize
\fi
%    \end{macrocode}
%  \end{macro}
%
% We initially choose the normalsize font.
% This code has to be executed following the definition of |\baselinestretch|,
% if we are not running NFSS2. (This may also be true also for NFSS1.)
% \changes{0.92.13}{1994/01/04}{Commented out and moved to the end of the file}
% \changes{0.92.14}{1994/01/04}{Included as conditional code}
%    \begin{macrocode}
\ifka@db@nfss
    \normalsize
  \else
    \ifka@db@nfsstwo
      \normalsize
    \fi
  \fi
%    \end{macrocode}
%
% \subsection{Document layout}
% \label{sec:maincode}
%
%  In this section we are finally dealing with the nasty typographical
%  details.
%
%    \begin{macrocode}
% \addtolength\voffset{0.8truemm}
% \addtolength\hoffset{-1.4truemm}
%    \end{macrocode}
%
%    \begin{macrocode}
\oddsidemargin 0in
\evensidemargin 0in
\marginparwidth .08in
\marginparsep .01in
\marginparpush 5pt
% \topmargin -15pt
\topmargin0pt
\topmargin-5mm
%    \end{macrocode}
%
% \begin{macro}{\ltf@headheight}
% \begin{macro}{\lts@headheight}
% \begin{macro}{\ltf@headsep}
% \begin{macro}{\lts@headsep}
% \begin{macro}{\ltf@textheight}
% \begin{macro}{\lts@textheight}
% These dimens are used to store different values for the first page
% and the following pages. All dimens starting with |ltf@XXX| hold
% values for the first page and all dimens starting with |lts@XXX|
% hold values for the second and follwing pages. We have to do
% here such a funny coding because \LaTeX's |\thispagestyle|-mechanism
% is not flexible enough. (This code may not complete yet!)
%
% We use this to move the start of the first page of a letter
% 12~mm up.
%
%    \begin{macrocode}
\newdimen\ltf@headheight
\newdimen\lts@headheight
\newdimen\ltf@headsep
\newdimen\lts@headsep
\newdimen\ltf@textheight
\newdimen\lts@textheight
\ltf@headheight 4.2truemm %
\lts@headheight 0truemm %
\ltf@headsep 8.8truemm %
\lts@headsep 0truemm %
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%  \begin{macro}{\footheight}
%    \LaTeXe\ has no dimen register |\footheight|, because there is no such
%    register in other \LaTeX-versions.
%    \begin{macrocode}
\ifka@db@ltxtwoe
    \relax
  \else
    \footheight 4.2truemm
  \fi
%    \end{macrocode}
%  \end{macro}
%
%    \begin{macrocode}
\footskip 8.8truemm
\textheight 260truemm
%    \end{macrocode}
%
% \iffalse
% RG 29.11.93 printer can't output the last line
% \fi
% \changes{0.0.0}{1993/11/29}{(RG) printer can't output the last line}
%
%    \begin{macrocode}
\textheight 254truemm
\textwidth 165truemm
\columnsep 10pt
\columnseprule 0pt
%    \end{macrocode}
%
%    \begin{macrocode}
\raggedbottom
%    \end{macrocode}
%
%  \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.
%
%    The class/style `dinbrief' uses only one value for
%    |\footnotesep| in all pt-sizes.
%
%    \begin{macrocode}
\footnotesep 4.2truemm
%    \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.
%
%    The class/style `dinbrief' uses only one value for
%    |\footins| in all pt-sizes.
%
%    \begin{macrocode}
\skip\footins 10pt plus 2pt minus 4pt
%    \end{macrocode}
%  \end{macro}
%
%    \begin{macrocode}
\floatsep 12pt plus 2pt minus 2pt
\textfloatsep 20pt plus 2pt minus 4pt
\intextsep 12pt plus 2pt minus 2pt
\dblfloatsep 12pt plus 2pt minus 2pt
\dbltextfloatsep 20pt plus 2pt minus 4pt
\ifka@db@ltxtwoe
    \relax
  \else
    \@maxsep 20pt
    \@dblmaxsep 20pt
  \fi
\@fptop 0pt plus 1fil
\@fpsep 8pt plus 2fil
\@fpbot 0pt plus 1fil
\@dblfptop 0pt plus 1fil
\@dblfpsep 8pt plus 2fil
\@dblfpbot 0pt plus 1fil
%    \end{macrocode}
%
%  \subsubsection{Rules above and below the receiver's window}
%
%  \begin{macro}{\ifka@db@windowrules}
%  \begin{macro}{\windowrules}
%  \begin{macro}{\nowindowrules}
%  The window rules above and below the receivers address can
%  be switched on or off. The boolean variable |\ifka@db@windowrules|
%  is true if the rules have to be typeset. The user commands
%  \cmd\windowrules\ and \cmd\nowindowrules\ toggle the boolean
%  variable.
%    \begin{macrocode}
\newif\ifka@db@windowrules
\def\windowrules{\global\ka@db@windowrulestrue}
\def\nowindowrules{\global\ka@db@windowrulesfalse}
\windowrules
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \subsubsection{Lines for splitting letters}
%
%  \begin{macro}{\ifka@db@windowtics}
%  \begin{macro}{\windowtics}
%  \begin{macro}{\nowindowtics}
%  Save as above except the tics on the left side are typeset
%  or not.
%    \begin{macrocode}
\newif\ifka@db@windowtics
\def\windowtics{\global\ka@db@windowticstrue}
\def\nowindowtics{\global\ka@db@windowticsfalse}
\windowtics
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \subsubsection{\cmd\backaddress\space API function}
%
%  \begin{macro}{\backaddress}
%  \begin{macro}{\@backaddress}
%    \begin{macrocode}
\def\backaddress#1{\gdef\@backaddress{#1}}
\backaddress{}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \subsubsection{Macros for splitting the receiver's address}
%
%  \changes{1.21.0}{1995/01/13}{Macros for splitting the receivers
%                               address replaced with a more flexible
%                               and more user friendly method}
%
%  \begin{macro}{\@splitoncr}
%  \begin{macro}{\@splitoncrlist}
%  The macro |\@splitoncr| splits the first argument on each |\\|.
%  The second argument is a macro with exactly one argument. For each
%  part the macro (in the second) argument is called.
%  |\@splitoncrlist| is called inside |\@splitoncr| and
%  does the real work.
%    \begin{macrocode}
\long\def\@splitoncr#1#2{%
  \begingroup
    % \tracingmacros=1
    \let\\=a% because characters are not expanded
    \long\def\@rgjob##1{#2{##1}}%
    % \expandafter\@splitoncrlist#1\\\stop \\
    \@splitoncrlist#1\\\stop \\
  \endgroup}
%    \end{macrocode}
%    \changes{1.63.0}{1996/05/21}{call to \cmd\@splitoncrlist changed
%                                 as sugested by B.~Raichle}
%
%    \changes{1.63.0}{1996/05/21}{order of \cmd\ifx-comparision changed}
%    There is a bug in the macro |\@splitoncrlist|. If the argument
%    starts with to two equal letters, the comparision evaluates to
%    true and the macro |\stop| is executed. This stops all
%    activities and ends \LaTeX. So we change the order of the arguments
%    of the \cs{ifx} oder |\ifx| command. We check |\stop| against the arguments
%    of the macro. This will work.
%
%    \begin{macrocode}
\long\def\@splitoncrlist#1\\{%
  \ifx\stop#1\relax
    \let\next=\relax
%     \message{Stop encountered}%
  \else
    \@rgjob{#1}%
%    % \typeout{The sequence: #1}%
    \let\next=\@splitoncrlist
  \fi
  \next
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\@ignorebrackets}
%  The first argument in brackets is ignored. The third argument
%  is the name of a control sequece. This cs will be defined globally
%  with the contents of the second argument.
%
%  \changes{1.63.0}{1996/05/21}{We made this macro long}
%
%    \begin{macrocode}
\long\def\@ignorebrackets[#1]#2\stop#3{%
  \gdef#3{#2}\relax
}
%    \end{macrocode}
%  \end{macro}
%
%  \changes{1.65.0}{1995/10/29}{\cmd\leavevmode\ inserted}
%  \begin{macro}{\@withmarkcr}
%    \begin{macrocode}
\long\def\@withmarkcr!#1\stop{%
  \xdef\@addresslist{%
    \@addresslist\ifx\@addresslist\empty\else\leavevmode\\\fi{#1}}%
  \@ifnextchar[%]
    {\@ignorebrackets}{\@ignorebrackets[]}#1\stop{\@addressname}
}
%    \end{macrocode}
%  \end{macro}
%
%  \changes{1.65.0}{1995/10/29}{\cmd\leavevmode\ inserted}
%  \begin{macro}{\@withoutmarkcr}
%    \begin{macrocode}
\long\def\@withoutmarkcr#1\stop{%
  \xdef\@addresslist{%
    \@addresslist\ifx\@addresslist\empty\else\leavevmode\\\fi{#1}}
  \ifx\@addressname\relax
    \@ifnextchar[%]
      {\@ignorebrackets}{\@ignorebrackets[]}#1\stop{\@addressname}
  \fi
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@withmark}
%    \begin{macrocode}
\long\def\@withmark!#1\stop{%
  \xdef\@addresslist{\@addresslist {#1}}
  \@ifnextchar[%]
    {\@ignorebrackets}{\@ignorebrackets[]}#1\stop{\@addressname}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@withoutmark}
%  This macro is not allowed to insert a |\\| into the |\@addresslist|.
%    \begin{macrocode}
\long\def\@withoutmark#1\stop{%
  \xdef\@addresslist{\@addresslist {#1}}
  \ifx\@addressname\relax
    \@ifnextchar[%]
      {\@ignorebrackets}{\@ignorebrackets[]}#1\stop{\@addressname}
  \fi
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@withlbracket}
%  Adds to the |\@addresslist| in brackets the contents of the
%  brackts following the |\\|. Looks for a |!|.
%  \changes{1.65.0}{1995/10/29}{\cmd\leavevmode\ inserted}
%    \begin{macrocode}
\long\def\@withlbracket[#1]#2\stop{%
  \xdef\@addresslist{\@addresslist\ifx\@addresslist\empty\else\leavevmode\\\fi[#1]}
  \@ifnextchar!{\@withmark}{\@withoutmark}#2\stop
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@withoutlbracket}
%  Checks if |!| is immediately following the |\\|.
%  If so |\@withmarkcr| is called otherwise |\@withoutmarkcr|
%  is called.
%    \begin{macrocode}
\long\def\@withoutlbracket#1\stop{%
  \@ifnextchar!{\@withmarkcr}{\@withoutmarkcr}#1\stop
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@checkformark}
%  Checks of the existence of a left bracket. Depending on the
%  presence of such a left bracket the control sequence
%  |\@withlbracket| or |\@withoutlbracket| is executed.
%    \begin{macrocode}
\long\def\@checkformark#1{%
  %\@ifnextchar!{\@withmark}{\@withoutmark}#1\stop
  \@ifnextchar[{\@withlbracket}{\@withoutlbracket}#1\stop
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@splitaddress}
%  This macro splits the receivers address and extracts the
%  contents of a line marked with a starting |!|. Lines
%  in this context are all stuff between two |\\| or the
%  stuff between the beginning or the ending of the argument
%  and one |\\|. If no |!| is given, the first line in the
%  argument is taken (as in the former versions). If more than
%  one |!| is given (in different lines) the last line containing
%  a |!| is taken. Valid forms are |\\!|, |\\ !|, |\\![\medskipamount]|
%  and |\\[\medskipamount]!|. All four forms produce the expected
%  output!
%
%  \changes{1.63.0}{1995/05/21}{Two \cmd\expandafters inserted as
%                               suggested by B.~Raichle}
%
%    \begin{macrocode}
\long\def\@splitaddress#1{%
  \def\@addressbase{#1}
  \let\@addressname=\relax
  \def\@addresslist{}
  \expandafter\@splitoncr\expandafter{\@addressbase}{\@checkformark}%
  \gdef\toname{\@addressname}
  % \typeout{Addresslist: \@addresslist}%
  % \typeout{Addressname: \@addressname}%
  % \typeout{\string\toname: \toname}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \subsubsection{The \cmd\opening-Procedure}
%  The following macros typeset most static text areas of the letter.
%
%  \begin{macro}{\ka@db@indadr}
%    \begin{macrocode}
\newdimen\ka@db@indadr
\ka@db@indadr=0pt
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@tsfromaddress}
%    \begin{macrocode}
\def\ka@db@tsfromaddress{%
  \ifx\@empty\@fromaddress
    \vbox to 0pt{\vss}\nointerlineskip
  \else
    \vbox to 0pt{\vskip -19.4truemm\raggedright\@fromaddress\vss}%
    \nointerlineskip
  \fi
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@tswindowtics}
%    \begin{macrocode}
\def\ka@db@tswindowtics{%
  \ifka@db@windowtics
    \vbox to 0pt{%
     \rule{0pt}{81.1truemm}% 62.5truemm > 80.0truemm
     \hbox to 0pt{\hspace*{-24truemm}\vbox{\hrule width 7truemm}\hss}%
     \vss}\nointerlineskip
    \vbox to 0pt{%
     \rule{0pt}{124.6truemm}% 106.0truemm > 123.5truemm
     \hbox to 0pt{\hspace*{-18truemm}\vbox{\hrule width 6truemm}\hss}%
     \vss}\nointerlineskip
    \vbox to 0pt{%
     \rule{0pt}{186.1truemm}% 167.5truemm > 185.0truemm
     \hbox to 0pt{\hspace*{-24truemm}\vbox{\hrule width 7truemm}\hss}%
     \vss}\nointerlineskip
  \else
    \vbox to 0pt{\rule{0pt}{81.1truemm}%
     \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
     \vss}\nointerlineskip
    \vbox to 0pt{\rule{0pt}{124.6truemm}%
     \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
     \vss}\nointerlineskip
    \vbox to 0pt{\rule{0pt}{186.1truemm}%
     \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
     \vss}\nointerlineskip
  \fi
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\dbottomtext}
%    \begin{macrocode}
\newdimen\dbottomtext
\dbottomtext=261.0truemm
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@tsbottomtext}
%  \changes{0.0.0}{1994/02/08}{(KDB) Changed to check the height of
%                              the footer (\cmd\@@bottomtext\ now dimen,
%                              no longer command)}
%    \begin{macrocode}
\def\ka@db@tsbottomtext{%
  \ifdim\ht\@@bottomtext>0pt
%    \end{macrocode}
%  \changes{0.0.0}{1994/02/08}{(KDB) \cmd\@@bottomtext\  should be set
%                              within a \env{\vbox to 0pt}{\cmd\vss ...}}
%  \changes{1.22.0}{1995/01/16}{(RG) rule position changed}
%  \changes{1.43.0}{1995/05/23}{(RG) rule position is now defined in a dimen
%                               register}
%    \begin{macrocode}
    \vbox to 0pt{%
%      \rule{0pt}{261.0truemm}% 243.5truemm
      \rule{0pt}{\dbottomtext}% 243.5truemm
%    \end{macrocode}
% \changes{0.0.0}{1994/02/08}{(KDB) \cmd\hbox{ ... } moved to box \cmd\@@bottomtext}
% \changes{0.0.0}{1994/11/17}{(RG) \cmd\unhbox\ changed to \cmd\unhcopy,
%                             because we can have more than one letter
%                             in one document. So the bottomline is
%                             inserted into every first page of letters.}
%    \begin{macrocode}
      \unhcopy\@@bottomtext
      \vss
    }\nointerlineskip%
  \fi
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@bafntsel}
%  The macro |\ka@db@bafntsel| selects the font size and other
%  parameters for the backaddress in the window.
%    \begin{macrocode}
\def\ka@db@bafntsel{%
  \ka@db@fontsize{8}{9pt}%
  \ka@db@selectfont
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@tstoaddress}
%    \begin{macrocode}
\def\ka@db@tstoaddress{%
  \vbox to 0pt{\vss%
    \ifka@db@windowrules
      \hbox to 0pt{\hspace*{-4truemm}\vbox{\hrule width 85truemm}\hss}%
    \else
      \hbox to 0pt{\hss}%
    \fi
    \vss
  }%
  \nointerlineskip
%    \end{macrocode}
%    \begin{macrocode}
  \ifx\@empty\@backaddress
    \vbox to 7.5truemm{%
      \vfill
    }%
    \nointerlineskip
  \else
    \vbox to 7.5truemm{%
      \vskip 2.5truemm
      \vss
      \hbox to 0pt{\hspace*{-4truemm}%
        \vbox{%
          \hbox to 85truemm{\hfill
                            {\ka@db@bafntsel\@backaddress}\hfill}%
          \hrule width 85truemm}\hss}%
      % \vss % <- removed to get exact layout
    }%
    \nointerlineskip
  \fi
%    \end{macrocode}
%    \begin{macrocode}
  \vbox to 40truemm{%
    \vss
    \hbox to 0pt{\hskip0pt minus 4truemm%
      \setbox\@tempboxa=\vbox{%
        \if@letterform
          \relax
        \else
          % \typeout{Start dumping \string\@addresslist}%
          \leavevmode
          \ka@db@ifemptyvarlocal{postremark}{}{%
            \ka@db@usevarlocal{postremark}\\[\medskipamount]
          }%
          \raggedright \@addresslist %\toname \\ \toaddress%
          % \typeout{End dumping \string\@addresslist}%
        \fi
      }%
      \ifdim\ht\@tempboxa>40mm
        %\@warning{Receivers address is larger than letter window}%
        \ClassWarning{dinbrief}{%
          Receivers address is larger than letter window}%
      \else
        \setbox\@tempboxa=\vbox{%
          \hbox{%
            \ifdim\ka@db@indadr>0pt
              \else
                \hbox to 0pt{\hskip4in\ka@db@usevarlocal{handling}\hss}%
              \fi
            %\unvbox\@tempboxa
            \box\@tempboxa
          }%
          \if@toadrcenter\relax
            \else\vskip 2.5truemm minus 2.5truemm
          \fi
        }%
      \fi
      \box\@tempboxa
      \hss
    }%
    \if@toadrcenter
      \vss
    \fi
  }\nointerlineskip
  \vskip 2.5truemm
%    \end{macrocode}
%    \begin{macrocode}
  \vbox to 0pt{\vss%
    \ifka@db@windowrules
      \hbox to 0pt{\hspace*{-4truemm}\vbox{\hrule width 85truemm}\hss}%
    \else
      \hbox to 0pt{\hss}%
    \fi
    \vss
  }\nointerlineskip
%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@tsrefline}
%    \begin{macrocode}
\def\ka@db@tsrefline{%
  \if@norefline\else
%   \vbox{\vskip 6truemm
      \vbox{%
        \if@refline
          \@answerto
        \else
          \if@letterform\relax\else
            \ifx\@empty\@place
              \raggedleft \@date
            \else
              \raggedleft \@place,\space\@date
            \fi
          \fi
        \fi
      }%
%   }%
    \nointerlineskip
    \par
    \bigskip
  \fi %\if@norefline
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@tsconcern}
%    \begin{macrocode}
\def\ka@db@tsconcern{%
  \ifx\@empty\@concern \else
    \if@letterform\relax\else
      \@concern \par
      \bigskip
    \fi
  \fi
  \vspace{0pt plus 10truemm}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@tsopening}
%    \begin{macrocode}
\def\ka@db@tsopening#1{%
  \if@letterform\relax\else
   #1\par
  \fi
}
%    \end{macrocode}
%  \end{macro}
%
%  The following macros just link type above one to the calls.
%  This makes it more easy to modify parts in one letter or to
%  modify the layout.
%
%  \begin{macro}{\ka@db@placefromaddress}
%  \begin{macro}{\ka@db@placewindowtics}
%  \begin{macro}{\ka@db@placebottomtext}
%  \begin{macro}{\ka@db@placetoaddress}
%  \begin{macro}{\ka@db@placerefline}
%  \begin{macro}{\ka@db@placeconcern}
%  \begin{macro}{\ka@db@placeopening}
%     \begin{macrocode}
\def\ka@db@placefromaddress{%
  \vbox to 0pt{\ka@db@tsfromaddress\vss}\nointerlineskip
}%
\def\ka@db@placewindowtics{%
  \vbox to 0pt{\ka@db@tswindowtics\vss}\nointerlineskip
}%
\def\ka@db@placebottomtext{%
  \vbox to 0pt{\ka@db@tsbottomtext\vss}\nointerlineskip
}%
\def\ka@db@placetoaddress{%
  \vskip 18.6truemm % old value 13.1truemm
  %   \vbox to 50truemm{\vss\ka@db@tstoaddress\vss}\nointerlineskip
  %   \vbox to 50truemm{\ka@db@tstoaddress}\nointerlineskip
  % \vbox to 50truemm{\ka@db@tstoaddress\vss}\nointerlineskip
  % ^- org. value
  \moveright\ka@db@indadr\vbox to 50truemm{\ka@db@tstoaddress\vss}%
  \nointerlineskip
  \vskip 6truemm
}%
\def\ka@db@placerefline{%
  \vbox{\ka@db@tsrefline}\nointerlineskip
}%
\def\ka@db@placeconcern{
  \vbox{\ka@db@tsconcern}\nointerlineskip
}%
\def\ka@db@placeopening#1{%
  \ka@db@tsopening{#1}%
  \nobreak
}%
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\opening}
%    This macro draws the letter from the top until the subject (concern).
%    And if available also the bottomtext.
%
%    First we switch to a special pagestyle.
%    \begin{macrocode}
\def\opening#1{%
%    \end{macrocode}
% \changes{1.22.0}{1995/01/19}{(RG) State counter added to \cmd\opening.}
%    \begin{macrocode}
  \setcounter{lt@state}{2}
  \thispagestyle{first@page}
%    \end{macrocode}
% Actually enlarge the first page by the negative height of the footer:
%    \begin{macrocode}
  \ifka@db@ltxtwoe
     \enlargethispage{-\ht\@@bottomtext}
  \fi
%    \end{macrocode}
%    Then we start printing the parts of the letter.
%    The following macros expect special positions on the paper to
%    print their contents on the correct position. |\ka@db@placefromaddress|,
%    |\ka@db@placewindowtics| and \hfil\break |\ka@db@placebottomtext|
%    start from the left top corner of the paper. (Maybe not correct:
%    top: 1in + |\headheight| + |\headsep| + |\topskip|(?) left: ???)
%    |\ka@db@placetoaddres| starts at the position, mentioned in the
%    DIN 676. It has to typeset to box containing the address of the
%    receiver plus the necessary space (normaly two lines).
%    The other three macros |\ka@db@placerefline|, |\ka@db@placeconcern|
%    and |\ka@db@placeopening| typeset their contents and the
%    necessary space. All these macros should typeset boxes.
%    There should be no |\interlineskip| between each of those boxes.
%
%    \begin{macrocode}
  \ka@db@placefromaddress
  \ka@db@placewindowtics
  \ka@db@placebottomtext
  \ka@db@placetoaddress
  \ka@db@placerefline
  \ka@db@placeconcern
  \ka@db@placeopening{#1}%
}
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\oldopening}
%    \begin{macrocode}
\def\oldopening#1{\thispagestyle{first@page}
%    \end{macrocode}
% Actually enlarge the first page by the negative height of the footer:
%    \begin{macrocode}
  \ifka@db@ltxtwoe
     \enlargethispage{-\ht\@@bottomtext}
  \fi
%    \end{macrocode}
%    \begin{macrocode}
 \ifx\@empty\@fromaddress
    \vbox to 0pt{\vss}\nointerlineskip
  \else
     \vbox to 0pt{\vskip -19.4truemm\raggedright\@fromaddress\vss}%
  \fi
 \vskip 13.1truemm
%
 \ifx\@empty\@@windowtics
    \vbox to 0pt{\rule{0pt}{62.5truemm}%
     \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
     \vss}\nointerlineskip
    \vbox to 0pt{\rule{0pt}{106.0truemm}%
     \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
     \vss}\nointerlineskip
    \vbox to 0pt{\rule{0pt}{167.5truemm}%
     \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
     \vss}\nointerlineskip
  \else
    \vbox to 0pt{%
     \rule{0pt}{62.5truemm}%
     \hbox to 0pt{\hspace*{-24truemm}\vbox{\hrule width 7truemm}\hss}%
     \vss}\nointerlineskip
    \vbox to 0pt{%
     \rule{0pt}{106.0truemm}%
     \hbox to 0pt{\hspace*{-18truemm}\vbox{\hrule width 6truemm}\hss}%
     \vss}\nointerlineskip
    \vbox to 0pt{%
     \rule{0pt}{167.5truemm}%
     \hbox to 0pt{\hspace*{-24truemm}\vbox{\hrule width 7truemm}\hss}%
     \vss}\nointerlineskip
  \fi
%    \end{macrocode}
% \changes{0.0.0}{1994/02/08}{(KDB) Changed to check the height of
%                             the footer (\cmd\@@bottomtext\ now dimen,
%                             no longer command)}
%    \begin{macrocode}
 \ifdim\ht\@@bottomtext>0pt
%    \end{macrocode}
% \changes{0.0.0}{1994/02/08}{(KDB) \cmd\@@bottomtext\  should be set
%                             within a \env{\vbox to 0pt}{\cmd\vss ...}}
%    \begin{macrocode}
    \vbox to 0pt{%
      \rule{0pt}{243.5truemm}%
%    \end{macrocode}
% \changes{0.0.0}{1994/02/08}{(KDB) \cmd\hbox{ ... } moved to box \cmd\@@bottomtext}
% \changes{0.0.0}{1994/11/17}{(RG) \cmd\unhbox\ changed to \cmd\unhcopy,
%                             because we can have more than one letter
%                             in one document. So the bottomline is
%                             inserted into every first page of letters.}
%    \begin{macrocode}
      \unhcopy\@@bottomtext
      \vss}\nointerlineskip%
  \fi
%    \end{macrocode}
%    \begin{macrocode}
 \vbox to 0pt{\vss%
  \ifx\@empty\@@windowrules
     \hbox to 0pt{\hss}%
   \else
     \hbox to 0pt{\hspace*{-4truemm}\vbox{\hrule width 85truemm}\hss}%
   \fi
  \vss}\nointerlineskip
%
 \ifx\@empty\@backaddress
    \vbox to 7.5truemm{
     \vfill
     }\nointerlineskip
  \else
    \vbox to 7.5truemm{
     \vskip 2.5truemm
     \vss
     \hbox to 0pt{\hspace*{-4truemm}\vbox{%
      \hbox to 85truemm{\hfill
                        {\ka@db@fontsize{8}{9pt}
                         \ka@db@selectfont \@backaddress}\hfill}%
      \hrule width 85truemm}\hss}%
     \vss}\nointerlineskip
  \fi
%
 \vbox to 40truemm{%
  \vss
  \hbox to 0pt{\hskip0pt minus 4truemm%
   \vbox{%
         \if@letterform
             \relax
           \else
             % \typeout{Start dumping \string\@addresslist}%
             \raggedright \@addresslist %\toname \\ \toaddress%
             % \typeout{End dumping \string\@addresslist}%
             \if@toadrcenter\relax
              \else\vskip 2.5truemm minus 2.5truemm
              \fi
           \fi
        }%
   \hss}
  \if@toadrcenter
    \vss
  \fi
  }\nointerlineskip
 \vskip 2.5truemm
%
 \vbox to 0pt{\vss%
  \ifx\@empty\@@windowrules
     \hbox to 0pt{\hss}%
   \else
     \hbox to 0pt{\hspace*{-4truemm}\vbox{\hrule width 85truemm}\hss}%
   \fi
  \vss}\nointerlineskip
%
  \if@norefline\else
    \vbox{\vskip 6truemm
      \vbox{%
        \if@refline
          \@answerto
        \else
          \if@letterform\relax\else
            \ifx\@empty\@place
              \raggedleft \@date
            \else
              \raggedleft \@place,\space\@date
            \fi
          \fi
        \fi
      }%
    }%
    \nointerlineskip
    \par
    \bigskip
  \fi %\if@norefline
 \ifx\@empty\@concern \else
   \if@letterform\relax\else
      \@concern \par
      \bigskip
    \fi
  \fi
 \ifx\@empty\@footer \else
  \fi
 \vspace{0pt plus 10truemm}
 \if@letterform\relax\else
   #1\par
  \fi
  \nobreak}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\closing}
% \changes{1.64.0}{1996/08/06}{(RG) closing has now an optional argument}
% \changes{1.65.0}{1995/10/29}{(RG) removed argument hash mark \# (bug)}
%  \begin{macro}{\ka@db@closinghook}
%    \begin{macrocode}
\long\def\closing{%
  \@ifnextchar[%]
    {\ka@db@closing}{\ka@db@closing[]}%
}
\long\def\ka@db@closing[#1]#2{%
%    \end{macrocode}
% \changes{1.22.0}{1995/01/19}{(RG) State counter added to \cmd\closing.}
%    \begin{macrocode}
  \setcounter{lt@state}{3}
  \par\nobreak
  \vspace{\parskip}
  \stopbreaks
  {%
    \leavevmode
    \ifka@db@enclright
      \bgroup
%        \@tempdima=\textwidth
        \ka@db@tmpdima=4in
%        \advance\@tempdima by -\ka@db@tmpdima
%        \hbox to 0pt{%
%          \hskip\@tempdimb\relax
%          \parbox[t]{\@tempdima}{%\parskip .7em
%                                 \ka@db@tsenclcc}%
%          \hss
%        }%
        \parbox[t]{\ka@db@tmpdima}{%\parskip .7em%
          \raggedright
          \ignorespaces #2\\[3\baselineskip]
          \vbox to 0pt{%
            \vskip -4\baselineskip\relax
            \hbox to 0pt{\strut#1\hss}%
          \vss}%
%          \ifx\@empty\@fromsig
%          \else \@fromsig
%          \fi\strut
          \ka@db@ifemptyvar{signature}{}{%
            \ka@db@usevar{signature}%
          }%
          \strut
        }%
        \@tempdima=\textwidth
        \advance\@tempdima by -\ka@db@tmpdima
        \parbox[t]{\@tempdima}{%\parskip .7em%
          \raggedright
          \ka@db@tsenclcc
          \unskip % <- removing unneccessary skip from
                  %    \cmd\ka@db@tsenclcc
        }%
      \egroup
    \else
      \raggedright
      \ignorespaces #2\\[3\baselineskip]
      \leavevmode
      % here the signature <- not correct
      \vbox to 0pt{%
        \vskip -4\baselineskip\relax
        \hbox to 0pt{\strut#1\hss}%
      \vss}%
%      \ifx\@empty\@fromsig
%      \else \@fromsig
%      \fi\strut
      \ka@db@ifemptyvar{signature}{}{%
        \ka@db@usevar{signature}%
      }%
      \strut
    \fi
  }%
  \par\medskip
  \ifka@db@enclright
  \else
    \raggedright
    \ka@db@tsenclcc
  \fi
  \ka@db@closinghook
}
\def\ka@db@closinghook{}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\ka@db@tsenclcc}
%    \begin{macrocode}
\def\ka@db@tsenclcc{%
  \ka@db@ifemptyvarlocal{encl}%
    {}{\ka@db@usevarlocal{encl}\\[\baselineskip]}%
  \ka@db@ifemptyvarlocal{cc}%
    {}{\ka@db@usevarlocal{cc}\\[\baselineskip]}%
}
%    \end{macrocode}
%  \end{macro}
%
% \subsection{Initialization}
%
% \subsubsection{Words}
%
% \begin{macro}{\ccname}
% \begin{macro}{\enclname}
% \begin{macro}{\psname}
% This document style/class is prepared for documents in German.
% To prepare a version for another language, various German words must
% be replaced.
%
% All German words that require replacement are
% defined below in command names. (Not all!)
%
%    \begin{macrocode}
\def\ccname{Verteiler}
\def\enclname{Anlage(n)}
\def\psname{PS}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\headtoname}
% \begin{macro}{\pagename}
% These two words are used in the pagestyles |headings| and |contheadings|.
%    \begin{macrocode}
\def\headtoname{An}
\def\pagename{Seite}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
%
%  \subsection{More letter macros}
%
%  \begin{macro}{\handling}
%    \begin{macrocode}
\def\handling#1{%
  \ka@db@assignvarlocal{handling}{#1}%
}
\ka@db@execatletter{\ka@db@assignvarlocal{handling}{}}%
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\postremark}
%    \begin{macrocode}
\def\postremark#1{%
  \ka@db@assignvarlocal{postremark}{#1}%
}
\ka@db@execatletter{\ka@db@assignvarlocal{postremark}{}}%
%    \end{macrocode}
%  \end{macro}
%
%  \changes{1.52.0}{1995/06/29}{(RG) generic command for all enclosures added.}
%  \begin{macro}{\ka@db@genencl}
%  The macro \cmd\ka@db@genencl can be called at every
%  position inside the {\tt letter}-environment. If it is called
%  between \cmd\closing\ and \env\end{letter}\ it directly typesets
%  its arguments. If it is called before \cmd\closing\ is
%  given it stores its arguments in the variable.
%  \cmd\closing\ will typeset all the stuff.
%
%    \begin{macrocode}
\def\ka@db@genencl#1[#2]#3{%
  \ifnum\c@lt@state=3\relax
    \par
    \noindent{%
    \bgroup
      \def\tmpa{#2}%
      \expandafter\egroup
    \ifx\tmpa\@empty\else
      #2\hfil\break
    \fi
    \ignorespaces #3\strut}%
    \par
  \else
    \bgroup
      \def\tmpa{#2}%
      \expandafter\egroup
    \ifx\tmpa\@empty
      \ka@db@assignvarlocal{#1}{#3}%
    \else
      \ka@db@assignvarlocal{#1}{#2\hfil\break #3}%
    \fi
  \fi
}
%    \end{macrocode}
%  \end{macro}
%
%  \changes{1.22.0}{1995/01/19}{(RG) \cmd\cc\ and \cmd\encl\ extended.}
%  \begin{macro}{\cc}
%  \begin{macro}{\encl}
%  The macros \cmd\cc\ and \cmd\encl\ new use the generic enclosures
%  macro.
%
%    \begin{macrocode}
\def\cc{%
  \@ifnextchar[%]
    {\ka@db@genencl{cc}}{\ka@db@genencl{cc}[\ccname]}%
}
\ka@db@execatletter{\ka@db@assignvarlocal{cc}{}}%
%    \end{macrocode}
%
%    \begin{macrocode}
\def\encl{%
  \@ifnextchar[%]
    {\ka@db@genencl{encl}}{\ka@db@genencl{encl}[\enclname]}%
}
\ka@db@execatletter{\ka@db@assignvarlocal{encl}{}}%
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\ps}
%    \begin{macrocode}
\def\ps#1{\par\noindent{\psname \\
          \ignorespaces #1\strut}\par}
%    \end{macrocode}
%  \end{macro}
%
% \begin{macro}{\stopletter}
%    |\stopletter| ist a hook to execute own commands at the end
%    of a given letter.
%    \begin{macrocode}
\def\stopletter{}
%    \end{macrocode}
% \end{macro}
%
% \subsection{Styles for the labels}
% \changes{0.0.0}{1993/02/06}{(RG) Labels got some styles.}
%
%  \subsubsection{Labels with different sizes}
%
%  \begin{macro}{\dlabelheight}
%  \begin{macro}{\dlabeltopmargin}
%  \begin{macro}{\dlabelwidth}
%  \begin{macro}{\clabelnumber}
%  The size of labels in the labelstyle plain can be modified.
%  Therefore we define some dimen-register (count-register) holding
%  the hight, the topmargin and the number of labels.
%    \begin{macrocode}
\newdimen\dlabelheight
\newdimen\dlabeltopmargin
\newdimen\dlabelwidth
\newcount\clabelnumber
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\setlabelheight}
%  \begin{macro}{\setlabelwidth}
%  \begin{macro}{\setlabeltopmargin}
%  \begin{macro}{\setlabelnumber}
%  These three macros assigns values to the counters defined
%  above.
%    \begin{macrocode}
\def\setlabelheight#1{\global\dlabelheight=#1\relax}
\def\setlabelwidth#1{\global\dlabelwidth=#1\relax}
\def\setlabeltopmargin#1{\global\dlabeltopmargin=#1\relax}
\def\setlabelnumber#1{\global\clabelnumber=#1\relax}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\Etihoehe}
%  \begin{macro}{\Etirand}
%  \begin{macro}{\Etizahl}
%  These three macros assigns values to the counters defined
%  above.
%    \begin{macrocode}
\def\Etihoehe#1{%
  %\@warning{Use \string\setlabelheight\space instead %
  %          of \string\Etihoehe}%
  \ClassWarning{dinbrief}{%
    Use \string\setlabelheight\space instead of \string\Etihoehe}%
  \setlabelheight{#1}%
  }
\def\Etirand#1{
  %\@warning{Use \string\setlabeltopmargin\space instead %
  %          of \string\Etirand}%
  \ClassWarning{dinbrief}{%
    Use \string\setlabeltopmargin\space instead of \string\Etirand}%
  \setlabeltopmargin{#1}%
  }
\def\Etizahl#1{
  %\@warning{Use \string\setlabelnumber\space instead %
  %          of \string\Etizahl}%
  \ClassWarning{dinbrief}{%
    Use \string\setlabelnumber\space instead of \string\Etizahl}%
  \setlabelnumber{#1}%
  }
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \subsubsection{Defining the standard dinbrief labels}
%  The following parameters are for the a4-label-papers
%  from Herma (copy-print, No.\ 4452).
%
%    \begin{macrocode}
\setlabelheight{41.15truemm}%
\setlabeltopmargin{8.85truemm}%
\setlabelwidth{80truemm}%
\setlabelnumber{7}%
%    \end{macrocode}
%
%  \subsection{Empty labels within labelstyle plain}
%
%  \begin{macro}{\cspare}
%    \begin{macrocode}
\newcount\cspare
\cspare=0
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\spare}
%    \begin{macrocode}
\def\spare#1{\cspare=#1\relax}
%    \end{macrocode}
%  \end{macro}
%
%  \subsubsection{different labelstyles}
%  This version of the dinbrief supports different styles for labels.
%  This allows the generation of papers containing several labels or
%  printing directly on envelopes. The control sequence |\labelstyle|
%  allows to change the layout.
%
%  For each layout two control sequences |\label@|STYLENAME and \hfil\break
%  |\lstyle@|STYLENAME have to be defined. |\label@|STYLENAME
%  is called from |\mlabel| for each label and has to typeset
%  this label. |\lstyle@|STYLENAME is called from |\startlabels|
%  and has to do the general setup (for example changing the
%  page layout).
%
%  It is very difficult to say which counters and lengths have
%  to redefined in this macros.
%
% \begin{macro}{\labelstyle}
%   |\labelstyle| is a command to define the layout of the labels.
%   Normally, labels are printed on special paper, but some printers
%   are able to print on envelopes. Therefore we define some styles
%   for printing labels on envelops:
%
%   \medskip
%   \begin{tabular}{clcl}
%     \hline
%       \multicolumn{2}{c}{Briefh\"ullenformat} &
%         \multicolumn{2}{c}{Gebr\"auchliches}\\
%       \multicolumn{2}{c}{} &
%         \multicolumn{2}{c}{Einlagenformat}\\
%       \multicolumn{1}{c}{Kurz-} &
%         \multicolumn{1}{c}{Au\ss enma\ss e} &
%         \multicolumn{1}{c}{Kurz-} &
%         \multicolumn{1}{c}{Ma\ss e}\\
%       \multicolumn{1}{c}{zeichen}&
%         \multicolumn{1}{c}{mm $\pm$ 1{,}5}&
%         \multicolumn{1}{c}{zeichen}&
%         \multicolumn{1}{c}{mm}\\
%     \hline
%       C6    & 114 $\times$ 162 & A6   & 105 $\times$ 148 \\
%       DL    & 110 $\times$ 220 & ---  & 105 $\times$ 210 \\
%       C6/C5 & 114 $\times$ 229 & ---  & 105 $\times$ 210 \\
%     \hline
%   \end{tabular}
%
%   \medskip
%   Das Einlagenformat 105 mm $\times$ 210 mm ergibt sich
%   durch Faltung nach DIN~676.
%
% \begin{macro}{\@labelstyle}
%    Labelstyle holds the current value.
%    \begin{macrocode}
\def\labelstyle#1{\def\@labelstyle{#1}}
\labelstyle{plain}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\if@kadb@tracelabels}
%    \begin{macrocode}
\newif\if@kadb@tracelabels
\@kadb@tracelabelsfalse
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\label@plain}
%    \begin{macrocode}
\long\def\label@plain#1#2{\setbox0\vbox{\hsize\dlabelwidth
 \strut\ignorespaces #2}%{}%
 %\vbox to 50.8truemm{\vss \box0 \vss}%
 \vbox to\dlabelheight{%
   \if@kadb@tracelabels
     \hrule
   \fi
   \vss
   \hbox to \dlabelwidth{%
     \hss
     \if@kadb@tracelabels
       \vrule
     \fi
     \vbox to\dlabelheight{\vss \box0 \vss}%
     \if@kadb@tracelabels
       \vrule
     \fi
     \hss
   }%
   \vss
   \if@kadb@tracelabels
     \hrule
   \fi
 }%
 \advance\labelcount by 1\nointerlineskip
 \ifnum\labelcount<\clabelnumber
 \else
   \vfill\newpage
   \labelcount=0
 \fi}
%    \end{macrocode}
% \end{macro}
%
%  \begin{macro}{\label@C6}
%  \begin{macro}{\label@DL}
%  \begin{macro}{\label@C6/C5}
%  \begin{macro}{\label@deskjet}
%    \begin{macrocode}
\long\def\label@deskjet#1#2{\setbox0\vbox{\parbox[b]{3.6in}{
    \vbox to 0pt{\vss%
      \ifx\@empty\@@windowrules
        \hbox to 0pt{\hss}%
      \else
        \hbox to 0pt{\hspace*{-4truemm}%
                     \vbox{\hrule width 85truemm}\hss}%
      \fi
      \vss}\nointerlineskip
%
    \vbox to 7.5truemm{
      \vskip 2.5truemm
      \vss
      \hbox to 0pt{\hspace*{-4truemm}\vbox{%
        \hbox to 85truemm{\hfill{\ka@db@fontsize{8}{9pt}
                                 \ka@db@selectfont #1}\hfill}
        \hrule width 85truemm}\hss}%
        \vss}\nointerlineskip
%
    \vbox to 40truemm{%
      \vss
      \hbox to 0pt{\hskip0pt minus 4truemm%
        \vbox{\raggedright #2%
          \if@toadrcenter
           \relax\else\vskip 2.5truemm minus 2.5truemm
           \fi}%
        \hss}
      \if@toadrcenter
        \vss
      \fi
    }\nointerlineskip
    \vskip 2.5truemm
%
    \vbox to 0pt{\vss%
      \ifx\@empty\@@windowrules
        \hbox to 0pt{\hss}%
      \else
        \hbox to 0pt{\hspace*{-4truemm}%
                     \vbox{\hrule width 85truemm}\hss}%
      \fi
      \vss}\nointerlineskip
    }}%
  \vbox to 0pt{\vss}%
  \vskip 18.0truemm
  \vbox to 50.8truemm{\vss \box0 \vss}%
  \ifnum\labelcount=4 \labelcount=0
    \else \advance\labelcount by 1\nointerlineskip
    \fi
  \vfill
  \newpage
}
\expandafter\let\csname label@C6\endcsname    =\label@deskjet
\expandafter\let\csname label@DL\endcsname    =\label@deskjet
\expandafter\let\csname label@C6/C5\endcsname =\label@deskjet
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\mlabel}
%    |\mlabel| typesets a single label.
%    \begin{macrocode}
\long\def\mlabel#1#2{\@nameuse{label@\@labelstyle}{#1}{#2}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\lstyle@plain}
%    \begin{macrocode}
\def\lstyle@plain{
  \topmargin-25.4truemm%
  \advance\topmargin\dlabeltopmargin
  \headsep\z@
  \headheight\z@
  \topskip\z@
  \oddsidemargin -12.9truemm
  \evensidemargin -12.9truemm
  \textheight=\clabelnumber\dlabelheight
  \advance\textheight by .0001truemm
  \@colht\textheight \@colroom\textheight \vsize\textheight
  \columnsep 25mm
  \textwidth2\dlabelwidth
  \advance\textwidth by\columnsep
  \ka@db@fontsize{12}{14.4pt}\ka@db@selectfont
  \boxmaxdepth\z@
  \parindent\z@
  \parskip\z@skip
  \twocolumn\relax
  \ifnum\cspare>\z@
    \ifnum\cspare<\clabelnumber\else
      \mbox{}%
      \newpage
      \advance\cspare -\clabelnumber
    \fi
    \advance\labelcount by\cspare
    \nointerlineskip
    \vbox to \cspare\dlabelheight{\vfill}%
%    \vbox{\rule{4pt}{\cspare\dlabelheight}}%
    \nointerlineskip
    \nobreak
  \else
    \nointerlineskip
  \fi
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\lstyle@deskjet}
%    \begin{macrocode}
\def\lstyle@deskjet{
  \textheight 25.4truecm
  \advance\textheight by .0001truemm
%  \@colht\textheight \@colroom\textheight \vsize\textheight
  \textwidth 193.3truemm
  \columnsep 25pt
%  \ka@db@fontsize{12}{14.4pt}\ka@db@selectfont
%  \boxmaxdepth=0pt
%  \twocolumn
 \relax
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\startlabels}
%    \begin{macrocode}
\def\startlabels{%
  \nointerlineskip
  \labelcount=0
  \pagestyle{empty}
  \let\@texttop=\relax
% \topmargin -17.6truemm
% \headsep 0pt
% \oddsidemargin -12.3truemm
% \evensidemargin -12.3truemm
% \textheight 25.4truecm
% \advance\textheight by .0001truemm
% \@colht\textheight \@colroom\textheight \vsize\textheight
% \textwidth 193.3truemm
% \columnsep 25pt
% \ka@db@fontsize{12}{14.4pt}\ka@db@selectfont
% \boxmaxdepth=0pt
% \twocolumn\relax
  \@nameuse{lstyle@\@labelstyle}
}
%    \end{macrocode}
% \end{macro}
%
% \subsection{Processing of a single letter}
%
%  \begin{macro}{lt@state}
%  The counter |c@lt@state| holds values from 0 to 3. These
%  values indicate different states inside the letter.
%
%  \smallskip
%  \begin{tabular}{cl}
%    0  & We are outside the letter environment.\\
%    1  & We are between \verb.\begin{letter}. and \verb.\opening.\\
%    2  & We are between \verb.\opening. and \verb.\closing.\\
%    3  & We are between \verb.\closing. and \verb.\end{letter}.\\
%  \end{tabular}
%  \smallskip
%
%  This counter should replace the old boolean flag |\ifka@db@inletter|.
%  We further use the different states to change the behavior of some
%  API macros. This is necessary because the {\tt old dinbrief\/}
%  requests to have \cmd\Anlagen\ and \cmd\Verteiler\ beeing in front of
%  \cmd\closing. And our implementation wants to have \cmd\encl\
%  and \cmd\cc\ after the \cmd\closing{}-command.
%
%    \begin{macrocode}
\newcounter{lt@state}%
\setcounter{lt@state}{0}%
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{letter}
%    The counter |letter| counts the number of letters.
%    \begin{macrocode}
\newcounter{letter}
%    \end{macrocode}
%  \end{macro}
%
% \begin{macro}{\letter}
%    \begin{macrocode}
\long\def\letter#1{%
%    \end{macrocode}
% \changes{1.22.0}{1995/01/19}{(RG) State counter added to \cmd\letter.
%                              Check for nested letter envs changed.}
% \changes{1.25.0}{1995/01/21}{(RG) \cmd\ka@db@atletter-hook added and
%                              use of \cs{if@ka@dbinletter} deleted.}
% \changes{1.49.0}{1995/06/29}{(RG) \cmd\vspace\ is set to \cmd\relax\
%                              while splitting the receivers address.
%                              This allows using \cmd\vspace, \cmd\medskip
%                              and so on.}
%    \begin{macrocode}
  \ifnum\c@lt@state>0
    \ka@db@error{%
      Command \string\begin{letter} inside the
      \string\begin{letter}-environment found.
    }
  \fi
  \setcounter{lt@state}{1}%
  % \typeout{\string\ka@db@atletter\space\ka@db@atletter}%
  \ka@db@atletter
  \clearpage
  \thispagestyle{empty}
  \cleardoublepage
  \refstepcounter{letter}%
  \c@page\@ne
  \global\ka@db@lastpagefalse
  \interlinepenalty=200
  % \@processto{#1}%
  % \message{Starting \string\@splitaddress}%
  \bgroup
    \def\protect{\noexpand\protect\noexpand}%
    \let\\=\relax
    \let\vspace=\relax
    \@splitaddress{#1}
  \egroup
  % \message{Ending \string\@splitaddress}%
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\endletter}
%    \begin{macrocode}
\def\endletter{%
%    \end{macrocode}
% \changes{1.22.0}{1995/01/19}{(RG) State counter added to \cmd\endletter}
%    \begin{macrocode}
  \setcounter{lt@state}{0}%
%    \end{macrocode}
% \changes{0.0.0}{1994/02/09}{(KDB) Switch for last page added}
%    \begin{macrocode}
  \ka@db@lastpagetrue
%    \end{macrocode}
% \cmd\stopletter\ is a hook to insert commands in the \cmd\endletter.
%    \begin{macrocode}
  \stopletter
  \@@par
  \pagebreak
  \@@par
  \gdef\@yourmail{}
  \gdef\@mymail{}
  \global\@reflinefalse
  \if@filesw
    \ifnum\c@labelgen>1
      \begingroup
        \def\protect{\string}
        \let\\=\relax
        \def\protect##1{\string##1\space}
        \let\vspace=\relax
        \let\rule=\relax
        %\immediate\write\@auxout{\string\mlabel{\@backaddress}{\toname
        %\\\toaddress}}
        %\immediate\write\@auxout{%
        %  \string\mlabel{\@backaddress}{\@addresslist}}%
        %\immediate\write\@auxout{\string\mlabel{\@backaddress}{%
        %  \ka@db@ifemptyvarlocal{postremark}{}{%
        %    \ka@db@usevarlocal{postremark}\\[\string\medskipamount]%
        %  }%
        %  \@addresslist
        %}}%
        \ka@db@ifemptyvarlocal{postremark}{% then
          \immediate\write\@mainlbl{\string\mlabel{\@backaddress}{%
          \@addresslist}}%
        }{% else
          \immediate\write\@mainlbl{\string\mlabel{\@backaddress}{%
          \pka@db@usevarlocal{postremark}\\[\string\medskipamount]%
          \@addresslist}}%
        }% endif
      \endgroup
    \fi
    %\ifnum\c@labelgen=1
    %  \onlabels
    %\fi
  \fi
  \ka@db@atendletter
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@processto}
%    \begin{macrocode}
\long\def\@processto#1{%
  \@xproc #1\\@@@%
  \ifx\toaddress\@empty
  \else
    \@yproc #1@@@%
  \fi}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@xproc}
%    \begin{macrocode}
\long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@yproc}
%    \begin{macrocode}
\long\def\@yproc #1\\#2@@@{\def\toaddress{#2}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\stopbreaks}
%    \begin{macrocode}
\def\stopbreaks{\interlinepenalty \@M
 \def\par{\@@par\nobreak}\let\\=\@nobreakcr
 \let\vspace\@nobreakvspace}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@nobreakvspace}
%    \begin{macrocode}
\def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@nobreakvspacex}
%    \begin{macrocode}
\def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else
 \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@nobreakcr}
%    \begin{macrocode}
\def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\startbreaks}
%    \begin{macrocode}
\def\startbreaks{\let\\=\@normalcr
 \interlinepenalty 200\def\par{\@@par\penalty 200}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\labelcount}
%    \begin{macrocode}
\newcount\labelcount
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\if@refline}
% \begin{macro}{\if@norefline}
%  |\if@refline| is true if a referline according to the rules of
%  DIN 676 and Draft DIN 676 is typeset. If the user wishes no referline
%  at all, to print for example place and date on the top of the letter,
%  you can set |\if@norefline| to true.
%    \begin{macrocode}
\newif\if@refline
\@reflinefalse
\newif\if@norefline
\@noreflinefalse
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\if@toadrcenter}
%    \begin{macrocode}
\newif\if@toadrcenter
\@toadrcenterfalse
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\if@letterform}
% \begin{macro}{\letterform}
% \begin{macro}{\noletterform}
%    \begin{macrocode}
\newif\if@letterform
\@letterformfalse
\def\letterform{\@letterformtrue}
\def\noletterform{\@letterformfalse}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\centeraddress}
%    \begin{macrocode}
\def\centeraddress{\@toadrcentertrue}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\normaladdress}
%    \begin{macrocode}
\def\normaladdress{\@toadrcenterfalse}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\signature}
%    \begin{macrocode}
%\def\signature#1{\def\@fromsig{#1}}
\def\signature#1{%
  \ka@db@assignvar{signature}{#1}%
}
\ka@db@execatletter{\ka@db@assignvarlocal{signature}{}}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@fromsig}
%    \begin{macrocode}
\def\@fromsig{}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\address}
%    \begin{macrocode}
\long\def\address#1{\def\@fromaddress{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@fromaddress}
%    \begin{macrocode}
\def\@fromaddress{}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\footer}
%    \begin{macrocode}
\long\def\footer#1{\def\@footer{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@footer}
%    \begin{macrocode}
\def\@footer{}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\returnaddress}
%    \begin{macrocode}
\def\returnaddress{}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\place}
%    \begin{macrocode}
\def\place#1{\gdef\@place{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@place}
%    \begin{macrocode}
\def\@place{}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\phone}
% \begin{macro}{\@prephone}
% \begin{macro}{\@phone}
% \begin{macro}{\@telephonenum}
%    \begin{macrocode}
\def\phone#1#2{%
  \gdef\@prephone{#1}%
  \gdef\@phone{#2}%
  \gdef\@telephonenum{#1#2}}
\def\@prephone{}
\def\@phone{}
\def\@telephonenum{}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\phonemsg}
%    \begin{macrocode}
\def\phonemsg{Telefon}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\date}
%    \begin{macrocode}
\def\date#1{\gdef\@date{#1}\gdef\@ntoday{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@date}
%    \begin{macrocode}
\def\@date{\today}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\sign}
%    \begin{macrocode}
\def\sign#1{\gdef\@mymail{#1}\@reflinetrue}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@mymail}
%    \begin{macrocode}
\def\@mymail{}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\signmsg}
% \begin{macro}{\signmsgold}
% \begin{macro}{\signmsgnew}
%    \begin{macrocode}
\def\signmsgold{Unsere Zeichen}
\def\signmsgnew{Unsere Zeichen, unsere Nachricht vom}
\let\signmsg\signmsgold
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\datemsg}
%    \begin{macrocode}
\def\datemsg{Datum}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\yourmail}
%    \begin{macrocode}
\def\yourmail#1{\gdef\@yourmail{#1}\global\@reflinetrue}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@yourmail}
%    \begin{macrocode}
\def\@yourmail{}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\yourmailmsg}
%    \begin{macrocode}
\def\yourmailmsg{Ihre Zeichen, Ihre Nachricht vom}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\writer}
%   This macro takes as argument the name of the writer (Sachbearbeiter)
%   and stores it in the var {\sf writer\/}. It also toggles the the
%   |\@reflinetrue|-switch to get an referline and further
%   enables the layout of the new DIN draft standard 676 from May 1991.
%    \begin{macrocode}
\def\writer#1{%
  \ka@db@assignvar{writer}{#1}%
  \@reflinetrue
  \enabledraftstandard
}
\ka@db@execatletter{\ka@db@assignvarlocal{writer}{}}%
\ka@db@assignvarglobal{writer}{}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\writermsg}
%    \begin{macrocode}
\def\writermsg{,\ Bearbeiter}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@concern}
%    \begin{macrocode}
\def\@concern{}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\bottomtext}
% Defines the text which is printed on the bottom of the first page.
% This is used to include special informations such as the
% number of the giroconto, or the name of the chairman of a corporation.
%
% \changes{0.0.0}{1994/02/08}{(KDB) Defining macro \cmd\bottomtext\ putting
%                             the specified text into box \cmd\@@bottomtext\
%                             to get the height of the footer and store
%                             it in \cmd\@@bottomht}
%    \begin{macrocode}
\newbox\@@bottomtext
\setbox\@@bottomtext=\vbox to 0pt{}
\def\ka@db@bottomtextmsg{}
\long\def\ka@db@praebottomtext#1{%
  \gdef\ka@db@bottomtextmsg{#1}%
}
\long\def\ka@db@mainbottomtext#1{%
  \setbox\@@bottomtext=\hbox to 0pt{\hskip0pt minus 4truemm%
       \vbox{\raggedright #1}%
       \hss}%
}
\long\def\bottomtext#1{%
  \ifka@db@ltxtwoe \relax \else
      \@@warning{\string\bottomtext \space is reserving space for
                 typesetting its argument only in case of LaTeX 2e.
                 With other LaTeX formats you will have to place a
                 \string\clearpage-command at the appropriate position}%
  \fi
  \ka@db@dobottomtext{#1}%
  % \gdef\ka@db@bottomtextmsg{#1}%
  % \setbox\@@bottomtext=\hbox to 0pt{\hskip0pt minus 4truemm%
  %      \vbox{\raggedright #1}%
  %      \hss}%
  }
\long\def\ka@db@dobottomtext#1{\ka@db@praebottomtext{#1}}


% \long\def\bottomtext#1{%
%   \ifka@db@ltxtwoe \relax \else
%      \@@warning{\string\bottomtext \space is reserving space for
%                 typesetting its argument only in case of LaTeX 2e.
%                 With other LaTeX formats you will have to place a
%                 \string\clearpage-command at the appropriate position}%
%  \fi
%  \setbox\@@bottomtext=\hbox to 0pt{\hskip0pt minus 4truemm%
%       \vbox{\raggedright #1}%
%       \hss}%
% %  \@@bottomht \ht\@@bottomtext}
%  }
%    \end{macrocode}
%    \begin{macrocode}
% \long\def\bottomtext#1{\def\@@bottomtext{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@bottomtext}
%    \begin{macrocode}
% \def\@@bottomtext{}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\document}
%    \begin{macrocode}
\def\document{%
  \endgroup
%    \end{macrocode}
%    If some options on |\documentclass| haven't been used by any
%    package we will now give a warning since this is most certainly a
%    misspelling.
%    \begin{macrocode}
  \ifka@db@ltxtwoe
    \ifx\@unusedoptionlist\@empty\else
      \@latex@warning@no@line{Unused global option(s):^^J%
              \@spaces[\@unusedoptionlist]}%
    \fi
  \fi
  \@colht\textheight
  \@colroom\textheight
  \vsize\textheight
  \columnwidth\textwidth
  \@clubpenalty\clubpenalty
  \if@twocolumn
    \advance\columnwidth -\columnsep
    \divide\columnwidth\tw@
    \hsize\columnwidth
    \@firstcolumntrue
  \fi
  \hsize\columnwidth
  \linewidth\hsize
  \begingroup
    \@floatplacement
    \@dblfloatplacement
    \makeatletter
    \ifka@db@ltxtwoe
      \let\@writefile\@gobbletwo
    \fi
    \@input{\jobname@aux}%
  \endgroup
  \if@filesw
    \ifnum\c@labelgen>0
      \immediate\openout\@mainlbl=\jobname@lbl
      \immediate\write\@mainlbl{\string\relax}%
      \immediate\write\@mainlbl{\string\startlabels\string\@startlabels}%
    \fi
    \immediate\openout\@mainaux=\jobname@aux
    \immediate\write\@mainaux{\string\relax}%
  \fi
  \ifka@db@ltxtwoe
    \process@table
    \let\glb@currsize\@empty  %% Force math initialisation.
  \fi
  \@normalsize
  \everypar{}%
  \ifka@db@ltxtwoe
    \@noskipsecfalse
%    \end{macrocode}
%    |\G@refundefinedfalse| ist not longer needed. D.\ Carlile send us
%    an E-Mail (95/12/12) to avoid conflicts with the December 1995
%    release of \LaTeXe.
%    \begin{macrocode}
  \fi
%    \end{macrocode}
%    Just before disabling the preamble commands we execute the begin
%    document hook which contains any code contributed by
%    |\AtBeginDocument|. Also disable the gathering of the file list,
%    if no |\listfiles| has been issued. Since a value of exactly 0pt
%    for |\topskip| causes |\twocolumn[]| to misbehave, we add this
%    check, hoping that it will not cause any problems elsewhere.
%
%    Most of the following assignments will be done globally in case
%    the user adds something like |\begin{multicols}| to the document
%    hook, ie starts a group in |\begin{document}|.
%    \begin{macrocode}
  \ifka@db@ltxtwoe
    \@begindocumenthook
    \ifdim\topskip<1sp
      \topskip 1sp
      \relax
    \fi
    \let\@begindocumenthook\@undefined
    \ifx\@listfiles\@undefined
      \let\@filelist\relax
      \let\@addtofilelist\@gobble
    \fi
  \fi
%    \end{macrocode}
%    At the very end we disable all preamble commands. This has to
%    happen after the begin document hooks was executed so that this
%    hook can still use such commands.
%    |\AtBeginDocument|.
%
%    \begin{macrocode}
  \def\do##1{\let ##1\@notprerr}%
  \@preamblecmds
%    \end{macrocode}
%    The next line is a pure safty measure in case a do list is
%    ever expanded at the wrong place. In addition it will save
%    a few tokens to get rid of the above definition.
%    \begin{macrocode}
  \global\let\do\noexpand
%    \end{macrocode}
%
%    \begin{macrocode}
  % \ka@db@assbottomtext{\ka@db@bottomtextmsg}%
  \long\def\ka@db@dobottomtext##1{\ka@db@mainbottomtext{##1}}
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\enddocument}
%    \begin{macrocode}
\def\enddocument{%
  \@checkend{document}
  \newpage
  \begingroup
    \if@filesw
      \ifnum\c@labelgen>0
        \immediate\closeout\@mainlbl
        \makeatletter
        \input \jobname@lbl\relax
        \clearpage
      \fi
      \immediate\closeout\@mainaux
    \fi
  \endgroup
  \deadcycles\z@
  \@@end}
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{Controlling the generation of labels}
%  \cmd\makelabels\ is a preamble command to enable the generation
%  of labels. To control the generation of labels for single
%  letters, we provide three other commands. This commands
%  work only if \cmd\makelabels\ is given in the preamble.
%
%  The other three commands \cmd\nolabels, \cmd\offlabels\ and
%  \cmd\onlabels, which only work if \cmd\makelabels\ had
%  been given in the preamle, control the generation of
%  single or in case of \cmd\offlabels\ the remaining
%  label(s). \cmd\nolabels\ avoids the label for the current
%  letter. Further if the generation of labels was permanently
%  disabled with \cmd\offlabels\ this also switches the generation
%  of labels from the next letter on.
%  \cmd\offlabels\ stops the generation of labels.
%  \cmd\onlabels\ switch the generation of label on again.
%
%  The counter \cmd\c@labelgen\ indicates the current state
%  of the generation of labels:
%
%    \begin{tabular}{cp{0.75\textwidth}}
%      0 & generation of labels is switched off\\
%      1 & generation of current label is beeing temporary switched off\\
%      2 & generation of labels is in force\\
%    \end{tabular}
%
% \begin{macro}{\makelabels}
%    \cmd\makelabels\ is a command to enable the generation of
%    labels.
%    \begin{macrocode}
\def\makelabels{%
  % \@fileswtrue
  \c@labelgen=2
}
%    \end{macrocode}
% \end{macro}
%
%  \begin{macro}{\c@labelgen}
%    \begin{macrocode}
\newcount\c@labelgen
\c@labelgen=0
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ka@db@asslabelgen}
%    \begin{macrocode}
\def\ka@db@asslabelgen#1#2#3{%
  \if@filesw
    #3\c@labelgen=#1\relax
  \else
    %\@warning{\string\makelabels\space not given. %
    %          \string#2\space has no effect}%
    \ClassWarning{dinbrief}{%
      \string\makelabels\space not given. %
      \string#2\space has no effect}%
  \fi
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\nolabels}
%    \begin{macrocode}
\def\nolabels{%
  \ka@db@asslabelgen{1}{\nolabels}{\relax}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\offlabels}
%    \begin{macrocode}
\def\offlabels{%
  \ka@db@asslabelgen{0}{\offlabels}{\global}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\onlabels}
%    \begin{macrocode}
\def\onlabels{%
  \ka@db@asslabelgen{2}{\onlabels}{\global}%
}
%    \end{macrocode}
%  \end{macro}
%
% \begin{macro}{\@startlabels}
%    \begin{macrocode}
\def\@startlabels{}
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode}
\let\@texttop=\relax
%    \end{macrocode}
%
% \changes{}{1994/02/09}{(KDB)}
%  \begin{macro}{\ifka@db@lastpage}
%  The following switch is used by pagestyle |contheadings| to detect the
%  last page.
%    \begin{macrocode}
\newif\ifka@db@lastpage
\ka@db@lastpagefalse
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\ps@headings}
%    \begin{macrocode}
\def\ps@headings{
  \headheight=\ltf@headheight
  \headsep=\ltf@headsep
  \ifka@db@ltxtwoe
      \relax
    \else
      \footheight 0truemm
    \fi
  \footskip 0truemm
  \def\@oddhead{%
    \sl \headtoname\
    \ignorespaces\toname \hfil \@date
    \hfil \pagename{} \thepage}
  \def\@oddfoot{}
  \def\@evenhead{%
    \sl \headtoname\
    \ignorespaces\toname \hfil \@date
    \hfil \pagename{} \thepage}
  \def\@evenfoot{}
%<debug>  \message{executing pagestyle headings}%
  }
%    \end{macrocode}
% \end{macro}
%
%  \begin{macro}{\ps@empty}
%    \begin{macrocode}
\def\ps@empty{%
  \headheight=\lts@headheight
  \headsep=\lts@headsep
  \ifka@db@ltxtwoe
      \relax
    \else
      \footheight 0truemm
    \fi
  \footskip 0truemm
  \def\@oddhead{}
  \def\@oddfoot{}
  \def\@evenhead{}
  \def\@evenfoot{}
%<debug>  \message{executing pagestyle empty}%
  }
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ps@first@page}
%    \begin{macrocode}
\def\ps@first@page{%
  \headheight=\lts@headheight
  \headsep=\lts@headsep
  \ifka@db@ltxtwoe
      \relax
    \else
      \footheight 4.2truemm
    \fi
  \footskip 8.8truemm
%    \end{macrocode}
%  We do not redefine the macros |\@oddfoot| and |\@evenfoot|.
%  So the first page gets the same layout in the foot as the
%  other pages.
%
%  We can talk about use of such a half pagestyle. So we provide
%  here a hook |psfirstpagehook| and the user can complete this
%  pagestyle (if he wishes) simply by doing:
%
%  \begin{quote}
%    |\def\psfirstpagehook{%|\\
%    |  \def\@oddfoot{}|\\
%    |  \def\@evenfoot{}}|
%  \end{quote}
%
%    \begin{macrocode}
  \def\@oddhead{}
  \def\@evenhead{}
  \expandafter\ifx\csname psfirstpagehook\endcsname\relax
    \else
      \psfirstpagehook
    \fi
%<debug>  \message{executing pagestyle firstpage}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\psfirstpagehook}
%    \begin{macrocode}
\def\psfirstpagehook{%
  \def\@oddfoot{}
  \def\@evenfoot{}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ps@plain}
%    \begin{macrocode}
\def\ps@plain{%
  \headheight=\lts@headheight
  \headsep=\lts@headsep
  \ifka@db@ltxtwoe
      \relax
    \else
      \footheight 4.2truemm
    \fi
  \footskip 8.8truemm
  \def\@oddhead{}
  \def\@oddfoot{\hfil{\ka@db@fontshape{n}%
                      \ka@db@fontseries{m}\ka@db@selectfont\thepage}
                      \hfil}%
  \def\@evenhead{}
  \def\@evenfoot{}
%<debug>  \message{executing pagestyle plain}%
  }
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{ps@myheadings}
%    \begin{macrocode}
\def\ps@myheadings{%\let\@mkboth\@gobbletwo
  \headheight=\ltf@headheight
  \headsep=\ltf@headsep
  \ifka@db@ltxtwoe
      \relax
    \else
      \footheight 0truemm
    \fi
  \footskip 0truemm
  \def\@oddhead{{\sl \rightmark}}%
  \def\@oddfoot{}
  \def\@evenhead{{\sl \leftmark}}%
  \def\@evenfoot{}
%<debug>  \message{executing pagestyle myheadings}%
  }
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{ps@contheadings}
%  \changes{}{1994/02/09}{(KDB)}
%  Like pagestyle 'headings' with pagenumber in top line and
%  number of following page in bottom line.
%
%  \smallskip
%  \changes{}{1994/02/10}{(KDB)}
%  Problem to be solved before this pagestyle can be introduced:
%    There must be found a method to detect the last page is typesetted
%    (endletter is not sufficient, since there may be another pagebreak when
%    \TeX\ has seen the command - due to an overfull page)
%    \begin{macrocode}
\def\ps@contheadings{%\let\@mkboth\@gobbletwo
  \headheight=\ltf@headheight
  \headsep=\ltf@headsep
  \ifka@db@ltxtwoe
      \relax
    \else
      \footheight 0truemm
    \fi
  \footskip 8.8truemm
  \def\@oddhead{{\sl \headtoname\ \ignorespaces\toname \hfil \@date
                \hfil\pagename{} \thepage}}%
  \def\@oddfoot{\ifka@db@lastpage
                  \relax
%<debug>                  \message{ignoring oddfoot in contheadings}%
                \else
                  \addtocounter{page}{1}%
                  \hfil--- \thepage{} ---\hfil%
                  \addtocounter{page}{-1}%
%<debug>                  \message{executing oddfoot in contheadings}%
                \fi}
  \def\@evenhead{{\sl \headtoname\ \ignorespaces\toname \hfil \@date
                \hfil\pagename{} \thepage}}%
  \def\@evenfoot{\ifka@db@lastpage
                   \relax
%<debug>                   \message{ignoring evenfoot in contheadings}%
                 \else
                   \addtocounter{page}{1}%
                   ~\hfil--- \thepage{} ---~%
                   \addtocounter{page}{-1}%
%<debug>                   \message{executing evenfoot in contheadings}%
                 \fi}
%<debug>  \message{executing pagestyle contheadings}%
                }
%    \end{macrocode}
%  \end{macro}
%
% \subsection{Fonts --- paragraphing}
% These parameters control \TeX's behaviour when two lines tend
% to come too close together.
%
%    \begin{macrocode}
\lineskip 1pt
\normallineskip 1pt
%    \end{macrocode}
% \begin{macro}{\baselinestretch}
% This is used as a multiplier for |\baselineskip|. The default is
% {\em not\/} to stretch the baselines.
%    \begin{macrocode}
\def\baselinestretch{1}
%    \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.
%    \begin{macrocode}
\parskip .7em
\parindent 0pt
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%    \begin{macrocode}
\topsep .4em
\partopsep 0pt
\itemsep .4em
%    \end{macrocode}
%
%  \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{macrocode}
\@beginparpenalty -\@lowpenalty
\@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty
%    \end{macrocode}
%
% \subsection{Lists}
%
% \subsubsection{General list parameters}
%
% The following commands are used to set default values for the list
% environment's parameters. See the \LaTeX{} manual for an explanation
% of the meanings of these 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}
\leftmargini 2.5em
\leftmarginii 2.2em
\leftmarginiii 1.87em
\leftmarginiv 1.7em
\leftmarginv 1em
\leftmarginvi 1em
%    \end{macrocode}
%    Here we set the top level leftmargin.
%    \begin{macrocode}
\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}
\labelwidth\leftmargini
\advance\labelwidth-\labelsep
\labelsep 5pt
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
%    \begin{macrocode}
\parsep 0pt
%    \end{macrocode}
%
% \begin{macro}{\@listi}
%    \begin{macrocode}
\let\@listi\relax
%    \end{macrocode}
% \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}
\def\@listiii{%
  \leftmargin\leftmarginiii
  \labelwidth\leftmarginiii
  \advance\labelwidth-\labelsep
  \topsep .2em
  \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}
%    \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}
\def\theenumi{\arabic{enumi}}
\def\theenumii{\alph{enumii}}
\def\theenumiii{\roman{enumiii}}
\def\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 label for each item is generated by the commands \hfil\break
%    |\labelenumi| ... |\labelenumiv|.
%    \begin{macrocode}
\def\labelenumi{\arabic{enumi}.}
\def\labelenumii{(\alph{enumii})}
\def\labelenumiii{\roman{enumiii}.}
\def\labelenumiv{\Alph{enumiv}.}
%    \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}
\def\p@enumii{\theenumi}
\def\p@enumiii{\theenumi(\theenumii)}
\def\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 four commands: |\labelitemi|,
% |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define
% the labels of thevarious itemization levels: the symbols used are
% bullet, bold en-dash, asterisk and centred dot.
%
%    \begin{macrocode}
\def\labelitemi{$\bullet$}
\def\labelitemii{\bf --}
\def\labelitemiii{$\ast$}
\def\labelitemiv{$\cdot$}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Description}
%
% \begin{macro}{\description}
% \begin{macro}{\descriptionlabel}
% \begin{macro}{\enddescription}
%    The description environment is defined here -- while the itemize
%    and enumerate environments are defined in \file{latex.tex}.
%
%    To change the formatting of the label, you must redefine
%    |\descriptionlabel|.
%
%    \begin{macrocode}
\def\descriptionlabel#1{%
  \hspace\labelsep \bf #1}
\def\description{%
  \list{}{\labelwidth\z@ \itemindent-\leftmargin
          \let\makelabel\descriptionlabel}}
\let\enddescription\endlist
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Verse}
%
% \begin{macro}{\verse}
% \begin{macro}{\endverse}
%   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}
\def\verse{\let\\=\@centercr
  \list{}{\itemsep\z@
          \itemindent -15pt
          \listparindent \itemindent
          \rightmargin\leftmargin
          \advance\leftmargin 15pt}\item[]}
\let\endverse\endlist
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsubsection{Quotation}
%
% \begin{macro}{\quotation}
% \begin{macro}{\endquotation}
%   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}
\def\quotation{%
  \list{}{\listparindent 1.5em
          \itemindent\listparindent
          \rightmargin\leftmargin}%
  \item[]}
\let\endquotation=\endlist
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsubsection{Quote}
%
% \begin{macro}{\quote}
% \begin{macro}{\endquote}
%   The quote environment is like the quotation environment except
%   that paragraphs are not indented.
%
%    \begin{macrocode}
\def\quote{%
  \list{}{\rightmargin\leftmargin}%
  \item[]}
\let\endquote=\endlist
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \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}
\arraycolsep 5pt
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\tabcolsep}
%    The columns in an tabular environment are separated by
%    2|\tabcolsep|.
%    \begin{macrocode}
\tabcolsep 6pt
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\arrayrulewidth}
%    The width of rules in the array and tabular environments is given
%    by \hfil\break
%    |\arrayrulewidth|.
%    \begin{macrocode}
\arrayrulewidth .4pt
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\doublerulesep}
%    The space between adjacent rules in the array and tabular
%    environments is given by |\doublerulesep|.
%    \begin{macrocode}
\doublerulesep 2pt
%    \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}
\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
%    the 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{macrocode}
\fboxsep = 3pt
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\fboxrule}
%    The width of the rules in the box made by |\fbox| and |\framebox|.
%    \begin{macrocode}
\fboxsep = 3pt
\fboxrule = .4pt
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{Equation and eqnarray}
%
% \begin{macro}{\theequation}
%    The equation counter will be reset at beginning of a new letter.
%    The equation counter will be typeset using arabic numbers.
%
%    \begin{macrocode}
\def\theequation{\arabic{equation}}
\@addtoreset{equation}{letter}
%    \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{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 heigth 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}
\def\footnoterule{%
  \kern-1\p@
  \hrule width .4\columnwidth
  \kern .6\p@}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\c@footnote}
%    The dinbrief style/class does not use this macro.
%
%    (Footnotes are numbered within chapters in the report and book
%    document styles.)
% \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 |\@thefnmark| as 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{macrocode}
%          \long\def\@makefntext#1{%
%             \@setpar{\@@par
%                      \@tempdima = \hsize
%                      \advance\@tempdima-10pt
%                      \parshape \@ne 10pt \@tempdima}%
%             \par
%             \parindent 1em\noindent
%             \hbox to \z@{\hss$\m@th^{\@thefnmark}$}#1}
%    \end{macrocode}
%    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
%    flushright against the footnote.
%
%    In this document class we use a simpler macro, in which the
%    footnote text is set like an ordinary text paragraph, with no
%    indentation except on the first line of a paragraph, and the
%    first line of the footnote. Thus, all the macro must do is set
%    |\parindent| to the appropriate value for succeeding paragraphs
%    and put the proper indentation before the mark.
%
%    \begin{macrocode}
% \long\def\@makefntext#1{%
%     \parindent 1em%
%     \noindent
%     \hbox to 1.8em{\hss$\m@th^{\@thefnmark}$}#1}
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\@makefntext}
%    \begin{macrocode}
\long\def\@makefntext#1{%
  \noindent
  \hangindent 5pt%
  \hbox  to 5pt{\hss $^{\@thefnmark}$}#1}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@makefnmark}
%    The footnote markers 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}
%    \begin{macrocode}
\c@topnumber=2
\def\topfraction{.7}
\c@bottomnumber=1
\def\bottomfraction{.3}
\c@totalnumber=3
\def\textfraction{.2}
\def\floatpagefraction{.5}
\c@dbltopnumber= 2
\def\dbltopfraction{.7}
\def\dblfloatpagefraction{.5}
%    \end{macrocode}
%
% \subsection{The current date}
%
% \begin{macro}{\today}
%    \begin{macrocode}
\def\today{\number\day.\space\ifcase\month\or
  Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or
  Juli\or August\or September\or Oktober\or November\or Dezember\fi
  \space\number\year}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@znumber}
% \begin{macro}{\ntoday}
% \begin{macro}{\@ntoday}
%    \begin{macrocode}
\newcount\yearcnt
\yearcnt=\year
\advance\yearcnt-\number1900
\def\@znumber#1{\ifnum\number#1<10 0\number#1\else\number#1\fi}
\def\ntoday{\@znumber{\number\day}.%
            \@znumber{\number\month}.%
            \@znumber{\the\yearcnt}}
\def\@ntoday{\ntoday}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
%    \begin{macrocode}
\def\up#1{\leavevmode \raise.16ex\hbox{#1}}
%    \end{macrocode}
%
% \begin{macro}{\concern}
% \begin{macro}{\subject}
% \changes{}{1994/12/14}{(RG) \cmd\newbox\cmd\@betr being moved outside of
%                        \cmd\concern}
%    \begin{macrocode}
\newbox\@betr
\long\def\concern#1{%
  \setbox\@betr=\hbox{}
  \def\@concern{\hangindent=\wd\@betr
                \hangafter=1
                \unhbox\@betr #1\par}}
\let\subject=\concern
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
%  \begin{macro}{\@fordate}
%  |\@fordate| is the length of the remaining part of the
%  referline.
%    \begin{macrocode}
\newlength{\@fordate}
\setlength{\@fordate}{\textwidth}
\addtolength{\@fordate}{-131truemm}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@answertoold}
%    The macro \cmd\@answertoold is used to typeset the referline in the
%    original DIN 676 style.
%
%    The length \cmd\@fordate\ is the width of the field for date
%    and place. This length is being determined by subtracting the
%    length of the other fields (50,8mm + 50,8mm + 25,4mm + 4mm)
%    131 mm from \cmd\textwidth. (why 4mm?)
%
%    \begin{macrocode}
\def\@answertoold{%
  \setlength{\@fordate}{\textwidth}
  \addtolength{\@fordate}{-131truemm}
  \parbox[b]{50.8truemm}{{\ka@db@fontsize{9}{11pt}\ka@db@selectfont
                          \yourmailmsg{}}%
                         \hfill\\ \@yourmail\hbox{}\hss}%
  \parbox[b]{50.8truemm}{{\ka@db@fontsize{9}{11pt}\ka@db@selectfont
                          \signmsg{}}%
                         \hfill\\ \@mymail\hbox{}\hss}%
  \parbox[b]{25.4truemm}{{\ka@db@fontsize{9}{11pt}\ka@db@selectfont
                          \phonemsg{} \@prephone{}}%
                         \hfill\\ \@phone\hbox{}\hss}%
  \parbox[b]{\@fordate}{{\ka@db@fontsize{9}{11pt}\ka@db@selectfont
    \ifx\@empty\@place
       \vphantom{K}\rule{2pt}{0pt}
     \else
       \@place{}%
     \fi
    }\hfill\\ \@ntoday}
  }
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@answertonew}
%  The draft proposal of the new DIN 676 has an additional
%  field for the name of a person who has written the letter.
%
%  The new DIN 676 (draft) has a big disadvantage. The referline
%  is larger than the normal \cmd\textwidth. So we have to add some
%  extra space to this box. This code should be rewritten.
%  Currently, it is just a hack.
%
%    \begin{macrocode}
\def\@answertonew{%
  \hbox to \textwidth{%
    \setlength{\@fordate}{\textwidth}%
    \addtolength{\@fordate}{-156.4truemm}%
    \addtolength{\@fordate}{3cm}% This is a heavens value.
    \parbox[b]{50.8truemm}{{\ka@db@fontsize{7}{9pt}\ka@db@selectfont
                            \yourmailmsg{}}%
                           \hfill\\ \@yourmail\hbox{}\hss}%
    \parbox[b]{50.8truemm}{{\ka@db@fontsize{7}{9pt}\ka@db@selectfont
                            \signmsg{}}%
                           \hfill\\ \@mymail\hbox{}\hss}%
    \parbox[b]{50.8truemm}{{\ka@db@fontsize{7}{9pt}\ka@db@selectfont
                            \phonemsg{}%
                            \writermsg{}%
                            }%
                           \hfill\\
                           \ifx\@empty\@prephone\relax
                           \else
                             \@prephone{}
                           \fi
                           \@phone
                           \ka@db@ifemptyvar{writer}%
                             {}% true
                             {% false
                               \ifx\@empty\@phone\relax
                               \else
                                 ,\ % insert comma and blank only
                               \fi%   if both are nonempty
                               \ka@db@usevar{writer}%
                             }%
%                           \ifx\@empty\@writer\relax
%                           \else
%                             \ifx\@empty\@phone\relax
%                             \else
%                             ,\ % insert comma and blank only if both
%                             \fi% are nonempty
%                             \@writer
%                           \fi
                           \hbox{}\hss}%
    \parbox[b]{\@fordate}{{\ka@db@fontsize{7}{9pt}\ka@db@selectfont
      \datemsg
      }\hfill\\ \@ntoday}
    \hss}%
  }
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\enabledraftstandard}
%  \begin{macro}{\disabledraftstandard}
%  \begin{macro}{\@answerto}
%  \changes{0.94.1}{1994/08/14}{\cmd\enabledraftstandard and
%                               \cmd\disabledraftstandard
%                               introduced.}
%  The macros \cmd\enabledraftstandard\ and \cmd\disabledraftstandard\
%  are used to switch between the two DIN versions 676 (the old and the
%  draft one). This is simply done by letting the \cmd\@answerto pointing to
%  \cmd\@answertoold or \cmd\@answertonew.
%
%  By default, we use the old version and therefore the german standard.
%
%    \begin{macrocode}
\def\enabledraftstandard{%
  \let\signmsg=\signmsgnew
  \let\@answerto=\@answertonew
}
%
\def\disabledraftstandard{%
  \let\signmsg=\signmsgold
  \let\@answerto=\@answertoold
}
%
\disabledraftstandard
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% \subsection{Old dinbrief commands}
%
%  \begin{macro}{\Postvermerk}
%    \begin{macrocode}
\def\Postvermerk#1{%
  %\@warning{Use \string\postremark\space instead %
  %          of \string\Postvermerk}%
  \ClassWarning{dinbrief}{%
    Use \string\postremark\space instead %
    of \string\Postvermerk}%
  \postremark{#1}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\Behandlungsvermerk}
%    \begin{macrocode}
\def\Behandlungsvermerk#1{%
  %\@warning{Use \string\handling\space instead of %
  %          \string\Behandlungsvermerk}%
  \ClassWarning{dinbrief}{%
    Use \string\handling\space instead of %
    \string\Behandlungsvermerk}%
  \handling{#1}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\Datum}
%    \begin{macrocode}
\def\Datum#1{%
  \date{#1}%
}
%    \end{macrocode}
%  \end{macro}
%
%    \begin{macrocode}
\long\def\ka@db@splitondblpt#1{%
  \ka@db@splitdblptx #1::\@st@p@
  \ifx\ka@db@fromadrtwo\@empty
  \else
    \ka@db@splitdblpty #1\@st@p@
  \fi
}
\def\ka@db@fromadrone{}%
\def\ka@db@fromadrtwo{}%
\long\def\ka@db@splitdblptx #1::#2\@st@p@{%
  \def\ka@db@fromadrone{#1}%
  \def\ka@db@fromadrtwo{#2}%
}
\long\def\ka@db@splitdblpty #1::#2\@st@p@{%
  \def\ka@db@fromadrtwo{#2}%
}
%    \end{macrocode}
%
%  \begin{macro}{\stdaddress}
%    \begin{macrocode}
\long\def\stdaddress#1{%
  \ka@db@splitondblpt{#1}
  \address{%
    \vspace*{7truemm}
    \leavevmode
    \hbox to 0pt{\hbox to \textwidth{\hfil\@date}\hss}%
    \parbox[t]{\textwidth}{\ka@db@fromadrone\ka@db@fromadrtwo}%
  }%
  \@noreflinetrue
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\Absender}
%    \begin{macrocode}
\long\def\Absender#1{%
  %\@warning{Use \string\stdaddress\space instead of \string\Absender}%
  \stdaddress{#1}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\Retourlabel}
%    \begin{macrocode}
\def\Retourlabel{%
  %\@warning{\string\Retourlabel\space not yet implemented.}%
  \ClassWarning{dinbrief}{%
    \string\Retourlabel\space not yet implemented.}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\Fenster}
%    \begin{macrocode}
\def\Fenster{%
  \ClassWarning{dinbrief}{%
    \string\Fenster\space not yet implemented.}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\Retouradresse}
%    \begin{macrocode}
\def\Retouradresse#1{%
  \ClassWarning{dinbrief}{%
    Use \string\backaddress\space instead of \string\Retouradresse}%
  \backaddress{#1}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\Betreff}
%    \begin{macrocode}
\def\Betreff#1{%
  \ClassWarning{dinbrief}{%
    Use \string\subject\space instead of \string\Betreff}%
  \concern{#1}%
}
%    \end{macrocode}
%  \end{macro}
%
% \subsubsection{dinquote}
%
% \begin{macro}{\dinquote}
% \begin{macro}{\enddinquote}
%   The dinquote environment is like the quote environment except
%   that the indentation on left side is 1in and there is no
%   indentation on the right side.
%
%    \begin{macrocode}
\def\dinquote{%
  \list{}{\leftmargin=1in}%
  \item[]}
\let\enddinquote=\endlist
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
%  \begin{macro}{\Einrueckung}
%    \begin{macrocode}
\long\def\Einrueckung#1{%
  \ClassWarning{dinbrief}{%
    Use the environment dinquote in future}%
  \begin{dinquote}%
  #1
  \end{dinquote}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ifka@db@enclright}
%  |\ifka@db@enclright| is true if the enclosures and/or
%  the carbon copies have to placed on the right side.
%    \begin{macrocode}
\newif\ifka@db@enclright
\ka@db@enclrightfalse
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\enclright}
%    \begin{macrocode}
\def\enclright{%
  \ka@db@enclrighttrue
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\enclnoenclright}
%    \begin{macrocode}
\def\noenclright{%
  \ka@db@enclrightfalse
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\anlagenrechts}
%  The enclosures are placed on the right side (at degree 50) 101.6mm
%  from the left margin. They start at the same line as the closing
%  formula.
%    \begin{macrocode}
\def\anlagenrechts{%
  \ka@db@enclrighttrue
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\Anlagen}
%    \begin{macrocode}
\def\Anlagen#1{%
  %\@warning{Use \string\encl\space instead of \string\Anlagen}%
  \ClassWarning{dinbrief}{%
    Use \string\encl\space instead of \string\Anlagen}%
  \encl[]{#1}%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\Verteiler}
%    \begin{macrocode}
\def\Verteiler#1{%
  %\@warning{Use \string\cc\space instead of \string\Verteiler}%
  \ClassWarning{dinbrief}{%
    Use \string\cc\space instead of \string\Verteiler}%
  \cc[]{#1}%
}
%    \end{macrocode}
%  \end{macro}
%
% \subsection{More initializations}
%
% We initially choose the normalsize font.
% This code has to be executed following the definition of |\baselinestretch|
% if the original \LaTeX\ font selection scheme is used.
%    \begin{macrocode}
\ifka@db@nfss
  \else
    \ifka@db@nfsstwo
      \else
        \normalsize
      \fi
  \fi
%    \end{macrocode}
%
%    \begin{macrocode}
\smallskipamount=.5\parskip
\medskipamount=\parskip
\bigskipamount=2\parskip
%    \end{macrocode}
%
%    \begin{macrocode}
\pagestyle{plain}
\pagenumbering{arabic}
\onecolumn
% \@fileswfalse
\errorcontextlines=10
%    \end{macrocode}
%
%    \begin{macrocode}
%</class|style>
%    \end{macrocode}
%
% \subsection{The short class file/the short style file}
%   This file only inputs the dinbrief.sty file.
%
%    \begin{macrocode}
%<*shortclass>
\input dinbrief.sty
%</shortclass>
%    \end{macrocode}
%
%   This file only inputs the dinbrief.cls file.
%
%    \begin{macrocode}
%<*shortstyle>
\input dinbrief.cls
%</shortstyle>
%    \end{macrocode}
%
% \section{An example letter}
%
% \subsection{The letter head}
%
%    \begin{macrocode}
%<*brfkopf>
%    \end{macrocode}
%    \begin{macrocode}
%
\newlength{\UKAwd}
\newlength{\ADDRwd}
%
\font\fa=cmcsc10  scaled 1440
\font\fb=cmss12   scaled 1095
\font\fc=cmss10   scaled 1000
%
\def\briefkopf{
 \settowidth{\UKAwd}{\fa Institut f"ur Verpackungen}
 \settowidth{\ADDRwd}{\fc EARN/BITNET: yx99 at dkauni2}
 \expandafter\ifx\csname fontsize\endcsname\relax\else
   \fontsize{12}{14.4pt}\selectfont
 \fi
%
 \vspace*{7truemm}
 \raisebox{-11.3mm}{%
   \setlength{\unitlength}{1truemm}
   \begin{picture}(15,15)(0,0)
     \thicklines
     \put(7.5,7.5){\circle{15}}
     \put(7.5,7.5){\circle{10}}
     \put(7.5,7.5){\circle{ 5}}
   \end{picture}%
 }
 {\fc\hspace{.2em}}
 \parbox[t]{\UKAwd}{\centering{\fa Universit\"at Gralsruhe} \\
                    \centering{\fa Institut f"ur Verpackungen} \\[.5ex]
                    \centering{\fb Prof.\ Dr.\ Fritz Schreiber} }
 \hfill
 \parbox[t]{\ADDRwd}{\fc Im Hinterhof 2 $\cdot$ Postfach 8960 \\
                     \fc D--76821 Gralsruhe \\
                     \fc Telefon: (0127) 806-0815 \\
                     \fc Electronic Mail: \\
                     \fc EARN/BITNET: yx99 at error2 }
 }
%
\signature{Prof.\ Dr.\ Fritz Schreiber}
\place{Gralsruhe}
\address{\briefkopf}
\phone{(0127)}{806-0815}
\def\FS{Prof.\,F.\,Schreiber, Uni.\,Gralsruhe,
        Postf.\,8960, 76821\,Gralsruhe\rule[-1ex]{0pt}{0pt}}

%    \end{macrocode}
%    \begin{macrocode}
%</brfkopf>
%    \end{macrocode}
%
% \subsection{The letter}
%    \begin{macrocode}
%<*example>
%    \end{macrocode}
% This will be a letter.
%    \begin{macrocode}

\expandafter\ifx\csname documentclass\endcsname\relax
    \documentstyle[german]{dinbrief}
  \else
    \documentclass[10pt]{dinbrief}
    \usepackage{german}
  \fi

\input brfkopf

% \makelabels
% \labelstyle{deskjet}

\pagestyle{contheadings}

\begin{document}

\bottomtext{%
  \makebox[\textwidth][c]{\small\sf
   Bankverbindung $\cdot$ Kreissparkasse Gralsruhe %
   (BLZ~999~500~00) 98~765~4
  }
}

\date{9.~Juli 1999}

\setlength{\topmargin}{-15pt}
\backaddress{\FS}

\begin{letter}{Prof.\ Dr.\ Hans Forschegut\\
               Institut f"ur Abfallbeseitigung\\
               Fachhochschule Waldstadt\\
               Postfach 3322\\[\medskipamount]
               1100 Waldstadt}
\yourmail{\ }
\subject{Bitte um "Uberlassung einer Sammlung von Alka-Seltzer Flaschen}

\opening{Sehr geehrter Herr Prof.\ Forschegut,}

von Kollegen habe ich erfahren, da"s sich bei Ihnen eine gro"se
Anzahl von Alka-Seltzer Flaschen mit nur noch einer Tablette
angesammelt hat, da eine Flasche 25~Tabletten enth"alt, der
Beipackzettel aber angibt, da"s stets 2~Tabletten gleichzeitig
einzunehmen sind.

Ich forsche gerade im Bereich m"oglicher Anwendungen einzelner
Schmerztabletten. Falls Sie so freundlich w"aren, Ihre Alka-Seltzer
Sammlung f"ur unser Projekt zu stiften, w"urde ich Ihnen gerne
Vorabdrucke aller zuk"unftigen Forschungsberichte zur Verf"ugung
stellen, die wir "uber dieses kritische Problem ver"offentlichen.

\closing{Mit freundlichen Gr"u"sen}

\ps{Falls Sie es w"unschen, lasse ich "uberpr"ufen, ob Sie Ihre
    Schenkung in Verbindung mit unserer Forschung von der Steuer
    absetzen k"onnen.}
\encl{Forschungsbericht Nr.\ 6/99 des IfA}
\cc{Future Pharma\\
    Bundesministerium zur Unterst"utzung der Pharmaindustrie}

\end{letter}                                                                    

\end{document}
%    \end{macrocode}
%
%    \begin{macrocode}
%</example>
%    \end{macrocode}
%
% \section{Testing the class/style}
%
%    \begin{macrocode}
%<*brfbody>
%    \end{macrocode}
%    \begin{macrocode}
\yourmail{\ }
\subject{Bitte um "Uberlassung einer Sammlung von Alka-Seltzer Flaschen}

\opening{Sehr geehrter Herr Prof.\ Forschegut,}

von Kollegen habe ich erfahren, da"s sich bei Ihnen eine gro"se
Anzahl von Alka-Seltzer Flaschen mit nur noch einer Tablette
angesammelt hat, da eine Flasche 25~Tabletten enth"alt, der
Beipackzettel aber angibt, da"s stets 2~Tabletten gleichzeitig
einzunehmen sind.

Ich forsche gerade im Bereich m"oglicher Anwendungen einzelner
Schmerztabletten. Falls Sie so freundlich w"aren, Ihre Alka-Seltzer
Sammlung f"ur unser Projekt zu stiften, w"urde ich Ihnen gerne
Vorabdrucke aller zuk"unftigen Forschungsberichte zur Verf"ugung
stellen, die wir "uber dieses kritische Problem ver"offentlichen.

{\bf Testing \verb|itemize|}\hfil\break
\begin{itemize}
  \item Dies ist ein \verb|\item|.
        \begin{itemize}
          \item \verb|\item| in Level 2.
          \item
                \begin{itemize}
                  \item \verb|\item| in Level 3.
                \end{itemize}
        \end{itemize}
  \item Zweites \verb|\item|.
\end{itemize}

{\bf Testing \verb|enumerate|}\hfil\break
\begin{enumerate}
  \item Dies ist ein \verb|\item|.
        \begin{enumerate}
          \item \verb|\item| in Level 2.
          \item
                \begin{enumerate}
                  \item \verb|\item| in Level 3.
                \end{enumerate}
        \end{enumerate}
  \item Zweites \verb|\item|.
\end{enumerate}

{\bf Testing \verb|description|}\hfil\break
\begin{description}
  \item[First] Dies ist ein \verb|\item|.
        \begin{description}
          \item[Second] \verb|\item| in Level 2.
          \item[Third]
                \begin{description}
                  \item \verb|\item| in Level 3.
                  \item Zweites \verb|\item| in Level 3.
                \end{description}
        \end{description}
  \item[Second] Zweites \verb|\item|.
\end{description}

{\bf Testing Lists}\hfil\break
\begin{description}
  \item[First] Dies ist ein \verb|\item|.
        \begin{itemize}
          \item \verb|\item| in Level 2.
          \item
                \begin{enumerate}
                  \item \verb|\item| in Level 3.
                  \item Zweites \verb|\item| in Level 3.
                \end{enumerate}
        \end{itemize}
  \item[Second] Zweites \verb|\item|.
  \item[Third]
        \begin{enumerate}
          \item Genius \LaTeX.
          \item Why has been there so large distance between the label
                and the first number in elder versions of \LaTeX?
        \end{enumerate}
\end{description}

{\bf Testing \verb|verse|}\hfil\break
\begin{verse}
{\bf Die F"u"se im Feuer\/}

Wild zuckt der Blitz,\\
im fahlen Lichte steht ein Turn,\\
der Donner rollt,\\
ein Reiter k"ampft mit seinem Ro"s,\\
springt ab un pocht ans Tor und l"armt.\\
Sein Mantel saust im Wind,\\
und knarrent "offnet jetzt das Tor ein Edelmann.\\
\dots\\
Der Reiter tritt in einen dunklen Ahnensaal.

Von eines weiten Herdes Feuer schwach erhellt,\\
droht hier ein Hugenott im Harnisch,\\
dort ein Weib, ein stolzes Weib in braunen Ebenbild.\\
Der Reiter wirft sich in den Sessel vor dem Herd\\
und starrt in den lebendgen Brand\\
\dots \\
Die Flamme zischt, zwei F"u"se zucken in der Glut.

\dots
\end{verse}

{\bf Testing \verb|quotation|}\hfil\break
\begin{quotation}
``Ich finde'', sagte einst Winston Churchill im
Unterhaus, ``die Art von Kritik, wie ich sie am
Sonntagmorgen bei meiner Ankunft in den Zeitungen
fand, erinnert mich immer an die Geschichte von
dem Matrosen, der in ein Hafenbecken sprang ---
in Plymouth, glaube ich ---, um einen kleinen
Jungen vom Ertrinken zu retten.

Dort sprach eine Frau den Matrosen an:\\
`Sind Sie der Mann, der meinen Sohn neulich
aus dem Wasser gezogen hat?'\\
Bescheiden erwiderte der Matrose:\\
`Ja, das stimmt.'\\
`Aha', sagte die Frau: `Ich suche Sie schon
die ganze Zeit \dots\ Wo ist seine M"utze?'{}''
\end{quotation}

{\bf Testing \verb|quote|}\hfil\break
\begin{quote}
Ein {\em klassisches\/} Werk ist ein Buch,\\
das die Leute loben,\\
aber nie lesen. \hfill({\em E.\ Hemingway\/})
\end{quote}

{\bf Testing \verb|equation|}\hfil\break
\begin{equation}
  x^2 = y^2 + z^2
\end{equation}

{\bf Testing \verb|tabular|}\hfil\break

{\bf Testing \verb|tabbing|}\hfil\break

\closing{Mit freundlichen Gr"u"sen}

\ps{Falls Sie es w"unschen, lasse ich "uberpr"ufen, ob Sie Ihre
    Schenkung in Verbindung mit unserer Forschung von der Steuer
    absetzen k"onnen.}
\encl{Forschungsbericht Nr.\ 6/99 des IfA}
\cc{Future Pharma\\
    Bundesministerium zur Unterst"utzung der Pharmaindustrie}

%    \end{macrocode}
%    \begin{macrocode}
%</brfbody>
%    \end{macrocode}
%
%    \begin{macrocode}
%<*10pt>
%    \end{macrocode}
%    \begin{macrocode}
\expandafter\ifx\csname documentclass\endcsname\relax
    \documentstyle[german]{dinbrief}
    \typeout{Using the command \string\documentstyle.}
  \else
    \documentclass[10pt]{dinbrief}
    \usepackage{german}
    \typeout{Using the command \string\documentclass.}
  \fi
%    \end{macrocode}
%    \begin{macrocode}
%</10pt>
%    \end{macrocode}
%
%    \begin{macrocode}
%<*11pt>
%    \end{macrocode}
%    \begin{macrocode}
\expandafter\ifx\csname documentclass\endcsname\relax
    \documentstyle[11pt,german]{dinbrief}
    \typeout{Using the command \string\documentstyle.}
  \else
    \documentclass[11pt]{dinbrief}
    \usepackage{german}
    \typeout{Using the command \string\documentclass.}
  \fi
%    \end{macrocode}
%    \begin{macrocode}
%</11pt>
%    \end{macrocode}
%
%    \begin{macrocode}
%<*12pt>
%    \end{macrocode}
%    \begin{macrocode}
\expandafter\ifx\csname documentclass\endcsname\relax
    \documentstyle[12pt,german]{dinbrief}
    \typeout{Using the command \string\documentstyle.}
  \else
    \documentclass[12pt]{dinbrief}
    \usepackage{german}
    \typeout{Using the command \string\documentclass.}
  \fi
%    \end{macrocode}
%    \begin{macrocode}
%</12pt>
%    \end{macrocode}
%
%    \begin{macrocode}
%<*norm>
%    \end{macrocode}
%    \begin{macrocode}
\expandafter\ifx\csname documentclass\endcsname\relax
    \documentstyle[norm,german]{dinbrief}
    \typeout{Using the command \string\documentstyle.}
  \else
    \documentclass[norm]{dinbrief}
    \usepackage{german}
    \typeout{Using the command \string\documentclass.}
  \fi
%    \end{macrocode}
%    \begin{macrocode}
%</norm>
%    \end{macrocode}
%
%    \begin{macrocode}
%<*test>
%    \end{macrocode}
%    \begin{macrocode}
\input brfkopf.tex

\newcommand{\oneletter}{%
\begin{letter}{%
Herrn Professor\\
Dr.\ Hans Forschegut\\
Institut f"ur Abfallbeseitigung\\
Fachhochschule Waldstadt\\
Postfach 3322\\[\medskipamount]
{\bf 1100 Waldstadt}}

\input brfbody.tex

\end{letter}

}

\begin{document}

\bottomtext{%
  \makebox[\textwidth][c]{\small\sf
   Bankverbindung $\cdot$ Kreissparkasse Gralsruhe %
   (BLZ~999~500~00) 98~765~4
  }
}

\backaddress{\FS}

\pagestyle{empty}

\enabledraftstandard

\oneletter

\disabledraftstandard

\oneletter

\pagestyle{plain}

\writer{Gussmann}

\enabledraftstandard

\oneletter

\disabledraftstandard

\oneletter

\pagestyle{headings}

\writer{Gussmann}

\enabledraftstandard

\oneletter

\disabledraftstandard

\oneletter

\pagestyle{contheadings}

\enabledraftstandard

\oneletter

\disabledraftstandard

\oneletter

%    \end{macrocode}
%    \begin{macrocode}
%</test>
%    \end{macrocode}
%
%    \begin{macrocode}
%<*10pt|11pt|12pt|norm>
\end{document}
%</10pt|11pt|12pt|norm>
%    \end{macrocode}
%
% \section{Example for using the old {\tt dinbrief\/} API}
%
%    \begin{macrocode}
%<*dinbriefold>
%    \end{macrocode}
%    \begin{macrocode}
 %
 % example letter, example receiver addresses
 %
 % Most of the following code has taken from the dinbrief released
 % at May 11th, 1992. This code is originated by Rainer Sengerling.
 %
 % The following example contains all commands of the old dinbrief.sty
 % API (application programming interface). We recommend to use the
 % new dinbrief API which is much more powerfull. The outcome may be
 % quiet unsatisfied if you mix both APIs. We had made a few changes
 % to adapt the file to \LaTeXe.
 %
\expandafter\ifx\csname documentclass\endcsname\relax
    \documentstyle[german]{dinbrief}
    \typeout{Using the command \string\documentstyle.}
  \else
    \documentclass[10pt]{dinbrief}
    \usepackage{german}
    \typeout{Using the command \string\documentclass.}
  \fi

\Etihoehe{41mm}%
\Etirand{46.3mm}%
\Etizahl{6}%
\makelabels
\spare{1}
 %\pagestyle{empty}
\begin{document}
 %
 % Musterbrief -- Anfang
 % In der vorliegenden Version (beachte Auskommentierungen mit %)
 % liefert er das Anwendungsbeispiel 4 von DIN 5008
 %
\begin{letter}{%
Stadt G"ottingen\\
Stadtbauamt\\
Postfach 28 17\par
3400 G"ottingen
}
\Postvermerk{Einschreiben}
\Behandlungsvermerk{E\ i\ l\ t}
\Datum{G"ottingen, 29.04.86}
\Absender{Klaus Waldmann\\B"urgerstra"se 135\\3400 G"ottingen\\::Tel.\
(05 51) 9 34 56}
\Retourlabel
\Fenster
\Retouradresse{K. Waldmann $\cdot$ B"urgerstr.\ 135 $\cdot$
               3400 G"ottingen}
\Betreff{Mein Bauvorhaben Waldrebenweg 9}
\signature{K. Waldmann}
\opening{Sehr geehrte Damen und Herren,}
den Antrag zur Genehmigung f"ur den Neubau eines Einfamilienhauses auf
meinem Grund\-st"uck G"ottingen, Waldrebenweg 9, hat der Architekt,
Herr Dipl.-Ing.\ G. Schwarz, mit allen erforderlichen Unterlagen am
03.01.86 eingereicht. Die Baugenehmigung habe ich bis heute nicht
erhaltern.

\Einrueckung{%Der folgende Text wird eingerueckt
Da ich die Finanzierung des Bauvorhabens ohne die Baugenehmigung nicht
endg"ultig kl"aren kann und der Beginn der Bauarbeiten nicht verz"ogert
werden soll, bitte ich dringend, das Genehmigungsverfahren zu
beschleunigen.
}  % Ende der Einrueckung

Gleichzeitig bitte ich um Auskunft, ob damit zu rechnen ist, da"s der
nur geschotterte Waldrebenweg in absehbarer Zeit zu einer "`Stra"se im
vorl"aufigen Ausbau"' umgestaltet wird.

\anlagenrechts
\Anlagen{2 Anlagen}
\Verteiler{Verteiler:\\Landratsamt}

\closing{Mit freundlichen Gr"u"sen}
\ps{Also bis bald!}
\end{letter}

 % normgerecht geschriebene Adressen

\begin{letter}{Frau\\Erika Werner\\bei M"uller\\Bahnhofstr.\ 4 -- 6

8580 Bayreuth}
\end{letter}

\begin{letter}{Frau\\ Annemarie Hartmann\\Vogelsangstr.\ 17 II\par
2870 Delmenhorst}
\Postvermerk{Briefdrucksache}
\end{letter}

\begin{letter}{02694/73\\Herrn Gutsverwalter\\Dipl.-Ldw.\ Otto Winter\\
Hauptstr.\ 3

8221 Alm Post Neukirchen}
\Postvermerk{Nicht nachsenden}
\end{letter}

\begin{letter}{Eheleute\\Erika und Hans M"uller\\Hochstr.\ 4

4709 Bergkamen}
\Postvermerk{Warensendung}
\end{letter}

\begin{letter}{Herrn Staatsanwalt\\Dr.\ Ernst Meyer und Frau\\
Talblick 2

8200 Rosenheim}
\Postvermerk{Eilzustellung -- auch nachts}
\end{letter}

\begin{letter}{Herrn Rechtsanwalt\\Dr.\ Otto Freiherr von Bergheim\\
Leonhard-Eck-Str.\ 7 W 36

8000 M"unchen 19}
\Postvermerk{Einschreiben -- R"uckschein}
\end{letter}

\begin{letter}{Herrn Direktor\\Dipl.-Kfm.\ Kurt Gr"aser\\Massivbau AG\\
Postfach 21 03 14

5600 Wuppertal 21}
\end{letter}

\begin{letter}{Frau Luise Weber\\Herrn Max Weber\\Rosenstra"se 35

7030 B"oblingen}
\end{letter}

\begin{letter}{Lack- und Farbwerke\\Dr.\ Hans Sendler \& Co.\\
Abt.\ FDM 412/10\\Postfach 80 19 36\par
6230 Frankfurt 80}
\end{letter}

\begin{letter}{Lehmann \& Krause KG\\z.\ H. Herrn E. Winkelmann\\
Gartenhaus III r.\\Johannisberger Str.\ 5 a\par 1000 Berlin 31}
\end{letter}

\begin{letter}{W"aschegro"shandel\\Robert Bergmann\\Venloer
Stra"se 80 -- 82\par 5000 K"oln 30}
\end{letter}

\begin{letter}{Firma\\Otto Pfleiderer\\Braunenweiler\\Hauptstr.\ 5\par
7968 Saulgau 1}
\Postvermerk{Drucksache}
\end{letter}

\begin{letter}{Amtsgericht Leer\\Grundbuchamt\\Postfach 11 24\par
2950 Leer}
\end{letter}

\begin{letter}{Regierungspr"asident\\Dezernat 44.II.2\\
Postfach 59 07\par 4400 M"unster}
\end{letter}

\begin{letter}{Nassauische Heimst"atte GmbH\\
Abt.\ Landestreuhandstelle\\Postfach 10 29 17\par 6000 Frankfurt 1}
\end{letter}

\begin{letter}{Volksbank Friedberg\\Hauptzweigstelle Bad Nauheim\\
Aliceplatz 4\par 6350 Bad Nauheim}
\end{letter}

\begin{letter}{VEB Ph"onix-Apparatewerk\\
Absatzabteilung\\Inselstr.\ 14/20

DDR-7021 Leipzig}
\Postvermerk{Einschreiben}
\end{letter}

\begin{letter}{Mevrouv J. de Vries\\ Poste restante A. Cuypstraat\\
Postbus 99730\\1000 NA AMSTERDAM

NIEDERLANDE}
\end{letter}

\begin{letter}{Monsieur P. Dubois\\Expert en assurances\\
Escalier 3, b\^atiment C\\4, rue Jean Jaur\`es

F-58500 CLAMECY}
\end{letter}

\begin{letter}{Mr.\ W. Smith\\514 Kingsbridge Road\\PURLEY, SURREY\\DE
1\\GROSSBRITANNIEN CRZ 4TH}
\end{letter}

\end{document}
%    \end{macrocode}
%    \begin{macrocode}
%</dinbriefold>
%    \end{macrocode}
%
% \section{The documentation driver file}
%
%    We have our own document class to format the \LaTeXe
%    documentation.
% \changes{1.0.6}{1993/12/07}{Use class ltxdoc document class}
%    \begin{macrocode}
%<*driver>
\documentclass{ltxdoc}
\usepackage{german}
\originalTeX
%    \end{macrocode}
%
%    We don't want everything to appear in the index
%
%    We start with a nearly empty list and go then further and
%    further. So we can catch all interesting macros.
%
%    \begin{macrocode}
\DoNotIndex{\@empty,\\,\space,\@warning}
\DoNotIndex{\begin,\bfseries,\bgroup,\box,\def,\edef,\egroup}
\DoNotIndex{\else,\end,\endcsname,\expandafter,\fi,\gdef}
\DoNotIndex{\hbox}
\DoNotIndex{\hfil,\hfill,\hss,\ifx,\item,\let,\long,\message}
\DoNotIndex{\nointerlineskip}
\DoNotIndex{\originalTeX,\p@,\par,\parbox,\parsep,\relax}
\DoNotIndex{\setlength}
\DoNotIndex{\space,\string,\strut,\tmpa,\typeout,\verb}
\DoNotIndex{\vbox,\vskip,\vspace,\vss}
\DoNotIndex{\xdef,\z@,\z@skip}
\DoNotIndex{\LaTeX,\LaTeXe}
\DoNotIndex{\OnlyDescription,\PrintChanges,\PrintIndex,\RecordChanges}
%    \end{macrocode}
%    We do want an index, using linenumbers
%    \begin{macrocode}
\EnableCrossrefs
\CodelineIndex
 %\DisableCrossrefs
\RecordChanges
 %\OnlyDescription
\typeout{Expect some under- and overfull boxes}
%    \end{macrocode}
%    We also want the full details.
%    \begin{macrocode}
\begin{document}
\DocInput{dinbrief.dtx}
\PrintChanges
\PrintIndex
\end{document}
%</driver>
%    \end{macrocode}
%
%    End each file with |\endinput|.
%    \begin{macrocode}
\endinput
%    \end{macrocode}
%
% \Finale
%
\endinput
%% End of DINBRIEF.DTX (or CLS, STY, TEX)
