% \CheckSum{2309}
% \iffalse
% ======================================================================
% scrlettr.dtx 
% Copyright (C) 1995-2000 Axel Kielhorn and Markus Kohm
%
% This file is part of the LaTeX2e KOMA-Script-Bundle
%
% This file can be redistributed and/or modified under the terms
% of the LaTeX Project Public License Version 1.0 distributed 
% together with this file. See LEGAL.TXT or LEGALDE.TXT.
%
% This bundle is written specialy for use at german-language. So the
% main documentation is german. There is also a english documentation,
% but this is NOT up-to-date.
% ----------------------------------------------------------------------
% scrlettr.dtx
% Copyright (C) 1995-2000 Axel Kielhorn und Markus Kohm
%
% Diese Datei ist Teil des LaTeX2e KOMA-Script-Pakets.
%
% Diese Datei kann nach den Regeln der LaTeX Project Public
% Licence Version 1.0, wie sie zusammen mit dieser Datei verteilt
% wird, weiterverbreitet und/oder modifiziert werden. Siehe dazu
% auch LEGAL.TXT oder LEGALDE.TXT.
%
% Dieses Paket ist f"ur den deutschen Sprachraum konzipiert. Daher ist
% auch diese Anleitung komplett in Deutsch. Zwar existiert auch eine
% englische Version der Anleitung, diese hinkt der deutschen Anleitung
% jedoch fast immer hinterher.
% ======================================================================
%
% \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         \~}
%
%<*dtx>
            \ProvidesFile{scrlettr.dtx}
%</dtx>
%<scrlettr>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
%<driver>\ProvidesFile{scrlettr.drv}
%<scrlettr>\ProvidesClass{scrlettr}
%<scraddr>\ProvidesPackage{scraddr}
%<dir>\ProvidesFile{dir.tex}
%<phone>\ProvidesFile{phone.tex}
%<*scrlettr|phone|dir|dtx|driver>
              [2000/01/20 v2.5c LaTeX2e KOMA
%</scrlettr|phone|dir|dtx|driver>
%<scrlettr>               document class]
%<scraddr>              [1996/01/22 v1.0 LaTeX2e KOMA package]
%<dir>              interactive address-directory generation]
%<phone>              interactive phone-number-directory generation]
%
%<*driver>
              Script bundle]
\documentclass{ltxdoc}
\usepackage[a4paper,BCOR15mm,DIV12]{typearea}
\usepackage{german}
\DoNotIndex{\.,\@@par,\@M,\@abstrtfalse,\@abstrttrue,\@addtoreset}
\DoNotIndex{\@afieldfalse,\@afieldtrue,\@afterheading}
\DoNotIndex{\@afterindentfalse,\@arabic,\@badmath,\@beginparpenalty}
\DoNotIndex{\@biglocfalse,\@bigloctrue,\@bsphack}
\DoNotIndex{\@car,\@cdr,\@centercr,\@cite,\@dblfloat,\@dotsep}
\DoNotIndex{\@dottedtocline,\@empty,\@endparpenalty,\@endpart,\@esphack}
\DoNotIndex{\@finclfalse,\@fincltrue,\@float,\@fontswitch,\@foldfalse}
\DoNotIndex{\@foldtrue,\@fslfalse,\@fsltrue,\@gobbletwo}
\DoNotIndex{\@hangfrom,\@highpenalty,\@hinclfalse,\@hincltrue,\@hslfalse}
\DoNotIndex{\@hsltrue,\@idxitem,\@ifnextchar,\@ifundefined,\@ifstar}
\DoNotIndex{\@itempenalty}
\DoNotIndex{\@latex@warning,\@m,\@mainmatterfalse,\@mainmattertrue}
\DoNotIndex{\@medpenalty,\@minus,\@mkboth,\@mparswitchfalse,\@mparswitchtrue}
\DoNotIndex{\@ne,\@nil,\@nobreakcr,\@nobreakfalse,\@nobreaktrue}
\DoNotIndex{\@nobreakvspace,\@nobreakvspacex,\@noitemerr,\@nomath,\@normalcr}
\DoNotIndex{\@openbibfalse,\@openbibtrue,\@openrightfalse,\@openrighttrue}
\DoNotIndex{\@plus,\@processto,\@reffalse,\@reftrue,\@restonecolfalse}
\DoNotIndex{\@restonecoltrue}
\DoNotIndex{\@subjfalse,\@subjtrue}
\DoNotIndex{\@tempa,\@tempboxa,\@tempdima,\@tempswafalse,\@tempswatrue}
\DoNotIndex{\@titlepagefalse,\@titlepagetrue,\@tocrmarg,\@topnewpage}
\DoNotIndex{\@topnum,\@twocolumnfalse,\@twocolumntrue,\@twosidefalse}
\DoNotIndex{\@twosidetrue}
\DoNotIndex{\@whiledim,\@whilenum,\@xnewline,\@xproc,\\,\ }
\DoNotIndex{\addcontentsline,\addpenalty,\addtocontents,\addtolength}
\DoNotIndex{\addvspace,\advance,\Alph,\alph,\arabic,\Ask,\AtBeginDocument}
\DoNotIndex{\begin,\begingroup,\bfseries,\bgroup,\box,\bullet}
\DoNotIndex{\c@figure,\c@page,\c@secnumdepth,\c@table,\c@tocdepth}
\DoNotIndex{\cal,\cdot,\centering,\changes,\ClassWarningNoLine}
\DoNotIndex{\cleardoublepage,\clearpage}
\DoNotIndex{\cmd,\col@number,\CurrentOption,\CodelineIndex,\csname}
\DoNotIndex{\day,\dblfloatpagefraction,\dbltopfraction,\Decisionfalse}
\DoNotIndex{\Decisiontrue,\DeclareOldFontCommand}
\DoNotIndex{\DeclareOption,\def,\defpar,\DisableCrossrefs}
\DoNotIndex{\divide,\documentclass,\DoNotIndex,\dotfill}
\DoNotIndex{\iden,\ifdim,\else,\fi,\egroup,\empty,\em,\EnableCrossrefs,\end}
\DoNotIndex{\end@dblfloat,\endcsname,\endletter}
\DoNotIndex{\end@float,\endgroup,\endlist,\endquotation,\endtitlepage}
\DoNotIndex{\everypar,\ExecuteOptions,\expandafter}
\DoNotIndex{\fboxrule,\fboxsep,\fontsize,\frenchspacing}
\DoNotIndex{\gdef,\global}
\DoNotIndex{\hangindent,\hbox,\hfil,\hfill,\hrule,\hsize,\hskip,\hspace,\hss}
\DoNotIndex{\if@tempswa,\ifcase,\or,\fi,\fi}
\DoNotIndex{\ifnum,\ifodd,\ifvmode,\ifx,\fi,\fi,\fi,\fi}
\DoNotIndex{\ignorespaces,\input,\InputIfFileExists,\item,\itshape,\j,\ja}
\DoNotIndex{\kern,\LARGE,\Large,\leavevmode,\leftmark,\leftskip,\let}
\DoNotIndex{\lineskip,\list,\long}
\DoNotIndex{\m@ne,\m@th,\marginpar,\marginparpush,\markboth,\markright}
\DoNotIndex{\mathbf,\mathcal}
\DoNotIndex{\mathit,\mathnormal,\mathrm,\mathsf,\mathtt,\MessageBreak,\month}
\DoNotIndex{\newblock,\newcommand,\newcount,\newcounter,\newdimen}
\DoNotIndex{\newenvironment,\newlength,\newpage,\nobreak,\noindent}
\DoNotIndex{\normalfont,\normallineskip,\normalsize,\null,\number}
\DoNotIndex{\numberline}
\DoNotIndex{\OldMakeindex,\OnlyDescription,\overfullrule}
\DoNotIndex{\p@,\PackageError,\PackageInfo,\PackageWarningNoLine}
\DoNotIndex{\pagenumbering,\pagestyle,\par,\paragraph,\parbox}
\DoNotIndex{\PassOptionsToPackage,\pcal,\penalty,\pmit,\PrintChanges}
\DoNotIndex{\PrintIndex,\ProcessOptions,\protect,\providecommand}
\DoNotIndex{\ProvidesClass}
\DoNotIndex{\raggedbottom,\raggedleft,\raggedright,\refstepcounter,\relax}
\DoNotIndex{\renewcommand,\RequirePackage,\reset@font,\reversemarginpar}
\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rmfamily,\Roman,\roman,\rule}
\DoNotIndex{\sc@septext,\sc@temp,\sc@@temp,\scshape,\secdef,\setbox}
\DoNotIndex{\setcounter,\setlength}
\DoNotIndex{\settowidth,\sfcode,\sffamily,\skip,\sloppy,\slshape,\space}
\DoNotIndex{\string,\strip,\strut,\subjectoff,\subjecton}
\DoNotIndex{\ta@temp,\the,\thispagestyle,\triangleright,\ttfamily,\twocolumn}
\DoNotIndex{\typein,\typeout}
\DoNotIndex{\undefined,\underline,\unhbox,\usecounter,\usepackage}
\DoNotIndex{\vadjust,\vfil,\vfill,\vspace}
\DoNotIndex{\wd,\xdef,\y,\year,\yes,\z@}
%
\begin{document}
 \DocInput{scrlettr.dtx}
\end{document}
%</driver>
% \fi
%
% \GetFileInfo{scrlettr.dtx}
%
% \makeatletter
% \def\macro{\begingroup
%    \catcode`\\12
%    \MakePrivateLetters \m@cro@ 0}
% \def\environment{\begingroup
%    \catcode`\\12
%    \MakePrivateLetters \m@cro@ 1}
% \def\option{\begingroup
%    \catcode`\\12
%    \MakePrivateLetters \m@cro@ 2}
% \long\def\m@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist
%   \edef\saved@macroname{\string#2}%
%   \ifcase #1%
%     \edef\saved@@macroname{\expandafter\@gobble\saved@macroname}
%   \or
%     \edef\saved@@macroname{\expandafter\@gobble\saved@macroname}
%   \else
%     \let\saved@@macroname\saved@macroname
%   \fi
%   \def\makelabel##1{\llap{##1}}%
%   \if@inlabel
%     \let\@tempa\@empty \count@\macro@cnt
%     \loop \ifnum\count@>\z@
%       \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
%     \edef\makelabel##1{\llap{\vtop to\baselineskip
%                                {\@tempa\hbox{##1}\vss}}}%
%     \advance \macro@cnt \@ne
%   \else  \macro@cnt\@ne  \fi
%   \edef\@tempa{\noexpand\item[%
%      \ifcase #1%
%        \noexpand\PrintMacroName
%      \or
%        \noexpand\PrintEnvName
%      \else
%        \noexpand\PrintOptionName
%      \fi
%      {\string#2}]}%
%   \@tempa
%   {\advance\c@CodelineNo\@ne
%    \ifcase #1%
%       \SpecialMainIndex{#2}\nobreak
%       \DoNotIndex{#2}%
%    \or
%       \SpecialMainEnvIndex{#2}\nobreak
%    \else
%       \SpecialOptionIndex{#2}\nobreak
%    \fi
%    }%
%   \ignorespaces}
% \let\endoption\endtrivlist
% \@ifundefined{PrintOptionName}
%    {\def\PrintOptionName#1{\strut \MacroFont #1\ }}{}
% \def\SpecialOptionIndex#1{\@bsphack
%     \index{#1\actualchar{\protect\ttfamily#1}
%            (option)\encapchar usage}%
%     \index{options:\levelchar{\protect\ttfamily#1}\encapchar
%            usage}\@esphack}
% \def\changes@#1#2#3{%
%   \protected@edef\@tempa{\noexpand\glossary{#1\levelchar
%                          \ifx\saved@macroname\@empty
%                            \space
%                            \actualchar
%                            \generalname
%                          \else
%                            \saved@@macroname
%                            \actualchar
%                            \string\verb\quotechar*\verbatimchar%
%                            \saved@macroname
%                            \verbatimchar
%                          \fi
%                          :\levelchar #3}}%
%   \@tempa\endgroup\@esphack}
% \makeatother
%
% \title{Die Brief-class im \textsf{KOMA-Script} Paket\thanks{Diese Datei
%        hat die Versionsnummer \fileversion, letzte "Anderung vom
%        \filedate.}}
% \author{Frank Neukam\and Markus Kohm}
% \date{\filedate}
% \maketitle
%
% \tableofcontents
%
% \changes{v2.0e}{1994/10/28}{Erste Version, die \texttt{docstrip} verwendet.}
% \changes{v2.3b}{1996/01/14}{Diverse \cs{newcommand} mit und ohne
%                             Parameter durch \cs{newcommand*} ersetzt.}
% \changes{v2.3b}{1996/01/14}{Diverse \cs{renewcommand} mit und ohne
%                             Parameter durch \cs{renewcommand*} ersetzt.}
%
% \part{Anleitung}
%
% \section{Generelles}
%
% \subsection{Rechtliches}
% Es wird keinerlei Haftung "ubernommen f"ur irgendwelche Sch"aden,
% die aus der Benutzung der Programme und Dateien des hier
% beschriebenen Paketes folgen.
%
% \subsection{Das \textsf{KOMA-Script} Paket}
%
% Das gesamte \textsf{KOMA-Script} Paket besteht aus mehreren Teilen.
% Der Teil |scrclass.dtx| beinhaltet die Haupt-classes |scrartcl.cls|,
% |scrreprt.cls| und |scrbook.cls| sowie das von diesen ben"otigte package
% |typearea.sty|.
%
% Die urspr"unglich ebenfalls in |komascr.dtx| enthaltene Anleitung wurde von
% Harald Sommerfeldt "uberarbeitet und ist nun als getrennte Datei
% |scrguide.tex| zu finden. |scrguide.tex| sollte am selben Ort verf"ugbar
% sein, an dem Sie auch |scrlettr.dtx| gefunden haben.
%
% Die urspr"unglich in |komascr.dtx| enthaltene Brief-class |scrlettr.cls|
% liegt nun hier als |scrlettr.dtx| ebenfalls separat bei.
%
% Zum Gesamtpaket geh"oren weitere Dateien.
% Eine Aufz"ahlung finden Sie in der Installationsanleitung |liesmich.txt|.
% Dort ist auch angegeben, wie die classes, packages und anderer Dateien
% aus den |*.dtx|-Dateien extrahiert werden.
%
%
% \StopEventually
%
% \part{"`scrlettr"'-class}
%
% \section{Implementierung}
%
%    \begin{macrocode}
%<*scrlettr>
%    \end{macrocode}
%
% \changes{v2.0}{1993/12/01}{Letzte "`script\_l"'-\LaTeX~2.0-Version
%                            von Frank Neukam}
% \changes{v2.0-2e}{1994/10/08}{"`script\_l"'-\LaTeXe-Version
%                               von Axel Kielhorn}
% \changes{v2.0e}{1994/10/12}{Erste "`scrlettr"'-Version im
%                             \textsf{KOMA-Script} Paket}
% \changes{v2.3e}{1996/05/31}{Faltmarken korrigiert}
% Die Implementierung von |scrlettr| stammt im wesentlichen von Frank Neukam.
% Axel Kielhorn hat sie nach \LaTeXe portiert, wobei die von Roland T. Lichti
% modifizierte Version zugrunde gelegt wurde. Markus Kohm hat nur einige
% wenige, unwesentliche "Anderungen vorgenommen.
%
% \subsection{Optionen}
%
% \changes{v2.4c}{1997/11/25}{Neuer Schalter \cs{if@orgdate} f"ur die neuen
%                             Optionen \texttt{orgdate}, \texttt{scrdate}}
%    \begin{macrocode}
\newcommand*\@ptsize{}
\newif\if@bigloc
\newif\if@orgdate
%    \end{macrocode}
%
% \subsubsection{Standardoptionen}
%
% \changes{v2.1a}{1994/10/29}{Meldung bei \texttt{twoside}-Option in
%                             "`scrlettr"' ge"andert}
%  \begin{option}{10pt}
%  \begin{option}{11pt}
%  \begin{option}{12pt}
%  \begin{option}{oneside}
%  \begin{option}{twoside}
%  \begin{option}{draft}
%  \begin{option}{final}
%    \begin{macrocode}
\DeclareOption{10pt}{\renewcommand*\@ptsize{0}}
\DeclareOption{11pt}{\renewcommand*\@ptsize{1}}
\DeclareOption{12pt}{\renewcommand*\@ptsize{2}}
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue%
    \ClassWarningNoLine{scrlettr}{This is no twoside-layout but openright!}
}
\DeclareOption{draft}{\overfullrule 5pt}
\DeclareOption{final}{\setlength\overfullrule{0pt}}
%    \end{macrocode}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%
% \subsubsection{Optionen f"ur das Adre"sfenster}
%
%  \begin{option}{wlocfield}
%  \begin{option}{slocfield}
% Mit Hilfe der Optione |wlocfield| kann der Platz neben dem Adre"sfeld
% vergr"o"sert werden. Mit |slocfield| wird der normale, kleine Platz
% verwendet.
%    \begin{macrocode}
\DeclareOption{wlocfield}{\@bigloctrue}
\DeclareOption{slocfield}{\@biglocfalse}
%    \end{macrocode}
%  \end{option}
%  \end{option}
%
% \subsubsection{Optionen f"ur das Datum}
%
% \begin{option}{orgdate}
% \changes{v2.4c}{1997/11/25}{Neue Option}
% \begin{option}{scrdate}
% \changes{v2.4c}{1997/11/25}{Neue Option}
%    \begin{macrocode}
\DeclareOption{orgdate}{\@orgdatetrue}
\DeclareOption{scrdate}{\@orgdatefalse}
%    \end{macrocode}
% \end{option}
% \end{option}
%
% \subsubsection{Optionenwahl}
%
% Standard sind bei |scrlettr| die Optionen |12pt|, |oneside|, |final| und
% |slocfield|. Diese k"onnen durch explizite Optionsangabe "uberschrieben
% werden.
%    \begin{macrocode}
\ExecuteOptions{12pt,oneside,final,slocfield}
\ProcessOptions
\input{size1\@ptsize.clo}
%    \end{macrocode}
%
% \subsection{"`Alte"' Fontauswahlbefehle}
%
%  \begin{macro}{\rm}
%  \begin{macro}{\sf}
%  \begin{macro}{\tt}
%  \begin{macro}{\bf}
%  \begin{macro}{\it}
%  \begin{macro}{\sl}
%  \begin{macro}{\sc}
%  \begin{macro}{\sfb}
% \changes{v2.3b}{1996/01/14}{nicht mehr mathematisch.}
% \changes{v2.3b}{1996/01/14}{Keine Unterscheidung mehr f"ur den
%                             Kompatibilit"atsmodus.}
% Die alten Font-Auswahlbefehle werden zwar noch unterst"utzt, sollten
% aber in der Regel nicht mehr verwendet werden, da sie nach dem alten
% Fontauswahlverfahren arbeiten. Im Kompatibilit"atsmodus wurde dies
% beim nicht standardgem"a"sen Befehl |\sfb| noch verst"arkt.
%    \begin{macrocode}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareOldFontCommand{\sfb}{\normalfont\sffamily\bfseries}{\@nomath\sfb}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% \subsection{Font-Variablen}
%
%  \begin{macro}{\descfont}
%  \begin{macro}{\sectfont}
% \changes{v2.3b}{1996/01/14}{\cs{sectfont} wird nun verwendet}
%  \begin{macro}{\pnumfont}
%  \begin{macro}{\headfont}
%  \begin{macro}{\capfont}
%  \begin{macro}{\caplabelfont}
% Auch in der |scrlettr|-class werden verschiedene Font-Variablen verwendet.
%    \begin{macrocode}
\newcommand*\descfont{\sffamily\bfseries}
\newcommand*\sectfont{\sffamily\bfseries}
\newcommand*\pnumfont{\normalfont}
\newcommand*\headfont{\slshape}
\newcommand*\capfont{\normalfont}
\newcommand*\caplabelfont{\normalfont}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% \subsection{Standard-Labels}
%
% \changes{v2.2b}{1995/02/16}{Sprachauswahl an german.sty Version 2.5b
%                             angepa"st}
%  \begin{macro}{\captionsenglish}
%  \begin{macro}{\captionsUSenglish}
%  \begin{macro}{\captionsamerican}
% \changes{v2.4c}{1997/11/25}{american identisch mit USenglish definiert.}
%  \begin{macro}{\captionsbritish}
% \changes{v2.4c}{1997/11/25}{british identisch mit english definiert.}
%  \begin{macro}{\captionsUKenglish}
% \changes{v2.4c}{1997/11/25}{UKenglish identisch mit english definiert.}
%  \begin{macro}{\captionsgerman}
% \changes{v2.2a}{1994/01/26}{{\cmd\subjectname} korrigiert}
%  \begin{macro}{\captionsaustrian}
%  \begin{macro}{\captionsngerman}
% \changes{v2.5}{1999/09/08}{ngerman neu und identisch mit german.}
% \changes{v2.5b}{2000/01/03}{ngerman korrigiert.}
%  \begin{macro}{\captionsfrench}
%  \begin{macro}{\captionsitalian}
% \changes{v2.3e}{1996/05/31}{Sprachspende von Simone Naldi}
%  \begin{macro}{\captionsspanish}
% \changes{v2.4c}{1997/11/25}{Sprachspende von Ralph J. Hangleiter}
% Bei |scrlettr| gibt es eine gro"se Anzahl von Label-Variablen, die es
% in den Standard-classes nicht gibt, die also auch nicht in
% Sprachanpassungen wie |german.sty| oder |german3.sty| vorhanden sind.
% Deshalb ist es notwendig diese Labels hier neu zu definieren. Weil es
% in fr"uheren Versionen zu Problemen damit gekommen ist, werden diese
% jedoch erst bei |\begin{document}| definiert. Sollen sie nachtr"aglich
% ge"andert werden, mu"s dies \emph{nach} |\begin{document}| geschehen.
%
%    \begin{macrocode}
\AtBeginDocument{
 \def\captionsenglish{%
  \def\yourrefname{Your ref.}
  \def\yourmailname{Your letter of}
  \def\myrefname{Our ref.}
  \def\customername{Customer no.}
  \def\invoicename{Invoice no.}
  \def\subjectname{Subject}
  \def\ccname{cc}
  \def\enclname{encl}
  \def\headtoname{To}
  \def\datename{Date}
  \def\pagename{Page}}
 \let\captionsUSenglish=\captionsenglish
 \let\captionsamerican=\captionsUSenglish
 \let\captionsbritish=\captionsenglish
 \let\captionsUKenglish=\captionsenglish
 \def\captionsgerman{%
  \def\yourrefname{Ihr Zeichen}
  \def\yourmailname{Ihr Schreiben vom}
  \def\myrefname{Unser Zeichen}
  \def\customername{Kundennummer}
  \def\invoicename{Rechnungsnummer}
  \def\subjectname{Betr.}
  \def\ccname{Kopien an}
  \def\enclname{Anlagen}
  \def\headtoname{An}
  \def\datename{Datum}
  \def\pagename{Seite}}
 \let\captionsaustrian=\captionsgerman
 \let\captionsngerman=\captionsgerman
 \def\captionsfrench{%
  \def\yourrefname{Vos r\'ef\'erences}
  \def\yourmailname{Votre lettre du}
  \def\myrefname{Nos r\'ef\'erences}
  \def\customername{Num\'ero de client}
  \def\invoicename{Num\'ero de facture}
  \def\subjectname{Concernant}
  \def\ccname{Copie \`a}
  \def\enclname{Annexes}
  \def\headtoname{A}
  \def\datename{Date}
  \def\pagename{Page}}
 \def\captionsitalian{%
  \def\yourrefname{Vs./Rif.}
  \def\yourmailname{Vs.~lettera del}
  \def\myrefname{Ns./Rif.}
  \def\customername{Nr.~cliente}
  \def\invoicename{Nr.~fattura}
  \def\subjectname{Oggetto}
  \def\ccname{Per conoscenza}
  \def\enclname{Allegato}
  \def\headtoname{A}
  \def\datename{Data}
  \def\pagename{Pagina}}
 \def\captionsspanish{%
  \def\yourrefname{Su ref.}
   \def\yourmailname{Su carta de}
   \def\myrefname{Nuestra ref.}
   \def\customername{No. de cliente}
   \def\invoicename{No. de factura}
   \def\subjectname{Asunto}
   \def\ccname{Copias}
   \def\enclname{Adjunto}
   \def\headtoname{A}
   \def\datename{Fecha}
   \def\pagename{P\'agina}}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\dateenglish}
%  \begin{macro}{\dateUSenglish}
%  \begin{macro}{\dateamerican}
% \changes{v2.4c}{1997/11/25}{american identisch mit USenglish definiert.}
%  \begin{macro}{\datebritish}
% \changes{v2.4c}{1997/11/25}{british identisch mit english definiert.}
%  \begin{macro}{\dateUKenglish}
% \changes{v2.4c}{1997/11/25}{UKenglish identisch mit english definiert.}
%  \begin{macro}{\dategerman}
%  \begin{macro}{\dateaustrian}
%  \begin{macro}{\datengerman}
% \changes{v2.5}{1999/09/08}{ngerman neu und identisch mit german.}
%  \begin{macro}{\datefrench}
%  \begin{macro}{\dateitalian}
% \changes{v2.3e}{1996/05/31}{Ich hoffe, da"s das stimmt}
%  \begin{macro}{\datespanish}
% \changes{v2.4c}{1997/11/25}{Ich hoffe, da"s das stimmt}
% \changes{v2.4c}{1997/11/25}{Datumsumschaltung nicht mehr zwingend.}
% Dar"uber hinaus ist auch das Datumsformat sprachabh"angig. Dies wird
% hier ebenfalls beachtet.
%    \begin{macrocode}
 \if@orgdate
  \ifx\dateenglish\undefined
   \def\dateenglish{\def\today{\number\day/\number\month/\number\year}}
  \fi
 \else
  \def\dateenglish{\def\today{\number\day/\number\month/\number\year}}
  \def\dateUSenglish{\def\today{\number\month/\number\day/\number\year}}
  \let\datebritish=\dateenglish
  \let\dateUKenglish=\dateenglish
  \let\dateamerican=\dateUSenglish
  \def\dategerman{\def\today{\number\day.\,\number\month.\,\number\year}}
  \let\dateaustrian=\dategerman
  \let\datengerman=\dategerman
  \let\datefrench=\dategerman
  \let\dateitalian=\dategerman
  \let\datespanish=\dategerman
 \fi
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
% Zum Schlu"s findet noch die eigentliche Auswahl statt. Diese orientiert
% sich nun an der Auswahl nach german.sty 2.5b und verwendet keine festen
% Sprachzuordnungen mehr. Daf"ur sind nun keine Erweiterungen f"ur andere
% Sprachen mehr m"oglich.
% \changes{v2.2c}{1995/03/20}{Im Sprachenvergleich fehlten die "`="' hinter
%                             {\cmd\language}}
% \changes{v2.4c}{1997/11/25}{Sprachauswahl um american, british, UKenglish
%                             und spanish erweitert}
% \changes{v2.5}{1999/09/08}{Sprachauswahl um ngermen erweitert}
% \changes{v2.5b}{2000/01/20}{Reaktivierung der Sprache geschieht nun
%                             via \cs{languagename}, soweit dies
%                             m"oglich ist}

%    \begin{macrocode}
 \captionsenglish
 \dateenglish
 \ifx\languagename\undefined
  \ClassWarningNoLine{scrlettr}{\string\languagename\space not
    defined, using \string\language.\MessageBreak
    This may result in use of wrong language!\MessageBreak
    You should use a compatible language
    package\MessageBreak
    (e.g. `Babel', `german', `french', ...)}
  \ifx\l@american\undefined\else\ifnum\language=\l@american
  \captionsamerican
  \dateamerican
  \fi\fi
  \ifx\l@british\undefined\else\ifnum\language=\l@british
  \captionsbritish
  \datebritish
  \fi\fi
  \ifx\l@UKenglish\undefined\else\ifnum\language=\l@UKenglish
  \captionsUKenglish
  \dateUKenglish
  \fi\fi
  \ifx\l@USenglish\undefined\else\ifnum\language=\l@USenglish
  \captionsUSenglish
  \dateUSenglish
  \fi\fi
  \ifx\l@austrian\undefined\else\ifnum\language=\l@austrian
  \captionsaustrian
  \dateaustrian
  \fi\fi
  \ifx\l@german\undefined\else\ifnum\language=\l@german
  \captionsgerman
  \dategerman
  \fi\fi
  \ifx\l@ngerman\undefined\else\ifnum\language=\l@ngerman
  \captionsngerman
  \datengerman
  \fi\fi
  \ifx\l@french\undefined\else\ifnum\language=\l@french
  \captionsfrench
  \datefrench
  \fi\fi
  \ifx\l@italian\undefined\else\ifnum\language=\l@italian
  \captionsitalian
  \dateitalian
  \fi\fi
  \ifx\l@spanish\undefined\else\ifnum\language=\l@spanish
  \captionsspanish
  \datespanish
  \fi\fi
 \else
   \expandafter\selectlanguage\expandafter{\languagename}
   \ClassInfo{scrlettr}{used language is \languagename}
 \fi
}
%    \end{macrocode}
%
% \subsection{Seitenspiegel}
%
% |scrlettr| arbeitet mit einem festen Seitenspiegel, der f"ur Briefe
% im A4-Format ausgelegt ist.
% \changes{v2.2c}{1995/05/25}{{\cmd\headheight} und {\cmd\textheight}
%                             ge"andert}
%
%    \begin{macrocode}
\oddsidemargin  0in
\evensidemargin 0in
\marginparwidth 0.9in
\marginparsep   0.1in
\marginparpush  0.45\baselineskip
\topmargin      -19mm % mk 941012, was: -15.5mm
\headheight     23mm  % mk 950411, was: 22mm
\headsep        8mm   % mk 941012, was: 9mm
\footskip       20mm  % mk 941012, was: 30mm
\textheight     226mm % mk 950411, was: 217mm
\textwidth      159.2mm

\parskip        0.5\baselineskip % mk 941012
\parindent      0pt
\smallskipamount=0.5\parskip
\medskipamount  =\parskip
\bigskipamount  =2\parskip
\footnotesep    0.8\baselineskip
\skip\footins   0.75\baselineskip plus 2pt minus 4pt
\skip\@mpfootins =\skip\footins
\columnsep      1cc
\columnseprule  0pt
%    \end{macrocode}
%
% \subsection{Flie"sumgebungen}
%
% Es folgen die Einstellungen f"ur Abbildungen
%    \begin{macrocode}
\floatsep       1\baselineskip plus 2pt minus 2pt
\textfloatsep   20pt plus 2pt minus 4pt
\intextsep      1\baselineskip plus 2pt minus 2pt
\dblfloatsep    1\baselineskip plus 2pt minus 2pt
\dbltextfloatsep 20pt plus 2pt minus 4pt
\@fptop 0pt plus 1fil
\@fpsep 0.7\baselineskip plus 2fil
\@fpbot 0pt plus 1fil
\@dblfptop 0pt plus 1fil
\@dblfpsep 0.7\baselineskip plus 2fil
\@dblfpbot 0pt plus 1fil
%    \end{macrocode}
% und f"ur Flie"stabellen
%    \begin{macrocode}
\arraycolsep    5pt
\tabcolsep      6pt
\arrayrulewidth 0.4pt
\doublerulesep  2pt
\fboxsep        3pt
\fboxrule       0.4pt
\tabbingsep \labelsep
%    \end{macrocode}
%
% \subsection{Listen-Umgebungen}
%
% Die Einstellungen f"ur Listenumgebungen entsprechen im Wesentlichen
% den gewohnten.
%    \begin{macrocode}
\topsep         0.25\baselineskip
\partopsep      0pt
\itemsep        0.25\baselineskip
\parsep         0.25\baselineskip % ak: 1\baselineskip
\labelsep       .5em
\leftmargini    2.5em
\leftmarginii   2.2em
\leftmarginiii  1.87em
\leftmarginiv   1.7em
\leftmarginv    1em
\leftmarginvi   1em
\leftmargin\leftmargini
\labelwidth\leftmargini
\advance\labelwidth-\labelsep
\def\@listI{\leftmargin\leftmargini}
\let\@listi\@listI
\def\@listii{\leftmargin\leftmarginii
 \labelwidth\leftmarginii\advance\labelwidth-\labelsep}
\def\@listiii{\leftmargin\leftmarginiii
 \labelwidth\leftmarginiii\advance\labelwidth-\labelsep}
\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}
\@listi

\@lowpenalty    51
\@medpenalty    151
\@highpenalty   301
\@beginparpenalty -\@lowpenalty
\@endparpenalty -\@lowpenalty
\@itempenalty   -\@lowpenalty

\def\theenumi{\arabic{enumi}}
\def\theenumii{\alph{enumii}}
\def\theenumiii{\roman{enumiii}}
\def\theenumiv{\Alph{enumiv}}
\def\labelenumi{\theenumi.}
\def\labelenumii{\theenumii)}
\def\labelenumiii{\theenumiii.}
\def\labelenumiv{\theenumiv.}
\def\p@enumii{\theenumi}
\def\p@enumiii{\theenumi\theenumii)}
\def\p@enumiv{\p@enumiii\theenumiii}
\def\labelitemi{$\bullet$}
\def\labelitemii{\bf --}
\def\labelitemiii{$\triangleright$}
\def\labelitemiv{$\cdot$}
%    \end{macrocode}
%
% Es sind alle im \textsf{KOMA-Script} Paket "ublichen Listenumgebungen
% vorhanden:
%
% \subsubsection{"`description"'-Umgebung}
%    \begin{macrocode}
\newenvironment{description}
               {\list{}{\labelwidth\z@ \itemindent-\leftmargin
                        \let\makelabel\descriptionlabel}}
               {\endlist}
\newcommand\descriptionlabel[1]{\hspace\labelsep
                                \descfont #1}
%    \end{macrocode}
%
% \subsubsection{"`labeling"'-Umgebung}
%    \begin{macrocode}
\newenvironment{labeling}[2][]
  {\def\sc@septext{#1}
    \list{}{\settowidth{\labelwidth}{#2#1}
            \leftmargin\labelwidth \advance\leftmargin by \labelsep
            \let\makelabel\labelinglabel}}
  {\endlist}
\newcommand\labelinglabel[1]{#1\hfil\sc@septext}
%    \end{macrocode}
%
% \subsubsection{"`verse"'-Umgebung}
%    \begin{macrocode}
\newenvironment{verse}
               {\let\\=\@centercr
                \list{}{\itemsep      \z@
                        \itemindent   -1.5em%
                        \listparindent\itemindent
                        \rightmargin  \leftmargin
                        \advance\leftmargin 1.5em}%
                \item[]}
               {\endlist}
%    \end{macrocode}
%
% \subsubsection{"`quotation"'- und "`quote"'-Umgebung}
%    \begin{macrocode}
\newenvironment{quotation}
               {\list{}{\listparindent 1em%
                        \itemindent    \listparindent
                        \rightmargin   \leftmargin
                        \parsep        \z@ \@plus\p@}%
                \item[]}
               {\endlist}
\newenvironment{quote}
               {\list{}{\rightmargin\leftmargin}%
                \item[]}
               {\endlist}
%    \end{macrocode}
%
% \subsection{Feld-Variablen}
%
%  \begin{macro}{\fromname}
%  \begin{macro}{\frombranch}
%  \begin{macro}{\fromsig}
% \changes{2.2b}{1995/02/16}{Direkte Verwendung von {\cmd\fromname}}
%  \begin{macro}{\fromaddress}
%  \begin{macro}{\fromplace}
%  \begin{macro}{\fromlocation}
%  \begin{macro}{\frombackaddress}
%  \begin{macro}{\telephonenum}
%  \begin{macro}{\varyourref}
%  \begin{macro}{\varyourmail}
%  \begin{macro}{\varmyref}
%  \begin{macro}{\varcustomer}
%  \begin{macro}{\varinvoice}
%  \begin{macro}{\varrefitemi}
%  \begin{macro}{\varrefitemii}
%  \begin{macro}{\varrefitemiii}
%  \begin{macro}{\varrefitemnamei}
%  \begin{macro}{\varrefitemnameii}
%  \begin{macro}{\varrefitemnameiii}
%  \begin{macro}{\@specialmail}
%  \begin{macro}{\@title}
%  \begin{macro}{\@subject}
% Es gibt in |scrlettr| verschiedene Feld-Variablen, die alle mit
% einer Zeichenkette belegt werden k"onnen, aber als leer
% initialisiert werden.
%    \begin{macrocode}
\def\fromname{}
\def\frombranch{}                       % RTL 21.04.94
\def\fromsig{\fromname}
\def\fromaddress{}
\def\fromplace{}
\def\fromlocation{}
\def\frombackaddress{}
\def\telephonenum{}
\def\varyourref{}
\def\varyourmail{}
\def\varmyref{}
\def\varcustomer{}
\def\varinvoice{}
\def\varrefitemi{}
\def\varrefitemii{}
\def\varrefitemiii{}
\def\varrefitemnamei{}
\def\varrefitemnameii{}
\def\varrefitemnameiii{}
\def\@specialmail{}
\def\@title{}
\def\@subject{}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\name}
%  \begin{macro}{\branch}
%  \begin{macro}{\signature}
%  \begin{macro}{\adress}
%  \begin{macro}{\place}
%  \begin{macro}{\location}
%  \begin{macro}{\backaddress}
%  \begin{macro}{\telephone}
%  \begin{macro}{\yourref}
%  \begin{macro}{\yourmail}
%  \begin{macro}{\myref}
%  \begin{macro}{\customer}
%  \begin{macro}{\invoice}
%  \begin{macro}{\refitemi}
%  \begin{macro}{\refitemii}
%  \begin{macro}{\refitemiii}
%  \begin{macro}{\refitemnamei}
%  \begin{macro}{\refitemnameii}
%  \begin{macro}{\refitemnameiii}
%  \begin{macro}{\specialmail}
%  \begin{macro}{\title}
%  \begin{macro}{\subject}
% F"ur jedes dieser Felder wird ein Befehl definiert, mit dem der
% Inhalt gesetzt werden kann, ohne da"s zu |\renewcommand| oder
% |\def| gegriffen werden mu"s. F"ur |\fromaddress| und
% |\fromlocation| kann mit |\address| bzw.
% |\location| auch eine komplexe \LaTeX-Definition
% gesetzt werden. F"ur die benutzerspezifischen Felder |\varrefitemi|,
% |\varrefitemii|, |\varrefitemiii| kann au"serdem jeweils ein Titel
% gesetzt werden.
%    \begin{macrocode}
\def\name#1     {\def\fromname{#1}}
\def\branch#1   {\def\frombranch{#1}}              % RTL 21.04.94
\def\signature#1{\def\fromsig{#1}}
\long\def\address#1{\def\fromaddress{#1}}
\def\place#1    {\def\fromplace{#1}}
\long\def\location#1{\def\fromlocation{#1}}
\def\backaddress#1{\def\frombackaddress{#1}}
\def\telephone#1{\def\telephonenum{#1}}
\def\yourref#1  {\def\varyourref{#1}}
\def\yourmail#1 {\def\varyourmail{#1}}
\def\myref#1    {\def\varmyref{#1}}
\def\customer#1 {\def\varcustomer{#1}}
\def\invoice#1  {\def\varinvoice{#1}}
\def\refitemi#1 {\def\varrefitemi{#1}}
\def\refitemii#1{\def\varrefitemii{#1}}
\def\refitemiii#1{\def\varrefitemiii{#1}}
\def\refitemnamei#1{\def\varrefitemnamei{#1}}
\def\refitemnameii#1{\def\varrefitemnameii{#1}}
\def\refitemnameiii#1{\def\varrefitemnameiii{#1}}
\def\specialmail#1{\def\@specialmail{#1}}
\def\title#1    {\def\@title{#1}}
\def\subject#1  {\def\@subject{{\bf #1}}}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\firsthead}
%  \begin{macro}{\firstfoot}
%  \begin{macro}{\nexthead}
%  \begin{macro}{\nextfoot}
% Bei der Gelegenheit werden auch gleich die Befehle zum Setzen
% der Felder f"ur die Kopf- und Fu"szeilen der ersten und aller
% weiterer Seiten eines Briefes definiert.
%    \begin{macrocode}
\long\def\firsthead#1{\def\@firsthead{#1}}
\long\def\firstfoot#1{\def\@firstfoot{#1}}
\long\def\nexthead#1{\def\@nexthead{#1}}
\long\def\nextfoot#1{\def\@nextfoot{#1}}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% \subsection{Faltmarken, Adre"sfeld, Titel}
%
% Es werden Schalter f"ur Faltmarken, Adre"sfeld und Betreff definiert.
%    \begin{macrocode}
\newif\if@fold
\newif\if@afield
\newif\if@subj
\newif\if@subjafter
%    \end{macrocode}
%
%  \begin{macro}{\foldmarkson}
%  \begin{macro}{\foldmarksoff}
% Die Faltmarken k"onnen mit |\foldmarkson| ein- und mit |\foldmarksoff|
% abgeschaltet werden. Dies ist f"ur jeden Brief getrennt m"oglich.
%    \begin{macrocode}
\def\foldmarkson        {\@foldtrue}
\def\foldmarksoff       {\@foldfalse}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\addrfieldon}
%  \begin{macro}{\addrfieldoff}
% Das Adre"sfeld f"ur Fensterumschl"age kann mit |\addrfieldon| ein- und
% mit |\addrfieldoff| abgeschaltet werden. Dies ist f"ur jeden Brief
% getrennt m"oglich.
%    \begin{macrocode}
\def\addrfieldon        {\@afieldtrue}
\def\addrfieldoff       {\@afieldfalse}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\subjecton}
%  \begin{macro}{\subjectoff}
% Ein Betreff-Titel kann mit |\subjecton| ein- und mit |\subjectoff|
% abgeschaltet werden. Dies ist f"ur jeden Brief getrennt m"oglich.
%    \begin{macrocode}
\def\subjecton          {\@subjtrue}
\def\subjectoff         {\@subjfalse}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\subjectafteron}
%  \begin{macro}{\subjectafteroff}
% \changes{v2.4a}{1997/06/06}{Neue Befehle \cs{subjectafteron} und
%                             \cs{subjectafteroff}.}
% In England und Frankreich scheint es teilweise "ublich zu sein, den Betreff
% erst nach der Anrede und daf"ur zentriert zu setzen\footnote{Ich kann mir
% nur m"uhsahm eine Bemerkung dazu verkneifen.}. Deshalb gibt es zwei neue
% Befehle mit denen man f"ur jeden Brief getrennt etwas anderes einschalten
% kann.
%    \begin{macrocode}
\newcommand*\subjectafteron {\@subjaftertrue}
\newcommand*\subjectafteroff{\@subjafterfalse}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
% Zu Berechnung der Feldpositionen werden verschiedene
% Dimensions-Variablen ben"otigt.
%    \begin{macrocode}
\newdimen\sc@temp
\newdimen\sc@@temp
\newdimen\foldhskip
\newdimen\foldvskipi
\newdimen\foldvskipii
\newdimen\foldvskipiii
\newdimen\addrvskip
\newdimen\addrindent
\newdimen\addrwidth
\newdimen\addrheight
\newdimen\locwidth
\newdimen\refvskip
\newdimen\sigindent
%    \end{macrocode}
%
% F"ur alle Positionen gibt es Standardwerte. Diese Stellen sind leider
% extrem druckerabh"angig. Es ist daher "au"serst wichtig, da"s der
% Druckertreiber richtig eingestellt wird. Dazu kann die Testseite aus
% dem Standardpaket verwendet werden.
%
% Die Breite des "`locfield"'s h"angt von den Optionen |wlocfield| und
% |slocfield| ab und wird entweder zu $2/3$ oder $1/2$ der Restbreite
% neben dem Adre"sfeld berechnet.
%
%    \begin{macrocode}
\foldhskip      3.5mm
\foldvskipi     62mm    % war: 65mm RTL
\foldvskipii    45mm    % mk 960531 (war: 40.5mm)
\foldvskipiii   54mm    % mk 960531 (war: 58.5mm)
\addrvskip      7.5mm
\addrindent     0mm
\addrwidth      70mm
\addrheight     35mm
\locwidth\textwidth
\advance\locwidth by -\addrwidth
\if@bigloc                           % mk 940330
    \advance\locwidth by \locwidth
    \divide\locwidth by 3
\else
    \divide\locwidth by 2
\fi
\refvskip       5.5mm
\sigindent      0mm
%    \end{macrocode}
%
% \subsection{Serienbriefe und Adre"sdateien}
%
%  \begin{macro}{\adrentry}
% \changes{v2.2b}{1995/05/25}{{\cmd\ifx} sicherer gemacht}
%  \begin{macro}{\adrchar}
% Serienbriefe werden mit Hilfe der Funktionen |\adrentry| und
% |\adrchar| und einer Adressdatei realisiert. Dar"uber hinaus
% werden mit diesen Befehlen Abk"urzungen f"ur Adressen definiert.
%    \begin{macrocode}
\def\adrentry#1#2#3#4#5#6#7#8{\def\@tempa{#1}\ifx \@tempa\@empty \else
 \def\@tempa{#2}\ifx \@tempa\@empty
  \expandafter\def\csname #8\endcsname{#1\\#3}
 \else
  \expandafter\def\csname #8\endcsname{#2 #1\\#3}
 \fi \fi}
\def\adrchar#1{}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
% \subsubsection{Adre"sliste oder Telefonverzeichnis}
%
% \iffalse
%</scrlettr>
% \fi
%    \begin{macrocode}
%<*dir|phone>
%    \end{macrocode}
%
% \changes{v2.3}{1995/06/25}{In \texttt{dir.tex} und \texttt{phone.tex}
%                            {\cmd\@tempa} durch {\cmd\tempa} ersetzt.}
% \changes{v2.3f}{1997/05/28}{In \texttt{dir.tex} \cs{raggedbottom}
%                             eingef"ugt.}
% Aus der Adre"sdatei kann mit Hilfe der \LaTeX-Datei |dir.tex| eine
% Adre"sliste f"ur Faltkalender erzeugt werden. Analog dazu kann mit
% Hilfe der \LaTeX-Datei |phone.tex| ein Televonverzeichnis erzeugt
% werden. Dazu mu"s |dir.tex| nur mit \LaTeX\ bearbeitet werden. Die
% Datei mu"s dazu nicht manipuliert werden. Die gesamte Arbeit erfolgt
% interaktiv.
%
%    \begin{macrocode}
%<dir>\documentclass[headsepline,10pt,twoside]{scrartcl}
%<dir>\raggedbottom
%<phone>\documentclass[12pt]{scrartcl}
%    \end{macrocode}
% Ein paar Definitionen, die anschlie"send die Arbeit erleichtern
%  \begin{macro}{\jj}
% \changes{v2.2d}{1995/05/25}{changed {\cmd\j} into {\cmd\jj} because
%                             of dotles-j}
% \changes{v2.3a}{1995/07/08}{\cs{Ask} from \texttt{docstrip} copied}
%  \begin{macro}{\ja}
%  \begin{macro}{\y}
%  \begin{macro}{\yes}
%  \begin{macro}{\ttyin}
%  \begin{macro}{\gobble}
%  \begin{macro}{\iden}
%  \begin{macro}{\strip}
%  \begin{macro}{\defpar}
%  \begin{macro}{\Ask}
%  \begin{macro}{\ifDecision}
%  \begin{macro}{\adrfile}
%  \begin{macro}{\adrtitle}
%    \begin{macrocode}
\newcommand*\jj {j}
\newcommand*\ja {ja}
\newcommand*\y  {y}
\newcommand*\yes{yes}
\newread\ttyin
\newcommand*{\gobble}[1]{}
\def\iden#1{#1}
\def\strip#1#2 \gobble{\def #1{#2}}
\def\defpar{\par}
\def\Ask#1#2{%
    \message{#2}\read\ttyin to #1\ifx#1\defpar\def#1{}\else
    \iden{\expandafter\strip\expandafter#1#1\gobble\gobble} \gobble\fi}
\newif\ifDecision
\newcommand*\adrfile{}
\newcommand*\adrtitle{}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
% Jetzt wird dar"uber informiert, da"s das ganze eigentlich von
% Frank Neukam stammt, und von mir nur etwas ver"andert wurde.
%    \begin{macrocode}
\typeout{^^J%
%<dir>   *** dir.tex v2.0 by Frank Neukam <01 Dec 1993>^^J%
%<phone> *** phone.tex v2.0 by Frank Neukam <01 Dec 1993>^^J%
         *** LaTeX2e-changes by Markus Kohm 1994-1999^^J%
         ^^J%
%<dir>   To create an address-directory just answer the questions:^^J%
%<phone> To create a phone-number-list just answer the questions:^^J%
         ^^J}
%    \end{macrocode}
% Es wird gefragt und entschieden, ob die deutsche Anpassung ben"otigt
% wird, wenn ja, ob die neue Deutsche Rechtschreibung verwendet werden soll.
%    \begin{macrocode}
\Ask\answer{Use german? [y/n]^^J%
            Mit deutscher Sprachanpassung? [j/n]}
\ifx\jj \answer \Decisiontrue\else
\ifx\ja \answer \Decisiontrue\else
\ifx\y  \answer \Decisiontrue\else
\ifx\yes\answer \Decisiontrue\else
                \Decisionfalse\fi\fi\fi\fi
\ifDecision
  \Ask\answer{Use new german? [y/n]^^J%
              Mit neuer deutscher Rechtschreibung? [j/n]}
  \ifx\jj \answer \Decisiontrue\else
  \ifx\ja \answer \Decisiontrue\else
  \ifx\y  \answer \Decisiontrue\else
  \ifx\yes\answer \Decisiontrue\else
                  \Decisionfalse\fi\fi\fi\fi
  \ifDecision
     \usepackage{ngerman}
  \else
     \usepackage{german}
  \fi
\fi
%    \end{macrocode}
% Nun kann noch eine Konfigurationsdatei eingelesen werden. Diese
% kann z.B. dazu verwendet werden, ein Umlaut-package einzubinden,
% o."a.
% \changes{v2.2d}{1995/05/25}{missing \} inserted at {\cmd\InputIfFileExits}}
%    \begin{macrocode}
%<dir>\InputIfFileExists{dir.cfg}{%
%<phone>\InputIfFileExists{phone.cfg}{%
     \typeout{Load local configuration-file.}}{%
     \typeout{No local configuration-file found.}}
%    \end{macrocode}
%
% Nun wird nach der Adre"sdatei gefragt:
%    \begin{macrocode}
\Ask\adrfile{^^J%
             Name of address-file (without .adr)?^^J%
             Name der Adressdatei (ohne .adr)?}
%    \end{macrocode}
% Jetzt wird noch ein Titel ben"otigt:
%    \begin{macrocode}
\Ask\adrtitle{^^J%
              Title of directory/list?^^J%
              Titel des Verzeichnisses?}
%    \end{macrocode}
%
% Der Seitenspiegel ist hier fest. Das Ergebnis mu"s dann nur noch ein
% wenig zurechtgeschnitten und gefaltet werden.
% \changes{v2.3f}{1997/05/28}{\cs{headheight} auf 1.25\cs{baselineskip}
%                             erh"oht, daf"ur \cs{headsep} auf
%                             0.25\cs{baselineskip} verkleinert.}
%    \begin{macrocode}
%<*dir>
\newdimen\paperwidth
\newdimen\leftfield
\newdimen\rightfield
\newdimen\adrindent
\paperwidth 210mm
\leftfield 40mm
\rightfield 25mm
\adrindent 1em
\advance\leftfield by -\adrindent
\textwidth 70mm
\oddsidemargin -1in
\evensidemargin -1in
\advance\oddsidemargin by 9mm
\advance\evensidemargin by \paperwidth
\advance\evensidemargin by -9mm
\advance\evensidemargin by -\textwidth
\textheight 120mm
\headheight 1.25\baselineskip
\headsep 0.25\baselineskip
\footskip 1.5\baselineskip
\topmargin -1in
\advance\topmargin by 8mm
\marginparwidth 0in
\marginparsep 0in
\marginparpush 0in
\parskip 0.5\baselineskip
%</dir>
\parindent 0in
%<phone>\pagestyle{empty}
%    \end{macrocode}
%
% Jetzt beginnt das eigentliche Document:
%    \begin{macrocode}
\begin{document}
%    \end{macrocode}
%
% F"ur die Kopfzeile wird |\sffamily\bfseries| verwendet.
%    \begin{macrocode}
%<dir>\def\headfont{\sffamily\bfseries}
%    \end{macrocode}
% Der |\adrchar| wird bei |dir.tex| f"ur die Kopfzeile verwendet.
% Bei |phone.tex| erzeugt |\adrchar| lediglich einen kleinen vertikalen
% Abstand.
%    \begin{macrocode}
%<dir>\def\adrchar#1{\clearpage\typeout{#1}\markboth{#1}{#1}}
%<phone>\def\adrchar#1{\vspace{1ex}}
%    \end{macrocode}
% Jeder |\adrentry| erzeugt einen Eintrag in der Adre"sliste
%    \begin{macrocode}
%<*dir>
\def\adrentry#1#2#3#4#5#6#7#8{\hspace{\adrindent}%
 \parbox[b]{\leftfield}{\raggedright \hspace{-\adrindent}{\sc #1}%
 \def\tempa{#1}\ifx \tempa\empty \else , #2\fi%
 \def\tempa{#3}\ifx \tempa\empty \else \par #3\fi%
 \def\tempa{#7}\ifx \tempa\empty \else \par (#7)\fi}%
 \hfill%
 \parbox[b]{\rightfield}{\raggedright%
 \def\tempa{#8}\ifx \tempa\empty \else {\scriptsize #8}\par \fi #4}\par}
%</dir>
%    \end{macrocode}
% oder dem Telefonverzeichnis.
%    \begin{macrocode}
%<*phone>
\def\adrentry#1#2#3#4#5#6#7#8{\setbox0\hbox{#4}
 {\sc #1}%
 \def\tempa{#2}\ifx \tempa\empty \else , #2\fi%
 \def\tempa{#7}\ifx \tempa\empty \else \ (#7)\fi%
 \ \dotfill\ \unhbox0\par}
%</phone>
%    \end{macrocode}
% Nun wird die Adre"sdatei abgearbeitet, wenn eine solche existiert.
%    \begin{macrocode}
\ifx\adrfile\empty \else
     \InputIfFileExists{\adrfile.adr}{%
%    \end{macrocode}
% Seitenstil festlegen (keine Kopfzeile, keine Fu"szeile).
%    \begin{macrocode}
%<dir> \pagestyle{empty}
%    \end{macrocode}
% F"ur |dir.tex| eine Titelseite mit leerer R"uckseite erzeugen. Der Titel
% wird vertikal und horizontal zentriert.
%    \begin{macrocode}
%<*dir>
 \null\vfil
 \begin{center}
 {\Large \sfb \adrtitle}
 \end{center}
 \vfil\vfil\null
 \cleardoublepage
%    \end{macrocode}
% Seitenstil nun mit Kopf- und Fu"szeile.
%    \begin{macrocode}
 \pagestyle{myheadings}
%</dir>
%    \end{macrocode}
% F"ur |phone.tex| eine etwas abgesetzte, gro"se, horizontal zentrierte
% Titelzeile erzeugen.
%    \begin{macrocode}
%<phone>{\LARGE \sfb \null\hfill\adrtitle\hfill\null\\[3ex]}
%    \end{macrocode}
% Nun wird die Adre"sdatei eingelesen
%    \begin{macrocode}
     }{%
%    \end{macrocode}
% Wenn die Adre"sdatei nicht existiert, eine Fehlermeldung ausgeben.
%    \begin{macrocode}
     \typeout{^^J%
              *** File \adrfile.adr not found!^^J%
              *** Datei \adrfile.adr nicht gefunden!^^J%
              ^^J}
     }
%    \end{macrocode}
% Das war's dann auch schon.
%    \begin{macrocode}
\fi
\end{document}
%</dir|phone>
%    \end{macrocode}
%
% \subsection{Das scraddr-Package zur Auswertung von
%             Adre"sdateien}
%
% \changes{v1.0}{1996/01/22}{Neues Package scraddr.}
%    \begin{macrocode}
%<*scraddr>
%    \end{macrocode}
% Dieses Paket liest beliebige - auch mehrere - Adre"sdateien im oben
% beschriebenen Format ein und legt f"ur jeden Eintrag eine Reihe von
% Markos an. Bedingung daf"ur ist, da"s das achte Element jedes
% |\adrentry|-Eintrags - der K"urzeleintrag - nichtleer ist. Im Falle von
% identischen K"urzeleintr"agen "uberschreiben sp"atere Eintr"age
% fr"uhere. Die Inhalte k"onnen dann "uber spezielle Befehle ermittelt
% werden.
%
% \subsubsection{Optionen}
% Das Paket besitzt keine Optionen.
%    \begin{macrocode}
\ExecuteOptions\relax
\ProcessOptions\relax
%    \end{macrocode}
%
% \subsubsection{Adre"sdatei einlesen}
%  \begin{macro}{\InputAdressFile}
% Mit Hilfe des Befehls |\InputAddressFile| wird die angegebene
% Adre"sdatei eingelesen und in Adre"smakros gewandelt, die dann beliebig
% verwendet werden k"onnen. Die Adre"smakros werden global generiert.
% Andere Makros insbesondere die Definition von |\adrentry| bleiben
% erhalten.
%    \begin{macrocode}
\newcommand{\InputAddressFile}[1]{\begingroup
  \def\adrentry##1##2##3##4##5##6##7##8{%
    \def\@tempa{##8}\ifx\@tempa\@empty\else
      \expandafter\gdef\csname ##8.LN\endcsname{##1}
      \expandafter\gdef\csname ##8.FN\endcsname{##2}
      \expandafter\gdef\csname ##8.A\endcsname{##3}
      \expandafter\gdef\csname ##8.P\endcsname{##4}
      \expandafter\gdef\csname ##8.FI\endcsname{##5}
      \expandafter\gdef\csname ##8.FII\endcsname{##6}
      \expandafter\gdef\csname ##8.C\endcsname{##7}
    \fi}
%    \end{macrocode}
% Existiert die Datei nicht, so wird ein Fehler ausgegeben, ansonsten
% wird die Ladeaktion angezeigt.
%    \begin{macrocode}
  \InputIfFileExists{#1.adr}
                    {\typeout{Load addressfile: #1.adr.}}
                    {\PackageError{scraddr}
                                  {File #1.adr not found}
                                  {The addressfile you wanted is not
                                   available}}
  \endgroup}
%    \end{macrocode}
%  \end{macro}
%
% \subsubsection{Zugriff auf die Elemente der eingelesenen Adre"sdatei}
%
% Da keine Vorschriften existieren, wie genau das K"urzel aufgebaut sein
% mu"s, k"onnen innerhalb des K"urzels theoretisch auch solche Zeichen
% enthalten sein, die f"ur Makronamen normalerweise ungeeignet sind.
% Deshalb existiert ein Satz von Befehlen, "uber den auf die zu einem
% K"urzel geh"orenden Elemente zugegriffen werden kann. Dabei wird davon
% ausgegangen, da"s die Adre"sdatei dem zuvor vorgeschlagenen Aufbau
% entspricht.
%
%  \begin{macro}{\Name}
% Der Name wird aus dem Vornamen (Firstname) und Nachnamen (Lastname)
% zusammengesetzt, wobei einfach ein Leerzeichen dazwischen geklemmt
% wird.
%    \begin{macrocode}
\newcommand*{\Name}[1]{\FirstName{#1}\ \LastName{#1}}
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\FirstName}
% Der Vorname (Firstname) ist mit \emph{K"urzel}|.FN| codiert.
%    \begin{macrocode}
\newcommand*{\FirstName}[1]{\csname #1.FN\endcsname}
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\LastName}
% Der Nachname (Lastname) ist mit \emph{K"urzel}|.LN| codiert.
%    \begin{macrocode}
\newcommand*{\LastName}[1]{\csname #1.LN\endcsname}
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\Address}
% Die Adresse (Address) ist mit \emph{K"urzel}|.A| codiert.
%    \begin{macrocode}
\newcommand*{\Address}[1]{\csname #1.A\endcsname}
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\Telephone}
% Die Telephonnummer (Telephone/Phone) ist mit \emph{K"urzel}|.P|
% codiert.
%    \begin{macrocode}
\newcommand*{\Telephone}[1]{\csname #1.P\endcsname}
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\FreeI}
%  \begin{macro}{\FreeII}
% Es existieren zwei freie Eintr"age, die mit \emph{K"urzel}|.FI| und
% \emph{K"urzel}.|FII| codiert sind.
%    \begin{macrocode}
\newcommand*{\FreeI}[1]{\csname #1.FI\endcsname}
\newcommand*{\FreeII}[1]{\csname #1.FII\endcsname}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \begin{macro}{\Comment}
% Zum Schlu"s existiert noch ein Kommentar (Comment), der mit
% \emph{K"urzel}|.C| codiert ist, aber nat"urlich auch etwas anderes als
% einen klassischen, reinen Kommentar enthalten kann.
%    \begin{macrocode}
\newcommand*{\Comment}[1]{\csname #1.C\endcsname}
%    \end{macrocode}
%  \end{macro}
%
% \subsubsection{Ende des Packages}
%    \begin{macrocode}
%</scraddr>
%    \end{macrocode}
%
% \subsection{Adre"sdatenbankkonverter}
%
%    \begin{macrocode}
%<*addrconv|birthday|email>
%    \end{macrocode}
% \BibTeX\ ist eines der am vielseitigsten einsetzbaren Tools rund um \TeX.
% Der erste Anwendungszweck von \BibTeX\ liegt nat"urlich in der Verarbeitung
% von Literaturdatenbanken und der Erstellung von Literaturverzeichnissen aus
% den Datenbanken.
%
% Gerd Neugebauer hat 1994 mit dem Bibliographie-Stil \texttt{address.bst}
% und der Definition eines entsprechenden Datenbankformates gezeigt, wie
% einfach man \BibTeX\ au"ser f"ur Literatur- auch f"ur Adre"sdatenbanken
% verwenden kann. Ausgehend von dieser Idee, stellte sich Axel Kielhorn die
% Frage, ob man solche Adre"sdatenbanken nicht auch f"ur \texttt{scrlettr}
% (und seine eigenen \texttt{akletter}) verwenden k"onnte.
% Selbstverst"andlich kann man, was Axel auch gleich in Form von zwei
% Bibliographie-Stilen in die Tat umgesetzt hat. Ich selbst habe nur eine
% Umbenennung und eine kleine "Anderung vorgenommen.
%
% Ebenso wie die Dateien \texttt{dir.tex} und \texttt{phone.tex}, sollen die
% Bibliographie-Stile keine ultimativen L"osungen darstellen, sondern
% lediglich Anreiz zu eigenen Entwicklungen geben.
%
% \subsubsection*{Der Datenbankkonverter \texttt{addrconv}}
%
% Der erste Konverter, tut nichts weiter als eine \BibTeX-Adre"sdatenbank
% einzulesen, alphabethisch zu sortieren und im Format der Adre"sdateien f"ur
% \texttt{scrlettr} wieder zu schreiben. Daf"ur ben"otigt man als erstes einen
% Bibliographie-Stil, \texttt{addrconv.bst}, der ein Programm f"ur \BibTeX
% darstellt.
%
% \subsubsection*{Der Datenbankkonverter \texttt{birthday}}
%
% Alternativ haben wir noch einen zweiten Stil zu bieten, der eine
% Gebutstagsliste erstellt.
%
% \subsubsection*{Die Implementierung der Datenbankkonverter}
%
% Die hier aufgelistete Implementierung zeigt sehr anschaulich, wo die
% Unterschiede zwischen den einzelnen Konvertern zu finden sind. Dies soll
% gleichzeitig ein Anhaltspunkt sein, welche Funktionen f"ur eigene
% Entwicklungen in diese Bereich zu "andern sind.
%
% \changes{v1.1}{1997/03/01}{\texttt{net}-Feld in \texttt{url} und
%                            \texttt{email} ge"andert.}
%    \begin{macrocode}
%<*bst&(addrconv|birthday|email)>
%<*addrconv>
 % The files generated from this file may be used for scrlettr.cls,
 % phone.tex, dir.tex from the KOMA-Script-Bundle, akletter.cls (and some
 % versions of myletter.cls which preceded akletter).
 % They will even work with Frank Neukam's old LaTeX 2.09 version of Script.
%</addrconv>
%<*birthday>
 % This file prints the entries with birthdays only.
 % The entries are sorted by month and inside one month by date.
%</birthday>

ENTRY
  { name
    title
    organization
    city
    zip
    country
    street
    phone
%    \end{macrocode}
% \changes{v1.1.3}{1998/10/27}{Unterst"utzung f"ur eine zweite (Mobil-) 
%                              Telephonnummer.}
%    \begin{macrocode}
    mobile
    fax
    url
    email
    note
    key
    birthday
    nbirthday
  }
  {}
%<addrconv|email>  { adr.char }
%<birthday>  { b.month }

%<addrconv|email>INTEGERS { cur.adr.char }
%<birthday>STRINGS { cur.month num.index alpha.index}


FUNCTION {get.names}
{ name empty$
  { organization empty$
    { "{}{}" }
    { organization "{}" * }
    if$
  }
  { "{" name #1 "{ll}" format.name$ "}" * *
%    \end{macrocode}
% \changes{v1.1.2}{1998/10/27}{"`von"'-Teil des Namens wurde ignoriert.}
%    \begin{macrocode}
    "{" name #1 "{ff}{ vv}" format.name$ "}" * * *
  }
  if$
}

%<*addrconv|email>
FUNCTION {print.adrchr}
{ adr.char chr.to.int$ cur.adr.char >
  { newline$ "\adrchar{" adr.char "}" * * write$ newline$
    adr.char chr.to.int$ 'cur.adr.char :=
  }
  'skip$
  if$
}
%</addrconv|email>
%<*birthday>
%    \end{macrocode}
% Bei |birthday.bst| soll die Funktion |print.addrchar| immer dann ein neues
% |\adrchar|-Makro ausgeben, wenn ein neuer Monat beginnt:
% \begin{verbatim}
%   if ENTRY.nbirthday.month = cur.month
%   then do nothing
%   else print \adrchar{\convdate{ENTRY.nbirthday.month}}
%   cur.month := ENTRY.nbirthday.month
% \end{verbatim}
%
% Die Funktion |\convdate| wird am Anfang von |begin.bib| definiert. Sie
% erzeugt entweder die Nummer des Monats oder seinen Namen.
%    \begin{macrocode}
FUNCTION {print.adrchr}
{ b.month cur.month =
  'skip$
  { newline$ "\adrchar{\convdate{" b.month "}}" * * write$ newline$
    b.month 'cur.month :=
  }
  if$
}
%</birthday>

%    \end{macrocode}
% \changes{v1.1.1}{1997/03/02}{In der Funktion \texttt{address} den
%                              Doppelbackslash so verschoben, da"s der
%                              \texttt{street}-Eintrag nun auch leer sein
%                              darf.}
%    \begin{macrocode}
FUNCTION{address}
{
%    \end{macrocode}
% Bei |birthday.bst| stellt sich die Frage, ob Eintr"age ohne Geburtstagsfeld
% unbeachtet bleiben sollen. Die hier vorgeschlagene L"osung verfolgt diesen
% Ansatz:
% \begin{verbatim}
%   if ENTRY.birthday = empty
%   then do nothing
%   else print adrentry with all its parameters
% \end{verbatim}
%    \begin{macrocode}
%<*birthday>
  birthday empty$
  'skip$
  {
%</birthday>
    print.adrchr
    "\adrentry" write$
    get.names write$ newline$
    "{"
    street empty$
      { "" }
      { street " \\ " *}
      if$
    *
    zip empty$
      { "" }
      { zip }
      if$
    " " * *
    city empty$
      { "" }
      { city }
      if$
    "}{" * *
%<*addrconv|birthday>
    phone empty$
      {
        mobile empty$
          { "" }
          { mobile }
        if$
      }{
        mobile empty$
          { phone }
          { phone "\\" mobile * * }
        if$
      }
      if$
    "}{}{}{}{" * *
%</addrconv|birthday>
%<*email>
    email empty$
     { "" }
     { email }
     if$
    "}{}{}{}{" * *
%</email>
%<*birthday>
    birthday empty$
      { "" }
      { birthday }
      if$
    "}{" * *
%</birthday>
    key empty$
      { "" }
      { key }
      if$
    "}" * * write$ newline$
%<*birthday>
  }
  if$
%</birthday>
}

%<*addrconv|email>
FUNCTION{presort}
{
  name empty$
  { organization empty$
    { key empty$
      { "No name, organization, or key to sort " cite$ * warning$
        "???"
      }
      { key }
      if$
    }
    { organization }
    if$
  }
  { name #1 "{ll},{f }{v }{, j}" format.name$ }
  if$
  duplicate$
  'sort.key$ :=
  #1 #1 substring$
  'adr.char :% the adr.char is the first letter of the sort.key
}
%</addrconv|email>
%<*birthday>
%    \end{macrocode}
% Bei |birthday.bst| sollen die Eintr"age nach dem numerischen Geburtstagsfeld
% sortiert werden.
%
% Das Format von |nbirthday| ist \emph<MM>\emph{DD}, so da"s die Eintr"age als
% erstes nach dem Monat und dann nach dem Tag sortiert werden. Nat"urlich
% k"onnte man stattdessen auch die absolute Tagesnummer im Jahr verwenden. Man
% m"u"ste dann aber m"uhsam den Monat extrahieren und h"atte au"serdem
% Probleme mit den unterschiedlich langen Monaten Februar.
% \begin{description}
% \item[Hinweis:] Das Format der Ausgabe wird dem Feld |birthday|
%                 entnommen. Sie k"onnen dort eintragen, was immer
%                 Sie wollen.
% \end{description}
% Eintr"age ohne |nbirthday|-Feld werden ganz nach vorn gezogen. Wenn sie
% ebenfalls kein |birthday|-Feld besitzen, werden sie zu einem sp"ateren
% Zeitpunkt weggeworfen.
%    \begin{macrocode}
FUNCTION{presort}
{nbirthday empty$
  { "" }
  { nbirthday }
  if$
  duplicate$
  'sort.key$ :=
  #1 #2 substring$
  'b.month :
}
%</birthday>

READ

ITERATE {presort}

SORT

%<*addrconv|email>
FUNCTION {begin.bib}
{
%<*email>
  "\def\sbscrpt{\_}  \catcode`\_ \active  \let_=\sbscrpt"
  write$ newline$
%</email>
  preamble$ empty$
    'skip$
    { preamble$ write$ newline$ }
  if$
  #0 'cur.adr.char :
}
%</addrconv|email>
%<*birthday>
%    \end{macrocode}
% F"ur |birthday.bst| konvertiert das Makro |\convdate| den Monatsanteil des
% numerischen Datums (aus |nbirthday|) je nach Wunsch entweder in eine Zahl
% ohne f"uhrende 0 oder in den Namen des Monats. Was erzeugt wird, h"angt
% davon ab, welche Funktion gew"ahlt wird.
%    \begin{macrocode}
FUNCTION {begin.bib}
{
"\def\convdate#1{\ifcase#1 \or 1 \or 2 \or 3 \or 4 \or 5 "
"\or 6 \or 7 \or 8 \or 9 \or 10 \or 11 \or 12 \fi}" * 'num.index :=

"\def\convdate#1{\ifcase#1 \or Januar \or Februar \or "
" M{^^b a}rz \or April \or Mai \or Juni \or Juli "
"\or August \or September \or Oktober \or November \or Dezember \fi}"
* * 'alpha.index :=

% num.index write$
 alpha.index write$
  newline$
  preamble$ empty$
    'skip$
    { preamble$ write$ newline$ }
  if$
  "00" 'cur.month :=
}
%</birthday>

EXECUTE {begin.bib}

ITERATE {call.type$}

% Print a newline and flush the write buffer

FUNCTION {end.bib}
{ newline$ }

EXECUTE {end.bib}
%</bst&(addrconv|birthday|email)>
%    \end{macrocode}
%
% \subsubsection{Interaktive Treiber f"ur die Datenbankkonvertierung}
% Damit \BibTeX\ "uberhaupt aktiv werden kann, wird aber noch eine
% \TeX-Datei ben"otigt. Mit dieser ist zun"achst ein \TeX-Lauf
% durchzuf"uhren, damit \BibTeX\ anschlie"send die dabei erzeugte
% \texttt{aux}-Datei einlesen und analysieren kann.
%
% Erst dadruch wird der Konverter aktiv und erzeugt aus der
% \BibTeX-Adre"sdatenbank die gew"unschte Datenbank f"ur \texttt{scrlettr}
% etc. Diese tr"agt dann noch die Endung \texttt{bbl}, die man anschlie"send
% von Hand oder per Shell-Script in \texttt{adr} "andern sollte.
%    \begin{macrocode}
%<*tex>
\catcode`\@=11
\newlinechar`\^^J
\message{%
 Now you have to typein the name of the BibTeX addressfile, you want to^^J%
 convert to script-address-file-format (without extension `.bib'):^^J%
 Geben Sie nun den Namen der BibTeX-Adressdatei ein, die Sie in das^^J%
 Script-Adressdateiformat konvertieren wollen (ohne `.bib'):^^J%
 ^^J%
 addressfile=%
}
\def\skiplastspace#1 \@e@o@l@{#1}
\read-1 to \addressfile
\edef\addressfile{\expandafter\skiplastspace\addressfile\@e@o@l@}
\newwrite\auxfile
\immediate\openout\auxfile=\addressfile.aux
\immediate\write\auxfile{%
 \string\citation{*}^^J%
%<addrconv> \string\bibstyle{addrconv}^^J%
%<birthday> \string\bibstyle{birthday}^^J%
%<email> \string\bibstyle{email}^^J%
 \string\bibdata{\addressfile}%
}
\immediate\closeout\auxfile
\message{%
 After running BibTeX rename file `\addressfile.bbl' to
 `\addressfile.adr'!^^J%
%<birthday> Run LaTeX with e. g. `dir.tex' after that.^^J%
 Nach dem BibTeX-Lauf benennen Sie bitte die Datei `\addressfile.bbl' in^^J%
 `\addressfile.adr' um!^^J%
%<birthday> Sie koennen die Datei dann z. B. mit `dir.tex'
%<birthday> weiterbearbeiten.^^J%
}
\ifx\@@end\undefined\let\@@end\end\fi
\@@end
%</tex>
%
% \subsubsection{Eine Beispieladre"sdatenbank im \BibTeX-Format}
% Zur Verdeutlichung des Ganzen hier noch eine Beispieladre"sdatenbank:
%    \begin{macrocode}
%<*example>
@address{mustermann,
   name =    {Hans Mustermann},
   city =    {Heimstatt},
   zip =     01234,
   country = {Germany},
   street =  {Einbahnstra{\ss}e 1},
   phone =   {01234 / 5 67 89},
   fax =     {01234 / 5 67 89},
   email =   {hm{@}work.com},
   note =    {Alles nur Erfindung},
}

@address{AxelK,
   name =      {Axel Kielhorn},
   city =      {Braunschweig},
   zip =       38118,
   street =    {Stra{\ss}e des 16.~Mai 17},
   phone =     {0531 / 89 34 39},
   email =     {a.kielhorn{@}tu-bs.de},
   note =      {Author of the modified addressen.bst},
   birthday =  {16.05.1967},
   nbirthday = 0516,
}

@address{RalfK,
   name =      {Ralf Kielhorn},
   city =      {Braunschweig},
   zip =       38118,
   street =    {Stra{\ss}e des 17.~Juni 17},
   phone =     {0531 / 89 34 39},
   email =     {a.kielhorn{@}tu-bs.de},
   note =      {Send e-mail with subject forward to ralf},
   birthday =  {05.08.1967},
   nbirthday = 0805,
}

@address{KOMA,
   name =      {Markus Kohm},
   city =      {Edingen-Neckarhausen},
   zip =       68535,
   street =    {Fichtenstra{\ss}e 63},
   url =       {http://www.uni-karlsruhe.de/~unlf/index.html}
   email =     {unlf@rz.uni-karlsruhe.de},
   note =      {Mails less than 32 KByte also to Markus{\_}Kohm@hd.maus.de},
}
%</example>
%    \end{macrocode}
%    \begin{macrocode}
%</addrconv|birthday|email>
%    \end{macrocode}
%
% \iffalse
%<*scrlettr>
% \fi
%
% \subsection{Die Brief-Umgebung}
%
%  \begin{environment}{letter}
%  \begin{macro}{\stopletter}
% Diese Umgebung ist etwas anders definiert, als normalerweise von
% \LaTeX gewohnt. Mit ihr k"onnen innerhalb eines Dokuments beliebig
% viele Briefe erzeugt werden.
%    \begin{macrocode}
\long\def\letter#1{\newpage
 \if@twoside\ifodd\c@page\else \thispagestyle{empty}\null\newpage \fi\fi
 \c@page\@ne \interlinepenalty=200 \@processto{#1}}
\def\stopletter{}
\def\endletter{\stopletter\@@par\pagebreak\@@par}
\long\def\@processto#1{\expandafter\@xproc #1\\@@@\ifx\toaddress\@empty
 \else\expandafter\@yproc #1@@@\fi}
\long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}}
\long\def\@yproc #1\\#2@@@{\def\toaddress{#2}}
%    \end{macrocode}
%  \end{macro}
%  \end{environment}
%
%  \begin{macro}{\stopbreaks}
%  \begin{macro}{\startbreaks}
% Innerhalb von Briefen wird der Umbruch etwas anders gehandhabt.
% Dadurch soll der Brieftext besser positioniert werden.
%    \begin{macrocode}
\def\stopbreaks{\interlinepenalty \@M
 \def\par{\@@par\nobreak}\let\\=\@nobreakcr
 \let\vspace\@nobreakvspace}
\def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
\def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else
 \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
\def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}}
\def\startbreaks{\let\\=\@normalcr
 \interlinepenalty 200\def\par{\@@par\penalty 200}}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\@foldmarks}
% F"ur die Faltmarken m"ussen nicht nur Abst"ande definiert werden, es
% wird auch ein Befehl ben"otigt, um die Faltmarken zu setzen.
%    \begin{macrocode}
\def\@foldmarks{\if@fold \bgroup
 \reversemarginpar\vspace{\foldvskipi}
 \marginpar{\hspace{\foldhskip}\rule{2mm}{.2pt}} \vspace{\foldvskipii}
 \marginpar{\hspace{\foldhskip}\rule{4mm}{.2pt}} \vspace{\foldvskipiii}
 \marginpar{\hspace{\foldhskip}\rule{2mm}{.2pt}}
 \vspace{-\foldvskipiii}\vspace{-\foldvskipii}\vspace{-\foldvskipi}
 \egroup \fi}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@addrfield}
% Dasselbe gilt auch f"ur das Adre"sfeld f"ur Fensterumschl"age. Die
% R"ucksendeadresse und die Briefart wird dabei unterstrichen.
%    \begin{macrocode}
\def\@addrfield{\bgroup
 \setbox0\vbox{\hsize\addrwidth
  \ifx\frombackaddress\@empty \else
  \underline{\scriptsize \sf \frombackaddress} \fi}
 \setbox1\vbox{\hsize\addrwidth
  \ifx\@specialmail\@empty \else
   \underline{\@specialmail} \fi}
 \setbox2\vbox{\hsize\addrwidth
  \toname \\ \toaddress}
 \vskip\addrvskip \hskip\addrindent
 \vbox to \addrheight{%
  \ifx\frombackaddress\@empty \else \box0 \fi
  \ifx\@specialmail\@empty \else \vfil\box1 \fi
  \vfil\box2\vfil}\egroup}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@locfield}
% Das "`locfield"' wird mittels einer |minipage| gesetzt.
%    \begin{macrocode}
\def\@locfield{\begin{minipage}[b]{\locwidth}\fromlocation\end{minipage}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@datefield}
% Je nachdem, welche Felder definiert sind, mu"s eine gesch"aftsm"a"siger
% Standardbrief oder ein eher pers"onliches Aussehen gew"ahlt werden.
% \changes{v2.3e}{1996/05/31}{Abstand zwischen Ort und Datum eingef"ugt}
%    \begin{macrocode}
\newif\if@ref
\def\@datefield{\@reffalse
 \ifx\varyourref\@empty \else \@reftrue \fi
 \ifx\varyourmail\@empty \else \@reftrue \fi
 \ifx\varmyref\@empty \else \@reftrue \fi
 \ifx\varcustomer\@empty \else \@reftrue \fi
 \ifx\varinvoice\@empty \else \@reftrue \fi
 \ifx\varrefitemi\@empty \else \@reftrue \fi
 \ifx\varrefitemii\@empty \else \@reftrue \fi
 \ifx\varrefitemiii\@empty \else \@reftrue \fi
 \vskip -\parskip
 \vskip \refvskip
 \if@ref
  \ifx\varyourref\@empty \else
   \settowidth{\sc@temp}{\varyourref}
   \setbox0\hbox{\scriptsize \sf \yourrefname}
   \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi
   \parbox[t]{\sc@@temp}{\noindent \box0\par \varyourref}\hfill
  \fi
  \ifx\varyourmail\@empty \else
   \settowidth{\sc@temp}{\varyourmail}
   \setbox0\hbox{\scriptsize \sf \yourmailname}
   \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi
   \parbox[t]{\sc@@temp}{\noindent \box0\par \varyourmail}\hfill
  \fi
  \ifx\varmyref\@empty \else
   \settowidth{\sc@temp}{\varmyref}
   \setbox0\hbox{\scriptsize \sf \myrefname}
   \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi
   \parbox[t]{\sc@@temp}{\noindent \box0\par \varmyref}\hfill
  \fi
  \ifx\varcustomer\@empty \else
   \settowidth{\sc@temp}{\varcustomer}
   \setbox0\hbox{\scriptsize \sf \customername}
   \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi
   \parbox[t]{\sc@@temp}{\noindent \box0\par \varcustomer}\hfill
  \fi
  \ifx\varinvoice\@empty \else
   \settowidth{\sc@temp}{\varinvoice}
   \setbox0\hbox{\scriptsize \sf \invoicename}
   \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi
   \parbox[t]{\sc@@temp}{\noindent \box0\par \varinvoice}\hfill
  \fi
  \ifx\varrefitemi\@empty \else
   \settowidth{\sc@temp}{\varrefitemi}
   \setbox0\hbox{\scriptsize \sf \varrefitemnamei}
   \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi
   \parbox[t]{\sc@@temp}{\noindent \box0\par \varrefitemi}\hfill
  \fi
  \ifx\varrefitemii\@empty \else
   \settowidth{\sc@temp}{\varrefitemii}
   \setbox0\hbox{\scriptsize \sf \varrefitemnameii}
   \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi
   \parbox[t]{\sc@@temp}{\noindent \box0\par \varrefitemii}\hfill
  \fi
  \ifx\varrefitemiii\@empty \else
   \settowidth{\sc@temp}{\varrefitemiii}
   \setbox0\hbox{\scriptsize \sf \varrefitemnameiii}
   \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi
   \parbox[t]{\sc@@temp}{\noindent \box0\par \varrefitemiii}\hfill
  \fi
  \ifx\@date\@empty \else
   \settowidth{\sc@temp}{\@date}
   \setbox0\hbox{\scriptsize \sf \datename}
   \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi
   \parbox[t]{\sc@@temp}{\noindent \box0\par \@date}
  \fi
  \par
  \vspace{2.5\baselineskip}
 \else
  {\ifx\@date\@empty \else \raggedleft\fromplace\ \@date\par \fi}
  \vspace{1.5\baselineskip}
 \fi}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\maketitle}
% \changes{v2.3b}{1996/01/14}{Verwendung von \cs{sectfont} f"ur den
%                             \cs{title}.}
%  \begin{macro}{\@subjfield}
% Der eigentliche Titel wir mit |\maketitle| gesetzt. Dies sollte
% jedoch ebenso wie der Betreff \emph{nicht} manuell geschehen.
%    \begin{macrocode}
\def\maketitle{\ifx\@title\@empty \else
 {\centering \LARGE \sectfont \@title\par}
 \vspace{1\baselineskip} \fi}
\def\@subjfield{%
 \if@subjafter%
  \centerline%
 \else%
  \if@subj\ifx\@subject\@empty\else\subjectname:\ \fi\fi
  \@subject\par\nobreak\vspace{1\baselineskip}%
 \fi}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\opening}
% Denn beim Er"offnungsgru"s mit |\opening| wird neben s"amtlichen
% Feldern auch der Titel und der Betreff gesetzt.
%    \begin{macrocode}
\def\opening#1{\thispagestyle{firstpage} \null \@foldmarks
 \if@afield \@addrfield \hfill \@locfield \par \fi
 \@datefield
 \maketitle
 \if@subjafter\else\@subjfield\fi
 #1\par%
 \vspace{0.5\baselineskip}% added by unknown
 \nobreak%
 \if@subjafter\@subjfield\fi}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\closing}
% \changes{2.2b}{1995/02/16}{{\cmd\fromsig} wird nicht mehr auf {\cmd\empty}
%                            getestet sondern direkt eingesetzt}
% \changes{2.3b}{1996/01/14}{Abstand zwischen Schlu"sgru"s und Signatur
%                            erh"oht}
% Au"ser dem Er"offnungsgru"s mit |\opening| gibt es nat"urlich auch
% einen Schlu"sgru"s mit |\closing|, bei dem au"serdem die
% Unterschrift u."a. gesetzt wird.
%    \begin{macrocode}
\long\def\closing#1{\par\nobreak\vspace{0.5\baselineskip}
 \stopbreaks \noindent \sc@temp\textwidth \advance\sc@temp by
 -\sigindent \hspace{\sigindent}%
 \parbox{\sc@temp}{\raggedright \ignorespaces #1\\[2\baselineskip]
 \fromsig\strut}\par
 \vspace{1.5\baselineskip}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\ps}
% Ebenfalls m"oglich ist ein Postscriptum. Dieser Befehl erwartet
% das Postscriptum nicht als Argument, sondern schaltet zum Nachtext
% um.
%    \begin{macrocode}
\def\ps{\par\startbreaks}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\cc}
% Dar"uber hinaus gibt es noch einen Verteiler. Dieser wird
% sauber formatiert.
%    \begin{macrocode}
\def\cc#1{\par\noindent \parbox[t]{\textwidth}{\@hangfrom{\ccname: }%
 \ignorespaces #1\strut}\par}
%    \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.}
%    \begin{macrocode}
\def\encl#1{\par\noindent%
 \parbox[t]{\textwidth}{%
  \ifx\enclname\@empty\else\@hangfrom{\enclname: }\fi%
  \ignorespaces #1\strut}\par}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\footnoterule}
% Fu"snoten werden durch eine Linie abgetrennt. Sie werden wie im gesamten
% \textsf{KOMA-Script} Paket gewohnt formatiert.
%    \begin{macrocode}
\def\footnoterule{\kern-1\p@
 \hrule width 0.4\columnwidth
 \kern .6\p@}
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\deffootnote}
% \changes{v2.4b}{1997/08/15}{Neues Makro zur Definition der Gestalt von
%                             Fu"snoten.}
% Dieses Makro erlaubt einen optionalen und erwartet drei weitere Parameter.
% Der erste, optionale gibt den Einzug der ersten Zeile des Fu"snotentextes
% vom linken Rand an. Die Fu"snotenmarkierungen werden rechtsb"undig in diesen
% Einzug gesetzt. Der zweite, also erste nicht optionale Parameter gibt den
% Einzug jeder weiteren Zeile des Fu"snotentextes vom linken Rand an. Fehlt
% der optionale Parameter so ist er gleich diesem. Der dritte, also zweite
% nicht optionale Parameter gibt den zus"atzlichen Einzug jedes weiteren
% Absatzes einer Fu"snote an. Der letzte Parameter schlie"slich bestimmt die
% Ausgabe der Fu"snotenmarkierung in der Fu"snote. Diese wird zus"atzlich in eine
% \verb|\hbox| gesetzt.
%    \begin{macrocode}
\newcommand\deffootnote[4][]{%
  \long\def\@makefntext##1{%
    \edef\@tempa{#1}\ifx\@tempa\@empty
      \@setpar{\@@par
        \@tempdima = \hsize
        \addtolength{\@tempdima}{-#2}
        \parshape \@ne #2 \@tempdima}%
    \else
      \@setpar{\@@par
        \@tempdima = \hsize
        \addtolength{\@tempdima}{-#1}
        \@tempdimb = \hsize
        \addtolength{\@tempdimb}{-#2}
        \parshape \tw@ #1 \@tempdima #2 \@tempdimb}%
    \fi
    \par
    \parindent #3\noindent
    \hbox to \z@{\hss\@@makefnmark}##1}
%    \end{macrocode}
%  \begin{macro}{\@@makefnmark}
% \changes{v2.4b}{1997/08/15}{Neues Makro zum Setzen der Fu"snotenmarkierung
%                             im Text}
%    \begin{macrocode}
  \def\@@makefnmark{\hbox{#4}}
%    \end{macrocode}
%  \end{macro}
%    \begin{macrocode}
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\deffootnotemark}
% \changes{v2.4b}{1997/08/15}{Neues Makro zur Definition der
%                             Fu"snotenmarkierung im Text}
%    \begin{macrocode}
\newcommand*\deffootnotemark[1]{\def\@makefnmark{\hbox{#1}}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\thefootnotemark}
% \changes{v2.4b}{1997/08/15}{Neues Makro, damit \cs{@thefnmark} auf
%                             Anwenderebene verf"ugbar wird.}
%    \begin{macrocode}
\def\thefootnotemark{\@thefnmark}
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\textsuperscript}
% \changes{v2.4b}{1997/08/15}{Neues Makro, damit \cs{@textsuperscript} auf
%                             Anwenderebene verf"ugbar wird.}
%    \begin{macrocode}
\let\textsuperscript\@textsuperscript
%    \end{macrocode}
%  \end{macro}
% \changes{v2.4b}{1997/08/15}{Verwendung der neuen Makros zur
%                             Fu"snotengestaltgebung.}
%  \begin{macro}{\@makefnmark}
%    \begin{macrocode}
\deffootnote[1em]{1.5em}{1em}
  {\textsuperscript{\thefootnotemark}}
\deffootnotemark{\textsuperscript{\thefootnotemark}}
%    \end{macrocode}
%  \end{macro}
%
% Aufz"ahlungen werden mit arabischen Zahlen numeriert.
%    \begin{macrocode}
\def\theequation{\arabic{equation}}
%    \end{macrocode}
% \subsection{Verteilung von Text- und Flie"sumgebungen}
%    \begin{macrocode}
\setcounter{topnumber}{2}
\def\topfraction{.7}
\setcounter{bottomnumber}{1}
\def\bottomfraction{.3}
\setcounter{totalnumber}{3}
\def\textfraction{.2}
\def\floatpagefraction{.5}
\setcounter{dbltopnumber}{2}
\def\dbltopfraction{.7}
\def\dblfloatpagefraction{.5}
%    \end{macrocode}
%
% \subsection{Seitenstil}
%
%  \begin{macro}{\pagestyle}
% \changes{v2.4a}{1997/06/06}{\cs{fromname} wird nur noch dann gesetzt, wenn
%                             es nicht leer ist, wodurch \cs{name} genau wie
%                             bei der Standard-Letter-Class optional ist.}
% Neben den "ublichen Seitenstilen |plain|, |headings|, |myheadings|, |empty|
% gibt es bei |scrlettr| noch einen Stil f"ur die erste Seite eines Briefs.
%    \begin{macrocode}
\def\@firsthead{%
  \parbox[b]{\textwidth}
    {\begin{center}
       \ifx\fromname\@empty\else
         \textsc{\ignorespaces\fromname}\\[-8pt]
         \rule{\textwidth}{.4pt}\\
       \fi
       \ifx\fromaddress\@empty\else
         \ignorespaces\fromaddress
       \fi
     \end{center}}}
\def\@firstfoot{}
\def\@nexthead{%
  \parbox[b]{\textwidth}
  {\ifx\fromname\@empty\else
     \textsc{\ignorespaces\fromname}\\[8pt]
   \fi
   \headtoname\ \ignorespaces\toname\hfill\datename:\ \@date\hfill
   \pagename\ \thepage\\[-8pt]
   \rule{\textwidth}{.4pt}}}
\def\@nextfoot{}

\def\ps@plain{%
  \def\@evenhead{\sffamily\bfseries\fontsize{10pt}{12}\selectfont
  \hfil-- \thepage\ --\hfil}%
 \let\@oddhead\@evenhead%
 \def\@evenfoot{}%
 \def\@oddfoot{}}
\def\ps@firstpage{%
 \def\@evenhead{\@firsthead}%
 \let\@oddhead\@evenhead%
 \def\@evenfoot{\@firstfoot}%
 \let\@oddfoot\@evenfoot}
\def\ps@headings{%
 \def\@evenhead{\@nexthead}%
 \let\@oddhead\@evenhead%
 \def\@evenfoot{\@nextfoot}%
 \let\@oddfoot\@evenfoot}
%    \end{macrocode}
%  \end{macro}
%
% \subsection{Voreinstellungen}
%
% Voreingestellt sind Faltmarken,
%    \begin{macrocode}
\@foldtrue
%    \end{macrocode}
% Adre"sfeld,
%    \begin{macrocode}
\@afieldtrue
%    \end{macrocode}
% kein Betrefftitel,
%    \begin{macrocode}
\@subjfalse
%    \end{macrocode}
% Betreff vor der der Anrede,
%    \begin{macrocode}
\@subjafterfalse
%    \end{macrocode}
% Einfache Kopfzeilen,
%    \begin{macrocode}
\ps@plain
%    \end{macrocode}
% Seitennumerierung mit arabischen Zahlen,
%    \begin{macrocode}
\pagenumbering{arabic}
%    \end{macrocode}
% kein Abgleich des unteren Randes
%    \begin{macrocode}
\raggedbottom
%    \end{macrocode}
% und europ"aische Handhabung des Leerschritts. Letzteres sollte eigentlich
% von der Sprachanpassung (z.B. |german.sty| oder |german3.sty| erledigt)
% werden und wird in einer der n"achsten Versionen vermutlich entfernt.
%    \begin{macrocode}
\frenchspacing
%    \end{macrocode}
%
% \subsection{Das Ende}
%
%    \begin{macrocode}
%</scrlettr>
%    \end{macrocode}
%
% \IndexPrologue{\clearpage
%                \section*{Index}
%                \markboth{Index}{Index}
%                Die kursiven Zahlen geben die Seiten an, auf denen
%                der entsprechende Eintrag beschrieben ist.
%                Die unterstrichenden Zahlen geben die Stelle der
%                Definition des Eintrags an.
%                Alle anderen Zahlen benennen Stellen, an denen der
%                entsprechende Eintrag verwendet ist.
%                \vspace{1em}\noindent}
%
% \GlossaryPrologue{\section*{"Anderungsverzeichnis}
%                   \markboth{"Anderungsverzeichnis}{"Anderungsverzeichnis}
%                   \addcontentsline{toc}{section}{"Anderungsverzeichnis}
%                   Die erste Version des \textsf{KOMA-Script} Pakets
%                   stammt vom 7.\,Juli~1994. Es werden nur die
%                   "Anderungen ab diesem Zeitpunkt dokumentiert.\par%
%                   \vspace{1em}\noindent}
%
% \Finale
%
\endinput
%
% Ende der Datei `scrlettr.dtx'
