From 52752914d310303b349c70869c5ae25c6d3436de Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 7 May 2022 20:39:25 +0000 Subject: koma-script (7may22) git-svn-id: svn://tug.org/texlive/trunk@63250 c570f23f-e606-0410-a88d-b1316a301751 --- .../latex/koma-script/scrkernel-miscellaneous.dtx | 1206 ++++++++------------ 1 file changed, 500 insertions(+), 706 deletions(-) (limited to 'Master/texmf-dist/source/latex/koma-script/scrkernel-miscellaneous.dtx') diff --git a/Master/texmf-dist/source/latex/koma-script/scrkernel-miscellaneous.dtx b/Master/texmf-dist/source/latex/koma-script/scrkernel-miscellaneous.dtx index 5c5f5ee4a16..aeac05df999 100644 --- a/Master/texmf-dist/source/latex/koma-script/scrkernel-miscellaneous.dtx +++ b/Master/texmf-dist/source/latex/koma-script/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 $ %%%% (run: 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 %[scrextend] {final}{draft=false} -% % \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 } % -% +% % \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}} -% +% % \end{macrocode} % \end{option} -% \end{option} -% -% \iffalse -% -% \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 +% + \thechapter.% +% \fi + \@arabic\c@equation +} +% +% \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 } -% +% % \end{macrocode} -% \end{macro}%^^A \@gr@gsffamily -% \end{option}%^^A egregdoesnotlikesansseriftitles -% -% \iffalse -% -%<*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 @@ } % \KOMAProcessOptions\relax -% \end{macrocode} -% -% -% \iffalse % -%<*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 % @@ -455,59 +396,38 @@ \@restonecolfalse }{} % +% % \end{macrocode} % \end{macro} -% \end{macro} -% \end{macro} -% -% \iffalse -% -% \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} +% % \end{macrocode} -% \end{macro} -% \end{macro} -% \end{KOMAfont} -% \end{KOMAfont} -% \end{KOMAfont} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \iffalse -% -% \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@} -% -% \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> -%\@addtoreset{equation}{chapter} -\renewcommand*\theequation{% -%<*book> - \expandafter\ifnum\scr@v@is@gt{2.97d}% - \if@mainmatter\thechapter.\fi - \else -% -% \thechapter.% -% \fi - \@arabic\c@equation -} -% +% % \end{macrocode} -% \end{macro} -% -% \iffalse -% -% \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 } -% +% % \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}% +} +% +% \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}}}}% } -% +% % \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} -% +% % \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}{} +% % \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 @@ } % % \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} -% + KOMA-Script features\MessageBreak + like \string\setkomafont, \string\RedeclareSectionCommand, + \string\sectionlinesformat\MessageBreak + and several others to re-configure section\MessageBreak + headings} % % \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 @@ } % % \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 @@ } % % \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'% } % -% +% % \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 } % -% -% \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 -} -% -\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 - }% -% - \@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, -% chapters, sections -%
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'% - }% -} -% -% +% % \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 -% -% \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: -- cgit v1.2.3