% \iffalse meta-comment
% ======================================================================
% scrkernel-paragraphs.dtx
% Copyright (c) Markus Kohm, 2002-2021
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
% This work may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, version 1.3c of the license.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2005/12/01 or later and of this work.
%
% This work has the LPPL maintenance status "author-maintained".
%
% The Current Maintainer and author of this work is Markus Kohm.
%
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrkernel-paragraphs.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-paragraphs.dtx 3596 2021-05-17 12:53:41Z kohm $
%
%<*body>
% \fi
%
%
% \subsection{Abatzformatierung}
%
% \changes{v2.8i}{2001/07/22}{\cs{baselinestretch} wird nicht
% umdefiniert}
% \begin{Length}{lineskip}
% \begin{Length}{normallineskip}
% Minimaler Zeilenabstand:
% \begin{macrocode}
\setlength{\lineskip}{\p@}
\setlength{\normallineskip}{\p@}
% \end{macrocode}
% \end{Length}
% \end{Length}
%
% \begin{Length}{columnsep}
% \begin{Length}{columnseprule}
% Spaltenabstand und Spaltentrennlinie (nicht bei Briefen):
% \begin{macrocode}
%<*!letter>
\setlength{\columnsep}{10\p@}
\setlength{\columnseprule}{\z@}
%!letter>
% \end{macrocode}
% \end{Length}
% \end{Length}
%
% \selectlanguage{english}
% \begin{macro}{\selectfont}
% \changes{v3.33}{2021/01/21}{from \LaTeX{} 2021/06/01 use hook instead of
% patch}
% Note, we use 2021/05/01 instead of the official \LaTeX{} release date,
% because there were relevant earlier \LaTeX{} developer releases with that
% date.
% \begin{macrocode}
\IfLTXAtLeastTF{2021/05/01}{%
\AddToHook{selectfont}{\par@update}%
\AfterPackage{everysel}{%
\IfPackageAtLeastTF{everysel}{2021/01/18}{}{%
\ClassError{\KOMAClassName}{%
incompatible `everysel' detected
}{%
You are using an old version of `everysel' in combination with a
LaTeX\MessageBreak
version >= 2021/06/01 and KOMA-Script >= 3.33. This combination
is\MessageBreak
not supported.\MessageBreak
You could switch back to an older LaTeX using package
`latexrelease'.\MessageBreak
But I recommend to update `everysel'%
}%
}%
}%
\AfterPackage{tracefnt}{%
\IfPackageAtLeastTF{tracefnt}{2020/12/22}{}{%
\ClassError{\KOMAClassName}{%
incompatible `tracefnt' detected
}{%
`tracefnt' is a LaTeX base package and therefore should be updated
together\MessageBreak
with LaTeX kernel. So this should never happen! Please check
your\MessageBreak
LaTeX installation%
}%
}%
}%
}{%
% \end{macrocode}
% \selectlanguage{ngerman}
% \changes{v2.95}{2004/11/05}{neue Änderung}
% Spätestens ab Version~3.0 soll die Möglichkeit bestehen, |\parskip|,
% |\parindent| und |\parfillskip| mit der Schriftgröße automatisch
% anzupassen. Dazu muss |\selectfont| entsprechend erweitert werden.
% \begin{macro}{\scr@selectfont}
% \changes{v2.95}{2006/04/14}{neue Erweiterung}
% \changes{v3.10}{2010/09/28}{\textsf{everysel}-Behandlung korrigiert}
% \changes{v3.10}{2010/09/28}{\textsf{tracefnt}-Behandlung hinzugefügt}
% \begin{macro}{\scr@new@selectfont}
% \changes{v2.95}{2006/04/14}{neue Erweiterung}
% \changes{v3.10}{2010/09/28}{\textsf{everysel}-Behandlung korrigiert}
% \changes{v3.10}{2010/09/28}{\textsf{tracefnt}-Behandlung hinzugefügt}
% \changes{v3.10b}{2011/03/13}{\textsf{everysel} kann jetzt auch während
% \cs{begin}\marg{document} geladen werden}
% Damit das auch bei Verwendung des \textsf{everysel}-Pakets funktioniert,
% wird hier zusätzliche Vorsorge getroffen.
% \begin{macrocode}
\newcommand*{\scr@selectfont}{}
\expandafter\let\expandafter\scr@selectfont\csname selectfont \endcsname
\BeforePackage{everysel}{%
\AtBeginDocument{%
\expandafter\ifx\csname selectfont \endcsname\scr@new@selectfont\else
\ClassWarningNoLine{\KOMAClassName}{%
discard change of \string\selectfont}%
\fi
\expandafter\let\csname selectfont \endcsname\scr@selectfont
}%
}%
\AfterPackage{everysel}{%
\scr@ifundefinedorrelax{@EverySelectfont@Init}{%
% \end{macrocode}
% Jetzt gibt es zwei Möglichkeiten: Entweder wurde ein \textsf{everysel}
% verwendet, bei dem alles anders funktioniert, oder es wurde während
% \cs{begin}\marg{document} geladen. In beiden Fällen versuchen wir einen
% direkten Patch:
% \begin{macrocode}
\expandafter\ifx\csname selectfont \endcsname\scr@new@selectfont
\ClassWarningNoLine{\KOMAClassName}{%
\string\selectfont\space already changed}%
\else
\expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}%
\expandafter\let\expandafter\scr@new@selectfont
\csname selectfont \endcsname
\fi
}{%
% \end{macrocode}
% In diesem Fall muss hingegen indirekt gepatcht werden.
% \begin{macrocode}
\g@addto@macro\@EverySelectfont@Init{%
\expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}%
\expandafter\let\expandafter\scr@new@selectfont
\csname selectfont \endcsname
}%
}%
}%
\AfterPackage{tracefnt}{%
\expandafter\let\expandafter\scr@selectfont\csname selectfont \endcsname
\expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}%
\expandafter\let\expandafter\scr@new@selectfont\csname selectfont \endcsname
}%
\expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}
\newcommand*{\scr@new@selectfont}{}
\expandafter\let\expandafter\scr@new@selectfont\csname selectfont \endcsname
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\par@updaterelative}
% \changes{v2.95}{2004/11/05}{neues internes Macro}%^^A
% Die eigentliche Änderung verbirgt sich in |\par@updaterelative|. Ggf. wird
% |\par@update| zu |\par@updaterelative|.
% \begin{macrocode}
\newcommand*{\par@updaterelative}{%
% \end{macrocode}
% Die neuen Werte werden nur gesetzt, wenn die bisherigen Werten den
% erwarteten Werten entsprechen. Sonst lassen wir lieber die Finger davon,
% weil wir dann davon ausgehen, dass der Anwender die so setzen wollte.
% \begin{macrocode}
\begingroup
\edef\@tempa{\the\parindent}\ifx\@tempa\f@parindent
\aftergroup\parindent@update
%<*trace>
\else
\ClassInfo{\KOMAClassName}{\string\parindent\space not changed}%
%
\fi
\edef\@tempa{\the\parskip}\ifx\@tempa\f@parskip
\aftergroup\parskip@update
%<*trace>
\else
\ClassInfo{\KOMAClassName}{\string\parskip\space not changed}%
%
\fi
\edef\@tempa{\the\parfillskip}\ifx\@tempa\f@parfillskip
\aftergroup\parfillskip@update
%<*trace>
\else
\ClassInfo{\KOMAClassName}{\string\parfillskip\space not changed}%
%
\fi
\endgroup
}
% \end{macrocode}
% \begin{macro}{\parindent@update}
% \changes{v2.95}{2004/11/05}{neues internes Macro}%^^A
% \begin{macro}{\parskip@update}
% \changes{v2.95}{2004/11/05}{neues internes Macro}%^^A
% \begin{macro}{\parfillskip@update}
% \changes{v2.95}{2004/11/05}{neues internes Macro}%^^A
% Ein paar Hilfsmakros.
% \begin{macrocode}
\newcommand*{\parindent@update}{%
\scr@defaultunits\parindent\scr@parindent
\begingroup
\let\@tempb\endgroup
\edef\@tempa{\the\parindent}\ifx\@tempa\f@parindent\else
\def\@tempb{\endgroup\edef\f@parindent{\the\parindent}}%
% \ClassInfo{\KOMAClassName}{\string\parindent=\the\parindent}%
\fi
\@tempb
}
\newcommand*{\parskip@update}{%
\scr@defaultunits\parskip\scr@parskip
\begingroup
\let\@tempb\endgroup
\edef\@tempa{\the\parskip}\ifx\@tempa\f@parskip\else
\def\@tempb{\endgroup\edef\f@parskip{\the\parskip}}%
% \ClassInfo{\KOMAClassName}{\string\parskip=\the\parskip}%
\fi
\@tempb
}
\newcommand*{\parfillskip@update}{%
\scr@defaultunits\parfillskip\scr@parfillskip
\begingroup
\let\@tempb\endgroup
\edef\@tempa{\the\parfillskip}\ifx\@tempa\f@parfillskip\else
\def\@tempb{\endgroup\edef\f@parfillskip{\the\parfillskip}}%
% \ClassInfo{\KOMAClassName}{\string\parfillskip=\the\parfillskip}%
\fi
\@tempb
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\scr@defaultunits}
% \changes{v2.95}{2004/11/05}{neues internes Macro}%^^A
% \changes{v3.19}{2015/08/22}{\cs{setlength} wegen \textsf{tikz}
% eliminiert}%^^A
% \begin{macro}{\scr@@defaultunits}
% \changes{v2.95}{2004/11/05}{neues internes Macro}%^^A
% \begin{macro}{\scr@@@defaultunits}
% \changes{v2.95}{2004/11/05}{neues internes Macro}%^^A
% \changes{v3.19}{2015/08/22}{\cs{setlength} und \cs{addtolength} wegen
% \textsf{tikz} eliminiert}%^^A
% Damit |\par@updaterelative| überhaupt funktionieren kann, wird
% |\scr@defaultunits| benötigt. Dieses Makro arbeitet prinzipiell wie
% |\@defaultunits| bekommt aber Dimension bzw. Skip als erstes und den Wert
% als zweites Argument. Als Besonderheit dürften im Wert auch andere
% Dimensions bzw. Skips vor und nach \texttt{plus} und \texttt{minus}
% verwendet werden. Es sind also auch Angaben der Art "`\texttt{12 plus 1
% minus 2}"' sowie
% "`\texttt{\string\baselineskip\string\@plus.1\string\baselineskip}"'
% gültig.
% \begin{macrocode}
\newcommand*{\scr@defaultunits}[2]{%
\begingroup
\edef\@tempa{#2}%
\expandafter\scr@@defaultunits\expandafter#1\@tempa plusplus\@nnil
\edef\@tempa{\noexpand\endgroup\noexpand#1\the\glueexpr #1\relax}%
\@tempa
}
\newcommand*{\scr@@defaultunits}{}
\def\scr@@defaultunits#1#2plus#3plus#4\@nnil{%
\ifx\relax#3\relax
\scr@@@defaultunits#1{}#2minusminus\@nnil
\else
\scr@@@defaultunits#1{#2}#3minusminus\@nnil
\fi
}
\newcommand*{\scr@@@defaultunits}{}
\def\scr@@@defaultunits#1#2#3minus#4minus#5\@nnil{%
\ifx\relax#2\relax
\@defaultunits\@tempskipa#3pt\relax\@nnil
#1\@tempskipa
\else
\@defaultunits\@tempskipa\z@\@plus#3pt\relax\@nnil
#1\@tempskipa
\@defaultunits\@tempskipa#2pt\relax\@nnil
\advance#1\@tempskipa
\fi
\ifx\relax#4\relax\else
\@defaultunits\@tempskipa\z@\@minus #4pt\relax\@nnil
\advance#1\@tempskipa
\fi
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% Absatzabstand und Absatzeinzug:
% \begin{macro}{\@list@extra}
% \changes{v2.8q}{2001/11/06}{neu (intern)}%^^A
% \changes{v2.95c}{2006/08/03}{\cs{parsep} fixed}
% \begin{macro}{\add@extra@listi}
% \changes{v2.9h}{2002/09/03}{neu (intern)}%^^A
% Ab Version 2.8i wird hier optionsabhängig gearbeitet. Dabei müssen
% auch die Befehle bei der Umschaltung der Schriftgröße für \cs{small}
% und \cs{footnotesize} geändert werden.
% \begin{macrocode}
\newcommand*{\@list@extra}{%
\ifdim\parskip>\z@\topsep\z@\parsep\parskip\itemsep\z@\fi
}
\newcommand*{\add@extra@listi}[1]{%
\expandafter\let\csname #1@listi\endcsname=\@listi
\def\@listi{\csname #1@listi\endcsname\@list@extra}%
}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \selectlanguage{english}
% \begin{macro}{\deferred@thm@head}%^^A
% \changes{v3.27}{2019/02/10}{new patch of \textsf{amsthm}}%^^A
% Unfortunatly \Package{amsthm} has a problem if a class handles \cs{topsep}
% this way, because it is only prepared for the case, that \cs{parskip} and
% \cs{parsep} are changed manually without influence to \cs{topsep}. So the
% initial distance is missing. To avoid this problem, we need to patch the
% package's internal command \cs{deferred@thm@head}. This is not nice, but
% unfortunaltly needed.
% \begin{macrocode}
\AfterPackage{amsthm}{%
\RequirePackage{xpatch}%
\xpatchcmd{\deferred@thm@head}{\addvspace{-\parskip}}{}{%
\ClassInfoNoLine{\KOMAClassName}{%
amsthm's \string\deferred@thm@head\space patched}%
}{%
\ClassWarningNoLine{\KOMAClassName}{%
cannot patch amsthm's \string\deferred@thm@head.\MessageBreak
This could result in wrong spacing before theorem\MessageBreak
environments defined by package `amsthm'%
}%
}%
}
% \end{macrocode}
% \end{macro}
% \selectlanguage{ngerman}
% \iffalse
%
%
%<*class|clo>
%<*body|10pt|11pt|12pt>
% \fi
% \changes{v2.98c}{2008/03/26}{Umstellung für die pt-Dateien}%^^A
% \changes{v3.17}{2015/03/25}{Aktualisierung der Absatzeinstellungen}%^^A
% \begin{macro}{\@listi}
% \changes{v2.98c}{2008/03/27}{\cs{g@addto@macro} durch \cs{l@addto@macro}
% ersetzt}
% \changes{v3.01}{2008/11/13}{\cs{@listi} wird auf jeden Fall ausgeführt}
% \begin{macro}{\@listI}
% \begin{macro}{\@listii}
% \changes{v2.98c}{2008/03/27}{\cs{g@addto@macro} durch \cs{l@addto@macro}
% ersetzt}
% \begin{macro}{\@listiii}
% \changes{v2.98c}{2008/03/27}{\cs{g@addto@macro} durch \cs{l@addto@macro}
% ersetzt}
% \begin{macro}{\footnotesize}
% \changes{v2.9h}{2002/09/03}{etwas robuster}%^^A
% \changes{v2.98c}{2008/03/27}{\cs{g@addto@macro} durch \cs{l@addto@macro}
% ersetzt}
% \begin{macro}{\small}
% \changes{v2.9h}{2002/09/03}{etwas robuster}%^^A
% \changes{v2.98c}{2008/03/27}{\cs{g@addto@macro} durch \cs{l@addto@macro}
% ersetzt}
% \begin{macrocode}
%<10pt|11pt|12pt>\@ifundefined{@list@extra}{}{%
%<10pt|11pt|12pt> \expandafter\ifnum\scr@v@is@ge{3.17}\par@updaterelative\fi
\l@addto@macro{\@listi}{\@list@extra}%
\let\@listI=\@listi
\l@addto@macro{\@listii}{\@list@extra}%
\l@addto@macro{\@listiii}{\@list@extra}%
\l@addto@macro{\footnotesize}{\protect\add@extra@listi{ftns}}%
\l@addto@macro{\small}{\protect\add@extra@listi{sml}}%
%<10pt|11pt|12pt>}
%<10pt|11pt|12pt>\@listi
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \iffalse
%