% \CheckSum{1687}
% \iffalse meta-comment
% ======================================================================
% scrknpap.dtx
% Copyright (c) Markus Kohm, 2006
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
% This work may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, version 1.3b of the license.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3b or later is part of all distributions of LaTeX 
% version 2005/12/01 or later and of this work.
%
% This work has the LPPL maintenance status "author-maintained".
%
% The Current Maintainer and author of this work is Markus Kohm.
%
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrknpap.dtx
% Copyright (c) Markus Kohm, 2006
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3b, verteilt und/oder veraendert werden.
% Die neuste Version dieser Lizenz ist
%   http://www.latex-project.org/lppl.txt
% und Version 1.3b ist Teil aller Verteilungen von LaTeX
% Version 2005/12/01 oder spaeter und dieses Werks.
%
% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
% (allein durch den Autor verwaltet).
%
% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm.
% 
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
% ======================================================================
% \fi
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
% \iffalse
%%% From File: scrknpap.dtx
%<*driver>
% \fi
\ProvidesFile{scrknpap.dtx}[2006/06/06 v2.95 KOMA-Script (note-paper)]
% \iffalse
\documentclass{scrdoc}
\usepackage[english,ngerman]{babel}
\usepackage[latin1]{inputenc}
\CodelineIndex
\RecordChanges
\GetFileInfo{scrknpap.dtx}
\title{\KOMAScript{} \partname\ \texttt{\filename}%
  \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
\date{\filedate}
\author{Markus Kohm}

\begin{document}
  \maketitle
  \tableofcontents
  \DocInput{\filename}
\end{document}
%</driver>
% \fi
%
% \selectlanguage{ngerman}
%
% \changes{v2.95}{2006/03/16}{%
%   erste Version aus der Aufteilung von \textsf{scrclass.dtx}}
%
% \section{Briefbogen und Briefpapier}
%
% Bei Briefen kommt dem Briefbogen, also dem ersten Blatt des Briefes eine
% besondere Bedeutung zu. Dieser ist bei \texttt{scrlttr2} durch diverse
% Optionen, Variablen, Pseudo-Längen und Anweisungen bestimmt. Die weiteren
% Briefseiten werden hier verinfacht als das Briefpapier bezeichnet. Natürlich
% ist genau genommen auch der Briefbogen Briefpapier, aber eben ein besonderes.
%
% \StopEventually{\PrintIndex\PrintChanges}
%
% \iffalse
%<*option>
% \fi
%
% \iffalse
%<*letter>
% \fi
%
% \subsection{Option für den Briefbogen}
%
% Gerade der Briefbogen ist durch eine ganze Anzahl von Optionen
% konfigurierbar. Daher wird hier weiter thematisch untergliedert.
%
%
% \subsubsection{Optionen für den Briefkopf}
%
% Die Gestaltung des Briefkopfes war bei der alten \texttt{scrlettr}
% Klasse eng begrenzt. Deshalb hatte ich für mich selbst das
% \texttt{briefkopf} Paket geschrieben und ohne Support
% veröffentlicht. Die Funktionalität ist nun direkt verfügbar. Dazu
% werden verschiedene Optionen benötigt.
%
% \begin{option}{fromalign}
%   \changes{v2.8q}{2002/01/25}{Neu}
% Diese Option legt fest, ob der Absender linksbündig, mittig oder
% rechtsbündig gesetzt werden soll.
% \begin{macro}{\@alignfrom}
%   \changes{v2.8q}{2002/01/25}{Neu}
% Die Einstellung wird in einem nummerisch auszuwertenden Makro
% gespeichert. Dabei gelten folgende Werte:
% \begin{center}
%   \begin{tabular}{rl}
%     Wert & Ausrichtung \\\hline
%     0    & linksbündig \\
%     1    & zentriert \\
%     2    & rechtsbündig \\
%     10000 & nicht antasten \\
%   \end{tabular}
% \end{center}
% Voreingestellt ist "`nicht antasten"'.
%    \begin{macrocode}
\newcommand*{\@alignfrom}{0}
\KOMA@ncmdkey{fromalign}{@alignfrom}{%
  {left}{0},%
  {center}{1},{centered}{1},{middle}{1},%
  {right}{2},%
  {no}{10000},{false}{10000},{off}{10000}%
}
%    \end{macrocode}
% \end{macro}
% \end{option}
%
% \begin{option}{fromrule}
%   \changes{v2.8q}{2002/01/25}{Neu}
%   Es kann gewählt werden, ob im Absender nach dem Namen oder nach dem
% gesamten Absender eine Linie gesetzt werden soll.
% \begin{macro}{\@rulefrom}
%   \changes{v2.8q}{2002/01/25}{Neu}
% Die Einstellung wird in einem nummerisch auszuwertenden Makro
% gespeichert. Dabei gelten folgende Werte:
% \begin{center}
%   \begin{tabular}{rl}
%     Wert & Absenderlinie \\\hline
%     0    & keine \\
%     1    & unter dem Name \\
%     2    & unter der Adresse \\
%   \end{tabular}
% \end{center}
% Voreingestellt ist keine Linie.
%    \begin{macrocode}
\newcommand*{\@rulefrom}{0}
\KOMA@ncmdkey{fromrule}[below]{@rulefrom}{%
  {false}{0},{no}{0},{off}{0},{aftername}{1},%
  {below}{2},{afteraddress}{2},{true}{2},{yes}{2},{on}{2}%
}
%    \end{macrocode}
% \end{macro}
% \end{option}
%
% \begin{option}{fromphone}
%   \changes{v2.8q}{2002/01/25}{Neu}
% Ob die Telefonnummer im Absender gesetzt werden soll oder nicht,
% kann hier angegeben werden.
% \begin{macro}{\if@phone}
%   \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@phonetrue}
%   \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@phonefalse}
%   \changes{v2.8q}{2002/01/25}{Neu}
% Gespeichert wird die Information in einem einfachen Schalter.
% Voreingestellt ist keine Telefonnummer im Absender.
%    \begin{macrocode}
\KOMA@ifkey{fromphone}{@phone}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{fromfax}
%   \changes{v2.8q}{2002/01/25}{Neu}
% Ob die Faxnummer im Absender gesetzt werden soll oder nicht,
% kann hier angegeben werden.
% \begin{macro}{\if@fax}
%   \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@faxtrue}
%   \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@faxfalse}
%   \changes{v2.8q}{2002/01/25}{Neu}
% Gespeichert wird die Information in einem einfachen Schalter.
% Voreingestellt ist keine Faxnummer im Absender.
%    \begin{macrocode}
\KOMA@ifkey{fromfax}{@fax}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{fromemail}
%   \changes{v2.8q}{2002/01/25}{Neu}
% Ob die E-Mail-Adresse im Absender gesetzt werden soll oder nicht,
% kann hier angegeben werden.
% \begin{macro}{\if@email}
%   \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@emailtrue}
%   \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@emailfalse}
%   \changes{v2.8q}{2002/01/25}{Neu}
% Gespeichert wird die Information in einem einfachen Schalter.
% Voreingestellt ist keine E-Mail-Adresse im Absender.
%    \begin{macrocode}
\KOMA@ifkey{fromemail}{@email}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{fromurl}
%   \changes{v2.8q}{2002/01/25}{Neu}
% Ob die URL auf eine Homepage im Absender gesetzt werden soll oder
% nicht, kann hier angegeben werden.
% \begin{macro}{\if@www}
%   \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@wwwtrue}
%   \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@wwwfalse}
%   \changes{v2.8q}{2002/01/25}{Neu}
% Gespeichert wird die Information in einem einfachen Schalter.
% Voreingestellt ist keine URL im Absender.
%    \begin{macrocode}
\KOMA@ifkey{fromurl}{@www}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{fromlogo}
%   \changes{v2.8q}{2002/01/25}{Neu}
% Ob ein Logo in den Briefkopf gesetzt werden soll oder
% nicht, kann hier angegeben werden.
% \begin{macro}{\if@logo}
%   \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@logotrue}
%   \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@logofalse}
%   \changes{v2.8q}{2002/01/25}{Neu}
% Gespeichert wird die Information in einem einfachen Schalter.
% Voreingestellt ist kein Logo im Briefkopf.
%    \begin{macrocode}
\KOMA@ifkey{fromlogo}{@logo}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
%
% \subsubsection{Optionen für Anschrift und Absenderergänzung}
%
% \begin{option}{addrfield}
%   \changes{v2.8q}{2001/10/09}{Neu}
% Das Adressfeld für Fensterumschläge kann mit \texttt{addrfield} ein- und
% ausgeschaltet werden
%  \begin{macro}{\if@afield}
%  \begin{macro}{\if@afieldtrue}
%  \begin{macro}{\if@afieldfalse}
% Die Speicherung erfolgt wiederum in einem Schalter.
%    \begin{macrocode}
\newif\if@afield\@afieldtrue
\KOMA@ifkey{addrfield}{@afield}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{backaddress}
%   \changes{v2.8q}{2002/01/22}{Neu}
% Im Adressfeld kann die Rücksendeadresse gesetzt werden. Dies geschieht nun
% nicht mehr allein durch Definition einer Rücksendeadresse, sondern auch
% durch eine Option.
% \begin{macro}{\if@baddr}
% \begin{macro}{\@baddrtrue}
% \begin{macro}{\@baddrfalse}
% Die Einstellung der Option wird in einem Schalter gespeichert.
%    \begin{macrocode}
\newif\if@baddr\@baddrtrue
\KOMA@ifkey{backaddress}{@baddr}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{locfield}
%   \changes{v2.8q}{2001/10/09}{Neu}
% Mit Hilfe der Optione \texttt{locfield} kann der Platz neben dem Adressfeld
% groß oder klein gewählt werden.
% \begin{macro}{\if@bigloc}
% \begin{macro}{\@bigloctrue}
% \begin{macro}{\@biglocfalse}
% Die Einstellung wird in einem Schalter gespeichert.
%    \begin{macrocode}
\newif\if@bigloc
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%    \begin{macrocode}
\KOMA@key{locfield}[wide]{%
  \begingroup
    \KOMA@set@ncmdkey{locfield}{@tempa}{{wide}{0},{narrow}{1}}{#1}%
    \ifcase\@tempa
      \endgroup
      \@biglocfalse
    \else
      \endgroup
      \@bigloctrue
    \fi
}
\DeclareOption{wlocfield}{\@ObsoleteOption{locfield=wide}}
\DeclareOption{slocfield}{\@ObsoleteOption{locfield=narrow}}
%    \end{macrocode}
% \end{option}
%
%
% \subsubsection{Optionen für Faltmarken}
%
% \begin{option}{foldmarks}
%   \changes{v2.8q}{2001/09/10}{Neu}
% Die Faltmarken können mit \texttt{foldmarks} aktiviert und deaktiviert
% werden.
% \begin{macro}{\if@fold}
% \begin{macro}{\@foldtrue}
% \begin{macro}{\@foldfalse}
% Ob Faltmarken gesetzt werden sollen oder nicht, wird in einem
% Schalter gespeichert.
%    \begin{macrocode}
\newif\if@fold\@foldtrue
\KOMA@ifkey{foldmarks}{@fold}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
%
% \subsubsection{Optionen für die Geschäftszeile}
%
% \begin{option}{refline}
%   \changes{v2.8n}{2001/09/08}{Neue Option}
% Kopf und Fuß der ersten Seite sind normalweise so breit, dass sie
% zur Adresse des Empfängers passen. Für die Geschäftszeile gibt es
% zwei Alternativen, eine breite und eine, deren Breite der Textbreite
% entspricht. Voreingestellt ist die Textbreite.
% \begin{macro}{\if@refwide}
%   \changes{v2.8n}{2001/09/08}{Neuer Schalter}
% \begin{macro}{\@refwidetrue}
% \begin{macro}{\@refwidefalse}
% Gespeichert wird die Information in einem Schalter.
%    \begin{macrocode}
\newif\if@refwide
\KOMA@key{refline}[wide]{%
  \begingroup
    \KOMA@set@ncmdkey{refline}{@tempa}{{wide}{0},{narrow}{1}}{#1}%
    \ifcase\@tempa
      \endgroup
      \@refwidefalse
    \else
      \endgroup
      \@refwidetrue
    \fi
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
%
% \subsubsection{Optionen für den Betreff}
%
% \begin{option}{subject}
%   \changes{v2.8q}{2001/10/09}{Neu}
% Ein Betreff-Titel kann mit \texttt{subject} ein- und abgeschaltet
% werden. In England und Frankreich scheint es teilweise üblich zu
% sein, den Betreff erst nach der Anrede und dafür zentriert zu
% setzen\footnote{Ich kann mir nur mühsahm eine Bemerkung dazu
%   verkneifen.}. 
% Deshalb kann alternativ zum Einschalten des Betreff-Titels hier auch
% dies aktiviert werden.
% \begin{macro}{\if@subj}
% \begin{macro}{\@subjtrue}
% \begin{macro}{\@subjfalse}
% \begin{macro}{\if@subjafter}
% \begin{macro}{\@subjaftertrue}
% \begin{macro}{\@subjafterfalse}
% Die Speicherung erfolgt in zwei Schaltern.
%    \begin{macrocode}
\newif\if@subj
\newif\if@subjafter
\KOMA@key{subject}{%
  \begingroup
    \KOMA@set@ncmdkey{locfield}{@tempa}{%
      {titled}{0},%
      {untitled}{1},%
      {afteropening}{2},%
      {beforeopening}{3}%
    }{#1}%
    \ifcase\@tempa
      \endgroup
      \@subjtrue
    \or
      \endgroup
      \@subjfalse
    \or
      \endgroup
      \@subjaftertrue
    \else
      \endgroup
      \@subjafterfalse
    \fi
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
%
% \subsubsection{Optionen für den Satzspiegel}
%
% \begin{option}{enlargefirstpage}
%   \changes{v2.8o}{2001/09/18}{Neue Option}
% Normalerweise wird der Text des Briefboges entsprechend dem
% normalen Satzspiegel gesetzt. Ist allerdings der Fuß der ersten
% Seite zu hoch, dann wird der Satzspiegel vertikal entsprechend
% verkürzt. Mit der Option \texttt{firstpageenlarge} kann erzwungen
% werden, dass im umgekehrten Fall, der Satzspiegel vertikal
% verlängert wird.
% \begin{macro}{\if@enlargefp}
% \begin{macro}{\@enlargefptrue}
% \begin{macro}{\@enlargefpfalse}
% Gespeichert wird die Information über die Optionen in einem
% Schalter.
%    \begin{macrocode}
\KOMA@ifkey{enlargefirstpage}{@enlargefp}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
%
% \subsection{Optionen für den Kopf des weiteren Briefpapiers}
%
% Diese Optionen haben zwar nichts mit dem eigentlichen Briefbogen zu tun. Das
% Briefpapier schließt sich aber an, weshalb die Optionen hier zu finden sind.
%
% \begin{option}{pagenumber}
%   \changes{v2.8q}{2002/01/31}{Neu}
% Bei Briefen kann gewählt werden, ob auf Folgeseiten die Seitenzahl
% im Kopf oder im Fuß stehen soll. Dabei kann zwischen Seitenzahl
% rechts, links oder zentriert gewählt werden. Voreingestellt ist der
% Fuß und mittig.
% \begin{macro}{\@pageat}
%   \changes{v2.8q}{2002/01/31}{Neu}
% In dieser nummerisch auswertbaren Variablen wird gespeichert, wo die
% Seitenzahl stehen soll. Dabei gilt:
% \begin{center}\begin{tabular}{rl}
%   Wert & Bedeutung für die Seitenzahl\\\hline
%   -1   & keine \\
%   0    & im Kopf links \\
%   1    & im Kopf mittig \\
%   2    & im Kopf rechts \\
%   3    & im Fuß links \\
%   4    & im Fuß mittig \\
%   5    & im Fuß rechts \\
% \end{tabular}\end{center}
%    \begin{macrocode}
\newcommand*{\@pageat}{4}
\KOMA@key{pagenumber}{%
  \begingroup
    \KOMA@set@ncmdkey{pagenumber}{@tempa}{%
      {no}{-1},{off}{-1},{false}{-1},%
      {topleft}{0},{headleft}{0},%
      {topmiddle}{1},{topcenter}{1},{topcentered}{1},%
      {headmiddle}{1},{headcenter}{1},{headcentered}{1},%
      {topright}{2},{headright}{2},%
      {botleft}{3},{footleft}{3},%
      {botmiddle}{4},{botcenter}{4},{botcentered}{4},%
      {footmiddle}{4},{footcenter}{4},{footcentered}{4},%
      {botright}{5},{footright}{5},%
      {top}{10},{head}{10},{bot}{11},{foot}{11},%
      {left}{20},{middle}{21},{center}{21},{centered}{21},{right}{22}%
    }{#1}%
    \ifnum\@tempa<10
      \edef\@tempa{\endgroup\edef\noexpand\@pageat{\@tempa}}%
    \else
      \ifnum\@tempa<20
        \@tempcnta\@pageat\relax
        \ifnum\@tempcnta>2
          \advance\@tempcnta by -3
        \fi
        \ifnum\@tempa=11
          \advance\@tempcnta by 3
        \fi
        \edef\@tempa{\endgroup\edef\noexpand\@pageat{\the\@tempcnta}}%
      \else
        \ifnum\@pageat>2
          \edef\@pageat{3}%
        \else
          \edef\@pageat{0}%
        \fi
        \@tempcnta\@tempa
        \advance\@tempcnta by -20
        \advance\@tempcnta by\@pageat
        \edef\@tempa{\endgroup\edef\noexpand\@pageat{\the\@tempcnta}}%
      \fi
    \fi
  \@tempa
}
%    \end{macrocode}
% \end{macro}
% \end{option}
%
%
% \iffalse
%</letter>
%</option>
%<*body>
%<*letter>
% \fi
%
% \subsection{Anweisungen für den Briefbogen}
%
% Auch bei den Anweisungen zunächst alles, was mit dem Briefbogen zu tun hat.
% 
% \subsubsection{Der Kopf des Briefbogens}
%
%  \begin{macro}{\firsthead}
%    \changes{v2.8q}{2002/01/28}{\cs{@alignfrom} auf 10000 gesetzt}
%  \begin{macro}{\@firsthead}
%  \begin{macro}{\@gen@firsthead}
%    \changes{v2.8q}{2002/01/28}{Neu}
% Bei \texttt{scrlttr2} gibt es die üblichen Seitenstile, allerdings
% ist deren Verhalten etwas anders als gewohnt. Dies ist in den
% Besonderheiten für Briefen begründet. Zunächst die Voreinstellung für
% Briefbögen.
%    \begin{macrocode}
\newcommand*{\@firsthead}{\noindent%
  \parbox[b]{\useplength{firstheadwidth}}%
  {\centering\usekomafont{fromaddress}{%
      \ifkomavarempty{fromname}{}{%
        {\usekomafont{fromname}%
          {\ignorespaces\usekomavar{fromname}}}\\[-8pt]
        \rule{\useplength{firstheadwidth}}{.4pt}\\
      }%
      \ifkomavarempty{fromaddress}{}{%
        \ignorespaces\usekomavar{fromaddress}%
      }%
    }%
  }%
}
\newcommand*{\@gen@firsthead}{%
% Damit wird ggf. die Kopfzeile der ersten Seite umdefiniert, nämlich dann,
% wenn dies per Option aktiviert wurde.
%    \begin{macrocode}
  \ifcase\@alignfrom
%    \end{macrocode}
% Wir befinden uns nun in dem Bereich für \verb|\@alignfrom|=0.
% Entsprechend unserer Festlegung wird daher als Erstes der
% linksbündige Absender definiert. Wir verwenden dafür eine
% \emph{parbox}, in der der Text linksbündig angeordnet wird. Diese
% Box soll über die gesamte Breite gehen dürfen:
%    \begin{macrocode}
    \renewcommand*{\@firsthead}{\noindent
      \parbox[b]{\textwidth}{\raggedright
%    \end{macrocode}
% Zuerst wird der Name gesetzt. Dabei soll eine eigene Schriftart für
% den Namen verwendet werden.
%    \begin{macrocode}
        {\usekomafont{fromname}\strut\ignorespaces
          \usekomavar{fromname}%
%    \end{macrocode}
% Hat \verb|\@rulefrom| den nummerischen Wert 1, so soll direkt auf den
% Absender eine Linie folgen. Die Länge dieser Linie kann vom Anwender
% bestimmt oder automatisch gewählt werden. Es wird dabei die
% Pseudo-Länge \texttt{fromrulewidth} verwendet. Ist diese negativ,
% so wird sie automatisch bestimmt. Bei der automatischen
% Längenbestimmung wird dafür gesorgt, dass die Linie nicht bis in das
% Logo ragt, das eventuell rechtsbündig neben dem Absender steht:
%    \begin{macrocode}
          {%
            \ifnum\@rulefrom=1\\[-.5\baselineskip]%
              \setlength{\@tempdima}{\useplength{fromrulewidth}}%
              \ifdim\@tempdima=\z@
                \setlength{\@tempdima}{\textwidth}%
                \if@logo
                  \settowidth{\@tempdimb}{\usekomavar{fromlogo}}%
                  \addtolength{\@tempdima}{-\@tempdimb}%
                \fi
              \fi
              \expandafter\rule\expandafter{\the\@tempdima}{.4pt}%
            \fi
          }%
          \\
        }%
%    \end{macrocode}
% Als Nächstes wird die Absenderadresse einschließlich aller
% optionalen Felder gesetzt. Dabei werden optionale Felder nur
% gesetzt, wenn der entsprechende Schalter \emph{true} ist. Die
% Adresse wird ebenfalls innerhalb einer Gruppe in einer eigenen
% Schriftart gesetzt. 
%    \begin{macrocode}
        {\usekomafont{fromaddress}\strut\ignorespaces
          \usekomavar{fromaddress}%
          \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi%
          \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi%
          \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi%
          \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi%
%    \end{macrocode}
% Wie weiter oben erwähnt, kann auch an dieser Stelle eine Linie
% gesetzt  werden. Wir gehen davon aus, dass die Linie automatisch
% nicht in das Logo ragt, da es in diesem Fall über der Linie zu
% stehen hat. Die entsprechende Berechnung kann also entfallen.
%    \begin{macrocode}
          \ifnum\@rulefrom=2\\[-.5\baselineskip]%
            \setlength{\@tempdima}{\useplength{fromrulewidth}}%
            \ifdim\@tempdima=\z@
              \setlength{\@tempdima}{\textwidth}%
            \fi
            \expandafter\rule\expandafter{\the\@tempdima}{.4pt}%
          \fi
          \\
        }%
      }%
%    \end{macrocode}
% Die parbox ist damit ebenfalls beendet. Es muss nun ggf. noch das
% Logo gesetz werden. Es wird in diesem Fall von der aktuellen
% Position am rechten Rand nach links ausgegeben.
%    \begin{macrocode}
      \if@logo
        \llap{\usekomavar{fromlogo}}%
      \fi
    }%
%    \end{macrocode}
% Damit ist die Definition des linksbündigen Absenders abgeschlossen.
% Es geht weiter mit dem zentrierten Absender. Dieser hat als
% Besonderheit, dass das Logo nicht in den Briefkopf, sondern in den
% Bereich rechts neben dem Empfänger gesetzt wird. Dort ist bereits
% das location-Feld, daher wird dieser Fall auch dort behandelt.
%    \begin{macrocode}
  \or
    \renewcommand*{\@firsthead}{\noindent
      \parbox[b]{\textwidth}{\centering
        {\usekomafont{fromname}\strut\ignorespaces
          \usekomavar{fromname}%
          {%
            \ifnum\@rulefrom=1\\[-.5\baselineskip]%
              \setlength{\@tempdima}{\useplength{fromrulewidth}}%
              \ifdim\@tempdima=\z@
                \setlength{\@tempdima}{\textwidth}%
              \fi
              \expandafter\rule\expandafter{\the\@tempdima}{.4pt}%
            \fi
          }%
          \\
        }%
        {\usekomafont{fromaddress}\strut\ignorespaces
          \usekomavar{fromaddress}%
          \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi%
          \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi%
          \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi%
          \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi%
          \ifnum\@rulefrom=2\\[-.5\baselineskip]%
            \setlength{\@tempdima}{\useplength{fromrulewidth}}%
            \ifdim\@tempdima=\z@
              \setlength{\@tempdima}{\textwidth}%
            \fi
            \expandafter\rule\expandafter{\the\@tempdima}{.4pt}%
          \fi
          \\
        }%
      }%
    }%
%    \end{macrocode}
% Damit ist die Definition des zentrierten Absenders abgeschlossen. Es
% geht weiter mit dem rechtsbündigen Absender. Das ganze wird einfach
% beim linksbündigen Absender abgeschaut.
%    \begin{macrocode}
  \or
    \renewcommand*{\@firsthead}{\noindent
      \if@logo
        \rlap{\usekomavar{fromlogo}}%
      \fi
      \parbox[b]{\textwidth}{\raggedleft
        {\usekomafont{fromname}\strut\ignorespaces
          \usekomavar{fromname}%
          {%
            \ifnum\@rulefrom=1\\[-.5\baselineskip]%
              \setlength{\@tempdima}{\useplength{fromrulewidth}}%
              \ifdim\@tempdima=\z@
                \setlength{\@tempdima}{\textwidth}%
                \if@logo
                  \settowidth{\@tempdimb}{\usekomavar{fromlogo}}%
                  \addtolength{\@tempdima}{-\@tempdimb}%
                \fi
              \fi
              \expandafter\rule\expandafter{\the\@tempdima}{.4pt}%
            \fi
          }%
          \\
        }%
        {\usekomafont{fromaddress}\strut\ignorespaces
          \usekomavar{fromaddress}%
          \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi%
          \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi%
          \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi%
          \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi%
          \ifnum\@rulefrom=2\\[-.5\baselineskip]%
            \setlength{\@tempdima}{\useplength{fromrulewidth}}%
            \ifdim\@tempdima=\z@
              \setlength{\@tempdima}{\textwidth}%
            \fi
            \expandafter\rule\expandafter{\the\@tempdima}{.4pt}%
          \fi
          \\
        }%
      }%
    }%
%    \end{macrocode}
% Damit ist die Umdefinierung beendet. In allen anderen Fällen wird
% der Kopf nicht verändert.
%    \begin{macrocode}
  \fi
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% Der Benutzer kann die Voreinstellung mit einer einfachen Anweisung ändern:
%    \begin{macrocode}
\newcommand{\firsthead}[1]{%
  \renewcommand*{\@alignfrom}{10000}%
  \renewcommand*{\@firsthead}{\noindent#1}%
}
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{Schrifteinstellungen für den Briefbogen}
%
% \begin{KOMAfont}{fromname}
%   \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}
% Der Absendername im Briefkopf.
%    \begin{macrocode}
\newkomafont{fromname}{}
%    \end{macrocode}
% \end{KOMAfont}
%
% \begin{KOMAfont}{fromaddress}
%   \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}
% Die Absenderadresse im Briefkopf.
%    \begin{macrocode}
\newkomafont{fromaddress}{}
%    \end{macrocode}
% \end{KOMAfont}
%
% \begin{KOMAfont}{backaddress}
%   \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}
% Die Rücksendeadresse.
%    \begin{macrocode}
\newkomafont{backaddress}{\sffamily}
%    \end{macrocode}
% \end{KOMAfont}
%
% \begin{KOMAfont}{title}
%   \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}
% Der Brieftitel.
%    \begin{macrocode}
\newkomafont{title}{\normalcolor\sffamily\bfseries}
%    \end{macrocode}
% \end{KOMAfont}
%
% \begin{KOMAfont}{subject}
%   \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}
% Der Betreff.
%    \begin{macrocode}
\newkomafont{subject}{\normalcolor\bfseries}
%    \end{macrocode}
% \end{KOMAfont}
%
% \subsubsection{Längen für den Briefbogen}
%
% \begin{macro}{\ltr@len@foldmarkhpos}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Abstand der Faltmarken von der linken Papierkante.
%    \begin{macrocode}
\@newplength{foldmarkhpos}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@tfoldmarkvpos}
%   \changes{v2.8q}{2001/10/06}{Neu}
% \begin{macro}{\ltr@len@bfoldmarkvpos}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Abstand der oberen und unteren Faltmarken von der oberen Papierkante.
%    \begin{macrocode}
\@newplength{tfoldmarkvpos}
\@newplength{bfoldmarkvpos}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\ltr@len@toaddrvpos}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Abstand des Adressfensters von der oberen Papierkante.
%    \begin{macrocode}
\@newplength{toaddrvpos}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@backaddrheight}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Höhe der Rücksendeadresse.
%    \begin{macrocode}
\@newplength{backaddrheight}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@toaddrhpos}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Abstand des Adressfeldes von der linken Papierkante bzw. wenn negativ von
% der rechten Papierkante.
%    \begin{macrocode}
\@newplength{toaddrhpos}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@specialmailindent}
%   \changes{v2.8q}{2002/03/25}{Neu}
% Abstand der Versandtart vom linken Rand des Adressfensters.
%    \begin{macrocode}
\@newplength{specialmailindent}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@specialmailrightindent}
%   \changes{v2.8q}{2002/03/25}{Neu}
% Abstand der Versandtart vom rechten Rand des Adressfensters.
%    \begin{macrocode}
\@newplength{specialmailrightindent}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@toaddrindent}
% \changes{v2.8q}{2001/10/06}{Neu}
% Abstand der Adresse vom linken Rand des Adressfensters.
%    \begin{macrocode}
\@newplength{toaddrindent}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@toaddrwidth}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Breite des Adressfensters
%    \begin{macrocode}
\@newplength{toaddrwidth}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@toaddrheight}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Höhe des Adressfensters ohne Rücksendeadresse
%    \begin{macrocode}
\@newplength{toaddrheight}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@locwidth}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Breite des Feldes neben dem Adressfenster
%    \begin{macrocode}
\@newplength{locwidth}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@refvpos}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Abstand der Geschäftszeile von der Papieroberkante.
%    \begin{macrocode}
\@newplength{refvpos}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@refwidth}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Breite der Geschäftszeile.
%    \begin{macrocode}
\@newplength{refwidth}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@refhpos}
%   \changes{v2.9l}{2003/01/28}{Neu}
% Horizontale Position der Geschäftszeile.
%    \begin{macrocode}
\@newplength{refhpos}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@refaftervskip}
%   \changes{v2.8q}{2001/10/09}{Neu}
% Abstand nach der Geschäftszeile.
%    \begin{macrocode}
\@newplength{refaftervskip}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@sigbeforevskip}
%   \changes{v2.8q}{2001/10/09}{Neu}
% Raum für die Unterschrift.
%    \begin{macrocode}
\@newplength{sigbeforevskip}
%    \end{macrocode}
%  \end{macro}
% \begin{macro}{\ltr@len@sigindent}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Horizontaler Einzug des Schlussgrußes und der Signatur.
%    \begin{macrocode}
\@newplength{sigindent}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@@firstfootvpos}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Abstand des Fußes der ersten Seite von der Papieroberkante.
%    \begin{macrocode}
\@newplength{firstfootvpos}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@firstfootwidth}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Breite des Fußes der ersten Seite.
%    \begin{macrocode}
\@newplength{firstfootwidth}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\set@ltr@len@firstheadvspos}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Abstand des Kopfes der ersten Seite von der Papieroberkante.
%    \begin{macrocode}
\@newplength{firstheadvpos}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@firstheadwidth}
%   \changes{v2.8q}{2001/10/06}{Neu}
% Breite des Kopfes der ersten Seite.
%    \begin{macrocode}
\@newplength{firstheadwidth}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@fromrulewidth}
%   \changes{v2.8q}{2002/01/28}{Neu}
% Die Länge einer eventuell gesetzten Linie im Absender. Negative
% Werte bedeuten, dass die Länge automtaisch bestimmt wird.
\@newplength{fromrulewidth}
\@setplength{fromrulewidth}{0pt}
% \end{macro}
%
%
% \subsubsection{Fuß des Briefbogens}
%
% \begin{macro}{\firstfoot}
% \begin{macro}{\@firstfoot}
%    \begin{macrocode}
% Der Fuß des Briefbogens ist in der Voreinstellung leer.
\newcommand*{\@firstfoot}{}
%    \end{macrocode}
% \end{macro}
% Dies kann jedoch über eine einfache Benutzeranweisung geändert werden:
%    \begin{macrocode}
\newcommand{\firstfoot}[1]{%
  \renewcommand*{\@firstfoot}{\noindent#1}%
}
%    \end{macrocode}
% \end{macro}
%
%
% \subsubsection{Ausgabe des Briefbogens}
%
% Die Ausgabe selbst erfolgt derzeit über die |\opening|-Anweisung, die in
% einem späteren Abschnitt implementiert ist.
%
% \begin{macro}{\move@topt}
%   \changes{v2.8n}{2001/09/07}{Neu}
% Für die folgenden Aktionen wird ein Makro benötigt, mit dem man vertikal von
% der relativen Seitenposition zur relativen Papierposition gelangen kann.
%    \begin{macrocode}
\newcommand*{\move@topt}{%
  \null\vskip -1in\vskip -\topmargin%
  \vskip -\headheight\vskip -\headsep%
  \vskip -\topskip%
  \ignorespaces%
}
%    \end{macrocode}
% \begin{macro}{\move@frompt}
%   \changes{v2.8n}{2001/09/07}{Neu}
% Natürlich wird auch ein Makro benötigt, um vertikal von einer relativen
% Papierposition wieder auf die relative Seitenposition zurück zu gelangen.
%    \begin{macrocode}
\newcommand*{\move@frompt}{%
  \vskip 1in\vskip \topmargin%
  \vskip \headheight\vskip \headsep%
  \vskip \topskip%
  \vskip -\baselineskip%
  \ignorespaces%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\move@topl}
%   \changes{v2.8n}{2001/09/07}{Neu}
% Für die folgenden Aktionen wird außerdem ein Makro benötigt, mit dem man
% horizontal von der relativen Seitenposition zur relativen Papierposition
% gelangen kann.
%    \begin{macrocode}
\newcommand*{\move@topl}{%
  \null\hskip -1in%
  \ifodd\value{page}\hskip -\oddsidemargin\else\hskip -\evensidemargin\fi
  \ignorespaces%
}
%    \end{macrocode}
% \begin{macro}{\move@frompl}
%   \changes{v2.8n}{2001/09/07}{Neu}
% Natürlich wird auch ein Makro benötigt, um horizontal von einer relativen
% Papierposition wieder auf die relative Seitenposition zurück zu gelangen.
%    \begin{macrocode}
\newcommand*{\move@frompl}{%
  \hskip 1in%
  \ifodd\value{page}\hskip \oddsidemargin\else\hskip \evensidemargin\fi%
  \ignorespaces%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vb@t@z}
%   \changes{v2.8n}{2001/09/07}{Neu}
%   \changes{v2.95}{2006/03/23}{Absatzformatierung mit \cs{setparsizes}}
% Ausserdem wird ein vertikales Äquivalent zu |\rlap| benötigt.
%    \begin{macrocode}
\newcommand*{\vb@t@z}[1]{{%
    \setbox0\vbox to\z@{#1\vss}%
    \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
    \setlength{\baselineskip}{\z@}%
    \setlength{\@tempdima}{\ht0}\addtolength{\@tempdima}{\dp0}%
    \box0\vskip-\@tempdima%
  }%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@foldmarks}
% Für die Faltmarken müssen nicht nur Abstände definiert werden, es wird auch
% ein Befehl benötigt, um die Faltmarken zu setzen.
% \begin{macro}{\@foldmark}
%   \changes{v2.8n}{2001/09/07}{Neu}
%   \changes{v2.95}{2006/06/06}{\cs{vskip} in \cs{vb@t@z} verschoben, damit es
%     vom Satzspiegel unabhängig wird}
% Das geht am einfachsten, wenn wir auch einen Befehl haben, mit dem man eine
% einzelne Faltmarke relativ zur aktuellen Position setzen kann. Dies
% geschieht mit Hilfe von |\rlap|, damit die horizontale Position unverändert
% bleibt. Als Parameter werden der vertikale Abstand zur aktuellen Position
% und die Länder der Marke übergeben.
%    \begin{macrocode}
\newcommand*{\@foldmark}[2]{%
  \vb@t@z{\vskip #1%
    \rlap{\move@topl\hskip\useplength{foldmarkhpos}%
      \rule{#2}{.2pt}}}%
  \ignorespaces%
}
\newcommand*{\@foldmarks}{%
  \if@fold%
    \typeout{Foldmarks: yes}%
    \move@topt
    \@foldmark{\useplength{tfoldmarkvpos}}{2mm}%
    \@foldmark{.5\paperheight}{4mm}%
    \@foldmark{\useplength{bfoldmarkvpos}}{2mm}%
    \move@frompt
  \else
    \typeout{Foldmarks: no}%
  \fi%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@savevbox}
%   \changes{v2.8n}{2001/09/07}{Neu}
%   \changes{v2.8q}{2001/10/30}{zusätzlich ein optionales Argument}
% \begin{macro}{\if@savevbox@warning}
% \begin{macro}{\@savevbox@warningtrue}
% \begin{macro}{\@savevbox@warningfalse}
%   \changes{v2.8q}{2001/10/30}{Neu}
% Wenn eine der vertikalen Boxen in \cs{opening} zu einer \texttt{overbox
% \string\vbox\space} Meldung führt, weiss letztlich niemand, welche Box dafür
% verantwortlich war. Deshalb definieren wir hier ein Makro, das ggf. eine
% Meldung ausgibt, die erklärt, welches Element die Ursache war und was man
% tun kann. Das erste Argument ist dabei die Sollhöhe der Box, das zweite
% Argument ist der Boxinhalt, das dritte Argument is der Name des Elements,
% das zu hoch ist, das vierte der Name der Elementhöhe und das fünfte
% schließlich der Befehl, mit dem das Element vom Anwender definiert werden
% kann. Das optionale Argument wird nur bei der Ausgabe mit ausgegeben, findet
% jedoch bei der Berechnung keine Berücksichtigung.
%    \begin{macrocode}
\newif\if@savevbox@warning\@savevbox@warningtrue
\newcommand{\@savevbox}[6][]{%
  \begingroup%
    \vbox to #2{#1#3}%
    \if@savevbox@warning\@savevbox@warningfalse%
    \setbox0\vbox{#3}%
    \setlength{\@tempdima}{#2}%
    \setlength{\@tempdimb}{\ht0}\addtolength{\@tempdimb}{\dp0}%
    \ifdim \@tempdimb>\@tempdima%
      \addtolength{\@tempdimb}{-\@tempdima}%
      \ClassWarning{%
        scrlttr2%
      }{%
        #4 is \the\@tempdimb\space too high.\MessageBreak
        You have to change `\string#5'\MessageBreak
        or you have to define a smaller\MessageBreak
        #4 using \string#6.\MessageBreak
        Because of this too high #4\MessageBreak
        you've got an overfull \string\vbox\space message%
      }%
    \fi%
    \fi%
  \endgroup%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@firstheadfootfield}
%   \changes{v2.8n}{2001/09/08}{Neu}
%   \changes{v2.8q}{2001/10/30}{\cs{parfillskip} lokal auf 0 gesetzt}
%   \changes{v2.8q}{2001/10/30}{Fuß explizit in eine Box gesetzt}
%   \changes{v2.9l}{2003/01/23}{Positionierung verbessert}
% Ab Version 2.8n werden Kopf und Fuß der ersten Seite nicht mehr per
% Seitenstil \texttt{firstpage} gesetzt, sondern mit einem speziellen
% Feld. Dabei wird auch beachtet, dass dieses Feld im Kopf eine bestimmte aber
% beschränkte Höhe hat. Diese Höhe ist unabhängig von der normalen Kopfhöhe
% und richtet sich stattdessen nach der Position des Adressfeldes.
%    \begin{macrocode}
\newcommand*{\@firstheadfootfield}{%
  \typeout{Head of first page}%
  \move@topt\vskip\useplength{firstheadvpos}%
  \vb@t@z{%
    \rlap{\move@topl
      \setlength\@tempskipa{.5\paperwidth}%
      \addtolengthplength[-.5]{\@tempskipa}{firstheadwidth}%
      \hskip\@tempskipa
      \vbox{\hsize\useplength{firstheadwidth}%
        \setlength{\@tempskipa}{\useplength{toaddrvpos}}%
        \addtolengthplength[-1]{\@tempskipa}{firstheadvpos}%
        \addtolength{\@tempskipa}{-\baselineskip}%
%    \end{macrocode}
% Da sich einige -- beispielsweise |briefkopf.sty| -- darauf verlassen, dass
% |\textwidth| die Breite des Briefkopfes ist, wird diese Länge lokal
% entsprechend gesetzt. Außerdem wird dafür gesorgt, dass |\parfillskip| hier
% nicht berücksichtigt wird.
%    \begin{macrocode}
        \setlength{\textwidth}{\useplength{firstheadwidth}}%
        \setlength{\parfillskip}{\z@ \@plus 1fil}%
        \@savevbox{\@tempskipa}{\@firsthead\vskip \z@ \@plus .00001fil}%
        {head of first page}{firstheadvpos}{\firsthead}%
      }%
    }%
  }%
  \vskip-\useplength{firstheadvpos}\move@frompt
  \typeout{Foot of first page}%
  \move@topt
  \vb@t@z{%
    \rlap{\move@topl
      \setlength\@tempskipa{.5\paperwidth}%
      \addtolengthplength[-.5]{\@tempskipa}{firstfootwidth}%
      \hskip\@tempskipa%
      \vbox{\hsize\useplength{firstfootwidth}%
        \vskip\useplength{firstfootvpos}%
%    \end{macrocode}
% Da sich einige -- beispielsweise |briefkopf.sty| -- darauf verlassen, dass
% |\textwidth| die Breite des Brieffußes ist, wird diese Länge lokal
% entsprechend gesetzt. Außerdem wird dafür gesorgt, dass |\parfillskip| hier
% nicht berücksichtigt wird.
%    \begin{macrocode}
        \setlength{\textwidth}{\useplength{firstfootwidth}}%
        \setlength{\parfillskip}{\z@ \@plus 1fil}%
        \vbox{\hsize\useplength{firstfootwidth}\@firstfoot}%
      }%
    }%
  }%
  \move@frompt%
  {%
    \setlength{\@tempdima}{1in}\addtolength{\@tempdima}{\topmargin}%
    \addtolength{\@tempdima}{\headheight}%
    \addtolength{\@tempdima}{\headsep}%
    \addtolength{\@tempdima}{\textheight}%
    \addtolength{\@tempdima}{\footskip}%
    \addtolengthplength[-1]{\@tempdima}{firstfootvpos}%
    \ifdim\@tempdima>\z@\enlargethispage{-\@tempdima}%
    \else\if@enlargefp\enlargethispage{-\@tempdima}\fi\fi
  }%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@addrfield}
%   \changes{v2.8q}{2002/04/01}{\cs{parfillskip} lokal geändert}
%   \changes{v2.8q}{2002/06/03}{Sonderbehandlung für Adressfeld rechts}
%   \changes{v2.9o}{2003/02/20}{\cs{noindent} eingefügt bei
%     \texttt{specialmail}}
% Dasselbe gilt auch für das Adressfeld für Fensterumschläge. Die
% Rücksendeadresse und die Briefart wird dabei unterstrichen.
%    \begin{macrocode}
\newcommand*{\@addrfield}{%
  \if@afield
    \begingroup%
      \if@baddr
        \ifkomavarempty{backaddress}{%
          \let\@tempa\@empty\let\@tempb\@empty
        }{%
          \def\@tempa{backaddress}\def\@tempb{,\space}%
        }%
      \else
        \let\@tempa\@empty\let\@tempb\@empty
      \fi
      \ifkomavarempty{specialmail}{}{%
        \edef\@tempa{\@tempa\@tempb specialmail}\def\@tempb{,\space}%
      }%
      \typeout{Address (\@tempa\@tempb addressee)}%
    \endgroup%
    \move@topt\vskip\useplength{toaddrvpos}%
    \vb@t@z{{\setlength{\parfillskip}{\z@ \@plus 1fil}%
        \rlap{\move@topl
          \setlengthtoplength{\@tempskipa}{toaddrhpos}%
          \ifdim \@tempskipa<\z@
            \addtolength{\@tempskipa}{\paperwidth}%
            \addtolengthplength[-]{\@tempskipa}{toaddrwidth}%
          \fi
          \hskip\@tempskipa
          \@addtoplength{toaddrheight}{\useplength{backaddrheight}}%
          \@savevbox{\useplength{toaddrheight}}{\hsize\useplength{toaddrwidth}%
            \@savevbox[\vss]{\useplength{backaddrheight}}{%
              \hsize\useplength{toaddrwidth}%
              \if@baddr
                \ifkomavarempty{backaddress}{}{{%
                    \noindent%
                    \def\\{\usekomavar{backaddressseparator}\@ogobble}%
                    \underline{\scriptsize\usekomafont{backaddress}%
                      \usekomavar{backaddress}}}}%
              \fi
            }{backaddress}{backaddrheight}{\setkomavar}%
            \ifkomavarempty{specialmail}{}{%
              \vbox{\hsize\useplength{toaddrwidth}%
                \noindent\hspace*{\useplength{specialmailindent}}%
                \underline{\usekomavar{specialmail}}%
                \hspace*{\useplength{specialmailrightindent}}}%
            }%
            \vfil%
            \noindent\hskip\useplength{toaddrindent}%
            \setlength{\@tempdima}{\useplength{toaddrwidth}}%
            \addtolengthplength[-2]{\@tempdima}{toaddrindent}%
            \vbox{\hsize\@tempdima%
              \noindent\usekomavar{toname}\\\usekomavar{toaddress}}%
            \vfil\null}%
          {address field}{toaddrheight}%
          {\begin{letter} or you\MessageBreak
            have to define a smaller special purpose using\MessageBreak
            \string\specialmail}%
        }}}%
    \vskip-\useplength{toaddrvpos}\move@frompt
  \else
    \typeout{Address: No}%
  \fi
  }
%    \end{macrocode}
% \begin{macro}{\@ogobble}
%   \changes{v2.8q}{2002/01/22}{Neu}
% In obiger Definition wird das Makro \cs{@ogobble} verwendet, um
% einen optionalen Parameter zu vernichten, falls dieser existiert.
%    \begin{macrocode}
\newcommand*{\@ogobble}[1][]{}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@locfield}
%   \changes{v2.8o}{2001/09/17}{\cs{noindent} eingefügt}
%   \changes{v2.8q}{2002/02/07}{\cs{noindent} nach dem Logo}
%   \changes{v2.8q}{2002/07/23}{Berechnung der Breite hierher verschoben}
%   \changes{v2.8q}{2002/06/03}{Sonderbehandlung für Adressfeld rechts}
% Das "`locfield"' wird unabhängig von der Adresse gesetzt.
%    \begin{macrocode}
\newcommand*{\@locfield}{%
  \ifdim \useplength{locwidth}=\z@%
    \@setplength{locwidth}{\paperwidth}%
    \ifdim \useplength{toaddrhpos}>\z@
      \@addtoplength[-2]{locwidth}{\useplength{toaddrhpos}}%
    \else
      \@addtoplength[2]{locwidth}{\useplength{toaddrhpos}}%
    \fi
    \@addtoplength[-1]{locwidth}{\useplength{toaddrwidth}}%
    \if@bigloc%
      \@setplength[.66667]{locwidth}{\useplength{locwidth}}%
    \else%
      \@setplength[.5]{locwidth}{\useplength{locwidth}}%
    \fi%
  \fi%
  \ifnum 1=\@alignfrom
    \if@logo
      \ifkomavarempty{location}{%
        \setkomavar{location}{\null}}{}%
    \fi
  \fi
  \ifkomavarempty{location}{%
    \typeout{Location field: empty}%
    }{%
    \typeout{Location field: yes}%
    \move@topt\vskip\useplength{toaddrvpos}%
    \vb@t@z{\rlap{%
        \move@topl
        \setlengthtoplength[-]{\@tempskipa}{toaddrhpos}%
        \ifdim \@tempskipa<\z@
          \addtolength{\@tempskipa}{\paperwidth}%
        \else
          \addtolengthplength{\@tempskipa}{locwidth}%
        \fi
        \hskip\@tempskipa
        \llap{%
          \@savevbox{\useplength{toaddrheight}}{%
            \noindent\hsize\useplength{locwidth}%
            \ifnum 1=\@alignfrom
              \if@logo
                \ifkomavarempty{fromlogo}{}{%
                  {\raggedleft\noindent\usekomavar{fromlogo}\\
                    \vskip\parskip}\noindent}%
              \fi
            \fi
            \usekomavar{location}\vskip \z@ \@plus .00001fil}%
          {location field}{toaddrheight}{\setkomavar}%
          }}%
      }%
    \vskip-\useplength{toaddrvpos}\move@frompt
    }%
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@datefield}
%   \changes{v2.8q}{2002/01/14}{Schalter \cs{if@tempwa} wird bereits hier auf
%     \texttt{true} gesetzt}
% Je nachdem, welche Felder definiert sind, muss eine geschäftsmäßiger
% Standardbrief oder ein eher persönliches Aussehen gewählt werden.
% \begin{macro}{\@set@reffield}
% Einzelne Felder werden mit Hilfe dieses Makros gesetzt. Als Parameter wird
% der Name des Feldes übergeben. Es wird dann davon ausgegangen, dass der
% Name des Feldes in der jeweiligen Sprache im Makro
% \verb|\|\texttt{\emph{\#1}}\verb|name| und der Wert des Feldes in
% \verb|\var|\texttt{\emph{\#1}} zu finden ist.
%    \begin{macrocode}
\newcommand*{\@set@reffield}[1]{%
  \ifkomavarempty{#1}{}{%
    \settowidth{\@tempdima}{\strut\usekomavar{#1}}%
    \setbox0\hbox{\strut\scriptsize\sffamily\usekomavar*{#1}}%
    \ifdim \@tempdima<\wd0\setlength{\@tempdima}{\wd0}\fi
    \if@tempswa\enskip\hfill\fi
    \parbox[t]{\@tempdima}{\noindent\raggedright
        \strut\box0\\\strut\usekomavar{#1}}%
    \@tempswatrue
  }%
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@set@reffields}
%   \changes{v2.8q}{2002/01/14}{Neu}
% Dieses Makro enthält alle Aufrufe von \cs{@set@reffield}, die durchzuführen
% sind. Das Makro kann mit Hilfe von \cs{addtoreffields} erweitert werden.
%    \begin{macrocode}
\newcommand*{\@set@reffields}{}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\addtoreffields}
% Dieses Makro erwartet als obligatorisches Argument den Namen einer
% KOMA-Script Variable. Der Befehl arbeitet lokal zur aktuellen Umgebung.
%    \begin{macrocode}
\newcommand*{\addtoreffields}[1]{%
  \l@addto@macro{\@set@reffields}{\@set@reffield{#1}}%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\removereffields}
%   \changes{v2.8q}{2002/01/14}{Neu}
% Es gibt auch einen Befehl, um alle Felder aus der Geschäftszeile zu
% entfernen.
%    \begin{macrocode}
\newcommand*{\removereffields}{%
  \renewcommand*{\@set@reffields}{}%
}
%    \end{macrocode}
%  \end{macro}
%
% \begin{macro}{\defaultreffields}
%   \changes{v2.8q}{2002/01/14}{Neu}
% Ebenso ein Befehl, um die üblichen Felder zu setzen.
%    \begin{macrocode}
\newcommand*{\defaultreffields}{%
  \removereffields
  \addtoreffields{yourref}%
  \addtoreffields{yourmail}%
  \addtoreffields{myref}%
  \addtoreffields{customer}%
  \addtoreffields{invoice}%
}
%    \end{macrocode}
% Genau diesen Befehl rufen wir auch gleich auf:
%    \begin{macrocode}
\defaultreffields
%    \end{macrocode}
% \end{macro}
%
%   \changes{v2.3e}{1996/05/31}{Abstand zwischen Ort und Datum eingefügt}
%   \changes{v2.8o}{2001/09/18}{für den Brieftyp \texttt{KOMAold} anschließend
%     einen zusätzlichen vertikalen Abstand eingefügt}
%   \changes{v2.8q}{2001/11/13}{\cs{rlap} eingefügt}
%   \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
%   \changes{v2.8q}{2002/01/14}{Leertests entfernt, da in \cs{@set@reffield}
%     bereits enthalten}
%   \changes{v2.9l}{2003/01/28}{Berechnung von \texttt{refwidth} an die
%     Dokumentation angepasst}
%   \changes{v2.9l}{2003/01/28}{Berechnung von \texttt{refhpos} hinzugefügt}
%   \changes{v2.95}{2006/03/23}{Absatzeinzug mit \cs{setparsizes} abschalten}
%    \begin{macrocode}
\newcommand*{\@datefield}{{%
    \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
    \ifdim\useplength{refwidth}=\z@
      \if@refwide
        \@setplength{refwidth}{\paperwidth}%
        \ifdim \useplength{toaddrhpos}>\z@
          \@setplength{refhpos}{\useplength{toaddrhpos}}%
        \else
          \@setplength[-]{refhpos}{\useplength{toaddrhpos}}%
        \fi
        \@addtoplength[-2]{refwidth}{\useplength{refhpos}}%
      \else
        \@setplength{refwidth}{\textwidth}%
        \@setplength{refhpos}{\oddsidemargin}%
        \@addtoplength{refhpos}{1in}%
      \fi
    \else\ifdim\useplength{refhpos}=\z@
        \begingroup
%    \end{macrocode}
% Wir bestimmen zunächst, um wieviel die Geschäftszeile schmaler ist als der
% Textbereich.
%    \begin{macrocode}
          \setlength\@tempdima{\textwidth}%
          \addtolengthplength[-]{\@tempdima}{refwidth}%
%    \end{macrocode}
% Dann wird bestimmt, wie groß der linke Rand tatsächlich ist.
%    \begin{macrocode}
          \setlength\@tempdimb{\oddsidemargin}%
          \addtolength\@tempdimb{1in}%
%    \end{macrocode}
% Ebenso wird bestimmt, wie groß der linke und rechte Rand zusammen sind.
%    \begin{macrocode}
          \setlength{\@tempdimc}{\paperwidth}%
          \addtolength{\@tempdimc}{-\textwidth}%
%    \end{macrocode}
% Jetzt wird aus dem Gesamtrand der Geschäftszeile der linke Rand der
% Geschäftszeile so bestimmt, dass das Randverhältnis dabei unverändert
% bleibt. Dabei erlauben wir uns eine gewisse Rechenungenauigkeit beim
% Verhältnis.
%    \begin{macrocode}
          \divide\@tempdimb by 32768\relax
          \divide\@tempdimc by 32768\relax
          \ifdim\@tempdimc=\z@\else
            \multiply\@tempdima by\@tempdimb
            \divide\@tempdima by\@tempdimc
          \fi
          \edef\@tempa{\noexpand\endgroup
            \noexpand\@setplength{refhpos}{\the\@tempdima}}%
        \@tempa
    \fi\fi
    \@tempswafalse
    \move@topt\vskip\useplength{refvpos}%
%    \end{macrocode}
% Jetzt erfolgt noch die Absatzeinzugkorrektur. Danach kommt die eigentliche
% Arbeit.
%    \begin{macrocode}
    \rlap{\noindent\move@topl\hskip\useplength{refhpos}%
      \vbox{\hsize\useplength{refwidth}%
        \noindent\@set@reffields
        \ifkomavarempty{date}{%
          \if@tempswa
            \typeout{Reference line(s): with fields but without date}%
          \else
            \typeout{Reference line(s): no}%
            \aftergroup\aftergroup\aftergroup\@tempswatrue
          \fi
          }{%
          \if@tempswa
            \typeout{Reference line(s): with fields and date}%
            \settowidth{\@tempdima}{\strut\usekomavar{date}}%
            \setbox0\hbox{\scriptsize\sffamily\usekomavar*{date}}%
            \ifdim \@tempdima<\wd0\setlength{\@tempdima}{\wd0}\fi
            \enskip\hfill
            \parbox[t]{\@tempdima}{\noindent\raggedright%
              \strut\box0\\\strut\usekomavar{date}}%
          \else
            \typeout{Reference line: only place and date}%
            \enskip\hfill
            \ifkomavarempty{place}{}{%
              \usekomavar{place}\usekomavar{placeseparator}}%
            \usekomavar{date}%
            \@tempswatrue
          \fi
          }%
        }%
      }%
    \if@tempswa\vskip-\baselineskip\fi
    \vskip\useplength{refaftervskip}%
  }%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@maketitle}
%   \changes{v2.3b}{1996/01/14}{Verwendung von \cs{sectfont} für den
%     \cs{title}}
%   \changes{v2.8p}{2001/09/22}{\cs{titlefont} an Stelle von \cs{sectfont}}
%   \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
%   \changes{v2.9t}{2004/09/16}{\cs{par} in Größe und Schrift des Titels}
%   \changes{v2.95}{2006/03/22}{\cs{usekomafont} and Stelle fon \cs{titlefont}}
% \begin{macro}{\@subjfield}
%   \changes{v2.8q}{2001/10/19}{\cs{centerline} durch \cs{centering}
%     ersetzt}
%   \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
%   \changes{v2.8q}{2002/01/31}{wird mit hängendem Einzug gesetzt}
%   \changes{v2.95}{2006/03/23}{Absatzeinzug mit cs{setparsizes} einstellen}
% Der eigentliche Titel wir mit |\@maketitle| gesetzt. Dies sollte jedoch
% ebenso wie beim Betreff (|\@subjfield|) \emph{nicht} manuell geschehen.
%    \begin{macrocode}
\newcommand*{\@maketitle}{%
  \ifkomavarempty{title}{%
    \typeout{Title: no}%
  }{%
    \typeout{Title: yes}%
    {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
      \centering\LARGE\usekomafont{title}\usekomavar{title}\par}%
    \vskip\baselineskip%
  }%
}
\newcommand*{\@subjfield}{{%
    \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
    \ifkomavarempty{subject}{%
      \typeout{Subject: no}%
    }{%
      \if@subjafter%
        \typeout{Subject: after opening}%
        \centering%
      \else%
        \typeout{Subject: before opening}%
        \noindent%
      \fi%
      {\usekomafont{subject}\if@subj\@hangfrom{\usekomavar*{subject}}\fi%
        {\usekomavar{subject}}\par}\vskip2\baselineskip%
    }%
  }%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
%
% \subsection{Anweisungen für das Briefpapier}
%
% Für das Briefpapier gibt es etwas weniger Anweisungen. Teilweise werden hier
% auch die Anweisungen für den Briefbogen mit verwendet.
%
% \subsubsection{Kopf des Briefpapiers}
%
% Der Kopf des Briefpapiers wird wieder ganz normal über den Seitenstil
% festgelegt. Allerdings kann er entsprechende dem Briefbogen manuell
% definiert werden.
%
% \begin{macro}{\nexthead}
% \begin{macro}{\@nexthead}
% Die Voreinstellung ist ebenfalls von Optionen abhängig.
%    \begin{macrocode}
\newcommand*{\@nexthead}{%
  \rlap{\parbox[c]{\textwidth}{\raggedright\strut
      \ifnum\@pageat=0\pagemark\else\leftmark\fi\strut}}%
  \parbox[c]{\textwidth}{%
    \centering\strut
    \ifcase\@pageat
      \rightmark
    \or
      \pagemark
    \or
      \rightmark
    \fi\strut}%
  \llap{\parbox[c]{\textwidth}{\raggedleft\strut
      \ifcase\@pageat
        \leftmark
      \or
        \rightmark
      \or
        \pagemark
      \else
        \rightmark
      \fi\strut}}%
}%
%    \end{macrocode}
% \end{macro}
% Die Voreinstellung ist wiederum mit einer einfachen Benutzeranweisung
% änderbar.
%    \begin{macrocode}
\newcommand{\nexthead}[1]{%
  \renewcommand*{\@nexthead}{\noindent#1}%
}
%    \end{macrocode}
% \end{macro}
%
%
% \subsubsection{Fuß des Briefpapiers}
%
% \begin{macro}{\nextfoot}
% \begin{macro}{\@nextfoot}
% Je nach Optioneneinstellung kann sich die Seitenmarke in der Voreinstellung
% auch im Fuß befinden.
%    \begin{macrocode}
\newcommand*{\@nextfoot}{%
  \ifnum\@pageat>2
    \parbox[c]{\textwidth}{%
      \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi
      \strut\pagemark%
      }%
  \fi
}
%    \end{macrocode}
% \end{macro}
% Auch diese Einstellung ist per Benutzeranweisung leicht zu ändern.
%    \begin{macrocode}
\newcommand{\nextfoot}[1]{%
  \renewcommand*{\@nextfoot}{\noindent#1}%
}
%    \end{macrocode}
% \end{macro}
%
%
% \subsection{Die Brief-Umgebung}
%
% \begin{environment}{letter}
%   \changes{v2.8q}{2002/01/16}{optionales Argument hinzugefügt}
%   \changes{v2.8q}{2002/01/16}{Fußnotenzähler wird zurückgesetzt}
%   \changes{v2.9d}{2002/08/12}{Fußnotenzähler wird korrekt zurückgesetzt}
% Diese Umgebung ist etwas anders definiert, als normalerweise von
% \LaTeX gewohnt. Mit ihr können innerhalb eines Dokuments beliebig
% viele Briefe erzeugt werden. Eine der Abweichungen von der
% Standardklasse besteht darin, dass als optionales Argument Optionen
% gesetzt werden können.
% \begin{macro}{\stopletter}
% \begin{macro}{\@processto}
%   \changes{v2.9r}{2004/06/16}{robust gegen leeren Empfänger}
% \begin{macro}{\@xproc}
% Die Adresse, die als Argument der Briefumgebung übergeben wird, muss in Name
% und Adresse zerlegt werden.
%    \begin{macrocode}
\newenvironment{letter}[2][]{%
%    \end{macrocode}
% Als erstes wird eine neue Seite begonnen. Dies kann ggf. auch eine neue
% rechte Seite sein. Danach werden alle relevanten Zähler und Strafpunkte
% zurückgesetzt und der obligatorische Parameter ausgewertet.
%    \begin{macrocode}
  \newpage
  \if@twoside\ifodd\c@page\else\thispagestyle{empty}\null\newpage\fi\fi
  \setcounter{page}{\@ne}%
  \setcounter{footnote}{0}%
  \interlinepenalty=200\@processto{#2}%
%    \end{macrocode}
% Dann werden ggf. die übergebenen Optionen ausgeführt.
%    \begin{macrocode}
  \KOMAoptions{#1}%
%    \end{macrocode}
% Zum Schluss werden die per \cs{AtBeginLetter} angegeben Anweisungen
% ausgeführt.
%    \begin{macrocode}
  \@beginletterhook
}{%
  \stopletter\@@par\pagebreak\@@par%
}
\newcommand*{\stopletter}{}
\newcommand{\@processto}[1]{%
  \ifx\relax#1\relax\else
    \expandafter\@xproc#1\\\@nil\ifkomavarempty{toaddress}{}{%
    \expandafter\@xproc#1\@nil}%
  \fi
}
\newcommand*{\@xproc}{}
\long\def\@xproc#1\\#2\@nil{%
  \setkomavar{toname}{#1}\setkomavar{toaddress}{#2}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{environment}
% 
% \begin{macro}{\AtBeginLetter}
%   \changes{v2.8n}{2001/09/08}{Neu}
% \begin{macro}{\@beginletterhook}
%   \changes{v2.8n}{2001/09/08}{Neu}
% Wie oben zu sehen, wurde in den Anfang der Briefumgebung ein Haken
% eingefügt. Dieser wird auch tatsächlich intern genutzt. Er funktioniert
% prinzipiell wie der |\AtBeginDocument|-Haken. Zunächst macht der Haken rein
% gar nichts.
%    \begin{macrocode}
\newcommand{\AtBeginLetter}{\g@addto@macro\@beginletterhook}
\newcommand{\@beginletterhook}{}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\AtEndLetter}
%   \changes{v2.95}{2006/03/22}{Neu}
% Analog zu |\AtBeginLetter| gibt es auch ein |\AtEndLetter|. Als Haken wird
% hierbei |\stopletter| verwendet.
%    \begin{macrocode}
\newcommand{\AtEndLetter}{\g@addto@macro\stopletter}
%    \end{macrocode}
% \end{macro}
% 
% \begin{macro}{\stopbreaks}
% \begin{macro}{\startbreaks}
% \begin{macro}{\@nobreakvspace}
% \begin{macro}{\@nobreakvspacex}
% \begin{macro}{\@nobreakcr}
% Innerhalb von Briefen wird der Umbruch etwas anders gehandhabt.
% Dadurch soll der Brieftext besser positioniert werden.
%    \begin{macrocode}
\newcommand*{\stopbreaks}{\interlinepenalty \@M
 \def\par{\@@par\nobreak}\let\\=\@nobreakcr
 \let\vspace\@nobreakvspace}
\newcommand*{\@nobreakvspace}{%
  \@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
\newcommand*{\@nobreakvspacex}[1]{\ifvmode\nobreak\vskip #1\relax\else
 \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
\newcommand*{\@nobreakcr}{%
  \vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}}
\newcommand*{\startbreaks}{\let\\=\@normalcr
 \interlinepenalty 200\def\par{\@@par\penalty 200}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\opening}
%   \changes{v2.8n}{2001/09/08}{Komplett überarbeitet}
%   \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
%   \changes{v2.8q}{2002/03/25}{\cs{@PapersizeWarning}}
%   \changes{v2.95}{2003/03/23}{Absatzformatierung mit \cs{setparsizes}
%     einstellen}
% Denn beim Eröffnungsgruß mit |\opening| wird neben sämtlichen Feldern auch
% der Titel und der Betreff gesetzt.
%    \begin{macrocode}
\newcommand{\opening}[1]{%
  \@PapersizeWarning
  \@gen@firsthead
  \@mkboth{\scr@fromname@var}{\scr@subject@var}%
  \thispagestyle{empty}\noindent
  \@foldmarks\@firstheadfootfield\@addrfield\@locfield\@datefield
  \@maketitle
  \if@subjafter\else\@subjfield\fi
  {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative#1\par}%
  {\setlength{\@tempdima}{\baselineskip}%
    \addtolength{\@tempdima}{-\parskip}%
    \ifdim \@tempdima>\z@\vskip\@tempdima\fi}%
  \if@subjafter\@subjfield\fi%
  \@afterindentfalse\@afterheading
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\closing}
%   \changes{v2.2b}{1995/02/16}{{\cmd\fromsig} wird nicht mehr auf \cs{empty}
%     getestet sondern direkt eingesetzt}
%   \changes{v2.3b}{1996/01/14}{Abstand zwischen Schlussgruß und Signatur
%     erhöht}
%   \changes{v2.5d}{2000/06/10}{Abstand zwischen Schlussgruß und Signatur
%     variabel}
%   \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
%   \changes{v2.8q}{2002/02/05}{nicht mehr \cs{long}}
%   \changes{v2.8q}{2002/02/05}{darf \texttt{\cmd{\\}[\dots]} enthalten}
%   \changes{v2.95}{2003/03/23}{Absatzformatierung mit \cs{setparsizes}
%     einstellen}
% Außer dem Eröffnungsgruß mit |\opening| gibt es natürlich auch einen
% Schlussgruß mit |\closing|, bei dem außerdem die Unterschrift u.\,ä. gesetzt
% wird.
% \begin{macro}{\presig@skip}
%   \changes{v2.5d}{2000/06/10}{Neues Makro, das den Abstand zwischen
%     Schlussgruß und Signatur beinhaltet}
%   \changes{v2.8q}{2001/10/09}{Ersetzt durch Pseudo-Länge sigbeforevskip}
% \end{macro}
% \begin{macro}{\setpresigskip}
%   \changes{v2.5d}{2000/06/10}{Neues Makro, das den Abstand zwischen
%     Schlussgruß und Signatur setzt}
%   \changes{v2.8q}{2001/10/09}{Mit Hilfe der neuen Pseudo-Längen definiert}
% Das Makro |\presig@skip| beinhaltet dabei den Abstand zwischen Schlussgruß
% und Signatur. Da der Wert über ein Benutzerinterface per |\setpresigskip|
% gesetzt wird, muss hier kein kostbares Längenregister (skip oder dim)
% verschwendet werden, sondern ein Makro reicht aus. In |\setpresigskip| wird
% allerdings noch sichergestellt, dass die Fehlermeldung bei falschem
% Parameter möglichst nicht erst bei Verwendung auftritt.
%    \begin{macrocode}
%</letter>
%<lco&KOMAold>\def\setpresigskip{\@setplength{sigbeforevskip}}
%<*letter>
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@xtrimtempa}
%   \changes{v2.8q}{2002/02/05}{Neu (intern)}
% \begin{macro}{\@@xtrimtempa}
%   \changes{v2.8q}{2002/02/05}{Neu (intern)}
% Die beiden internen Macros werden benötigt, um beim Zerlegen eines mit
% \texttt{\cmd{\\}[\cs{dots}]} zusammengesetzten Arguments das optionale
% Argument in eckigen Klammern abzutrennen. Das Ergebnis steht anschließend in
% \cs{@tempa}.
%    \begin{macrocode}
\newcommand*{\@xtrimtempa}{%
  \@ifnextchar [{\@@xtrimtempa}{\@@xtrimtempa[]}}
\newcommand*{\@@xtrimtempa}{}
\def\@@xtrimtempa[#1]#2\@nil{\def\@tempa{#2}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\@tempdimaismaxwidthof}
%   \changes{v2.8q}{2002/02/05}{Neu (intern)}
% Das Makro zerlegt ein mit \texttt{\cmd{\\}[\cs{dots}]} zusammengesetzten
% Arguments und merkt in \cs{@tempdima} die Länge des längsten
% Elements. \cs{@tempdima} enthält beim Aufruf die minimale Länge.
%    \begin{macrocode}
\newcommand*{\@tempdimaismaxwidthof}{}
\def\@tempdimaismaxwidthof#1\\#2\@nil{%
  \settowidth{\@tempdimb}{\strut\ignorespaces#1}%
  \ifdim\@tempdima<\@tempdimb\setlength{\@tempdima}{\@tempdimb}\fi
  \def\@tempa{#2}\ifx\@tempa\@empty
    \let\@tempb\relax
  \else
    \expandafter\@xtrimtempa\@tempa\@nil
    \def\@tempb{\expandafter\@tempdimaismaxwidthof\@tempa\@nil}%
  \fi
  \@tempb
}
%    \end{macrocode}
%  \end{macro}
% Jetzt endlich zum eigentichen Befehl.
%   \changes{v2.9r}{2004/01/28}{Längenbegrenzung auf \cs{hsize}}
%   \changes{v2.9r}{2004/01/28}{das Argument darf leer sein}
%    \begin{macrocode}
\newcommand*{\closing}[1]{{%
    \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative\nobreak\par%
    \nobreak\vskip\baselineskip%
    \stopbreaks\noindent%
    \setlength{\@tempdima}{0pt}%
    \expandafter\@tempdimaismaxwidthof\scr@signature@var\\\@nil
    \expandafter\@tempdimaismaxwidthof\strut\ignorespaces#1\\\@nil
    \setlength{\@tempdimb}{\hsize}%
    \addtolength{\@tempdimb}{-\useplength{sigindent}}%
    \ifdim\@tempdima>\@tempdimb\setlength{\@tempdima}{\@tempdimb}\fi%
    \hspace{\useplength{sigindent}}%
    \parbox{\@tempdima}{\raggedsignature\strut\ignorespaces%
      #1\strut\\[\useplength{sigbeforevskip}]
      \strut\usekomavar{signature}\strut}}\par
  \nobreak\vskip\baselineskip%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ps}
%   \changes{v2.8n}{2001/09/08}{Komplett überarbeitet}
% Ebenfalls möglich ist ein Postscriptum. Dieser Befehl erwartet das
% Postscriptum nicht als Argument, sondern schaltet zum Nachtext um.
%    \begin{macrocode}
\newcommand\ps{\par%
  \ifdim\parskip=\z@%
    \vskip\baselineskip%
  \fi\startbreaks\noindent\ignorespaces%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\cc}
% Darüber hinaus gibt es noch einen Verteiler. Dieser wird sauber formatiert.
%   \changes{v2.6}{2001/01/03}{\cs{def} durch \cs{newcommand*} ersetzt}
%   \changes{v2.8n}{2001/09/08}{Komplett "uberarbeitet}
%   \changes{v2.9o}{2003/04/22}{\cs{parfillskip} angepasst}
%   \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf \texttt{1em plus 1fil}
%     geändert}
%   \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf \texttt{\cs{z@} plus
%       1fil} geändert}
%    \begin{macrocode}
\newcommand*{\cc}[1]{\par%
  \ifdim\parskip=\z@%
    \vskip\baselineskip%
  \fi\noindent%
  \begingroup
    \parbox[t]{\textwidth}{%
      \ifkomavarempty{ccseparator}{}{%
        \@hangfrom{%
          \strut\usekomavar*{ccseparator}\usekomavar{ccseparator}}%
        }%
      \ignorespaces #1\strut}%
    \setlength{\parfillskip}{\z@ \@plus 1fil}\par
  \endgroup
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\encl}
% Auch Anlagen werden ordentlich gesetzt.
%   \changes{v2.4a}{1997/06/06}{der Doppelpunkt bei den Anlagen wird nur noch
%     gesetzt, wenn \cs{enclname} nicht leer ist}
%   \changes{v2.6}{2001/01/03}{\cs{def} durch \cs{newcommand*} ersetzt}
%   \changes{v2.8n}{2001/09/08}{Komplett überarbeiten}
%   \changes{v2.8q}{2002/01/31}{Fehlendes \% ergänzt}
%   \changes{v2.9o}{2003/04/22}{\cs{parfillskip} angepasst}
%   \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf \texttt{1em plus 1fil}
%     geändert}
%   \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf \texttt{\cs{z@} plus
%       1fil} geändert}
%    \begin{macrocode}
\newcommand*{\encl}[1]{\par%
  \ifdim\parskip=\z@%
    \vskip\baselineskip%
  \fi\noindent%
  \begingroup
    \parbox[t]{\textwidth}{%
      \ifkomavarempty*{enclseparator}{}{%
        \@hangfrom{%
          \strut\usekomavar*{enclseparator}\usekomavar{enclseparator}}%
        }%
      \ignorespaces #1\strut}%
    \setlength{\parfillskip}{\z@ \@plus 1fil}\par
  \endgroup
}
%    \end{macrocode}
% \end{macro}
%
%
% \subsection{Briefspezifische Feld-Variablen}
%
% \begin{KOMAvar}{signature}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{place}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{location}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{backaddress}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{specialmail}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{title}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{fromlogo}
%   \changes{v2.8q}{2002/01/28}{Neu}
% Zunächst besitzt die Briefklasse einige Variablen, die von Haus aus nicht
% über einen Ausgabenamen verfügen, weil sie üblicherweise ohne Ausgabe einer
% Bezeichung verwendet werden. Diese Variablen haben teilweise auch keinen
% vordefinierten Inhalt. Der Inhalt muss erst vom Anwender gesetzt
% werden. Teilweise gibt es aber auch einen vordefinierten Inhalt, der von
% anderen Variablen abhängt.
%    \begin{macrocode}
\newkomavar{signature}
\setkomavar{signature}{\usekomavar{fromname}}
\newkomavar{place}
\newkomavar{location}
\newkomavar{backaddress}
\setkomavar{backaddress}{%
  \ifkomavarempty{fromname}{}{%
    \strut\ignorespaces\usekomavar{fromname}%
    \ifkomavarempty{fromaddress}{}{\\}}%
  \ifkomavarempty{fromaddress}{}{%
    \strut\ignorespaces\usekomavar{fromaddress}}%
  }
\newkomavar{specialmail}
\newkomavar{title}
\newkomavar{fromlogo}
%    \end{macrocode}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
%
% \begin{KOMAvar}{placeseparator}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{subjectseparator}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{ccseparator}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{enclseparator}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{backaddressseparator}
%   \changes{v2.8q}{2002/01/22}{Neu}
% \begin{KOMAvar}{phoneseparator}
%   \changes{v2.8q}{2002/03/25}{Neu}
% \begin{KOMAvar}{faxseparator}
%   \changes{v2.8q}{2002/03/25}{Neu}
% \begin{KOMAvar}{emailseparator}
%   \changes{v2.8q}{2002/03/25}{Neu}
% \begin{KOMAvar}{urlseparator}
%   \changes{v2.8q}{2002/03/25}{Neu}
% Daneben gibt es einige Trennzeichen. Diese haben ggf. als Ausgabenamen das
% Feld, für das sie als Trennzeichen dienen. Die Trennzeichen sind
% vordefiniert.
%    \begin{macrocode}
\newkomavar[\usekomavar{place}]{placeseparator}
\setkomavar{placeseparator}{,~}
\newkomavar[\subjectname]{subjectseparator}
\setkomavar{subjectseparator}{: }
\newkomavar[\ccname]{ccseparator}
\setkomavar{ccseparator}{: }
\newkomavar[\enclname]{enclseparator}
\setkomavar{enclseparator}{: }
\newkomavar{backaddressseparator}
\setkomavar{backaddressseparator}{,~}
\newkomavar[\phonename]{phoneseparator}
\setkomavar{phoneseparator}{:~}
\newkomavar[\faxname]{faxseparator}
\setkomavar{faxseparator}{:~}
\newkomavar[\emailname]{emailseparator}
\setkomavar{emailseparator}{:~}
\newkomavar[\wwwname]{urlseparator}
\setkomavar{urlseparator}{:~}
%    \end{macrocode}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar} 
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
%
% \begin{KOMAvar}{fromname}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{fromaddress}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{fromemail}
%   \changes{v2.8q}{2002/01/28}{Neu}
% \begin{KOMAvar}{fromurl}
%   \changes{v2.8q}{2002/01/28}{Neu}
% \begin{KOMAvar}{frombank}
%   \changes{v2.8q}{2002/01/28}{Neu}
% \begin{KOMAvar}{toname}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{toaddress}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{fromphone}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{fromfax}
%   \changes{v2.8q}{2002/01/28}{Neu}
% \begin{KOMAvar}{yourmail}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{yourref}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{myref}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{customer}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{invoice}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{subject}
%   \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{date}
%   \changes{v2.8q}{2002/01/16}{Neu}
% Desweiteren gibt es einige Variable, die auch einen Ausgabenamen haben, weil
% dieser üblicherweise vorangestellt wird. Eine Besonderheit stellt dabei
% \texttt{subject} dar. Der Ausgabename beinhaltet dabei nämlich auch die
% Trennzeichen, die hinter dem Namen üblicherweise stehen. Diese sind wiederum
% ein Variable, deren Name der Ausgabename des Feldes ist. Will man also nur
% den Namen aber nicht die Trennzeichen ändern, so ändert man statt dem Namen
% von \texttt{subject} den Namen von \texttt{subjectseparator}.
%
% Ähnlich ist es mit \texttt{toaddress} und \texttt{fromaddress}. Dort ist der
% Wert von \texttt{toname} bzw. \texttt{fromname} der Ausgabename. Bei
% \texttt{toaddress} und \texttt{fromaddress} wird davon jedoch intern kein
% Gebrauch gemacht. Die Variable \texttt{date} wird bereits so vordefiniert,
% dass auch weiterhin \cs{date} funktioniert.
%    \begin{macrocode}
\newkomavar[\headfromname]{fromname}
\newkomavar[\usekomavar{fromname}]{fromaddress}
\newkomavar[\headtoname]{toname}
\newkomavar[\usekomavar{toname}]{toaddress}
\newkomavar[\usekomavar*{phoneseparator}%
  \usekomavar{phoneseparator}]{fromphone}
\newkomavar[\usekomavar*{faxseparator}%
  \usekomavar{faxseparator}]{fromfax}
\newkomavar[\usekomavar*{emailseparator}%
  \usekomavar{emailseparator}]{fromemail}
\newkomavar[\usekomavar*{urlseparator}%
  \usekomavar{urlseparator}]{fromurl}
\newkomavar[\bankname]{frombank}
\newkomavar[\yourrefname]{yourref}
\newkomavar[\yourmailname]{yourmail}
\newkomavar[\myrefname]{myref}
\newkomavar[\customername]{customer}
\newkomavar[\invoicename]{invoice}
\newkomavar[\usekomavar*{subjectseparator}%
  \usekomavar{subjectseparator}]{subject}
\newkomavar[\datename]{date}
\setkomavar{date}{\@date}
%    \end{macrocode}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
% \end{KOMAvar}
%
% \iffalse
%</letter>
% \fi
%
% \iffalse
%</body>
% \fi
%
% \Finale
%
\endinput
%
% end of file `scrknpap.dtx'
%%% Local Variables:
%%% mode: doctex
%%% TeX-master: t
%%% End:
