diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /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.dtx | 1223 |
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: |