% \CheckSum{430}
% \iffalse meta-comment
% ======================================================================
% scrkernel-miscellaneous.dtx
% Copyright (c) Markus Kohm, 2002-2015
%
% 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-miscellaneous.dtx
% Copyright (c) Markus Kohm, 2002-2015
%
% 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-miscellaneous.dtx 2028 2015-03-23 12:19:51Z kohm $
%<*driver>
% \fi
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
  \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
  \filedate$Date: 2015-03-23 13:19:51 +0100 (Mon, 23 Mar 2015) $
  \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
  \filerevision$Revision: 2028 $
  \edef\reserved@a{%
    \noexpand\endgroup
    \noexpand\ProvidesFile{scrkernel-miscellaneous.dtx}%
                          [\filedate\space\filerevision\space
                           KOMA-Script source
                           (miscellaneous, maybe everything or nothing)]
  }%
\reserved@a
% \iffalse
\documentclass[halfparskip-]{scrdoc}
\usepackage[english,ngerman]{babel}
\usepackage[latin1]{inputenc}
\CodelineIndex
\RecordChanges
\GetFileInfo{scrkernel-miscellaneous.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/07/01}{%
%   erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
%
% \section{Verschiedenes}
%
% Es gibt eine ganze Menge für das sich einzeln keine eigene Datei
% lohnt oder eine Einordnunge schwierig ist. All das nennen wird
% "`Verschiedenes"'.
%
% \subsection{Erweiterung der Internationalisierung}
%
% \changes{v2.2c}{1995/05/25}{Anpassung an CJK von Werner Lemberg.}^^A
%
% Die Standardnamen wie \cs{figurename} etc. sind nicht immer
% ausreichend, da manche Sprachen Zählwörter vor oder nach dem
% jeweiligen Zähler einfügen  müssen (man denke da sogar im
% Deutschen an "`Abbildung~1"' und "`Erste Abbildung"'). Desweiteren
% werden bei manchen Sprachen die Zwischenräume anders gesetzt
% bzw. sogar ganz unterdrückt. 
%
% Es gibt drei Ebenen, die man modifizieren kann, um verschiedenste
% Sprachen zu implementieren: Ebene~1 besteht aus den hinl"anglich
% bekannten Makros wie \cs{figurename} und alle weiteren Makros, die
% z.\,B. \textsf{german} modifiziert. Desweiteren können die Makros
% \cs{sectfont} etc. etwaige zusätzliche Fonts aktivieren. Ebene~2 ist
% die zusätzliche Adaptierung von den Zählern selbst (\cs{thesection}
% könnte z.\,B. chinesische Schriftzeichen ansprechen anstelle von
% arabischen Ziffern). Die allgemeinste Form der dritten Ebene
% besteht aus den Makros \cs{chaptermarkformat},
% \cs{sectionmarkformat} etc. welche die Änderung der Reihenfolge von
% Zähler und Titel sowie die genaue Kontrolle der Zwischenräume
% etc. ermöglichen.
%
% Für die gängigen Sprachen können alle Makros für die dritte
% Ebene identisch definiert werden. Bei Verwendung von "`exotischen"'
% Sprachen, aber auch speziellen Darstellungen in den gängigen
% Sprachen können diese Makros umdefiniert werden.
%
% Das Konzept für der Internationalisierung mit der dritten Ebene
% wurde ursprünglich 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 \KOMAScript{} für alle möglichen
% Sprachanpassungen bestens gerüstet. In der dritten Ebene wird
% übrigens auch die Einhaltung der DUDEN-Regeln für die
% Gliederungsnummern realisiert.
%
% \StopEventually{\PrintIndex\PrintChanges}
%
% \iffalse
%<*init>
% \fi
% \subsection{Test auf die eine \KOMAScript-Klasse}
%
%    \begin{macrocode}
%<*package&letter>
\scr@ifundefinedorrelax{KOMAClassName}{%
  \PackageWarningNoLine{scrletter}{%
    Cannot detect any KOMA-Script class.\MessageBreak
    Package `scrletter' is an extension to\MessageBreak
    KOMA-Script classes.\MessageBreak
    Usage with another class is not supported.\MessageBreak
    Expect several errors while using it with\MessageBreak
    another class.%
  }%
}{}
%    \end{macrocode}

% \begin{macro}{\scr@renewforletter}
%   \changes{v3.20}{2014/04/10}{neu Anweisung}^^A
% Wird wie \cs{renewcommand} verwendet, verzögert die Umdefinierung aber bis
% zu einem optionalen Zeitpunkt. Dazu wird intern
% \cs{scrletter@extra@\meta{macro}} definiert.
% \begin{macro}{\@renewforletter}
%   \changes{v3.20}{2014/04/10}{neu Anweisung (intern)}^^A
% \begin{macro}{\do@renewforletter@list}
%   \changes{v3.20}{2014/04/10}{neu Anweisung (intern)}^^A
% Die do-Liste der später umzudefinierenden Anweisungen.
% \begin{macro}{\do@renewforletter}
%   \changes{v3.20}{2014/04/10}{neu Anweisung (intern)}^^A
% Definiert die in der do-Liste gespeicherten Anweisungen um.
%    \begin{macrocode}
\newcommand*{\scr@renewforletter}{%
  \@ifstar {\@renewforletter*}%
           {\@renewforletter{}}%
}
\newcommand*{\@renewforletter}[2]{%
  \g@addto@macro\do@renewforletter@list{\do#2}%
  \edef\reserved@a{%
    \noexpand\newcommand\noexpand#1\expandafter\noexpand
    \csname scrletter@extra@\string#2\endcsname
  }%
  \expandafter\reserved@a
}
\newcommand*{\do@renewforletter@list}{}
\newcommand*{\do@renewforletter}{%
  \begingroup
    \def\do##1{%
      \aftergroup\let\aftergroup##1
      \expandafter\aftergroup\csname scrletter@extra@\string##1\endcsname
    }%
    \do@renewforletter@list
  \endgroup
  \let\do@renewforletter@list\@empty
}
%</package&letter>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \iffalse
%</init>
%<*option>
% \fi
%
% \subsection{Optionen für Entwürfe}
% 
% \begin{option}{draft}
%   \changes{v2.95}{2002/12/05}{mit \textsl{keyval} reimplementiert}^^A
%   \changes{v3.17}{2015/03/12}{interne Speicherung der Werte}^^A
% \begin{option}{final}
%   \changes{v2.95}{2002/12/05}{obsolete Option}^^A
%   \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
%     ersetzt}
%   \changes{v3.01a}{2008/11/21}{standard statt obsolet}^^A
%   \changes{v3.02c}{2008/02/17}{optionales Argument im Fall von
%     \textsf{scrextend} gesetzt}
%   \changes{v3.12}{2013/03/05}{Nutzung der Status-Signalisierung mit
%     \cs{FamilyKeyStateProcessed}}%
% Der einzige Unterschied zwischen Entwürfen und Endversionen ist aus
% Sicht der Klassen, ob Zeilenüberhänge mit einem schwarzen Balken
% angezeigt werden sollen oder nicht.
%    \begin{macrocode}
%<*class|extend>
\KOMA@key{draft}[true]{%
  \KOMA@set@ifkey{draft}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed
    \if@tempswa
      \KOMA@kav@replacebool{.%
%<class>        \KOMAClassFileName
%<package&extend>        scrextend.\scr@pkgextension
      }{draft}{@tempswa}%
      \setlength{\overfullrule}{5pt}%
    \else
      \KOMA@kav@replacebool{.%
%<class>        \KOMAClassFileName
%<package&extend>        scrextend.\scr@pkgextension
      }{draft}{@tempswa}%
      \setlength{\overfullrule}{\z@}%
    \fi
  \fi
}
%<class>\KOMA@kav@add{.\KOMAClassFileName}{draft}{false}
%<*package&extend>
\KOMA@kav@xadd{.scrextend.\scr@pkgextension}{draft}{%
  \ifdim\overfullrule>\z@ true\else false\fi
}
%</package&extend>
\KOMA@DeclareStandardOption
%<package&extend>[scrextend]
{final}{draft=false}
%</class|extend>
%    \end{macrocode}
% \end{option}
% \end{option}
%
%
% \subsection{Optionen für Gleichungen}
%
% Briefe haben derzeit keine Gleichungen.
% \iffalse
%<*!letter>
% \fi
%
% \begin{option}{leqno}
% \begin{option}{fleqno}
% Es können Gleichungsnummern links oder linksbündige Gleichungen
% eingestellt werden.
%    \begin{macrocode}
%<*!extend>
\DeclareOption{leqno}{\input{leqno.clo}}
\DeclareOption{fleqn}{\input{fleqn.clo}}
%</!extend>
%    \end{macrocode}
% \end{option}
% \end{option}
%
% \iffalse
%</!letter>
% \fi
%
% \iffalse
%</option>
%<*execoption>
% \fi
%
%
% \subsection{Standardeinstellungen für die Optionen}
%
% Am Ende aller Optionen wird zunächst die Standardeinstellungen der
% Optionen vorgenommen und dann alle Optionen ausgeführt. Dies
% geschieht zwischen den Optionen und dem Körper dieser Datei.
%
% Es müssen die Standardoptionen festgelegt und alle Optionen
% ausgewählt werden.
% \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}^^A
% \changes{v2.97c}{2007/07/18}{Option \texttt{twoside} bei den
%   Voreinstellungen rausgenommen}
% \changes{v2.98c}{2008/03/10}{Option \texttt{headings!=big} zu den
%   Voreinstellungen hinzugefügt}
% \changes{v3.11c}{2013/03/04}{Option \texttt{headings!=big} nicht für die
%   Briefklasse}
%    \begin{macrocode}
%<*class>
\KOMAExecuteOptions{%
  parskip=false,%
%<!letter>  headings=big%
}
%</class>
\KOMAProcessOptions\relax
%    \end{macrocode}
%
%
% \iffalse
%</execoption>
%<*body>
% \fi
%
%
% \subsection{Temporäre Umschaltung zwischen ein- und zweispaltigem
%   Satz}
%
% Briefe sind immer einspaltig, benötigen also den Schalter nicht.
% \iffalse
%<*!letter>
% \fi
%
% \begin{macro}{\if@restonecol}
% \begin{macro}{\@restonecoltrue}
% \begin{macro}{\@restonecolfalse}
% Damit innerhalb einer Umgebung lokal auf ein- oder zweispaltigen
% Satz umgeschaltet werden kann, wird ein Schalter benötigt. Dieser
% wird dann dafür verwendet, sich zu merken, dass eine Umschaltung
% stattgefunden hat und am Ende der Umgebung wieder aufzuheben
% ist. Der Schalter wird nicht in Umgebungen verwendet, die
% geschachtelt werden. Verwendung findet er beispielsweise für
% Titelseiten und das Inhaltsverzeichnis.
%    \begin{macrocode}
%<*!extend>
\newif\if@restonecol
%</!extend>
%<*extend>
\scr@ifundefinedorrelax{if@restonecol}{%
  \expandafter\newif\csname if@restonecol\endcsname
  \@restonecolfalse
}{}
%</extend>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \iffalse
%</!letter>
% \fi
%
% \subsection{Definitionen für den schlauen Spruch}
%
% Den schlauen Spruch gibt es nicht bei Briefen.
% \iffalse
%<*!letter>
% \fi
%
% \begin{macro}{\dictum}
%   \changes{v2.8q}{2001/20/04}{neu}^^A
%   \changes{v2.9l}{2003/01/28}{\cs{edef} durch \cs{def} ersetzt}
%   \changes{v2.9q}{2004/04/19}{zur Vermeidung von Problemen durch
%     \cs{raggeddictum} Gruppe eingef"ugt}
% \begin{macro}{\dictumwidth}
%   \changes{v2.8q}{2001/20/04}{neu}^^A
% \begin{macro}{\raggeddictum}
%   \changes{v2.8q}{2001/20/04}{neu}^^A
% \begin{macro}{\raggeddictumtext}
%   \changes{v2.8q}{2001/20/04}{neu}^^A
% \begin{macro}{\raggeddictumauthor}
%   \changes{v2.8q}{2001/20/04}{neu}^^A
% \begin{KOMAfont}{dictum}
%   \changes{v2.8q}{2001/20/04}{neues Element}^^A
% \begin{KOMAfont}{dictumtext}
%   \changes{v2.8q}{2001/20/04}{neues Element}^^A
% \begin{KOMAfont}{dictumauthor}
%   \changes{v2.8q}{2001/20/04}{neues Element}^^A
% \begin{macro}{\dictumauthorformat}
%   \changes{v2.8q}{2001/20/04}{neu}^^A
% \begin{macro}{\dictumrule}
%   \changes{v3.10}{2011/09/02}{neu}^^A
%   Ein \emph{dictum} ist ein Spruch. Er besteht aus dem Spruch selbst
%   und verfügt optional über einen Autor, der dann mit einer Linie
%   abgetrennt wird. Gibt es keinen Autor, gibt es auch keine Linie. Die
%   Schriften für Autor und Spruch können getrennt voneinander
%   eingestellt werden. Die Anordnung des Spruchs wird durch
%   \cs{raggeddictumtext} gesetzt. Die des Autors durch
%   \cs{raggeddictumauthor}. Die Formatierung selbst geschieht mit dem
%   Makro \cs{dictumauthorformat}. Vordefiniert ist, den Namen des
%   Autors in runde Klammern zu setzen. Die gesamte Geschichte von Text
%   und Autor wird in eine Box der Breite \cs{dictumwidth}
%   gepackt. Diese wird mit \cs{raggeddictum} angeordnet.
%    \begin{macrocode}
\newcommand{\dictum}[2][]{\par%
  \begingroup
    \raggeddictum\parbox{\dictumwidth}{%
      {\@dictumfont{\raggeddictumtext #2\strut\par}%
        \def\@tempa{#1}\ifx\@tempa\@empty\else%
          {\raggeddictumtext\dictumrule}%
          \raggeddictumauthor\@dictumauthorfont\dictumauthorformat{#1}%
          \strut\par%
        \fi%
      }%
    }\par%
  \endgroup
}
\newcommand*{\dictumrule}{\vskip-1ex\hrulefill\par}%
\newcommand*{\dictumwidth}{.3333\textwidth}
\newcommand*{\raggeddictum}{\raggedleft}
\newcommand*{\dictumauthorformat}[1]{(#1)}
\newcommand*{\raggeddictumtext}{\raggedright}
\newcommand*{\raggeddictumauthor}{\raggedleft}
\newkomafont{dictum}{\normalfont\normalcolor\sffamily\small}
\newkomafont{dictumauthor}{\itshape}
\aliaskomafont{dictumtext}{dictum}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{KOMAfont}
% \end{KOMAfont}
% \end{KOMAfont}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \iffalse
%</!letter>
% \fi
%
% \subsection{Längen für Minipages und Rahmen}
%
% \begin{Length}{@mpfootins}
% \begin{Length}{fboxsep}
% \begin{Length}{fboxrule}
% \cs{@mpfootins} entspricht \cs{footins} in Minipages. \cs{fboxsep}
% ist der Abstand zwischen dem Rahmen einer \cs{fbox} oder
% \cs{framebox} und dem Inhalt, \cs{fboxrule} ist die Dicke des
% Rahmens.
%    \begin{macrocode}
%<*class>
\setlength{\skip\@mpfootins}{\skip\footins}
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
%</class>
%    \end{macrocode}
% \end{Length}
% \end{Length}
% \end{Length}
%
%
% \subsection{Gleichungen}
%
% Gleichungen gibt es bei Briefen nicht.
% \iffalse
%<*!letter>
% \fi
%
% \begin{macro}{\theequation}
%   \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil}^^A
% Darstellung der Gleichungsnummer:
%    \begin{macrocode}
%<*!extend>
%<book|report>\@addtoreset{equation}{chapter}
\renewcommand*\theequation{%
%<*book>
  \expandafter\ifnum\scr@v@is@gt{2.97d}\relax
    \if@mainmatter\thechapter.\fi
  \else
%</book>
%<book|report>  \thechapter.%
%<book>  \fi
  \@arabic\c@equation
}
%</!extend>
%    \end{macrocode}
% \end{macro}
%
% \iffalse
%</!letter>
% \fi
%
% \subsection{Definitionen zur Feststellung von linken und rechten
%   Seiten}
%
% \begin{macro}{\ifthispageodd}
%   \changes{v2.8q}{2001/11/22}{neu}^^A
% Häufig wird mit \cs{ifodd}\cs{value\{page\}} getestet, ob man sich
% gerade auf einer rechten oder einer linken Seite
% befindet. Dummerweise funktioniert das aber genaugenommen nur
% zufällig manchmal. Ob man sich auf einer linken oder einer rechten
% Seite befindet, ergibt sich nämlich erst bei der Ausgabe. Deshalb
% wird hier ein Makro definiert, das über eine Art Label-Mechanismus
% arbeitet. Es werden bewusst keine echten \cs{label} und \cs{pageref}
% verwendet, weil diese Befehle von verschiedenen Paketen manipuliert
% werden.
%
% \begin{macro}{\new@tpo@label}
%   \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
%   \changes{v2.95b}{2006/07/28}{verwendet jetzt \cs{@newl@bel}}
% Definition eines neuen \emph{true}-\emph{page}-\emph{odd} Labels.
% Wird in der \texttt{aux}-Datei verwendet.
%    \begin{macrocode}
%<*class|extend>
\newcommand*{\new@tpo@label}{\@newl@bel{tpo}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scr@tpo}
%   \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
% Es wird ein Zähler benötigt, der die aktuelle Nummer der Anfrage
% beinhaltet.
%    \begin{macrocode}
\newcommand*{\scr@tpo}{0}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\is@thispageodd}
%   \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
%   \changes{v2.9l}{2003/01/28}{renamed \cs{if@thispageodd}}^^A
%   \changes{v2.95b}{2006/07/28}{basiert nun auf \cs{@newl@bel}}^^A
%   \changes{v3.17}{2015/03/23}{in zwei Anweisungen ausgeteilt}^^A
% \begin{macro}{\is@thispageodd@setlabel}
%   \changes{v3.17}{2015/03/23}{neu (intern)}^^A
% Diese Makros machen die eigentliche Arbeit. Sie funktionieren nicht wie
% ein normales \cs{iffalse} oder \cs{iftrue}, denn es kann nicht
% geschachtelt innerhalb anderer \cs{if\dots} \dots \cs{fi}
% Klammerungen verwendet werden. Es sollte daher niemals außerhalb von
% \cs{ifthispageodd} verwendet werden. Da über die \texttt{aux}-Datei
% gearbeitet wird, funktioniert das Ganze nur, wenn die Datei auch
% geschrieben wird und min. zwei \LaTeX-Läufe erfolgen.
%    \begin{macrocode}
\newcommand*{\is@thispageodd}[1][\is@thispageodd@setlabel]{%
  \@bsphack
  \begingroup
    \@tempcnta=\scr@tpo
    \advance\@tempcnta by\@ne
    \xdef\scr@tpo{\the\@tempcnta}%
    \expandafter\ifx\csname tpo@\scr@tpo\endcsname\relax
      \protect\G@refundefinedtrue
%<!extend>      \ClassWarning{\KOMAClassName}{%
%<extend>      \PackageWarning{scrextend}{%
        odd/even page label number \scr@tpo\space undefined}%
      \edef\@tempa{\the\value{page}}%
    \else
      \edef\@tempa{\csname tpo@\scr@tpo\endcsname}%
    \fi
    \ifodd\number\@tempa
      \aftergroup\thispagewasoddtrue
    \else
      \aftergroup\thispagewasoddfalse
    \fi
  \endgroup
  \edef\is@thispageodd@setlabel{%
    \unexpanded{\protected@write\@auxout{\let\arabic\relax}}{%
      \noexpand\string
      \noexpand\new@tpo@label{\scr@tpo}{\noexpand\arabic{page}}}%
  }%
  #1%
  \@esphack
}
\newcommand*{\is@thispageodd@setlabel}{}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\ifthispagewasodd}
%   \changes{v2.9l}{2003/01/20}{neuer Schalter}^^A
% \begin{macro}{\thispagewasoddtrue}
% \begin{macro}{\thispagewasoddfalse}
% Dieser Schalter speichert auf Rolf Niepraschks speziellen Wunsch die
% letzte Entscheidung von \cs{ifthispageodd}. Vor dem ersten
% \cs{ifthispageodd} ist der Zustand undefiniert. Es ist auch nicht
% garantiert, dass die Entscheidung noch zutreffend ist.
%    \begin{macrocode}
\newif\ifthispagewasodd
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% Nun fehlt nur noch das eigentliche oben versprochene
% Anwendermacro. Das ist nun aber auch kein Problem mehr:
%    \begin{macrocode}
\newcommand{\ifthispageodd}{%
  \is@thispageodd
  \ifthispagewasodd
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
%</class|extend>
%    \end{macrocode}
% \end{macro}
%
%
% \subsection{Definitionen für tiefer gestellten Text}
%
% \begin{macro}{\textsubscript}
%   \changes{v2.8h}{2001/07/19}{neu}%
% \begin{macro}{\@textsubscript}
%   \changes{v2.8h}{2001/07/19}{neu (intern)}%
%   \changes{v3.10}{2011/09/05}{\cs{providecommand} statt \cs{newcommand},
%     damit das auch noch funktioniert, wenn \textsf{scrextend} nach
%     \textsf{fixltx2e} geladen wird}%
% Im \LaTeX-Kern wird zwar ein Makro \cs{textsuperscript} definiert,
% um Texte hochstellen zu können, die entsprechende Anweisung zum
% Tiefstellen fehlt jedoch. Das wird hier nachgeholt, wobei nahezu
% unverändert auf die Definition aus dem \LaTeX-Kern zurückgegriffen
% wird.
%    \begin{macrocode}
%<*class|extend>
\DeclareRobustCommand*\textsubscript[1]{%
  \@textsubscript{\selectfont#1}%
}
\providecommand*{\@textsubscript}[1]{%
  {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}%
}
%</class|extend>
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
%
%
% \subsection{Warnung vor Paketen}
% \label{sec:packagewarning}
%
% \changes{v3.12}{2013/07/08}{neue Warnungen vor bestimmten Paketen}^^A
% \begin{macro}{\scr@package@not@recommended}
%   \changes{v3.12}{2013/07/08}{neu (intern)}^^A
% Beim Laden verschiedener Pakete wird nun eine Warnung ausgegeben. In der
% Regel mit einer Alternativempfehlung.
%    \begin{macrocode}
%<*class>
\newcommand*{\scr@package@not@recommended}[2]{%
  \BeforePackage{#1}{%
    \ClassWarning{\KOMAClassName}{%
      Usage of package `#1' together\MessageBreak
      with a KOMA-Script class is not recommended.\MessageBreak
      \if\relax\detokenize{#2}\relax\else
        I'd suggest to use #2.\MessageBreak
      \fi
      Nevertheless, using requested\MessageBreak
      package `#1'%
    }%
  }%
}%
%    \end{macrocode}
% \textsf{emptypage} wird nicht benötigt, weil es bereits entsprechende
% Einstellungen in \KOMAScript{} gibt. Darüber hinaus verwendet es
% \cs{thispagestyle} an Stelle von \cs{pagestyle} in einer Gruppe, was
% dazu führen kann, dass nach einem \cs{cleardoublepage}, das keine leere
% Seite erzeugt, die nächste Seite den entsprechenden Seitenstil bekommt.
%    \begin{macrocode}
\scr@package@not@recommended{emptypage}{%
  option\MessageBreak
  `cleardoublepage' with one of it's\MessageBreak
  several values}
%    \end{macrocode}
% \textsf{parskip} ist nur ein Notfallpaket für Klassen, die selbst keinen
% Absatzabstand unterstützen.
%    \begin{macrocode}
\scr@package@not@recommended{parskip}{%
  option\MessageBreak
  `parskip' with one of it's several values}
%    \end{macrocode}
% \textsf{fancyhdr} verwendet veraltete Font-Befehle und beachtet die
% Font-Einstellungen und diverse andere Befehle und Optionen von \KOMAScript{}
% nicht.
%    \begin{macrocode}
\scr@package@not@recommended{fancyhdr}{%
  \MessageBreak
  package `scrlayer-scrpage'}
%    \end{macrocode}
% \textsf{titlesec} beschädigt diverse \KOMAScript{} Erweiterungen und
% benötigt eigene Workarounds (siehe Abschnitt~\ref{sec:packageworarounds}),
% so dass es einfach nicht gut mit \KOMAScript{} harmoniert.
%    \begin{macrocode}
\scr@package@not@recommended{titlesec}{%
  the package only\MessageBreak
  if you really need it, because it breaks several\MessageBreak
  KOMA-Script features, i.e., option `headings' and\MessageBreak
  the extended optional argument of the section\MessageBreak
  commands}
%    \end{macrocode}
%   \changes{v3.16}{2015/01/21}{Verwendung von \textsf{titleps} kann nicht 
%     empfohlen werden}^^A
% \textsf{titleps} beachtet die Font-Einstellungen und diverse andere Befehle
% und Optionen von \KOMAScript{} nicht.
%    \begin{macrocode}
\scr@package@not@recommended{titleps}{%
  package `scrlayer-scrpage`}
%</class>
%    \end{macrocode}
% \end{macro}^^A \scr@package@not@recommended
%
% \subsection{Workarounds für fremde Pakete}
% \label{sec:packageworkarounds}
%
% \changes{v3.13a}{2014/10/09}{\textsf{titlesec} hat ein schwerwiegendes
%   Problem}
% Das Paket \textsf{titlesec} hat ein schwerwiegendes Problem, wenn
% Überschriften nicht per \cs{@startsection} definiert sind. Ich werde hier
% einmal versuchen, mich darum herum zu lavieren. Eine wirklich gute Lösung
% ist das sicher nicht. Man sollte das Paket schlicht besser nicht mit
% \KOMAScript{} zusammen verwenden.
%    \begin{macrocode}
%<*class>
%<*!letter>
\BeforePackage{titlesec}{%
  \let\scr@ttl@saved@section\section
  \let\scr@ttl@saved@subsection\subsection
  \let\scr@ttl@saved@subsubsection\subsubsection
  \let\scr@ttl@saved@paragraph\paragraph
  \let\scr@ttl@saved@subparagraph\subparagraph
}
\AfterPackage{titlesec}{%
  \@ifpackagelater{titlesec}{2014/10/09}{%
    \ClassInfo{\KOMAClassName}{%
      Deactivating the `titlesec` workaround,\MessageBreak
      because package is newer than expected%
    }%
  }{%
    \PackageWarning{\KOMAClassName}{%
      Activating an ugly workaround for a missing\MessageBreak
      feature of package `titlesec`%
    }%
    \def\scr@ttl@@extract#1\scr@startsection#2#3#4#5#6#7#8{%
      \@tempskipa=#5
      \@tempskipb=#6
      \ifdim\@tempskipa<\z@
        \toks@{\titlespacing*#8{#4}}%
        \@tempskipa-\@tempskipa
      \else
        \toks@{\titlespacing#8{#4}}%
      \fi
      \@ifundefined{ttl@space}{}{%
        \ttl@assign\@tempskipa*\ttl@space\relax\beforetitleunit}%
      \ifdim\@tempskipb<\z@
        \if@tempswa
          \titleformat#8[runin]%
             {\ttl@fonts\ttl@sizes{#3}}{\@seccntformat{#2}}%
             {\z@}\ttl@passexplicit
        \else
          \titleformat#8[runin]%
             {#7}{\@seccntformat{#2}}%
             {\z@}\ttl@passexplicit
        \fi
        \@tempskipb-\@tempskipb
      \else
        \if@tempswa
          \titleformat#8%
            {\ttl@fil\ttl@fonts\ttl@sizes{#3}}{\@seccntformat{#2}}%
            {\z@}\ttl@passexplicit 
        \else
          \titleformat#8%
            {#7}{\@seccntformat{#2}}%
            {\z@}\ttl@passexplicit
        \fi
        \@ifundefined{ttl@space}{}{%
          \ttl@assign\@tempskipb*\ttl@space\relax\aftertitleunit}%
      \fi
      \edef\ttl@a{\the\toks@{\the\@tempskipa}{\the\@tempskipb}}
      \ttl@a}%
    \expandafter\scr@ttl@@extract\scr@ttl@saved@section\section
    \expandafter\scr@ttl@@extract\scr@ttl@saved@subsection\subsection
    \expandafter\scr@ttl@@extract\scr@ttl@saved@subsubsection\subsubsection
    \expandafter\scr@ttl@@extract\scr@ttl@saved@paragraph\paragraph
    \expandafter\scr@ttl@@extract\scr@ttl@saved@subparagraph\subparagraph
    \let\scr@ttl@saved@section\relax
    \let\scr@ttl@saved@subsection\relax
    \let\scr@ttl@saved@subsubsection\relax
    \let\scr@ttl@saved@paragraph\relax
    \let\scr@ttl@saved@subparagraph\relax
    \let\scr@ttl@@extract\relax
  }%
}
%</!letter>
%</class>
%    \end{macrocode}
%
%
% \iffalse
%</body>
% \fi
%
% \Finale
%
\endinput
%
% end of file `scrkernel-miscellaneous.dtx'
%%% Local Variables:
%%% mode: doctex
%%% TeX-master: t
%%% End:
