summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrkernel-typearea.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrkernel-typearea.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrkernel-typearea.dtx2716
1 files changed, 2716 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrkernel-typearea.dtx b/Master/texmf-dist/source/latex/koma-script/scrkernel-typearea.dtx
new file mode 100644
index 00000000000..44bfbf9fb9c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/koma-script/scrkernel-typearea.dtx
@@ -0,0 +1,2716 @@
+% \CheckSum{2328}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-typearea.dtx
+% Copyright (c) Markus Kohm, 2002-2013
+%
+% This file is part of the LaTeX2e KOMA-Script bundle.
+%
+% This work may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3c of the license.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later and of this work.
+%
+% This work has the LPPL maintenance status "author-maintained".
+%
+% The Current Maintainer and author of this work is Markus Kohm.
+%
+% This work consists of all files listed in manifest.txt.
+% ----------------------------------------------------------------------
+% scrkernel-typearea.dtx
+% Copyright (c) Markus Kohm, 2002-2013
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
+% Version 1.3c, verteilt und/oder veraendert werden.
+% Die neuste Version dieser Lizenz ist
+% http://www.latex-project.org/lppl.txt
+% und Version 1.3c ist Teil aller Verteilungen von LaTeX
+% Version 2005/12/01 oder spaeter und dieses Werks.
+%
+% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
+% (allein durch den Autor verwaltet).
+%
+% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm.
+%
+% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-typearea.dtx 1512 2013-11-11 10:35:04Z mjk $
+%<package&identify>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<*driver>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{scrkernel-typearea.dtx}[%
+%</driver>
+%<*driver|(package&identify)>
+%<package>\ProvidesPackage{typearea}[%
+%!KOMAScriptVersion
+ package (type area)]
+%</driver|(package&identify)>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \generate{\usepreamble\defaultpreamble
+ \file{typearea.sty}{%
+ \from{scrkernel-version.dtx}{package,typearea}%
+ \from{scrkernel-typearea.dtx}{package,identify}%
+ \from{scrkernel-basics.dtx}{load}%
+ \from{scrkernel-typearea.dtx}{package,option}%
+ \from{scrkernel-compatibility.dtx}{package,typearea,option}%
+ \from{scrkernel-typearea.dtx}{package,body}%
+ \from{scrkernel-compatibility.dtx}{package,typearea,body}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ }
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</dtx>
+%<*driver>
+\documentclass{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-typearea.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/06/20}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+%
+% \section{Satzspiegel Makros}
+%
+% Dieser Abschnitt beinhaltet alle Makros, die für den Satzspiegel
+% benötigt werden. Dies betrifft sowohl das Paket \textsf{typearea}
+% als auch die Klassen.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+%
+% \subsection{Präambel}
+%
+% \iffalse
+%<*class|package>
+%<*package&identify>
+% \fi
+%
+% Zuerst einmal zeigen, was das Paket ist:
+% \begin{macrocode}
+\typeout{%
+ Package typearea, \csname ver@typearea.sty\endcsname^^J%
+ \@spaces\@spaces\@spaces\@spaces\space\space
+ Copyright (C) Frank Neukam, 1992-1994^^J%
+ \@spaces\@spaces\@spaces\@spaces\space\space
+ Copyright (C) Markus Kohm, 1994-^^J%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</package&identify>
+%<*option>
+% \fi
+%
+% \subsection{Von den Optionen benötigte Befehle}
+%
+% Für das Paket
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% Zur Auswertung der Optionen werden einige Makros benötigt. Diese
+% sind natürlich vor der Deklaration der Optionen bzw. vor der
+% Auswertung der Optionen zu definieren. Ich mache das hier vor der
+% Deklaration der Optionen.
+%
+% \begin{macro}{\SetDIVList}
+% \changes{v2.1a}{1994/10/28}{neu}
+% \changes{v2.6}{2000/01/04}{\cs{ta@divlist} enthält Werte für
+% Schriftgrößen ab 1pt}
+% Der Befehl \cs{SetDIVList} tut nichts weiter als die innere Variable
+% für die schriftgrößenabhängige \emph{DIV}-Liste \cs{ta@divlist} neu
+% zu definieren. Dabei können \emph{DIV}-Werte für Größen ab 10\,pt
+% gesetzt werden.
+% \begin{macrocode}
+\newcommand*\SetDIVList[1]{\def\ta@divlist{{}{}{}{}{}{}{}{}{}#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SetXDIVList}
+% \changes{v2.6}{2000/01/04}{neu}
+% Da mit \cs{SetDIVList} aus Kompatibilitätsgründen nur Werte für
+% Größen ab 10\,pt gesetzt werden können, wird für Werte ab 1\,pt
+% ein neuer Befehl benötigt.
+% \begin{macrocode}
+\newcommand*\SetXDIVList[1]{\def\ta@divlist{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{Length}{\ta@bcor}
+% \changes{v2.2a}{1995/01/25}{Definition der Dimension wegen der
+% Option \texttt{BCOR} vorgezogen}
+% \changes{v2.7g}{2001/04/17}{\cs{newlength} and Stelle von
+% \cs{newdimen} für die Definition verwendet}
+% Dimension für die Bindekorrektur reservieren. Diese wird implizit
+% zu 0\,pt initialisiert.
+% \begin{macrocode}
+\newlength{\ta@bcor}
+% \end{macrocode}
+% \end{Length}
+%
+% \begin{macro}{\ta@div}
+% \changes{v2.2a}{1995/01/25}{Definition wegen der Option
+% \texttt{DIV} vorgezogen}
+% Zähler für \emph{DIV} reservieren. Dieser wird implizit zu 0
+% initialisiert.
+% \begin{macrocode}
+\newcount\ta@div
+% \end{macrocode}
+% \end{macro}
+%
+% Ab hier nun Teile für Klassen und Paket:
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \begin{macro}{\@BCOR}
+% \begin{macro}{\@@BCOR}
+% \changes{v2.5}{1997/06/17}{Einzelzeichenscanner durch
+% Mustererkennung ersetzt}
+% Das Makro \cs{@BCOR} wird später benötigt, um die Option
+% \texttt{BCOR\emph{BCOR}} zu erkennen. Die Option wird über ihr
+% Muster erkannt.
+% \begin{macrocode}
+\newcommand*{\@BCOR}{\expandafter\@@BCOR\CurrentOption BCORBCOR\@@BCOR}
+\newcommand*{\@@BCOR}{}
+\def\@@BCOR #1BCOR#2BCOR#3\@@BCOR{%
+% \end{macrocode}
+% Handelt es sich um die Option \texttt{BCOR}, so ist der erste
+% Parameter leer.
+% \begin{macrocode}
+ \ifstr{#1}{}{%
+% \end{macrocode}
+% Außerdem ist der dritte Parameter dann \texttt{BCOR}.
+% \begin{macrocode}
+ \ifstr{#3}{BCOR}{%
+% \end{macrocode}
+% Der zweite Parameter sollte dann die Größe enthalten. Ist dies
+% nicht der Fall, wird ein Fehler gemeldet (Fehlerzeile ist dann
+% \cs{ProcessOptions}).
+% \begin{macrocode}
+%<class> \PassOptionsToPackage{BCOR#2}{typearea}%
+%<package> \ifdimen{#2}{\setlength{\ta@bcor}{#2}}{\scr@pti@nerr@r}%
+% \end{macrocode}
+% In allen anderen Fällen ist es nicht diese Option, dann wird ein
+% Fehler ausgegeben. Stattdessen könnte hier auch auf weitere Optionen
+% getestet werden.
+% \begin{macrocode}
+ }{\scr@pti@nerr@r}%
+ }{\scr@pti@nerr@r}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@DIV}
+% \begin{macro}{\@@DIV}
+% \changes{v2.5}{1997/06/17}{Einzelzeichenscanner durch
+% Mustererkennung ersetzt}
+% Die grundsätzliche Funktion ist die gleiche wie bei \cs{@BCOR},
+% \cs{@@BCOR}.
+% \begin{macrocode}
+\newcommand*{\@DIV}{\expandafter\@@DIV\CurrentOption DIVDIV\@@DIV}
+\newcommand*{\@@DIV}{}
+\def\@@DIV #1DIV#2DIV#3\@@DIV{%
+ \edef\@tempa{#1}\ifx\@tempa\@empty
+ \edef\@tempa{#3}\def\@tempb{DIV}\ifx\@tempa\@tempb
+%<class> \PassOptionsToPackage{DIV#2}{typearea}%
+%<package> \ifnumber{#2}{\ta@div=#2\relax}{\scr@pti@nerr@r}%
+ \else\scr@pti@nerr@r\fi
+% \end{macrocode}
+% Der Unterschied liegt darin, dass bei einem Fehlschlag der
+% Mustererkennung kein Fehler vorliegt, sondern u.\,U. noch auf
+% \texttt{BCOR} getestet werden muss.
+% \begin{macrocode}
+ \else\@BCOR\fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@headlines}
+% \begin{macro}{\@@headlines}
+% \changes{v2.7g}{2001/04/17}{neue Mustererkennung für die Anzahl
+% der Kopfzeilen}
+% Das Macro \cs{@headlines} wird benötigt, um die Option
+% \texttt{headlines} zu erkennen.
+% \begin{macrocode}
+\newcommand{\@headlines}{%
+ \expandafter\@@headlines\CurrentOption headlines\@@headlines%
+}
+\newcommand*{\@@headlines}{}
+\def\@@headlines #1headlines#2\@@headlines{
+ \edef\@tempa{#2}\edef\@tempb{headlines}\ifx\@tempa\@tempb
+%<class> \PassOptionsToPackage{#1headlines}{typearea}
+%<package> \setlength{\@tempdima}{#1\baselineskip}%
+%<package> \def\ta@hh{#1\baselineskip}%
+ \else\@DIV\fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Jetzt kommt ein Stück, das nur im Paket benötigt wird.
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macro}{\x@paper}
+% \begin{macro}{\x@@paper}
+% \changes{v2.5}{1997/06/17}{neue Mustererkennung für die
+% Papiergröße}
+% Diese Makros werden ebenfalls später benötigt, wenn die Papiergröße
+% festgelegt wird.
+% \begin{macro}{\isopaper}
+% \changes{v2.5}{1997/06/17}{neu}
+% \changes{v2.95}{2002/12/03}{es sind auch Großbuchstaben erlaubt}
+% Da das Makro \cs{isopaper} zur Berechnung unterschiedlicher
+% ISO/DIN-Papierformate in der Mustererkennung für die Papiergröße
+% benötigt 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öße angibt. Die Angabe erfolgt über einen
+% Buchstaben. Möglich sind
+% \begin{description}
+% \item[a] -- ISO/DIN-A-Format
+% \item[b] -- ISO/DIN-B-Format
+% \item[c] -- ISO/DIN-C-Format
+% \item[d] -- ISO/DIN-D-Format
+% \end{description}
+% Der zweite Paremeter gibt dann die Skalierung an.
+%
+% Als Grundgröße wird jeweils die 0-Größe eingesetzt.
+% \begin{macrocode}
+ \ifx a#1
+ \setlength{\paperwidth}{841sp}%
+ \setlength{\paperheight}{1189sp}%
+ \else\ifx A#1
+ \setlength{\paperwidth}{841sp}%
+ \setlength{\paperheight}{1189sp}%
+ \else\ifx b#1
+ \setlength{\paperwidth}{1000sp}%
+ \setlength{\paperheight}{1414sp}%
+ \else\ifx B#1
+ \setlength{\paperwidth}{1000sp}%
+ \setlength{\paperheight}{1414sp}%
+ \else\ifx c#1
+ \setlength{\paperwidth}{917sp}%
+ \setlength{\paperheight}{1297sp}%
+ \else\ifx C#1
+ \setlength{\paperwidth}{917sp}%
+ \setlength{\paperheight}{1297sp}%
+ \else\ifx d#1
+ \setlength{\paperwidth}{771sp}%
+ \setlength{\paperheight}{1090sp}%
+ \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ählten Papiergröße
+% entfernt}
+% \begin{macrocode}
+ \else
+ \PackageError{typearea}{%
+ Unknown ISO/DIN-papersize-letter #1%
+ }{%
+ There are only four defined paper scalings:\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
+ \fi
+ \fi
+ \fi
+ \fi
+% \end{macrocode}
+% Es dürfte aufgefallen sein, dass bei der Größenfestlegung statt
+% der Einheit "`mm"' die Einheit "`sp"' geschrieben wurde. Die Maße
+% sind also um ein Vielfaches zu klein und müssen später noch mit
+% 186468 multiplitziert werden, um auf Millimeter zu kommen. Dieser
+% Trick ist jedoch notwendig, weil die Norm vorschreibt, dass bei der
+% nun folgenden $n$-fachen Halbierung der Seiten ($n =
+% \mathrm{Skalierung} + 1$) jeweils auf ganze Millimeter abgerundet
+% werden muss.
+% \begin{macrocode}
+ \@tempcnta=#2\relax
+ \@whilenum\@tempcnta>0
+ \do{\setlength{\@tempdima}{\paperwidth}
+ \setlength{\paperwidth}{.5\paperheight}
+ \setlength{\paperheight}{\@tempdima}
+ \advance\@tempcnta by\m@ne
+ }
+% \end{macrocode}
+% Zum Schluß muss 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
+ \multiply\paperheight by186468
+% \end{macrocode}
+% Jetzt noch die gewünschte Ausrichtung beachten.
+% \changes{v2.97e}{2007/10/23}{gewünschte Papierausrichtung wird beachtet}
+% \begin{macrocode}
+ \if@landscape
+ \setlength{\@tempdima}{\paperwidth}%
+ \setlength{\paperwidth}{\paperheight}%
+ \setlength{\paperheight}{\@tempdima}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\iso@paper}
+% \changes{v2.95}{2002/12/03}{neu (intern)}
+% Ein ganz ähnlicher interner Befehl erhält den gesamten Namen des
+% ISO-Papierformats als einziges Argument.
+% \begin{macro}{\iso@@paper}
+% \changes{v2.95}{2002/12/03}{neu (intern)}
+% Dieses Argument wird dann über einen weiteren internen Befehl per
+% Mustererkennung in den Kennbuchstaben und eine Zahl zerlegt.
+% \begin{macrocode}
+\newcommand*{\iso@paper}[1]{\expandafter\iso@@paper#1\@nil}
+\newcommand*{\iso@@paper}{}
+\def\iso@@paper#1#2\@nil{%
+ \@tempswafalse
+ \if #1a\@tempswatrue
+ \else\if #1A\@tempswatrue
+ \else\if #1b\@tempswatrue
+ \else\if #1B\@tempswatrue
+ \else\if #1c\@tempswatrue
+ \else\if #1C\@tempswatrue
+ \else\if #1d\@tempswatrue
+ \else\if #1D\@tempswatrue
+ \fi\fi\fi\fi\fi\fi\fi\fi
+ \if@tempswa
+ \ifnumber{#2}{\isopaper[#1]{#2}}{\@tempswafalse}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Jetzt wird es wieder für alle interessant:
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% Zurück zur Mustererkennung. Diese ist tatsächlich etwas einfacher
+% als die in den beiden Fällen zuvor.
+% \changes{v2.97e}{2007/10/23}{Optionen werden nach der neuen Syntax an
+% typearea weitergeleitet}
+% \begin{macrocode}
+\newcommand*{\x@paper}{%
+ \expandafter\x@@paper\CurrentOption paper\x@@paper%
+}
+\newcommand*{\x@@paper}{}
+\def\x@@paper #1#2paper#3\x@@paper{%
+ \ifstr{#3}{paper}{%
+ \ifnumber{#2}{%
+ \ifstr{#1}{a}{%
+%<class> \PassOptionsToPackage{#3=#1#2}{typearea}%
+%<package> \isopaper[a]{#2}%
+ }{%
+ \ifstr{#1}{b}{%
+%<class> \PassOptionsToPackage{#3=#1#2}{typearea}%
+%<package> \isopaper[b]{#2}%
+ }{%
+ \ifstr{#1}{c}{%
+%<class> \PassOptionsToPackage{#3=#1#2}{typearea}%
+%<package> \isopaper[c]{#2}%
+ }{%
+ \ifstr{#1}{d}{%
+%<class> \PassOptionsToPackage{#3=#1#2}{typearea}%
+%<package> \isopaper[d]{#2}%
+ }{\scr@pti@nerr@r}%
+ }%
+ }%
+ }%
+ }{\scr@pti@nerr@r}%
+ }{%
+%<class> \@pt@scan
+%<package> \@headlines
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scr@pti@nerr@r}
+% \changes{v2.95}{2002/06/20}{\cs{OptionNotUsed} statt
+% \cs{PackageError}}
+% Falls die zuätzliche Option nicht \texttt{BCOR}, \texttt{DIV},
+% \texttt{headlines} oder eine bekannte Papiergröße ist, ist die
+% Option nicht verwendet.
+% \begin{macrocode}
+\newcommand*{\scr@pti@nerr@r}{
+%<class> \OptionNotUsed
+%<package> \@unknownoptionerror
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Jetzt wieder nur für Pakete:
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \subsection{Optionen mit \textsf{keyval}}
+%
+% \subsubsection{Kopf-, Fuß-, Rand- und Textbereich}
+%
+% \begin{option}{headlines}
+% \changes{v2.95}{2002/12/06}{mit \textsf{keyval} neu implementiert}
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}
+% \begin{option}{footlines}
+% \changes{v3.12}{2013/03/26}{neue Option}
+% Neben der Auswertung der \meta{Wert}\texttt{headlines} Form über
+% Pattern Matching wird hier auch noch eine \textsf{keyval}-Option
+% definiert, die bevorzugt zu verwenden ist. Für den Fuß wird überhaupt nur
+% diese Form bereit gestellt.
+% \begin{macrocode}
+\KOMA@key{headlines}{%
+ \begingroup
+ \setlength{\@tempdima}{#1\baselineskip}%
+ \endgroup
+ \def\ta@hh{#1\baselineskip}%
+ \FamilyKeyStateProcessed
+}
+\KOMA@key{footlines}{%
+ \begingroup
+ \setlength{\@tempdima}{#1\baselineskip}%
+ \endgroup
+ \def\ta@fh{#1\baselineskip}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{headheight}
+% \changes{v2.98c}{2008/04/06}{neue Option}
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}
+% \begin{option}{footheight}
+% \changes{v3.12}{2013/03/26}{neue Option}
+% Manchmal ist es nützlicher, wenn man die Höhe direkt setzen kann, statt sie
+% über die Anzahl der Grundlinien zu setzen. In dem Fall nimmt man einfach
+% diese Optionen.
+% \begin{macrocode}
+\KOMA@key{headheight}{%
+ \begingroup
+ \setlength{\@tempdima}{#1}%
+ \endgroup
+ \def\ta@hh{#1}%
+ \FamilyKeyStateProcessed
+}
+\KOMA@key{footheight}{%
+ \begingroup
+ \setlength{\@tempdima}{#1}%
+ \endgroup
+ \def\ta@fh{#1}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{headinclude}
+% \changes{v2.95}{2002/07/08}{Verwendung von \textsf{scrkeyvl}}
+% \begin{option}{headexclude}
+% \changes{v2.95}{2002/07/08}{Verwendung von \textsf{scrkeyvl}}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{deprecated}
+% Diese Optionen bestimmen, ob der Seitenkopf bereits zum Textbereich
+% gehört.
+% \begin{macro}{\if@hincl}
+% \changes{v2.95}{2002/07/08}{Verwendung von \textsf{scrkeyvl}}
+% \changes{v2.97c}{2007/04/19}{direkte Initialisierung über \cs{if@hsl},
+% falls definiert}
+% \begin{macro}{\@hincltrue}
+% \begin{macro}{\@hinclfalse}
+% Der Zustand selbst wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@hincl\@ifundefined{if@hsl}{}{\let\if@hincl\if@hsl}
+\KOMA@ifkey{headinclude}{@hincl}
+\KOMA@DeclareDeprecatedOption[typearea]{headexclude}{headinclude=false}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{footinclude}
+% \changes{v2.95}{2002/07/08}{Verwendung von \textsf{scrkeyvl}}
+% \begin{option}{footexclude}
+% \changes{v2.95}{2002/07/08}{Verwendung von \textsf{scrkeyvl}}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{deprecated}
+% Diese Optionen bestimmen, ob die Fußzeilen noch zum Textbereich
+% gehören.
+% \begin{macro}{\if@fincl}
+% \changes{v2.95}{2002/07/08}{Verwendung von \textsf{scrkeyvl}}
+% \changes{v2.97c}{2007/04/19}{direkte Initialisierung über \cs{if@fsl},
+% falls definiert}
+% \begin{macro}{\@fincltrue}
+% \begin{macro}{\@finclfalse}
+% Der Zustand selbst wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@fincl\@ifundefined{if@fsl}{}{\let\if@fincl\if@fsl}
+\KOMA@ifkey{footinclude}{@fincl}
+\KOMA@DeclareDeprecatedOption[typearea]{footexclude}{footinclude=false}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{mpinclude}
+% \changes{v2.8q}{2002/03/28}{neue Option}
+% \changes{v2.95}{2002/07/08}{Verwendung von \textsf{scrkeyvl}}
+% \begin{option}{mpexclude}
+% \changes{v2.8q}{2002/03/28}{neue Option}
+% \changes{v2.95}{2002/07/08}{Verwendung von \textsf{scrkeyvl}}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{deprecated}
+% Es gibt Dokumente mit sehr ausführlichen Randnotizen, bei denen die
+% Randnotizen bei der Satzspiegelberechnung in den Satzspiegel
+% eingerechnet werden sollten. Diese Optionen bestimmen, ob dies der
+% Fall ist.
+% \begin{macro}{\if@mincl}
+% \changes{v2.95}{2002/07/08}{Verwendung von \textsf{scrkeyvl}}
+% \begin{macro}{\@mincltrue}
+% \begin{macro}{\@minclfalse}
+% Der Zustand wird in einem Schalter gespeichert. \textbf{Achtung:}
+% Bei Verwendung dieser Option müssen größere DIV-Werte verwendet
+% werden. Siehe dazu weiter unten.
+% \begin{macrocode}
+\KOMA@ifkey{mpinclude}{@mincl}
+\KOMA@DeclareDeprecatedOption[typearea]{mpexclude}{mpinclude=false}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{BCOR}
+% \changes{v2.2a}{1995/01/25}{neue Option}
+% \changes{v2.95}{2002/12/04}{als \textsf{keyval}-Option
+% implementiert}
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}
+% Der Wert wird einfach an die Länge \cs{ta@bcor} verfüttert, wobei
+% symbolische Werte speziell behandelt werden, auch wenn sie beim
+% Laden des Pakets absolut keinen Sinn ergeben!
+% \begin{macrocode}
+\KOMA@key{BCOR}{%
+ \edef\@tempa{#1}\edef\@tempb{current}\ifx\@tempa\@tempb\else
+ \setlength{\ta@bcor}{#1}%
+ \fi
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% Wenn allerdings der Satzspiegel bereits berechnet ist, dann muss er
+% hier stattdessen neu berechnet werden.
+% \begin{macrocode}
+\AtEndOfPackage{\KOMA@key{BCOR}{\typearea[{#1}]{last}}}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{DIV}
+% \changes{v2.2a}{1995/01/25}{neue Option}
+% \changes{v2.95}{2002/12/04}{als \textsf{keyval}-Option
+% implementiert}
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}
+% Der Wert wird einfach an den Zähler \cs{ta@div} verfüttert, wobei
+% symbolische Werte speziell behandelt werden. Dabei werden auch die
+% Werte "`\texttt{last}"' und "`\texttt{current}"' ausgewertet, auch
+% wenn diese beim Laden des Pakets absolut keinen Sinn ergeben!
+% \begin{macrocode}
+\KOMA@key{DIV}[calc]{%
+ \edef\@tempa{#1}%
+ \def\@tempb{last}\ifx\@tempa\@tempb\let\@tempa=\@lastdiv\fi
+ \def\@tempb{current}\ifx\@tempa\@tempb\else
+ \def\@tempb{default}\ifx\@tempa\@tempb\ta@div=\z@ \else
+ \def\@tempb{calc}\ifx\@tempa\@tempb\ta@div=\tw@ \else
+ \def\@tempb{classic}\ifx\@tempa\@tempb\ta@div=\thr@@ \else
+ \ta@div=\@tempa
+ \fi
+ \fi
+ \fi
+ \fi
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% Wenn allerdings der Satzspiegel bereits berechnet ist, dann muss er
+% hier stattdessen neu berechnet werden.
+% \begin{macrocode}
+\AtEndOfPackage{\KOMA@key{DIV}{\typearea[current]{#1}}}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{DIVcalc}
+% \changes{v2.4g}{1996/11/04}{neue Option}
+% \changes{v2.95}{2002/12/04}{über Option \texttt{DIV} reimplementiert}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}
+% \begin{option}{DIVclassic}
+% \changes{v2.4n}{1997/05/28}{neue Option}
+% \changes{v2.95}{2002/12/04}{über Option \texttt{DIV} reimplementiert}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}
+% Dann gibt es da noch zwei alte Sonderfälle.
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption[typearea]{DIVcalc}{DIV=calc}
+\KOMA@DeclareDeprecatedOption[typearea]{DIVclassic}{DIV=classic}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \begin{option}{areasetadvanced}
+% \changes{v3.11}{2012/04/17}{new internal option}
+% Switch to advanced version of \cs{areaset}. This does calculate margins
+% more like \cs{typearea}. Nevertheless, there's still a difference at the top
+% margin, because \cs{typerea} doesn't balance differences in calculated
+% height of margins and resulting height of margins but reduces only the
+% bottom margin.
+% \begin{macrocode}
+\KOMA@ifkey{areasetadvanced}{@areasetadvanced}
+% \end{macrocode}
+% \end{option}
+%
+%
+% \subsubsection{Sonstige Satzspiegel-Optionen}
+%
+% \begin{option}{oneside}
+% \changes{v2.97e}{2007/11/23}{auf vielfachen Wunsch reicht die Klasse die
+% Option an das Paket weiter}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}
+% \begin{option}{twoside}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v2.97e}{2007/11/23}{auf vielfachen Wunsch reicht die Klasse die
+% Option an das Paket weiter}
+% \changes{v3.00}{2008/07/09}{die Option kennt zusätzlich den Wert
+% \texttt{semi}}
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}
+% \begin{macro}{\if@semitwoside}
+% \changes{v3.00}{2008/07/09}{neuer Schalter (intern)}
+% \begin{macro}{\if@twoside}
+% \changes{v3.00}{2008/07/09}{Schalter setzt auch \cs{if@semitwoside}}
+% Einseitiger oder zweiseitiger Satzspiegel?
+% \begin{macrocode}
+\newif\if@semitwoside
+\g@addto@macro\@twosidetrue\@semitwosidefalse
+\g@addto@macro\@twosidefalse\@semitwosidefalse
+%</package>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\KOMA@key{twoside}[true]{%
+%<class> \if@atdocument\else\PassOptionsToPackage{twoside=#1}{typearea}\fi%
+%<*package>
+ \if@atdocument\if@twoside\cleardoublepage\else\clearpage\fi\fi
+ \ifstr{#1}{semi}{%
+ \@twosidetrue
+ \@semitwosidetrue
+ \FamilyKeyStateProcessed
+ }{%
+ \def\FamilyElseValue{, `semi'}%
+ \KOMA@set@ifkey{twoside}{@twoside}{#1}%
+ }%
+ \if@twoside
+ \if@semitwoside
+ \@mparswitchfalse
+ \else
+ \@mparswitchtrue
+ \fi
+ \else
+ \@mparswitchfalse
+ \fi%
+ \csname recalctypearea\endcsname
+%</package>
+}
+\KOMA@DeclareStandardOption%
+%<package> [typearea]%
+ {oneside}{twoside=false}
+%<*package>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{onecolumn}
+% \changes{v2.95}{2002/12/04}{Option in das \textsf{typearea}-Paket
+% verlagert}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v2.97e}{2007/11/23}{auf vielfachen Wunsch reicht die Klasse die
+% Option an das Paket weiter}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}
+% \begin{option}{twocolumn}
+% \changes{v2.95}{2002/12/04}{Option in das \textsf{typearea}-Paket
+% verlagert}
+% \changes{v2.97e}{2007/11/23}{auf vielfachen Wunsch reicht die Klasse die
+% Option an das Paket weiter}
+% \changes{v2.98a}{2007/01/08}{es wird die richtige Option an das Paket
+% weitergereicht}
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}
+% Einspaltiger oder zweispaltiger Satz?
+% \begin{macrocode}
+%</package>
+\KOMA@key{twocolumn}[true]{%
+%<class> \if@atdocument\else\PassOptionsToPackage{twocolumn=#1}{typearea}\fi%
+%<*package>
+ \if@atdocument\clearpage\fi
+ \KOMA@set@ifkey{twocolumn}{@twocolumn}{#1}%
+ \ifx\FamilyKeyState\FammilyKeyStateProcessed
+ \csname recalctypearea\endcsname
+ \fi
+%</package>
+}
+\KOMA@DeclareStandardOption%
+%<package> [typearea]%
+ {onecolumn}{twocolumn=false}
+%<*package>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \subsubsection{Ausgabeformat-Optionen}
+%
+% Diese Optionen arbeiten in Abhänigkeit des Ausgabeformats.
+%
+% \begin{option}{pagesize}
+% \changes{v2.7g}{2001/04/17}{neue Option}
+% \changes{v2.95}{2002/08/27}{neu implementiert}
+% \changes{v3.02c}{2009/02/14}{neuer Wert \texttt{false}}
+% \changes{v3.05a}{2010/03/18}{neuer Wert \texttt{dvipdfmx}}
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}
+% Diese Option ist nun das zentrale Element für die Übermittlung der
+% Seitengröße an pdf\TeX, \texttt{dvips} oder V\TeX. Sie wird auch von
+% den obsoleten Optionen verwendet. Die Werte und ihre Bedeutung:
+% \begin{labeling}[~--]{\texttt{automedia}}
+% \item[\texttt{auto}] Kombination aus den Optionen \texttt{pdftex}
+% und \texttt{dvips}.
+% \item[\texttt{automedia}] wie \texttt{auto} allerdings werden
+% zusätzlich \cs{mediawidth} und \cs{mediaheight} gesetzt, falls
+% sie definiert sind.
+% \item[\texttt{dvips}] das \cs{special} für \texttt{dvips} wird
+% ausgegeben, falls \texttt{dvi}-Ausgabe erwartet wird oder
+% \cs{if@dvips} erfüllt ist. Führt zu einer Warnung, wenn sie mehr
+% als einmal oder nach der Präambel verwendet wird.
+% \item[\texttt{dvipdfmx}] das \cs{special} für \texttt{dvipdfmx} wird
+% ausgegeben, falls \texttt{dvi}-Ausgabe erwartet wird.
+% \item[\texttt{false}] die automatische Anpassung bei Änderungen innerhalb
+% des Dokuments abschalten.
+% \item[\texttt{pdftex}] \cs{pdfpagewidth} und \cs{pdfpageheight}
+% werden gesetzt, falls sie definiert sind.
+% \end{labeling}
+% \begin{macrocode}
+\KOMA@key{pagesize}[auto]{%
+ \begingroup
+ \KOMA@set@ncmdkey{pagesize}{@tempa}{%
+ {off}{-1},{no}{-1},{false}{-1},%
+ {auto}{0},{automedia}{1},{dvips}{2},{pdftex}{3},{dvipdfmx}{4}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \aftergroup\FamilyKeyStateProcessed
+ \ifcase\number\@tempa\relax
+ \endgroup
+ \set@pdftexpagesize
+ \set@dvipspagesize
+ \or
+ \endgroup
+ \set@pdftexpagesize
+ \set@vtexpagesize
+ \set@dvipspagesize
+ \or
+ \endgroup
+ \set@dvipspagesize
+ \or
+ \endgroup
+ \set@pdftexpagesize
+ \or
+ \endgroup
+ \set@dvipdfmxpagesize
+ \fi
+ \edef\@pagesizelast{#1}%
+ \else
+ \endgroup
+ \FamilyKeyStateUnknownValue
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macro}{\set@pdftexpagesize}
+% \changes{v2.95}{2002/08/27}{neu (intern)}
+% \begin{macro}{\set@dvipspagesize}
+% \changes{v2.95}{2002/08/27}{neu (intern)}
+% \changes{v3.02c}{2009/02/13}{\texttt{seascape} wird beachtet}
+% \changes{v3.02c}{2009/02/14}{funktioniert auch im Dokument}
+% \changes{v3.12}{2012/02/06}{nicht ausgeführtes
+% \cs{let}\cs{if@tempswa}\cs{if@dvips} funktioniert auch noch, wenn
+% letzteres nicht definiert ist}
+% \begin{macro}{\setnot@dvipspagesize}
+% \changes{v2.95}{2002/08/27}{neu (intern)}
+% \begin{macro}{\set@dvipdfmxpagesize}
+% \changes{v3.05a}{2010/03/18}{neu (intern)}
+% \begin{macro}{\set@vtexpagesize}
+% \changes{v2.95}{2002/08/27}{neu (intern)}
+% \begin{macro}{\scr@updatedvipspagesize}
+% \changes{v3.02c}{2009/02/14}{neu (intern)}
+% \changes{v3.12}{2013/05/10}{deaktiviert, wenn \cs{XeTeXversion} existiert}
+% Damit die Option \texttt{pagesize} überhaupt funktionieren kann,
+% werden einige interne Makros benötigt.
+% \begin{description}
+% \item{Achtung:} die Definition dieser Makros ändert sich teilweise
+% bei ihrem Aufruf und insgesamt bei
+% \texttt{\cs{begin}\{document\}}.
+% \end{description}
+% \begin{macrocode}
+\newcommand{\set@pdftexpagesize}{%
+ \AtBeginDocument{%
+ \ifnotundefined{pdfpagewidth}{\pdfpagewidth=\paperwidth}{}%
+ \ifnotundefined{pdfpageheight}{\pdfpageheight=\paperheight}{}%
+ }%
+ \let\set@pdftexpagesize=\@empty
+}
+\newcommand{\set@dvipspagesize}{%
+ \begingroup
+ \@tempswafalse
+ \scr@ifdvioutput{\@tempswatrue}{%
+ \ifnotundefined{if@dvips}{%
+ \expandafter\let\csname if@tempswa\expandafter\endcsname
+ \csname if@dvips\endcsname
+ }{}%
+ }%
+ \if@tempswa
+ \endgroup
+ \AtBeginDocument{\AtBeginDvi{%
+ \special{papersize=\the\paperwidth,\the\paperheight}%
+ \if@seascape\special{! TeXDict begin /landplus90{true}store end }\fi
+ }%
+ }%
+ \ifnum \scr@compatibility>\@nameuse{scr@v@3.02b}\relax
+ \let\set@dvipspagesize=\@empty
+ \else
+ \let\set@dvipspagesize=\setnot@dvipspagesize
+ \fi
+ \else
+ \endgroup
+ \fi
+}
+\newcommand{\setnot@dvipspagesize}{%
+ \scr@ifdvioutput{%
+ \PackageWarning{%
+ typearea%
+ }{%
+ With dvi output option `pagesize=auto',\MessageBreak
+ `pagesize=automedia' or `pagesize=dvips'\MessageBreak
+ may be used only once at preamble.\MessageBreak
+ Option ignored%
+ }%
+ }{}%
+}
+\newcommand*{\set@dvipdfmxpagesize}{%
+ \scr@ifdvioutput{%
+ \AtBeginDocument{\AtBeginDvi{%
+ \special{papersize=\the\paperwidth,\the\paperheight}%
+ }%
+ }%
+ }{}%
+}
+\newcommand{\set@vtexpagesize}{%
+ \AtBeginDocument{%
+ \ifnotundefined{mediawith}{\mediawidth=\paperwidth}{}%
+ \ifnotundefined{mediaheight}{\mediaheight=\paperheight}{}%
+ }%
+ \let\set@vtexpagesize=\@empty
+}
+\newcommand*{\scr@updatedvipspagesize}{%
+ \scr@ifundefinedorrelax{XeTeXversion}{%
+ \special{ps::\@percentchar\@percentchar
+ PageBoundingBox: 0 0 \the\numexpr\paperwidth/\dimexpr 1bp\relax\relax
+ \space \the\numexpr\paperheight/\dimexpr 1bp\relax\relax^^J%
+ \@percentchar\@percentchar BeginPageSetup^^J%
+ << /PageSize [\the\numexpr\paperwidth/\dimexpr 1bp\relax\relax\space
+ \the\numexpr\paperheight/\dimexpr 1bp\relax\relax]
+ >> setpagedevice^^J%<<
+ 0 0 bop^^J%
+ \@percentchar\@percentchar EndPageSetup}%
+ }{}%
+}
+\AtBeginDocument{%
+ \renewcommand*{\set@pdftexpagesize}{%
+ \ifnotundefined{pdfpagewidth}{\pdfpagewidth=\paperwidth}{}%
+ \ifnotundefined{pdfpageheight}{\pdfpageheight=\paperheight}{}%
+ }%
+ \ifnum \scr@compatibility>\@nameuse{scr@v@3.02b}\relax
+ \renewcommand*{\set@dvipspagesize}{%
+% \end{macrocode}
+% \changes{v3.12}{2012/11/23}{nur im DVI- und PS-Fall das Papierformatupdate
+% durchführen}
+% \changes{v3.12}{2012/02/06}{nicht ausgeführtes
+% \cs{let}\cs{if@tempswa}\cs{if@dvips} funktioniert auch noch, wenn
+% letzteres nicht definiert ist}
+% Es wird getestet, ob unspezfizierte DVI-Ausgabe oder spezifizierte
+% PS-Ausgabe verwendet wird. Nur in diesen Fällen wird der PS-Code für das
+% Papierformatupdate eingefügt.
+% \begin{macrocode}
+ \begingroup
+ \@tempswafalse
+ \scr@ifdvioutput{\@tempswatrue}{%
+ \ifnotundefined{if@dvips}{%
+ \expandafter\let\csname if@tempswa\expandafter\endcsname
+ \csname if@dvips\endcsname
+ }{}%
+ }%
+ \if@tempswa
+ \endgroup
+ \scr@ifundefinedorrelax{AtNextShipout}{%
+ \scr@ifundefinedorrelax{AtBeginShipoutNext}{%
+ \begingroup
+ \protected@edef\reserved@a{\endgroup
+ \scr@updatedvipspagesize}%
+ \reserved@a
+ }{%
+% \end{macrocode}
+% Wenn \textsf{atbegshi} geladen wurde, bzw. \cs{AtBeginShipoutNext} zur
+% Verfügung steht, dann soll dieser Code noch vor Code ausgeführt werden, der
+% eventuell in \cs{shipout} eingeschleust wurde. Das funktioniert leider nicht
+% wirklich zuverlässig. Sollte zwischen dem Aufruf von \cs{set@dvipspagesize}
+% (also der Neuberechnung des Satzspiegels) und der Ausgabe der Seite doch
+% noch etwas per \cs{AtBeginShipout} oder \cs{AtBeginShipoutNext} eingefügt
+% werden, dann gehen diese Teile verloren!
+% \begin{macrocode}
+ \begingroup
+ \protected@edef\reserved@a{\endgroup
+ \protect\AtBeginShipoutNext{%
+ \protect\bgroup
+ \protect\global\protect\setbox\AtBeginShipoutBox
+ \protect\vbox{%
+ \scr@updatedvipspagesize
+ \protect\box\AtBeginShipoutBox
+ }%
+ \protect\egroup
+ }}%
+ \reserved@a
+ }%
+ }{%
+% \end{macrocode}
+% Wenn \textsf{everyshi} geladen wurde, bzw. \cs{AtNextShipout} zur
+% Verfügung steht, dann soll dieser Code noch vor Code ausgeführt werden, der
+% eventuell in \cs{shipout} eingeschleust wurde. Das funktioniert leider nicht
+% wirklich zuverlässig. Sollte zwischen dem Aufruf von \cs{set@dvipspagesize}
+% (also der Neuberechnung des Satzspiegels) und der Ausgabe der Seite doch
+% noch etwas per \cs{AtNextShipout} oder \cs{EveryShipout} eingefügt
+% werden, dann gehen diese Teile verloren!
+% \begin{macrocode}
+ \begingroup
+ \protected@edef\reserved@a{\endgroup
+ \protect\AtNextShipout{%
+ \protect\bgroup
+ \protect\global\protect\setbox\protect\@cclv\protect\vbox{%
+ \scr@updatedvipspagesize
+ \protect\box\protect\@cclv
+ }%
+ \protect\egroup
+ }}%
+ \reserved@a
+ }%
+ \else
+% \end{macrocode}
+% In diesem Fall (nämlich weder DVI- noch PS-Ausgabe) muss nur die Gruppe, die
+% eingefügt wurde, um die Änderung von \cs{if@tempswa} lokal zu halten,
+% geschlossen werden.
+% \begin{macrocode}
+ \endgroup
+ \fi
+ }%
+ \else
+ \let\set@dvipspagesize=\setnot@dvipspagesize
+ \fi
+ \renewcommand*{\set@dvipdfmxpagesize}{%
+ \scr@ifdvioutput{%
+ \special{papersize=\the\paperwidth,\the\paperheight}%
+ }{}%
+ }%
+ \renewcommand*{\set@vtexpagesize}{%
+ \ifnotundefined{mediawith}{\mediawidth=\paperwidth}{}%
+ \ifnotundefined{mediaheight}{\mediaheight=\paperheight}{}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+%
+% \begin{option}{dvips}
+% \changes{v2.7g}{2001/04/17}{neue Option}
+% \changes{v2.95}{2002/08/27}{neu implementiert}
+% \changes{v2.98c}{2008/04/09}{Ersatz geändert}
+% \changes{v2.98c}{2008/04/09}{Info statt Warnung}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}
+% Die Option ist obsolete und wird nun über die Option
+% \texttt{pagesize} implementiert. Obwohl die Verwendung von
+% \texttt{pagesize=automedia} zu einer Warnung führen kann, wird hier nur
+% informiert.
+% \begin{macrocode}
+\KOMA@DeclareStandardOption[typearea]{dvips}{%
+ pagesize=automedia%
+}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{pdftex}
+% \changes{v2.7g}{2001/04/17}{neue Option}
+% \changes{v2.95}{2002/08/27}{neu implementiert}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}
+% Die Option ist obsolete und wird nun über die Option
+% \texttt{pagesize} implementiert.
+% \begin{macrocode}
+\KOMA@DeclareStandardOption[typearea]{pdftex}{%
+ pagesize=pdftex%
+}
+% \end{macrocode}
+% \end{option}
+%
+%
+% \subsubsection{Papiergrößen-Optionen}
+%
+% Die folgende Option bestimmt die Papiergröße und -ausrichtung. Aus
+% der Papiergröße wird später mit \cs{typearea} der Satzspiegel
+% berechnet. Darüber hinaus wäre das eine passende Gelegenheit
+% \cs{SetDIVList} anzuwenden, darauf wird aber verzichtet, da die
+% Verwendung der Liste ohnehin als veraltete Methode betrachtet werden
+% kann.
+%
+% \begin{option}{a4paper}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}
+% \begin{option}{a5paper}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}
+% \begin{option}{b5paper}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}
+% \begin{option}{letterpaper}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}
+% \begin{option}{legalpaper}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}
+% \begin{option}{executivepaper}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}
+% \begin{option}{landscape}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}
+% \begin{option}{portrait}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}
+% Die Formate, die auch bei den Standardklassen definiert sind, werden
+% als Sonderfall explizit definiert. Dadurch ist ein Wechsel der
+% Klasse bzw. die Verwendung von \textsf{typearea} mit den
+% Standardklassen einfacher. Aus Kompatibilitätsgründen werden auch
+% die übrigen Papiergrößenoptionen später noch per Mustererkennung
+% verarbeitet.
+% \begin{macrocode}
+\KOMA@DeclareStandardOption[typearea]{a4paper}{paper=a4}
+\KOMA@DeclareStandardOption[typearea]{a5paper}{paper=a5}
+\KOMA@DeclareStandardOption[typearea]{b5paper}{paper=b5}
+\KOMA@DeclareStandardOption[typearea]{letterpaper}{paper=letter}
+\KOMA@DeclareStandardOption[typearea]{legalpaper}{paper=legal}
+\KOMA@DeclareStandardOption[typearea]{executivepaper}{paper=executive}
+\KOMA@DeclareStandardOption[typearea]{landscape}{paper=landscape}
+\KOMA@DeclareStandardOption[typearea]{portrait}{paper=portrait}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{paper}
+% \changes{v2.95}{2002/12/03}{neu implementiert}
+% \changes{v3.01b}{2008/12/09}{Höhe und Breite vertauscht}
+% \changes{v3.02c}{2009/02/12}{neuer Wert \texttt{seascape}}
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}
+% Im Normalfall wird die Papiergröße jedoch über diese Option
+% gesetzt. Dabei sind neben den Standard- und den ISO-Reihen A, B, C
+% und D auch Wertepaare der Form
+% "`\texttt{(\meta{Breite},\meta{Höhe})}"' und die Angaben
+% "`\texttt{portrait}"' und "`\texttt{landscape}"' erlaubt.
+% \begin{macrocode}
+\KOMA@key{paper}{%
+ \ifstr{#1}{seascape}{%
+ \@seascapetrue
+ \if@landscape\else
+ \setlength{\@tempdima}{\paperwidth}%
+ \setlength{\paperwidth}{\paperheight}%
+ \setlength{\paperheight}{\@tempdima}%
+ \@landscapetrue
+ \fi
+ \FamilyKeyStateProcessed
+ }{%
+ \ifstr{#1}{landscape}{%
+ \@seascapefalse
+ \if@landscape\else
+ \setlength{\@tempdima}{\paperwidth}%
+ \setlength{\paperwidth}{\paperheight}%
+ \setlength{\paperheight}{\@tempdima}%
+ \@landscapetrue
+ \fi
+ \FamilyKeyStateProcessed
+ }{%
+ \ifstr{#1}{portrait}{%
+ \if@landscape
+ \setlength{\@tempdima}{\paperwidth}%
+ \setlength{\paperwidth}{\paperheight}%
+ \setlength{\paperheight}{\@tempdima}%
+ \@landscapefalse
+ \fi
+ \FamilyKeyStateProcessed
+ }{%
+ \ifstr{#1}{letter}{%
+ \if@landscape
+ \setlength\paperheight{8.5in}%
+ \setlength\paperwidth {11in}%
+ \else
+ \setlength\paperheight{11in}%
+ \setlength\paperwidth {8.5in}%
+ \fi
+ \FamilyKeyStateProcessed
+ }{%
+ \ifstr{#1}{legal}{%
+ \if@landscape
+ \setlength\paperheight{8.5in}%
+ \setlength\paperwidth {14in}%
+ \else
+ \setlength\paperheight{14in}%
+ \setlength\paperwidth {8.5in}%
+ \fi
+ \FamilyKeyStateProcessed
+ }{%
+ \ifstr{#1}{executive}{%
+ \if@landscape
+ \setlength\paperheight{7.25in}%
+ \setlength\paperwidth {10.5in}%
+ \else
+ \setlength\paperheight{10.5in}%
+ \setlength\paperwidth {7.25in}%
+ \fi
+ \FamilyKeyStateProcessed
+ }{%
+ \iso@paper{#1}%
+ \if@tempswa
+ \FamilyKeyStateProcessed
+ \else
+ \expandafter\maybe@pair#1::\@nil
+ \if@tempswa
+ \ifnum \scr@ta@compatibility<\@nameuse{scr@v@3.01b}\relax
+ \PackageWarningNoLine{typearea}{%
+ You may have to exchange height and width!\MessageBreak
+ Until KOMA-Script version 3.01b the semantic\MessageBreak
+ of option `paper' was `paper=height:width'\MessageBreak
+ instead of `paper=width:height'.\MessageBreak
+ I've switched back to that old interpretation\MessageBreak
+ because of the given compatiblity settings}%
+ \setlength\paperheight{\@tempa}%
+ \setlength\paperwidth{\@tempb}%
+ \else
+ \setlength\paperwidth{\@tempa}%
+ \setlength\paperheight{\@tempb}%
+ \fi
+ \FamilyKeyStateProcessed
+ \else
+ \KOMA@unknown@keyval{paper}{#1}{%
+ `letter', `legal', `executive', `a'<nr>, `b'<nr>,
+ `c'<nr>, `d'<nr>,\MessageBreak
+ <width>`:'<height>, `landscape' and `portrait'%
+ }%
+ \fi
+ \fi
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\if@seascape}
+% \changes{v3.02c}{2009/02/12}{neu}
+% \begin{macro}{\@seascapetrue}
+% \changes{v3.02c}{2009/02/12}{neu}
+% \begin{macro}{\@seascapefalse}
+% \changes{v3.02c}{2009/02/12}{neu}
+% In diesem Schalter wird nur gespeichert, ob Breitformat ggf. umgekehrt
+% verwendet werden soll. Dies macht derzeit nur bei Verwendung von dvips einen
+% Unterschied!
+% \begin{macrocode}
+\newif\if@seascape
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\if@landscape}
+% \begin{macro}{\@landscapetrue}
+% \begin{macro}{\@landscapefalse}
+% In diesem Schalter wird gespeichert, ob Hoch- oder Breitformat
+% verwendet wird.
+% \begin{macrocode}
+\newif\if@landscape
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\maybe@pair}
+% \changes{v2.95}{2002/12/03}{neu (intern)}
+% \changes{v2.97e}{2007/11/26}{funktioniert zum ersten Mal}
+% Testet, ob der nachfolgende Parameter die Form
+% "`\meta{erstes Argument}:\meta{zweites Argument}"' hat.
+% Wenn ja, wird \cs{@tempa} mit dem ersten und \cs{@tempb} mit dem
+% zweiten Argument definiert.
+% \begin{macrocode}
+\newcommand*{\maybe@pair}{}
+\def\maybe@pair#1:#2:#3\@nil{%
+ \edef\@tempa{#1}\edef\@tempb{#2}%
+ \ifx\@tempa\@empty\@tempswafalse\else
+ \ifx\@tempb\@empty\@tempswafalse\else\@tempswatrue\fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+%
+% \subsubsection{Geparste Optionen}
+%
+% Die Behandlung für \texttt{BCOR\emph{Wert}}, \texttt{DIV\emph{Wert}} und
+% \texttt{a\emph{Wert}paper}, \texttt{b\emph{Wert}paper},
+% \texttt{c\emph{Wert}paper} sowie \texttt{d\emph{Wert}paper} und
+% \texttt{\emph{Wert}headlines}.
+% \changes{v2.97c}{2007/09/12}{\cs{lco@test} bei den geparsten Optionen
+% eingefügt}
+% \begin{macrocode}
+\DeclareOption*{%
+%<letter> \lco@test
+ \x@paper}
+% \end{macrocode}
+%
+% \iffalse
+% Der Rest gehört nicht mehr zu den Optionen.
+%</option>
+%<*body>
+%<*package>
+% \fi
+%
+%
+% \subsubsection{Konfigurationsdatei}
+%
+% \changes{v2.0e}{1994/10/28}{Konfigurationsdatei
+% \texttt{typearea.cfg} zur Definition weiterer Optionen
+% bzw. Papiergrößen}
+% Es ist möglich in einer Datei \texttt{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}
+%
+%
+% \subsubsection{Standardoptionen}
+%
+% Als Standardoptionen sind \texttt{headinclude=false},
+% \texttt{footinclude=false} und die Papiergröße \texttt{paper=A4}
+% eingestellt. Diese Optionen können selbstverständlich durch
+% explizite Angaben überladen werden.
+% \changes{v2.3h}{1995/01/19}{\cs{relax} nach \cs{ProcessOptions}
+% ergänzt.}
+% \changes{v2.96}{2006/08/18}{Optionen werden in Reihenfolge der Angabe statt
+% in Reihenfolge der Deklaration abgearbeitet.}
+% \changes{v2.97c}{2007/04/19}{Verwendung von \cs{KOMAExecuteOptions} an
+% Stelle von \cs{KOMAoptions} und \cs{KOMAProcessOptions} an Stelle von
+% \cs{ProcessOptions}}
+% \changes{v2.97c}{2007/04/19}{Optionen, die der Voreinstellung ohnehin
+% entsprechen, werden nicht explizit gesetzt}
+% \changes{v2.97c}{2007/07/18}{Option \texttt{twoside} wird explizit passend
+% gesetzt}
+% \changes{v3.12}{2013/11/11}{die voreingestellte Papiergröße kann via
+% \cs{defaultpagesize} auch in \texttt{typearea.cfg} verändert werden}
+% \begin{macro}{\defaultpapersize}
+% \changes{v3.12}{2013/11/11}{Neue Anweisung}
+% \begin{macrocode}
+\providecommand*{\defaultpapersize}{A4}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\KOMAExecuteOptions{paper=\defaultpapersize}
+\if@twoside
+ \if@semitwoside
+ \KOMAExecuteOptions{twoside=semi}
+ \else
+ \KOMAExecuteOptions{twoside}
+ \fi
+\else
+ \KOMAExecuteOptions{twoside=false}
+\fi
+\KOMAProcessOptions\relax
+% \end{macrocode}
+%
+%
+% \subsection{Schriftgrößenabhängige Voreinstellungen für \emph{DIV}}
+%
+% \begin{macro}{\ta@divlist}
+% \changes{v2.0e}{1994/10/28}{neu (intern)}
+% \changes{v2.6}{2000/01/04}{die Liste umfasst nun Werte ab 1\,pt
+% statt ab 10\,pt.}
+% \begin{macro}{\ta@divlistelse}
+% \changes{v2.6}{2000/01/04}{neu (intern)}
+% An dieser Stelle muss noch für die Standardeinstellung der
+% \textit{DIV}-Liste gesorgt werden, falls eine solche noch nicht
+% definiert wurde.
+% \begin{macrocode}
+\providecommand\ta@divlist{{}{}{}{}{}{}{}{}{}{8}{10}{12}}
+% \end{macrocode}
+% \end{macro}
+% Wenn kein Defaultwert definiert ist, wird dieser Wert verwendet:
+% \begin{macrocode}
+\providecommand\ta@divlistelse{1}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% Das waren die Optionen für das Paket oder im ersten Durchlauf der
+% Klassen.
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+%
+% \subsection{Laden des Pakets}
+%
+% Das Folgende wird nur in einem zweiten Durchlauf in die Klassen
+% eingefügt und sorgt für das Laden des \textsf{typearea} Pakets.
+% \begin{macrocode}
+%<*class>
+% \end{macrocode}
+% Vor dem Laden müssen noch diverse Makros zurückgesetzt werden, damit
+% sie überhaupt in \textsf{typearea} definiert werden können:
+% \begin{macrocode}
+\let\@BCOR =\relax
+\let\@@BCOR =\relax
+\let\@DIV =\relax
+\let\@@DIV =\relax
+\let\@headlines =\relax
+\let\@@headlines =\relax
+\let\x@paper =\relax
+\let\x@@paper =\relax
+\let\scr@pti@nerr@r =\relax
+% \end{macrocode}
+% Jetzt kann geladen werden:
+% \changes{v2.95}{2002/06/22}{Beim Laden von \textsf{typearea} wird
+% \cs{KOMAScriptVersion} verwendet}
+% Die Überprüfung auf die korrekte \KOMAScript-Version geschieht in
+% dem Paket (siehe dazu \texttt{scrkernel-version.dtx}).
+% \begin{macrocode}
+\RequirePackage{typearea}[\KOMAScriptVersion]
+% \end{macrocode}
+% Auf diese Art ist sichergestellt, dass immer die Version von
+% \textsf{typearea} verlangt wird, die zur gleichen Release wie
+% die Klassen gehört. Wobei die Warnungen je nach Zusammentreffen der
+% Versionen unterschiedlich ausfallen können.
+%
+% Für die Kompatibilität mit den Standardklassen muss jetzt ggf. noch der
+% Seitenspiegel angepasst werden. Dies geschieht aber nur, wenn ein
+% vordefinierter Wert verwendet wurde:
+% \begin{macrocode}
+%<*!letter>
+\if@scr@emulatestandardclasses
+ \ifnum\@lastdiv=\z@
+ \setlength{\textwidth}{\dimexpr \paperwidth-2in\relax}
+ \ifdim \f@size\p@<10.5\p@
+ \setlength{\@tempdimb}{345\p@}
+ \else\ifdim \f@size\p@<11.5\p@
+ \setlength{\@tempdimb}{360\p@}
+ \else
+ \setlength{\@tempdimb}{390\p@}
+ \fi
+ \fi
+ \if@twocolumn
+ \ifdim\@textwidth>2\@tempdimb\relax
+ \setlength{\textwidth}{2\@tempdimb}
+ \fi
+ \else
+ \ifdim\textwidth>\@tempdimb
+ \setlength{\textwidth}{\@tempdimb}
+ \fi
+ \fi
+ \@settopoint\textwidth
+ \setlength{\@tempdima}{\dimexpr \paperheight-3.5in\relax}
+ \divide\@tempdima\baselineskip
+ \@tempcnta=\@tempdima
+ \setlength{\textheight}{\@tempcnta\baselineskip}
+ \addtolength{\textheight}{\topskip}
+ \edef\reserved@a{%
+ \noexpand\@areasetadvancedtrue
+ \noexpand\areaset[current]{\noexpand\textwidth}{\noexpand\textheight}%
+ \if@areasetadvanced\else\noexpand\@areasetadvancedfalse\fi
+ }\reserved@a
+ \fi
+\fi
+%</!letter>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class>
+% \end{macrocode}
+%
+%
+% Ab hier ist alles nur noch für das Paket.
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \subsection{Einige interne Register}
+%
+% \begin{Length}{\ta@hblk}
+% \begin{Length}{\ta@vblk}
+% \begin{Length}{\ta@temp}
+% Diese Größsenparameter und werden intern für verschiedene Befehle
+% benötigt. (Die Zähler \cs{ta@bcor} und \cs{ta@div} werden bereits
+% bei der Optionenauswertung benötigt und sind deshalb vorgezogen.)
+% \begin{macrocode}
+\newlength{\ta@hblk}
+\newlength{\ta@vblk}
+\newlength{\ta@temp}
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+%
+%
+% \subsection{Die Berechnung des Satzspiegels}
+%
+% \begin{macro}{\typearea}
+% Die Berechnung des Satzspiegels, wie sie in der Anleitung
+% beschrieben ist, findet mit Hilfe des Befehls \cs{typearea} statt,
+% der hier definiert wird. Die Berechnung selbst benötigt mehreren
+% Stufen.
+%
+% \begin{macro}{\@typearea}
+% \changes{v2.4n}{1997/05/28}{eigentliche Satzspiegelberechnung in
+% \cs{@typearea} ausgegliedert}
+% \changes{v2.95}{2002/08/20}{\cs{selectfont} eingefügt}
+% Die eigentliche Satzspiegelberechnung geschieht über das Hilfsmakro
+% \cs{@typearea}, das dann auch von \cs{typearea} genutzt wird. Dieses
+% Hilfsmakro benötigt keine Parameter, da diese bereits zuvor von
+% \cs{typearea} in die entsprechenden Variablen geschrieben wurden.
+% \begin{macrocode}
+\newcommand*\@typearea{%
+% \end{macrocode}
+% Bevor irgend etwas anderes gemacht wird, sogen wir dafür, dass die
+% gewählte Schrift auch gesetzt wird. Dies ist notwendig, falls jemand
+% vor \cs{typearea} einen Befehl wie \cs{linespread} verwendet.
+% \begin{macrocode}
+ \selectfont
+% \end{macrocode}
+% Zunächst werden die horizontalen Maße berechnet. Dazu wird als
+% erstes die Größe einer horizontalen Längeneinheit (\emph{HLE})
+% ermittelt:
+% \begin{macrocode}
+ \ta@hblk=\paperwidth
+ \advance \ta@hblk by-\ta@bcor
+ \divide\ta@hblk by\ta@div
+% \end{macrocode}
+% Die Größe des Bereichs für die Randnotizen ist ebenfalls von der
+% Streifenbreite abhängig.
+% \changes{v2.8q}{2002/03/28}{Textbreite berücksichtigt Option
+% \texttt{mpinclude}}
+% \begin{macrocode}
+ \if@mincl
+ \marginparwidth=\ta@hblk
+ \advance\marginparwidth by-\marginparsep
+ \else
+ \if@twoside
+ \if@semitwoside
+ \marginparwidth=\ta@hblk
+ \else
+ \marginparwidth=1.5\ta@hblk
+ \fi
+ \else
+ \marginparwidth=\ta@hblk
+ \fi
+ \fi
+% \end{macrocode}
+% Der linke und rechte Rand wird relativ zur benutzbaren Seitenbreite
+% berechnet. Dabei muss auch der Rand berücksichtigt werden, der vom
+% Druckertreiber standardmäßig hinzugefügt wird. Außerdem ist der
+% Rand abhängig davon, ob es sich um ein einseitiges oder beidseitiges
+% Layout handelt. Bei Option \texttt{mpinclude} sind im beidseitigen
+% Satz zusätzlich die Randnotizen zu beachten.
+% \begin{macrocode}
+ \oddsidemargin=-1in
+ \evensidemargin=-1in
+ \if@twoside
+ \if@semitwoside
+ \advance\oddsidemargin by1.5\ta@hblk
+ \advance\oddsidemargin by\ta@bcor
+% \end{macrocode}
+% \changes{v3.12}{2013/10/15}{use alternating \texttt{BCOR} with
+% \texttt{twoside!=semi}}
+% Wenn \texttt{twoside=semi} verwendet wird, wird der Binderand ab
+% \KOMAScript~3.12 dem inneren Rand zugeschlagen. Bei Kompatibilität zu
+% älteren Versionen wird hingegen immer der linke Rand verwendet.
+% \begin{macrocode}
+ \ifnum \scr@compatibility<\@nameuse{scr@v@3.12}\relax
+ \evensidemargin=\oddsidemargin
+ \else
+ \advance\evensidemargin by1.5\ta@hblk
+ \fi
+ \else
+ \advance\oddsidemargin by\ta@hblk
+ \advance\oddsidemargin by\ta@bcor
+ \advance\evensidemargin by2\ta@hblk
+ \if@mincl
+ \advance\evensidemargin by\marginparwidth
+ \advance\evensidemargin by\marginparsep
+ \fi
+ \fi
+ \else
+ \advance\oddsidemargin by1.5\ta@hblk
+ \advance\oddsidemargin by\ta@bcor
+ \evensidemargin=\oddsidemargin
+ \fi
+% \end{macrocode}
+% Der Rest steht nun für den Textbereich zur Verfügung:
+% \begin{macrocode}
+ \textwidth=\paperwidth
+ \advance\textwidth by-\ta@bcor
+ \advance\textwidth by-3\ta@hblk
+% \end{macrocode}
+% Falls die Randnotizen für die Satzspiegelberechnung zum Textbereich
+% gehören, müssen sie zusammen mit ihrem Abstand vom Text nun von
+% diesem abgezogen werden. Es wird dabei davon ausgegangen, dass die
+% Randnotizen immer außen gesetzt werden. Sollte der Textbereich für
+% Randnotizen zu schmal sein, so wird der Bereich der Randnotizen so
+% lange verkleinert, bis dies nicht mehr der Fall ist. Am einfachsten
+% geht dies, indem gegebenfalls die Breiten vertauscht werden.
+% \begin{macrocode}
+ \if@mincl
+ \advance\textwidth by-\marginparwidth
+ \advance\textwidth by-\marginparsep
+ \ifdim\textwidth <\marginparwidth
+ \PackageWarningNoLine{typearea}{%
+ Width of text (\the\textwidth) less than width of\MessageBreak
+ marginpar (\the\marginparwidth) while using option\MessageBreak
+ `mpinclude'.\MessageBreak
+ Because of this, I'm exchanging the values.\MessageBreak
+ You should increase DIV to avoid such problems.\MessageBreak
+ }%
+ \@tempskipa=\marginparwidth
+ \marginparwidth=\textwidth
+ \textwidth=\@tempskipa
+ \fi
+ \fi
+% \end{macrocode}
+% Danach folgen die vertikalen Maße. Auch dafür wird zunächst die Höhe
+% eines Streifens benötigt.
+% \begin{macrocode}
+ \ta@vblk=\paperheight
+ \divide\ta@vblk by\ta@div
+% \end{macrocode}
+% Davon ausgehend kann der obere Rand berechnet werden, wobei zu
+% berücksichtigen ist, dass {\TeX} diesen selbständig um ein Inch
+% vergrößert.
+% \begin{macrocode}
+ \topmargin=-1in
+ \advance\topmargin by\ta@vblk
+% \end{macrocode}
+% Außerdem ist zu berücksichtigen, ob der Kopf zum Textbereich oder
+% zum Rand gehört.
+% \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öhe die
+% Ränder abzuziehen und es ist ebenfalls zu berücksichtigen, ob Kopf-
+% und Fuß zu den Rändern oder zum Textbereich selbst gezählt 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, dass die Größse des
+% Textbereichs nicht zu einer vertikalen Aufweitung führt.
+% \changes{v2.96}{2006/09/12}{\cs{topskip} wird gesetzt}
+% \changes{v2.97c}{2007/07/04}{\cs{maxdepth} wird gesetzt}
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{@ptsize}{%
+ \topskip=\f@size\p@
+ }{%
+ \topskip=\@ptsize\p@
+ \advance\topskip by 10\p@
+ }%
+ \maxdepth=.5\topskip
+ \textheight=\topskip
+ \@whiledim\textheight <\ta@temp
+ \do{\advance\textheight by\baselineskip}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ta@modiv}
+% Dieses Hilfsmakro wird weiter unten benötigt. Es dividiert den
+% ersten Parameter durch den zweiten und liefert das gerundete
+% Ergebnis in \cs{ta@div} zurück. Für die Berechnung werden
+% \cs{@tempdima} und \cs{@tempdimb} verwendet.
+% \begin{macrocode}
+\newcommand*\ta@modiv[2]{
+ \setlength{\@tempdima}{#1}
+ \divide\@tempdima by#2
+ \ta@div\@tempdima
+ \ifnum \ta@div<4
+ \ta@div=4
+ \else
+ \setlength{\@tempdimb}{#1}%
+ \divide\@tempdimb by\ta@div
+ \addtolength{\@tempdima}{\@tempdima}%
+ \addtolength{\@tempdima}{-\@tempdimb}%
+ \advance\ta@div by\@ne
+ \setlength{\@tempdimb}{#1}%
+ \divide\@tempdimb by\ta@div
+% \end{macrocode}
+% \changes{v2.5a}{1997/06/22}{\cs{ifdim} statt \cs{ifnum}}
+% \begin{macrocode}
+ \ifdim \@tempdima<\@tempdimb
+ \advance\ta@div by\m@ne
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ta@temp@goodwidth}
+% Dieses Makro setzt die Hilfdimension \cs{ta@temp} auf den Wert einer
+% optimalen Zeilenbreite in der aktuellen Schrift. Voraussetzung für
+% diese Berechnung ist, dass 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ßbuchstaben.
+% \changes{v2.7i}{2001/05/17}{Berechnung ist robuster gegen
+% arithmetischen Überlauf bei sehr großen Schriften}
+% \changes{v2.8q}{2002/03/06}{\cs{normalfont} \cs{normalsize}
+% hinzugefügt}
+% \changes{v2.95a}{2006/07/20}{Berechnung für große Schriften korrigiert}
+% \begin{macrocode}
+\newcommand*\ta@temp@goodwidth{%
+ \settowidth{\ta@temp}{\normalfont\normalsize
+ abcdefghijklmnopqrstuvwxyz}%
+ \ifdim\ta@temp >200\p@
+ \setlength{\ta@temp}{2.53846\ta@temp}%
+ \settowidth{\@tempdima}{\normalfont\normalsize
+ ABCDEFGHIJKLMNOPQRSTUVWXYZ}%
+ \setlength{\@tempdima}{.11538\@tempdima}%
+ \addtolength{\ta@temp}{\@tempdima}%
+ \else
+ \multiply\ta@temp by66
+ \settowidth{\@tempdima}{\normalfont\normalsize
+ ABCDEFGHIJKLMNOPQRSTUVWXYZ}%
+ \multiply\@tempdima by3
+ \addtolength{\ta@temp}{\@tempdima}%
+ \divide\ta@temp by26
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AfterCalculatingTypearea}
+% \changes{v2.96a}{2006/11/29}{neu}
+% Neuerdings besteht die Möglichkeit, auf Benutzerebene das Verhalten von
+% \cs{typearea} zu beeinflussen. In der Sternvariante wird dabei lokal
+% gearbeitet.
+% \begin{macrocode}
+\newcommand*{\AfterCalculatingTypearea}{%
+ \@ifstar \l@addto@macro \g@addto@macro \@typearea@end
+}
+% \end{macrocode}
+% \begin{macro}{\@typearea@end}
+% \changes{v2.96a}{2006/11/29}{wird wieder immer aber mit neuer Bedeutung
+% definiert}
+% Das Makro \cs{@typearea@end} dient als Hook, um am Ende von \cs{typearea}
+% noch irgendwelche Änderungen vornehmen zu können. Dies geschieht ggf. noch
+% vor der Aktivierung der Einstellungen innerhalb eines Dokuments.
+% \begin{macrocode}
+\newcommand*{\@typearea@end}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\AfterSettingArea}
+% \changes{v3.11}{2012/04/17}{new}
+% The user may influence the result of \cs{areaset}. The star version works
+% local while the non-star version is global.
+% \begin{macrocode}
+\newcommand*{\AfterSettingArea}{%
+ \@ifstar \l@addto@macro \g@addto@macro \@areaset@end
+}
+% \end{macrocode}
+% \begin{macro}{\@areaset@end}
+% \changes{v3.11}{2012/04/17}{new}
+% Macro \cs{@areaset@end} is a hook to make it possible to add some
+% instructions to the end of the \cs{areaset} command. This will be executed
+% before the activation of the settings inside a document.
+% \begin{macrocode}
+\newcommand*{\@areaset@end}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\activateareas}
+% \changes{v2.96a}{Neuer Name für alte Anweisung}
+% Dieses Makro wird verwendet, um mit einem gewaltigen Hack die Änderung des
+% Satzspiegels innerhalb eines Dokuments zu ermöglichen. Es stellt selbst
+% sicher, dass es nur innerhalb des Dokuments ausgeführt wird.
+% \begin{macrocode}
+\newcommand*{\activateareas}{%
+% \end{macrocode}
+% Als erstes wird getestet, ob wir überhaupt innerhalb des Dokuments sind und
+% nur dann wird etwas getan.
+% \begin{macrocode}
+ \if@atdocument
+% \end{macrocode}
+% Wenn dem so ist, wird jedoch eine Warnung ausgegeben, weil es wirklich sehr
+% unsauber ist, so zu verfahren. Das ganze ist absolut abhängig 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}
+% Dann können endlich die Dimensionen, die z.\,B. von der Ausgaberoutine
+% benötigt werden, neu berechnet werden.
+% \begin{macrocode}
+ \@colht=\textheight
+ \@colroom=\textheight
+ \vsize=\textheight
+ \columnwidth=\textwidth
+ \if@twocolumn
+ \advance\columnwidth by-\columnsep
+ \divide\columnwidth by\tw@
+ \hsize=\columnwidth
+ \@firstcolumntrue
+ \fi
+ \hsize=\columnwidth
+ \linewidth\hsize
+ \scr@ifundefinedorrelax{@pagesizelast}{}{%
+ \KOMAoptions{pagesize=\@pagesizelast}%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\storeareas}
+% \changes{v3.10}{2011/09/13}{neue Anweisung}%
+% Die aktuellen Einstellungen können in einem Makro gespeichert
+% werden. Dieses Makro kann anschließend genutzt werden, um die
+% Einstellungen wieder her zu stellen.
+% \begin{macro}{\scr@grouplevel@test}
+% \changes{v3.10}{2011/09/13}{neu (intern)}
+% \begin{macrocode}
+\newcommand*{\scr@grouplevel@test}[1]{%
+ \ifcase\currentgrouptype\else
+ \PackageWarning{typearea}{%
+ \string#1\space used at group level
+ \the\currentgrouplevel.\MessageBreak
+ Using \string#1\space inside any group, e.g.\MessageBreak
+ environments, math mode, boxes, etc. may result in\MessageBreak
+ many type setting problems.\MessageBreak
+ You should move the command \string#1\MessageBreak
+ outside all groups%
+ }%
+ \fi
+}
+\newcommand*{\storeareas}[1]{%
+ \edef\reserved@a{%
+ \noexpand\newcommand*{\unexpanded{#1}}{%
+ \noexpand\scr@grouplevel@test\unexpanded{#1}%
+ \noexpand\paperheight=\the\paperheight\space
+ \noexpand\paperwidth=\the\paperwidth\space
+ \noexpand\topmargin=\the\topmargin\space
+ \noexpand\headheight=\the\headheight\space
+ \noexpand\headsep=\the\headsep\space
+ \noexpand\textheight=\the\textheight\space
+ \noexpand\vsize=\the\vsize\space
+ \noexpand\footskip=\the\footskip\space
+ \noexpand\@colht=\the\@colht\space
+ \noexpand\@colroom=\the\@colroom\space
+ \noexpand\textwidth=\the\textwidth\space
+ \noexpand\columnwidth=\the\columnwidth\space
+ \noexpand\hsize=\the\hsize\space
+ \noexpand\oddsidemargin=\the\oddsidemargin\space
+ \noexpand\evensidemargin=\if@twoside
+ \the\evensidemargin
+ \else
+ \the\oddsidemargin
+ \fi\space
+ \noexpand\linewidth=\the\linewidth\space
+ \noexpand\maxdepth=\the\maxdepth\space
+ \scr@ifundefinedorrelax{@pagesizelast}{}{%
+ \noexpand\KOMAoptions{pagesize=\@pagesizelast}}%
+ \noexpand\ta@div=\the\ta@div\space
+ \noexpand\ta@bcor=\the\ta@bcor\space
+ \noexpand\def\noexpand\@lastdiv{\@lastdiv}%
+ \noexpand\marginparsep=\the\marginparsep\space
+ \noexpand\marginparwidth=\the\marginparwidth\space
+ }%
+ }%
+ \reserved@a
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ta@divfor}
+% Der Standardseitenspiegel ist abhängig von den mit \cs{SetDIVList}
+% vorgegebenen Einstellungen. Dazu muss aus einer eventuell
+% vorhandenen inneren Liste \cs{ta@divlist} der von der Schriftgröße
+% abhängige \textit{DIV}-Wert ausgelesen werden. Dies geschieht mit
+% Hilfe des \cs{ta@divfor}-Befehls, der sich wiederum einiger interner
+% Befehle zur Listenbearbeitung bedient.
+% \changes{v2.4g}{1996/11/04}{Satzspiegel wird nicht mehr direkt
+% berechnet, sondern nur der \textit{DIV}-Wert aus der
+% Defaultliste ermittelt}
+% \changes{v2.6}{2000/01/04}{Berücksichtigung der erweiterten
+% Liste}
+% \changes{v2.8q}{2002/03/28}{Berücksichtigung der Option
+% `mpinclude'}
+% \changes{v2.96}{2006/08/11}{Schriftgröße muss nicht in ganzen pt sein}
+% \begin{macrocode}
+\newcommand*{\ta@divfor}[1]{%
+ \if@mincl
+ \PackageInfo{typearea}{%
+ With option `mpinclude' there are no predefined\MessageBreak
+ DIV values. Using DIV calculation for good line\MessageBreak
+ width%
+ }%
+ \ta@div=\tw@
+ \else
+ \xdef\@tempa{\ta@divlist{}}%
+ \@tempdima=#1pt
+ \addtolength{\@tempdima}{.5\p@}%
+ \divide\@tempdima by\p@
+ \setlength{\@tempdimb}{\@tempdima}%
+ \multiply\@tempdimb by\p@
+ \ifdim \@tempdimb=#1pt
+ \ta@div=#1\relax
+ \@whilenum \ta@div >-9 \do {%
+ \ifx\@tempa\empty
+ \else \xdef\@tempa{\expandafter\@cdr\@tempa\@nil}\fi
+ \advance\ta@div by-1
+ }%
+ \else
+ \let\@tempa\empty
+ \fi
+ \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}
+ \setlength{\@tempdima}{#1\p@}%
+ \addtolength{\@tempdima}{10\p@}%
+ \PackageWarningNoLine{typearea}{%
+ DIV for \the\@tempdima\space and used papersize\MessageBreak
+ not defined!\MessageBreak
+ Using DIV=\ta@divlistelse
+ }%
+ \ta@div=\ta@divlistelse\relax
+ \else
+% \end{macrocode}
+% Ansonsten wird der vorgegebene Wert verwendet.
+% \begin{macrocode}
+ \xdef\@tempa{\expandafter\@car\@tempa\@nil}%
+ \ifx\@tempa\empty
+ \ta@div=\ta@divlistelse\relax
+ \else
+ \ta@div=\@tempa\relax
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.4g}{1996/11/04}{überflüssigen Kommentar gelöscht}
+% \changes{v2.7g}{2001/04/17}{die neuen Werte \texttt{current},
+% \texttt{default}, \texttt{calc}, \texttt{classic} werden
+% verstanden}
+% \changes{v2.8q}{2001/11/06}{der Wert \texttt{last} wird
+% verstanden}
+% \changes{v2.96}{2006/08/21}{Warnung, wenn \cs{typearea} innerhalb einer
+% Gruppe verwendet wird}
+% \changes{v3.10}{2011/09/13}{Verwendung von \cs{scr@grouplevel@test}}
+% \changes{v3.12}{2013/03/26}{konfigurierbare Höhe des Fußes}
+%
+% Die symbolischen Werte für das obligatorische Argument von
+% \cs{typearea} haben folgende Bedeutung:
+% \begin{center}\begin{tabular}{lll}
+% Symbol & Wert & Bedeutung \\\hline\\[-2ex]
+% \texttt{calc} & 2 & guten Wert berechnen \\
+% \texttt{classic} & 3 & mittelalterlicher Buchseitenkanon \\
+% \texttt{current} & --- & aktuellen Wert beibehalten \\
+% \texttt{default} & 0 & Wert aus der Liste verwenden \\
+% \texttt{last} & --- & Argument des letzten Aufrufs verwenden \\
+% \texttt{areaset} & --- & Satzspiegel beibehalten nur neu anordnen \\
+% \end{tabular}\end{center}
+% Das optionale Argument kennt hingegen nur den symbolischen Wert
+% \texttt{current}.
+% \begin{macrocode}
+\newcommand*\typearea[2][\z@]{%
+ \scr@grouplevel@test\typearea
+ \edef\@tempa{#1}\edef\@tempb{current}\ifx\@tempa\@tempb\else
+ \setlength{\ta@bcor}{#1}%
+ \fi
+ \edef\@tempa{#2}%
+ \def\@tempb{last}\ifx\@tempa\@tempb\let\@tempa=\@lastdiv
+ \ifx\csname @tempa\endcsname\relax
+ \def\@tempa{current}%
+ \fi
+ \fi
+ \def\@tempb{areaset}\ifx\@tempa\@tempb
+ \areaset[current]{\textwidth}{\textheight}%
+ \else
+ \def\@tempb{current}\ifx\@tempa\@tempb\else
+ \def\@tempb{default}\ifx\@tempa\@tempb\ta@div=\z@ \else
+ \def\@tempb{calc}\ifx\@tempa\@tempb\ta@div=\tw@ \else
+ \def\@tempb{classic}\ifx\@tempa\@tempb\ta@div=\thr@@ \else
+ \ta@div=\@tempa
+ \fi
+ \fi
+ \fi
+ \fi
+ \edef\@lastdiv{\the\ta@div}%
+% \end{macrocode}
+% Bevor nun irgendeine Berechnung durchgeführt wird, muss ggf. eine
+% neue Seite begonnen werden. Außerdem wird sichergestellt, dass die aktuelle
+% Schriftgröße die Grundschriftgröße ist und auch mit dem aktuellen
+% Durchschuss gerechnet wird.
+% \changes{v2.95a}{2006/07/20}{Grundschriftgröße einstellen}
+% \begin{macrocode}
+ \if@atdocument\newpage\fi
+ \normalsize
+% \end{macrocode}
+% Nun muss festgestellt werden, ob die Höhe des Kopfbereichs bereits
+% vorgegeben ist, oder ob diese selbst berechnet werden soll. Im Falle
+% der Berechnung wird als Höhe für den Kopf das 1,25-Fache des
+% Grundzeilenabstandes gewählt. Damit sollte auch noch genug Raum für die
+% optionale Trennlinie vorhanden sein.
+% \changes{v2.4n}{1997/05/28}{berechnete Kopfhöhe vom
+% Grundzeilenabstand abhängig}
+% \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 eingepasst wird. Der Abstand
+% soll aber auch nicht zu groß, werden. Optimal ist angeblich ein Wert
+% von einer Zeile. Dies führt jedoch zu einem klaren Konflikt bei
+% unterstrichenen Kopfzeilen. Deshalb wird ein Kompromiss gebildet.
+% \begin{macrocode}
+ \headsep=1.5\baselineskip
+% \end{macrocode}
+% Für den Fuß muss ähnlich verfahren werden. Dabei muss aber nicht nur
+% ggf. \cs{footheight}, sondern auch \cs{footskip} angepasst werden.
+% \begin{macrocode}
+ \@ifundefined{footheight}{%
+ \newlength\footheight
+ }{}%
+ \@ifundefined{ta@fh}{%
+ \footheight=1.25\baselineskip
+ }{%
+ \footheight=\ta@fh
+ }%
+ \footskip=\dimexpr\footheight+2.25\baselineskip
+% \end{macrocode}
+% Es folgen die restlichen von \textit{DIV} und \textit{BCOR}
+% unabhängigen Werte.
+% \begin{macrocode}
+ \marginparsep=1cc
+ \marginparpush=0.45\baselineskip
+% \end{macrocode}
+% \changes{v2.4g}{1996/11/04}{\textit{DIV}=0 versucht den Wert aus
+% der Default-Liste zu verwenden}
+% Vor der eigentlichen Berechnung des Satzspiegels wird nun zunächst
+% überprüft, ob der übergebene \textit{DIV}-Wert 0 ist. Da Werte von 0
+% bis 3 nicht möglich sind (Minimum sind drei Teile Rand und ein Teil
+% Text), wird der Wert 0 dafür verwendet, den Defaultwert aus der
+% Liste zu ermitteln, falls ein solcher vorhanden ist.
+% \changes{v2.5h}{1999/12/29}{Text der Warnung korrigiert}
+% \begin{macrocode}
+ \ifnum\ta@div=\z@
+ \@ifundefined{@ptsize}{%
+ \@tempdima=\f@size\p@
+ \advance\@tempdima by.5pt
+ \ta@div=\@tempdima
+ \divide\ta@div by65536
+ \advance\ta@div by-10
+ \xdef\@ptsize{\the\ta@div}%
+ \PackageWarningNoLine{typearea}{%
+ \string\@ptsize\space not defined!\MessageBreak
+ Fontsize is \f@size pt.\MessageBreak
+ Defining \string\@ptsize\space to \@ptsize%
+ }%
+ }{}%
+ \ta@divfor{\@ptsize}%
+ \fi
+% \end{macrocode}
+% \changes{v2.4n}{1997/05/28}{optionale, klassische Kreisberechnung
+% für \texttt{DIV}}
+% Als zweiter Sonderfall wird für einen \textit{DIV}-Wert von 3 die
+% \emph{Kreisberechnung} durchgeführt. Dabei wird versucht, den
+% Textbereich genau so hoch zu wählen, wie das Papier breit ist. Ein
+% solches Verhältnis 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ötigten Platzes, ist zu
+% beachten, ob Kopf und Fuß zum Textbereich oder zu den Rändern
+% gehören.
+% \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ötigt, 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öhe
+% 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öhe
+% \begin{macrocode}
+ \divide\ta@temp by3
+% \end{macrocode}
+% und schließlich erneut mit Hilfe der Papierhöhe der genaue
+% \textit{DIV}-Wert berechnet.
+% \begin{macrocode}
+ \ta@modiv{\paperheight}{\ta@temp}%
+ \fi
+% \end{macrocode}
+% An dieser Stelle muss \texttt{mpinclude} nicht berücksichtigt
+% werden, da nicht die Breite des Textbereichs, sondern die Breite des
+% Papiers als Kriterium verwendet wird.
+% \begin{macrocode}
+ \fi
+% \end{macrocode}
+% Wurde bisher kein Wert gefunden oder ein \textit{DIV}-Wert von 1 bis
+% 2 angegeben, so wird nun ein möglichst optimaler \textit{DIV}-Wert
+% ermittelt.
+% \changes{v2.4n}{1997/05/28}{optimale \textit{DIV}-Berechnung
+% verbessert}
+% \begin{macrocode}
+ \ifnum\ta@div <4
+ \typeout{DIV calculation for typearea with good linewidth.}%
+% \end{macrocode}
+% Zunächst könnte 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üllung verwendet:
+% \begin{macrocode}
+ \ta@temp@goodwidth
+% \end{macrocode}
+% Im Zweispaltenmodus besteht jede Zeile aus zwei solchen Spalten
+% zuzüglich dem Spaltenabstand:
+% \changes{v2.8q}{2001/12/13}{\texttt{DIVcalc} liefert im
+% zweispaltigen Satz (wie dokumentiert) breitere Spalten}
+% \begin{macrocode}
+ \if@twocolumn
+ \addtolength{\ta@temp}{\ta@temp}%
+ \addtolength{\ta@temp}{\columnsep}%
+ \fi
+% \end{macrocode}
+% In früheren Versionen erfolgte nun eine iterative Annäherung an den
+% optimalen \textit{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ächst wie oben die
+% Größe der horizontalen Ränder 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 by3
+% \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@
+ \setlength{\ta@hblk}{5mm}%
+ \fi
+% \end{macrocode}
+% Nun kann wieder der \textit{DIV}-Wert ermittelt werden.
+% \changes{v2.8q}{2002/03/28}{Berüchsichtigung von Option
+% \texttt{mpinclude} bei der \textit{DIV}-Berechnung}
+% Im Falle der Option \texttt{mpinclude} gilt allgemein, dass
+% der Nenner mit $\frac{3}{3+m}$ zu multiplizieren ist. Dabei ist $m$
+% die Anzahl an Längeneinheiten, die für die Randnotizen verwendet
+% werden sollen. Mit $m=1$ ist also der Faktor $\frac{3}{4}=0.75$ zu
+% verwenden. Schwieriger wird es, wenn hier nicht die Anzahl
+% Längeneinheiten, sondern ein konkreter Wert für die Breite der
+% Randnotizen verwendet wird.
+% \begin{macrocode}
+ \if@mincl
+ \setlength{\ta@temp}{.75\ta@hblk}%
+ \else
+ \setlength{\ta@temp}{\ta@hblk}%
+ \fi
+ \ta@modiv{\paperwidth}{\ta@temp}%
+% \end{macrocode}
+% Als Erschwernis kommt jetzt jedoch hinzu, dass nun zwar der
+% \textit{DIV}-Wert für die Breite optimal ist, jedoch u.\,U. zu einer
+% zu großen Höhe führt. Deshalb wird zunächst ein Satzspiegel für
+% diesen \textit{DIV}-Wert berechnet.
+% \begin{macrocode}
+ \@typearea
+% \end{macrocode}
+% Nun wird überprüft, ob die vertikalen Ausmaße 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 1\,in zu berücksichtigen 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ür diesen ein neuer
+% \textit{DIV}-Wert ermittelt. Dabei muss ebenfalls berücksichtigt
+% werden, ob Kopf- und Fußbereich zum Text oder zum Rand gehören.
+% \changes{v2.5b}{1997/06/29}{bei der Mindestrandbetrachtung
+% \texttt{headinclude} und \texttt{footinclude} berücksichtigen}
+% \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
+ \ta@modiv{\paperheight}{\ta@temp}%
+ \fi
+% \end{macrocode}
+% Dieser Sonderfall ist somit abschließend behandelt.
+% \begin{macrocode}
+ \fi
+% \end{macrocode}
+% Damit steht jetzt also der \textit{DIV}-Wert fest, und die
+% eigentliche Berechnung kann folgen.
+% \begin{macrocode}
+ \@typearea
+% \end{macrocode}
+% \changes{v2.0e}{1994/10/28}{Seitenaufteilung wird in die log-Datei
+% geschrieben}
+% \changes{v2.4i}{1996/11/11}{Seitenaufteilung wird etwas später in
+% die log-Datei geschrieben}
+% \changes{v2.4i}{1996/11/11}{am Ende von \cs{typearea} wird noch
+% \cs{@typeare@end} ausgeführt}
+% \changes{v2.4j}{1996/12/04}{bei der Seitenaufteilung wird
+% \cs{textheight} nicht mehr doppelt, dafür zusätzlich
+% \cs{baselineskip} ausgegeben}
+% \changes{v2.5}{1997/06/17}{"`arithmetic overflow"' bei landscape
+% behoben}
+% \changes{v2.95}{2004/01/30}{Warnung im Zweispaltenmodus korrigiert}
+% \changes{v3.00}{2008/10/08}{Layout-Infos werden per \cs{ta@layoutinfo}
+% in die \texttt{log}-Datei geschrieben}
+% \changes{v3.01b}{2008/12/09}{Warnungen vor ungünstigen Einstellungen
+% geändert}
+% Zum Schluss soll die Seitenaufteilung noch in die \texttt{log}-Datei
+% geschrieben werden.
+% \begin{macrocode}
+ \ta@temp@goodwidth
+ \if@twocolumn
+ \addtolength{\ta@temp}{\ta@temp}%
+ \addtolength{\ta@temp}{\columnsep}%
+ \fi
+ \setlength{\@tempdima}{\ta@temp}%
+ \addtolength{\ta@temp}{-\textwidth}%
+ \divide\@tempdima by100
+ \divide\ta@temp by\@tempdima
+ \@tempcnta=\ta@temp
+ \ifnum\@tempcnta <5
+ \ifnum\@tempcnta >-5
+ \@tempcnta=0
+ \else
+ \advance\@tempcnta by4
+ \fi
+ \else
+ \advance\@tempcnta by-4
+ \fi
+ \ifnum\@tempcnta <-15
+ \@tempcnta=-\@tempcnta
+ \PackageWarningNoLine{typearea}{%
+ Bad type area settings!\MessageBreak
+ The detected line width is about
+ \the\@tempcnta\@percentchar\MessageBreak
+ larger than the heuristically detected line width.\MessageBreak
+ You should e.g. decrease DIV, increase fontsize\MessageBreak
+ or change papersize%
+ }%
+ \@tempcnta=-\@tempcnta
+ \else
+ \ifnum\@tempcnta>15
+ \PackageWarningNoLine{typearea}{%
+ Maybe no optimal type area settings!\MessageBreak
+ The maximum limit of line width is about
+ \the\@tempcnta\@percentchar\MessageBreak
+ larger than the heuristically detected line width.\MessageBreak
+ You may e.g. increase DIV, decrease fontsize\MessageBreak
+ or change the papersize%
+ }
+ \fi\fi
+ \ifnum\ta@div <6
+ \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 e.g. increase DIV, increase fontsize or\MessageBreak
+ change papersize%
+ }
+ \fi
+ \ta@layoutinfo{\number\ta@div}{\the\@tempcnta}%
+ \@typearea@end
+ \activateareas
+ \ifdim \dimexpr 1in+\topmargin
+ +\headheight+\headsep
+ +\textheight
+ +\footskip+\dp\strutbox\relax
+ >\paperheight
+ \PackageWarningNoLine{typearea}{%
+ page content and margins higher than paper.\MessageBreak
+ This may result in page footer out of paper.\MessageBreak
+ You should decrease DIV, decrease foot height,\MessageBreak
+ or include footer into type area%
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ta@layoutinfo}
+% \changes{v3.00}{2008/10/08}{neu (intern)}
+% Schreibt die Layout-Information in die \texttt{log}-Datei. Dabei ist das
+% erste Argument die Ausgabe für den DIV-Wert und das zweite Argument die
+% DIV-Abweichung. Letztere wird nur ausgegeben, wenn das Argument nicht leer
+% und nicht \cs{relax} ist.
+% \begin{macrocode}
+\newcommand*{\ta@layoutinfo}[2]{%
+ \PackageInfo{typearea}{%
+ These are the values describing the layout:\MessageBreak
+ DIV\space\space=\space#1\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
+ \ifx\relax#2\relax\else
+ \space DIV departure\space\space\space=%
+ \space#2\@percentchar\MessageBreak
+ \fi
+ \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
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\recalctypearea}
+% \changes{v2.95}{2002/12/04}{Neu}
+% Dieses Anweisung dient der Neuberechnung des Satzspiegels mit den
+% zuletzt eingestellten Werten. Dieser Befehl existiert erst, nachdem
+% das Paket geladen wurde.
+% \begin{macrocode}
+\AtEndOfPackage{\newcommand*{\recalctypearea}{\typearea[current]{last}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\areaset}
+% \changes{v2.1b}{1994/12/31}{\cs{headheight} von \cs{@ptsize}
+% abhängig gemacht}
+% \changes{v2.6}{2000/01/04}{\cs{headheight} von \cs{f@size} statt
+% von \cs{@ptsize} abhängig gemacht}
+% \changes{v2.7g}{2001/04/17}{auch hier existiert der symbolische
+% Wert \texttt{current} für BCOR}
+% \changes{v2.95}{2002/12/05}{am Ende von \cs{areaset} wird noch
+% \cs{@typeare@end} ausgeführt}
+% Zur Berechnung eines Satzspiegels mit fester Breite und Höhe dient
+% der Befehl \cs{areaset}. Der Algorithmus ist ähnlich dem vorherigen
+% Verfahren, aber einfacher. Auch hier soll ein Wechsel innerhalb des
+% Dokuments ermöglicht werden.
+% \begin{macrocode}
+\newcommand*\areaset[3][\z@]{%
+ \edef\@tempa{#1}\edef\@tempb{current}\ifx\@tempa\@tempb\else
+ \setlength{\ta@bcor}{#1}%
+ \fi
+% \end{macrocode}
+% Bevor nun irgendeine Berechnung durchgeführt wird, muss ggf. eine
+% neue Seite begonnen werden.
+% \begin{macrocode}
+ \if@atdocument\newpage\fi
+% \end{macrocode}
+% Erst dann folgt die eigentlich Berechnung:
+% \changes{v2.96}{2006/09/12}{\cs{topskip} wird gesetzt}
+% \changes{v3.00}{2008/10/08}{Layout-Infos werden per \cs{ta@layoutinfo}
+% in die \texttt{log}-Datei geschrieben}
+% \begin{macrocode}
+ \setlength{\textwidth}{#2}%
+ \setlength{\textheight}{#3}%
+ \def\@lastdiv{areaset}%
+ \ta@hblk=\paperwidth
+ \advance\ta@hblk by-\ta@bcor
+ \advance\ta@hblk by-\textwidth
+% \end{macrocode}
+% \changes{v3.11}{2012/04/17}{advanced version with different margin widths}%
+% With version 3.11 we will have an advanced version of \cs{areaset}. This
+% version takes care to option \texttt{mpinclude}.
+% \begin{macrocode}
+ \if@areasetadvanced
+ \if@mincl
+ \divide\ta@hblk by4
+ \else
+ \divide\ta@hblk by3
+ \fi
+ \else
+ \divide\ta@hblk by3
+ \fi
+ \oddsidemargin=-1in
+ \evensidemargin=-1in
+ \if@twoside
+ \if@semitwoside
+ \advance\oddsidemargin by1.5\ta@hblk
+ \advance\oddsidemargin by\ta@bcor
+% \end{macrocode}
+% \changes{v3.12}{2013/10/15}{use alternating \texttt{BCOR} with
+% \texttt{twoside!=semi}}
+% Wenn \texttt{twoside=semi} verwendet wird, wird der Binderand ab
+% \KOMAScript~3.12 dem inneren Rand zugeschlagen. Bei Kompatibilität zu
+% älteren Versionen wird hingegen immer der linke Rand verwendet.
+% \begin{macrocode}
+ \ifnum \scr@compatibility<\@nameuse{scr@v@3.12}\relax
+ \evensidemargin=\oddsidemargin
+ \else
+ \advance\evensidemargin by1.5\ta@hblk
+ \fi
+ \else
+ \advance\oddsidemargin by\ta@hblk
+ \advance\oddsidemargin by\ta@bcor
+ \advance\evensidemargin by2\ta@hblk
+ \fi
+ \else
+ \advance\oddsidemargin by1.5\ta@hblk
+ \advance\oddsidemargin by\ta@bcor
+ \evensidemargin\oddsidemargin
+ \fi
+ \scr@ifundefinedorrelax{@ptsize}{%
+ \topskip=\f@size\p@
+ }{%
+ \topskip=\@ptsize\p@
+ \advance\topskip by 10\p@
+ }%
+% \end{macrocode}
+% \changes{v3.11}{2012/04/17}{advanced version with different margin widths}%
+% With version 3.11 we will have an advanced version of \cs{areaset}. This
+% version uses the head height algorithm of \cs{typearea}.
+% \begin{macrocode}
+ \if@areasetadvanced
+ \normalsize
+ \@ifundefined{ta@hh}{%
+ \headheight=1.25\baselineskip
+ }{%
+ \headheight=\ta@hh
+ }%
+ \else
+ \headheight=15\p@
+ \advance\headheight by\f@size\p@
+ \advance\headheight by-10\p@
+ \fi
+ \headsep=1.5\baselineskip
+% \end{macrocode}
+% \changes{v3.12}{2013/03/26}{changes for height of foot}
+% \begin{macrocode}
+ \@ifundefined{footheight}{\newlength\footheight}{}
+ \if@areasetadvanced
+ \@ifundefined{ta@fh}{%
+ \footheight=1.25\baselineskip
+ \footskip=3.5\baselineskip
+ }{%
+ \footheight=\ta@fh
+ \footskip=\dimexpr \footheight+2.25\baselineskip\relax
+ }%
+ \else
+ \footheight=1.25\baselineskip
+ \footskip=3.5\baselineskip
+ \fi
+ \ta@vblk=\paperheight
+ \advance\ta@vblk by-\textheight
+ \divide\ta@vblk by3
+ \if@hincl
+ \advance\textheight by-\headheight
+ \advance\textheight by-\headsep
+ \fi
+ \if@fincl
+ \advance\textheight by-\footskip
+ \fi
+ \topmargin=-1in
+ \advance\topmargin by\ta@vblk
+ \if@hincl \else
+ \advance\topmargin by-\headheight
+ \advance\topmargin by-\headsep
+ \fi
+ \if@twoside
+ \if@semitwoside
+ \marginparwidth=\ta@hblk
+ \else
+ \marginparwidth=1.5\ta@hblk
+ \fi
+ \else
+ \marginparwidth=\ta@hblk
+ \fi
+ \marginparsep=1cc
+% \end{macrocode}
+% \changes{v3.11}{2012/04/17}{advanced version with different
+% \cs{marginparwidth} and unchanged \cs{marginparsep}}%
+% With version 3.11 we will have an advanced version of \cs{areaset}. This
+% version supports \texttt{mpinclude} option like \cs{typearea}.
+% \begin{macrocode}
+ \if@areasetadvanced
+ \if@mincl
+ \marginparwidth=\ta@hblk
+ \if@twoside\if@semitwoside\else
+ \advance\evensidemargin by\marginparwidth
+ \fi\fi
+ \advance\marginparwidth by-\marginparsep
+ \fi
+ \fi
+ \marginparpush=0.45\baselineskip
+ \ta@layoutinfo{areaset}{}%
+% \end{macrocode}
+% \changes{v3.11}{2012/04/17}{usage of \cs{@areaset@end}}%
+% Since version~3.11 we also support \cs{AfterSettingArea} analogous to
+% \cs{AfterCalculatingTypearea}:
+% \begin{macrocode}
+ \@areaset@end
+ \activateareas
+ \ifdim \dimexpr 1in+\topmargin
+ +\headheight+\headsep
+ +\textheight
+ +\footskip+\dp\strutbox\relax
+ >\paperheight
+ \PackageWarningNoLine{typearea}{%
+ page content and margins higher than paper.\MessageBreak
+ This may result in page footer out of paper.\MessageBreak
+ You should decrease DIV, decrease foot height,\MessageBreak
+ or decreate height of text area%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Berechnung des Standardsatzspiegels}
+%
+% \changes{v2.8q}{2001/11/06}{Initialisierung mit Hilfe der
+% symbolischen Werte \texttt{current}}
+% Nun fehlt nur noch die eigentliche Initialisierung. Dazu wird
+% einfach der Satzspiegel mit den getroffenen Voreinstellungen
+% berechnet. Da der \textit{DIV}-Wert 0 für einen Wert aus der
+% Default-Liste steht, bleibt die Kompatibilität zu älteren Versionen
+% erhalten. Der aktuelle Wert für \textit{DIV} und \textit{BCOR} wurde
+% über die Optionen bereits gesetzt. Dabei kann abweichend zu sonst
+% der aktuelle Wert auch 0, 1, 2 oder 3 sein. Die Initialisierung des
+% Pakets ist damit sehr einfach.
+% \begin{macrocode}
+\typearea[current]{current}
+% \end{macrocode}
+%
+% \iffalse
+%</package>
+%</body>
+%</class|package>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-typearea.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End: