You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1316 lines
46 KiB
1316 lines
46 KiB
% \iffalse meta-comment
|
|
% ======================================================================
|
|
% scrkernel-miscellaneous.dtx
|
|
% Copyright (c) Markus Kohm, 2002-2020
|
|
%
|
|
% 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-2020
|
|
%
|
|
% 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 3487 2020-04-27 07:19:23Z 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: 2020-04-27 09:19:23 +0200 (Mon, 27 Apr 2020) $
|
|
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
|
|
\filerevision$Revision: 3487 $
|
|
\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}
|
|
\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
|
|
% \changes{v3.27}{2019/06/26}{\cs{relax} replaced by percent}%^^A
|
|
% Darstellung der Gleichungsnummer:
|
|
% \begin{macrocode}
|
|
%<*!extend>
|
|
%<book|report>\@addtoreset{equation}{chapter}
|
|
\renewcommand*\theequation{%
|
|
%<*book>
|
|
\expandafter\ifnum\scr@v@is@gt{2.97d}%
|
|
\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
|
|
% \changes{v3.28}{2019/11/19}{umbenannt in \cs{Ifthispageodd}}%^^A
|
|
% \begin{macro}{\Ifthispageodd}
|
|
% \changes{v3.28}{2019/11/19}{neu aus Umbenennung von \cs{ifthispageodd}}%^^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:
|
|
% \changes{v3.31}{2020/04/27}{Klasse und Paket in der Ausgabe korrigiert}%^^A
|
|
% \begin{macrocode}
|
|
\providecommand*{\ifthispageodd}{%
|
|
%<class> \ClassWarning{\KOMAClasSName}{%
|
|
%<extend> \PackageWarning{scrextend}{%
|
|
Usage of deprecated command
|
|
`\string\ifthispageodd'.\MessageBreak
|
|
The command has been renamed because of a\MessageBreak
|
|
recommendation of The LaTeX Project Team.\MessageBreak
|
|
Please replace `\string\ifthispageodd' by `\string\Ifthispageodd'%
|
|
}%
|
|
\Ifthispageodd
|
|
}
|
|
\newcommand{\Ifthispageodd}{%
|
|
\is@thispageodd
|
|
\ifthispagewasodd
|
|
\expandafter\@firstoftwo
|
|
\else
|
|
\expandafter\@secondoftwo
|
|
\fi
|
|
}
|
|
%</class|extend>
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \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>
|
|
%<*ignorethis>
|
|
\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}
|
|
%</ignorethis>
|
|
%</!letter>
|
|
% \end{macrocode}
|
|
%
|
|
% \selectlanguage{english}%^^A
|
|
% \changes{v3.27}{2019/07/24}{\textsf{sectsty} up to v2.0.2 is
|
|
% incompatible}%^^A
|
|
% \textsf{sectsty} up to version 2.0.2 uses internal commands of
|
|
% \KOMAScript{}, that has been removed already 2001 in \KOMAScript{} 2.8e. So
|
|
% it was never compatible with \KOMAScript~3.
|
|
% \begin{macrocode}
|
|
%<*!letter>
|
|
\AfterPackage*{sectsty}{%
|
|
\@ifpackagelater{sectsty}{2002/02/26}{%
|
|
\ClassInfo{\KOMAClassName}{Unknown `sectsty' release.\MessageBreak
|
|
Cross your fingers, that is compatible%
|
|
}%
|
|
}{%
|
|
\ClassWarning{\KOMAClassName}{%
|
|
Incompatible package `sectsty' loaded!\MessageBreak
|
|
Package `sectsty' up to version 2.0.2 is incompatible\MessageBreak
|
|
with KOMA-Script from version 2.8e released in 2001.\MessageBreak
|
|
You should avoid that package and configure the\MessageBreak
|
|
section titles of your document using the KOMA-Script\MessageBreak
|
|
user interface, e.g., \string\chapterlinesformat,\MessageBreak
|
|
\string\RedeclareSectionCommand\space etc. or you should ask\MessageBreak
|
|
the `sectsty' maintainer for a more compatible release.\MessageBreak
|
|
Ignoring this warning could result in several error\MessageBreak
|
|
messages and formatting issues after loading package\MessageBreak
|
|
`sectsty'%
|
|
}%
|
|
}%
|
|
}
|
|
%</!letter>
|
|
% \end{macrocode}
|
|
%
|
|
% \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 spurious 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>
|
|
%<*ignorethis>
|
|
\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
|
|
}
|
|
%</ignorethis>
|
|
\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
|
|
% \selectlanguage{english}%^^A
|
|
% \changes{v3.27}{2019/07/23}{\textsf{titlesec} does not support KOMA-Script
|
|
% classes}%^^A
|
|
% After several years \textsf{titlesec} still does not really support
|
|
% \KOMAScript{} classes and \KOMAScript{} would still need an ugly hack using
|
|
% internal \texttt{titlesec} macros and deactivating several features of
|
|
% \KOMAScript{} to make the package work. So IMO the better solution is to
|
|
% remove such hacks from the \KOMAScript{} classes. Maybe the
|
|
% \textsf{titlesec} author will support the \KOMAScript{} classes in some
|
|
% future, maybe not. Maybe \textsf{scrhack} will provide an ugly workaround to
|
|
% make \texttt{titlesec} work in any kind with \KOMAScript{} classes. But the
|
|
% classes are the wrong place to provide such hacks. However, if you need such
|
|
% a hack, see the following code, that is not longer used or supported or copy
|
|
% the section commands code from a standard class.
|
|
% \begin{macrocode}
|
|
%<*ignorethis>
|
|
\@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
|
|
}%
|
|
%</ignorethis>
|
|
\@ifpackagelater{titlesec}{2019/07/17}{%
|
|
\ClassInfo{\KOMAClassName}{Unknown `titesec' release.\MessageBreak
|
|
Cross your fingers, that is compatible%
|
|
}%
|
|
}{%
|
|
\scr@class@titlesec@warning
|
|
}%
|
|
}
|
|
\providecommand*{\scr@class@titlesec@warning}{%
|
|
\ClassWarning{\KOMAClassName}{%
|
|
Usage of this version of package `titlesec'\MessageBreak
|
|
with KOMA-Script class `\KOMAClassName' is\MessageBreak
|
|
not recommended, because the package does not\MessageBreak
|
|
support KOMA-Script classes, but break them.\MessageBreak
|
|
If you want to use `titlesec' with KOMA-Script\MessageBreak
|
|
classes instead of using the KOMA-Script's\MessageBreak
|
|
user interface to configure the headings of\MessageBreak
|
|
parts,
|
|
%<!article> chapters, sections
|
|
%<article> sections, subsections
|
|
... subparagraphs,\MessageBreak
|
|
please ask the author of `titlesec' for support.\MessageBreak
|
|
Expect errors like:\MessageBreak
|
|
\space\space- ``Illegal unit of measure (pt inserted).''\MessageBreak
|
|
\space\space- ``Missing number, treated as zero''\MessageBreak
|
|
after loading `titlesec'%
|
|
}%
|
|
}
|
|
%</!letter>
|
|
%</class>
|
|
% \end{macrocode}
|
|
%
|
|
%
|
|
% \iffalse
|
|
%</body>
|
|
% \fi
|
|
%
|
|
% \Finale
|
|
%
|
|
\endinput
|
|
%
|
|
% end of file `scrkernel-miscellaneous.dtx'
|
|
%%% Local Variables:
|
|
%%% mode: doctex
|
|
%%% TeX-master: t
|
|
%%% End:
|
|
|