% \CheckSum{4001}
% \iffalse
% ======================================================================
% scrclass.dtx 
% Copyright (C) 1995-1999 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-1999 Markus Kohm
%
% Diese Datei ist Teil des LaTeX2e KOMA-Script-Pakets.
%
% Diese Datei kann nach den Regeln der LaTeX Project Public
% Licence Version 1.0, wie sie zusammen mit dieser Datei verteilt
% wird, weiterverbreitet und/oder modifiziert werden. Siehe dazu
% auch LEGAL.TXT oder LEGALDE.TXT.
%
% Dieses Paket ist f"ur den deutschen Sprachraum konzipiert. Daher ist
% auch diese Anleitung komplett in Deutsch. Zwar existiert auch eine
% englische Version der Anleitung, diese hinkt der deutschen Anleitung
% jedoch fast immer hinterher.
% ======================================================================
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
%<*dtx>
            \ProvidesFile{scrclass.dtx}
%</dtx>
%<scrartcl|scrreprt|scrbook|typearea>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
%<driver>\ProvidesFile{scrclass.drv}
%<scrartcl>\ProvidesClass{scrartcl}
%<scrreprt>\ProvidesClass{scrreprt}
%<scrbook>\ProvidesClass{scrbook}
%<typearea>\ProvidesPackage{typearea}
%<*scrartcl|scrreprt|scrbook|typearea|dtx|driver>
              [1999/12/29 v2.5h LaTeX2e KOMA
%</scrartcl|scrreprt|scrbook|typearea|dtx|driver>
%<scrartcl|scrreprt|scrbook>               document class]
%<typearea>               package]
%
%<*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,\@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,\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,\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,\twocolumn}
\DoNotIndex{\typeout}
\DoNotIndex{\undefined,\usecounter}
\DoNotIndex{\vfil,\vfill,\vspace}
\DoNotIndex{\wd,\xdef,\year,\z@}
%
\begin{document}
 \DocInput{scrclass.dtx}
\end{document}
%</driver>
% \fi
%
% \GetFileInfo{scrclass.dtx}
%
% \makeatletter
% \def\macro{\begingroup
%    \catcode`\\12
%    \MakePrivateLetters \m@cro@ 0}
% \def\environment{\begingroup
%    \catcode`\\12
%    \MakePrivateLetters \m@cro@ 1}
% \def\option{\begingroup
%    \catcode`\\12
%    \MakePrivateLetters \m@cro@ 2}
% \long\def\m@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist
%   \edef\saved@macroname{\string#2}%
%   \ifcase #1%
%     \edef\saved@@macroname{\expandafter\@gobble\saved@macroname}
%   \or
%     \edef\saved@@macroname{\expandafter\@gobble\saved@macroname}
%   \else
%     \let\saved@@macroname\saved@macroname
%   \fi
%   \def\makelabel##1{\llap{##1}}%
%   \if@inlabel
%     \let\@tempa\@empty \count@\macro@cnt
%     \loop \ifnum\count@>\z@
%       \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
%     \edef\makelabel##1{\llap{\vtop to\baselineskip
%                                {\@tempa\hbox{##1}\vss}}}%
%     \advance \macro@cnt \@ne
%   \else  \macro@cnt\@ne  \fi
%   \edef\@tempa{\noexpand\item[%
%      \ifcase #1%
%        \noexpand\PrintMacroName
%      \or
%        \noexpand\PrintEnvName
%      \else
%        \noexpand\PrintOptionName
%      \fi
%      {\string#2}]}%
%   \@tempa
%   {\advance\c@CodelineNo\@ne
%    \ifcase #1%
%       \SpecialMainIndex{#2}\nobreak
%       \DoNotIndex{#2}%
%    \or
%       \SpecialMainEnvIndex{#2}\nobreak
%    \else
%       \SpecialOptionIndex{#2}\nobreak
%    \fi
%    }%
%   \ignorespaces}
% \let\endoption\endtrivlist
% \@ifundefined{PrintOptionName}
%    {\def\PrintOptionName#1{\strut \MacroFont #1\ }}{}
% \def\SpecialOptionIndex#1{\@bsphack
%     \index{#1\actualchar{\protect\ttfamily#1}
%            (option)\encapchar usage}%
%     \index{options:\levelchar{\protect\ttfamily#1}\encapchar
%            usage}\@esphack}
% \def\changes@#1#2#3{%
%   \protected@edef\@tempa{\noexpand\glossary{#1\levelchar
%                          \ifx\saved@macroname\@empty
%                            \space
%                            \actualchar
%                            \generalname
%                          \else
%                            \saved@@macroname
%                            \actualchar
%                            \string\verb\quotechar*\verbatimchar%
%                            \saved@macroname
%                            \verbatimchar
%                          \fi
%                          :\levelchar #3}}%
%   \@tempa\endgroup\@esphack}
% \makeatother
%
% \title{Die 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.}
%
% \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 selben Ort verf"ugbar
% sein, an dem Sie auch |scrclass.dtx| gefunden haben.
%
% Die urspr"unglich in |komascr.dtx| enthaltene Brief-class |scrlettr.cls|
% liegt nun ebenfalls separat bei.
%
% Zum Gesamtpaket geh"oren weitere Dateien.
% Eine Aufz"ahlung finden Sie in der Installationsanleitung |liesmich.txt|.
% Dort ist auch angegeben, wie die classes, packages und 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
%
% \part{"`typearea"'-package}
% \section{Implementierung}
%
%    \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, Copyright (C) Frank Neukam, 1992-1994
      ^^J\space\space\space\space\space\space\space\space\space
         \space\space\space\space\space\space\space\space\space\space
                            Copyright (C) Markus Kohm, 1994-1999}
%    \end{macrocode}
%
% \subsection{Befehle vor den Optionen}
%
%    \begin{macrocode}
\newif\if@hincl
\newif\if@fincl
%    \end{macrocode}
%  \begin{macro}{\SetDIVList}
%  \changes{v2.1a}{1994/10/28}{neu eingef"uhrt}
% 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.
%    \begin{macrocode}
\newcommand*\SetDIVList[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.}
% Dimension f"ur die Bindekorrektur reservieren. Diese wird implizit zu
% 0pt initialisiert.
%    \begin{macrocode}
\newdimen\ta@bcor
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@BCOR}
%  \begin{macro}{\@@BCOR}
% \changes{v2.5}{1997/06/17}{Einzelzeichenscanner durch Mustererkennung
%                            ersetzt.}
%  \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\next\test@number
 \expandafter\next#1\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}
\def\test@number#1{
 \ifx \next#1
  \let\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\next\gobble@till@next\fi\fi
 \next}
%    \end{macrocode}
%  \begin{macro}{\gobble@till@next}
% Das geschieht mit einem einzigen "`Leermacro"'.
%    \begin{macrocode}
\def\gobble@till@next#1\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\next\test@posdimen
 \expandafter\test@dimen#1\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}
\def\test@dimen#1{\ifx -#1\else\ifx +#1\else
   \def\next{\let\next\test@posdimen\next#1}\fi\fi\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}
\def\test@posdimen#1{
 \ifx \next#1
  \@tempswafalse\let\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\next{\test@dimunt#1}\fi
    \else\def\next{\test@dimunt#1}\fi\fi\fi\fi
 \next}
%    \end{macrocode}
%  \begin{macro}{\testdimunt}
%  \begin{macro}{\test@trueunt}
% Au"ser einer Gleitkomma- bzw. Gleitpunktzahl m"s auch noch die Einheit
% behandelt werden. Dabei sind sowohl die neun Standardeinheiten als auch
% deren "`true"'-Variante zu ber"ucksichten. Deshalb wird zuerst ein
% eventuelles "`\texttt{true}"' weggeworfen.
%    \begin{macrocode}
\def\test@dimunt#1\next{\expandafter\test@trueunt#1truetrue\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 dann wird 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}
%
% 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}
\def\@BCOR{\expandafter\@@BCOR\CurrentOption BCORBCOR\@@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}
\def\@DIV{\expandafter\@@DIV\CurrentOption DIVDIV\@@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}{\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-\@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}
\def\x@paper{\expandafter\x@@paper\CurrentOption paper\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\@DIV\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}
\def\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{Kopfbereich und Textbereich}
%
%  \begin{option}{headinclude}
%  \begin{option}{headexclude}
% Diese Optionen bestimmen, ob der Seitenkopf bereits zum Textbereich geh"ort.
%    \begin{macrocode}
\DeclareOption{headinclude}{\@hincltrue}
\DeclareOption{headexclude}{\@hinclfalse}
%    \end{macrocode}
%  \end{option}
%  \end{option}
%
% \subsubsection{Fu"sbereich und Textbereich}
%
%  \begin{option}{footinclude}
%  \begin{option}{footexclude}
% Diese Optionen bestimmen, ob die Fu"szeilen noch zum Textbereich geh"oren.
%    \begin{macrocode}
\DeclareOption{footinclude}{\@fincltrue}
\DeclareOption{footexclude}{\@finclfalse}
%    \end{macrocode}
%  \end{option}
%  \end{option}
%
% \subsubsection{Papiergr"o"sen-Optionen}
%
% 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{macrocode}
\newif\if@landscape
\DeclareOption{landscape}{\@landscapetrue}
%    \end{macrocode}
%  \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 fuer |DIVcalc| eingebaut.
% Diese wird durch eine einfache Option realisiert, "uber die die
% Default-DIV-Liste so manipuliert wird, da"s automatisch nach einem guten
% DIV-Wert gesucht wird.
% \changes{v2.4g}{1996/11/04}{Neue Option \texttt{DIVcalc}.}
%    \begin{macrocode}
\DeclareOption{DIVcalc}{\providecommand\ta@divlist{{1}{1}{1}}}
%    \end{macrocode}
% \end{option}
% \begin{option}{DIVclassic}
% Alternativ gibt es auch noch eine Sonderbehandlung fuer |DIVclassic|.
% Auch dabei wird die Default-DIV-Liste benutzt. 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}{\providecommand\ta@divlist{{3}{3}{3}}}
%    \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}
% 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}
% \subsection{Einige interne Register}
%
% 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}
\newdimen\ta@hblk
\newdimen\ta@vblk
\newdimen\ta@temp
%    \end{macrocode}
%
% \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}
% 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.
%    \begin{macrocode}
 \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
%    \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}
%
% 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 selbstst"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}
% Die Gr"o"se des Bereichs f"ur die Randnotizen ist ebenfalls von der
% Streifenbreite abh"angig.
%    \begin{macrocode}
 \if@twoside
  \marginparwidth 1.5\ta@hblk
 \else
  \marginparwidth \ta@hblk
 \fi
}
%    \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-\@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 Schrifft. 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.
%    \begin{macrocode}
\newcommand*\ta@temp@goodwidth{
  \settowidth{\ta@temp}{abcdefghijklmnopqrstuvwxyz}
  \multiply\ta@temp by 66
  \settowidth{\@tempdima}{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
  \multiply\@tempdima by 3
  \addtolength{\ta@temp}{\@tempdima}
  \divide\ta@temp by 26
}
%    \end{macrocode}
%  \end{macro}
% \changes{v2.4g}{1996/11/04}{"Uberfl"ussigen Kommentar gel"oscht.}
%    \begin{macrocode}
\newcommand*\typearea[2][\z@]{
 \ta@bcor #1
 \ta@div=#2
%    \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}{%
   \PackageWarningNoLine{typearea}{\string\@ptsize\space not defined!
                                   \MessageBreak
                                   Using calculated DIV}
  }{%
   \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
 \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
% Im Zweispaltenmodus besteht jede Zeile aus zwei solchen Spalten zuz"uglich
% dem Spaltenabstand.
%    \begin{macrocode}
  \if@twocolumn
    \addtolength{\ta@temp}{\ta@hblk}
    \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.
%    \begin{macrocode}
  \ta@modiv{\paperwidth}{\ta@hblk}
%    \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
 \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 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.}
% 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@]{
 \ta@bcor #1
 \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 \@ptsize\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.}
%    \begin{macrocode}
\def\ta@divfor#1{
 \xdef\@tempa{\ta@divlist{}}
 \ta@div=#1\relax
 \@whilenum \ta@div >0 \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}
  \PackageWarningNoLine{typearea}{%
              DIV for 1#1pt and used papersize\MessageBreak
              not defined!\MessageBreak
              Using calculated DIV}
  \ta@div=1
 \else %
%    \end{macrocode}
% Ansonsten wird der vorgegebene Wert verwendet.
%    \begin{macrocode}
  \xdef\@tempa{\expandafter\@car\@tempa\@nil}
  \ta@div=\@tempa\relax
 \fi}
%    \end{macrocode}
%  \end{macro}
% 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. Den berechneten |DIV|-Wert
% erh"alt man hingegen mit der Option |DIVcalc| immer, da hierbei die
% Defaultwerte so abge"andert wurden, da"s die automatische Berechnung
% verwendet wird. Die Initialisierung des Pakets ist damit sehr einfach.
%    \begin{macrocode}
\typearea[\ta@bcor]{\ta@div}
%    \end{macrocode}
%
% \subsection{Das Ende}
%
%    \begin{macrocode}
%</typearea>
%    \end{macrocode}
%
% \part{"`scrartcl"'-class,
%       "`scrreprt"'-class,
%       "`scrbook"'-class}
%
% \section{Vorbemerkung}
%
% 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}.
%
% |scrlettr| unterscheidet sich in vielen Punkten grundlegend von den drei
% Haupt-\emph{classes}. Deshalb wird diese class in einer eigenen Datei
% implementiert.
%
% \section{Implementierung}
%
%    \begin{macrocode}
%<*scrartcl|scrreprt|scrbook>
%    \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.}
%
% Die Implementierung "ahnelt in vielen Punkten der der Standard-classes.
% Deshalb werden hier allenfalls grobe Unterschiede behandelt.
%
% \subsection{Optionen}
%
%    \begin{macrocode}
\newcommand*\@ptsize{}
\newif\if@restonecol
\newif\if@titlepage
%<scrartcl>\@titlepagefalse
%<scrreprt|scrbook>\@titlepagetrue
%<!scrartcl>\newif\if@openright
%    \end{macrocode}
% \changes{v2.3g}{1996/01/14}{\cs{if@openbib} (\cs{@openbibtrue},
%                             \cs{@openbibfalse} entfernt.}
% \changes{v2.3a}{1995/07/08}{\cs{if@mainmatter} Anforderung verschoben.}
%    \begin{macrocode}
%<scrbook>\newif\if@mainmatter \@mainmattertrue
\newif\if@hsl
\newif\if@fsl
\newif\if@abstrt
%    \end{macrocode}
%
% \subsubsection{Papierformate}
%  \begin{macro}{\@BCOR}
%  \begin{macro}{\@@BCOR}
%  \begin{macro}{\@DIV}
%  \begin{macro}{\@@DIV}
%  \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}
\def\@BCOR{\expandafter\@@BCOR\CurrentOption BCORBCOR\@@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}
\def\@DIV{\expandafter\@@DIV\CurrentOption DIVDIV\@@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}
\def\x@paper{\expandafter\x@@paper\CurrentOption paper\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\@DIV\fi}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%%
% Es gibt einige neue Optionen gegen"uber den Standard-Classes.
%
% \subsubsection{Headseparation-Lines}
%  \begin{option}{headsepline}
%  \begin{option}{headnosepline}
% Der Kopfteil kann mit einer Linie vom Textbereich getrennt werden.
%    \begin{macrocode}
\DeclareOption{headsepline}{\PassOptionsToPackage{headinclude}{typearea}
                            \@hsltrue}
\DeclareOption{headnosepline}{\@hslfalse}
%    \end{macrocode}
%  \end{option}
%  \end{option}
%
% \subsubsection{Footseparation-Lines}
%  \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{macrocode}
\DeclareOption{footsepline}{\PassOptionsToPackage{footinclude}{typearea}
                            \@fsltrue}
\DeclareOption{footnosepline}{\@fslfalse}
%    \end{macrocode}
%  \end{option}
%  \end{option}
%
% \subsubsection{Standardoptionen}
%  \begin{option}{10pt}
%  \begin{option}{11pt}
%  \begin{option}{12pt}
%  \begin{option}{oneside}
%  \begin{option}{twoside}
%  \begin{option}{draft}
%  \begin{option}{final}
%  \begin{option}{titlepage}
%  \begin{option}{notitlepage}
%  \begin{option}{openright}
%  \begin{option}{openany}
%  \begin{option}{onecolumn}
%  \begin{option}{twocolumn}
%  \begin{option}{leqno}
%  \begin{option}{fleqno}
%    \begin{macrocode}
\DeclareOption{10pt}{\renewcommand*\@ptsize{0}}
\DeclareOption{11pt}{\renewcommand*\@ptsize{1}}
\DeclareOption{12pt}{\renewcommand*\@ptsize{2}}
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
\DeclareOption{twoside}{\@twosidetrue  \@mparswitchtrue}
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
\DeclareOption{final}{\setlength\overfullrule{0pt}}
\DeclareOption{titlepage}{\@titlepagetrue}
\DeclareOption{notitlepage}{\@titlepagefalse}
%<!scrartcl>\DeclareOption{openright}{\@openrighttrue}
%<!scrartcl>\DeclareOption{openany}{\@openrightfalse}
\DeclareOption{onecolumn}{\@twocolumnfalse}
\DeclareOption{twocolumn}{\@twocolumntrue}
\DeclareOption{leqno}{\input{leqno.clo}}
\DeclareOption{fleqn}{\input{fleqn.clo}}
%    \end{macrocode}
%  \begin{option}{openbib}
% \changes{v2.3g}{1996/01/14}{Definition der openbib Option neu
%                             implementiert.}
%    \begin{macrocode}
\DeclareOption{openbib}{%
  \AtEndOfPackage{%
   \renewcommand*\@openbib@code{%
      \advance\leftmargin\bibindent
      \itemindent -\bibindent
      \listparindent \itemindent
      \parsep \z@
      }%
   \renewcommand*\newblock{\par}}%
}
%    \end{macrocode}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \end{option}
%  \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 |scrbook| gibt es kein Abstract.
%    \begin{macrocode}
%<!scrbook>\DeclareOption{abstracton}{\@abstrttrue}
%<!scrbook>\DeclareOption{abstractoff}{\@abstrtfalse}
%    \end{macrocode}
%  \end{option}
%  \end{option}
%
% \subsubsection{Optionen zur Steuerung der Numerierung}
%
%  \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 ist `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 ist `pointlessnumbers'.
     Change this at your document.\MessageBreak
     If you'll continue, the option `pointlessnumbers' will be used.}}
%    \end{macrocode}
%  \end{option}
%  \end{option}
%
% \subsubsection{Optionen zur Steuerung der "Uberschriftgr"o"se}
%
% \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{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{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.}
% 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{chaperheadstartvskip}
%                             und \cs{chapterheadendvskip} an Stelle von
%                             festen vertikalen Abst"anden am Anfang und
%                             am Ende eines Kapitels.}
%    \begin{macrocode}
\newcommand\@bigheadings
  {\AtEndOfClass{
%<*scrbook|scrreprt>
    \def\chapterheadstartvskip{\vspace*{2.3\baselineskip}}
    \def\chapterheadendvskip{\vspace{1.7\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}
    {You've used the old option name `bigheading'!\MessageBreak
     The correct name of the option ist `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>
    \def\chapterheadstartvskip{\vspace*{2\baselineskip}}
    \def\chapterheadendvskip{\vspace{1.5\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}
    {You've used the old option name `normalheading'!\MessageBreak
     The correct name of the option ist `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>
    \def\chapterheadstartvskip{\vspace*{1.8\baselineskip}}
    \def\chapterheadendvskip{\vspace{1.3\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}
    {You've used the old option name `smallheading'!\MessageBreak
     The correct name of the option ist `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{option}
% \end{option}
% \end{option}
%
% \subsubsection{Optionen zur Beeinflussung des Inhaltsverzeichnisses}
%
%  \begin{option}{liststotoc}
% \changes{v2.3h}{1995/01/21}{Neue Option.}
% Die Option sorgt daf"ur, da"s das Abbildungs- und das
% Tabellenverzeichnis im Inhalsverzeichnis aufgef"uhrt werden. Dazu
% m"ussen nur \cs{lof@heading} und \cs{lot@heading} umdefiniert werden.
% \changes{v2.4a}{1996/03/13}{\cs{listtabelname} durch \cs{listtablename}
%                             ersetzt.}
%  \begin{macro}{\lot@heading}
%  \begin{macro}{\lof@heading}
%    \begin{macrocode}
\DeclareOption{liststotoc}
  {\AtEndOfClass{%
    \renewcommand*\lot@heading{%
%<scrartcl>      \addsec{\listtablename}
%<!scrartcl>      \addchap{\listtablename}
      \@mkboth{\listtablename}{\listtablename}}
    \renewcommand*\lof@heading{%
%<scrartcl>      \addsec{\listfigurename}
%<!scrartcl>      \addchap{\listfigurename}
      \@mkboth{\listfigurename}{\listfigurename}}
  }}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{option}
%
%  \begin{option}{bibtotoc}
% \changes{v2.3h}{1995/01/21}{Neue Option.}
% 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.}
% Wobei auch eine normal numerierte Variante m"oglich ist.
%  \begin{macro}{\bib@heading}
%    \begin{macrocode}
\DeclareOption{bibtotoc}
  {\AtEndOfClass{%
    \renewcommand*\bib@heading{%
%<scrartcl>  \addsec{\refname}}
%<!scrartcl>  \addchap{\bibname}}
  }}
\DeclareOption{bibtotocnumbered}
  {\AtEndOfClass{%
    \renewcommand*\bib@heading{%
%<scrartcl>  \section{\refname}}
%<!scrartcl>  \chapter{\bibname}}
  }}
%    \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}
% \changes{v2.4c}{1996/04/04}{Kolumnentitel werden nun korrekt behandelt.}
% \changes{v2.4g}{1996/11/04}{Index auch bei scrartcl wieder zweispaltig.}
%    \begin{macrocode}
\DeclareOption{idxtotoc}
 {\AtEndOfClass{%
  \renewcommand*\idx@heading{\twocolumn[%
%<scrartcl>   \addsec{\indexname}]\@mkboth{\indexname}{\indexname}}%
%<*scrreprt|scrbook>
   \@makeschapterhead{\indexname}]%
   \@mkboth{\indexname}{\indexname}%
   \addcontentsline{toc}{chapter}{\indexname}}%
%</scrreprt|scrbook>
  }}
%    \end{macrocode}
%  \end{macro}
%  \end{option}
%
% \subsubsection{Optionen f"ur den Satzspiegel}
%
%  \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}
\if@compatibility\else
  \DeclareOption*{\x@paper}
\fi
%    \end{macrocode}
%  \end{option}
%  \end{option}
%
% \subsubsection{Optionenauswahl}
% \changes{v2.0e}{1994/09/04}{Standardoption \texttt{abstactoff} durch
%                             \texttt{abstractoff} ersetzt.}
% \changes{2.2f}{1995/06/14}{\cs{ExecuteOptions} von Leerzeichen u."a.
%                            befreit.}
% 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{11pt,onecolumn,final,headnosepline,footnosepline,bigheadings,%
%<scrartcl>oneside,abstractoff}
%<scrreprt>oneside,openany,abstractoff}
%<scrbook>twoside,openright}
\ProcessOptions
%<!scrbook>\input{size1\@ptsize.clo}
%<scrbook>\input{bk1\@ptsize.clo}
%    \end{macrocode}
% \changes{v2.4}{1996/02/25}{Es wird jetzt explizit nach einem aktuellen
%                            typearea verlangt.}
%    \begin{macrocode}
\RequirePackage{typearea}[1995/06/25]
%    \end{macrocode}
% \subsection{Einige Gr"o"sen}
% Einige Gr"o"sen sind festzulegen:
%    \begin{macrocode}
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
\renewcommand*\baselinestretch{}
\setlength\parskip{0\p@ \@plus \p@}
\@lowpenalty   51
\@medpenalty  151
\@highpenalty 301
\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}
%    \end{macrocode}
% \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.
% \changes{v2.0e}{1994/10/12}{Kopf- und Fu"szeilenhandling f"ur den
%                             Kompatibilit"atsmodus erg"anzt}
%    \begin{macrocode}
\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
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% \subsection{Kopf- und Fu"szeilendefinition}
%
%  \begin{macro}{\ps@plain}
%  \begin{macro}{\ps@headings}
%  \begin{macro}{\ps@myheadings}
% 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.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.}
% \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.}
%    \begin{macrocode}
\if@twoside
 \def\ps@plain{\let\@mkboth\@gobbletwo
  \def\@evenhead{}%
  \def\@oddhead{}%
  \def\@evenfoot{\vbox{\hsize=\textwidth
   \if@fsl \hrule \vskip 3\p@ \fi
   \hb@xt@ \textwidth{{\pnumfont\thepage\hfil}}}}%
  \def\@oddfoot{\vbox{\hsize=\textwidth
   \if@fsl \hrule \vskip 3\p@ \fi
   \hb@xt@ \textwidth{{\pnumfont\hfil\thepage}}}}}
 \def\ps@headings{\let\@mkboth\markboth
  \def\@evenhead{\vbox{\hsize=\textwidth
   \hb@xt@ \textwidth{{\headfont\strut\leftmark\hfil}}%
   \if@hsl \vskip 1.5\p@ \hrule \fi}}
  \def\@oddhead{\vbox{\hsize=\textwidth
   \hb@xt@ \textwidth{{\headfont\hfil\strut\rightmark}}%
   \if@hsl \vskip 1.5\p@ \hrule \fi}}
  \def\@evenfoot{\vbox{\hsize=\textwidth
   \if@fsl \hrule \vskip 3\p@ \fi
   \hb@xt@ \textwidth{{\pnumfont\thepage\hfil}}}}%
  \def\@oddfoot{\vbox{\hsize=\textwidth
   \if@fsl \hrule \vskip 3\p@ \fi
   \hb@xt@ \textwidth{{\pnumfont\hfil\thepage}}}}%
%<*scrartcl>
  \def\sectionmark##1{%
   \markboth {\ifnum \c@secnumdepth >\z@%
    \sectionmarkformat\fi ##1}{}}
  \def\subsectionmark##1{%
   \markright {\ifnum \c@secnumdepth >\@ne%
    \subsectionmarkformat\fi ##1}}}
%</scrartcl>
%<*scrreprt|scrbook>
  \def\chaptermark##1{%
   \markboth {\ifnum \c@secnumdepth >\m@ne
%<scrbook>      \if@mainmatter
        \chaptermarkformat\fi
%<scrbook>      \fi
        ##1}{}}%
  \def\sectionmark##1{%
    \markright {\ifnum \c@secnumdepth >\z@
        \sectionmarkformat\fi
        ##1}}}
%</scrreprt|scrbook>
 \def\ps@myheadings{\let\@mkboth\@gobbletwo
  \def\@evenhead{\vbox{\hsize=\textwidth
   \hb@xt@ \textwidth{{\headfont\strut\leftmark\hfil}}
   \if@hsl \vskip 1.5\p@ \hrule \fi}}%
  \def\@oddhead{\vbox{\hsize=\textwidth
   \hb@xt@ \textwidth{{\headfont\hfil\strut\rightmark}}
   \if@hsl \vskip 1.5\p@ \hrule \fi}}%
  \def\@evenfoot{\vbox{\hsize=\textwidth
   \if@fsl \hrule \vskip 3\p@ \fi
   \hb@xt@ \textwidth{{\pnumfont\thepage\hfil}}}}%
  \def\@oddfoot{\vbox{\hsize=\textwidth
   \if@fsl \hrule \vskip 3\p@ \fi
   \hb@xt@ \textwidth{{\pnumfont\hfil\thepage}}}}%
%<!scrartcl>  \def\chaptermark##1{}
%<scrartcl>  \def\subsectionmark##1{}
  \def\sectionmark##1{}}
\else
 \def\ps@plain{\let\@mkboth\@gobbletwo
  \def\@evenhead{}%
  \def\@oddhead{}%
  \def\@evenfoot{}%
  \def\@oddfoot{\vbox{\hsize=\textwidth
   \if@fsl \hrule \vskip 3\p@ \fi
   \hb@xt@ \textwidth{{\pnumfont\hfil\thepage\hfil}}}}}
 \def\ps@headings{\let\@mkboth\markboth
  \def\@evenhead{}%
  \def\@oddhead{\vbox{\hsize=\textwidth
   \hb@xt@ \textwidth{{\headfont\hfil\strut\rightmark\hfil}}
   \if@hsl \vskip 1.5\p@ \hrule \fi}}%
  \def\@evenfoot{}%
  \def\@oddfoot{\vbox{\hsize=\textwidth
   \if@fsl \hrule \vskip 3\p@ \fi
   \hb@xt@ \textwidth{{\pnumfont\hfil\thepage\hfil}}}}%
%<*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}
  \def\subsectionmark##1{}
  \def\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>
  \def\sectionmark##1{}
  \def\chaptermark##1{\markright {\ifnum \c@secnumdepth >\m@ne
%<scrbook>   \if@mainmatter
      \chaptermarkformat\fi
%<scrbook>   \fi
    ##1}}}
%</scrreprt|scrbook>
 \def\ps@myheadings{\let\@mkboth\@gobbletwo
  \def\@evenhead{}%
  \def\@oddhead{\vbox{\hsize=\textwidth
   \hb@xt@ \textwidth{{\headfont\hfil\strut\rightmark\hfil}}
   \if@hsl \vskip 1.5\p@ \hrule \fi}}%
  \def\@evenfoot{}%
  \def\@oddfoot{\vbox{\hsize=\textwidth
   \if@fsl \hrule \vskip 3\p@ \fi
   \hb@xt@ \textwidth{{\pnumfont\hfil\thepage\hfil}}}}%
%<scrartcl>  \def\subsectionmark##1{}%
%<!scrartcl>  \def\chaptermark##1{}%
  \def\sectionmark##1{}}
\fi
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% \subsection{Titel}
%
%  \begin{macro}{\extratitle}
%  \begin{macro}{\titlehead}
%  \begin{macro}{\subject}
%  \begin{macro}{\publishers}
%  \begin{macro}{\uppertitleback}
%  \begin{macro}{\lowertitleback}
%  \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.
%
%    \begin{macrocode}
\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}
%
%  \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.}
%    \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
    \def\@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
    {\sectfont\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.}
%    \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
         \def\@makefnmark{\rlap\@oldmakefnmark}
         \if@twocolumn
           \ifnum \col@number=\@ne
             \@maketitle
           \else
             \twocolumn[\@maketitle]%
           \fi
         \else
           \newpage
           \global\@topnum\z@   % Prevents figures from going at top of page.
           \@maketitle
         \fi
         \thispagestyle{plain}\@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
\def\@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
    {\sectfont\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}
%    \end{macrocode}
%  \end{macro}
%
% \subsection{Kapiteleinteilung}
%
% \changes{v2.3h}{1996/01/20}{Gr"o"senbefehle in den "Uberschriften
%                             variabel gestaltet.}
%  \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.}
%  \begin{macro}{\chapter}
%  \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.}
%  \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}{\section}
%  \begin{macro}{\subsection}
%  \begin{macro}{\subsubsection}
% \changes{v2.3d}{1995/08/19}{\cs{subsubsection} wird bei \texttt{scrartcl}
%                             nun ebenfalls numeriert und ins
%                             Inhaltsverzeichnis geschrieben.}
%  \begin{macro}{\paragraph}
%  \begin{macro}{\subparagraph}
%  \begin{macro}{\minisec}
% Die Befehle und das Aussehen der Kapiteleinteilung werden definiert. Im
% Gegensatz zu den Standard-classes gibt es im \textsf{KOMA-Script} Paket
% \emph{keine} Titel-W"orter in den Kapitel"uberschriften, gleich welcher
% Stufe.
%
% In |scrartcl| beginnt die erste Stufe mit |\section|, die letzte Stufe ist
% |\subparagraph|. In |scrreprt| und |scrbook| beginnt es mit |\chapter| und
% endet mit |\paragraph|. Dar"uber hinaus gibt es bei |scrartcl| noch den
% zus"atzlichen Befehl |\addsec|. In |scrreprt| und |scrbook| existiert
% stattdessen der analoge Befehl |\addchap|.
%
% In allen drei Haupt-classes gibt es den zus"atzlichen Einteilungsbefehl
% |\minisec|, der nur eine kleine "Uberschrift ohne Numerierung oder Aufnahme
% in Inhaltsverzeichnis oder Kopfzeile bietet.
%
%  \begin{macro}{\numberline}
% \changes{v2.3c}{1995/08/06}{\cs{numberline} umdefiniert.}
% Dieses Makro mu"s umdefiniert werden, um Duden Regel~5 und Regel~6 zu
% implementieren.
%    \begin{macrocode}
\renewcommand*{\numberline}[1]{%
  \hb@xt@\@tempdima{#1\if@altsecnumformat.\fi\hfil}}
%    \end{macrocode}
%  \end{macro}
%    \begin{macrocode}
%<!scrartcl>\newcommand*\chaptermark[1]{}
%<!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}
\let\@thepart\thepart
\newcommand*\@maybeasf{%
  \ifx\@thepart\thepart\global\@altsecnumformattrue\fi}
%<!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}
%<!scrartcl>\newcommand*\@chapapp{\chaptername}
%<*scrartcl>
\newcommand\part{\par
   \addvspace{4ex}%
   \@afterindentfalse
   \secdef\@part\@spart}
%</scrartcl>
%<*scrbook>
%    \end{macrocode}
%  \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}
\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}{\mainmatter}
% 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}
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\part}
% \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}
%</scrbook>
%<*scrreprt|scrbook>
\newcommand\part{\if@openright\cleardoublepage\else\clearpage\fi
                 \thispagestyle{plain}%
                 \if@twocolumn
                     \onecolumn
                     \@tempswatrue
                   \else
                     \@tempswafalse
                 \fi
%    \end{macrocode}
% \changes{v2.3g}{1996/01/14}{\cs{hbox} durch \cs{null} ersetzt.}
%    \begin{macrocode}
                 \null\vfil
                 \secdef\@part\@spart}
%</scrreprt|scrbook>
\def\@part[#1]#2{%
%<*scrartcl>
    \ifnum \c@secnumdepth >\m@ne
      \refstepcounter{part}\@maybeasf%
       \addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}%
    \else
      \addcontentsline{toc}{part}{#1}%
    \fi
    {\parindent \z@ \raggedright
     \interlinepenalty \@M
     \normalfont
     \ifnum \c@secnumdepth >\m@ne
%    \end{macrocode}
% \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.}
%    \begin{macrocode}
       \size@partnumber\sectfont\partformat
       \par\nobreak
     \fi
     \size@part\sectfont #2%
     \sectionmark{}\par}%
     \nobreak
     \vskip 3ex
    \@afterheading}
%</scrartcl>
%<*scrreprt|scrbook>
    \ifnum \c@secnumdepth >-2\relax
      \refstepcounter{part}\@maybeasf%
      \addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}%
    \else
      \addcontentsline{toc}{part}{#1}%
    \fi
    \chaptermark{}
    {\centering
     \interlinepenalty \@M
     \normalfont
     \ifnum \c@secnumdepth >-2\relax
       \size@partnumber\sectfont\partformat
       \par
       \vskip 20\p@
     \fi
     \size@part\sectfont #2\par}%
    \@endpart}
%</scrreprt|scrbook>
\def\@spart#1{%
%<*scrartcl>
    {\parindent \z@ \raggedright
     \interlinepenalty \@M
     \normalfont
     \size@part\sectfont #1\sectionmark{}\par}%
     \nobreak
     \vskip 3ex
    \@afterheading}
%</scrartcl>
%<*scrreprt|scrbook>
    {\centering
     \interlinepenalty \@M
     \normalfont
     \size@part\sectfont #1\chaptermark{}\par}%
    \@endpart}
%    \end{macrocode}
% \changes{v2.3g}{1996/01/14}{\cs{@endpart} wird f"ur scrartcl nicht mehr
%                             definiert.}
%    \begin{macrocode}
\def\@endpart{\vfil\newpage
              \if@twoside
                \null%
                \thispagestyle{empty}%
                \newpage
              \fi
              \if@tempswa
                \twocolumn
              \fi}
\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
                    \thispagestyle{plain}%
                    \global\@topnum\z@
                    \@afterindentfalse
                    \secdef\@chapter\@schapter}
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
%<scrbook>                       \if@mainmatter
                         \refstepcounter{chapter}%
                         \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@}}%
                    \if@twocolumn
                      \@topnewpage[\@makechapterhead{#2}]%
                    \else
                      \@makechapterhead{#2}%
                      \@afterheading
                    \fi}
\def\@makechapterhead#1{\chapterheadstartvskip%
  {\size@chapter{\sectfont
    \@hangfrom{\ifnum \c@secnumdepth >\m@ne%
%<scrbook>                 \if@mainmatter \chapterformat\fi\fi}%
%<!scrbook>                  \chapterformat\fi}%
              {\raggedsection \interlinepenalty \@M #1\par}}
    \nobreak\chapterheadendvskip
  }}
\def\@schapter#1{\if@twocolumn
                   \@topnewpage[\@makeschapterhead{#1}]%
                 \else
                   \@makeschapterhead{#1}%
                   \@afterheading
                 \fi}
\def\@makeschapterhead#1{\chapterheadstartvskip%
  {\parindent \z@ \raggedsection
    \normalfont
    \size@chapter\sectfont #1\par
    \nobreak\chapterheadendvskip
  }}
%</scrreprt|scrbook>
\newcommand\addsec{\secdef\@addsec\@saddsec}
\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}
\def\@saddsec#1{\section*{#1}\@mkboth{}{}}
%<*scrreprt|scrbook>
\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}
%</scrreprt|scrbook>
\newcommand\section{\@startsection{section}{1}{\z@}%
  {-3.5ex \@plus -1ex \@minus -.2ex}%
  {2.3ex \@plus.2ex}%
  {\raggedsection\normalfont\size@section\sectfont}}
\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
  {-3.25ex\@plus -1ex \@minus -.2ex}%
  {1.5ex \@plus .2ex}%
  {\raggedsection\normalfont\size@subsection\sectfont}}
\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
  {-3.25ex\@plus -1ex \@minus -.2ex}%
  {1.5ex \@plus .2ex}%
  {\raggedsection\normalfont\size@subsubsection\sectfont}}
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
  {3.25ex \@plus1ex \@minus.2ex}%
  {-1em}%
  {\raggedsection\normalfont\size@paragraph\sectfont}}
\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
  {3.25ex \@plus1ex \@minus .2ex}%
  {-1em}%
  {\raggedsection\normalfont\size@subparagraph\sectfont}}
\newcommand\minisec[1]{\@afterindentfalse \vskip 1.5ex
  {\parindent \z@ \raggedsection\sectfont #1\par\nobreak}%
  \@afterheading}
%    \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}{\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}
%
% \subsection{Listen-Umgebungen}
%
% \subsubsection{R"ander}
%
% 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}
%
% \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}{\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}
%
% \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}
%
% \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.}
%    \begin{macrocode}
%<*!scrbook>
\if@titlepage
 \newenvironment{abstract}{%
     \titlepage
     \null\vfil
     \@beginparpenalty\@lowpenalty
     \if@abstrt
     \begin{center}
       \sectfont \abstractname
       \@endparpenalty\@M
     \end{center}\fi}
    {\par\vfil\null\endtitlepage}
\else
 \newenvironment{abstract}{%
     \if@twocolumn\if@abstrt
       \section*{\abstractname}\fi%
     \else
       \if@abstrt
       \small
       \begin{center}%
         {\sectfont \abstractname\vspace{-.5em}\vspace{\z@}}%
       \end{center}\fi%
       \quotation
     \fi}
     {\if@twocolumn\else\endquotation\fi}
\fi
%</!scrbook>
%    \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.
%    \begin{macrocode}
\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
    }
%    \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.}
%    \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"'.
% \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.}
%    \begin{macrocode}
\newcommand*\appendix{\par\global\@altsecnumformattrue
%<*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>
%    \end{macrocode}
%  \end{macro}
%
% \subsection{Flie"sumgebungen}
%
% 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.}
% Zun"achst werden "`figures"', also Abbildungen behandelt.
%    \begin{macrocode}
\setlength\arraycolsep{5\p@}
\setlength\tabcolsep{6\p@}
\setlength\arrayrulewidth{.4\p@}
\setlength\doublerulesep{2\p@}
\setlength\tabbingsep{\labelsep}
\skip\@mpfootins = \skip\footins
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
%<!scrartcl>\@addtoreset{equation}{chapter}
\renewcommand*\theequation{%
%<!scrartcl>                          \thechapter.%
                          \@arabic\c@equation}
%<!scrartcl>\newcounter{figure}[chapter]
%<scrartcl>\newcounter{figure}
\renewcommand*\thefigure{%
%<!scrartcl>                        \thechapter.%
                        \@arabic\c@figure}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figureformat}
\newenvironment{figure}
               {\@float{figure}}
               {\end@float}
\newenvironment{figure*}
               {\@dblfloat{figure}}
               {\end@dblfloat}
%    \end{macrocode}
%  \end{environment}
%
%  \begin{environment}{table}
% \changes{v2.2c}{1995/05/25}{Tabellenausgabe auf CJK umgestellt.}
% Auch verschiebbare Tabellen sind m"oglich:
%    \begin{macrocode}
%<scrartcl>\newcounter{table}
%<!scrartcl>\newcounter{table}[chapter]
\renewcommand*\thetable{%
%<!scrartcl>                       \thechapter.%
                       \@arabic\c@table}
\def\fps@table{tbp}
\def\ftype@table{2}
\def\ext@table{lot}
\def\fnum@table{\tableformat}
\newenvironment{table}
               {\@float{table}}
               {\end@float}
\newenvironment{table*}
               {\@dblfloat{table}}
               {\end@dblfloat}
%    \end{macrocode}
%  \end{environment}
%
%  \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:
%    \begin{macrocode}
\newlength\abovecaptionskip
\newlength\belowcaptionskip
\setlength\abovecaptionskip{10\p@}
\setlength\belowcaptionskip{0\p@}
%    \end{macrocode}
% \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}{\setcapindent}
% 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, indem der Einzug um
% \cs{hsize} vergr"o"sert wird.
%    \begin{macrocode}
\newcommand*{\setcapindent}[1]{}
\def\setcapindent{\@ifstar{\@@setcapindent}{\@setcapindent}}
\newcommand*{\@setcapindent}[1]{
  {\setlength{\@tempdima}{#1}}
  \def\cap@indent{#1}
  \dofullc@pfalse
}
\newcommand*{\@@setcapindent}[1]{
  \setlength{\@tempdima}{#1}\addtolength{\@tempdima}{\hsize}
  \edef\cap@indent{\the\@tempdima}
  \dofullc@pfalse
}
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\setcaphanging}
% 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}
%    \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}.}
%    \begin{macrocode}
\newcommand{\@makecaption}[2]{%
  \vskip\abovecaptionskip
  \sbox\@tempboxa{{\capfont{\caplabelfont #1\captionformat}\capfont #2}}%
  \ifdim \wd\@tempboxa >\hsize
%    \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.
%    \begin{macrocode} 
    \ifdofullc@p
      {\capfont\@hangfrom{{\caplabelfont #1\captionformat}}{#2\par}}
%    \end{macrocode}
% Im zweiten Fall ist nun zu unterscheiden zwischen einem Einzug, der kleiner
% als eine Zeile ist, und einem Einzug, der gr"o"ser als eine Zeile ist. Ist
% der Einzug kleiner, so wird der Beschreibungstext um eben diesen Wert
% eingezogen. Ansonsten findet nach dem "`Label"' ein Umbruch statt und der
% Einzug findet ab der n"achsten Zeile statt. 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{\caplabelfont #1\captionformat\par}\noindent%
          \hspace*{-\cap@indent}#2\par}
      \else%
        \ifdim\cap@indent<\hsize%
          {\capfont\@hangfrom{\hspace*{\cap@indent}}%
            {\hspace{-\cap@indent}{\caplabelfont #1\captionformat}#2\par}}
        \else%
          {\capfont{\caplabelfont #1\captionformat\par}\noindent%
            \@hangfrom{%
              \setlength{\@tempdima}{\cap@indent}%
              \addtolength{\@tempdima}{-\hsize}%
              \hspace*{\@tempdima}}{#2\par}}
        \fi
      \fi
    \fi
  \else
    \global \@minipagefalse
    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip}
%    \end{macrocode}
%  \end{macro}
%
% \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}
%  \begin{macro}{\headfont}
%  \begin{macro}{\capfont}
%  \begin{macro}{\caplabelfont}
% 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{\sffamily\bfseries}
\newcommand*\pnumfont{\normalfont}
\newcommand*\headfont{\slshape}
\newcommand*\capfont{\normalfont}
\newcommand*\caplabelfont{\normalfont}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%
% \subsection{Inhaltverzeichnis, Abbildungsverzeichnis und
%             Tabellenverzeichnis}
%
%  \begin{macro}{\tableofcontents}
% 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}
%  \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}.}
%    \begin{macrocode}
\newcommand*\tableofcontents{%
%<*scrartcl>
    \toc@heading%
    \@starttoc{toc}%
%</scrartcl>
%<*scrreprt|scrbook>
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \chapter*{\contentsname
        \@mkboth{\contentsname}{\contentsname}}%
    \@starttoc{toc}%
    \if@restonecol\twocolumn\fi
%</scrreprt|scrbook>
    }
\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}
%    \begin{macrocode}
    \setlength\@tempdima{2em}%
    \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}
%<*scrartcl>
\newcommand*\l@section[2]{%
  \ifnum \c@tocdepth >\z@
    \addpenalty{\@secpenalty}%
    \addvspace{1.0em \@plus\p@}%
    \setlength\@tempdima{1.5em}%
    \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@chapter[2]{%
  \ifnum \c@tocdepth >\m@ne
    \addpenalty{-\@highpenalty}%
    \vskip 1.0em \@plus\p@
    \setlength\@tempdima{1.5em}%
    \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}
\newcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
%</scrreprt|scrbook>
%<*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}
%  \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.}
%    \begin{macrocode}
\newcommand*\lof@heading{
%<scrartcl>  \section*{\listfigurename
%<!scrartcl>  \chapter*{\listfigurename
  \@mkboth{\listfigurename}{\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.}
%    \begin{macrocode}
\newcommand*\listoffigures{%
%<*scrartcl>
    \lof@heading%
    \@starttoc{lof}%
%</scrartcl>
%<*scrreprt|scrbook>
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \lof@heading%
    \@starttoc{lof}%
    \if@restonecol\twocolumn\fi
%</scrreprt|scrbook>
    }
\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
%    \end{macrocode}
%  \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.}
%    \begin{macrocode}
\newcommand*\lot@heading{%
%<scrartcl>  \section*{\listtablename
%<!scrartcl>  \chapter*{\listtablename
  \@mkboth{\listtablename}{\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.}
%    \begin{macrocode}
\newcommand*\listoftables{%
%<*scrartcl>
    \lot@heading%
    \@starttoc{lot}%
%</scrartcl>
%<*scrreprt|scrbook>
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \lot@heading%
    \@starttoc{lot}%
    \if@restonecol\twocolumn\fi
%</scrreprt|scrbook>
    }
\let\l@table\l@figure
%    \end{macrocode}
%  \end{macro}
%
% \subsection{Das Literaturverzeichnis}
%
%  \begin{environment}{thebibliography}
%  \begin{macro}{\bib@heading}
% \changes{v2.3h}{1995/01/21}{Befehl zum Setzen der "Uberschrift des
%                             Literaturverzeichnisses.}
%    \begin{macrocode}
\newcommand*\bib@heading{%
%<scrartcl>  \section*{\refname
%<!scrartcl>  \chapter*{\bibname
%<scrartcl>    \@mkboth{\refname}{\refname}}}
%<!scrartcl>    \@mkboth{\bibname}{\bibname}}}
%    \end{macrocode}
%  \end{macro}
%  \changes{2.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}}
% 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
\newenvironment{thebibliography}[1]{\bib@heading%
      \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}
%
% \subsection{Index}
%  \begin{environment}{theindex}
%  \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.}
%    \begin{macrocode}
\newcommand*{\idx@heading}{\twocolumn[%
%<*scrartcl>
  \section*{\indexname}]
    \@mkboth{\indexname}{\indexname}%
%</scrartcl>
%<*scrreprt|scrbook>
  \@makeschapterhead{\indexname}]%
  \@mkboth{\indexname}{\indexname}%
%</scrreprt|scrbook>
}
%    \end{macrocode}
%  \end{macro}
% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{idx@heading}}
% 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@
                \idx@heading%
                \thispagestyle{plain}\parindent\z@
                \parskip\z@ \@plus .3\p@\relax
                \let\item\@idxitem}
               {\if@restonecol\onecolumn\else\clearpage\fi}
\newcommand*\@idxitem  {\par\hangindent 40\p@}
%    \end{macrocode}
% \changes{v2.3g}{1996/01/14}{Verwendung von \cs{@idxitem} in \cs{subitem}
%                             und \cs{subsubitem} spart Speicher.}
%    \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{environment}
%
% \subsection{Fu"snoten}
%
% Fu"snoten sind etwas abweichend definiert.
% \changes{v2.3a}{1995/07/08}{\cs{@width} verwendet.}
%    \begin{macrocode}
\renewcommand*\footnoterule{%
  \kern-3\p@
  \hrule\@width.4\columnwidth
  \kern 2.6\p@}
%<!scrartcl>\@addtoreset{footnote}{chapter}
%    \end{macrocode}
%  \begin{macro}{\deffootnote}
% \changes{v2.4l}{1997/02/06}{Neues Makro zur Definition der Gestalt von
%                             Fu"snoten.}
% Dieses Makro erlaubt einen optionalen und erwartet drei weitere Parameter.
% Der erste, optionale gibt den Einzug der ersten Zeile des Fu"snotentextes
% vom linken Rand an. Die Fu"snotenmarkierungen werden rechtsb"undig in diesen
% Einzug gesetzt. Der zweite, also erste nicht optionale Parameter gibt den
% Einzug jeder weiteren Zeile des Fu"snotentextes vom linken Rand an. Fehlt
% der optionale Parameter so ist er gleich diesem. Der dritte, also zweite
% nicht optionale Parameter gibt den zus"atzlichen Einzug jedes weiteren
% Absatzes einer Fu"snote an. Der letzte Parameter schlie"slich bestimmt die
% Ausgabe der Fu"snotenmarkierung in der Fu"snote. Diese wird zus"atzlich in eine
% \verb|\hbox| gesetzt.
%    \begin{macrocode}
\newcommand\deffootnote[4][]{%
  \long\def\@makefntext##1{%
    \edef\@tempa{#1}\ifx\@tempa\@empty
      \@setpar{\@@par
        \@tempdima = \hsize
        \addtolength{\@tempdima}{-#2}
        \parshape \@ne #2 \@tempdima}%
    \else
      \@setpar{\@@par
        \@tempdima = \hsize
        \addtolength{\@tempdima}{-#1}
        \@tempdimb = \hsize
        \addtolength{\@tempdimb}{-#2}
        \parshape \tw@ #1 \@tempdima #2 \@tempdimb}%
    \fi
    \par
    \parindent #3\noindent
    \hbox to \z@{\hss\@@makefnmark}##1}
%    \end{macrocode}
%  \begin{macro}{\@@makefnmark}
% \changes{v2.4l}{1997/02/06}{Neues Makro zum Setzen der Fu"snotenmarkierung
%                             im Text}
%    \begin{macrocode}
  \def\@@makefnmark{\hbox{#4}}
%    \end{macrocode}
%  \end{macro}
%    \begin{macrocode}
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\deffootnotemark}
% \changes{v2.4l}{1997/02/06}{Neues Makro zur Definition der
%                             Fu"snotenmarkierung im Text}
%    \begin{macrocode}
\newcommand*\deffootnotemark[1]{\def\@makefnmark{\hbox{#1}}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\thefootnotemark}
% \changes{v2.4l}{1997/02/06}{Neues Makro, damit \cs{@thefnmark} auf
%                             Anwenderebene verf"ugbar wird.}
%    \begin{macrocode}
\def\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.}
%  \begin{macro}{\@makefnmark}
%    \begin{macrocode}
\deffootnote[1em]{1.5em}{1em}
  {\textsuperscript{\normalfont\thefootnotemark}}
\deffootnotemark{\textsuperscript{\normalfont\thefootnotemark}}
%    \end{macrocode}
%  \end{macro}
%
% \subsection{Standardbezeichnungen}
%
% Diese werden von |german.sty| ohnehin "uberschrieben.
%    \begin{macrocode}
\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}
\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}
%
% \subsection{Erweiterung der Internationalisierung}
% \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}.}
% Dieses Hilfsmakro wird f"ur die Umschaltung auf Duden-Regel~6 bei der
% Numerierung ben"otigt.
%    \begin{macrocode}
\newif\if@altsecnumformat\@altsecnumformatfalse
%    \end{macrocode}
% Dabei soll die Umstellung beim zweiten TeX-Lauf bereits am Anfang
% aktiv sein. Deshalb wird die Information am Ende in die aux-Datei
% geschrieben.
%    \begin{macrocode}
\AtEndDocument{\if@altsecnumformat\if@filesw
    \immediate\write\@auxout{\string\global\string\@altsecnumformattrue}
  \fi\fi}
%    \end{macrocode}
%  \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.}
%  \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{macrocode}
%<*scrreprt|scrbook>
\newcommand*\chaptermarkformat    {\thechapter\if@altsecnumformat.\fi\quad}
\newcommand*\sectionmarkformat    {\thesection\if@altsecnumformat.\fi\quad}
%</scrreprt|scrbook>
%<*scrartcl>
\newcommand*\sectionmarkformat    {\thesection\if@altsecnumformat.\fi\quad}
\newcommand*\subsectionmarkformat {\thesubsection\if@altsecnumformat.\fi\quad}
%</scrartcl>
%    \end{macrocode}
%  \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.}
%  \begin{macro}{\chapterformat}
% \changes{v2.3c}{1995/08/06}{Duden Regel 6.}
%  \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\if@altsecnumformat.\fi}
%<*scrreprt|scrbook>
\newcommand*\chapterformat {\thechapter\if@altsecnumformat.\fi\ }
%</scrreprt|scrbook>
\newcommand*\figureformat  {\figurename~\thefigure%
%<!scrartcl>  \if@altsecnumformat.\fi%
  }
\newcommand*\tableformat   {\tablename~\thetable%
%<!scrartcl>  \if@altsecnumformat.\fi%
}
\newcommand*\captionformat {:\ }
%    \end{macrocode}
%  \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}
%    \begin{macrocode}
\renewcommand*{\@seccntformat}[1]{%
  \csname the#1\endcsname\if@altsecnumformat.\fi\quad}
%    \end{macrocode}
%  \end{macro}
%
% \subsection{Grundeinstellungen}
%
%    \begin{macrocode}
\setlength\columnsep{10\p@}
\setlength\columnseprule{0\p@}
%<!scrbook>\pagestyle{plain}
%<scrbook>\pagestyle{headings}
\pagenumbering{arabic}      % Arabic page numbers
%<*!scrbook>
\if@twoside
\else
     \raggedbottom
\fi
%</!scrbook>
\if@twocolumn
  \twocolumn
  \sloppy
  \flushbottom
\else
  \onecolumn
\fi
%    \end{macrocode}
%
% \subsection{Das Ende}
%
%    \begin{macrocode}
%</scrartcl|scrreprt|scrbook>
%    \end{macrocode}
%
% \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}
%
% \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'
