summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx')
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx1223
1 files changed, 1223 insertions, 0 deletions
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx b/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx
new file mode 100644
index 0000000000..32004b4d36
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx
@@ -0,0 +1,1223 @@
+% \CheckSum{722}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-miscellaneous.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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-2018
+%
+% 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 2995 2018-07-18 06:46:34Z kohm $
+%<init>%%% (run: init)
+%<option>%%% (run: option)
+%<execoption>%%% (run: execoption)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-07-18 08:46:34 +0200 (Wed, 18 Jul 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 2995 $
+ \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[parskip=half-]{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}
+%</dtx>
+% \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}
+%
+% Hier haben wir zunächst ein paar Definitionen speziell für das Paket
+% \textsf{scrletter}, die genau dann benötigt werden, wenn das Paket nicht mit
+% einer \KOMAScript-Klasse verwendet wird.
+%
+% \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 recommended%
+ \@ifclassloaded{article}{}{%
+ \@ifclassloaded{report}{}{%
+ \@ifclassloaded{book}{}{%
+ \MessageBreak and can result in several errors%
+ }%
+ }%
+ }%
+ }%
+ \RequirePackage{scrextend}%
+% \end{macrocode}
+%
+% \begin{macro}{\setparsizes}
+% \changes{v3.23}{2017/02/22}{wird notfalls vereinfacht definiert}^^A
+% \begin{macro}{\par@updaterelative}
+% \changes{v3.23}{2017/02/22}{wird notfalls vereinfacht definiert}^^A
+% Diese beiden Befehle werden normalerweise von den \KOMAScript-Klassen
+% definiert. Wird das Paket mit einer anderen Klasse verwendet, existieren
+% sie nicht. Es wird dann eine vereinfachte Definition verwendet.
+% \begin{macrocode}
+ \providecommand*{\setparsizes}[3]{%
+ \setlength{\parindent}{#1}%
+ \setlength{\parskip}{#2}%
+ \setlength{\parfillskip}{#3}%
+ }
+ \providecommand*{\par@updaterelative}{}
+% \end{macrocode}
+% \end{macro}^^A \par@updaterelative
+% \end{macro}^^A \setparsizes
+% \begin{macrocode}
+}{}
+% \end{macrocode}
+%
+% \begin{macro}{\scr@renewforletter}
+% \changes{v3.20}{2014/04/10}{neu Anweisung}^^A
+% \changes{v3.25}{2017/11/15}{als unbenutzt entfernt}^^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
+% \changes{v3.25}{2017/11/15}{als unbenutzt entfernt}^^A
+% \begin{macro}{\do@renewforletter@list}
+% \changes{v3.20}{2014/04/10}{neu Anweisung (intern)}^^A
+% \changes{v3.25}{2017/11/15}{als unbenutzt entfernt}^^A
+% Die do-Liste der später umzudefinierenden Anweisungen.
+% \begin{macro}{\do@renewforletter}
+% \changes{v3.20}{2014/04/10}{neu Anweisung (intern)}^^A
+% \changes{v3.25}{2017/11/15}{als unbenutzt entfernt}^^A
+% Definiert die in der do-Liste gespeicherten Anweisungen um.
+% \begin{macrocode}
+%</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
+% \changes{v3.25}{2017/11/21}{Beachtung von Option \texttt{overfullrule}}^^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}%
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{overfullrule}{@tempswa}%
+ \setlength{\overfullrule}{5pt}%
+ \else
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{draft}{@tempswa}%
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{overfullrule}{@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}
+% \begin{option}{overfullrule}
+% \changes{v3.25}{2017/11/21}{new option}^^A
+% \selectlanguage{english}^^A
+% Because option \texttt{draft} can result in unwanted effects I've added a
+% new option to explicite only change the overfull rule setting. However for
+% \textsf{scrextend} and the \KOMAScript{} classes the result is the same.
+% \begin{macrocode}
+%<*class|extend>
+\KOMA@key{overfullrule}[true]{%
+ \KOMA@set@ifkey{overfullrule}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \if@tempswa
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{draft}{@tempswa}%
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{overfullrule}{@tempswa}%
+ \setlength{\overfullrule}{5pt}%
+ \else
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{draft}{@tempswa}%
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{overfullrule}{@tempswa}%
+ \setlength{\overfullrule}{\z@}%
+ \fi
+ \fi
+}
+%<class>\KOMA@kav@add{.\KOMAClassFileName}{overfullrule}{false}
+%<*package&extend>
+\KOMA@kav@xadd{.scrextend.\scr@pkgextension}{overfullrule}{%
+ \ifdim\overfullrule>\z@ true\else false\fi
+}
+%</package&extend>
+%</class|extend>
+% \end{macrocode}
+% \selectlanguage{ngerman}^^A
+% \end{option}^^A overfullrule
+% \end{option}^^A final
+% \end{option}^^A draft
+%
+%
+% \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
+%
+% \subsection{Optionen für \texttt{egreg}}
+%
+% \texttt{egreg} hat in einem Kommentar zu
+% \url{https://tex.stackexchange.com/questions/289853} verlauten lassen, dass
+% er \KOMAScript{} u.\,a. deshalb nicht verwendet, weil \KOMAScript{}
+% serifenlose Fonts für Überschriften voreingestellt hat. Er hätte lieber die
+% hässlichen, fetten Antiqua-Fonts. Außerdem reicht es ihm nicht, dass man das
+% einfach per \cs{setkomafont} ändern kann. Er will eine Option dafür. Nun,
+% die soll er haben:
+%
+% \begin{option}{egegdoesnotlikesansseriftitles}
+% \changes{v3.20}{2016/01/29}{neu (speziell)}
+% \changes{v3.20a}{2016/05/19}{auch in der Briefklasse}
+% \begin{macro}{\@gr@gsffamily}
+% \changes{v3.20}{2016/01/29}{neu (intern)}
+% \changes{v3.20a}{2016/05/19}{auch in der Briefklasse}
+% Schaltet je nach Einstellung von Option
+% \texttt{egegdoesnotlikesansseriftitles} entweder auf \cs{sffamily} um oder
+% eben nicht.
+% \begin{macrocode}
+%<*!(package&letter)>
+\KOMA@ifkey{egregdoesnotlikesansseriftitles}{@egregdoesnotlikesansseriftitles}
+\newcommand*{\@gr@gsffamily}{%
+ \if@egregdoesnotlikesansseriftitles\else\sffamily\fi
+}
+%</!(package&letter)>
+% \end{macrocode}
+% \end{macro}^^A \@gr@gsffamily
+% \end{option}^^A egregdoesnotlikesansseriftitles
+%
+% \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
+% \changes{v3.20}{2016/01/29}{\cs{sffamily} durch \cs{@gr@gsffamily}
+% ersetzt}^^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\@gr@gsffamily\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}}^^A
+% \changes{v3.20}{2016/03/25}{use after definition in \texttt{aux}-file}^^A
+% 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}}
+\AtBeginDocument{%
+ \if@filesw
+ \immediate\write\@auxout{%
+ \string\providecommand*\string\new@tpo@label[2]{}%
+ }%
+ \fi
+}
+% \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
+% \changes{v3.20}{2016/03/25}{schreibe in die \texttt{aux}-Datei nur
+% \cs{if@filesw}}^^A
+% \changes{v3.23}{2017/02/23}{Macro leert sich nach Benutzung selbst}^^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{%
+ \if@filesw
+ \unexpanded{\protected@write\@auxout{\let\arabic\relax}}{%
+ \noexpand\string
+ \noexpand\new@tpo@label{\scr@tpo}{\noexpand\arabic{page}}}%
+ \fi
+ \noexpand\def\noexpand\is@thispageodd@setlabel
+ {\unexpanded\expandafter{\is@thispageodd@setlabel}}%
+ }%
+ #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}^^A
+% \begin{macro}{\@textsubscript}
+% \changes{v2.8h}{2001/07/19}{neu (intern)}^^A
+% \changes{v3.10}{2011/09/05}{\cs{providecommand} statt \cs{newcommand},
+% damit das auch noch funktioniert, wenn \textsf{scrextend} nach
+% \textsf{fixltx2e} geladen wird}^^A
+% \changes{v3.25}{2017/11/15}{wird nur noch definiert, wenn nicht vorhanden}^^A
+% 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>
+\scr@ifundefinedorrelax{textsubscript}{%
+ \DeclareRobustCommand*\textsubscript[1]{%
+ \@textsubscript{\selectfont#1}%
+ }%
+}{%
+ \scr@ifundefinedorrelax{textsubscript }{%
+ \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{Unsichtbare Stütze}
+% \label{sec:strut}
+%
+% \begin{macro}{\scr@endstrut}
+% \changes{v3.25}{2017/11/15}{neu (intern)}^^A
+% Wird am Ende eines vermutlich horizontalen Materials eine unsichtbare Stütze
+% der Art \cs{strut} eingebaut, werden Leerzeichen, die davor stehen plötzlich
+% zu Leerzeichen in der Ausgabe, auch wenn das gar nicht erwünscht wird. Das
+% kann man verhindern, indem man \cs{unskip} davor setzt. Dummer Weise hat
+% eine solche Stütze dann aber das Problem, dass das letzte Wort davor nicht
+% mehr getrennt wird. Verrückter Weise kann man das wiederum mit \cs{nobreak}
+% lösen. Das sollte dann auch nur im horizontalen Modus gemacht werden.
+% \begin{macrocode}
+%<*class|letter|extend>
+\providecommand*{\scr@endstrut}{\unskip\ifhmode\nobreak\strut\fi}
+%</class|letter|extend>
+% \end{macrocode}
+% \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{macro}{\class@shoulddisablepackagewarning@list}
+% \changes{v3.24}{2017/06/25}{neu (nur für Klassenautoren)}^^A
+% Ab \KOMAScript~3.24 ist für Klassenautoren und nur für diese dokumentiert,
+% dass bei Vorhandensein des Makros
+% \cs{class@shoulddisablepackagewarning@list} während dem Laden der
+% \KOMAScript-Klasse für nicht empfohlene Pakete ein
+% \cs{in@}-Vergleich gegen genau den Inhalt dieses Makros stattfindet. Wird
+% der Paketname dabei gefunden, so unterbleibt das Absetzen der Warnung. Zur
+% korrekten Syntax des zweiten Arguments von \cs{in@} sei ausdrücklich auf den
+% Kernel hingewiesen. Ebenso sind Klassenautoren verantwortlich, eine bereits
+% vorhandene Liste nicht einfach zu überschreiben, sondern korrekt zu
+% ergänzen! Eine Definition von \cs{class@shoulddisablepackagewarning@list}
+% nach dem Laden der \KOMAScript-Klasse ist wirkungslos. Da diese
+% Schnittstelle Klassenautoren vorbehalten bleiben soll, die wissen, was sie
+% tun, gibt es keine weitergehende Dokumentation dazu und natürlich auch kein
+% Beispiel.
+% \begin{macrocode}
+%<*class>
+\newcommand*{\scr@package@not@recommended}[2]{%
+ \scr@ifundefinedorrelax{class@shoulddisablepackagewarning@list}{%
+ \@firstofone
+ }{%
+ \edef\reserved@a{%
+ \noexpand\in@{#1}{\class@shoulddisablepackagewarning@list}}%
+ \reserved@a
+ \ifin@\expandafter\@gobble\else\expandafter\@firstofone\fi
+ }{%
+ \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}
+% \end{macro}^^A \class@shoulddisablepackagewarning@list
+%
+% \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{fancyhdr} verwendet veraltete Font-Befehle und beachtet die
+% Font-Einstellungen und diverse andere Befehle und Optionen von \KOMAScript{}
+% nicht.
+% \changes{v3.24}{2017/06/25}{improved \textsf{fancyhdr} warning}^^A
+% \begin{macrocode}
+\scr@package@not@recommended{fancyhdr}{%
+ \MessageBreak
+ package `scrlayer' or `scrlayer-scrpage', because\MessageBreak
+ they support KOMA-Script classes.\MessageBreak
+ With `fancyhdr' several features of class `\KOMAClassName'\MessageBreak
+ like options `headsepline', `footsepline' or command\MessageBreak
+ `\string\MakeMarkcase' and the commands `\string\setkomafont' and\MessageBreak
+ `\string\addtokomafont' for the page style elements need\MessageBreak
+ explicite user intervention to work}
+% \end{macrocode}
+% \changes{v3.23}{2017/02/04}{Verwendung von \textsf{minitoc} kann nicht
+% empfohlen werden}^^A
+% \textsf{minitoc} definiert u.\,a. \cs{@sect} hart um und zerstört so diverse
+% Erweiterungen von \KOMAScript. Es ist nicht abschließend untersucht, was das
+% Paket noch alles zerstört. Derzeit gibt es nur einen Workaround für das
+% genannte Problem mit \cs{@sect} (siehe:
+% Abschnitt~\ref{sec:packageworkarounds}).
+% \begin{macrocode}
+\scr@package@not@recommended{minitoc}{}
+% \end{macrocode}
+%
+% \selectlanguage{english}^^A
+% \changes{v3.26}{2018/07/18}{\textsf{multitoc} not recommended}^^A
+% \textsf{multitoc} not recommended, because up to version 2.01 it breaks all
+% additional list-ofs and even table of contents, list of figures and list of
+% tables, if option \texttt{toc}, \texttt{lof} or \texttt{lot} has not been
+% set. And it is not needed, because you can use \cs{BeforeStartingTOC} and
+% \cs{AfterStartingTOC} to make two-column list-ofs.
+% \begin{macrocode}
+%<*!letter>
+\scr@package@not@recommended{multitoc}{%
+ package `multicol' and, e.g.:\MessageBreak
+ \space\space
+ \string\BeforeStartingTOC{\string\begin{multicols}{2}}\MessageBreak
+ \space\space
+ \string\AfterStartingTOC{\string\end{multicols}}\MessageBreak
+ to make all ToCs two-columned.\MessageBreak
+ \@ifpackagelater{2018/07/18}{}{%
+ Note, package `multitoc' breaks additional\MessageBreak
+ ToCs generated by `\string\DeclareNewTOC' or\MessageBreak
+ packages like `listings' or `newcaption' and\MessageBreak
+ even the standard table of contents,\MessageBreak
+ list of figures or list of tables,\MessageBreak
+ if you omit the corresponding options `toc',\MessageBreak
+ `lof' or `lot'.%
+ }%
+}
+%</!letter>
+% \end{macrocode}
+% \selectlanguage{ngerman}^^A
+%
+% \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}
+%
+% \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'}
+% \end{macrocode}
+%
+% \textsf{titlesec} beschädigt diverse \KOMAScript{} Erweiterungen und
+% benötigt eigene Workarounds (siehe Abschnitt~\ref{sec:packageworkarounds}),
+% so dass es einfach nicht gut mit \KOMAScript{} harmoniert.
+% \begin{macrocode}
+%<*!letter>
+\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}
+%</!letter>
+% \end{macrocode}
+%
+% \selectlanguage{english}^^A
+% \changes{v3.25}{2017/11/21}{Usage of \textsf{tocbibind} not recommended}^^A
+% \textsf{tocbibind} does several things, that break \KOMAScript, i.e.:
+% \begin{itemize}
+% \item usage of \cs{MakeUppercase} within running heads,
+% \item usage of hard codes \texttt{toc} for the ToC entries,
+% \item hard redefinition of \texttt{thebibliography},
+% \item hard redefinition of \texttt{theindex},
+% \item hard redefinition of \cs{tableofcontents},
+% \item hard redefinition of \cs{listoftables},
+% \item hard redefinition of \cs{listoffigures},
+% \item hard redefinition of \cs{@makechapterhead}
+% \end{itemize}
+% \begin{macrocode}
+%<*!letter>
+\scr@package@not@recommended{tocbibind}{%
+ options like `listof=totoc'\MessageBreak
+ or `bibliography=totoc', or commands like\MessageBreak
+ `\string\setuptoc{toc}{totoc}' instead of this package,\MessageBreak
+ because it breaks several KOMA-Script features of\MessageBreak
+ the list of figures, list of tables, bibliography,\MessageBreak
+ index and the running head%
+}
+%</!letter>
+% \end{macrocode}
+%
+% \changes{v3.26}{2018/07/18}{Usage of \textsf{tocloft} not recommended}^^A
+% \textsf{tocloft} does redefine \cs{tableofcontents}, \cs{listoffigures},
+% \cs{listoftables}, \cs{l@part} \dots{} \cs{l@subparagraph} and breaks
+% \KOMAScript, i.e.:
+% \begin{itemize}
+% \item commands \cs{BeforeTOCHead}, \cs{AfterTOCHead},
+% \cs{BeforeStartingTOC}, \cs{AfterStartingTOC},
+% \item almost all TOC features,
+% \item options \texttt{listof=totoc}, \texttt{listof=numbered},
+% \item option \texttt{listof=flat},
+% \item option \texttt{listof=entryprefix},
+% \item all options of \cs{DeclareTOCEntryStyle},
+% \end{itemize}
+% \begin{macrocode}
+%<*!letter>
+\scr@package@not@recommended{tocloft}{%
+ options like `listof=entryprefix',\MessageBreak
+ commands like `\string\listoflofentryname' or\MessageBreak
+ `\string\listoflotentryname',
+ and `\string\DeclareTOCStyleEntry' or\MessageBreak
+ `\string\RedeclareSectionCommand'
+ instead of this package,\MessageBreak
+ because it breaks several KOMA-Script features of\MessageBreak
+ the list of figures, list of tables and table of\MessageBreak
+ contents, i.e., options like `listof=numbered',\MessageBreak
+ `listof=flat or `toc=flat', commands like\MessageBreak
+ `\string\BeforeTOCHead{...}' and
+ `\string\AfterTOCHead{...}',\MessageBreak
+ `\string\BeforeStartingTOC{...}' and
+ \string\AfterStartingTOC{...}',\MessageBreak
+ all features of `\string\DeclareTOCStyleEntry',\MessageBreak
+ and the ToC entry features of `\string\DeclareSecionCommand'\MessageBreak
+ and `\string\RedeclareSectionCommand' of levels\MessageBreak
+ `part',
+%<article> `chapter',
+ `section', `subsection',\MessageBreak
+ `subsubsection', `paragraph' and `subparagraph'%
+}
+%</!letter>
+%</class>
+% \end{macrocode}
+% \selectlanguage{ngerman}^^A
+% \end{macro}^^A \scr@package@not@recommended
+%
+% \subsection{Workarounds für fremde Pakete}
+% \label{sec:packageworkarounds}
+%
+% \changes{v3.23}{2017/02/04}{\textsf{minitoc} verursacht ein schwerwiegendes
+% Problem}^^A
+% Das Paket \textsf{minitoc} verursacht ein schwerwiegendes Problem indem es
+% \cs{@sect} hart umdefiniert, ohne zuvor zu testen, ob die Definition den
+% Erwartungen entspricht. 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{minitoc}{%
+ \let\scr@mt@saved@sect\@sect
+}
+\AfterPackage{minitoc}{%
+ \def\@tempa#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2<1 \relax
+ \addtocontents{toc}{\protect\sectbegin}
+ \fi
+ \stc@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}%
+ }%
+ \ifx\@sect\@tempa
+% \end{macrocode}
+% Note: There are several bugs in this definition (e.g. missing
+% \cs{expandafter} and orphan spaced). Nevertheless its the original one from
+% \textsf{minitoc} 61 and so I have to use it.
+% \begin{macrocode}
+ \def\@tempa#1#2#3#4#5#6[#7]#8{
+ \expandafter
+ \ifx\csname #1\endcsname\section\relax
+ \addcontentsline{lof}{xsect}{#7}%
+ \addcontentsline{lot}{xsect}{#7}%
+ \fi
+ \ifx\csname #1\endcsname\starsection\relax
+ \addcontentsline{lof}{xsect}{#7}%
+ \addcontentsline{lot}{xsect}{#7}%
+ \fi
+ \ifnum #2>\c@secnumdepth\relax
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \edef\@svsec{\csname the#1\endcsname\hskip 1em}%
+ \fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #6\relax
+ \@hangfrom{\hskip #3\relax\@svsec}%
+ {\interlinepenalty \@M #8\par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth\relax
+ \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7%
+ }%
+ \else
+ \def\@svsechd{#6\hskip #3\relax
+ \@svsec #8\csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth\relax
+ \else
+ \protect\numberline{\csname the#1\endcsname}
+ \fi
+ #7}%
+ }%
+ \fi
+ \@xsect{#5}%
+ }%
+ \ifx\stc@sect\@tempa
+ \ClassWarning{\KOMAClassName}{%
+ Redefining minitoc's internal command
+ `\string\stc@sect'\MessageBreak
+ to prevent minitoc to destroy several features\MessageBreak
+ of KOMA-Script%
+ }%
+ \let\stc@sect\scr@mt@saved@sect
+ \else
+ \ClassInfo{\KOMAClassName}{%
+ Deactivating the `minitoc' workaround,\MessageBreak
+ because of unexpected definition of\MessageBreak
+ `\string\stc@sect'%
+ }%
+ \let\scr@mt@saved@sect\relax
+ \fi
+ \else
+ \ifx\@sect\scr@mt@saved@sect
+ \ClassInfo{\KOMAClassName}{%
+ Deactivating the `minitoc' workaround for
+ `\string\@sect',\MessageBreak
+ because it is not needed%
+ }%
+ \else
+ \ClassInfo{\KOMAClassName}{%
+ Deactivating the `minitoc' workaround,\MessageBreak
+ because of unexpected definition of\MessageBreak
+ `\string\@sect'%
+ }%
+ \fi
+ \let\scr@mt@saved@sect\relax
+ \fi
+}
+%</!letter>
+%</class>
+% \end{macrocode}
+%
+% \changes{v3.13a}{2014/10/09}{\textsf{titlesec} hat ein schwerwiegendes
+% Problem}^^A
+% 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}{%
+% \end{macrocode}
+% Hack getestet mit \textsf{titlesec} 2011/12/15 v2.10.0 bis 2016/03/21
+% v2.10.2. Daher bis zu diesem Datum freigeschaltet.
+% \changes{v3.20}{2016/03/22}{\textsf{titlesec}-Hack auch für Version
+% 2016/03/15}^^A
+% \changes{v3.20}{2016/03/24}{\textsf{titlesec}-Hack auch für Version
+% 2016/03/21}^^A
+% \begin{macrocode}
+ \@ifpackagelater{titlesec}{2016/03/22}{%
+ \ClassInfo{\KOMAClassName}{%
+ Deactivating the `titlesec' workaround,\MessageBreak
+ because package is newer than expected%
+ }%
+ }{%
+ \ClassWarning{\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: