summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx')
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx1206
1 files changed, 500 insertions, 706 deletions
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx b/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx
index 5c5f5ee4a1..aeac05df99 100644
--- a/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx
+++ b/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
% ======================================================================
% scrkernel-miscellaneous.dtx
-% Copyright (c) Markus Kohm, 2002-2021
+% Copyright (c) Markus Kohm, 2002-2022
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
@@ -17,56 +17,19 @@
% 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-2021
-%
-% 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 3554 2021-01-28 15:40:05Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 3743 2022-03-04 16:27:15Z 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: 2021-01-28 16:40:05 +0100 (Thu, 28 Jan 2021) $
+ \filedate$Date: 2022-03-04 17:27:15 +0100 (Fr, 04. Mär 2022) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
- \filerevision$Revision: 3554 $
+ \filerevision$Revision: 3743 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrkernel-miscellaneous.dtx}%
@@ -75,89 +38,53 @@
(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}
-
+\documentclass[USenglish]{koma-script-source-doc}
+\usepackage{babel}
+\setcounter{StandardModuleDepth}{2}
\begin{document}
- \maketitle
- \tableofcontents
- \DocInput{\filename}
+\DocInput{scrkernel-miscellaneous.dtx}
\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.
-%
+% \changes{v2.95}{2002/07/01}{first version after splitting \file{scrclass.dtx}}
+% \changes{v3.36}{2022/03/01}{switch over from \cls*{scrdoc} to
+% \cls*{koma-script-source-doc}}
+% \changes{v3.36}{2022/03/01}{whole implementation documentation in English}
+%
+% \GetFileInfo{scrkernel-miscellaneous.dtx}
+% \title{All the Code of
+% \href{https://komascript.de}{\KOMAScript} not Fitting into another File}
+% \author{\href{mailto:komascript@gmx.info}{Markus Kohm}}
+% \date{Revision \fileversion{} of \filedate}
+% \maketitle
+% \begin{abstract}
+% Currently \file{scrkernel-miscellaneous.dtx} is a mess of miscellaneous
+% code. There is a big, fat \textbf{ToDo} to change this!
+% \end{abstract}
+% \tableofcontents
+%
+% \section{User Manual}
+%
+% You can find the user documentation the commands implemented here in the
+% \KOMAScript{} manual, either the German \file{scrguide} or the English
+% \file{scrguien}.
+%
+% \MaybeStop{\PrintIndex}
+%
+%
+% \section{Implementation of Special Requirements of Package \pkg*{scrletter}}
+%
+% The \pkg*{scrletter} depends on some features of the \KOMAScript{}
+% classes. However, a special user request was to make it work with the
+% standard classes too. So we need additional code to detect not using a
+% \KOMAScript{} class and to make this work.
+% \begin{description}
+% \item[ToDo:] Can we move this code into a letter file or use a new file only
+% used for package \pkg*{scrletter}?
+% \end{description}
% \begin{macrocode}
-%<*package&letter>
+%<*package&letter&init>
\scr@ifundefinedorrelax{KOMAClassName}{%
\PackageWarningNoLine{scrletter}{%
Cannot detect any KOMA-Script class.\MessageBreak
@@ -175,13 +102,22 @@
\RequirePackage{scrextend}%
% \end{macrocode}
%
-% \begin{macro}{\setparsizes}
-% \changes{v3.23}{2017/02/22}{wird notfalls vereinfacht definiert}%^^A
+% \begin{command}{\setparsizes}
+% \changes{v3.23}{2017/02/22}{simple fallback definition}
% \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.
+% \changes{v3.23}{2017/02/22}{empty fallback definition}
+% If \pkg*{scrletter} is not used with a \KOMAScript{} class \cs{setparsizes}
+% would not be available. But it is used in \cs{vb@t@z}, \cs{@addrfield},
+% \cs{@datefield}, \cs{@makelettertitle}, \cs{@subjfield}, \cs{opening},
+% \cs{closing}. Instead of changing the implementation of all these commands
+% and macros, we define a very simple version of \cs{setparsizes}. And in case
+% of using this simple version \cs{par@updaterelative} would become a
+% do-nothing macro. This does work in case of the commands and macros listed
+% above. But maybe it does not work in other cases.
+% \begin{description}
+% \item[ToDo:] Can we move this code into \file{scrkernel-paragraphs.dtx} or
+% use a new file only for package \pkg*{scrletter}?
+% \end{description}
% \begin{macrocode}
\providecommand*{\setparsizes}[3]{%
\setlength{\parindent}{#1}%
@@ -190,62 +126,45 @@
}
\providecommand*{\par@updaterelative}{}
% \end{macrocode}
-% \end{macro}%^^A \par@updaterelative
-% \end{macro}%^^A \setparsizes
+% \end{macro}^^A \par@updaterelative
+% \end{command}^^A \setparsizes
% \begin{macrocode}
}{}
+%</package&letter&init>
% \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}
+% \begin{macro}{\scr@renewforletter,\@renewforletter,\do@renewforletter@list,
+% \do@renewforletter}
+% \changes{v3.20}{2014/04/10}{added}
+% \changes{v3.25}{2017/11/15}{removed}
% \end{macro}
%
-% \iffalse
-%</init>
-%<*option>
-% \fi
%
-% \subsection{Optionen für Entwürfe}
+% \section{Implementation of the Draft Mode}
+%
+% The \KOMAScript{} classes provide two draft options, the general one and a
+% more specific.
+% \begin{description}
+% \item[ToDo:] Should we move this to \file{scrkernel-paragraphs.dtx}?
+% \end{description}
%
% \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
+% \changes{v2.95}{2002/12/05}{re-implemented using \pkg{keyval}}
+% \changes{v3.17}{2015/03/12}{using internal value storage}
+% \changes{v3.25}{2017/11/21}{respect option \opt{overfullrule}}
+% \changes{v3.12}{2013/03/05}{using \cs{FamilyKeyState}}
% \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.
+% \changes{v2.95}{2002/12/05}{obsolete}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}
+% \changes{v3.01a}{2008/11/21}{standard instead of obsolete}
+% \changes{v3.02c}{2008/02/17}{explicit optional argument for \pkg*{scrextend}}
+% In draft mode classes usually show a rule for overfull boxes. Despite this
+% is usually already handled by the class, package \pkg*{scrextend} also
+% provides the option, because of correct setting of the internal value
+% storage also of option \opt{overfullrule}.
% \begin{macrocode}
-%<*class|extend>
+%<*(class|extend)&option>
\KOMA@key{draft}[true]{%
\KOMA@set@ifkey{draft}{@tempswa}{#1}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed
@@ -281,16 +200,13 @@
\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
+% \changes{v3.25}{2017/11/21}{added}
+% Because option \opt{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
@@ -323,94 +239,124 @@
\ifdim\overfullrule>\z@ true\else false\fi
}
%</package&extend>
-%</class|extend>
+%</(class|extend)&option>
% \end{macrocode}
-% \selectlanguage{ngerman}%^^A
-% \end{option}%^^A overfullrule
-% \end{option}%^^A final
-% \end{option}%^^A draft
+% \end{option}^^A overfullrule
+% \end{option}^^A final
+% \end{option}^^A draft
%
%
-% \subsection{Optionen für Gleichungen}
+% \section{Implementations for the Math Mode}
%
-% Briefe haben derzeit keine Gleichungen.
-% \iffalse
-%<*!letter>
-% \fi
+% \KOMAScript{} does not make something special for the math mode.
+% \begin{description}
+% \item[ToDo:] Should we move this to the special treatment of \pkg{amsmath}
+% in \file{scrkernel-basics.dtx} or move it with the special treatment of
+% \pkg{amsmath} in \file{scrkernel-basics.dtx} to a new file
+% \file{scrkernel-math.dtx}?
+% \end{description}
%
-% \begin{option}{leqno}
-% \begin{option}{fleqno}
-% Es können Gleichungsnummern links oder linksbündige Gleichungen
-% eingestellt werden.
+% \begin{option}{leqno,fleqno}
+% The \KOMAScript{} classes but \cls*{scrlttr2} do support the standard
+% class options \opt{leqno} and \opt{fleqn}.
% \begin{macrocode}
-%<*!extend>
+%<*class&!letter&option>
\DeclareOption{leqno}{\input{leqno.clo}}
\DeclareOption{fleqn}{\input{fleqn.clo}}
-%</!extend>
+%</class&!letter&option>
% \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{command}{\theequation}
+% \changes{v2.97e}{2007/11/23}{chapter numbers only in main matter}
+% \changes{v3.27}{2022/03/01}{\cs{relax} replaced by percent because of
+% \pkg*{hyperref}}
+% The \KOMAScript{} classes \cls*{scrbook} and \cls*{scrreprt} have a special
+% treatment for equation numbers. For \cls*{scrreprt} the number just depends
+% on the chapter number. But for \cls*{scrbook} it also depends on the active
+% matter.
+% \begin{description}
+% \item[ToDo:] With \cs{counterwidth} the \cls*{scrreprt} code could be very
+% simple. But currently we still support old \LaTeX{} kernels without
+% \cs{counterwithin}.
+% \item[ToDo:] Should we also add a definition for \cls*{scrartcl} as done for
+% \cls*{article}, though the same definition is already the default of the
+% \LaTeX{} kernel?
+% \end{description}
+% \begin{macrocode}
+%<*(book|report)&body>
+\renewcommand*{\theequation}{%
+%<*book>
+ \expandafter\ifnum\scr@v@is@gt{2.97d}%
+ \if@mainmatter\thechapter.\fi
+ \else
+%</book>
+ \thechapter.%
+%<book> \fi
+ \@arabic\c@equation
+}
+%</(book|report)&body>
+% \end{macrocode}
+% \end{command}
+%
+% \section{Implementation of Special Handling of Sans-Serif Defaults}
+%
+% TeX.SX user \texttt{egreg} has stated in comment
+% \url{https://tex.stackexchange.com/questions/289853}, that he does not use
+% \KOMAScript{} because of the sans-serif defaults for headings. He like the
+% ugly, bold fat Antiqua more. Moreover, he is not satisfied in being able to
+% change the default using \cs{setkomafont}. So the \KOMAScript{} author has
+% defined an option to do the change of all sans-serif defaults at once. As a
+% joke the name of this options not only references \texttt{egreg} but is
+% cumbersome long.
+% \begin{description}
+% \item[ToDo:] Should we move this option to \file{scrkernel-fonts.dtx}?
+% \item[ToDo:] Should we add a more handy and serious option like
+% \opt{nosfdefaults}?
+% \end{description}
%
% \begin{option}{egegdoesnotlikesansseriftitles}
-% \changes{v3.20}{2016/01/29}{neu (speziell)}
-% \changes{v3.20a}{2016/05/19}{auch in der Briefklasse}
+% \changes{v3.20}{2016/01/29}{added}
+% \changes{v3.20a}{2016/05/19}{also for \cls*{scrlttr2}}
% \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.
+% \changes{v3.20}{2016/01/29}{added}
+% \changes{v3.20a}{2016/05/19}{also for \cls*{scrlttr2}}
+% Used to switch on or off all the sans-serif defaults.
% \begin{macrocode}
-%<*!(package&letter)>
+%<*!(package&letter)&option>
\KOMA@ifkey{egregdoesnotlikesansseriftitles}{@egregdoesnotlikesansseriftitles}
\newcommand*{\@gr@gsffamily}{%
\if@egregdoesnotlikesansseriftitles\else\sffamily\fi
}
-%</!(package&letter)>
+%</!(package&letter)&option>
% \end{macrocode}
-% \end{macro}%^^A \@gr@gsffamily
-% \end{option}%^^A egregdoesnotlikesansseriftitles
-%
-% \iffalse
-%</option>
-%<*execoption>
-% \fi
+% \end{macro}^^A \@gr@gsffamily
+% \end{option}^^A egregdoesnotlikesansseriftitles
%
%
-% \subsection{Standardeinstellungen für die Optionen}
+% \section{Implementation of the Execution and Processing of Options}
%
-% 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.
+% After the definition of all options, some defaults have to be executed and
+% all options have to be processed.
+% \begin{description}
+% \item[ToDo:] Can we move the execution of default to the files, where the
+% corresponding options are defined?
+% \item[ToDo:] Can we move the processing of options to
+% \file{scrkernel-basics.dtx} where the command itself is defined?
+% \end{description}
%
-% 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
+% \changes{v2.97c}{2007/04/19}{using \cs{KOMAExecuteOptions} instead of
+% \cs{KOMAoptions} and \cs{KOMAProcessOptions} instead of
% \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}
+% \changes{v2.97c}{2007/04/19}{options that are implicit defaults are not set
+% explicitly}
+% \changes{v2.97c}{2007/07/18}{removed \opt{twoside} from the default}
+% \changes{v2.98c}{2008/03/10}{\opt{headings\quotechar=big} added to the
+% default}
+% \changes{v3.11c}{2013/03/04}{\opt{headings\quotechar=big} not with
+% \cls*{scrlttr2}}
% \begin{macrocode}
+%<*execoption>
%<*class>
\KOMAExecuteOptions{%
parskip=false,%
@@ -418,34 +364,29 @@
}
%</class>
\KOMAProcessOptions\relax
-% \end{macrocode}
-%
-%
-% \iffalse
%</execoption>
-%<*body>
-% \fi
-%
+% \end{macrocode}
%
-% \subsection{Temporäre Umschaltung zwischen ein- und zweispaltigem
-% Satz}
%
-% Briefe sind immer einspaltig, benötigen also den Schalter nicht.
-% \iffalse
-%<*!letter>
-% \fi
+% \section{Implementation of Temporary Switch to Single Column Mode}
%
-% \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.
+% Sometimes we need to temporary switch to single column mode, e.g., to print
+% a table of contents or similar. This is not needed for \cls*{scrlttr2} or
+% \pkg*{scrletter}.
+% \begin{description}
+% \item[ToDo:] Should we move this to \file{scrkernel-paragraphs.dtx} or
+% another file? Currently it is used in \file{scrkernel-index.dtx},
+% \file{scrkernel-notepaper.dtx}, and \file{scrkernel-title.dtx} (and also
+% in \file{scrhack.dtx}, which also defines it of needed).
+% \end{description}
+%
+% \begin{macro}{\@restonecolfalse,\@restonecoltrue,\if@restonecol}
+% We need a local switch to be able to restore two column mode after locally
+% switching to one column mode (or visa versa). For \pkg*{scrextend} this is a
+% little bit complicated, because the switch could already exist in the used
+% class.
% \begin{macrocode}
+%<*!letter&body>
%<*!extend>
\newif\if@restonecol
%</!extend>
@@ -455,59 +396,38 @@
\@restonecolfalse
}{}
%</extend>
+%</!letter&body>
% \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
+%
+% \section{Implementation of the Dictum}
%
-% \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.
+% Printing a \emph{dictum} is also not supported by letters.
+% \begin{description}
+% \item[ToDo:] Should we move this to \file{scrkernel-sections.dtx} or to a
+% new file?
+% \end{description}
+%
+% \begin{command}{\dictum}
+% \changes{v2.8q}{2001/20/04}{added}
+% \changes{v2.9l}{2003/01/28}{\cs{edef} replaced by \cs{def} ersetzt}
+% \changes{v2.9q}{2004/04/19}{group added}
+% \begin{command}{\dictumwidth,
+% \raggeddictum,\raggeddictumtext,\raggeddictumauthor}
+% \changes{v2.8q}{2001/20/04}{added}
+% \begin{fontelement}{dictum}
+% \changes{v2.8q}{2001/20/04}{added}
+% \changes{v3.20}{2016/01/29}{\cs{sffamily} replaced by \cs{@gr@gsffamily}}
+% \begin{fontelement}{dictumtext,dictumauthor}
+% \changes{v2.8q}{2001/20/04}{added}
+% \begin{command}{\dictumauthorformat}
+% \changes{v2.8q}{2001/20/04}{added}
+% \begin{command}{\dictumrule}
+% \changes{v3.10}{2011/09/02}{added}
+% The \emph{dictum} consist of a text, the dictum, and an optional
+% author. Text and author are separated by a horizontal rule.
% \begin{macrocode}
+%<*!letter&body>
\newcommand{\dictum}[2][]{\par%
\begingroup
\raggeddictum\parbox{\dictumwidth}{%
@@ -530,101 +450,71 @@
\newkomafont{dictum}{\normalfont\normalcolor\@gr@gsffamily\small}
\newkomafont{dictumauthor}{\itshape}
\aliaskomafont{dictumtext}{dictum}
+%</!letter&body>
% \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.
+% \end{command}^^A \dictumrule
+% \end{command}^^A \dictumauthorformat
+% \end{fontelement}^^A dictumtext,dictumauthor
+% \end{fontelement}^^A dictum
+% \end{command}^^A \dictumwidth,\raggeddictum…\raggeddictumauthor
+% \end{command}^^A \dictum
+%
+%
+% \section{Setting Default Lengths of \env{minipage} and Frames}
+%
+% \begin{description}
+% \item[ToDo:] Should we move the default for \len{@mpfootins} to
+% \file{scrkernel-footnotes.dtx}?
+% \item[ToDo:] Do we really need to set initial values to \len{fboxsep} and
+% \len{fboxrule}? The same defaults using |pt| instead of \cs{p@} are already
+% used in the \LaTeX{} kernel. Wouldn't that be enough?
+% \end{description}
+%
+% \begin{length}{@mpfootins}
+% \begin{length}{fboxsep,fboxrule}
+% We are using the same settings like the standard classes.
% \begin{macrocode}
-%<*class>
+%<*class&body>
\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>
+%</class&body>
% \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.
+% \end{length}
+% \end{length}
+%
+%
+% \section{Implementation of Detection of Odd and Even Pages}
+%
+% \begin{description}
+% \item[ToDo:] Should this code moved to \file{scrkernel-basics.dtx} or to a
+% new one?
+% \end{description}
+%
+% \begin{command}{\ifthispageodd,\Ifthispageodd}
+% \changes{v2.8q}{2001/11/22}{added}
+% \changes{v3.28}{2019/11/19}{\cs{ifthispageodd} renamed to \cs{Ifthispageodd}}
+% Users often use |\ifodd\value{page}| to test, whether the current page is
+% odd or even. But this is dramatically wrong, because of the asynchronous
+% output of \TeX. So here we define a command
+% \begin{quote}
+% \Ifthispageodd\marg{then code}\marg{else code}
+% \end{quote}
+% that internally uses a label-like mechanism to do the decision. We do not
+% really use \cs{label} and \cs{pageref}, because this would not work with
+% Roman or alphabetic page numbers. So we use a direct write to the \file{aux}
+% file instead.
%
% \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.
+% \changes{v2.8q}{2001/11/22}{added}
+% \changes{v2.95b}{2006/07/28}{using \cs{@newl@bel}}
+% \changes{v3.20}{2016/03/25}{use after definition in the \file{aux}-file}
+% Definition of a new \textbf{t}rue-\textbf{p}age-\textbf{o}dd label. To be
+% used in the \file{aux} file. A fallback definition is also added to the
+% \file{aux} file, so there wouldn't be an error, e.g., after removing package
+% \pkg*{scrextend} from a document.
% \begin{macrocode}
-%<*class|extend>
+%<*(class|extend)&body>
\newcommand*{\new@tpo@label}{\@newl@bel{tpo}}
\AtBeginDocument{%
\if@filesw
@@ -634,34 +524,34 @@
\fi
}
% \end{macrocode}
-% \end{macro}
+% \end{macro}^^A \new@tpo@label
%
% \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.
+% \changes{v2.8q}{2001/11/22}{added}
+% We need a kind of counter with the actual usage number of
+% \cs{Ifthispageodd}.
% \begin{macrocode}
\newcommand*{\scr@tpo}{0}
% \end{macrocode}
-% \end{macro}
+% \end{macro}^^A \scr@tpo
%
% \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
+% \changes{v2.8q}{2001/11/22}{added}
+% \changes{v2.9l}{2003/01/28}{renamed \cs{if@thispageodd}}
+% \changes{v2.95b}{2006/07/28}{using \cs{@newl@bel}}
+% \changes{v3.17}{2015/03/23}{split into two macros}
% \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.
+% \changes{v3.17}{2015/03/23}{added}
+% \changes{v3.20}{2016/03/25}{write to \file{aux} file only \cs{if@filesw}}
+% \changes{v3.23}{2017/02/23}{empty macro after usage}
+% The main workers of \cs{Ifthispageodd}. It is used to set
+% \cs{ifthispagewasodd} depending on the information it adds to the \file{aux}
+% file.
+% \begin{description}
+% \item[ToDo:] Why do we use an optional argument here? Are there any
+% circumstances, when the optional argument is not the default
+% \cs{is@thispageodd@setlabel}?
+% \end{description}
% \begin{macrocode}
\newcommand*{\is@thispageodd}[1][\is@thispageodd@setlabel]{%
\@bsphack
@@ -698,27 +588,22 @@
}
\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.
+% \end{macro}^^A \is@thispageodd@setlabel
+% \end{macro}^^A \is@thispageodd
+%
+% \begin{command}{\thispagewasoddfalse,\thispagewasoddtrue,\ifthispagewasodd}
+% \changes{v2.9l}{2003/01/20}{added}
+% Rolf Niepraschks asked for the possibility to check for the last decision,
+% e.g., inside the \meta{then code} or \meta{else code}. So the definition of
+% \cs{Ifthispageodd} has been changed not only to set such a switch, but also
+% use it.
% \begin{macrocode}
\newif\ifthispagewasodd
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
+% \end{command}
%
-% 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
+% With all these macros the user command is very easy.
+% \changes{v3.31}{2020/04/27}{fixed class and package name in the warning}
% \changes{v3.32}{2020/08/06}{\cs{KOMAClassName} fixed}
% \begin{macrocode}
\providecommand*{\ifthispageodd}{%
@@ -740,29 +625,53 @@
\expandafter\@secondoftwo
\fi
}
-%</class|extend>
+%</(class|extend)&body>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{command}^^A \ifthispageodd,\Ifthispageodd
+%
+%
+% \section{Implementation of Notes to the Margin}
+%
+% \begin{description}
+% \item[ToDo:] This has been moved newly to
+% \file{scrkernel-miscellaneous.dtx}, but maybe we can find another suitable
+% file?
+% \end{description}
+%
+% \begin{command}{\marginline}
+% \changes{v2.4l}{1997/02/06}{using the optional argument of \cs{marginpar}}
+% \changes{v2.8q}{2001/11/27}{missing brace added}
+% \changes{v3.36}{2022/02/22}{moved from \file{scrkernel-floats.dtx} to
+% \file{scrkernel-miscellaneaous.dtx}}
+% A very often wanted margin note feature is, to print all such notes in the
+% left margin ragged-left and all such notes in the right margin
+% ragged-right. So this is a simple shortcut for \cs{marginpar} with using
+% almost the same argument twice.
+% \begin{macrocode}
+%<*(class|extend)&body>
+\newcommand\marginline[1]{%
+ \marginpar[\raggedleft{#1}]{\raggedright #1}%
+}
+%</(class|extend)&body>
+% \end{macrocode}
+% \end{command}
%
%
-% \subsection{Definitionen für tiefer gestellten Text}
+% \section{Implementation of Subscripts}
%
-% \begin{macro}{\textsubscript}
-% \changes{v2.8h}{2001/07/19}{neu}%^^A
+% \begin{command}{\textsubscript}
+% \changes{v2.8h}{2001/07/19}{added}
+% \changes{v3.25}{2017/11/15}{define only if un-defined because of \LaTeX{}
+% kernel change}
% \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.
+% \changes{v2.8h}{2001/07/19}{added}
+% \changes{v3.10}{2011/09/05}{\cs{providecommand} instead of \cs{newcommand}
+% because of \pkg{fixltx2e}}
+% The \LaTeX{} kernel has \cs{textsuperscript}. But for several years
+% \cs{textsubscript} was missing. For such old \LaTeX{} kernels, we define it
+% similar to \cs{textsuperscript}.
% \begin{macrocode}
-%<*class|extend>
+%<*(class|extend)&body>
\scr@ifundefinedorrelax{textsubscript}{%
\DeclareRobustCommand*\textsubscript[1]{%
\@textsubscript{\selectfont#1}%
@@ -777,59 +686,67 @@
\providecommand*{\@textsubscript}[1]{%
{\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}%
}
-%</class|extend>
+%</(class|extend)&body>
% \end{macrocode}
% \end{macro}
-% \end{macro}
+% \end{command}^^A \textsubscript
%
%
-% \subsection{Unsichtbare Stütze}
+% \section{Implementation of an Invisible Strut}
% \label{sec:strut}
%
+% \begin{description}
+% \item[ToDo:] Maybe \file{scrkernel-basics.dtx} would be a good place for
+% this and maybe is should become a user command and be used at several
+% places, currently \cs{strut} is used.
+% \end{description}
+%
% \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.
+% \changes{v3.25}{2017/11/15}{added}
+% If we simply add \cs{strut} to the end of material which is assumed to be
+% horizontal, white spaces at the end of such material could become relevant,
+% even if the would not without the \cs{strut}. We can avoid this by adding
+% \cs{unskip} before the \cs{strut}. But in this case, the last work before
+% the \cs{strut} will not be hyphenated any more. If we are really in
+% horizontal mode, we can use \cs{nobreak} before the \cs{strut} you once
+% again allow hyphenation.
+% \begin{description}
+% \item[ToDo:] Should the \cs{unskip} also be moved behind \cs{ifhmode}?
+% \end{description}
% \begin{macrocode}
-%<*class|letter|extend>
+%<*(class|letter|extend)&body>
\providecommand*{\scr@endstrut}{\unskip\ifhmode\nobreak\strut\fi}
-%</class|letter|extend>
+%</(class|letter|extend)&body>
% \end{macrocode}
% \end{macro}
%
%
-%
-% \subsection{Warnung vor Paketen}
+% \section{Warnings for Using Incompatible Packages}
% \label{sec:packagewarning}
%
-% \changes{v3.12}{2013/07/08}{neue Warnungen vor bestimmten Paketen}%^^A
+% \begin{description}
+% \item[ToDo:] This should be moved to a new file.
+% \end{description}
+%
+% \changes{v3.12}{2013/07/08}{warnings about several incompatible packages
+% added}
+%
% \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.
+% \changes{v3.12}{2013/07/08}{added}
% \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.
+% \changes{v3.24}{2017/06/25}{added}
+% Loading of several incompatible packages should result in warnings using:
+% \begin{quote}
+% \cs{scr@package@not@recommended}\marg{package}\marg{alternatives}
+% \end{quote}
+% Usually the warning contains information about \meta{alternatives}, but this
+% argument can also be empty. Authors of classes can deactivate the warning,
+% by adding a \meta{package} to the comma separated list
+% \cs{class@shoulddisablepackagewarning@lis}. This has to be done, before
+% loading the \KOMAScript{} class. However doing so is not recommended and the
+% class author is responsible for the drawbacks.
% \begin{macrocode}
-%<*class>
+%<*class&body>
\newcommand*{\scr@package@not@recommended}[2]{%
\scr@ifundefinedorrelax{class@shoulddisablepackagewarning@list}{%
\@firstofone
@@ -853,24 +770,20 @@
}%
}%
% \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.
+% \end{macro}^^A \class@shoulddisablepackagewarning@list
+% Here are the not recommended packages and the alternatives:
+% \begin{description}
+% \item[\pkg{emptypage}:] is not needed, because there are corresponding
+% options and features in \KOMAScript.
% \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
+% \item[\pkg{fancyhdr}:] does not respect font settings of \KOMAScript{} and
+% also breaks some other features.
+% \changes{v3.24}{2017/06/25}{improved \pkg{fancyhdr} warning}
% \begin{macrocode}
\scr@package@not@recommended{fancyhdr}{%
\MessageBreak
@@ -882,24 +795,24 @@
`\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}).
+% \item[\pkg{minitoc}:]
+% \changes{v3.23}{2017/02/04}{\pkg{minitoc} is not recommended}
+% re-defines, e.g., \cs{@sect} and therefore breaks all the extensions of
+% \KOMAScript{} to this command. Currently not all impacts of the package has
+% been explored. Currently there is only a workaround for the \cs{@sect}
+% issue. See \autoref{sec:packageworkarounds} for more information.
% \begin{macrocode}
+%<*!letter>
\scr@package@not@recommended{minitoc}{}
+%</!letter>
% \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.
+% \item[\pkg{multitoc}:]
+% \changes{v3.26}{2018/07/18}{\pkg{multitoc} not recommended}
+% At least up to version 2.01 this breaks all additional lists/tables of
+% contents, because the \cs{@starttoc} redefinition does not allow to use
+% another extension but \file{toc}, \file{lof}, or \file{lot}. The package is
+% also not needed, because the \env{multicols} environment can simply be added
+% using \cs{BeforeStartingTOC} and \cs{AfterStartingTOC}.
% \begin{macrocode}
%<*!letter>
\scr@package@not@recommended{multitoc}{%
@@ -921,45 +834,40 @@
}
%</!letter>
% \end{macrocode}
-% \selectlanguage{ngerman}%^^A
-%
-% \textsf{parskip} ist nur ein Notfallpaket für Klassen, die selbst keinen
-% Absatzabstand unterstützen.
+% \item[\pkg{parskip}:] is an emergency fallback package for classes, that
+% do not support paragraph skips themselves.
% \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.
+% \item[\pkg{titleps}:]
+% \changes{v3.16}{2015/01/21}{\pkg{titleps} not recommended}
+% does not respect several font settings and other features of the
+% \KOMAScript{} classes.
% \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.
+% \item[\pkg{titlesec}:]
+% \changes{v3.36}{2022/03/01}{bring back \pkg{titlesec} warning}
+% breaks several \KOMAScript{} features and needs a lot
+% of workarounds to not result in errors. Note, these workarounds have been
+% removed from \KOMAScript{}, because they are very fragile and use internal
+% macros of \pkg{titlesec}.
% \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>
+ KOMA-Script features\MessageBreak
+ like \string\setkomafont, \string\RedeclareSectionCommand,
+ \string\sectionlinesformat\MessageBreak
+ and several others to re-configure section\MessageBreak
+ headings}
%</!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
+% \item[\pkg{sectsty}:]
+% \changes{v3.27}{2019/07/24}{\pkg{sectsty} up to v2.0.2 is incompatible}
+% uses up to version 2.0.2 internal commands of
% \KOMAScript{}, that has been removed already 2001 in \KOMAScript{} 2.8e. So
% it was never compatible with \KOMAScript~3.
% \begin{macrocode}
@@ -987,14 +895,14 @@
}
%</!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.:
+% \item[\pkg{tocbibind}:]
+% \changes{v3.25}{2017/11/21}{Usage of \pkg{tocbibind} not recommended}
+% \pkg{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 \env{thebibliography},
+% \item hard redefinition of \env{theindex},
% \item hard redefinition of \cs{tableofcontents},
% \item hard redefinition of \cs{listoftables},
% \item hard redefinition of \cs{listoffigures},
@@ -1012,18 +920,18 @@
}
%</!letter>
% \end{macrocode}
-%
-% \changes{v3.26}{2018/07/18}{Usage of \textsf{tocloft} not recommended}%^^A
-% \textsf{tocloft} does redefine \cs{tableofcontents}, \cs{listoffigures},
+% \item[\pkg{tocloft}:]
+% \changes{v3.26}{2018/07/18}{Usage of \textsf{tocloft} not recommended}
+% redefines \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 options \opt{listof=totoc}, \opt{listof=numbered},
+% \item option \opt{listof=flat},
+% \item option \opt{listof=entryprefix},
% \item all options of \cs{DeclareTOCEntryStyle},
% \end{itemize}
% \begin{macrocode}
@@ -1052,23 +960,31 @@
`subsubsection', `paragraph' and `subparagraph'%
}
%</!letter>
-%</class>
+%</class&body>
% \end{macrocode}
-% \selectlanguage{ngerman}%^^A
-% \end{macro}%^^A \scr@package@not@recommended
+% \end{description}
+% \end{macro}^^A \scr@package@not@recommended
%
-% \subsection{Workarounds für fremde Pakete}
+% \section{Workarounds for Incompatible Packages}
% \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{description}
+% \item[ToDo:] The code should be moved to the same file as the code of
+% \autoref{sec:packagewarning} or maybe even to \pkg{scrhack}.
+% \end{description}
+%
+% For some packages can be made compatible, patching some internal macros of
+% these packages:
+% \begin{description}
+% \item[\pkg{minitoc}:]
+% \changes{v3.23}{2017/02/04}{\pkg{minitoc} is incompatible}
+% has some serious issues. The first issue is the hard re-definition of
+% \cs{@sect} without respecting the changes the \KOMAScript{} classes
+% already made. Here I'll try a ugly workaround for this, but is can
+% break. So not using the package with a \KOMAScript{} class would be the
+% better choice.
% \begin{macrocode}
-%<*class>
+%<*class&body>
%<*!letter>
\BeforePackage{minitoc}{%
\let\scr@mt@saved@sect\@sect
@@ -1084,7 +1000,7 @@
% \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.
+% from \pkg{minitoc} 61 and 62 and so I have to use it.
% \begin{macrocode}
\def\@tempa#1#2#3#4#5#6[#7]#8{
\expandafter
@@ -1163,155 +1079,33 @@
\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}{2019/10/17}{%
- \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/10/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>
+%</class&body>
% \end{macrocode}
+% \item[\pkg{titlesec}:]
+% \changes{v3.13a}{2014/10/09}{\pkg{titlesec} is hardly incompatible}
+% \changes{v3.27}{2019/07/23}{\pkg{titlesec} does not support
+% KOMA-Script classes}%
+% 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
+% \pkg{titlesec} author will support the \KOMAScript{} classes in some
+% future, maybe not. If you really need to \pkg{titlesec} with a
+% \KOMAScript{} class, see the ugly \texttt{standardsection} hack in
+% \pkg*{scrhack}.
+% \end{description}
%
%
-% \iffalse
-%</body>
-% \fi
-%
% \Finale
-%
+% \PrintChanges
+%
\endinput
-%
-% end of file `scrkernel-miscellaneous.dtx'
-%%% Local Variables:
-%%% mode: doctex
-%%% TeX-master: t
-%%% End:
+% Local Variables:
+% mode: doctex
+% ispell-local-dictionary: "en_US"
+% eval: (flyspell-mode 1)
+% TeX-master: t
+% TeX-engine: luatex-dev
+% eval: (setcar (or (cl-member "Index" (setq-local TeX-command-list (copy-alist TeX-command-list)) :key #'car :test #'string-equal) (setq-local TeX-command-list (cons nil TeX-command-list))) '("Index" "mkindex %s" TeX-run-index nil t :help "makeindex for dtx"))
+% End: