summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrclass.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrclass.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrclass.dtx12466
1 files changed, 12466 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrclass.dtx b/Master/texmf-dist/source/latex/koma-script/scrclass.dtx
new file mode 100644
index 00000000000..b9ecef2d564
--- /dev/null
+++ b/Master/texmf-dist/source/latex/koma-script/scrclass.dtx
@@ -0,0 +1,12466 @@
+% \CheckSum{11211}
+% \iffalse
+% ======================================================================
+% scrclass.dtx
+% Copyright (C) 1995-2004 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.
+% ----------------------------------------------------------------------
+% scrclass.dtx
+% Copyright (C) 1995-2004 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 fuer 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{scrclass.dtx}
+%</dtx>
+%<class|package>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+%<driver>\ProvidesFile{scrclass.drv}
+%<class>\ProvidesClass{%
+%<scrartcl> scrartcl%
+%<scrreprt> scrreprt%
+%<scrbook> scrbook%
+%<scrlettr> scrlttr2%
+%<class> }
+%<package>\ProvidesPackage{%
+%<typearea> typearea%
+%<scrlfile> scrlfile%
+%<package> }
+%<lco>\ProvidesFile{%
+%<DIN> DIN%
+%<DINmoretext> DINmtext%
+%<SN> SN%
+%<SNold> SNold%
+%<SwissLeft> SNleft%
+%<KOMAold> KOMAold%
+%<lco> .lco}
+ [2004/09/16 v2.9t LaTeX2e KOMA
+%<beta> BETA-VERSION
+%<class> document class]
+%<package> package]
+%<lco> letter-class-option]
+%
+%<*driver>
+ Script bundle]
+\documentclass{ltxdoc}
+\usepackage[a4paper,BCOR15mm,DIV12]{typearea}
+\usepackage{german}
+%
+% Fuer den Fall von |\EnableCrossrefs|
+%
+\DoNotIndex{\.,\@M,\@abstrtfalse,\@abstrttrue,\@addtoreset,\@afterheading}
+\DoNotIndex{\@afterindentfalse,\@arabic,\@badmath,\@beginparpenalty}
+\DoNotIndex{\@car,\@cdr,\@centercr,\@cite,\@dblfloat,\@dotsep}
+\DoNotIndex{\@dottedtocline,\@empty,\@endparpenalty,\@endpart}
+\DoNotIndex{\@finclfalse,\@fincltrue,\@float,\@fontswitch,\@fslfalse}
+\DoNotIndex{\@fsltrue,\@gobbletwo}
+\DoNotIndex{\@hangfrom,\@highpenalty,\@hinclfalse,\@hincltrue,\@hslfalse}
+\DoNotIndex{\@hsltrue,\@idxitem,\@ifnextchar,\@ifundefined,\@itempenalty}
+\DoNotIndex{\@latex@warning,\@m,\@mainmatterfalse,\@mainmattertrue}
+\DoNotIndex{\@medpenalty,\@minus,\@mkboth,\@mparswitchfalse}
+\DoNotIndex{\@mparswitchtrue}
+\DoNotIndex{\@ne,\@nil,\@nobreakfalse,\@nobreaktrue,\@noitemerr,\@nomath}
+\DoNotIndex{\@openrightfalse,\@openrighttrue}
+\DoNotIndex{\@plus,\@restonecolfalse,\@restonecoltrue}
+\DoNotIndex{\@tempa,\@tempboxa,\@tempdima,\@tempswafalse,\@tempswatrue}
+\DoNotIndex{\@titlepagefalse,\@titlepagetrue,\@tocrmarg,\@topnewpage}
+\DoNotIndex{\@topnum,\@twocolumnfalse,\@twocolumntrue,\@twosidefalse}
+\DoNotIndex{\@twosidetrue}
+\DoNotIndex{\@whiledim,\@whilenum,\\,\ }
+\DoNotIndex{\addcontentsline,\addpenalty,\addtocontents,\addtolength}
+\DoNotIndex{\addvspace,\advance,\@Alph,\@alph,\@arabic}
+\DoNotIndex{\begin,\begingroup,\bfseries,\box,\bullet}
+\DoNotIndex{\c@figure,\c@page,\c@secnumdepth,\c@table,\c@tocdepth}
+\DoNotIndex{\cdot,\centering,\changes,\cleardoublepage,\clearpage}
+\DoNotIndex{\cmd,\col@number,\CurrentOption,\CodelineIndex}
+\DoNotIndex{\day,\dblfloatpagefraction,\dbltopfraction}
+\DoNotIndex{\DeclareOldFontCommand,\DeclareOption,\def,\DisableCrossrefs}
+\DoNotIndex{\divide,\DoNotIndex}
+\DoNotIndex{\ifdim,\else,\fi,\empty,\em,\EnableCrossrefs,\end}
+\DoNotIndex{\end@dblfloat}
+\DoNotIndex{\end@float,\endgroup,\endlist,\endquotation,\endtitlepage}
+\DoNotIndex{\everypar,\ExecuteOptions,\expandafter}
+\DoNotIndex{\fboxrule,\fboxsep}
+\DoNotIndex{\gdef,\global}
+\DoNotIndex{\hangindent,\hbox,\hfil,\hrule,\hsize,\hskip,\hspace,\hss}
+\DoNotIndex{\if@tempswa,\ifcase,\or,\fi,\fi}
+\DoNotIndex{\ifnum,\ifodd,\ifx,\fi,\fi,\fi}
+\DoNotIndex{\input,\InputIfFileExists,\item,\itshape}
+\DoNotIndex{\kern,\leavevmode,\leftmark,\leftskip,\let,\lineskip}
+\DoNotIndex{\list,\long}
+\DoNotIndex{\m@ne,\m@th,\marginpar,\markboth,\markright,\mathbf,\mathcal}
+\DoNotIndex{\mathit,\mathnormal,\mathrm,\mathsf,\mathtt,\MessageBreak}
+\DoNotIndex{\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}
+\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rmfamily,\@Roman,\@roman}
+\DoNotIndex{\scshape,\secdef,\setbox,\setcounter,\setlength}
+\DoNotIndex{\settowidth,\sfcode,\sffamily,\skip,\sloppy,\slshape,\space}
+\DoNotIndex{\string}
+\DoNotIndex{\ta@temp,\the,\thispagestyle,\triangleright,\ttfamily}
+\DoNotIndex{\twocolumn,\typeout}
+\DoNotIndex{\undefined,\usecounter}
+\DoNotIndex{\vfil,\vfill,\vspace}
+\DoNotIndex{\wd,\xdef,\year,\z@}
+\CodelineIndex
+%
+\begin{document}
+ \DocInput{scrclass.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{scrclass.dtx}
+% \RecordChanges
+%
+% \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}
+% \def\Length{\begingroup
+% \catcode`\\12
+% \MakePrivateLetters \m@cro@ 3}
+% \def\Counter{\begingroup
+% \catcode`\\12
+% \MakePrivateLetters \m@cro@ 4}
+% \def\KOMAvar{\begingroup
+% \catcode`\\12
+% \MakePrivateLetters \m@cro@ 5}
+% \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
+% \or
+% \noexpand\PrintOptionName
+% \or
+% \noexpand\PrintLengthName
+% \or
+% \noexpand\PrintCounterName
+% \or
+% \noexpand\PrintKOMAvarName
+% \fi
+% {\string#2}]}%
+% \@tempa
+% {\advance\c@CodelineNo\@ne
+% \ifcase #1%
+% \SpecialMainIndex{#2}\nobreak
+% \DoNotIndex{#2}%
+% \or
+% \SpecialMainEnvIndex{#2}\nobreak
+% \or
+% \SpecialMainOptionIndex{#2}\nobreak
+% \or
+% \SpecialMainLengthIndex{#2}\nobreak
+% \or
+% \SpecialMainCounterIndex{#2}\nobreak
+% \or
+% \SpecialMainKOMAvarIndex{#2}\nobreak
+% \fi
+% }%
+% \ignorespaces}
+% \let\endoption\endtrivlist
+% \providecommand*{\PrintOptionName}[1]{\strut \MacroFont #1\ }
+% \providecommand*{\PrintLengthName}[1]{\strut \MacroFont \char`\\#1\ }
+% \providecommand*{\PrintCounterName}[1]{\strut \MacroFont #1\ }
+% \providecommand*{\PrintKOMAvarName}[1]{\strut \MacroFont #1\ }
+% \newcommand*{\ttbksp}{\texttt{\char`\\}}
+% \newcommand*{\SpecialMainOptionIndex}[1]{\@bsphack
+% \special@index{#1\actualchar{\string\ttfamily\space#1}
+% (Option)\encapchar main}%
+% \special@index{Optionen:\levelchar{\string\ttfamily\space#1}\encapchar
+% main}\@esphack}
+% \newcommand*{\SpecialMainLengthIndex}[1]{\@bsphack
+% \special@index{#1\actualchar{\string\ttfamily\string\ttbksp\space#1}
+% (L"ange)\encapchar main}%
+% \special@index{L"angen:\levelchar{\string\ttfamily\string\ttbksp\space
+% #1}\encapchar
+% main}\@esphack}
+% \newcommand*{\SpecialMainCounterIndex}[1]{\@bsphack
+% \special@index{#1\actualchar{\string\ttfamily\space#1}
+% (Z"ahler)\encapchar main}%
+% \special@index{Z"ahler:\levelchar{\string\ttfamily\space#1}\encapchar
+% main}\@esphack}
+% \newcommand*{\SpecialMainKOMAvarIndex}[1]{\@bsphack
+% \special@index{#1\actualchar{\string\ttfamily\space#1}
+% (Variable)\encapchar main}%
+% \special@index{KOMA-Script
+% Variablen:\levelchar{\string\ttfamily\space
+% #1}\encapchar
+% main}\@esphack}
+% \renewcommand*{\changes@}[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
+% \MacroIndent=2em
+%
+% \title{Die Haupt-classes und -packages des \textsf{KOMA-Script}
+% Pakets\thanks{Diese Datei hat die Versionsnummer \fileversion,
+% letzte "Anderung \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.3}{1995/06/25}{Change-Glossary aufger"aumt}
+% \changes{v2.3a}{1995/07/08}{\texttt{0pt} jeweils durch \cs{z@} ersetzt}
+% \changes{v2.3a}{1995/07/08}{Verwendung von \cs{cs} statt \cs{cmd} im
+% Change Glossary}
+% \changes{v2.3a}{1995/07/08}{Die Mehrzahl der \cs{newcommand} mit
+% Parameter durch \cs{newcommand*} ersetzt}
+% \changes{v2.3a}{1995/07/08}{\cs{hbox to} durch \cs{hb@xt@} ersetzt}
+% \changes{v2.3a}{1995/07/08}{\cs{reset@font} durch \cs{normalfont}
+% ersetzt}
+% \changes{v2.3g}{1996/01/14}{Diverse weitere \cs{newcommand} mit und
+% ohne Parameter durch \cs{newcommand*}
+% ersetzt}
+% \changes{v2.3g}{1996/01/14}{Diverse \cs{renewcommand} mit und ohne
+% Parameter durch \cs{renewcommand*}
+% ersetzt}
+% \changes{v2.7b}{2001/01/05}{Implementierungsdokumentation verbessert
+% und bessert geordnet
+% (Gliederungsbefehle)}
+% \changes{v2.8q}{2001/11/13}{diverse \texttt{pt} durch \cs{p@} und
+% \texttt{0pt} durch \cs{z@} 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.
+% Dieser 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 gleichen
+% Ort verf"ugbar sein, an dem Sie auch |scrclass.dtx| gefunden haben.
+%
+% Urspr"unglich war in |komascr.dtx| eine Brief-Klasse
+% enthalten. Die Klasse |scrlettr.cls| wurde dann jedoch als
+% |scrlettr.dtx| abgetrennt. Inzwischen ist die neue Brief-Klasse
+% |scrlttr2.cls| wieder enthalten.
+%
+% 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 andere Dateien aus den |*.dtx|-Dateien extrahiert werden.
+%
+% Das \textsf{KOMA-Script} Paket entspricht dem Stand nach den
+% Standard \LaTeX Document Classes Version 1.3q [1995/12/20].
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \part{Implementierung}
+% \changes{v2.9}{2002/06/21}{Release}
+%
+% \section{Generell}
+%\iffalse
+% \begin{macrocode}
+%<*beta>
+%<*package>
+\PackageWarningNoLine{%
+%<typearea> typearea%
+%<scrlfile> scrlfile%
+ }
+%</package>
+%<*class>
+\ClassWarningNoLine{%
+%<scrbook> scrbook%
+%<scrreprt> scrreprt%
+%<scrartcl> scrartcl%
+%<scrlettr> scrlttr2%
+ }
+%</class>
+%<*lco>
+\GenericWarning{(%
+%<DIN> DIN%
+%<DINmoretext> DINmtext%
+%<SN> SN%
+%<SNold> SNold%
+%<SwissLeft> SNleft%
+%<KOMAold> KOMAold%
+ .lco)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces}{%
+ Letter-class-option
+%<DIN> DIN
+%<DINmoretext> DINmtext
+%<SN> SN
+%<SNold> SNold
+%<SwissLeft> SNleft
+%<KOMAold> KOMAold
+ Warning:\space
+%</lco>
+%<class|package> {%
+%<*class|package|lco>
+ THIS IS A BETA VERSION!\MessageBreak
+ YOU SHOULD NOT USE THIS VERSION!\MessageBreak
+ YOU SHOULD INSTALL THE RELEASE FROM CTAN\MessageBreak
+ AND USE THAT INSTEAD OF THIS BETA VERSION%
+%<lco> \@gobble%
+}
+%</class|package|lco>
+%</beta>
+% \end{macrocode}
+%\fi
+%
+%
+% \section{"`scrlfile"'-package}
+%
+% Dieser Abschnitt ist englisch dokumentiert. Ich bitte daf"ur um
+% Verst"andnis.
+%
+% \subsection{Let's start}
+%
+% \begin{macrocode}
+%<*scrlfile>
+\typeout{Package scrlfile, \csname ver@scrlfile.sty\endcsname%
+ ^^J\@spaces\@spaces\@spaces\@spaces\space\space
+ Copyright (C) Markus Kohm^^J}
+%
+%
+% \subsection{Options}
+%
+% Currently there are no options.
+% \begin{macrocode}
+\ExecuteOptions{}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+%
+% \subsection{The macros}
+%
+% \begin{macro}{\InputIfFileExists}
+% \LaTeX{} uses this macro for loading files with
+% \cs{input}\marg{filename}, \cs{include}, \cs{LoadClass},
+% \cs{LoadClassWithOptions}, \cs{documentclass}, \cs{documentstyle},
+% \cs{RequirePackage}, \cs{usepackage}. Only
+% \cs{input}~\meta{filename} loads \meta{filename} without using
+% \cs{InputIfFileExists}.
+%
+% Because of this, it's very easy to add stuff before and after
+% loading a file. We simply change this macro and add to
+% macros\,---\,one before loading the file and one after loading the
+% file. But before we redefine the macro, we test, if the macro was
+% defined like we expected. \LaTeX{} will warn, if not.
+% \begin{macrocode}
+\CheckCommand{\InputIfFileExists}[2]{%
+ \IfFileExists{#1}%
+ {#2\@addtofilelist{#1}\@@input \@filef@und}}
+% \end{macrocode}
+% Now we can redefine the macro like described above:
+% \begin{macrocode}
+\renewcommand{\InputIfFileExists}[2]{%
+ \IfFileExists{#1}{%
+ \scr@load@hook{before}{#1}%
+ #2\@addtofilelist{#1}\@@input \@filef@und
+ \scr@load@hook{after}{#1}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scr@load@hook}
+% This macro simply calls a load-file-hook, either the \emph{before}
+% or the \emph{after} one, if the hook exists. After calling the hook
+% it will be deleted. First argument is the type of hook
+% (\meta{before} or \meta{after}), second argument is a filename.
+% \begin{macrocode}
+\newcommand*{\scr@load@hook}[2]{%
+ \@ifundefined{#2-@#1}{}{%
+ \@nameuse{#2-@#1}%
+ \expandafter\let\csname #2-@#1\endcsname=\relax}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scr@set@load@hook}
+% This command adds stuff to a load-file-hook, either the
+% \emph{before} or the \emph{after} one. First argument is the type of
+% hook (\meta{before} or \meta{after}), second is a filename. There's
+% a third argument not parsed by the macro itself but
+% \cs{g@addto@macro}. This third argument is the stuff, which will be
+% added to the hook. Because of using \cs{g@addto@macro} the hook must
+% be defined. So we define it, if it isn't.
+% \begin{macrocode}
+\newcommand*{\scr@set@load@hook}[2]{%
+ \@ifundefined{#2-@#1}{\@namedef{#2-@#1}{}}{}%
+ \expandafter\g@addto@macro\csname #2-@#1\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\BeforeFile}
+% \begin{macro}{\AfterFile}
+% \begin{macro}{\BeforeClass}
+% \begin{macro}{\AfterClass}
+% \changes{v2.9f}{2002/08/29}{Sternvariante funktioniert jetzt}
+% \begin{macro}{\@AfterClass}
+% \begin{macro}{\@sAfterClass}
+% \begin{macro}{\BeforePackage}
+% \begin{macro}{\AfterPackage}
+% \changes{v2.9f}{2002/08/29}{Sternvariante funktioniert jetzt}
+% \begin{macro}{\@AfterPAckage}
+% \begin{macro}{\@sAfterPackage}
+% These macros add stuff to a load-file-hook of a file, class or
+% package. First argument is the name of the file (with extension),
+% class (without extension) or package (without extension). There's a
+% second argument parsed by wether the macros themself nor
+% \cs{scr@set@load@hook} but \cs{g@addto@macro}. See
+% \cs{scr@set@load@hook} for more information. The star-forms
+% \cs{AfterClass*} and \cs{AfterPackage*} does the action immediate,
+% if the class or package was already loaded.
+% \begin{macrocode}
+\newcommand*{\BeforeFile}{\scr@set@load@hook{before}}
+\newcommand*{\AfterFile}{\scr@set@load@hook{after}}
+\newcommand*{\BeforeClass}[1]{%
+ \scr@set@load@hook{before}{#1.\@clsextension}}
+\newcommand*{\AfterClass}{%
+ \@ifstar {\@sAfterClass}{\@AfterClass}}
+\newcommand*{\@AfterClass}[1]{%
+ \scr@set@load@hook{after}{#1.\@clsextension}}
+\newcommand*{\@sAfterClass}[1]{%
+ \begingroup
+ \@ifclassloaded{#1}{%
+ \aftergroup\@secondoftwo
+ }{%
+ \aftergroup\@AfterClass
+ }%
+ \endgroup
+ {#1}%
+}
+\newcommand*{\BeforePackage}[1]{%
+ \scr@set@load@hook{before}{#1.\@pkgextension}}
+\newcommand*{\AfterPackage}{%
+ \@ifstar {\@sAfterPackage}{\@AfterPackage}}
+\newcommand*{\@AfterPackage}[1]{%
+ \scr@set@load@hook{after}{#1.\@pkgextension}}
+\newcommand*{\@sAfterPackage}[1]{%
+ \begingroup
+ \@ifpackageloaded{#1}{%
+ \aftergroup\@secondoftwo
+ }{%
+ \aftergroup\@AfterPackage
+ }%
+ \endgroup
+ {#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% That's all
+% \begin{macrocode}
+%</scrlfile>
+% \end{macrocode}
+%
+%
+% \section{"`typearea"'-package}
+%
+% \begin{macrocode}
+%<*typearea>
+% \end{macrocode}
+% \changes{v2.0e}{1994/07/07}{Auf \LaTeXe umgestellt}
+% \changes{v2.0e}{1994/09/02}{\cs{ProvideClass} durch
+% \cs{ProvidePackage} ersetzt}
+% \changes{v2.0e}{1994/09/02}{\cs{endinput} angeh"angt}
+% \changes{v2.1a}{1994/10/29}{Auf doc/docstrip umgestellt}
+% \changes{v2.1b}{1994/12/31}{Letzte Version f"ur 1994 fertiggestellt}
+% Zuerst einmal zeigen, was es ist:
+% \begin{macrocode}
+\typeout{Package typearea, \csname ver@typearea.sty\endcsname%
+ ^^J\@spaces\@spaces\@spaces\@spaces\space\space
+ Copyright (C) Frank Neukam, 1992-1994%
+ ^^J\@spaces\@spaces\@spaces\@spaces\space\space
+ Copyright (C) Markus Kohm, 1994-2002^^J}
+% \end{macrocode}
+%
+% \subsection{Befehle vor den Optionen}
+%
+% \begin{macro}{\SetDIVList}
+% \changes{v2.1a}{1994/10/28}{neu eingef"uhrt.}
+% \changes{v2.6}{2000/01/04}{\cs{ta@divlist} enth"alt Werte f"ur
+% Schriftgr"o"sen ab 1pt.}
+% Der Befehl |\SetDIVList| tut nichts weiter als die innere Variable
+% f"ur die schriftgr"o"senabh"angige \emph{DIV}-Liste |\ta@divlist| neu
+% zu definieren. Dabei k"onnen \emph{DIV}-Werte f"ur Gr"o"sen ab 10\,pt
+% gesetzt werden.
+% \begin{macrocode}
+\newcommand*\SetDIVList[1]{\def\ta@divlist{{}{}{}{}{}{}{}{}{}#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SetXDIVList}
+% \changes{v2.6}{2000/01/04}{neu eingef"uhrt.}
+% Da mit \cs{SetDIVList} aus Kompatibilit"atsgr"unden nur Werte f"ur
+% Gr"o"sen ab 10\,pt gesetzt werden k"onnen, wird f"ur Werte ab 1\,pt
+% ein neuer Befehl ben"otigt.
+% \begin{macrocode}
+\newcommand*\SetXDIVList[1]{\def\ta@divlist{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ta@bcor}
+% \changes{v2.2a}{1995/01/25}{Definition der Dimension wegen der
+% Option \texttt{BCOR} vorgezogen}
+% \changes{v2.7g}{2001/04/17}{\cs{newlength} and Stelle von
+% \cs{newdimen} f"ur die Definition
+% verwendet}
+% Dimension f"ur die Bindekorrektur reservieren. Diese wird implizit
+% zu 0pt initialisiert.
+% \begin{macrocode}
+\newlength{\ta@bcor}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifnumber}
+% Dieses Makro testet, ob ein "ubergebener Parameter eine positive,
+% ganze Zahl ist. Ist dies der Fall, wird der zweite Parameter
+% ausgef"uhrt, sonst der dritte.
+% \begin{macrocode}
+\providecommand\ifnumber[3]{
+ \begingroup\@tempswafalse\let\scr@next\test@number
+ \expandafter\scr@next#1\scr@next
+ \if@tempswa\endgroup#2\else\endgroup#3\fi
+}
+% \end{macrocode}
+% F"ur den eigentlichen Test wird der erste Parameter Token f"ur Token
+% gescannt und beurteilt.
+% \begin{macro}{\test@number}
+% \begin{macrocode}
+\newcommand*{\test@number}[1]{
+ \ifx \scr@next#1
+ \let\scr@next\relax
+ \else
+% \end{macrocode}
+% Dabei wird f"ur einen schnelleren Vergleich die Tatsache genutzt, da"s
+% Ziffernzeichen immer im selben durchg"angigen Bereich liegen
+% \begin{macrocode}
+ \@tempcnta=\expandafter\expandafter\expandafter\number
+ \expandafter`#1\relax
+ \ifnum \@tempcnta>47\relax
+ \ifnum \@tempcnta<58\relax
+ \@tempswatrue
+ \else\@tempswafalse\fi
+ \else\@tempswafalse\fi
+% \end{macrocode}
+% Das zeichenweise scannen und parsen kann nat"urlich nicht einfach
+% abgebrochen werden. Stattdessen ist der Parameterrest noch zu
+% entfernen.
+% \begin{macrocode}
+ \if@tempswa\else\let\scr@next\gobble@till@next\fi\fi
+ \scr@next}
+% \end{macrocode}
+% \begin{macro}{\gobble@till@next}
+% Das geschieht mit einem einzigen "`Leermacro"'.
+% \begin{macrocode}
+\newcommand*{\gobble@till@next}{}
+\def\gobble@till@next#1\scr@next{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\ifdimen}
+% Dieses Makro testet, ob ein "ubergebener Parameter eine Dimension
+% ist und f"uhrt in Abh"angigkeit davon den zweiten oder dritten
+% Parameter aus.
+% \begin{macrocode}
+\newcommand{\ifdimen}[3]{
+ \begingroup\@tempswatrue\let\scr@next\test@posdimen
+ \expandafter\test@dimen#1\scr@next
+ \if@tempswa\endgroup#2\else\endgroup#3\fi
+}
+% \end{macrocode}
+% \begin{macro}{\test@dimen}
+% Als erste mu"s ein Vorzeichen entfernt werden.
+% \begin{macrocode}
+\newcommand*{\test@dimen}[1]{\ifx -#1\else\ifx +#1\else
+ \def\scr@next{\let\scr@next\test@posdimen\scr@next#1}\fi\fi\scr@next}
+% \end{macrocode}
+% \begin{macro}{\test@posdimen}
+% Dann mu"s getestet werden, ob es sich beim Rest um eine Dimension
+% handelt. Dabei werden der einfachheit halber mehrere Dezimalkomma
+% und -punkte erlaubt. Nat"urlich k"onnte man es auch wirklich richtig
+% machen, aber das w"are nochmal etwas aufwendiger. Ist das wirklich
+% notwendig?
+% \begin{macrocode}
+\newcommand*{\test@posdimen}[1]{
+ \ifx \scr@next#1
+ \@tempswafalse\let\scr@next\relax
+ \else
+ \if .#1\else\if ,#1\else
+ \@tempcnta=%
+ \expandafter\expandafter\expandafter\number\expandafter`#1\relax
+ \ifnum \@tempcnta>47\relax
+ \ifnum \@tempcnta<58\relax
+ \else\def\scr@next{\test@dimunt#1}\fi
+ \else\def\scr@next{\test@dimunt#1}\fi\fi\fi\fi
+ \scr@next}
+% \end{macrocode}
+% \begin{macro}{\testdimunt}
+% \begin{macro}{\test@trueunt}
+% Au"ser einer Gleitkomma- bzw. Gleitpunktzahl mu"s auch noch die Einheit
+% behandelt werden. Dabei sind sowohl die neun Standardeinheiten als auch
+% deren "`true"'-Variante zu ber"ucksichtigen. Deshalb wird zuerst ein
+% eventuelles "`\texttt{true}"' weggeworfen.
+% \begin{macrocode}
+\newcommand*{\test@dimunt}{}
+\def\test@dimunt#1\scr@next{%
+ \expandafter\test@trueunt#1truetrue\test@trueunt}
+\newcommand*{\test@trueunt}{}
+\def\test@trueunt#1true#2true#3\test@trueunt{
+ \edef\@tempa{#1}
+ \ifx\@tempa\@empty\test@@ifdimunt{#2}\else\test@@ifdimunt{#1}\fi}
+% \end{macrocode}
+% \begin{macro}{\test@@ifdimunt}
+% Anschlie"send wird dann getestet, ob es sich um eine der neun "ublichen
+% Einheiten handelt.
+% \begin{macrocode}
+\newcommand*\test@@ifdimunt[1]{
+ \@tempswafalse
+ \ifstr{#1}{pt}{\@tempswatrue}{}
+ \ifstr{#1}{pc}{\@tempswatrue}{}
+ \ifstr{#1}{in}{\@tempswatrue}{}
+ \ifstr{#1}{bp}{\@tempswatrue}{}
+ \ifstr{#1}{cm}{\@tempswatrue}{}
+ \ifstr{#1}{mm}{\@tempswatrue}{}
+ \ifstr{#1}{dd}{\@tempswatrue}{}
+ \ifstr{#1}{cc}{\@tempswatrue}{}
+ \ifstr{#1}{sp}{\@tempswatrue}{}}
+% \end{macrocode}
+% \begin{macro}{\ifstr}
+% Dieses Macro wird oben ben"otigt und vergleicht zwei
+% Tokenfolgen.
+% \begin{macrocode}
+\newcommand\ifstr[4]{
+ \begingroup\edef\@tempa{#1}\edef\@tempb{#2}
+ \ifx\@tempa\@tempb\endgroup#3\else\endgroup#4\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@BCOR}
+% \begin{macro}{\@@BCOR}
+% \changes{v2.5}{1997/06/17}{Einzelzeichenscanner durch Mustererkennung
+% ersetzt.}
+% Das Makro |\@BCOR| wird sp"ater ben"otigt, um die Option
+% |BCOR|\emph{BCOR} zu erkennen. Die Option wird "uber ihr Muster
+% erkannt.
+% \begin{macrocode}
+\newcommand*{\@BCOR}{\expandafter\@@BCOR\CurrentOption BCORBCOR\@@BCOR}
+\newcommand*{\@@BCOR}{}
+\def\@@BCOR #1BCOR#2BCOR#3\@@BCOR{
+% \end{macrocode}
+% Handelt es sich um die Option |BCOR|, so ist der erste Parameter leer.
+% \begin{macrocode}
+ \edef\@tempa{#1}\ifx\@tempa\@empty
+% \end{macrocode}
+% Au"serdem ist der dritte Parameter dann |BCOR|.
+% \begin{macrocode}
+ \edef\@tempa{#3}\def\@tempb{BCOR}\ifx\@tempa\@tempb
+% \end{macrocode}
+% Der zweite Parameter sollte dann die Gr"o"se enthalten. Ist dies
+% nicht der Fall, wird ein Fehler gemeldet (Fehlerzeile ist dann
+% |\ProcessOptions|).
+% \begin{macrocode}
+ \ifdimen{#2}{\setlength{\ta@bcor}{#2}}{\ta@opt@err}
+% \end{macrocode}
+% In allen anderen F"allen ist es nicht diese Option, dann wird ein Fehler
+% ausgegeben. Stattdessen k"onnte hier auch auf weitere Optionen getestet
+% werden.
+% \begin{macrocode}
+ \else\ta@opt@err\fi
+ \else\ta@opt@err\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ta@div}
+% \changes{v2.2a}{1995/01/25}{Definition wegen der Option \texttt{DIV}
+% vorgezogen}
+% Z"ahler f"ur \emph{DIV} reservieren. Dieser wird implizit zu
+% 0 initialisiert.
+% \begin{macrocode}
+\newcount\ta@div
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@DIV}
+% \begin{macro}{\@@DIV}
+% \changes{v2.5}{1997/06/17}{Einzelzeichenscanner durch Mustererkennung
+% ersetzt.}
+% Die grunds"atzliche Funktion ist die gleiche wie bei |\@BCOR|, |\@@BCOR|.
+% \begin{macrocode}
+\newcommand*{\@DIV}{\expandafter\@@DIV\CurrentOption DIVDIV\@@DIV}
+\newcommand*{\@@DIV}{}
+\def\@@DIV #1DIV#2DIV#3\@@DIV{
+ \edef\@tempa{#1}\ifx\@tempa\@empty
+ \edef\@tempa{#3}\def\@tempb{DIV}\ifx\@tempa\@tempb
+ \ifnumber{#2}{\ta@div=#2\relax}{\ta@opt@err}
+ \else\ta@opt@err\fi
+% \end{macrocode}
+% Der Unterschied liegt darin, da"s bei einem Fehlschlag der
+% Mustererkennung kein Fehler vorliegt, sondern u.\,U. noch auf |BCOR|
+% getestet werden mu"s.
+% \begin{macrocode}
+ \else\@BCOR\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@headlines}
+% \begin{macro}{\@@headlines}
+% \changes{v2.7g}{2001/04/17}{Neue Mustererkennung f"ur die Anzahl der
+% Kopfzeilen}
+% Das Macro \cs{@headlines} wird ben"otigt, um die Option
+% \texttt{headlines} zu erkennen.
+% \begin{macrocode}
+\newcommand{\@headlines}{%
+ \expandafter\@@headlines\CurrentOption headlines\@@headlines}
+\newcommand*{\@@headlines}{}
+\def\@@headlines #1headlines#2\@@headlines{
+ \edef\@tempa{#2}\edef\@tempb{headlines}\ifx\@tempa\@tempb
+ \setlength{\@tempdima}{#1\baselineskip}
+ \def\ta@hh{#1\baselineskip}
+ \else\@DIV\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\x@paper}
+% \begin{macro}{\x@@paper}
+% \changes{v2.5}{1997/06/17}{Neue Mustererkennung f"ur die Papiergr"o"se.}
+% Diese Makros werden ebenfalls sp"ater ben"otigt, wenn die Papiergr"o"se
+% festgelegt wird.
+%
+% \begin{macro}{\isopaper}
+% \changes{v2.5}{1997/06/17}{Neuer Befehl zur Berechnung unterschiedlicher
+% ISO/DIN-Papierformate.}
+% Da das Makro |\isopaper| in der Mustererkennung f"ur die Papiergr"o"se
+% ben"otigt wird, wurde dieses Makro ebenfalls vorgezogen.
+% \begin{macrocode}
+\newcommand\isopaper[2][a]{%
+% \end{macrocode}
+% Das Makro kennt zwei Parameter, von denen der erste und optionale die
+% Grundgr"o"se angibt. Die Angabe erfolgt "uber einen Kleinbuchstaben.
+% M"oglich ist
+% \begin{description}
+% \item[a] ISO/DIN-A-Format
+% \item[b] ISO/DIN-B-Format
+% \item[c] ISO/DIN-C-Format
+% \end{description}
+% Der zweite Paremeter gibt dann die Skalierung an.
+%
+% Als Grundgr"o"se wird jeweils die 0-Gr"o"se eingesetzt.
+% \begin{macrocode}
+ \ifx a#1
+ \setlength{\paperwidth}{841sp}\setlength{\paperheight}{1189sp}
+ \else\ifx b#1
+ \setlength{\paperwidth}{1000sp}\setlength{\paperheight}{1414sp}
+ \else\ifx c#1
+ \setlength{\paperwidth}{917sp}\setlength{\paperheight}{1297sp}
+ \else\ifx d#1
+ \setlength{\paperwidth}{771sp}\setlength{\paperheight}{1090sp}
+% \end{macrocode}
+% Wurde ein anderer Buchstabe angegeben, ist ein Fehler auszugeben.
+% \changes{v2.5a}{1997/06/22}{Ausgabe der gew"ahlten Papiergr"o"se
+% entfernt}
+% \begin{macrocode}
+ \else
+ \PackageError{typearea}
+ {Unknown ISO/DIN-papersize-letter #1}
+ {There are only four defined paperscalings:\MessageBreak
+ a = ISO/DIN-A, b = ISO/DIN-B, c = ISO/DIN-C, d = ISO/DIN-D\MessageBreak
+ Read KOMA-Script-documentation for further information.}
+ \setlength{\paperwidth}{841sp}\setlength{\paperheight}{1189sp}
+ \fi\fi\fi\fi
+% \end{macrocode}
+% Es d"urfte aufgefallen sein, da"s bei der Gr"o"senfestlegung statt
+% der Einheit "`mm"' die Einheit "`sp"' geschrieben wurde. Die Ma"se
+% sind also um ein Vielfaches zu klein und m"ussen sp"ater noch mit
+% 186468 multiplitziert werden, um auf Millimeter zu kommen. Dieser
+% Trick ist jedoch notwendig, weil die Norm vorschreibt, da"s bei der
+% nun folgenden $n$-fachen Halbierung der Seiten ($n =
+% \texttt{Skalierung} + 1$) jeweils auf ganze Millimeter abgerundet
+% werden mu"s.
+% \begin{macrocode}
+ \@tempcnta=#2\relax
+ \@whilenum\@tempcnta>0
+ \do{\setlength{\@tempdima}{\paperwidth}
+ \setlength{\paperwidth}{.5\paperheight}
+ \setlength{\paperheight}{\@tempdima}
+ \advance\@tempcnta by\m@ne}
+% \end{macrocode}
+% Zum Schlu"s mu"s nun die genannte Multiplitkation erfolgen. Da
+% "`mm"' kein ganzzahliges Vielfaches von "`sp"' ist, beinhaltet diese
+% Multiplikation eigentlich einen Fehler und eine Abweichung von der
+% Norm. Da jedoch "`sp"' die Rechengenauigkeit von {\TeX} darstellt,
+% stellt auch die Angabe eines ganzzahligen Millimeterwertes bereits
+% einen solchen Fehler dar.
+% \begin{macrocode}
+ \multiply\paperwidth by186468\relax
+ \multiply\paperheight by186468\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% Zur"uck zur Mustererkennung. Diese ist tats"achlich etwas einfacher als
+% die in den beiden F"allen zuvor.
+% \begin{macrocode}
+\newcommand*{\x@paper}{\expandafter\x@@paper\CurrentOption paper\x@@paper}
+\newcommand*{\x@@paper}{}
+\def\x@@paper #1#2paper#3\x@@paper{
+ \edef\@tempa{paper}\edef\@tempb{#3}\ifx\@tempa\@tempb
+ \ifnumber{#2}{
+ \ifx a#1\isopaper[a]{#2}
+ \else\ifx b#1\isopaper[b]{#2}
+ \else\ifx c#1\isopaper[c]{#2}
+ \else\ifx d#1\isopaper[d]{#2}
+ \else\ta@opt@err\fi\fi\fi\fi
+ }{\ta@opt@err}
+ \else\@headlines\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ta@opt@err}
+% Falls die zu"atzliche Option nicht \texttt{BCOR}, \texttt{DIV} oder eine
+% bekannte Papiergr"o"se ist, ist eine Fehlermeldung f"allig.
+% \begin{macrocode}
+\newcommand*{\ta@opt@err}{
+ \PackageError{typearea}
+ {Unknown option \CurrentOption}
+ {You've used an unknown option.\MessageBreak
+ Read the KOMA-Script-documentation for further
+ information.}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Optionen}
+%
+% \subsubsection{Kopf-, Fu"s-, Rand- und Textbereich}
+%
+% \begin{option}{headinclude}
+% \begin{option}{headexclude}
+% Diese Optionen bestimmen, ob der Seitenkopf bereits zum Textbereich
+% geh"ort. Der Zustand selbst wird in einem Schalter gespeichert.
+% \begin{macro}{\if@hincl}
+% \begin{macro}{\@hincltrue}
+% \begin{macro}{\@hinclfalse}
+% \begin{macrocode}
+\newif\if@hincl
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{headinclude}{\@hincltrue}
+\DeclareOption{headexclude}{\@hinclfalse}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \begin{option}{footinclude}
+% \begin{option}{footexclude}
+% Diese Optionen bestimmen, ob die Fu"szeilen noch zum Textbereich
+% geh"oren. Der Zustand selbst wird in einem Schalter gespeichert.
+% \begin{macro}{\if@hincl}
+% \begin{macro}{\@hincltrue}
+% \begin{macro}{\@hinclfalse}
+% \begin{macrocode}
+\newif\if@fincl
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{footinclude}{\@fincltrue}
+\DeclareOption{footexclude}{\@finclfalse}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \begin{option}{mpinclude}
+% \changes{v2.8q}{2002/03/28}{Neue Option}
+% \begin{option}{mpexclude}
+% \changes{v2.8q}{2002/03/28}{Neue Option}
+% Es gibt Dokumente mit sehr ausf"uhrlichen Randnotizen, bei denen die
+% Randnotizen bei der Satzspiegelberechnung in den Satzspiegel
+% eingerechnet werden sollten. Diese Optionen bestimmen, ob dies der
+% Fall ist.
+% \begin{macro}{\if@mincl}
+% \begin{macro}{\@mincltrue}
+% \begin{macro}{\@minclfalse}
+% Der Zustand wird in einem Schlater gespeichert. \textbf{Achtung:}
+% Bei Verwendung dieser Option m"ussen gr"ossere DIV-Werte verwendet
+% werden. Siehe dazu weiter unten.
+% \begin{macrocode}
+\@ifundefined{mincltrue}{\newif\if@mincl}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{mpinclude}{\@mincltrue}
+\DeclareOption{mpexclude}{\@minclfalse}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \subsubsection{Papiergr"o"sen-Optionen}
+%
+% \begin{option}{dvips}
+% \changes{v2.7g}{2001/04/17}{Neu}
+% \changes{v2.8m}{2001/09/04}{\cs{AtBeginDocument} eingef"ugt}
+% Diese Option sorgt daf"ur, dass die Seitengr"o"se als \cs{special}
+% f"ur \texttt{dvips} in die DVI-Datei geschrieben wird. Da
+% \verb|\AtBeginDvi| im Gegensatz zu \verb|\AtBeginDocument| das
+% Argument sofort expandiert, das special aber erst nach dem Laden von
+% \texttt{typearea} ausgef"uhert werden darf, wird \verb|\AtBeginDvi|
+% einfach innerhalb von \verb|\AtBeginDocument| aufgerufen.
+% \begin{macrocode}
+\DeclareOption{dvips}{\AtBeginDocument{\AtBeginDvi{%
+ \special{papersize=\the\paperwidth,\the\paperheight}}}}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{pdftex}
+% \changes{v2.7g}{2001/04/17}{Neu}
+% Diese Option sorgt daf"ur, dass die Seitengr"o"se mit {pdf\TeX}
+% ebenfalls in der PDF-Datei landet.
+% \begin{macrocode}
+\DeclareOption{pdftex}{\AtBeginDocument{%
+ \pdfpagewidth=\paperwidth \pdfpageheight=\paperheight}}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{macro}{\ifpdfoutput}
+% \changes{v2.7g}{2001/04/17}{Neu}
+% \changes{v2.8q}{2001/10/19}{\cs{pdfoutput} wird nicht mehr zu
+% \cs{relax}, wenn zuvor undefiniert}
+% \changes{v2.8q}{2001/10/19}{darf bereits definiert sein}
+% \changes{v2.8q}{2001/10/19}{Verwendung von \cs{scr@ifpdfoutput}}
+% \begin{macro}{\scr@ifpdfoutput}
+% \changes{v2.8q}{2001/10/19}{Neu zur internen Verwendung}
+% \changes{v2.8q}{2001/11/13}{funktioniert}
+% ifthenelse-Konstrukt, um abh"angig davon, ob als pdf ausgegeben wird
+% oder nicht, Befehle auszuf"uhren. Dieses Macro wird f"ur die
+% Deklaration der Option \texttt{pagesize} ben"otigt.
+% \begin{macrocode}
+\newcommand{\scr@ifpdfoutput}[2]{%
+ \begingroup\@ifundefined{pdfoutput}{\endgroup #2}{\endgroup%
+ \ifnum\pdfoutput>0\relax #1\else #2\fi}}%
+\@ifundefined{ifpdfoutput}{%
+ \let\ifpdfoutput\scr@ifpdfoutput%
+ }{%
+ \PackageInfo{typearea}{%
+ \string\ifpdfoutput\space already defined.\MessageBreak
+ If \string\ifpdfoutput\space does not behave like\MessageBreak
+ is is described at the KOMA-Script manual, try to\MessageBreak
+ load `typearea.sty' earlier or find out at which\MessageBreak
+ package or class \string\ifpdfoutput\space was defined.}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{option}{pagesize}
+% \changes{v2.7g}{2001/04/17}{Neu}
+% \changes{v2.8q}{2001/10/19}{\cs{scr@ifpdfoutput} statt
+% \cs{ifpdfoutput}}
+% Diese Option wiederum arbeitet je nachdem, ob eine PDF- oder eine
+% DVI-Ausgabe erfolgt, wie \texttt{dvips} oder \texttt{pdftex}.
+% \begin{macrocode}
+\DeclareOption{pagesize}{\AtBeginDocument{%
+ \scr@ifpdfoutput
+ {\pdfpagewidth=\paperwidth\pdfpageheight=\paperheight}
+ {\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}}}}
+% \end{macrocode}
+% \end{option}
+%
+%
+% Diese Optionen bestimmen die Papiergr"o"se. Aus der Papiergr"o"se wird
+% sp"ater mit |\typearea| der Seitenspiegel berechnet. Dar"uber hinaus
+% w"are das eine passende Gelegenheit |\SetDIVList| anzuwenden, darauf
+% wird aber verzichtet (da die Verwendung der Liste ohnehin als
+% veraltete Methode betrachtet werden kann.
+%
+% \begin{option}{a4paper}
+% \changes{v2.5}{1997/06/17}{explizite Default-Option als Sonderfall.}
+% \begin{macrocode}
+\DeclareOption{a4paper}{\isopaper{4}}
+% \end{macrocode}
+% \begin{option}{a5paper}
+% \changes{v2.5}{1997/06/17}{zur Verwendung als globale Option mit den
+% Standard-Classes als Sonderfall.}
+% \begin{macrocode}
+\DeclareOption{a5paper}{\isopaper{5}}
+% \end{macrocode}
+% \begin{option}{b5paper}
+% \changes{v2.5}{1997/06/17}{keine explizite Option mehr.}
+% ISO/DIN-A-, -B-, -C- und D-Formate werden per Mustererkennung
+% ermittelt. Dies erfolgt bei den Satzspiegeloptionen. Die Berechnung
+% selbst ist weiter oben zu finden. Die Optionen |a4paper| und
+% |a5paper| wurden lediglich als Sonderfall explizit definiert. Dies
+% ist notwendig, damit die |typearea| mit den Standard-Classes besser
+% zusammenarbeitet. W"aren die beiden Optionen nicht definiert,
+% w"urden die "ublichen Papierformatoptionen nicht in gewohnter Weise
+% als gobale Optionen funktionieren. Bei den un"ublichen "ubrigen
+% Formaten kann verlangt werden, da"s sie beim Package explizit
+% angegeben werden.
+% \end{option}
+% \end{option}
+% \end{option}
+% \begin{option}{letterpaper}
+% ISO letter:
+% \begin{macrocode}
+\DeclareOption{letterpaper}
+ {\setlength\paperheight {11in}%
+ \setlength\paperwidth {8.5in}}
+% \end{macrocode}
+% \end{option}
+% \begin{option}{legalpaper}
+% ISO legal:
+% \begin{macrocode}
+\DeclareOption{legalpaper}
+ {\setlength\paperheight {14in}%
+ \setlength\paperwidth {8.5in}}
+% \end{macrocode}
+% \end{option}
+% \begin{option}{executivepaper}
+% executive:
+% \begin{macrocode}
+\DeclareOption{executivepaper}
+ {\setlength\paperheight {10.5in}%
+ \setlength\paperwidth {7.25in}}
+% \end{macrocode}
+% \end{option}
+%
+% \subsubsection{landscape}
+%
+% \begin{option}{landscape}
+% \changes{v2.5}{1997/06/17}{Vertauschung verz"ogert}
+% Mit der Option |landscape| werden |\paperheight| und |\paperwidth|
+% vertauscht. Damit wird das entsprechende Querformat erreicht. Leider
+% kann das nicht sofort erfolgen, weil die Papiergr"o"se u.\,U. noch
+% nicht festliegt. Au"serdem ben"otigt man noch einen entsprechenden
+% Drucker oder einen |DVI|-Treiber, der mit einer speziellen Option
+% eine um 90\,Grad gedrehte Ausgabe erstellen kann.
+% \begin{macro}{\if@landscape}
+% \begin{macro}{\@landscapetrue}
+% \begin{macro}{\@landscapefalse}
+% \begin{macrocode}
+\newif\if@landscape
+\DeclareOption{landscape}{\@landscapetrue}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+%
+% \subsubsection{Satzspiegeloptionen}
+%
+% \begin{option}{BCOR}
+% \changes{v2.2a}{1995/01/25}{nun als Option verf"ugbar}
+% \changes{v2.2c}{1995/05/25}{nicht mehr im Kompatibilit"atsmodus}
+% \begin{option}{DIV}
+% \changes{v2.2a}{1995/01/25}{nun als Option verf"ugbar}
+% \changes{v2.2c}{1995/05/25}{nicht mehr im Kompatibilit"atsmodus}
+% F"ur die neu hinzugekommenen Optionen |BCOR| und |DIV| mu"s eine
+% Sonderbehandlung durchgef"uhrt werden. Diese Sonderbehandlung mu"s
+% die Optionen scannen und Fehler zur"uckweisen. Daf"ur werden die
+% oben definierten Befehle |\@...BCOR| und |\@...DIV| sowie
+% |\ta@TraceError| verwendet. Damit die Optionen zeichenweise
+% gescannt werden k"onnen, wird die Expansion von |\CurrentOption|
+% erzwungen.
+% \begin{option}{DIVcalc}
+% Zuvor wird jedoch noch die Sonderbehandlung f"ur |DIVcalc| eingebaut.
+% Vor Version 2.8q wurde das durch eine einfache Option realisiert,
+% "uber die die Default-DIV-Liste so manipuliert wird, da"s
+% automatisch nach einem guten DIV-Wert gesucht wird:
+% \begin{verbatim}
+% \providecommand\ta@divlist{}\def\ta@divlistelse{1}
+% \end{verbatim}
+% Neuerdings wird stattdessen der Z"ahler |\ta@div| gesetzt.
+% \changes{v2.4g}{1996/11/04}{Neue Option \texttt{DIVcalc}}
+% \changes{v2.8q}{2001/11/06}{die Option ver"andert nicht mehr die
+% \texttt{DIV}-Liste}
+% \begin{macrocode}
+\DeclareOption{DIVcalc}{\ta@div=1\relax}
+% \end{macrocode}
+% \end{option}
+% \begin{option}{DIVclassic}
+% Alternativ gibt es auch noch eine Sonderbehandlung fuer |DIVclassic|.
+% Auch dabei wurde fr"uher die Default-DIV-Liste benutzt:
+% \begin{verbatim}
+% \providecommand\ta@divlist{}\def\ta@divlistelse{3}
+% \end{verbatim}
+% Gesucht wird dabei nach einem DIV-Wert, mit dem der Satzspiegel der
+% Kreismethode m"oglichst gut erreicht wird.
+% \changes{v2.4n}{1997/05/28}{Neue Option \texttt{DIVclassic}.}
+% \begin{macrocode}
+\DeclareOption{DIVclassic}{\ta@div=3\relax}
+% \end{macrocode}
+% \end{option}
+% Ansonsten also die Behandlung f"ur |BCOR|\emph{Wert},
+% |DIV|\emph{Wert} und |a|\emph{Wert}|paper|, |b|\emph{Wert}|paper|,
+% |c|\emph{Wert}|paper| sowie |d|\emph{Wert}|paper|.
+% \begin{macrocode}
+\DeclareOption*{\x@paper}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \subsection{Konfigurationsdatei}
+%
+% \changes{v2.0e}{1994/10/28}{Konfigurationsdatei
+% \texttt{typearea.cfg} zur Definition
+% weiterer Optionen bzw. Papiergr"o"sen}
+% Es ist m"oglich in einer Datei |typearea.cfg| z.B. weitere Optionen
+% zu definieren, die dann automatisch eingeladen werden.
+% \begin{macrocode}
+\InputIfFileExists{typearea.cfg}
+ {\typeout{***************************************^^J%
+ * Local config file typearea.cfg used^^J%
+ ***************************************}}
+ {}
+% \end{macrocode}
+%
+% \subsection{Standardeinstellungen}
+% Als Standardoptionen sind |headexclude|, |footexclude| und die
+% Papiergr"o"se |a4paper| eingestellt. Diese Optionen k"onnen
+% selbstverst"andlich durch explizite Angaben "uberladen werden.
+% \changes{v2.3h}{1995/01/19}{\cs{relax} nach \cs{ProcessOptions}
+% erg"anzt.}
+% \begin{macrocode}
+\ExecuteOptions{headexclude,footexclude,a4paper}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% \changes{v2.5}{1997/06/17}{Landscape per Schalter aktivieren}
+% Das ist jetzt der richtige Zeitpunkt f"ur die Landscape-Aktivierung.
+% \begin{macrocode}
+\if@landscape
+ \setlength\@tempdima {\paperheight}
+ \setlength\paperheight {\paperwidth}
+ \setlength\paperwidth {\@tempdima}
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\ta@divlist}
+% \changes{v2.0e}{1994/10/28}{neue interne Definition}
+% \changes{v2.6}{2000/01/04}{die Liste umfa"st nun Werte ab 1\,pt statt
+% ab 10\,pt.}
+% \begin{macro}{\ta@divlistelse}
+% \changes{v2.6}{2000/01/04}{neue interne Definition}
+% Au"serdem mu"s an dieser Stelle noch f"ur die Standardeinstellung
+% der |DIV|-Liste gesorgt werden, falls eine solche noch nicht
+% definiert wurde.
+% \begin{macrocode}
+\providecommand\ta@divlist{{}{}{}{}{}{}{}{}{}{8}{10}{12}}
+% \end{macrocode}
+% \end{macro}
+% Wenn kein Defaultwert definiert ist, wird dieser Wert verwendet:
+% \begin{macrocode}
+\providecommand\ta@divlistelse{1}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Einige interne Register}
+%
+% \begin{Length}{ta@hblk}
+% \begin{Length}{ta@vblk}
+% \begin{Length}{ta@temp}
+% Diese Gr"o"senparameter und Z"ahler werden intern f"ur verschiedene
+% Befehle ben"otigt. (|\ta@bcor| und |\ta@div| werden bereits bei der
+% Optionenauswertung ben"otigt und sind deshalb vorgezogen.)
+% \begin{macrocode}
+\newlength{\ta@hblk}
+\newlength{\ta@vblk}
+\newlength{\ta@temp}
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+%
+%
+% \subsection{Die Berechnung des Seitenspiegels}
+%
+% \begin{macro}{\typearea}
+% Die Berechnung des Seitenspiegels, wie sie im Hauptteil der
+% Anleitung beschrieben ist, findet mit Hilfe des Befehls |\typearea|
+% statt, der hier definiert wird. Die Berechnung selbst findet in
+% mehreren Stufen statt.
+% \begin{macro}{\@typearea}
+% \changes{v2.4n}{1997/05/28}{Eigentliche Satzspiegelberechnung in
+% \cs{@typearea} ausgegliedert.}
+% Die eigentliche Satzspiegelberechnung geschieht "uber das Hilfsmakro
+% |\@typearea|, das dann auch von |\typearea| genutzt wird. Dieses
+% Hilfsmakro ben"otigt keine Parameter, da diese bereits zuvor von
+% |\typearea| in die entsprechenden Variablen geschrieben wurden.
+% \begin{macrocode}
+\newcommand*\@typearea{
+% \end{macrocode}
+% Zun"achst werden die horizontalen Ma"se berechnet. Dazu wird als
+% erstes die Gr"o"se einer horizontalen L"angeneinheit (\emph{HLE})
+% ermittelt:
+% \begin{macrocode}
+ \ta@hblk \paperwidth
+ \advance \ta@hblk by -\ta@bcor
+ \divide\ta@hblk by \ta@div
+% \end{macrocode}
+% Die Gr"o"se des Bereichs f"ur die Randnotizen ist ebenfalls von der
+% Streifenbreite abh"angig.
+% \changes{v2.8q}{2002/03/28}{Textbreite ber"ucksichtigt Option
+% \texttt{mpinclude}}
+% \begin{macrocode}
+ \if@mincl
+ \marginparwidth \ta@hblk
+ \advance\marginparwidth -\marginparsep
+ \else
+ \if@twoside
+ \marginparwidth 1.5\ta@hblk
+ \else
+ \marginparwidth \ta@hblk
+ \fi
+ \fi
+% \end{macrocode}
+% Der linke und rechte Rand wird relativ zur benutzbaren Seitenbreite
+% berechnet. Dabei mu"s auch der Rand ber"ucksichtigt werden, der vom
+% Druckertreiber standardm"a"sig hinzugef"ugt wird. Au"serdem ist der
+% Rand abh"angig davon, ob es sich um ein einseitiges oder
+% beidseitiges Layout handelt. Bei Option \texttt{mpinclude} sind im
+% beidseitigen Satz zus"atzlich die Randnotizen zu beachten.
+% \begin{macrocode}
+ \oddsidemargin -1in
+ \evensidemargin -1in
+ \if@twoside
+ \advance\oddsidemargin by \ta@hblk
+ \advance\oddsidemargin by \ta@bcor
+ \advance\evensidemargin by 2\ta@hblk
+ \if@mincl
+ \advance\evensidemargin by \marginparwidth
+ \advance\evensidemargin by \marginparsep
+ \fi
+ \else
+ \advance\oddsidemargin by 1.5\ta@hblk
+ \advance\oddsidemargin by \ta@bcor
+ \evensidemargin\oddsidemargin
+ \fi
+% \end{macrocode}
+% Der Rest steht nun f"ur den Textbereich zur Verf"ugung:
+% \begin{macrocode}
+ \textwidth \paperwidth
+ \advance\textwidth by -\ta@bcor
+ \advance\textwidth by -3\ta@hblk
+% \end{macrocode}
+% Falls die Randnotizen f"ur die Satzspiegelberechnung zum Textbereich
+% gehoeren, muessen sie zusammen mit ihrem Abstand vom Text nun von
+% diesem abgezogen werden. Es wird dabei davon ausgegangen, dass die
+% Randnotizen immer au"sen gesetzt werden. Sollte der Textbereich f"ur
+% Randnotizen zu schmal sein, so wird der Bereich der Randnotizen so
+% lange verkleinert, bis dies nicht mehr der Fall ist. Am einfachsten
+% geht dies, indem gegebenfalls die Breiten vertauscht werden.
+% \begin{macrocode}
+ \if@mincl
+ \advance\textwidth by -\marginparwidth
+ \advance\textwidth by -\marginparsep
+ \ifdim\textwidth <\marginparwidth
+ \PackageWarningNoLine{typearea}{%
+ Width of text (\the\textwidth) less than width of\MessageBreak
+ marginpar (\the\marginparwidth) while using option\MessageBreak
+ `mpinclude'.\MessageBreak
+ Because of this, I'm exchanging the values.\MessageBreak
+ You should increase DIV to avoid such problems.\MessageBreak
+ }
+ \@tempdima \marginparwidth
+ \marginparwidth \textwidth
+ \textwidth \@tempdima
+ \fi
+ \fi
+% \end{macrocode}
+%
+% Danach folgen die vertikalen Ma"se. Auch daf"ur wird zun"achst die H"ohe
+% eines Streifens ben"otigt.
+% \begin{macrocode}
+ \ta@vblk \paperheight
+ \divide\ta@vblk by \ta@div
+% \end{macrocode}
+% Davon ausgehend kann der obere Rand berechnet werden, wobei zu
+% ber"ucksichtigen ist, da"s {\TeX} diesen selbst"andig um ein Inch
+% vergr"o"sert.
+% \begin{macrocode}
+ \topmargin -1in
+ \advance\topmargin by \ta@vblk
+% \end{macrocode}
+% Au"serdem ist zu ber"ucksichtigen, ob der Kopf zum Textbereich oder
+% zum Rand geh"ort.
+% \begin{macrocode}
+ \if@hincl \else
+ \advance\topmargin by -\headheight
+ \advance\topmargin by -\headsep
+ \fi
+% \end{macrocode}
+% Bei der Berechnung des Textbereichs sind von der Papierh"ohe die R"ander
+% abzuziehen und ebenfalls zu ber"ucksichtigen, ob Kopf- und Fu"s zu den
+% R"andern oder zum Textbereich selbst gez"ahlt werden.
+% \begin{macrocode}
+ \ta@temp \paperheight
+ \advance\ta@temp by -3\ta@vblk
+ \if@hincl
+ \advance\ta@temp by -\headheight
+ \advance\ta@temp by -\headsep
+ \fi
+ \if@fincl
+ \advance\ta@temp by -\footskip
+ \fi
+% \end{macrocode}
+% Als Sonderbedingung ist dann noch zu beachten, da"s die Gr"o"se des
+% Textbereichs nicht zu einer vertikalen Aufweitung f"uhrt.
+% \begin{macrocode}
+ \textheight \topskip
+ \@whiledim\textheight<\ta@temp
+ \do{\advance\textheight by \baselineskip}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ta@modiv}
+% Dieses Hilfsmakro wird weiter unten ben"otigt. Es dividiert den
+% ersten Parameter durch den zweiten und liefert das gerundete
+% Ergebnis in |\ta@div| zur"uck. F"ur die Berechnung werden
+% |\@tempdima| und |\@tempdimb| verwendet.
+% \begin{macrocode}
+\newcommand*\ta@modiv[2]{
+ \setlength{\@tempdima}{#1}
+ \divide\@tempdima by#2\relax
+ \ta@div\@tempdima
+ \ifnum \ta@div<4\relax
+ \ta@div=4\relax
+ \else
+ \setlength{\@tempdimb}{#1}
+ \divide\@tempdimb\ta@div
+ \addtolength{\@tempdima}{\@tempdima}
+ \addtolength{\@tempdima}{-\@tempdimb}
+ \advance\ta@div\@ne
+ \setlength{\@tempdimb}{#1}
+ \divide\@tempdimb\ta@div
+% \end{macrocode}
+% \changes{v2.5a}{1997/06/22}{\cs{ifdim} statt \cs{ifnum}.}
+% \begin{macrocode}
+ \ifdim \@tempdima<\@tempdimb
+ \advance\ta@div by\m@ne
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ta@temp@goodwidth}
+% Dieses Makro setzt die Hilfdimension |\ta@temp| auf den Wert einer
+% optimalen Zeilenbreite in der aktuellen Schrift. Voraussetzung f"ur
+% diese Berechnung ist, da"s Zeilenbreiten von ca. 66 bis 72 Zeichen
+% optimal sind. Zur Vereinfachung wird mit dem Mittelwert 69
+% gerechnet. Eine solche Zeile besteht dann aus 66 durchschnittlichen
+% Klein- und 3 durchschnittlichen Gro"sbuchstaben.
+% \changes{v2.7i}{2001/05/17}{Berechnung ist robuster gegen
+% arithmetischen "Uberlauf bei sehr gro"sen Schriften}
+% \changes{v2.8q}{2002/03/06}{\cs{normalfont}\cs{normalsize}
+% hinzugef"ugt}
+% \begin{macrocode}
+\newcommand*\ta@temp@goodwidth{
+ \settowidth{\ta@temp}{\normalfont\normalsize
+ abcdefghijklmnopqrstuvwxyz}
+ \ifdim\ta@temp >200\p@
+ \divide\ta@temp by 26
+ \multiply\ta@temp by 3
+ \settowidth{\@tempdima}{\normalfont\normalsize
+ ABCDEFGHIJKLMNOPQRSTUVWXYZ}
+ \divide\@tempdima by 26
+ \multiply\@tempdima by 3
+ \addtolength{\ta@temp}{\@tempdima}
+ \else
+ \multiply\ta@temp by 66
+ \settowidth{\@tempdima}{\normalfont\normalsize
+ ABCDEFGHIJKLMNOPQRSTUVWXYZ}
+ \multiply\@tempdima by 3
+ \addtolength{\ta@temp}{\@tempdima}
+ \divide\ta@temp by 26
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \changes{v2.4g}{1996/11/04}{"Uberfl"ussigen Kommentar gel"oscht}
+% \changes{v2.7g}{2001/04/17}{die neuen Werte \texttt{current},
+% \texttt{default}, \texttt{calc} und
+% \texttt{classic} werden verstanden}
+% \changes{v2.8q}{2001/11/06}{der Wert \texttt{last} wird verstanden}
+% Die symbolischen Werte f"ur das obligatorische Argument haben
+% folgende Bedeutung:
+% \begin{center}\begin{tabular}{lll}
+% Symbol & Wert & Bedeutung \\\hline\\[-1.6ex]
+% \texttt{calc} & 2 & guten Wert berechnen \\
+% \texttt{classic} & 3 & mittelalterlicher Buchseitenkanon \\
+% \texttt{current} & --- & aktuellen Wert beibehalten \\
+% \texttt{default} & 0 & Wert aus der Liste verwenden \\
+% \texttt{last} & --- & Argument des letzten Aufrufs verwenden \\
+% \end{tabular}\end{center}
+% \begin{macrocode}
+\newcommand*\typearea[2][\z@]{
+ \edef\@tempa{#1}\edef\@tempb{current}\ifx\@tempa\@tempb\else
+ \setlength{\ta@bcor}{#1}
+ \fi
+ \edef\@tempa{#2}
+ \def\@tempb{last}\ifx\@tempa\@tempb\let\@tempa=\@lastdiv\fi
+ \def\@tempb{current}\ifx\@tempa\@tempb\else
+ \def\@tempb{default}\ifx\@tempa\@tempb\ta@div=0\relax\else
+ \def\@tempb{calc}\ifx\@tempa\@tempb\ta@div=2\relax\else
+ \def\@tempb{classic}\ifx\@tempa\@tempb\ta@div=3\relax\else
+ \ta@div=\@tempa\relax
+ \fi
+ \fi
+ \fi
+ \fi
+ \edef\@lastdiv{\the\ta@div}
+% \end{macrocode}
+% Nun mu"s festgestellt werden, ob die H"ohe des Kopfbereichs bereits
+% vorgegeben ist, oder ob diese selbst berechnet werden soll. Im Falle der
+% Berechnung wird als H"ohe f"ur den Kopf das 1.25-Fache des
+% Grundzeilenabstandes gew"ahlt. Damit sollte auch noch genug Raum f"ur die
+% optionale Trennlinie vorhanden sein.
+% \changes{v2.4n}{1997/05/28}{Berechnete Kopfh"ohe vom Grundzeilenabstand
+% abh"angig.}
+% \begin{macrocode}
+ \@ifundefined{ta@hh}{\headheight 1.25\baselineskip}{\headheight\ta@hh}
+% \end{macrocode}
+% Auch der Abstand zwischen Kopf und Text ist immer gleich.
+% Verschiedene Typographen geben hier verschiedene Werte an. Ein guter
+% Wert sollte erreicht werden, wenn dadurch eine Kopfzeile in das
+% normale Zeilenraster eingepa"st wird. Der Abstand soll aber auch
+% nicht zu gro"s, werden. Optimal ist angeblich ein Wert von einer
+% Zeile. Dies f"uhrt jedoch zu einem klaren Konflikt bei
+% unterstrichenen Kopfzeilen. Deshalb wird ein Kompromi"s gebildet.
+% \begin{macrocode}
+ \headsep 1.5\baselineskip
+% \end{macrocode}
+% Es folgen die restlichen von |DIV| und |BCOR| unabh"angigen Werte.
+% \begin{macrocode}
+ \footskip 3.5\baselineskip
+ \marginparsep 1cc
+ \marginparpush 0.45\baselineskip
+% \end{macrocode}
+% \changes{v2.4g}{1996/11/04}{\texttt{DIV}=0 versucht den Wert aus der
+% Default-Liste zu verwenden.}
+% Vor der eigentlichen Berechnung des Satzspiegels wird nun zun"achst
+% "uberpr"uft, ob der "ubergebene |DIV|-Wert 0 ist. Da Werte von 0 bis
+% 3 nicht m"oglich sind (Minimum sind drei Teile Rand und ein Teil
+% Text), wird der Wert 0 daf"ur verwendet, den Defaultwert aus der
+% Liste zu ermitteln, falls ein solcher vorhanden ist.
+% \changes{v2.5h}{1999/12/29}{Text der Warnung korrigiert.}
+% \begin{macrocode}
+ \ifnum\ta@div=\z@
+ \@ifundefined{@ptsize}{%
+ \@tempdima=\f@size pt\relax
+ \advance\@tempdima by.5pt
+ \ta@div=\@tempdima
+ \divide\ta@div by65536\relax
+ \advance\ta@div by-10\relax
+ \xdef\@ptsize{\the\ta@div}%
+ \PackageWarningNoLine{typearea}{%
+ \string\@ptsize\space not defined!
+ \MessageBreak
+ Fontsize ist \f@size.\MessageBreak
+ Defining \string\@ptsize\space to \@ptsize}%
+ }{}
+ \ta@divfor{\@ptsize}%
+ \fi
+% \end{macrocode}
+% \changes{v2.4n}{1997/05/28}{Optionale, klassische Kreisberechnung f"ur
+% \texttt{DIV}.}
+% Als zweiter Sonderfall wird f"ur einen |DIV|-Wert von 3 die
+% \emph{Kreisberechnung} durchgef"uhrt. Dabei wird versucht, den
+% Textbereich genau so hoch zu w"ahlen, wie das Papier breit ist. Ein
+% solches Verh"altnis wird bei klassischen Papierformaten als
+% harmonisch betrachtet.
+% \begin{macrocode}
+ \ifnum\ta@div=3
+ \typeout{DIV calculation for classic typearea.}
+ \setlength{\ta@temp}{\paperwidth}
+ \addtolength{\ta@temp}{-\ta@bcor}
+% \end{macrocode}
+% Bei der Berechnung des vertikal ben"otigten Platzes, ist zu
+% beachten, ob Kopf und Fu"s zum Textbereich oder zu den R"andern
+% geh"oren.
+% \begin{macrocode}
+ \if@hincl\else
+ \addtolength{\ta@temp}{\headheight}
+ \addtolength{\ta@temp}{\headsep}
+ \fi
+ \if@fincl\else
+ \addtolength{\ta@temp}{\footskip}
+ \fi
+% \end{macrocode}
+% Wird vertikal mehr Platz ben"otigt, als vorhanden ist, wird eine andere
+% Berechnung versucht, die weiter unten erfolgt.
+% \changes{v2.5a}{1997/06/22}{\cs{ifdim} statt \cs{ifnum}.}
+% \begin{macrocode}
+ \ifdim \ta@temp>\paperheight
+ \PackageWarningNoLine{typearea}
+ {No classic typearea with this papersize!\MessageBreak
+ Using calculated DIV}
+ \ta@div=\@ne
+% \end{macrocode}
+% Ansonsten wird mittels des belegten Textbereichs und der Papierh"ohe der
+% obere und untere Rand zusammen,
+% \begin{macrocode}
+ \else
+ \setlength{\ta@temp}{\paperheight}
+ \addtolength{\ta@temp}{-\paperwidth}
+ \addtolength{\ta@temp}{\ta@bcor}
+% \end{macrocode}
+% daraus die Streifenh"ohe
+% \begin{macrocode}
+ \divide\ta@temp 3\relax
+% \end{macrocode}
+% und schlie"slich erneut mit Hilfe der Papierh"ohe der genaue |DIV|-Wert
+% berechnet.
+% \begin{macrocode}
+ \ta@modiv{\paperheight}{\ta@temp}
+ \fi
+% An dieser Stelle muss \texttt{mpinclude} nicht ber"ucksichtigt
+% werden, da nicht die Breite des Textbereichs, sonder die Breite des
+% Papiers als Kriterium verwendet wird.
+ \fi
+% \end{macrocode}
+% Wurde bisher kein Wert gefunden oder ein |DIV|-Wert von 1 bis 2
+% angegeben, so wird nun ein m"oglichst optimaler |DIV|-Wert
+% ermittelt.
+% \changes{v2.4n}{1997/05/28}{Optimale \texttt{DIV}-Berechnung
+% verbessert}
+% \begin{macrocode}
+ \ifnum\ta@div<4
+ \typeout{DIV calculation for typearea with good linewidth.}
+% \end{macrocode}
+% Zun"achst k"onnte die Textbreite die gesamte Sichtbare Papierbreite
+% einnehmen.
+% \begin{macrocode}
+ \setlength{\textwidth}{\paperwidth}
+ \addtolength{\textwidth}{-\ta@bcor}
+% \end{macrocode}
+% Als Sollbreite wird hier die ideale Zeilenf"ullung verwendet
+% \begin{macrocode}
+ \ta@temp@goodwidth
+% \end{macrocode}
+% Im Zweispaltenmodus besteht jede Zeile aus zwei solchen Spalten
+% zuz"uglich dem Spaltenabstand.
+% \changes{v2.8q}{2001/12/13}{DIVcalc liefert im zweispaltigen Satz
+% (wie dokumentiert) breitere Spalten}
+% \begin{macrocode}
+ \if@twocolumn
+ \addtolength{\ta@temp}{\ta@temp}
+ \addtolength{\ta@temp}{\columnsep}
+ \fi
+% \end{macrocode}
+% In fr"uheren Versionen erfolgte nun eine iterative Ann"aherung an den
+% optimalen |DIV|-Wert. Je nach {\TeX}-Implementierung und
+% Papierformat, kann das aber recht lange dauern. Die obere Berechnung
+% zum Vorbild nehmend, wird deshalb nun ebenfalls versucht, den
+% optimalen Wert direkt zu berechnen. Dazu wird zun"achst wie oben die
+% Gr"o"se der horizontalen R"ander zusammen ermittelt:
+% \begin{macrocode}
+ \setlength{\ta@hblk}{\paperwidth}
+ \addtolength{\ta@hblk}{-\ta@temp}
+% \end{macrocode}
+% Daraus dann die Breite eines Streifens.
+% \begin{macrocode}
+ \divide\ta@hblk by 3
+% \end{macrocode}
+% Ist die Breite negativ, so wird die Mindestbreite von 5mm eingesetzt.
+% \changes{v2.5a}{1997/06/22}{\cs{ifdim} statt \cs{ifnum}.}
+% \begin{macrocode}
+ \ifdim \ta@hblk<\z@\relax
+ \setlength{\ta@hblk}{5mm}
+ \fi
+% \end{macrocode}
+% Nun kann wieder der |DIV|-Wert ermittelt werden.
+% \changes{v2.8q}{2002/03/28}{Ber"uchsichtigung von Option
+% \texttt{mpinclude} bei der \texttt{DIV}-Berechnung}
+% Im Falle der Option \texttt{mpinclude} gilt allgemein, dass
+% der Nenner mit $\frac{3}{3+m}$ zu multiplizieren ist. Dabei ist $m$
+% die Anzahl an L"angeneinheiten, die f"ur die Randnotizen verwendet
+% werden sollen. Mit $m=1$ ist also der Faktor $\frac{3}{4}=0.75$ zu
+% verwenden. Schwieriger wird es, wenn hier nicht die Anzahl
+% L"angeneinheiten, sondern ein konkreter Wert f"ur die Breite der
+% Randnotizen verwendet wird.
+% \begin{macrocode}
+ \if@mincl
+ \setlength{\ta@temp}{.75\ta@hblk}
+ \else
+ \setlength{\ta@temp}{\ta@hblk}
+ \fi
+% \begin{macrocode}
+ \ta@modiv{\paperwidth}{\ta@temp}
+% \end{macrocode}
+% Als Erschwernis kommt jetzt jedoch hinzu, da"s nun zwar der
+% |DIV|-Wert f"ur die Breite optimal ist, jedoch u.\,U. zu einer zu
+% gro"sen H"ohe f"uhrt. Deshalb wird zun"achst ein Satzspiegel f"ur
+% diesen |DIV|-Wert berechnet.
+% \begin{macrocode}
+ \@typearea
+% \end{macrocode}
+% Nun wird "uberpr"uft, ob die vertikalen Ausma"se in Ordnung
+% sind. Auch hier ist wieder eine minimale Streifenbreite
+% vorteilhaft. Die Streifenbreite ergibt sich direkt aus dem oberen
+% Rand. Wobei jedoch noch das {\TeX}-Offset von 1in zu
+% ber"ucksichtigen ist.
+% \changes{v2.5a}{1997/06/22}{\cs{ifdim} statt \cs{ifnum}}
+% \begin{macrocode}
+ \setlength{\ta@temp}{-1in}
+ \addtolength{\ta@temp}{5mm}
+ \ifdim\topmargin<\ta@temp
+% \end{macrocode}
+% Ist der Minimalrand nicht eingehalten, so wird f"ur diesen ein neuer
+% |DIV|-Wert ermittelt. Dabei mu"s ebenfalls ber"ucksichtigt werden,
+% ob Kopf- und Fu"sbereich zum Text oder zum Rand geh"oren.
+% \changes{v2.5b}{1997/06/29}{Bei der Mindestrandbetrachtung
+% \texttt{headinclude} und
+% \texttt{footinclude} ber"ucksichtigen}
+% \begin{macrocode}
+ \setlength{\ta@temp}{15mm}
+ \if@hincl\else
+ \addtolength{\ta@temp}{\headheight}
+ \addtolength{\ta@temp}{\headsep}
+ \fi
+ \if@fincl\else
+ \addtolength{\ta@temp}{\footskip}
+ \fi
+ \divide\ta@temp by3\relax
+ \ta@modiv{\paperheight}{\ta@temp}
+ \fi
+% \end{macrocode}
+% Dieser Sonderfall ist somit abschlie"send behandelt.
+% \begin{macrocode}
+ \fi
+% \end{macrocode}
+% Damit steht jetzt also der |DIV|-Wert fest, und die eigentliche
+% Berechnung kann folgen.
+% \begin{macrocode}
+ \@typearea
+% \end{macrocode}
+% \changes{v2.0e}{1994/10/28}{Die Seitenaufteilung wird in die log-Datei
+% geschrieben.}
+% \changes{v2.4i}{1996/11/11}{Die Seitenaufteilung wird etwas sp"ater in
+% die log-Datei geschrieben.}
+% \changes{v2.4i}{1996/11/11}{Am Ende von \cs{typearea} wird noch
+% \cs{@typeare@end} ausgef"uhrt.}
+% \changes{v2.4j}{1996/12/04}{Bei der Seitenaufteilung wird \cs{textheight}
+% nicht mehr doppelt, daf"ur zus"atzlich
+% \cs{baselineskip} ausgegeben.}
+% \changes{v2.5}{1997/06/17}{"`arithmetic overflow"' bei landscape
+% behoben}
+% Zum Schlu"s soll die Seitenaufteilung noch in die |log|-Datei
+% geschrieben werden.
+% \begin{macrocode}
+ \ta@temp@goodwidth
+ \if@twocolumn
+ \addtolength{\ta@temp}{\ta@temp}%
+ \addtolength{\ta@temp}{\columnsep}%
+ \fi
+ \setlength{\@tempdima}{\ta@temp}%
+ \addtolength{\ta@temp}{-\textwidth}%
+ \divide\@tempdima 100\relax
+ \divide\ta@temp\@tempdima
+ \@tempcnta\ta@temp
+ \ifnum\@tempcnta<5\relax
+ \ifnum\@tempcnta>-5\relax
+ \@tempcnta=0
+ \else
+ \advance\@tempcnta 4
+ \fi
+ \else
+ \advance\@tempcnta -4
+ \fi
+ \ifnum\@tempcnta<-15\relax
+ \PackageWarningNoLine{typearea}
+ {Bad DIV-value!\MessageBreak
+ You should decrease DIV, increase fontsize or\MessageBreak
+ change papersize}
+ \else\ifnum\@tempcnta>15\relax
+ \PackageWarningNoLine{typearea}
+ {Bad DIV-value!\MessageBreak
+ You should increase DIV, decrease fontsize or\MessageBreak
+ change papersize}
+ \fi\fi
+ \ifnum\ta@div<6\relax
+ \PackageWarningNoLine{typearea}
+ {Very low DIV-value!\MessageBreak
+ DIV-values less than 6 result in textwidth/-height\MessageBreak
+ smaller than total marginwidth/-height.\MessageBreak
+ You should increase DIV, increase fontsize or\MessageBreak
+ change papersize}
+ \fi
+ \PackageInfo{typearea}{%
+ These are the values describing the layout:\MessageBreak
+ DIV\space\space=\space\number\ta@div\MessageBreak
+ BCOR\space=\space\the\ta@bcor\MessageBreak
+ \string\paperwidth\space\space\space\space\space\space=%
+ \space\the\paperwidth\MessageBreak
+ \space\string\textwidth\space\space\space\space\space\space=%
+ \space\the\textwidth\MessageBreak
+ \space\string\columnwidth\space\space\space\space=%
+ \space\the\columnwidth\MessageBreak
+ \space\string\columnsep\space\space\space\space\space\space=%
+ \space\the\columnsep\MessageBreak
+ \space DIV-departure\space\space\space=%
+ \space\the\@tempcnta/100\MessageBreak
+ \space\string\evensidemargin\space=%
+ \space\the\evensidemargin\MessageBreak
+ \space\string\oddsidemargin\space\space=%
+ \space\the\oddsidemargin\MessageBreak
+ \string\paperheight\space\space\space\space\space=%
+ \space\the\paperheight\MessageBreak
+ \space\string\textheight\space\space\space\space\space=%
+ \space\the\textheight\MessageBreak
+ \space\string\topmargin\space\space\space\space\space\space=%
+ \space\the\topmargin\MessageBreak
+ \space\string\headheight\space\space\space\space\space=%
+ \space\the\headheight\MessageBreak
+ \space\string\headsep\space\space\space\space\space\space\space\space=%
+ \space\the\headsep\MessageBreak
+ \space\string\topskip\space\space\space\space\space\space\space\space=%
+ \space\the\topskip\MessageBreak
+ \space\string\footskip\space\space\space\space\space\space\space=%
+ \space\the\footskip\MessageBreak
+ \space\string\baselineskip\space\space\space=%
+ \space\the\baselineskip\MessageBreak
+ }
+ \@typearea@end}
+% \end{macrocode}
+%
+% \begin{macro}{\@typearea@end}
+% Das Makro |\@typearea@end| wird verwendet, um mit einem gewaltigen
+% Hack die "Anderung des Satzspiegels innerhalb eines Dokuments zu
+% erm"oglichen.
+%
+% Zun"achst ist das Makro leer, weil in der Pr"aambel nichts weiter zu tun
+% ist.
+% \begin{macrocode}
+\newcommand\@typearea@end{}
+% \end{macrocode}
+%
+% Am Anfang des Dokuments mu"s das Makro jedoch so umdefiniert werden, da"s
+% alle Berechnungen, die |\begin{document}| f"ur die Ausgabedimensionen
+% durchf"uhrt auch noch von |\typearea| durchgef"uhrt werden.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \renewcommand\@typearea@end{%
+% \end{macrocode}
+% Als erstes wird jedoch eine Warnung ausgegeben, weil es wirklich sehr
+% unsauber ist, so zu verfahren. Das ganze ist absolut abh"angig von der
+% \LaTeX-Version.
+% \begin{macrocode}
+ \PackageWarning{typearea}
+ {Typearea changed!\MessageBreak
+ You should do this only at preamble, because only\MessageBreak
+ \protect\begin{document} calculates output dimensions!\MessageBreak
+ Trying to calculate new output dimensions, but\MessageBreak
+ this is only a dirty hack}
+% \end{macrocode}
+% Sicherheitshalber werden jetzt die Gleitobjekte ausgegeben und eine neue
+% Seite begonnen.
+% \begin{macrocode}
+ \clearpage
+% \end{macrocode}
+% Dann k"onnen endlich die Dimensionen, die z.\,B. von der Ausgaberoutine
+% ben"otigt werden, neu berechnet werden.
+% \begin{macrocode}
+ \@colht\textheight
+ \@colroom\textheight \vsize\textheight
+ \columnwidth\textwidth
+ \if@twocolumn
+ \advance\columnwidth -\columnsep
+ \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue
+ \fi
+ \hsize\columnwidth \linewidth\hsize
+ }}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\areaset}
+% \changes{v2.1b}{1994/12/31}{\cs{headheight} von \cs{@ptsize}
+% abh"angig gemacht}
+% \changes{v2.4i}{1996/11/11}{Am Ende von \cs{typearea} wird noch
+% \cs{@typeare@end} ausgef"uhrt.}
+% \changes{v2.6}{2000/01/04}{\cs{headheight} von \cs{f@size} statt von
+% \cs{@ptsize} abh"angig gemacht}
+% \changes{v2.7g}{2001/04/17}{Auch hier existiert der symbolische Wert
+% \texttt{current} f"ur BCOR}
+% Zur Berechnung eines Seitenspiegels mit fester Breite und
+% H"ohe dient der Befehl |\areaset|. Der Algorithmus ist "ahnlich dem
+% vorherigen Verfahren, aber einfacher.
+% \begin{macrocode}
+\newcommand*\areaset[3][\z@]{
+ \edef\@tempa{#1}\edef\@tempb{current}\ifx\@tempa\@tempb\else
+ \setlength{\ta@bcor}{#1}
+ \fi
+ \textwidth #2
+ \textheight #3
+ \ta@hblk \paperwidth
+ \advance\ta@hblk by -\ta@bcor
+ \advance\ta@hblk by -\textwidth
+ \divide\ta@hblk by 3
+ \oddsidemargin -1in
+ \evensidemargin -1in
+ \if@twoside
+ \advance\oddsidemargin by \ta@hblk
+ \advance\oddsidemargin by \ta@bcor
+ \advance\evensidemargin by 2\ta@hblk
+ \else
+ \advance\oddsidemargin by 1.5\ta@hblk
+ \advance\oddsidemargin by \ta@bcor
+ \evensidemargin\oddsidemargin
+ \fi
+ \headheight 15\p@
+ \advance\headheight by\f@size\p@
+ \advance\headheight by-10\p@
+ \headsep 1.5\baselineskip
+ \footskip 3.5\baselineskip
+ \ta@vblk \paperheight
+ \advance\ta@vblk by -\textheight
+ \divide\ta@vblk by 3
+ \if@hincl
+ \advance\textheight by -\headheight
+ \advance\textheight by -\headsep
+ \fi
+ \if@fincl
+ \advance\textheight by -\footskip
+ \fi
+ \topmargin \ta@vblk
+ \advance\topmargin by -1in
+ \if@hincl \else
+ \advance\topmargin by -\headheight
+ \advance\topmargin by -\headsep
+ \fi
+ \if@twoside
+ \marginparwidth 1.5\ta@hblk
+ \else
+ \marginparwidth \ta@hblk
+ \fi
+ \marginparsep 1cc
+ \marginparpush 0.45\baselineskip
+ \@areaset@end}
+% \end{macrocode}
+%
+% \begin{macro}{\@areaset@end}
+% Da die Schlu"s-Berechnungen und auch die Ausgabe von |\@areaset@end|
+% und |\@typearea@end| identisch sind, wird hier genau daf"ur gesorgt.
+% Dazu kann nat"urlich nicht |\let| verwendet werden, weil sich die
+% Definition von |\@typarea@end| ja im Laufe der Zeit "andert.
+% \begin{macrocode}
+\newcommand\@areaset@end{\@typearea@end}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Berechnung des Standardseitenspiegels}
+%
+% \begin{macro}{\ta@divfor}
+% Der Standardseitenspiegel ist abh"angig von den mit |\SetDIVList|
+% vorgegebenen Einstellungen. Dazu mu"s aus einer eventuell vorhandenen
+% inneren Liste |ta@divlist| der von der Schriftgr"o"se abh"angige
+% \textsf{DIV}-Wert ausgelesen werden. Dies geschieht mit Hilfe des
+% |\ta@divfor|-Befehls, der sich wiederum einiger interner Befehle
+% zur Listenbearbeitung bedient.
+% \changes{v2.4g}{1996/11/04}{Der Satzspiegel wird nicht mehr direkt
+% berechnet, sondern nur der
+% \texttt{DIV}-Wert aus der Defaultliste
+% ermittelt.}
+% \changes{v2.6}{2000/01/04}{Ber"ucksichtigung der erweiterten Liste}
+% \changes{v2.8q}{2002/03/28}{Ber"ucksichtigung der Option
+% `mpinclude'}
+% \changes{v2.9e}{2002/08/25}{zweimal \cs{relax} eingef"ugt}
+% \begin{macrocode}
+\newcommand*{\ta@divfor}[1]{
+ \if@mincl
+ \PackageInfo{typearea}{%
+ With option `mpinclude' there are no predefined\MessageBreak
+ DIV-values. Using DIV calculation for good line\MessageBreak
+ width}
+ \ta@div=2
+ \else
+ \xdef\@tempa{\ta@divlist{}}
+ \ta@div=#1\relax
+ \@whilenum \ta@div >-9 \do {%
+ \ifx\@tempa\empty \relax%
+ \else \xdef\@tempa{\expandafter\@cdr\@tempa\@nil}%
+ \fi
+ \advance\ta@div by -1
+ }
+ \ifx\@tempa\empty
+% \end{macrocode}
+% Wenn keine Voreinstellung gefunden werden konnte, so wird immer
+% der Optimalwert berechnet. Mit einer Warnung wird darauf hingewiesen.
+% \begin{macrocode}
+ \ta@div=10\advance\ta@div by#1\relax
+ \PackageWarningNoLine{typearea}{%
+ DIV for \the\ta@div pt and used papersize\MessageBreak
+ not defined!\MessageBreak
+ Using DIV=\ta@divlistelse}
+ \ta@div=\ta@divlistelse\relax
+ \else
+% \end{macrocode}
+% Ansonsten wird der vorgegebene Wert verwendet.
+% \begin{macrocode}
+ \xdef\@tempa{\expandafter\@car\@tempa\@nil}
+ \ifx\@tempa\empty
+ \ta@div=\ta@divlistelse\relax
+ \else
+ \ta@div=\@tempa\relax
+ \fi
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \changes{v2.8q}{2001/11/06}{Initialisierung mit Hilfe der
+% symbolischen Werte \texttt{current}}
+% Nun fehlt nur noch die eigentliche Initialisierung. Dazu wird einfach der
+% Satzspiegel mit den getroffenen Voreinstellungen berechnet. Da der
+% |DIV|-Wert 0 f"ur einen Wert aus der Default-Liste steht, bleibt die
+% Kompatibilit"at zu "alteren Versionen erhalten. Der aktuelle Wert
+% f"ur |DIV| und |BCOR| wurde "uber die Optionen bereits
+% gesetzt. Dabei kann abweichend zu sonst der aktuelle Wert auch 0, 1,
+% 2 oder 3 sein. Die Initialisierung des Pakets ist damit sehr einfach.
+% \begin{macrocode}
+\typearea[current]{current}
+% \end{macrocode}
+%
+% \subsection{Fast das Ende}
+%
+% \begin{macrocode}
+%</typearea>
+% \end{macrocode}
+%
+% \section{"`scrartcl"'-class,
+% "`scrreprt"'-class,
+% "`scrbook"'-class,
+% "`scrlttr2"'-class}
+%
+% Alle drei Haupt-\emph{classes} haben viele Teile gemeinsam. Die
+% gr"o"sten Gemeinsamkeiten bestehen dabei zwischen |scrreprt| und
+% |scrbook|. |scrartcl| unterscheidet sich in mehreren Punkten von den
+% beiden "ubrigen Haupt-\emph{classes}.
+%
+% |scrlttr2| unterscheidet sich in vielen Punkten grundlegend von den
+% drei Haupt-\emph{classes}. Dennoch wird sie ab Version 2.8n
+% ebenfalls hier implementiert.
+%
+% \begin{macrocode}
+%<*class>
+% \end{macrocode}
+%
+% \changes{v2.0e}{1994/07/07}{Erste Version von "`scrartcl"', "`scrreprt"'
+% und "`scrbook"'.}
+% \changes{v2.0e}{1994/08/10}{\cs{sectdef} "uberall in "`scrreprt"' und
+% "`scrbook"' durch \cs{secdef} ersetzt.}
+% \changes{v2.0e}{1994/08/10}{\cs{addcontensline} in "`scrreprt"' und
+% "`scrbook"' durch \cs{addcontentsline}
+% ersetzt.}
+% \changes{v2.0e}{1994/08/10}{\cs{@makechapterhead} an zwei Stellen in
+% "`scrreprt"' und "`scrbook"' durch
+% \cs{@makeschapterhead} ersetzt.}
+% \changes{v2.0e}{1994/08/10}{\cs{afterheadings} in "`scrreprt"' und
+% "`scrbook"' durch \cs{@afterheadings}
+% ersetzt.}
+% \changes{v2.1b}{1994/12/31}{Letzte Version f"ur 1994
+% fertiggestellt.}
+% \changes{v2.8m}{2001/09/08}{"`scrlttr2"' zur"uck in "`scrclass.dtx"'}
+%
+% Die Implementierung "ahnelt in vielen Punkten der der Standard-classes.
+% Deshalb werden hier allenfalls grobe Unterschiede behandelt.
+%
+% \subsection{Optionen}
+%
+% \subsubsection{Optionen mit Hilfe von \texttt{keyval}}
+%
+% Die neue Briefklasse (und derzeit nur diese) verwendet das
+% \texttt{keyval}-Paket f"ur die Auswertung der Optionen. Dabei wird
+% schlicht jede Option "uber \cs{DeclareOption*} ausgewertet.
+% \begin{macrocode}
+%<*scrlettr>
+\RequirePackage{keyval}
+% \end{macrocode}
+%
+% \begin{macro}{\KOMA@key}
+% \begin{macro}{\KOMAoptions}
+% \changes{v2.8q}{2001/10/08}{Neu}
+% \begin{macro}{\scr@save@KV@errx}
+% \changes{v2.8q}{2001/10/15}
+% Ein paar Abk"urzungen und Erleichterungen sowohl f"ur mich als auch
+% f"ur den Anwender. Das erste Makro dient der Definition eines neuen
+% \texttt{keyval}-Schl"ussels. Das zweite ruft \cs{setkeys} auf.
+% \begin{macrocode}
+\newcommand*{\KOMA@key}{\define@key{KOMA}}
+\newcommand*{\KOMAoptions}[1]{%
+ \@ifundefined{scr@save@KV@errx}{%
+ \let\scr@save@KV@errx=\KV@errx
+ \renewcommand*{\KV@errx}[1]{%
+ \ClassError{%
+ scrlttr2%
+ }{unknown KOMA option `#1'}{%
+ You've tried to use the KOMA option `#1'.\MessageBreak
+ But there is no KOMA option with that name.\MessageBreak
+ See the manual of KOMA-Script for information about known koma
+ options.}}%
+ \setkeys{KOMA}{#1}%
+ \let\KV@errx=\scr@save@KV@errx
+ \let\scr@save@KV@errx=\relax
+ }{%
+ \setkeys{KOMA}{#1}%
+ }\ignorespaces%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\AfterProcessOptions}
+% \begin{macro}{\AfterProcessOptions@hook}
+% \changes{v2.8q}{2001/10/08}{Neu}
+% Au"serdem existiert ein interner \emph{hook}, um aufgrund von
+% Optionen unmittelbar nach \cs{ProcessOptions} Aktionen auszul"osen.
+% \begin{macrocode}
+\newcommand*{\AfterProcessOptions@hook}{}
+\newcommand*{\AfterProcessOptions}[1]{%
+ \g@addto@macro{\AfterProcessOptions@hook}{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@setif}
+% \changes{v2.8q}{2001/10/08}{Neu}
+% Es wird ebenfalls ein Makro ben"otigt, mit dem man einen Schalter
+% "uber die symbolischen Werte \texttt{true}, \texttt{false},
+% \texttt{on} und \texttt{off} setzen kann.
+% \begin{macro}{\@setif@alsoerr}
+% \changes{v2.8q}{2001/10/09}{Neu}
+% \begin{macrocode}
+\newcommand*{\@setif}[3][]{%
+ \begingroup%
+ \edef\@tempa{#1}
+ \ifx\@tempa\@empty\def\@tempc{@#2}\else\def\@tempc{#1}\fi
+ \edef\@tempa{#3}\def\@tempb{on}\ifx\@tempa\@tempb
+ \def\@tempa{true}%
+ \else\def\@tempb{off}\ifx\@tempa\@tempb
+ \def\@tempa{false}%
+ \fi\fi%
+ \@ifundefined{\@tempc\@tempa}{%
+ \ClassError{%
+ scrlttr2%
+ }{You've used an unknown switch or value}{%
+ You've tried to set switch `#2' to value `#3', but there's
+ either no\MessageBreak%
+ switch `#2' defined or `#3' is not a switch
+ value.\MessageBreak%
+ Allowed switch values are `true', `false', `on',
+ `off'\@setif@alsoerr.}
+ \let\@tempa\endgroup
+ }{%
+ \edef\@tempa{\endgroup\noexpand\@nameuse{\@tempc\@tempa}}
+ }
+ \@tempa
+ \let\@setif@alsoerr=\@empty
+ }
+\newcommand*{\@setif@alsoerr}{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@setxif}
+% \changes{v2.8q}{2001/10/08}{Neu}
+% Es existiert eine Variante von obigem Makro, bei der die Werte f"ur
+% \texttt{true} und \texttt{false} explizit angegeben werden. Diese
+% sind dann Parameter 3 (\texttt{true}) und 4 (\texttt{false}).
+% \begin{macrocode}
+\newcommand*{\@setxif}[5][]{%
+ \begingroup%
+ \edef\@tempa{#1}
+ \ifx\@tempa\@empty\def\@tempc{@#2}\else\def\@tempc{#1}\fi
+ \@ifundefined{\@tempc true}{%
+ \ClassError{%
+ scrlttr2%
+ }{You've used an unknown switch}{%
+ You've tried to set switch `#2' to value `#3', but
+ there's no\MessageBreak
+ switch `#2' defined.}
+ \let\@tempa\endgroup
+ }{%
+ \edef\@tempa{#3}\edef\@tempb{#4}\ifx\@tempa\@tempb
+ \edef\@tempa{\endgroup\noexpand\@nameuse{\@tempc true}}
+ \else\def\@tempb{#5}\ifx\@tempa\@tempb
+ \edef\@tempa{\endgroup\noexpand\@nameuse{\@tempc false}}
+ \else
+ \ClassError{%
+ scrlttr2%
+ }{You've used an unknown switch value}{%
+ You've tried to set switch `#2' to value `#3', but allowed
+ switch\MessageBreak
+ values are `#4', `#5'\@setif@alsoerr\space only.}
+ \let\@tempa\endgroup
+ \fi\fi%
+ }
+ \@tempa
+ \let\@setif@alsoerr=\@empty
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@setnumstate}
+% \changes{v2.8q}{2002/01/25}{Neu}
+% Es wird au"serdem ein Makro ben"otigt, mit dem man ein nummerisches
+% Makro in Abh"angigkeit "uber einen symbolischen Wert setze kann.
+% Dabei soll es auch m"oglich sein, dass verschiedene symbolische
+% Werte auf dieselbe Nummer abgebildet werden. Das erste Argument ist
+% das Makro das umdefiniert werden soll. Das zweite ist die Option,
+% "uber die der Wert gesetzt wird. Das dritte ist eine Liste aus
+% symbolischen und nummerischen Werten der Art
+% \{\emph{Symbol}\}\{\emph{Wert}\},\{\emph{Symbol}\}\{\emph{Wert}\}\dots
+% \begin{macrocode}
+\newcommand*{\@setnumstate}[4]{%
+ \begingroup
+ \edef\@searched{#4}%
+ \let\@tempa=\@empty
+ \let\@tempb=\@empty
+ \@tempswafalse
+ \@for\@valuelist:=#3\do{%
+ \if@tempswa\else
+ \edef\@tempc{\expandafter\@firstoftwo\@valuelist}%
+ \edef\@tempa{\@tempa\@tempb`\@tempc'}%
+ \edef\@tempb{, }%
+ \ifx\@tempc\@searched
+ \@tempswatrue
+ \edef\@tempa{\expandafter\@secondoftwo\@valuelist}%
+ \fi
+ \fi
+ }
+ \if@tempswa
+ \edef\@tempa{\endgroup
+ \noexpand\renewcommand*{\noexpand#1}{\@tempa}}
+ \else
+ \ClassError{%
+ scrlttr2%
+ }{You've used an unknown option value}{%
+ You've tried to set option `#2' to value `#4',
+ but allowed values\MessageBreak
+ are only:\MessageBreak
+ \@tempa.}%
+ \let\@tempa=\endgroup
+ \fi
+ \@tempa
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@ObsoleteOption}
+% \changes{v2.8q}{2001/10/08}{Neu}
+% Es gibt au"serdem ein Makro, um vor der Verwendung alter Optionen zu
+% warnen und den Namen und die Syntax der neuen Option anzugeben.
+% \begin{macrocode}
+\newcommand*{\@ObsoleteOption}[1]{%
+ \ClassWarningNoLine{%
+ scrlttr2%
+ }{%
+ You've used the obsolete option `\CurrentOption'.\MessageBreak
+ I'm using option `#1' instead.\MessageBreak
+ You should do this change also}
+ \KOMAoptions{#1}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@ObsoleteCommand}
+% \changes{v2.8q}{2001/10/09}{Neu}
+% Gleiches gilt f"ur veraltete Befehle. Allerdings werden hier zwei
+% Argumente ben"otigt, um zu wissen, was der alte Befehl
+% war. Au"serdem ist es hier sinnvoll die Zeilennummer mit auszugeben.
+% \begin{macrocode}
+\newcommand*{\@ObsoleteCommand}[2]{%
+ \ClassWarning{%
+ scrlttr2%
+ }{%
+ You`ve used the obsolete command `\string#1'.\MessageBreak
+ I`m using `\string\KOMAoptions{#2}' instead.\MessageBreak
+ You should do this change also}
+ \KOMAoptions{#2}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</scrlettr>
+% \end{macrocode}
+%
+%
+% \subsubsection{Papierformate, DIV, BCOR und Schriftgr"o"se}
+%
+% Bevor hier etwas getan werden kann, werden ebenfalls ein paar
+% Hilfsmakros ben"otigt. Allerdings gilt dies nicht f"ur die
+% Briefklasse
+% \begin{macrocode}
+%<*!scrlettr>
+% \end{macrocode}
+%
+% \begin{macro}{\ifnumber}
+% Dieses Makro testet, ob ein "ubergebener Parameter eine positive,
+% ganze Zahl ist. Ist dies der Fall, wird der zweite Parameter
+% ausgef"uhrt, sonst der dritte.
+% \begin{macrocode}
+\newcommand\ifnumber[3]{
+ \begingroup\@tempswafalse\let\scr@next\test@number
+ \expandafter\scr@next#1\scr@next
+ \if@tempswa\endgroup#2\else\endgroup#3\fi
+}
+% \end{macrocode}
+% \begin{macro}{\test@number}
+% F"ur den eigentlichen Test wird der erste Parameter Token f"ur Token
+% gescannt und beurteilt.
+% \begin{macrocode}
+\newcommand*{\test@number}[1]{
+ \ifx \scr@next#1
+ \let\scr@next\relax
+ \else
+% \end{macrocode}
+% Dabei wird f"ur einen schnelleren Vergleich die Tatsache genutzt, da"s
+% Ziffernzeichen immer im selben durchg"angigen Bereich liegen
+% \begin{macrocode}
+ \@tempcnta=\expandafter\expandafter\expandafter\number
+ \expandafter`#1\relax
+ \ifnum \@tempcnta>47\relax
+ \ifnum \@tempcnta<58\relax
+ \@tempswatrue
+ \else\@tempswafalse\fi
+ \else\@tempswafalse\fi
+% \end{macrocode}
+% Das zeichenweise scannen und parsen kann nat"urlich nicht einfach
+% abgebrochen werden. Stattdessen ist der Parameterrest noch zu entfernen.
+% \begin{macrocode}
+ \if@tempswa\else\let\scr@next\gobble@till@next\fi\fi
+ \scr@next}
+% \end{macrocode}
+% \begin{macro}{\gobble@till@next}
+% Das geschieht mit einem einzigen "`Leermacro"'.
+% \begin{macrocode}
+\newcommand*{\gobble@till@next}{}
+\def\gobble@till@next#1\scr@next{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@BCOR}
+% \begin{macro}{\@@BCOR}
+% \begin{macro}{\@DIV}
+% \begin{macro}{\@@DIV}
+% \begin{macro}{\@headlines}
+% \changes{v2.7g}{2001/04/17}{Neu}
+% \begin{macro}{\@@headlines}
+% \changes{v2.7g}{2001/04/17}{Neu}
+% \begin{macro}{\@pt@scan}
+% \changes{v2.6}{2000/01/04}{neu in dieser Version}
+% \begin{macro}{\@pt@@scan}
+% \changes{v2.6}{2000/01/04}{neu in dieser Version}
+% \begin{macro}{\x@paper}
+% \begin{macro}{\x@@paper}
+% Auch hier werden die Scan-Befehle f"ur die Optionen |BCOR|, |DIV| und die
+% ISO/DIN-Papierformate
+% ben"otigt. Allerdings erfolgt keine direkte Wertzuweisung sondern nur
+% eine explizite Weitergabe der globalen Option an das
+% \emph{typearea}-package. Die Werte selbst werden auch nicht "uberpr"uft,
+% sondern es wird davon ausgegangen, da"s diese Optionen immer zu
+% \emph{typearea} geh"oren und dort ggf. ein expliziter Fehler ausgegeben
+% werden soll. Die Befehle werden anschlie"send von den
+% gleichnamigen Scan-Befehlen des packages "uberladen.
+% \begin{macrocode}
+\newcommand*{\@BCOR}{\expandafter\@@BCOR\CurrentOption BCORBCOR\@@BCOR}
+\newcommand*{\@@BCOR}{}
+\def\@@BCOR #1BCOR#2BCOR#3\@@BCOR{
+ \edef\@tempa{#1}\ifx\@tempa\@empty
+ \edef\@tempa{#3}\def\@tempb{BCOR}\ifx\@tempa\@tempb
+ \PassOptionsToPackage{BCOR#2}{typearea}
+ \else\OptionNotUsed\fi
+ \else\OptionNotUsed\fi}
+\newcommand*{\@DIV}{\expandafter\@@DIV\CurrentOption DIVDIV\@@DIV}
+\newcommand*{\@@DIV}{}
+\def\@@DIV #1DIV#2DIV#3\@@DIV{
+ \edef\@tempa{#1}\ifx\@tempa\@empty
+ \edef\@tempa{#3}\def\@tempb{DIV}\ifx\@tempa\@tempb
+ \PassOptionsToPackage{DIV#2}{typearea}
+ \else\OptionNotUsed\fi
+ \else\@BCOR\fi}
+\newcommand{\@headlines}{%
+ \expandafter\@@headlines\CurrentOption headlines\@@headlines}
+\newcommand*{\@@headlines}{}
+\def\@@headlines #1headlines#2\@@headlines{
+ \edef\@tempa{#2}\edef\@tempb{headlines}\ifx\@tempa\@tempb
+ \PassOptionsToPackage{#1headlines}{typearea}
+ \else\@DIV\fi}
+\newcommand*{\@pt@scan}{\expandafter\@pt@@scan\CurrentOption pt\@pt@@scan}
+\newcommand*{\@pt@@scan}{}
+\def\@pt@@scan #1pt#2\@pt@@scan{
+ \edef\@tempa{pt}\edef\@tempb{#2}\ifx\@tempa\@tempb
+ \ifnumber{#1}
+ {\@tempcnta=#1\relax
+ \advance \@tempcnta by-10\relax
+ \edef\@ptsize{\the\@tempcnta}}
+ {\@headlines}
+ \else\@headlines\fi}
+\newcommand*{\x@paper}{\expandafter\x@@paper\CurrentOption paper\x@@paper}
+\newcommand*{\x@@paper}{}
+\def\x@@paper #1#2paper#3\x@@paper{
+ \edef\@tempa{paper}\edef\@tempb{#3}\ifx\@tempa\@tempb
+ \ifx a#1\PassOptionsToPackage{a#2paper}{typearea}
+ \else\ifx b#1\PassOptionsToPackage{b#2paper}{typearea}
+ \else\ifx c#1\PassOptionsToPackage{c#2paper}{typearea}
+ \else\ifx d#1\PassOptionsToPackage{d#2paper}{typearea}
+ \else\OptionNotUsed\fi\fi\fi\fi
+ \else\@pt@scan\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</!scrlettr>
+% \end{macrocode}
+%
+% \begin{option}{BCOR}
+% \begin{option}{DIV}
+% \begin{option}{headlines}
+% \begin{option}{paper}
+% Die Briefklasse arbeitet hier einfach mit \texttt{keyval}-Optionen:
+% \begin{macrocode}
+%<*scrlettr>
+\KOMA@key{BCOR}{\PassOptionsToPackage{BCOR#1}{typearea}}
+\KOMA@key{DIV}{\PassOptionsToPackage{DIV#1}{typearea}}
+\KOMA@key{headlines}{\PassOptionsToPackage{#1headlines}{typearea}}
+\KOMA@key{paper}{\PassOptionsToPackage{#1paper}{typearea}}
+%</scrlettr>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{a4paper}
+% \begin{option}{a5paper}
+% \begin{option}{b5paper}
+% \begin{option}{letterpaper}
+% \begin{option}{legalpaper}
+% \begin{option}{executivepaper}
+% Allerdings m"ussen die Standardpapierformate zus"atzlich per alter
+% Option unterst"utzt werden.
+% \begin{macrocode}
+%<*scrlettr>
+\DeclareOption{a4paper}{\@ObsoleteOption{paper=a4}}
+\DeclareOption{a5paper}{\@ObsoleteOption{paper=a5}}
+\DeclareOption{b5paper}{\@ObsoleteOption{paper=b5}}
+\DeclareOption{letterpaper}{\@ObsoleteOption{paper=letter}}
+\DeclareOption{legalpaper}{\@ObsoleteOption{paper=legal}}
+\DeclareOption{executivepaper}{\@ObsoleteOption{paper=executive}}
+%</scrlettr>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+%
+% Es gibt einige neue Optionen gegen"uber den Standard-Classes.
+%
+% \subsubsection{Tabellenoptionen}
+%
+% Da Flie"sobjekte in einem Brief etwas fehlt am Platz sind, werden
+% in Briefen auch keine Optionen daf"ur angeboten.
+% \begin{macrocode}
+%<*!scrlettr>
+% \end{macrocode}
+%
+% \begin{option}{onelinecaption}
+% \changes{v2.8q}{2001/11/17}{Neue Option}
+% \begin{option}{noonelinecaption}
+% \changes{v2.8q}{2001/11/17}{Neue Option}
+% Genau wie beim |caption2|-Paket gibt es Optionen, mit denen die
+% Sonderbehandlung f"ur einzeilige Tabellen- und Abbildungsunter- und
+% -"uberschriften ein- und ausgeschaltet werden werden k"onnen.
+% \begin{macro}{\ifonelinecaptions}
+% \changes{v2.8q}{2001/11/17}{Neuer Schalter}
+% \begin{macro}{\onelinecaptionstrue}
+% \begin{macro}{\onelinecaptionsfalse}
+% Die Entscheidung wird in einem Schalter gespeichert. In der
+% Hoffnung, beim Laden von |caption2| Speicher zu sparen, wird der
+% gleiche Name verwendet, den auch |caption2| verwendet.
+% \begin{macrocode}
+\newif\ifonelinecaptions\onelinecaptionstrue
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Da f"ur diese Option nicht der gleiche Name verwendet wird, wie
+% bei |caption2|, wird von den Optionen nicht nur der Schalter
+% entsprechend gesetzt, sondern auch die korrespondierende Option an
+% |caption2| weitergeleitet. Der gleiche Name konnte schlecht
+% verwendet werden, weil er bei einer Klasse auch nicht ansatzweise
+% als selbsterkl"arend bezeichnet werden kann.
+% \begin{macrocode}
+\DeclareOption{onelinecaption}{\onelinecaptionstrue%
+ \PassOptionsToPackage{oneline}{caption2}}
+\DeclareOption{noonelinecaption}{\onelinecaptionsfalse%
+ \PassOptionsToPackage{nooneline}{caption2}}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \begin{option}{tablecaptionabove}
+% \changes{v2.8h}{2001/07/19}{Neu}
+% \changes{v2.8k}{2001/08/15}{aus \texttt{typearea} in die
+% Klassen verschoben}
+% \begin{option}{tablecaptionbelow}
+% \changes{v2.8h}{2001/07/19}{Neu}
+% \changes{v2.8k}{2001/08/15}{aus \texttt{typearea} in die
+% Klassen verschoben}
+% \begin{macro}{\if@tablecaptionabove}
+% \changes{v2.8h}{2001/07/19}{Neu}
+% \changes{v2.8k}{2001/08/15}{aus \texttt{typearea} in die
+% Klassen verschoben}
+% \begin{macro}{\@tablecaptionabovetrue}
+% \begin{macro}{\@tablecaptionabovefalse}
+% Es besteht nun die Wahl, ob \cs{caption} bei Tabellen f"ur Unter-
+% oder "Uberschriften voreingestellt ist. Die Defaulteinstellung ist
+% aus Kompatibilit"atsgr"unden die Tabellenunterschrift.
+% \begin{macrocode}
+\newif\if@tablecaptionabove\@tablecaptionabovefalse
+\DeclareOption{tablecaptionabove}{\@tablecaptionabovetrue}
+\DeclareOption{tablecaptionbelow}{\@tablecaptionabovefalse}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{origlongtable}
+% \changes{v2.8l}{2001/08/16}{Neu}
+% \begin{macro}{\if@komalongtable}
+% \changes{v2.8l}{2001/08/16}{Neu}
+% \begin{macro}{\@komalongtabletrue}
+% \begin{macro}{\@komalongtablefalse}
+% Wenn das \texttt{longtable}-Paket geladen ist, werden die
+% Tabellen"uber- oder -unterschriften daf"ur normalerweise von den
+% Klassen umdefiniert. Dies geschieht automatisch nicht, wenn das
+% \texttt{caption2}-Paket geladen ist. Es geschieht ausserdem nicht,
+% wenn diese Option gesetzt ist. Die Unterscheidung erfolgt mit einem
+% Schalter.
+% \begin{macrocode}
+\newif\if@komalongtable\@komalongtabletrue
+\DeclareOption{origlongtable}{\@komalongtablefalse}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{macrocode}
+%</!scrlettr>
+% \end{macrocode}
+%
+%
+% \subsubsection{Kopf-, Fu"s- und Randbereich}
+% \begin{option}{headsepline}
+% \begin{option}{headnosepline}
+% Der Kopfteil kann mit einer Linie vom Textbereich getrennt
+% werden.
+% \begin{macro}{\if@hsl}
+% \begin{macro}{\@hsltrue}
+% \begin{macro}{\@hslfalse}
+% Die Entscheidung wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@hsl
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Gleichzeitig wird dem \texttt{typearea}-Paket mitgeteilt, dass der
+% Kopf zum Textbereich zu rechnen ist.
+% \begin{macrocode}
+%<*!scrlettr>
+\DeclareOption{headsepline}{%
+ \PassOptionsToPackage{headinclude}{typearea}\@hsltrue}
+%</!scrlettr>
+%<*scrlettr>
+\KOMA@key{headsepline}[true]{\@setif{hsl}{#1}}%
+\AfterProcessOptions{%
+ \if@hsl\PassOptionsToPackage{headinclude}{typearea}\fi}
+%</scrlettr>
+\DeclareOption{headnosepline}{%
+%<!scrlettr> \@hslfalse%
+%<scrlettr> \@ObsoleteOption{headsepline=false}%
+ }
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \begin{option}{footsepline}
+% \changes{v2.0e}{1994/08/14}{bei \cs{PassOptionsToPackage} fehlte die
+% package-Angabe.}
+% \begin{option}{footnosepline}
+% Der Fu"steil kann mit einer Linie vom Textbereich getrennt werden.
+% \begin{macro}{\if@fsl}
+% \begin{macro}{\@fsltrue}
+% \begin{macro}{\@fslfalse}
+% Die Entscheidung wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@fsl
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Gleichzeitig wird dem \texttt{typearea}-Paket mitgeteilt, dass der
+% Fu"s zum Textbereich zu rechnen ist.
+% \begin{macrocode}
+% \begin{macrocode}
+%<*!scrlettr>
+\DeclareOption{footsepline}{\PassOptionsToPackage{footinclude}{typearea}
+ \@fsltrue}
+%</!scrlettr>
+%<*scrlettr>
+\KOMA@key{footsepline}[true]{\@setif{fsl}{#1}}%
+\AfterProcessOptions{%
+ \if@fsl\PassOptionsToPackage{footinclude}{typearea}\fi}
+%</scrlettr>
+\DeclareOption{footnosepline}{%
+%<!scrlettr> \@fslfalse%
+%<scrlettr> \@ObsoleteOption{footsepline=false}%
+ }
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \begin{option}{mpinclude}
+% \changes{v2.8q}{2002/03/28}{Neue Option}
+% \begin{option}{mpexclude}
+% \changes{v2.8q}{2002/03/28}{Neue Option}
+% Es gibt Dokumente mit sehr ausf"uhrlichen Randnotizen, bei denen die
+% Randnotizen bei der Satzspiegelberechnung in den Satzspiegel
+% eingerechnet werden sollten. Siehe hierzu auch die gleichnamige
+% Option des \texttt{typearea} Pakets. In den Hauptklassen muss
+% lediglich daf"ur gesorgt werden, dass der Kopf- und Fu"sbereich in
+% diesem Fall auch die Randnotizen "uberdeckt. Eine Weiterleitung an
+% die Pakete \texttt{typearea} und \texttt{scrpage2} ist nicht
+% erforderlich, da in diesem derselbe Schalter verwendet wird. Dieser
+% wird in den Paketen nur dann definiert, wenn er nicht bereits
+% definiert ist.
+% \begin{macro}{\if@mincl}
+% \begin{macro}{\@mincltrue}
+% \begin{macro}{\@minclfalse}
+% Der Zustand wird in einem Schlater gespeichert. \textbf{Achtung:}
+% Bei Verwendung dieser Option m"ussen gr"ossere DIV-Werte verwendet
+% werden. Siehe dazu weiter unten. F"ur die Briefklasse wird bei
+% Verwendung der Optionen eine Warnung ausgegeben.
+% \begin{macrocode}
+\newif\if@mincl
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{mpinclude}{%
+ \@mincltrue
+%<*scrlettr>
+ \ClassWarning{scrlttr2}{%
+ You should not use option `mpinclude' with this\MessageBreak
+ class}
+%</scrlettr>
+ }
+\DeclareOption{mpexclude}{
+ \@minclfalse
+%<*scrlettr>
+ \ClassWarning{scrlttr2}{%
+ You should not use option `mpexclude' with this\MessageBreak
+ class}
+%</scrlettr>
+ }
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \subsubsection{Optionen f"ur den Briefkopf}
+%
+% \begin{macrocode}
+%<*scrlettr>
+% \end{macrocode}
+%
+% Die Gestaltung des Briefkopfes war bei der alten \texttt{scrlettr}
+% Klasse eng begrenzt. Deshalb hatte ich f"ur mich selbst das
+% \texttt{briefkopf} Paket geschrieben und ohne Support
+% ver"offentlicht. Die Funktionalit"at ist nun direkt verf"ugbar. Dazu
+% werden verschiedene Optionen ben"otigt.
+%
+% \begin{option}{fromalign}
+% \changes{v2.8q}{2002/01/25}{Neu}
+% Diese Option legt fest, ob der Absender linksb"undig, mittig oder
+% rechtsb"undig 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"undig \\
+% 1 & zentriert \\
+% 2 & rechtsb"undig \\
+% 10000 & nicht antasten \\
+% \end{tabular}
+% \end{center}
+% Voreingestellt ist "`nicht antasten"'.
+% \begin{macrocode}
+\newcommand*{\@alignfrom}{0}
+\KOMA@key{fromalign}{%
+ \@setnumstate{\@alignfrom}{fromalign}{%
+ {left}{0},%
+ {center}{1},{centered}{1},{middle}{1},%
+ {right}{2},%
+ {no}{10000},{false}{10000},{off}{10000}}{#1}%
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{fromrule}
+% \changes{v2.8q}{2002/01/25}{Neu}
+% Es kann gew"ahlt 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@key{fromrule}[below]{%
+ \@setnumstate{\@rulefrom}{fromrule}{%
+ {false}{0},{no}{0},{off}{0},{aftername}{1},%
+ {below}{2},{afteraddress}{2},{true}{2},{yes}{2},{on}{2}%
+ }{#1}%
+ }
+% \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}
+\newif\if@phone
+\KOMA@key{fromphone}[true]{\@setif{phone}{#1}}%
+% \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}
+\newif\if@fax
+\KOMA@key{fromfax}[true]{\@setif{fax}{#1}}%
+% \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}
+\newif\if@email
+\KOMA@key{fromemail}[true]{\@setif{email}{#1}}%
+% \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}
+\newif\if@www
+\KOMA@key{fromurl}[true]{\@setif{www}{#1}}%
+% \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}
+\newif\if@logo
+\KOMA@key{fromlogo}[true]{\@setif{logo}{#1}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{macrocode}
+%</scrlettr>
+% \end{macrocode}
+%
+%
+% \subsubsection{Optionen f"ur den Kopf der Folgeseiten in Briefen}
+%
+% \begin{macrocode}
+%<*scrlettr>
+% \end{macrocode}
+%
+% \begin{option}{pagenumber}
+% \changes{v2.8q}{2002/01/31}{Neu}
+% Bei Briefen kann gew"ahlt werden, ob auf Folgeseiten die Seitenzahl
+% im Kopf oder im Fu"s stehen soll. Dabei kann zwischen Seitenzahl
+% rechts, links oder zentriert gew"ahlt werden. Voreingestellt ist der
+% Fu"s 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"ur die Seitenzahl\\\hline
+% -1 & keine \\
+% 0 & im Kopf links \\
+% 1 & im Kopf mittig \\
+% 2 & im Kopf rechts \\
+% 3 & im Fu"s links \\
+% 4 & im Fu"s mittig \\
+% 5 & im Fu"s rechts \\
+% \end{tabular}\end{center}
+% \begin{macrocode}
+\newcommand*{\@pageat}{4}
+\KOMA@key{pagenumber}{%
+ \begingroup
+ \@setnumstate{\@tempa}{pagenumber}{%
+ {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}
+%
+% \begin{macrocode}
+%</scrlettr>
+% \end{macrocode}
+%
+% \subsubsection{Standardoptionen}
+%
+% \begin{option}{10pt}
+% \begin{option}{11pt}
+% \begin{option}{12pt}
+% \begin{macro}{\@ptsize}
+% Wir definieren \cs{@ptsize} als Grundschriftgr"o"se minus
+% 10\,pt. Hier wird allerdings zun"achst nur ein Dummy definiert,
+% damit sp"ater \cs{renewcommand} verwendet werden kann.
+% \begin{macrocode}
+\newcommand*\@ptsize{%
+%<scrlettr> 2%
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{option}{fontsize}
+% \begin{macrocode}
+%<*scrlettr>
+\KOMA@key{fontsize}{%
+ \begingroup
+ \setlength{\@tempdima}{#1}
+ \addtolength{\@tempdima}{-10\p@}
+ \edef\@tempa{\endgroup\noexpand\renewcommand*\noexpand\@ptsize{%
+ \strip@pt\@tempdima}}
+ \@tempa
+ }
+%</scrlettr>
+\DeclareOption{10pt}{%
+%<!scrlettr> \renewcommand*\@ptsize{0}
+%<scrlettr> \@ObsoleteOption{fontsize=10pt}
+ }
+\DeclareOption{11pt}{%
+%<!scrlettr> \renewcommand*\@ptsize{1}
+%<scrlettr> \@ObsoleteOption{fontsize=11pt}
+ }
+\DeclareOption{12pt}{%
+%<!scrlettr> \renewcommand*\@ptsize{2}
+%<scrlettr> \@ObsoleteOption{fontsize=12pt}
+ }
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{oneside}
+% \begin{option}{twoside}
+% \changes{v2.9o}{2003/02/08}{Typofix}
+% \begin{option}{draft}
+% \begin{option}{final}
+% \begin{macrocode}
+%<*scrlettr>
+\KOMA@key{twoside}[true]{\@setif{twoside}{#1}%
+ \if@twoside\@mparswitchtrue\else\@mparswitchfalse\fi}
+%</scrlettr>
+\DeclareOption{oneside}{%
+%<!scrlettr> \@twosidefalse \@mparswitchfalse
+%<scrlettr> \@ObsoleteOption{twoside=false}
+ }
+%<!scrlettr>\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
+%<*scrlettr>
+\KOMA@key{draft}[true]{%
+ \begingroup
+ \let\@drafttrue=\@tempswatrue
+ \let\@draftfalse=\@tempswafalse
+ \@setif{draft}{#1}
+ \if@tempswa
+ \global\setlength{\overfullrule}{5\p@}
+ \else
+ \global\setlength{\overfullrule}{\z@}
+ \fi
+ \endgroup
+ }
+%</scrlettr>
+%<!scrlettr>\DeclareOption{draft}{\setlength{\overfullrule}{5pt}}
+\DeclareOption{final}{%
+%<!scrlettr> \setlength{\overfullrule}{\z@}
+%<scrlettr> \@ObsoleteOption{draft=false}
+ }
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{titlepage}
+% \begin{option}{notitlepage}
+% \begin{macro}{\if@titlepage}
+% \begin{macro}{\@titlepagetrue}
+% \begin{macro}{\@titlepagefalse}
+% Briefe haben keine Titelei, die "ubrigen Klassen bieten zwei Arten
+% der Titelei.
+% \begin{macrocode}
+%<*!scrlettr>
+\newif\if@titlepage
+%<scrartcl>\@titlepagefalse
+%<scrreprt|scrbook>\@titlepagetrue
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{titlepage}{\@titlepagetrue}
+\DeclareOption{notitlepage}{\@titlepagefalse}
+%</!scrlettr>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{openright}
+% \begin{option}{openany}
+% \begin{macro}{\if@openright}
+% \begin{macro}{\@openrighttrue}
+% \begin{macro}{\@openrightfalse}
+% Bei Artikeln und Briefen gibt es keine Kapitel also auch keine
+% Schalter, damit diese immer auf rechten Seiten beginnen. Bei den
+% anderen Klassen schon.
+% \begin{macrocode}
+%<*!scrartcl&!scrlettr>
+\newif\if@openright
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{openright}{\@openrighttrue}
+\DeclareOption{openany}{\@openrightfalse}
+%</!scrartcl&!scrlettr>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{onecolumn}
+% \begin{option}{twocolumn}
+% \begin{option}{leqno}
+% \begin{option}{fleqno}
+% Briefe sind immer einspaltig und kennen keine Gleichungen, also gibt
+% es f"ur diese auch die entsprechenden Optionen nicht.
+% \begin{macrocode}
+%<*!scrlettr>
+\DeclareOption{onecolumn}{\@twocolumnfalse}
+\DeclareOption{twocolumn}{\@twocolumntrue}
+\DeclareOption{leqno}{\input{leqno.clo}}
+\DeclareOption{fleqn}{\input{fleqn.clo}}
+%</!scrlettr>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{openbib}
+% \changes{v2.3g}{1996/01/14}{\cs{if@openbib} (\cs{@openbibtrue},
+% \cs{@openbibfalse} entfernt.}
+% \changes{v2.3g}{1996/01/14}{Definition der openbib Option neu
+% implementiert.}
+% \begin{macro}{\@openbib@code}
+% \begin{macro}{\newblock}
+% Briefe haben kein Literaturverzeichnis. Alle anderen Klassen bieten
+% eine alternative Darstellung daf"ur.
+% \begin{macrocode}
+%<*!scrlettr>
+\DeclareOption{openbib}{%
+ \AtEndOfPackage{%
+ \renewcommand*\@openbib@code{%
+ \advance\leftmargin\bibindent
+ \itemindent -\bibindent
+ \listparindent \itemindent
+ \parsep \z@
+ }%
+ \renewcommand*\newblock{\par}}%
+}
+%</!scrlettr>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \subsubsection{Abstract (Zusammenfassung)}
+% \begin{option}{abstracton}
+% \begin{option}{abstractoff}
+% Das Abstract (Zusammenfassung) kann mit einem standardm"a"sigen Titel
+% versehen werden. Der Titel kann aber auch unterdr"uckt werden.
+%
+% Bei B"uchern und Briefen gibt es keine Zusammenfassung als
+% gesonderte Umgebung.
+%
+% \begin{macro}{\if@abstrt}
+% \begin{macro}{\@abstrttrue}
+% \begin{macro}{\@abstrtfalse}
+% Die Enscheidung wird in einem Schalter gespeichert.
+% \begin{macrocode}
+%<*!scrbook&!scrlettr>
+\newif\if@abstrt
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+\DeclareOption{abstracton}{\@abstrttrue}
+\DeclareOption{abstractoff}{\@abstrtfalse}
+%</!scrbook&!scrlettr>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \subsubsection{Briefspezifische Optionen f"ur die erste Seite}
+%
+% \begin{macrocode}
+%<*scrlettr>
+% \end{macrocode}
+%
+% \begin{option}{enlargefirstpage}
+% \changes{v2.8o}{2001/09/18}{Neue Option}
+% Normalerweise wird der Text der ersten Seite entsprechend dem
+% normalen Satzspiegel gesetzt. Ist allerdings der Fu"s der ersten
+% Seite zu hoch, dann wird der Satzspiegel vertikal entsprechend
+% verk"urzt. Mit der Option \texttt{firstpageenlarge} kann erzwungen
+% werden, dass im umgekehrten Fall, der Satzspiegel vertikal
+% verl"angert wird.
+% \begin{macro}{\if@enlargefp}
+% \begin{macro}{\@enlargefptrue}
+% \begin{macro}{\@enlargefpfalse}
+% Gespeichert wird die Information "uber die Optionen in einem
+% Schalter.
+% \begin{macrocode}
+\newif\if@enlargefp
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\KOMA@key{enlargefirstpage}[true]{%
+ \@setif[@enlargefp]{enlargefirstpage}{#1}}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{macrocode}
+%</scrlettr>
+% \end{macrocode}
+%
+%
+% \subsubsection{Optionen f"ur das Absatzlayout}
+%
+% Ab Version 2.8i k"onnen wir auch mit Avsatzlayouts umgehen, die einen
+% Absatzabstand statt einem Absatzeinzug verlangen. Gesteuert wird
+% dies "uber Optionen und Schalter.
+%
+% \begin{macro}{\if@parskip}
+% \changes{v2.8i}{2001/07/22}{Neu}
+% \changes{v2.8q}{2001/11/06}{Entf"allt}
+% Dieser Schalter steuert intern, ob mit Absatzabstand oder
+% Absatzeinzug gearbeitet werden soll. Voreingestellt ist wie bisher
+% der Absatzeinzug.
+% \begin{macrocode}
+\newif\if@parskip
+% \end{macrocode}
+% \end{macro}
+% \begin{option}{parskip}
+% \changes{v2.8i}{2001/07/22}{Neu}
+% \begin{option}{parskip-}
+% \changes{v2.8l}{2001/08/16}{Neu}
+% \begin{option}{parskip+}
+% \changes{v2.8i}{2001/07/22}{Neu}
+% \begin{option}{parskip*}
+% \changes{v2.8i}{2001/07/22}{Neu}
+% \begin{option}{halfparskip}
+% \changes{v2.8i}{2001/07/22}{Neu}
+% \begin{option}{halfparskip-}
+% \changes{v2.8l}{2001/08/16}{Neu}
+% \begin{option}{halfparskip+}
+% \changes{v2.8i}{2001/07/22}{Neu}
+% \begin{option}{halfparskip*}
+% \changes{v2.8i}{2001/07/22}{Neu}
+% \begin{option}{parindent}
+% \changes{v2.8i}{2001/07/22}{Neu}
+% Diese vier Optionen steuern die Umschaltung zwischen den Modi. Dabei
+% schalten alle \texttt{parskip}-Optionen einen Absatzabstand ein,
+% wohingegen die \texttt{parindent}-Option den Absatzeinzug
+% einschaltet. Die \texttt{+}-Variante sorgt au"serdem daf"ur, dass
+% die letzte Zeile eines Absatzes maximal zu zweidrittel gef"ullt
+% wird. Entsprechend sorgt die \texttt{*}-Variante f"ur eine maximale
+% F"ullung von drei Vierteln. Die normale Variante sorgt lediglich
+% f"ur einen freien Raum von 1\,em. Die \texttt{-}-Variante sorgt f"ur
+% "uberhaupt nichts.
+% \begin{macro}{\scr@parskip}
+% \changes{v2.8i}{2001/07/22}{Neu}
+% Hiermit wird ggf. der Absatzabstand eingestellt.
+% \begin{macro}{scr@parfillskip}
+% \changes{v2.8i}{2001/07/22}{Neu}
+% \begin{macro}{\@parskip@indent}
+% \changes{v2.8q}{2001/11/06}{Neu}
+% Hiermit wird ggf. die F"ullung der letzten Absatzzeile eingestellt.
+% einzustellen ist.
+% \begin{macrocode}
+\newcommand*{\scr@parskip}{\setlength{\parskip}{\z@}}
+\newcommand*{\scr@parfillskip}{\setlength{\parfillskip}{\z@}}
+%<*!scrlettr>
+\DeclareOption{parskip}{\@parskiptrue%
+ \renewcommand*{\scr@parskip}{%
+ \setlength{\parskip}{\baselineskip}%
+ \addtolength{\parskip}{\z@ \@plus .1\baselineskip}}
+ \renewcommand*{\scr@parfillskip}{%
+ \setlength{\parfillskip}{1em \@plus 1fil}}}
+\DeclareOption{parskip-}{\@parskiptrue%
+ \renewcommand*{\scr@parskip}{%
+ \setlength{\parskip}{\baselineskip}%
+ \addtolength{\parskip}{\z@ \@plus .1\baselineskip}}
+ \renewcommand*{\scr@parfillskip}{%
+ \setlength{\parfillskip}{\z@ \@plus 1fil}}}
+\DeclareOption{parskip+}{\@parskiptrue%
+ \renewcommand*{\scr@parskip}{%
+ \setlength{\parskip}{\baselineskip}%
+ \addtolength{\parskip}{\z@ \@plus .1\baselineskip}}
+ \renewcommand*{\scr@parfillskip}{%
+ \setlength{\parfillskip}{.3333\linewidth}
+ \addtolength{\parfillskip}{\z@ \@plus 1fil}}}
+\DeclareOption{parskip*}{\@parskiptrue%
+ \renewcommand*{\scr@parskip}{%
+ \setlength{\parskip}{\baselineskip}%
+ \addtolength{\parskip}{\z@ \@plus .1\baselineskip}}
+ \renewcommand*{\scr@parfillskip}{%
+ \setlength{\parfillskip}{.25\linewidth}
+ \addtolength{\parfillskip}{\z@ \@plus 1fil}}}
+\DeclareOption{halfparskip}{\@parskiptrue%
+ \renewcommand*{\scr@parskip}{%
+ \setlength{\parskip}{.5\baselineskip}%
+ \addtolength{\parskip}{\z@ \@plus .5\baselineskip}}
+ \renewcommand*{\scr@parfillskip}{%
+ \setlength{\parfillskip}{1em \@plus 1fil}}}
+\DeclareOption{halfparskip-}{\@parskiptrue%
+ \renewcommand*{\scr@parskip}{%
+ \setlength{\parskip}{.5\baselineskip}%
+ \addtolength{\parskip}{\z@ \@plus .5\baselineskip}}
+ \renewcommand*{\scr@parfillskip}{%
+ \setlength{\parfillskip}{\z@ \@plus 1fil}}}
+\DeclareOption{halfparskip+}{\@parskiptrue%
+ \renewcommand*{\scr@parskip}{%
+ \setlength{\parskip}{.5\baselineskip}%
+ \addtolength{\parskip}{\z@ \@plus .5\baselineskip}}
+ \renewcommand*{\scr@parfillskip}{%
+ \setlength{\parfillskip}{.3333\linewidth}
+ \addtolength{\parfillskip}{\z@ \@plus 1fil}}}
+\DeclareOption{halfparskip*}{\@parskiptrue%
+ \renewcommand*{\scr@parskip}{%
+ \setlength{\parskip}{.5\baselineskip}%
+ \addtolength{\parskip}{\z@ \@plus .5\baselineskip}}
+ \renewcommand*{\scr@parfillskip}{%
+ \setlength{\parfillskip}{.25\linewidth}
+ \addtolength{\parfillskip}{\z@ \@plus 1fil}}}
+\DeclareOption{parindent}{\@parskipfalse}
+%</!scrlettr>
+%<*scrlettr>
+\newcommand*{\@parskip@indent}{}
+\KOMA@key{parskip}[true]{%
+ \begingroup%
+ \@tempcnta=-1\edef\@tempa{#1}%
+ \def\@tempb{false}\ifx\@tempa\@tempb\@tempcnta=0\fi
+ \def\@tempb{off}\ifx\@tempa\@tempb\@tempcnta=0\fi
+ \def\@tempb{full-}\ifx\@tempa\@tempb\@tempcnta=1\fi
+ \def\@tempb{half-}\ifx\@tempa\@tempb\@tempcnta=2\fi
+ \def\@tempb{full}\ifx\@tempa\@tempb\@tempcnta=3\fi
+ \def\@tempb{true}\ifx\@tempa\@tempb\@tempcnta=3\fi
+ \def\@tempb{on}\ifx\@tempa\@tempb\@tempcnta=3\fi
+ \def\@tempb{half}\ifx\@tempa\@tempb\@tempcnta=4\fi
+ \def\@tempb{full+}\ifx\@tempa\@tempb\@tempcnta=5\fi
+ \def\@tempb{half+}\ifx\@tempa\@tempb\@tempcnta=6\fi
+ \def\@tempb{full*}\ifx\@tempa\@tempb\@tempcnta=7\fi
+ \def\@tempb{half*}\ifx\@tempa\@tempb\@tempcnta=8\fi
+ \let\@tempa\endgroup
+ \ifnum \@tempcnta <\z@\relax
+ \ClassError{%
+ scrlttr2%
+ }{You've used an unknown option value}{%
+ You've tried to set option `parskip' to value `#1', but
+ allowed values\MessageBreak
+ are `full-', `full', `full+', `full*', `half-',
+ `half', `half+',\MessageBreak
+ `half*', `false' and `off' only.\MessageBreak
+ You may also use `on' instead of `full'.}%
+ \else\ifnum \@tempcnta =\z@
+ \def\@tempa{\endgroup\@parskipfalse\@parskip@indent}%
+ \else
+ \let\@tempb=\relax\let\@tempc=\relax
+ \ifodd \@tempcnta
+ \def\@tempb{\def\noexpand\scr@parskip{%
+ \noexpand\setlength{\parskip}{\baselineskip}%
+ \noexpand\addtolength{\parskip}{%
+ \z@ \@plus .1\baselineskip}}}%
+ \else
+ \def\@tempb{\def\noexpand\scr@parskip{%
+ \noexpand\setlength{\parskip}{.5\baselineskip}%
+ \noexpand\addtolength{\parskip}{%
+ \z@ \@plus .5\baselineskip}}}%
+ \fi
+ \advance\@tempcnta by \m@ne
+ \divide\@tempcnta by \tw@
+ \ifcase\@tempcnta
+ \def\@tempc{\def\noexpand\scr@parfillskip{%
+ \noexpand\setlength{\parfillskip}{\z@ \@plus 1fil}}}%
+ \or
+ \def\@tempc{\def\noexpand\scr@parfillskip{%
+ \noexpand\setlength{\parfillskip}{1em \@plus 1fil}}}%
+ \or
+ \def\@tempc{\def\noexpand\scr@parfillskip{%
+ \noexpand\setlength{\parfillskip}{.3333\linewidth}%
+ \noexpand\addtolength{\parfillskip}{\z@ \@plus 1fil}}}%
+ \or
+ \def\@tempc{\def\noexpand\scr@parfillskip{%
+ \noexpand\setlength{\parfillskip}{.25\linewidth}%
+ \noexpand\addtolength{\parfillskip}{\z@ \@plus 1fil}}}%
+ \fi
+ \edef\@tempa{%
+ \endgroup\noexpand\@parskiptrue\@tempb\@tempc%
+ \noexpand\@parskip@indent}%
+ \fi
+ \fi
+ \@tempa
+ }
+%</scrlettr>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+%
+% \subsubsection{Optionen zur Steuerung der Numerierung}
+%
+% In Briefen gibt es keine Gliederung also auch keine Optionen f"ur
+% die Steuerung der Nummerierung.
+% \begin{macrocode}
+%<*!scrlettr>
+% \end{macrocode}
+%
+% \begin{option}{pointednumbers}
+% \changes{v2.3h}{1995/01/19}{Option zum Einschalten des Punktes nach
+% Nummern.}
+% \changes{v2.4g}{1996/11/04}{Die Option hei"st nun wirklich so, bei
+% \texttt{pointednumber} wird explizit ein
+% Fehler gemeldet.}
+% \changes{v2.4g}{1996/11/04}{\cs{@altsecnumformatfalse} wird direkt auf
+% \cs{@altsecnumformattrue} gesetzt.}
+% \begin{option}{pointlessnumbers}
+% \changes{v2.3h}{1995/01/19}{Option zur Verhinderung des Punktes nach
+% Nummern.}
+% \changes{v2.4g}{1996/11/04}{Die Option hei"st nun wirklich so, bei
+% \texttt{pointlessnumber} wird explizit
+% ein Fehler gemeldet.}
+% \changes{v2.4g}{1996/11/04}{\cs{@altsecnumformattrue} wird direkt auf
+% \cs{@altsecnumformatfalse} gesetzt.}
+% Normalerweise wird automatisch entschieden, ob Nummern mit einem Punkt
+% enden m"ussen oder nicht. Um dies abzuschalten, mu"s nur der
+% gew"unschte Zustand eingeschaltet und die Umschaltm"oglichkeit entfernt
+% werden. Dies kann jedoch erst am Ende der Class geschehen.
+% \begin{macrocode}
+\DeclareOption{pointednumbers}
+ {\AtEndOfClass{\@altsecnumformattrue
+ \global\let\@altsecnumformatfalse\@altsecnumformattrue}}
+\DeclareOption{pointednumber}
+ {\AtEndOfClass{\@altsecnumformattrue
+ \global\let\@altsecnumformatfalse\@altsecnumformattrue}
+ \ClassError
+%<scrbook> {scrbook}
+%<scrreprt> {scrreprt}
+%<scrartcl> {scrartcl}
+ {undefined option `pointednumber' instead of `pointednumbers'}
+ {You've used the class-option `pointednumber'.\MessageBreak
+ This name was an implementation-error at versions from 2.3h till
+ 2.4f.\MessageBreak
+ The correct name is `pointednumbers'.
+ Change this at your document.\MessageBreak
+ If you'll continue, the option `pointednumbers' will be used.}}
+\DeclareOption{pointlessnumbers}
+ {\AtEndOfClass{\@altsecnumformatfalse
+ \global\let\@altsecnumformattrue\@altsecnumformatfalse}}
+\DeclareOption{pointlessnumber}
+ {\AtEndOfClass{\@altsecnumformatfalse
+ \global\let\@altsecnumformattrue\@altsecnumformatfalse}
+ \ClassError
+%<scrbook> {scrbook}
+%<scrreprt> {scrreprt}
+%<scrartcl> {scrartcl}
+ {undefined option `pointlessnumber' instead of `pointlessnumbers'}
+ {You've used the class-option `pointlessnumber'.\MessageBreak
+ This name was an implementation-error at versions from 2.3h till
+ 2.4f.\MessageBreak
+ The correct name is `pointlessnumbers'.
+ Change this at your document.\MessageBreak
+ If you'll continue, the option `pointlessnumbers' will be used.}}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{macrocode}
+%</!scrlettr>
+% \end{macrocode}
+%
+% \subsubsection{Optionen zur Steuerung der "Uberschriften}
+%
+% In Briefen gibt es keine Gliederung also auch keine Optionen f"ur
+% die Steuerung der "Uberschriften.
+% \begin{macrocode}
+%<*!scrlettr>
+% \end{macrocode}
+%
+% \begin{option}{bigheadings}
+% \changes{v2.3h}{1996/01/20}{Neue Option}
+% \changes{v2.4g}{1996/11/04}{Die Option hei"st nun wirklich so. Bei
+% Verwendung des alten, falschen Namens
+% wird ein Fehler ausgegeben}
+% \begin{macro}{\@bigheadings}
+% \begin{option}{normalheadings}
+% \changes{v2.3h}{1996/01/20}{Neue Option}
+% \changes{v2.4g}{1996/11/04}{Die Option hei"st nun wirklich so. Bei
+% Verwendung des alten, falschen Namens
+% wird ein Fehler ausgegeben}
+% \begin{macro}{\@normalheadings}
+% \begin{option}{smallheadings}
+% \changes{v2.3h}{1996/01/20}{Neue Option}
+% \changes{v2.4g}{1996/11/04}{Die Option hei"st nun wirklich so. Bei
+% Verwendung des alten, falschen Namens
+% wird ein Fehler ausgegeben}
+% \begin{macro}{\@smallheadings}
+% Neuerdings kann zwischen verschiedenen "Uberschriftgr"o"sen umgeschaltet
+% werden, wobei die bisherige Gr"o"se als gro"s gilt und
+% voreingestellt wird.
+% \changes{v2.3h}{1996/01/20}{Die Gr"o"se von \cs{chapter} um eine Stufe
+% veringert.}
+% \changes{v2.3h}{1996/01/20}{Verwendung von \cs{chapterheadstartvskip}
+% und \cs{chapterheadendvskip} an Stelle von
+% festen vertikalen Abst"anden am Anfang und
+% am Ende eines Kapitels.}
+% \changes{v2.7c}{2000/01/19}{Vertikale Abst"ande nach der
+% Kapitel"uberschrift geringf"ugig
+% ver"andert und mit Leim versehen,
+% um mit \cs{flushbottom} zu besseren
+% Ergebnissen zu gelangen.}
+% \begin{macrocode}
+\newcommand\@bigheadings
+ {\AtEndOfClass{
+%<*scrbook|scrreprt>
+ \renewcommand*{\chapterheadstartvskip}{\vspace*{2.3\baselineskip}}
+ \renewcommand*{\chapterheadendvskip}{\vspace{1.725\baselineskip
+ \@plus .115\baselineskip \@minus .192\baselineskip}}
+%</scrbook|scrreprt>
+ \let\size@part\Huge
+ \let\size@partnumber\huge
+%<scrbook|scrreprt> \let\size@chapter\huge
+ \let\size@section\Large
+ \let\size@subsection\large
+ \let\size@subsubsection\normalsize
+ \let\size@paragraph\normalsize
+ \let\size@subparagraph\normalsize}}
+\DeclareOption{bigheadings}{\@bigheadings}
+\DeclareOption{bigheading}{\@bigheadings
+ \ClassError
+%<scrbook> {scrbook}
+%<scrreprt> {scrreprt}
+%<scrartcl> {scrartcl}
+ {undefined option `bigheading' instead of `bigheadings'}
+ {You've used the old option name `bigheading'!\MessageBreak
+ The correct name of the option is `bigheadings'.\MessageBreak
+ The old name was an implementation error from\MessageBreak
+ version 2.3h till 2.4f.\MessageBreak
+ You should change this at your document!\MessageBreak
+ If you'll continue, option `bigheadings' will be used.}}
+\newcommand\@normalheadings
+ {\AtEndOfClass{
+%<*scrbook|scrreprt>
+ \renewcommand*{\chapterheadstartvskip}{\vspace*{2\baselineskip}}
+ \renewcommand*{\chapterheadendvskip}{\vspace{1.5\baselineskip
+ \@plus .1\baselineskip \@minus .167\baselineskip}}
+%</scrbook|scrreprt>
+ \let\size@part\huge
+ \let\size@partnumber\huge
+%<*scrbook|scrreprt>
+ \let\size@chapter\LARGE
+ \let\size@section\Large
+ \let\size@subsection\large
+%</scrbook|scrreprt>
+%<*scrartcl>
+ \let\size@section\large
+ \let\size@subsection\normalsize
+%</scrartcl>
+ \let\size@subsubsection\normalsize
+ \let\size@paragraph\normalsize
+ \let\size@subparagraph\normalsize}}
+\DeclareOption{normalheadings}{\@normalheadings}
+\DeclareOption{normalheading}{\@normalheadings
+ \ClassError
+%<scrbook> {scrbook}
+%<scrreprt> {scrreprt}
+%<scrartcl> {scrartcl}
+ {undefined option `normalheading' instead of `normalheadings'}
+ {You've used the old option name `normalheading'!\MessageBreak
+ The correct name of the option is `normalheadings'.\MessageBreak
+ The old name was an implementation error from\MessageBreak
+ version 2.3h till 2.4f.\MessageBreak
+ You should change this at your document!\MessageBreak
+ If you'll continue, option `normalheadings' will be used.}}
+\newcommand\@smallheadings
+ {\AtEndOfClass{
+%<*scrbook|scrreprt>
+ \renewcommand*{\chapterheadstartvskip}{\vspace*{1.8\baselineskip}}
+ \renewcommand*{\chapterheadendvskip}{\vspace{1.35\baselineskip
+ \@plus 0.09\baselineskip \@minus .15\baselineskip}}
+%</scrbook|scrreprt>
+ \let\size@part\LARGE
+ \let\size@partnumber\LARGE
+%<*scrbook|scrreprt>
+ \let\size@chapter\Large
+ \let\size@section\large
+%</scrbook|scrreprt>
+%<*scrartcl>
+ \let\size@section\normalsize
+%</scrartcl>
+ \let\size@subsection\normalsize
+ \let\size@subsubsection\normalsize
+ \let\size@paragraph\normalsize
+ \let\size@subparagraph\normalsize}}
+\DeclareOption{smallheadings}{\@smallheadings}
+\DeclareOption{smallheading}{\@smallheadings
+ \ClassError
+%<scrbook> {scrbook}
+%<scrreprt> {scrreprt}
+%<scrartcl> {scrartcl}
+ {undefined option `smallheading' instead of `smallheadings'}
+ {You've used the old option name `smallheading'!\MessageBreak
+ The correct name of the option is `smallheadings'.\MessageBreak
+ The old name was an implementation error from\MessageBreak
+ version 2.3h till 2.4f.\MessageBreak
+ You should change this at your document!\MessageBreak
+ If you'll continue, option `smallheadings' will be used.}}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+% \end{macro}
+% \end{option}
+% \end{macro}
+% \end{option}
+%
+%
+% \begin{option}{chapterprefix}
+% \changes{v2.8}{2001/06/15}{Neu}
+% \begin{option}{nochapterprefix}
+% \changes{v2.8}{2001/06/15}{Neu}
+% Normalerweise verwenden |scrbook.cls| und |scrreprt.cls| nicht die
+% enorm gro"sen "Uberschriften von |book.cls| und |report.cls|, die mit
+% einem Absatz "`Kapitel \emph{Nummer}"' beginnen. Mit der Option
+% |chapterprefix| kann dies jetzt wieder aktiviert werden. Die Option,
+% zur Deaktivierung hei"st entsprechend |nochapterprefix|. Um f"ur
+% Spezialanwendungen auch innerhalb des Dokuments eine Umschaltung zu
+% erm"oglichen bzw. f"ur die Optionen "`appendixprefix"' und
+% "`noappendixprefix"' erfolgt die Umschaltung durch einen Schalter.
+% \begin{macro}{\if@chapterprefix}
+% \begin{macro}{\@chapterprefixtrue}
+% \begin{macro}{\@chapterprefixfalse}
+% \begin{macrocode}
+%<*scrbook|scrreprt>
+\newif\if@chapterprefix
+\DeclareOption{chapterprefix}{\@chapterprefixtrue}
+\DeclareOption{nochapterprefix}{\@chapterprefixfalse}
+%</scrbook|scrreprt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+%
+% \begin{option}{appendixprefix}
+% \changes{v2.8}{2001/06/15}{Neu}
+% \begin{option}{noappendixprefix}
+% \changes{v2.8}{2001/06/15}{Neu}
+% Will man abweichend von den Optionen |chapterprefix| und
+% |nochapterprefix| die gro"sen "Uberschriften f"ur den Anhang
+% aktivieren oder deaktivieren, so kann man das mit dieser Option
+% erreichen. Allerdings setzt diese keinen Schalter, sondern ein
+% Zusatzmakro, das auch f"ur andere Zwecke genutzt werden kann.
+% \begin{macrocode}
+%<*scrbook|scrreprt>
+\DeclareOption{appendixprefix}{\def\appendixmore{\@chapterprefixtrue}}
+\DeclareOption{noappendixprefix}{\def\appendixmore{\@chapterprefixfalse}}
+%</scrbook|scrreprt>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% Allerdings gibt es bei Briefen ebenfalls den Befehl
+% |\cleardoublepage|, also auch die zugeh"origen Optionen.
+% \begin{macrocode}
+%</!scrlettr>
+% \end{macrocode}
+%
+% \begin{option}{cleardoubleempty}
+% \changes{v2.8a}{2001/06/18}{Neu}
+% \begin{option}{cleardoubleplain}
+% \changes{v2.8a}{2001/06/18}{Neu}
+% \begin{option}{cleardoublestandard}
+% \changes{v2.8a}{2001/06/18}{Neu}
+% \begin{option}{cleardoublepage}
+% \changes{v2.8q}{2001/10/17}{Neu bei \texttt{scrlttr2}}
+% \changes{v2.8q}{2001/11/06}{\cs{cleardoublestandardpage} statt
+% \cs{cleardoublestandard}}
+% \begin{macro}{\cleardoublestandardpage}
+% \changes{v2.8a}{2001/06/18}{Neu}
+% \begin{macro}{\cleardoubleemptypage}
+% \changes{v2.8a}{2001/06/18}{Neu}
+% \begin{macro}{\cleardoubleplainpage}
+% \changes{v2.8a}{2001/06/18}{Neu}
+% Bei Verwendung von |twoside| und |openright| bei den Klassen
+% |scrbook.cls| und |scrreprt.cls| wird bei |\chapter| implizit
+% |\cleardoublepage| ausgef"uhrt. Das f"uhrt ggf. normalerweise zu
+% einer linken Seite, auf der noch der Kolumnentitel des vorherigen
+% Kapitels und eine Seitenzahl steht. H"aufig wird stattdessen nur
+% eine Seitenzahl oder auch gar nichts gew"unscht. Es soll also der
+% Seitenstil |plain| oder |empty| verwendet werden. Dies wird mit
+% den beiden neuen Optionen erm"oglicht. Dazu werden auch gleich drei
+% neue Makros definiert:
+% \begin{macrocode}
+\newcommand*{\cleardoublestandardpage}{}
+\let\cleardoublestandardpage\cleardoublepage
+\newcommand*{\cleardoubleemptypage}{\clearpage%
+ {\thispagestyle{empty}\cleardoublestandardpage}}
+\newcommand*{\cleardoubleplainpage}{\clearpage%
+ {\thispagestyle{plain}\cleardoublestandardpage}}
+%<*!scrlettr>
+\DeclareOption{cleardoubleempty}{%
+ \let\cleardoublepage\cleardoubleemptypage}
+\DeclareOption{cleardoubleplain}{%
+ \let\cleardoublepage\cleardoubleplainpage}
+\DeclareOption{cleardoublestandard}{%
+ \let\cleardoublepage\cleardoublestandardpage}
+%</!scrlettr>
+%<*scrlettr>
+\DeclareOption{cleardoubleempty}{%
+ \@ObsoleteOption{cleardoublepage=empty}}
+\DeclareOption{cleardoubleplain}{%
+ \@ObsoleteOption{cleardoublepage=plain}}
+\DeclareOption{cleardoublestandard}{%
+ \@ObsoleteOption{cleardoublepage=standard}}
+\KOMA@key{cleardoublepage}{%
+ \begingroup%
+ \def\@tempc{%
+ \endgroup%
+ \ClassError{%
+ scrlttr2%
+ }{You've used an unknown switch value}{%
+ You've tried to set switch `cleardoublepage' to value
+ `#1', but\MessageBreak
+ allowed switch values are `emtpy', `plain' and
+ `standard' only.}}
+ \edef\@tempa{#1}%
+ \def\@tempb{empty}\ifx\@tempa\@tempb%
+ \def\@tempc{\endgroup%
+ \let\cleardoublepage\cleardoubleemptypage}\fi
+ \def\@tempb{plain}\ifx\@tempa\@tempb%
+ \def\@tempc{\endgroup%
+ \let\cleardoublepage\cleardoubleplainpage}\fi
+ \def\@tempb{standard}\ifx\@tempa\@tempb%
+ \def\@tempc{\endgroup%
+ \let\cleardoublepage\cleardoublestandardpage}\fi
+ \@tempc}
+%</scrlettr>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+%
+% \subsubsection{Optionen zur Beeinflussung des Inhaltsverzeichnisses}
+%
+% In Briefen gibt es keine Gliederung also auch keine Optionen f"ur
+% die Beinflussung des Inhaltsverzeichnisses.
+% \begin{macrocode}
+%<*!scrlettr>
+% \end{macrocode}
+%
+% \begin{option}{liststotoc}
+% \changes{v2.3h}{1995/01/21}{Neue Option}
+% \changes{v2.8b}{2001/06/26}{Verwendung von \cs{float@headings}}
+% \changes{v2.8g}{2001/07/18}{\cs{float@headings} umbenannt in
+% \cs{float@listhead}}
+% Die Option sorgt daf"ur, da"s das Abbildungs- und das
+% Tabellenverzeichnis im Inhalsverzeichnis aufgef"uhrt werden. Dazu
+% muss nur \cs{float@listhead} umdefiniert werden.
+% \changes{v2.4a}{1996/03/13}{\cs{listtabelname} durch \cs{listtablename}
+% ersetzt.}
+% \begin{macro}{\float@listhead}
+% \begin{macrocode}
+\DeclareOption{liststotoc}{%
+ \AtEndOfClass{%
+ \renewcommand*{\float@listhead}[1]{%
+%<scrartcl> \addsec{#1}
+%<!scrartcl> \addchap{#1}
+ \@mkboth{#1}{#1}%
+ \if@dynlist%
+ \newcommand*{\scr@starttoc}{}%
+ \let\scr@starttoc=\@starttoc%
+ \renewcommand*{\@starttoc}[1]{%
+ \before@starttoc{##1}\scr@starttoc{##1}\after@starttoc{##1}}%
+ \fi%
+ }}
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{liststotocnumbered}
+% \changes{v2.8q}{2002/04/08}{dem langj"ahrigen Druck nachgegeben}
+% \changes{v2.9p}{2003/07/07}{Nummerierung im Kolumnentitel}
+% Die Option sorgt daf"ur, da"s das Abbildungs- und das
+% Tabellenverzeichnis nummerierte Kapitel/Abschnitte werden. Dazu
+% muss nur \cs{float@listhead} umdefiniert werden. Ich halte diese
+% Option selbst f"ur wenig sinnvoll.
+% \begin{macro}{\float@listhead}
+% \begin{macrocode}
+\DeclareOption{liststotocnumbered}{%
+ \AtEndOfClass{%
+ \renewcommand*{\float@listhead}[1]{%
+%<scrartcl> \section{#1}
+%<!scrartcl> \chapter{#1}
+%<scrartcl> \@mkboth{\sectionmarkformat #1}{\sectionmarkformat #1}%
+%<!scrartcl> \@mkboth{\chaptermarkformat #1}{\chaptermarkformat #1}%
+ \if@dynlist%
+ \newcommand*{\scr@starttoc}{}%
+ \let\scr@starttoc=\@starttoc%
+ \renewcommand*{\@starttoc}[1]{%
+ \before@starttoc{##1}\scr@starttoc{##1}\after@starttoc{##1}}%
+ \fi%
+ }}
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{bibtotoc}
+% \changes{v2.3h}{1995/01/21}{Neue Option.}
+% \changes{v2.6b}{2000/05/26}{\cs{@mkboth} eingef"ugt.}
+% \changes{v2.6c}{2000/06/10}{\cs{bibpreamble} eingef"ugt.}
+% \changes{v2.7}{2001/01/03}{Klammerung koorigiert.}
+% \changes{v2.7j}{2001/06/27}{Setzen der Pr"aambel in die
+% thebibliography-Umgebung verschoben}
+% Die Option sorgt daf"ur, da"s das Literaturverzeichnis im
+% Inhaltsverzeichnis aufgef"uhrt wird.
+% \begin{option}{bibtotocnumbered}
+% \changes{v2.3h}{1995/01/21}{Neue Option.}
+% \changes{v2.6b}{2000/05/26}{\cs{@mkboth} eingef"ugt.}
+% \changes{v2.6c}{2000/06/10}{\cs{bibpreamble} eingef"ugt.}
+% \changes{v2.7}{2001/01/03}{Klammerung koorigiert.}
+% \changes{v2.7b}{2001/01/05}{\cs{setchapterpreamble} wird verwendet.}
+% \changes{v2.7i}{2001/05/17}{\cs{chapter} statt \cs{addchap}}
+% \changes{v2.7j}{2001/06/27}{Setzen der Pr"aambel in die
+% thebibliography-Umgebung verschoben}
+% \changes{v2.9p}{2003/07/07}{Nummerierung im Kolumnentitel}
+% Wobei auch eine normal numerierte Variante m"oglich ist.
+% \begin{macro}{\bib@heading}
+% \begin{macrocode}
+\DeclareOption{bibtotoc}
+ {\AtEndOfClass{%
+ \renewcommand*\bib@heading{%
+%<*scrartcl>
+ \addsec{\refname}
+ \@mkboth{\refname}{\refname}
+%</scrartcl>
+%<*scrbook|scrreprt>
+ \addchap{\bibname}
+ \@mkboth{\bibname}{\bibname}
+%</scrbook|scrreprt>
+ }}}
+\DeclareOption{bibtotocnumbered}
+ {\AtEndOfClass{%
+ \renewcommand*\bib@heading{%
+%<*scrartcl>
+ \section{\refname}
+ \@mkboth{\sectionmarkformat \refname}{\sectionmarkformat \refname}
+%</scrartcl>
+%<*scrbook|scrreprt>
+ \chapter{\bibname}
+ \@mkboth{\chaptermarkformat \bibname}{\chaptermarkformat \bibname}
+%</scrbook|scrreprt>
+ }}}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{idxtotoc}
+% \changes{v2.3h}{1995/01/21}{Neue Option.}
+% Die Option sorgt daf"ur, da"s der Index auch im Inhaltsverzeichnis
+% erscheint.
+% \begin{macro}{\idx@heading}
+% Dazu wird das interne Makro |\idx@heading| umdefiniert, "uber das
+% die "uberschrift gesetzt und der Kolumnentitel angepa"st wird.
+% \changes{v2.4c}{1996/04/04}{Kolumnentitel werden nun korrekt
+% behandelt}
+% \changes{v2.4g}{1996/11/04}{Index auch bei scrartcl wieder
+% zweispaltig}
+% \changes{v2.6c}{2000/06/10}{Im Index kann nach der "Uberschrift
+% eine Preambel gesetzt werden}
+% \changes{v2.7a}{2001/01/04}{F"ur \texttt{scrbook} und
+% \texttt{scrreprt} die Link-Erzeugung mit \texttt{hyperref}
+% verbessert}
+% \changes{v2.7j}{2001/05/27}{Setzen der Pr"aambel in die
+% theindex-Umgebung verschoben}
+% \changes{v2.9l}{2003/01/19}{\cs{if@twoside} durch
+% \cs{if@openright} ersetzt}
+% An dieser Stelle m"u"s daf"ur gesorgt werden, da"s im Falle von
+% \texttt{scrbook} und \texttt{scrreprt} das Makro \cs{@schapter} verwendet
+% wird. Damit dies hier m"oglich ist mu"sten tiefreifendere "Anderungen am
+% \LaTeX-Kernel bzw. am Gliederungsbefehl |\chapter| vorgenommen werden.
+% Die urspr"ungliche Definition sah so aus:
+% \begin{verbatim}
+% \renewcommand*\idx@heading{%
+% \if@twoside\cleardoublepage\else\clearpage\fi%
+% \@mkboth{\indexname}{\indexname}%
+% <scrreprt|scrbook> \addcontentsline{toc}{chapter}{\indexname}%
+% \twocolumn[%
+% <scrartcl> \addsec
+% <scrreprt|scrbook> \@makeschapterhead
+% {\indexname}\index@preamble]%
+% }
+% \end{verbatim}
+% Die neue Definition wurde wie folgt ge"andert:
+% \begin{macrocode}
+\DeclareOption{idxtotoc}
+ {\AtEndOfClass{%
+ \renewcommand*\idx@heading{%
+%<scrreprt|scrbook> \if@openright\cleardoublepage\else\clearpage\fi%
+%<scrartcl> \twocolumn[\addsec{\indexname}]
+%<scrreprt|scrbook> \twocolumn[\addchap{\indexname}]
+ \@mkboth{\indexname}{\indexname}%
+ }}}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+%
+% \begin{option}{tocleft}
+% \changes{v2.8q}{2001/11/14}{Neue Option}
+% \begin{option}{tocindent}
+% \changes{v2.8q}{2001/11/14}{Neue Option}
+% Optionen f"ur zwei unterschiedliche Darstellungen des
+% Inhaltsverzeichnisses. Die Variante |tocindent| ist die altbekannte
+% Variante. Bei |tocleft| hingegen wird eine tabellenartige Form
+% verwendet, bei der die Nummern, Texte und Seitenzahlen jeweils
+% untereinander stehen. Der f"ur die Nummern ben"otigte Platz wird
+% dabei automatisch ermittelt.
+% \begin{macro}{\if@tocleft}
+% \changes{v2.8q}{2001/11/14}{Neuer Schalter}
+% \begin{macro}{\@toclefttrue}
+% \begin{macro}{\@tocleftfalse}
+% Die Wahl der Darstellungsart wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@tocleft
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{tocleft}{\@toclefttrue}
+\DeclareOption{tocindent}{\@tocleftfalse}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \begin{option}{listsleft}
+% \changes{v2.8q}{2001/11/14}{Neue Option}
+% \begin{option}{listsindent}
+% \changes{v2.8q}{2001/11/14}{Neue Option}
+% Optionen f"ur zwei unterschiedliche Darstellungen der
+% Verzeichnisses von Gleitumgebungen. Die Variante |listindent| ist
+% die altbekannte Variante mit einem festen Einzug der Nummer. Bei
+% |listleft| hingegen wird der f"ur die Nummern ben"otigte Platz
+% automatisch ermittelt.
+% \begin{macro}{\if@dynlist}
+% \changes{v2.8q}{2001/11/14}{Neuer Schalter}
+% \begin{macro}{\@dynlisttrue}
+% \begin{macro}{\@dynlistfalse}
+% Die Wahl der Darstellungsart wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@dynlist
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{listsleft}{\@dynlisttrue}
+\DeclareOption{listsindent}{\@dynlistfalse}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \begin{macrocode}
+%</!scrlettr>
+% \end{macrocode}
+%
+%
+% \subsubsection{Briefspezifische Optionen f"ur das Adressfenster}
+%
+% \begin{macrocode}
+%<*scrlettr>
+% \end{macrocode}
+%
+% \begin{option}{addrfield}
+% \changes{v2.8q}{2001/10/09}{Neu}
+% Das Adressfeld f"ur Fensterumschl"age kann mit |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@key{addrfield}[true]{\@setif[@afield]{addrfield}{#1}}
+% \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"ucksendeadresse gesetzt werden. Dies
+% geschieht nun nicht mehr allein durch Definition einer
+% R"ucksendeadresse, 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@key{backaddress}[true]{\@setif[@baddr]{backaddress}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{subject}
+% \changes{v2.8q}{2001/10/09}{Neu}
+% Ein Betreff-Titel kann mit |subject| ein- und abgeschaltet
+% werden. 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 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}[true]{%
+ \begingroup
+ \edef\@tempa{#1}%
+ \def\@tempb{afteropening}%
+ \ifx\@tempa\@tempb\endgroup\@subjaftertrue
+ \else
+ \def\@tempb{beforeopening}%
+ \ifx\@tempa\@tempb\endgroup\@subjafterfalse
+ \else
+ \endgroup\def\@setif@alsoerr{, `afteropening' and
+ `beforeopening'\MessageBreak}%
+ \@setxif[@subj]{subject}{#1}{titled}{untitled}%
+ \fi
+ \fi
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{locfield}
+% \changes{v2.8q}{2001/10/09}{Neu}
+% Mit Hilfe der Optione |locfield| kann der Platz neben dem Adressfeld
+% gro"s oder klein gew"ahlt 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]{\@setxif[@bigloc]{locfield}{#1}{wide}{narrow}}
+\DeclareOption{wlocfield}{\@ObsoleteOption{locfield=wide}}
+\DeclareOption{slocfield}{\@ObsoleteOption{locfield=narrow}}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{macrocode}
+%</scrlettr>
+% \end{macrocode}
+%
+% \subsection{Briefspezifische Optionen f"ur Faltmarken}
+%
+% \begin{macrocode}
+%<*scrlettr>
+% \end{macrocode}
+%
+%
+% \begin{option}{foldmarks}
+% \changes{v2.8q}{2001/09/10}{Neu}
+% Die Faltmarken k"onnen mit |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@key{foldmarks}[true]{\@setif[@fold]{foldmarks}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+%
+% \begin{macrocode}
+%</scrlettr>
+% \end{macrocode}
+%
+% \subsubsection{Briefspezifische Optionen f"ur die Gesch"aftszeile}
+%
+% \begin{macrocode}
+%<*scrlettr>
+% \end{macrocode}
+%
+% \begin{option}{numericaldate}
+% \changes{v2.8q}{2001/10/07}{Neue Option (an Stelle von
+% \texttt{scrdate} und \texttt{orgdate})}
+% Es kann zwischen dem Originaldatum, das beispielsweise von
+% \texttt{german.sty} definiert wird, und dem \texttt{scrlttr2}-Datum
+% gew"ahlt werden. Nat"urlich gibt es diese Optionen nur bei Briefen.
+% \begin{macro}{\if@orgdate}
+% \begin{macro}{\@orgdatetrue}
+% \begin{macro}{\@orgdatefalse}
+% Die Einstellung wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@orgdate\@orgdatetrue
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Dummerweise besitzt der alte Schalter genau die gegenteilige
+% Bedeutung der Option, deshalb muss der Schalter zweimal invertiert
+% werden.
+% \begin{macrocode}
+\KOMA@key{numericaldate}[true]{%
+ \if@orgdate\@orgdatefalse\else\@orgdatetrue\fi
+ \@setif[@orgdate]{numericaldate}{#1}
+ \if@orgdate\@orgdatefalse\else\@orgdatetrue\fi
+}
+\DeclareOption{scrdate}{\@ObsoleteOption{numericaldate=true}}
+\DeclareOption{orgdate}{\@ObsoleteOption{numericaldate=false}}
+% \end{macrocode}
+% \end{option}
+%
+%
+% \begin{option}{refline}
+% \changes{v2.8n}{2001/09/08}{Neue Option}
+% Kopf und Fu"s der ersten Seite sind normalweise so breit, dass sie
+% zur Adresse des Empf"angers passen. F"ur die Gesch"aftszeile 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
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\KOMA@key{refline}[wide]{\@setxif[@refwide]{refline}{#1}{wide}{narrow}}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{macrocode}
+%</scrlettr>
+% \end{macrocode}
+%
+%
+% \subsubsection{Optionen f"ur den Satzspiegel}
+%
+% \changes{v2.6}{2000/01/04}{ab jetzt sind auch die Optionen f"ur die
+% Schriftgr"o"sen variabel.}
+% \begin{option}{BCOR}
+% \changes{v2.2a}{1995/01/25}{nun als Option verf"ugbar.}
+% \changes{v2.2c}{1995/05/25}{nicht mehr im Kompatibilit"atsmodus.}
+% \begin{option}{DIV}
+% \changes{v2.2a}{1995/01/25}{nun als Option verf"ugbar}
+% \changes{v2.2c}{1995/05/25}{nicht mehr im Kompatibilit"atsmodus}
+% Die Optionen |BCOR|, |DIV| und die Papiergr"o"sen m"ussen f"ur ihre
+% Weiterleitung an das
+% \emph{typearea}-package gesondert erkannt werden. Da die Optionen
+% Parameter besitzen, k"onnen sie nur mit |\DeclareOption*| verarbeitet
+% werden. Im Kompatibilit"atsmodus erfolgt eine gesonderte Behandlung.
+% \begin{macrocode}
+%<!scrlettr>\if@compatibility\else
+ \DeclareOption*{%
+%<*scrlettr>
+% \end{macrocode}
+% Bei der Briefklasse tritt eine Besonderheit ein. Hier ist es
+% m"oglich, spezielle \texttt{lco}-Dateien zu definieren, die "uber
+% Optionen geladen werden k"onnen. Die unterschiedlichen Brieftypen
+% sind ein Fall f"ur solche \emph{\textbf{l}etter \textbf{c}lass
+% \textbf{o}ption} Dateien. Wurde eine solche Datei geladen, ist die
+% Option nat"urlich auch nicht mehr unbenutzt.
+% \changes{v2.8q}{2001/10/17}{Endung "`.lco"' beim
+% \cs{LoadLetterOption}-Aufruf in
+% \cs{DeclareOption*} entfernt}
+% \changes{v2.8q}{2001/10/18}{\cs{expandafter} beim Aufruf von
+% \cs{KOMAoptions} erg"anzt}
+% \begin{macrocode}
+ \let\scr@save@KV@errx=\KV@errx%
+ \IfFileExists{\CurrentOption.lco}{%
+ \begingroup\edef\@tempa{\endgroup%
+ \noexpand\AtEndOfClass{%
+ \noexpand\LoadLetterOption{\CurrentOption}}%
+ }%
+ \@tempa\let\KV@errx\@gobble
+ }{%
+ \renewcommand*{\KV@errx}[1]{\OptionNotUsed}
+ }
+% \end{macrocode}
+% An dieser Stelle muss nun die Expansion von \verb+\CurrentOption+
+% erzwungen werden. Alternativ k"onnte dies auch in
+% \verb+\KOMAoptions+ erledigt werden.
+% \begin{macrocode}
+ \expandafter\KOMAoptions\expandafter{\CurrentOption}
+ \let\KV@errx=\scr@save@KV@errx%
+ \let\scr@save@KV@errx=\relax%
+%</scrlettr>
+%<!scrlettr> \x@paper
+ }
+%<!scrlettr>\fi
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \subsubsection{Optionenauswahl}
+% \changes{v2.0e}{1994/09/04}{Standardoption \texttt{abstactoff} durch
+% \texttt{abstractoff} ersetzt.}
+% \changes{v2.2f}{1995/06/14}{\cs{ExecuteOptions} von Leerzeichen u."a.
+% befreit.}
+% \changes{v2.8q}{2001/10/06}{\texttt{scrlttr2} verwendet nicht mehr
+% die Option \texttt{KOMAold}, sondern
+% \texttt{DIN} als Standard}
+% Es m"ussen die Standardoptionen festgelegt und alle Optionen ausgew"ahlt
+% werden. Anschlie"send ist die Schriftgr"o"seneinstellung vorzunehmen
+% und der Seitenspiegel mit Hilfe des |typearea|-packages zu berechnen.
+% \begin{macrocode}
+\ExecuteOptions{%
+%<scrartcl,scrreprt,scrbook> final,11pt,onecolumn%
+%<scrartcl,scrreprt,scrbook> ,headnosepline,footnosepline,bigheadings%
+%<scrartcl> ,oneside,abstractoff%
+%<scrreprt> ,nochapterprefix,oneside,openany,abstractoff%
+%<scrbook> ,nochapterprefix,twoside,openright%
+}
+\ProcessOptions\relax
+%<scrlettr>\AfterProcessOptions@hook
+%<scrlettr>\let\AfterProcessOptions@hook=\undefined
+% \end{macrocode}
+%
+% \subsubsection{Laden von Dateien}
+% \changes{v2.8q}{2001/11/17}{das Paket \texttt{scrlfile} wird
+% ben"otigt}
+%
+% Ab Version 2.8q ist das Paket \texttt{scrlfile} Bestandteil von
+% \textsf{KOMA-Script}. Da es von den Klassen beispielsweise zur
+% Verbesserung der Zusammenarbeit mit |caption2| ben"otigt wird, wird
+% es hier geladen. Obwohl die Briefklasse es derzeit nicht ben"otigt,
+% wird es aus Gr"unden der Einheitlichkeit auch f"ur diese geladen.
+% \begin{macrocode}
+\RequirePackage{scrlfile}
+% \end{macrocode}
+%
+% \subsubsection{Allgemeine Schalter}
+% \begin{macro}{\if@restonecol}
+% \begin{macro}{\@restonecoltrue}
+% \begin{macro}{\@restonecolfalse}
+% Damit innerhalb einer Umgebung lokal auf ein- oder zweispaltigen
+% Satz umgeschaltet werden kann, wird ein Schalter ben"otigt. Dieser
+% wird dann daf"ur verwendet, sich zu merken, dass eine Umschaltung
+% stattgefunden hat und am Ende der Umgebung wieder aufzuheben
+% ist. Der Schalter wird nicht in Umgebungen verwendet, die
+% geschachtelt werden. Verwendung findet er beispielsweise f"ur
+% Titelseiten und das Inhaltsverzeichnis.
+% \begin{macrocode}
+\newif\if@restonecol
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\if@mainmatter}
+% \begin{macro}{\@mainmattertrue}
+% \begin{macro}{\@mainmatterfalse}
+% \changes{v2.3a}{1995/07/08}{\cs{if@mainmatter} Anforderung
+% verschoben.}
+% "Uber diesen Schalter wird bei Buchklassen festgelegt, ob wir uns im
+% Hauptteil des Dokuments befinden oder nicht. Die eigentliche
+% Umschaltung geschieht mit Hilfe der Befehle \cs{frontmatter},
+% \cs{mainmatter}, \cs{backmatter}. Ohne Umschaltung befinden wir uns
+% bereits im Hauptteil.
+% \begin{macrocode}
+%<scrbook>\newif\if@mainmatter\@mainmattertrue
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Schriftgr"o"seninitialisierung}
+% \changes{v2.6}{2000/01/04}{Das Einlesen der Schriftgr"o"sen-Options-Datei
+% funktioniert nun mit diversen Gr"o"sen.}
+% \begin{macrocode}
+\@tempcnta=10
+\advance\@tempcnta by\@ptsize\relax
+\xdef\@tempa{%
+%<!scrbook>size%
+%<scrbook>bk%
+\the\@tempcnta.clo}
+\InputIfFileExists{\@tempa}{}{%
+%<*scrbook>
+ \xdef\@tempb{size\the\@tempcnta.clo}
+ \InputIfFileExists{\@tempb}{%
+ \ClassWarning{scrbook}{File `\@tempa' not found!\MessageBreak
+ Used `\@tempb' instead}}{
+%</scrbook>
+ \ClassError
+%<scrbook> {scrbook}
+%<scrreprt> {scrreprt}
+%<scrartcl> {scrartcl}
+%<scrlettr> {scrlttr2}
+ {File `\@tempa' not found!\MessageBreak
+ This error is fatal!}
+ {To every fontsize you want to select by class option,\MessageBreak
+ you need a corresponding
+%<scrbook> bk-class-option-file or\MessageBreak at least a
+ size-class-option-file declaring all\MessageBreak
+ the macros based on fontsize.\MessageBreak
+ Ask a wizzard for more information or use another
+ fontsize.\MessageBreak
+ You cannot continue!}
+ \batchmode \csname @@end\endcsname \end
+%<scrbook> }
+}
+% \end{macrocode}
+%
+% \begin{option}{fontsize}
+% \changes{v2.8q}{2001/10/17}{nach dem Laden der Schriftgr"o"sendatei
+% nicht mehr zul"assig}
+% Ab hier darf nat"urlich die Option \texttt{fontsize} nicht mehr
+% verwendet werden!
+% \begin{macrocode}
+%<*scrlettr>
+\KOMA@key{fontsize}{%
+ \begingroup
+ \setlength{\@tempdima}{#1}
+ \addtolength{\@tempdima}{-10\p@}
+ \ifnum \@tempdima=\@ptsize
+ \else
+ \ClassError{%
+ scrlttr2%
+ }{option `fontsize' not allowed\MessageBreak
+ after loading sizeX.clo file}{%
+ Maybe you've used option `fontsize' at
+ \string\KOMAoptions.\MessageBreak
+ You should set this option at \string\documentclass.}
+ \fi
+ \endgroup
+ }
+%</scrlettr>
+% \end{macrocode}
+% \end{option}
+%
+% \subsubsection{Satzspiegel einstellen}
+% \changes{v2.4}{1996/02/25}{Es wird jetzt explizit nach einem aktuellen
+% typearea verlangt.}
+% \changes{v2.8n}{2001/09/06}{Es wird wirklich nach einem aktuellen
+% typearea verlangt}
+% Zun"achst werden die ganzen Befehle, die sowohl in den Klassen als
+% auch in \texttt{typearea} definiert sind, wieder gel"oescht. Dies
+% ist allerdings bei der Briefklasse nicht notwendig, das diese anders
+% arbeitet.
+% \begin{macrocode}
+%<*!scrlettr>
+\let\test@number =\undefined
+\let\gobble@till@next =\undefined
+\let\@BCOR =\undefined
+\let\@@BCOR =\undefined
+\let\@DIV =\undefined
+\let\@@DIV =\undefined
+\let\@headlines =\undefined
+\let\@@headlines =\undefined
+\let\x@paper =\undefined
+\let\x@@paper =\undefined
+%</!scrlettr>
+% \end{macrocode}
+% \begin{macro}{\scr@file@date@version}
+% \changes{v2.8n}{2001/09/06}{Neu}
+% Es muss jeweils die gleiche Version von \texttt{typearea} geladen
+% werden, die auch von der jeweiligen Klasse geladen wurde.
+% \begin{macrocode}
+\newcommand*{\scr@file@date@version}{}
+\def\scr@file@date@version#1/#2/#3 #4 #5\@nil{#1/#2/#3 #4}
+\RequirePackage{typearea}[\expandafter\expandafter\expandafter%
+ \scr@file@date@version\csname ver@%
+%<scrbook> scrbook%
+%<scrreprt> scrreprt%
+%<scrartcl> scrartcl%
+%<scrlettr> scrlttr2%
+ .cls\endcsname\@nil]
+% \end{macrocode}
+% \end{macro}
+%
+% Bei der Briefklasse gibt es jetzt noch ein paar Besonderheit.
+% \begin{macrocode}
+%<*scrlettr>
+% \end{macrocode}
+%
+% \begin{Length}{oddsidemargin}
+% \begin{Length}{evensidemargin}
+% Der rechte und der linke Rand ohne Bindekorrektur auf bei
+% beidseitigem Layout gleich gro"s. Die Bindekorrektur wird
+% selbstverst"andlich wieder dem ungeraden Rand zugeschlagen.
+% \begin{macrocode}
+\if@twoside
+ \addtolength{\oddsidemargin}{\evensidemargin}
+ \addtolength{\oddsidemargin}{-\ta@bcor}
+ \setlength{\evensidemargin}{.5\oddsidemargin}
+ \setlength{\oddsidemargin}{\evensidemargin}
+ \addtolength{\oddsidemargin}{\ta@bcor}
+\fi
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+%
+% \begin{option}{BCOR}
+% \changes{v2.8q}{2001/10/18}{funktioniert auch noch nach
+% dem Laden von \texttt{typearea.sty}}
+% \begin{option}{DIV}
+% \changes{v2.8q}{2001/10/18}{funktioniert auch noch nach
+% dem Laden von \texttt{typearea.sty}}
+% \begin{option}{headlines}
+% \changes{v2.8q}{2001/10/18}{funktioniert auch noch nach
+% dem Laden von \texttt{typearea.sty}}
+% Nach dem Laden von \texttt{typearea.sty} muss die Funktionsweise
+% dieser Optionen ge"andert werden. Bei \texttt{BCOR} und \texttt{DIV}
+% ist das einfach. Bei \texttt{headlines} sieht es etwas anders aus.
+% \begin{macrocode}
+\KOMA@key{BCOR}{\typearea[{#1}]{last}}
+\KOMA@key{DIV}{\typearea[current]{#1}}
+\KOMA@key{headlines}{%
+ \def\ta@hh{#1\baselineskip}%
+ \typearea[current]{last}}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{paper}
+% \changes{v2.8q}{2001/10/17}{funktioniert auch noch nach
+% dem Laden von \texttt{typearea.sty}}
+% Au"serdem mu"s die \texttt{paper}-Option nun anders funktionieren.
+% \begin{macrocode}
+\KOMA@key{paper}{%
+ \begingroup
+ \edef\@tempc{\noexpand\@tempswatrue%
+ \noexpand\ifdim\paperwidth=\the\paperwidth\noexpand\else%
+ \noexpand\@tempswafalse\noexpand\fi%
+ \noexpand\ifdim\paperheight=\the\paperheight\noexpand\else%
+ \noexpand\@tempswafalse\noexpand\fi%
+ }
+ \edef\@tempa{#1}%
+ \def\@tempb{letter}\ifx\@tempa\@tempb%
+ \setlength{\paperheight}{11in}\setlength{\paperwidth}{8.5in}%
+ \else\def\@tempb{legal}\ifx\@tempa\@tempb%
+ \setlength{\paperheight}{14in}\setlength{\paperwidth}{8.5in}%
+ \else\def\@tempb{executive}\ifx\@tempa\@tempb%
+ \setlength{\paperheight}{10.5in}\setlength{\paperwidth}{7.25in}%
+ \else%
+ \def\ta@opt@err{%
+ \ClassError{%
+ scrlttr2%
+ }{papersize `#1' undefined}{%
+ You've told me to set KOMA option `paper' to value
+ `#1',\MessageBreak
+ but the value `#1' is not allowed to this
+ option.\MessageBreak
+ See the KOMA-Script manual for informations about known
+ papersizes.}%
+ }
+ \let\@headlines\ta@opt@err%
+ \x@@paper #1paperpaper\x@@paper%
+ \fi\fi\fi
+ \@tempc%
+ \if@tempswa%
+ \ClassInfo{%
+ scrlttr2%
+ }{%
+ change to already set paper size ignored%
+ }
+ \let\@tempc\endgroup%
+ \else%
+ \ClassWarning{%
+ scrlttr2%
+ }{%
+ you're changing paper size after loading package\MessageBreak
+ `typearea'. This may be dangerous.\MessageBreak
+ You should set paper size only at \string\documentclass\space
+ not\MessageBreak
+ with \string\KOMAoptions%
+ }
+ \edef\@tempc{\endgroup%
+ \setlength{\paperwidth}{\the\paperwidth}%
+ \setlength{\paperheight}{\the\paperheight}%
+ \noexpand\typearea[current]{last}}
+ \fi
+ \@tempc%
+ }
+% \end{macrocode}
+% \end{option}
+%
+% Damit sind wir ersteinmal am Ende der Besonderheiten der
+% Briefklasse.
+% \begin{macrocode}
+%</scrlettr>
+% \end{macrocode}
+%
+%
+% \subsection{Einige Gr"o"sen}
+%
+% \changes{v2.8i}{2001/07/22}{\cs{baselinestretch} wird nicht umdefiniert}
+% \begin{Length}{lineskip}
+% \begin{Length}{normallineskip}
+% Minimaler Zeilenabstand:
+% \begin{macrocode}
+\setlength{\lineskip}{\p@}
+\setlength{\normallineskip}{\p@}
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+%
+% \begin{Length}{columnsep}
+% \begin{Length}{columnseprule}
+% Spaltenabstand und Spaltentrennlinie (da die Briefklasse
+% zweispaltigen Satz nicht unterst"utzt, entf"allt dies f"ur selbige):
+% \begin{macrocode}
+%<*!scrlettr>
+\setlength{\columnsep}{10\p@}
+\setlength{\columnseprule}{\z@}
+%</!scrlettr>
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+%
+% Absatzabstand und Absatzeinzug:
+% \begin{macro}{\parskip}
+% \changes{v2.8i}{2001/07/22}{abh"angig von den Optionen}
+% \begin{macro}{\parindent}
+% \changes{v2.8i}{2001/07/22}{abh"angig von den Optionen}
+% \begin{macro}{\parfillskip}
+% \begin{macro}{\@listi}
+% \begin{macro}{\@listI}
+% \begin{macro}{\@listii}
+% \begin{macro}{\@listiii}
+% \begin{macro}{\@list@extra}
+% \changes{v2.8q}{2001/11/06}{Neu}
+% \begin{macro}{\@parskip@indent}
+% \changes{v2.8q}{2001/11/13}{Neu}
+% \changes{v2.9k}{2003/01/03}{\cs{scr@parfillskip} bei
+% \texttt{\cs{begin}\{document\}} erneuert}
+% \begin{macro}{\footnotesize}
+% \changes{v2.9h}{2002/09/03}{etwas robuster}
+% \begin{macro}{\small}
+% \changes{v2.9h}{2002/09/03}{etwas robuster}
+% \begin{macro}{\add@extra@listi}
+% \changes{v2.9h}{2002/09/03}{neu (intern)}
+% Ab Version 2.8i wird hier optionsabh"angig gearbeitet. Dabei m"ussen
+% auch die Befehle bei der Umschaltung der Schriftgr"o"se f"ur
+% \cs{small} und \cs{footnotesize} ge"andert werden.
+% \begin{macrocode}
+\g@addto@macro{\@listi}{\@list@extra}
+\let\@listI=\@listi
+\g@addto@macro{\@listii}{\@list@extra}
+\g@addto@macro{\@listiii}{\@list@extra}
+\newcommand*{\add@extra@listi}[1]{%
+ \expandafter\let\csname #1@listi\endcsname=\@listi
+ \def\@listi{\csname #1@listi\endcsname\@list@extra}%
+}
+\g@addto@macro{\footnotesize}{\protect\add@extra@listi{ftns}}
+\g@addto@macro{\small}{\protect\add@extra@listi{sml}}
+\newcommand*{\@list@extra}{}
+%<scrlettr>\renewcommand*{%
+%<!scrlettr>\newcommand*{%
+ \@parskip@indent}{%
+ \if@parskip
+ \setlength{\parindent}{\z@}%
+ \scr@parskip
+ \scr@parfillskip
+ \renewcommand*{\@list@extra}{%
+ \topsep\z@ \parsep\parskip \itemsep\z@}%
+ \else
+ \setlength{\parindent}{1em}%
+ \setlength{\parskip}{\z@ \@plus \p@}%
+ \setlength{\parfillskip}{\z@ \@plus 1fil}%
+ \renewcommand*{\@list@extra}{}%
+ \fi
+}%
+\@parskip@indent
+\AtBeginDocument{%
+ \if@parskip\ifdim\parfillskip=\z@ \scr@parfillskip\fi\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}
+%
+% Die Penalties (genau wie bei den Standardklassen):
+% \end{macro}
+% \begin{macrocode}
+\@lowpenalty = 51
+\@medpenalty =151
+\@highpenalty =301
+% \end{macrocode}
+%
+% \begin{Counter}{topnumber}
+% \begin{macro}{\topfraction}
+% \begin{Counter}{bottomnumber}
+% \begin{macro}{\bottomfraction}
+% \begin{Counter}{totalnumber}
+% \begin{macro}{\textfraction}
+% \begin{macro}{\floatpagefraction}
+% \begin{Counter}{dbltopnumber}
+% \begin{macro}{\dbltopfraction}
+% \begin{macro}{\dblfloatpagefraction}
+% Allgemeine Einstellungen f"ur Flie"sumgebungen (Seitenanteile). Da
+% es bei Briefen dergleichen nicht gibt, werden die Werte dort auch
+% nicht gesetzt.
+% \changes{v2.8n}{2001/09/06}{da Briefe keine Flie"sumgebungen haben,
+% werden bei \texttt{scrlttr2} auch keine
+% Parameter daf"ur mehr gesetzt}
+% \begin{macrocode}
+%<*!scrlettr>
+\setcounter{topnumber}{2}
+\renewcommand*\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\renewcommand*\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\renewcommand*\textfraction{.2}
+\renewcommand*\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\renewcommand*\dbltopfraction{.7}
+\renewcommand*\dblfloatpagefraction{.5}
+%</!scrlettr>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+% \end{Counter}
+%
+%
+% \subsection{Befehle f"ur den Kompatibilit"atsmodus}
+% \begin{macro}{\headincludeon}
+% \begin{macro}{\headincludeoff}
+% \begin{macro}{\headseplineon}
+% \begin{macro}{\headseplineoff}
+% \begin{macro}{\footincludeon}
+% \begin{macro}{\footincludeoff}
+% \begin{macro}{\footseplineon}
+% \begin{macro}{\footseplineoff}
+% Da die classes des \textsf{KOMA-Script} Pakets nun auch im
+% Kompatibilit"atsmodus verwendet werden k"onnen, ben"otigen wir einige
+% Befehle, die es bei \textsf{Script 2.0} noch gab. Betroffen sind an
+% dieser Stelle nur die Befehle f"ur die Kopf- und
+% Fu"szeilentrennlinie und die Einbeziehung von Kopf- und Fu"szeilen
+% in den Textbereich bei der Berechnung des Seitenspiegels. Da es
+% diese Befehle f"ur die Briefklasse nie gab, werden sie f"ur diese
+% auch nicht definiert.
+% \changes{v2.0e}{1994/10/12}{Kopf- und Fu"szeilenhandling f"ur den
+% Kompatibilit"atsmodus erg"anzt}
+% \begin{macrocode}
+%<*!scrlettr>
+\if@compatibility
+ \newcommand*\headincludeon{\@hincltrue}
+ \newcommand*\headincludeoff{\@hinclfalse}
+ \newcommand*\headseplineon{\@hsltrue \@hincltrue}
+ \newcommand*\headseplineoff{\@hslfalse \@hinclfalse}
+ \newcommand*\footincludeon{\@fincltrue}
+ \newcommand*\footincludeoff{\@finclfalse}
+ \newcommand*\footseplineon{\@fsltrue \@fincltrue}
+ \newcommand*\footseplineoff{\@fslfalse \@finclfalse}
+\fi
+%</!scrlettr>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Kopf- und Fu"szeilendefinition}
+%
+% \changes{v2.0e}{1994/08/10}{Bei "`scrbook"' gibt es kein einseitiges
+% Layout.}
+% \changes{v2.3a}{1995/07/08}{Da bei "`book"' seit Version 1.2v die
+% Option oneside wieder ein einseitiges
+% Layout erzeugt, dieses wieder eingebaut.}
+% \begin{macro}{\ps@plain}
+% \begin{macro}{\ps@myheadings}
+% \begin{macro}{\ps@headings}
+% Es wird das Aussehen der Kopf- und Fu"szeilen f"ur die
+% Standardseitenstile |empty|, |plain|, |headings| und |myheadings|
+% festgelegt. Diese sind bei|scrartcl| abh"angig davon, ob es sich um
+% einseitiges oder beidseitiges Layout handelt.
+%
+% Im Gegensatz zu den Seitenstilen der Standard-classes steht die
+% Seitennummer beim \textsf{KOMA-Script} Paket immer in der Fu"szeile.
+% Au"serdem sind Trennlinien zwischen Kopf- und Textbereich sowie zwischen
+% Text- und Fu"sbereich m"oglich.
+%
+% Die Kopfzeile wird auch nicht mehr in Gro"sbuchstaben gewandelt.
+%
+% \changes{v2.2a}{1995/02/07}{Bei "`scrbook"' und "`scrreprt"' Punkt
+% hinter der section-Nummer entfernt}
+% \changes{v2.2c}{1995/05/25}{Punkt hinter der Kapitelnummer in der
+% Kopfzeile entfernt}
+% \changes{v2.2c}{1995/05/25}{Nummern in der Kopfzeile auf CJK umgestellt}
+% \changes{v2.4f}{1996/10/08}{\cs{strut} in der Kopfzeile eingef"ugt}
+% Da sich die Seitenstil f"ur die Briefklasse erheblich von denen
+% normalen Seitenstilen unterscheiden, werden diese getrennt
+% definiert.
+% \begin{macro}{\set@tempdima@hw}
+% \changes{v2.8q}{2002/03/28}{Neu (intern)}
+% Um nicht st"andig das gleiche schreiben zu m"ussen wird hier ein
+% internes Makro verwendet.
+% \begin{macrocode}
+%<*!scrlettr>
+\newcommand*{\set@tempdima@hw}{%
+ \setlength{\@tempdima}{\textwidth}%
+ \if@mincl
+ \addtolength{\@tempdima}{\marginparsep}%
+ \addtolength{\@tempdima}{\marginparwidth}%
+ \fi
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\if@twoside
+ \renewcommand*{\ps@plain}{\let\@mkboth\@gobbletwo
+ \renewcommand*{\@evenhead}{}%
+ \renewcommand*{\@oddhead}{}%
+ \renewcommand*{\@evenfoot}{%
+ \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\pnumfont\thepage\hfil}}}}}%
+ \renewcommand*{\@oddfoot}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\pnumfont\hfil\thepage}}}}\hss}}%
+ \newcommand*{\ps@headings}{\let\@mkboth\markboth
+ \renewcommand*{\@evenhead}{%
+ \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{%
+ \hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}%
+ \if@hsl \vskip 1.5\p@ \hrule \fi}}}
+ \renewcommand*{\@oddhead}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark}}%
+ \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}
+ \renewcommand*{\@evenfoot}{%
+ \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\pnumfont\thepage\hfil}}}}}%
+ \renewcommand*{\@oddfoot}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\pnumfont\hfil\thepage}}}}\hss}%
+%<*scrartcl>
+ \renewcommand*{\sectionmark}[1]{%
+ \markboth {\ifnum \c@secnumdepth >\z@%
+ \sectionmarkformat\fi ##1}{}}
+ \renewcommand*{\subsectionmark}[1]{%
+ \markright {\ifnum \c@secnumdepth >\@ne%
+ \subsectionmarkformat\fi ##1}}}
+%</scrartcl>
+%<*scrreprt|scrbook>
+ \renewcommand*{\chaptermark}[1]{%
+ \markboth {\ifnum \c@secnumdepth >\m@ne
+%<scrbook> \if@mainmatter
+ \chaptermarkformat\fi
+%<scrbook> \fi
+ ##1}{}}%
+ \renewcommand*{\sectionmark}[1]{%
+ \markright {\ifnum \c@secnumdepth >\z@
+ \sectionmarkformat\fi
+ ##1}}}
+%</scrreprt|scrbook>
+ \newcommand*{\ps@myheadings}{\let\@mkboth\@gobbletwo
+ \renewcommand*{\@evenhead}{%
+ \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{%
+ \hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}%
+ \if@hsl \vskip 1.5\p@ \hrule \fi}}}
+ \renewcommand*{\@oddhead}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark}}%
+ \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}
+ \renewcommand*{\@evenfoot}{%
+ \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\pnumfont\thepage\hfil}}}}}%
+ \renewcommand*{\@oddfoot}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\pnumfont\hfil\thepage}}}}\hss}%
+%<!scrartcl> \renewcommand*{\chaptermark}[1]{}
+%<scrartcl> \renewcommand*{\subsectionmark}[1]{}
+ \renewcommand*{\sectionmark}[1]{}}
+\else
+ \renewcommand*{\ps@plain}{\let\@mkboth\@gobbletwo
+ \renewcommand*{\@evenhead}{}%
+ \renewcommand*{\@oddhead}{}%
+ \renewcommand*{\@evenfoot}{}%
+ \renewcommand*{\@oddfoot}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\pnumfont\hfil\thepage\hfil}}}}\hss}}
+ \newcommand*{\ps@headings}{\let\@mkboth\markboth
+ \renewcommand*{\@evenhead}{}%
+ \renewcommand*{\@oddhead}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark\hfil}}
+ \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}%
+ \renewcommand*{\@evenfoot}{}%
+ \renewcommand*{\@oddfoot}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\pnumfont\hfil\thepage\hfil}}}\hss}}%
+%<*scrartcl>
+% \end{macrocode}
+% \changes{v2.1b}{1994/12/31}{Im einseitigen Seitenstil
+% \cs{markboth} durch
+% \cs{markright} ersetzt.}
+% \changes{v2.2a}{1995/02/07}{Im einseitigen Seitenstil
+% bei "`scrartcl"' und \texttt{oneside}
+% \cs{subsectionmark} eingef"ugt.}
+% \changes{v2.2a}{1995/02/07}{Im einseitigen Seitenstil
+% bei "`scrreprt"' und \texttt{oneside}
+% \cs{sectionmark} eingef"ugt.}
+% \begin{macrocode}
+ \renewcommand*{\subsectionmark}[1]{}
+ \renewcommand*{\sectionmark}[1]{\markright {\ifnum \c@secnumdepth >\z@
+ \sectionmarkformat\fi ##1}}}
+%</scrartcl>
+% \end{macrocode}
+% \changes{v2.0e}{1994/08/17}{Im einseitigen Seitenstil
+% \cs{markboth} durch
+% \cs{markright} ersetzt.}
+% \begin{macrocode}
+%<*scrreprt|scrbook>
+ \renewcommand*{\sectionmark}[1]{}
+ \renewcommand*{\chaptermark}[1]{\markright {\ifnum \c@secnumdepth >\m@ne
+%<scrbook> \if@mainmatter
+ \chaptermarkformat\fi
+%<scrbook> \fi
+ ##1}}}
+%</scrreprt|scrbook>
+ \newcommand*{\ps@myheadings}{\let\@mkboth\@gobbletwo
+ \renewcommand*{\@evenhead}{}%
+ \renewcommand*{\@oddhead}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark\hfil}}
+ \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}%
+ \renewcommand*{\@evenfoot}{}%
+ \renewcommand*{\@oddfoot}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\pnumfont\hfil\thepage\hfil}}}}\hss}%
+%<scrartcl> \renewcommand*{\subsectionmark}[1]{}%
+%<!scrartcl> \renewcommand*{\chaptermark}[1]{}%
+ \renewcommand*{\sectionmark}[1]{}}
+\fi
+%</!scrlettr>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@firsthead}
+% \begin{macro}{\@gen@firsthead}
+% \changes{v2.8q}{2002/01/28}{Neu}
+% \begin{macro}{\@nexthead}
+% \begin{macro}{\@firstfoot}
+% \begin{macro}{\@nextfoot}
+% \begin{macro}{\pagemark}
+% Bei \texttt{scrlttr2} gibt es die "ublichen Seitenstile, allerdings
+% ist deren Verhalten etwas anders als gewohnt. Dies ist in den
+% Besonderheiten f"ur Briefen begr"undet.
+% \begin{macrocode}
+%<*scrlettr>
+\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.
+% \begin{macrocode}
+ \ifcase\@alignfrom
+% \end{macrocode}
+% Wir befinden uns nun in dem Bereich f"ur \verb|\@alignfrom|=0.
+% Entsprechend unserer Festlegung wird daher als Erstes der
+% linksb"undige Absender definiert. Wir verwenden daf"ur eine
+% \emph{parbox}, in der der Text linksb"undig angeordnet wird. Diese
+% Box soll "uber die gesamte Breite gehen d"urfen:
+% \begin{macrocode}
+ \renewcommand*{\@firsthead}{\noindent
+ \parbox[b]{\textwidth}{\raggedright
+% \end{macrocode}
+% Zuerst wird der Name gesetzt. Dabei soll eine eigene Schriftart f"ur
+% 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"ange dieser Linie kann vom Anwender
+% bestimmt oder automatisch gew"ahlt werden. Es wird dabei die
+% Pseudo-L"ange \texttt{fromrulewidth} verwendet. Ist diese negativ,
+% so wird sie automatisch bestimmt. Bei der automatischen
+% L"angenbestimmung wird daf"ur gesorgt, dass die Linie nicht bis in das
+% Logo ragt, das eventuell rechtsb"undig 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"achstes wird die Absenderadresse einschlie"slich 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"ahnt, 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 "uber 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 mu"ss 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"undigen 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"anger 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"undigen Absender. Das ganze wird einfach
+% beim linksb"undigen 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"allen wird
+% der Kopf nicht ver"andert.
+% \begin{macrocode}
+ \fi
+ }
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\@firstfoot}{}
+\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}}%
+ }%
+\newcommand*{\@nextfoot}{%
+ \ifnum\@pageat>2
+ \parbox[c]{\textwidth}{%
+ \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi
+ \strut\pagemark%
+ }%
+ \fi
+}
+\newcommand*{\pagemark}{{\usekomafont{pagenumber}\pagename\ \thepage}}
+\renewcommand*{\ps@plain}{%
+ \renewcommand*{\@evenhead}{%
+ \vbox{\vbox{\hsize=\textwidth\hbox to\textwidth{%
+ \parbox[b]{\textwidth}{\strut
+ \ifnum\@pageat>-1
+ \ifnum\@pageat<3
+ \ifcase\@pageat\raggedright\or\centering\or\raggedleft\fi
+ \pagemark
+ \else
+ \hfill
+ \fi
+ \else
+ \hfill
+ \fi}%
+ }%
+ \if@hsl\kern1pt\rule{\textwidth}{.4pt}\fi
+ }%
+ }%
+ }%
+ \let\@oddhead\@evenhead%
+ \renewcommand*{\@evenfoot}{%
+ \parbox[t]{\textwidth}{%
+ \if@fsl
+ {%
+ \raggedright%
+ \vskip-\baselineskip\vskip.4pt
+ \hrulefill\\
+ }%
+ \fi
+ \ifnum\@pageat>2
+ \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi
+ \strut\pagemark
+ \else
+ \hfill
+ \fi
+ }%
+ }%
+ \let\@oddfoot\@evenfoot
+ }
+\newcommand*{\ps@headings}{%
+ \let\@mkboth=\markboth
+ \renewcommand*{\@evenhead}{%
+ \vbox{%
+ \vbox{\hsize=\textwidth\hbox to\textwidth{\headfont\@nexthead}}%
+ \if@hsl\kern1pt\rule{\textwidth}{.4pt}\fi%
+ }%
+ }%
+ \let\@oddhead\@evenhead%
+ \renewcommand*{\@evenfoot}{%
+ \parbox[t]{\textwidth}{%
+ \if@fsl
+ {%
+ \raggedright%
+ \vskip-\baselineskip\vskip.4pt
+ \hrulefill\\
+ }%
+ \fi
+ \vbox{\hsize=\textwidth\hbox to\textwidth{\headfont\@nextfoot}}%
+ }%
+ }%
+ \let\@oddfoot\@evenfoot
+ }
+\newcommand*{\ps@myheadings}{%
+ \ps@headings\let\@mkboth=\@gobbletwo
+ }
+\let\@mkboth=\@gobbletwo
+%</scrlettr>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\titlepagestyle}
+% \changes{v2.8d}{2001/07/05}{Neu}
+% \begin{macro}{\partpagestyle}
+% \changes{v2.8d}{2001/07/05}{Neu}
+% \begin{macro}{\chapterpagestyle}
+% \changes{v2.8d}{2001/07/05}{Neu}
+% \begin{macro}{\indexpagestyle}
+% \changes{v2.8d}{2001/07/05}{Neu}
+% Auf verschiedenen Seiten wird automatisch mit |\thispagestyle| auf
+% einen anderen Seitenstil umgeschaltet. Welcher das ist, ist in
+% diesem Makros abgelegt und kann bei Bedarf ge"andert
+% werden. Voreingestellt ist der in fr"uheren Versionen fest
+% verdrahtete Seitenstil \texttt{plain}. Da es bei Briefen die
+% entsprechenden Teile nicht gibt, wird f"ur \texttt{scrlttr2}
+% entsprechendes auch nicht definiert.
+% \begin{macrocode}
+%<*!scrlettr>
+\newcommand*{\titlepagestyle}{plain}
+\newcommand*{\partpagestyle}{plain}
+%<scrbook|scrreprt>\newcommand*{\chapterpagestyle}{plain}
+\newcommand*{\indexpagestyle}{plain}
+%</!scrlettr>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Titel}
+%
+% \begin{macro}{\extratitle}
+% \begin{macro}{\@extratitle}
+% \begin{macro}{\titlehead}
+% \begin{macro}{\@titlehead}
+% \begin{macro}{\subject}
+% \begin{macro}{\@subject}
+% \begin{macro}{\publishers}
+% \begin{macro}{\@publishers}
+% \begin{macro}{\uppertitleback}
+% \begin{macro}{\@uppertitleback}
+% \begin{macro}{\lowertitleback}
+% \begin{macro}{\@lowertitleback}
+% \begin{macro}{\dedication}
+% \begin{macro}{\@dedication}
+% Da der Titel im \textsf{KOMA-Script} Paket wesentlich mehr
+% Angaben erlaubt als bei den Standard-classes, gibt es nat"urlich
+% auch einige Befehle, mit denen diese gesetzt werden k"onnen.
+%
+% Alle zus"atzlichen Angaben sind optional und k"onnen auch weggelassen
+% werden. In diesem Fall werden Leerfelder verwendet. Bis auf |\subject|
+% sind alle Zusatzbefehle |\long| deklariert.
+%
+% Bei Briefen entf"allt die Titelei
+% \begin{macrocode}
+%<*!scrlettr>
+\newcommand*{\@extratitle}{}
+\newcommand{\extratitle}[1]{\gdef\@extratitle{#1}}
+\newcommand*{\@titlehead}{}
+\newcommand{\titlehead}[1]{\gdef\@titlehead{#1}}
+\newcommand*{\@subject}{}
+\newcommand*{\subject}[1]{\gdef\@subject{#1}}
+\newcommand*{\@publishers}{}
+\newcommand{\publishers}[1]{\gdef\@publishers{#1}}
+\newcommand*{\@uppertitleback}{}
+\newcommand{\uppertitleback}[1]{\gdef\@uppertitleback{#1}}
+\newcommand*{\@lowertitleback}{}
+\newcommand{\lowertitleback}[1]{\gdef\@lowertitleback{#1}}
+\newcommand*{\@dedication}{}
+\newcommand{\dedication}[1]{\gdef\@dedication{#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}
+%
+% \begin{macro}{\next@tpage}
+% \changes{v2.3b}{1995/07/24}{\cs{null} entfernt.}
+% \changes{v2.3g}{1996/01/14}{\cs{newpage} durch \cs{clearpage} ersetzt.}
+% \begin{macrocode}
+\newcommand*{\next@tpage}{\clearpage\thispagestyle{empty}}
+% \end{macrocode}
+% Innerhalb eines Titels auf die n"achste Seite umschalten.
+% \end{macro}
+% \begin{macro}{\maketitle}
+% Anschlie"send wird der Titel generiert.
+% Bei |scrartcl| mu"s unterschieden werden, ob der Titel auf einer eigenen
+% Titelseite oder als Seitenkopf erstellt werden soll. Der
+% \textsf{KOMA-Script}-Titel ist u.U. sehr gro"s. In diesem Fall
+% sollte eigentlich immer eine Titelseite verwendet werden.
+% \changes{v2.1a}{1994/10/29}{Das Hilfskonstrukt \cs{@maketitle}
+% wurde aus der Unterscheidung
+% herausgenommen. Dies ist f"ur
+% den Fall, da"s \cs{maketitle}
+% von einem package "uberladen wird.}
+% \changes{v2.3a}{1995/07/08}{\texttt{plus} durch \cs{@plus} ersetzt.}
+% \changes{v2.3a}{1995/07/08}{\texttt{fill} durch \cs{fill} ersetzt.}
+% \changes{v2.3d}{1995/08/19}{\cs{fill} durch \texttt{fill} ersetzt.}
+% \changes{v2.3a}{1995/07/08}{\cs{vfil} durch \cs{vfill} ersetzt.}
+% \changes{v2.3b}{1995/07/24}{Umbruch bei \cs{@extratitle} in der
+% beidseitigen Titelseite korrigiert.}
+% \changes{v2.3g}{1996/01/14}{\cs{footnote} funktioniert nun auch im
+% Titel}
+% \changes{v2.4}{1996/02/25}{\cs{footnote} funktioniert nun wirklich im
+% Titel.}
+% \changes{v2.4h}{1996/11/09}{Egal ob der Titel auf eine Extraseite
+% kommt oder nicht, \cs{@title} wird mit
+% \cs{sectfont} gesetzt, wobei die Gr"o"se
+% neuerdings danach eingestellt wird.}
+% \changes{v2.4l}{1997/02/06}{Symbolische Fu"snoten und
+% Fu"snotensymbolbreiten von 0pt zur
+% besseren Zentrierung des Autors sind
+% auch bei Titelseiten angebracht.}
+% \changes{v2.8p}{2001/09/22}{\cs{titlefont} an Stelle von \cs{sectfont}}
+% \begin{macrocode}
+\if@titlepage
+ \newcommand*\maketitle[1][1]{\begin{titlepage}%
+ \setcounter{page}{#1}
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \let\footnote\thanks
+ \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
+ \let\@oldmakefnmark\@makefnmark
+ \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}
+ \ifx\@extratitle\@empty \else
+ \noindent\@extratitle\next@tpage\cleardoublepage
+ \thispagestyle{empty}
+ \fi
+ \ifx\@titlehead\@empty \else
+ \noindent\begin{minipage}[t]{\textwidth}
+ \@titlehead
+ \end{minipage}\par
+ \fi
+ \null\vfill
+ \begin{center}
+ \ifx\@subject\@empty \else
+ {\Large \@subject \par}
+ \vskip 3em
+ \fi
+ {\titlefont\huge \@title\par}
+ \vskip 3em
+ {\Large \lineskip 0.75em
+ \begin{tabular}[t]{c}
+ \@author
+ \end{tabular}\par}
+ \vskip 1.5em
+ {\Large \@date \par}
+ \vskip \z@ \@plus3fill
+ {\Large \@publishers \par}
+ \vskip 3em
+ \end{center}\par
+ \@thanks
+ \vfill\null
+ \if@twoside\next@tpage
+ \noindent\begin{minipage}[t]{\textwidth}
+ \@uppertitleback
+ \end{minipage}\par
+ \vfill
+ \noindent\begin{minipage}[b]{\textwidth}
+ \@lowertitleback
+ \end{minipage}
+ \fi
+ \ifx\@dedication\@empty \else
+ \next@tpage\null\vfill
+ {\centering \Large \@dedication \par}
+ \vskip \z@ \@plus3fill
+ \if@twoside \next@tpage\cleardoublepage \fi
+ \fi
+ \end{titlepage}
+ \setcounter{footnote}{0}%
+% \end{macrocode}
+% \changes{v2.3g}{1996/01/14}{Verwendung von \cs{global}\cs{let} statt
+% \cs{gdef}, um Speicher zu sparen.}
+% \changes{v2.3g}{1996/01/14}{\cs{@date} und \cs{title} u."a. ebenfalls
+% l"oschen, um Speicher zu sparen.}
+% \begin{macrocode}
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\@extratitle\@empty
+ \global\let\@titlehead\@empty
+ \global\let\@subject\@empty
+ \global\let\@publishers\@empty
+ \global\let\@uppertitleback\@empty
+ \global\let\@lowertitleback\@empty
+ \global\let\@dedication\@empty
+ \global\let\author\relax
+ \global\let\title\relax
+ \global\let\extratitle\relax
+ \global\let\titlehead\relax
+ \global\let\subject\relax
+ \global\let\publishers\relax
+ \global\let\uppertitleback\relax
+ \global\let\lowertitleback\relax
+ \global\let\dedication\relax
+ \global\let\date\relax
+ \global\let\and\relax}
+\else
+% \end{macrocode}
+% \changes{v2.3a}{1995/07/08}{Verwendung von \cs{@makefnmark} in
+% \cs{@makefntext}.}
+% \changes{v2.3a}{1995/07/08}{Definition von \cs{@makefnmark} und
+% \cs{@makefntext} unabh"angig von math
+% definiert.}
+% \changes{v2.3e}{1995/08/30}{Optionales Argument bei der einseitigen
+% Version erlauben und ignorieren.}
+% \changes{v2.3g}{1996/01/14}{Mehrfach \cs{null} bei \cs{next@tpage}
+% erg"anzt.}
+% \changes{v2.4l}{1997/02/06}{Es ist nicht mehr notwendig \cs{\@makefntext}
+% umzudefinieren, stattdessen wird nur
+% \cs{\@makefnmark} umdefiniert.}
+% \changes{v2.8d}{2001/07/05}{\cs{titlepagestyle} statt \texttt{plain}}
+% \begin{macrocode}
+ \newcommand*\maketitle[1][1]{\par
+ \@tempcnta=#1\relax\ifnum\@tempcnta=1\else
+%<scrartcl> \ClassWarning{scrartcl}
+%<scrreprt> \ClassWarning{scrreprt}
+%<scrbook> \ClassWarning{scrbook}
+ {Optional argument of \string\maketitle\space ignored
+ at\MessageBreak
+ notitlepage-mode}\fi
+ \begingroup
+ \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
+ \let\@oldmakefnmark\@makefnmark
+ \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}
+ \if@twocolumn
+ \ifnum \col@number=\@ne
+ \@maketitle
+ \else
+ \twocolumn[\@maketitle]%
+ \fi
+ \else
+ \newpage
+ \global\@topnum\z@
+ \@maketitle
+ \fi
+ \thispagestyle{\titlepagestyle}\@thanks
+ \endgroup
+ \setcounter{footnote}{0}%
+ \let\thanks\relax
+ \let\maketitle\relax
+ \let\@maketitle\relax
+% \end{macrocode}
+% \changes{v2.3g}{1996/01/14}{Verwendung von \cs{global}\cs{let} statt
+% \cs{gdef}, um Speicher zu sparen.}
+% \changes{v2.3g}{1996/01/14}{\cs{@date} und \cs{title} u."a. ebenfalls
+% l"oschen, um Speicher zu sparen.}
+% \begin{macrocode}
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\@extratitle\@empty
+ \global\let\@titlehead\@empty
+ \global\let\@subject\@empty
+ \global\let\@publishers\@empty
+ \global\let\@uppertitleback\@empty
+ \global\let\@lowertitleback\@empty
+ \global\let\@dedication\@empty
+ \global\let\author\relax
+ \global\let\title\relax
+ \global\let\extratitle\relax
+ \global\let\titlehead\relax
+ \global\let\subject\relax
+ \global\let\publishers\relax
+ \global\let\uppertitleback\relax
+ \global\let\lowertitleback\relax
+ \global\let\dedication\relax
+ \global\let\date\relax
+ \global\let\and\relax}
+\fi
+% \end{macrocode}
+% \begin{macro}{\@maketitle}
+% \begin{macrocode}
+\newcommand*{\@maketitle}{%
+ \clearpage
+ \let\footnote\thanks
+ \ifx\@extratitle\@empty \else
+ \noindent\@extratitle \next@tpage \if@twoside \null\next@tpage \fi
+ \fi
+ \ifx\@titlehead\@empty \else
+ \noindent\begin{minipage}[t]{\textwidth}
+ \@titlehead
+ \end{minipage}\par
+ \fi
+ \null
+ \vskip 2em%
+ \begin{center}%
+ \ifx\@subject\@empty \else
+ {\Large \@subject \par}
+ \vskip 1.5em
+ \fi
+ {\titlefont\huge \@title \par}%
+ \vskip 1.5em%
+ {\Large
+ \lineskip .5em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1em%
+ {\Large \@date \par}%
+ \vskip \z@ \@plus 1em
+ {\Large \@publishers \par}
+ \ifx\@dedication\@empty \else
+ \vskip 2em
+ {\Large \@dedication \par}
+ \fi
+ \end{center}%
+ \par
+ \vskip 2em}
+%</!scrlettr>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Kapiteleinteilung}
+%
+% Die gesamte Gliederungsgeschichte entf"allt bei Briefen:
+% \begin{macrocode}
+%<*!scrlettr>
+% \end{macrocode}
+%
+% \changes{v2.3h}{1996/01/20}{Gr"o"senbefehle in den "Uberschriften
+% variabel gestaltet.}
+% \begin{macro}{\numberline}
+% \changes{v2.3c}{1995/08/06}{\cs{numberline} umdefiniert.}
+% Dieses Makro wird indirekt im Inhaltsverzeichnis verwendet und mu"s
+% umdefiniert werden, um Duden Regel~5 und Regel~6 zu implementieren.
+% \begin{macrocode}
+\renewcommand*{\numberline}[1]{%
+ \hb@xt@\@tempdima{#1\autodot\hfil}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\chaptermark}
+% Dieses Makro, das f"ur lebende Kolumnentitel auf Kapitelebene
+% zust"andig ist, wird im Kernel nicht definiert. Deshalb wird es hier
+% nachgeholt. Strenggenommen ist das nur notwendig, wenn innerhalb der
+% Seitenstildefinitionen |\renewcommand| verwendet wird. Auf jedenfall
+% ist es sauberer, die Definition hier durchzuf"uhren, als sie
+% wegzulassen.
+% \begin{macrocode}
+%<!scrartcl>\newcommand*\chaptermark[1]{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{Counter}{secnumdepth}
+% \begin{Counter}{part}
+% \begin{Counter}{chapter}
+% \begin{Counter}{section}
+% \begin{Counter}{subsection}
+% \begin{Counter}{subsubsection}
+% \begin{Counter}{paragraph}
+% \begin{Counter}{subparagraph}
+% \begin{macro}{thepart}
+% \begin{macro}{thechapter}
+% \begin{macro}{thesection}
+% \begin{macro}{thesubsection}
+% \begin{macro}{thesubsubsection}
+% \begin{macro}{theparagraph}
+% \begin{macro}{thesubparagraph}
+% Au"serdem werden an dieser Stelle nun einige Z"ahler definiert und
+% initialisiert, die f"ur die Gliederung ma"sgeblich sind. Das
+% Erscheinungsbild der Z"ahler bei ihrer Ausgabe wird ebenfalls festgelegt.
+% \begin{macrocode}
+%<!scrartcl>\setcounter{secnumdepth}{2}
+%<scrartcl>\setcounter{secnumdepth}{3}
+\newcounter{part}
+%<!scrartcl>\newcounter{chapter}
+%<scrartcl>\newcounter{section}
+%<!scrartcl>\newcounter{section}[chapter]
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+\newcounter{subparagraph}[paragraph]
+\renewcommand*\thepart{\@Roman\c@part}
+%<!scrartcl>\renewcommand*\thechapter{\@arabic\c@chapter}
+%<!scrartcl>\renewcommand*\thesection{\thechapter.\@arabic\c@section}
+%<scrartcl>\renewcommand*\thesection{\@arabic\c@section}
+\renewcommand*\thesubsection{\thesection.\@arabic\c@subsection}
+\renewcommand*\thesubsubsection{\thesubsection.\@arabic\c@subsubsection}
+\renewcommand*\theparagraph{\thesubsubsection.\@arabic\c@paragraph}
+\renewcommand*\thesubparagraph{\theparagraph.\@arabic\c@subparagraph}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \end{Counter}
+% \end{Counter}
+% \end{Counter}
+% \end{Counter}
+% \end{Counter}
+% \end{Counter}
+% \end{Counter}
+%
+% \begin{macro}{\@thepart}
+% \changes{v2.8e}{2001/07/10}{Entfernt}
+% \begin{macro}{\@maybeasf}
+% \changes{v2.8e}{2001/07/10}{Entfernt}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@chapapp}
+% Analog zu den Standardklassen.
+% \begin{macrocode}
+%<!scrartcl>\newcommand*\@chapapp{\chaptername}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\frontmatter}
+% \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten.}
+% \changes{v2.5h}{1999/12/29}{Option \texttt{twoside} beachten.}
+% \begin{macrocode}
+%<*scrbook>
+\newcommand*\frontmatter{\if@twoside\cleardoublepage\else\clearpage\fi
+ \@mainmatterfalse\pagenumbering{roman}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\mainmatter}
+% \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten.}
+% \changes{v2.5h}{1999/12/29}{Option \texttt{twoside} beachten.}
+% \begin{macrocode}
+\newcommand*\mainmatter{\if@twoside\cleardoublepage\else\clearpage\fi
+ \@mainmattertrue\pagenumbering{arabic}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\backmatter}
+% Auch wenn nicht ganz einzusehen ist, warum das anders sein soll,
+% wird hier nicht nach der Option \texttt{twoside}, sondern nach
+% \texttt{openright} unterschieden.
+% \begin{macrocode}
+\newcommand*\backmatter{\if@openright\cleardoublepage\else\clearpage\fi
+ \@mainmatterfalse}
+%</scrbook>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\part}
+% \changes{v2.1c}{1995/01/17}{Zeichenkette "`markboth"' durch
+% Befehl \cs{markboth} ersetzt.}
+% \changes{v2.2c}{1995/05/25}{Part-Ausgabe auf CJK umgestellt.}
+% \changes{v2.3c}{1995/08/06}{Alternative Numerierung bei r"omischer
+% Part-Numerierung.}
+% \changes{v2.3d}{1995/08/19}{Alternative Numerierung korrigiert.}
+% \changes{v2.3g}{1996/01/14}{\cs{hbox} durch \cs{null} ersetzt.}
+% \changes{v2.8d}{2001/07/05}{\cs{partpagestyle} statt \texttt{plain}}
+% \changes{v2.8p}{2001/09/27}{Pr"aambel "uber der "Uberschrift
+% hinzugef"ugt}
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt
+% einen Bug im color Paket}
+% \begin{macro}{\@part}
+% \changes{v2.4b}{1996/03/29}{\cs{size@partnumer} durch
+% \cs{size@partnumber} ersetzt.}
+% \changes{v2.4n}{1997/05/28}{F"ur scrartcl \cs{markboth} zum L"oschen
+% der Kolumnentitel durch \cs{sectionmark}
+% ersetzt.}
+% \changes{v2.4n}{1997/05/28}{In der Sternvariante \cs{chaptermark} bzw.
+% \cs{sectionmark} eingef"ugt, um die
+% Kolumnentitel zu l"oschen.}
+% \changes{v2.6a}{2000/01/20}{Zum L"oschen der Kolumnentitel wird nun
+% \cs{@mkboth} verwendet.}
+% \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen}
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@part} und \cs{size@partnumber}
+% aufgerufen}
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
+% \changes{v2.9c}{2002/08/10}{\cs{@parskipfalse}\cs{@parskip@indent}
+% und \cs{centering} in der Reihenfolge
+% vertauscht}
+% \changes{v2.9s}{2004/07/05}{Verwendung von \cs{partmark}}
+% \begin{macro}{\@spart}
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
+% \changes{v2.9c}{2002/08/10}{\cs{@parskipfalse}\cs{@parskip@indent}
+% und \cs{centering} in der Reihenfolge
+% vertauscht}
+% \begin{macro}{\@endpart}
+% Der Gliederungsfehl |\part| wird wie in den Standardklassen mit Hilfe
+% mehrere Hilfsmakros definiert. Wesentliche Unterschiede zu den
+% Standardklassen existieren nicht, jedoch sind Schriftgr"o"se,
+% Schriftart u.~"a. flexibler gehalten. Au"serdem gibt es die
+% M"oglichkeit von Pr"aambeln. \emph{Achtung: Die Pr"aambel vor der
+% \cs{part}-"Uberschrift kann ohne Warnung "uber den oberen Rand
+% hinaus reichen!}
+% \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten.}
+% \changes{v2.5e}{1998/07/17}{\cs{numberline} verwendet, damit die
+% reservierte Part-Nummern-Breite in
+% \cs{l@part} auch wirklich verwendet
+% wird}
+% \begin{macrocode}
+%<*scrartcl>
+\newcommand\part{\par
+ \addvspace{4ex}%
+ \@afterindentfalse
+ \secdef\@part\@spart}
+%</scrartcl>
+%<*scrreprt|scrbook>
+\newcommand\part{\if@openright\cleardoublepage\else\clearpage\fi
+ \thispagestyle{\partpagestyle}%
+ \if@twocolumn
+ \onecolumn
+ \@tempswatrue
+ \else
+ \@tempswafalse
+ \fi
+ \null\vfil%
+ \vbox to\z@{\vss\use@preamble{part@o}\strut\par}%
+ \vskip-\baselineskip\nobreak%
+ \secdef\@part\@spart}
+%</scrreprt|scrbook>
+\newcommand*{\@part}{}
+\def\@part[#1]#2{%
+%<*scrartcl>
+ \ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{part}%
+ \@maybeautodot\thepart%
+ \addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ {\parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont\sectfont\nobreak
+ \ifnum \c@secnumdepth >\m@ne
+ \size@partnumber\partformat
+ \par\nobreak
+ \fi
+ \size@part #2\strut%
+ \partmark{#1}\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}
+%</scrartcl>
+%<*scrreprt|scrbook>
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \@maybeautodot\thepart%
+ \addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \partmark{#1}%
+ {\@parskipfalse\@parskip@indent\centering
+ \interlinepenalty \@M
+ \normalfont\sectfont
+ \ifnum \c@secnumdepth >-2\relax
+ \size@partnumber\partformat
+ \par
+ \vskip 20\p@
+ \fi
+ \size@part #2\strut\par}%
+ \@endpart}
+%</scrreprt|scrbook>
+\newcommand*{\@spart}[1]{%
+%<*scrartcl>
+ {\parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \sectfont\nobreak\size@part #1\strut\@mkboth{}{}\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}
+%</scrartcl>
+%<*scrreprt|scrbook>
+ {\@parskipfalse\@parskip@indent\centering
+ \interlinepenalty \@M
+ \normalfont
+ \sectfont\size@part #1\strut\@mkboth{}{}\par}%
+ \@endpart}
+% \end{macrocode}
+% \changes{v2.3g}{1996/01/14}{\cs{@endpart} wird f"ur scrartcl nicht mehr
+% definiert}
+% \changes{v2.6c}{2000/06/10}{\cs{@endpart} f"ugt nur noch in beidseitigen
+% Dokumenten bei Verwendung von openright eine
+% Leerseite ein}
+% \changes{v2.8p}{2001/09/27}{\cs{vbox} eingef"ugt}
+% \changes{v2.8p}{2001/09/27}{\cs{use@preamble} ersetzt
+% \cs{@part@preamble}}
+% \begin{macrocode}
+\newcommand*{\@endpart}{\vbox to\z@{\use@preamble{part@u}\vss}%
+ \vfil\newpage
+ \if@twoside\if@openright
+ \null%
+ \thispagestyle{empty}%
+ \newpage
+ \fi\fi
+ \if@tempswa
+ \twocolumn
+ \fi}
+%</scrreprt|scrbook>
+% \end{macrocode}
+% \begin{macro}{\partmark}
+% \changes{v2.9s}{2004/07/05}{Neu}
+% In der initialen Version macht das dasselbe wie bisher, als das Makro noch
+% nicht definiert war: automatische Kolumnentitel ggf. l"oschen.
+% \begin{macrocode}
+\newcommand*{\partmark}[1]{\@mkboth{}{}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\addpart}
+% \changes{v2.8c}{2001/06/29}{Neu}
+% \changes{v2.8d}{2001/07/05}{\cs{partpagestyle} statt \texttt{plain}}
+% \begin{macro}{\@addpart}
+% \changes{v2.8c}{2001/06/29}{Neu}
+% \changes{v2.8l}{2001/08/17}{Erst eintagen, dann ausgeben}
+% \begin{macro}{\@saddpart}
+% \changes{v2.8c}{2001/06/29}{Neu}
+% \begin{macrocode}
+%<*scrartcl>
+\newcommand\addpart{\par
+ \addvspace{4ex}%
+ \@afterindentfalse
+ \secdef\@addpart\@saddpart}
+%</scrartcl>
+%<*scrreprt|scrbook>
+\newcommand\addpart{\if@openright\cleardoublepage\else\clearpage\fi
+ \thispagestyle{\partpagestyle}%
+ \if@twocolumn
+ \onecolumn
+ \@tempswatrue
+ \else
+ \@tempswafalse
+ \fi
+ \null\vfil
+ \secdef\@addpart\@saddpart}
+%</scrreprt|scrbook>
+\newcommand*{\@addpart}{}
+\def\@addpart[#1]#2{\addcontentsline{toc}{part}{#1}\@spart{#2}}
+\newcommand*{\@saddpart}{}
+\def\@saddpart#1{\@spart{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\chapter}
+% \changes{v2.8d}{2001/07/05}{\cs{chapterpagestyle} statt \texttt{plain}}
+% \begin{macro}{\@chapter}
+% \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen}
+% \changes{v2.8g}{2001/07/18}{per \cs{float@addtolists} wird nun auch
+% ein vertikaler Abstand in Listen des
+% \texttt{float}-Pakets eingebaut}
+% \begin{macro}{\@schapter}
+% \begin{macro}{\@makechapterhead}
+% \changes{v2.7b}{2001/01/05}{Kapitel k"onnen grunds"atzlich mit einer
+% Pr"aambel versehen werden}
+% \changes{v2.8p}{2001/09/25}{es gibt verschiedene Arten von
+% Pr"aambeln}
+% \begin{macro}{\@@makechapterhead}
+% \changes{v2.8p}{2001/09/25}{Neu}
+% \changes{v2.9g}{2002/09/01}{\cs{size@chapter} verschoben}
+% \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}
+% \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf
+% \texttt{1em plus 1fil} ge"andert}
+% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf
+% \texttt{\cs{z@} plus 1fil} ge"andert}
+% \begin{macro}{\@makeschapterhead}
+% Der Gliederungsfehl |\chapter|, der nur in den Klassen
+% \texttt{scrbook} und \texttt{scrreprt} vorhanden ist, wird wie in
+% den Standardklassen mit Hilfe mehrere Hilfsmakros definiert.
+% \changes{v2.7b}{2001/01/05}{Kapitel k"onnen grunds"atzlich mit einer
+% Pr"aambel versehen werden}
+% \begin{macro}{\@@makeschapterhead}
+% \changes{v2.8q}{2002/04/18}{\cs{raggedsection} wird bei Option
+% \texttt{chapterprefix} auch auf den Pr"afix angewendet}
+% \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}
+% \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf
+% \texttt{1em plus 1fil} ge"andert}
+% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf
+% \texttt{\cs{z@} plus 1fil} ge"andert}
+% \changes{v2.9q}{2004/03/24}{Klammerung an \cs{@@makechapterhead}
+% angepasst}
+% \begin{macro}{\if@at@twocolumn}
+% \changes{v2.7b}{2001/01/05}{Neu}
+% \begin{macro}{\scr@topnewpage}
+% \changes{v2.7b}{2001/01/05}{Neu}
+% \changes{v2.8q}{2001/11/27}{Fehlende Klammern erg"anzt}
+% \begin{macro}{\@topnewpage}
+% \changes{v2.7b}{2001/01/05}{Neu}
+% Interessant ist dabei die Erweiterung, da"s jedes Kapitel mit einer
+% Preambel versehen werden kann. Diese wird im zweispaltigen Satz wie
+% die "Uberschrift selbst einspaltig gesetzt. Intern wird dies f"ur
+% die Preambel des Index und der Bibliography verwendet. Dabei
+% entsteht aber wiederum das Problem, da"s der Indexkopf innerhalb von
+% |\twocolumn| ausgegeben wird andererseits aber innerhalb von
+% |\chapter| das Makro |\@topnewpage| verwendet wird. Damit w"urde
+% dann also |\@topnewpage| innerhalb von |\@topnewpage|
+% aufgerufen. Das ist jedoch nicht erlaubt. Als mu"s der Aufruf von
+% |\@topnewpage| in |\@chapter| und |\@schapter| verhindert werden,
+% wenn wir uns bereits in |\@topnewpage| befinden. Eine M"oglichkeit
+% daf"ur w"are, einen Schalter in den Index-Kopf einzubauen. Wir
+% w"ahlen hingegen die Methode, |\@topnewpage| entsprechend
+% umzudefinieren. Damit kann dann auch der Anwender |\@chapter|
+% innerhalb des optionalen Arguments von |\twocolumn| verwenden.
+% \changes{v2.7g}{2001/04/17}{vergessenes \cs{long} erg"anzt}
+% \begin{macrocode}
+%<*scrreprt|scrbook>
+\newif\if@at@twocolumn
+\newcommand*\scr@topnewpage{}
+\let\scr@topnewpage\@topnewpage
+\long\def\@topnewpage[#1]{%
+ \@at@twocolumntrue\scr@topnewpage[{#1}]\@at@twocolumnfalse}
+\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
+ \thispagestyle{\chapterpagestyle}%
+ \global\@topnum\z@
+ \@afterindentfalse
+ \secdef\@chapter\@schapter}
+\newcommand*{\@chapter}{}
+\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
+%<scrbook> \if@mainmatter
+ \refstepcounter{chapter}%
+ \@maybeautodot\thechapter%
+ \typeout{\@chapapp\space\thechapter.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter}#1}%
+%<scrbook> \else
+%<scrbook> \addcontentsline{toc}{chapter}{#1}\fi
+ \else
+ \addcontentsline{toc}{chapter}{#1}
+ \fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \@ifundefined{float@addtolists}{}{%
+ \float@addtolists{\protect\addvspace{10\p@}}}
+ \if@twocolumn
+ \if@at@twocolumn
+ \@makechapterhead{#2}%
+ \else
+ \@topnewpage[\@makechapterhead{#2}]%
+ \fi
+ \else
+ \@makechapterhead{#2}%
+ \@afterheading
+ \fi}
+\newcommand*{\chapterheadstartvskip}{}
+\newcommand*{\chapterheadendvskip}{}
+\newcommand*{\@@makechapterhead}[1]{\chapterheadstartvskip%
+ {\normalfont\sectfont\size@chapter
+ \setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ \@plus 1fil}%
+ \if@chapterprefix\let\@tempa\raggedsection\else\let\@tempa\@hangfrom\fi%
+ \@tempa{\ifnum \c@secnumdepth >\m@ne%
+%<scrbook> \if@mainmatter \chapterformat\fi\fi}%
+%<!scrbook> \chapterformat\fi}%
+ \if@chapterprefix\par\nobreak\vskip.5\baselineskip\fi%
+ {\raggedsection \interlinepenalty \@M #1\par}}%
+ \nobreak\chapterheadendvskip%
+ }
+\newcommand*{\use@chapter@o@preamble}{%
+ {\settoheight{\@tempdima}{\vbox{\chapterheadstartvskip}}%
+ \settodepth{\@tempdimb}{\vbox{\chapterheadstartvskip}}%
+ \addtolength{\@tempdima}{\@tempdimb}%
+ \setbox0\vbox{\use@preamble{chapter@o}%
+ \vskip-\parskip}%
+ \setlength{\@tempdimb}{\ht0}%
+ \addtolength{\@tempdimb}{\dp0}%
+ \vbox to \z@{%
+ \vbox to \@tempdima{\vfill\box0}%
+ \vskip-\@tempdima%
+ }%
+ \ifdim \@tempdimb>\@tempdima%
+ \addtolength{\@tempdimb}{-\@tempdima}%
+ \ClassWarning{%
+%<scrbook> scrbook%
+%<scrreprt> scrreprt%
+%<scrartcl> scrartcl%
+ }{%
+ preamble before chapter is \the\@tempdimb\space too
+ high.\MessageBreak
+ To avoid the overfull \string\vbox\space you may
+ redefine\MessageBreak
+ \string\chapterheadstartvskip\space at the preamble of
+ your\MessageBreak
+ document. You may also change
+ \string\setchapterpreamble\MessageBreak
+ before the command, which generates the message
+ about\MessageBreak
+ an overfull \string\vbox
+ }%
+ \fi%
+ }
+}
+\newcommand*{\@makechapterhead}[1]{%
+ \use@chapter@o@preamble%
+ \@@makechapterhead{#1}%
+ \use@preamble{chapter@u}\nobreak%
+ }
+\newcommand*{\@schapter}[1]{\if@twocolumn
+ \if@at@twocolumn
+ \@makeschapterhead{#1}%
+ \else
+ \@topnewpage[\@makeschapterhead{#1}]%
+ \fi
+ \else
+ \@makeschapterhead{#1}%
+ \@afterheading
+ \fi}
+\newcommand*{\@@makeschapterhead}[1]{\chapterheadstartvskip%
+ {\normalfont\sectfont\size@chapter
+ \setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ \@plus 1fil}%
+ \raggedsection \interlinepenalty \@M #1\par}%
+ \nobreak\chapterheadendvskip%
+}
+\newcommand*{\@makeschapterhead}[1]{%
+ \use@chapter@o@preamble%
+ \@@makeschapterhead{#1}%
+ \use@preamble{chapter@u}\nobreak%
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\use@preamble}
+% \changes{v2.8p}{2001/09/25}{Neu}
+% Dieses Makro dient allgemein zum Setzen einer Pr"aambel (f"ur
+% Gliederungs"uberschriften), wenn eine
+% solche definiert ist. Als Argument wird der Name der Pr"aambel
+% "ubergeben, an den automatisch \verb;@preamble; angeh"angt
+% wird. Zum Schluss wird die gespeicherte Pr"aambel gel"oscht.
+% \begin{macrocode}
+\newcommand*{\use@preamble}[1]{%
+ \@ifundefined{#1@preamble}{}{%
+ \@nameuse{#1@preamble}%
+ \global\expandafter\let\csname#1@preamble\endcsname=\relax}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\set@preamble}
+% \changes{v2.8p}{2001/09/25}{Neu}
+% Das Makro \cs{set@preamble} dient allgemein der Defintion einer
+% Pr"aambel (f"ur Gliederungs"uberschriften). Als Argument wird der
+% Name der Gliederungsebene "ubergeben. Danach folgt ein optionales
+% Argument, das die Position der Pr"aambel angibt. Darauf folgt ein
+% weiteres optionales Argument, das die Breite der Pr"aambel
+% angibt. Ist nur ein optionales Argument angegeben, so ist es die
+% Position. Es folgt ein obligatorisches Argument mit dem Inhalt der
+% Pr"aambel. Die Definition der Pr"aambel erfolgt global.
+% \begin{macro}{\set@@preamble}
+% \changes{v2.8p}{2001/09/25}{Neu}
+% \begin{macro}{\set@@@preamble}
+% \changes{v2.8p}{2001/09/25}{Neu}
+% \begin{macro}{\set@@@@preamble}
+% \changes{v2.8p}{2001/09/25}{Neu}
+% \changes{v2.8q}{2001/11/27}{Fehlende Klammern erg"anzt}
+% Da mehrere optionale Argumente nach einem obligatorischen Argument
+% auszuwerten sind, werden diverse Hilfsmakros ben"otigt.
+% \begin{macrocode}
+\newcommand*{\set@preamble}[1]{%
+% \end{macrocode}
+% Zunaechst wird das erste optionale Argument gesucht.
+% \begin{macrocode}
+ \@ifnextchar [
+ {\set@@preamble{#1}}{\set@@@preamble{#1}[][\hsize]}}
+\newcommand*{\set@@preamble}{}
+\def\set@@preamble#1[#2]{%
+% \end{macrocode}
+% Wenn ein optionales Argument existiert, kann es auch ein zweites
+% geben. Wenn nicht, wird mit der Voreinstellung gearbeitet.
+% \begin{macrocode}
+ \@ifnextchar [
+ {\set@@@preamble{#1}[{#2}]}{\set@@@preamble{#1}[{#2}][\hsize]}}
+\newcommand{\set@@@preamble}{}
+\long\def\set@@@preamble#1[#2][#3]#4{%
+% \end{macrocode}
+% Dies ist das Hauptmakro, das die eigentliche Arbeit macht. Es muss
+% long definiert werden, da die Pr"aambel auch aus mehreren Abs"atzen
+% bestehen kann.
+%
+% Zun"achst wird das Positionsargument ausgewertet. Dies geschieht mit
+% lokalen Hilfsmakros und einer Schleife. Zur Funktion der Schleife
+% siehe im dokumentierten \LaTeX-Kern.
+% \begin{macrocode}
+ {%
+ \def\prmbl@pos{#2}\let\prmbl@hpos\relax\let\prmbl@vpos\relax%
+ \expandafter \@tfor \expandafter \@tempa%
+ \expandafter :\expandafter =\prmbl@pos%
+ \do{%
+ \if \@tempa l%
+ \set@preamble@hpos{0}{#2}%
+ \fi%
+ \if \@tempa c%
+ \set@preamble@hpos{1}{#2}%
+ \fi%
+ \if \@tempa r%
+ \set@preamble@hpos{2}{#2}%
+ \fi%
+ \if \@tempa u%
+ \set@preamble@vpos{0}{#2}%
+ \fi%
+ \if \@tempa o%
+ \set@preamble@vpos{1}{#2}%
+ \fi%
+ }
+% \end{macrocode}
+% Wurde keine horizontale oder vertikale Ausrichtung definiert, so
+% wird nun der Standardwert daf"ur eingesetzt.
+% \begin{macrocode}
+ \@ifundefined{prmbl@hpos}{\def\prmbl@hpos{0}}{}%
+ \@ifundefined{prmbl@vpos}{\def\prmbl@vpos{0}}{}%
+% \end{macrocode}
+% Nun sind die Positionen ermittelt und es werden abh"angig davon
+% entsprechende P"aambelmakros definiert.
+% \begin{macrocode}
+ \ifcase\prmbl@hpos
+% \end{macrocode}
+% Zun"achst links unten und oben:
+% \begin{macrocode}
+ \ifcase\prmbl@vpos
+ \set@@@@preamble{#1@u}{t}{#3}{}{\hfil}{#4}
+ \else
+ \set@@@@preamble{#1@o}{b}{#3}{}{\hfil}{#4}
+ \fi
+ \or
+% \end{macrocode}
+% Dann zentriert unten und oben:
+% \begin{macrocode}
+ \ifcase\prmbl@vpos
+ \set@@@@preamble{#1@u}{t}{#3}{\hfil}{\hfil}{#4}
+ \else
+ \set@@@@preamble{#1@o}{b}{#3}{\hfil}{\hfil}{#4}
+ \fi
+ \else
+% \end{macrocode}
+% Zum Schluss rechts und oben:
+% \begin{macrocode}
+ \ifcase\prmbl@vpos
+ \set@@@@preamble{#1@u}{t}{#3}{\hfil}{}{#4}
+ \else
+ \set@@@@preamble{#1@o}{b}{#3}{\hfil}{}{#4}
+ \fi
+ \fi
+ }
+}
+% \end{macrocode}
+% Es folgt das Makro, mit dem die Definition tats"achlich
+% stattfindet. Das erste Argument ist der Name der Pr"aambel, das
+% zweite die Positionsoption f"ur die verwendete \cs{parbox}, das
+% dritte ist die Breite der \cs{parbox}, dann zwei Argumente mit der
+% horizontalen Ausrichtung vor und nach der \cs{parbox} und das
+% sechste Agument ist schlie"slich der Inhalt der \cs{parbox}.
+% \begin{macrocode}
+\newcommand{\set@@@@preamble}[6]{%
+ \expandafter\gdef\csname #1@preamble\endcsname{%
+ \hbox to\hsize{#4\parbox[{#2}]{#3}{#6\par}#5\par}}}
+% \end{macrocode}
+%
+% \begin{macro}{\set@preamble@hpos}
+% \changes{v2.8q}{2001/09/25}{Neu}
+% Eines der Hilfsmakros dient dazu, die horizontale Position der
+% Pr"aambel einzustellen, falls dies nicht bereits erfolgt ist. Ist es
+% bereits nicht "ubereinstimmend erfolg, wird ein Fehler
+% ausgegeben. Dieses Makro ist extrem intern und funktioniert nur im
+% Kontext vor \cs{set@preamble}.
+% \begin{macrocode}
+\newcommand*{\set@preamble@hpos}[2]{%
+ \@ifundefined{prbml@hpos}{%
+ \def\prmbl@hpos{#1}%
+ }{%
+ \ifnum \prmbl@hpos=0\relax\else%
+ \ClassError{%
+%<scrbook> scrbook%
+%<scrreprt> scrreprt%
+%<scrartcl> scrartcl%
+ }{%
+ inconsistent hpos options%
+ }{%
+ You said `#2' as position option. But you have
+ to\MessageBreak
+ use only one from `l', `r' or `c' not two of
+ these.\MessageBreak
+ If you'll continue only first hpos option will be
+ used}%
+ \fi}}
+% \end{macrocode}
+% \end{macro}%\iffalse\set@preamble@hpos\fi
+% \begin{macro}{\set@preamble@vpos}
+% \changes{v2.8q}{2001/09/25}{Neu}
+% Das Hilfsmakro f"ur die vertikale Position funktioniert in gleicher
+% Weise.
+% \begin{macrocode}
+\newcommand*{\set@preamble@vpos}[2]{%
+ \@ifundefined{prbml@vpos}{%
+ \def\prmbl@vpos{#1}%
+ }{%
+ \ifnum \prmbl@vpos=0\relax\else%
+ \ClassError{%
+%<scrbook> scrbook%
+%<scrreprt> scrreprt%
+%<scrartcl> scrartcl%
+ }{%
+ inconsistent vpos options%
+ }{%
+ You said `#2' as position option. But you have
+ to\MessageBreak
+ use only one from `o' or `u' not two of
+ these.\MessageBreak
+ If you'll continue only first vpos option will be
+ used}%
+ \fi}}
+% \end{macrocode}
+% \end{macro}%\iffalse\set@preamble@vpos\fi
+% \end{macro}%\iffalse\set@@@@preamble\fi
+% \end{macro}%\iffalse\set@@@preamble\fi
+% \end{macro}%\iffalse\set@@preamble\fi
+% \end{macro}%\iffalse\set@preamble\fi
+%
+%
+% \begin{macro}{\dictum}
+% \changes{v2.8q}{2001/20/04}{Neu}
+% \changes{v2.9l}{2003/01/28}{\cs{edef} durch \cs{def} ersetzt}
+% \changes{v2.9q}{2004/04/19}{zur Vermeidung von Problemen durch
+% \cs{raggeddictum} Gruppe eingef"ugt}
+% \begin{macro}{\dictumwidth}
+% \changes{v2.8q}{2001/20/04}{Neu}
+% \begin{macro}{\raggeddictum}
+% \changes{v2.8q}{2001/20/04}{Neu}
+% \begin{macro}{\raggeddictumtext}
+% \changes{v2.8q}{2001/20/04}{Neu}
+% \begin{macro}{\raggeddictumauthor}
+% \changes{v2.8q}{2001/20/04}{Neu}
+% \begin{macro}{\@dictumfont}
+% \changes{v2.8q}{2001/20/04}{Neu}
+% \begin{macro}{\scr@fnt@dictumtext}
+% \changes{v2.8q}{2001/20/04}{Neu}
+% \begin{macro}{\scr@fnt@instead@dictum}
+% \changes{v2.8q}{2001/20/04}{Neu}
+% \begin{macro}{\@dictumauthorfont}
+% \changes{v2.8q}{2001/20/04}{Neu}
+% \begin{macro}{\scr@fnt@dictumauthor}
+% \changes{v2.8q}{2001/20/04}{Neu}
+% \begin{macro}{\dictumauthorformat}
+% \changes{v2.8q}{2001/20/04}{Neu}
+% Ein \emph{dictum} ist ein Spruch. Er besteht aus dem Spruch selbst
+% und verf"ugt optional "uber einen Autor, der dann mit einer Linie
+% abgetrennt wird. Gibt es keinen Autor, gibt es auch keine Linie. Die
+% Schriften f"ur Autor und Spruch k"onnen getrennt voneinander
+% eingestellt werden. Die Anordnung des Spruchs wird durch
+% \cs{raggeddictumtext} gesetzt. Die des Autors durch
+% \cs{raggeddictumauthor}. Die Formatierung selbst geschieht mit dem
+% Makro \cs{dictumauthorformat}. Vordefiniert ist, den Namen des
+% Autors in
+% runde Klammern zu setzen. Die gesamte Geschichte von Text und Autor
+% wird in eine Box der Breite \cs{dictumwidth} gepackt. Diese wird mit
+% \cs{raggeddictum} angeordnet.
+% \begin{macrocode}
+\newcommand{\dictum}[2][]{\par%
+ \begingroup
+ \raggeddictum\parbox{\dictumwidth}{%
+ {\@dictumfont{\raggeddictumtext #2\strut\par}%
+ \def\@tempa{#1}\ifx\@tempa\@empty\else%
+ {\raggeddictumtext\vskip-1ex\hrulefill\par}%
+ \raggeddictumauthor\@dictumauthorfont\dictumauthorformat{#1}%
+ \strut\par%
+ \fi%
+ }%
+ }\par%
+ \endgroup
+}
+\newcommand*{\dictumwidth}{.3333\textwidth}
+\newcommand*{\raggeddictum}{\raggedleft}
+\newcommand*{\dictumauthorformat}[1]{(#1)}
+\newcommand*{\raggeddictumtext}{\raggedright}
+\newcommand*{\raggeddictumauthor}{\raggedleft}
+\newcommand*{\@dictumfont}{\normalfont\normalcolor\sffamily\small}
+\newcommand*{\@dictumauthorfont}{\itshape}
+\newcommand*{\scr@fnt@dictumtext}{\@dictumfont}
+\newcommand*{\scr@fnt@dictumauthor}{\@dictumauthorfont}
+\newcommand*{\scr@fnt@instead@dictum}{dictumtext}
+% \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}{\setchapterpreamble}
+% \changes{v2.7b}{2001/01/05}{Neu}
+% \changes{v2.8p}{2001/09/25}{Verwendung von \cs{set@preamble}}
+% \begin{macro}{\chapter@u@preamble}
+% \changes{v2.8p}{2001/09/25}{Neu}
+% \changes{v2.8p}{2001/09/25}{Ersatz f"ur \cs{chapter@preamble}}
+% \begin{macro}{\chapter@o@preamble}
+% \changes{v2.8p}{2001/09/25}{Neu}
+% Diese Makros werden ben"otigt, um die Kapitel-Pr"aambel zu setzen
+% bzw. zu speichern. Leider kann an dieser Stelle \emph{nicht}
+% |\renewcommand*| verwendet werden, weil das Makros unbedingt global
+% definiert werden mu"s.
+% \begin{macrocode}
+\newcommand*{\setchapterpreamble}{\set@preamble{chapter}}
+\newcommand*{\chapter@u@preamble}{}
+\let\chapter@u@preamble\relax
+\newcommand*{\chapter@o@preamble}{}
+\let\chapter@o@preamble\relax
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\setpartpreamble}
+% \changes{v2.8f}{2001/07/12}{Neu}
+% \changes{v2.8p}{2001/09/27}{Verwendung von \cs{use@preamble}}
+% \begin{macro}{\part@preamble@u}
+% \changes{v2.8p}{2001/09/27}{Ersatz f"ur \cs{part@preamble}}
+% \begin{macro}{\part@preamble@o}
+% \changes{v2.8p}{2001/09/27}{Neu}\
+% Analog gibt es Befehle f"ur eine Teil-Pr"aambel. Hier wird aber
+% direkt mit |\relax| gearbeitet.
+% \begin{macrocode}
+\newcommand*{\setpartpreamble}{\set@preamble{part}}
+\newcommand*{\part@preamble@u}{}
+\let\part@preamble@u\relax
+\newcommand*{\part@preamble@o}{}
+\let\part@preamble@o\relax
+%</scrreprt|scrbook>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\addchap}
+% \changes{v2.0e}{1994/08/10}{\cs{sectdef} durch \cs{secdef} ersetzt.}
+% \changes{v2.0e}{1994/08/10}{\cs{addcontensline} durch
+% \cs{addcontentsline} ersetzt.}
+% \changes{v2.0e}{1994/08/10}{\cs{chaptermark} durch
+% \cs{markboth} ersetzt.}
+% \changes{v2.0e}{1994/10/12}{\cs{markboth} durch \cs{chaptermark}
+% ersetzt.}
+% \changes{v2.0e}{1994/08/10}{\cs{@makechapterhead} durch
+% \cs{@makeschapterhead} ersetzt.}
+% \changes{v2.0e}{1994/08/10}{\cs{afterheadings} durch
+% \cs{@afterheading} ersetzt.}
+% \changes{v2.1a}{1994/10/29}{Argument von \cs{chaptermark} entfernt bei
+% "`scrbook"'.}
+% \changes{v2.0e}{1994/10/12}{Mehrfach \cs{markboth} durch
+% \cs{sectionmark} ersetzt.}
+% \changes{v2.2b}{1995/03/20}{\cs{chaptermark} durch \cs{@mkboth}
+% ersetzt.}
+% \changes{v2.7a}{2001/01/04}{\cs{addsec} f"ur eine bessere
+% Unterst"utzung von \texttt{hyperref}
+% ge"andert}
+% \changes{v2.8d}{2001/07/05}{\cs{chapterpagestyle} statt \texttt{plain}}
+% \begin{macro}{\addsec}
+% \changes{v2.0e}{1994/10/12}{Mehrfach \cs{markboth} durch
+% \cs{sectionmark} ersetzt.}
+% \changes{v2.2b}{1995/03/20}{\cs{sectionmark} durch \cs{@mkboth}
+% ersetzt.}
+% \changes{v2.3h}{1995/01/21}{Jetzt auch bei scrbook und scrreprt.}
+% \changes{v2.4g}{1996/11/04}{\cs{section*} vorgezogen, damit dadurch
+% provozierte Seitenumbr"uche im
+% Inhaltsverzeichnis ber"ucksichtigt werden.}
+% \changes{v2.5d}{1998/01/03}{\cs{@mkboth} bedingt durch \cs{markright}
+% ersetzt.}
+% \begin{macro}{\@addsec}
+% \begin{macro}{\@saddsec}
+% \textsf{KOMA-Script} bietet in allen drei Hauptklassen den zus"atzlichen
+% Gliederungsbefehl |\addsec| und in \texttt{scrbook} und \texttt{scrreprt}
+% au"serdem |\addchap|. Es handelt sich dabei um mit |\section*| bzw.
+% |\chapter*| vergleichbare Befehle, bei denen jedoch der Kolumnentitel
+% korrigiert und ein Eintrag ins Inhaltsverzeichnis erfolgt (nicht in der
+% Stern-Variante).
+% \begin{macrocode}
+\newcommand*\addsec{\secdef\@addsec\@saddsec}
+\newcommand*{\@addsec}{}
+\def\@addsec[#1]#2{\section*{#2}\addcontentsline{toc}{section}{#1}
+%<scrartcl> \if@twoside \@mkboth{#1}{}\else \@mkboth{#1}{#1}\fi}
+%<scrreprt|scrbook> \if@twoside\ifx\@mkboth\markboth\markright{#1}\fi\fi}
+\newcommand*{\@saddsec}[1]{\section*{#1}\@mkboth{}{}}
+%<*scrreprt|scrbook>
+% \end{macrocode}
+% Die Definition von \cs{addcap} sah bis zu Version 2.7 so aus:
+% \begin{verbatim}
+% \newcommand\addchap{\if@openright\cleardoublepage\else\clearpage\fi
+% \thispagestyle{plain}%
+% \global\@topnum\z@
+% \@afterindentfalse
+% \secdef\@addchap\@saddchap}
+% \def\@addchap[#1]#2{\typeout{#2}
+% \addcontentsline{toc}{chapter}{#1}
+% \if@twoside\@mkboth{#1}{}\else\@mkboth{}{#1}\fi
+% \addtocontents{lof}{\protect\addvspace{10\p@}}%
+% \addtocontents{lot}{\protect\addvspace{10\p@}}%
+% \if@twocolumn
+% \@topnewpage[\@makeschapterhead{#2}]%
+% \else
+% \@makeschapterhead{#2}%
+% \@afterheading
+% \fi}
+% \def\@saddchap#1{\@mkboth{}{}
+% \if@twocolumn
+% \@topnewpage[\@makeschapterhead{#1}]%
+% \else
+% \@makeschapterhead{#1}%
+% \@afterheading
+% \fi}
+% \end{verbatim}
+% Dies f"uhrte jedoch zu Problemen im Zusammenhang mit
+% \texttt{hyperref}, da hierbei keine korrekten Links erzeugt
+% werden. Mit dem \texttt{hypertex}-Treiber werden auch in der neuen
+% Version keine korrekten Links erzeugt. Dies wird von mir jedoch als
+% Bug in \texttt{hyperref 6.69c} betrachtet. Mit dem
+% \texttt{hpdftex}-Treiber werden n"amlich im Gegensatz dazu korrekte
+% Links erzeugt. Deshalb wurde der Code wie folgt vereinfacht. Von
+% wesentlicher Bedeutung ist dabei der Aufruf von \cs{chapter*}, da in
+% \texttt{hpdftex.def} das interne Makro \cs{@schapter} so umdefiniert
+% wird, da"s ein korrekter Link erzeugt wird.
+% \begin{macro}{\@addchap}
+% \begin{macro}{\@saddchap}
+% \begin{macrocode}
+\newcommand\addchap{\if@openright\cleardoublepage\else\clearpage\fi
+ \thispagestyle{\chapterpagestyle}%
+ \global\@topnum\z@
+ \@afterindentfalse
+ \secdef\@addchap\@saddchap%
+}
+\newcommand*{\@addchap}{}
+\def\@addchap[#1]#2{\@schapter{#2}%
+ \addcontentsline{toc}{chapter}{#1}%
+ \if@twoside\@mkboth{#1}{}\else\@mkboth{}{#1}\fi}
+\newcommand*{\@saddchap}[1]{\@schapter{#1}\@mkboth{}{}}
+% \end{macrocode}
+% In \texttt{hyperref} zumindest bis Version 6.71a ist ein dicker Bug. In
+% verschiedenen \texttt{def}-Dateien wird dort das \emph{interne}
+% \textsf{KOMA-Script} Makro |\@addchap| umdefiniert, ohne sicherzustellen,
+% da"s das Makro auch noch so aussieht, wie man das erwartet hat. Die
+% sauberste L"osung w"are sicher gewesen dort |\@addchap| nur zu erg"anzen,
+% so wie man das auch bei |\@schapter| gemacht hat. Ab Version 6.71b ist
+% dieser Bug behoben. Damit ich nicht eines Fehlers verd"achtigt werde,
+% wird ggf. eine entsorechende Meldung ausgegeben.
+% \changes{v2.7e}{2001/04/16}{Fehlende, schlie"sende Klammer erg"anzt}
+% \changes{v2.7f}{2001/04/17}{Fehlendes Klammerpaar erg"anzt}
+% \changes{v2.8q}{2001/11/17}{\cs{AfterPackage} zur "Uberpr"ufung der
+% \texttt{hyperref}-Version verwendet}
+% \begin{macrocode}
+%<*scrbook>
+\AfterPackage{hyperref}{%
+ \@ifpackagelater{hyperref}{2001/02/19}{}{%
+ \ClassWarningNoLine{scrbook}{%
+ You are using an old version of hyperref package!\MessageBreak%
+ This version has a buggy hack at many drivers\MessageBreak%
+ causing \string\addchap\space to behave strange.\MessageBreak%
+ Please update hyperref to at least version
+ 6.71b}}}
+%</scrbook>
+%</scrreprt|scrbook>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\section}
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@section} aufgerufen}
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt
+% einen Bug im color Paket}
+% \changes{v2.9q}{2004/04/26}{noch vor \cs{raggedsection} wird
+% \cs{parfillskip} unendlich dehnbar}
+% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf
+% \texttt{\cs{z@} plus 1fil} ge"andert}
+% \begin{macro}{\subsection}
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@subsection} aufgerufen}
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt
+% einen Bug im color Paket}
+% \changes{v2.9q}{2004/04/26}{noch vor \cs{raggedsection} wird
+% \cs{parfillskip} unendlich dehnbar}
+% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf
+% \texttt{\cs{z@} plus 1fil} ge"andert}
+% \begin{macro}{\subsubsection}
+% \changes{v2.3d}{1995/08/19}{wird bei \texttt{scrartcl}
+% nun ebenfalls numeriert und ins Inhaltsverzeichnis geschrieben}
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@subsubsection} aufgerufen}
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt
+% einen Bug im color Paket}
+% \changes{v2.9q}{2004/04/26}{noch vor \cs{raggedsection} wird
+% \cs{parfillskip} unendlich dehnbar}
+% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf
+% \texttt{\cs{z@} plus 1fil} ge"andert}
+% \begin{macro}{\paragraph}
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@paragraph} aufgerufen}
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt
+% einen Bug im color Paket}
+% \changes{v2.9q}{2004/04/26}{noch vor \cs{raggedsection} wird
+% \cs{parfillskip} unendlich dehnbar}
+% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf
+% \texttt{\cs{z@} plus 1fil} ge"andert}
+% \begin{macro}{\subparagraph}
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@subparagraph} aufgerufen}
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt
+% einen Bug im color Paket}
+% \changes{v2.9q}{2004/04/26}{noch vor \cs{raggedsection} wird
+% \cs{parfillskip} unendlich dehnbar}
+% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf
+% \texttt{\cs{z@} plus 1fil} ge"andert}
+% Die Standardgliederungsbefehle |\section| bis |\subparagraph| sind
+% mit der im Kernel daf"ur vorgesehenen Schnittstelle definiert. Im
+% Unterschied zu den Standardklassen erfolgt die Formatierung jedoch
+% in |\raggedsection| und der Schriftart |\sectfont|. Au"serdem sind
+% die Gr"o"sen ver"anderbar. In letzter Konsequenz sollten hier
+% eigentlich auch die Abst"ande variabilisiert werden. Vielleicht in
+% einer sp"ateren Version.
+% \begin{macrocode}
+\newcommand\section{\@startsection{section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\setlength{\parfillskip}{\z@ \@plus 1fil}%
+ \raggedsection\normalfont\sectfont\nobreak\size@section\nobreak}}
+\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\setlength{\parfillskip}{\z@ \@plus 1fil}%
+ \raggedsection\normalfont\sectfont\nobreak\size@subsection\nobreak}}
+\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\setlength{\parfillskip}{\z@ \@plus 1fil}%
+ \raggedsection\normalfont\sectfont\nobreak\size@subsubsection\nobreak}}
+\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\setlength{\parfillskip}{\z@ \@plus 1fil}%
+ \raggedsection\normalfont\sectfont\nobreak\size@paragraph\nobreak}}
+\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\setlength{\parfillskip}{\z@ \@plus 1fil}%
+ \raggedsection\normalfont\sectfont\nobreak\size@subparagraph\nobreak}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{minisec}
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
+% behebt einen Bug im color Paket nicht ganz}
+% \changes{v2.9o}{2003/01/31}{\cs{nobreak} nach dem Gruppenende
+% behebt einen Bug im color Paket}
+% In \textsf{KOMA-Script} gibt es diese zus"atzliche Gliederungsebene, die
+% immer ohne Nummer und ihne Eintrag ins Inhaltsverzeichnis erfolgt.
+% \begin{macrocode}
+\newcommand\minisec[1]{\@afterindentfalse \vskip 1.5ex
+ {\parindent \z@
+ \raggedsection\normalfont\sectfont\nobreak#1\par\nobreak}\nobreak
+ \@afterheading}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sectionragged}
+% \changes{v2.3h}{1996/01/20}{"Uberschriften werden \cs{raggedsection}
+% gesetzt.}
+% \changes{v2.3h}{1996/01/20}{\cs{raggedsection} ist als \cs{raggedright}
+% voreingestellt.}
+\let\raggedsection\raggedright
+% \end{macro}
+%
+% \begin{macrocode}
+%</!scrlettr>
+% \end{macrocode}
+%
+%
+% \subsection{Listen-Umgebungen}
+%
+% \subsection{Array, Tabellen, Tabulatoren, Rahmen}
+% \begin{Length}{arraycolsep}
+% \begin{Length}{tabcolsep}
+% \begin{Length}{arrayrulewidth}
+% \begin{Length}{doublerulewidth}
+% \begin{Length}{tabbingsep}
+% \begin{Length}{@mpfootins}
+% \begin{Length}{fboxsep}
+% \begin{Length}{fboxrule}
+% \begin{macrocode}
+\setlength\arraycolsep{5\p@}
+\setlength\tabcolsep{6\p@}
+\setlength\arrayrulewidth{.4\p@}
+\setlength\doublerulesep{2\p@}
+\setlength\tabbingsep{\labelsep}
+\setlength{\skip\@mpfootins}{\skip\footins}
+\setlength\fboxsep{3\p@}
+\setlength\fboxrule{.4\p@}
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+%
+% \subsubsection{Gleichungen}
+%
+% \begin{macro}{\theequation}
+% \begin{macrocode}
+%<!scrartcl&!scrlettr>\@addtoreset{equation}{chapter}
+\renewcommand*\theequation{%
+%<!scrartcl&!scrlettr> \thechapter.%
+ \@arabic\c@equation}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{R"ander}
+%
+% \begin{Length}{leftmargini}
+% \begin{Length}{leftmarginii}
+% \begin{Length}{leftmarginiii}
+% \begin{Length}{leftmarginiv}
+% \begin{Length}{leftmarginv}
+% \begin{Length}{leftmarginvi}
+% \begin{Length}{leftmargin}
+% \begin{Length}{labelsep}
+% \begin{Length}{labelwidth}
+% F"ur die Listenumgebungen in verschiedenen Stufen m"ussen R"ander
+% definiert werden.
+% \begin{macrocode}
+\if@twocolumn
+ \setlength{\leftmargini}{2em}
+\else
+ \setlength{\leftmargini}{2.5em}
+\fi
+\setlength{\leftmarginii}{2.2em}
+\setlength{\leftmarginiii}{1.87em}
+\setlength{\leftmarginiv}{1.7em}
+\if@twocolumn
+ \setlength{\leftmarginv}{.5em}
+ \setlength{\leftmarginvi}{.5em}
+\else
+ \setlength{\leftmarginv}{1em}
+ \setlength{\leftmarginvi}{1em}
+\fi
+\setlength{\leftmargin}{\leftmargini}
+\setlength{\labelsep}{.5em}
+\setlength{\labelwidth}{\leftmargini}
+\addtolength{\labelwidth}{-\labelsep}
+\@beginparpenalty=-\@lowpenalty
+\@endparpenalty =-\@lowpenalty
+\@itempenalty =-\@lowpenalty
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+%
+%
+% \subsubsection{Marken}
+%
+% F"ur die numerierten Listenumgebungen m"ussen Marken bzw. Numerierungen
+% festgelegt werden.
+% \begin{macro}{\theenumi}
+% \begin{macro}{\theenumii}
+% \begin{macro}{\theenumiii}
+% \begin{macro}{\theenumiv}
+% \begin{macro}{\labelenumi}
+% \begin{macro}{\labelenumii}
+% \changes{v2.4m}{1997/02/28}{"Offnende Klammer gem"a"s Doku entfernt.}
+% \begin{macro}{\labelenumiii}
+% \begin{macro}{\labelenumiv}
+% \begin{macro}{\p@enumii}
+% \begin{macro}{\p@enumiii}
+% \begin{macro}{\p@enumiv}
+% \begin{macro}{\labelitemi}
+% \changes{v2.5g}{1999/10/09}{Mathemodus eliminiert.}
+% \begin{macro}{\labelitemii}
+% \changes{v2.5g}{1999/10/09}{\cs{textendash} verwendet.}
+% \begin{macro}{\labelitemiii}
+% \changes{v2.5g}{1999/10/09}{Mathemodus eliminiert.}
+% \begin{macro}{\labelitemiv}
+% \changes{v2.5g}{1999/10/09}{Mathemodus eliminiert.}
+% \begin{macrocode}
+\renewcommand*\theenumi{\@arabic\c@enumi}
+\renewcommand*\theenumii{\@alph\c@enumii}
+\renewcommand*\theenumiii{\@roman\c@enumiii}
+\renewcommand*\theenumiv{\@Alph\c@enumiv}
+\newcommand*\labelenumi{\theenumi.}
+\newcommand*\labelenumii{\theenumii)}
+\newcommand*\labelenumiii{\theenumiii.}
+\newcommand*\labelenumiv{\theenumiv.}
+\renewcommand*\p@enumii{\theenumi}
+\renewcommand*\p@enumiii{\p@enumii(\theenumii)}
+\renewcommand*\p@enumiv{\p@enumiii\theenumiii}
+\newcommand*\labelitemi{\textbullet}
+\newcommand*\labelitemii{\normalfont\bfseries\textendash}
+\newcommand*\labelitemiii{\textasteriskcentered}
+\newcommand*\labelitemiv{\textperiodcentered}
+% \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}
+%
+%
+% \subsubsection{Definition der Umgebungen}
+%
+% \begin{environment}{description}
+% Die |description|-Umgebung dient der Beschreibung von einzelnen
+% Begriffen. Der Begriff aus dem optionalen Argument des |\item|-Befehls
+% wird in einem speziellen Font, dem |descfont|, gesetzte.
+% \begin{macrocode}
+\newenvironment{description}
+ {\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+ {\endlist}
+\newcommand*{\descriptionlabel}[1]{\hspace\labelsep
+ \descfont #1}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{labeling}
+% Die |labeling|-Umgebung ist eine Erweiterung des \textsf{Script} Pakets.
+% Sie erwartet ein optionales und ein normales Argument. Das optionale
+% Argument beschreibt einen speziellen Trenntext zwischen |\item|-Marke und
+% |\item|-Beschreibung. Das eigentliche Argument wird f"ur die Ermittlung
+% der Einr"uckung des Beschreibungstextes bzw. des Trenntextes ben"otigt.
+% \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}
+% \end{environment}
+%
+% \changes{v2.1a}{1994/10/29}{\texttt{abstract}-Environment verschoben.}
+% \begin{environment}{verse}
+% \changes{v2.3g}{1996/01/14}{\cs{item} mu"s keine "`[]"'-Klammern mehr
+% verarbeiten.}
+% Die Verse-Umgebung ist f"ur Zitate in Gedichtform und "ahnliches gedacht.
+% \begin{macrocode}
+\newenvironment{verse}
+ {\let\\=\@centercr
+ \list{}{\itemsep \z@
+ \itemindent -1.5em%
+ \listparindent\itemindent
+ \rightmargin \leftmargin
+ \advance\leftmargin 1.5em}%
+ \item\relax}
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{quotation}
+% \changes{v2.3g}{1996/01/14}{\cs{item} mu"s keine "`[]"'-Klammern mehr
+% verarbeiten.}
+% \begin{environment}{quote}
+% \changes{v2.3g}{1996/01/14}{\cs{item} mu"s keine "`[]"'-Klammern mehr
+% verarbeiten.}
+% Die |quotation|- und die |quote|-Umgebung erlauben rechts und links
+% einger"uckte Passagen. Abs"atze werden entweder in der ersten Zeile
+% zus"atzlich einger"uckt oder durch vertikalen Abstand markiert.
+% \begin{macrocode}
+\newenvironment{quotation}
+ {\list{}{\listparindent 1em%
+ \itemindent \listparindent
+ \rightmargin \leftmargin
+ \parsep \z@ \@plus\p@}%
+ \item\relax}
+ {\endlist}
+\newenvironment{quote}
+ {\list{}{\rightmargin\leftmargin}%
+ \item\relax}
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \begin{environment}{addmargin}
+% \changes{v2.8q}{2001/11/29}{Neue Umgebung}
+% \begin{environment}{addmargin*}
+% \changes{v2.8q}{2001/11/29}{Neue Umgebung}
+% \changes{v2.9a}{2002/06/27}{\cs{if@thispageodd} durch
+% \cs{ifthispageodd} ersetzt}
+% Diese beiden Umgebungen "ahneln |quote| und |quotation|. Dabei
+% werden Absatzeinzug und Absatzabstand nicht ver"andert. Die einzige
+% Ver"anderung besteht in den R"andern. Wie stark die R"ander
+% ver"andert werden, h"angt dabei von den Parametern ab. Ist nur der
+% obligatorische Parameter angegeben, werden die R"ander auf beiden
+% Seiten um diesen Wert vergr"o"sert. Ist ein optionaler Parameter
+% angegeben, so ist dies bei |addmargin| der linke und bei
+% |addmargin*| der innere Rand. Der obligatorische Parameter ist dann
+% der andere Rand. Diese Entscheidung ist das einzige, was die
+% Umgebungen selbst erledigen m"ussen.
+% \begin{macro}{\@addmargin}
+% \changes{v2.8q}{2001/11/29}{Neu}
+% \changes{v2.9q}{2003/03/24}{\cs{labelsep} bleibt unver"andert}
+% Der Rest wird von diesem Makro erledigt.
+% \begin{macrocode}
+\newenvironment{addmargin}{%
+ \@tempswafalse\@addmargin
+ }{\endlist}
+\newenvironment{addmargin*}{%
+ \@tempswafalse
+ \if@twoside\ifthispageodd{}{\@tempswatrue}\fi
+ \@addmargin
+ }{\endlist}
+\newcommand*{\@addmargin}[2][\@tempa]{%
+ \@tempcnta=\@listdepth
+ \list{}{%
+ \if@tempswa
+ \def\@tempa{\leftmargin}%
+ \setlength{\leftmargin}{#2}%
+ \setlength{\rightmargin}{#1}%
+ \else
+ \def\@tempa{\rightmargin}%
+ \setlength{\rightmargin}{#2}%
+ \setlength{\leftmargin}{#1}%
+ \fi
+ \setlength{\listparindent}{\parindent}%
+ \setlength{\itemsep}{\parskip}%
+ \setlength{\itemindent}{\z@}%
+ \setlength{\topsep}{\z@}%
+ \setlength{\parsep}{\parskip}%
+ \setlength{\partopsep}{\parskip}%
+ \let\makelabel\@gobble
+ \setlength{\labelwidth}{\z@}
+ \@listdepth=\@tempcnta%
+ }%
+ \item[]%
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{environment}
+% \end{environment}
+%
+%
+% \subsection{Abstract (Zusammenfassung)}
+% \begin{environment}{abstract}
+% |scrartcl| und |scrreprt| bieten die M"oglichkeit einer Zusammenfassung,
+% eines sogenannten Abstracts. Wenn eine Titelseite verlangt wurde,
+% wird auch die Zusammenfassung auf eine eigene Seite gesetzt.
+%
+% |scrbook| kennt kein Abstract.
+% \changes{v2.3a}{1995/07/08}{\cs{@endparpenalty} zur Verhinderung eines
+% Seitenumbruchs nach dem Abstract-Kopf
+% eingef"ugt.}
+% \changes{v2.3g}{1996/01/14}{\cs{@beginparpenalty} zur Verhinderung eines
+% Seitenumbruchs vor dem Abstract-Kopf
+% eingef"ugt.}
+% \changes{v2.7a}{2001/01/04}{Statt \cs{section*} wird nun \cs{addsec*}
+% verwendet, damit die Kolumnentitel korrekt
+% behandelt werden.}
+% \begin{macrocode}
+%<*!scrbook&!scrlettr>
+\if@titlepage
+ \newenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \@beginparpenalty\@lowpenalty
+ \if@abstrt
+ \begin{center}
+ \normalfont\sectfont\nobreak\abstractname
+ \@endparpenalty\@M
+ \end{center}\fi}
+ {\par\vfil\null\endtitlepage}
+\else
+ \newenvironment{abstract}{%
+ \if@twocolumn\if@abstrt
+ \addsec*{\abstractname}\fi%
+ \else
+ \if@abstrt
+ \small
+ \begin{center}%
+ {\normalfont\sectfont\nobreak\abstractname
+ \vspace{-.5em}\vspace{\z@}}%
+ \end{center}\fi%
+ \quotation
+ \fi}
+ {\if@twocolumn\else\endquotation\fi}
+\fi
+%</!scrbook&!scrlettr>
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Umgebung f"ur die Titelseite}
+%
+% \begin{environment}{titlepage}
+% Die Titelseite bedarf ebenfalls einer gesonderter Umgebung. Beim
+% zweispaltigen Layout soll die Titelseite z.\,B. einspaltig gedruckt
+% werden. Briefe kennen keine Titelseiten also auch nicht diese
+% Umgebung.
+% \begin{macrocode}
+%<*!scrlettr>
+\newenvironment{titlepage}
+ {%
+%<!scrartcl> \cleardoublepage
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+ \if@compatibility
+ \setcounter{page}{0}
+ \fi}%
+ {\if@restonecol\twocolumn \else \newpage \fi
+ }
+%</!scrlettr>
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Randmarkierung}
+% \begin{macro}{\marginline}
+% Das \textsf{Script} Paket stellt zus"atzlich ein Randzeilenmakro zur
+% Verf"ugung, das je nach gerader oder ungerader Seite in doppelseitigen
+% Layout rechts- oder linksb"undig gesetzt werden mu"s.
+% \changes{v2.4l}{1997/02/06}{Die Definition mit Hilfe des optionalen
+% Parameters von \cs{marginpar} deutlich
+% vereinfacht.}
+% \changes{v2.8q}{2001/11/27}{Fehlende Klammern erg"anzt}
+% \begin{macrocode}
+\newcommand\marginline[1]{\marginpar[\raggedleft{#1}]{\raggedright #1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Anhang}
+% \begin{macro}{\appendix}
+% Wird der Anhang aktiviert, so werden Kapitel zuk"unftig mit Buchstaben
+% "`numeriert"'. Briefe kennen keinen Anhang.
+% \changes{v2.2d}{1995/05/28}{\texttt{scrartcl} ben"otigt keinen Z"ahler
+% f"ur chapter.}
+% \changes{v2.3c}{1995/08/06}{Alternative Numerierung bei Verwendung
+% eines Anhangs.}
+% \changes{v2.8}{2001/06/15}{\cs{appendixmore} wird beachtet}
+% \changes{v2.8e}{2001/07/10}{\cs{@altsecnumformattrue} wird nicht
+% l"anger ausgef"uhrt}
+% \changes{v2.8o}{2001/09/19}{\cs{par} eingef"ugt}
+% \begin{macrocode}
+%<*!scrlettr>
+\newcommand*\appendix{\par%
+%<*scrartcl>
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+ \renewcommand*\thesection{\@Alph\c@section}%
+%</scrartcl>
+%<*scrreprt|scrbook>
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \renewcommand*\@chapapp{\appendixname}%
+ \renewcommand*\thechapter{\@Alph\c@chapter}%
+%</scrreprt|scrbook>
+ \@ifundefined{appendixmore}{}{\appendixmore}}
+%</!scrlettr>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Flie"sumgebungen}
+%
+% Briefe kennen keine Flie"sumgebungen
+% \begin{macrocode}
+%<*!scrlettr>
+% \end{macrocode}
+%
+% F"ur die Flie"sumgebungen m"ussen verschiedene Konstanten definiert
+% werden, die Aufteilung zwischen Text und Flie"sumgebung und
+% "ahnliches regeln.
+%
+% \begin{environment}{figure}
+% \changes{v2.2c}{1995/05/25}{Abbildungsausgabe auf CJK umgestellt.}
+% \changes{v2.8h}{2001/07/19}{\cs{caption} wird explizit zu
+% \cs{captionbelow}}
+% Zun"achst werden "`figures"', also Abbildungen behandelt.
+% \begin{Counter}{figure}
+% \begin{macro}{\thefigure}
+% Daf"ur wird ein neuer Z"ahler ben"otigt, der bei der Buch- und der
+% Bericht-Klasse mit \cs{chapter} zur"uckgesetzt wird.
+% \begin{macro}{\fps@figure}
+% Die Standardplatzierung f"ur Abbildungen ist \emph{t}op,
+% \emph{b}ottom, \emph{p}age.
+% \begin{macro}{\ftype@figure}
+% Um die verschiedenen \emph{float}-Typen unterscheiden zu k"onnen,
+% ben"otigen sie eine Nummer. Abbildungen bekommen hier willk"urlich
+% die Nummer 1.
+% \begin{macro}{\ext@figure}
+% Die Extension der Datei f"ur das Verzeichnis.
+% \begin{macro}{\fnum@figure}
+% Die Ausgabe der Abbildungsnummer.
+% \begin{macrocode}
+%<!scrartcl>\newcounter{figure}[chapter]
+%<scrartcl>\newcounter{figure}
+\renewcommand*\thefigure{%
+%<!scrartcl> \thechapter.%
+ \@arabic\c@figure}
+\newcommand*{\fps@figure}{tbp}
+\newcommand*{\ftype@figure}{1}
+\newcommand*{\ext@figure}{lof}
+\newcommand*{\fnum@figure}{\figureformat}
+\newenvironment{figure}
+ {\let\caption\captionbelow\@float{figure}}
+ {\end@float}
+\newenvironment{figure*}
+ {\let\caption\captionbelow\@dblfloat{figure}}
+ {\end@dblfloat}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \end{environment}
+%
+% \begin{environment}{table}
+% \changes{v2.2c}{1995/05/25}{Tabellenausgabe auf CJK umgestellt.}
+% \changes{v2.8h}{2001/07/19}{Bei Tabellen kann der Default f"ur
+% \cs{caption} von Unter- auf
+% "Uberschriften ge"andert werden}
+% Auch verschiebbare Tabellen sind m"oglich.
+% \begin{Counter}{table}
+% \begin{macro}{\thetable}
+% \begin{macro}{\fps@table}
+% \begin{macro}{\ftype@table}
+% \begin{macro}{\ext@table}
+% \begin{macro}{\fnum@table}
+% Die einzelnen Makros
+% daf"ur werden entsprechend denen f"ur Abbildungen definiert.
+% \begin{macrocode}
+%<scrartcl>\newcounter{table}
+%<!scrartcl>\newcounter{table}[chapter]
+\renewcommand*\thetable{%
+%<!scrartcl> \thechapter.%
+ \@arabic\c@table}
+\newcommand*{\fps@table}{tbp}
+\newcommand*{\ftype@table}{2}
+\newcommand*{\ext@table}{lot}
+\newcommand*{\fnum@table}{\tableformat}
+\newenvironment{table}
+ {\if@tablecaptionabove\let\caption\captionabove%
+ \else\let\caption\captionbelow\fi\@float{table}}
+ {\end@float}
+\newenvironment{table*}
+ {\if@tablecaptionabove\let\caption\captionabove%
+ \else\let\caption\captionbelow\fi\@dblfloat{table}}
+ {\end@dblfloat}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \end{environment}
+%
+%
+% \begin{macro}{\ifthispageodd}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% \changes{v2.9l}{2002/03/28}{stabilisiert}
+% H"aufig wird mit |\ifodd\value{page}| getestet, ob man sich gerade
+% auf einer rechten oder einer linken Seite befindet. Dummerweise
+% funktioniert das aber genaugenommen nur zuf"allig manchmal. Ob man
+% sich auf einer linken oder einer rechten Seite befindet, ergibt sich
+% n"amlich erst bei der Ausgabe. Deshalb wird hier ein Makro
+% definiert, das "uber eine Art Label-Mechanismus arbeitet. Es werden
+% bewusst keine echten |\label| und |\pageref| verwendet, weil diese
+% Befehle von verschiedenen Paketen manipuliert werden.
+%
+% \begin{macro}{\new@tpo@label}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% Definition eines neuen \emph{true}-\emph{page}-\emph{odd}
+% Labels. Wird in der \texttt{aux}-Datei verwendet.
+% \begin{macrocode}
+\newcommand*{\new@tpo@label}[2]{%
+ \expandafter\gdef\csname scr@tpo@#1\endcsname{#2}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ref@tpo@label}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% Dieses Makro referenziert ein \emph{true}-\emph{page}-\emph{odd}
+% Label. Ist das Label nicht definiert, so wird stattdessen the
+% aktuelle Seitenzahl verwendet.
+% \begin{macrocode}
+\newcommand*{\ref@tpo@label}[1]{%
+ \expandafter\ifx\csname scr@tpo@#1\endcsname\relax\value{page}%
+ \else\csname scr@tpo@#1\endcsname\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scr@tpo}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% Es wird ein Z"ahler ben"otigt, der die aktuelle Nummer der Anfrage
+% beinhaltet.
+% \begin{macrocode}
+\newcommand*{\scr@tpo}{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\is@thispageodd}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% \changes{v2.9l}{2003/01/28}{renamed \cs{if@thispageodd}}
+% Dieses Makro macht die eigentliche Arbeit. Es funktioniert wie ein
+% normales \cs{iffalse} oder \cs{iftrue}. Da "uber die
+% \texttt{aux}-Datei gearbeitet wird, funktioniert das Ganze nur, wenn
+% die Datei auch geschrieben wird und min. zwei \LaTeX-L"aufe
+% erfolgen.
+% \begin{macrocode}
+\newcommand*{\is@thispageodd}{%
+ \begingroup%
+ \@tempcnta=\scr@tpo%
+ \advance\@tempcnta by\@ne%
+ \xdef\scr@tpo{\the\@tempcnta}%
+ \@bsphack
+ \protected@write\@auxout{}{%
+ \string\new@tpo@label{\scr@tpo}{\noexpand\the\value{page}}}%
+ \@esphack
+ \count@\ref@tpo@label{\scr@tpo}\relax
+ \ifodd\count@
+ \aftergroup\thispagewasoddtrue
+ \else
+ \aftergroup\thispagewasoddfalse
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% Damit wenigstens halbwegs getestet werden kann, ob ein neuer Lauf
+% durchgef"uhrt werden muss, wird hier noch eine weitere Information
+% in die \texttt{aux}-Datei geschrieben und auch gleich der
+% entsprechende Test vorgenommen.
+% \begin{macrocode}
+\AtEndDocument{%
+ \if@filesw\immediate\write\@auxout{%
+ \string\gdef\string\scr@tpo@lst{\scr@tpo}}\fi%
+ \ifx\scr@tpo@lst\scr@tpo\else\ifnum \scr@tpo>0
+ \ClassWarningNoLine{%
+%<scrbook> scrbook%
+%<scrreprt> scrreprt%
+%<scrartcl> scrartcl%
+ }{Rerun to get odd- an even-page-stuff right}%
+ \fi\fi
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifthispagewasodd}
+% \changes{v2.9l}{2003/01/20}{neuer Schalter}
+% \begin{macro}{\thispagewasoddtrue}
+% \begin{macro}{\thispagewasoddfalse}
+% Dieser Schalter speichert auf Rolf Niepraschks speziellen Wunsch die
+% letzte Entscheidung von \cs{ifthispageodd}. Vor dem ersten
+% \cs{ifthispageodd} ist der Zustand undefiniert. Es ist auch nicht
+% garantiert, dass die Entscheidung noch zutreffend ist.
+% \begin{macrocode}
+\newif\ifthispagewasodd
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Nun fehlt nur noch das eigentliche oben versprochene
+% Anwendermacro. Das ist nun aber auch kein Problem mehr:
+% \begin{macrocode}
+\newcommand{\ifthispageodd}{%
+ \is@thispageodd
+ \ifthispagewasodd
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\caption}
+% \changes{v2.2c}{1995/05/25}{Flie"stitel auf CJK umgestellt.}
+% Es ist m"oglich, die Flie"sumgebungen mit einem Titel und einer
+% Beschreibung zu versehen. Diese wird vom ggf. etwas abgesetzt.
+% \begin{Length}{abovecaptionskip}
+% \begin{Length}{belowcaptionskip}
+% Um wieviel ist in zwei L"angenregistern gespeichert:
+% \begin{macrocode}
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+\setlength\abovecaptionskip{10\p@}
+\setlength\belowcaptionskip{0\p@}
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+% \begin{macro}{\if@captionabove}
+% \changes{v2.8h}{2001/07/19}{Neu}
+% Ob es sich um eine Unter- oder "Uberschrift handelt und also
+% \cs{abovecaptionskip} davor und \cs{belowcaptionskip} danach steht
+% oder umgekehrt, wird "uber diesen Schalter gesteuert. Voreingestellt
+% sind Unterschriften.
+% \begin{macrocode}
+\newif\if@captionabove\@captionabovefalse
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@caption}
+% \changes{v2.8h}{2001/07/19}{Neu}
+% \begin{macro}{\captionabove}
+% \changes{v2.8h}{2001/07/19}{Neu}
+% \begin{macro}{\captionbelow}
+% \changes{v2.8h}{2001/07/19}{Neu}
+% Damit "uberhaupt zwischen Unter- und "Uberschriften unterschieden
+% werden kann, muss zun"achst das Originalmakro gesichert werden. Dies
+% geschieht erst zu Beginn des Dokuments, damit Pakete ggf. noch ihre
+% eigenen Definitionen von \cs{caption} vornehmen k"onnen. Das
+% \texttt{hyperref}-Paket ist so ein Kandidat.
+% \begin{macrocode}
+\newcommand{\scr@caption}{}
+\AtBeginDocument{\let\scr@caption\caption}
+% \end{macrocode}
+% \end{macro}
+% Jetzt ist es m"oglich durch einfaches Umlegen des Schalters f"ur die
+% korrekte Darstellung zu sorgen:
+% \begin{macrocode}
+\newcommand{\captionabove}{\@captionabovetrue\scr@caption}
+\newcommand{\captionbelow}{\@captionabovefalse\scr@caption}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{environment}{captionbeside}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% Um einiges komplizierter als die Beschreibung unter oder "uber die
+% Tabelle oder Abbildung zu setzen, ist der Versuch, sie daneben zu
+% setzen. Dies funktioniert frunds"atzlich auch nicht mit
+% \texttt{longtable}-Tabellen.
+%
+% \begin{macro}{\scap@pos}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% Hier wird gespeichert, ob die Beschreibung links oder rechts vom
+% Rest stehen soll. Voreingestellt ist rechts davon.
+% \begin{macrocode}
+\newcommand*{\scap@pos}{r}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scap@valign}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% Hier wird gespeichert, ob die beiden Boxen (siehe Definition der
+% Umgebung) \emph{\textbf{t}op}, \emph{\textbf{b}ottem} oder
+% \emph{\textbf{c}enter} ausgerichtet werden sollen. Andere Buchstaben
+% sind nicht erlaubt. Voreingestellt ist \emph{\textbf{b}ottem}.
+% \begin{macrocode}
+\newcommand*{\scap@valign}{b}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scap@caption}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% Die Beschreibung, die der Umgebung als Parameter "ubergeben wird,
+% muss zwischengespeichert werden. Hier wird lediglich das Makro
+% daf"ur reserviert.
+% \begin{macrocode}
+\newcommand*{\scap@caption}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scap@width}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% Die Breite, die Tabelle bzw. Abbildung einschlie"slich Beschreibung
+% und insgesamt haben d"urften. Voreingestellt ist die gesamte
+% verf"ugbare Breite.
+% \begin{macrocode}
+\newcommand*{\scap@width}{\linewidth}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scap@move}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% Der Wert, um den die Tabelle bzw. Abbildung einschlie"slich
+% Beschreibung nach rechts bzw. au"sen verschoben
+% werden. Voreingestellt ist keine Verschiebung.
+% \begin{macrocode}
+\newcommand*{\scap@move}{\z@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scap@currentlabel}
+% \changes{v2.8q}{2001/11/24}{Neu}
+% Das |\caption| innerhalb einer Umgebung (|\parbox| und
+% |captionbeside|) aufgerufen wird, w"urde ein |\label|, das zwar
+% innerhalb der Gleitumgebung aber nach der |captionbeside|-Umgebung
+% eingef"ugt wird, nicht die Gleitumgebung, sondern die umgebende
+% Referenzebene referenzieren. Damit das nicht geschieht, wird in der
+% |captionbeside|-Umgebung in der |\parbox| die aktuelle Referenz
+% |\@currentlabel| in dem globalen Makro |\scap@currentlabel|
+% zwischengespeichert und am Ende der |captionbeside|-Umgebung mit
+% Hilfe von |\aftergroup| nach dem Ende der Umgebung
+% wiederhergestellt. Da die |captionbeside|-Umgebung ohnehin nicht
+% geschaltelt werden kann, funktioniert das problemlos. F"ur diese
+% Aktion wird hier ein globales Makro reserviert.
+% \begin{macrocode}
+\newcommand*{\scap@currentlabel}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifscap@alt}
+% \changes{v2.8q}{2001/11/22}{Neuer Schalter}
+% \begin{macro}{\scap@alttrue}
+% \begin{macro}{\scap@altfalse}
+% Der Schalter, der angibt, ob die Verschiebung |\scap@move| im
+% doppelseitigen Modus aus linken Seiten vom rechten Rand aus nach
+% links erfolgen soll.
+% \begin{macrocode}
+\newif\ifscap@alt
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@captionbeside}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% \begin{macro}{\@@captionbeside}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% \begin{macro}{\@@@captionbeside}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% \begin{macro}{\@@@@captionbeside}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% Die Umgebung soll einmal folgende Parameter besitzen:
+% \begin{description}
+% \item[(optional)] Verzeichniseintrag
+% \item[(obligatorisch)] Beschreibung
+% \item[(optional)] lokaler Wert f"ur |\scap@pos|
+% \item[(optional)] lokaler Wert f"ur |\scap@width|
+% \item[(optional)] lokaler Wert f"ur |\scap@move|
+% \item[(*)] lokaler Wert f"ur \cs{ifscap@alt} (Stern gesetzt
+% entspricht |\scap@alttrue|
+% \end{description}
+% Wie man sieht, sollte man bei Angabe aller optionalen Parameter auch
+% bewusst den Stern setzen oder darauf verzichten.
+%
+% Damit alle Parameter ausgewertet werden k"onnen, werden einige
+% Hilfsmakros ben"otigt.
+% \begin{macrocode}
+\newcommand*{\@captionbeside}{}
+\long\def\@captionbeside[#1]#2{%
+ \@ifnextchar [%]
+ {\@@captionbeside[{#1}]{#2}}
+ {\c@pti@nb@sid@[{#1}]{#2}}%
+ }
+\newcommand*{\@@captionbeside}{}
+\long\def\@@captionbeside[#1]#2[#3]{%
+ \def\scap@pos{#3}%
+ \@ifnextchar [%]
+ {\@@@captionbeside[{#1}]{#2}}
+ {\c@pti@nb@sid@[{#1}]{#2}}%
+ }
+\newcommand*{\@@@captionbeside}{}
+\long\def\@@@captionbeside[#1]#2[#3]{%
+ \def\scap@width{#3}%
+ \@ifnextchar [%]
+ {\@@@@captionbeside[{#1}]{#2}}
+ {\setlength{\@tempdima}{#3}%
+ \addtolength{\@tempdima}{-\linewidth}%
+ \setlength{\@tempdima}{-.5\@tempdima}%
+ \edef\scap@move{\the\@tempdima}%
+ \c@pti@nb@sid@[{#1}]{#2}}%
+ }
+\newcommand*{\@@@@captionbeside}{}
+\long\def\@@@@captionbeside[#1]#2[#3]{%
+ \def\scap@move{#3}%
+ \@ifstar
+ {\scap@alttrue\c@pti@nb@sid@[{#1}]{#2}}
+ {\scap@altfalse\c@pti@nb@sid@[{#1}]{#2}}%
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\c@pti@nb@sid@b@x}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% Es wird noch eines der kostbaren Boxregister ben"otigt.
+% \begin{macrocode}
+\newbox\c@pti@nb@sid@b@x
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@pti@nb@sid@}
+% \changes{v2.8q}{2001/11/22}{Neu}
+% Hier wird nun die Umgebung eigentlich ge"offnet, w"ahrend zuvor nur
+% die Parameter ausgewertet wurden.
+% \begin{macrocode}
+\newcommand{\c@pti@nb@sid@}{}
+\long\def\c@pti@nb@sid@[#1]#2{%
+ \def\scap@caption{\captionbelow[{#1}]{#2}}%
+ \begin{lrbox}{\c@pti@nb@sid@b@x}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% Jetzt endlich k"onnen wir uns auf die Umgebung st"urzen. Die
+% Umgebung zu starten ist einfach. Es wird ein Doppelargumentmakro
+% ausgef"uhrt.
+% \begin{macrocode}
+\newenvironment*{captionbeside}{%
+ \@dblarg\@captionbeside%
+ }{%
+% \end{macrocode}
+% Komplizierter ist die Beendigung der Umgebung. Hier f"allt der
+% gesamte Satzaufwand an.
+% \changes{v2.9a}{2002/06/27}{\cs{if@thispageodd} durch
+% \cs{ifthispageodd} ersetzt}
+% \begin{macrocode}
+ \end{lrbox}%
+ \settowidth{\@tempdima}{\usebox\c@pti@nb@sid@b@x}%
+ \setlength{\@tempdimb}{\scap@width}%
+ \addtolength{\@tempdimb}{-\@tempdima}%
+ \addtolength{\@tempdimb}{-\columnsep}%
+ \ifdim \@tempdimb<2em
+ \ClassWarning{%
+%<scrbook> scrbook%
+%<scrreprt> scrreprt%
+%<scrartcl> scrartcl%
+ }{%
+ caption beside will be very, very small.\MessageBreak
+ In most cases this will result in overfull and
+ underfull\MessageBreak
+ \string\hbox\space messages%
+ }%
+ \fi%
+ \onelinecaptionsfalse
+ \setcapwidth[r]{\@tempdimb}%
+ \let\@tempa\scap@pos
+ \setlength{\@tempdimc}{\scap@move}%
+ \if i\scap@pos\def\@tempa{l}\fi
+ \if o\scap@pos\def\@tempa{r}\fi
+ \if@twoside
+ \ifthispageodd{}{%
+ \if o\scap@pos\def\@tempa{l}\fi
+ \if i\scap@pos\def\@tempa{r}\fi
+ \ifscap@alt
+ \addtolength{\@tempdimc}{\scap@width}%
+ \addtolength{\@tempdimc}{-\linewidth}%
+ \setlength{\@tempdimc}{-\@tempdimc}%
+ \fi
+ }%
+ \fi
+ \hspace*{\@tempdimc}%
+% \end{macrocode}
+% \changes{v2.9p}{2002/12/10}{\cs{@temdima} replaced by
+% \cs{wd}\cs{c@pti@nb@sid@b@x}, because \cs{@temdima} would be changed}
+% \begin{macrocode}
+ \if l\@tempa%
+ \rlap{%
+ \parbox[\scap@valign]{\@tempdimb}{\scap@caption
+ \global\let\scap@currentlabel\@currentlabel}%
+ \nobreak\hskip\columnsep%
+ \parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}%
+ }%
+ \else
+ \rlap{%
+ \parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}%
+ \nobreak\hskip\columnsep%
+ \parbox[\scap@valign]{\@tempdimb}{\scap@caption
+ \global\let\scap@currentlabel\@currentlabel}%
+ }%
+ \fi
+ \par
+ \aftergroup\let\aftergroup\@currentlabel\aftergroup\scap@currentlabel
+ }
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \begin{macro}{\@makecaption}
+% \changes{v2.3a}{1995/07/08}{\cs{setbox}\cs{tempboxa}\cs{hbox} durch
+% \cs{sbox}\cs{@tempboxa} ersetzt.}
+% \changes{v2.3a}{1995/07/08}{Minipage-Flag zur"uckgesetzt (ist das ok?).}
+% \changes{v2.3f}{1995/12/09}{Fontumschaltung einheitlich f"ur lange und
+% kurze Unter-/"Uberschriften.}
+% \changes{v2.5g}{1999/10/09}{Neben den komplett h"angenden
+% Unter-/"Uberschriften sind nun auch nicht
+% h"angende oder teilweise h"angende m"oglich.}
+% Bis Version 2.5f sah die Definition wie folgt aus.
+% \begin{verbatim}
+% \long\def\@makecaption#1#2{%
+% \vskip\abovecaptionskip
+% \sbox\@tempboxa{{\caplabelfont #1\captionformat}{\capfont #2}}%
+% \ifdim \wd\@tempboxa >\hsize
+% \@hangfrom{{\caplabelfont #1\captionformat}}{\capfont #2\par}
+% \else
+% \global \@minipagefalse
+% \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+% \fi
+% \vskip\belowcaptionskip}
+% \end{verbatim}
+% \begin{macro}{\ifdofullc@p}
+% Nun jedoch wird das ganze etwas komplizierter. Als erstes wird ein
+% Schalter ben"otigt, der angibt, ob auf die volle L"ange des
+% "`Labels"' eingezogen werden soll, oder nicht:
+% \begin{macrocode}
+\newif\ifdofullc@p
+% \end{macrocode}
+% wobei die Standardeinstellung der volle Einzug ist, um zum bisherigen
+% Verhalten kompatibel zu bleiben.
+% \begin{macrocode}
+\dofullc@ptrue
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\if@capbreak}
+% \changes{v2.8j}{2001/07/30}{Neu}
+% Au"serdem gibt es einen Schalter, der angibt, ob nach dem Label ein
+% Umbruch erfolgen soll. Dies ist normalerweise nicht der Fall.
+% \begin{macrocode}
+\newif\if@capbreak\@capbreakfalse
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\setcapindent}
+% \changes{v2.8j}{2001/07/30}{\cs{if@capbreak} wird verwendet}
+% \changes{v2.8l}{2001/08/17}{\cs{edef}\cs{cap@indent} statt
+% \cs{def}\cs{cap@indent}}
+% \changes{v2.8q}{2001/11/17}{wird nach dem Laden von
+% \texttt{caption2} umdefiniert}
+% Dann wird weiter ein Befehl ben"otigt, mit dem der Benutzer die
+% Weite des Einzugs selbst einstellen kann. Da intern f"ur die Weite
+% ein Makro verwendet werden soll, findet hier sicherheitshalber eine
+% Zuweisung an eine Dimension statt. So sollten Fehlermeldungen hier
+% und nicht erst bei Verwendung auftauchen. Nat"urlich mu"s hier auch
+% der automatische Einzug abgeschaltet werden. In der Sternform wird
+% au"serdem daf"ur gesorgt, da"s zwischen "`Label"' und Beschreibung
+% ein Umbruch erfolgt. In der normalen Version wird stattdessen f"ur
+% Kompatibilit"at zu fr"uheren Versionen gesorgt.
+% \begin{macro}{\@setcapindent}
+% \begin{macro}{\@@setcaptindent}
+% F"ur die Implementierung der Sternform werden zwei interne Makros
+% ben"otigt.
+% \begin{macrocode}
+\newcommand*{\setcapindent}{\@ifstar{\@@setcapindent}{\@setcapindent}}
+\newcommand*{\@setcapindent}[1]{
+ \setlength{\@tempdima}{#1}%
+ \ifdim\@tempdima>\hsize\addtolength{\@tempdima}{-\hsize}\@capbreaktrue
+ \else\@capbreakfalse\fi
+ \edef\cap@indent{\the\@tempdima}
+ \dofullc@pfalse
+}
+\newcommand*{\@@setcapindent}[1]{
+ \setlength{\@tempdima}{#1}%
+ \edef\cap@indent{\the\@tempdima}
+ \dofullc@pfalse\@capbreaktrue
+}
+\AfterPackage{caption2}{%
+ \renewcommand*{\setcapindent}{%
+ \ClassWarning{%
+%<scrbook> scrbook%
+%<scrreprt> scrreprt%
+%<scrartcl> scrartcl%
+ }{%
+ You're using package caption2.\MessageBreak
+ Because of this you should also use \string\captionstyle\space
+ and\MessageBreak
+ set length \string\captionindent\space instead if
+ using\MessageBreak
+ \string\setcapindent
+ }
+ \captionstyle{indent}%
+ \@ifstar{\setlength{\captionindent}}{\setlength{\captionindent}}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\setcaphanging}
+% \changes{v2.8q}{2001/11/17}{wird nach dem Laden von
+% \texttt{caption2} umdefiniert}
+% Andererseits soll es auch m"oglich sein, nachtr"aglich wieder den
+% automatischen Einzug einzuschalten. Daf"ur gibt es ein weiteres Makro.
+% \begin{macrocode}
+\newcommand*{\setcaphanging}{\dofullc@ptrue\@capbreakfalse}
+\AfterPackage{caption2}{%
+ \renewcommand*{\setcaphanging}{%
+ \ClassWarning{%
+%<scrbook> scrbook%
+%<scrreprt> scrreprt%
+%<scrartcl> scrartcl%
+ }{%
+ You're using package caption2.\MessageBreak
+ Because of this you should also use \string\captionstyle\MessageBreak
+ instead of \string\setcaphang
+ }
+ \captionstyle{hang}}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% Nun aber zur neuen Definition der "Uber-/Unterschriften. Zun"achst geht
+% alles wie gehabt.
+% \changes{v2.5g}{1999/10/09}{\cs{@makecaption} per \cs{newcommand}
+% definiert statt mit \cs{long}\cs{def}.}
+% \changes{v2.8h}{2001/07/19}{Unterscheidung zwischen "Uber- und
+% Unterschriften}
+% \changes{v2.8j}{2001/07/30}{\cs{@makecaption} verwendet
+% \cs{@@makecaption}}
+% \changes{v2.8q}{2001/11/17}{die Sonderbehandlung f"ur einzeilige
+% \emph{caption}s ist abschaltbar}
+% \changes{v2.8q}{2001/11/17}{\emph{caption}s k"onnen in ihrer Breite
+% beschr"ankt werden}
+% \changes{v2.9q}{2004/01/30}{fehlendes \texttt{\%} eingef"ugt}
+% \begin{macrocode}
+\newcommand{\@makecaption}[2]{%
+ \if@captionabove\vskip\belowcaptionskip\else\vskip\abovecaptionskip\fi
+ \@@makecaption\@firstofone{#1}{#2}%
+ \if@captionabove\vskip\abovecaptionskip\else\vskip\belowcaptionskip\fi}
+% \end{macrocode}
+% \begin{macro}{\@@makecaption}
+% Tats"achlich gesetzt wird die "Uber- bzw. Unterschrift mit diesem
+% Makro. Dabei muss der erste Parameter entweder \verb|\@gobble| oder
+% \verb|\@firstofone| sein.
+%
+% \begin{macro}{\cap@width}
+% \changes{v2.8q}{2001/11/17}{Neues internes Makro}
+% \begin{macro}{\cap@left}
+% \changes{v2.8q}{2001/11/17}{Neues internes Makro}
+% \begin{macro}{\cap@right}
+% \changes{v2.8q}{2001/11/17}{Neues internes Makro}
+% Die Breite der mehrzeiligen bzw. die maximale Breite der einzeiligen
+% \emph{caption}s sowie das Makro das links und rechts von der Box mit
+% der mehrzeiligen \emph{caption} aufgerufen wird. In der
+% Voreinstellung wird f"ur Zentrierung gesorgt.
+% \begin{macrocode}
+\newcommand*{\cap@width}{\hsize}
+\newcommand*{\cap@left}{\hfill}
+\newcommand*{\cap@right}{\hfill}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\setcapwidth}
+% \changes{v2.8q}{2001/11/17}{Neue}
+% \changes{v2.9a}{2002/06/27}{\cs{if@thispageodd} durch
+% \cs{ifthispageodd} ersetzt}
+% \changes{v2.9l}{2003/01/28}{\cs{edef}\cs{@tempb} durch
+% \cs{def}\cs{@tempb} ersetzt}
+% Hier wird |\cap@width| gesetzt. Dabei werden optional auch
+% |\cap@left| und |\cap@right| angepasst.
+% \begin{macrocode}
+\newcommand*{\setcapwidth}[2][]{%
+ \begingroup%
+ \setlength{\@tempdima}{#2}%
+ \edef\@tempa{\endgroup\def\noexpand\cap@width{\the\@tempdima}}%
+ \@tempa%
+ \begingroup
+ \expandafter\def\expandafter\@tempa\expandafter{#1}%
+ \def\@tempb{c}\ifx\@tempa\@tempb
+ \endgroup%
+ \def\cap@margin{\let\cap@left=\hfill\let\cap@right=\hfill}%
+ \else
+ \def\@tempb{l}\ifx\@tempa\@tempb
+ \endgroup%
+ \def\cap@margin{\let\cap@left=\relax\let\cap@right\hfill}%
+ \else
+ \def\@tempb{r}\ifx\@tempa\@tempb
+ \endgroup%
+ \def\cap@margin{\let\cap@left=\hfill\let\cap@right=\relax}%
+ \else
+ \def\@tempb{i}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{%
+ \let\cap@left=\relax
+ \let\cap@right=\hfill
+ \if@twoside
+ \ifthispageodd{}{%
+ \let\cap@left=\hfill
+ \let\cap@right=\relax
+ }%
+ \fi
+ }%
+ \else
+ \def\@tempb{o}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{%
+ \let\cap@left=\hfill
+ \let\cap@right=\relax
+ \if@twoside
+ \ifthispageodd{}{%
+ \let\cap@left=\relax
+ \let\cap@right=\hfill
+ }%
+ \fi
+ }%
+ \else
+ \ifx \@tempa\@empty\else
+ \ClassError{%
+%<scrbook> scrbook%
+%<scrreprt> scrreprt%
+%<scrartcl> scrartcl%
+ }{%
+ unknown optional position argument%
+ }{%
+ You've used `#1' as position argument at
+ \string\setcaptionwidth,\MessageBreak
+ but only ONE of `c', `l', `r', `i`, `o` ist
+ allowed.\MessageBreak
+ Argument will be ignored, if you'll continue.%
+ }%
+ \fi%
+ \endgroup%
+ \fi\fi\fi\fi\fi%
+ }
+% \end{macrocode}
+% Falls |caption2| geladen wird, "andert sich die Funktion. Das
+% optionale Argument wird dann ignorriert.
+% \begin{macrocode}
+\AfterPackage{caption2}{%
+ \renewcommand*{\setcapwidth}[2][]{%
+ \ClassWarning{%
+ scrbook%
+ }{%
+ Ignorring optional argument of \string\setcapwidth!\MessageBreak
+ You're using package caption2.\MessageBreak
+ Because of this you should also use
+ \string\setcaptionwidth\MessageBreak
+ instead of \string\setcapwidth\MessageBreak
+ }
+ \setcaptionwidth{#2}}}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\cap@margin}
+% \changes{v2.8q}{2001/11/17}{Neues internes Makro}
+% Dieses Makro beinhaltet nicht den Wert der R"ander, sondern das
+% Makro, mit dem innerhalb von |\@@makecaption| die Makros |\cap@left|
+% und |\cap@right| neu definiert werden. Dies geschieht nur, wenn die
+% R"ander mit |\setcapmargin| gesetzt werden. Vordefiniert ist also
+% keinerlei Aktion.
+% \begin{macrocode}
+\newcommand*{\cap@margin}{}
+\let\cap@margin=\relax%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\setcapmargin}
+% \changes{v2.8q}{2001/11/17}{Neue}
+% \begin{macro}{\@setcapmargin}
+% \changes{v2.8q}{2001/11/17}{Neue}
+% \changes{v2.9a}{2002/06/27}{\cs{if@thispageodd} durch
+% \cs{ifthispageodd} ersetzt}
+% \begin{macro}{\@@setcapmargin}
+% \changes{v2.8q}{2001/11/17}{Neue}
+% Statt die Breite der \emph{caption} zu setzen, k"onnen auch die
+% R"ander gesetzt werden. In der Sternvariante werden im zweiseitigen
+% Modus die R"ander auf linken Seiten vertauscht.
+% \begin{macrocode}
+\newcommand*{\setcapmargin}{\@ifstar{\@setcapmargin}{\@@setcapmargin}}
+\newcommand*{\@setcapmargin}[2][\@tempdimb]{%
+ \def\cap@margin{%
+ \onelinecaptionsfalse%
+ \begingroup%
+ \setlength{\@tempdima}{\hsize}%
+ \setlength{\@tempdimb}{#2}%
+ \addtolength{\@tempdima}{-\@tempdimb}%
+ \setlength{\@tempdimc}{#1}%
+ \addtolength{\@tempdima}{-\@tempdimc}%
+ \edef\@tempa{\endgroup%
+ \def\noexpand\cap@width{\the\@tempdima}%
+ \noexpand\if@twoside%
+ \noexpand\ifthispageodd{%
+ \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}%
+ \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}%
+ }{%
+ \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimc}}%
+ \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimb}}%
+ }%
+ \noexpand\else%
+ \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}%
+ \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}%
+ \noexpand\fi}
+ \@tempa}%
+ }
+\newcommand*{\@@setcapmargin}[2][\@tempdimb]{%
+ \def\cap@margin{%
+ \onelinecaptionsfalse%
+ \begingroup%
+ \setlength{\@tempdima}{\hsize}%
+ \setlength{\@tempdimb}{#2}%
+ \addtolength{\@tempdima}{-\@tempdimb}%
+ \setlength{\@tempdimc}{#1}%
+ \addtolength{\@tempdima}{-\@tempdimc}%
+ \edef\@tempa{\endgroup%
+ \def\noexpand\cap@width{\the\@tempdima}%
+ \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}%
+ \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}}%
+ \@tempa}%
+ }
+% \end{macrocode}
+% Wenn |caption2| geladen ist, "andert sich die Bedeutung.
+% \begin{macrocode}
+\AfterPackage{caption2}{%
+ \renewcommand*{\@setcapmargin}[2][\@tempdimb]{%
+ \setlength{\@tempdimb}{#2}%
+ \setlength{\@tempdima}{#1}%
+ \ifdim\@tempdima\@tempdimb\else
+ \ClassWarning{%
+ scrbook%
+ }{%
+ Can set only centered caption!\MessageBreak
+ You're using package caption2.\MessageBreak
+ Because of this you should also use
+ \string\setcaptionmargin\MessageBreak
+ instead of \string\setcapmargin
+ }
+ \fi
+ \addtolength{\@tempdimb}{\@tempdimb}%
+ \setcaptionmargin{.5\@tempdimb}}
+ \let\@@setcapmargin=\@setcapmargin
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Jetzt aber zum Eigentlichen. Die Breite der \emph{caption} muss nur
+% bestimmte werden, wenn |onelinecaption| verwendet wird. Das bedeutet
+% auch, dass bei |noonelinecaption| das Problem mit dem Hochz"ahlen
+% der Fu"snoten nicht auftritt.
+% \changes{v2.8q}{2002/05/17}{Das Problem mit doppelten Fu"snoten behoben.}
+% \changes{v2.9q}{2004/01/30}{\cs{vbox} durch \cs{vtop} ersetzt}
+% \changes{v2.9q}{2004/01/30}{\cs{strut} vor \cs{cap@left} und nach
+% \cs{cap@right} eingef"ugt}
+% \begin{macrocode}
+\newcommand{\@@makecaption}[3]{%
+ \cap@margin%
+ \ifonelinecaptions%
+ \@tempcnta=\value{mpfootnote}\@tempcntb=\value{footnote}%
+ \let\scr@tmp@footnotetext=\@footnotetext
+ \let\@footnotetext=\@gobble
+ \sbox\@tempboxa{%
+ {\capfont#1{{\caplabelfont#2\captionformat}}%
+ #3}%
+ }%
+ \let\@footnotetext=\scr@tmp@footnotetext
+ \let\scr@tmp@footnotetext=\undefined
+ \setcounter{footnote}{\@tempcntb}\setcounter{mpfootnote}{\@tempcnta}%
+ \else
+ \sbox\@tempboxa{\hspace*{2\cap@width}}%
+ \fi
+ \begingroup%
+ \setlength{\@tempdima}{\wd\@tempboxa}%
+ \setlength{\@tempdima}{\cap@width}%
+ \ifdim \wd\@tempboxa >\@tempdima%
+ \strut\cap@left%
+ \vtop{\hsize=\cap@width%
+% \end{macrocode}
+% Im Fall, da"s nun also mehrzeilig gesetzt werden mu"s, ist zu
+% unterscheiden, ob wie bisher voll h"angend gearbeitet werden soll
+% oder nicht. In ersterem Fall machen wir das, wie bisher, allerdings
+% wird der \cs{capfont} fr"uher aktiviert, damit darin auch globale
+% Gr"o"sen"anderungen f"ur die "Uber/Unterschrift Platz
+% finden. Au"serdem wird die die ge"anderte Parameter"ubergabe
+% ber"ucksichtigt.
+% \begin{macrocode}
+ \ifdofullc@p
+ {\capfont\@hangfrom{#1{{\caplabelfont#2\captionformat}}}{#3\par}}
+% \end{macrocode}
+% Im zweiten Fall ist nun zu unterscheiden, ob nach dem Label ein
+% Umbruch erfolgen soll oder nicht. Dabei ist der Einzug zu beachten.
+% Ist der Einzug negativ, so findet ebenfalls ein Umbruch statt und
+% nur die erste Folgezeile wird eingezogen.
+% \begin{macrocode}
+ \else%
+ \ifdim\cap@indent<\z@%
+ {\capfont#1{{\caplabelfont #2\captionformat\par}}\noindent%
+ \hspace*{-\cap@indent}#3\par}
+ \else%
+ \if@capbreak
+ {\capfont#1{{\caplabelfont #2\captionformat\par}}\noindent%
+ \@hangfrom{\hspace*{\cap@indent}}{#3\par}}
+ \else
+ {\capfont\@hangfrom{\hspace*{\cap@indent}}%
+ {\hspace{-\cap@indent}#1%
+ {{\caplabelfont#2\captionformat}}#3\par}}
+ \fi
+ \fi
+ \fi}%
+ \cap@right\strut%
+ \else
+% \end{macrocode}
+% \changes{v2.9r}{2004/06/11}{\cs{@tempboxa} neu erzeugen}
+% \begin{macrocode}
+ \global \@minipagefalse
+ \sbox\@tempboxa{%
+ {\capfont#1{{\caplabelfont#2\captionformat}}%
+ #3}%
+ }%
+ \hb@xt@\hsize{\cap@left\box\@tempboxa\cap@right}%
+ \fi%
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\LT@makecaption}
+% \changes{v2.8j}{2001/07/30}{Neu}
+% \changes{v2.8k}{2001/08/15}{Keine Umdefinierung, wenn das
+% \texttt{caption2}-Paket erkannt oder die Option \texttt{origlongtable}
+% gesetzt wurde}
+% \changes{v2.8q}{2001/11/18}{Breite und Anordnung wird "uber
+% \textsf{KOMA-Script}-Makros bestimmt}
+% \changes{v2.8q}{2001/11/18}{Verwendung von \cs{AfterPackage}}
+% \changes{v2.9s}{2004/08/11}{vertikale Ausrichtung korrigiert}
+% \begin{macro}{\LT@array}
+% \changes{v2.8q}{2001/11/18}{Neu}
+% \begin{macro}{\LT@caption}
+% \changes{v2.8q}{2001/11/18}{Neu}
+% Ab Version 2.8j wird auf vielfachen Wunsch das
+% \texttt{longtable}-Paket ber"ucksichtigt. Da Pakete aber nach
+% Klassen geladen werden, kann dies erst nach dem Laden des Pakets
+% aktiviert werden. Die Definition entspricht der obigen. Wird das
+% |caption2|-Paket nach |longtable| geladen, so wird automatisch die
+% Definition von |caption2| verwendet. Wird |caption2| vor |longtable|
+% geladen, so liegt voraussichtlich eine Fehlbedienung vor, auf die
+% hingewiesen wird.
+% \begin{macrocode}
+\AfterPackage{longtable}{%
+ \@ifpackageloaded{caption2}{\@komalongtablefalse%
+ \ClassWarning{%
+%<scrbook> scrbook}{%
+%<scrreprt> scrreprt}{%
+%<scrartcl> scrartcl}{%
+ you've loaded package caption2 before package\MessageBreak
+ longtable!\MessageBreak
+ Because of this package caption2 isn't able to
+ control\MessageBreak
+ \string\caption\space at longtables. After loading package
+ caption2\MessageBreak
+ KOMA-Script also doesn't control \string\caption.\MessageBreak
+ I think, you should load package caption2 after
+ package\MessageBreak
+ longtable%
+ }}{}
+ \if@komalongtable
+ \renewcommand{\LT@makecaption}[3]{%
+ \noalign{%
+ \if@captionabove
+ \vskip\belowcaptionskip
+ \else
+ \vskip\abovecaptionskip
+ \fi
+ }%
+ \LT@mcol\LT@cols c{%
+ \hbox to\z@{\hss\parbox[t]\linewidth{%
+ \@@makecaption{#1}{#2}{#3}%
+ \endgraf
+ \if@captionabove
+ \vskip\abovecaptionskip
+ \else
+ \vskip\belowcaptionskip
+ \fi
+ }%
+ \hss
+ }%
+ }%
+ }%
+ \newcommand*{\scr@LT@array}{}%
+ \let\scr@LT@array=\LT@array%
+ \renewcommand*{\LT@array}{%
+ \let\scr@caption=\LT@caption
+ \def\captionabove{\noalign{\global\@captionabovetrue}%
+ \scr@caption}%
+ \def\captionbelow{\noalign{\global\@captionabovefalse}%
+ \scr@caption}%
+ \if@tablecaptionabove
+ \let\LT@caption=\captionabove
+ \else
+ \let\LT@caption=\captionbelow
+ \fi
+ \scr@LT@array}
+ \ClassInfo{%
+%<scrbook> scrbook}{%
+%<scrreprt> scrreprt}{%
+%<scrartcl> scrartcl}{%
+ longtable captions redefined}
+ \fi
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fs@komaabove}
+% \changes{v2.8j}{2001/07/30}{Neu}
+% \begin{macro}{\fs@komabelow}
+% \changes{v2.8j}{2001/07/30}{Neu}
+% \begin{macro}{\floatc@komascript}
+% \changes{v2.8j}{2001/07/30}{Neu}
+% Ab Version 2.8j werden f"ur das \texttt{float}-Paket zwei float-Stile
+% Namens \texttt{komaabove} und \texttt{komabelow} definiert. Da
+% m"oglicherweise auch andere
+% Pakete darauf zur"uckgreifen, wird das unabh"angig von der Existenz
+% von \texttt{float} getan. Verwendet wird dies innerhalb von
+% KOMA-Script jedoch nicht. Es werden au"serdem interne Makros von
+% \texttt{float} verwendet!
+% \begin{macrocode}
+\newcommand*{\fs@komaabove}{%
+ \let\@fs@capt\floatc@komascript
+ \let\@fs@pre\@empty
+ \def\@fs@mid{\vskip\abovecaptionskip}
+ \let\@fs@post\@empty
+ \let\@fs@iftopcapt\iftrue}
+\newcommand*{\fs@komabelow}{%
+ \let\@fs@capt\floatc@komascript
+ \let\@fs@pre\@empty
+ \def\@fs@mid{\vskip\abovecaptionskip}
+ \let\@fs@post\@empty
+ \let\@fs@iftopcapt\iffalse}
+\newcommand{\floatc@komascript}{\@@makecaption\@firstofone}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</!scrlettr>
+% \end{macrocode}
+%
+%
+% \subsection{"`Alte"' Font-Auswahlbefehle}
+%
+% \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.2c}{1995/05/25}{nicht mehr mathematisch.}
+% \changes{v2.3a}{1995/07/08}{Keine Unterscheidung mehr f"ur den
+% Kompatibilit"atsmodus.}
+% Um die Umstellung von \LaTeX\ auf \LaTeXe\ zu erleichtern, gibt es
+% die alten Font-Auswahlbefehle |\rm|, |\sf|, |\tt|, |\bf|, |\it|, |\sl|
+% und |\sc| auch in den \emph{classes}. Es ist zu beachten, da"s diese
+% Befehle hier nach dem alten Fontauswahlverfahren arbeiten. Es werden
+% also immer alle Parameter zugleich ge"andert. Somit ist zu empfehlen,
+% da"s statt dieser Befehle zuk"unftig in der Regel die neuen
+% |\text..|-Befehle verwendet werden.
+%
+% Der aus der \textsf{Script 2.0}-Familie bekannte Befehl |\sfb| ist hier
+% ebenfalls definiert.
+% \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}
+%
+% \begin{macro}{\cal}
+% \changes{v2.3}{1995/06/25}{Der Befehl ist in \LaTeX nicht mehr definiert.
+% Deshalb wird er nun neu und gleich robust
+% deklariert. Daf"ur f"allt \cs{pcal} weg.}
+% \changes{v2.3g}{1996/01/14}{"Uberfl"ussige Klammerpaare entfernt.}
+% \begin{macro}{\mit}
+% \changes{v2.3}{1995/06/25}{Der Befehl ist in \LaTeX nicht mehr definiert.
+% Deshalb wird er nun neu und gleich robust
+% deklariert. Daf"ur f"allt \cs{pmit} weg.}
+% \changes{v2.3g}{1996/01/14}{"Uberfl"ussige Klammerpaare entfernt.}
+% Die beiden Befehle |\cal| und |\mit| war bis zur \LaTeX-Version vom
+% 1.12.1994 patch level 3 noch im Kernal definiert. Jetzt sind die beiden
+% den classes "uberlassen. Hier ist die Definition aus den Standard-classes
+% "ubernommen.
+% \begin{macrocode}
+\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
+\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Font-Variablen}
+% \begin{macro}{\descfont}
+% \begin{macro}{\sectfont}
+% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingef"ugt}
+% \begin{macro}{\pnumfont}
+% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingef"ugt}
+% \begin{macro}{\headfont}
+% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingef"ugt}
+% \begin{macro}{\capfont}
+% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingef"ugt}
+% \changes{v2.8n}{2001/09/06}{f"ur Briefe nicht l"anger definiert}
+% \begin{macro}{\caplabelfont}
+% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingef"ugt}
+% \changes{v2.8n}{2001/09/06}{f"ur Briefe nicht l"anger definiert}
+% \begin{macro}{\titlefont}
+% \changes{v2.8p}{2001/09/22}{Neu}
+% \begin{macro}{\subject@font}
+% \changes{v2.8q}{2002/01/14}{Neu}
+% \begin{macro}{\baddr@font}
+% \changes{v2.8q}{2002/01/22}{Neu}
+% Das \textsf{Script}-Paket definiert einige Font-Variablen, f"ur
+% verschiedene Gestaltungsbereiche wie "Uberschriften, Unterschriften oder
+% die Paginierung.
+% \begin{macrocode}
+\newcommand*\descfont{\sffamily\bfseries}
+\newcommand*\sectfont{\normalcolor\sffamily\bfseries}
+\newcommand*\pnumfont{\normalfont\normalcolor}
+\newcommand*\headfont{\normalfont\normalcolor\slshape}
+%<!scrlettr>\newcommand*\capfont{\normalfont\normalcolor}
+%<!scrlettr>\newcommand*\caplabelfont{\normalfont\normalcolor}
+\newcommand*\titlefont{\sectfont}
+%<scrlettr>\newcommand*{\subject@font}{\normalfont\normalcolor\bfseries}
+%<scrlettr>\newcommand*{\baddr@font}{\sffamily}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\setkomafont}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% Mit Hilfe dieses Makros kann die Schriftart von
+% KOMA-Script-Elementen gesetzt werden.
+% \begin{macrocode}
+\newcommand*{\setkomafont}[2]{%
+ \@ifundefined{scr@fnt@#1}{%
+ \@ifundefined{scr@fnt@instead@#1}{%
+ \ClassError{%
+%<scrartcl> scrartcl%
+%<scrreprt> scrreprt%
+%<scrbook> scrbook%
+%<scrlettr> scrlttr2%
+ }{font of element `#1' can't be set}{%
+ You've told me to redefine the font selection of the element,%
+ \MessageBreak%
+ but either no such element is known by KOMA-Script\MessageBreak
+ or the element does not use a special font selection}
+ }{%
+ \ClassError{%
+%<scrartcl> scrartcl%
+%<scrreprt> scrreprt%
+%<scrbook> scrbook%
+%<scrlettr> scrlttr2%
+ }{font of element `#1' can't be set}{%
+ You've told me to redefine the font selection of the element,%
+ \MessageBreak%
+ but the element does not use a special font
+ selection. The\MessageBreak
+ The font of `#1' may be changed with element `\csname
+ scr@fnt@instead@#1\endcsname'}
+ }%
+ }{%
+ \expandafter\expandafter\expandafter\renewcommand%
+ \csname scr@fnt@#1\endcsname{#2}%
+ \@ifundefined{scr@fnt@wrn@#1}{}{%
+ \ClassWarning{%
+%<scrartcl> scrartcl%
+%<scrreprt> scrreprt%
+%<scrbook> scrbook%
+%<scrlettr> scrlttr2%
+ }{\csname scr@fnt@wrn@#1\endcsname{#1}}
+ }
+ }
+}
+% \end{macrocode}
+% \begin{macro}{\addtokomafont}
+% \changes{v2.8p}{2001/09/22}{Neu}
+% Dieses Makro funktioniert fast wie obiges, allerdings f"ugt es der
+% vorhandenen Definition etwas an.
+% \begin{macro}{\l@addto@macro}
+% \changes{v2.8p}{2001/09/22}{Neu}
+% Damit dies lokal m"oglich ist, wird eine lokal arbeitende Variante
+% von \cs{g@addto@macro} ben"otigt, wie sie hier vorgestellt wird.
+% \begin{macrocode}
+\newcommand{\l@addto@macro}[2]{%
+ \begingroup%
+ \toks@\expandafter{#1#2}%
+ \edef\@tempa{\endgroup\def\noexpand#1{\the\toks@}}%
+ \@tempa}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\newcommand*{\addtokomafont}[2]{%
+ \@ifundefined{scr@fnt@#1}{%
+ \@ifundefined{scr@fnt@instead@#1}{%
+ \ClassError{%
+%<scrartcl> scrartcl%
+%<scrreprt> scrreprt%
+%<scrbook> scrbook%
+%<scrlettr> scrlttr2%
+ }{font of element `#1' can't be extended}{%
+ You've told me to extend the font selection of the element,%
+ \MessageBreak%
+ but either no such element is known by KOMA-Script\MessageBreak
+ or the element does not use a special font selection}
+ }{%
+ \ClassError{%
+%<scrartcl> scrartcl%
+%<scrreprt> scrreprt%
+%<scrbook> scrbook%
+%<scrlettr> scrlttr2%
+ }{font of element `#1' can't be extended}{%
+ You've told me to extend the font selection of the element,%
+ \MessageBreak%
+ but the element does not use a special font
+ selection. The\MessageBreak
+ The font of `#1' may be changed with element `\csname
+ scr@fnt@instead@#1\endcsname'}
+ }%
+ }{%
+ \expandafter\expandafter\expandafter\l@addto@macro%
+ \csname scr@fnt@#1\endcsname{#2}%
+ \@ifundefined{scr@fnt@wrn@#1}{}{%
+ \ClassWarning{%
+%<scrartcl> scrartcl%
+%<scrreprt> scrreprt%
+%<scrbook> scrbook%
+%<scrlettr> scrlttr2%
+ }{\csname scr@fnt@wrn@#1\endcsname{#1}}
+ }
+ }
+}
+% \end{macrocode}
+%
+% \begin{macro}{\usekomafont}
+% \changes{v2.8p}{2001/09/28}{Neu}
+% Mit Hilfe dieses Makros kann auf die Schriftart von
+% KOMA-Script-Elementen umgeschaltet werden.
+% \begin{macrocode}
+\newcommand*{\usekomafont}[1]{%
+ \@ifundefined{scr@fnt@#1}{%
+ \@ifundefined{scr@fnt@instead@#1}{%
+ \ClassError{%
+%<scrartcl> scrartcl%
+%<scrreprt> scrreprt%
+%<scrbook> scrbook%
+%<scrlettr> scrlttr2%
+ }{font of element `#1' can't be used}{%
+ You've told me to use the font selection of the element,%
+ \MessageBreak%
+ but either no such element is known by KOMA-Script\MessageBreak
+ or the element does not use a special font selection}
+ }{%
+ \ClassWarning{%
+%<scrartcl> scrartcl%
+%<scrreprt> scrreprt%
+%<scrbook> scrbook%
+%<scrlettr> scrlttr2%
+ }{%
+ You've told me to use the font selection of the element,%
+ \MessageBreak%
+ but the element does not use a special font
+ selection. The\MessageBreak
+ The font of `#1' may be selected with element `\csname
+ scr@fnt@instead@#1\endcsname'.\MessageBreak
+ I fix this using font of `\csname
+ scr@fnt@instead@#1\endcsname'}%
+ }%
+ \@nameuse{scr@fnt@instead@#1}%
+ }{%
+ \@nameuse{scr@fnt@#1}%
+ }%
+ }
+% \end{macrocode}
+%
+% \begin{macro}{\scr@fnt@descriptionlabel}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@title}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@sectioning}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@part}
+% \changes{v2.8p}{2001/09/23}{Neu}
+% \begin{macro}{\scr@fnt@partnumber}
+% \changes{v2.8p}{2001/09/23}{Neu}
+% \begin{macro}{\scr@fnt@chapter}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@wrn@chapter}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@section}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@subsection}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@subsubsection}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@paragraph}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@subparagraph}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@minisec}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@wrn@minisec}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@pagenumber}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@pagination}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@pagehead}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@pagefoot}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@caption}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@captionlabel}
+% \changes{v2.8o}{2001/09/14}{Neu}
+% \begin{macro}{\scr@fnt@subject}
+% \changes{v2.8q}{2002/01/14}{Neu}
+% \begin{macro}{\scr@fnt@backaddress}
+% \changes{v2.8q}{2002/01/22}{Neu}
+% \begin{macro}{\scr@fnt@fromaddress}
+% \changes{v2.8q}{2002/01/28}{Neu}
+% \begin{macro}{\scr@fnt@fromname}
+% \changes{v2.8q}{2002/01/28}{Neu}
+% Damit die Fontumschaltung mit dem einen Befehl funktioniert, wird
+% werden Makros ben"otigt, in denen die passenden Fontvariablen
+% gespeichert sind und ggf. zus"atzliche Makros f"ur Warnungen.
+% \begin{macrocode}
+\newcommand*{\scr@fnt@descriptionlabel}{\descfont}
+\newcommand*{\scr@fnt@title}{\titlefont}
+\newcommand*{\scr@fnt@sectioning}{\sectfont}
+%<*!scrlettr>
+\newcommand*{\scr@fnt@part}{\size@part}
+\newcommand*{\scr@fnt@partnumber}{\size@partnumber}
+%<scrbook|scrreprt>\newcommand*{\scr@fnt@chapter}{\size@chapter}
+\newcommand*{\scr@fnt@section}{\size@section}
+\newcommand*{\scr@fnt@subsection}{\size@subsection}
+\newcommand*{\scr@fnt@subsubsection}{\size@subsubsection}
+\newcommand*{\scr@fnt@paragraph}{\size@paragraph}
+\newcommand*{\scr@fnt@subparagraph}{\size@subparagraph}
+\newcommand*{\scr@fnt@instead@minisec}{sectioning}
+%</!scrlettr>
+\newcommand*{\scr@fnt@pagenumber}{\pnumfont}
+\let\scr@fnt@pagination=\scr@fnt@pagenumber
+\newcommand*{\scr@fnt@pagehead}{\headfont}
+\newcommand*{\scr@fnt@wrn@pagehead}[1]{%
+ font selection of elements `pagehead' and `pagefoot'\MessageBreak
+ changed, because you wanted to change font selection\MessageBreak
+ of element `#1'%
+}
+\let\scr@fnt@pagefoot=\scr@fnt@pagehead
+\let\scr@fnt@wrn@pagefoot=\scr@fnt@wrn@pagehead
+%<*!scrlettr>
+\newcommand*{\scr@fnt@caption}{\capfont}
+\newcommand*{\scr@fnt@captionlabel}{\caplabelfont}
+%</!scrlettr>
+%<scrlettr>\newcommand*{\scr@fnt@subject}{\subject@font}
+%<scrlettr>\newcommand*{\scr@fnt@backaddress}{\baddr@font}
+%<scrlettr>\newcommand*{\scr@fnt@fromaddress}{\faddr@font}
+%<scrlettr>\newcommand*{\scr@fnt@fromname}{\fname@font}
+% \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}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Inhaltverzeichnis, Abbildungsverzeichnis und
+% Tabellenverzeichnis}
+%
+% Diese Verzeichnisse existieren bei Briefen nicht.
+% \begin{macrocode}
+%<*!scrlettr>
+% \end{macrocode}
+%
+% \begin{macro}{\tableofcontents}
+% \begin{macro}{\@pnumwidth}
+% \begin{macro}{\@tocrmarg}
+% \begin{macro}{\@dotsep}
+% \begin{Counter}{tocdepth}
+% F"ur das Inhaltsverzeichnis m"ussen die Eintr"age f"ur die
+% unterschiedlichen Kapiteleinteilungen definiert werden.
+% \begin{macrocode}
+\newcommand*\@pnumwidth{1.55em}
+\newcommand*\@tocrmarg {2.55em}
+\newcommand*\@dotsep{4.5}
+%<!scrartcl>\setcounter{tocdepth}{2}
+%<scrartcl>\setcounter{tocdepth}{3}
+% \end{macrocode}
+% \end{Counter}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\toc@heading}
+% \changes{v2.3h}{1995/01/21}{Befehl, zum Setzen der "Uberschrift des
+% Inhaltsverzeichnisses.}
+% \begin{macrocode}
+\newcommand*\toc@heading{\section*{\contentsname
+ \@mkboth{\contentsname}{\contentsname}}}
+% \end{macrocode}
+% \end{macro}
+% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{toc@heading}.}
+% \changes{v2.8l}{2001/08/16}{Gruppe eingef"ugt und \cs{parskip} auf 0
+% gesetzt}
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
+% \changes{v2.8q}{2001/11/14}{\cs{if@tocleft} bearbeiten}
+% \begin{macro}{\before@starttoc}
+% \changes{v2.8q}{2001/11/14}{Neu}
+% Dieses Makro f"uhrt im Falle von |tocleft| am Anfang eines
+% Verzeichnisses alle notwendigen "Anderungen durch, um das
+% Verzeichnis entsprechend zu handhaben.
+% \begin{macro}{\scr@dottedtocline}
+% \changes{v2.9k}{2003/01/03}{auch das dritte Argument wird ge"andert}
+% \begin{macro}{\scr@numberline}
+% \begin{macro}{\last@l@number}
+% Daf"ur werden ein paar Hilfsmakros ben"otigt, die vorsichtshalber
+% global vordefiniert werden.
+% \begin{macrocode}
+\newcommand*{\scr@dottedtocline}{}%
+\newcommand*{\scr@numberline}{}%
+\newcommand*{\last@l@number}{}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@l@number}
+% \changes{v2.8q}{2001/11/14}{Neu}
+% In diesem Makro wird w"ahrend der Erstellung des
+% Inhaltsverzeichnisses die aktuelle Breite der Gliederungsnummer
+% gespeichert.
+% \begin{macro}{\set@l@number}
+% \changes{v2.8q}{2001/11/14}{Neu}
+% Dieses Makro ist daf"ur verantwortlich, dass zum einen |\@tempdima|
+% f"ur den Aufruf von |\numberline| auf den richtigen Wert gesetzt
+% wird, zum anderen wird die aktuelle gr"o"ste Breite der
+% Gliederungsnummer hier angepasst.
+% \begin{macrocode}
+\newcommand*{\@l@number}{}
+\newcommand*{\set@l@number}[1]{%
+ \settowidth{\@tempdima}{#1\enskip}%
+ \ifdim\@tempdima >\@l@number\relax%
+ \xdef\@l@number{\the\@tempdima}%
+ \fi%
+ \ifdim\@tempdima >\last@l@number \else%
+ \setlength{\@tempdima}{\last@l@number}%
+ \fi%
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\newcommand*{\before@starttoc}[1]{
+ \let\scr@dottedtocline=\@dottedtocline%
+ \renewcommand*{\@dottedtocline}[3]{%
+ \scr@dottedtocline{##1}{\z@}{\last@l@number}}%
+ \let\scr@numberline=\numberline%
+ \renewcommand*{\numberline}[1]{%
+ \set@l@number{##1}\scr@numberline{##1}}%
+ \gdef\@l@number{\z@}%
+ \@ifundefined{#1@l@number}{%
+ \def\last@l@number{2em}%
+ }{%
+ \expandafter\let\expandafter\last@l@number
+ \expandafter=\csname#1@l@number\endcsname%
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\after@starttoc}
+% \changes{v2.8q}{2001/11/14}{Neu}
+% Dieses Makro schreibt am Ende den entsprechenden Eintrag in die
+% \texttt{aux}-Datei.
+% \begin{macrocode}
+\newcommand*{\after@starttoc}[1]{%
+ \protected@write\@auxout{}{%
+ \string\gdef\expandafter\string\csname#1@l@number\endcsname{%
+ \@l@number}}%
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\toc@l@number}
+% \changes{v2.8q}{2001/11/14}{Neu}
+% Dieses Makro wird innerhalb von |\tableofcontents| "uber
+% |\before@starttoc| und |\after@starttoc| in der \texttt{aux}-Datei
+% global definiert. Aus Sicherheitsgr"unden wird es hier global
+% vordefiniert.
+% \begin{macrocode}
+\newcommand*{\toc@l@number}{}
+% \end{macrocode}
+% \end{macro}
+% \changes{v2.9k}{2003/01/02}{Option \texttt{tocleft} wird nun auch
+% bei Klasse \textsf{scrartcl} beachtet}
+% \begin{macrocode}
+\newcommand*{\tableofcontents}{%
+ \begingroup
+%<*scrartcl>
+ \toc@heading%
+ \@parskipfalse\@parskip@indent%
+ \if@tocleft\before@starttoc{toc}\fi%
+ \@starttoc{toc}%
+ \if@tocleft\after@starttoc{toc}\fi%
+%</scrartcl>
+%<*scrreprt|scrbook>
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \chapter*{\contentsname
+ \@mkboth{\contentsname}{\contentsname}}%
+ \@parskipfalse\@parskip@indent%
+ \if@tocleft\before@starttoc{toc}\fi%
+ \@starttoc{toc}%
+ \if@tocleft\after@starttoc{toc}\fi%
+ \if@restonecol\twocolumn\fi
+%</scrreprt|scrbook>
+ \endgroup
+}
+% \end{macrocode}
+%
+% \begin{macro}{\l@part}
+% Nat"urlich werden auch Makros ben"otigt, um die Eintr"age in das
+% Inhaltsverzeichnis zu formatieren. Beginnend mit den Eintr"agen f"ur
+% \cs{part}.
+% \begin{macrocode}
+\newcommand*\l@part[2]{%
+ \ifnum \c@tocdepth >-2\relax
+%<scrartcl> \addpenalty{\@secpenalty}%
+%<!scrartcl> \addpenalty{-\@highpenalty}%
+ \addvspace{2.25em \@plus\p@}%
+% \end{macrocode}
+% \changes{v2.5e}{1998/07/17}{Ge"anderte part-Formatierung ragte in
+% den linken Rand}
+% \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}
+% \begin{macrocode}
+ \setlength\@tempdima{2em}%
+ \if@tocleft
+ \ifx\toc@l@number\@empty\else
+ \setlength\@tempdima{0\toc@l@number}%
+ \fi
+ \fi
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+% \end{macrocode}
+% \changes{v2.5c}{1997/11/25}{Formatierung bei Zeilenumbruch im
+% part-Eintrag korrigiert}
+% \changes{v2.5e}{1998/07/17}{Beinhaltes \cs{sectfont} eine
+% Gr"o"senangabe, so wird diese
+% "uberschrieben}
+% \begin{macrocode}
+ \leavevmode\sectfont\large
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+%<*scrartcl>
+ \if@compatibility
+ \global\@nobreaktrue
+% \end{macrocode}
+% \changes{v2.3g}{1996/01/14}{Fehlendes Kommentarzeichen erg"anzt.}
+% \begin{macrocode}
+ \everypar{\global\@nobreakfalse\everypar{}}%
+ \else
+%</scrartcl>
+ \penalty\@highpenalty
+%<scrartcl> \fi
+ \endgroup
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\l@chapter}
+% \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}
+% Kapiteleintr"age gibt es nat"urlich nicht bei der Artikel-Klasse.
+% \begin{macrocode}
+%<*scrreprt|scrbook>
+\newcommand*\l@chapter[2]{%
+ \ifnum \c@tocdepth >\m@ne
+ \addpenalty{-\@highpenalty}%
+ \vskip 1.0em \@plus\p@
+ \setlength\@tempdima{1.5em}%
+ \if@tocleft
+ \ifx\toc@l@number\@empty\else
+ \setlength\@tempdima{0\toc@l@number}%
+ \fi
+ \fi
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode \sectfont
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+ \penalty\@highpenalty
+ \endgroup
+ \fi}
+%</scrreprt|scrbook>
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\l@section}
+% \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}
+% Bei der Artikel-Klasse folgt die Formatierung f"ur
+% \cs{section}-Eintr"age, an Stelle der Eintr"age f"ur \cs{chapter}
+% der Buch- oder der Bericht-Klasse. Bei diesen handelt es sich hier
+% stattdessen um eine normale Ebene.
+% \begin{macrocode}
+%<*scrartcl>
+\newcommand*\l@section[2]{%
+ \ifnum \c@tocdepth >\z@
+ \addpenalty{\@secpenalty}%
+ \addvspace{1.0em \@plus\p@}%
+ \setlength\@tempdima{1.5em}%
+ \if@tocleft
+ \ifx\toc@l@number\@empty\else
+ \setlength\@tempdima{0\toc@l@number}%
+ \fi
+ \fi
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode \sectfont
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+ \endgroup
+ \fi}
+%</scrartcl>
+%<*scrreprt|scrbook>
+\newcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
+%</scrreprt|scrbook>
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\l@subsection}
+% \begin{macro}{\l@subsubsection}
+% \begin{macro}{\l@paragraph}
+% \begin{macro}{\l@subparagraph}
+% Die "ubrigen Ebenen werden normal behandelt.
+% \begin{macrocode}
+%<*scrartcl>
+\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
+\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
+\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
+%</scrartcl>
+%<*scrreprt|scrbook>
+\newcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}}
+\newcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
+\newcommand*\l@paragraph{\@dottedtocline{4}{10em}{5em}}
+\newcommand*\l@subparagraph{\@dottedtocline{5}{12em}{6em}}
+%</scrreprt|scrbook>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\float@listhead}
+% \changes{v2.8b}{2001/06/26}{Neu}
+% \changes{v2.8g}{2001/07/18}{\cs{float@headings} umbenannt in
+% \cs{float@listhead}}
+% In Absprache mit Anselm Lingnau, dem Autor vor \texttt{float.sty},
+% wird ab Version 2.8b \cs{float@headings} zum Setzen des
+% Kolumnentitels bei den Verzeichnissen verwendet, die
+% \texttt{float.sty} f"ur neu definierte floats zur Verf"ugung
+% stellt. Dabei definiert \texttt{float.sty} die Anweisung nur, wenn
+% sie nicht bereits existiert. Die Zusammenarbeit wird dadurch
+% verbessert. Da Anselm sich in letzter Minute entschlossen hat, das
+% Makro \cs{float@listhead} zu nennen, wurde dies in Version 2.8g
+% angepasst.
+%
+% \begin{macrocode}
+\newcommand*{\float@listhead}[1]{%
+%<scrartcl> \section*{#1}%
+%<!scrartcl> \chapter*{#1}%
+ \@mkboth{#1}{#1}%
+% \end{macrocode}
+% \changes{v2.8q}{2001/11/14}{Dynamische Anpassung an die Nummer}
+% Dies ist der passende Ort, um die Breite, die f"ur die Nummer des
+% Gleitobjekts ben"otigt wird zu ermitteln und anzupassen, falls dies
+% ge"unscht wird. Dazu findet eine lokale Umdefinierung von
+% |\@starttoc| statt. Die Umdefinierung ist deshalb lokal, weil alle
+% mir bekannten Verzeichnisse von Gleitobjekten innerhalb einer Gruppe
+% ausgegeben werden.
+% \begin{macrocode}
+ \if@dynlist%
+ \newcommand*{\scr@starttoc}{}%
+ \let\scr@starttoc=\@starttoc%
+ \renewcommand*{\@starttoc}[1]{%
+ \before@starttoc{##1}\scr@starttoc{##1}\after@starttoc{##1}}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\listoffigures}
+% \begin{macro}{\lof@heading}
+% \changes{v2.3h}{1995/01/21}{Befehl, zum Setzen der "Uberschrift des
+% Abbildungsverzeichnisses.}
+% \changes{v2.4d}{1996/04/11}{\cs{addsec} durch \cs{section*} ersetzt.}
+% \changes{v2.8b}{2001/06/26}{Verwendung von \cs{float@headings}}
+% \changes{v2.8g}{2001/07/18}{\cs{float@headings} umbenannt in
+% \cs{float@listhead}}
+% \begin{macrocode}
+\newcommand*\lof@heading{\float@listhead{\listfigurename}}
+% \end{macrocode}
+% \end{macro}
+% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{lof@heading}.}
+% \changes{v2.4k}{1996/12/13}{\cs{lof@heading} nicht nur bei scrartcl.}
+% \changes{v2.8l}{2001/08/16}{Gruppe eingef"ugt und \cs{parskip} auf 0
+% gesetzt}
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
+% \begin{macro}{\l@figure}
+% \begin{macrocode}
+\newcommand*\listoffigures{%
+ \begingroup%
+%<*scrartcl>
+ \lof@heading%
+ \@parskipfalse\@parskip@indent%
+ \@starttoc{lof}%
+%</scrartcl>
+%<*scrreprt|scrbook>
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \lof@heading%
+ \@parskipfalse\@parskip@indent%
+ \@starttoc{lof}%
+ \if@restonecol\twocolumn\fi
+%</scrreprt|scrbook>
+ \endgroup
+}
+\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\listoftables}
+% \begin{macro}{\lot@heading}
+% \changes{v2.3h}{1995/01/21}{Befehl zum Setzen der "Uberschrift des
+% Tabellenverzeichnisses.}
+% \changes{v2.4a}{1996/03/13}{\cs{listtabelname} durch \cs{listtablename}
+% ersetzt.}
+% \changes{v2.8b}{2001/06/26}{Verwendung von \cs{float@headings}}
+% \changes{v2.8g}{2001/07/18}{\cs{float@headings} umbenannt in
+% \cs{float@listhead}}
+% \begin{macrocode}
+\newcommand*\lot@heading{\float@listhead{\listtablename}}
+% \end{macrocode}
+% \end{macro}
+% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{lot@heading}.}
+% \changes{v2.4k}{1996/12/13}{\cs{lot@heading} nicht nur bei scrartcl.}
+% \changes{v2.8l}{2001/08/16}{Gruppe eingef"ugt und \cs{parskip} auf 0
+% gesetzt}
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
+% \begin{macro}{\l@table}
+% \begin{macrocode}
+\newcommand*\listoftables{%
+ \begingroup
+%<*scrartcl>
+ \lot@heading%
+ \@parskipfalse\@parskip@indent%
+ \@starttoc{lot}%
+%</scrartcl>
+%<*scrreprt|scrbook>
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \lot@heading%
+ \@parskipfalse\@parskip@indent%
+ \@starttoc{lot}%
+ \if@restonecol\twocolumn\fi
+%</scrreprt|scrbook>
+ \endgroup
+}
+\let\l@table\l@figure
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</!scrlettr>
+% \end{macrocode}
+%
+%
+% \subsection{Das Literaturverzeichnis}
+%
+% Dieses Verzeichnis existiert bei Briefen nicht.
+% \begin{macrocode}
+%<*!scrlettr>
+% \end{macrocode}
+%
+% \begin{environment}{thebibliography}
+% \begin{macro}{\setbibpreamble}
+% \changes{v2.6c}{2000/06/10}{Neuer Befehl eingef"uhrt}
+% \changes{v2.7j}{2001/05/27}{\cs{renewcommand} durch \cs{def}
+% ersetzt zur Erh"ohung der
+% \texttt{natbib}-Kompatibilit"at}
+% \begin{macro}{\bibpreamble}
+% \changes{v2.6c}{2000/06/10}{Neues Makro eingef"uhrt}
+% \changes{v2.6d}{2000/07/20}{Makro funktioniert nachdem \cs{let}
+% durch \cs{newcommand*} ersetzt wurde}
+% \changes{v2.8q}{2002/01/10}{Wieder \cs{let}}
+% \cs{bibpreamble} kann vom Benutzer mit \cs{setbibpreamble} auf
+% einen Text gesetzt werden, der nach der "Uberschrift eingef"ugt
+% wird. Dasselbe Makro wird von \texttt{natbib.sty} als \cs{relax}
+% definiert; aus Kompatibilit"atsgr"unden wird hier vergleichbar
+% verfahren und \cs{def} statt \cs{renewcommand} verwendet.
+% \changes{v2.7j}{2001/05/27}{Setzen der Pr"aambel in die
+% theindex-Umgebung verschoben}
+% Au"serdem wird ab Version 2.7j die Pr"aambel nicht mehr in
+% \cs{bib@heading} gesetzt, sondern in der
+% \texttt{thebibliography}-Umgebung. Dies dient ebenfalls der
+% Kompatibilit"at mit natbib.
+% \begin{macrocode}
+\newcommand*{\bibpreamble}{\relax}
+\let\bibpreamble\relax
+\newcommand{\setbibpreamble}[1]{\def\bibpreamble{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\bib@heading}
+% \changes{v2.3h}{1995/01/21}{Befehl zum Setzen der "Uberschrift des
+% Literaturverzeichnisses.}
+% \changes{v2.6c}{2000/06/10}{Die Preambel wird gesetzt.}
+% \changes{v2.7b}{2001/01/05}{\cs{setchapterpreamble} wird verwendet.}
+% \changes{v2.7j}{2001/06/27}{Setzen der Pr"aambel in die
+% thebibliography-Umgebung verschoben}
+% \begin{macrocode}
+\newcommand*\bib@heading{%
+%<*scrartcl>
+ \section*{\refname}
+ \@mkboth{\refname}{\refname}
+%</scrartcl>
+%<*scrbook|scrreprt>
+ \chapter*{\bibname}
+ \@mkboth{\bibname}{\bibname}
+%</scrbook|scrreprt>
+}
+% \end{macrocode}
+% \end{macro}
+% \changes{v2.2a}{1995/02/01}{In \texttt{scrartcl} \cs{bibname}
+% vollst"andig durch \cs{refname} ersetzt.}
+% \changes{v2.3g}{1996/01/14}{Implementierung von openbib ge"andert.}
+% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{bib@heading}}
+% \begin{Length}{bibindent}
+% Nun werden noch die Umgebung f"ur das Literaturverzeichnis und der Befehl
+% f"ur die einzelnen Eintr"age definiert.
+% \begin{macrocode}
+\newdimen\bibindent
+\bibindent=1.5em
+% \end{macrocode}
+% \end{Length}
+% \changes{v2.8q}{2002/01/10}{Leere Pr"aambel erkennen und gesondert
+% behandeln}
+% \changes{v2.9o}{2003/03/06}{\cs{bibpreamle} statt \cs{bibpreamble}
+% mit \cs{@empty} vergleichen}
+% \begin{macrocode}
+\newenvironment{thebibliography}[1]{%
+%<scrbook|scrreprt> \ifx\bibpreamble\relax\else\ifx\bibpreamble\@empty\else
+%<scrbook|scrreprt> \setchapterpreamble{\bibpreamble}%
+%<scrbook|scrreprt> \fi\fi
+ \bib@heading%
+%<scrartcl> \ifx\bibpreamble\relax\else\ifx\bibpreamble\@empty\else
+%<scrartcl> \noindent\bibpreamble\par\nobreak
+%<scrartcl> \fi\fi
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand*\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy\clubpenalty4000\widowpenalty4000%
+ \sfcode`\.=\@m}
+{\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\newblock}
+% \changes{v2.3g}{1996/01/14}{Grundeinstellung ge"andert.}
+% \begin{macrocode}
+\newcommand*\newblock{\hskip .11em\@plus.33em\@minus.07em}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@openbib@code}
+% \changes{v2.3g}{1996/01/14}{Neues Makro.}
+% \begin{macrocode}
+\let\@openbib@code\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</!scrlettr>
+% \end{macrocode}
+%
+%
+% \subsection{Index}
+% Dieses Verzeichnis existiert bei Briefen nicht.
+% \begin{macrocode}
+%<*!scrlettr>
+% \end{macrocode}
+%
+% \begin{environment}{theindex}
+% \changes{v2.8d}{2001/07/05}{\cs{indexpagestyle} statt \texttt{plain}}
+% \begin{macro}{\index@preamble}
+% \changes{v2.6c}{2000/06/10}{Neues internes Makro eingef"uhrt}
+% \begin{macro}{\setindexpreamble}
+% \changes{v2.6c}{2000/06/10}{Neuer Befehl eingef"uhrt}
+% \changes{v2.6d}{2000/07/20}{Befehl funktioniert nachdem \cs{let}
+% durch \cs{newcommand*} ersetzt wurde}
+% Analog zu \cs{bibpreamble} kann \cs{index@preamble} vom Benutzer mit
+% \cs{setindexpreamble} auf einen Text gesetzt werden, der nach
+% der Index"uberschrift eingef"ugt wird. Hier wird ein echtes internes
+% Makro verwendet, da nicht auf Kompatibilit"at geachtet werden
+% mu"s.
+% \begin{macrocode}
+\newcommand*{\index@preamble}{\relax}
+\newcommand{\setindexpreamble}[1]{\renewcommand*{\index@preamble}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\idx@heading}
+% \changes{v2.3h}{1995/01/21}{Befehl zum Setzen der "Uberschrift
+% des Indexes}
+% \changes{v2.4c}{1995/04/04}{Kolumnentitel werden nun korrekt
+% behandelt}
+% \changes{v2.4g}{1996/11/04}{Index auch bei scrartcl wieder
+% zweispaltig}
+% \changes{v2.6c}{2000/06/10}{Verwendung von \cs{index@preamble}
+% eingef"ugt}
+% \changes{v2.7j}{2001/05/27}{Setzen der Pr"aambel in die
+% theindex-Umgebung verschoben}
+% \changes{v2.9l}{2003/01/19}{\cs{if@twoside} durch
+% \cs{if@openright} ersetzt}
+% Bis Version 2.7a sah diese Definition so aus:
+% \begin{verbatim}
+% \newcommand*{\idx@heading}{%
+% \if@twoside\cleardoublepage\else\clearpage\fi%
+% \@mkboth{\indexname}{\indexname}%
+% \twocolumn[%
+% <scrartcl> \section*%
+% <scrreprt|scrbook> \@makeschapterhead%
+% {\indexname}\index@preamble]
+% }
+% \end{verbatim}
+% Dagegen ist grunds"atzlich nichts zu sagen. Allerdings gibt es seit
+% Version 2.7b das die neue Methode der Kapitel-Preambel, die extra
+% eingef"uhrt wurde, um die \texttt{hyperref}-Links -- insbesondere
+% den des Index -- zumindest bei Verwendung von \texttt{hpdftex.def}
+% zu verbessern. Deshalb wurde die Implementierung entsprechend
+% abge"andert. Au"serdem wurde das Setzen der Pr"aambel aus
+% Konsistenzgr"unden in Version 2.7j "ubereinstimmten mit der
+% \texttt{thebibliography}-Umgebung in die \texttt{theindex}-Umgebung
+% verschoben.
+% \begin{macrocode}
+\newcommand*{\idx@heading}{%
+%<scrreprt|scrbook> \if@openright\cleardoublepage\else\clearpage\fi%
+%<scrartcl> \twocolumn[\section*{\indexname}]
+%<scrreprt|scrbook> \twocolumn[\chapter*{\indexname}]
+ \@mkboth{\indexname}{\indexname}%
+}
+% \end{macrocode}
+% \end{macro}
+% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{idx@heading}}
+% \changes{v2.7j}{2001/05/27}{Setzen der Pr"aambel in die
+% theindex-Umgebung verschoben}
+% Ein Index ist ebenfalls m"oglich. Dieser ist wie "ublich definiert.
+% \begin{macrocode}
+\newenvironment{theindex}
+ {\if@twocolumn
+ \@restonecolfalse
+ \else
+ \@restonecoltrue
+ \fi
+ \columnseprule \z@
+ \columnsep 35\p@
+%<scrbook|scrreprt> \setchapterpreamble{\index@preamble}
+ \idx@heading%
+%<scrartcl> \index@preamble\par\nobreak
+ \thispagestyle{\indexpagestyle}\parindent\z@
+ \setlength{\parskip}{\z@ \@plus .3\p@}
+ \setlength{\parfillskip}{\z@ \@plus 1fil}
+ \let\item\@idxitem}
+ {\if@restonecol\onecolumn\else\clearpage\fi}
+\newcommand*\@idxitem {\par\hangindent 40\p@}
+% \end{macrocode}
+% \begin{macro}{\subitem}
+% \changes{v2.3g}{1996/01/14}{Verwendung von \cs{@idxitem} spart Speicher}
+% \begin{macro}{\subsubitem}
+% \changes{v2.3g}{1996/01/14}{Verwendung von \cs{@idxitem} spart Speicher}
+% \begin{macro}{\indexspace}
+% \begin{macrocode}
+\newcommand*\subitem {\@idxitem \hspace*{20\p@}}
+\newcommand*\subsubitem{\@idxitem \hspace*{30\p@}}
+\newcommand*\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{environment}
+%
+% \begin{macrocode}
+%</!scrlettr>
+% \end{macrocode}
+%
+%
+% \subsection{Fu"snoten}
+%
+% \begin{macro}{\footnoterule}
+% Fu"snoten sind etwas abweichend definiert.
+% \changes{v2.3a}{1995/07/08}{\cs{@width} verwendet}
+% \changes{v2.8q}{2002/02/06}{\cs{raggedbottom}-Verbesserung
+% eingef"ugt}
+% Insbesondere wird im Fall, dass \cs{raggedbottom} verwendet wird,
+% die Fu"snotenlinie nach unten gedr"uckt. Dies funktioniert nur dann
+% nicht, wenn Abbildungen oder Tabellen mit der Option "`\texttt{b}"'
+% an das Ende der Seite gesetzt werden. \cs{raggedbottom} wird daran
+% erkannt, dass \cs{@textbottom} nicht \cs{relax} ist. Das kann
+% nat"urlich auch einmal schief gehen, ist dann aber auch nicht ganz
+% so tragisch.
+% \begin{macrocode}
+\renewcommand*\footnoterule{%
+ \kern-3\p@
+ \ifx\@textbottom\relax\else\vskip \z@ \@plus.0005fil\fi
+ \hrule\@width.4\columnwidth
+ \kern 2.6\p@}
+%<!scrartcl>\@addtoreset{footnote}{chapter}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\deffootnote}
+% \changes{v2.4l}{1997/02/06}{Neues Makro zur Definition der
+% Gestalt von Fu"snoten.}
+% \changes{v2.9b}{2002/08/05}{Absatzeinzug korrigiert}
+% \changes{v2.9l}{2003/01/28}{\cs{edef}\cs{@tempa} ersetzt}
+% \changes{v2.9q}{2004/01/31}{\cs{ftn@font} erlaubt aus Gr"unden der
+% Kompatibilität mit dem \textsl{footnote} Paket kein Argument mehr}
+% 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{%
+ \setlength{\@tempdimc}{#3}%
+ \def\@tempa{#1}\ifx\@tempa\@empty
+ \@setpar{\@@par
+ \@tempdima = \hsize
+ \addtolength{\@tempdima}{-#2}
+ \parshape \@ne #2 \@tempdima}%
+ \else
+ \addtolength{\@tempdimc}{#2}%
+ \addtolength{\@tempdimc}{-#1}%
+ \@setpar{\@@par
+ \@tempdima = \hsize
+ \addtolength{\@tempdima}{-#1}
+ \@tempdimb = \hsize
+ \addtolength{\@tempdimb}{-#2}
+ \parshape \tw@ #1 \@tempdima #2 \@tempdimb}%
+ \fi
+ \par
+ \parindent\@tempdimc\noindent
+ \ftn@font\hbox to \z@{\hss\@@makefnmark}##1}
+% \end{macrocode}
+% \begin{macro}{\@@makefnmark}
+% \changes{v2.4l}{1997/02/06}{Neues Makro zum Setzen der
+% Fu"snotenmarkierung im Text}
+% \begin{macrocode}
+ \def\@@makefnmark{\hbox{\ftnm@font{#4}}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+}
+% \end{macrocode}
+% \begin{macro}{\ftn@font}
+% \changes{v2.8q}{2001/11/16}{Neu}
+% \begin{macro}{\scr@fnt@footnote}
+% \changes{v2.8q}{2001/11/16}{Neu}
+% \begin{macro}{\ftnm@font}
+% \changes{v2.8q}{2001/11/16}{Neu}
+% \begin{macro}{\scr@fnt@footnotenumber}
+% \changes{v2.8q}{2001/11/16}{Neu}
+% \begin{macro}{\scr@fnt@footnotenlabel}
+% \changes{v2.8q}{2001/11/16}{Neu}
+% \begin{macro}{\scr@fnt@instead@footnotetext}
+% \changes{v2.8q}{2001/11/16}{Neu}
+% Das erste Makro gibt die Schrift an, in der die Fu"snote gesetzt
+% wird. Davon abweichend kann mit dem zweiten Makro die Schriftart
+% f"ur die Fu"snotennummer getrennt angegeben werden. Aufgrund der
+% Definition kann auch ein Makro verwendet werden, das ein Argument
+% erwartet.
+% \begin{macrocode}
+\newcommand*{\ftn@font}{\normalfont}
+\newcommand*{\scr@fnt@footnote}{\ftn@font}
+\newcommand*{\ftnm@font}{}
+\newcommand*{\scr@fnt@footnotenumber}{\ftnm@font}
+\newcommand*{\scr@fnt@footnotelabel}{\ftnm@font}
+\newcommand*{\scr@fnt@instead@footnotetext}{footnote}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\deffootnotemark}
+% \changes{v2.4l}{1997/02/06}{Neues Makro zur Definition der
+% Fu"snotenmarkierung im Text}
+% \begin{macrocode}
+\newcommand*\deffootnotemark[1]{\def\@makefnmark{\hbox{\ftntm@font{#1}}}}
+% \end{macrocode}
+% \begin{macro}{\ftntm@font}
+% \changes{v2.8q}{2001/11/16}{Neu}
+% \begin{macro}{\scr@fnt@footnotereference}
+% \changes{v2.8q}{2001/11/16}{Neu}
+% \begin{macro}{\scr@fnt@footnoteref}
+% \changes{v2.8q}{2001/11/16}{Neu}
+% Dies ist die Schriftart der Fu"snotenreferenz im Text. Auch hier kann
+% ggf. ein Makro verwendet werden, das ein Argument erwartet.
+% \begin{macrocode}
+\newcommand*{\ftntm@font}{}
+\newcommand*{\scr@fnt@footnotereference}{\ftntm@font}
+\newcommand*{\scr@fnt@footnoteref}{\ftntm@font}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\thefootnotemark}
+% \changes{v2.4l}{1997/02/06}{Neues Makro, damit \cs{@thefnmark} auf
+% Anwenderebene verf"ugbar wird.}
+% \begin{macrocode}
+\newcommand*{\thefootnotemark}{\@thefnmark}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\textsuperscript}
+% \changes{v2.4l}{1997/02/06}{Neues Makro, damit \cs{@textsuperscript} auf
+% Anwenderebene verf"ugbar wird.}
+% \changes{v2.5g}{1999/10/09}{Da \cs{textsuperscript} bereits
+% existiert, wird es nicht mehr
+% umdefiniert. Die dadurch entstehende
+% Inkompatibilit"at wird in Kauf
+% genommen.}
+% Das Makro ist im Kernel vorhanden. Die Umdefinition sah einst wie
+% folgt aus:
+% \begin{verbatim}
+% \let\textsuperscript\@textsuperscript
+% \end{verbatim}
+% \end{macro}
+% \changes{v2.4l}{1997/02/06}{Verwendung der neuen Makros zur
+% Fu"snotengestaltgebung.}
+% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingef"ugt}
+% \begin{macro}{\@makefnmark}
+% \begin{macrocode}
+\deffootnote[1em]{1.5em}{1em}
+ {\textsuperscript{\thefootnotemark}}
+\deffootnotemark{\textsuperscript{\thefootnotemark}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Kleinigkeiten}
+%
+% \begin{macro}{textsubscript}
+% \changes{v2.8h}{2001/07/19}{Neu}
+% \begin{macro}{@textsubscript}
+% \changes{v2.8h}{2001/07/19}{Neu}
+% Im \LaTeX-Kern wird zwar ein Makro \cs{textsuperscript} definiert,
+% um Texte hochstellen zu k"onnen, die entsprechende Anweisung zum
+% Tiefstellen fehlt jedoch. Das wird hier nachgeholt, wobei nahezu
+% unver"andert auf die Definition aus dem \LaTeX-Kern zur"uckgegriffen
+% wird.
+% \begin{macrocode}
+\DeclareRobustCommand*\textsubscript[1]{%
+ \@textsubscript{\selectfont#1}}
+\newcommand{\@textsubscript}[1]{%
+ {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Standardbezeichnungen}
+%
+% Diese werden von |german.sty| ohnehin "uberschrieben.
+% \begin{macro}{\contentsname}
+% \begin{macro}{\listfigurename}
+% \begin{macro}{\listtablename}
+% \begin{macro}{\refname}
+% \begin{macro}{\bibname}
+% \begin{macro}{\indexname}
+% \begin{macro}{\figurename}
+% \begin{macro}{\tablename}
+% \begin{macro}{\partname}
+% \begin{macro}{\chaptername}
+% \begin{macro}{\appendixname}
+% \begin{macro}{\abstractname}
+% \begin{macro}{\today}
+% \begin{macrocode}
+%<*!scrlettr>
+\newcommand*\contentsname{Contents}
+\newcommand*\listfigurename{List of Figures}
+\newcommand*\listtablename{List of Tables}
+%<scrartcl>\newcommand*\refname{References}
+%<!scrartcl>\newcommand*\bibname{Bibliography}
+\newcommand*\indexname{Index}
+\newcommand*\figurename{Figure}
+\newcommand*\tablename{Table}
+\newcommand*\partname{Part}
+%<!scrartcl>\newcommand*\chaptername{Chapter}
+\newcommand*\appendixname{Appendix}
+\newcommand*\abstractname{Abstract}
+%</!scrlettr>
+\newcommand*\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+% \end{macrocode}
+%
+% \begin{macro}{\captionsenglish}
+% \begin{macro}{\captionsUSenglish}
+% \begin{macro}{\captionsamerican}
+% \begin{macro}{\captionsbritish}
+% \begin{macro}{\captionsUKenglish}
+% \begin{macro}{\captionsgerman}
+% \begin{macro}{\captionsaustrian}
+% \begin{macro}{\captionsngerman}
+% \begin{macro}{\captionsfrench}
+% \begin{macro}{\captionsitalian}
+% \begin{macro}{\captionsspanish}
+% \begin{macro}{\captionscroatian}
+% \changes{v2.8q}{2001/10/05}{Sprachspende von Branka
+% Lon\v{c}arevi\'{c}}
+% \begin{macro}{\captionsdutch}
+% \changes{v2.8q}{2002/02/01}{Sprachspende von Henk Jongbloets}
+% Bei |scrlttr2| 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 |ngerman.sty| vorhanden sind.
+% Deshalb ist es notwendig diese Labels hier neu zu definieren.
+% \begin{macro}{\providecaptionname}
+% \changes{v2.8q}{2001/11/08}{Neu}
+% \changes{v2.9r}{2004/06/16}{Wenn die aktuelle Sprache, die ge"anderte
+% ist, wird die "Anderung sofort aktiviert.}
+% \begin{macro}{\newcaptionname}
+% \changes{v2.8q}{2001/11/08}{Neu}
+% \changes{v2.9r}{2004/06/16}{Wenn die aktuelle Sprache, die ge"anderte
+% ist, wird die "Anderung sofort aktiviert.}
+% \begin{macro}{\renewcaptionname}
+% \changes{v2.8q}{2001/11/08}{Neu}
+% \changes{v2.9r}{2004/06/16}{Wenn die aktuelle Sprache, die ge"anderte
+% ist, wird die "Anderung sofort aktiviert.}
+% Doch bevor dies geschieht, werden erst einmal drei Benutzerkommandos
+% definiert, mit denen einer Sprache, so ein Begriff zugef"ugt werden
+% kann.
+% \begin{macrocode}
+\newcommand*{\providecaptionname}[3]{%
+ \@ifundefined{captions#1}{%
+ \@ifundefined{cap@info@#1@done}{%
+ \ClassInfo{%
+ scrlttr2%
+ }{%
+ No captions found for `#1'\MessageBreak
+ --> skipped%
+ }%
+ \expandafter\let\csname cap@info@#1@done\endcsname\@empty}{}%
+ }{%
+ \begingroup%
+ \let\@tempa\endgroup%
+ \csname captions#1\endcsname%
+ \ifx #2\undefined%
+ \def\@tempb{#1}%
+ \ifx\@tempb\languagename
+ \def\@tempa{\endgroup%
+ \expandafter\g@addto@macro\csname captions#1\endcsname{%
+ \def#2{#3}}%
+ \csname captions#1\endcsname
+ }%
+ \else
+ \def\@tempa{\endgroup%
+ \expandafter\g@addto@macro\csname captions#1\endcsname{%
+ \def#2{#3}}%
+ }%
+ \fi
+ \else
+ \ClassInfo{%
+ scrlttr2%
+ }{%
+ `\string#2' at language `#1' already
+ defined\MessageBreak
+ --> skipped%
+ }%
+ \fi
+ \@tempa
+ }%
+}
+\newcommand*{\newcaptionname}[3]{%
+ \@ifundefined{captions#1}{%
+ \ClassInfo{%
+ scrlttr2%
+ }{%
+ No captions found for `#1' --> defining%
+ }%
+ \@namedef{captions#1}{}%
+ }{}%
+ \begingroup%
+ \csname captions#1\endcsname%
+ \ifx #2\undefined\else%
+ \ClassError{%
+ scrlttr2%
+ }{%
+ `\string#2' at language `#1' already defined%
+ }{%
+ You've told me to define `\string#2' at language
+ `#1',\MessageBreak
+ but it is already defined.\MessageBreak
+ It will be redefined, if you'll continue.%
+ }
+ \fi
+ \endgroup%
+ \expandafter\g@addto@macro\csname captions#1\endcsname{%
+ \def#2{#3}}%
+ \begingroup
+ \def\@tempb{#1}%
+ \ifx\@tempb\languagename
+ \def\@tempa{\endgroup\csname captions#1\endcsname}%
+ \else
+ \let\@tempa\endgroup
+ \fi
+ \@tempa
+}
+\newcommand*{\renewcaptionname}[3]{%
+ \@ifundefined{captions#1}{%
+ \ClassError{%
+ scrlttr2%
+ }{%
+ No captions found for `#1'%
+ }{%
+ You've told me to redefine the caption `\string#2' at language
+ `#1',\MessageBreak
+ but `\expandafter\string\csname captions#1\endcsname' is not
+ defined.\MessageBreak
+ If you'll continue it will be defined.%
+ }
+ \@namedef{captions#1}{}%
+ }{}%
+ \begingroup%
+ \csname captions#1\endcsname%
+ \ifx #2\undefined%
+ \ClassError{%
+ scrlttr2%
+ }{%
+ `\string#2' not defined at language `#1'%
+ }{%
+ You've told me to redefine `\string#2' at language
+ `#1',\MessageBreak
+ but it is not defined.\MessageBreak
+ If you'll continue it will be defined.%
+ }
+ \fi
+ \endgroup
+ \expandafter\g@addto@macro\csname captions#1\endcsname{%
+ \def#2{#3}}%
+ \begingroup
+ \def\@tempb{#1}%
+ \ifx\@tempb\languagename
+ \def\@tempa{\endgroup\csname captions#1\endcsname}%
+ \else
+ \let\@tempa\endgroup
+ \fi
+ \@tempa
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% F"ur das Datum wird gleiches nicht ben"otigt, da hier direkt mit
+% |\providecommand|, |\newcommand| und |\renewcommand| gearbeitet
+% werden kann.
+% \begin{macro}{\g@addnumerical@date}
+% Intern wird bei der Briefklasse aber ein Makro ben"otigt, mit dem an
+% existierende Datumsumschaltungen -- und nur an existierende --
+% weitere Befehle angeh"angt werden k"onnen.
+% \begin{macrocode}
+%<*scrlettr>
+\newcommand*{\g@addnumerical@date}[2]{%
+ \@ifundefined{date#1}{%
+ \ClassInfo{%
+ scrlttr2%
+ }{%
+ no date found for language `#1'\MessageBreak
+ --> skipped%
+ }
+ }{%
+ \expandafter\g@addto@macro\csname date#1\endcsname{%
+ \let\sym@date=\today%
+ \def\num@date{#2}%
+ \def\today{\if@orgdate\sym@date\else\num@date\fi}%
+ }
+ }
+ }
+%</scrlettr>
+% \end{macrocode}
+% \end{macro}
+%
+% Weil es in fr"uheren Versionen zu Problemen damit gekommen ist,
+% werden diese jedoch erst bei |\begin{document}| definiert. Dabei
+% wird |\providecaptionname| verwendet, so dass sie auch schon vor
+% |\begin{document}| mit |\newcaptionname| anderslautend definiert
+% werden k"onnen.
+% \begin{table}
+% \centering
+% \begin{tabular}{ll}
+% Sprache & Spender \\\hline\\[-1.6ex]
+% English & Frank Neukam, Michael Dewey, Markus Kohm \\
+% Deutsch & Frank Neukam, Markus Kohm \\
+% Franz"osisch & Frank Neukam, Henk Jongbloets \\
+% Italienisch & Simone Naldi \\
+% Spanisch & Ralph J.\ Hangleiter, Alejandro L\'opez-Valencia\\
+% Kroatisch & Branka Lon\v{c}arevi\'{c} \\
+% Holl"andisch & Henk Jongbloets \\
+% \end{tabular}
+% \caption{Liste der unterst"utzten Sprachen und der
+% \emph{Sprachspender}}
+% \end{table}
+% Eine Besonderheit stellt die englische Sprache dar. Es wird
+% versucht, diese als Notersatz immer zu definieren.
+% \begin{macrocode}
+%<*scrlettr>
+\AtBeginDocument{
+ \@ifundefined{captionsenglish}{\let\captionsenglish\@empty}{}%
+ \providecaptionname{english}\yourrefname{Your ref.}%
+ \providecaptionname{english}\yourmailname{Your letter of}%
+ \providecaptionname{english}\myrefname{Our ref.}%
+ \providecaptionname{english}\customername{Customer no.}%
+ \providecaptionname{english}\invoicename{Invoice no.}%
+ \providecaptionname{english}\subjectname{Subject}%
+ \providecaptionname{english}\ccname{cc}%
+ \providecaptionname{english}\enclname{encl}%
+ \providecaptionname{english}\headtoname{To}%
+ \providecaptionname{english}\headfromname{From}%
+ \providecaptionname{english}\datename{Date}%
+ \providecaptionname{english}\pagename{Page}%
+ \providecaptionname{english}\phonename{Phone}%
+ \providecaptionname{english}\faxname{Fax}%
+ \providecaptionname{english}\emailname{Email}%
+ \providecaptionname{english}\wwwname{Url}%
+ \providecaptionname{english}\bankname{Bank account}%
+ \providecaptionname{USenglish}\yourrefname{Your ref.}%
+ \providecaptionname{USenglish}\yourmailname{Your letter of}%
+ \providecaptionname{USenglish}\myrefname{Our ref.}%
+ \providecaptionname{USenglish}\customername{Customer no.}%
+ \providecaptionname{USenglish}\invoicename{Invoice no.}%
+ \providecaptionname{USenglish}\subjectname{Subject}%
+ \providecaptionname{USenglish}\ccname{cc}%
+ \providecaptionname{USenglish}\enclname{encl}%
+ \providecaptionname{USenglish}\headtoname{To}%
+ \providecaptionname{USenglish}\headfromname{From}%
+ \providecaptionname{USenglish}\datename{Date}%
+ \providecaptionname{USenglish}\pagename{Page}%
+ \providecaptionname{USenglish}\phonename{Phone}%
+ \providecaptionname{USenglish}\faxname{Fax}%
+ \providecaptionname{USenglish}\emailname{Email}%
+ \providecaptionname{USenglish}\wwwname{Url}%
+ \providecaptionname{USenglish}\bankname{Bank account}%
+ \providecaptionname{american}\yourrefname{Your ref.}%
+ \providecaptionname{american}\yourmailname{Your letter of}%
+ \providecaptionname{american}\myrefname{Our ref.}%
+ \providecaptionname{american}\customername{Customer no.}%
+ \providecaptionname{american}\invoicename{Invoice no.}%
+ \providecaptionname{american}\subjectname{Subject}%
+ \providecaptionname{american}\ccname{cc}%
+ \providecaptionname{american}\enclname{encl}%
+ \providecaptionname{american}\headtoname{To}%
+ \providecaptionname{american}\headfromname{From}%
+ \providecaptionname{american}\datename{Date}%
+ \providecaptionname{american}\pagename{Page}%
+ \providecaptionname{american}\phonename{Phone}%
+ \providecaptionname{american}\faxname{Fax}%
+ \providecaptionname{american}\emailname{Email}%
+ \providecaptionname{american}\wwwname{Url}%
+ \providecaptionname{american}\bankname{Bank account}%
+ \providecaptionname{british}\yourrefname{Your ref.}%
+ \providecaptionname{british}\yourmailname{Your letter of}%
+ \providecaptionname{british}\myrefname{Our ref.}%
+ \providecaptionname{british}\customername{Customer no.}%
+ \providecaptionname{british}\invoicename{Invoice no.}%
+ \providecaptionname{british}\subjectname{Subject}%
+ \providecaptionname{british}\ccname{cc}%
+ \providecaptionname{british}\enclname{encl}%
+ \providecaptionname{british}\headtoname{To}%
+ \providecaptionname{british}\headfromname{From}%
+ \providecaptionname{british}\datename{Date}%
+ \providecaptionname{british}\pagename{Page}%
+ \providecaptionname{british}\phonename{Phone}%
+ \providecaptionname{british}\faxname{Fax}%
+ \providecaptionname{british}\emailname{Email}%
+ \providecaptionname{british}\wwwname{Url}%
+ \providecaptionname{british}\bankname{Bank account}%
+ \providecaptionname{UKenglish}\yourrefname{Your ref.}%
+ \providecaptionname{UKenglish}\yourmailname{Your letter of}%
+ \providecaptionname{UKenglish}\myrefname{Our ref.}%
+ \providecaptionname{UKenglish}\customername{Customer no.}%
+ \providecaptionname{UKenglish}\invoicename{Invoice no.}%
+ \providecaptionname{UKenglish}\subjectname{Subject}%
+ \providecaptionname{UKenglish}\ccname{cc}%
+ \providecaptionname{UKenglish}\enclname{encl}%
+ \providecaptionname{UKenglish}\headtoname{To}%
+ \providecaptionname{UKenglish}\headfromname{From}%
+ \providecaptionname{UKenglish}\datename{Date}%
+ \providecaptionname{UKenglish}\pagename{Page}%
+ \providecaptionname{UKenglish}\phonename{Phone}%
+ \providecaptionname{UKenglish}\faxname{Fax}%
+ \providecaptionname{UKenglish}\emailname{Email}%
+ \providecaptionname{UKenglish}\wwwname{Url}%
+ \providecaptionname{UKenglish}\bankname{Bank account}%
+ \providecaptionname{german}\yourrefname{Ihr Zeichen}%
+ \providecaptionname{german}\yourmailname{Ihr Schreiben vom}%
+ \providecaptionname{german}\myrefname{Unser Zeichen}%
+ \providecaptionname{german}\customername{Kundennummer}%
+ \providecaptionname{german}\invoicename{Rechnungsnummer}%
+ \providecaptionname{german}\subjectname{Betrifft}%
+ \providecaptionname{german}\ccname{Kopien an}%
+ \providecaptionname{german}\enclname{Anlagen}%
+ \providecaptionname{german}\headtoname{An}%
+ \providecaptionname{german}\headfromname{Von}%
+ \providecaptionname{german}\datename{Datum}%
+ \providecaptionname{german}\pagename{Seite}%
+ \providecaptionname{german}\phonename{Telephon}%
+ \providecaptionname{german}\faxname{Fax}%
+ \providecaptionname{german}\emailname{E-Mail}%
+ \providecaptionname{german}\wwwname{URL}%
+ \providecaptionname{german}\bankname{Bankverbindung}%
+ \providecaptionname{ngerman}\yourrefname{Ihr Zeichen}%
+ \providecaptionname{ngerman}\yourmailname{Ihr Schreiben vom}%
+ \providecaptionname{ngerman}\myrefname{Unser Zeichen}%
+ \providecaptionname{ngerman}\customername{Kundennummer}%
+ \providecaptionname{ngerman}\invoicename{Rechnungsnummer}%
+ \providecaptionname{ngerman}\subjectname{Betrifft}%
+ \providecaptionname{ngerman}\ccname{Kopien an}%
+ \providecaptionname{ngerman}\enclname{Anlagen}%
+ \providecaptionname{ngerman}\headtoname{An}%
+ \providecaptionname{ngerman}\headfromname{Von}%
+ \providecaptionname{ngerman}\datename{Datum}%
+ \providecaptionname{ngerman}\pagename{Seite}%
+ \providecaptionname{ngerman}\phonename{Telefon}%
+ \providecaptionname{ngerman}\faxname{Fax}%
+ \providecaptionname{ngerman}\emailname{E-Mail}%
+ \providecaptionname{ngerman}\wwwname{URL}%
+ \providecaptionname{ngerman}\bankname{Bankverbindung}%
+ \providecaptionname{austrian}\yourrefname{Ihr Zeichen}%
+ \providecaptionname{austrian}\yourmailname{Ihr Schreiben vom}%
+ \providecaptionname{austrian}\myrefname{Unser Zeichen}%
+ \providecaptionname{austrian}\customername{Kundennummer}%
+ \providecaptionname{austrian}\invoicename{Rechnungsnummer}%
+ \providecaptionname{austrian}\subjectname{Betrifft}%
+ \providecaptionname{austrian}\ccname{Kopien an}%
+ \providecaptionname{austrian}\enclname{Anlagen}%
+ \providecaptionname{austrian}\headtoname{An}%
+ \providecaptionname{austrian}\headfromname{Von}%
+ \providecaptionname{austrian}\datename{Datum}%
+ \providecaptionname{austrian}\pagename{Seite}%
+ \providecaptionname{austrian}\phonename{Telefon}%
+ \providecaptionname{austrian}\faxname{Fax}%
+ \providecaptionname{austrian}\emailname{E-Mail}%
+ \providecaptionname{austrian}\wwwname{URL}%
+ \providecaptionname{austrian}\bankname{Bankverbindung}%
+ \providecaptionname{french}\yourrefname{Vos r\'ef\'erences}%
+ \providecaptionname{french}\yourmailname{Votre lettre du}%
+ \providecaptionname{french}\myrefname{Nos r\'ef\'erences}%
+ \providecaptionname{french}\customername{Num\'ero de client}%
+ \providecaptionname{french}\invoicename{Num\'ero de facture}%
+ \providecaptionname{french}\subjectname{Concernant}%
+ \providecaptionname{french}\ccname{Copie \`a}%
+ \providecaptionname{french}\enclname{Annexes}%
+ \providecaptionname{french}\headtoname{A}%
+ \providecaptionname{french}\headfromname{De}%
+ \providecaptionname{french}\datename{Date}%
+ \providecaptionname{french}\pagename{Page}%
+ \providecaptionname{french}\phonename{T\'el\'ephone}%
+ \providecaptionname{french}\faxname{T\'el\'efax}%
+ \providecaptionname{french}\emailname{E-mail}%
+ \providecaptionname{french}\wwwname{URL}%
+ \providecaptionname{french}\bankname{Compte en banque}%
+ \providecaptionname{italian}\yourrefname{Vs./Rif.}%
+ \providecaptionname{italian}\yourmailname{Vs.~lettera del}%
+ \providecaptionname{italian}\myrefname{Ns./Rif.}%
+ \providecaptionname{italian}\customername{Nr.~cliente}%
+ \providecaptionname{italian}\invoicename{Nr.~fattura}%
+ \providecaptionname{italian}\subjectname{Oggetto}%
+ \providecaptionname{italian}\ccname{Per conoscenza}%
+ \providecaptionname{italian}\enclname{Allegato}%
+ \providecaptionname{italian}\headtoname{A}%
+ \providecaptionname{italian}\headfromname{}% TODO: translate it
+ \providecaptionname{italian}\datename{Data}%
+ \providecaptionname{italian}\pagename{Pagina}%
+ \providecaptionname{italian}\phonename{}% TODO: translate it
+ \providecaptionname{italian}\faxname{}% TODO: translate it
+ \providecaptionname{italian}\emailname{}% TODO: translate it
+ \providecaptionname{italian}\wwwname{}% TODO: translate it
+ \providecaptionname{italian}\bankname{}% TODO: translate it
+ \providecaptionname{spanish}\yourrefname{Su ref.}%
+ \providecaptionname{spanish}\yourmailname{Su carta de}%
+ \providecaptionname{spanish}\myrefname{Nuestra ref.}%
+ \providecaptionname{spanish}\customername{No. de cliente}%
+ \providecaptionname{spanish}\invoicename{No. de factura}%
+ \providecaptionname{spanish}\subjectname{Asunto}%
+ \providecaptionname{spanish}\ccname{Copias}%
+ \providecaptionname{spanish}\enclname{Adjunto}%
+ \providecaptionname{spanish}\headtoname{A}%
+ \providecaptionname{spanish}\headfromname{De}%
+ \providecaptionname{spanish}\datename{Fecha}%
+ \providecaptionname{spanish}\pagename{P\'agina}%
+ \providecaptionname{spanish}\phonename{Tel\'efono}%
+ \providecaptionname{spanish}\faxname{Fax}%
+ \providecaptionname{spanish}\emailname{Email}% or Correo electr\'onico
+ \providecaptionname{spanish}\wwwname{URL}% or P\`agina web
+ \providecaptionname{spanish}\bankname{Cuenta bancaria}%
+ \providecaptionname{croatian}\yourrefname{Va\v{s} znak}%
+ \providecaptionname{croatian}\yourmailname{Va\v{s}e pismo od}%
+ \providecaptionname{croatian}\myrefname{Na\v{s} znak}%
+ \providecaptionname{croatian}\customername{Broj kupca}%
+ \providecaptionname{croatian}\invoicename{Broj fakture}%
+ \providecaptionname{croatian}\subjectname{Predmet}%
+ \providecaptionname{croatian}\ccname{Kopija}%
+ \providecaptionname{croatian}\enclname{Privitak}%
+ \providecaptionname{croatian}\headtoname{Prima}%
+ \providecaptionname{croatian}\headfromname{\v{S}alje}%
+ \providecaptionname{croatian}\datename{Nadnevak}%
+ \providecaptionname{croatian}\pagename{Stranica}%
+ \providecaptionname{croatian}\phonename{Telefon}%
+ \providecaptionname{croatian}\faxname{Fax}%
+ \providecaptionname{croatian}\emailname{E-Mail}%
+ \providecaptionname{croatian}\wwwname{URL}%
+ \providecaptionname{croatian}\bankname{Bankovna veza}%
+ \providecaptionname{dutch}\yourrefname{Uw kenmerk}%
+ \providecaptionname{dutch}\yourmailname{Uw brief van}%
+ \providecaptionname{dutch}\myrefname{Ons kenmerk}%
+ \providecaptionname{dutch}\customername{Klant No.}%
+ \providecaptionname{dutch}\invoicename{Rekening No.}%
+ \providecaptionname{dutch}\subjectname{Onderwerp}%
+ \providecaptionname{dutch}\ccname{Kopie aan}%
+ \providecaptionname{dutch}\enclname{Bijlage(n)}%
+ \providecaptionname{dutch}\headtoname{Aan}%
+ \providecaptionname{dutch}\headfromname{Van}%
+ \providecaptionname{dutch}\datename{Datum}%
+ \providecaptionname{dutch}\pagename{Pagina}%
+ \providecaptionname{dutch}\phonename{Telefoon}%
+ \providecaptionname{dutch}\faxname{Fax}%
+ \providecaptionname{dutch}\emailname{E--mail}%
+ \providecaptionname{dutch}\urlname{URL}%
+ \providecaptionname{dutch}\bankname{Bankrekening}%
+% \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}
+%
+% \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}
+% \begin{macro}{\datecroatian}
+% \changes{v2.8q}{2001/05/10}{Neu}
+% \begin{macro}{\datedutch}
+% \changes{v2.8q}{2002/02/01}{Neu}
+% Dar"uber hinaus ist auch das Datumsformat sprachabh"angig. Dies wird
+% hier ebenfalls beachtet.
+% \begin{macrocode}
+ \g@addnumerical@date{english}{%
+ \number\day/\number\month/\number\year}
+ \g@addnumerical@date{british}{%
+ \number\day/\number\month/\number\year}
+ \g@addnumerical@date{UKenglish}{%
+ \number\day/\number\month/\number\year}
+ \g@addnumerical@date{USenglish}{%
+ \number\month/\number\day/\number\year}
+ \g@addnumerical@date{american}{%
+ \number\month/\number\day/\number\year}
+ \g@addnumerical@date{german}{%
+ \number\day.\,\number\month.\,\number\year}
+ \g@addnumerical@date{ngerman}{%
+ \number\day.\,\number\month.\,\number\year}
+ \g@addnumerical@date{austrian}{%
+ \number\day.\,\number\month.\,\number\year}
+ \g@addnumerical@date{french}{%
+ \number\day.\,\number\month.\,\number\year}
+ \g@addnumerical@date{italian}{%
+ \number\day.\,\number\month.\,\number\year}
+ \g@addnumerical@date{spanish}{%
+ \number\day.\,\number\month.\,\number\year}
+ \g@addnumerical@date{croatian}{%
+ \number\day.\,\number\month.\,\number\year.}
+ \g@addnumerical@date{dutch}{%
+ \number\day.\,\number\month.\,\number\year}
+% \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}
+% 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 \cs{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}
+% \changes{v2.5e}{2000/07/14}{Workaround f"ur Sprache nohyphenation
+% durch Format mit Babel-Erweiterung aber kein Babel package
+% geladen}
+% \begin{macrocode}
+ \captionsenglish
+ \dateenglish
+% \end{macrocode}
+% \changes{v2.9i}{2002/09/04}{Workaround f"ur den
+% \texttt{hyphen.cfg}-Bug von Babel}
+% Wird die \texttt{hyphen.cfg} von Babel verwendet, wird aber das
+% \textsl{babel}-Paket nicht geladen, so ist \cs{languagename} h"aufig
+% nicht korrekt, so dass dann \cs{selectlanguage} mit
+% \cs{languagename} als Argument schief geht. Daher hier ein
+% Workaround f"ur das Problem.
+% \begin{macrocode}
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname date\languagename\endcsname\relax
+ \ClassWarningNoLine{%
+ scrlttr2%
+ }{%
+ \string\language\space is \the\language, \string\languagename\space is
+ `\languagename'\MessageBreak
+ but \expandafter\string\csname
+ date\languagename\endcsname\space not defined!\MessageBreak
+ This seems to be a bug at you're `hyphen.cfg'.\MessageBreak
+ I'l undefine \string\languagename\space to avoid errors%
+ }%
+ \let\languagename=\undefined
+ \fi
+ \ifx\languagename\undefined
+ \ClassWarningNoLine{scrlttr2}{\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', `ngerman', ...)}
+ \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
+ \ifx\l@croatian\undefined\else\ifnum\language=\l@croatian
+ \captionscroatian
+ \datecroatian
+ \fi\fi
+ \ifx\l@dutch\undefined\else\ifnum\language=\l@dutch
+ \captionsdutch
+ \datedutch
+ \fi\fi
+ \else
+ \edef\@tempa{nohyphenation}
+ \ifx\languagename\@tempa
+ \ClassWarningNoLine{%
+ scrlttr2%
+ }{%
+ You've selected language `\languagename'.\MessageBreak
+ Maybe your LaTeX format contains Babel extension\MessageBreak
+ but you have not selected a language using\MessageBreak
+ Babel package.\MessageBreak
+ Please select another language!\MessageBreak
+ Only as a workaround english captions and date\MessageBreak
+ will be used%
+ }%
+ \else
+ \expandafter\selectlanguage\expandafter{\languagename}
+ \ClassInfo{%
+ scrlttr2%
+ }{%
+ used language is `\languagename'.\MessageBreak
+ Supported languages are `english', `UKenglish',\MessageBreak
+ `british', `american', `USenglish',\MessageBreak
+ `german', `ngerman', `austrian',\MessageBreak
+ `dutch', `italian', `spanish', `croatian'%
+ }
+ \fi
+ \fi
+ }
+%</scrlettr>
+% \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}
+%
+%
+% \subsection{Erweiterung der Internationalisierung}
+%
+% Dergleichen gibt es bei Briefen nicht.
+% \begin{macrocode}
+%<*!scrlettr>
+% \end{macrocode}
+%
+% \changes{v2.2c}{1995/05/25}{Anpassung an CJK von Werner Lemberg.}
+%
+% Die Standardnamen wie |\figurename| etc. sind nicht immer
+% ausreichend, da manche Sprachen Z"ahlw"orter vor oder nach dem
+% jeweiligen Z"ahler einf"ugen m"ussen (man denke da sogar im
+% Deutschen an "`Abbildung~1"' und "`Erste Abbildung"'). Desweiteren
+% werden bei manchen Sprachen die Zwischenr"aume anders gesetzt
+% bzw. sogar ganz unterdr"uckt.
+%
+% Es gibt drei Ebenen, die man modifizieren kann, um verschiedenste
+% Sprachen zu implementieren: Ebene~1 besteht aus den hinl"anglich
+% bekannten Makros wie |\figurename| und alle weiteren Makros, die
+% z.\,B. |german.sty| modifiziert. Desweiteren k"onnen die Makros
+% |\sectfont| etc. etwaige zus"atzliche Fonts aktivieren. Ebene~2 ist
+% die zus"atzliche Adaptierung von den Z"ahlern selbst (|\thesection|
+% k"onnte z.B. chinesische Schriftzeichen ansprechen anstelle von
+% arabischen Ziffern). Die allgemeinste Form der dritten Ebene
+% besteht aus den Makros |\chaptermarkformat|, |\sectionmarkformat|,
+% |\subsectionmarkformat|, |\partformat|, |\chapterformat|,
+% |\figureformat|, |\tableformat| und |\captionformat|, welche die
+% "Anderung der Reihenfolge von Z"ahler und Titel sowie die genaue
+% Kontrolle der Zwischenr"aume etc. erm"oglichen.
+%
+% F"ur die g"angigen Sprachen k"onnen alle Makros f"ur die dritte
+% Ebene identisch definiert werden. Bei Verwendung von "`exotischen"'
+% Sprachen, aber auch speziellen Darstellungen in den g"angigen
+% Sprachen k"onnen diese Makros umdefiniert werden.
+%
+% Das Konzept f"ur der Internationalisierung mit der dritten Ebene wurde
+% urspr"unglich von Werner Lemberg\footnote{Werner Lemberg ist im InterNet
+% unter \texttt{a7621gac@awiuni11.bitnet} zu erreichen.} entwickelt.
+% Die "`caption files"' seines CJK-Pakets (\textbf{C}hinesisch,
+% \textbf{J}apanisch, \textbf{K}oreanisch) bauen auf diesem Konzept auf.
+% Damit ist \textsf{KOMA-Script} f"ur alle m"oglichen Sprachanpassungen
+% bestens ger"ustet.
+%
+% \begin{macro}{\if@altsecnumformat}
+% \changes{v2.3c}{1995/08/06}{Einf"uhrung von
+% \cs{if@altsecnumformat}}
+% \begin{macro}{\@altsecnumformattrue}
+% \begin{macro}{\@altsecnumformatfalse}
+% Dieses Hilfsmakro wird f"ur die Umschaltung auf Duden-Regel~6 bei der
+% Numerierung ben"otigt.
+% \begin{macro}{\if@autodot}
+% \changes{v2.8e}{2001/07/10}{Neu}
+% \begin{macro}{\@autodottrue}
+% \begin{macro}{\@autodotfalse}
+% Damit die Umschaltung auch wieder zur"uck auf Regel~5 automatisch
+% erfolgen kann, wird ein zweiter Schalter ben"otigt.
+% \begin{macrocode}
+\newif\if@altsecnumformat\@altsecnumformatfalse
+\newif\if@autodot\@autodotfalse
+% \end{macrocode}
+% \begin{macro}{\@maybeautodot}
+% \changes{v2.8e}{2001/07/10}{Neu}
+% Ob der automatische Punkt aktiviert werden muss, wird aufgrund der
+% Darstellung eines Z"ahlers entschieden. Diese wird dem Makro als
+% Argument "ubergeben (|\thepart|, |\thechapter| etc.). Durch
+% Verwendung einer Gruppe, werden alle Definitionen lokal gehalten.
+% \begin{macrocode}
+\newcommand{\@maybeautodot}[1]{\if@autodot\else\begingroup%
+ \expandafter\@@maybeautodot #1\@stop\endgroup\fi}
+% \end{macrocode}
+% \begin{macro}{\@@maybeautodot}
+% \changes{v2.8e}{2001/07/10}{Neu}
+% Die expandierte Darstellung wird dann auf Darstellungsbefehle f"ur
+% Z"ahler gescannt.
+% \begin{macrocode}
+\newcommand*{\@@maybeautodot}[1]{%
+ \ifx #1\@stop\let\@@maybeautodot\relax%
+ \else%
+ \ifx #1\Alph \aftergroup\@autodottrue\fi%
+ \ifx #1\alph \aftergroup\@autodottrue\fi%
+ \ifx #1\Roman \aftergroup\@autodottrue\fi%
+ \ifx #1\roman \aftergroup\@autodottrue\fi%
+ \ifx #1\@Alph \aftergroup\@autodottrue\fi%
+ \ifx #1\@alph \aftergroup\@autodottrue\fi%
+ \ifx #1\@Roman \aftergroup\@autodottrue\fi%
+ \ifx #1\@roman \aftergroup\@autodottrue\fi%
+ \ifx #1\romannumeral \aftergroup\@autodottrue\fi%
+ \fi%
+ \@@maybeautodot}
+% \end{macrocode}
+% \begin{macro}{\scr@sect}
+% \begin{macro}{\@sect}
+% Damit auch alle mit |startsection| definierten Gliederungsebenen bei
+% der Entscheidung ber"ucksichtigt werden, muss ein internes Makro des
+% \LaTeX-Kerns erweitert werden. F"ur die Ebenen |part| und |chapter|
+% wird dies direkt in der Definition der Befehle erledigt.
+% \begin{macrocode}
+\let\scr@sect\@sect
+\renewcommand*{\@sect}[1]{\stepcounter{#1}%
+ \expandafter\@maybeautodot\csname the#1\endcsname%
+ \addtocounter{#1}{-1}\scr@sect{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% Dabei soll die Umstellung beim zweiten TeX-Lauf bereits am Anfang
+% aktiv sein. Deshalb wird die Information am Ende in die aux-Datei
+% geschrieben.
+% \changes{v2.9k}{2003/01/12}{es wird direkt in \cs{@mainaux} geschrieben}
+% \begin{macrocode}
+\AtEndDocument{%
+ \if@autodot\if@filesw\immediate\write\@mainaux{%
+ \string\global\string\@altsecnumformattrue}
+ \fi\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\chaptermarkformat}
+% \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer erh"oht.}
+% \changes{v2.3c}{1995/08/06}{Duden Regel 6.}
+% \changes{v2.8}{2001/06/15}{\cs{chapappifprefix} eingef"ugt}
+% \changes{v2.8o}{2001/09/19}{\cs{chapappifchapterprefix} statt
+% \cs{chapappifprefix}}
+% \begin{macro}{\sectionmarkformat}
+% \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer erh"oht.}
+% \changes{v2.3c}{1995/08/06}{Duden Regel 6.}
+% \begin{macro}{\subsectionmarkformat}
+% \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer erh"oht.}
+% \changes{v2.3c}{1995/08/06}{Duden Regel 6.}
+% Diese drei Makros werden f"ur die Markierungen innerhalb der pagestyles
+% in |\chaptermark|, |\sectionmark| und |\subsectionmark| verwendet.
+% Die drei Makros sind bewu"st unabh"angig voneinander definiert.
+% \begin{macro}{\autodot}
+% \changes{v2.7}{2001/01/03}{Neues Makro \cs{autodot}.}
+% \changes{v2.7}{2001/01/03}{Abstand von \cs{quad} auf \cs{enskip}
+% verringert.}
+% Innerhalb der Makros wird ein Makro verwendet, das automatisch einen
+% Punkt setzt, falls dies nach dem Duden als erforderlich angesehen
+% wird.
+% \begin{macrocode}
+\newcommand*\autodot{\if@altsecnumformat.\fi}
+%<*scrreprt|scrbook>
+\newcommand*\chaptermarkformat {\chapappifchapterprefix{\ }%
+ \thechapter\autodot\enskip}
+\newcommand*\sectionmarkformat {\thesection\autodot\enskip}
+%</scrreprt|scrbook>
+%<*scrartcl>
+\newcommand*\sectionmarkformat {\thesection\autodot\enskip}
+\newcommand*\subsectionmarkformat {\thesubsection\autodot\enskip}
+%</scrartcl>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\partformat}
+% \changes{v2.3c}{1995/08/06}{Duden Regel 6.}
+% \changes{v2.5f}{1999/02/14}{"Uberfl"ussiges Leerzeichen am Ende
+% entfernt}
+% \changes{v2.7h}{2001/04/22}{verlorenen Backslash in \cs{autodot}
+% wieder eingef"ugt}
+% \begin{macro}{\chapterformat}
+% \changes{v2.3c}{1995/08/06}{Duden Regel 6.}
+% \changes{v2.7}{2000/01/03}{Einfaches Leerzeichen durch \cs{enskip}
+% ersetzt.}
+% \changes{v2.8}{2001/06/15}{\cs{chapappifprefix} eingef"ugt}
+% \changes{v2.8o}{2001/09/19}{\cs{chapappifchapterprefix} statt
+% \cs{chapappifprefix}}
+% \begin{macro}{\chapappifprefix}
+% \changes{v2.8}{2001/06/15}{Neu}
+% \changes{v2.8o}{2001/09/19}{obsolet}
+% \begin{macro}{\chapappifchapterprefix}
+% \changes{v2.8o}{2001/09/19}{Neu}
+% \changes{v2.8o}{2001/09/19}{Argument ist nicht optional}
+% \begin{macro}{\chapapp}
+% \changes{v2.8}{2001/06/15}{Neu}
+% \begin{macro}{\figureformat}
+% \changes{v2.3c}{1995/08/06}{Duden Regel 6.}
+% \begin{macro}{\tableformat}
+% \changes{v2.3c}{1995/08/06}{Duden Regel 6.}
+% \begin{macro}{\captionformat}
+% \changes{v2.3c}{1995/08/06}{Duden Regel 6.}
+% Diese f"unf Makros werden nun innerhalb der entsprechenden
+% "Uberschriften, Unterschriften, Titel etc. verwendet.
+% \begin{macrocode}
+\newcommand*{\partformat}{\partname~\thepart\autodot}
+%<*scrreprt|scrbook>
+\newcommand*{\chapterformat}{%
+ \chapappifchapterprefix{\ }\thechapter\autodot\enskip}
+%</scrreprt|scrbook>
+\newcommand*{\figureformat}{\figurename~\thefigure%
+%<!scrartcl> \autodot%
+ }
+\newcommand*{\tableformat}{\tablename~\thetable%
+%<!scrartcl> \autodot%
+}
+\newcommand*{\captionformat}{:\ }
+% \end{macrocode}
+% Das in |\chapterformat| verwendete Makro |\chapappifchapterprefix| setzt
+% abh"angig von |\if@chapterprefix| noch das Makro |\chapapp| gefolgt
+% vom obliatorischen Argument. |\chapapp| macht |\@chapapp| auf
+% Anwenderebene verf"ugbar. Der Vorteil des neuen
+% |\chapappifchapterprefix| gegen"uber dem alten |\chapappifprefix|
+% ist, dass nun beim Umdefinieren von |\chapterformat| und
+% |\chaptermarkformat| wieder |\renewcommand| verwendet werden kann
+% und beim Umschalten in den Anhang die Kopfzeile korrekt ist, weil
+% das Makro nun nicht mehr gesch"utzt ist, sondern direkt expandiert.
+% \begin{macrocode}
+%<*scrbook|scrreprt>
+\newcommand*{\chapappifprefix}[1][]{%
+ \ClassWarning{%
+%<scrbook> scrbook%
+%<scrreprt> scrreprt%
+ }{%
+ Please don't use obsolete command
+ \string\chapappifprefix.\MessageBreak
+ The new command \string\chapappifchapterprefix\space has
+ an\MessageBreak
+ obligatory instead of an optional argument. Use that\MessageBreak
+ new command%
+ }%
+ \if@chapterprefix\chapapp#1\fi}
+\newcommand*{\chapappifchapterprefix}[1]{\if@chapterprefix\chapapp#1\fi}
+\newcommand*{\chapapp}{\@chapapp}
+%</scrbook|scrreprt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Dieses Makro wird bei allen "Uberschriften mit |\@startsection|
+% verwendet.
+% \begin{macro}{\@seccntformat}
+% \changes{v2.3c}{1995/08/06}{CJK erweitert}
+% \changes{v2.9p}{2004/01/07}{\cs{protect} eingef"ugt}
+% \begin{macro}{\othersectionlevelsformat}
+% \changes{v2.7}{2000/01/03}{F"ur alle "ubrigen Gliederungsebenen
+% ebenfalls ein Makro auf Anwenderebene
+% eingef"uhrt.}
+% \changes{v2.7}{2000/01/03}{\cs{quad} durch \cs{enskip} ersetzt.}
+% \changes{v2.7i}{2001/05/17}{\cs{let} durch \cs{def} ersetzt}
+% Wobei ein Hilfsmakro eingesetzt wird, das auf Anwenderseite umdefiniert
+% werden kann.
+% \begin{macrocode}
+\newcommand*{\othersectionlevelsformat}[1]{%
+ \csname the#1\endcsname\autodot\enskip}
+\renewcommand*{\@seccntformat}{\protect\othersectionlevelsformat}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</!scrlettr>
+% \end{macrocode}
+%
+%
+% \subsection{Die Brief-Umgebung}
+%
+% \begin{macrocode}
+%<*scrlettr>
+% \end{macrocode}
+%
+% \begin{environment}{letter}
+% \changes{v2.8q}{2002/01/16}{optionales Argument hinzugef"ugt}
+% \changes{v2.8q}{2002/01/16}{Fu"snotenz"ahler wird zur"uckgesetzt}
+% \changes{v2.9d}{2002/08/12}{Fu"snotenz"ahler wird korrekt zur"uckgesetzt}
+% Diese Umgebung ist etwas anders definiert, als normalerweise von
+% \LaTeX gewohnt. Mit ihr k"onnen innerhalb eines Dokuments beliebig
+% viele Briefe erzeugt werden. Eine der Abweichungen von der
+% Standardklasse besteht darin, dass als optionales Argument Optionen
+% gesetzt werden k"onnen.
+% \begin{macro}{\stopletter}
+% \begin{macro}{\@processto}
+% \changes{v2.9r}{2004/06/16}{robust gegen leeren Empf"anger}
+% \begin{macro}{\@xproc}
+% Die Adresse, die als Argument der Briefumgebung
+% "ubergeben 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"ahler
+% und Strafpunkte zur"uckgesetzt 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 "ubergebenen Optionen ausgef"uhrt.
+% \begin{macrocode}
+ \KOMAoptions{#1}%
+% \end{macrocode}
+% Zum Schluss werden die per \cs{AtBeginLetter} angegeben Anweisungen
+% ausgef"uhrt.
+% \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}
+% \begin{macro}{\fname@font}
+% \changes{v2.8q}{2002/01/28}{Neu}
+% Die Schriftart, die f"ur den Absendername verwendet
+% wird. Voreingestellt ist keine "Anderung.
+% \begin{macrocode}
+\newcommand*{\fname@font}{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\faddress@font}
+% \changes{v2.8q}{2002/01/28}{Neu}
+% Die Schriftart, die f"ur den Absender verwendet wird. Voreingestellt
+% ist keine "Anderung.
+% \begin{macrocode}
+\newcommand*{\faddr@font}{}
+% \end{macrocode}
+% \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"ugt. Dieser wird auch tats"achlich intern genutzt. Er
+% funktioniert prinzipiell wie der |\AtBeginDocument|-Haken. Zun"achst
+% macht der Haken rein gar nichts.
+% \begin{macrocode}
+\newcommand{\AtBeginLetter}{\g@addto@macro\@beginletterhook}
+\newcommand{\@beginletterhook}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macrocode}
+%</scrlettr>
+% \end{macrocode}
+%
+% \subsection{Briefspezifische Feld-Variablen}
+%
+% \begin{macrocode}
+%<*scrlettr>
+% \end{macrocode}
+%
+%
+% \begin{macro}{\newkomavar}
+% \changes{v2.8q}{2002/01/14}{Neu}
+% Bei Briefen gibt es eine ganze Reihe von speziellen Variablen. An
+% dieser Stelle sei als Beispiel nur das Feld "`Ihr Zeichen"`
+% genannt. Es ist nahezu unm"oglich alle diese Felder
+% vorherzusehen. Daher wurde in der neuen Briefklasse ein neuer
+% Mechanismus zur Definition solcher Felder geschaffen. Es wird
+% zwischen zwei Arten von Feldern unterschieden:
+% \begin{itemize}
+% \item Felder f"ur die Gesch"aftszeile
+% \item Felder f"ur sonstige Verwendung
+% \end{itemize}
+% Felder k"onnen aber auch nachtr"aglich zur Gesch"aftszeile
+% hinzugef"ugt werden. Die Sternvariante von \cs{newkomavar} f"uhrt
+% dies jedoch automatisch durch.
+% \begin{macro}{\@newkomavar}
+% Da mit einer Sternvariante gearbeitet wird, wird ein Hilfsmakro
+% ben"otigt. Das Makro erh"alt ein optionales und
+% ein obligatorisches Argument. Das optionale Argument ist dabei die
+% Voreinstellung f"ur den \emph{Ausgabenamen} des Feldes, der
+% ggf. ausgegeben werden soll. Das obligatorische Argument ist
+% \emph{Name} des Feldes, "uber den das Feld angesprochen wird.
+% Das Makro definiert zwei weitere Makros: \cs{\emph{scr@Name}@var} und
+% \cs{scr@\emph{Name}@name}.
+% \begin{macrocode}
+\newcommand*{\newkomavar}{%
+ \@ifstar {\@tempswatrue\@newkomavar}{\@tempswafalse\@newkomavar}}
+\newcommand*{\@newkomavar}[2][\relax]{%
+ \@ifundefined{scr@#2@name}{%
+ \@ifundefined{scr@#2@var}{%
+ \begingroup
+ \def\@tempa{#1}\def\@tempb{\relax}%
+ \ifx\@tempa\@tempb\endgroup\else
+ \endgroup\@namedef{scr@#2@name}{#1}%
+ \fi%
+ \expandafter\let\csname scr@#2@var\endcsname=\@empty
+ \if@tempswa\addtoreffields{#2}\fi
+ }{%
+ \ClassError{%
+ scrlttr2%
+ }{%
+ This should never happen%
+ }{%
+ The contents of the KOMA-Script variable `#2'\MessageBreak
+ is undefined, but the name of the variable is
+ defined.\MessageBreak
+ This should never happen. So someone crashs me!%
+ }
+ }
+ }{%
+ \ClassError{%
+ scrlttr2%
+ }{%
+ Variable `#2' already defined%
+ }{%
+ I'll ignore this command, if you'll continue.%
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\setkomavar}
+% \changes{v2.8q}{2002/01/14}{Neu}
+% Nat"urlich wird auch ein Befehl ben"otigt, um die Feldvariablen
+% zu setzen und ihnen ggf. einen neuen Namen f"ur die Ausgabe zu
+% geben. Der \emph{Name} der Feldvariable wird als obligatorisches
+% erstes Argument "ubergeben.
+% \begin{macro}{\@setkomavar}
+% \changes{v2.8q}{2002/01/14}{Neu}
+% Da dann zwischen einer Sternvariante und einer normalen
+% unterschieden werden soll wird ein Hilfsmakro ben"otigt.
+% \begin{macro}{\@setkomaname}
+% \changes{v2.8q}{2002/01/14}{Neu}
+% Die Sternvariante definiert nur den Ausgabename neu.
+% \begin{macro}{\@@setkomavar}
+% \changes{v2.8q}{2002/01/14}{Neu}
+% Da in der normalen Variante nach dem Stern ein optionales Argument
+% folgen kann, wird mit einem weiteren Hilfsmakro gearbeitet. Der
+% \emph{Ausgabename} wird dabei als optionales, zweites Argument
+% "ubergeben. Der \emph{Inhalt} wird als obligatorisches, drittes
+% Argument "ubergeben.
+% \begin{macrocode}
+\newcommand*{\setkomavar}{%
+ \@ifstar {\@setkomaname}{\@setkomavar}}
+\newcommand*{\@setkomavar}[1]{%
+ \@ifnextchar [%]
+ {\@@setkomavar{#1}}{\@@setkomavar{#1}[\relax]}}
+\newcommand*{\@setkomaname}[2]{%
+ \@ifundefined{scr@#1@var}{%
+ \@komavar@err{set}{#1}%
+ }{%
+ \@namedef{scr@#1@name}{#2}%
+ }%
+ }
+\newcommand*{\@@setkomavar}{}
+\long\def\@@setkomavar#1[#2]#3{%
+ \@ifundefined{scr@#1@var}{%
+ \@komavar@err{set}{#1}%
+ }{%
+ \@namedef{scr@#1@var}{#3}%
+ \begingroup
+ \def\@tempa{#2}\def\@tempb{\relax}%
+ \ifx\@tempa\@tempb\endgroup\else
+ \endgroup\@namedef{scr@#1@name}{#2}%
+ \fi
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@komavar@err}
+% \changes{v2.8q}{2002/01/14}{Neu}
+% Dieses Makro wird intern in den Makros \cs{setkomavar} und
+% \cs{usekomavar} verwendet.
+% \begin{macrocode}
+\newcommand*{\@komavar@err}[2]{%
+ \ClassError{%
+ scrlttr2%
+ }{%
+ KOMA-Script variable not defined%
+ }{%
+ You've tried to #1 the not defined KOMA-Script variable
+ `#2'.\MessageBreak
+ You have to define the variable using \string\newkomavar\space
+ before\MessageBreak
+ you do this.%
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\usekomavar}
+% \changes{v2.8q}{2002/01/14}{Neu}
+% \changes{v2.9i}{2002/09/04}{robust}
+% Selbstverst"andlich wird auch ein Makro ben"otigt, um auf den
+% Inhalt oder den Ausgabename einer Variablen zugreifen zu
+% k"onnen. Mit der normalen Variante wird dabei der Inhalt, mit der
+% Sternvariante der Name ausgegeben.
+% \begin{macro}{\@usekomavar}
+% \changes{v2.8q}{2002/01/14}{Neu}
+% \changes{v2.9i}{2002/09/04}{optionales Argument}
+% \changes{v2.9j}{2002/09/18}{\cs{@firstofone} als Defaultargument
+% eingefügt}
+% \begin{macro}{\@usekomaname}
+% \changes{v2.8q}{2002/01/14}{Neu}
+% \changes{v2.9i}{2002/09/04}{optionales Argument}
+% \changes{v2.9j}{2002/09/18}{\cs{@firstofone} als Defaultargument
+% eingefügt}
+% Da mir einer Sternvariante gearbeitet wird, werden zwei Hilfsmakros
+% ben"otigt.
+% \begin{macrocode}
+\DeclareRobustCommand*{\usekomavar}{%
+ \@ifstar {\@usekomaname}{\@usekomavar}}
+\newcommand*{\@usekomavar}[2][\@firstofone]{%
+ \@ifundefined{scr@#2@var}{%
+ \@komavar@err{use}{#2}%
+ }{%
+ #1{\@nameuse{scr@#2@var}}%
+ }%
+ }
+\newcommand*{\@usekomaname}[2][\@firstofone]{%
+ \@ifundefined{scr@#2@var}{%
+ \@komavar@err{use}{#2}%
+ }{%
+ #1{\@nameuse{scr@#2@name}}%
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifkomavarempty}
+% \changes{v2.8q}{2002/01/14}{Neu}
+% \changes{v2.9i}{2002/09/04}{Leerzeichen rausgeworfen}
+% \changes{v2.9i}{2002/09/04}{robust}
+% Es gibt auch noch ein Makro, um zu testen, ob eine KOMA-Script
+% Variable oder deren Name leer ist. Die Sternvariante ist wieder f"ur
+% den Namen zust"andig.
+% \begin{macro}{\if@komavarempty}
+% \changes{v2.8q}{2002/01/14}{Neu}
+% Da mit einer Sternvariante gearbeitet wird, wird wieder ein
+% Hilfsmakro verwendet.
+% \begin{macrocode}
+\DeclareRobustCommand*{\ifkomavarempty}{%
+ \begingroup
+ \@ifstar {\@tempswatrue\@ifkomavarempty}%
+ {\@tempswafalse\@ifkomavarempty}%
+ }
+\newcommand{\@ifkomavarempty}[3]{%
+ \@ifundefined{scr@#1@var}{%
+ \endgroup\@komavar@err{use}{#1}%
+ }{%
+ \if@tempswa\endgroup
+ \@ifundefined{scr@#1@name}{#2}{%
+ \expandafter\ifx\csname scr@#1@name\endcsname\@empty
+ #2%
+ \else
+ #3%
+ \fi
+ }%
+ \else\endgroup
+ \expandafter\ifx\csname scr@#1@var\endcsname\@empty
+ #2%
+ \else
+ #3%
+ \fi
+ \fi
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \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"achst besitzt die Briefklasse einige Variablen, die von Haus aus
+% nicht "uber einen Ausgabenamen verf"ugen, weil sie "ublicherweise
+% 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"angt.
+% \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"ur 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 "ublicherweise vorangestellt wird. Eine
+% Besonderheit stellt dabei \texttt{subject} dar. Der Ausgabename
+% beinhaltet dabei n"amlich auch die Trennzeichen, die hinter dem
+% Namen "ublicherweise stehen. Diese sind wiederum ein Variable, deren
+% Name der Ausgabename des Feldes ist. Will man also nur den Namen
+% aber nicht die Trennzeichen "andern, so "andert man statt dem Namen
+% von \texttt{subject} den Namen von \texttt{subjectseparator}.
+% "Ahnlich 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}
+%
+% \begin{macro}{\firsthead}
+% \changes{v2.8q}{2002/01/28}{\cs{@alignfrom} auf 10000 gesetzt}
+% \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}
+\newcommand{\firsthead}[1]{%
+ \renewcommand*{\@alignfrom}{10000}%
+ \renewcommand*{\@firsthead}{\noindent#1}%
+ }
+\newcommand{\firstfoot}[1]{%
+ \renewcommand*{\@firstfoot}{\noindent#1}%
+ }
+\newcommand{\nexthead}[1]{%
+ \renewcommand*{\@nexthead}{\noindent#1}%
+ }
+\newcommand{\nextfoot}[1]{%
+ \renewcommand*{\@nextfoot}{\noindent#1}%
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macrocode}
+%</scrlettr>
+% \end{macrocode}
+%
+%
+% \subsection{Briefspezifische Schalter und Befehle f"ur Faltmarken,
+% Adressfeld und Titel}
+%
+% \begin{macrocode}
+%<*scrlettr>
+% \end{macrocode}
+%
+%
+% \begin{macro}{\foldmarkson}
+% \begin{macro}{\foldmarksoff}
+% Diese Befehle dienen nur der Kompatibilit"at mit der alten
+% \texttt{scrlettr.cls}.
+% \begin{macrocode}
+\newcommand*{\foldmarkson}{%
+ \@ObsoleteCommand{\foldmarkson}{foldmarks=on}}
+\newcommand*{\foldmarksoff}{%
+ \@ObsoleteCommand{\foldmarksoff}{foldmarks=off}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\addrfieldon}
+% \begin{macro}{\addrfieldoff}
+% Diese Befehle dienen nur der Kompatibilit"at mit der alten
+% \texttt{scrlettr.cls}.
+% \begin{macrocode}
+\newcommand*{\addrfieldon}{%
+ \@ObsoleteCommand{\addrfieldon}{addrfield=on}}
+\newcommand*{\addrfieldoff}{%
+ \@ObsoleteCommand{\addrfieldoff}{addrfield=off}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\subjecton}
+% \begin{macro}{\subjectoff}
+% Diese Befehle dienen nur der Kompatibilit"at mit der alten
+% \texttt{scrlettr.cls}.
+% \begin{macrocode}
+\newcommand*{\subjecton}{%
+ \@ObsoleteCommand{\subjecton}{subject=titled}}
+\newcommand*{\subjectoff}{%
+ \@ObsoleteCommand{\subjectoff}{subject=untitled}}
+% \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}.}
+% Diese Befehle dienen nur der Kompatibilit"at mit der alten
+% \texttt{scrlettr.cls}.
+% \begin{macrocode}
+\newcommand*{\subjectafteron}{%
+ \@ObsoleteCommand{\subjectafteron}{subject=afteropening}}
+\newcommand*{\subjectafteroff}{%
+ \@ObsoleteCommand{\subjectafteroff}{subject=beforeopening}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macrocode}
+%</scrlettr>
+% \end{macrocode}
+%
+%
+% \subsection{Briefspezifische L"angen}
+%
+% \begin{macrocode}
+%<*scrlettr>
+% \end{macrocode}
+%
+% Zu Berechnung der Feldpositionen werden verschiedene
+% Dimensions-Variablen ben"otigt. Um jedoch nicht unn"otig viele
+% L"angenregister zu verbrauchen, wird hier mit einer
+% Pseudo-L"angen-Arithmetik gearbeitet.
+%
+% \begin{macro}{\@newplength}
+% \changes{v2.8q}{2001/10/06}{Neu}
+% \changes{v2.8q}{2001/10/06}{Kompatibilit"at zu \texttt{scrlettr.cls}
+% aufgegeben}
+% Dieses Makro definiert eine neue Pseude-L"ange und setzt sie auf den
+% Wert 0. Eine Pseudo-L"ange ist ein Makro, das eine L"ange enth"alt.
+% \begin{macrocode}
+\newcommand*{\@newplength}[1]{%
+ \@ifundefined{ltr@len@#1}{%
+ \expandafter\let\csname ltr@len@#1\endcsname=\z@%
+ }{%
+ \ClassError{scrlttr2}{%
+ pseudo-length \expandafter\string\csname ltr@len@#1\endcsname
+ already defined%
+ }{%
+ You tried to define a new pseudo-length using
+ \string\@newplength\MessageBreak
+ which is already defined. Try another name or
+ better\MessageBreak
+ Don't use this KOMA-Script internal macro}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\useplength}
+% \changes{v2.8q}{2001/10/06}{Neu}
+% Nat"urlich muss auf eine solche Pseudo-L"ange auch wieder lesend
+% zugeriffen werden k"onnen. Wir definieren dies hier so, dass es
+% au"serdem m"oglich ist, ein Vorzeichen zu verwenden. Ein Faktor ist
+% allerdings nicht m"oglich.
+% \begin{macrocode}
+\newcommand*{\useplength}[1]{%
+ \expandafter\number\expandafter\csname ltr@len@#1\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setlengthtoplength}
+% \changes{v2.8q}{2001/10/06}{Neu}
+% Eine echte L"ange soll auf das Vielfache einer Pseudo-L"ange gesetzt
+% werden. Dabei wird der Faktor als optionaler Parameter "ubergeben.
+% Der erste obligatorische Parameter ist die L"ange, der zweite
+% obligatorische Parameter ist die Pseudo-L"ange.
+% \begin{macrocode}
+\newcommand*{\setlengthtoplength}[3][]{%
+ \setlength{#2}{\useplength{#3}}%
+ \setlength{#2}{#1#2}}
+% \end{macrocode}
+%
+% \begin{macro}{\@setplength}
+% \changes{v2.8q}{2001/10/06}{Neu}
+% Nat"urlich wird ebenfalls eine M"oglichkeit ben"otigt, einer
+% Pseudo-L"ange einen Wert zuzuweisen. Dies geschieht unter lokaler
+% Anwendung einer L"ange, damit sichergestellt ist, dass eine
+% L"angenangabe "ubergeben wird. Dabei wird das zuvor definierte Makro
+% \cs{setlengthtoplength} verwendet.
+% \begin{macrocode}
+\newcommand*{\@setplength}[3][]{%
+ \begingroup%
+ \setlength{\@tempskipa}{#3}%
+ \setlength{\@tempskipa}{#1\@tempskipa}%
+ \edef\@tempa{\noexpand\endgroup%
+ \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*%
+ \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempskipa}%
+ }%
+ \@tempa%
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\addtolengthplength}
+% \changes{v2.8q}{2001/10/06}{Neu}
+% Wenn wir schon dabei sind, soll statt dem Setzen auch das Addieren
+% funktionieren. Hier ist die Erschwernis, dass der Faktor nur f"ur
+% die Pseudo-L"ange und nicht f"ur das Endergebnis gelten soll.
+% \begin{macrocode}
+\newcommand*{\addtolengthplength}[3][]{%
+ \begingroup%
+ \setlengthtoplength[{#1}]{\@tempskipa}{#3}%
+ \edef\@tempa{\endgroup%
+ \noexpand\addtolength{#2}{\the\@tempskipa}}%
+ \@tempa%
+ }
+% \end{macrocode}
+%
+% \begin{macro}{\@addtoplength}
+% \changes{v2.8q}{2001/10/06}{Neu}
+% Ebenso wird ein Makro ben"otigt, mit dem zu einer Pseudo-L"ange das
+% Vielfache eines Wertes addiert werden kann.
+% \begin{macrocode}
+\newcommand*{\@addtoplength}[3][]{%
+ \begingroup%
+ \setlength{\@tempskipa}{#3}%
+ \setlength{\@tempskipa}{#1\@tempskipa}%
+ \addtolengthplength{\@tempskipa}{#2}%
+ \edef\@tempa{\noexpand\endgroup%
+ \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*%
+ \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempskipa}%
+ }%
+ \@tempa%
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \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"ohe der R"ucksendeadresse.
+% \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"ohe des Adressfensters ohne R"ucksendeadresse
+% \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"aftszeile 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"aftszeile.
+% \begin{macrocode}
+\@newplength{refwidth}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@refhpos}
+% \changes{v2.9l}{2003/01/28}{Neu}
+% Horizontale Position der Gesch"aftszeile.
+% \begin{macrocode}
+\@newplength{refhpos}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@refaftervskip}
+% \changes{v2.8q}{2001/10/09}{Neu}
+% Abstand nach der Gesch"aftszeile.
+% \begin{macrocode}
+\@newplength{refaftervskip}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@sigbeforevskip}
+% \changes{v2.8q}{2001/10/09}{Neu}
+% Raum f"ur 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"ses 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"ses 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"ses 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 Papoeroberkante.
+% \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"ange einer eventuell gesetzten Linie im Absender. Negative
+% Werte bedeuten, dass die L"ange automtaisch bestimmt wird.
+\@newplength{fromrulewidth}
+\@setplength{fromrulewidth}{0pt}
+% \end{macro}
+%
+% 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.
+%
+% Wichtig: Ab Version 2.8n sind alle vertikalen Abst"ande relativ zum
+% oberen Papierrand. Au"serdem gibt es zwei Varianten, eine
+% ausgewogene und eine, bei der mehr Platz f"ur den Brieftext der
+% ersten Seite bleibt.
+%
+% \begin{macro}{\LoadLetterOption}
+% \changes{v2.8q}{2001/10/08}{Neu}
+% Bei der neuen Briefklasse existiert eine Anweisung, mit der eine
+% \emph{\textbf{l}etter-\texttt{c}lass-\texttt{o}ption}-Datei geladen
+% werden kann. Das Laden wird mit entsprechender Information in der
+% \texttt{log}-Datei vermerkt. Damit in der Datei interne Makros
+% verwendet werden k"onnen, mu"s der catcode von "`@"' entsprechend
+% gesetzt sein. Damit der Befehl sowohl in der Pr"aambel als auch in
+% weiteren Optionen-Dateien oder in der Klasse selbst verwendet werden
+% kann, muss der catcode am Ende wieder restauriert werden. Dabei muss
+% etwas trickreich gearbeitet werden, damit tats"achlich eine
+% Schachtelung m"oglich ist. So erfolgt die Umschaltung des catcodes
+% immer nur beim ersten Aufruf innerhalb einer Schachtel.
+% \begin{macrocode}
+\newcommand*{\LoadLetterOption}[1]{%
+ \@ifundefined{@restore@catcode@level}
+ {\let\@restore@catcode@level=\z@}{}
+ \ifnum\@restore@catcode@level =\z@
+ \ifnum\catcode`\@=11
+ \let\@restore@catcode\relax
+ \else
+ \@tempcnta=\catcode`\@
+ \edef\@restore@catcode{%
+ \noexpand\catcode`\noexpand\@=\the\@tempcnta}%
+ \makeatletter
+ \fi
+ \fi
+ \@tempcnta=\@restore@catcode@level\relax
+ \advance\@tempcnta by \@ne\relax
+ \edef\@restore@catcode@level{\the\@tempcnta}
+ \InputIfFileExists{#1.lco}{%
+ \ClassInfo{%
+ scrlttr2%
+ }{Letter-Class-Option `#1' loaded}
+ }{%
+ \ClassError{%
+ scrlttr2%
+ }{%
+ Letter-Class-Option file `#1.lco' not found%
+ }{%
+ You've told me to load the Letter-Class-Option `#1'. So I have
+ to load\MessageBreak
+ the file `#1.lco'. But the file isn't available.}
+ }
+ \@tempcnta=\@restore@catcode@level\relax
+ \advance\@tempcnta by \m@ne\relax
+ \edef\@restore@catcode@level{\the\@tempcnta}
+ \ifnum\@tempcnta =\z@
+ \@restore@catcode
+ \fi
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LetterOptionNeedsPapersize}
+% \changes{v2.8q}{2001/10/17}{Neu}
+% Es besteht die M"oglichkeit, in \texttt{lco}-Dateien eine bestimmte
+% Papiergr"o"se zu fordern. Dazu wird der Name der \texttt{lco}-Datei
+% und die geforderte Papiergr"ose als Parameter "ubergeben. Stimmt die
+% Papiergr"o"se nicht "uberein, so wird bei \cs{opening} eine Warnung
+% ausgegeben.
+% \begin{macro}{\@PapersizeWarning}
+% \changes{v2.8q}{2002/03/25}{Neu (intern)}
+% \begin{macro}{\@@PapersizeWarning}
+% \changes{v2.8q}{2002/03/25}{Neu (intern)}
+% \begin{macro}{\LOPNP@size}
+% \changes{v2.8q}{2002/03/25}{Neu (intern)}
+% \begin{macro}{\LOPNP@option}
+% \changes{v2.8q}{2002/03/25}{Neu (intern)}
+% Zur einfacheren Realisierung wird mit vier internen Hilfsmakros
+% gearbeitet.
+% \begin{macrocode}
+\newcommand*{\LOPNP@option}{}
+\newcommand*{\LOPNP@size}{}
+\newcommand*{\@PapersizeWarning}{
+ \begingroup%
+ \edef\@tempc{\noexpand\@tempswatrue
+ \noexpand\ifdim\paperwidth=\the\paperwidth\noexpand\else
+ \noexpand\@tempswafalse\noexpand\fi
+ \noexpand\ifdim\paperheight=\the\paperheight\noexpand\else
+ \noexpand\@tempswafalse\noexpand\fi
+ \noexpand\@@PapersizeWarning
+ }
+ \def\@tempb{letter}\ifx\LOPNP@size\@tempb%
+ \setlength{\paperheight}{11in}\setlength{\paperwidth}{8.5in}%
+ \else\def\@tempb{legal}\ifx\LOPNP@size\@tempb%
+ \setlength{\paperheight}{14in}\setlength{\paperwidth}{8.5in}%
+ \else\def\@tempb{executive}\ifx\LOPNP@size\@tempb%
+ \setlength{\paperheight}{10.5in}\setlength{\paperwidth}{7.25in}%
+ \else%
+ \def\ta@opt@err{%
+ \ClassError{%
+ scrlttr2%
+ }{papersize `\LOPNP@size' undefined}{%
+ You've told me to check for paper size
+ `\LOPNP@size'\MessageBreak
+ at letter option file `\LOPNP@option.lco',\MessageBreak
+ but this paper size is not supported.\MessageBreak
+ See the KOMA-Script manual for informations about known
+ paper sizes.}%
+ }
+ \let\@headlines\ta@opt@err%
+ \expandafter\x@@paper\LOPNP@size paperpaper\x@@paper%
+ \fi\fi\fi
+ \@tempc
+ \endgroup%
+}
+\newcommand*{\@@PapersizeWarning}{%
+ \if@tempswa\else%
+ \ClassWarningNoLine{%
+ scrlttr2%
+ }{%
+ Letter option file `\LOPNP@option.lco'\MessageBreak
+ needs paper size `\LOPNP@size'.\MessageBreak
+ Current paper size is not `\LOPNP@size'!\MessageBreak
+ You should add `paper=\LOPNP@size' at the\MessageBreak
+ option list of \string\documentclass!\MessageBreak
+ Maybe you know what you are doing,\MessageBreak
+ so I do not change this myself}
+ \fi
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\newcommand*{\LetterOptionNeedsPapersize}[2]{%
+ \edef\LOPNP@size{#2}\edef\LOPNP@option{#1}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% Als Voreinstellung wird schoneinmal die Datei \texttt{DIN.lco}
+% geladen.
+% \begin{macrocode}
+\LoadLetterOption{DIN}
+% \end{macrocode}
+%
+% Der Inhalt dieser Dateien folgt. Es handelt sich im Wesentlichen um
+% das Setzen der Pseudo-L"angen. In einigen F"allen werden aber auch
+% zus"atzlich Befehle (um)definiert.
+% \begin{macrocode}
+%</scrlettr>
+%</class>
+%<*lco>
+% \end{macrocode}
+%
+% Die Maße f"ur einige Optionen wurden nicht von mir selbst
+% recherchiert:
+% \begin{center}
+% \begin{tabular}{ll}
+% \texttt{lco}-Datei & Recherchiert von \\\hline\\[-1.6ex]
+% DIN & mir \\
+% DINmtext & mir \\
+% KOMAold & mir \\
+% SNleft & Roger Luethi \\
+% SN & Roger Luethi \\
+% \end{tabular}{ll}
+% \end{center}
+%
+% Zun"achst wird gepr"uft, ob "uberhaupt die richtige Klasse geladen
+% ist.
+% \begin{macrocode}
+\@ifundefined{scr@fromname@var}{%
+ \GenericWarning{(%
+%<DIN> DIN%
+%<DINmoretext> DINmtext%
+%<SN> SN%
+%<SNold> SNold%
+%<SwissLeft> SNleft%
+%<KOMAold> KOMAold%
+ .lco)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces}{%
+ Letter-class-option
+%<DIN> DIN
+%<DINmoretext> DINmtext
+%<SN> SN
+%<SNold> SNold
+%<SwissLeft> SNleft
+%<KOMAold> KOMAold
+ Warning:\space
+ This letter class option file was made only\MessageBreak
+ to be used with KOMA-Script letter class\MessageBreak
+ `scrlttr2'. Use with other classes may result\MessageBreak
+ in a lot of errors\@gobble
+ }
+}{}
+% \end{macrocode}
+%
+% Dann wird gepr"uft, ob das richtige Papierformat vorhanden ist.
+% \begin{macrocode}
+%<*DIN|DINmoretext|SN|SNold|SwissLeft|KOMAold>
+\LetterOptionNeedsPapersize{%
+%<DIN> DIN%
+%<DINmoretext> DINmtext%
+%<SN> SN%
+%<SNold> SNold%
+%<SwissLeft> SNleft%
+%<KOMAold> KOMAold%
+ }
+ {a4}
+%</DIN|DINmoretext|SN|SNold|SwissLeft|KOMAold>
+% \end{macrocode}
+%
+% Dann werden die Werte gesetzt.
+% \begin{macrocode}
+\@setplength{foldmarkhpos}{3.5mm}
+%<DIN|SwissLeft|SN>\@setplength{tfoldmarkvpos}{105mm}
+%<DINmoretext>\@setplength{tfoldmarkvpos}{87mm}
+%<KOMAold>\@setplength{tfoldmarkvpos}{103.5mm}
+%<DIN|SwissLeft|SN>\@setplength{bfoldmarkvpos}{210mm}
+%<DINmoretext>\@setplength{bfoldmarkvpos}{192mm}
+%<KOMAold>\@setplength{bfoldmarkvpos}{202.5mm}
+%<DIN|SN>\@setplength{toaddrvpos}{45mm}
+%<DINmoretext>\@setplength{toaddrvpos}{27mm}
+%<SwissLeft>\@setplength{toaddrvpos}{35.5mm}
+%<KOMAold>\@setplength{toaddrvpos}{49mm}
+%<DIN|SN>\@setplength{refvpos}{98.5mm}
+%<DINmoretext>\@setplength{refvpos}{80.5mm}
+%<SwissLeft>\@setplength{refvpos}{89mm}
+%<KOMAold>\@setplength{refvpos}{89.5mm}
+%<!KOMAold>\@setplength{refaftervskip}{\baselineskip}
+%<KOMAold>\@setplength[2]{refaftervskip}{\baselineskip}
+%<DIN|DINmoretext|SwissLeft>\@setplength{toaddrhpos}{20mm}
+%<SN>\@setplength{toaddrhpos}{-8mm}
+%<KOMAold>\@setplength{toaddrhpos}{1in}
+%<KOMAold>\@addtoplength{toaddrhpos}{\oddsidemargin}
+%<DIN|DINmoretext>\@setplength{toaddrwidth}{85mm}
+%<SN>\@setplength{toaddrwidth}{90mm}
+%<SwissLeft>\@setplength{toaddrwidth}{100mm}
+%<KOMAold>\@setplength{toaddrwidth}{70mm}
+%<DIN|DINmoretext|SN|SwissLeft|KOMAold>\@setplength{toaddrheight}{40mm}
+\@setplength{toaddrindent}{\z@}
+\@setplength{specialmailindent}{\fill}
+\@setplength{specialmailrightindent}{1em}
+\@setplength{locwidth}{\z@}
+%<DIN|DINmoretext|SN|SwissLeft|KOMAold>\@setplength{backaddrheight}{5mm}
+%<DIN|DINmoretext|SN|SwissLeft>\@setplength{firstheadvpos}{8mm}
+%<KOMAold>\@setplength{firstheadvpos}{6mm}
+%<KOMAold>\@setplength{firstheadwidth}{\textwidth}
+%<*!KOMAold>
+\@setplength{firstheadwidth}{\paperwidth}
+\ifdim \useplength{toaddrhpos}>\z@
+ \@addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}}
+\else
+ \@addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}}
+\fi
+%</!KOMAold>
+\@setplength{firstfootwidth}{\useplength{firstheadwidth}}
+%<KOMAold>\@setplength{firstfootvpos}{\paperheight}
+%<KOMAold>\@addtoplength{firstfootvpos}{-2cm}
+%<!KOMAold>\@setplength{firstfootvpos}{1in}
+%<!KOMAold>\@addtoplength{firstfootvpos}{\topmargin}
+%<!KOMAold>\@addtoplength{firstfootvpos}{\headheight}
+%<!KOMAold>\@addtoplength{firstfootvpos}{\headsep}
+%<!KOMAold>\@addtoplength{firstfootvpos}{\textheight}
+%<!KOMAold>\@addtoplength{firstfootvpos}{\footskip}
+% \end{macrocode}
+% Bei der Breite der Gesch"aftszeile brauchen wir wieder eine
+% Sonderl"osung, damit die Option "`wide"' auch sp"ater noch gesetzt
+% werden kann. Also verwenden wir hier den Wert 0 als mit der
+% Bedeutung "`ist bei \cs{opening} zu berechnen.
+% \begin{macrocode}
+\@setplength{refwidth}{0pt}
+\@setplength{sigindent}{0mm}
+\@setplength{sigbeforevskip}{2\baselineskip}
+%<!KOMAold>\let\raggedsignature=\centering
+%<KOMAold>\let\raggedsignature=\raggedright
+%<*DINmoretext>
+\renewcommand*{\@firsthead}{\noindent
+ \parbox[b]{\useplength{firstheadwidth}}{\centering%
+ \usekomafont{fromaddress}{%
+ \ifkomavarempty{fromname}{}{%
+ \usekomafont{fromname}%
+ {\ignorespaces\usekomavar{fromname}\\[-8pt]
+ \rule{\useplength{firstheadwidth}}{.4pt}\\
+ }%
+ }%
+ \ifkomavarempty{fromaddress}{}{%
+ \def\\{,\ \@ogobble}
+ \ignorespaces\usekomavar{fromaddress}%
+ }%
+ }%
+ }%
+ }
+%</DINmoretext>
+% \end{macrocode}
+%
+% Au"serdem gibt es noch die Kompatibilit"atseinstellungen, die
+% ebenfalls von \texttt{KOMAold} aktiviert werden.
+% \begin{macrocode}
+%<*KOMAold>
+\def\yourref{\setkomavar{yourref}}
+\def\yourmail{\setkomavar{yourmail}}
+\def\myref{\setkomavar{myref}}
+\def\customer{\setkomavar{customer}}
+\def\invoice{\setkomavar{invoice}}
+\@ifundefined{scr@refitemi@var}{\newkomavar{refitemi}}{}
+\def\refitemi{\setkomavar{refitemi}}
+\def\refitemnamei{\setkomavar*{refitemi}}
+\@ifundefined{scr@refitemii@var}{\newkomavar{refitemii}}{}
+\def\refitemii{\setkomavar{refitemii}}
+\def\refitemnameii{\setkomavar*{refitemii}}
+\@ifundefined{scr@refitemiii@var}{\newkomavar{refitemiii}}{}
+\def\refitemiii{\setkomavar{refitemiii}}
+\def\refitemnameiii{\setkomavar*{refitemiii}}
+\l@addto@macro{\defaultreffields}{%
+ \addtoreffields{refitemi}%
+ \addtoreffields{refitemii}%
+ \addtoreffields{refitemiii}%
+ }
+\addtoreffields{refitemi}%
+\addtoreffields{refitemii}%
+\addtoreffields{refitemiii}%
+\def\toname{\usekomavar{toname}}
+\def\toaddress{\usekomavar{toaddress}}
+\@ifundefined{scr@branch@var}{\newkomavar{branch}}{}
+\def\branch{\setkomavar{branch}}
+\def\frombranch{\usekomavar{branch}}
+\def\signature{\setkomavar{signature}}
+\def\fromsig{\usekomavar{signature}}
+\def\name{\setkomavar{fromname}}
+\def\fromname{\usekomavar{fromname}}
+\def\address{\setkomavar{fromaddress}}
+\def\fromaddress{\usekomavar{fromaddress}}
+\def\location{\setkomavar{location}}
+\def\fromlocation{\usekomavar{location}}
+\def\backaddress{\setkomavar{backaddress}}
+\def\@tempa{%
+ \ifkomavarempty{fromname}{}{%
+ \strut\ignorespaces\usekomavar{fromname}%
+ \ifkomavarempty{fromaddress}{}{\\}}%
+ \ifkomavarempty{fromaddress}{}{%
+ \strut\ignorespaces\usekomavar{fromaddress}}%
+ }
+\ifx\@tempa\scr@backaddress@var%
+ \setkomavar{backaddress}{}
+\fi
+\def\frombackaddress{\usekomavar{backaddress}}
+\def\telephone{\setkomavar{fromphone}}
+\def\telephonenum{\usekomavar{fromphone}}
+\def\specialmail{\setkomavar{specialmail}}
+\def\@specialmail{\usekomavar{specialmail}}
+\def\title{\setkomavar{title}}
+\def\@title{\usekomavar{title}}
+\def\subject{\setkomavar{subject}}
+\def\@subject{\usekomavar{subject}}
+\def\place{\setkomavar{place}}
+\def\fromplace{\usekomavar{place}}
+\let\ccnameseparator=\scr@ccseparator@var
+\setkomavar{ccseparator}{\ccnameseparator}
+\let\enclnameseparator=\scr@enclseparator@var
+\setkomavar{enclseparator}{\enclnameseparator}
+\setkomafont{fromname}{\scshape}
+%</KOMAold>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</lco>
+%<*class>
+% \end{macrocode}
+%
+%
+% \subsection{Serienbriefe und Adressdateien}
+%
+% \begin{macrocode}
+%<*scrlettr>
+% \end{macrocode}
+%
+% \begin{macro}{\adrentry}
+% \changes{v2.8q}{2002/05/19}{\cs{adrentry} verwendet das neue
+% \cs{addrentry}}
+% \begin{macro}{\adrchar}
+% \changes{v2.8q}{2002/05/19}{\cs{adrchar} verwendet das neue
+% \cs{addrchar}}
+% 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.
+% Durch die Definition mit Hilfe von \cs{addrentry} bzw. \cs{addrchar}
+% m"ussen vom Anwender f"ur neue Anwendungen nur die neuen Befehle
+% umdefiniert werden.
+% \begin{macrocode}
+\newcommand*{\adrentry}[7]{%
+ \addrentry{#1}{#2}{#3}{#4}{#5}{#6}{#7}{}}
+\newcommand*{\adrchar}{\addrchar}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\addrentry}
+% \changes{v2.8n}{2001/09/06}{Neu}
+% \begin{macro}{\addrchar}
+% \changes{v2.8n}{2001/09/06}{Neu}
+% Diese Makros erm"oglichen ab Version 2.8n die Verwendung von bis zu
+% 9 Argumenten.
+% \begin{macrocode}
+\newcommand*{\addrentry}[9]{\def\@tempa{#1}\ifx \@tempa\@empty \else
+ \def\@tempa{#2}\ifx \@tempa\@empty
+ \expandafter\def\csname #9\endcsname{#1\\#3}
+ \else
+ \expandafter\def\csname #9\endcsname{#2 #1\\#3}
+ \fi \fi}
+\newcommand*{\addrchar}[1]{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</scrlettr>
+% \end{macrocode}
+%
+%
+% \subsection{Befehle in der Briefumgebung}
+%
+% \begin{macrocode}
+%<*scrlettr>
+% \end{macrocode}
+%
+% \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}{\move@topt}
+% \changes{v2.8n}{2001/09/07}{Neu}
+% F"ur die folgenden Aktionen wird ein Makro ben"otigt, 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"urlich wird auch ein Makro ben"otigt, um vertikal von einer
+% relativen Papierposition wieder auf die relative Seitenposition
+% zur"uck 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"ur die folgenden Aktionen wird au"serdem ein Makro ben"otigt, 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"urlich wird auch ein Makro ben"otigt, um horizontal von einer
+% relativen Papierposition wieder auf die relative Seitenposition
+% zur"uck 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}
+% Ausserdem wird ein vertikales "Aquivalent zu |\rlap| ben"otigt.
+% \begin{macrocode}
+\newcommand*{\vb@t@z}[1]{{%
+ \setbox0\vbox to\z@{#1\vss}%
+ \setlength{\parskip}{\z@}\setlength{\baselineskip}{\z@}%
+ \setlength{\parfillskip}{\z@ \@plus 1fil}%
+ \setlength{\@tempdima}{\ht0}\addtolength{\@tempdima}{\dp0}%
+ \box0\vskip-\@tempdima%
+ }}
+% \end{macrocode}
+% \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{macro}{\@foldmark}
+% \changes{v2.8n}{2001/09/07}{Neu}
+% 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"andert bleibt. Als Parameter werden der vertikale
+% Abstand zur aktuellen Position und die L"ander der Marke
+% "ubergeben.
+% \begin{macrocode}
+\newcommand*{\@foldmark}[2]{%
+ \vskip #1%
+ \vb@t@z{\rlap{\move@topl\hskip\useplength{foldmarkhpos}%
+ \rule{#2}{.2pt}}}%
+ \vskip -#1\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"atzlich 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"uhrt, weiss letztlich
+% niemand, welche Box daf"ur verantwortlich war. Deshalb definieren
+% wir hier ein Makro, das ggf. eine Meldung ausgibt, die erkl"art,
+% welches Element die Ursache war und was man tun kann. Das erste
+% Argument ist dabei die Sollh"ohe 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"ohe und das f"unfte
+% schlie"slich 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"ucksichtigung.
+% \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"s explizit in eine Box gesetzt}
+% \changes{v2.9l}{2003/01/23}{Positionierung verbessert}
+% Ab Version 2.8n werden Kopf und Fu"s 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"ankte H"ohe hat. Diese H"ohe ist unabh"angig
+% von der normalen Kopfh"ohe 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"ange lokal entsprechend gesetzt. Au"serdem wird daf"ur
+% gesorgt, dass |\parfillskip| hier nicht ber"ucksichtigt 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"ses ist, wird
+% diese L"ange lokal entsprechend gesetzt. Au"serdem wird daf"ur
+% gesorgt, dass |\parfillskip| hier nicht ber"ucksichtigt 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"andert}
+% \changes{v2.8q}{2002/06/03}{Sonderbehandlung f"ur Adressfeld
+% rechts}
+% \changes{v2.9o}{2003/02/20}{\cs{noindent} eingef"ugt bei
+% \texttt{specialmail}}
+% Dasselbe gilt auch f"ur das Adressfeld f"ur Fensterumschl"age. Die
+% R"ucksendeadresse 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"ugt}
+% \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"ur Adressfeld
+% rechts}
+% Das "`locfield"' wird unabh"angig 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, mu"s eine gesch"aftsm"a"siger
+% Standardbrief oder ein eher pers"onliches Aussehen gew"ahlt werden.
+% \begin{macro}{\@set@reffield}
+% Einzelne Felder werden mit Hilfe dieses Makros gesetzt. Als
+% Parameter wird der Name des Feldes "ubergeben. 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"alt alle Aufrufe von \cs{@set@reffield}, die
+% durchzuf"uhren 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"aftszeile 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 "ublichen 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"ugt}
+% \changes{v2.8o}{2001/09/18}{f"ur den Brieftyp \texttt{KOMAold}
+% anschlie"send einen zus"atzlichen vertikalen Abstand
+% eingef"ugt}
+% \changes{v2.8q}{2001/11/13}{\cs{rlap} eingef"ugt}
+% \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"ugt}
+% \begin{macrocode}
+\newcommand*{\@datefield}{{\@parskipfalse\@parskip@indent
+ \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"achst, um wieviel die Gesch"aftszeile schmaler ist
+% als der Textbereich.
+% \begin{macrocode}
+ \setlength\@tempdima{\textwidth}%
+ \addtolengthplength[-]{\@tempdima}{refwidth}%
+% \end{macrocode}
+% Dann wird bestimmt, wie gro"s der linke Rand tatsächlich ist.
+% \begin{macrocode}
+ \setlength\@tempdimb{\oddsidemargin}%
+ \addtolength\@tempdimb{1in}%
+% \end{macrocode}
+% Ebenso wird bestimmt, wie gro"s der linke und rechte Rand zusammen
+% sind.
+% \begin{macrocode}
+ \setlength{\@tempdimc}{\paperwidth}%
+ \addtolength{\@tempdimc}{-\textwidth}%
+% \end{macrocode}
+% Jetzt wird aus dem Gesamtrand der Gesch"aftszeile der linke Rand der
+% Gesch"aftszeile so bestimmt, dass das Randverh"altnis dabei
+% unver"andert 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"ur 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"o"se und Schrift des Titels}
+% \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"angendem Einzug gesetzt}
+%
+% 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}%
+ {\@parskipfalse\@parskip@indent%
+ \centering\LARGE\titlefont\usekomavar{title}\par}%
+ \vskip\baselineskip%
+ }%
+ }
+\newcommand*{\@subjfield}{{\@parskipfalse\@parskip@indent%
+ \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}
+%
+% \begin{macro}{\opening}
+% \changes{v2.8n}{2001/09/08}{Komplett "uberarbeitet}
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
+% \changes{v2.8q}{2002/03/25}{\cs{@PapersizeWarning}}
+% Denn beim Er"offnungsgru"s mit |\opening| wird neben s"amtlichen
+% 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
+ {\@parskipfalse\@parskip@indent\noindent#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 Schlu"sgru"s und
+% Signatur erh"oht}
+% \changes{v2.5d}{2000/06/10}{Abstand zwischen Schlu"sgru"s 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}
+% 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{macro}{\presig@skip}
+% \changes{v2.5d}{2000/06/10}{Neues Makro, das den Abstand zwischen
+% Schlu"sgru"s und Signatur beinhaltet}
+% \changes{v2.8q}{2001/10/09}{Ersetzt durch Pseudo-L"ange
+% sigbeforevskip}
+% \end{macro}
+% \begin{macro}{\setpresigskip}
+% \changes{v2.5d}{2000/06/10}{Neues Makro, das den Abstand zwischen
+% Schlu"sgru"s und Signatur setzt}
+% \changes{v2.8q}{2001/10/09}{Mit Hilfe der neuen Pseudo-L"angen definiert}
+% Das Makro |\presig@skip| beinhaltet dabei den Abstand zwischen
+% Schlu"sgru"s und Signatur. Da der Wert "uber ein Benutzerinterface
+% per |\setpresigskip| gesetzt wird, mu"s hier kein kostbares
+% L"angenregister (skip oder dim) verschwendet werden, sondern ein
+% Makro reicht aus. In |\setpresigskip| wird allerdings noch
+% sichergestellt, da"s die Fehlermeldung bei falschem Parameter
+% m"oglichst nicht erst bei Verwendung auftritt.
+% \begin{macrocode}
+\newcommand*{\setpresigskip}{\@setplength{sigbeforevskip}}
+% \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"otigt, um beim Zerlegen eines
+% mit \texttt{\cmd{\\}[\cs{dots}]} zusammengesetzten Arguments das
+% optionale Argument in eckigen Klammern abzutrennen. Das Ergebnis
+% steht anschlie"send 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"ange
+% des l"angsten Elements. \cs{@tempdima} enth"alt beim Aufruf die
+% minimale L"ange.
+% \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"angenbegrenzung auf \cs{hsize}}
+% \changes{v2.9r}{2004/01/28}{das Argument darf leer sein}
+% \begin{macrocode}
+\newcommand*{\closing}[1]{{\@parskipfalse\@parskip@indent\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 "uberarbeitet}
+% Ebenfalls m"oglich 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"uber 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"andert}
+% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf
+% \texttt{\cs{z@} plus 1fil} ge"andert}
+% \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 "uberarbeiten}
+% \changes{v2.8q}{2002/01/31}{Fehlendes \% erg"anzt}
+% \changes{v2.9o}{2003/04/22}{\cs{parfillskip} angepasst}
+% \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf
+% \texttt{1em plus 1fil} ge"andert}
+% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf
+% \texttt{\cs{z@} plus 1fil} ge"andert}
+% \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}
+%
+%
+% \begin{macrocode}
+%</scrlettr>
+% \end{macrocode}
+%
+%
+% \subsection{Grundeinstellungen}
+%
+% \begin{macrocode}
+%<!scrbook>\pagestyle{plain}
+%<scrbook>\pagestyle{headings}
+\pagenumbering{arabic} % Arabic page numbers
+%<*!scrbook>
+%<!scrlettr>\if@twoside
+%<!scrlettr>\else
+ \raggedbottom
+%<!scrlettr>\fi
+%</!scrbook>
+%<*!scrlettr>
+\if@twocolumn
+ \twocolumn
+ \sloppy
+ \flushbottom
+\else
+ \onecolumn
+\fi
+%</!scrlettr>
+% \end{macrocode}
+%
+% \subsection{Das war es fast}
+%
+% \begin{macrocode}
+%</class>
+% \end{macrocode}
+%
+% \section{Nochmal generell}
+%
+% \input{scrlogo.dtx}
+%
+%
+% \setlength{\IndexMin}{.25\textheight}
+% \IndexPrologue{\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}
+%
+% \setlength{\GlossaryMin}{.25\textheight}
+% \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 `scrclass.dtx'
+
+%%% Local Variables:
+%%% mode: latex
+%%% mode: font-lock
+%%% Text-master: scrclass.ins
+%%% End: