summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-09-28 03:04:08 +0000
committerNorbert Preining <norbert@preining.info>2020-09-28 03:04:08 +0000
commit34310603e5253ef5742542e3f0123b341a70ee20 (patch)
tree51076d298e97a9c86619db3ada2af17e81c074d1 /macros
parentac0ae0fcbd5ee121e6b9134cced71d961e30ed68 (diff)
CTAN sync 202009280304
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/eso-pic/README2
-rw-r--r--macros/latex/contrib/eso-pic/eso-ex1.tex24
-rw-r--r--macros/latex/contrib/eso-pic/eso-pic.dtx94
-rw-r--r--macros/latex/contrib/eso-pic/eso-pic.pdfbin250322 -> 250230 bytes
-rw-r--r--macros/latex/contrib/filehook/README2
-rw-r--r--macros/latex/contrib/filehook/filehook.dtx688
-rw-r--r--macros/latex/contrib/filehook/filehook.ins2
-rw-r--r--macros/latex/contrib/filehook/filehook.pdfbin266229 -> 301526 bytes
-rw-r--r--macros/latex/contrib/koma-script/README80
-rw-r--r--macros/latex/contrib/koma-script/doc/manifest.txt7
-rw-r--r--macros/latex/contrib/koma-script/doc/scrguide.html738
-rw-r--r--macros/latex/contrib/koma-script/doc/scrguide.pdfbin3259445 -> 3262021 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/scrguien.html31
-rw-r--r--macros/latex/contrib/koma-script/doc/scrguien.pdfbin3178504 -> 3180171 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/scrlayer-fancyhdr.pdfbin195988 -> 195987 bytes
-rw-r--r--macros/latex/contrib/koma-script/source-doc/english/scrbase.tex8
-rw-r--r--macros/latex/contrib/koma-script/source-doc/english/scrlfile.tex274
-rw-r--r--macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex8
-rw-r--r--macros/latex/contrib/koma-script/source-doc/ngerman/scrlfile.tex327
-rw-r--r--macros/latex/contrib/koma-script/source/Makefile5
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-basics.dtx38
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-compatibility.dtx10
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx9
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-sections.dtx16
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-version.dtx4
-rw-r--r--macros/latex/contrib/koma-script/source/scrlayer-notecolumn.dtx1723
-rw-r--r--macros/latex/contrib/koma-script/source/scrlayer-scrpage.dtx2365
-rw-r--r--macros/latex/contrib/koma-script/source/scrlayer.dtx70
-rw-r--r--macros/latex/contrib/koma-script/source/scrlfile-hook.dtx634
-rw-r--r--macros/latex/contrib/koma-script/source/scrlfile-patcholdlatex.dtx1269
-rw-r--r--macros/latex/contrib/koma-script/source/scrlfile.dtx1326
-rw-r--r--macros/latex/contrib/koma-script/source/scrlogo.dtx58
-rw-r--r--macros/latex/contrib/koma-script/source/scrmain.ins4
-rw-r--r--macros/latex/contrib/koma-script/source/tocbasic.dtx43
-rw-r--r--macros/latex/contrib/semantex/semantex.pdfbin361207 -> 356833 bytes
-rw-r--r--macros/latex/contrib/semantex/semantex.sty578
-rw-r--r--macros/latex/contrib/semantex/semantex.tex257
-rw-r--r--macros/latex/contrib/semantex/stripsemantex.lua71
-rw-r--r--macros/latex/contrib/semantex/stripsemantex.sty87
-rw-r--r--macros/latex/contrib/semtex/semtex.pdfbin76606 -> 61300 bytes
-rw-r--r--macros/latex/contrib/semtex/semtex.sty53
-rw-r--r--macros/latex/contrib/semtex/semtex.tex61
42 files changed, 6027 insertions, 4939 deletions
diff --git a/macros/latex/contrib/eso-pic/README b/macros/latex/contrib/eso-pic/README
index 57772f8909..2633b5dc54 100644
--- a/macros/latex/contrib/eso-pic/README
+++ b/macros/latex/contrib/eso-pic/README
@@ -7,5 +7,5 @@ The pack­age adds one or more user com­mands to LaTeX’s shipout rou­tine, w
may be used to place the out­put at fixed po­si­tions. The grid op­tion may be
used to find the cor­rect places.
-Rolf Niepraschk (Rolf.Niepraschk@gmx.de)
+Rolf Niepraschk
diff --git a/macros/latex/contrib/eso-pic/eso-ex1.tex b/macros/latex/contrib/eso-pic/eso-ex1.tex
index 6241e37d3f..c9a43c24f9 100644
--- a/macros/latex/contrib/eso-pic/eso-ex1.tex
+++ b/macros/latex/contrib/eso-pic/eso-ex1.tex
@@ -1,23 +1,23 @@
% file `eso-ex1.tex'; a framed background example
-% Rolf Niepraschk, 2015-07-14, Rolf.Niepraschk@gmx.de
+% Rolf Niepraschk, 2020-09-27, Rolf.Niepraschk@gmx.de
\documentclass[a4paper]{article}
-\usepackage{eso-pic,calc}
+\usepackage{eso-pic}
\listfiles
-\makeatletter
+\newdimen\myTempdima
+\newdimen\myTempdimb
+\newdimen\myTempdimc
+
\AddToShipoutPicture{%
- \begingroup
- \setlength{\@tempdima}{15mm}%
- \setlength{\@tempdimb}{\paperwidth-2\@tempdima}%
- \setlength{\@tempdimc}{\paperheight-2\@tempdima}%
- \thicklines%
- \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdima}){%
- \framebox(\LenToUnit{\@tempdimb},\LenToUnit{\@tempdimc}){}}%
- \endgroup
+ \setlength{\myTempdima}{15mm}%
+ \setlength{\myTempdimb}{\dimexpr\paperwidth-2\myTempdima}%
+ \setlength{\myTempdimc}{\dimexpr\paperheight-2\myTempdima}%
+ \thicklines%
+ \put(\LenToUnit{\myTempdima},\LenToUnit{\myTempdima}){%
+ \framebox(\LenToUnit{\myTempdimb},\LenToUnit{\myTempdimc}){}}%
}
-\makeatother
\begin{document}
diff --git a/macros/latex/contrib/eso-pic/eso-pic.dtx b/macros/latex/contrib/eso-pic/eso-pic.dtx
index 5c7ec360c5..74060e560e 100644
--- a/macros/latex/contrib/eso-pic/eso-pic.dtx
+++ b/macros/latex/contrib/eso-pic/eso-pic.dtx
@@ -25,7 +25,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{eso-pic}
-%<package> [2018/04/12 v2.0h eso-pic (RN)]
+%<package> [2020/09/27 v2.0i eso-pic (RN)]
%
%<*driver>
\documentclass[a4paper]{ltxdoc}
@@ -37,7 +37,7 @@
%</driver>
% \fi
%
-% \CheckSum{778}
+% \CheckSum{782}
%
% \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
@@ -220,6 +220,16 @@
\providecommand*\LenToUnit[1]{\strip@pt\dimexpr#1*\p@/\unitlength}
% \end{macrocode}
% \end{macro}
+% \changes{v2.0i}{2020/09/27}{no more system dimension registers}
+% \begin{macro}{\ESO@tempdima}
+% \begin{macro}{\ESO@tempdimb}
+% Some auxiliary dimension registers
+% \begin{macrocode}
+\newdimen\ESO@tempdima
+\newdimen\ESO@tempdimb
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
% \begin{macro}{\ESO@isMEMOIR}
% Support for the \clsname{memoir} class.
% \begin{macrocode}
@@ -254,17 +264,17 @@
\ESO@isMEMOIR{%
\renewcommand\AtStockLowerLeft[1]{%
\begingroup
- \@tempdima=-\stockwidth
- \advance\@tempdima\trimedge
- \advance\@tempdima\paperwidth
+ \ESO@tempdima=-\stockwidth
+ \advance\ESO@tempdima\trimedge
+ \advance\ESO@tempdima\paperwidth
\if@twoside\ifodd\c@page\else
- \@tempdima=-\trimedge
+ \ESO@tempdima=-\trimedge
\fi\fi
- \@tempdimb=-\stockheight
- \advance\@tempdimb\paperheight
- \advance\@tempdimb\trimtop
+ \ESO@tempdimb=-\stockheight
+ \advance\ESO@tempdimb\paperheight
+ \advance\ESO@tempdimb\trimtop
\AtPageLowerLeft{%
- \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){#1}%
+ \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){#1}%
}%
\endgroup
}
@@ -311,37 +321,37 @@
\newcommand\AtTextUpperLeft[1]{%
\begingroup
\ifodd\c@page
- \@tempdima=\spinemargin
+ \ESO@tempdima=\spinemargin
\else
- \@tempdima=\paperwidth
- \advance\@tempdima-\textwidth
- \advance\@tempdima-\spinemargin
+ \ESO@tempdima=\paperwidth
+ \advance\ESO@tempdima-\textwidth
+ \advance\ESO@tempdima-\spinemargin
\fi
- \@tempdimb=-\uppermargin
+ \ESO@tempdimb=-\uppermargin
\AtPageUpperLeft{%
- \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){#1}%
+ \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){#1}%
}%
\endgroup
}
}{%
\newcommand\AtTextUpperLeft[1]{%
\begingroup
- \@tempdima=1in\relax
+ \ESO@tempdima=1in\relax
\if@twoside
\ifodd\c@page
- \advance\@tempdima\oddsidemargin
+ \advance\ESO@tempdima\oddsidemargin
\else
- \advance\@tempdima\evensidemargin
+ \advance\ESO@tempdima\evensidemargin
\fi
\else
- \advance\@tempdima\oddsidemargin
+ \advance\ESO@tempdima\oddsidemargin
\fi
- \@tempdimb=-1in\relax
- \advance\@tempdimb-\topmargin
- \advance\@tempdimb-\headheight
- \advance\@tempdimb-\headsep
+ \ESO@tempdimb=-1in\relax
+ \advance\ESO@tempdimb-\topmargin
+ \advance\ESO@tempdimb-\headheight
+ \advance\ESO@tempdimb-\headsep
\AtPageUpperLeft{%
- \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){#1}%
+ \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){#1}%
}%
\endgroup
}
@@ -418,25 +428,25 @@
% \begin{macrocode}
\ESO@isMEMOIR{%
\AtBeginShipout{%
- \@tempdima=-\trimedge
- \advance\@tempdima-\paperwidth
- \advance\@tempdima\stockwidth
+ \ESO@tempdima=-\trimedge
+ \advance\ESO@tempdima-\paperwidth
+ \advance\ESO@tempdima\stockwidth
\if@twoside\ifodd\c@page\else
- \advance\@tempdima2\trimedge
- \advance\@tempdima\paperwidth
- \advance\@tempdima-\stockwidth
+ \advance\ESO@tempdima2\trimedge
+ \advance\ESO@tempdima\paperwidth
+ \advance\ESO@tempdima-\stockwidth
\fi\fi
- \@tempdimb=\ESO@yoffsetI
- \advance\@tempdimb-\trimtop
+ \ESO@tempdimb=\ESO@yoffsetI
+ \advance\ESO@tempdimb-\trimtop
\nointerlineskip
\AtBeginShipoutUpperLeft{%
- \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){%
+ \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){%
\ESO@HookIIIBG\ESO@HookIBG\ESO@HookIIBG
\global\let\ESO@HookIIBG\@empty
}%
}%
\AtBeginShipoutUpperLeftForeground{%
- \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){%
+ \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){%
\ESO@HookIFG\ESO@HookIIFG\ESO@HookIIIFG
\global\let\ESO@HookIIFG\@empty
}%
@@ -566,9 +576,9 @@
% Result is in \cmd{\@tempcnta}.
% \begin{macrocode}
\newcommand\ESO@div[2]{%
- \@tempdima=#1\relax\@tempdimb=\ESO@gridunit\relax
- \@tempdimb=#2\@tempdimb\divide\@tempdima by \@tempdimb
- \@tempcnta\@tempdima\advance\@tempcnta\@ne}
+ \ESO@tempdima=#1\relax\ESO@tempdimb=\ESO@gridunit\relax
+ \ESO@tempdimb=#2\ESO@tempdimb\divide\ESO@tempdima by \ESO@tempdimb
+ \@tempcnta\ESO@tempdima\advance\@tempcnta\@ne}
% \end{macrocode}
% \end{macro}
% \changes{v1.1c}{2005/12/24}{Remove the disadvantageous check of
@@ -668,8 +678,8 @@
\@tempcntb=\@tempcnta\advance\@tempcntb-\@multicnt
\ifnum\@tempcntb>1\relax
\multiply\@tempcntb by \ESO@gridDelta\relax
- \@tempdima=\@tempcntb sp\@tempdima=\ESO@labelfactor\@tempdima
- \@tempcntb=\@tempdima%
+ \ESO@tempdima=\@tempcntb sp\ESO@tempdima=\ESO@labelfactor\ESO@tempdima
+ \@tempcntb=\ESO@tempdima%
\makebox(0,0)[c]{\ESO@colorbox{white}{\the\@tempcntb}}%
\fi}%
% \end{macrocode}
@@ -681,8 +691,8 @@
\@tempcntb=\@tempcnta\advance\@tempcntb-\@multicnt%
\ifnum\@tempcntb>\@tempa\relax
\multiply\@tempcntb by \ESO@gridDelta\relax%
- \@tempdima=\@tempcntb sp\@tempdima=\ESO@labelfactor\@tempdima
- \@tempcntb=\@tempdima
+ \ESO@tempdima=\@tempcntb sp\ESO@tempdima=\ESO@labelfactor\ESO@tempdima
+ \@tempcntb=\ESO@tempdima
\makebox(0,0)[c]{\ESO@colorbox{white}{\the\@tempcntb}}%
\fi
}%
diff --git a/macros/latex/contrib/eso-pic/eso-pic.pdf b/macros/latex/contrib/eso-pic/eso-pic.pdf
index 53c9ba100b..c1b4fe471b 100644
--- a/macros/latex/contrib/eso-pic/eso-pic.pdf
+++ b/macros/latex/contrib/eso-pic/eso-pic.pdf
Binary files differ
diff --git a/macros/latex/contrib/filehook/README b/macros/latex/contrib/filehook/README
index 25cc0e39b1..aeac2f848e 100644
--- a/macros/latex/contrib/filehook/README
+++ b/macros/latex/contrib/filehook/README
@@ -1,7 +1,7 @@
LaTeX package 'filehook'
~~~~~~~~~~~~~~~~~~~~~~~~
Copyright (c) 2010-2020 by Martin Scharrer <martin@scharrer-online.de>
-Code repository: https://bitbucket.org/martin_scharrer/filehook
+Code repository: ssh://hth@helixteamhub.cloud/scharrer/projects/filehook/
Provides several file hooks for files read by \input, \include and \InputIfFileExists.
diff --git a/macros/latex/contrib/filehook/filehook.dtx b/macros/latex/contrib/filehook/filehook.dtx
index 0cd0f63354..07cb49537f 100644
--- a/macros/latex/contrib/filehook/filehook.dtx
+++ b/macros/latex/contrib/filehook/filehook.dtx
@@ -26,15 +26,17 @@
%<*driver>
\ProvidesFile{filehook.dtx}[%
%<=*DATE>
- 2020/02/03
+ 2020/09/27
%<=/DATE>
%<=*VERSION>
- v0.7
+ v0.8
%<=/VERSION>
Hooks for input files]
\documentclass{ydoc}
\GetFileInfo{filehook.dtx}
\usepackage{filehook}[\filedate]
+\usepackage[utf8]{inputenc}
+\usepackage[TS1,T1]{fontenc}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
@@ -55,7 +57,7 @@
%</driver>
% \fi
%
-% \CheckSum{1011}
+% \CheckSum{1478}
%
% \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
@@ -526,6 +528,37 @@
%
% \subsection{Options}
% \begin{macrocode}
+\DeclareOption{force}{\PassOptionsToPackage{forse}{filehook-2019}}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% \subsection{Load actual package}
+% \begin{macrocode}
+\@ifl@t@r\fmtversion{2020/10/01}{\RequirePackage{filehook-2020}}{\RequirePackage{filehook-2019}}
+% \end{macrocode}
+%
+% \iffalse
+%</filehook.sty>
+% \fi
+%
+% \iffalse
+%<*filehook-2019.sty>
+% \fi
+% \begin{macrocode}
+%<!COPYRIGHT>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{filehook-2019}[%
+%<!DATE>
+%<!VERSION>
+%<*DRIVER>
+ 2099/01/01 develop
+%</DRIVER>
+ Hooks for input files]
+% \end{macrocode}
+%
+%
+% \subsection{Options}
+% \begin{macrocode}
\newif\iffilehook@force
\DeclareOption{force}{\filehook@forcetrue}
\ProcessOptions\relax
@@ -1311,7 +1344,654 @@
% \end{macrocode}
%
% \iffalse
-%</filehook.sty>
+%</filehook-2019.sty>
+% \fi
+%
+% \iffalse
+%<*filehook-2020.sty>
+% \fi
+% \begin{macrocode}
+%<!COPYRIGHT>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{filehook-2020}[%
+%<!DATE>
+%<!VERSION>
+%<*DRIVER>
+ 2099/01/01 develop
+%</DRIVER>
+ Hooks for input files]
+% \end{macrocode}
+%
+%
+% \subsection{Options}
+% \begin{macrocode}
+\DeclareOption{force}{}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% \subsection{General stuff}
+%
+% \subsection{Initialisation of Hooks}
+% The general hooks are initialised to call the file specific hooks.
+%
+% \begin{macro}{\filehook@csuse}
+% \begin{macrocode}
+\begingroup
+\gdef\filehook@csuse#1{\ifcsname #1\endcsname\csname #1\expandafter\endcsname\fi}
+\expandafter\ifx\csname csuse\endcsname\relax
+ \expandafter\ifx\csname ifcsname\endcsname\relax
+ \gdef\filehook@csuse#1{\expandafter\ifx\csname #1\endcsname\relax\else\csname #1\expandafter\endcsname\fi}
+ \fi
+\else
+ \global\let\filehook@csuse\csuse
+\fi
+\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@include@atbegin}
+% \begin{macrocode}
+\def\filehook@include@atbegin#1{%
+ \filehook@csuse{\filehook@include@atbegin@#1}%
+ \filehook@include@@atbegin
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@include@@atbegin}
+% \begin{macrocode}
+\def\filehook@include@@atbegin{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@include@atend}
+% \begin{macrocode}
+\def\filehook@include@atend#1{%
+ \filehook@include@@atend
+ \filehook@csuse{\filehook@include@atend@#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@include@@atend}
+% \begin{macrocode}
+\def\filehook@include@@atend{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@include@after}
+% \begin{macrocode}
+\def\filehook@include@after#1{%
+ \filehook@include@@after
+ \filehook@csuse{\filehook@include@after@#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@include@@after}
+% \begin{macrocode}
+\def\filehook@include@@after{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@input@atbegin}
+% \begin{macrocode}
+\def\filehook@input@atbegin#1{%
+ \filehook@csuse{\filehook@input@atbegin@\filehook@ensureext{#1}}%
+ \filehook@input@@atbegin
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@input@@atbegin}
+% \begin{macrocode}
+\def\filehook@input@@atbegin{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@input@atend}
+% \begin{macrocode}
+\def\filehook@input@atend#1{%
+ \filehook@input@@atend
+ \filehook@csuse{\filehook@input@atend@\filehook@ensureext{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@input@@atend}
+% \begin{macrocode}
+\def\filehook@input@@atend{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@atbegin}
+% \begin{macrocode}
+\def\filehook@atbegin#1{%
+ \filehook@csuse{\filehook@atbegin@\filehook@ensureext{#1}}%
+ \filehook@@atbegin
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@@atbegin}
+% \begin{macrocode}
+\def\filehook@@atbegin{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@atend}
+% \begin{macrocode}
+\def\filehook@atend#1{%
+ \filehook@@atend
+ \filehook@csuse{\filehook@atend@\filehook@ensureext{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@@atend}
+% \begin{macrocode}
+\def\filehook@@atend{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@every@atbegin}
+% \begin{macrocode}
+\def\filehook@every@atbegin#1{%
+ \filehook@every@@atbegin
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@every@@atbegin}
+% \begin{macrocode}
+\def\filehook@every@@atbegin{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@every@atend}
+% \begin{macrocode}
+\def\filehook@every@atend#1{%
+ \filehook@every@@atend
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@every@@atend}
+% \begin{macrocode}
+\def\filehook@every@@atend{}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsection{Hook Modification Macros}
+% The following macros are used to modify the hooks, i.e.\ to prefix or append code to them.
+%
+%
+% \subsubsection*{Internal Macros}
+%
+% The macro prefixes for the file specific hooks are stored in macros to reduce the number of
+% tokens in the following macro definitions.
+% \begin{macrocode}
+\def\filehook@include@atbegin@{filehook@include@atbegin@}
+\def\filehook@include@atend@{filehook@include@atend@}
+\def\filehook@include@after@{filehook@include@after@}
+\def\filehook@input@atbegin@{filehook@input@atbegin@}
+\def\filehook@input@atend@{filehook@input@atend@}
+\def\filehook@input@after@{filehook@input@after@}
+\def\filehook@atbegin@{filehook@atbegin@}
+\def\filehook@atend@{filehook@atend@}
+\def\filehook@after@{filehook@after@}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\filehook@append}
+% Uses default \LaTeX{} macro.
+% \begin{macrocode}
+\def\filehook@append{\g@addto@macro}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@appendwarg}
+% Appends code with one macro argument. The |\@tempa| intermediate step is required because of the
+% included |##1| which wouldn't correctly expand otherwise.
+% \begin{macrocode}
+\long\def\filehook@appendwarg#1#2{%
+ \begingroup
+ \toks@\expandafter{#1{##1}#2}%
+ \edef\@tempa{\the\toks@}%
+ \expandafter\gdef\expandafter#1\expandafter##\expandafter1\expandafter{\@tempa}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@prefix}
+% Prefixes code to a hook.
+% \begin{macrocode}
+\long\def\filehook@prefix#1#2{%
+ \begingroup
+ \@temptokena{#2}%
+ \toks@\expandafter{#1}%
+ \xdef#1{\the\@temptokena\the\toks@}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@prefixwarg}
+% Prefixes code with an argument to a hook.
+% \begin{macrocode}
+\long\def\filehook@prefixwarg#1#2{%
+ \begingroup
+ \@temptokena{#2}%
+ \toks@\expandafter{#1{##1}}%
+ \edef\@tempa{\the\@temptokena\the\toks@}%
+ \expandafter\gdef\expandafter#1\expandafter##\expandafter1\expandafter{\@tempa}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@addtohook}[3]{Macro which should be used to add the material to the hook}{Macro name prefix}{End of macro name (file name)}
+% The macro first expands the file name (|#3|) to flatten all included macros. An extension is added if missing, as well as the prefix.
+% All modifications of |\@tempa| are made inside a group to keep them local.
+% \begin{macrocode}
+\def\filehook@addtohook#1#2#3{%
+ \begingroup
+ \edef\@tempa{#3}%
+ \edef\@tempa{#2\filehook@ensureext{\@tempa}}%
+ \@ifundefined{\@tempa}{\global\@namedef{\@tempa}{}}{}%
+ \expandafter\endgroup
+ \expandafter#1\csname\@tempa\endcsname
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection*{User Level Macros}
+% The user level macros simple use the above defined macros on the appropriate hook.
+%
+% \begin{macro}{\AtBeginOfIncludes}
+% \begin{macrocode}
+\newcommand*\AtBeginOfIncludes{%
+ \filehook@append\filehook@include@@atbegin
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtEndOfIncludes}
+% \begin{macrocode}
+\newcommand*\AtEndOfIncludes{%
+ \filehook@prefix\filehook@include@@atend
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AfterIncludes}
+% \begin{macrocode}
+\newcommand*\AfterIncludes{%
+ \filehook@prefix\filehook@include@@after
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtBeginOfIncludeFile}
+% \begin{macrocode}
+\newcommand*\AtBeginOfIncludeFile[1]{%
+ \filehook@addtohook\filehook@append\filehook@include@atbegin@{\filehook@ensuretex{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtEndOfIncludeFile}
+% \begin{macrocode}
+\newcommand*\AtEndOfIncludeFile[1]{%
+ \filehook@addtohook\filehook@prefix\filehook@include@atend@{\filehook@ensuretex{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AfterIncludeFile}
+% \begin{macrocode}
+\newcommand*\AfterIncludeFile[1]{%
+ \filehook@addtohook\filehook@prefix\filehook@include@after@{\filehook@ensuretex{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtBeginOfInputs}
+% \begin{macrocode}
+\newcommand*\AtBeginOfInputs{%
+ \filehook@append\filehook@input@@atbegin
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtEndOfInputs}
+% \begin{macrocode}
+\newcommand*\AtEndOfInputs{%
+ \filehook@prefix\filehook@input@@atend
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtBeginOfInputFile}
+% \begin{macrocode}
+\newcommand*\AtBeginOfInputFile{%
+ \filehook@addtohook\filehook@append\filehook@input@atbegin@
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtEndOfInputFile}
+% \begin{macrocode}
+\newcommand*\AtEndOfInputFile{%
+ \filehook@addtohook\filehook@prefix\filehook@input@atend@
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtBeginOfFiles}
+% \begin{macrocode}
+\newcommand*\AtBeginOfFiles{%
+ \filehook@append\filehook@@atbegin
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtEndOfFiles}
+% \begin{macrocode}
+\newcommand*\AtEndOfFiles{%
+ \filehook@prefix\filehook@@atend
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtBeginOfEveryFile}
+% \begin{macrocode}
+\newcommand*\AtBeginOfEveryFile{%
+ \filehook@append\filehook@every@@atbegin
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtEndOfEveryFile}
+% \begin{macrocode}
+\newcommand*\AtEndOfEveryFile{%
+ \filehook@prefix\filehook@every@@atend
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtBeginOfFile}
+% \begin{macrocode}
+\newcommand*\AtBeginOfFile{%
+ \filehook@addtohook\filehook@append\filehook@atbegin@
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtEndOfFile}
+% \begin{macrocode}
+\newcommand*\AtEndOfFile{%
+ \filehook@addtohook\filehook@prefix\filehook@atend@
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\AtBeginOfClassFile}
+% \begin{macrocode}
+\newcommand*\AtBeginOfClassFile{%
+ \@ifnextchar*
+ {\AtBeginOfXFile@star\@clsextension}%
+ {\AtBeginOfXFile@normal\@clsextension}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtBeginOfPackageFile}
+% \begin{macrocode}
+\newcommand*\AtBeginOfPackageFile{%
+ \@ifnextchar*
+ {\AtBeginOfXFile@star\@pkgextension}%
+ {\AtBeginOfXFile@normal\@pkgextension}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtBeginOfXFile@star}[2]{extension}{name}
+% If the class or package is already loaded the code is executed right away.
+% Otherwise it is installed normally.
+% \begin{macrocode}
+\def\AtBeginOfXFile@star#1*#2{%
+ \@ifl@aded{#1}{#2}%
+ {\@firstofone}%
+ {\AtBeginOfXFile@normal{#1}{#2}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtBeginOfXFile@normal}[2]{extension}{name}
+% \begin{macrocode}
+\def\AtBeginOfXFile@normal#1#2{%
+ \AtBeginOfFile{#2.#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\AtEndOfClassFile}
+% \begin{macrocode}
+\newcommand*\AtEndOfClassFile{%
+ \@ifnextchar*
+ {\AtEndOfXFile@star\@clsextension}%
+ {\AtEndOfXFile@normal\@clsextension}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtEndOfPackageFile}
+% \begin{macrocode}
+\newcommand*\AtEndOfPackageFile{%
+ \@ifnextchar*
+ {\AtEndOfXFile@star\@pkgextension}%
+ {\AtEndOfXFile@normal\@pkgextension}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\AtEndOfXFile@star}[2]{extension}{name}
+% If the class or package is already loaded the code is executed right away.
+% Otherwise it is installed normally.
+% \begin{macrocode}
+\def\AtEndOfXFile@star#1*#2{%
+ \@ifl@aded{#1}{#2}%
+ {\@firstofone}%
+ {\AtEndOfXFile@normal{#1}{#2}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtEndOfXFile@normal}[2]{extension}{name}
+% Note that \Macro\AtEndOfClass is identical to \Macro\AtEndOfPackage, so no
+% differentiation between classes and packages is needed here.
+% \begin{macrocode}
+\long\def\AtEndOfXFile@normal#1#2#3{%
+ \AtEndOfFile{#2.#1}{\AtEndOfPackage{#3}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ClearHook}
+% Clears the hook by temporary redefining the prefix and append macros
+% to do a simple definition to empty.
+% \begin{macrocode}
+\newcommand*\ClearHook{%
+ \begingroup
+ \def\filehook@prefix##1##2{%
+ \gdef##1{}%
+ \endgroup
+ }%
+ \let\filehook@append\filehook@prefix
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+% \subsection{Installation of Hooks}
+% The \Macro\@input@ and \Macro\@iinput macros from |latex.ltx| are redefined to install the hooks.
+%
+% \begin{macro}{\@input@}
+% This macro is redefined for the \Macro\include file hooks.
+% Checks if the next command is \Macro\clearpage which indicates that we are inside \Macro\@include.
+% If so the hooks are installed, otherwise the original macro is used unchanged.
+% For the `after' hook an own \Macro\clearpage is inserted and the original one is gobbled.
+%
+% \begin{macrocode}
+\def\DEPRECATED@input@#1{%
+ \@ifnextchar\clearpage
+ {%
+ \filehook@every@atbegin{#1}%
+ \filehook@include@atbegin{#1}%
+ \filehook@orig@@input@{#1}%
+ \filehook@include@atend{#1}%
+ \clearpage
+ \filehook@include@after{#1}%
+ \filehook@every@atend{#1}%
+ \@gobble
+ }%
+ {\filehook@orig@@input@{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@iinput}
+% This macro is redefined for the \Macro\input file hooks.
+% it simply surrounds the original macro with the hooks.
+% \begin{macrocode}
+\def\filehook@@iinput#1{%
+ \filehook@every@atbegin{#1}%
+ \filehook@input@atbegin{#1}%
+ \filehook@orig@@iinput{#1}%
+ \filehook@input@atend{#1}%
+ \filehook@every@atend{#1}%
+}
+%\let\@iinput\filehook@@iinput
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@ensureext}
+% This macro ensures the existence of a file name extension. If non is given `|.tex|' is
+% added.
+% \begin{macrocode}
+\def\filehook@ensureext#1{%
+ \expandafter\filehook@@ensureext#1\empty.tex\empty\empty
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@@ensureext}
+% \begin{macrocode}
+\def\filehook@@ensureext#1.#2\empty#3\empty{#1.#2}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\filehook@ensuretex}
+% Ensures a `|.tex|' extension, i.e. adds it if missing, even if there is a different one.
+% \begin{macrocode}
+\def\filehook@ensuretex#1{%
+ \expandafter\filehook@@ensuretex#1\empty.tex\empty\empty
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@@ensuretex}
+% \begin{macrocode}
+\def\filehook@@ensuretex#1.tex\empty#2\empty{#1.tex}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Hook}
+% \begin{macrocode}
+\AddToHook{include/before}{%
+ \filehook@include@atbegin{\CurrentFile}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Hook}
+% \begin{macrocode}
+\AddToHook{include/end}{%
+ \filehook@include@atend{\CurrentFile}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Hook}
+% \begin{macrocode}
+\AddToHook{include/after}{%
+ \filehook@include@after{\CurrentFile}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@istexfile}
+% \begin{macrocode}
+\begingroup
+\edef\dottex{\expandafter\expandafter\expandafter\@gobble\expandafter\string\csname.tex\endcsname}
+\expandafter
+\gdef\expandafter\filehook@istexfile\expandafter#\expandafter1\expandafter{%
+ \expandafter\expandafter\expandafter\filehook@istexfile@\expandafter#\expandafter1\expandafter\empty\dottex\empty\empty\@nil
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@istexfile@}
+% \begin{macrocode}
+\expandafter\gdef\expandafter\filehook@istexfile@\expandafter#\expandafter1\dottex\empty#2\empty#3\@nil{%
+ \begingroup
+ \def\@tempa{#2}%
+ \ifx\@tempa\empty
+ \endgroup
+ \expandafter\@secondoftwo
+ \else
+ \endgroup
+ \expandafter\@firstoftwo
+ \fi
+}
+\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\Hook}
+% \begin{macrocode}
+\AddToHook{file/before}{%
+ \filehook@every@atbegin{\CurrentFile}%
+ \filehook@istexfile\CurrentFile{\filehook@input@atbegin{\CurrentFile}}{}%
+ \filehook@atbegin{\CurrentFile}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Hook}
+% \begin{macrocode}
+\AddToHook{file/after}{%
+ \filehook@atend{\CurrentFile}%
+ \filehook@istexfile\CurrentFile{\filehook@input@atend{\CurrentFile}}{}%
+ \filehook@every@atend{\CurrentFile}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</filehook-2020.sty>
% \fi
%
% \iffalse
diff --git a/macros/latex/contrib/filehook/filehook.ins b/macros/latex/contrib/filehook/filehook.ins
index 0d381c3b77..baead81637 100644
--- a/macros/latex/contrib/filehook/filehook.ins
+++ b/macros/latex/contrib/filehook/filehook.ins
@@ -5,6 +5,8 @@
\askforoverwritefalse
\generate{%
\file{filehook.sty}{\nopreamble\from{filehook.dtx}{filehook.sty}}%
+ \file{filehook-2019.sty}{\nopreamble\from{filehook.dtx}{filehook-2019.sty}}%
+ \file{filehook-2020.sty}{\nopreamble\from{filehook.dtx}{filehook-2020.sty}}%
\file{filehook-scrlfile.sty}{\nopreamble\from{filehook.dtx}{filehook-scrlfile.sty}}%
\file{filehook-memoir.sty}{\nopreamble\from{filehook.dtx}{filehook-memoir.sty}}%
\file{filehook-listings.sty}{\nopreamble\from{filehook.dtx}{filehook-listings.sty}}%
diff --git a/macros/latex/contrib/filehook/filehook.pdf b/macros/latex/contrib/filehook/filehook.pdf
index 4d3462623b..dcd978b5f2 100644
--- a/macros/latex/contrib/filehook/filehook.pdf
+++ b/macros/latex/contrib/filehook/filehook.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/README b/macros/latex/contrib/koma-script/README
index 0b37a62c41..b999cbcdf7 100644
--- a/macros/latex/contrib/koma-script/README
+++ b/macros/latex/contrib/koma-script/README
@@ -1,5 +1,5 @@
-KOMA-Script 2020/07/22 v3.31
+KOMA-Script 2020/09/21 v3.32
Copyright (c) Markus Kohm <komascript(at)gmx.info>, 1994-2020
This material is subject to the LaTeX Project Public License. See
@@ -58,7 +58,7 @@ Requires: scrkbase - internal KOMA-Script package
Recommended: scrlayer-scrpage - KOMA-Script package
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrarticle - wrapper class to scrartcl
------------------------------------------------------------------------------
@@ -73,7 +73,7 @@ Abstract: scrreport is a very simple wrapper class to scrartcl. Is has
Requires: scrartcl.cls - KOMA-Script class
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrbase - basic features for KOMA-Script, e.g. conditionals and key=value
------------------------------------------------------------------------------
@@ -112,7 +112,7 @@ Requires: keyval - key=value package from the graphics bundle
manipulation
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrbook - versatile class may be used as a drop-in replacement of book
------------------------------------------------------------------------------
@@ -132,7 +132,7 @@ Requires: scrkbase - internal KOMA-Script package
typearea - KOMA-Script package
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrdate - calender date operations, e.g. calculation of the day of the week
------------------------------------------------------------------------------
@@ -151,7 +151,7 @@ Requires: scrkbase - KOMA-Script package for some basic features.
manipulation
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrdoc - internal source documentation class of KOMA-Script
------------------------------------------------------------------------------
@@ -180,7 +180,7 @@ Requires: scrkbase - internal package with some basics of KOMA-Script
etoolbox - tool-box for LaTeX programming using e-TeX
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrfontsizes - package to generate a KOMA-Script font size file
------------------------------------------------------------------------------
@@ -192,7 +192,7 @@ Abstract: scrfontsizes is a LaTeX package of the KOMA-Script bundle.
Requires: scrextend - some KOMA-Script features for other classes
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrhack - patch some isues with other packages
------------------------------------------------------------------------------
@@ -210,7 +210,7 @@ Requires: scrkbase - internal KOMA-Script package with basics
xpatch - extending etoolbox patching commands
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrjura - contract environment for advocates and scholary persons in law
------------------------------------------------------------------------------
@@ -226,7 +226,7 @@ Requires: scrkbase - internal KOMA-Script package with basics
tocbasic - features for helper files and float environments
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrkbase - internal basic features for KOMA-Script classes and packages
------------------------------------------------------------------------------
@@ -241,7 +241,7 @@ Requires: scrbase - KOMA-Script package for some basic features.
manipulation
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrlayer-fancyhdr - combining scrlayer with fancyhdr
------------------------------------------------------------------------------
@@ -281,7 +281,7 @@ Abstract: scrlayer-notecolumn is a LaTeX package of the KOMA-Script
Requires: scrlayer.sty
License: LPPL 1.3c or later
State: Author maintained, proof of concept
-Version: 2019/12/02 v0.3.3426
+Version: 2020/09/11 v0.3.3533
==============================================================================
scrlayer-scrpage - controlling page headers and footers
------------------------------------------------------------------------------
@@ -301,7 +301,7 @@ Abstract: scrlayer-scrpage is a LaTeX package of the KOMA-Script
Requires: scrlayer.sty
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrlayer - defining layers and controlling page headers and footers
------------------------------------------------------------------------------
@@ -326,7 +326,7 @@ Abstract: scrlayer is a LaTeX package of the KOMA-Script bundle.
Requires: scrkbase.sty
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrletter - wrapper class to scrlttr2
------------------------------------------------------------------------------
@@ -341,7 +341,7 @@ Abstract: scrreport is a very simple wrapper class to scrlttr2. Is has
Requires: scrlttr2.cls - KOMA-Script class
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrletter - letter extention to KOMA-Script classes
------------------------------------------------------------------------------
@@ -356,7 +356,29 @@ Requires: scrkbase - internal KOMA-Script package
Recommended: marvosym - package by Martin Vogel providing symbols
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
+==============================================================================
+scrlfile-hook - internal subpackage of scrlfile
+------------------------------------------------------------------------------
+Maintainer: Markus Kohm
+E-Mail: komascript at gmx info
+Abstract: scrlfile-hook is an internal subpackage of scrlfile to be
+ be used with LaTeX from version 2010-10-01 on.
+Requires: scrlogo.sty
+License: LPPL 1.3c or later
+State: Author maintained
+Version: 2020/09/21 v3.32
+==============================================================================
+scrlfile-pacholdlatex - internal subpackage of scrlfile
+------------------------------------------------------------------------------
+Maintainer: Markus Kohm
+E-Mail: komascript at gmx info
+Abstract: scrlfile-patcholdlatex is an internal subpackage of scrlfile
+ to be be used with LaTeX up to version 2010-04-01.
+Requires: scrlogo.sty
+License: LPPL 1.3c or later
+State: Author maintained
+Version: 2020/09/21 v3.32
==============================================================================
scrlfile - control of package dependencies
------------------------------------------------------------------------------
@@ -371,10 +393,22 @@ Abstract: scrlfile is a LaTeX package of the KOMA-Script bundle. It
closing the main aux file during \end{document}. It has
been used by the KOMA-Script classes for more than a
decade.
+Requires: scrlfile-hook.sty, scrlfile-patcholdlatex.sty, scrlogo.sty
+License: LPPL 1.3c or later
+State: Author maintained
+Version: 2020/09/21 v3.32
+==============================================================================
+scrlogo - print the KOMA-Script logo
+------------------------------------------------------------------------------
+Maintainer: Markus Kohm
+E-Mail: komascript at gmx info
+Abstract: scrlogo is a LaTeX package of the KOMA-Script bundle. It
+ provides the command \KOMAScript to print the official
+ KOMA-Script logo.
Requires:
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrlttr2 - versatile letter class with separation of text area and note paper
------------------------------------------------------------------------------
@@ -407,7 +441,7 @@ Requires: scrkbase - internal KOMA-Script package
Recommended: marvosym - package by Martin Vogel providing symbols
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrreport - wrapper class to scrreprt
------------------------------------------------------------------------------
@@ -422,7 +456,7 @@ Abstract: scrreport is a very simple wrapper class to scrreprt. Is has
Requires: scrreprt.cls - KOMA-Script class
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrreprt - versatile class may be used as a drop-in replacement of report
------------------------------------------------------------------------------
@@ -442,7 +476,7 @@ Requires: scrkbase - internal KOMA-Script package
typearea - KOMA-Script package
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrtime - show the time of the LaTeX run
------------------------------------------------------------------------------
@@ -454,7 +488,7 @@ Abstract: scrtime is a LaTeX package of the KOMA-Script bundle. It
Requires: scrkbase - internal package with some basics of KOMA-Script
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
scrwfile - Spare write handles for helper files to avoid `No room' messages
------------------------------------------------------------------------------
@@ -508,7 +542,7 @@ Abstract: tocbasic is a LaTeX package of the KOMA-Script bundle. The
Requires: scrbase - KOMA-Script package for some basic features.
License: LPPL 1.3c or later
State: Author maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
typearea - Calculating typeing area and margins depending on typographic rules
------------------------------------------------------------------------------
@@ -529,5 +563,5 @@ Abstract: Many LaTeX classes, including the standard classes, present
Requires: scrkbase - internal basic features for KOMA-Script packages
License: LPPL 1.3c or later
State: Autor maintained
-Version: 2020/07/22 v3.31
+Version: 2020/09/21 v3.32
==============================================================================
diff --git a/macros/latex/contrib/koma-script/doc/manifest.txt b/macros/latex/contrib/koma-script/doc/manifest.txt
index dae3054476..af2d7d523d 100644
--- a/macros/latex/contrib/koma-script/doc/manifest.txt
+++ b/macros/latex/contrib/koma-script/doc/manifest.txt
@@ -35,7 +35,7 @@
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
% ======================================================================
%
-% CONTENTS OF THE KOMA-SCRIPT RELEASE 2020/07/22 v3.31
+% CONTENTS OF THE KOMA-SCRIPT RELEASE 2020/09/21 v3.32
% ------------------------------------------------------
%
%
@@ -303,6 +303,9 @@
% tocbasic.dtx - KOMA-Script toc-file package
%
% scrlfile.dtx - KOMA-Script load file package
+% scrlfile-hook.dtx - subpackage of scrlfile
+% scrlfile-patcholdlatex.dtx
+% - subpackage of scrlfile
%
% scrwfile.dtx - KOMA-Script write file package
%
@@ -507,6 +510,8 @@ scrextend.dtx
tocbasic.dtx
scrlfile.dtx
+scrlfile-hook.dtx
+scrlfile-patcholdlatex.dtx
scrwfile.dtx
diff --git a/macros/latex/contrib/koma-script/doc/scrguide.html b/macros/latex/contrib/koma-script/doc/scrguide.html
index 8729266a5d..38ca39718f 100644
--- a/macros/latex/contrib/koma-script/doc/scrguide.html
+++ b/macros/latex/contrib/koma-script/doc/scrguide.html
@@ -29,11 +29,11 @@
<li><a name="option.adrFreeIVstop"></a><a href="#option.adrFreeIVstop">adrFreeIVstop</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scraddr.option.adrFreeIVstop">303</a></li>
<li><a name="option.adrFreeIVwarn"></a><a href="#option.adrFreeIVwarn">adrFreeIVwarn</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scraddr.option.adrFreeIVwarn">303</a></li>
<li><a name="option.appendixprefix"></a><a href="#option.appendixprefix">appendixprefix</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.option.appendixprefix">101</a></li>
- <li><a name="option.areasetadvanced"></a><a href="#option.areasetadvanced">areasetadvanced</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.option.areasetadvanced">504</a></li>
- <li><a name="option.autoclearnotecolumns"></a><a href="#option.autoclearnotecolumns">autoclearnotecolumns</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.option.autoclearnotecolumns">501</a></li>
+ <li><a name="option.areasetadvanced"></a><a href="#option.areasetadvanced">areasetadvanced</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.option.areasetadvanced">503</a></li>
+ <li><a name="option.autoclearnotecolumns"></a><a href="#option.autoclearnotecolumns">autoclearnotecolumns</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.option.autoclearnotecolumns">500</a></li>
<li><a name="option.autoenlargeheadfoot"></a><a href="#option.autoenlargeheadfoot">autoenlargeheadfoot</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.option.autoenlargeheadfoot">266</a></li>
- <li><a name="option.automark"></a><a href="#option.automark">automark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.option.automark">283</a>, <a href="scrguide.pdf#desc:scrlayer.option.automark">471</a></li>
- <li><a name="option.autooneside"></a><a href="#option.autooneside">autooneside</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.option.autooneside">283</a>, <a href="scrguide.pdf#desc:scrlayer.option.autooneside">471</a></li>
+ <li><a name="option.automark"></a><a href="#option.automark">automark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.option.automark">283</a>, <a href="scrguide.pdf#desc:scrlayer.option.automark">470</a></li>
+ <li><a name="option.autooneside"></a><a href="#option.autooneside">autooneside</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.option.autooneside">283</a>, <a href="scrguide.pdf#desc:scrlayer.option.autooneside">470</a></li>
<li><a name="option.backaddress"></a><a href="#option.backaddress">backaddress</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.option.backaddress">213</a></li>
<li><a name="option.bibliography"></a><a href="#option.bibliography">bibliography</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.option.bibliography">156</a></li>
<li><a name="option.captions"></a><a href="#option.captions">captions</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.option.captions">136</a></li>
@@ -44,8 +44,8 @@
<li><a name="option.cleardoublepage"></a><a href="#option.cleardoublepage">cleardoublepage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.option.cleardoublepage">243</a>, <a href="scrguide.pdf#desc:scrextend.option.cleardoublepage">316</a>, <a href="scrguide.pdf#desc:maincls.option.cleardoublepage">91</a></li>
<li><a name="option.clines"></a><a href="#option.clines">clines</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.option.clines">292</a></li>
<li><a name="option.contract"></a><a href="#option.contract">contract</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrjura.option.contract">330</a></li>
- <li><a name="option.deactivatepagestylelayers"></a><a href="#option.deactivatepagestylelayers">deactivatepagestylelayers</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.deactivatepagestylelayers">466</a></li>
- <li><a name="option.draft"></a><a href="#option.draft">draft</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.option.draft">165</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.option.draft">284</a>, <a href="scrguide.pdf#desc:scrextend.option.draft">308</a>, <a href="scrguide.pdf#desc:scrlayer.option.draft">459</a>, <a href="scrguide.pdf#desc:maincls.option.draft">58</a></li>
+ <li><a name="option.deactivatepagestylelayers"></a><a href="#option.deactivatepagestylelayers">deactivatepagestylelayers</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.deactivatepagestylelayers">465</a></li>
+ <li><a name="option.draft"></a><a href="#option.draft">draft</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.option.draft">165</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.option.draft">284</a>, <a href="scrguide.pdf#desc:scrextend.option.draft">308</a>, <a href="scrguide.pdf#desc:scrlayer.option.draft">458</a>, <a href="scrguide.pdf#desc:maincls.option.draft">58</a></li>
<li><a name="option.enlargefirstpage"></a><a href="#option.enlargefirstpage">enlargefirstpage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.option.enlargefirstpage">233</a></li>
<li><a name="option.extendedfeature"></a><a href="#option.extendedfeature">extendedfeature</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.option.extendedfeature">308</a></li>
<li><a name="option.firstfoot"></a><a href="#option.firstfoot">firstfoot</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.option.firstfoot">233</a></li>
@@ -75,7 +75,7 @@
<li><a name="option.headsepline"></a><a href="#option.headsepline">headsepline</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.option.headsepline">238</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.option.headsepline">291</a>, <a href="scrguide.pdf#desc:maincls.option.headsepline">84</a></li>
<li><a name="option.headtopline"></a><a href="#option.headtopline">headtopline</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.option.headtopline">291</a></li>
<li><a name="option.headwidth"></a><a href="#option.headwidth">headwidth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.option.headwidth">289</a></li>
- <li><a name="option.hmode"></a><a href="#option.hmode">hmode</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.option.hmode">486</a></li>
+ <li><a name="option.hmode"></a><a href="#option.hmode">hmode</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.option.hmode">485</a></li>
<li><a name="option.ilines"></a><a href="#option.ilines">ilines</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.option.ilines">292</a></li>
<li><a name="option.index"></a><a href="#option.index">index</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.option.index">160</a></li>
<li><a name="option.juratitlepagebreak"></a><a href="#option.juratitlepagebreak">juratitlepagebreak</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrjura.option.juratitlepagebreak">332</a></li>
@@ -85,22 +85,22 @@
<li><a name="option.leqno"></a><a href="#option.leqno">leqno</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.option.leqno">135</a></li>
<li><a name="option.listof"></a><a href="#option.listof">listof</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.option.listof">151</a></li>
<li><a name="option.locfield"></a><a href="#option.locfield">locfield</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.option.locfield">219</a></li>
- <li><a name="option.manualmark"></a><a href="#option.manualmark">manualmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.option.manualmark">283</a>, <a href="scrguide.pdf#desc:scrlayer.option.manualmark">471</a></li>
- <li><a name="option.markcase"></a><a href="#option.markcase">markcase</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.option.markcase">284</a>, <a href="scrguide.pdf#desc:scrlayer.option.markcase">472</a></li>
+ <li><a name="option.manualmark"></a><a href="#option.manualmark">manualmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.option.manualmark">283</a>, <a href="scrguide.pdf#desc:scrlayer.option.manualmark">470</a></li>
+ <li><a name="option.markcase"></a><a href="#option.markcase">markcase</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.option.markcase">284</a>, <a href="scrguide.pdf#desc:scrlayer.option.markcase">471</a></li>
<li><a name="option.mpinclude"></a><a href="#option.mpinclude">mpinclude</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea.option.mpinclude">44</a></li>
<li><a name="option.numbers"></a><a href="#option.numbers">numbers</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.option.numbers">104</a></li>
<li><a name="option.numericaldate"></a><a href="#option.numericaldate">numericaldate</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.option.numericaldate">222</a></li>
<li><a name="option.olines"></a><a href="#option.olines">olines</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.option.olines">292</a></li>
- <li><a name="option.onpsbackground"></a><a href="#option.onpsbackground">onpsbackground</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsbackground">466</a></li>
- <li><a name="option.onpsevenpage"></a><a href="#option.onpsevenpage">onpsevenpage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsevenpage">466</a></li>
- <li><a name="option.onpsfloatpage"></a><a href="#option.onpsfloatpage">onpsfloatpage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsfloatpage">466</a></li>
- <li><a name="option.onpsforeground"></a><a href="#option.onpsforeground">onpsforeground</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsforeground">466</a></li>
- <li><a name="option.onpsinit"></a><a href="#option.onpsinit">onpsinit</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsinit">466</a></li>
- <li><a name="option.onpsnonfloatpage"></a><a href="#option.onpsnonfloatpage">onpsnonfloatpage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsnonfloatpage">466</a></li>
- <li><a name="option.onpsoddpage"></a><a href="#option.onpsoddpage">onpsoddpage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsoddpage">466</a></li>
- <li><a name="option.onpsoneside"></a><a href="#option.onpsoneside">onpsoneside</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsoneside">466</a></li>
- <li><a name="option.onpsselect"></a><a href="#option.onpsselect">onpsselect</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsselect">466</a></li>
- <li><a name="option.onpstwoside"></a><a href="#option.onpstwoside">onpstwoside</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpstwoside">466</a></li>
+ <li><a name="option.onpsbackground"></a><a href="#option.onpsbackground">onpsbackground</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsbackground">465</a></li>
+ <li><a name="option.onpsevenpage"></a><a href="#option.onpsevenpage">onpsevenpage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsevenpage">465</a></li>
+ <li><a name="option.onpsfloatpage"></a><a href="#option.onpsfloatpage">onpsfloatpage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsfloatpage">465</a></li>
+ <li><a name="option.onpsforeground"></a><a href="#option.onpsforeground">onpsforeground</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsforeground">465</a></li>
+ <li><a name="option.onpsinit"></a><a href="#option.onpsinit">onpsinit</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsinit">465</a></li>
+ <li><a name="option.onpsnonfloatpage"></a><a href="#option.onpsnonfloatpage">onpsnonfloatpage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsnonfloatpage">465</a></li>
+ <li><a name="option.onpsoddpage"></a><a href="#option.onpsoddpage">onpsoddpage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsoddpage">465</a></li>
+ <li><a name="option.onpsoneside"></a><a href="#option.onpsoneside">onpsoneside</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsoneside">465</a></li>
+ <li><a name="option.onpsselect"></a><a href="#option.onpsselect">onpsselect</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpsselect">465</a></li>
+ <li><a name="option.onpstwoside"></a><a href="#option.onpstwoside">onpstwoside</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.onpstwoside">465</a></li>
<li><a name="option.open"></a><a href="#option.open">open</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.option.open">100</a></li>
<li><a name="option.origlongtable"></a><a href="#option.origlongtable">origlongtable</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.option.origlongtable">151</a></li>
<li><a name="option.overfullrule"></a><a href="#option.overfullrule">overfullrule</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.option.overfullrule">165</a>, <a href="scrguide.pdf#desc:scrextend.option.overfullrule">308</a>, <a href="scrguide.pdf#desc:maincls.option.overfullrule">58</a></li>
@@ -118,115 +118,113 @@
<li><a name="option.ref"></a><a href="#option.ref">ref</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrjura.option.ref">339</a></li>
<li><a name="option.refline"></a><a href="#option.refline">refline</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.option.refline">222</a></li>
<li><a name="option.sectionentrydots"></a><a href="#option.sectionentrydots">sectionentrydots</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.option.sectionentrydots">78</a></li>
- <li><a name="option.singlespacing"></a><a href="#option.singlespacing">singlespacing</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.singlespacing">466</a></li>
+ <li><a name="option.singlespacing"></a><a href="#option.singlespacing">singlespacing</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.option.singlespacing">465</a></li>
<li><a name="option.subject"></a><a href="#option.subject">subject</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.option.subject">227</a></li>
<li><a name="option.symbolicnames"></a><a href="#option.symbolicnames">symbolicnames</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.option.symbolicnames">206</a></li>
<li><a name="option.titlepage"></a><a href="#option.titlepage">titlepage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.option.titlepage">311</a>, <a href="scrguide.pdf#desc:maincls.option.titlepage">67</a></li>
<li><a name="option.toc"></a><a href="#option.toc">toc</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.option.toc">75</a></li>
<li><a name="option.twocolumn"></a><a href="#option.twocolumn">twocolumn</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea.option.twocolumn">42</a></li>
<li><a name="option.twoside"></a><a href="#option.twoside">twoside</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea.option.twoside">41</a></li>
- <li><a name="option.usegeometry"></a><a href="#option.usegeometry">usegeometry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.option.usegeometry">503</a></li>
+ <li><a name="option.usegeometry"></a><a href="#option.usegeometry">usegeometry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.option.usegeometry">502</a></li>
<li><a name="option.version"></a><a href="#option.version">version</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.option.version">164</a>, <a href="scrguide.pdf#desc:scrextend.option.version">307</a>, <a href="scrguide.pdf#desc:typearea.option.version">33</a>, <a href="scrguide.pdf#desc:maincls.option.version">57</a></li>
</ul>
<h2><a name="macro">Anweisungen</a></h2>
<ul>
- <li><a name="cmd.@mkboth"></a><a href="#cmd.@mkboth">\@mkboth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.@mkboth">476</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.@mkboth">480</a></li>
- <li><a name="cmd.@mkdouble"></a><a href="#cmd.@mkdouble">\@mkdouble</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.@mkdouble">476</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.@mkdouble">480</a></li>
- <li><a name="cmd.@mkleft"></a><a href="#cmd.@mkleft">\@mkleft</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.@mkleft">476</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.@mkleft">480</a></li>
- <li><a name="cmd.@mkright"></a><a href="#cmd.@mkright">\@mkright</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.@mkright">476</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.@mkright">480</a></li>
- <li><a name="cmd.@openbib@code"></a><a href="#cmd.@openbib@code">\@openbib@code</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.@openbib@code">536</a></li>
- <li><a name="cmd.AddLayersAtBeginOfPageStyle"></a><a href="#cmd.AddLayersAtBeginOfPageStyle">\AddLayersAtBeginOfPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.AddLayersAtBeginOfPageStyle">467</a></li>
- <li><a name="cmd.AddLayersAtEndOfPageStyle"></a><a href="#cmd.AddLayersAtEndOfPageStyle">\AddLayersAtEndOfPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.AddLayersAtEndOfPageStyle">467</a></li>
- <li><a name="cmd.AddLayersToPageStyle"></a><a href="#cmd.AddLayersToPageStyle">\AddLayersToPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.AddLayersToPageStyle">467</a></li>
- <li><a name="cmd.AddLayersToPageStyleAfterLayer"></a><a href="#cmd.AddLayersToPageStyleAfterLayer">\AddLayersToPageStyleAfterLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.AddLayersToPageStyleAfterLayer">468</a></li>
- <li><a name="cmd.AddLayersToPageStyleBeforeLayer"></a><a href="#cmd.AddLayersToPageStyleBeforeLayer">\AddLayersToPageStyleBeforeLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.AddLayersToPageStyleBeforeLayer">468</a></li>
- <li><a name="cmd.AddToLayerPageStyleOptions"></a><a href="#cmd.AddToLayerPageStyleOptions">\AddToLayerPageStyleOptions</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.AddToLayerPageStyleOptions">468</a></li>
+ <li><a name="cmd.@mkboth"></a><a href="#cmd.@mkboth">\@mkboth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.@mkboth">475</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.@mkboth">479</a></li>
+ <li><a name="cmd.@mkdouble"></a><a href="#cmd.@mkdouble">\@mkdouble</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.@mkdouble">475</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.@mkdouble">479</a></li>
+ <li><a name="cmd.@mkleft"></a><a href="#cmd.@mkleft">\@mkleft</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.@mkleft">475</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.@mkleft">479</a></li>
+ <li><a name="cmd.@mkright"></a><a href="#cmd.@mkright">\@mkright</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.@mkright">475</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.@mkright">479</a></li>
+ <li><a name="cmd.@openbib@code"></a><a href="#cmd.@openbib@code">\@openbib@code</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.@openbib@code">535</a></li>
+ <li><a name="cmd.AddLayersAtBeginOfPageStyle"></a><a href="#cmd.AddLayersAtBeginOfPageStyle">\AddLayersAtBeginOfPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.AddLayersAtBeginOfPageStyle">466</a></li>
+ <li><a name="cmd.AddLayersAtEndOfPageStyle"></a><a href="#cmd.AddLayersAtEndOfPageStyle">\AddLayersAtEndOfPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.AddLayersAtEndOfPageStyle">466</a></li>
+ <li><a name="cmd.AddLayersToPageStyle"></a><a href="#cmd.AddLayersToPageStyle">\AddLayersToPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.AddLayersToPageStyle">466</a></li>
+ <li><a name="cmd.AddLayersToPageStyleAfterLayer"></a><a href="#cmd.AddLayersToPageStyleAfterLayer">\AddLayersToPageStyleAfterLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.AddLayersToPageStyleAfterLayer">467</a></li>
+ <li><a name="cmd.AddLayersToPageStyleBeforeLayer"></a><a href="#cmd.AddLayersToPageStyleBeforeLayer">\AddLayersToPageStyleBeforeLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.AddLayersToPageStyleBeforeLayer">467</a></li>
+ <li><a name="cmd.AddToLayerPageStyleOptions"></a><a href="#cmd.AddToLayerPageStyleOptions">\AddToLayerPageStyleOptions</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.AddToLayerPageStyleOptions">467</a></li>
<li><a name="cmd.Address"></a><a href="#cmd.Address">\Address</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scraddr.cmd.Address">301</a></li>
<li><a name="cmd.AddtoDoHook"></a><a href="#cmd.AddtoDoHook">\AddtoDoHook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.AddtoDoHook">378</a></li>
<li><a name="cmd.AddtoOneTimeDoHook"></a><a href="#cmd.AddtoOneTimeDoHook">\AddtoOneTimeDoHook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.AddtoOneTimeDoHook">378</a></li>
+ <li><a name="cmd.AfterAtEndOfClass*"></a><a href="#cmd.AfterAtEndOfClass*">\AfterAtEndOfClass*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterAtEndOfClass*">383</a></li>
<li><a name="cmd.AfterAtEndOfClass"></a><a href="#cmd.AfterAtEndOfClass">\AfterAtEndOfClass</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterAtEndOfClass">383</a></li>
+ <li><a name="cmd.AfterAtEndOfPackage*"></a><a href="#cmd.AfterAtEndOfPackage*">\AfterAtEndOfPackage*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterAtEndOfPackage*">383</a></li>
<li><a name="cmd.AfterAtEndOfPackage"></a><a href="#cmd.AfterAtEndOfPackage">\AfterAtEndOfPackage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterAtEndOfPackage">383</a></li>
<li><a name="cmd.AfterBibliographyPreamble"></a><a href="#cmd.AfterBibliographyPreamble">\AfterBibliographyPreamble</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.AfterBibliographyPreamble">159</a></li>
- <li><a name="cmd.AfterCalculatingTypearea*"></a><a href="#cmd.AfterCalculatingTypearea*">\AfterCalculatingTypearea*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.AfterCalculatingTypearea*">506</a></li>
- <li><a name="cmd.AfterCalculatingTypearea"></a><a href="#cmd.AfterCalculatingTypearea">\AfterCalculatingTypearea</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.AfterCalculatingTypearea">506</a></li>
- <li><a name="cmd.AfterClass!"></a><a href="#cmd.AfterClass!">\AfterClass!</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterClass!">383</a></li>
+ <li><a name="cmd.AfterCalculatingTypearea*"></a><a href="#cmd.AfterCalculatingTypearea*">\AfterCalculatingTypearea*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.AfterCalculatingTypearea*">505</a></li>
+ <li><a name="cmd.AfterCalculatingTypearea"></a><a href="#cmd.AfterCalculatingTypearea">\AfterCalculatingTypearea</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.AfterCalculatingTypearea">505</a></li>
<li><a name="cmd.AfterClass*"></a><a href="#cmd.AfterClass*">\AfterClass*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterClass*">383</a></li>
- <li><a name="cmd.AfterClass+"></a><a href="#cmd.AfterClass+">\AfterClass+</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterClass+">383</a></li>
<li><a name="cmd.AfterClass"></a><a href="#cmd.AfterClass">\AfterClass</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterClass">383</a></li>
<li><a name="cmd.AfterFile"></a><a href="#cmd.AfterFile">\AfterFile</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterFile">382</a></li>
- <li><a name="cmd.AfterPackage!"></a><a href="#cmd.AfterPackage!">\AfterPackage!</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterPackage!">383</a></li>
<li><a name="cmd.AfterPackage*"></a><a href="#cmd.AfterPackage*">\AfterPackage*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterPackage*">383</a></li>
- <li><a name="cmd.AfterPackage+"></a><a href="#cmd.AfterPackage+">\AfterPackage+</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterPackage+">383</a></li>
<li><a name="cmd.AfterPackage"></a><a href="#cmd.AfterPackage">\AfterPackage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterPackage">383</a></li>
- <li><a name="cmd.AfterReadingMainAux"></a><a href="#cmd.AfterReadingMainAux">\AfterReadingMainAux</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterReadingMainAux">385</a></li>
- <li><a name="cmd.AfterRestoreareas*"></a><a href="#cmd.AfterRestoreareas*">\AfterRestoreareas*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.AfterRestoreareas*">505</a></li>
- <li><a name="cmd.AfterRestoreareas"></a><a href="#cmd.AfterRestoreareas">\AfterRestoreareas</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.AfterRestoreareas">505</a></li>
- <li><a name="cmd.AfterSelectAnyPageStyle"></a><a href="#cmd.AfterSelectAnyPageStyle">\AfterSelectAnyPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.AfterSelectAnyPageStyle">461</a></li>
- <li><a name="cmd.AfterSettingArea*"></a><a href="#cmd.AfterSettingArea*">\AfterSettingArea*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.AfterSettingArea*">506</a></li>
- <li><a name="cmd.AfterSettingArea"></a><a href="#cmd.AfterSettingArea">\AfterSettingArea</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.AfterSettingArea">506</a></li>
- <li><a name="cmd.AfterStartingTOC"></a><a href="#cmd.AfterStartingTOC">\AfterStartingTOC</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.AfterStartingTOC">405</a></li>
- <li><a name="cmd.AfterTOCHead"></a><a href="#cmd.AfterTOCHead">\AfterTOCHead</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.AfterTOCHead">405</a></li>
- <li><a name="cmd.At@startsection"></a><a href="#cmd.At@startsection">\At@startsection</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.At@startsection">534</a></li>
- <li><a name="cmd.AtAddToTocList"></a><a href="#cmd.AtAddToTocList">\AtAddToTocList</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.AtAddToTocList">400</a></li>
+ <li><a name="cmd.AfterReadingMainAux"></a><a href="#cmd.AfterReadingMainAux">\AfterReadingMainAux</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.AfterReadingMainAux">386</a></li>
+ <li><a name="cmd.AfterRestoreareas*"></a><a href="#cmd.AfterRestoreareas*">\AfterRestoreareas*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.AfterRestoreareas*">504</a></li>
+ <li><a name="cmd.AfterRestoreareas"></a><a href="#cmd.AfterRestoreareas">\AfterRestoreareas</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.AfterRestoreareas">504</a></li>
+ <li><a name="cmd.AfterSelectAnyPageStyle"></a><a href="#cmd.AfterSelectAnyPageStyle">\AfterSelectAnyPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.AfterSelectAnyPageStyle">460</a></li>
+ <li><a name="cmd.AfterSettingArea*"></a><a href="#cmd.AfterSettingArea*">\AfterSettingArea*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.AfterSettingArea*">505</a></li>
+ <li><a name="cmd.AfterSettingArea"></a><a href="#cmd.AfterSettingArea">\AfterSettingArea</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.AfterSettingArea">505</a></li>
+ <li><a name="cmd.AfterStartingTOC"></a><a href="#cmd.AfterStartingTOC">\AfterStartingTOC</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.AfterStartingTOC">404</a></li>
+ <li><a name="cmd.AfterTOCHead"></a><a href="#cmd.AfterTOCHead">\AfterTOCHead</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.AfterTOCHead">404</a></li>
+ <li><a name="cmd.At@startsection"></a><a href="#cmd.At@startsection">\At@startsection</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.At@startsection">533</a></li>
+ <li><a name="cmd.AtAddToTocList"></a><a href="#cmd.AtAddToTocList">\AtAddToTocList</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.AtAddToTocList">399</a></li>
<li><a name="cmd.AtBeginLetter"></a><a href="#cmd.AtBeginLetter">\AtBeginLetter</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.AtBeginLetter">181</a></li>
<li><a name="cmd.AtEndBibliography"></a><a href="#cmd.AtEndBibliography">\AtEndBibliography</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.AtEndBibliography">159</a></li>
<li><a name="cmd.AtEndLetter"></a><a href="#cmd.AtEndLetter">\AtEndLetter</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.AtEndLetter">181</a></li>
<li><a name="cmd.AtEndOfFamilyOptions*"></a><a href="#cmd.AtEndOfFamilyOptions*">\AtEndOfFamilyOptions*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.AtEndOfFamilyOptions*">359</a></li>
<li><a name="cmd.AtEndOfFamilyOptions"></a><a href="#cmd.AtEndOfFamilyOptions">\AtEndOfFamilyOptions</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.AtEndOfFamilyOptions">359</a></li>
- <li><a name="cmd.Before@sect"></a><a href="#cmd.Before@sect">\Before@sect</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.Before@sect">534</a></li>
- <li><a name="cmd.Before@ssect"></a><a href="#cmd.Before@ssect">\Before@ssect</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.Before@ssect">534</a></li>
- <li><a name="cmd.BeforeClass"></a><a href="#cmd.BeforeClass">\BeforeClass</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.BeforeClass">382</a></li>
- <li><a name="cmd.BeforeClosingMainAux"></a><a href="#cmd.BeforeClosingMainAux">\BeforeClosingMainAux</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.BeforeClosingMainAux">385</a></li>
+ <li><a name="cmd.Before@sect"></a><a href="#cmd.Before@sect">\Before@sect</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.Before@sect">533</a></li>
+ <li><a name="cmd.Before@ssect"></a><a href="#cmd.Before@ssect">\Before@ssect</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.Before@ssect">533</a></li>
+ <li><a name="cmd.BeforeClass"></a><a href="#cmd.BeforeClass">\BeforeClass</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.BeforeClass">383</a></li>
+ <li><a name="cmd.BeforeClosingMainAux"></a><a href="#cmd.BeforeClosingMainAux">\BeforeClosingMainAux</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.BeforeClosingMainAux">386</a></li>
<li><a name="cmd.BeforeFamilyProcessOptions"></a><a href="#cmd.BeforeFamilyProcessOptions">\BeforeFamilyProcessOptions</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.BeforeFamilyProcessOptions">355</a></li>
<li><a name="cmd.BeforeFile"></a><a href="#cmd.BeforeFile">\BeforeFile</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.BeforeFile">382</a></li>
- <li><a name="cmd.BeforePackage"></a><a href="#cmd.BeforePackage">\BeforePackage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.BeforePackage">382</a></li>
- <li><a name="cmd.BeforeRestoreareas*"></a><a href="#cmd.BeforeRestoreareas*">\BeforeRestoreareas*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.BeforeRestoreareas*">505</a></li>
- <li><a name="cmd.BeforeRestoreareas"></a><a href="#cmd.BeforeRestoreareas">\BeforeRestoreareas</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.BeforeRestoreareas">505</a></li>
- <li><a name="cmd.BeforeSelectAnyPageStyle"></a><a href="#cmd.BeforeSelectAnyPageStyle">\BeforeSelectAnyPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.BeforeSelectAnyPageStyle">461</a></li>
- <li><a name="cmd.BeforeStartingTOC"></a><a href="#cmd.BeforeStartingTOC">\BeforeStartingTOC</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.BeforeStartingTOC">405</a></li>
- <li><a name="cmd.BeforeTOCHead"></a><a href="#cmd.BeforeTOCHead">\BeforeTOCHead</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.BeforeTOCHead">405</a></li>
+ <li><a name="cmd.BeforePackage"></a><a href="#cmd.BeforePackage">\BeforePackage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.BeforePackage">383</a></li>
+ <li><a name="cmd.BeforeRestoreareas*"></a><a href="#cmd.BeforeRestoreareas*">\BeforeRestoreareas*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.BeforeRestoreareas*">504</a></li>
+ <li><a name="cmd.BeforeRestoreareas"></a><a href="#cmd.BeforeRestoreareas">\BeforeRestoreareas</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.BeforeRestoreareas">504</a></li>
+ <li><a name="cmd.BeforeSelectAnyPageStyle"></a><a href="#cmd.BeforeSelectAnyPageStyle">\BeforeSelectAnyPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.BeforeSelectAnyPageStyle">460</a></li>
+ <li><a name="cmd.BeforeStartingTOC"></a><a href="#cmd.BeforeStartingTOC">\BeforeStartingTOC</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.BeforeStartingTOC">404</a></li>
+ <li><a name="cmd.BeforeTOCHead"></a><a href="#cmd.BeforeTOCHead">\BeforeTOCHead</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.BeforeTOCHead">404</a></li>
<li><a name="cmd.BreakBibliography"></a><a href="#cmd.BreakBibliography">\BreakBibliography</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.BreakBibliography">159</a></li>
<li><a name="cmd.CenturyPart"></a><a href="#cmd.CenturyPart">\CenturyPart</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrdate.cmd.CenturyPart">293</a></li>
<li><a name="cmd.ClassInfoNoLine"></a><a href="#cmd.ClassInfoNoLine">\ClassInfoNoLine</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.ClassInfoNoLine">375</a></li>
- <li><a name="cmd.ClassName"></a><a href="#cmd.ClassName">\ClassName</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.ClassName">507</a></li>
+ <li><a name="cmd.ClassName"></a><a href="#cmd.ClassName">\ClassName</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.ClassName">506</a></li>
<li><a name="cmd.Clause"></a><a href="#cmd.Clause">\Clause</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrjura.cmd.Clause">330</a></li>
<li><a name="cmd.Clauseformat"></a><a href="#cmd.Clauseformat">\Clauseformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrjura.cmd.Clauseformat">332</a></li>
- <li><a name="cmd.CloneTOCEntryStyle"></a><a href="#cmd.CloneTOCEntryStyle">\CloneTOCEntryStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.CloneTOCEntryStyle">423</a></li>
+ <li><a name="cmd.CloneTOCEntryStyle"></a><a href="#cmd.CloneTOCEntryStyle">\CloneTOCEntryStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.CloneTOCEntryStyle">422</a></li>
<li><a name="cmd.Comment"></a><a href="#cmd.Comment">\Comment</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scraddr.cmd.Comment">301</a></li>
<li><a name="cmd.DayName"></a><a href="#cmd.DayName">\DayName</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrdate.cmd.DayName">294</a></li>
<li><a name="cmd.DayNameByNumber"></a><a href="#cmd.DayNameByNumber">\DayNameByNumber</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrdate.cmd.DayNameByNumber">294</a></li>
<li><a name="cmd.DayNumber"></a><a href="#cmd.DayNumber">\DayNumber</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrdate.cmd.DayNumber">293</a></li>
<li><a name="cmd.DecadePart"></a><a href="#cmd.DecadePart">\DecadePart</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrdate.cmd.DecadePart">293</a></li>
- <li><a name="cmd.DeclareLayer"></a><a href="#cmd.DeclareLayer">\DeclareLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DeclareLayer">449</a></li>
+ <li><a name="cmd.DeclareLayer"></a><a href="#cmd.DeclareLayer">\DeclareLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DeclareLayer">448</a></li>
<li><a name="cmd.DeclareNewJuraEnvironment"></a><a href="#cmd.DeclareNewJuraEnvironment">\DeclareNewJuraEnvironment</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrjura.cmd.DeclareNewJuraEnvironment">340</a></li>
- <li><a name="cmd.DeclareNewLayer"></a><a href="#cmd.DeclareNewLayer">\DeclareNewLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DeclareNewLayer">449</a></li>
- <li><a name="cmd.DeclareNewNoteColumn"></a><a href="#cmd.DeclareNewNoteColumn">\DeclareNewNoteColumn</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.DeclareNewNoteColumn">492</a></li>
- <li><a name="cmd.DeclareNewPageStyleAlias"></a><a href="#cmd.DeclareNewPageStyleAlias">\DeclareNewPageStyleAlias</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DeclareNewPageStyleAlias">461</a></li>
- <li><a name="cmd.DeclareNewPageStyleByLayers"></a><a href="#cmd.DeclareNewPageStyleByLayers">\DeclareNewPageStyleByLayers</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DeclareNewPageStyleByLayers">462</a></li>
- <li><a name="cmd.DeclareNewSectionCommand"></a><a href="#cmd.DeclareNewSectionCommand">\DeclareNewSectionCommand</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.DeclareNewSectionCommand">513</a></li>
- <li><a name="cmd.DeclareNewSectionCommands"></a><a href="#cmd.DeclareNewSectionCommands">\DeclareNewSectionCommands</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.DeclareNewSectionCommands">524</a></li>
- <li><a name="cmd.DeclareNewTOC"></a><a href="#cmd.DeclareNewTOC">\DeclareNewTOC</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DeclareNewTOC">431</a></li>
- <li><a name="cmd.DeclareNoteColumn"></a><a href="#cmd.DeclareNoteColumn">\DeclareNoteColumn</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.DeclareNoteColumn">492</a></li>
- <li><a name="cmd.DeclarePageStyleAlias"></a><a href="#cmd.DeclarePageStyleAlias">\DeclarePageStyleAlias</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DeclarePageStyleAlias">461</a></li>
- <li><a name="cmd.DeclarePageStyleByLayers"></a><a href="#cmd.DeclarePageStyleByLayers">\DeclarePageStyleByLayers</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DeclarePageStyleByLayers">462</a></li>
- <li><a name="cmd.DeclareSectionCommand"></a><a href="#cmd.DeclareSectionCommand">\DeclareSectionCommand</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.DeclareSectionCommand">513</a></li>
- <li><a name="cmd.DeclareSectionCommands"></a><a href="#cmd.DeclareSectionCommands">\DeclareSectionCommands</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.DeclareSectionCommands">524</a></li>
- <li><a name="cmd.DeclareSectionNumberDepth"></a><a href="#cmd.DeclareSectionNumberDepth">\DeclareSectionNumberDepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DeclareSectionNumberDepth">447</a></li>
- <li><a name="cmd.DeclareTOCEntryStyle"></a><a href="#cmd.DeclareTOCEntryStyle">\DeclareTOCEntryStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DeclareTOCEntryStyle">421</a></li>
- <li><a name="cmd.DeclareTOCStyleEntries"></a><a href="#cmd.DeclareTOCStyleEntries">\DeclareTOCStyleEntries</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DeclareTOCStyleEntries">410</a></li>
- <li><a name="cmd.DeclareTOCStyleEntry"></a><a href="#cmd.DeclareTOCStyleEntry">\DeclareTOCStyleEntry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DeclareTOCStyleEntry">410</a></li>
+ <li><a name="cmd.DeclareNewLayer"></a><a href="#cmd.DeclareNewLayer">\DeclareNewLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DeclareNewLayer">448</a></li>
+ <li><a name="cmd.DeclareNewNoteColumn"></a><a href="#cmd.DeclareNewNoteColumn">\DeclareNewNoteColumn</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.DeclareNewNoteColumn">491</a></li>
+ <li><a name="cmd.DeclareNewPageStyleAlias"></a><a href="#cmd.DeclareNewPageStyleAlias">\DeclareNewPageStyleAlias</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DeclareNewPageStyleAlias">460</a></li>
+ <li><a name="cmd.DeclareNewPageStyleByLayers"></a><a href="#cmd.DeclareNewPageStyleByLayers">\DeclareNewPageStyleByLayers</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DeclareNewPageStyleByLayers">461</a></li>
+ <li><a name="cmd.DeclareNewSectionCommand"></a><a href="#cmd.DeclareNewSectionCommand">\DeclareNewSectionCommand</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.DeclareNewSectionCommand">512</a></li>
+ <li><a name="cmd.DeclareNewSectionCommands"></a><a href="#cmd.DeclareNewSectionCommands">\DeclareNewSectionCommands</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.DeclareNewSectionCommands">523</a></li>
+ <li><a name="cmd.DeclareNewTOC"></a><a href="#cmd.DeclareNewTOC">\DeclareNewTOC</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DeclareNewTOC">430</a></li>
+ <li><a name="cmd.DeclareNoteColumn"></a><a href="#cmd.DeclareNoteColumn">\DeclareNoteColumn</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.DeclareNoteColumn">491</a></li>
+ <li><a name="cmd.DeclarePageStyleAlias"></a><a href="#cmd.DeclarePageStyleAlias">\DeclarePageStyleAlias</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DeclarePageStyleAlias">460</a></li>
+ <li><a name="cmd.DeclarePageStyleByLayers"></a><a href="#cmd.DeclarePageStyleByLayers">\DeclarePageStyleByLayers</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DeclarePageStyleByLayers">461</a></li>
+ <li><a name="cmd.DeclareSectionCommand"></a><a href="#cmd.DeclareSectionCommand">\DeclareSectionCommand</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.DeclareSectionCommand">512</a></li>
+ <li><a name="cmd.DeclareSectionCommands"></a><a href="#cmd.DeclareSectionCommands">\DeclareSectionCommands</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.DeclareSectionCommands">523</a></li>
+ <li><a name="cmd.DeclareSectionNumberDepth"></a><a href="#cmd.DeclareSectionNumberDepth">\DeclareSectionNumberDepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DeclareSectionNumberDepth">446</a></li>
+ <li><a name="cmd.DeclareTOCEntryStyle"></a><a href="#cmd.DeclareTOCEntryStyle">\DeclareTOCEntryStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DeclareTOCEntryStyle">420</a></li>
+ <li><a name="cmd.DeclareTOCStyleEntries"></a><a href="#cmd.DeclareTOCStyleEntries">\DeclareTOCStyleEntries</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DeclareTOCStyleEntries">409</a></li>
+ <li><a name="cmd.DeclareTOCStyleEntry"></a><a href="#cmd.DeclareTOCStyleEntry">\DeclareTOCStyleEntry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DeclareTOCStyleEntry">409</a></li>
<li><a name="cmd.DefineFamily"></a><a href="#cmd.DefineFamily">\DefineFamily</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.DefineFamily">351</a></li>
<li><a name="cmd.DefineFamilyKey"></a><a href="#cmd.DefineFamilyKey">\DefineFamilyKey</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.DefineFamilyKey">352</a></li>
<li><a name="cmd.DefineFamilyMember"></a><a href="#cmd.DefineFamilyMember">\DefineFamilyMember</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.DefineFamilyMember">351</a></li>
- <li><a name="cmd.DefineTOCEntryBooleanOption"></a><a href="#cmd.DefineTOCEntryBooleanOption">\DefineTOCEntryBooleanOption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DefineTOCEntryBooleanOption">421</a></li>
- <li><a name="cmd.DefineTOCEntryCommandOption"></a><a href="#cmd.DefineTOCEntryCommandOption">\DefineTOCEntryCommandOption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DefineTOCEntryCommandOption">421</a></li>
- <li><a name="cmd.DefineTOCEntryIfOption"></a><a href="#cmd.DefineTOCEntryIfOption">\DefineTOCEntryIfOption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DefineTOCEntryIfOption">421</a></li>
- <li><a name="cmd.DefineTOCEntryLengthOption"></a><a href="#cmd.DefineTOCEntryLengthOption">\DefineTOCEntryLengthOption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DefineTOCEntryLengthOption">421</a></li>
- <li><a name="cmd.DefineTOCEntryNumberOption"></a><a href="#cmd.DefineTOCEntryNumberOption">\DefineTOCEntryNumberOption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DefineTOCEntryNumberOption">421</a></li>
- <li><a name="cmd.DefineTOCEntryOption"></a><a href="#cmd.DefineTOCEntryOption">\DefineTOCEntryOption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DefineTOCEntryOption">421</a></li>
- <li><a name="cmd.DestroyLayer"></a><a href="#cmd.DestroyLayer">\DestroyLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DestroyLayer">459</a></li>
- <li><a name="cmd.DestroyPageStyleAlias"></a><a href="#cmd.DestroyPageStyleAlias">\DestroyPageStyleAlias</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DestroyPageStyleAlias">462</a></li>
- <li><a name="cmd.DestroyRealLayerPageStyle"></a><a href="#cmd.DestroyRealLayerPageStyle">\DestroyRealLayerPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DestroyRealLayerPageStyle">469</a></li>
+ <li><a name="cmd.DefineTOCEntryBooleanOption"></a><a href="#cmd.DefineTOCEntryBooleanOption">\DefineTOCEntryBooleanOption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DefineTOCEntryBooleanOption">420</a></li>
+ <li><a name="cmd.DefineTOCEntryCommandOption"></a><a href="#cmd.DefineTOCEntryCommandOption">\DefineTOCEntryCommandOption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DefineTOCEntryCommandOption">420</a></li>
+ <li><a name="cmd.DefineTOCEntryIfOption"></a><a href="#cmd.DefineTOCEntryIfOption">\DefineTOCEntryIfOption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DefineTOCEntryIfOption">420</a></li>
+ <li><a name="cmd.DefineTOCEntryLengthOption"></a><a href="#cmd.DefineTOCEntryLengthOption">\DefineTOCEntryLengthOption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DefineTOCEntryLengthOption">420</a></li>
+ <li><a name="cmd.DefineTOCEntryNumberOption"></a><a href="#cmd.DefineTOCEntryNumberOption">\DefineTOCEntryNumberOption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DefineTOCEntryNumberOption">420</a></li>
+ <li><a name="cmd.DefineTOCEntryOption"></a><a href="#cmd.DefineTOCEntryOption">\DefineTOCEntryOption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.DefineTOCEntryOption">420</a></li>
+ <li><a name="cmd.DestroyLayer"></a><a href="#cmd.DestroyLayer">\DestroyLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DestroyLayer">458</a></li>
+ <li><a name="cmd.DestroyPageStyleAlias"></a><a href="#cmd.DestroyPageStyleAlias">\DestroyPageStyleAlias</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DestroyPageStyleAlias">461</a></li>
+ <li><a name="cmd.DestroyRealLayerPageStyle"></a><a href="#cmd.DestroyRealLayerPageStyle">\DestroyRealLayerPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.DestroyRealLayerPageStyle">468</a></li>
<li><a name="cmd.ExecuteDoHook"></a><a href="#cmd.ExecuteDoHook">\ExecuteDoHook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.ExecuteDoHook">377</a></li>
<li><a name="cmd.FamilyBoolKey"></a><a href="#cmd.FamilyBoolKey">\FamilyBoolKey</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.FamilyBoolKey">360</a></li>
<li><a name="cmd.FamilyCSKey"></a><a href="#cmd.FamilyCSKey">\FamilyCSKey</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.FamilyCSKey">364</a></li>
@@ -258,32 +256,32 @@
<li><a name="cmd.FamilyUseLengthMacroKey"></a><a href="#cmd.FamilyUseLengthMacroKey">\FamilyUseLengthMacroKey</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.FamilyUseLengthMacroKey">364</a></li>
<li><a name="cmd.FirstName"></a><a href="#cmd.FirstName">\FirstName</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scraddr.cmd.FirstName">301</a></li>
<li><a name="cmd.ForDoHook"></a><a href="#cmd.ForDoHook">\ForDoHook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.ForDoHook">379</a></li>
- <li><a name="cmd.ForEachLayerOfPageStyle*"></a><a href="#cmd.ForEachLayerOfPageStyle*">\ForEachLayerOfPageStyle*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ForEachLayerOfPageStyle*">466</a></li>
- <li><a name="cmd.ForEachLayerOfPageStyle"></a><a href="#cmd.ForEachLayerOfPageStyle">\ForEachLayerOfPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ForEachLayerOfPageStyle">466</a></li>
+ <li><a name="cmd.ForEachLayerOfPageStyle*"></a><a href="#cmd.ForEachLayerOfPageStyle*">\ForEachLayerOfPageStyle*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ForEachLayerOfPageStyle*">465</a></li>
+ <li><a name="cmd.ForEachLayerOfPageStyle"></a><a href="#cmd.ForEachLayerOfPageStyle">\ForEachLayerOfPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ForEachLayerOfPageStyle">465</a></li>
<li><a name="cmd.FreeI"></a><a href="#cmd.FreeI">\FreeI</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scraddr.cmd.FreeI">301</a></li>
<li><a name="cmd.FreeII"></a><a href="#cmd.FreeII">\FreeII</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scraddr.cmd.FreeII">301</a></li>
<li><a name="cmd.FreeIII"></a><a href="#cmd.FreeIII">\FreeIII</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scraddr.cmd.FreeIII">301</a></li>
<li><a name="cmd.FreeIV"></a><a href="#cmd.FreeIV">\FreeIV</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scraddr.cmd.FreeIV">301</a></li>
- <li><a name="cmd.GenericMarkFormat"></a><a href="#cmd.GenericMarkFormat">\GenericMarkFormat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.GenericMarkFormat">475</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.GenericMarkFormat">478</a></li>
- <li><a name="cmd.GetLayerContents"></a><a href="#cmd.GetLayerContents">\GetLayerContents</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.GetLayerContents">459</a></li>
- <li><a name="cmd.GetRealPageStyle"></a><a href="#cmd.GetRealPageStyle">\GetRealPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.GetRealPageStyle">462</a></li>
+ <li><a name="cmd.GenericMarkFormat"></a><a href="#cmd.GenericMarkFormat">\GenericMarkFormat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.GenericMarkFormat">474</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.GenericMarkFormat">477</a></li>
+ <li><a name="cmd.GetLayerContents"></a><a href="#cmd.GetLayerContents">\GetLayerContents</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.GetLayerContents">458</a></li>
+ <li><a name="cmd.GetRealPageStyle"></a><a href="#cmd.GetRealPageStyle">\GetRealPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.GetRealPageStyle">461</a></li>
<li><a name="cmd.ISODayName"></a><a href="#cmd.ISODayName">\ISODayName</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrdate.cmd.ISODayName">294</a></li>
<li><a name="cmd.ISODayNumber"></a><a href="#cmd.ISODayNumber">\ISODayNumber</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrdate.cmd.ISODayNumber">293</a></li>
<li><a name="cmd.ISOToday"></a><a href="#cmd.ISOToday">\ISOToday</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrdate.cmd.ISOToday">295</a></li>
<li><a name="cmd.IfActiveMkBoth"></a><a href="#cmd.IfActiveMkBoth">\IfActiveMkBoth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.IfActiveMkBoth">369</a></li>
<li><a name="cmd.IfChapterUsesPrefixLine"></a><a href="#cmd.IfChapterUsesPrefixLine">\IfChapterUsesPrefixLine</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.IfChapterUsesPrefixLine">101</a></li>
- <li><a name="cmd.IfExistskomafont"></a><a href="#cmd.IfExistskomafont">\IfExistskomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.IfExistskomafont">511</a></li>
- <li><a name="cmd.IfIsAliaskomafont"></a><a href="#cmd.IfIsAliaskomafont">\IfIsAliaskomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.IfIsAliaskomafont">511</a></li>
- <li><a name="cmd.IfLayerAtPageStyle"></a><a href="#cmd.IfLayerAtPageStyle">\IfLayerAtPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.IfLayerAtPageStyle">469</a></li>
- <li><a name="cmd.IfLayerExists"></a><a href="#cmd.IfLayerExists">\IfLayerExists</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.IfLayerExists">459</a></li>
- <li><a name="cmd.IfLayerPageStyleExists"></a><a href="#cmd.IfLayerPageStyleExists">\IfLayerPageStyleExists</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.IfLayerPageStyleExists">469</a></li>
- <li><a name="cmd.IfLayersAtPageStyle"></a><a href="#cmd.IfLayersAtPageStyle">\IfLayersAtPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.IfLayersAtPageStyle">469</a></li>
- <li><a name="cmd.IfRealLayerPageStyleExists"></a><a href="#cmd.IfRealLayerPageStyleExists">\IfRealLayerPageStyleExists</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.IfRealLayerPageStyleExists">469</a></li>
- <li><a name="cmd.IfSectionCommandStyleIs"></a><a href="#cmd.IfSectionCommandStyleIs">\IfSectionCommandStyleIs</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.IfSectionCommandStyleIs">525</a></li>
- <li><a name="cmd.IfSomeLayersAtPageStyle"></a><a href="#cmd.IfSomeLayersAtPageStyle">\IfSomeLayersAtPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.IfSomeLayersAtPageStyle">469</a></li>
- <li><a name="cmd.IfUseNumber"></a><a href="#cmd.IfUseNumber">\IfUseNumber</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.IfUseNumber">533</a></li>
+ <li><a name="cmd.IfExistskomafont"></a><a href="#cmd.IfExistskomafont">\IfExistskomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.IfExistskomafont">510</a></li>
+ <li><a name="cmd.IfIsAliaskomafont"></a><a href="#cmd.IfIsAliaskomafont">\IfIsAliaskomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.IfIsAliaskomafont">510</a></li>
+ <li><a name="cmd.IfLayerAtPageStyle"></a><a href="#cmd.IfLayerAtPageStyle">\IfLayerAtPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.IfLayerAtPageStyle">468</a></li>
+ <li><a name="cmd.IfLayerExists"></a><a href="#cmd.IfLayerExists">\IfLayerExists</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.IfLayerExists">458</a></li>
+ <li><a name="cmd.IfLayerPageStyleExists"></a><a href="#cmd.IfLayerPageStyleExists">\IfLayerPageStyleExists</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.IfLayerPageStyleExists">468</a></li>
+ <li><a name="cmd.IfLayersAtPageStyle"></a><a href="#cmd.IfLayersAtPageStyle">\IfLayersAtPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.IfLayersAtPageStyle">468</a></li>
+ <li><a name="cmd.IfRealLayerPageStyleExists"></a><a href="#cmd.IfRealLayerPageStyleExists">\IfRealLayerPageStyleExists</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.IfRealLayerPageStyleExists">468</a></li>
+ <li><a name="cmd.IfSectionCommandStyleIs"></a><a href="#cmd.IfSectionCommandStyleIs">\IfSectionCommandStyleIs</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.IfSectionCommandStyleIs">524</a></li>
+ <li><a name="cmd.IfSomeLayersAtPageStyle"></a><a href="#cmd.IfSomeLayersAtPageStyle">\IfSomeLayersAtPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.IfSomeLayersAtPageStyle">468</a></li>
+ <li><a name="cmd.IfUseNumber"></a><a href="#cmd.IfUseNumber">\IfUseNumber</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.IfUseNumber">532</a></li>
<li><a name="cmd.IfUsePrefixLine"></a><a href="#cmd.IfUsePrefixLine">\IfUsePrefixLine</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.IfUsePrefixLine">116</a></li>
- <li><a name="cmd.Ifattoclist"></a><a href="#cmd.Ifattoclist">\Ifattoclist</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.Ifattoclist">397</a></li>
+ <li><a name="cmd.Ifattoclist"></a><a href="#cmd.Ifattoclist">\Ifattoclist</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.Ifattoclist">396</a></li>
<li><a name="cmd.Ifdimen"></a><a href="#cmd.Ifdimen">\Ifdimen</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.Ifdimen">368</a></li>
<li><a name="cmd.Ifdvioutput"></a><a href="#cmd.Ifdvioutput">\Ifdvioutput</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.Ifdvioutput">368</a></li>
<li><a name="cmd.Ifiscount"></a><a href="#cmd.Ifiscount">\Ifiscount</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.Ifiscount">369</a></li>
@@ -297,8 +295,8 @@
<li><a name="cmd.Ifisnumexpr"></a><a href="#cmd.Ifisnumexpr">\Ifisnumexpr</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.Ifisnumexpr">369</a></li>
<li><a name="cmd.Ifisskip"></a><a href="#cmd.Ifisskip">\Ifisskip</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.Ifisskip">368</a></li>
<li><a name="cmd.Ifkomavar"></a><a href="#cmd.Ifkomavar">\Ifkomavar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.Ifkomavar">171</a></li>
- <li><a name="cmd.Ifkomavarempty*"></a><a href="#cmd.Ifkomavarempty*">\Ifkomavarempty*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.Ifkomavarempty*">171</a>, <a href="scrguide.pdf#desc:scrlttr2-experts.cmd.Ifkomavarempty*">539</a></li>
- <li><a name="cmd.Ifkomavarempty"></a><a href="#cmd.Ifkomavarempty">\Ifkomavarempty</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.Ifkomavarempty">171</a>, <a href="scrguide.pdf#desc:scrlttr2-experts.cmd.Ifkomavarempty">539</a></li>
+ <li><a name="cmd.Ifkomavarempty*"></a><a href="#cmd.Ifkomavarempty*">\Ifkomavarempty*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.Ifkomavarempty*">171</a>, <a href="scrguide.pdf#desc:scrlttr2-experts.cmd.Ifkomavarempty*">538</a></li>
+ <li><a name="cmd.Ifkomavarempty"></a><a href="#cmd.Ifkomavarempty">\Ifkomavarempty</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.Ifkomavarempty">171</a>, <a href="scrguide.pdf#desc:scrlttr2-experts.cmd.Ifkomavarempty">538</a></li>
<li><a name="cmd.Ifnotundefined"></a><a href="#cmd.Ifnotundefined">\Ifnotundefined</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.Ifnotundefined">367</a></li>
<li><a name="cmd.Ifnumber"></a><a href="#cmd.Ifnumber">\Ifnumber</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.Ifnumber">369</a></li>
<li><a name="cmd.Ifnumbered"></a><a href="#cmd.Ifnumbered">\Ifnumbered</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.Ifnumbered">120</a></li>
@@ -308,111 +306,111 @@
<li><a name="cmd.Ifstr"></a><a href="#cmd.Ifstr">\Ifstr</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.Ifstr">367</a></li>
<li><a name="cmd.Ifstrstart"></a><a href="#cmd.Ifstrstart">\Ifstrstart</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.Ifstrstart">367</a></li>
<li><a name="cmd.Ifthispageodd"></a><a href="#cmd.Ifthispageodd">\Ifthispageodd</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.Ifthispageodd">237</a>, <a href="scrguide.pdf#desc:scrextend.cmd.Ifthispageodd">316</a>, <a href="scrguide.pdf#desc:maincls.cmd.Ifthispageodd">83</a></li>
- <li><a name="cmd.Iftocfeature"></a><a href="#cmd.Iftocfeature">\Iftocfeature</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.Iftocfeature">409</a></li>
+ <li><a name="cmd.Iftocfeature"></a><a href="#cmd.Iftocfeature">\Iftocfeature</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.Iftocfeature">408</a></li>
<li><a name="cmd.Ifundefinedorrelax"></a><a href="#cmd.Ifundefinedorrelax">\Ifundefinedorrelax</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.Ifundefinedorrelax">367</a></li>
<li><a name="cmd.Ifunnumbered"></a><a href="#cmd.Ifunnumbered">\Ifunnumbered</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.Ifunnumbered">120</a></li>
<li><a name="cmd.InputAddressFile"></a><a href="#cmd.InputAddressFile">\InputAddressFile</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scraddr.cmd.InputAddressFile">300</a></li>
<li><a name="cmd.IsoToday"></a><a href="#cmd.IsoToday">\IsoToday</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrdate.cmd.IsoToday">295</a></li>
- <li><a name="cmd.KOMAClassName"></a><a href="#cmd.KOMAClassName">\KOMAClassName</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.KOMAClassName">507</a></li>
+ <li><a name="cmd.KOMAClassName"></a><a href="#cmd.KOMAClassName">\KOMAClassName</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.KOMAClassName">506</a></li>
<li><a name="cmd.KOMAScript"></a><a href="#cmd.KOMAScript">\KOMAScript</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.KOMAScript">374</a></li>
<li><a name="cmd.KOMAScriptVersion"></a><a href="#cmd.KOMAScriptVersion">\KOMAScriptVersion</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.KOMAScriptVersion">375</a></li>
- <li><a name="cmd.KOMAoption"></a><a href="#cmd.KOMAoption">\KOMAoption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.KOMAoption">163</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.KOMAoption">265</a>, <a href="scrguide.pdf#desc:scrextend.cmd.KOMAoption">306</a>, <a href="scrguide.pdf#desc:typearea.cmd.KOMAoption">32</a>, <a href="scrguide.pdf#desc:scrjura.cmd.KOMAoption">326</a>, <a href="scrguide.pdf#desc:scrhack.cmd.KOMAoption">439</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.KOMAoption">445</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.KOMAoption">489</a>, <a href="scrguide.pdf#desc:maincls.cmd.KOMAoption">57</a></li>
- <li><a name="cmd.KOMAoptions"></a><a href="#cmd.KOMAoptions">\KOMAoptions</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.KOMAoptions">163</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.KOMAoptions">265</a>, <a href="scrguide.pdf#desc:scrextend.cmd.KOMAoptions">306</a>, <a href="scrguide.pdf#desc:typearea.cmd.KOMAoptions">32</a>, <a href="scrguide.pdf#desc:scrjura.cmd.KOMAoptions">326</a>, <a href="scrguide.pdf#desc:scrhack.cmd.KOMAoptions">439</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.KOMAoptions">445</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.KOMAoptions">489</a>, <a href="scrguide.pdf#desc:maincls.cmd.KOMAoptions">57</a></li>
+ <li><a name="cmd.KOMAoption"></a><a href="#cmd.KOMAoption">\KOMAoption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.KOMAoption">163</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.KOMAoption">265</a>, <a href="scrguide.pdf#desc:scrextend.cmd.KOMAoption">306</a>, <a href="scrguide.pdf#desc:typearea.cmd.KOMAoption">32</a>, <a href="scrguide.pdf#desc:scrjura.cmd.KOMAoption">326</a>, <a href="scrguide.pdf#desc:scrhack.cmd.KOMAoption">438</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.KOMAoption">444</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.KOMAoption">488</a>, <a href="scrguide.pdf#desc:maincls.cmd.KOMAoption">57</a></li>
+ <li><a name="cmd.KOMAoptions"></a><a href="#cmd.KOMAoptions">\KOMAoptions</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.KOMAoptions">163</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.KOMAoptions">265</a>, <a href="scrguide.pdf#desc:scrextend.cmd.KOMAoptions">306</a>, <a href="scrguide.pdf#desc:typearea.cmd.KOMAoptions">32</a>, <a href="scrguide.pdf#desc:scrjura.cmd.KOMAoptions">326</a>, <a href="scrguide.pdf#desc:scrhack.cmd.KOMAoptions">438</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.KOMAoptions">444</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.KOMAoptions">488</a>, <a href="scrguide.pdf#desc:maincls.cmd.KOMAoptions">57</a></li>
<li><a name="cmd.LastName"></a><a href="#cmd.LastName">\LastName</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scraddr.cmd.LastName">301</a></li>
- <li><a name="cmd.LastTOCLevelWasHigher"></a><a href="#cmd.LastTOCLevelWasHigher">\LastTOCLevelWasHigher</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.LastTOCLevelWasHigher">424</a></li>
- <li><a name="cmd.LastTOCLevelWasLower"></a><a href="#cmd.LastTOCLevelWasLower">\LastTOCLevelWasLower</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.LastTOCLevelWasLower">424</a></li>
- <li><a name="cmd.LastTOCLevelWasSame"></a><a href="#cmd.LastTOCLevelWasSame">\LastTOCLevelWasSame</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.LastTOCLevelWasSame">424</a></li>
- <li><a name="cmd.LenToUnit"></a><a href="#cmd.LenToUnit">\LenToUnit</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.LenToUnit">457</a></li>
- <li><a name="cmd.MakeMarkcase"></a><a href="#cmd.MakeMarkcase">\MakeMarkcase</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.MakeMarkcase">284</a>, <a href="scrguide.pdf#desc:tocbasic.cmd.MakeMarkcase">405</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.MakeMarkcase">472</a></li>
- <li><a name="cmd.ModifyLayer"></a><a href="#cmd.ModifyLayer">\ModifyLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ModifyLayer">449</a></li>
- <li><a name="cmd.ModifyLayerPageStyleOptions"></a><a href="#cmd.ModifyLayerPageStyleOptions">\ModifyLayerPageStyleOptions</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ModifyLayerPageStyleOptions">468</a></li>
- <li><a name="cmd.ModifyLayers"></a><a href="#cmd.ModifyLayers">\ModifyLayers</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ModifyLayers">457</a></li>
+ <li><a name="cmd.LastTOCLevelWasHigher"></a><a href="#cmd.LastTOCLevelWasHigher">\LastTOCLevelWasHigher</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.LastTOCLevelWasHigher">423</a></li>
+ <li><a name="cmd.LastTOCLevelWasLower"></a><a href="#cmd.LastTOCLevelWasLower">\LastTOCLevelWasLower</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.LastTOCLevelWasLower">423</a></li>
+ <li><a name="cmd.LastTOCLevelWasSame"></a><a href="#cmd.LastTOCLevelWasSame">\LastTOCLevelWasSame</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.LastTOCLevelWasSame">423</a></li>
+ <li><a name="cmd.LenToUnit"></a><a href="#cmd.LenToUnit">\LenToUnit</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.LenToUnit">456</a></li>
+ <li><a name="cmd.MakeMarkcase"></a><a href="#cmd.MakeMarkcase">\MakeMarkcase</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.MakeMarkcase">284</a>, <a href="scrguide.pdf#desc:tocbasic.cmd.MakeMarkcase">404</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.MakeMarkcase">471</a></li>
+ <li><a name="cmd.ModifyLayer"></a><a href="#cmd.ModifyLayer">\ModifyLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ModifyLayer">448</a></li>
+ <li><a name="cmd.ModifyLayerPageStyleOptions"></a><a href="#cmd.ModifyLayerPageStyleOptions">\ModifyLayerPageStyleOptions</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ModifyLayerPageStyleOptions">467</a></li>
+ <li><a name="cmd.ModifyLayers"></a><a href="#cmd.ModifyLayers">\ModifyLayers</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ModifyLayers">456</a></li>
<li><a name="cmd.Name"></a><a href="#cmd.Name">\Name</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scraddr.cmd.Name">301</a></li>
<li><a name="cmd.PackageInfoNoLine"></a><a href="#cmd.PackageInfoNoLine">\PackageInfoNoLine</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.PackageInfoNoLine">375</a></li>
- <li><a name="cmd.PreventPackageFromLoading*"></a><a href="#cmd.PreventPackageFromLoading*">\PreventPackageFromLoading*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.PreventPackageFromLoading*">390</a></li>
- <li><a name="cmd.PreventPackageFromLoading"></a><a href="#cmd.PreventPackageFromLoading">\PreventPackageFromLoading</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.PreventPackageFromLoading">390</a></li>
- <li><a name="cmd.ProvideLayer"></a><a href="#cmd.ProvideLayer">\ProvideLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ProvideLayer">449</a></li>
- <li><a name="cmd.ProvideNoteColumn"></a><a href="#cmd.ProvideNoteColumn">\ProvideNoteColumn</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.ProvideNoteColumn">492</a></li>
- <li><a name="cmd.ProvidePageStyleAlias"></a><a href="#cmd.ProvidePageStyleAlias">\ProvidePageStyleAlias</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ProvidePageStyleAlias">461</a></li>
- <li><a name="cmd.ProvidePageStyleByLayers"></a><a href="#cmd.ProvidePageStyleByLayers">\ProvidePageStyleByLayers</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ProvidePageStyleByLayers">462</a></li>
- <li><a name="cmd.ProvideSectionCommand"></a><a href="#cmd.ProvideSectionCommand">\ProvideSectionCommand</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.ProvideSectionCommand">513</a></li>
- <li><a name="cmd.ProvideSectionCommands"></a><a href="#cmd.ProvideSectionCommands">\ProvideSectionCommands</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.ProvideSectionCommands">524</a></li>
- <li><a name="cmd.RedeclareLayer"></a><a href="#cmd.RedeclareLayer">\RedeclareLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.RedeclareLayer">449</a></li>
- <li><a name="cmd.RedeclareNoteColumn"></a><a href="#cmd.RedeclareNoteColumn">\RedeclareNoteColumn</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.RedeclareNoteColumn">492</a></li>
- <li><a name="cmd.RedeclarePageStyleAlias"></a><a href="#cmd.RedeclarePageStyleAlias">\RedeclarePageStyleAlias</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.RedeclarePageStyleAlias">461</a></li>
- <li><a name="cmd.RedeclarePageStyleByLayers"></a><a href="#cmd.RedeclarePageStyleByLayers">\RedeclarePageStyleByLayers</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.RedeclarePageStyleByLayers">462</a></li>
- <li><a name="cmd.RedeclareSectionCommand"></a><a href="#cmd.RedeclareSectionCommand">\RedeclareSectionCommand</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.RedeclareSectionCommand">513</a></li>
- <li><a name="cmd.RedeclareSectionCommands"></a><a href="#cmd.RedeclareSectionCommands">\RedeclareSectionCommands</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.RedeclareSectionCommands">524</a></li>
+ <li><a name="cmd.PreventPackageFromLoading*"></a><a href="#cmd.PreventPackageFromLoading*">\PreventPackageFromLoading*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.PreventPackageFromLoading*">389</a></li>
+ <li><a name="cmd.PreventPackageFromLoading"></a><a href="#cmd.PreventPackageFromLoading">\PreventPackageFromLoading</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.PreventPackageFromLoading">389</a></li>
+ <li><a name="cmd.ProvideLayer"></a><a href="#cmd.ProvideLayer">\ProvideLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ProvideLayer">448</a></li>
+ <li><a name="cmd.ProvideNoteColumn"></a><a href="#cmd.ProvideNoteColumn">\ProvideNoteColumn</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.ProvideNoteColumn">491</a></li>
+ <li><a name="cmd.ProvidePageStyleAlias"></a><a href="#cmd.ProvidePageStyleAlias">\ProvidePageStyleAlias</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ProvidePageStyleAlias">460</a></li>
+ <li><a name="cmd.ProvidePageStyleByLayers"></a><a href="#cmd.ProvidePageStyleByLayers">\ProvidePageStyleByLayers</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.ProvidePageStyleByLayers">461</a></li>
+ <li><a name="cmd.ProvideSectionCommand"></a><a href="#cmd.ProvideSectionCommand">\ProvideSectionCommand</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.ProvideSectionCommand">512</a></li>
+ <li><a name="cmd.ProvideSectionCommands"></a><a href="#cmd.ProvideSectionCommands">\ProvideSectionCommands</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.ProvideSectionCommands">523</a></li>
+ <li><a name="cmd.RedeclareLayer"></a><a href="#cmd.RedeclareLayer">\RedeclareLayer</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.RedeclareLayer">448</a></li>
+ <li><a name="cmd.RedeclareNoteColumn"></a><a href="#cmd.RedeclareNoteColumn">\RedeclareNoteColumn</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.RedeclareNoteColumn">491</a></li>
+ <li><a name="cmd.RedeclarePageStyleAlias"></a><a href="#cmd.RedeclarePageStyleAlias">\RedeclarePageStyleAlias</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.RedeclarePageStyleAlias">460</a></li>
+ <li><a name="cmd.RedeclarePageStyleByLayers"></a><a href="#cmd.RedeclarePageStyleByLayers">\RedeclarePageStyleByLayers</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.RedeclarePageStyleByLayers">461</a></li>
+ <li><a name="cmd.RedeclareSectionCommand"></a><a href="#cmd.RedeclareSectionCommand">\RedeclareSectionCommand</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.RedeclareSectionCommand">512</a></li>
+ <li><a name="cmd.RedeclareSectionCommands"></a><a href="#cmd.RedeclareSectionCommands">\RedeclareSectionCommands</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.RedeclareSectionCommands">523</a></li>
<li><a name="cmd.RelaxFamilyKey"></a><a href="#cmd.RelaxFamilyKey">\RelaxFamilyKey</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.RelaxFamilyKey">354</a></li>
- <li><a name="cmd.RemoveLayersFromPageStyle"></a><a href="#cmd.RemoveLayersFromPageStyle">\RemoveLayersFromPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.RemoveLayersFromPageStyle">467</a></li>
- <li><a name="cmd.ReplaceClass"></a><a href="#cmd.ReplaceClass">\ReplaceClass</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.ReplaceClass">387</a></li>
+ <li><a name="cmd.RemoveLayersFromPageStyle"></a><a href="#cmd.RemoveLayersFromPageStyle">\RemoveLayersFromPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.RemoveLayersFromPageStyle">466</a></li>
+ <li><a name="cmd.ReplaceClass"></a><a href="#cmd.ReplaceClass">\ReplaceClass</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.ReplaceClass">388</a></li>
<li><a name="cmd.ReplaceInput"></a><a href="#cmd.ReplaceInput">\ReplaceInput</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.ReplaceInput">387</a></li>
- <li><a name="cmd.ReplacePackage"></a><a href="#cmd.ReplacePackage">\ReplacePackage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.ReplacePackage">387</a></li>
+ <li><a name="cmd.ReplacePackage"></a><a href="#cmd.ReplacePackage">\ReplacePackage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.ReplacePackage">388</a></li>
<li><a name="cmd.ResetPreventPackageFromLoading"></a><a href="#cmd.ResetPreventPackageFromLoading">\ResetPreventPackageFromLoading</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.ResetPreventPackageFromLoading">390</a></li>
- <li><a name="cmd.SecDef"></a><a href="#cmd.SecDef">\SecDef</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.SecDef">533</a></li>
+ <li><a name="cmd.SecDef"></a><a href="#cmd.SecDef">\SecDef</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.SecDef">532</a></li>
<li><a name="cmd.Sentence"></a><a href="#cmd.Sentence">\Sentence</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrjura.cmd.Sentence">336</a></li>
<li><a name="cmd.SplitDoHook"></a><a href="#cmd.SplitDoHook">\SplitDoHook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.SplitDoHook">379</a></li>
<li><a name="cmd.StorePreventPackageFromLoading"></a><a href="#cmd.StorePreventPackageFromLoading">\StorePreventPackageFromLoading</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.StorePreventPackageFromLoading">390</a></li>
<li><a name="cmd.SubClause"></a><a href="#cmd.SubClause">\SubClause</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrjura.cmd.SubClause">330</a></li>
- <li><a name="cmd.TOCEntryStyleInitCode"></a><a href="#cmd.TOCEntryStyleInitCode">\TOCEntryStyleInitCode</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.TOCEntryStyleInitCode">424</a></li>
- <li><a name="cmd.TOCEntryStyleStartInitCode"></a><a href="#cmd.TOCEntryStyleStartInitCode">\TOCEntryStyleStartInitCode</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.TOCEntryStyleStartInitCode">424</a></li>
- <li><a name="cmd.TOCLineLeaderFill"></a><a href="#cmd.TOCLineLeaderFill">\TOCLineLeaderFill</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.TOCLineLeaderFill">425</a></li>
- <li><a name="cmd.TOCclone"></a><a href="#cmd.TOCclone">\TOCclone</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrwfile.cmd.TOCclone">395</a></li>
+ <li><a name="cmd.TOCEntryStyleInitCode"></a><a href="#cmd.TOCEntryStyleInitCode">\TOCEntryStyleInitCode</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.TOCEntryStyleInitCode">423</a></li>
+ <li><a name="cmd.TOCEntryStyleStartInitCode"></a><a href="#cmd.TOCEntryStyleStartInitCode">\TOCEntryStyleStartInitCode</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.TOCEntryStyleStartInitCode">423</a></li>
+ <li><a name="cmd.TOCLineLeaderFill"></a><a href="#cmd.TOCLineLeaderFill">\TOCLineLeaderFill</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.TOCLineLeaderFill">424</a></li>
+ <li><a name="cmd.TOCclone"></a><a href="#cmd.TOCclone">\TOCclone</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrwfile.cmd.TOCclone">394</a></li>
<li><a name="cmd.Telephone"></a><a href="#cmd.Telephone">\Telephone</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scraddr.cmd.Telephone">301</a></li>
<li><a name="cmd.UnPreventPackageFromLoading*"></a><a href="#cmd.UnPreventPackageFromLoading*">\UnPreventPackageFromLoading*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.UnPreventPackageFromLoading*">391</a></li>
<li><a name="cmd.UnPreventPackageFromLoading"></a><a href="#cmd.UnPreventPackageFromLoading">\UnPreventPackageFromLoading</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.UnPreventPackageFromLoading">391</a></li>
<li><a name="cmd.UnReplaceClass"></a><a href="#cmd.UnReplaceClass">\UnReplaceClass</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.UnReplaceClass">389</a></li>
<li><a name="cmd.UnReplaceInput"></a><a href="#cmd.UnReplaceInput">\UnReplaceInput</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.UnReplaceInput">389</a></li>
<li><a name="cmd.UnReplacePackage"></a><a href="#cmd.UnReplacePackage">\UnReplacePackage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlfile.cmd.UnReplacePackage">389</a></li>
- <li><a name="cmd.UnifyLayersAtPageStyle"></a><a href="#cmd.UnifyLayersAtPageStyle">\UnifyLayersAtPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.UnifyLayersAtPageStyle">468</a></li>
+ <li><a name="cmd.UnifyLayersAtPageStyle"></a><a href="#cmd.UnifyLayersAtPageStyle">\UnifyLayersAtPageStyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.UnifyLayersAtPageStyle">467</a></li>
<li><a name="cmd.XdivY"></a><a href="#cmd.XdivY">\XdivY</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.XdivY">376</a></li>
<li><a name="cmd.XmodY"></a><a href="#cmd.XmodY">\XmodY</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.XmodY">376</a></li>
- <li><a name="cmd.activateareas"></a><a href="#cmd.activateareas">\activateareas</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.activateareas">504</a></li>
+ <li><a name="cmd.activateareas"></a><a href="#cmd.activateareas">\activateareas</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.activateareas">503</a></li>
<li><a name="cmd.addchap*"></a><a href="#cmd.addchap*">\addchap*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.addchap*">112</a></li>
<li><a name="cmd.addchap"></a><a href="#cmd.addchap">\addchap</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.addchap">112</a></li>
<li><a name="cmd.addchapmark"></a><a href="#cmd.addchapmark">\addchapmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.addchapmark">118</a></li>
- <li><a name="cmd.addchaptertocentry"></a><a href="#cmd.addchaptertocentry">\addchaptertocentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addchaptertocentry">509</a></li>
- <li><a name="cmd.addcontentslinetoeachtocfile"></a><a href="#cmd.addcontentslinetoeachtocfile">\addcontentslinetoeachtocfile</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.addcontentslinetoeachtocfile">403</a></li>
- <li><a name="cmd.addparagraphtocentry"></a><a href="#cmd.addparagraphtocentry">\addparagraphtocentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addparagraphtocentry">509</a></li>
+ <li><a name="cmd.addchaptertocentry"></a><a href="#cmd.addchaptertocentry">\addchaptertocentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addchaptertocentry">508</a></li>
+ <li><a name="cmd.addcontentslinetoeachtocfile"></a><a href="#cmd.addcontentslinetoeachtocfile">\addcontentslinetoeachtocfile</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.addcontentslinetoeachtocfile">402</a></li>
+ <li><a name="cmd.addparagraphtocentry"></a><a href="#cmd.addparagraphtocentry">\addparagraphtocentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addparagraphtocentry">508</a></li>
<li><a name="cmd.addpart*"></a><a href="#cmd.addpart*">\addpart*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.addpart*">112</a></li>
<li><a name="cmd.addpart"></a><a href="#cmd.addpart">\addpart</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.addpart">112</a></li>
- <li><a name="cmd.addparttocentry"></a><a href="#cmd.addparttocentry">\addparttocentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addparttocentry">509</a></li>
+ <li><a name="cmd.addparttocentry"></a><a href="#cmd.addparttocentry">\addparttocentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addparttocentry">508</a></li>
<li><a name="cmd.addrchar"></a><a href="#cmd.addrchar">\addrchar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.addrchar">262</a>, <a href="scrguide.pdf#desc:scraddr.cmd.addrchar">300</a></li>
<li><a name="cmd.addrentry"></a><a href="#cmd.addrentry">\addrentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.addrentry">260</a>, <a href="scrguide.pdf#desc:scraddr.cmd.addrentry">300</a></li>
<li><a name="cmd.addsec*"></a><a href="#cmd.addsec*">\addsec*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.addsec*">112</a></li>
<li><a name="cmd.addsec"></a><a href="#cmd.addsec">\addsec</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.addsec">112</a></li>
<li><a name="cmd.addsecmark"></a><a href="#cmd.addsecmark">\addsecmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.addsecmark">118</a></li>
- <li><a name="cmd.addsectiontocentry"></a><a href="#cmd.addsectiontocentry">\addsectiontocentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addsectiontocentry">509</a></li>
- <li><a name="cmd.addsubparagraphtocentry"></a><a href="#cmd.addsubparagraphtocentry">\addsubparagraphtocentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addsubparagraphtocentry">509</a></li>
- <li><a name="cmd.addsubsectiontocentry"></a><a href="#cmd.addsubsectiontocentry">\addsubsectiontocentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addsubsectiontocentry">509</a></li>
- <li><a name="cmd.addsubsubsectiontocentry"></a><a href="#cmd.addsubsubsectiontocentry">\addsubsubsectiontocentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addsubsubsectiontocentry">509</a></li>
- <li><a name="cmd.addtocentrydefault"></a><a href="#cmd.addtocentrydefault">\addtocentrydefault</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addtocentrydefault">508</a></li>
- <li><a name="cmd.addtoeachtocfile"></a><a href="#cmd.addtoeachtocfile">\addtoeachtocfile</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.addtoeachtocfile">402</a></li>
- <li><a name="cmd.addtokomafont"></a><a href="#cmd.addtokomafont">\addtokomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.addtokomafont">191</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.addtokomafont">267</a>, <a href="scrguide.pdf#desc:scrextend.cmd.addtokomafont">309</a>, <a href="scrguide.pdf#desc:scrjura.cmd.addtokomafont">326</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.addtokomafont">490</a>, <a href="scrguide.pdf#desc:maincls.cmd.addtokomafont">61</a></li>
- <li><a name="cmd.addtokomafontgobblelist"></a><a href="#cmd.addtokomafontgobblelist">\addtokomafontgobblelist</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addtokomafontgobblelist">510</a></li>
- <li><a name="cmd.addtokomafontonearglist"></a><a href="#cmd.addtokomafontonearglist">\addtokomafontonearglist</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addtokomafontonearglist">510</a></li>
- <li><a name="cmd.addtokomafontrelaxlist"></a><a href="#cmd.addtokomafontrelaxlist">\addtokomafontrelaxlist</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addtokomafontrelaxlist">510</a></li>
+ <li><a name="cmd.addsectiontocentry"></a><a href="#cmd.addsectiontocentry">\addsectiontocentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addsectiontocentry">508</a></li>
+ <li><a name="cmd.addsubparagraphtocentry"></a><a href="#cmd.addsubparagraphtocentry">\addsubparagraphtocentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addsubparagraphtocentry">508</a></li>
+ <li><a name="cmd.addsubsectiontocentry"></a><a href="#cmd.addsubsectiontocentry">\addsubsectiontocentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addsubsectiontocentry">508</a></li>
+ <li><a name="cmd.addsubsubsectiontocentry"></a><a href="#cmd.addsubsubsectiontocentry">\addsubsubsectiontocentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addsubsubsectiontocentry">508</a></li>
+ <li><a name="cmd.addtocentrydefault"></a><a href="#cmd.addtocentrydefault">\addtocentrydefault</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addtocentrydefault">507</a></li>
+ <li><a name="cmd.addtoeachtocfile"></a><a href="#cmd.addtoeachtocfile">\addtoeachtocfile</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.addtoeachtocfile">401</a></li>
+ <li><a name="cmd.addtokomafont"></a><a href="#cmd.addtokomafont">\addtokomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.addtokomafont">191</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.addtokomafont">267</a>, <a href="scrguide.pdf#desc:scrextend.cmd.addtokomafont">309</a>, <a href="scrguide.pdf#desc:scrjura.cmd.addtokomafont">326</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.addtokomafont">489</a>, <a href="scrguide.pdf#desc:maincls.cmd.addtokomafont">61</a></li>
+ <li><a name="cmd.addtokomafontgobblelist"></a><a href="#cmd.addtokomafontgobblelist">\addtokomafontgobblelist</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addtokomafontgobblelist">509</a></li>
+ <li><a name="cmd.addtokomafontonearglist"></a><a href="#cmd.addtokomafontonearglist">\addtokomafontonearglist</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addtokomafontonearglist">509</a></li>
+ <li><a name="cmd.addtokomafontrelaxlist"></a><a href="#cmd.addtokomafontrelaxlist">\addtokomafontrelaxlist</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.addtokomafontrelaxlist">509</a></li>
<li><a name="cmd.addtolengthplength"></a><a href="#cmd.addtolengthplength">\addtolengthplength</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.addtolengthplength">178</a></li>
<li><a name="cmd.addtoplength"></a><a href="#cmd.addtoplength">\addtoplength</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.addtoplength">178</a></li>
- <li><a name="cmd.addtoreffields"></a><a href="#cmd.addtoreffields">\addtoreffields</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.addtoreffields">538</a></li>
- <li><a name="cmd.addtotoclist"></a><a href="#cmd.addtotoclist">\addtotoclist</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.addtotoclist">398</a></li>
- <li><a name="cmd.addxcontentsline"></a><a href="#cmd.addxcontentsline">\addxcontentsline</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.addxcontentsline">402</a></li>
- <li><a name="cmd.addxcontentslinetoeachtocfile"></a><a href="#cmd.addxcontentslinetoeachtocfile">\addxcontentslinetoeachtocfile</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.addxcontentslinetoeachtocfile">403</a></li>
+ <li><a name="cmd.addtoreffields"></a><a href="#cmd.addtoreffields">\addtoreffields</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.addtoreffields">537</a></li>
+ <li><a name="cmd.addtotoclist"></a><a href="#cmd.addtotoclist">\addtotoclist</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.addtotoclist">397</a></li>
+ <li><a name="cmd.addxcontentsline"></a><a href="#cmd.addxcontentsline">\addxcontentsline</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.addxcontentsline">401</a></li>
+ <li><a name="cmd.addxcontentslinetoeachtocfile"></a><a href="#cmd.addxcontentslinetoeachtocfile">\addxcontentslinetoeachtocfile</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.addxcontentslinetoeachtocfile">402</a></li>
<li><a name="cmd.adrchar"></a><a href="#cmd.adrchar">\adrchar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.adrchar">262</a>, <a href="scrguide.pdf#desc:scraddr.cmd.adrchar">300</a></li>
<li><a name="cmd.adrentry"></a><a href="#cmd.adrentry">\adrentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.adrentry">259</a>, <a href="scrguide.pdf#desc:scraddr.cmd.adrentry">300</a></li>
- <li><a name="cmd.aliaskomafont"></a><a href="#cmd.aliaskomafont">\aliaskomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.aliaskomafont">510</a></li>
+ <li><a name="cmd.aliaskomafont"></a><a href="#cmd.aliaskomafont">\aliaskomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.aliaskomafont">509</a></li>
<li><a name="cmd.and"></a><a href="#cmd.and">\and</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.and">313</a>, <a href="scrguide.pdf#desc:maincls.cmd.and">70</a></li>
<li><a name="cmd.appendix"></a><a href="#cmd.appendix">\appendix</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.appendix">156</a></li>
- <li><a name="cmd.appendixmore"></a><a href="#cmd.appendixmore">\appendixmore</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.appendixmore">535</a></li>
- <li><a name="cmd.areaset"></a><a href="#cmd.areaset">\areaset</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea.cmd.areaset">47</a>, <a href="scrguide.pdf#desc:typearea-experts.cmd.areaset">504</a></li>
+ <li><a name="cmd.appendixmore"></a><a href="#cmd.appendixmore">\appendixmore</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.appendixmore">534</a></li>
+ <li><a name="cmd.areaset"></a><a href="#cmd.areaset">\areaset</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea.cmd.areaset">47</a>, <a href="scrguide.pdf#desc:typearea-experts.cmd.areaset">503</a></li>
<li><a name="cmd.author"></a><a href="#cmd.author">\author</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.author">313</a>, <a href="scrguide.pdf#desc:maincls.cmd.author">70</a></li>
<li><a name="cmd.autodot"></a><a href="#cmd.autodot">\autodot</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.autodot">116</a></li>
- <li><a name="cmd.automark*"></a><a href="#cmd.automark*">\automark*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.automark*">281</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.automark*">471</a></li>
- <li><a name="cmd.automark"></a><a href="#cmd.automark">\automark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.automark">281</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.automark">471</a></li>
+ <li><a name="cmd.automark*"></a><a href="#cmd.automark*">\automark*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.automark*">281</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.automark*">470</a></li>
+ <li><a name="cmd.automark"></a><a href="#cmd.automark">\automark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.automark">281</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.automark">470</a></li>
<li><a name="cmd.backmatter"></a><a href="#cmd.backmatter">\backmatter</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.backmatter">99</a></li>
- <li><a name="cmd.bankname"></a><a href="#cmd.bankname">\bankname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.bankname">545</a></li>
- <li><a name="cmd.bib@beginhook"></a><a href="#cmd.bib@beginhook">\bib@beginhook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.bib@beginhook">536</a></li>
- <li><a name="cmd.bib@endhook"></a><a href="#cmd.bib@endhook">\bib@endhook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.bib@endhook">536</a></li>
+ <li><a name="cmd.bankname"></a><a href="#cmd.bankname">\bankname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.bankname">544</a></li>
+ <li><a name="cmd.bib@beginhook"></a><a href="#cmd.bib@beginhook">\bib@beginhook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.bib@beginhook">535</a></li>
+ <li><a name="cmd.bib@endhook"></a><a href="#cmd.bib@endhook">\bib@endhook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.bib@endhook">535</a></li>
<li><a name="cmd.caption"></a><a href="#cmd.caption">\caption</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.caption">139</a></li>
<li><a name="cmd.captionabove"></a><a href="#cmd.captionabove">\captionabove</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.captionabove">139</a></li>
<li><a name="cmd.captionaboveof"></a><a href="#cmd.captionaboveof">\captionaboveof</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.captionaboveof">140</a></li>
@@ -420,36 +418,36 @@
<li><a name="cmd.captionbelowof"></a><a href="#cmd.captionbelowof">\captionbelowof</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.captionbelowof">140</a></li>
<li><a name="cmd.captionformat"></a><a href="#cmd.captionformat">\captionformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.captionformat">146</a></li>
<li><a name="cmd.captionof"></a><a href="#cmd.captionof">\captionof</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.captionof">140</a></li>
- <li><a name="cmd.captionsUKenglish"></a><a href="#cmd.captionsUKenglish">\captionsUKenglish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsUKenglish">546</a></li>
- <li><a name="cmd.captionsUSenglish"></a><a href="#cmd.captionsUSenglish">\captionsUSenglish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsUSenglish">546</a></li>
- <li><a name="cmd.captionsacadian"></a><a href="#cmd.captionsacadian">\captionsacadian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsacadian">546</a></li>
- <li><a name="cmd.captionsamerican"></a><a href="#cmd.captionsamerican">\captionsamerican</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsamerican">546</a></li>
- <li><a name="cmd.captionsaustralien"></a><a href="#cmd.captionsaustralien">\captionsaustralien</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsaustralien">546</a></li>
- <li><a name="cmd.captionsaustrian"></a><a href="#cmd.captionsaustrian">\captionsaustrian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsaustrian">546</a></li>
- <li><a name="cmd.captionsbritish"></a><a href="#cmd.captionsbritish">\captionsbritish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsbritish">546</a></li>
- <li><a name="cmd.captionscanadian"></a><a href="#cmd.captionscanadian">\captionscanadian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionscanadian">546</a></li>
- <li><a name="cmd.captionscanadien"></a><a href="#cmd.captionscanadien">\captionscanadien</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionscanadien">546</a></li>
- <li><a name="cmd.captionscroatian"></a><a href="#cmd.captionscroatian">\captionscroatian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionscroatian">546</a></li>
- <li><a name="cmd.captionsczech"></a><a href="#cmd.captionsczech">\captionsczech</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsczech">546</a></li>
- <li><a name="cmd.captionsdutch"></a><a href="#cmd.captionsdutch">\captionsdutch</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsdutch">546</a></li>
- <li><a name="cmd.captionsenglish"></a><a href="#cmd.captionsenglish">\captionsenglish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsenglish">546</a></li>
- <li><a name="cmd.captionsfinnish"></a><a href="#cmd.captionsfinnish">\captionsfinnish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsfinnish">546</a></li>
- <li><a name="cmd.captionsfrancais"></a><a href="#cmd.captionsfrancais">\captionsfrancais</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsfrancais">546</a></li>
- <li><a name="cmd.captionsfrench"></a><a href="#cmd.captionsfrench">\captionsfrench</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsfrench">546</a></li>
- <li><a name="cmd.captionsgerman"></a><a href="#cmd.captionsgerman">\captionsgerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsgerman">546</a></li>
- <li><a name="cmd.captionsitalian"></a><a href="#cmd.captionsitalian">\captionsitalian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsitalian">546</a></li>
- <li><a name="cmd.captionsnaustrian"></a><a href="#cmd.captionsnaustrian">\captionsnaustrian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsnaustrian">546</a></li>
- <li><a name="cmd.captionsnewzealand"></a><a href="#cmd.captionsnewzealand">\captionsnewzealand</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsnewzealand">546</a></li>
- <li><a name="cmd.captionsngerman"></a><a href="#cmd.captionsngerman">\captionsngerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsngerman">546</a></li>
- <li><a name="cmd.captionsnorsk"></a><a href="#cmd.captionsnorsk">\captionsnorsk</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsnorsk">546</a></li>
- <li><a name="cmd.captionsnswissgerman"></a><a href="#cmd.captionsnswissgerman">\captionsnswissgerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsnswissgerman">546</a></li>
- <li><a name="cmd.captionspolish"></a><a href="#cmd.captionspolish">\captionspolish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionspolish">546</a></li>
- <li><a name="cmd.captionsslovak"></a><a href="#cmd.captionsslovak">\captionsslovak</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsslovak">546</a></li>
- <li><a name="cmd.captionsspanish"></a><a href="#cmd.captionsspanish">\captionsspanish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsspanish">546</a></li>
- <li><a name="cmd.captionsswedish"></a><a href="#cmd.captionsswedish">\captionsswedish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsswedish">546</a></li>
- <li><a name="cmd.captionsswissgerman"></a><a href="#cmd.captionsswissgerman">\captionsswissgerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsswissgerman">546</a></li>
+ <li><a name="cmd.captionsUKenglish"></a><a href="#cmd.captionsUKenglish">\captionsUKenglish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsUKenglish">545</a></li>
+ <li><a name="cmd.captionsUSenglish"></a><a href="#cmd.captionsUSenglish">\captionsUSenglish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsUSenglish">545</a></li>
+ <li><a name="cmd.captionsacadian"></a><a href="#cmd.captionsacadian">\captionsacadian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsacadian">545</a></li>
+ <li><a name="cmd.captionsamerican"></a><a href="#cmd.captionsamerican">\captionsamerican</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsamerican">545</a></li>
+ <li><a name="cmd.captionsaustralien"></a><a href="#cmd.captionsaustralien">\captionsaustralien</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsaustralien">545</a></li>
+ <li><a name="cmd.captionsaustrian"></a><a href="#cmd.captionsaustrian">\captionsaustrian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsaustrian">545</a></li>
+ <li><a name="cmd.captionsbritish"></a><a href="#cmd.captionsbritish">\captionsbritish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsbritish">545</a></li>
+ <li><a name="cmd.captionscanadian"></a><a href="#cmd.captionscanadian">\captionscanadian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionscanadian">545</a></li>
+ <li><a name="cmd.captionscanadien"></a><a href="#cmd.captionscanadien">\captionscanadien</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionscanadien">545</a></li>
+ <li><a name="cmd.captionscroatian"></a><a href="#cmd.captionscroatian">\captionscroatian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionscroatian">545</a></li>
+ <li><a name="cmd.captionsczech"></a><a href="#cmd.captionsczech">\captionsczech</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsczech">545</a></li>
+ <li><a name="cmd.captionsdutch"></a><a href="#cmd.captionsdutch">\captionsdutch</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsdutch">545</a></li>
+ <li><a name="cmd.captionsenglish"></a><a href="#cmd.captionsenglish">\captionsenglish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsenglish">545</a></li>
+ <li><a name="cmd.captionsfinnish"></a><a href="#cmd.captionsfinnish">\captionsfinnish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsfinnish">545</a></li>
+ <li><a name="cmd.captionsfrancais"></a><a href="#cmd.captionsfrancais">\captionsfrancais</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsfrancais">545</a></li>
+ <li><a name="cmd.captionsfrench"></a><a href="#cmd.captionsfrench">\captionsfrench</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsfrench">545</a></li>
+ <li><a name="cmd.captionsgerman"></a><a href="#cmd.captionsgerman">\captionsgerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsgerman">545</a></li>
+ <li><a name="cmd.captionsitalian"></a><a href="#cmd.captionsitalian">\captionsitalian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsitalian">545</a></li>
+ <li><a name="cmd.captionsnaustrian"></a><a href="#cmd.captionsnaustrian">\captionsnaustrian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsnaustrian">545</a></li>
+ <li><a name="cmd.captionsnewzealand"></a><a href="#cmd.captionsnewzealand">\captionsnewzealand</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsnewzealand">545</a></li>
+ <li><a name="cmd.captionsngerman"></a><a href="#cmd.captionsngerman">\captionsngerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsngerman">545</a></li>
+ <li><a name="cmd.captionsnorsk"></a><a href="#cmd.captionsnorsk">\captionsnorsk</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsnorsk">545</a></li>
+ <li><a name="cmd.captionsnswissgerman"></a><a href="#cmd.captionsnswissgerman">\captionsnswissgerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsnswissgerman">545</a></li>
+ <li><a name="cmd.captionspolish"></a><a href="#cmd.captionspolish">\captionspolish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionspolish">545</a></li>
+ <li><a name="cmd.captionsslovak"></a><a href="#cmd.captionsslovak">\captionsslovak</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsslovak">545</a></li>
+ <li><a name="cmd.captionsspanish"></a><a href="#cmd.captionsspanish">\captionsspanish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsspanish">545</a></li>
+ <li><a name="cmd.captionsswedish"></a><a href="#cmd.captionsswedish">\captionsswedish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsswedish">545</a></li>
+ <li><a name="cmd.captionsswissgerman"></a><a href="#cmd.captionsswissgerman">\captionsswissgerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.captionsswissgerman">545</a></li>
<li><a name="cmd.cc"></a><a href="#cmd.cc">\cc</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.cc">185</a></li>
- <li><a name="cmd.ccname"></a><a href="#cmd.ccname">\ccname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.ccname">545</a></li>
+ <li><a name="cmd.ccname"></a><a href="#cmd.ccname">\ccname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.ccname">544</a></li>
<li><a name="cmd.cefoot*"></a><a href="#cmd.cefoot*">\cefoot*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.cefoot*">277</a></li>
<li><a name="cmd.cefoot"></a><a href="#cmd.cefoot">\cefoot</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.cefoot">274</a></li>
<li><a name="cmd.cehead*"></a><a href="#cmd.cehead*">\cehead*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.cehead*">273</a></li>
@@ -461,13 +459,13 @@
<li><a name="cmd.chapter*"></a><a href="#cmd.chapter*">\chapter*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.chapter*">111</a></li>
<li><a name="cmd.chapter"></a><a href="#cmd.chapter">\chapter</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.chapter">106</a></li>
<li><a name="cmd.chapterformat"></a><a href="#cmd.chapterformat">\chapterformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.chapterformat">116</a></li>
- <li><a name="cmd.chapterheadendvskip"></a><a href="#cmd.chapterheadendvskip">\chapterheadendvskip</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.chapterheadendvskip">525</a></li>
- <li><a name="cmd.chapterheadmidvskip"></a><a href="#cmd.chapterheadmidvskip">\chapterheadmidvskip</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.chapterheadmidvskip">525</a></li>
- <li><a name="cmd.chapterheadstartvskip"></a><a href="#cmd.chapterheadstartvskip">\chapterheadstartvskip</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.chapterheadstartvskip">525</a></li>
- <li><a name="cmd.chapterlinesformat"></a><a href="#cmd.chapterlinesformat">\chapterlinesformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.chapterlinesformat">528</a></li>
- <li><a name="cmd.chapterlineswithprefixformat"></a><a href="#cmd.chapterlineswithprefixformat">\chapterlineswithprefixformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.chapterlineswithprefixformat">528</a></li>
- <li><a name="cmd.chaptermark"></a><a href="#cmd.chaptermark">\chaptermark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.chaptermark">118</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.chaptermark">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.chaptermark">474</a></li>
- <li><a name="cmd.chaptermarkformat"></a><a href="#cmd.chaptermarkformat">\chaptermarkformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.chaptermarkformat">118</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.chaptermarkformat">286</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.chaptermarkformat">474</a></li>
+ <li><a name="cmd.chapterheadendvskip"></a><a href="#cmd.chapterheadendvskip">\chapterheadendvskip</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.chapterheadendvskip">524</a></li>
+ <li><a name="cmd.chapterheadmidvskip"></a><a href="#cmd.chapterheadmidvskip">\chapterheadmidvskip</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.chapterheadmidvskip">524</a></li>
+ <li><a name="cmd.chapterheadstartvskip"></a><a href="#cmd.chapterheadstartvskip">\chapterheadstartvskip</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.chapterheadstartvskip">524</a></li>
+ <li><a name="cmd.chapterlinesformat"></a><a href="#cmd.chapterlinesformat">\chapterlinesformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.chapterlinesformat">527</a></li>
+ <li><a name="cmd.chapterlineswithprefixformat"></a><a href="#cmd.chapterlineswithprefixformat">\chapterlineswithprefixformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.chapterlineswithprefixformat">527</a></li>
+ <li><a name="cmd.chaptermark"></a><a href="#cmd.chaptermark">\chaptermark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.chaptermark">118</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.chaptermark">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.chaptermark">473</a></li>
+ <li><a name="cmd.chaptermarkformat"></a><a href="#cmd.chaptermarkformat">\chaptermarkformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.chaptermarkformat">118</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.chaptermarkformat">286</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.chaptermarkformat">473</a></li>
<li><a name="cmd.chapternumdepth"></a><a href="#cmd.chapternumdepth">\chapternumdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.chapternumdepth">120</a></li>
<li><a name="cmd.chapterpagestyle"></a><a href="#cmd.chapterpagestyle">\chapterpagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.chapterpagestyle">87</a></li>
<li><a name="cmd.chead*"></a><a href="#cmd.chead*">\chead*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.chead*">279</a></li>
@@ -487,12 +485,12 @@
<li><a name="cmd.cleardoublepageusingstyle"></a><a href="#cmd.cleardoublepageusingstyle">\cleardoublepageusingstyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.cleardoublepageusingstyle">243</a>, <a href="scrguide.pdf#desc:scrextend.cmd.cleardoublepageusingstyle">317</a>, <a href="scrguide.pdf#desc:maincls.cmd.cleardoublepageusingstyle">92</a></li>
<li><a name="cmd.cleardoubleplainpage"></a><a href="#cmd.cleardoubleplainpage">\cleardoubleplainpage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.cleardoubleplainpage">243</a>, <a href="scrguide.pdf#desc:scrextend.cmd.cleardoubleplainpage">317</a>, <a href="scrguide.pdf#desc:maincls.cmd.cleardoubleplainpage">92</a></li>
<li><a name="cmd.cleardoublestandardpage"></a><a href="#cmd.cleardoublestandardpage">\cleardoublestandardpage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.cleardoublestandardpage">243</a>, <a href="scrguide.pdf#desc:scrextend.cmd.cleardoublestandardpage">317</a>, <a href="scrguide.pdf#desc:maincls.cmd.cleardoublestandardpage">92</a></li>
- <li><a name="cmd.clearmainofpairofpagestyles"></a><a href="#cmd.clearmainofpairofpagestyles">\clearmainofpairofpagestyles</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.clearmainofpairofpagestyles">482</a></li>
- <li><a name="cmd.clearnotecolumn"></a><a href="#cmd.clearnotecolumn">\clearnotecolumn</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.clearnotecolumn">500</a></li>
- <li><a name="cmd.clearnotecolumns"></a><a href="#cmd.clearnotecolumns">\clearnotecolumns</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.clearnotecolumns">501</a></li>
+ <li><a name="cmd.clearmainofpairofpagestyles"></a><a href="#cmd.clearmainofpairofpagestyles">\clearmainofpairofpagestyles</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.clearmainofpairofpagestyles">481</a></li>
+ <li><a name="cmd.clearnotecolumn"></a><a href="#cmd.clearnotecolumn">\clearnotecolumn</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.clearnotecolumn">499</a></li>
+ <li><a name="cmd.clearnotecolumns"></a><a href="#cmd.clearnotecolumns">\clearnotecolumns</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.clearnotecolumns">500</a></li>
<li><a name="cmd.clearpage"></a><a href="#cmd.clearpage">\clearpage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.clearpage">243</a>, <a href="scrguide.pdf#desc:scrextend.cmd.clearpage">317</a>, <a href="scrguide.pdf#desc:maincls.cmd.clearpage">92</a></li>
- <li><a name="cmd.clearpairofpagestyles"></a><a href="#cmd.clearpairofpagestyles">\clearpairofpagestyles</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.clearpairofpagestyles">482</a></li>
- <li><a name="cmd.clearplainofpairofpagestyles"></a><a href="#cmd.clearplainofpairofpagestyles">\clearplainofpairofpagestyles</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.clearplainofpairofpagestyles">482</a></li>
+ <li><a name="cmd.clearpairofpagestyles"></a><a href="#cmd.clearpairofpagestyles">\clearpairofpagestyles</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.clearpairofpagestyles">481</a></li>
+ <li><a name="cmd.clearplainofpairofpagestyles"></a><a href="#cmd.clearplainofpairofpagestyles">\clearplainofpairofpagestyles</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.clearplainofpairofpagestyles">481</a></li>
<li><a name="cmd.closing"></a><a href="#cmd.closing">\closing</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.closing">183</a></li>
<li><a name="cmd.cofoot*"></a><a href="#cmd.cofoot*">\cofoot*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.cofoot*">277</a></li>
<li><a name="cmd.cofoot"></a><a href="#cmd.cofoot">\cofoot</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.cofoot">274</a></li>
@@ -502,83 +500,83 @@
<li><a name="cmd.coverpageleftmargin"></a><a href="#cmd.coverpageleftmargin">\coverpageleftmargin</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.coverpageleftmargin">311</a>, <a href="scrguide.pdf#desc:maincls.cmd.coverpageleftmargin">67</a></li>
<li><a name="cmd.coverpagerightmargin"></a><a href="#cmd.coverpagerightmargin">\coverpagerightmargin</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.coverpagerightmargin">311</a>, <a href="scrguide.pdf#desc:maincls.cmd.coverpagerightmargin">67</a></li>
<li><a name="cmd.coverpagetopmargin"></a><a href="#cmd.coverpagetopmargin">\coverpagetopmargin</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.coverpagetopmargin">311</a>, <a href="scrguide.pdf#desc:maincls.cmd.coverpagetopmargin">67</a></li>
- <li><a name="cmd.currentpagestyle"></a><a href="#cmd.currentpagestyle">\currentpagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.currentpagestyle">460</a></li>
- <li><a name="cmd.customername"></a><a href="#cmd.customername">\customername</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.customername">545</a></li>
+ <li><a name="cmd.currentpagestyle"></a><a href="#cmd.currentpagestyle">\currentpagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.currentpagestyle">459</a></li>
+ <li><a name="cmd.customername"></a><a href="#cmd.customername">\customername</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.customername">544</a></li>
<li><a name="cmd.date"></a><a href="#cmd.date">\date</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.date">313</a>, <a href="scrguide.pdf#desc:maincls.cmd.date">70</a></li>
- <li><a name="cmd.dateUKenglish"></a><a href="#cmd.dateUKenglish">\dateUKenglish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateUKenglish">547</a></li>
- <li><a name="cmd.dateUSenglish"></a><a href="#cmd.dateUSenglish">\dateUSenglish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateUSenglish">547</a></li>
- <li><a name="cmd.dateacadian"></a><a href="#cmd.dateacadian">\dateacadian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateacadian">547</a></li>
- <li><a name="cmd.dateamerican"></a><a href="#cmd.dateamerican">\dateamerican</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateamerican">547</a></li>
- <li><a name="cmd.dateaustralien"></a><a href="#cmd.dateaustralien">\dateaustralien</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateaustralien">547</a></li>
- <li><a name="cmd.dateaustrian"></a><a href="#cmd.dateaustrian">\dateaustrian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateaustrian">547</a></li>
- <li><a name="cmd.datebritish"></a><a href="#cmd.datebritish">\datebritish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datebritish">547</a></li>
- <li><a name="cmd.datecanadian"></a><a href="#cmd.datecanadian">\datecanadian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datecanadian">547</a></li>
- <li><a name="cmd.datecanadien"></a><a href="#cmd.datecanadien">\datecanadien</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datecanadien">547</a></li>
- <li><a name="cmd.datecroatian"></a><a href="#cmd.datecroatian">\datecroatian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datecroatian">547</a></li>
- <li><a name="cmd.dateczech"></a><a href="#cmd.dateczech">\dateczech</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateczech">547</a></li>
- <li><a name="cmd.datedutch"></a><a href="#cmd.datedutch">\datedutch</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datedutch">547</a></li>
- <li><a name="cmd.dateenglish"></a><a href="#cmd.dateenglish">\dateenglish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateenglish">547</a></li>
- <li><a name="cmd.datefinnish"></a><a href="#cmd.datefinnish">\datefinnish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datefinnish">547</a></li>
- <li><a name="cmd.datefrancais"></a><a href="#cmd.datefrancais">\datefrancais</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datefrancais">547</a></li>
- <li><a name="cmd.datefrench"></a><a href="#cmd.datefrench">\datefrench</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datefrench">547</a></li>
- <li><a name="cmd.dategerman"></a><a href="#cmd.dategerman">\dategerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dategerman">547</a></li>
- <li><a name="cmd.dateitalian"></a><a href="#cmd.dateitalian">\dateitalian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateitalian">547</a></li>
- <li><a name="cmd.datename"></a><a href="#cmd.datename">\datename</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datename">545</a></li>
- <li><a name="cmd.datenaustrian"></a><a href="#cmd.datenaustrian">\datenaustrian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datenaustrian">547</a></li>
- <li><a name="cmd.datenewzealand"></a><a href="#cmd.datenewzealand">\datenewzealand</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datenewzealand">547</a></li>
- <li><a name="cmd.datengerman"></a><a href="#cmd.datengerman">\datengerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datengerman">547</a></li>
- <li><a name="cmd.datenorsk"></a><a href="#cmd.datenorsk">\datenorsk</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datenorsk">547</a></li>
- <li><a name="cmd.datenswissgerman"></a><a href="#cmd.datenswissgerman">\datenswissgerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datenswissgerman">547</a></li>
- <li><a name="cmd.datepolish"></a><a href="#cmd.datepolish">\datepolish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datepolish">547</a></li>
- <li><a name="cmd.dateslovak"></a><a href="#cmd.dateslovak">\dateslovak</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateslovak">547</a></li>
- <li><a name="cmd.datespanish"></a><a href="#cmd.datespanish">\datespanish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datespanish">547</a></li>
- <li><a name="cmd.dateswedish"></a><a href="#cmd.dateswedish">\dateswedish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateswedish">547</a></li>
- <li><a name="cmd.dateswissgerman"></a><a href="#cmd.dateswissgerman">\dateswissgerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateswissgerman">547</a></li>
+ <li><a name="cmd.dateUKenglish"></a><a href="#cmd.dateUKenglish">\dateUKenglish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateUKenglish">546</a></li>
+ <li><a name="cmd.dateUSenglish"></a><a href="#cmd.dateUSenglish">\dateUSenglish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateUSenglish">546</a></li>
+ <li><a name="cmd.dateacadian"></a><a href="#cmd.dateacadian">\dateacadian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateacadian">546</a></li>
+ <li><a name="cmd.dateamerican"></a><a href="#cmd.dateamerican">\dateamerican</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateamerican">546</a></li>
+ <li><a name="cmd.dateaustralien"></a><a href="#cmd.dateaustralien">\dateaustralien</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateaustralien">546</a></li>
+ <li><a name="cmd.dateaustrian"></a><a href="#cmd.dateaustrian">\dateaustrian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateaustrian">546</a></li>
+ <li><a name="cmd.datebritish"></a><a href="#cmd.datebritish">\datebritish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datebritish">546</a></li>
+ <li><a name="cmd.datecanadian"></a><a href="#cmd.datecanadian">\datecanadian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datecanadian">546</a></li>
+ <li><a name="cmd.datecanadien"></a><a href="#cmd.datecanadien">\datecanadien</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datecanadien">546</a></li>
+ <li><a name="cmd.datecroatian"></a><a href="#cmd.datecroatian">\datecroatian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datecroatian">546</a></li>
+ <li><a name="cmd.dateczech"></a><a href="#cmd.dateczech">\dateczech</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateczech">546</a></li>
+ <li><a name="cmd.datedutch"></a><a href="#cmd.datedutch">\datedutch</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datedutch">546</a></li>
+ <li><a name="cmd.dateenglish"></a><a href="#cmd.dateenglish">\dateenglish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateenglish">546</a></li>
+ <li><a name="cmd.datefinnish"></a><a href="#cmd.datefinnish">\datefinnish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datefinnish">546</a></li>
+ <li><a name="cmd.datefrancais"></a><a href="#cmd.datefrancais">\datefrancais</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datefrancais">546</a></li>
+ <li><a name="cmd.datefrench"></a><a href="#cmd.datefrench">\datefrench</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datefrench">546</a></li>
+ <li><a name="cmd.dategerman"></a><a href="#cmd.dategerman">\dategerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dategerman">546</a></li>
+ <li><a name="cmd.dateitalian"></a><a href="#cmd.dateitalian">\dateitalian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateitalian">546</a></li>
+ <li><a name="cmd.datename"></a><a href="#cmd.datename">\datename</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datename">544</a></li>
+ <li><a name="cmd.datenaustrian"></a><a href="#cmd.datenaustrian">\datenaustrian</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datenaustrian">546</a></li>
+ <li><a name="cmd.datenewzealand"></a><a href="#cmd.datenewzealand">\datenewzealand</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datenewzealand">546</a></li>
+ <li><a name="cmd.datengerman"></a><a href="#cmd.datengerman">\datengerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datengerman">546</a></li>
+ <li><a name="cmd.datenorsk"></a><a href="#cmd.datenorsk">\datenorsk</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datenorsk">546</a></li>
+ <li><a name="cmd.datenswissgerman"></a><a href="#cmd.datenswissgerman">\datenswissgerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datenswissgerman">546</a></li>
+ <li><a name="cmd.datepolish"></a><a href="#cmd.datepolish">\datepolish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datepolish">546</a></li>
+ <li><a name="cmd.dateslovak"></a><a href="#cmd.dateslovak">\dateslovak</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateslovak">546</a></li>
+ <li><a name="cmd.datespanish"></a><a href="#cmd.datespanish">\datespanish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.datespanish">546</a></li>
+ <li><a name="cmd.dateswedish"></a><a href="#cmd.dateswedish">\dateswedish</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateswedish">546</a></li>
+ <li><a name="cmd.dateswissgerman"></a><a href="#cmd.dateswissgerman">\dateswissgerman</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.dateswissgerman">546</a></li>
<li><a name="cmd.dedication"></a><a href="#cmd.dedication">\dedication</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.dedication">315</a>, <a href="scrguide.pdf#desc:maincls.cmd.dedication">73</a></li>
- <li><a name="cmd.defaultreffields"></a><a href="#cmd.defaultreffields">\defaultreffields</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.defaultreffields">538</a></li>
+ <li><a name="cmd.defaultreffields"></a><a href="#cmd.defaultreffields">\defaultreffields</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.defaultreffields">537</a></li>
<li><a name="cmd.defcaptionname*"></a><a href="#cmd.defcaptionname*">\defcaptionname*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.defcaptionname*">371</a></li>
<li><a name="cmd.defcaptionname"></a><a href="#cmd.defcaptionname">\defcaptionname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.defcaptionname">371</a></li>
<li><a name="cmd.deffootnote"></a><a href="#cmd.deffootnote">\deffootnote</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.deffootnote">246</a>, <a href="scrguide.pdf#desc:scrextend.cmd.deffootnote">320</a>, <a href="scrguide.pdf#desc:maincls.cmd.deffootnote">96</a></li>
<li><a name="cmd.deffootnotemark"></a><a href="#cmd.deffootnotemark">\deffootnotemark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.deffootnotemark">246</a>, <a href="scrguide.pdf#desc:scrextend.cmd.deffootnotemark">320</a>, <a href="scrguide.pdf#desc:maincls.cmd.deffootnotemark">96</a></li>
- <li><a name="cmd.defpagestyle"></a><a href="#cmd.defpagestyle">\defpagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.defpagestyle">483</a></li>
- <li><a name="cmd.defpairofpagestyles"></a><a href="#cmd.defpairofpagestyles">\defpairofpagestyles</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.defpairofpagestyles">481</a></li>
- <li><a name="cmd.deftocheading"></a><a href="#cmd.deftocheading">\deftocheading</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.deftocheading">406</a></li>
+ <li><a name="cmd.defpagestyle"></a><a href="#cmd.defpagestyle">\defpagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.defpagestyle">482</a></li>
+ <li><a name="cmd.defpairofpagestyles"></a><a href="#cmd.defpairofpagestyles">\defpairofpagestyles</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.defpairofpagestyles">480</a></li>
+ <li><a name="cmd.deftocheading"></a><a href="#cmd.deftocheading">\deftocheading</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.deftocheading">405</a></li>
<li><a name="cmd.dictum"></a><a href="#cmd.dictum">\dictum</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.dictum">123</a>, <a href="scrguide.pdf#desc:scrextend.cmd.dictum">321</a></li>
<li><a name="cmd.dictumauthorformat"></a><a href="#cmd.dictumauthorformat">\dictumauthorformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.dictumauthorformat">123</a>, <a href="scrguide.pdf#desc:scrextend.cmd.dictumauthorformat">321</a></li>
<li><a name="cmd.dictumrule"></a><a href="#cmd.dictumrule">\dictumrule</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.dictumrule">123</a>, <a href="scrguide.pdf#desc:scrextend.cmd.dictumrule">321</a></li>
<li><a name="cmd.dictumwidth"></a><a href="#cmd.dictumwidth">\dictumwidth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.dictumwidth">123</a>, <a href="scrguide.pdf#desc:scrextend.cmd.dictumwidth">321</a></li>
- <li><a name="cmd.documentclass"></a><a href="#cmd.documentclass">\documentclass</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.documentclass">162</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.documentclass">264</a>, <a href="scrguide.pdf#desc:scrextend.cmd.documentclass">306</a>, <a href="scrguide.pdf#desc:typearea.cmd.documentclass">32</a>, <a href="scrguide.pdf#desc:scrjura.cmd.documentclass">325</a>, <a href="scrguide.pdf#desc:scrhack.cmd.documentclass">438</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.documentclass">444</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.documentclass">488</a>, <a href="scrguide.pdf#desc:maincls.cmd.documentclass">56</a></li>
- <li><a name="cmd.doforeachtocfile"></a><a href="#cmd.doforeachtocfile">\doforeachtocfile</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.doforeachtocfile">400</a></li>
+ <li><a name="cmd.documentclass"></a><a href="#cmd.documentclass">\documentclass</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.documentclass">162</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.documentclass">264</a>, <a href="scrguide.pdf#desc:scrextend.cmd.documentclass">306</a>, <a href="scrguide.pdf#desc:typearea.cmd.documentclass">32</a>, <a href="scrguide.pdf#desc:scrjura.cmd.documentclass">325</a>, <a href="scrguide.pdf#desc:scrhack.cmd.documentclass">437</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.documentclass">443</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.documentclass">487</a>, <a href="scrguide.pdf#desc:maincls.cmd.documentclass">56</a></li>
+ <li><a name="cmd.doforeachtocfile"></a><a href="#cmd.doforeachtocfile">\doforeachtocfile</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.doforeachtocfile">399</a></li>
<li><a name="cmd.ellipsispar"></a><a href="#cmd.ellipsispar">\ellipsispar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrjura.cmd.ellipsispar">335</a></li>
- <li><a name="cmd.emailname"></a><a href="#cmd.emailname">\emailname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.emailname">545</a></li>
+ <li><a name="cmd.emailname"></a><a href="#cmd.emailname">\emailname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.emailname">544</a></li>
<li><a name="cmd.encl"></a><a href="#cmd.encl">\encl</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.encl">187</a></li>
- <li><a name="cmd.enclname"></a><a href="#cmd.enclname">\enclname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.enclname">545</a></li>
+ <li><a name="cmd.enclname"></a><a href="#cmd.enclname">\enclname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.enclname">544</a></li>
<li><a name="cmd.extratitle"></a><a href="#cmd.extratitle">\extratitle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.extratitle">313</a>, <a href="scrguide.pdf#desc:maincls.cmd.extratitle">69</a></li>
- <li><a name="cmd.faxname"></a><a href="#cmd.faxname">\faxname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.faxname">545</a></li>
+ <li><a name="cmd.faxname"></a><a href="#cmd.faxname">\faxname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.faxname">544</a></li>
<li><a name="cmd.figureformat"></a><a href="#cmd.figureformat">\figureformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.figureformat">146</a></li>
<li><a name="cmd.flushbottom"></a><a href="#cmd.flushbottom">\flushbottom</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.flushbottom">59</a></li>
<li><a name="cmd.footnote"></a><a href="#cmd.footnote">\footnote</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.footnote">245</a>, <a href="scrguide.pdf#desc:scrextend.cmd.footnote">319</a>, <a href="scrguide.pdf#desc:maincls.cmd.footnote">94</a></li>
<li><a name="cmd.footnotemark"></a><a href="#cmd.footnotemark">\footnotemark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.footnotemark">245</a>, <a href="scrguide.pdf#desc:scrextend.cmd.footnotemark">319</a>, <a href="scrguide.pdf#desc:maincls.cmd.footnotemark">94</a></li>
<li><a name="cmd.footnotetext"></a><a href="#cmd.footnotetext">\footnotetext</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.footnotetext">245</a>, <a href="scrguide.pdf#desc:scrextend.cmd.footnotetext">319</a>, <a href="scrguide.pdf#desc:maincls.cmd.footnotetext">94</a></li>
<li><a name="cmd.footref"></a><a href="#cmd.footref">\footref</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.footref">246</a>, <a href="scrguide.pdf#desc:scrextend.cmd.footref">319</a>, <a href="scrguide.pdf#desc:maincls.cmd.footref">96</a></li>
- <li><a name="cmd.foreachemptykomavar"></a><a href="#cmd.foreachemptykomavar">\foreachemptykomavar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.foreachemptykomavar">540</a></li>
- <li><a name="cmd.foreachkomavar"></a><a href="#cmd.foreachkomavar">\foreachkomavar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.foreachkomavar">540</a></li>
- <li><a name="cmd.foreachkomavarifempty"></a><a href="#cmd.foreachkomavarifempty">\foreachkomavarifempty</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.foreachkomavarifempty">540</a></li>
- <li><a name="cmd.foreachnonemptykomavar"></a><a href="#cmd.foreachnonemptykomavar">\foreachnonemptykomavar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.foreachnonemptykomavar">540</a></li>
+ <li><a name="cmd.foreachemptykomavar"></a><a href="#cmd.foreachemptykomavar">\foreachemptykomavar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.foreachemptykomavar">539</a></li>
+ <li><a name="cmd.foreachkomavar"></a><a href="#cmd.foreachkomavar">\foreachkomavar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.foreachkomavar">539</a></li>
+ <li><a name="cmd.foreachkomavarifempty"></a><a href="#cmd.foreachkomavarifempty">\foreachkomavarifempty</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.foreachkomavarifempty">539</a></li>
+ <li><a name="cmd.foreachnonemptykomavar"></a><a href="#cmd.foreachnonemptykomavar">\foreachnonemptykomavar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.foreachnonemptykomavar">539</a></li>
<li><a name="cmd.frontispiece"></a><a href="#cmd.frontispiece">\frontispiece</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.frontispiece">313</a>, <a href="scrguide.pdf#desc:maincls.cmd.frontispiece">69</a></li>
<li><a name="cmd.frontmatter"></a><a href="#cmd.frontmatter">\frontmatter</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.frontmatter">99</a></li>
- <li><a name="cmd.headfromname"></a><a href="#cmd.headfromname">\headfromname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.headfromname">545</a></li>
- <li><a name="cmd.headmark"></a><a href="#cmd.headmark">\headmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.headmark">285</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.headmark">473</a></li>
- <li><a name="cmd.headtoname"></a><a href="#cmd.headtoname">\headtoname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.headtoname">545</a></li>
+ <li><a name="cmd.headfromname"></a><a href="#cmd.headfromname">\headfromname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.headfromname">544</a></li>
+ <li><a name="cmd.headmark"></a><a href="#cmd.headmark">\headmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.headmark">285</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.headmark">472</a></li>
+ <li><a name="cmd.headtoname"></a><a href="#cmd.headtoname">\headtoname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.headtoname">544</a></li>
<li><a name="cmd.if@atdocument"></a><a href="#cmd.if@atdocument">\if@atdocument</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.if@atdocument">370</a></li>
- <li><a name="cmd.if@chapter"></a><a href="#cmd.if@chapter">\if@chapter</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.if@chapter">446</a></li>
- <li><a name="cmd.if@mainmatter"></a><a href="#cmd.if@mainmatter">\if@mainmatter</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.if@mainmatter">446</a></li>
+ <li><a name="cmd.if@chapter"></a><a href="#cmd.if@chapter">\if@chapter</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.if@chapter">445</a></li>
+ <li><a name="cmd.if@mainmatter"></a><a href="#cmd.if@mainmatter">\if@mainmatter</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.if@mainmatter">445</a></li>
<li><a name="cmd.ifoot*"></a><a href="#cmd.ifoot*">\ifoot*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.ifoot*">279</a></li>
<li><a name="cmd.ifoot"></a><a href="#cmd.ifoot">\ifoot</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.ifoot">278</a></li>
<li><a name="cmd.ihead*"></a><a href="#cmd.ihead*">\ihead*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.ihead*">279</a></li>
<li><a name="cmd.ihead"></a><a href="#cmd.ihead">\ihead</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.ihead">278</a></li>
<li><a name="cmd.indexpagestyle"></a><a href="#cmd.indexpagestyle">\indexpagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.indexpagestyle">87</a></li>
- <li><a name="cmd.invoicename"></a><a href="#cmd.invoicename">\invoicename</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.invoicename">545</a></li>
+ <li><a name="cmd.invoicename"></a><a href="#cmd.invoicename">\invoicename</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.invoicename">544</a></li>
<li><a name="cmd.item"></a><a href="#cmd.item">\item</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.item">125</a>, <a href="scrguide.pdf#desc:scrlttr2.cmd.item">248</a></li>
<li><a name="cmd.l@addto@macro"></a><a href="#cmd.l@addto@macro">\l@addto@macro</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.l@addto@macro">375</a></li>
<li><a name="cmd.labelenumi"></a><a href="#cmd.labelenumi">\labelenumi</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.labelenumi">127</a>, <a href="scrguide.pdf#desc:scrlttr2.cmd.labelenumi">249</a></li>
@@ -589,80 +587,80 @@
<li><a name="cmd.labelitemii"></a><a href="#cmd.labelitemii">\labelitemii</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.labelitemii">125</a>, <a href="scrguide.pdf#desc:scrlttr2.cmd.labelitemii">248</a></li>
<li><a name="cmd.labelitemiii"></a><a href="#cmd.labelitemiii">\labelitemiii</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.labelitemiii">125</a>, <a href="scrguide.pdf#desc:scrlttr2.cmd.labelitemiii">248</a></li>
<li><a name="cmd.labelitemiv"></a><a href="#cmd.labelitemiv">\labelitemiv</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.labelitemiv">125</a>, <a href="scrguide.pdf#desc:scrlttr2.cmd.labelitemiv">248</a></li>
- <li><a name="cmd.layercontentsmeasure"></a><a href="#cmd.layercontentsmeasure">\layercontentsmeasure</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.layercontentsmeasure">459</a></li>
- <li><a name="cmd.layerhalign"></a><a href="#cmd.layerhalign">\layerhalign</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.layerhalign">457</a></li>
- <li><a name="cmd.layerheight"></a><a href="#cmd.layerheight">\layerheight</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.layerheight">457</a></li>
- <li><a name="cmd.layervalign"></a><a href="#cmd.layervalign">\layervalign</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.layervalign">457</a></li>
- <li><a name="cmd.layerwidth"></a><a href="#cmd.layerwidth">\layerwidth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.layerwidth">457</a></li>
- <li><a name="cmd.layerxoffset"></a><a href="#cmd.layerxoffset">\layerxoffset</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.layerxoffset">457</a></li>
- <li><a name="cmd.layeryoffset"></a><a href="#cmd.layeryoffset">\layeryoffset</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.layeryoffset">457</a></li>
+ <li><a name="cmd.layercontentsmeasure"></a><a href="#cmd.layercontentsmeasure">\layercontentsmeasure</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.layercontentsmeasure">458</a></li>
+ <li><a name="cmd.layerhalign"></a><a href="#cmd.layerhalign">\layerhalign</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.layerhalign">456</a></li>
+ <li><a name="cmd.layerheight"></a><a href="#cmd.layerheight">\layerheight</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.layerheight">456</a></li>
+ <li><a name="cmd.layervalign"></a><a href="#cmd.layervalign">\layervalign</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.layervalign">456</a></li>
+ <li><a name="cmd.layerwidth"></a><a href="#cmd.layerwidth">\layerwidth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.layerwidth">456</a></li>
+ <li><a name="cmd.layerxoffset"></a><a href="#cmd.layerxoffset">\layerxoffset</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.layerxoffset">456</a></li>
+ <li><a name="cmd.layeryoffset"></a><a href="#cmd.layeryoffset">\layeryoffset</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.layeryoffset">456</a></li>
<li><a name="cmd.lefoot*"></a><a href="#cmd.lefoot*">\lefoot*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.lefoot*">277</a></li>
<li><a name="cmd.lefoot"></a><a href="#cmd.lefoot">\lefoot</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.lefoot">274</a></li>
- <li><a name="cmd.leftbotmark"></a><a href="#cmd.leftbotmark">\leftbotmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.leftbotmark">472</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.leftbotmark">477</a></li>
- <li><a name="cmd.leftfirstmark"></a><a href="#cmd.leftfirstmark">\leftfirstmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.leftfirstmark">472</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.leftfirstmark">477</a></li>
- <li><a name="cmd.leftmark"></a><a href="#cmd.leftmark">\leftmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.leftmark">285</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.leftmark">472</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.leftmark">477</a></li>
- <li><a name="cmd.lefttopmark"></a><a href="#cmd.lefttopmark">\lefttopmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.lefttopmark">472</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.lefttopmark">477</a></li>
+ <li><a name="cmd.leftbotmark"></a><a href="#cmd.leftbotmark">\leftbotmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.leftbotmark">471</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.leftbotmark">476</a></li>
+ <li><a name="cmd.leftfirstmark"></a><a href="#cmd.leftfirstmark">\leftfirstmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.leftfirstmark">471</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.leftfirstmark">476</a></li>
+ <li><a name="cmd.leftmark"></a><a href="#cmd.leftmark">\leftmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.leftmark">285</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.leftmark">471</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.leftmark">476</a></li>
+ <li><a name="cmd.lefttopmark"></a><a href="#cmd.lefttopmark">\lefttopmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.lefttopmark">471</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.lefttopmark">476</a></li>
<li><a name="cmd.lehead*"></a><a href="#cmd.lehead*">\lehead*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.lehead*">273</a></li>
<li><a name="cmd.lehead"></a><a href="#cmd.lehead">\lehead</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.lehead">271</a></li>
<li><a name="cmd.letterlastpage"></a><a href="#cmd.letterlastpage">\letterlastpage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.letterlastpage">182</a></li>
<li><a name="cmd.letterpagestyle"></a><a href="#cmd.letterpagestyle">\letterpagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.letterpagestyle">238</a></li>
- <li><a name="cmd.listof/Dateierweiterung/name"></a><a href="#cmd.listof/Dateierweiterung/name">\listof/Dateierweiterung/name</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.listof/Dateierweiterung/name">403</a></li>
- <li><a name="cmd.listof/Zielendung/"></a><a href="#cmd.listof/Zielendung/">\listof/Zielendung/</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrwfile.cmd.listof/Zielendung/">395</a></li>
- <li><a name="cmd.listofeachtoc"></a><a href="#cmd.listofeachtoc">\listofeachtoc</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.listofeachtoc">403</a></li>
+ <li><a name="cmd.listof/Dateierweiterung/name"></a><a href="#cmd.listof/Dateierweiterung/name">\listof/Dateierweiterung/name</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.listof/Dateierweiterung/name">402</a></li>
+ <li><a name="cmd.listof/Zielendung/"></a><a href="#cmd.listof/Zielendung/">\listof/Zielendung/</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrwfile.cmd.listof/Zielendung/">394</a></li>
+ <li><a name="cmd.listofeachtoc"></a><a href="#cmd.listofeachtoc">\listofeachtoc</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.listofeachtoc">402</a></li>
<li><a name="cmd.listoffigures"></a><a href="#cmd.listoffigures">\listoffigures</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.listoffigures">154</a></li>
<li><a name="cmd.listoftables"></a><a href="#cmd.listoftables">\listoftables</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.listoftables">154</a></li>
- <li><a name="cmd.listoftoc*"></a><a href="#cmd.listoftoc*">\listoftoc*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.listoftoc*">403</a></li>
- <li><a name="cmd.listoftoc"></a><a href="#cmd.listoftoc">\listoftoc</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.listoftoc">403</a></li>
+ <li><a name="cmd.listoftoc*"></a><a href="#cmd.listoftoc*">\listoftoc*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.listoftoc*">402</a></li>
+ <li><a name="cmd.listoftoc"></a><a href="#cmd.listoftoc">\listoftoc</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.listoftoc">402</a></li>
<li><a name="cmd.lofoot*"></a><a href="#cmd.lofoot*">\lofoot*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.lofoot*">277</a></li>
<li><a name="cmd.lofoot"></a><a href="#cmd.lofoot">\lofoot</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.lofoot">274</a></li>
<li><a name="cmd.lohead*"></a><a href="#cmd.lohead*">\lohead*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.lohead*">273</a></li>
<li><a name="cmd.lohead"></a><a href="#cmd.lohead">\lohead</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.lohead">271</a></li>
<li><a name="cmd.lowertitleback"></a><a href="#cmd.lowertitleback">\lowertitleback</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.lowertitleback">315</a>, <a href="scrguide.pdf#desc:maincls.cmd.lowertitleback">72</a></li>
<li><a name="cmd.mainmatter"></a><a href="#cmd.mainmatter">\mainmatter</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.mainmatter">99</a></li>
- <li><a name="cmd.makenote*"></a><a href="#cmd.makenote*">\makenote*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.makenote*">496</a></li>
- <li><a name="cmd.makenote"></a><a href="#cmd.makenote">\makenote</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.makenote">496</a></li>
+ <li><a name="cmd.makenote*"></a><a href="#cmd.makenote*">\makenote*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.makenote*">495</a></li>
+ <li><a name="cmd.makenote"></a><a href="#cmd.makenote">\makenote</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.makenote">495</a></li>
<li><a name="cmd.maketitle"></a><a href="#cmd.maketitle">\maketitle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.maketitle">312</a>, <a href="scrguide.pdf#desc:maincls.cmd.maketitle">68</a></li>
- <li><a name="cmd.manualmark"></a><a href="#cmd.manualmark">\manualmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.manualmark">281</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.manualmark">471</a></li>
+ <li><a name="cmd.manualmark"></a><a href="#cmd.manualmark">\manualmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.manualmark">281</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.manualmark">470</a></li>
<li><a name="cmd.marginline"></a><a href="#cmd.marginline">\marginline</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.marginline">155</a>, <a href="scrguide.pdf#desc:scrlttr2.cmd.marginline">252</a>, <a href="scrguide.pdf#desc:scrextend.cmd.marginline">323</a></li>
<li><a name="cmd.marginpar"></a><a href="#cmd.marginpar">\marginpar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.marginpar">155</a>, <a href="scrguide.pdf#desc:scrlttr2.cmd.marginpar">252</a>, <a href="scrguide.pdf#desc:scrextend.cmd.marginpar">323</a></li>
- <li><a name="cmd.markboth"></a><a href="#cmd.markboth">\markboth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.markboth">242</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.markboth">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.markboth">475</a>, <a href="scrguide.pdf#desc:maincls.cmd.markboth">87</a></li>
- <li><a name="cmd.markdouble"></a><a href="#cmd.markdouble">\markdouble</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.markdouble">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.markdouble">475</a></li>
- <li><a name="cmd.markleft"></a><a href="#cmd.markleft">\markleft</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.markleft">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.markleft">475</a></li>
- <li><a name="cmd.markright"></a><a href="#cmd.markright">\markright</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.markright">242</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.markright">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.markright">475</a>, <a href="scrguide.pdf#desc:maincls.cmd.markright">87</a></li>
+ <li><a name="cmd.markboth"></a><a href="#cmd.markboth">\markboth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.markboth">242</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.markboth">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.markboth">474</a>, <a href="scrguide.pdf#desc:maincls.cmd.markboth">87</a></li>
+ <li><a name="cmd.markdouble"></a><a href="#cmd.markdouble">\markdouble</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.markdouble">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.markdouble">474</a></li>
+ <li><a name="cmd.markleft"></a><a href="#cmd.markleft">\markleft</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.markleft">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.markleft">474</a></li>
+ <li><a name="cmd.markright"></a><a href="#cmd.markright">\markright</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.markright">242</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.markright">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.markright">474</a>, <a href="scrguide.pdf#desc:maincls.cmd.markright">87</a></li>
<li><a name="cmd.minisec"></a><a href="#cmd.minisec">\minisec</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.minisec">113</a></li>
- <li><a name="cmd.mobilephonename"></a><a href="#cmd.mobilephonename">\mobilephonename</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.mobilephonename">545</a></li>
+ <li><a name="cmd.mobilephonename"></a><a href="#cmd.mobilephonename">\mobilephonename</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.mobilephonename">544</a></li>
<li><a name="cmd.multfootsep"></a><a href="#cmd.multfootsep">\multfootsep</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.multfootsep">244</a>, <a href="scrguide.pdf#desc:scrextend.cmd.multfootsep">318</a>, <a href="scrguide.pdf#desc:maincls.cmd.multfootsep">94</a></li>
<li><a name="cmd.multiplefootnoteseparator"></a><a href="#cmd.multiplefootnoteseparator">\multiplefootnoteseparator</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.multiplefootnoteseparator">245</a>, <a href="scrguide.pdf#desc:scrextend.cmd.multiplefootnoteseparator">319</a>, <a href="scrguide.pdf#desc:maincls.cmd.multiplefootnoteseparator">94</a></li>
- <li><a name="cmd.myrefname"></a><a href="#cmd.myrefname">\myrefname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.myrefname">545</a></li>
+ <li><a name="cmd.myrefname"></a><a href="#cmd.myrefname">\myrefname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.myrefname">544</a></li>
<li><a name="cmd.nameday"></a><a href="#cmd.nameday">\nameday</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrdate.cmd.nameday">296</a></li>
- <li><a name="cmd.newbibstyle"></a><a href="#cmd.newbibstyle">\newbibstyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.newbibstyle">536</a></li>
- <li><a name="cmd.newblock"></a><a href="#cmd.newblock">\newblock</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.newblock">536</a></li>
+ <li><a name="cmd.newbibstyle"></a><a href="#cmd.newbibstyle">\newbibstyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.newbibstyle">535</a></li>
+ <li><a name="cmd.newblock"></a><a href="#cmd.newblock">\newblock</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.newblock">535</a></li>
<li><a name="cmd.newcaptionname*"></a><a href="#cmd.newcaptionname*">\newcaptionname*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.newcaptionname*">371</a></li>
<li><a name="cmd.newcaptionname"></a><a href="#cmd.newcaptionname">\newcaptionname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.newcaptionname">371</a></li>
<li><a name="cmd.newdaylanguage"></a><a href="#cmd.newdaylanguage">\newdaylanguage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrdate.cmd.newdaylanguage">296</a></li>
- <li><a name="cmd.newkomafont"></a><a href="#cmd.newkomafont">\newkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.newkomafont">510</a></li>
- <li><a name="cmd.newkomavar*"></a><a href="#cmd.newkomavar*">\newkomavar*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.newkomavar*">538</a></li>
- <li><a name="cmd.newkomavar"></a><a href="#cmd.newkomavar">\newkomavar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.newkomavar">538</a></li>
- <li><a name="cmd.newpagestyle"></a><a href="#cmd.newpagestyle">\newpagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.newpagestyle">483</a></li>
- <li><a name="cmd.newpairofpagestyles"></a><a href="#cmd.newpairofpagestyles">\newpairofpagestyles</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.newpairofpagestyles">481</a></li>
+ <li><a name="cmd.newkomafont"></a><a href="#cmd.newkomafont">\newkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.newkomafont">509</a></li>
+ <li><a name="cmd.newkomavar*"></a><a href="#cmd.newkomavar*">\newkomavar*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.newkomavar*">537</a></li>
+ <li><a name="cmd.newkomavar"></a><a href="#cmd.newkomavar">\newkomavar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.newkomavar">537</a></li>
+ <li><a name="cmd.newpagestyle"></a><a href="#cmd.newpagestyle">\newpagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.newpagestyle">482</a></li>
+ <li><a name="cmd.newpairofpagestyles"></a><a href="#cmd.newpairofpagestyles">\newpairofpagestyles</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.newpairofpagestyles">480</a></li>
<li><a name="cmd.newplength"></a><a href="#cmd.newplength">\newplength</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.newplength">176</a></li>
- <li><a name="cmd.nonumberline"></a><a href="#cmd.nonumberline">\nonumberline</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.nonumberline">427</a></li>
- <li><a name="cmd.numberline"></a><a href="#cmd.numberline">\numberline</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.numberline">410</a></li>
+ <li><a name="cmd.nonumberline"></a><a href="#cmd.nonumberline">\nonumberline</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.nonumberline">426</a></li>
+ <li><a name="cmd.numberline"></a><a href="#cmd.numberline">\numberline</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.numberline">409</a></li>
<li><a name="cmd.ofoot*"></a><a href="#cmd.ofoot*">\ofoot*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.ofoot*">279</a></li>
<li><a name="cmd.ofoot"></a><a href="#cmd.ofoot">\ofoot</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.ofoot">278</a></li>
<li><a name="cmd.ohead*"></a><a href="#cmd.ohead*">\ohead*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.ohead*">279</a></li>
<li><a name="cmd.ohead"></a><a href="#cmd.ohead">\ohead</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.ohead">278</a></li>
<li><a name="cmd.opening"></a><a href="#cmd.opening">\opening</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.opening">182</a></li>
<li><a name="cmd.othersectionlevelsformat"></a><a href="#cmd.othersectionlevelsformat">\othersectionlevelsformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.othersectionlevelsformat">116</a></li>
- <li><a name="cmd.pagemark"></a><a href="#cmd.pagemark">\pagemark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.pagemark">285</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.pagemark">473</a></li>
- <li><a name="cmd.pagename"></a><a href="#cmd.pagename">\pagename</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.pagename">545</a></li>
+ <li><a name="cmd.pagemark"></a><a href="#cmd.pagemark">\pagemark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.pagemark">285</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.pagemark">472</a></li>
+ <li><a name="cmd.pagename"></a><a href="#cmd.pagename">\pagename</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.pagename">544</a></li>
<li><a name="cmd.pagenumbering"></a><a href="#cmd.pagenumbering">\pagenumbering</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.pagenumbering">89</a></li>
<li><a name="cmd.pagestyle"></a><a href="#cmd.pagestyle">\pagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.pagestyle">239</a>, <a href="scrguide.pdf#desc:maincls.cmd.pagestyle">84</a></li>
<li><a name="cmd.paragraph*"></a><a href="#cmd.paragraph*">\paragraph*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.paragraph*">111</a></li>
<li><a name="cmd.paragraph"></a><a href="#cmd.paragraph">\paragraph</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.paragraph">106</a></li>
<li><a name="cmd.paragraphformat"></a><a href="#cmd.paragraphformat">\paragraphformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.paragraphformat">116</a></li>
- <li><a name="cmd.paragraphmark"></a><a href="#cmd.paragraphmark">\paragraphmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.paragraphmark">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.paragraphmark">474</a></li>
- <li><a name="cmd.paragraphmarkformat"></a><a href="#cmd.paragraphmarkformat">\paragraphmarkformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.paragraphmarkformat">286</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.paragraphmarkformat">474</a></li>
+ <li><a name="cmd.paragraphmark"></a><a href="#cmd.paragraphmark">\paragraphmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.paragraphmark">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.paragraphmark">473</a></li>
+ <li><a name="cmd.paragraphmarkformat"></a><a href="#cmd.paragraphmarkformat">\paragraphmarkformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.paragraphmarkformat">286</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.paragraphmarkformat">473</a></li>
<li><a name="cmd.paragraphnumdepth"></a><a href="#cmd.paragraphnumdepth">\paragraphnumdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.paragraphnumdepth">120</a></li>
<li><a name="cmd.paragraphtocdepth"></a><a href="#cmd.paragraphtocdepth">\paragraphtocdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.paragraphtocdepth">79</a></li>
<li><a name="cmd.parellipsis"></a><a href="#cmd.parellipsis">\parellipsis</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrjura.cmd.parellipsis">335</a></li>
@@ -673,31 +671,31 @@
<li><a name="cmd.part*"></a><a href="#cmd.part*">\part*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.part*">111</a></li>
<li><a name="cmd.part"></a><a href="#cmd.part">\part</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.part">106</a></li>
<li><a name="cmd.partformat"></a><a href="#cmd.partformat">\partformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.partformat">116</a></li>
- <li><a name="cmd.partheademptypage"></a><a href="#cmd.partheademptypage">\partheademptypage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.partheademptypage">525</a></li>
- <li><a name="cmd.partheadendvskip"></a><a href="#cmd.partheadendvskip">\partheadendvskip</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.partheadendvskip">525</a></li>
- <li><a name="cmd.partheadmidvskip"></a><a href="#cmd.partheadmidvskip">\partheadmidvskip</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.partheadmidvskip">525</a></li>
- <li><a name="cmd.partheadstartvskip"></a><a href="#cmd.partheadstartvskip">\partheadstartvskip</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.partheadstartvskip">525</a></li>
- <li><a name="cmd.partlineswithprefixformat"></a><a href="#cmd.partlineswithprefixformat">\partlineswithprefixformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.partlineswithprefixformat">527</a></li>
- <li><a name="cmd.partmark"></a><a href="#cmd.partmark">\partmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.partmark">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.partmark">474</a></li>
- <li><a name="cmd.partmarkformat"></a><a href="#cmd.partmarkformat">\partmarkformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.partmarkformat">286</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.partmarkformat">474</a></li>
+ <li><a name="cmd.partheademptypage"></a><a href="#cmd.partheademptypage">\partheademptypage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.partheademptypage">524</a></li>
+ <li><a name="cmd.partheadendvskip"></a><a href="#cmd.partheadendvskip">\partheadendvskip</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.partheadendvskip">524</a></li>
+ <li><a name="cmd.partheadmidvskip"></a><a href="#cmd.partheadmidvskip">\partheadmidvskip</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.partheadmidvskip">524</a></li>
+ <li><a name="cmd.partheadstartvskip"></a><a href="#cmd.partheadstartvskip">\partheadstartvskip</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.partheadstartvskip">524</a></li>
+ <li><a name="cmd.partlineswithprefixformat"></a><a href="#cmd.partlineswithprefixformat">\partlineswithprefixformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.partlineswithprefixformat">526</a></li>
+ <li><a name="cmd.partmark"></a><a href="#cmd.partmark">\partmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.partmark">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.partmark">473</a></li>
+ <li><a name="cmd.partmarkformat"></a><a href="#cmd.partmarkformat">\partmarkformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.partmarkformat">286</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.partmarkformat">473</a></li>
<li><a name="cmd.partnumdepth"></a><a href="#cmd.partnumdepth">\partnumdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.partnumdepth">120</a></li>
<li><a name="cmd.partpagestyle"></a><a href="#cmd.partpagestyle">\partpagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.partpagestyle">87</a></li>
<li><a name="cmd.parttocdepth"></a><a href="#cmd.parttocdepth">\parttocdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.parttocdepth">79</a></li>
- <li><a name="cmd.phonename"></a><a href="#cmd.phonename">\phonename</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.phonename">545</a></li>
+ <li><a name="cmd.phonename"></a><a href="#cmd.phonename">\phonename</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.phonename">544</a></li>
<li><a name="cmd.providecaptionname*"></a><a href="#cmd.providecaptionname*">\providecaptionname*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.providecaptionname*">371</a></li>
<li><a name="cmd.providecaptionname"></a><a href="#cmd.providecaptionname">\providecaptionname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.providecaptionname">371</a></li>
- <li><a name="cmd.providepagestyle"></a><a href="#cmd.providepagestyle">\providepagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.providepagestyle">483</a></li>
- <li><a name="cmd.providepairofpagestyles"></a><a href="#cmd.providepairofpagestyles">\providepairofpagestyles</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.providepairofpagestyles">481</a></li>
+ <li><a name="cmd.providepagestyle"></a><a href="#cmd.providepagestyle">\providepagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.providepagestyle">482</a></li>
+ <li><a name="cmd.providepairofpagestyles"></a><a href="#cmd.providepairofpagestyles">\providepairofpagestyles</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.providepairofpagestyles">480</a></li>
<li><a name="cmd.ps"></a><a href="#cmd.ps">\ps</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.ps">185</a></li>
<li><a name="cmd.publishers"></a><a href="#cmd.publishers">\publishers</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.publishers">313</a>, <a href="scrguide.pdf#desc:maincls.cmd.publishers">70</a></li>
- <li><a name="cmd.putC"></a><a href="#cmd.putC">\putC</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.putC">458</a></li>
- <li><a name="cmd.putLL"></a><a href="#cmd.putLL">\putLL</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.putLL">458</a></li>
- <li><a name="cmd.putLR"></a><a href="#cmd.putLR">\putLR</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.putLR">458</a></li>
- <li><a name="cmd.putUL"></a><a href="#cmd.putUL">\putUL</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.putUL">458</a></li>
- <li><a name="cmd.putUR"></a><a href="#cmd.putUR">\putUR</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.putUR">458</a></li>
+ <li><a name="cmd.putC"></a><a href="#cmd.putC">\putC</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.putC">457</a></li>
+ <li><a name="cmd.putLL"></a><a href="#cmd.putLL">\putLL</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.putLL">457</a></li>
+ <li><a name="cmd.putLR"></a><a href="#cmd.putLR">\putLR</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.putLR">457</a></li>
+ <li><a name="cmd.putUL"></a><a href="#cmd.putUL">\putUL</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.putUL">457</a></li>
+ <li><a name="cmd.putUR"></a><a href="#cmd.putUR">\putUR</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.putUR">457</a></li>
<li><a name="cmd.raggedbottom"></a><a href="#cmd.raggedbottom">\raggedbottom</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.raggedbottom">59</a></li>
<li><a name="cmd.raggedchapter"></a><a href="#cmd.raggedchapter">\raggedchapter</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.raggedchapter">114</a></li>
- <li><a name="cmd.raggedchapterentry"></a><a href="#cmd.raggedchapterentry">\raggedchapterentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.raggedchapterentry">508</a></li>
+ <li><a name="cmd.raggedchapterentry"></a><a href="#cmd.raggedchapterentry">\raggedchapterentry</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.raggedchapterentry">507</a></li>
<li><a name="cmd.raggeddictum"></a><a href="#cmd.raggeddictum">\raggeddictum</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.raggeddictum">123</a>, <a href="scrguide.pdf#desc:scrextend.cmd.raggeddictum">321</a></li>
<li><a name="cmd.raggeddictumauthor"></a><a href="#cmd.raggeddictumauthor">\raggeddictumauthor</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.raggeddictumauthor">123</a>, <a href="scrguide.pdf#desc:scrextend.cmd.raggeddictumauthor">321</a></li>
<li><a name="cmd.raggeddictumtext"></a><a href="#cmd.raggeddictumtext">\raggeddictumtext</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.raggeddictumtext">123</a>, <a href="scrguide.pdf#desc:scrextend.cmd.raggeddictumtext">321</a></li>
@@ -724,28 +722,28 @@
<li><a name="cmd.refoot"></a><a href="#cmd.refoot">\refoot</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.refoot">274</a></li>
<li><a name="cmd.rehead*"></a><a href="#cmd.rehead*">\rehead*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.rehead*">273</a></li>
<li><a name="cmd.rehead"></a><a href="#cmd.rehead">\rehead</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.rehead">271</a></li>
- <li><a name="cmd.removefromtoclist"></a><a href="#cmd.removefromtoclist">\removefromtoclist</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.removefromtoclist">400</a></li>
- <li><a name="cmd.removereffields"></a><a href="#cmd.removereffields">\removereffields</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.removereffields">538</a></li>
+ <li><a name="cmd.removefromtoclist"></a><a href="#cmd.removefromtoclist">\removefromtoclist</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.removefromtoclist">399</a></li>
+ <li><a name="cmd.removereffields"></a><a href="#cmd.removereffields">\removereffields</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.removereffields">537</a></li>
<li><a name="cmd.renewcaptionname*"></a><a href="#cmd.renewcaptionname*">\renewcaptionname*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.renewcaptionname*">371</a></li>
<li><a name="cmd.renewcaptionname"></a><a href="#cmd.renewcaptionname">\renewcaptionname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrbase.cmd.renewcaptionname">371</a></li>
- <li><a name="cmd.renewpagestyle"></a><a href="#cmd.renewpagestyle">\renewpagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.renewpagestyle">483</a></li>
- <li><a name="cmd.renewpairofpagestyles"></a><a href="#cmd.renewpairofpagestyles">\renewpairofpagestyles</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.renewpairofpagestyles">481</a></li>
- <li><a name="cmd.rightbotmark"></a><a href="#cmd.rightbotmark">\rightbotmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.rightbotmark">472</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.rightbotmark">477</a></li>
- <li><a name="cmd.rightfirstmark"></a><a href="#cmd.rightfirstmark">\rightfirstmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.rightfirstmark">472</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.rightfirstmark">477</a></li>
- <li><a name="cmd.rightmark"></a><a href="#cmd.rightmark">\rightmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.rightmark">285</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.rightmark">472</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.rightmark">477</a></li>
- <li><a name="cmd.righttopmark"></a><a href="#cmd.righttopmark">\righttopmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.righttopmark">472</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.righttopmark">477</a></li>
+ <li><a name="cmd.renewpagestyle"></a><a href="#cmd.renewpagestyle">\renewpagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.renewpagestyle">482</a></li>
+ <li><a name="cmd.renewpairofpagestyles"></a><a href="#cmd.renewpairofpagestyles">\renewpairofpagestyles</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.renewpairofpagestyles">480</a></li>
+ <li><a name="cmd.rightbotmark"></a><a href="#cmd.rightbotmark">\rightbotmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.rightbotmark">471</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.rightbotmark">476</a></li>
+ <li><a name="cmd.rightfirstmark"></a><a href="#cmd.rightfirstmark">\rightfirstmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.rightfirstmark">471</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.rightfirstmark">476</a></li>
+ <li><a name="cmd.rightmark"></a><a href="#cmd.rightmark">\rightmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.rightmark">285</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.rightmark">471</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.rightmark">476</a></li>
+ <li><a name="cmd.righttopmark"></a><a href="#cmd.righttopmark">\righttopmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.righttopmark">471</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage-experts.cmd.righttopmark">476</a></li>
<li><a name="cmd.rofoot*"></a><a href="#cmd.rofoot*">\rofoot*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.rofoot*">277</a></li>
<li><a name="cmd.rofoot"></a><a href="#cmd.rofoot">\rofoot</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.rofoot">274</a></li>
<li><a name="cmd.rohead*"></a><a href="#cmd.rohead*">\rohead*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.rohead*">273</a></li>
<li><a name="cmd.rohead"></a><a href="#cmd.rohead">\rohead</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.rohead">271</a></li>
- <li><a name="cmd.scr@startsection"></a><a href="#cmd.scr@startsection">\scr@startsection</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.scr@startsection">533</a></li>
+ <li><a name="cmd.scr@startsection"></a><a href="#cmd.scr@startsection">\scr@startsection</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.scr@startsection">532</a></li>
<li><a name="cmd.section*"></a><a href="#cmd.section*">\section*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.section*">111</a></li>
<li><a name="cmd.section"></a><a href="#cmd.section">\section</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.section">106</a></li>
- <li><a name="cmd.sectioncatchphraseformat"></a><a href="#cmd.sectioncatchphraseformat">\sectioncatchphraseformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.sectioncatchphraseformat">531</a></li>
+ <li><a name="cmd.sectioncatchphraseformat"></a><a href="#cmd.sectioncatchphraseformat">\sectioncatchphraseformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.sectioncatchphraseformat">530</a></li>
<li><a name="cmd.sectionformat"></a><a href="#cmd.sectionformat">\sectionformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.sectionformat">116</a></li>
- <li><a name="cmd.sectionlinesformat"></a><a href="#cmd.sectionlinesformat">\sectionlinesformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.sectionlinesformat">531</a></li>
- <li><a name="cmd.sectionmark"></a><a href="#cmd.sectionmark">\sectionmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.sectionmark">118</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.sectionmark">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.sectionmark">474</a></li>
- <li><a name="cmd.sectionmarkformat"></a><a href="#cmd.sectionmarkformat">\sectionmarkformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.sectionmarkformat">118</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.sectionmarkformat">286</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.sectionmarkformat">474</a></li>
+ <li><a name="cmd.sectionlinesformat"></a><a href="#cmd.sectionlinesformat">\sectionlinesformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.sectionlinesformat">530</a></li>
+ <li><a name="cmd.sectionmark"></a><a href="#cmd.sectionmark">\sectionmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.sectionmark">118</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.sectionmark">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.sectionmark">473</a></li>
+ <li><a name="cmd.sectionmarkformat"></a><a href="#cmd.sectionmarkformat">\sectionmarkformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.sectionmarkformat">118</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.sectionmarkformat">286</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.sectionmarkformat">473</a></li>
<li><a name="cmd.sectionnumdepth"></a><a href="#cmd.sectionnumdepth">\sectionnumdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.sectionnumdepth">120</a></li>
<li><a name="cmd.sectiontocdepth"></a><a href="#cmd.sectiontocdepth">\sectiontocdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.sectiontocdepth">79</a></li>
<li><a name="cmd.sentencename"></a><a href="#cmd.sentencename">\sentencename</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrjura.cmd.sentencename">342</a></li>
@@ -763,11 +761,11 @@
<li><a name="cmd.setchapterpreamble"></a><a href="#cmd.setchapterpreamble">\setchapterpreamble</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.setchapterpreamble">121</a></li>
<li><a name="cmd.setfootnoterule"></a><a href="#cmd.setfootnoterule">\setfootnoterule</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.setfootnoterule">247</a>, <a href="scrguide.pdf#desc:maincls.cmd.setfootnoterule">98</a></li>
<li><a name="cmd.setindexpreamble"></a><a href="#cmd.setindexpreamble">\setindexpreamble</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.setindexpreamble">161</a></li>
- <li><a name="cmd.setkomafont"></a><a href="#cmd.setkomafont">\setkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.setkomafont">191</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.setkomafont">267</a>, <a href="scrguide.pdf#desc:scrextend.cmd.setkomafont">309</a>, <a href="scrguide.pdf#desc:scrjura.cmd.setkomafont">326</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.setkomafont">490</a>, <a href="scrguide.pdf#desc:maincls.cmd.setkomafont">61</a></li>
+ <li><a name="cmd.setkomafont"></a><a href="#cmd.setkomafont">\setkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.setkomafont">191</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.setkomafont">267</a>, <a href="scrguide.pdf#desc:scrextend.cmd.setkomafont">309</a>, <a href="scrguide.pdf#desc:scrjura.cmd.setkomafont">326</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.setkomafont">489</a>, <a href="scrguide.pdf#desc:maincls.cmd.setkomafont">61</a></li>
<li><a name="cmd.setkomavar*"></a><a href="#cmd.setkomavar*">\setkomavar*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.setkomavar*">170</a></li>
<li><a name="cmd.setkomavar"></a><a href="#cmd.setkomavar">\setkomavar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.setkomavar">170</a></li>
<li><a name="cmd.setlengthtoplength"></a><a href="#cmd.setlengthtoplength">\setlengthtoplength</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.setlengthtoplength">178</a></li>
- <li><a name="cmd.setparsizes"></a><a href="#cmd.setparsizes">\setparsizes</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.setparsizes">512</a></li>
+ <li><a name="cmd.setparsizes"></a><a href="#cmd.setparsizes">\setparsizes</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls-experts.cmd.setparsizes">511</a></li>
<li><a name="cmd.setpartpreamble"></a><a href="#cmd.setpartpreamble">\setpartpreamble</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.setpartpreamble">121</a></li>
<li><a name="cmd.setplength"></a><a href="#cmd.setplength">\setplength</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.setplength">178</a></li>
<li><a name="cmd.setplengthtodepth"></a><a href="#cmd.setplengthtodepth">\setplengthtodepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.setplengthtodepth">178</a></li>
@@ -775,38 +773,38 @@
<li><a name="cmd.setplengthtototalheight"></a><a href="#cmd.setplengthtototalheight">\setplengthtototalheight</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.setplengthtototalheight">178</a></li>
<li><a name="cmd.setplengthtowidth"></a><a href="#cmd.setplengthtowidth">\setplengthtowidth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.setplengthtowidth">178</a></li>
<li><a name="cmd.settime"></a><a href="#cmd.settime">\settime</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrtime.cmd.settime">299</a></li>
- <li><a name="cmd.setuptoc"></a><a href="#cmd.setuptoc">\setuptoc</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.setuptoc">406</a></li>
- <li><a name="cmd.storeareas"></a><a href="#cmd.storeareas">\storeareas</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.storeareas">505</a></li>
+ <li><a name="cmd.setuptoc"></a><a href="#cmd.setuptoc">\setuptoc</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.setuptoc">405</a></li>
+ <li><a name="cmd.storeareas"></a><a href="#cmd.storeareas">\storeareas</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea-experts.cmd.storeareas">504</a></li>
<li><a name="cmd.subject"></a><a href="#cmd.subject">\subject</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.subject">313</a>, <a href="scrguide.pdf#desc:maincls.cmd.subject">70</a></li>
- <li><a name="cmd.subjectname"></a><a href="#cmd.subjectname">\subjectname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.subjectname">545</a></li>
+ <li><a name="cmd.subjectname"></a><a href="#cmd.subjectname">\subjectname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.subjectname">544</a></li>
<li><a name="cmd.subparagraph*"></a><a href="#cmd.subparagraph*">\subparagraph*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subparagraph*">111</a></li>
<li><a name="cmd.subparagraph"></a><a href="#cmd.subparagraph">\subparagraph</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subparagraph">106</a></li>
<li><a name="cmd.subparagraphformat"></a><a href="#cmd.subparagraphformat">\subparagraphformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subparagraphformat">116</a></li>
- <li><a name="cmd.subparagraphmark"></a><a href="#cmd.subparagraphmark">\subparagraphmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.subparagraphmark">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.subparagraphmark">474</a></li>
- <li><a name="cmd.subparagraphmarkformat"></a><a href="#cmd.subparagraphmarkformat">\subparagraphmarkformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.subparagraphmarkformat">286</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.subparagraphmarkformat">474</a></li>
+ <li><a name="cmd.subparagraphmark"></a><a href="#cmd.subparagraphmark">\subparagraphmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.subparagraphmark">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.subparagraphmark">473</a></li>
+ <li><a name="cmd.subparagraphmarkformat"></a><a href="#cmd.subparagraphmarkformat">\subparagraphmarkformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.subparagraphmarkformat">286</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.subparagraphmarkformat">473</a></li>
<li><a name="cmd.subparagraphnumdepth"></a><a href="#cmd.subparagraphnumdepth">\subparagraphnumdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subparagraphnumdepth">120</a></li>
<li><a name="cmd.subparagraphtocdepth"></a><a href="#cmd.subparagraphtocdepth">\subparagraphtocdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subparagraphtocdepth">79</a></li>
<li><a name="cmd.subsection*"></a><a href="#cmd.subsection*">\subsection*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subsection*">111</a></li>
<li><a name="cmd.subsection"></a><a href="#cmd.subsection">\subsection</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subsection">106</a></li>
<li><a name="cmd.subsectionformat"></a><a href="#cmd.subsectionformat">\subsectionformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subsectionformat">116</a></li>
- <li><a name="cmd.subsectionmark"></a><a href="#cmd.subsectionmark">\subsectionmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subsectionmark">118</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.subsectionmark">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.subsectionmark">474</a></li>
- <li><a name="cmd.subsectionmarkformat"></a><a href="#cmd.subsectionmarkformat">\subsectionmarkformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subsectionmarkformat">118</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.subsectionmarkformat">286</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.subsectionmarkformat">474</a></li>
+ <li><a name="cmd.subsectionmark"></a><a href="#cmd.subsectionmark">\subsectionmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subsectionmark">118</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.subsectionmark">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.subsectionmark">473</a></li>
+ <li><a name="cmd.subsectionmarkformat"></a><a href="#cmd.subsectionmarkformat">\subsectionmarkformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subsectionmarkformat">118</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.subsectionmarkformat">286</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.subsectionmarkformat">473</a></li>
<li><a name="cmd.subsectionnumdepth"></a><a href="#cmd.subsectionnumdepth">\subsectionnumdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subsectionnumdepth">120</a></li>
<li><a name="cmd.subsectiontocdepth"></a><a href="#cmd.subsectiontocdepth">\subsectiontocdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subsectiontocdepth">79</a></li>
<li><a name="cmd.subsubsection*"></a><a href="#cmd.subsubsection*">\subsubsection*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subsubsection*">111</a></li>
<li><a name="cmd.subsubsection"></a><a href="#cmd.subsubsection">\subsubsection</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subsubsection">106</a></li>
<li><a name="cmd.subsubsectionformat"></a><a href="#cmd.subsubsectionformat">\subsubsectionformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subsubsectionformat">116</a></li>
- <li><a name="cmd.subsubsectionmark"></a><a href="#cmd.subsubsectionmark">\subsubsectionmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.subsubsectionmark">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.subsubsectionmark">474</a></li>
- <li><a name="cmd.subsubsectionmarkformat"></a><a href="#cmd.subsubsectionmarkformat">\subsubsectionmarkformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.subsubsectionmarkformat">286</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.subsubsectionmarkformat">474</a></li>
+ <li><a name="cmd.subsubsectionmark"></a><a href="#cmd.subsubsectionmark">\subsubsectionmark</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.subsubsectionmark">287</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.subsubsectionmark">473</a></li>
+ <li><a name="cmd.subsubsectionmarkformat"></a><a href="#cmd.subsubsectionmarkformat">\subsubsectionmarkformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.subsubsectionmarkformat">286</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.subsubsectionmarkformat">473</a></li>
<li><a name="cmd.subsubsectionnumdepth"></a><a href="#cmd.subsubsectionnumdepth">\subsubsectionnumdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subsubsectionnumdepth">120</a></li>
<li><a name="cmd.subsubsectiontocdepth"></a><a href="#cmd.subsubsectiontocdepth">\subsubsectiontocdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.subsubsectiontocdepth">79</a></li>
<li><a name="cmd.subtitle"></a><a href="#cmd.subtitle">\subtitle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.subtitle">313</a>, <a href="scrguide.pdf#desc:maincls.cmd.subtitle">70</a></li>
- <li><a name="cmd.syncwithnotecolumn"></a><a href="#cmd.syncwithnotecolumn">\syncwithnotecolumn</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.syncwithnotecolumn">498</a></li>
- <li><a name="cmd.syncwithnotecolumns"></a><a href="#cmd.syncwithnotecolumns">\syncwithnotecolumns</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.syncwithnotecolumns">500</a></li>
+ <li><a name="cmd.syncwithnotecolumn"></a><a href="#cmd.syncwithnotecolumn">\syncwithnotecolumn</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.syncwithnotecolumn">497</a></li>
+ <li><a name="cmd.syncwithnotecolumns"></a><a href="#cmd.syncwithnotecolumns">\syncwithnotecolumns</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.syncwithnotecolumns">499</a></li>
<li><a name="cmd.tableformat"></a><a href="#cmd.tableformat">\tableformat</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.tableformat">146</a></li>
<li><a name="cmd.tableofcontents"></a><a href="#cmd.tableofcontents">\tableofcontents</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.tableofcontents">78</a></li>
- <li><a name="cmd.tb@/Dateierweiterung/@after@hook"></a><a href="#cmd.tb@/Dateierweiterung/@after@hook">\tb@/Dateierweiterung/@after@hook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tb@/Dateierweiterung/@after@hook">426</a></li>
- <li><a name="cmd.tb@/Dateierweiterung/@before@hook"></a><a href="#cmd.tb@/Dateierweiterung/@before@hook">\tb@/Dateierweiterung/@before@hook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tb@/Dateierweiterung/@before@hook">426</a></li>
+ <li><a name="cmd.tb@/Dateierweiterung/@after@hook"></a><a href="#cmd.tb@/Dateierweiterung/@after@hook">\tb@/Dateierweiterung/@after@hook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tb@/Dateierweiterung/@after@hook">425</a></li>
+ <li><a name="cmd.tb@/Dateierweiterung/@before@hook"></a><a href="#cmd.tb@/Dateierweiterung/@before@hook">\tb@/Dateierweiterung/@before@hook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tb@/Dateierweiterung/@before@hook">425</a></li>
<li><a name="cmd.thanks"></a><a href="#cmd.thanks">\thanks</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.thanks">313</a>, <a href="scrguide.pdf#desc:maincls.cmd.thanks">70</a></li>
<li><a name="cmd.theenumi"></a><a href="#cmd.theenumi">\theenumi</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.theenumi">127</a>, <a href="scrguide.pdf#desc:scrlttr2.cmd.theenumi">249</a></li>
<li><a name="cmd.theenumii"></a><a href="#cmd.theenumii">\theenumii</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.cmd.theenumii">127</a>, <a href="scrguide.pdf#desc:scrlttr2.cmd.theenumii">249</a></li>
@@ -822,38 +820,38 @@
<li><a name="cmd.title"></a><a href="#cmd.title">\title</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.title">313</a>, <a href="scrguide.pdf#desc:maincls.cmd.title">70</a></li>
<li><a name="cmd.titlehead"></a><a href="#cmd.titlehead">\titlehead</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.titlehead">313</a>, <a href="scrguide.pdf#desc:maincls.cmd.titlehead">70</a></li>
<li><a name="cmd.titlepagestyle"></a><a href="#cmd.titlepagestyle">\titlepagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.titlepagestyle">316</a>, <a href="scrguide.pdf#desc:maincls.cmd.titlepagestyle">87</a></li>
- <li><a name="cmd.tocbasic@@after@hook"></a><a href="#cmd.tocbasic@@after@hook">\tocbasic@@after@hook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@@after@hook">426</a></li>
- <li><a name="cmd.tocbasic@@before@hook"></a><a href="#cmd.tocbasic@@before@hook">\tocbasic@@before@hook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@@before@hook">426</a></li>
- <li><a name="cmd.tocbasic@DependOnPenaltyAndTOCLevel"></a><a href="#cmd.tocbasic@DependOnPenaltyAndTOCLevel">\tocbasic@DependOnPenaltyAndTOCLevel</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@DependOnPenaltyAndTOCLevel">427</a></li>
- <li><a name="cmd.tocbasic@SetPenaltyByTOCLevel"></a><a href="#cmd.tocbasic@SetPenaltyByTOCLevel">\tocbasic@SetPenaltyByTOCLevel</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@SetPenaltyByTOCLevel">427</a></li>
- <li><a name="cmd.tocbasic@addxcontentsline"></a><a href="#cmd.tocbasic@addxcontentsline">\tocbasic@addxcontentsline</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@addxcontentsline">427</a></li>
- <li><a name="cmd.tocbasic@extend@babel"></a><a href="#cmd.tocbasic@extend@babel">\tocbasic@extend@babel</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@extend@babel">425</a></li>
- <li><a name="cmd.tocbasic@listhead"></a><a href="#cmd.tocbasic@listhead">\tocbasic@listhead</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@listhead">427</a></li>
- <li><a name="cmd.tocbasic@listhead@/Dateierweiterung/"></a><a href="#cmd.tocbasic@listhead@/Dateierweiterung/">\tocbasic@listhead@/Dateierweiterung/</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@listhead@/Dateierweiterung/">427</a></li>
- <li><a name="cmd.tocbasic@starttoc"></a><a href="#cmd.tocbasic@starttoc">\tocbasic@starttoc</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@starttoc">425</a></li>
- <li><a name="cmd.tocbasicautomode"></a><a href="#cmd.tocbasicautomode">\tocbasicautomode</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasicautomode">401</a></li>
+ <li><a name="cmd.tocbasic@@after@hook"></a><a href="#cmd.tocbasic@@after@hook">\tocbasic@@after@hook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@@after@hook">425</a></li>
+ <li><a name="cmd.tocbasic@@before@hook"></a><a href="#cmd.tocbasic@@before@hook">\tocbasic@@before@hook</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@@before@hook">425</a></li>
+ <li><a name="cmd.tocbasic@DependOnPenaltyAndTOCLevel"></a><a href="#cmd.tocbasic@DependOnPenaltyAndTOCLevel">\tocbasic@DependOnPenaltyAndTOCLevel</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@DependOnPenaltyAndTOCLevel">426</a></li>
+ <li><a name="cmd.tocbasic@SetPenaltyByTOCLevel"></a><a href="#cmd.tocbasic@SetPenaltyByTOCLevel">\tocbasic@SetPenaltyByTOCLevel</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@SetPenaltyByTOCLevel">426</a></li>
+ <li><a name="cmd.tocbasic@addxcontentsline"></a><a href="#cmd.tocbasic@addxcontentsline">\tocbasic@addxcontentsline</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@addxcontentsline">426</a></li>
+ <li><a name="cmd.tocbasic@extend@babel"></a><a href="#cmd.tocbasic@extend@babel">\tocbasic@extend@babel</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@extend@babel">424</a></li>
+ <li><a name="cmd.tocbasic@listhead"></a><a href="#cmd.tocbasic@listhead">\tocbasic@listhead</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@listhead">426</a></li>
+ <li><a name="cmd.tocbasic@listhead@/Dateierweiterung/"></a><a href="#cmd.tocbasic@listhead@/Dateierweiterung/">\tocbasic@listhead@/Dateierweiterung/</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@listhead@/Dateierweiterung/">426</a></li>
+ <li><a name="cmd.tocbasic@starttoc"></a><a href="#cmd.tocbasic@starttoc">\tocbasic@starttoc</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasic@starttoc">424</a></li>
+ <li><a name="cmd.tocbasicautomode"></a><a href="#cmd.tocbasicautomode">\tocbasicautomode</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.tocbasicautomode">400</a></li>
<li><a name="cmd.todaysname"></a><a href="#cmd.todaysname">\todaysname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrdate.cmd.todaysname">295</a></li>
<li><a name="cmd.todaysnumber"></a><a href="#cmd.todaysnumber">\todaysnumber</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrdate.cmd.todaysnumber">295</a></li>
- <li><a name="cmd.toplevelpagestyle"></a><a href="#cmd.toplevelpagestyle">\toplevelpagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.toplevelpagestyle">460</a></li>
+ <li><a name="cmd.toplevelpagestyle"></a><a href="#cmd.toplevelpagestyle">\toplevelpagestyle</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.cmd.toplevelpagestyle">459</a></li>
<li><a name="cmd.typearea"></a><a href="#cmd.typearea">\typearea</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:typearea.cmd.typearea">41</a></li>
- <li><a name="cmd.unsettoc"></a><a href="#cmd.unsettoc">\unsettoc</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.unsettoc">406</a></li>
+ <li><a name="cmd.unsettoc"></a><a href="#cmd.unsettoc">\unsettoc</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.unsettoc">405</a></li>
<li><a name="cmd.uppertitleback"></a><a href="#cmd.uppertitleback">\uppertitleback</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrextend.cmd.uppertitleback">315</a>, <a href="scrguide.pdf#desc:maincls.cmd.uppertitleback">72</a></li>
- <li><a name="cmd.useencodingofkomafont"></a><a href="#cmd.useencodingofkomafont">\useencodingofkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.useencodingofkomafont">194</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.useencodingofkomafont">269</a>, <a href="scrguide.pdf#desc:scrextend.cmd.useencodingofkomafont">310</a>, <a href="scrguide.pdf#desc:scrjura.cmd.useencodingofkomafont">327</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.useencodingofkomafont">491</a>, <a href="scrguide.pdf#desc:maincls.cmd.useencodingofkomafont">66</a></li>
- <li><a name="cmd.usefamilyofkomafont"></a><a href="#cmd.usefamilyofkomafont">\usefamilyofkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.usefamilyofkomafont">194</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.usefamilyofkomafont">269</a>, <a href="scrguide.pdf#desc:scrextend.cmd.usefamilyofkomafont">310</a>, <a href="scrguide.pdf#desc:scrjura.cmd.usefamilyofkomafont">327</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.usefamilyofkomafont">491</a>, <a href="scrguide.pdf#desc:maincls.cmd.usefamilyofkomafont">66</a></li>
- <li><a name="cmd.usefontofkomafont"></a><a href="#cmd.usefontofkomafont">\usefontofkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.usefontofkomafont">194</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.usefontofkomafont">269</a>, <a href="scrguide.pdf#desc:scrextend.cmd.usefontofkomafont">310</a>, <a href="scrguide.pdf#desc:scrjura.cmd.usefontofkomafont">327</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.usefontofkomafont">491</a>, <a href="scrguide.pdf#desc:maincls.cmd.usefontofkomafont">66</a></li>
- <li><a name="cmd.usekomafont"></a><a href="#cmd.usekomafont">\usekomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.usekomafont">191</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.usekomafont">267</a>, <a href="scrguide.pdf#desc:scrextend.cmd.usekomafont">309</a>, <a href="scrguide.pdf#desc:scrjura.cmd.usekomafont">326</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.usekomafont">490</a>, <a href="scrguide.pdf#desc:maincls.cmd.usekomafont">61</a></li>
- <li><a name="cmd.usekomavar*"></a><a href="#cmd.usekomavar*">\usekomavar*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.usekomavar*">171</a>, <a href="scrguide.pdf#desc:scrlttr2-experts.cmd.usekomavar*">539</a></li>
- <li><a name="cmd.usekomavar"></a><a href="#cmd.usekomavar">\usekomavar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.usekomavar">171</a>, <a href="scrguide.pdf#desc:scrlttr2-experts.cmd.usekomavar">539</a></li>
- <li><a name="cmd.usepackage"></a><a href="#cmd.usepackage">\usepackage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.usepackage">162</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.usepackage">264</a>, <a href="scrguide.pdf#desc:scrextend.cmd.usepackage">306</a>, <a href="scrguide.pdf#desc:typearea.cmd.usepackage">32</a>, <a href="scrguide.pdf#desc:scrjura.cmd.usepackage">325</a>, <a href="scrguide.pdf#desc:scrhack.cmd.usepackage">438</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.usepackage">444</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.usepackage">488</a>, <a href="scrguide.pdf#desc:maincls.cmd.usepackage">56</a></li>
+ <li><a name="cmd.useencodingofkomafont"></a><a href="#cmd.useencodingofkomafont">\useencodingofkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.useencodingofkomafont">194</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.useencodingofkomafont">269</a>, <a href="scrguide.pdf#desc:scrextend.cmd.useencodingofkomafont">310</a>, <a href="scrguide.pdf#desc:scrjura.cmd.useencodingofkomafont">327</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.useencodingofkomafont">490</a>, <a href="scrguide.pdf#desc:maincls.cmd.useencodingofkomafont">66</a></li>
+ <li><a name="cmd.usefamilyofkomafont"></a><a href="#cmd.usefamilyofkomafont">\usefamilyofkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.usefamilyofkomafont">194</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.usefamilyofkomafont">269</a>, <a href="scrguide.pdf#desc:scrextend.cmd.usefamilyofkomafont">310</a>, <a href="scrguide.pdf#desc:scrjura.cmd.usefamilyofkomafont">327</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.usefamilyofkomafont">490</a>, <a href="scrguide.pdf#desc:maincls.cmd.usefamilyofkomafont">66</a></li>
+ <li><a name="cmd.usefontofkomafont"></a><a href="#cmd.usefontofkomafont">\usefontofkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.usefontofkomafont">194</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.usefontofkomafont">269</a>, <a href="scrguide.pdf#desc:scrextend.cmd.usefontofkomafont">310</a>, <a href="scrguide.pdf#desc:scrjura.cmd.usefontofkomafont">327</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.usefontofkomafont">490</a>, <a href="scrguide.pdf#desc:maincls.cmd.usefontofkomafont">66</a></li>
+ <li><a name="cmd.usekomafont"></a><a href="#cmd.usekomafont">\usekomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.usekomafont">191</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.usekomafont">267</a>, <a href="scrguide.pdf#desc:scrextend.cmd.usekomafont">309</a>, <a href="scrguide.pdf#desc:scrjura.cmd.usekomafont">326</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.usekomafont">489</a>, <a href="scrguide.pdf#desc:maincls.cmd.usekomafont">61</a></li>
+ <li><a name="cmd.usekomavar*"></a><a href="#cmd.usekomavar*">\usekomavar*</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.usekomavar*">171</a>, <a href="scrguide.pdf#desc:scrlttr2-experts.cmd.usekomavar*">538</a></li>
+ <li><a name="cmd.usekomavar"></a><a href="#cmd.usekomavar">\usekomavar</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.usekomavar">171</a>, <a href="scrguide.pdf#desc:scrlttr2-experts.cmd.usekomavar">538</a></li>
+ <li><a name="cmd.usepackage"></a><a href="#cmd.usepackage">\usepackage</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.usepackage">162</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.usepackage">264</a>, <a href="scrguide.pdf#desc:scrextend.cmd.usepackage">306</a>, <a href="scrguide.pdf#desc:typearea.cmd.usepackage">32</a>, <a href="scrguide.pdf#desc:scrjura.cmd.usepackage">325</a>, <a href="scrguide.pdf#desc:scrhack.cmd.usepackage">437</a>, <a href="scrguide.pdf#desc:scrlayer.cmd.usepackage">443</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.usepackage">487</a>, <a href="scrguide.pdf#desc:maincls.cmd.usepackage">56</a></li>
<li><a name="cmd.useplength"></a><a href="#cmd.useplength">\useplength</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.useplength">176</a></li>
- <li><a name="cmd.useseriesofkomafont"></a><a href="#cmd.useseriesofkomafont">\useseriesofkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.useseriesofkomafont">194</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.useseriesofkomafont">269</a>, <a href="scrguide.pdf#desc:scrextend.cmd.useseriesofkomafont">310</a>, <a href="scrguide.pdf#desc:scrjura.cmd.useseriesofkomafont">327</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.useseriesofkomafont">491</a>, <a href="scrguide.pdf#desc:maincls.cmd.useseriesofkomafont">66</a></li>
- <li><a name="cmd.useshapeofkomafont"></a><a href="#cmd.useshapeofkomafont">\useshapeofkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.useshapeofkomafont">194</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.useshapeofkomafont">269</a>, <a href="scrguide.pdf#desc:scrextend.cmd.useshapeofkomafont">310</a>, <a href="scrguide.pdf#desc:scrjura.cmd.useshapeofkomafont">327</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.useshapeofkomafont">491</a>, <a href="scrguide.pdf#desc:maincls.cmd.useshapeofkomafont">66</a></li>
- <li><a name="cmd.usesizeofkomafont"></a><a href="#cmd.usesizeofkomafont">\usesizeofkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.usesizeofkomafont">194</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.usesizeofkomafont">269</a>, <a href="scrguide.pdf#desc:scrextend.cmd.usesizeofkomafont">310</a>, <a href="scrguide.pdf#desc:scrjura.cmd.usesizeofkomafont">327</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.usesizeofkomafont">491</a>, <a href="scrguide.pdf#desc:maincls.cmd.usesizeofkomafont">66</a></li>
- <li><a name="cmd.usetocbasicnumberline"></a><a href="#cmd.usetocbasicnumberline">\usetocbasicnumberline</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.usetocbasicnumberline">410</a></li>
+ <li><a name="cmd.useseriesofkomafont"></a><a href="#cmd.useseriesofkomafont">\useseriesofkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.useseriesofkomafont">194</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.useseriesofkomafont">269</a>, <a href="scrguide.pdf#desc:scrextend.cmd.useseriesofkomafont">310</a>, <a href="scrguide.pdf#desc:scrjura.cmd.useseriesofkomafont">327</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.useseriesofkomafont">490</a>, <a href="scrguide.pdf#desc:maincls.cmd.useseriesofkomafont">66</a></li>
+ <li><a name="cmd.useshapeofkomafont"></a><a href="#cmd.useshapeofkomafont">\useshapeofkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.useshapeofkomafont">194</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.useshapeofkomafont">269</a>, <a href="scrguide.pdf#desc:scrextend.cmd.useshapeofkomafont">310</a>, <a href="scrguide.pdf#desc:scrjura.cmd.useshapeofkomafont">327</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.useshapeofkomafont">490</a>, <a href="scrguide.pdf#desc:maincls.cmd.useshapeofkomafont">66</a></li>
+ <li><a name="cmd.usesizeofkomafont"></a><a href="#cmd.usesizeofkomafont">\usesizeofkomafont</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.cmd.usesizeofkomafont">194</a>, <a href="scrguide.pdf#desc:scrlayer-scrpage.cmd.usesizeofkomafont">269</a>, <a href="scrguide.pdf#desc:scrextend.cmd.usesizeofkomafont">310</a>, <a href="scrguide.pdf#desc:scrjura.cmd.usesizeofkomafont">327</a>, <a href="scrguide.pdf#desc:scrlayer-notecolumn.cmd.usesizeofkomafont">490</a>, <a href="scrguide.pdf#desc:maincls.cmd.usesizeofkomafont">66</a></li>
+ <li><a name="cmd.usetocbasicnumberline"></a><a href="#cmd.usetocbasicnumberline">\usetocbasicnumberline</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.cmd.usetocbasicnumberline">409</a></li>
<li><a name="cmd.withoutparnumber"></a><a href="#cmd.withoutparnumber">\withoutparnumber</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrjura.cmd.withoutparnumber">335</a></li>
- <li><a name="cmd.wwwname"></a><a href="#cmd.wwwname">\wwwname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.wwwname">545</a></li>
- <li><a name="cmd.yourmailname"></a><a href="#cmd.yourmailname">\yourmailname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.yourmailname">545</a></li>
- <li><a name="cmd.yourrefname"></a><a href="#cmd.yourrefname">\yourrefname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.yourrefname">545</a></li>
+ <li><a name="cmd.wwwname"></a><a href="#cmd.wwwname">\wwwname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.wwwname">544</a></li>
+ <li><a name="cmd.yourmailname"></a><a href="#cmd.yourmailname">\yourmailname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.yourmailname">544</a></li>
+ <li><a name="cmd.yourrefname"></a><a href="#cmd.yourrefname">\yourrefname</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2-experts.cmd.yourrefname">544</a></li>
</ul>
<h2><a name="environment">Umgebungen</a></h2>
<ul>
@@ -875,8 +873,8 @@
</ul>
<h2><a name="length">Längen</a></h2>
<ul>
- <li><a name="length.footheight"></a><a href="#length.footheight">footheight</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.length.footheight">266</a>, <a href="scrguide.pdf#desc:typearea.length.footheight">46</a>, <a href="scrguide.pdf#desc:scrlayer.length.footheight">470</a></li>
- <li><a name="length.headheight"></a><a href="#length.headheight">headheight</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.length.headheight">266</a>, <a href="scrguide.pdf#desc:scrlayer.length.headheight">470</a></li>
+ <li><a name="length.footheight"></a><a href="#length.footheight">footheight</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.length.footheight">266</a>, <a href="scrguide.pdf#desc:typearea.length.footheight">46</a>, <a href="scrguide.pdf#desc:scrlayer.length.footheight">469</a></li>
+ <li><a name="length.headheight"></a><a href="#length.headheight">headheight</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer-scrpage.length.headheight">266</a>, <a href="scrguide.pdf#desc:scrlayer.length.headheight">469</a></li>
</ul>
<h2><a name="plength">Pseudolängen</a></h2>
<ul>
@@ -973,8 +971,8 @@
</ul>
<h2><a name="pagestyle">Seitenstile</a></h2>
<ul>
- <li><a name="pagestyle.@everystyle@"></a><a href="#pagestyle.@everystyle@">@everystyle@</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.pagestyle.@everystyle@">465</a></li>
- <li><a name="pagestyle.empty"></a><a href="#pagestyle.empty">empty</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.pagestyle.empty">239</a>, <a href="scrguide.pdf#desc:scrlayer.pagestyle.empty">465</a></li>
+ <li><a name="pagestyle.@everystyle@"></a><a href="#pagestyle.@everystyle@">@everystyle@</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlayer.pagestyle.@everystyle@">464</a></li>
+ <li><a name="pagestyle.empty"></a><a href="#pagestyle.empty">empty</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.pagestyle.empty">239</a>, <a href="scrguide.pdf#desc:scrlayer.pagestyle.empty">464</a></li>
<li><a name="pagestyle.headings"></a><a href="#pagestyle.headings">headings</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.pagestyle.headings">240</a></li>
<li><a name="pagestyle.letter"></a><a href="#pagestyle.letter">letter</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.pagestyle.letter">241</a></li>
<li><a name="pagestyle.myheadings"></a><a href="#pagestyle.myheadings">myheadings</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrlttr2.pagestyle.myheadings">241</a></li>
@@ -987,7 +985,7 @@
<li><a name="counter.par"></a><a href="#counter.par">par</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrjura.counter.par">334</a></li>
<li><a name="counter.secnumdepth"></a><a href="#counter.secnumdepth">secnumdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:maincls.counter.secnumdepth">120</a></li>
<li><a name="counter.sentence"></a><a href="#counter.sentence">sentence</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:scrjura.counter.sentence">336</a></li>
- <li><a name="counter.tocdepth"></a><a href="#counter.tocdepth">tocdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.counter.tocdepth">410</a>, <a href="scrguide.pdf#desc:maincls.counter.tocdepth">79</a></li>
+ <li><a name="counter.tocdepth"></a><a href="#counter.tocdepth">tocdepth</a> &rarr;&nbsp;<a href="scrguide.pdf#desc:tocbasic.counter.tocdepth">409</a>, <a href="scrguide.pdf#desc:maincls.counter.tocdepth">79</a></li>
</ul>
<h2><a name="floatstyle">Stile für das float-Paket</a></h2>
<ul>
diff --git a/macros/latex/contrib/koma-script/doc/scrguide.pdf b/macros/latex/contrib/koma-script/doc/scrguide.pdf
index e508b48c3e..1af8d213fb 100644
--- a/macros/latex/contrib/koma-script/doc/scrguide.pdf
+++ b/macros/latex/contrib/koma-script/doc/scrguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/scrguien.html b/macros/latex/contrib/koma-script/doc/scrguien.html
index 110875b259..53c7248b93 100644
--- a/macros/latex/contrib/koma-script/doc/scrguien.html
+++ b/macros/latex/contrib/koma-script/doc/scrguien.html
@@ -128,6 +128,7 @@
<li><a name="option.twoside"></a><a href="#option.twoside">twoside</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:typearea.option.twoside">41</a></li>
<li><a name="option.usegeometry"></a><a href="#option.usegeometry">usegeometry</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:typearea-experts.option.usegeometry">471</a></li>
<li><a name="option.version"></a><a href="#option.version">version</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlttr2.option.version">154</a>, <a href="scrguien.pdf#desc:scrextend.option.version">292</a>, <a href="scrguien.pdf#desc:typearea.option.version">33</a>, <a href="scrguien.pdf#desc:maincls.option.version">56</a></li>
+ <li><a name="option.withdeprecated"></a><a href="#option.withdeprecated">withdeprecated</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.option.withdeprecated">361</a></li>
</ul>
<h2><a name="macro">Commands</a></h2>
<ul>
@@ -146,19 +147,17 @@
<li><a name="cmd.Address"></a><a href="#cmd.Address">\Address</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scraddr.cmd.Address">286</a></li>
<li><a name="cmd.AddtoDoHook"></a><a href="#cmd.AddtoDoHook">\AddtoDoHook</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrbase.cmd.AddtoDoHook">357</a></li>
<li><a name="cmd.AddtoOneTimeDoHook"></a><a href="#cmd.AddtoOneTimeDoHook">\AddtoOneTimeDoHook</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrbase.cmd.AddtoOneTimeDoHook">357</a></li>
+ <li><a name="cmd.AfterAtEndOfClass*"></a><a href="#cmd.AfterAtEndOfClass*">\AfterAtEndOfClass*</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.AfterAtEndOfClass*">362</a></li>
<li><a name="cmd.AfterAtEndOfClass"></a><a href="#cmd.AfterAtEndOfClass">\AfterAtEndOfClass</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.AfterAtEndOfClass">362</a></li>
+ <li><a name="cmd.AfterAtEndOfPackage*"></a><a href="#cmd.AfterAtEndOfPackage*">\AfterAtEndOfPackage*</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.AfterAtEndOfPackage*">362</a></li>
<li><a name="cmd.AfterAtEndOfPackage"></a><a href="#cmd.AfterAtEndOfPackage">\AfterAtEndOfPackage</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.AfterAtEndOfPackage">362</a></li>
<li><a name="cmd.AfterBibliographyPreamble"></a><a href="#cmd.AfterBibliographyPreamble">\AfterBibliographyPreamble</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:maincls.cmd.AfterBibliographyPreamble">149</a></li>
<li><a name="cmd.AfterCalculatingTypearea*"></a><a href="#cmd.AfterCalculatingTypearea*">\AfterCalculatingTypearea*</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:typearea-experts.cmd.AfterCalculatingTypearea*">473</a></li>
<li><a name="cmd.AfterCalculatingTypearea"></a><a href="#cmd.AfterCalculatingTypearea">\AfterCalculatingTypearea</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:typearea-experts.cmd.AfterCalculatingTypearea">473</a></li>
- <li><a name="cmd.AfterClass!"></a><a href="#cmd.AfterClass!">\AfterClass!</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.AfterClass!">362</a></li>
<li><a name="cmd.AfterClass*"></a><a href="#cmd.AfterClass*">\AfterClass*</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.AfterClass*">362</a></li>
- <li><a name="cmd.AfterClass+"></a><a href="#cmd.AfterClass+">\AfterClass+</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.AfterClass+">362</a></li>
<li><a name="cmd.AfterClass"></a><a href="#cmd.AfterClass">\AfterClass</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.AfterClass">362</a></li>
<li><a name="cmd.AfterFile"></a><a href="#cmd.AfterFile">\AfterFile</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.AfterFile">361</a></li>
- <li><a name="cmd.AfterPackage!"></a><a href="#cmd.AfterPackage!">\AfterPackage!</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.AfterPackage!">362</a></li>
<li><a name="cmd.AfterPackage*"></a><a href="#cmd.AfterPackage*">\AfterPackage*</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.AfterPackage*">362</a></li>
- <li><a name="cmd.AfterPackage+"></a><a href="#cmd.AfterPackage+">\AfterPackage+</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.AfterPackage+">362</a></li>
<li><a name="cmd.AfterPackage"></a><a href="#cmd.AfterPackage">\AfterPackage</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.AfterPackage">362</a></li>
<li><a name="cmd.AfterReadingMainAux"></a><a href="#cmd.AfterReadingMainAux">\AfterReadingMainAux</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.AfterReadingMainAux">364</a></li>
<li><a name="cmd.AfterRestoreareas*"></a><a href="#cmd.AfterRestoreareas*">\AfterRestoreareas*</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:typearea-experts.cmd.AfterRestoreareas*">472</a></li>
@@ -177,11 +176,11 @@
<li><a name="cmd.AtEndOfFamilyOptions"></a><a href="#cmd.AtEndOfFamilyOptions">\AtEndOfFamilyOptions</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrbase.cmd.AtEndOfFamilyOptions">339</a></li>
<li><a name="cmd.Before@sect"></a><a href="#cmd.Before@sect">\Before@sect</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:maincls-experts.cmd.Before@sect">500</a></li>
<li><a name="cmd.Before@ssect"></a><a href="#cmd.Before@ssect">\Before@ssect</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:maincls-experts.cmd.Before@ssect">500</a></li>
- <li><a name="cmd.BeforeClass"></a><a href="#cmd.BeforeClass">\BeforeClass</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.BeforeClass">361</a></li>
+ <li><a name="cmd.BeforeClass"></a><a href="#cmd.BeforeClass">\BeforeClass</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.BeforeClass">362</a></li>
<li><a name="cmd.BeforeClosingMainAux"></a><a href="#cmd.BeforeClosingMainAux">\BeforeClosingMainAux</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.BeforeClosingMainAux">364</a></li>
<li><a name="cmd.BeforeFamilyProcessOptions"></a><a href="#cmd.BeforeFamilyProcessOptions">\BeforeFamilyProcessOptions</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrbase.cmd.BeforeFamilyProcessOptions">336</a></li>
<li><a name="cmd.BeforeFile"></a><a href="#cmd.BeforeFile">\BeforeFile</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.BeforeFile">361</a></li>
- <li><a name="cmd.BeforePackage"></a><a href="#cmd.BeforePackage">\BeforePackage</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.BeforePackage">361</a></li>
+ <li><a name="cmd.BeforePackage"></a><a href="#cmd.BeforePackage">\BeforePackage</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.BeforePackage">362</a></li>
<li><a name="cmd.BeforeRestoreareas*"></a><a href="#cmd.BeforeRestoreareas*">\BeforeRestoreareas*</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:typearea-experts.cmd.BeforeRestoreareas*">472</a></li>
<li><a name="cmd.BeforeRestoreareas"></a><a href="#cmd.BeforeRestoreareas">\BeforeRestoreareas</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:typearea-experts.cmd.BeforeRestoreareas">472</a></li>
<li><a name="cmd.BeforeSelectAnyPageStyle"></a><a href="#cmd.BeforeSelectAnyPageStyle">\BeforeSelectAnyPageStyle</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlayer.cmd.BeforeSelectAnyPageStyle">433</a></li>
@@ -346,25 +345,25 @@
<li><a name="cmd.RedeclareSectionCommands"></a><a href="#cmd.RedeclareSectionCommands">\RedeclareSectionCommands</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:maincls-experts.cmd.RedeclareSectionCommands">491</a></li>
<li><a name="cmd.RelaxFamilyKey"></a><a href="#cmd.RelaxFamilyKey">\RelaxFamilyKey</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrbase.cmd.RelaxFamilyKey">335</a></li>
<li><a name="cmd.RemoveLayersFromPageStyle"></a><a href="#cmd.RemoveLayersFromPageStyle">\RemoveLayersFromPageStyle</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlayer.cmd.RemoveLayersFromPageStyle">438</a></li>
- <li><a name="cmd.ReplaceClass"></a><a href="#cmd.ReplaceClass">\ReplaceClass</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.ReplaceClass">366</a></li>
- <li><a name="cmd.ReplaceInput"></a><a href="#cmd.ReplaceInput">\ReplaceInput</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.ReplaceInput">365</a></li>
- <li><a name="cmd.ReplacePackage"></a><a href="#cmd.ReplacePackage">\ReplacePackage</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.ReplacePackage">366</a></li>
- <li><a name="cmd.ResetPreventPackageFromLoading"></a><a href="#cmd.ResetPreventPackageFromLoading">\ResetPreventPackageFromLoading</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.ResetPreventPackageFromLoading">369</a></li>
+ <li><a name="cmd.ReplaceClass"></a><a href="#cmd.ReplaceClass">\ReplaceClass</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.ReplaceClass">367</a></li>
+ <li><a name="cmd.ReplaceInput"></a><a href="#cmd.ReplaceInput">\ReplaceInput</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.ReplaceInput">366</a></li>
+ <li><a name="cmd.ReplacePackage"></a><a href="#cmd.ReplacePackage">\ReplacePackage</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.ReplacePackage">367</a></li>
+ <li><a name="cmd.ResetPreventPackageFromLoading"></a><a href="#cmd.ResetPreventPackageFromLoading">\ResetPreventPackageFromLoading</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.ResetPreventPackageFromLoading">368</a></li>
<li><a name="cmd.SecDef"></a><a href="#cmd.SecDef">\SecDef</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:maincls-experts.cmd.SecDef">499</a></li>
<li><a name="cmd.Sentence"></a><a href="#cmd.Sentence">\Sentence</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrjura.cmd.Sentence">318</a></li>
<li><a name="cmd.SplitDoHook"></a><a href="#cmd.SplitDoHook">\SplitDoHook</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrbase.cmd.SplitDoHook">358</a></li>
- <li><a name="cmd.StorePreventPackageFromLoading"></a><a href="#cmd.StorePreventPackageFromLoading">\StorePreventPackageFromLoading</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.StorePreventPackageFromLoading">369</a></li>
+ <li><a name="cmd.StorePreventPackageFromLoading"></a><a href="#cmd.StorePreventPackageFromLoading">\StorePreventPackageFromLoading</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.StorePreventPackageFromLoading">368</a></li>
<li><a name="cmd.SubClause"></a><a href="#cmd.SubClause">\SubClause</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrjura.cmd.SubClause">313</a></li>
<li><a name="cmd.TOCEntryStyleInitCode"></a><a href="#cmd.TOCEntryStyleInitCode">\TOCEntryStyleInitCode</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:tocbasic.cmd.TOCEntryStyleInitCode">400</a></li>
<li><a name="cmd.TOCEntryStyleStartInitCode"></a><a href="#cmd.TOCEntryStyleStartInitCode">\TOCEntryStyleStartInitCode</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:tocbasic.cmd.TOCEntryStyleStartInitCode">400</a></li>
<li><a name="cmd.TOCLineLeaderFill"></a><a href="#cmd.TOCLineLeaderFill">\TOCLineLeaderFill</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:tocbasic.cmd.TOCLineLeaderFill">401</a></li>
<li><a name="cmd.TOCclone"></a><a href="#cmd.TOCclone">\TOCclone</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrwfile.cmd.TOCclone">372</a></li>
<li><a name="cmd.Telephone"></a><a href="#cmd.Telephone">\Telephone</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scraddr.cmd.Telephone">286</a></li>
- <li><a name="cmd.UnPreventPackageFromLoading*"></a><a href="#cmd.UnPreventPackageFromLoading*">\UnPreventPackageFromLoading*</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.UnPreventPackageFromLoading*">370</a></li>
- <li><a name="cmd.UnPreventPackageFromLoading"></a><a href="#cmd.UnPreventPackageFromLoading">\UnPreventPackageFromLoading</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.UnPreventPackageFromLoading">370</a></li>
- <li><a name="cmd.UnReplaceClass"></a><a href="#cmd.UnReplaceClass">\UnReplaceClass</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.UnReplaceClass">368</a></li>
- <li><a name="cmd.UnReplaceInput"></a><a href="#cmd.UnReplaceInput">\UnReplaceInput</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.UnReplaceInput">368</a></li>
- <li><a name="cmd.UnReplacePackage"></a><a href="#cmd.UnReplacePackage">\UnReplacePackage</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.UnReplacePackage">368</a></li>
+ <li><a name="cmd.UnPreventPackageFromLoading*"></a><a href="#cmd.UnPreventPackageFromLoading*">\UnPreventPackageFromLoading*</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.UnPreventPackageFromLoading*">369</a></li>
+ <li><a name="cmd.UnPreventPackageFromLoading"></a><a href="#cmd.UnPreventPackageFromLoading">\UnPreventPackageFromLoading</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.UnPreventPackageFromLoading">369</a></li>
+ <li><a name="cmd.UnReplaceClass"></a><a href="#cmd.UnReplaceClass">\UnReplaceClass</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.UnReplaceClass">367</a></li>
+ <li><a name="cmd.UnReplaceInput"></a><a href="#cmd.UnReplaceInput">\UnReplaceInput</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.UnReplaceInput">367</a></li>
+ <li><a name="cmd.UnReplacePackage"></a><a href="#cmd.UnReplacePackage">\UnReplacePackage</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlfile.cmd.UnReplacePackage">367</a></li>
<li><a name="cmd.UnifyLayersAtPageStyle"></a><a href="#cmd.UnifyLayersAtPageStyle">\UnifyLayersAtPageStyle</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrlayer.cmd.UnifyLayersAtPageStyle">439</a></li>
<li><a name="cmd.XdivY"></a><a href="#cmd.XdivY">\XdivY</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrbase.cmd.XdivY">355</a></li>
<li><a name="cmd.XmodY"></a><a href="#cmd.XmodY">\XmodY</a> &rarr;&nbsp;<a href="scrguien.pdf#desc:scrbase.cmd.XmodY">355</a></li>
diff --git a/macros/latex/contrib/koma-script/doc/scrguien.pdf b/macros/latex/contrib/koma-script/doc/scrguien.pdf
index 484bee5042..7d4e484dc0 100644
--- a/macros/latex/contrib/koma-script/doc/scrguien.pdf
+++ b/macros/latex/contrib/koma-script/doc/scrguien.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/scrlayer-fancyhdr.pdf b/macros/latex/contrib/koma-script/doc/scrlayer-fancyhdr.pdf
index 0067363ec9..479fe1eb26 100644
--- a/macros/latex/contrib/koma-script/doc/scrlayer-fancyhdr.pdf
+++ b/macros/latex/contrib/koma-script/doc/scrlayer-fancyhdr.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrbase.tex b/macros/latex/contrib/koma-script/source-doc/english/scrbase.tex
index d90b1ef5e0..56f4899802 100644
--- a/macros/latex/contrib/koma-script/source-doc/english/scrbase.tex
+++ b/macros/latex/contrib/koma-script/source-doc/english/scrbase.tex
@@ -1,6 +1,6 @@
% ======================================================================
% scrbase.tex
-% Copyright (c) Markus Kohm, 2002-2019
+% Copyright (c) Markus Kohm, 2002-2020
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
@@ -18,7 +18,7 @@
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrbase.tex
-% Copyright (c) Markus Kohm, 2002-2019
+% Copyright (c) Markus Kohm, 2002-2020
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c, verteilt und/oder veraendert werden.
@@ -46,11 +46,11 @@
% ======================================================================
\KOMAProvidesFile{scrbase.tex}
- [$Date: 2019-12-03 09:41:21 +0100 (Tue, 03 Dec 2019) $
+ [$Date: 2020-08-24 15:34:10 +0200 (Mon, 24 Aug 2020) $
KOMA-Script package scrbase]
\translator{Markus Kohm\and Melvin Hendrix\and Karl Hagen}
-% Date of the translated German file: 2019-12-03
+% Date of the translated German file: 2020-08-24
\chapter{Basic Functions in the \Package{scrbase} Package}
\labelbase{scrbase}
diff --git a/macros/latex/contrib/koma-script/source-doc/english/scrlfile.tex b/macros/latex/contrib/koma-script/source-doc/english/scrlfile.tex
index f3333d3140..f6a7220ca8 100644
--- a/macros/latex/contrib/koma-script/source-doc/english/scrlfile.tex
+++ b/macros/latex/contrib/koma-script/source-doc/english/scrlfile.tex
@@ -1,6 +1,6 @@
% ======================================================================
% scrlfile.tex
-% Copyright (c) Markus Kohm, 2001-2019
+% Copyright (c) Markus Kohm, 2001-2020
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
@@ -18,7 +18,7 @@
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrlfile.tex
-% Copyright (c) Markus Kohm, 2001-2019
+% Copyright (c) Markus Kohm, 2001-2020
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c, verteilt und/oder veraendert werden.
@@ -46,11 +46,11 @@
% ============================================================================
\KOMAProvidesFile{scrlfile.tex}
- [$Date: 2019-12-03 09:41:21 +0100 (Tue, 03 Dec 2019) $
+ [$Date: 2020-09-14 09:43:36 +0200 (Mon, 14 Sep 2020) $
KOMA-Script guide (chapter: scrlfile)]
\translator{Gernot Hassenpflug\and Markus Kohm\and Karl Hagen}
-% Date of the translated German file: 2019-12-03
+% Date of the translated German file: 2020-09-14
\chapter{Controlling Package Dependencies with \Package{scrlfile}}
\labelbase{scrlfile}
@@ -111,6 +111,32 @@ are also applications for normal \LaTeX{} users. Therefore, this chapter
gives examples for both groups.
%\end{Explain}
+\begin{Declaration}
+ \Option{withdeprecated}
+\end{Declaration}
+With\ChangedAt{v3.32}{\Package{scrlfile}} \LaTeX{} 2020-10-01 a completely new
+hook mechanism is available. Instead of redefining macros of the \LaTeX{}
+kernel, \Package{scrlfile} 3.32 and newer makes use of it. For this purpose it
+loads the internal package
+\Package{scrfile-hook}\IndexPackage[indexmain]{scrlfile-hook}. With older
+\LaTeX{} versions, the internal package \Package{scrlayer-patcholdkernel}%
+\IndexPackage[indexmain]{scrlfile-patcholdkernel} is used. However, since it
+was not possible to achieve identical functionality with the new mechanism in
+\LaTeX, some commands of \Package{scrlfile} were marked as
+deprecated. Furthermore, the opportunity was taken to organize the
+proliferation of command variants. If a user uses a class or package that is
+still based on the commands that are no longer supported by
+\Package{scrlfile}, the package \Package{scrlfile} can be loaded with
+\begin{lstcode}
+ \RequirePackage[withdeprecated]{scrlfile}
+\end{lstcode}
+before loading the class. \Package{scrlfile} then additionally emulates some
+of the deprecated commands in a way that should be sufficient in most
+cases. In any case, the author of the corresponding class or package should be
+informed, so that he or she can make an adaptation to the current version of
+\Package{scrlfile} or directly to \LaTeX{} from version 2020-10-01.%
+%
+\EndIndexGroup
\section{Actions Before and After Loading}
\seclabel{macros}
@@ -120,8 +146,8 @@ loading files. The commands used to do so distinguish between ordinary files,
classes, and packages.
\begin{Declaration}
- \Macro{BeforeFile}\Parameter{file}\Parameter{commands}%
- \Macro{AfterFile}\Parameter{file}\Parameter{commands}
+ \Macro{BeforeFile}\Parameter{file}\OParameter{label}\Parameter{commands}%
+ \Macro{AfterFile}\Parameter{file}\OParameter{label}\Parameter{commands}
\end{Declaration}%
\Macro{BeforeFile} ensures that the \PName{commands} are executed before the
next time \PName{file} is loaded. \Macro{AfterFile} works in a similar
@@ -130,11 +156,21 @@ been loaded. Of course, if \PName{file} is never loaded, the \PName{commands}
will never be executed. For \PName{file}, you should specify any extensions as
part of the file name, as you would with \Macro{input}.
-To implement those features, \Package{scrlfile} redefines the well-known
-\LaTeX{} command \Macro{InputIfFileExists}. If this command does not have the
-expected definition, \Package{scrlfile} issues a warning. This occurs in case
-the command is changed in future \LaTeX{} versions or has already been
-redefined by another package.
+To implement those featuresfor \LaTeX{} before version 2020-10-01,
+\Package{scrlfile-patcholdlatex} redefines the well-known \LaTeX{} command
+\Macro{InputIfFileExists}. If this command does not have the expected
+definition, \Package{scrlfile-patcholdlatex} issues a warning. This occurs in
+case the command has already been redefined by an incompatible package.
+
+With\ChangedAt{v3.32}{\Package{scrlfile}}\IndexCmd{AddToHook} \LaTeX{} from
+version 2020-10-01 on, \Package{scrlfile-hook} uses
+\Macro{AddToHook}\PParameter{file/before/\PName{file}}\OParameter{label}\Parameter{commands}
+or
+\Macro{AddToHook}\PParameter{file/after/\PName{file}}\OParameter{label}\Parameter{commands}.
+For more information on the meaning of the optional argument \PName{label},
+please refer to the corresponding manual of the \LaTeX{} core statement
+\Macro{AddToHook}. As a rule, the omission of the optional argument is
+recommended. With older \LaTeX{} versions this is ignored anyway.
\LaTeX{} uses the \Macro{InputIfFileExists} command every time it loads a
file. This occurs regardless of whether the file is loaded with
@@ -154,28 +190,33 @@ instead. Notice the parentheses surrounding the file name!%
\begin{Declaration}
- \Macro{BeforeClass}\Parameter{class}\Parameter{commands}%
- \Macro{BeforePackage}\Parameter{package}\Parameter{commands}
+ \Macro{BeforeClass}\Parameter{class}\OParameter{label}\Parameter{commands}%
+ \Macro{BeforePackage}\Parameter{package}\OParameter{label}\Parameter{commands}
\end{Declaration}%
These two commands work the same way as \DescRef{\LabelBase.cmd.BeforeFile}.
The only difference is that the \PName{class} or \PName{package} is specified
with its class or package name and not with its file name. That means you
-should omit the file extensions \File{.cls} or \File{.sty}.%
-%
+should omit the file extensions \File{.cls} or \File{.sty}.
+
+Note,\important{Attention!} \Package{scrlfile-hook} also uses \PValue{file}
+and not \PValue{class} or \PValue{package} for the hook. This is the only way
+to ensure that the execution of the \PName{commands} already takes place in
+the context of the class or package. For the meaning of the optional argument
+\PName{label} please refer to the \LaTeX{} core statement
+\Macro{AddToHook}\IndexCmd{AddToHook}. As a rule, the omission of the optional
+argument is recommended. With older \LaTeX{} versions this is ignored anyway.%
\EndIndexGroup
\begin{Declaration}
- \Macro{AfterClass}\Parameter{class}\Parameter{commands}%
- \Macro{AfterClass*}\Parameter{class}\Parameter{commands}%
- \Macro{AfterClass+}\Parameter{class}\Parameter{commands}%
- \Macro{AfterClass!}\Parameter{class}\Parameter{commands}%
- \Macro{AfterAtEndOfClass}\Parameter{class}\Parameter{commands}%
- \Macro{AfterPackage}\Parameter{package}\Parameter{commands}%
- \Macro{AfterPackage*}\Parameter{package}\Parameter{commands}%
- \Macro{AfterPackage+}\Parameter{package}\Parameter{commands}%
- \Macro{AfterPackage!}\Parameter{package}\Parameter{commands}%
- \Macro{AfterAtEndOfPackage}\Parameter{package}\Parameter{commands}
+ \Macro{AfterClass}\Parameter{class}\OParameter{label}\Parameter{commands}%
+ \Macro{AfterClass*}\Parameter{class}\OParameter{label}\Parameter{commands}%
+ \Macro{AfterAtEndOfClass}\Parameter{class}\OParameter{label}\Parameter{commands}%
+ \Macro{AfterAtEndOfClass*}\Parameter{class}\OParameter{label}\Parameter{commands}%
+ \Macro{AfterPackage}\Parameter{package}\OParameter{label}\Parameter{commands}%
+ \Macro{AfterPackage*}\Parameter{package}\OParameter{label}\Parameter{commands}%
+ \Macro{AfterAtEndOfPackage}\Parameter{package}\OParameter{label}\Parameter{commands}
+ \Macro{AfterAtEndOfPackage*}\Parameter{package}\OParameter{label}\Parameter{commands}
\end{Declaration}%
The \Macro{AfterClass} and \Macro{AfterPackage} commands work much like
\DescRef{\LabelBase.cmd.AfterFile}. The only difference is that the
@@ -188,28 +229,27 @@ function somewhat differently. If the class or package has already been
loaded, they execute the \PName{commands} immediately rather than waiting
until the next time the class or package is loaded.
-The\important[i]{\Macro{AfterClass+}\\\Macro{AfterPackage+}}
-plus\ChangedAt{v3.09}{\Package{scrlfile}} version executes the
-\PName{commands} after the class or package has been completely loaded. This
-behaviour differs from that of the starred version only if you use the command
-when the class or package has begun loading but has not yet finished. If the
-class or package has not finished loading, the \PName{commands} will always be
-executed before the commands in \Macro{AtEndOfClass} or
-\Macro{AtEndOfPackage}.
-
-If\important[i]{\Macro{AfterClass!}\\\Macro{AfterPackage!}} a class uses
-\Macro{AtEndOfClass} or a package uses \Macro{AtEndOfPackage} to execute
-commands after the class of package file has been loaded completely, and
-if you want to execute \PName{commands} after these deferred
-commands have been executed, you can use the exclamation-mark versions
-\Macro{AfterClass!}\ChangedAt{v3.09}{\Package{scrlfile}} or
-\Macro{AfterPackage!}.
-
-If\important[i]{\Macro{AfterAtEndOfClass}\\\Macro{AfterAtEndOfPackage}} you
-want to execute the \PName{commands} only when the class or package is loaded
-later and outside the context of that class or package, you can use
-\Macro{AfterAtEndOfClass}\ChangedAt{v3.09}{\Package{scrlfile}} for classes and
-\Macro{AfterAtEndOfPackage} for packages.
+However\ChangedAt{v3.09}{\Package{scrlfile}}%
+\important[i]{\Macro{AfterAtEndOfClass}\\\Macro{AfterAtEndOfPackage}}, code
+whose execution is delayed by \Macro{AtEndOfClass} or \Macro{AtEndOfPackage}
+within the class or package is first executed afterwards. In contrast,
+\Macro{AfterAtEndOfClass} or \Macro{AfterAtEndOfPackage} ensures that
+\PName{commands} are executed after such code.
+
+Again\ChangedAt{v3.32}{\Package{scrlfile}}%
+\important[i]{\Macro{AfterAtEndOfClass*}\\\Macro{AfterAtEndOfPackage*}}, there
+are star variants that ensure that \PName{commands} are executed immediately
+if the class or package is already completely loaded. If a class or package is
+currently loaded, the execution is delayed like in the version without star.
+
+Note that \Package{scrlfile-hook} uses a \PValue{file/after} hook for
+\Macro{AfterClass}, \Macro{AfterPackage} and their star variants. In contrast
+\Macro{AfterAtEndOfClass} and its star variant set a \PValue{class/after} hook
+and \Macro{AfterAtEndOfPackage} and its star variant set a
+\PValue{package/after} hook accordingly. For the meaning of the optional
+argument \PName{label} please refer to the \LaTeX{} core statement
+\Macro{AddToHook}\IndexCmd{AddToHook}. As a rule, the omission of the optional
+argument is recommended. With older \LaTeX{} versions this is ignored anyway.
\begin{Example}
The following example for class and package authors shows how \KOMAScript{}
@@ -396,46 +436,55 @@ actions before or after loading a particular file, package, or class. You can
also use \Package{scrlfile} to input a completely different file than the one
that was requested.
-
\begin{Declaration}
\Macro{ReplaceInput}\Parameter{original file}%
\Parameter{replacement file}%
\end{Declaration}%
-This\ChangedAt{v2.96}{\Package{scrlfile}} command defines a replacement for
-the file specified in the first argument, \PName{original file}. If \LaTeX{}
-is instructed to load this file, the \PName{replacement file} will be loaded
-instead. The replacement-file definition affects all files loaded using
+This command\ChangedAt{v2.96}{\Package{scrlfile}} defines a replacement
+for the file specified in the first argument, \PName{original file}. If
+\LaTeX{} is instructed to load this file, the \PName{replacement file} will be
+loaded instead. The replacement-file definition affects all files loaded using
\Macro{InputIfFileExists}, whether they are loaded by the user or internally
by \LaTeX{}. To do so, \Package{scrlfile} redefines \Macro{InputIfFileExists}.
+When\ChangedAt{v3.32}{\Package{scrlfile}} using a \LaTeX{} version up to
+2020-04-01, the package \Package{scrlfile-patcholdlatex} must redefine the
+\Macro{InputIfFileExists} statement for this purpose. When using \LaTeX{} from
+version 2020-10-01 on, \Package{scrlfile-hook} uses the internal \LaTeX{}
+statement \Macro{declare@file@substitution}. The \LaTeX{} team asks to make
+such a substitution only if there is no other way to achieve the desired
+result, for example if such a substitution is indispensable to maintain
+compatibility and if the \PName{replacement file} provides the same
+functionality.
+
\begin{Example}
- You want to input the \File{\Macro{jobname}.xua} file instead of the
- \File{\Macro{jobname.aux}} file. To do this, you use
+ You want to input the \File{\Macro{jobname}.tol} file instead of the
+ \File{\Macro{jobname.lot}} file. To do this, you use
\begin{lstcode}
- \ReplaceInput{\jobname.aux}{\jobname.xua}
+ \ReplaceInput{\jobname.tol}{\jobname.lot}
\end{lstcode}
- If additionally you replace \File{\Macro{jobname}.xua} by
- \File{\Macro{jobname}.uxa} using
+ If additionally you replace \File{\Macro{jobname}.tol} by
+ \File{\Macro{jobname}.tlo} using
\begin{lstcode}
- \ReplaceInput{\jobname.xua}{\jobname.uxa}
+ \ReplaceInput{\jobname.tol}{\jobname.tlo}
\end{lstcode}
- then \File{\Macro{jobname}.aux} will also be replaced by
- \File{\Macro{jobname}.uxa}. In this way, you can process the whole
+ then \File{\Macro{jobname}.tol} will also be replaced by
+ \File{\Macro{jobname}.tlo}. In this way, you can process the whole
replacement chain.
However, a replacement that results in a loop such as
\begin{lstcode}
- \ReplaceInput{\jobname.aux}{\jobname.xua}
- \ReplaceInput{\jobname.xua}{\jobname.aux}
+ \ReplaceInput{\jobname.lot}{\jobname.tol}
+ \ReplaceInput{\jobname.tol}{\jobname.lot}
\end{lstcode}
- will cause a \emph{stack size error}. So it is not possible to replace
+ will cause an error. So it is not possible to replace
a file that has already been replaced once by itself again.
\end{Example}
In theory, it would also be possible to use this command to replace one
-package or class with another. But \LaTeX{} would recognize that the requested
-file name does not match the name of the package or class. You can find a
-solution for this problem below.%
+package or class with another .However, it is recommended to use the following
+instructions for replacing a package or class. For older \LaTeX{} versions
+this is even mandatory.%
\EndIndexGroup
@@ -447,26 +496,8 @@ solution for this problem below.%
\end{Declaration}%
You\ChangedAt{v2.96}{\Package{scrlfile}}\textnote{Attention!} should never
replace a class or package using the \DescRef{\LabelBase.cmd.ReplaceInput}
-command described above. Doing so would result in a \LaTeX{} warning about
-mismatched class or package names. Real errors are also possible if a class or
-package is loaded under an incorrect file name.
-\begin{Example}
- You replace the \Package{scrpage2} package with its official successor,
- \Package{scrlayer-scrpage}, by using
-\begin{lstcode}[escapechar=\$]
- \ReplaceInput{scrpage2.sty}{scrlayer-scrpage.sty}$\textnote{Do not try this!}$
-\end{lstcode}
- Loading \Package{scrpage2} will then lead to the following warning:
-\begin{lstcode}
- LaTeX warning: You have requested `scrpage2',
- but the package provides `scrlayer-scrpage'.
-\end{lstcode}
- Users may be greatly confused by such a warning because they requested not
- \Package{scrlayer-scrpage} but \Package{scrpage2}, which was replaced by
- \Package{scrlayer-scrpage}.
-\end{Example}
-One solution to this problem is to use \Macro{ReplaceClass} or
-\Macro{ReplacePackage} instead of \DescRef{\LabelBase.cmd.ReplaceInput}. Note
+command described above. Instead, \Macro{ReplacePackage} should be used for
+package replacements and \Macro{ReplaceClass} for class replacements. Note
that in this case, as with \Macro{documentclass} and \Macro{usepackage}, you
should give the name of the class or package and not the complete file name.
@@ -480,66 +511,21 @@ Please\textnote{Attention!} note that the \PName{replacement class} or the
\PName{replacement package} will be loaded with the same options that would
have been passed to the \PName{original class} or \PName{original package}. If
you replace a class or package with one that does not support a requested
-option, you will receive the usual warnings and errors. However, you can
-declare such missing options using \DescRef{\LabelBase.cmd.BeforeClass} or
-\DescRef{\LabelBase.cmd.BeforePackage}.
-
-\begin{Example}
- Suppose you want to replace the \Package{oldfoo} package with the
- \Package{newfoo} package when the former package is loaded. You can do this with
-\begin{lstcode}
- \ReplacePackage{oldfoo}{newfoo}
-\end{lstcode}
- Suppose the old package provides an \Option{oldopt} option, but the new
- package does not. With
-\begin{lstcode}
- \BeforePackage{newfoo}{%
- \DeclareOption{oldopt}{%
- \PackageInfo{newfoo}%
- {option `oldopt' not supported}%
- }}%
-\end{lstcode}
- you can declare this missing option for the \Package{newfoo} package. This
- avoids an error message when the \Package{oldfoo} package is loaded with the
- option that is unsupported by \Package{newfoo}.
-
- If, on the other hand, the \Package{newfoo} package supports a
- \Option{newopt} option that should be used instead of the \Option{oldopt}
- option, you can also achieved this:
-\begin{lstcode}
- \BeforePackage{newfoo}{%
- \DeclareOption{oldopt}{%
- \ExecuteOptions{newopt}%
- }}%
-\end{lstcode}
- You can even specify different default options that apply when loading the
- new package:
-\begin{lstcode}
- \BeforePackage{newfoo}{%
- \DeclareOption{oldopt}{%
- \ExecuteOptions{newopt}%
- }%
- \PassOptionsToPackage{newdefoptA,newdefoptB}%
- {newfoo}%
- }
-\end{lstcode}
- or directly:
-\begin{lstcode}
- \BeforePackage{newfoo}{%
- \DeclareOption{oldopt}{%
- \ExecuteOptions{newopt}%
- }%
- }%
- \PassOptionsToPackage{newdefoptA,newdefoptB}%
- {newfoo}%
-\end{lstcode}
- Note that in the last example, the call to \Macro{PassOptionsToPackage}
- occurs not within but after \Macro{BeforePackage}
-\end{Example}
+option, you will receive the usual warnings and errors.
Of course, to replace classes, you must load \Package{scrlfile} before the
class using \Macro{RequirePackage} instead of \Macro{usepackage}.
-%
+
+When\ChangedAt{v3.32}{\Package{scrlfile}} using a \LaTeX{} version up to
+2020-04-01 the package \Package{scrlfile-patcholdlatex} must redefine the
+internal statements \Macro{@onefilewithoptions} and
+\Macro{@loadwithoptions}. When using \LaTeX{} from version 2020-10-01 on,
+\Package{scrlfile-hook} uses the internal \LaTeX{} statement
+\Macro{declare@file@substitution}. The \LaTeX{} Team asks to perform such a
+substitution only if there is no other way to achieve the desired result,
+e.g. if such a substitution is indispensable to maintain compatibility and the
+\PName{replacement package} or \PName{replacement class} provides the same
+functionality.%
\EndIndexGroup
@@ -551,7 +537,7 @@ class using \Macro{RequirePackage} instead of \Macro{usepackage}.
You\ChangedAt{v3.12}{\Package{scrlfile}} can also remove a replacement. You
should remove the replacement definition for an input file using
\Macro{UnReplaceInput}, for a package using \Macro{UnReplacePackage}, and for
-a class using \Macro{UnReplaceClass}.%
+a class using \Macro{UnReplaceClass}.%
\EndIndexGroup
diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex
index 435588f9b5..e287d4f38c 100644
--- a/macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex
+++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex
@@ -1,6 +1,6 @@
% ======================================================================
% scrbase.tex
-% Copyright (c) Markus Kohm, 2002-2019
+% Copyright (c) Markus Kohm, 2002-2020
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
@@ -18,7 +18,7 @@
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrbase.tex
-% Copyright (c) Markus Kohm, 2002-2019
+% Copyright (c) Markus Kohm, 2002-2020
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c, verteilt und/oder veraendert werden.
@@ -46,7 +46,7 @@
% ======================================================================
\KOMAProvidesFile{scrbase.tex}
- [$Date: 2019-12-03 09:41:21 +0100 (Tue, 03 Dec 2019) $
+ [$Date: 2020-08-24 15:34:10 +0200 (Mon, 24 Aug 2020) $
KOMA-Script package scrbase]
\chapter{Grundlegende Funktionen im Paket \Package{scrbase}}
@@ -1996,7 +1996,7 @@ genommen wird.
\item \PValue{heading/begingroup/}\PName{Name} mit leerem Argument für
Einmalcode.
\end{enumerate}
- Der Platzhalter \PName{Name} ist dabei indentisch mit dem bei
+ Der Platzhalter \PName{Name} ist dabei identisch mit dem bei
\DescRef{maincls-experts.cmd.DeclareSectionCommand},
\DescRef{maincls-experts.cmd.DeclareNewSectionCommand} oder
\DescRef{maincls-experts.cmd.ProvideSectionCommand}
diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrlfile.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlfile.tex
index 13aab4afc1..a65ab2312f 100644
--- a/macros/latex/contrib/koma-script/source-doc/ngerman/scrlfile.tex
+++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrlfile.tex
@@ -1,6 +1,6 @@
% ======================================================================
% scrlfile.tex
-% Copyright (c) Markus Kohm, 2001-2019
+% Copyright (c) Markus Kohm, 2001-2020
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
@@ -18,7 +18,7 @@
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrlfile.tex
-% Copyright (c) Markus Kohm, 2001-2019
+% Copyright (c) Markus Kohm, 2001-2020
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c, verteilt und/oder veraendert werden.
@@ -46,7 +46,7 @@
% ============================================================================
\KOMAProvidesFile{scrlfile.tex}%
- [$Date: 2019-12-03 09:41:21 +0100 (Tue, 03 Dec 2019) $
+ [$Date: 2020-09-14 09:43:36 +0200 (Mon, 14 Sep 2020) $
KOMA-Script guide (chapter: scrlfile)]
\chapter{Paketabhängigkeiten mit \Package{scrlfile}
@@ -124,6 +124,35 @@ dürfte, gibt es durchaus auch Anwendungen für normale \LaTeX-Benutzer. Deshalb
sind in diesem Kapitel auch für beide Gruppen Beispiele aufgeführt.
%\end{Explain}
+\begin{Declaration}
+ \Option{withdeprecated}
+\end{Declaration}
+Mit\ChangedAt{v3.32}{\Package{scrlfile}} \LaTeX{} 2020-10-01 steht ein
+komplett neuer \emph{Hook}-Mechanismus zur Verfügung. Statt Makros des
+\LaTeX-Kerns umzudefinieren, macht \Package{scrlfile} ab Version 3.32 davon
+auch Gebrauch. Dazu lädt es das interne Paket
+\Package{scrlfile-hook}\IndexPackage[indexmain]{scrlfile-hook}. Bei älteren
+\LaTeX-Versionen wird dagegen das interne Paket
+\Package{scrlfile-patcholdkernel}%
+\IndexPackage[indexmain]{scrlfile-patcholdkernel} verwendet. Da mit dem neuen
+Mechanismus in \LaTeX{} jedoch keine identische Funktionalität zu erreichen
+war, wurden einige Anweisungen von \Package{scrlfile} als veraltet
+markiert. Darüber hinaus wurde die Gelegenheit genutzt, den Wildwuchs an
+Befehlsvarianten zu ordnen. Sollte ein Anwender eine Klasse oder Pakete
+verwenden, die noch auf den dadurch nicht mehr unterstützten Befehlen
+basieren, so kann vor \Package{scrlfile} vor dem Laden der Klasse mit
+\begin{lstcode}
+ \RequirePackage[withdeprecated]{scrlfile}
+\end{lstcode}
+geladen werden. \Package{scrlfile} emuliert dann zusätzlich einige der
+veralteten Befehle in einer Weise, die in den meisten Fällen ausreichend sein
+sollte. In jedem Fall sollte jedoch der Autor der entsprechenden Klasse oder
+des entsprechenden Pakets verständigt werden, damit dieser eine Anpassung an
+die aktuelle Version von \Package{scrlfile} oder direkt an \LaTeX{} ab Version
+2020-10-01 vornimmt.%
+%
+\EndIndexGroup
+
\section{Aktionen vor und nach dem Laden}
\seclabel{macros}
@@ -134,8 +163,8 @@ Dateien, Klassen und Paketen unterschieden.
\begin{Declaration}
- \Macro{BeforeFile}\Parameter{Datei}\Parameter{Anweisungen}
- \Macro{AfterFile}\Parameter{Datei}\Parameter{Anweisungen}
+ \Macro{BeforeFile}\Parameter{Datei}\OParameter{Label}\Parameter{Anweisungen}
+ \Macro{AfterFile}\Parameter{Datei}\OParameter{Label}\Parameter{Anweisungen}
\end{Declaration}%
Mit Hilfe von \Macro{BeforeFile} kann dafür gesorgt werden, dass die
\PName{Anweisungen} vor dem nächsten Laden einer bestimmten \PName{Datei}
@@ -145,13 +174,23 @@ ausgeführt. Wird die Datei nie geladen, so werden die \PName{Anweisungen} in
beiden Fällen natürlich auch nie ausgeführt. Bei \PName{Datei} sind etwaige
Dateiendungen wie bei \Macro{input} als Teil des Dateinamens anzugeben.
-Um die Funktionalität bereitstellen zu können, bedient sich \Package{scrlfile}
-der bekannten \LaTeX-Anweisung
-\Macro{InputIfFileExists}. Diese\textnote{Achtung!} wird hierzu umdefiniert.
-Falls die Anweisung nicht die erwartete Definition hat, gibt
-\Package{scrlfile} eine Warnung aus. Dies geschieht für den Fall, dass die
-Anweisung in späteren \LaTeX-Versionen geändert wird oder bereits von einem
-anderen Paket umdefiniert wurde.
+Um die Funktionalität für \LaTeX{} vor Version 2020-10-01 bereitstellen zu
+können, bedient sich \Package{scrlfile-patcholdlatex} der bekannten
+\LaTeX-Anweisung \Macro{InputIfFileExists}. Diese\textnote{Achtung!} wird
+hierzu umdefiniert. Falls die Anweisung nicht die erwartete Definition hat,
+gibt \Package{scrlfile-patcholdlatex} eine Warnung aus. Dies geschieht für
+den Fall, dass die Anweisung bereits von einem inkompatiblen Paket umdefiniert
+wurde.
+
+Bei\ChangedAt{v3.32}{\Package{scrlfile}}\IndexCmd{AddToHook} \LaTeX{} ab
+Version 2020-10-01 wird von \Package{scrlfile-hook} hingegen
+\Macro{AddToHook}\PParameter{file/before/\PName{Datei}}\OParameter{Label}\Parameter{Anweisungen}
+beziehungsweise
+\Macro{AddToHook}\PParameter{file/after/\PName{Datei}}\OParameter{Label}\Parameter{Anweisungen}
+verwendet. Näheres zur Bedeutung des optionalen Arguments \PName{Label} ist
+der zugehörigen Anleitung zur \LaTeX-Kern-Anweisung \Macro{AddToHook} zu
+entnehmen. Empfohlen wird in der Regel der Verzicht auf das optionale
+Argument. Bei älteren \LaTeX-Versionen wird dieses ohnehin ignoriert.
Die Anweisung \Macro{InputIfFileExists} wird von \LaTeX{} immer verwendet,
wenn eine Datei geladen werden soll. Dies geschieht unabhängig davon, ob die
@@ -174,68 +213,76 @@ verwenden. Beachten Sie die Klammern um den Dateinamen!%
\begin{Declaration}
- \Macro{BeforeClass}\Parameter{Klasse}\Parameter{Anweisungen}
- \Macro{BeforePackage}\Parameter{Paket}\Parameter{Anweisungen}
+ \Macro{BeforeClass}\Parameter{Klasse}\OParameter{Label}\Parameter{Anweisungen}
+ \Macro{BeforePackage}\Parameter{Paket}\OParameter{Label}\Parameter{Anweisungen}
\end{Declaration}%
Diese beiden Befehle arbeiten vergleichbar zu
\DescRef{\LabelBase.cmd.BeforeFile} mit dem einen Unterschied, dass die
\PName{Klasse} beziehungsweise das \PName{Paket} mit seinem Namen und nicht
mit seinem Dateinamen angegeben wird. Die Endungen »\File{.cls}« und
-»\File{.sty}« entfallen hier also.%
-%
+»\File{.sty}« entfallen hier also.
+
+Es ist zu beachten\important{Achtung!}, dass hier von \Package{scrlfile-hook}
+ebenfalls \PValue{file} und nicht \PValue{class} respektive \PValue{package}
+für den Hook verwendet wird. Nur so ist sichergestellt, dass die Ausführung
+der \PName{Anweisungen} bereits im Kontext der Klasse beziehungsweise des
+Pakets erfolgt. Zur Bedeutung des optionalen Arguments \PName{label} sei
+wiederum auf die Anleitung der \LaTeX-Kernanweisung
+\Macro{AddToHook}\IndexCmd{AddToHook} verwiesen. Empfohlen wird in der Regel
+der Verzicht auf das optionale Argument. Bei älteren \LaTeX-Versionen wird
+dieses ohnehin ignoriert.%
\EndIndexGroup
\begin{Declaration}
- \Macro{AfterClass}\Parameter{Klasse}\Parameter{Anweisungen}
- \Macro{AfterClass*}\Parameter{Klasse}\Parameter{Anweisungen}
- \Macro{AfterClass+}\Parameter{Klasse}\Parameter{Anweisungen}
- \Macro{AfterClass!}\Parameter{Klasse}\Parameter{Anweisungen}
- \Macro{AfterAtEndOfClass}\Parameter{Klasse}\Parameter{Anweisungen}
- \Macro{AfterPackage}\Parameter{Paket}\Parameter{Anweisungen}
- \Macro{AfterPackage*}\Parameter{Paket}\Parameter{Anweisungen}
- \Macro{AfterPackage+}\Parameter{Paket}\Parameter{Anweisungen}
- \Macro{AfterPackage!}\Parameter{Paket}\Parameter{Anweisungen}
- \Macro{AfterAtEndOfPackage}\Parameter{Paket}\Parameter{Anweisungen}
+ \Macro{AfterClass}\Parameter{Klasse}\OParameter{Label}\Parameter{Anweisungen}
+ \Macro{AfterClass*}\Parameter{Klasse}\OParameter{Label}\Parameter{Anweisungen}
+ \Macro{AfterAtEndOfClass}\Parameter{Klasse}\OParameter{Label}\Parameter{Anweisungen}
+ \Macro{AfterAtEndOfClass*}\Parameter{Klasse}\OParameter{Label}\Parameter{Anweisungen}
+ \Macro{AfterPackage}\Parameter{Paket}\OParameter{Label}\Parameter{Anweisungen}
+ \Macro{AfterPackage*}\Parameter{Paket}\OParameter{Label}\Parameter{Anweisungen}
+ \Macro{AfterAtEndOfPackage}\Parameter{Paket}\OParameter{Label}\Parameter{Anweisungen}
+ \Macro{AfterAtEndOfPackage*}\Parameter{Paket}\OParameter{Label}\Parameter{Anweisungen}
\end{Declaration}%
-Die Anweisungen \Macro{AfterClass} und \Macro{AfterPackage} arbeiten
-weitgehend wie \DescRef{\LabelBase.cmd.AfterFile}, mit dem winzigen
-Unterschied, dass die \PName{Klasse} beziehungsweise das \PName{Paket} mit
-seinem Namen und nicht mit seinem Dateinamen angegeben wird. Die Endungen
-»\File{.cls}« und »\File{.sty}« entfallen hier also.
+Die\important[i]{\Macro{AfterClass}\\\Macro{AfterPackage}} Anweisungen
+\Macro{AfterClass} und \Macro{AfterPackage} arbeiten weitgehend wie
+\DescRef{\LabelBase.cmd.AfterFile}, mit dem winzigen Unterschied, dass die
+\PName{Klasse} beziehungsweise das \PName{Paket} mit seinem Namen und nicht
+mit seinem Dateinamen angegeben wird. Die Endungen »\File{.cls}« und
+»\File{.sty}« entfallen hier also.
Bei\important[i]{\Macro{AfterClass*}\\\Macro{AfterPackage*}} den
-Sternvarianten gibt es eine zusätzliche Funktionalität. Wurde oder wird die
-entsprechende Klasse oder das entsprechende Paket bereits geladen, so werden
-die \PName{Anweisungen} nicht nach dem nächsten Laden, sondern unmittelbar
-ausgeführt.
-
-Bei\important[i]{\Macro{AfterClass+}\\\Macro{AfterPackage+}} der
-Plusvariante\ChangedAt{v3.09}{\Package{scrlfile}} werden die
-\PName{Anweisungen} sicher erst dann ausgeführt, wenn die Klasse oder das
-Paket vollständig geladen wurde. Der Unterschied zwischen der Stern- und der
-Plusvariante kommt nur zum Tragen, falls die Anweisung verwendet wird, während
-das Laden der Klassen bzw. des Pakets zwar bereits begonnen hat, aber noch
-nicht beendet wurde. Wenn das Laden der Klasse bzw. des Pakets noch nicht
-abgeschlossen wurde, werden die \PName{Anweisungen} in allen Fällen vor den in
-der Klasse bzw. dem Paket mit \Macro{AtEndOfClass} oder \Macro{AtEndOfPackage}
-verzögerten Anweisungen ausgeführt.
-
-Um\important[i]{\Macro{AfterClass!}\\\Macro{AfterPackage!}} eine Ausführung
-nach den in der Klasse oder dem Paket selbst mit \Macro{AtEndOfClass} oder
-\Macro{AtEndOfPackage} verzögerten Anweisungen sicherzustellen, ist die
-Variante mit Ausrufezeichen\ChangedAt{v3.09}{\Package{scrlfile}} zu
-verwenden. Bei dieser Spielart werden die \PName{Anweisungen} nicht mehr im
-Kontext der angegebenen Klasse oder des angegebenen Pakets ausgeführt.
-
-Will\important[i]{\Macro{AfterAtEndOfClass}\\\Macro{AfterAtEndOfPackage}} man
-nur für den Fall, dass die Klasse bzw. das Paket noch nicht geladen wurde,
-erreichen, dass \PName{Anweisungen} nach der Klasse bzw. dem Paket und
-außerhalb des Kontextes der angegebenen Klasse bzw. des angegebenen Pakets
-ausgeführt werden, so verwendet man für Klassen die Anweisung
-\Macro{AfterAtEndOfClass}\ChangedAt{v3.09}{\Package{scrlfile}}
-und für Pakete \Macro{AfterAtEndOfPackage}.%
-%
+Sternvarianten \Macro{AfterClass*} und \Macro{AfterPackage*} gibt es eine
+zusätzliche Funktionalität. Wurde oder wird die entsprechende Klasse oder das
+entsprechende Paket bereits geladen, so werden die \PName{Anweisungen} nicht
+nach dem nächsten Laden, sondern unmittelbar ausgeführt.
+
+Code,\ChangedAt{v3.09}{\Package{scrlfile}}%
+\important[i]{\Macro{AfterAtEndOfClass}\\\Macro{AfterAtEndOfPackage}}
+dessen Ausführung per \Macro{AtEndOfClass}\IndexCmd{AtEndOfClass} oder
+\Macro{AtEndOfPackage}\IndexCmd{AtEndOfPackage} innerhalb der Klasse
+respektive des Pakets verzögert wird, wird allerdings erst danach
+ausgeführt. Mit \Macro{AfterAtEndOfClass} beziehungsweise
+\Macro{AfterAtEndOfPackage} wird dagegen sichergestellt, dass
+\PName{Anweisungen} erst nach solchem Code ausgeführt wird.
+
+Auch\ChangedAt{v3.32}{\Package{scrlfile}}%
+\important[i]{\Macro{AfterAtEndOfClass*}\\\Macro{AfterAtEndOfPackage*}}
+hierzu gibt es Sternvarianten, die dafür sorgen, dass \PName{Anweisungen}
+sofort ausgeführt werden, falls die Klasse beziehungsweise das Paket bereits
+vollständig geladen ist. Wird eine Klasse oder ein Paket gerade geladen, so
+wird die Ausführung wie bei der Version ohne Stern verzögert.
+
+Es ist zu beachten, dass \Package{scrlfile-hook} für \Macro{AfterClass},
+\Macro{AfterPackage} und deren Sternvarianten einen \PValue{file/after}-Hook
+verwendet. Dagegen setzen \Macro{AfterAtEndOfClass} und dessen Sternvariante
+einen \PValue{class/after}-Hook und \Macro{AfterAtEndOfPackage} und dessen
+Sternvariante entsprechend einen \PValue{package/after}-Hook. Zur Bedeutung
+des optionalen Arguments \PName{label} sei wiederum auf die Anleitung der
+\LaTeX-Kernanweisung \Macro{AddToHook}\IndexCmd{AddToHook}
+verwiesen. Empfohlen wird in der Regel der Verzicht auf das optionale
+Argument. Bei älteren \LaTeX-Versionen wird dieses ohnehin ignoriert.
+
\begin{Example}
Als Beispiel für Paket- oder Klassenautoren will ich zunächst
erklären, wie \KOMAScript{} selbst Gebrauch von den neuen
@@ -266,7 +313,7 @@ und für Pakete \Macro{AfterAtEndOfPackage}.%
es sich um eine verträgliche Version handelt. Falls dies nicht der
Fall ist, wird eine Warnung ausgegeben.
- An anderer Stelle findet sich in drei der \KOMAScript-Klassen Folgendes:
+ An anderer Stelle findet sich in drei der \KOMAScript-Klassen folgendes:
\begin{lstcode}
\AfterPackage{caption2}{%
\renewcommand*{\setcapindent}{%
@@ -447,38 +494,47 @@ der Datei mit dem als erstes angegebenen \PName{Dateiname} definiert. Wenn
\LaTeX{} anschließend angewiesen wird, diese Datei zu laden, wird stattdessen
\PName{Ersatzdatei} geladen. Die Definition der Ersatzdatei wirkt sich auf
alle Dateien aus, die vom Anwender oder intern von \LaTeX{} mit Hilfe von
-\Macro{InputIfFileExists} geladen werden. Dazu ist es allerdings erforderlich,
-dass \Package{scrlfile} diese Anweisung umdefiniert.
+\Macro{InputIfFileExists} geladen werden.
+
+Bei\ChangedAt{v3.32}{\Package{scrlfile}} Verwendung eines \LaTeX-Version bis
+2020-04-01 muss dass Paket \Package{scrlfile-patcholdlatex} dazu die Anweisung
+\Macro{InputIfFileExists} umdefinieren. Bei Verwendung von \LaTeX{} ab Version
+2020-10-01 wird hingegen von \Package{scrlfile-hook} die interne
+\LaTeX-Anweisung \Macro{declare@file@substitution} verwendet. Das
+\LaTeX{}-Team bittet darum, eine derartige Dateiersetzung nur vorzunehmen,
+wenn es keine andere Möglichkeit gibt, zu dem gewünschten Ergebnis zu
+gelangen, beispielsweise wenn eine solche Ersetzung zum Erhalt der
+Kompatibilität unabdingbar ist und dabei die \PName{Ersatzdatei} die gleiche
+Funktionalität bereitstellt.
\begin{Example}
- Sie wollen, dass anstelle der Datei \File{\Macro{jobname}.aux}, die Datei
- \File{\Macro{jobname}.xua} geladen wird. Dazu verwenden Sie:
+ Sie wollen, dass anstelle der Datei \File{\Macro{jobname}.lot}, die Datei
+ \File{\Macro{jobname}.tol} geladen wird. Dazu verwenden Sie:
\begin{lstcode}
- \ReplaceInput{\jobname.aux}{\jobname.xua}
+ \ReplaceInput{\jobname.lot}{\jobname.tol}
\end{lstcode}
- Wenn Sie nun zusätzlich \File{\Macro{jobname}.xua} auch noch durch
- \File{\Macro{jobname}.uxa} ersetzen:
+ Wenn Sie nun zusätzlich \File{\Macro{jobname}.tol} auch noch durch
+ \File{\Macro{jobname}.tlo} ersetzen:
\begin{lstcode}
- \ReplaceInput{\jobname.xua}{\jobname.uxa}
+ \ReplaceInput{\jobname.tol}{\jobname.tlo}
\end{lstcode}
- dann wird \File{\Macro{jobname}.aux} am Ende durch
- \File{\Macro{jobname}.uxa} ersetzt. Es wird also die komplette
+ dann wird \File{\Macro{jobname}.lot} am Ende durch
+ \File{\Macro{jobname}.tlo} ersetzt. Es wird also die komplette
Ersetzungskette abgearbeitet.
Einer Ersetzung im Kreis:
\begin{lstcode}
- \ReplaceInput{\jobname.aux}{\jobname.xua}
- \ReplaceInput{\jobname.xua}{\jobname.aux}
+ \ReplaceInput{\jobname.lot}{\jobname.tol}
+ \ReplaceInput{\jobname.tol}{\jobname.lot}
\end{lstcode}
- würde jedoch zu einem \emph{stack size error} führen. Es ist also nicht
- möglich, eine einmal ersetzte Datei wieder durch ihren Ursprung zu ersetzen.
+ würde jedoch zu einem Fehler führen. Es ist also nicht möglich, eine einmal
+ ersetzte Datei wieder durch ihren Ursprung zu ersetzen.
\end{Example}
Theoretisch wäre es auch möglich, auf diesem Wege ein Paket durch ein anderes
-oder eine Klasse durch eine andere zu ersetzen. Dabei würde \LaTeX{} aber
-erkennen, dass die angeforderten Dateinamen nicht zum Namen des Pakets oder
-der Klasse passen. Eine Lösung dieses Problems finden Sie nachfolgend.
-%
+oder eine Klasse durch eine andere zu ersetzen. Es wird jedoch empfohlen, für
+das Ersetzen eines Pakets oder einer Klasse die nachfolgenden Anweisungen zu
+verwenden. Bei älteren \LaTeX-Versionen ist dies sogar zwingend.%
\EndIndexGroup
@@ -488,101 +544,40 @@ der Klasse passen. Eine Lösung dieses Problems finden Sie nachfolgend.
\end{Declaration}
Eine\ChangedAt{v2.96}{\Package{scrlfile}}\textnote{Achtung!} Klasse oder ein
Paket sollte niemals mit Hilfe der oben erklärten Anweisung
-\DescRef{\LabelBase.cmd.ReplaceInput} ersetzt werden. In diesem Fall würde
-\LaTeX{} eine Warnung über nicht übereinstimmende Klassen- oder Paketnamen
-melden. Auch echte Fehler sind möglich, wenn eine Klasse oder ein Paket unter
-einem falschen Dateinamen geladen wird.
-\begin{Example}
- Sie ersetzen das Paket \Package{scrpage2} durch dessen offiziellen
- Nachfolger \Package{scrlayer-scrpage}, indem Sie
-\begin{lstcode}[escapechar=\$]
- \ReplaceInput{scrpage2.sty}{scrlayer-scrpage.sty}$\textnote{Nicht nachmachen!}$
-\end{lstcode}
- verwenden. Dies wird beim Laden von \Package{scrpage2} zu der Warnung
-\begin{lstcode}
- LaTeX warning: You have requested `scrpage2',
- but the package provides
- `scrlayer-scrpage'.
-\end{lstcode}
- führen. Für den Anwender wäre diese Warnung mehr als verwirrend, hat er doch
- gar nicht \Package{scrlayer-scrpage}, sondern tatsächlich \Package{scrpage2}
- angefordert, das jedoch durch \Package{scrlayer-scrpage} ersetzt wurde.
-\end{Example}
-Eine Lösung dieser Probleme besteht nun darin, statt
-\DescRef{\LabelBase.cmd.ReplaceInput} eine der Anweisungen
-\Macro{ReplaceClass} oder \Macro{ReplacePackage} zu verwenden. Es ist zu
-beachten, dass wie bei \Macro{documentclass} und \Macro{usepackage} der Name
-der Klasse oder des Pakets und nicht deren kompletter Dateiname anzugeben ist.
-
-Die Ersetzung funktioniert für Klassen, die mit
-\Macro{documentclass}, \Macro{LoadClassWithOptions} oder \Macro{LoadClass}
-geladen werden. Für Pakete funktioniert die Ersetzung beim Laden mit
-\Macro{usepackage}, \Macro{RequirePackageWithOptions} und
-\Macro{RequirePackage}.
+\DescRef{\LabelBase.cmd.ReplaceInput} ersetzt werden. Stattdessen sollte für
+Paketersetzungen \Macro{ReplacePackage} und für Klassenersetzungen
+\Macro{ReplaceClass} verwendet werden. Es ist zu beachten, dass wie bei
+\Macro{documentclass} und \Macro{usepackage} der Name der Klasse oder des
+Pakets und nicht deren kompletter Dateiname anzugeben ist.
+
+Die Ersetzung funktioniert für Klassen, die mit \Macro{documentclass},
+\Macro{LoadClassWithOptions} oder \Macro{LoadClass} geladen werden. Für Pakete
+funktioniert die Ersetzung beim Laden mit \Macro{usepackage},
+\Macro{RequirePackageWithOptions} und \Macro{RequirePackage}.
Es\textnote{Achtung!} ist zu beachten, dass die \PName{Ersatzklasse} oder das
\PName{Ersatzpaket} mit denselben Optionen geladen wird, mit denen die
ursprünglich geforderte Klasse oder das ursprünglich geforderte Paket geladen
würden. Wird ein Paket oder eine Klasse durch ein Paket oder eine Klasse
ersetzt, die eine geforderte Option nicht unterstützt, würde das zu den
-üblichen Warnungen und Fehlern führen. Es ist jedoch möglich, solche in der
-\PName{Ersatzklasse} oder dem \PName{Ersatzpaket} fehlenden Optionen per
-\DescRef{\LabelBase.cmd.BeforeClass} oder
-\DescRef{\LabelBase.cmd.BeforePackage} neu zu definieren.
-
-\begin{Example}
- Angenommen, das Paket \Package{oldfoo} soll beim Laden durch das
- Paket \Package{newfoo} ersetzt werden. Dies wird mit
-\begin{lstcode}
- \ReplacePackage{oldfoo}{newfoo}
-\end{lstcode}
- erreicht. Das alte Paket hat eine Option \Option{oldopt}, die das neue Paket
- jedoch nicht hat. Mit
-\begin{lstcode}
- \BeforePackage{newfoo}{%
- \DeclareOption{oldopt}{%
- \PackageInfo{newfoo}%
- {option `oldopt' not supported}}}%
-\end{lstcode}
- wird diese Option nun für das Paket \Package{newfoo} nachdefiniert. Dadurch
- wird vermieden, dass beim Laden des Pakets \Package{oldfoo} ein Fehler über
- die im Paket \Package{newfoo} nicht unterstützte Option gemeldet wird.
-
- Existiert hingegen eine Option \Option{newopt}, die anstelle der Option
- \Option{oldopt} verwendet werden soll, so kann dies ebenfalls erreicht
- werden:
-\begin{lstcode}
- \BeforePackage{newfoo}{%
- \DeclareOption{oldopt}{\ExecuteOptions{newopt}}}%
-\end{lstcode}
- Es ist sogar möglich, festzulegen, dass beim Laden des neuen Pakets
- andere Voreinstellung gelten sollen:
-\begin{lstcode}
- \BeforePackage{newfoo}{%
- \DeclareOption{oldopt}{\ExecuteOptions{newopt}}%
- \PassOptionsToPackage{newdefoptA,newdefoptB}%
- {newfoo}%
- }
-\end{lstcode}
- oder auch direkt:
-\begin{lstcode}
- \BeforePackage{newfoo}{%
- \DeclareOption{oldopt}{\ExecuteOptions{newopt}}%
- }%
- \PassOptionsToPackage{newdefoptA,newdefoptB}%
- {newfoo}%
-\end{lstcode}
- \iffalse% Umbruchkorrektur
- Man beachte, dass im letzten Beispiel der Aufruf von
- \Macro{PassOptionsToPackage} nicht innerhalb, sondern nach
- \Macro{BeforePackage} erfolgt.%
- \fi%
-\end{Example}
+üblichen Warnungen und Fehlern führen.
Damit Klassen mit \Macro{ReplaceClass} ersetzt werden können, ist es natürlich
erforderlich \Package{scrlfile} vor der Klasse zu laden. Dazu ist
\Macro{RequirePackage}\IndexCmd{RequirePackage} anstelle von
-\DescRef{maincls.cmd.usepackage} zu verwenden (siehe \cite{latex:clsguide}).%
+\DescRef{maincls.cmd.usepackage} zu verwenden (siehe \cite{latex:clsguide}).
+
+Bei\ChangedAt{v3.32}{\Package{scrlfile}} Verwendung eines \LaTeX-Version bis
+2020-04-01 muss dass Paket \Package{scrlfile-patcholdlatex} die internen
+Anweisung \Macro{@onefilewithoptions} und \Macro{@loadwithoptions}
+umdefinieren. Bei Verwendung von \LaTeX{} ab Version 2020-10-01 wird hingegen
+von \Package{scrlfile-hook} die interne \LaTeX-Anweisung
+\Macro{declare@file@substitution} verwendet. Das \LaTeX{}-Team bittet darum,
+eine derartige Ersetzung nur vorzunehmen, wenn es keine andere Möglichkeit
+gibt, zu dem gewünschten Ergebnis zu gelangen, beispielsweise wenn eine solche
+Ersetzung zum Erhalt der Kompatibilität unabdingbar ist und dabei die
+\PName{Ersatzpaket} beziehungsweise \PName{Ersatzklasse} die gleiche
+Funktionalität bereitstellt.%
\EndIndexGroup
diff --git a/macros/latex/contrib/koma-script/source/Makefile b/macros/latex/contrib/koma-script/source/Makefile
index d3951af116..cd385982da 100644
--- a/macros/latex/contrib/koma-script/source/Makefile
+++ b/macros/latex/contrib/koma-script/source/Makefile
@@ -97,6 +97,9 @@ CLS_MAIN = scrbook.cls \
scrsize11pt.clo \
scrsize12pt.clo \
scrlfile.sty \
+ scrlfile-hook.sty \
+ scrlfile-patcholdlatex.sty \
+ scrlogo.sty \
scrwfile.sty \
scrbase.sty \
scrkbase.sty \
@@ -163,6 +166,8 @@ CLS_MAIN_DTX = scrkernel-basics.dtx \
scrkernel-variables.dtx \
scrkernel-version.dtx \
scrlfile.dtx \
+ scrlfile-hook.dtx \
+ scrlfile-patcholdlatex.dtx \
scrwfile.dtx \
scraddr.dtx \
scrtime.dtx \
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-basics.dtx b/macros/latex/contrib/koma-script/source/scrkernel-basics.dtx
index e46fa55950..6a65c8fc81 100644
--- a/macros/latex/contrib/koma-script/source/scrkernel-basics.dtx
+++ b/macros/latex/contrib/koma-script/source/scrkernel-basics.dtx
@@ -1,4 +1,3 @@
-% \CheckSum{4366}
% \iffalse meta-comment
% ======================================================================
% scrkernel-basics.dtx
@@ -36,26 +35,8 @@
%
% 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-basics.dtx 3465 2020-03-07 10:23:56Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 3527 2020-09-11 09:44:32Z kohm $
%<prepare>%%% (run: prepare)
%<option>%%% (run: option)
%<body>%%% (run: body)
@@ -65,7 +46,7 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\def\filedate{#2/#3/#4}}
- \filedate$Date: 2020-03-07 11:23:56 +0100 (Sat, 07 Mar 2020) $
+ \filedate$Date: 2020-09-11 11:44:32 +0200 (Fri, 11 Sep 2020) $
\def\filerevision$#1: #2 ${\def\filerevision{r#2}}
\filerevision$Revision: 1638 $
\xdef\fileinfo{\filedate\space\filerevision\space}
@@ -103,7 +84,6 @@
\from{scrkernel-basics.dtx}{package,prepare,base}%
\from{scrkernel-basics.dtx}{package,option,base}%
\from{scrkernel-language.dtx}{package,option,base}%
- \from{scrlfile.dtx}{load}%
\from{scrkernel-basics.dtx}{package,body,base}%
\from{scrkernel-language.dtx}{package,body,base}%
\from{scrlogo.dtx}{logo}%
@@ -135,9 +115,10 @@
%
% \selectlanguage{ngerman}
%
-% \changes{v1.0}{2002/07/06}{Beginn der ersten Version}%^^A
+% \changes{v1.0}{2002/07/06}{Beginn der ersten Version}
% \changes{v3.12}{203/03/05}{Verwendung von \cs{@tempa}, \cs{@tempb},
% \cs{@tempc} eliminiert}
+% \changes{v3.32}{2020/09/11}{\textsf{scrlfile} wird nicht mehr geladen}
%
% \section{Grundlegenden \KOMAScript-Erweiterungen}
%
@@ -216,6 +197,17 @@
%<koma>\RequirePackage{scrbase}[\KOMAScriptVersion]
% \end{macrocode}
%
+% \subsection{Laden von \textsf{scrlfile}}
+%
+% \textsf{scrlfile} wird benötigt, um auf das Laden anderer Pakete reagieren
+% zu können. Dazu gehört beispielsweise \textsf{polyglossia} wegen dessen
+% unzureichender Behandlung unterschiedlicher Sprachvarianten. Welche Version
+% davon geladen wird, ist allerdings ziemlich egal.
+%
+% \begin{macrocode}
+%<base>\RequirePackage{scrlfile}
+% \end{macrocode}
+%
% \subsection{Laden von \textsf{keyval}}
%
% Hier wird nicht nur das Paket geladen, was ruckzuck mit:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-compatibility.dtx b/macros/latex/contrib/koma-script/source/scrkernel-compatibility.dtx
index 8fbc541891..2a3e3c981b 100644
--- a/macros/latex/contrib/koma-script/source/scrkernel-compatibility.dtx
+++ b/macros/latex/contrib/koma-script/source/scrkernel-compatibility.dtx
@@ -1,4 +1,4 @@
-% \CheckSum{224}
+% \CheckSum{225}
% \iffalse meta-comment
% ======================================================================
% scrkernel-compatibility.dtx
@@ -55,7 +55,7 @@
% Right brace \} Tilde \~}
%
% \iffalse
-%%% From File: $Id: scrkernel-compatibility.dtx 3492 2020-06-02 09:02:18Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 3515 2020-08-06 16:16:31Z kohm $
%<identify>%%% (run: identify)
%<init>%%% (run: init)
%<option>%%% (run: option)
@@ -65,7 +65,7 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\def\filedate{#2/#3/#4}}
- \filedate$Date: 2020-06-02 11:02:18 +0200 (Tue, 02 Jun 2020) $
+ \filedate$Date: 2020-08-06 18:16:31 +0200 (Thu, 06 Aug 2020) $
\def\filerevision$#1: #2 ${\def\filerevision{r#2}}
\filerevision$Revision: 1638 $
\edef\reserved@a{%
@@ -432,6 +432,8 @@
% \changes{v3.30}{2020/02/24}{Neues Macro}
% \begin{macro}{\scr@v@3.31}
% \changes{v3.31}{2020/04/26}{Neues Macro}
+% \begin{macro}{\scr@v@3.32}
+% \changes{v3.32}{2020/08/06}{Neues Macro}
% \begin{macro}{\scr@v@last}
% \changes{v2.9u}{2005/03/05}{Neues Macro}%^^A
% Nun die unterschiedlichen möglichen Werte (|\scr@v@last| ist jeweils die
@@ -512,6 +514,7 @@
\@namedef{scr@v@3.29}{17}
\@namedef{scr@v@3.30}{17}
\@namedef{scr@v@3.31}{18}
+\@namedef{scr@v@3.32}{18}
\@namedef{scr@v@last}{18}
% \end{macrocode}
% \end{macro}
@@ -576,6 +579,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx b/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx
index 4ff6748a69..e7fdedb011 100644
--- a/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx
+++ b/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx
@@ -54,7 +54,7 @@
% Right brace \} Tilde \~}
%
% \iffalse
-%%% From File: $Id: scrkernel-miscellaneous.dtx 3487 2020-04-27 07:19:23Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 3514 2020-08-06 16:14:53Z kohm $
%<init>%%% (run: init)
%<option>%%% (run: option)
%<execoption>%%% (run: execoption)
@@ -64,9 +64,9 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2020-04-27 09:19:23 +0200 (Mon, 27 Apr 2020) $
+ \filedate$Date: 2020-08-06 18:14:53 +0200 (Thu, 06 Aug 2020) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
- \filerevision$Revision: 3487 $
+ \filerevision$Revision: 3514 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrkernel-miscellaneous.dtx}%
@@ -719,9 +719,10 @@
% 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
+% \changes{v3.32}{2020/08/06}{\cs{KOMAClassName} fixed}
% \begin{macrocode}
\providecommand*{\ifthispageodd}{%
-%<class> \ClassWarning{\KOMAClasSName}{%
+%<class> \ClassWarning{\KOMAClassName}{%
%<extend> \PackageWarning{scrextend}{%
Usage of deprecated command
`\string\ifthispageodd'.\MessageBreak
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-sections.dtx b/macros/latex/contrib/koma-script/source/scrkernel-sections.dtx
index 339196dfe2..d6ea3faa9b 100644
--- a/macros/latex/contrib/koma-script/source/scrkernel-sections.dtx
+++ b/macros/latex/contrib/koma-script/source/scrkernel-sections.dtx
@@ -54,7 +54,7 @@
% Right brace \} Tilde \~}
%
% \iffalse
-%%% From File: $Id: scrkernel-sections.dtx 3507 2020-06-11 14:57:03Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 3543 2020-09-14 16:21:00Z kohm $
% The runs of run-time file generation:
%<preidentify>%%% (run: preidentify)
% - everything that is needed before selfidentification of resulting files
@@ -77,9 +77,9 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2020-06-11 16:57:03 +0200 (Thu, 11 Jun 2020) $
+ \filedate$Date: 2020-09-14 18:21:00 +0200 (Mon, 14 Sep 2020) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
- \filerevision$Revision: 3507 $
+ \filerevision$Revision: 3543 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrkernel-sections.dtx}%
@@ -4218,11 +4218,13 @@
%
%
% \begin{macro}{\hy@insteadofrefstepcounter}
-% \changes{v3.18}{2015/05/22}{neu (intern und \textsf{hyperref})}%^^A
+% \changes{v3.18}{2015/05/22}{neu (intern und \textsf{hyperref})}
% \begin{macro}{\scr@chapter@before@hyperref@patch}
-% \changes{v3.27}{2019/07/24}{neu (intern für \textsf{scrhack})}%^^A
+% \changes{v3.27}{2019/07/24}{neu (intern für \textsf{scrhack})}
% \begin{macro}{\scr@chapter@after@hyperref@patch}
-% \changes{v3.27}{2019/07/24}{neu (intern für \textsf{scrhack})}%^^A
+% \changes{v3.27}{2019/07/24}{neu (intern für \textsf{scrhack})}
+% \changes{v3.32}{2020/09/11}{\cs{AfterPackage!} durch
+% \cs{AfterAtEndOfPackage} ersetzt}
% Normalerweise führt \textsf{hyperref} via \cs{refstepcounter}
% Initialisierungen für ein nachfolgendes \cs{addcontentsline} durch. Wenn
% allerdings eine nicht nummerierte Überschrift ins Inhaltsverzeichnis
@@ -4257,7 +4259,7 @@
}%
\fi
}
-\AfterPackage!{hyperref}{\scr@chapter@after@hyperref@patch}
+\AfterAtEndOfPackage{hyperref}{\scr@chapter@after@hyperref@patch}
% \end{macrocode}
% \end{macro}%^^A \scr@after@hyperref@patch
% \end{macro}%^^A \scr@before@hyperref@patch
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-version.dtx b/macros/latex/contrib/koma-script/source/scrkernel-version.dtx
index 5e85b34b82..8b1383e76c 100644
--- a/macros/latex/contrib/koma-script/source/scrkernel-version.dtx
+++ b/macros/latex/contrib/koma-script/source/scrkernel-version.dtx
@@ -55,7 +55,7 @@
% Right brace \} Tilde \~}
%
% \iffalse
-%%% From File: $Id: scrkernel-version.dtx 3510 2020-07-22 13:29:13Z kohm $
+%%% From File: $Id: scrkernel-version.dtx 3545 2020-09-21 07:45:07Z kohm $
% \fi
%
% \iffalse
@@ -123,7 +123,7 @@
\fi
%</ignorethis>
\fi
- \@CheckKOMAScriptVersion{2020/07/22 v3.31 KOMA-Script}%
+ \@CheckKOMAScriptVersion{2020/09/21 v3.32 KOMA-Script}%
\endgroup
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/koma-script/source/scrlayer-notecolumn.dtx b/macros/latex/contrib/koma-script/source/scrlayer-notecolumn.dtx
index f97ad15f50..d0c33a8c92 100644
--- a/macros/latex/contrib/koma-script/source/scrlayer-notecolumn.dtx
+++ b/macros/latex/contrib/koma-script/source/scrlayer-notecolumn.dtx
@@ -1,8 +1,7 @@
-% \CheckSum{1863}
% \iffalse^^A meta-comment
% ======================================================================
% scrlayer-notecolumn.dtx
-% Copyright (c) Markus Kohm, 2013-2019
+% Copyright (c) Markus Kohm, 2013-2020
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
@@ -20,7 +19,7 @@
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrlayer-notecolumn.dtx
-% Copyright (c) Markus Kohm, 2013-2019
+% Copyright (c) Markus Kohm, 2013-2020
%
% Diese Datei ist Teil der LaTeX2e KOMA-Script-Sammlung.
%
@@ -38,26 +37,8 @@
%
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
% ======================================================================
-% \fi^^A meta-comment
-%
-% \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^^A meta-comment
-%%% From File: $Id: scrlayer-notecolumn.dtx 3426 2019-12-02 09:15:20Z kohm $
+%%% From File: $Id: scrlayer-notecolumn.dtx 3533 2020-09-11 13:32:10Z kohm $
%<identify>%%% (run: identify)
%<init>%%% (run: init)
%<options>%%% (run: options)
@@ -67,9 +48,9 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2019-12-02 10:15:20 +0100 (Mon, 02 Dec 2019) $
+ \filedate$Date: 2020-09-11 15:32:10 +0200 (Fri, 11 Sep 2020) $
\def\filerevision$#1: #2 ${\gdef\filerevision{v0.3.#2}}
- \filerevision$Revision: 3426 $
+ \filerevision$Revision: 3533 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrlayer-notecolumn.dtx}%
@@ -204,6 +185,7 @@
% \selectlanguage{english}
%
% \changes{v0.0}{2013/04/26}{start of interface}
+% \changes{v0.3.3532}{2020/09/11}{do not use deprecated interface commands}
%
% \StopEventually{}
%
@@ -285,8 +267,7 @@
% column needs.
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\DeclareNoteColumn{%
- \newcommand*{\DeclareNoteColumn}[2][]{%
+\newcommand*{\DeclareNoteColumn}[2][]{%
% \end{macrocode}
% First of all we need a box register. The contents of the note column will be
% build inside of this register. Since \eTeX{} registers shouldn't be a
@@ -294,131 +275,91 @@
% registers. Note, that the registers will stay allocated, if the interface
% will be removed! Nevertheless, the name will be destroyed!
% \begin{macrocode}
- \@ifundefined{slnc@#2@box}{%
- \expandafter\newsavebox\csname slnc@#2@box\endcsname
- \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
- \expandafter\let\csname slnc@#2@box\endcsname\relax
- }%
- }{}%
+ \@ifundefined{slnc@#2@box}{%
+ \expandafter\newsavebox\csname slnc@#2@box\endcsname
+ }{}%
% \end{macrocode}
% There's also a kind of item stack of unprocessed notes for each note column.
% \begin{macrocode}
- \@ifundefined{slnc@#2@unprocessed}{%
- \@namedef{slnc@#2@unprocessed}{}%
- \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
- \expandafter\let\csname slnc@#2@unprocessed\endcsname\relax
- }%
- }{}%
+ \@ifundefined{slnc@#2@unprocessed}{%
+ \@namedef{slnc@#2@unprocessed}{}%
+ }{}%
% \end{macrocode}
% Next we need a horizontal positions and a width for the note column. Neither
% the horizontal position nor the width are stretchable or shrinkable. The
% position should be variable depending on the page. So it's better to use a
% macro instead of a length. The width isn't more variable than, e.g., the
% text width. So we can use a macro too. Both will be initialised to the
-% normal marginal note column.
-% \begin{macrocode}
- \@ifundefined{slnc@#2@pos}{%
- \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
- \expandafter\let\csname slnc@#2@pos\endcsname\relax
- }%
- }{}%
- \@ifundefined{slnc@#2@width}{%
- \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
- \expandafter\let\csname slnc@#2@width\endcsname\relax
- }%
- }{}%
-% \end{macrocode}
+% normal marginal note column later.
% \changes{3.27}{2019/02/14}{initialization of one colour stack per note
% column}%^^A
% For colour support we also need one colour stack per note column. A colour
% stack is a feature only available for pdf\TeX{} and lua\TeX{}.
% \begin{macrocode}
- \@ifundefined{slnc@#2@colorstack}{%
- \scr@ifundefinedorrelax{pdfcolorstackinit}{%
- \scr@ifundefinedorrelax{pdffeedback}{}{%
- \expandafter\chardef\csname slnc@#2@colorstack\endcsname=
- \pdffeedback colorstackinit direct {\slnc@initial@black}%
- \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
- \expandafter\let\csname slnc@#2@colorstack\endcsname\relax
- }%
- }%
- }{%
+ \@ifundefined{slnc@#2@colorstack}{%
+ \scr@ifundefinedorrelax{pdfcolorstackinit}{%
+ \scr@ifundefinedorrelax{pdffeedback}{}{%
\expandafter\chardef\csname slnc@#2@colorstack\endcsname=
- \pdfcolorstackinit direct {\slnc@initial@black}%
- \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
- \expandafter\let\csname slnc@#2@colorstack\endcsname\relax
- }%
+ \pdffeedback colorstackinit direct {\slnc@initial@black}%
}%
- }{}%
+ }{%
+ \expandafter\chardef\csname slnc@#2@colorstack\endcsname=
+ \pdfcolorstackinit direct {\slnc@initial@black}%
+ }%
+ }{}%
% \end{macrocode}
% If there isn't a font element for the (new) note column, we define a new one
% and add it to the auto-remove code:
% \begin{macrocode}
- \@ifundefined{scr@fnt@notecolumn.#2}{%
- \@ifundefined{@notecolumn.#2font}{%
- \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
- \expandafter\let\csname @notecolumn.#2font\endcsname\relax
- }%
- }{%
- \PackageInfo{scrlayer-notecolumn}{using already defined
- macro\MessageBreak
- `\expandafter\string\csname @notecolumn.#2font\endcsname' for font
- element\MessageBreak
- `notecolumn.#2'%
- }%
- }%
- \newkomafont{notecolumn.#2}{}%
- \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
- \expandafter\let\csname scr@fnt@notecolumn.#2\endcsname\relax
- }%
- }{%
- \PackageInfo{scrlayer-notecolumn}{using already defined font
+ \@ifundefined{scr@fnt@notecolumn.#2}{%
+ \@ifundefined{@notecolumn.#2font}{}{%
+ \PackageInfo{scrlayer-notecolumn}{using already defined
+ macro\MessageBreak
+ `\expandafter\string\csname @notecolumn.#2font\endcsname' for font
element\MessageBreak
`notecolumn.#2'%
}%
}%
+ \newkomafont{notecolumn.#2}{}%
+ }{%
+ \PackageInfo{scrlayer-notecolumn}{using already defined font
+ element\MessageBreak
+ `notecolumn.#2'%
+ }%
+ }%
% \end{macrocode}
% After the initialisation we process the options, that may change the initial
% values.
% \begin{macrocode}
- \newcommand*{\slnc@name}{}%
- \edef\slnc@name{#2}%
- \FamilyExecuteOptions[.definenotecolumn]{KOMAarg}{marginpar,#1}%
- \let\slnc@name\relax
+ \newcommand*{\slnc@name}{}%
+ \edef\slnc@name{#2}%
+ \FamilyExecuteOptions[.definenotecolumn]{KOMAarg}{marginpar,#1}%
+ \let\slnc@name\relax
% \end{macrocode}
% The values are set up, so they may be used to declare a layer.
% \begin{macrocode}
- \DeclareLayer[%
- foreground,%
- align=tl,%
- voffset=1in+\topmargin+\headheight+\headsep,%
- height=\dimexpr\textheight+\topskip\relax,%
- hoffset=\csname slnc@#2@pos\endcsname,%
- width=\csname slnc@#2@width\endcsname,%
- contents=\slnc@processnotes{#2}%
- ]{notecolumn.#2}
+ \DeclareLayer[%
+ foreground,%
+ align=tl,%
+ voffset=1in+\topmargin+\headheight+\headsep,%
+ height=\dimexpr\textheight+\topskip\relax,%
+ hoffset=\csname slnc@#2@pos\endcsname,%
+ width=\csname slnc@#2@width\endcsname,%
+ contents=\slnc@processnotes{#2}%
+ ]{notecolumn.#2}
% \end{macrocode}
% We need to add the layer to every page style. The easiest way to do this is
% to add it to the pseudo layer page style \Pagestyle{@everystyle@}.
% \changes{v0.1.1681}{2014/02/05}{add the layer only once}
% \begin{macrocode}
- \IfLayerAtPageStyle{@everystyle@}{notecolumn.#2}{}{%
- \AddLayersToPageStyle{@everystyle@}{notecolumn.#2}%
-% \end{macrocode}
-% On auto-removing the interface, the layer should be removed from
-% \Pagestyle{@everystyle@} and should be destroyed.
-% \begin{macrocode}
- }%
- \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
- \RemoveLayersFromPageStyle{@everystyle@}{notecolumn.#2}%
- \DestroyLayer{notecolumn.#2}%
- }%
+ \IfLayerAtPageStyle{@everystyle@}{notecolumn.#2}{}{%
+ \AddLayersToPageStyle{@everystyle@}{notecolumn.#2}%
+ }%
% \end{macrocode}
% Last but not least, we add the new note column to the note column procession
% list.
% \begin{macrocode}
- \@cons\slnc@processnotecolumns{{#2}}%
- }%
+ \@cons\slnc@processnotecolumns{{#2}}%
}
% \end{macrocode}
% \begin{macro}{\slnc@initial@black}
@@ -429,26 +370,22 @@
% \cs{current@color} of the used colour package. Using \cs{default@color} would
% be even better, but this is not available until \cs{begin\{document\}}.
% \begin{macrocode}
-\scrlayerAddToInterface\slnc@initial@black{%
- \newcommand*{\slnc@initial@black}{0 g 0 G}%
- \AfterPackage*{color}{%
- \let\slnc@initial@black\current@color
- \AtBeginDocument{\let\slnc@initial@black\default@color}%
- }%
- \AfterPackage*{xcolor}{%
- \let\slnc@initial@black\current@color
- \AtBeginDocument{\let\slnc@initial@black\default@color}%
- }%
-}
+\newcommand*{\slnc@initial@black}{0 g 0 G}%
+\AfterPackage*{color}{%
+ \let\slnc@initial@black\current@color
+ \AtBeginDocument{\let\slnc@initial@black\default@color}%
+}%
+\AfterPackage*{xcolor}{%
+ \let\slnc@initial@black\current@color
+ \AtBeginDocument{\let\slnc@initial@black\default@color}%
+}%
% \end{macrocode}
% \end{macro}%^^A \slnc@initial@black
% \begin{macro}{\slnc@processnotecolumns}
% This is a list of all declared note columns in \LaTeX{} syntax (using
% \Macro{@cons} and \Macro{@elt} etc.).
% \begin{macrocode}
-\scrlayerAddToInterface\slnc@processnotecolumns{%
- \newcommand*{\slnc@processnotecolumns}{}%
-}
+\newcommand*{\slnc@processnotecolumns}{}%
% \end{macrocode}
% \end{macro}%^^A \slnc@processnotecolumns
% \begin{macrocode}
@@ -466,18 +403,16 @@
% extended by the note column layers. So we warn, if another page style has
% been selected.
% \begin{macrocode}
-\scrlayerAddToInterface\slnc@testforpagestylewarning{%
- \newcommand*{\slnc@testforpagestylewarning}{%
- \IfLayerPageStyleExists{\currentpagestyle}{}{%
- \PackageWarning{scrlayer-notecolumn}{%
- output of note columns delayed,\MessageBreak
- because with `\currentpagestyle'\MessageBreak
- a page style has been selected, that\MessageBreak
- isn't a layer page style,%
- }%
+\newcommand*{\slnc@testforpagestylewarning}{%
+ \IfLayerPageStyleExists{\currentpagestyle}{}{%
+ \PackageWarning{scrlayer-notecolumn}{%
+ output of note columns delayed,\MessageBreak
+ because with `\currentpagestyle'\MessageBreak
+ a page style has been selected, that\MessageBreak
+ isn't a layer page style,%
}%
}%
-}
+}%
\AfterSelectAnyPageStyle{\slnc@testforpagestylewarning}
% \end{macrocode}
% \end{macro}%^^A \slnc@testforpagestylewarning
@@ -495,79 +430,69 @@
\@namedef{slnc@\slnc@name @pos}{\dimexpr #1\relax}%
\FamilyKeyStateProcessed
}
-\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@position}
-\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@position@default}
\DefineFamilyKey[.definenotecolumn]{KOMAarg}{width}{%
\@namedef{slnc@\slnc@name @width}{\dimexpr #1\relax}%
\FamilyKeyStateProcessed
}
-\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@width}
-\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@width@default}
\DefineFamilyKey[.definenotecolumn]{KOMAarg}{font}{%
\setkomafont{notecolumn.\slnc@name}{#1}%
\FamilyKeyStateProcessed
}
-\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@font}
-\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@font@default}
\DefineFamilyKey[.definenotecolumn]{KOMAarg}{marginpar}[\relax]{%
\FamilyKeyStateProcessed
\scrlayer@testunexpectedarg{marginpar}{#1}%
\edef\reserved@a{\noexpand\slnc@defpos{\slnc@name}}\reserved@a
\@namedef{slnc@\slnc@name @width}{\marginparwidth}%
}
-\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@marginpar}
-\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@marginpar@default}
% \end{macrocode}
% \begin{macro}{\slnc@defpos}
% Little helper for option \Option{marginpar}. The argument is the expanded
% name of the note column.
% \begin{macrocode}
-\scrlayerAddToInterface\slnc@defpos{%
- \newcommand*\slnc@defpos[1]{%
- \@namedef{slnc@#1@pos}{%
- \ifodd\value{page}
- \if@reversemargin
+\newcommand*\slnc@defpos[1]{%
+ \@namedef{slnc@#1@pos}{%
+ \ifodd\value{page}
+ \if@reversemargin
% \end{macrocode}
% The reverse marginal note column on odd pages is at the left margin.
% \begin{macrocode}
- \dimexpr \oddsidemargin+1in
- -\marginparsep-\csname slnc@#1@width\endcsname\relax
- \else
+ \dimexpr \oddsidemargin+1in
+ -\marginparsep-\csname slnc@#1@width\endcsname\relax
+ \else
% \end{macrocode}
% The normal marginal note column on odd pages is the right margin.
% \begin{macrocode}
- \dimexpr \oddsidemargin+1in
- +\textwidth+\marginparsep\relax
- \fi
- \else
- \if@twoside
- \if@reversemargin
+ \dimexpr \oddsidemargin+1in
+ +\textwidth+\marginparsep\relax
+ \fi
+ \else
+ \if@twoside
+ \if@reversemargin
% \end{macrocode}
% The reverse marginal note column on even pages is the right margin.
% \begin{macrocode}
- \dimexpr \evensidemargin+1in
- +\textwidth+\marginparsep\relax
- \else
+ \dimexpr \evensidemargin+1in
+ +\textwidth+\marginparsep\relax
+ \else
% \end{macrocode}
% The normal marginal note column on even pages is at the left margin.
% \begin{macrocode}
- \dimexpr \evensidemargin+1in
- -\marginparsep-\csname slnc@#1@width\endcsname\relax
- \fi
- \else
+ \dimexpr \evensidemargin+1in
+ -\marginparsep-\csname slnc@#1@width\endcsname\relax
+ \fi
+ \else
% \end{macrocode}
% \begin{macrocode}
% If not in two-side mode, do the same already done for odd pages.
- \if@reversemargin
- \dimexpr \oddsidemargin+1in
- -\marginparsep-\csname slnc@#1@width\endcsname\relax
- \else
- \dimexpr \oddsidemargin+1in
- +\textwidth+\marginparsep\relax
- \fi
+ \if@reversemargin
+ \dimexpr \oddsidemargin+1in
+ -\marginparsep-\csname slnc@#1@width\endcsname\relax
+ \else
+ \dimexpr \oddsidemargin+1in
+ +\textwidth+\marginparsep\relax
\fi
\fi
- }%
+ \fi
}%
}%
% \end{macrocode}
@@ -579,38 +504,34 @@
\edef\reserved@a{\noexpand\slnc@defnormalpos{\slnc@name}}\reserved@a
\@namedef{slnc@\slnc@name @width}{\marginparwidth}%
}
-\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@normalmarginpar}
-\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@normalmarginpar@default}
% \end{macrocode}
% \begin{macro}{\slnc@defnormalpos}
% Little helper for option \Option{normalmarginpar}. The argument is the
% expanded name of the note column.
% \begin{macrocode}
-\scrlayerAddToInterface\slnc@defnormalpos{%
- \newcommand*\slnc@defnormalpos[1]{%
- \@namedef{slnc@#1@pos}{%
- \ifodd\value{page}
+\newcommand*\slnc@defnormalpos[1]{%
+ \@namedef{slnc@#1@pos}{%
+ \ifodd\value{page}
% \end{macrocode}
% The normal marginal note column on odd pages is the right margin.
% \begin{macrocode}
- \dimexpr \oddsidemargin+1in
- +\textwidth+\marginparsep\relax
- \else
- \if@twoside
+ \dimexpr \oddsidemargin+1in
+ +\textwidth+\marginparsep\relax
+ \else
+ \if@twoside
% \end{macrocode}
% The normal marginal note column on even pages is at the left margin.
% \begin{macrocode}
- \dimexpr \evensidemargin+1in
- -\marginparsep-\csname slnc@#1@width\endcsname\relax
- \else
+ \dimexpr \evensidemargin+1in
+ -\marginparsep-\csname slnc@#1@width\endcsname\relax
+ \else
% \end{macrocode}
% \begin{macrocode}
% If not in two-side mode, do the same already done for odd pages.
- \dimexpr \oddsidemargin+1in
- +\textwidth+\marginparsep\relax
- \fi
+ \dimexpr \oddsidemargin+1in
+ +\textwidth+\marginparsep\relax
\fi
- }%
+ \fi
}%
}%
% \end{macrocode}
@@ -622,38 +543,34 @@
\edef\reserved@a{\noexpand\slnc@defreversepos{\slnc@name}}\reserved@a
\@namedef{slnc@\slnc@name @width}{\marginparwidth}%
}
-\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@reversemarginpar}
-\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@reversemarginpar@default}
% \end{macrocode}
% \begin{macro}{\slnc@defreversepos}
% Little helper for option \Option{reversemarginpar}. The argument is the
% expanded name of the note column.
% \begin{macrocode}
-\scrlayerAddToInterface\slnc@defreversepos{%
- \newcommand*\slnc@defreversepos[1]{%
- \@namedef{slnc@#1@pos}{%
- \ifodd\value{page}
+\newcommand*\slnc@defreversepos[1]{%
+ \@namedef{slnc@#1@pos}{%
+ \ifodd\value{page}
% \end{macrocode}
% The reverse marginal note column on odd pages is at the left margin.
% \begin{macrocode}
- \dimexpr \oddsidemargin+1in
- -\marginparsep-\csname slnc@#1@width\endcsname\relax
- \else
- \if@twoside
+ \dimexpr \oddsidemargin+1in
+ -\marginparsep-\csname slnc@#1@width\endcsname\relax
+ \else
+ \if@twoside
% \end{macrocode}
% The reverse marginal note column on even pages is the right margin.
% \begin{macrocode}
- \dimexpr \evensidemargin+1in
- +\textwidth+\marginparsep\relax
- \else
+ \dimexpr \evensidemargin+1in
+ +\textwidth+\marginparsep\relax
+ \else
% \end{macrocode}
% \begin{macrocode}
% If not in two-side mode, do the same already done for odd pages.
- \dimexpr \oddsidemargin+1in
- -\marginparsep-\csname slnc@#1@width\endcsname\relax
- \fi
+ \dimexpr \oddsidemargin+1in
+ -\marginparsep-\csname slnc@#1@width\endcsname\relax
\fi
- }%
+ \fi
}%
}%
% \end{macrocode}
@@ -676,48 +593,42 @@
% (not) been declared already.
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\DeclareNewNoteColumn{%
- \newcommand*{\DeclareNewNoteColumn}[2][]{%
- \scr@ifundefinedorrelax{slnc@#2@box}{}{%
- \PackageError{scrlayer-notecolumn}{note column `#2' already defined}{%
- You may declare only note columns, that haven't been declared
- previously using\MessageBreak
- \string\DeclareNewNoteColumn. See also the alternatives
- \string\RedeclareNoteColumn,\MessageBreak
- \string\ProvideNoteColumn, and \string\DeclareNoteColumn.\MessageBreak
- Nevertheless, if you'll continue, declaration will be done.%
- }%
- }%
- \DeclareNoteColumn[{#1}]{#2}%
- }%
-}
-\scrlayerAddToInterface\ProvideNoteColumn{%
- \newcommand*{\ProvideNoteColumn}[2][]{%
- \scr@ifundefinedorrelax{slnc@#2@box}{}{%
- \PackageInfo{scrlayer-notecolumn}{\string\ProvideNoteColumn{#2}
- ignored,\MessageBreak
- because of already defined\MessageBreak
- not column}%
- }{%
- \DeclareNoteColumn[{#1}]{#2}%
+\newcommand*{\DeclareNewNoteColumn}[2][]{%
+ \scr@ifundefinedorrelax{slnc@#2@box}{}{%
+ \PackageError{scrlayer-notecolumn}{note column `#2' already defined}{%
+ You may declare only note columns, that haven't been declared
+ previously using\MessageBreak
+ \string\DeclareNewNoteColumn. See also the alternatives
+ \string\RedeclareNoteColumn,\MessageBreak
+ \string\ProvideNoteColumn, and \string\DeclareNoteColumn.\MessageBreak
+ Nevertheless, if you'll continue, declaration will be done.%
}%
}%
-}
-\scrlayerAddToInterface\RedeclareNoteColumn{%
- \newcommand*{\RedeclareNoteColumn}[2][]{%
- \scr@ifundefinedorrelax{slnc@#2@box}{%
- \PackageError{scrlayer-notecolumn}{note column `#2' undefined}{%
- You may declare only note columns, that have been declared
- previously using\MessageBreak
- \string\RedeclareNoteColumn. See also the alternatives
- \string\DeclareNewNoteColumn,\MessageBreak
- \string\ProvideNoteColumn, and \string\DeclareNoteColumn.\MessageBreak
- Nevertheless, if you'll continue, declaration will be done.%
- }%
- }{}%
+ \DeclareNoteColumn[{#1}]{#2}%
+}%
+\newcommand*{\ProvideNoteColumn}[2][]{%
+ \scr@ifundefinedorrelax{slnc@#2@box}{}{%
+ \PackageInfo{scrlayer-notecolumn}{\string\ProvideNoteColumn{#2}
+ ignored,\MessageBreak
+ because of already defined\MessageBreak
+ not column}%
+ }{%
\DeclareNoteColumn[{#1}]{#2}%
}%
-}
+}%
+\newcommand*{\RedeclareNoteColumn}[2][]{%
+ \scr@ifundefinedorrelax{slnc@#2@box}{%
+ \PackageError{scrlayer-notecolumn}{note column `#2' undefined}{%
+ You may declare only note columns, that have been declared
+ previously using\MessageBreak
+ \string\RedeclareNoteColumn. See also the alternatives
+ \string\DeclareNewNoteColumn,\MessageBreak
+ \string\ProvideNoteColumn, and \string\DeclareNoteColumn.\MessageBreak
+ Nevertheless, if you'll continue, declaration will be done.%
+ }%
+ }{}%
+ \DeclareNoteColumn[{#1}]{#2}%
+}%
%</body>
% \end{macrocode}
% \end{macro}
@@ -743,28 +654,24 @@
% interface!
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\tf@slnc{%
- \newwrite\tf@slnc
- \AtBeginDocument{%
- \if@filesw
- \immediate\write\@auxout{%
- \noexpand\csname slnc@initwrite\noexpand\endcsname
- }%
- \fi
- }%
- \AtEndDocument{\let\slnc@initwrite\slnc@openwrite}%
-}
-\scrlayerAddToInterface\slnc@initwrite{}%
-\scrlayerAddToInterface\slnc@openwrite{%
- \newcommand*{\slnc@openwrite}{%
- \immediate\closein\slnc@file
+\newwrite\tf@slnc
+\AtBeginDocument{%
+ \if@filesw
+ \immediate\write\@auxout{%
+ \noexpand\csname slnc@initwrite\noexpand\endcsname
+ }%
+ \fi
+}%
+\AtEndDocument{\let\slnc@initwrite\slnc@openwrite}%
+\newcommand*{\slnc@initwrite}{}%
+\newcommand*{\slnc@openwrite}{%
+ \immediate\closein\slnc@file
%<*trace>
- \PackageInfo{scrlayer-notecolumn}{%
- Opening `\jobname.slnc'\MessageBreak
- for writing}%
+ \PackageInfo{scrlayer-notecolumn}{%
+ Opening `\jobname.slnc'\MessageBreak
+ for writing}%
%</trace>
- \immediate\openout\tf@slnc\jobname.slnc
- }%
+ \immediate\openout\tf@slnc\jobname.slnc
}
% \end{macrocode}
% After reading the main \File{aux}-file at |\end{document}|, we again
@@ -847,28 +754,23 @@
% \changes{0.1.2583}{2017/02/08}{new (internal)}%^^A
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\slnc@unexpanded{%
- \let\slnc@unexpanded\detokenize
-}
-\scrlayerAddToInterface\makenote{%
- \newcommand*{\makenote}{%
- \kernel@ifstar{\let\slnc@unexpanded\detokenize\slnc@makenote}%
- {\let\slnc@unexpanded\@firstofone\slnc@makenote}%
- }%
-}
-\scrlayerAddToInterface\slnc@makenote{%
- \newcommand{\slnc@makenote}[2][marginpar]{%
- \@bsphack
- \scr@savepos
- \addtocontents{slnc}{%
- \string\slnc@note{#1}%
- {\noexpand\number\value{slncpage}}%
- {\noexpand\number\scr@lastypos}%
- {\slnc@unexpanded{#2}}%
- }%
- \@esphack
+\newcommand*{\slnc@unexpanded}{}
+\let\slnc@unexpanded\detokenize
+\newcommand*{\makenote}{%
+ \kernel@ifstar{\let\slnc@unexpanded\detokenize\slnc@makenote}%
+ {\let\slnc@unexpanded\@firstofone\slnc@makenote}%
+}%
+\newcommand{\slnc@makenote}[2][marginpar]{%
+ \@bsphack
+ \scr@savepos
+ \addtocontents{slnc}{%
+ \string\slnc@note{#1}%
+ {\noexpand\number\value{slncpage}}%
+ {\noexpand\number\scr@lastypos}%
+ {\slnc@unexpanded{#2}}%
}%
-}
+ \@esphack
+}%
% \end{macrocode}
%^^A \begin{counter}{slncpage}
% This counter should be increased once per page with note column. This may
@@ -898,53 +800,52 @@
% steps:
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\slnc@processnotes{%
- \newcommand*{\slnc@processnotes}[1]{%
+\newcommand*{\slnc@processnotes}[1]{%
% \end{macrocode}
% Read as long notes from the notes file until the number at \#2 of
% \Macro{slnc@note} in the file is greater than \Counter{slncpage}. Put all
% these to the corresponding unprocessed list.
% \begin{macrocode}
- \begingroup
- \slnc@readnotes{\value{slncpage}}%
+ \begingroup
+ \slnc@readnotes{\value{slncpage}}%
% \end{macrocode}
% Process the unprocessed list of the current note column
% \begin{macrocode}
- \expandafter\let\expandafter\reserved@a
- \csname slnc@#1@unprocessed\endcsname
- \expandafter\global
- \expandafter\let\csname slnc@#1@unprocessed\endcsname\@empty
- \def\slnc@notesyncfonttest##1{%
- \ifhmode
- \PackageError{scrlayer-notecolumn}{%
- illegal font setting for `notecolumn.##1'%
- }{%
- Current setting of font for `notecolumn.##1' switches
- from\MessageBreak
- vertical mode to horizontal mode. This is
- illegal!\MessageBreak
- You have to change the font setting to fix
- this.\MessageBreak
- If you'll continue vertical alignment of notes may fail%
- }%
- \par\vskip-\dimexpr \baselineskip+\parskip\relax
- \fi
- }%
- \long\def\slnc@note##1##2##3##4{%
+ \expandafter\let\expandafter\reserved@a
+ \csname slnc@#1@unprocessed\endcsname
+ \expandafter\global
+ \expandafter\let\csname slnc@#1@unprocessed\endcsname\@empty
+ \def\slnc@notesyncfonttest##1{%
+ \ifhmode
+ \PackageError{scrlayer-notecolumn}{%
+ illegal font setting for `notecolumn.##1'%
+ }{%
+ Current setting of font for `notecolumn.##1' switches
+ from\MessageBreak
+ vertical mode to horizontal mode. This is
+ illegal!\MessageBreak
+ You have to change the font setting to fix
+ this.\MessageBreak
+ If you'll continue vertical alignment of notes may fail%
+ }%
+ \par\vskip-\dimexpr \baselineskip+\parskip\relax
+ \fi
+ }%
+ \long\def\slnc@note##1##2##3##4{%
%<trace> \typeout{TRACE (slnc): ##2<=\theslncpage?}%
- \ifnum ##2>\value{slncpage}\relax
+ \ifnum ##2>\value{slncpage}\relax
%<trace> \typeout{TRACE (slnc): no: unprocess note}%
- \expandafter\g@addto@macro\csname slnc@#1@unprocessed\endcsname{%
- \slnc@note{##1}{##2}{##3}{##4}%
- }%
- \else
- \ifnum ##2<\value{slncpage}\relax
- \PackageWarning{scrlayer-notecolumn}{note of type `#1' delayed}%
- \fi
- \boxmaxdepth\maxdepth
- \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
- \expandafter\hsize\csname slnc@#1@width\endcsname
- \normalfont\normalsize
+ \expandafter\g@addto@macro\csname slnc@#1@unprocessed\endcsname{%
+ \slnc@note{##1}{##2}{##3}{##4}%
+ }%
+ \else
+ \ifnum ##2<\value{slncpage}\relax
+ \PackageWarning{scrlayer-notecolumn}{note of type `#1' delayed}%
+ \fi
+ \boxmaxdepth\maxdepth
+ \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
+ \expandafter\hsize\csname slnc@#1@width\endcsname
+ \normalfont\normalsize
% \end{macrocode}
% \changes{v0.2.3085}{2019/02/14}{using colour stack if available}%^^A
% If a color stack is available we switch to it before changing the font. So a
@@ -952,152 +853,151 @@
% the column! But if we don't have a color stack, color switching is not
% permitted!
% \begin{macrocode}
- \slnc@switchcolorstack{#1}%
- {%
- \usekomafont{notecolumn.#1}{%
- \slnc@notesyncfonttest{#1}%
- \expandafter\ifvoid\csname slnc@#1@box\endcsname
- \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
- \kern\dimexpr\topskip-\baselineskip\relax
- }%
- \fi
+ \slnc@switchcolorstack{#1}%
+ {%
+ \usekomafont{notecolumn.#1}{%
+ \slnc@notesyncfonttest{#1}%
+ \expandafter\ifvoid\csname slnc@#1@box\endcsname
+ \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
+ \kern\dimexpr\topskip-\baselineskip\relax
+ }%
+ \fi
% \end{macrocode}
% \changes{v0.1}{2015/10/07}{ready for renaming \cs{pdfpageheight} in
% luaTeX}%^^A
% From lua\TeX~0.80.1 \cs{pdfpageheight} will be renamed into
% \cs{pageheight}. So we have to do an extra test for the new primitive.
% \begin{macrocode}
- \scr@ifundefinedorrelax{pdfpageheight}{%
- \scr@ifundefinedorrelax{pageheight}{%
- \@tempdima=\paperheight
- }{%
- \@tempdima=\pageheight
- }%
+ \scr@ifundefinedorrelax{pdfpageheight}{%
+ \scr@ifundefinedorrelax{pageheight}{%
+ \@tempdima=\paperheight
}{%
- \@tempdima=\pdfpageheight
+ \@tempdima=\pageheight
}%
- \@tempdima=\dimexpr \@tempdima-##3sp
- -1in-\topmargin
- -\headheight-\headsep
- -\baselineskip
- \relax
- \@tempdimb=\dimexpr \expandafter\ht\csname slnc@#1@box\endcsname
- +\expandafter\dp\csname slnc@#1@box\endcsname
- \relax
- \typeout{Soll: \the\@tempdima^^JIst: \space\the\@tempdimb}%
- \ifdim\@tempdima<\@tempdimb
+ }{%
+ \@tempdima=\pdfpageheight
+ }%
+ \@tempdima=\dimexpr \@tempdima-##3sp
+ -1in-\topmargin
+ -\headheight-\headsep
+ -\baselineskip
+ \relax
+ \@tempdimb=\dimexpr \expandafter\ht\csname slnc@#1@box\endcsname
+ +\expandafter\dp\csname slnc@#1@box\endcsname
+ \relax
+ \typeout{Soll: \the\@tempdima^^JIst: \space\the\@tempdimb}%
+ \ifdim\@tempdima<\@tempdimb
%<*trace>
- \PackageInfo{scrlayer-notecolumn}{%
- Note moved down from\MessageBreak
- \the\@tempdima\space to \the\@tempdimb\MessageBreak
- at note box `#1'
- }%
+ \PackageInfo{scrlayer-notecolumn}{%
+ Note moved down from\MessageBreak
+ \the\@tempdima\space to \the\@tempdimb\MessageBreak
+ at note box `#1'
+ }%
%</trace>
- \else
- \ifdim\@tempdima>\@tempdimb
+ \else
+ \ifdim\@tempdima>\@tempdimb
%<*trace>
- \PackageInfo{scrlayer-notecolumn}{%
- Adding vertical white space from\MessageBreak
- \the\@tempdimb\space to \the\@tempdima\MessageBreak
- into note box `#1'
- }%
+ \PackageInfo{scrlayer-notecolumn}{%
+ Adding vertical white space from\MessageBreak
+ \the\@tempdimb\space to \the\@tempdima\MessageBreak
+ into note box `#1'
+ }%
%</trace>
- \expandafter\setbox\csname slnc@#1@box\endcsname
- \vbox {%
- \expandafter\unvbox\csname slnc@#1@box\endcsname
- \kern\dimexpr\@tempdima-\@tempdimb\relax
- }%
- \fi
- \fi
- \expandafter\ifvoid\expandafter\csname slnc@#1@box\endcsname
- \else
- \@tempdima\dimexpr
- \dp\strutbox
- -\dp\csname slnc@#1@box\endcsname
- \relax
- \expandafter\unvbox\csname slnc@#1@box\endcsname
- \ifdim\@tempdima>\z@ \kern\@tempdima\fi
+ \expandafter\setbox\csname slnc@#1@box\endcsname
+ \vbox {%
+ \expandafter\unvbox\csname slnc@#1@box\endcsname
+ \kern\dimexpr\@tempdima-\@tempdimb\relax
+ }%
\fi
+ \fi
+ \expandafter\ifvoid\expandafter\csname slnc@#1@box\endcsname
+ \else
+ \@tempdima\dimexpr
+ \dp\strutbox
+ -\dp\csname slnc@#1@box\endcsname
+ \relax
+ \expandafter\unvbox\csname slnc@#1@box\endcsname
+ \ifdim\@tempdima>\z@ \kern\@tempdima\fi
+ \fi
% \end{macrocode}
% \changes{v0.1.2582}{2017/02/08}{restore several commands}%^^A
% Some commands have to be restored when processing the note.
% \begin{macrocode}
- \slnc@restoreinnote
- \strut\ignorespaces ##4\par
- }%
+ \slnc@restoreinnote
+ \strut\ignorespaces ##4\par
}%
}%
- \fi
- }%
- \def\slnc@sync##1##2##3##4{%
- \ifnum ##2>\value{slncpage}\relax
- \expandafter\g@addto@macro\csname slnc@#1@unprocessed\endcsname{%
- \slnc@sync{##1}{##2}{##3}{}%
- }%
- \else
- \if@filesw
- \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
- \expandafter\unvbox\csname slnc@#1@box\endcsname
- \scr@savepos
- \protected@write\@auxout{}{%
- \string\newlabel{notecolumn.##1.##3.syncnote.label}{%
- {%
- \noexpand\number\scr@lastypos
- }{\thepage}%
- }%
+ }%
+ \fi
+ }%
+ \def\slnc@sync##1##2##3##4{%
+ \ifnum ##2>\value{slncpage}\relax
+ \expandafter\g@addto@macro\csname slnc@#1@unprocessed\endcsname{%
+ \slnc@sync{##1}{##2}{##3}{}%
+ }%
+ \else
+ \if@filesw
+ \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
+ \expandafter\unvbox\csname slnc@#1@box\endcsname
+ \scr@savepos
+ \protected@write\@auxout{}{%
+ \string\newlabel{notecolumn.##1.##3.syncnote.label}{%
+ {%
+ \noexpand\number\scr@lastypos
+ }{\thepage}%
}%
}%
- \fi
+ }%
\fi
- }%
- \reserved@a
- \expandafter\ifvoid\csname slnc@#1@box\endcsname
+ \fi
+ }%
+ \reserved@a
+ \expandafter\ifvoid\csname slnc@#1@box\endcsname
%<*trace>
- \PackageInfo{scrlayer-notecolumn}{Note box `#1' empty}%
+ \PackageInfo{scrlayer-notecolumn}{Note box `#1' empty}%
%</trace>
- \else
- \ifdim \dimexpr \expandafter\ht\csname slnc@#1@box\endcsname
- +\expandafter\dp\csname slnc@#1@box\endcsname
- \relax >\textheight\relax
+ \else
+ \ifdim \dimexpr \expandafter\ht\csname slnc@#1@box\endcsname
+ +\expandafter\dp\csname slnc@#1@box\endcsname
+ \relax >\textheight\relax
%<*trace>
- \PackageInfo{scrlayer-notecolumn}{Split note box `#1'}%
+ \PackageInfo{scrlayer-notecolumn}{Split note box `#1'}%
%</trace>
- \splittopskip\topskip
- \splitmaxdepth\baselineskip
+ \splittopskip\topskip
+ \splitmaxdepth\baselineskip
% \end{macrocode}
% Bring back the colours:
% \changes{v0.2.3085}{2019/02/14}{\cs{slnc@switchcolorstack} added}%^^A
% \begin{macrocode}
- \usekomafont{notecolumn.#1}{%
- \expandafter\vsplit\csname slnc@#1@box\endcsname to
- \textheight\relax
- }%
- \expandafter\ifvoid\csname slnc@#1@box\endcsname
- \else
- \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
- \slnc@switchcolorstack{#1}%
- \expandafter\unvbox\csname slnc@#1@box\endcsname
- }%
- \fi
+ \usekomafont{notecolumn.#1}{%
+ \expandafter\vsplit\csname slnc@#1@box\endcsname to
+ \textheight\relax
+ }%
+ \expandafter\ifvoid\csname slnc@#1@box\endcsname
\else
+ \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
+ \slnc@switchcolorstack{#1}%
+ \expandafter\unvbox\csname slnc@#1@box\endcsname
+ }%
+ \fi
+ \else
%<*trace>
- \PackageInfo{scrlayer-notecolumn}{Flush note box `#1'}%
+ \PackageInfo{scrlayer-notecolumn}{Flush note box `#1'}%
%</trace>
% \end{macrocode}
% Bring back the colours:
% \changes{v0.2.3085}{2019/02/14}{\cs{slnc@switchcolorstack} added}%^^A
% \begin{macrocode}
- \usekomafont{notecolumn.#1}{%
- \slnc@switchcolorstack{#1}%
- \expandafter\box\csname slnc@#1@box\endcsname%
- }%
- \fi
+ \usekomafont{notecolumn.#1}{%
+ \slnc@switchcolorstack{#1}%
+ \expandafter\box\csname slnc@#1@box\endcsname%
+ }%
\fi
- \expandafter\global
- \expandafter\setbox\csname slnc@#1@box\expandafter\endcsname
- \expandafter\box\csname slnc@#1@box\endcsname
- \endgroup
- }
+ \fi
+ \expandafter\global
+ \expandafter\setbox\csname slnc@#1@box\expandafter\endcsname
+ \expandafter\box\csname slnc@#1@box\endcsname
+ \endgroup
}
% \end{macrocode}
% \begin{macro}{\slnc@switchcolorstack}
@@ -1105,50 +1005,48 @@
% This either redefines \cs{set@color} or switches to the colour stack of the
% note column given by the argument.
% \begin{macrocode}
-\scrlayerAddToInterface{\slnc@switchcolorstack}{%
- \newcommand*{\slnc@switchcolorstack}[1]{%
- \scr@ifundefinedorrelax{slnc@#1@colorstack}{%
- \def\set@color{%
- \PackageWarningNoLine{scrlayer-notecolumn}{%
- unsupported change of colour!\MessageBreak
- It seems you are using a TeX engine,\MessageBreak
- that does not support switching the\MessageBreak
- colour stack like pdfTeX or luaTeX do.\MessageBreak
- Because of this, usage of \string\color,\MessageBreak
- \string\textcolor\space etc. inside a note
- column\MessageBreak
- is not supported%
- }%
+\newcommand*{\slnc@switchcolorstack}[1]{%
+ \scr@ifundefinedorrelax{slnc@#1@colorstack}{%
+ \def\set@color{%
+ \PackageWarningNoLine{scrlayer-notecolumn}{%
+ unsupported change of colour!\MessageBreak
+ It seems you are using a TeX engine,\MessageBreak
+ that does not support switching the\MessageBreak
+ colour stack like pdfTeX or luaTeX do.\MessageBreak
+ Because of this, usage of \string\color,\MessageBreak
+ \string\textcolor\space etc. inside a note
+ column\MessageBreak
+ is not supported%
}%
+ }%
+ }{%
+ \scr@ifundefinedorrelax{@pdfcolorstack}{%
}{%
- \scr@ifundefinedorrelax{@pdfcolorstack}{%
- }{%
- \expandafter\let\expandafter\@pdfcolorstack
- \csname slnc@#1@colorstack\endcsname
- }%
- \scr@ifundefinedorrelax{pdfcolorstack}{%
- \scr@ifundefinedorrelax{pdfextension}{%
- \PackageError{scrlayer-notecolumm}{%
- colour stack defined but not usable%
- }{%
- \expandafter\string
- \csname slnc@#1@colorstack\endcsname\space defined
- \MessageBreak
- but neither \string\pdfcolorstack\space nor
- \string\pdfextension.\MessageBreak
- This should never happen!%
- }%
+ \expandafter\let\expandafter\@pdfcolorstack
+ \csname slnc@#1@colorstack\endcsname
+ }%
+ \scr@ifundefinedorrelax{pdfcolorstack}{%
+ \scr@ifundefinedorrelax{pdfextension}{%
+ \PackageError{scrlayer-notecolumm}{%
+ colour stack defined but not usable%
}{%
- \pdfextension colorstack
- \csname slnc@#1@colorstack\endcsname current\relax
+ \expandafter\string
+ \csname slnc@#1@colorstack\endcsname\space defined
+ \MessageBreak
+ but neither \string\pdfcolorstack\space nor
+ \string\pdfextension.\MessageBreak
+ This should never happen!%
}%
}{%
- \pdfcolorstack
+ \pdfextension colorstack
\csname slnc@#1@colorstack\endcsname current\relax
}%
+ }{%
+ \pdfcolorstack
+ \csname slnc@#1@colorstack\endcsname current\relax
}%
}%
-}
+}%
% \end{macrocode}
% \end{macro}%^^A \slnc@switchcolorstack
% \begin{macro}{\restoreinnote}
@@ -1159,25 +1057,21 @@
% these are \cs{label}, \cs{index}, \cs{glossary}. More can be added using
% \cs{restoreinnote}. The storage is \cs{slnc@restoreinnote}.
% \begin{macrocode}
-\scrlayerAddToInterface\slnc@restoreinnote{%
- \let\slnc@restoreinnote\@empty
-}
-\scrlayerAddToInterface\restoreinnote{%
- \newcommand*\restoreinnote[1]{%
- \AtBeginDocument{%
- \expandafter\scrlayerAddCsToInterface[scrlayer-notecolumn.sty]{slnc\string#1}{%
- \expandafter\let\csname slnc\string#1\endcsname#1%
- \g@addto@macro\slnc@restoreinnote{%
- \expandafter\let\expandafter#1\csname slnc\string#1\endcsname
- }%
- }%
+\newcommand*{\slnc@restoreinnote}{}
+\let\slnc@restoreinnote\@empty
+\newcommand*\restoreinnote[1]{%
+ \AtBeginDocument{%
+ \expandafter\newcommand\expandafter*\csname slnc\string#1\endcsname{}%
+ \expandafter\let\csname slnc\string#1\endcsname#1%
+ \g@addto@macro\slnc@restoreinnote{%
+ \expandafter\let\expandafter#1\csname slnc\string#1\endcsname
}%
}%
- \@onlypreamble\restoreinnote
- \restoreinnote\label
- \restoreinnote\index
- \restoreinnote\glossary
}
+\@onlypreamble\restoreinnote
+\restoreinnote\label
+\restoreinnote\index
+\restoreinnote\glossary
% \end{macrocode}
% \end{macro}%^^A \slnc@restoreinnote
% \end{macro}%^^A \restoreinnote
@@ -1190,9 +1084,7 @@
% We need a helper macro \cs{slnc@catcodes} to restore (some of) the catcodes
% before reading from file.
% \begin{macrocode}
-\scrlayerAddToInterface\slnc@catcodes{%
- \newcommand*{\slnc@catcodes}{}%
-}
+\newcommand*{\slnc@catcodes}{}%
\AtBeginDocument{%
\begingroup
\def\do#1{%
@@ -1208,94 +1100,86 @@
% \end{macrocode}
% \end{macro}%^^A \slnc@catcodes
% \begin{macrocode}
-\scrlayerAddToInterface\slnc@readnotes{%
- \newcommand*\slnc@readnotes[1]{%
- \ifeof\slnc@file\else
- \ifnum \number #1<\slnc@unprocessed\relax
- \@tempswafalse
- \else
- \@tempswatrue
- \fi
- \@whilesw\if@tempswa\fi{%
- \begingroup
- \slnc@catcodes
- \endlinechar\m@ne
- \read\slnc@file to\reserved@a
- \edef\reserved@a{%
- \endgroup
- \noexpand\def\noexpand\reserved@a{%
- \unexpanded\expandafter{\reserved@a}%
- }%
+\newcommand*\slnc@readnotes[1]{%
+ \ifeof\slnc@file\else
+ \ifnum \number #1<\slnc@unprocessed\relax
+ \@tempswafalse
+ \else
+ \@tempswatrue
+ \fi
+ \@whilesw\if@tempswa\fi{%
+ \begingroup
+ \slnc@catcodes
+ \endlinechar\m@ne
+ \read\slnc@file to\reserved@a
+ \edef\reserved@a{%
+ \endgroup
+ \noexpand\def\noexpand\reserved@a{%
+ \unexpanded\expandafter{\reserved@a}%
}%
- \reserved@a
- \expandafter\slnc@iofv\expandafter\reserved@b\reserved@a
- \@empty\@empty\@empty\@empty\@empty
- \@tempswafalse
- \@for\reserved@c :={\slnc@note },{\slnc@sync }\do{%
- \ifx\reserved@b\reserved@c \@tempswatrue\fi
}%
- \if@tempswa
- \@tempswafalse
- \expandafter\slnc@iiiofv\expandafter\reserved@b\reserved@a
+ \reserved@a
+ \expandafter\slnc@iofv\expandafter\reserved@b\reserved@a
+ \@empty\@empty\@empty\@empty\@empty
+ \@tempswafalse
+ \@for\reserved@c :={\slnc@note },{\slnc@sync }\do{%
+ \ifx\reserved@b\reserved@c \@tempswatrue\fi
+ }%
+ \if@tempswa
+ \@tempswafalse
+ \expandafter\slnc@iiiofv\expandafter\reserved@b\reserved@a
+ \@empty\@empty\@empty\@empty\@empty
+ \ifx\reserved@b\@empty
+ \PackageError{scrlayer-notecolumn}{internal syntax error}{%
+ Unexpected syntax of file `\jobname.slnc'.\MessageBreak
+ Second argument should be a number.\MessageBreak
+ I don't know what to do with\MessageBreak
+ \expandafter\detokenize\expandafter{\reserved@a}%
+ }%
+ \@tempswatrue
+ \else
+ \global\let\slnc@unprocessed\reserved@b
+ \expandafter\slnc@iiofv\expandafter\reserved@b\reserved@a
\@empty\@empty\@empty\@empty\@empty
- \ifx\reserved@b\@empty
- \PackageError{scrlayer-notecolumn}{internal syntax error}{%
- Unexpected syntax of file `\jobname.slnc'.\MessageBreak
- Second argument should be a number.\MessageBreak
- I don't know what to do with\MessageBreak
- \expandafter\detokenize\expandafter{\reserved@a}%
+ \@ifundefined{slnc@\reserved@b @unprocessed}{%
+ \PackageWarning{scrlayer-notecolumn}{%
+ column `\reserved@b' undefined.\MessageBreak
+ You should declare the column before the usage.\MessageBreak
+ Notes will be lost%
}%
- \@tempswatrue
- \else
- \global\let\slnc@unprocessed\reserved@b
- \expandafter\slnc@iiofv\expandafter\reserved@b\reserved@a
- \@empty\@empty\@empty\@empty\@empty
- \@ifundefined{slnc@\reserved@b @unprocessed}{%
- \PackageWarning{scrlayer-notecolumn}{%
- column `\reserved@b' undefined.\MessageBreak
- You should declare the column before the usage.\MessageBreak
- Notes will be lost%
- }%
- }{%
- \expandafter\g@addto@macro
- \csname slnc@\reserved@b @unprocessed\expandafter\endcsname
- \expandafter{%
- \reserved@a
- }%
+ }{%
+ \expandafter\g@addto@macro
+ \csname slnc@\reserved@b @unprocessed\expandafter\endcsname
+ \expandafter{%
+ \reserved@a
}%
- \ifnum \number #1<\slnc@unprocessed\relax
- \@tempswafalse
- \else
- \@tempswatrue
- \fi
+ }%
+ \ifnum \number #1<\slnc@unprocessed\relax
+ \@tempswafalse
+ \else
+ \@tempswatrue
\fi
- \else
+ \fi
+ \else
%<*trace>
- \PackageInfo{scrlayer-notecolumn}{%
- Ignoring `\expandafter\detokenize\expandafter{\reserved@a}'}%
+ \PackageInfo{scrlayer-notecolumn}{%
+ Ignoring `\expandafter\detokenize\expandafter{\reserved@a}'}%
%</trace>
- \@tempswatrue
- \fi
- \ifeof\slnc@file\@tempswafalse\fi
- }%
- \fi
- }%
-}
+ \@tempswatrue
+ \fi
+ \ifeof\slnc@file\@tempswafalse\fi
+ }%
+ \fi
+}%
% \end{macrocode}
% \end{macro}%^^A \slnc@readnotes
% \begin{macro}{\slnc@iofv}
% \begin{macro}{\slnc@iiofv}
% \begin{macro}{\slnc@iiiofv}
% \begin{macrocode}
-\scrlayerAddToInterface\slnc@iofv{%
- \newcommand\slnc@iofv[6]{\def#1{#2}}%
-}
-\scrlayerAddToInterface\slnc@iiofiv{%
- \newcommand\slnc@iiofv[6]{\def#1{#3}}%
-}
-\scrlayerAddToInterface\slnc@iiiofiv{%
- \newcommand\slnc@iiiofv[6]{\def#1{#4}}%
-}
+\newcommand\slnc@iofv[6]{\def#1{#2}}%
+\newcommand\slnc@iiofv[6]{\def#1{#3}}%
+\newcommand\slnc@iiiofv[6]{\def#1{#4}}%
% \end{macrocode}
% \end{macro}%^^A \slnc@iiiofv
% \end{macro}%^^A \slnc@iiofv
@@ -1303,9 +1187,7 @@
% \begin{macro}{\slnc@unprocessed}
% The \#2 of the last read note column from notes file.
% \begin{macrocode}
-\scrlayerAddToInterface\slnc@unprocessed{%
- \newcommand*{\slnc@unprocessed}{0}%
-}
+\newcommand*{\slnc@unprocessed}{0}%
%</body>
% \end{macrocode}
% \begin{macro}{\slnc@file}
@@ -1320,42 +1202,38 @@
% The MD5 sum of the file before opening it for reading.
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\slnc@mdfivesum{%
- \let\slnc@mdfivesum\@empty
-}
-\scrlayerAddToInterface\slnc@file{%
- \scr@ifundefinedorrelax{pdfmdfivesum}{%
- \scr@ifundefinedorrelax{mdfivesum}{%
- \ifdefined\directlua
- \directlua{%
- function slncmdfivesum(filename)
- local fh = io.open(filename,"rb")
- if fh then
- local sum=md5.sumhexa(fh:read("*a"))
- tex.sprint(sum)
- fh:close()
- end
+\newcommand*{\slnc@mdfivesum}{}
+\let\slnc@mdfivesum\@empty
+\scr@ifundefinedorrelax{pdfmdfivesum}{%
+ \scr@ifundefinedorrelax{mdfivesum}{%
+ \ifdefined\directlua
+ \directlua{%
+ function slncmdfivesum(filename)
+ local fh = io.open(filename,"rb")
+ if fh then
+ local sum=md5.sumhexa(fh:read("*a"))
+ tex.sprint(sum)
+ fh:close()
end
- }%
- \xdef\slnc@mdfivesum{\directlua{slncmdfivesum("\jobname.slnc")}}%
- \fi
- }{%
- \xdef\slnc@mdfivesum{\mdfivesum file {\jobname.slnc}}%
- }%
+ end
+ }%
+ \xdef\slnc@mdfivesum{\directlua{slncmdfivesum("\jobname.slnc")}}%
+ \fi
}{%
- \xdef\slnc@mdfivesum{\pdfmdfivesum file {\jobname.slnc}}%
+ \xdef\slnc@mdfivesum{\mdfivesum file {\jobname.slnc}}%
}%
+}{%
+ \xdef\slnc@mdfivesum{\pdfmdfivesum file {\jobname.slnc}}%
+}%
%<*trace>
- \scr@ifundefinedorrelax{slnc@mdfivesum}{}{%
- \PackageInfo{scrlayer-notecolumn}{%
- MD5 of last `\jobname.slnc':\MessageBreak
- \slnc@mdfivesum}%
- }%
+\scr@ifundefinedorrelax{slnc@mdfivesum}{}{%
+ \PackageInfo{scrlayer-notecolumn}{%
+ MD5 of last `\jobname.slnc':\MessageBreak
+ \slnc@mdfivesum}%
+}%
%</trace>
- \newread\slnc@file
- \immediate\openin\slnc@file \jobname.slnc
- \scrlayerOnAutoRemoveInterface{\immediate\closein\slnc@file}%
-}
+\newread\slnc@file
+\immediate\openin\slnc@file \jobname.slnc
%</body>
% \end{macrocode}
% \end{macro}%^^A \slnc@mdfivesum
@@ -1366,9 +1244,8 @@
% \begin{option}{autoclearnotecolumns}
% \begin{macrocode}
%<*options>
-\KOMA@ifkey{autoclearnotecolumns}{slnc@autoclearnotecolumns}\slnc@autoclearnotecolumnstrue
-\scrlayer@AddCsToInterface{KV@KOMA.\@currname.\@currext @autoclearnotecolumns}
-\scrlayer@AddCsToInterface{KV@KOMA.\@currname.\@currext @autoclearnotecolumns@default}
+\KOMA@ifkey{autoclearnotecolumns}{slnc@autoclearnotecolumns}
+\slnc@autoclearnotecolumnstrue
%</options>
%<*final>
\let\reserved@a\clearpage
@@ -1390,66 +1267,99 @@
% unprocessed notes. But the output of the following (empty) pages shouldn't.
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\c@slnc@clearnote@label{%
- \newcounter{slnc@clearnote@label}%
-}
-\scrlayerAddToInterface\clearnotecolumn{%
- \newcommand*\clearnotecolumn[1][marginpar]{%
- \begingroup
- \slnc@autoclearnotecolumnsfalse
+\newcounter{slnc@clearnote@label}%
+\newcommand*\clearnotecolumn[1][marginpar]{%
+ \begingroup
+ \slnc@autoclearnotecolumnsfalse
% \end{macrocode}
% First of all we need to know the note column page of this page.
% \begin{macrocode}
- \stepcounter{slnc@clearnote@label}%
- \if@filesw
- \protected@write\@auxout{%
- \let\theslncpage\relax
- \let\slnc@voidtest\relax
- }{%
- \string\newlabel{notecolumn.\theslnc@clearnote@label}%
- {{\theslncpage}{\slnc@voidtest{#1}}}%
- }%
- \fi
- \scr@ifundefinedorrelax{r@notecolumn.\theslnc@clearnote@label}{%
- \PackageInfo{scrlayer-notecolumn}{%
- Using estimated to low value for clearing\MessageBreak
- note colum `#1'%
- }
- \edef\slnc@cmp@value{\the\value{slncpage}}%
- \let\reserved@a\z@
+ \stepcounter{slnc@clearnote@label}%
+ \if@filesw
+ \protected@write\@auxout{%
+ \let\theslncpage\relax
+ \let\slnc@voidtest\relax
}{%
- \edef\reserved@a{%
- \@nameuse{r@notecolumn.\theslnc@clearnote@label}\@empty\@empty
- }%
- \edef\slnc@cmp@value{\expandafter\slnc@firstof\reserved@a\@nil}%
- \edef\reserved@a{\expandafter\slnc@secondof\reserved@a\@nil}%
+ \string\newlabel{notecolumn.\theslnc@clearnote@label}%
+ {{\theslncpage}{\slnc@voidtest{#1}}}%
+ }%
+ \fi
+ \scr@ifundefinedorrelax{r@notecolumn.\theslnc@clearnote@label}{%
+ \PackageInfo{scrlayer-notecolumn}{%
+ Using estimated to low value for clearing\MessageBreak
+ note colum `#1'%
+ }
+ \edef\slnc@cmp@value{\the\value{slncpage}}%
+ \let\reserved@a\z@
+ }{%
+ \edef\reserved@a{%
+ \@nameuse{r@notecolumn.\theslnc@clearnote@label}\@empty\@empty
}%
+ \edef\slnc@cmp@value{\expandafter\slnc@firstof\reserved@a\@nil}%
+ \edef\reserved@a{\expandafter\slnc@secondof\reserved@a\@nil}%
+ }%
%<*trace>
- \typeout{TRACE (slnc): clearnote=\@nameuse{theslnc@clearnote@label},
- abspage=\the\value{slncpage}, until page=\slnc@cmp@value,
- process=\reserved@a, pagetotal=\the\pagetotal, topskip=\the\topskip}%
+ \typeout{TRACE (slnc): clearnote=\@nameuse{theslnc@clearnote@label},
+ abspage=\the\value{slncpage}, until page=\slnc@cmp@value,
+ process=\reserved@a, pagetotal=\the\pagetotal, topskip=\the\topskip}%
%</trace>
- \ifvmode\ifdim \pagetotal<\topskip
+ \ifvmode\ifdim \pagetotal<\topskip
% \end{macrocode}
% \Macro{clearpage} wouldn't result in a new page, so we do not have to output
% the notes of this page but only until the previous.
% \begin{macrocode}
- \edef\slnc@cmp@value{\the\numexpr\slnc@cmp@value-1}%
+ \edef\slnc@cmp@value{\the\numexpr\slnc@cmp@value-1}%
%<trace> \typeout{TRACE (slnc): until page=\slnc@cmp@value}%
- \fi\fi
- \ifnum \reserved@a=\z@
+ \fi\fi
+ \ifnum \reserved@a=\z@
% \end{macrocode}
% Next we read all notes until the end of the current page, but only
% if a \Macro{clearpage} wouldn't result in a new page.
% \begin{macrocode}
- \ifvmode
- \ifdim \pagetotal<\topskip
- \else
- \slnc@readnotes{\slnc@cmp@value}%
- \fi
+ \ifvmode
+ \ifdim \pagetotal<\topskip
\else
\slnc@readnotes{\slnc@cmp@value}%
\fi
+ \else
+ \slnc@readnotes{\slnc@cmp@value}%
+ \fi
+ \begingroup
+ \aftergroup\@tempswafalse
+ \long\def\slnc@note##1##2##3##4{%
+ \ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi
+ }%
+ \let\slnc@sync\slnc@note
+ \csname slnc@#1@unprocessed\endcsname
+ \endgroup
+ \else
+ \PackageInfo{scrlayer-notecolumn}{%
+ box of note column `#1'\MessageBreak
+ not empty after page of \string\clearnotecolumn}%
+ \@tempswatrue
+ \fi
+ \if@tempswa
+% \end{macrocode}
+% Yes, we have!
+% \begin{macrocode}
+ \IfLayerPageStyleExists{\currentpagestyle}{}{%
+ \PackageWarning{scrlayer-notecolumn}{%
+ \string\clearnotecolumn\space while active non-layer page
+ style.\MessageBreak
+ Activate empty page style until note column\MessageBreak
+ has been cleared%
+ }%
+ \pagestyle{empty}%
+ }%
+ \@tempswatrue
+ \fi
+ \@whilesw\if@tempswa\fi{%
+%<trace> \typeout{TRACE (slnc): add \string\clearpage}%
+% \end{macrocode}
+% Yes, we have (maybe again)!
+% \begin{macrocode}
+ \clearpage
+ \expandafter\ifcase \slnc@voidtest{#1}%
\begingroup
\aftergroup\@tempswafalse
\long\def\slnc@note##1##2##3##4{%
@@ -1459,53 +1369,16 @@
\csname slnc@#1@unprocessed\endcsname
\endgroup
\else
- \PackageInfo{scrlayer-notecolumn}{%
- box of note column `#1'\MessageBreak
- not empty after page of \string\clearnotecolumn}%
\@tempswatrue
\fi
\if@tempswa
% \end{macrocode}
-% Yes, we have!
-% \begin{macrocode}
- \IfLayerPageStyleExists{\currentpagestyle}{}{%
- \PackageWarning{scrlayer-notecolumn}{%
- \string\clearnotecolumn\space while active non-layer page
- style.\MessageBreak
- Activate empty page style until note column\MessageBreak
- has been cleared%
- }%
- \pagestyle{empty}%
- }%
- \@tempswatrue
- \fi
- \@whilesw\if@tempswa\fi{%
-%<trace> \typeout{TRACE (slnc): add \string\clearpage}%
-% \end{macrocode}
-% Yes, we have (maybe again)!
-% \begin{macrocode}
- \clearpage
- \expandafter\ifcase \slnc@voidtest{#1}%
- \begingroup
- \aftergroup\@tempswafalse
- \long\def\slnc@note##1##2##3##4{%
- \ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi
- }%
- \let\slnc@sync\slnc@note
- \csname slnc@#1@unprocessed\endcsname
- \endgroup
- \else
- \@tempswatrue
- \fi
- \if@tempswa
-% \end{macrocode}
% And we still have: So we have to output one more page.
% \begin{macrocode}
- \null
- \fi
- }%
- \endgroup
- }%
+ \null
+ \fi
+ }%
+ \endgroup
}
% \end{macrocode}
% \begin{macro}{\slnc@firstof}
@@ -1513,12 +1386,10 @@
% We need these little helpers, because some packages like
% \Package{hyperref} extend the label mechanism by additional arguments.
% \begin{macrocode}
-\scrlayerAddToInterface{\slnc@firstof}{%
- \def\slnc@firstof#1#2\@nil{#1}%
-}
-\scrlayerAddToInterface{slnc@secondof}{%
- \def\slnc@secondof#1#2#3\@nil{#2}%
-}
+\newcommand*{\slnc@firstof}{}
+\def\slnc@firstof#1#2\@nil{#1}%
+\newcommand*{\slnc@secondof}{}
+\def\slnc@secondof#1#2#3\@nil{#2}%
% \end{macrocode}
% \end{macro}%^^A \slnc@firstof
% \end{macro}%^^A \slnc@secondof
@@ -1530,10 +1401,8 @@
% If the box of the note column is empty/void it returns \Macro{z@} otherwise
% \Macro{@ne}.
% \begin{macrocode}
-\scrlayerAddToInterface\slnc@voidtest{%
- \newcommand*{\slnc@voidtest}[1]{%
- \expandafter\ifvoid \csname slnc@#1@box\endcsname \z@\else \@ne\fi
- }%
+\newcommand*{\slnc@voidtest}[1]{%
+ \expandafter\ifvoid \csname slnc@#1@box\endcsname \z@\else \@ne\fi
}
%</body>
% \end{macrocode}
@@ -1555,140 +1424,138 @@
% pages shouldn't.
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\clearnotecolumns{%
- \newcommand*\clearnotecolumns[1][\relax]{%
- \begingroup
- \slnc@autoclearnotecolumnsfalse
- \ifx\relax#1\relax\else
- \let\slnc@processnotecolumns\@empty
- \edef\reserved@a{#1}%
- \@for\reserved@a:=\reserved@a\do {%
- \scr@trim@spaces\reserved@a
- \ifx\reserved@a\@empty\else
- \expandafter\l@addto@macro\expandafter\slnc@processnotecolumns
- \expandafter{\expandafter\@elt\expandafter{\reserved@a}}%
- \fi
- }%
- \fi
+\newcommand*\clearnotecolumns[1][\relax]{%
+ \begingroup
+ \slnc@autoclearnotecolumnsfalse
+ \ifx\relax#1\relax\else
+ \let\slnc@processnotecolumns\@empty
+ \edef\reserved@a{#1}%
+ \@for\reserved@a:=\reserved@a\do {%
+ \scr@trim@spaces\reserved@a
+ \ifx\reserved@a\@empty\else
+ \expandafter\l@addto@macro\expandafter\slnc@processnotecolumns
+ \expandafter{\expandafter\@elt\expandafter{\reserved@a}}%
+ \fi
+ }%
+ \fi
% \end{macrocode}
% First of all we need to know the note column page of this page.
% \begin{macrocode}
- \stepcounter{slnc@clearnote@label}%
- \if@filesw
- \begingroup
- \def\@elt##1{+\slnc@voidtest{##1}}%
- \protected@write\@auxout{%
- \let\theslncpage\relax
- \let\slnc@voidtest\relax
- }{%
- \string\newlabel{notecolumn.\theslnc@clearnote@label}%
- {{\theslncpage}{\numexpr \slnc@processnotecolumns\relax}}%
- }%
- \endgroup
- \fi
- \scr@ifundefinedorrelax{r@notecolumn.\theslnc@clearnote@label}{%
- \begingroup
- \def\@elt##1{, `##1'}%
- \PackageInfo{scrlayer-notecolumn}{%
- Using estimated to low value for\MessageBreak
- clearing note colums\MessageBreak
- \expandafter\@gobble\slnc@processnotecolumns
- }%
- \endgroup
- \edef\slnc@cmp@value{\the\value{slncpage}}%
- \let\reserved@a\z@
- }{%
- \edef\reserved@a{%
- \@nameuse{r@notecolumn.\theslnc@clearnote@label}\@empty\@empty
+ \stepcounter{slnc@clearnote@label}%
+ \if@filesw
+ \begingroup
+ \def\@elt##1{+\slnc@voidtest{##1}}%
+ \protected@write\@auxout{%
+ \let\theslncpage\relax
+ \let\slnc@voidtest\relax
+ }{%
+ \string\newlabel{notecolumn.\theslnc@clearnote@label}%
+ {{\theslncpage}{\numexpr \slnc@processnotecolumns\relax}}%
+ }%
+ \endgroup
+ \fi
+ \scr@ifundefinedorrelax{r@notecolumn.\theslnc@clearnote@label}{%
+ \begingroup
+ \def\@elt##1{, `##1'}%
+ \PackageInfo{scrlayer-notecolumn}{%
+ Using estimated to low value for\MessageBreak
+ clearing note colums\MessageBreak
+ \expandafter\@gobble\slnc@processnotecolumns
}%
- \edef\slnc@cmp@value{\expandafter\slnc@firstof\reserved@a\@nil}%
- \edef\reserved@a{\expandafter\slnc@secondof\reserved@a\@nil}%
+ \endgroup
+ \edef\slnc@cmp@value{\the\value{slncpage}}%
+ \let\reserved@a\z@
+ }{%
+ \edef\reserved@a{%
+ \@nameuse{r@notecolumn.\theslnc@clearnote@label}\@empty\@empty
}%
+ \edef\slnc@cmp@value{\expandafter\slnc@firstof\reserved@a\@nil}%
+ \edef\reserved@a{\expandafter\slnc@secondof\reserved@a\@nil}%
+ }%
%<*trace>
- \typeout{TRACE (slnc): clearnote=\@nameuse{theslnc@clearnote@label},
- abspage=\theslncpage, until page=\slnc@cmp@value,
- process=\reserved@a, pagetotal=\the\pagetotal, topskip=\the\topskip}%
+ \typeout{TRACE (slnc): clearnote=\@nameuse{theslnc@clearnote@label},
+ abspage=\theslncpage, until page=\slnc@cmp@value,
+ process=\reserved@a, pagetotal=\the\pagetotal, topskip=\the\topskip}%
%</trace>
- \ifvmode\ifdim \pagetotal<\topskip
+ \ifvmode\ifdim \pagetotal<\topskip
% \end{macrocode}
% \Macro{clearpage} wouldn't result in a new page, so we do not have to output
% the notes of this page but only until the previous.
% \begin{macrocode}
- \edef\slnc@cmp@value{\the\numexpr\slnc@cmp@value-1}%
+ \edef\slnc@cmp@value{\the\numexpr\slnc@cmp@value-1}%
%<trace> \typeout{TRACE (slnc): until page=\slnc@cmp@value}%
- \fi\fi
- \ifnum \reserved@a=\z@
+ \fi\fi
+ \ifnum \reserved@a=\z@
% \end{macrocode}
% Next we read all notes until the end of the current page, but only
% if a \Macro{clearpage} wouldn't result in a new page.
% \begin{macrocode}
- \ifvmode
- \ifdim \pagetotal<\topskip
- \else
- \slnc@readnotes{\slnc@cmp@value}%
- \fi
+ \ifvmode
+ \ifdim \pagetotal<\topskip
\else
\slnc@readnotes{\slnc@cmp@value}%
\fi
- \begingroup
- \aftergroup\@tempswafalse
- \long\def\slnc@note##1##2##3##4{%
- \ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi
- }%
- \let\slnc@sync\slnc@note
- \def\@elt##1{\csname slnc@##1@unprocessed\endcsname}%
- \slnc@processnotecolumns
- \endgroup
\else
- \PackageInfo{scrlayer-notecolumn}{%
- box of at least one note column\MessageBreak
- not empty after page of \string\clearnotecolumns}%
- \@tempswatrue
+ \slnc@readnotes{\slnc@cmp@value}%
\fi
- \if@tempswa
+ \begingroup
+ \aftergroup\@tempswafalse
+ \long\def\slnc@note##1##2##3##4{%
+ \ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi
+ }%
+ \let\slnc@sync\slnc@note
+ \def\@elt##1{\csname slnc@##1@unprocessed\endcsname}%
+ \slnc@processnotecolumns
+ \endgroup
+ \else
+ \PackageInfo{scrlayer-notecolumn}{%
+ box of at least one note column\MessageBreak
+ not empty after page of \string\clearnotecolumns}%
+ \@tempswatrue
+ \fi
+ \if@tempswa
% \end{macrocode}
% Yes, we have!
% \begin{macrocode}
- \IfLayerPageStyleExists{\currentpagestyle}{}{%
- \PackageWarning{scrlayer-notecolumn}{%
- \string\clearnotecolumns\space while active non-layer page
- style.\MessageBreak
- Activate empty page style until note column\MessageBreak
- has been cleared%
- }%
- \pagestyle{empty}%
+ \IfLayerPageStyleExists{\currentpagestyle}{}{%
+ \PackageWarning{scrlayer-notecolumn}{%
+ \string\clearnotecolumns\space while active non-layer page
+ style.\MessageBreak
+ Activate empty page style until note column\MessageBreak
+ has been cleared%
}%
- \@tempswatrue
- \fi
- \@whilesw\if@tempswa\fi{%
-%<trace> \typeout{TRACE (slnc): add \string\clearpage}%
+ \pagestyle{empty}%
+ }%
+ \@tempswatrue
+ \fi
+ \@whilesw\if@tempswa\fi{%
+%<trace> \typeout{TRACE (slnc): add \string\clearpage}%
% \end{macrocode}
% Yes, we have (maybe again)!
% \begin{macrocode}
- \clearpage
- \begingroup
- \def\@elt##1{+\slnc@voidtest{##1}}%
- \ifcase \numexpr \slnc@processnotecolumns\relax
- \aftergroup\@tempswafalse
- \long\def\slnc@note##1##2##3##4{%
- \ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi
- }%
- \let\slnc@sync\slnc@note
- \def\@elt##1{\csname slnc@##1@unprocessed\endcsname}%
- \slnc@processnotecolumns
- \else
- \aftergroup\@tempswatrue
- \fi
- \endgroup
- \if@tempswa
+ \clearpage
+ \begingroup
+ \def\@elt##1{+\slnc@voidtest{##1}}%
+ \ifcase \numexpr \slnc@processnotecolumns\relax
+ \aftergroup\@tempswafalse
+ \long\def\slnc@note##1##2##3##4{%
+ \ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi
+ }%
+ \let\slnc@sync\slnc@note
+ \def\@elt##1{\csname slnc@##1@unprocessed\endcsname}%
+ \slnc@processnotecolumns
+ \else
+ \aftergroup\@tempswatrue
+ \fi
+ \endgroup
+ \if@tempswa
% \end{macrocode}
% And we still have: So we have to output one more page.
% \begin{macrocode}
- \null
- \fi
- }%
- \endgroup
- }%
+ \null
+ \fi
+ }%
+ \endgroup
}
%</body>
% \end{macrocode}
@@ -1719,176 +1586,168 @@
% runs to terminate.
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface{\c@slnc@syncpoint}{%
- \newcounter{slnc@syncpoint}%
-}
-\scrlayerAddToInterface{\syncwithnotecolumn}{%
- \newcommand*{\syncwithnotecolumn}[1][marginpar]{%
- \begingroup
- \edef\reserved@a{\endgroup\noexpand\syncwithnotecolumns[{#1}]}%
- \reserved@a
- }%
+\newcounter{slnc@syncpoint}%
+\newcommand*{\syncwithnotecolumn}[1][marginpar]{%
+ \begingroup
+ \edef\reserved@a{\endgroup\noexpand\syncwithnotecolumns[{#1}]}%
+ \reserved@a
}
-\scrlayerAddToInterface{\syncwithnotecolumns}{%
- \newcommand*{\syncwithnotecolumns}[1][\relax]{%
- \begingroup
- \ifx\relax#1\relax\else
- \let\slnc@processnotecolumns\@empty
- \edef\reserved@a{#1}%
- \@for\reserved@a:=\reserved@a\do {%
- \scr@trim@spaces\reserved@a
- \ifx\reserved@a\@empty\else
- \expandafter\l@addto@macro\expandafter\slnc@processnotecolumns
- \expandafter{\expandafter\@elt\expandafter{\reserved@a}}%
- \fi
- }%
- \fi
- \stepcounter{slnc@syncpoint}%
- \def\@elt##1{%
- \addtocontents{slnc}{%
- \string\slnc@sync{##1}%
- {\noexpand\number\value{slncpage}}%
- {\theslnc@syncpoint}%
- {}%
- }%
+\newcommand*{\syncwithnotecolumns}[1][\relax]{%
+ \begingroup
+ \ifx\relax#1\relax\else
+ \let\slnc@processnotecolumns\@empty
+ \edef\reserved@a{#1}%
+ \@for\reserved@a:=\reserved@a\do {%
+ \scr@trim@spaces\reserved@a
+ \ifx\reserved@a\@empty\else
+ \expandafter\l@addto@macro\expandafter\slnc@processnotecolumns
+ \expandafter{\expandafter\@elt\expandafter{\reserved@a}}%
+ \fi
}%
- \slnc@processnotecolumns
- \ifvmode
- \let\slnc@voffset\@empty%
- \expandafter\@firstofone
- \else
- \PackageWarning{scrlayer-notecolumn}{%
- \string\syncwithnotecolumn\space in hmode.\MessageBreak
- Using \string\syncwithnotecolumn\space in horizontal\MessageBreak
- mode may result in unwanted vertical\MessageBreak
- space inside paragraphs and may lost\MessageBreak
- colours of text of notes. \space So perhaps you\MessageBreak
- should move \string\syncwithnotecolumn\space before\MessageBreak
- or after the paragraph%
+ \fi
+ \stepcounter{slnc@syncpoint}%
+ \def\@elt##1{%
+ \addtocontents{slnc}{%
+ \string\slnc@sync{##1}%
+ {\noexpand\number\value{slncpage}}%
+ {\theslnc@syncpoint}%
+ {}%
+ }%
+ }%
+ \slnc@processnotecolumns
+ \ifvmode
+ \let\slnc@voffset\@empty%
+ \expandafter\@firstofone
+ \else
+ \PackageWarning{scrlayer-notecolumn}{%
+ \string\syncwithnotecolumn\space in hmode.\MessageBreak
+ Using \string\syncwithnotecolumn\space in horizontal\MessageBreak
+ mode may result in unwanted vertical\MessageBreak
+ space inside paragraphs and may lost\MessageBreak
+ colours of text of notes. \space So perhaps you\MessageBreak
+ should move \string\syncwithnotecolumn\space before\MessageBreak
+ or after the paragraph%
+ }%
+ \let\slnc@voffset\@empty%\def\slnc@voffset{-\number\baselineskip}%
+ \expandafter\slnc@vadjust
+ \fi
+ {%
+ \if@filesw
+ \scr@savepos
+ \protected@write\@auxout{}{%
+ \string\newlabel{notecolumn.\theslnc@syncpoint.synctext.label}{%
+ {%
+ \noexpand\number
+ \numexpr \scr@lastypos\slnc@voffset\relax
+ }{\thepage}%
+ }%
}%
- \let\slnc@voffset\@empty%\def\slnc@voffset{-\number\baselineskip}%
- \expandafter\slnc@vadjust
\fi
- {%
- \if@filesw
- \scr@savepos
- \protected@write\@auxout{}{%
- \string\newlabel{notecolumn.\theslnc@syncpoint.synctext.label}{%
- {%
- \noexpand\number
- \numexpr \scr@lastypos\slnc@voffset\relax
- }{\thepage}%
+ \@ifundefined{r@notecolumn.\theslnc@syncpoint.synctext.label}{%
+ \PackageInfo{scrlayer-notecolumn}{%
+ No text label for \string\syncwithnotecolumn.\MessageBreak
+ Need rerun to sync position}%
+ }{%
+ \edef\reserved@a{%
+ \@nameuse{r@notecolumn.\theslnc@syncpoint.synctext.label}%
+ \@empty\@empty
+ }%
+ \edef\slnc@textpos{\expandafter\slnc@firstof\reserved@a\@nil}%
+ \edef\slnc@textpage{\expandafter\slnc@secondof\reserved@a\@nil}%
+ \let\slnc@notepos\slnc@textpos
+ \let\slnc@notepage\slnc@textpage
+ \def\@elt##1{%
+ \@ifundefined{r@notecolumn.##1.\theslnc@syncpoint.syncnote.label}{%
+ \PackageInfo{scrlayer-notecolumn}{%
+ No note label for sync with note column\MessageBreak
+ `##1'.\MessageBreak
+ Need rerun to sync position}%
+ \G@refundefinedtrue
+ }{%
+ \edef\reserved@a{%
+ \@nameuse{r@notecolumn.##1.\theslnc@syncpoint.syncnote.label}%
+ \@empty\@empty
}%
+ \edef\reserved@b{\expandafter\slnc@firstof\reserved@a\@nil}%
+ \edef\reserved@c{\expandafter\slnc@secondof\reserved@a\@nil}%
+ \ifnum \slnc@notepage<\reserved@c\relax
+ \let\slnc@notepos=\reserved@b
+ \let\slnc@notepage=\reserved@c
+ \else
+ \ifnum \slnc@notepage=\reserved@c\relax
+ \ifnum \slnc@notepos>\reserved@b
+ \let\slnc@notepos=\reserved@b
+ \let\slnc@notepage=\reserved@c
+ \fi
+ \fi
+ \fi
}%
- \fi
- \@ifundefined{r@notecolumn.\theslnc@syncpoint.synctext.label}{%
+ }%
+ \slnc@processnotecolumns
+ \ifnum\slnc@textpage>\slnc@notepage\relax
\PackageInfo{scrlayer-notecolumn}{%
- No text label for \string\syncwithnotecolumn.\MessageBreak
+ Last note page before last text page.\MessageBreak
Need rerun to sync position}%
- }{%
- \edef\reserved@a{%
- \@nameuse{r@notecolumn.\theslnc@syncpoint.synctext.label}%
- \@empty\@empty
- }%
- \edef\slnc@textpos{\expandafter\slnc@firstof\reserved@a\@nil}%
- \edef\slnc@textpage{\expandafter\slnc@secondof\reserved@a\@nil}%
- \let\slnc@notepos\slnc@textpos
- \let\slnc@notepage\slnc@textpage
- \def\@elt##1{%
- \@ifundefined{r@notecolumn.##1.\theslnc@syncpoint.syncnote.label}{%
- \PackageInfo{scrlayer-notecolumn}{%
- No note label for sync with note column\MessageBreak
- `##1'.\MessageBreak
- Need rerun to sync position}%
- \G@refundefinedtrue
- }{%
- \edef\reserved@a{%
- \@nameuse{r@notecolumn.##1.\theslnc@syncpoint.syncnote.label}%
- \@empty\@empty
- }%
- \edef\reserved@b{\expandafter\slnc@firstof\reserved@a\@nil}%
- \edef\reserved@c{\expandafter\slnc@secondof\reserved@a\@nil}%
- \ifnum \slnc@notepage<\reserved@c\relax
- \let\slnc@notepos=\reserved@b
- \let\slnc@notepage=\reserved@c
- \else
- \ifnum \slnc@notepage=\reserved@c\relax
- \ifnum \slnc@notepos>\reserved@b
- \let\slnc@notepos=\reserved@b
- \let\slnc@notepage=\reserved@c
- \fi
- \fi
- \fi
+ \else
+ \ifnum\slnc@textpage<\slnc@notepage\relax
+ \@whilenum \slnc@textpage<\slnc@notepage\do {%
+ \newpage\null\vskip-\dimexpr \baselineskip+\parskip\relax
+ \edef\slnc@textpage{\the\numexpr\slnc@textpage+1\relax}%
}%
- }%
- \slnc@processnotecolumns
- \ifnum\slnc@textpage>\slnc@notepage\relax
- \PackageInfo{scrlayer-notecolumn}{%
- Last note page before last text page.\MessageBreak
- Need rerun to sync position}%
- \else
- \ifnum\slnc@textpage<\slnc@notepage\relax
- \@whilenum \slnc@textpage<\slnc@notepage\do {%
- \newpage\null\vskip-\dimexpr \baselineskip+\parskip\relax
- \edef\slnc@textpage{\the\numexpr\slnc@textpage+1\relax}%
- }%
% \end{macrocode}
% \changes{v0.1}{2015/10/07}{ready for renaming \cs{pdfpageheight} in
% luaTeX}%^^A
% From lua\TeX~0.80.1 \cs{pdfpageheight} will be renamed into
% \cs{pageheight}. So we have to do an extra test for the new primitive.
% \begin{macrocode}
- \scr@ifundefinedorrelax{pdfpageheight}{%
- \scr@ifundefinedorrelax{pageheight}{%
- \@tempdima=\paperheight
- }{%
- \@tempdima=\pageheight
- }%
+ \scr@ifundefinedorrelax{pdfpageheight}{%
+ \scr@ifundefinedorrelax{pageheight}{%
+ \@tempdima=\paperheight
}{%
- \@tempdima=\pdfpageheight
+ \@tempdima=\pageheight
}%
- \@tempdima=\dimexpr \@tempdima
- -\topmargin-1in
- -\headheight-\headsep
- -\topskip+\baselineskip
- \relax
- \edef\slnc@textpos{\number\@tempdima}%
+ }{%
+ \@tempdima=\pdfpageheight
+ }%
+ \@tempdima=\dimexpr \@tempdima
+ -\topmargin-1in
+ -\headheight-\headsep
+ -\topskip+\baselineskip
+ \relax
+ \edef\slnc@textpos{\number\@tempdima}%
%<*trace>
- \PackageInfo{scrlayer-notecolumn}{%
- Top position is \slnc@textpos%
- }%
+ \PackageInfo{scrlayer-notecolumn}{%
+ Top position is \slnc@textpos%
+ }%
%</trace>
- \fi
- \ifnum\slnc@notepos>\slnc@textpos\relax
+ \fi
+ \ifnum\slnc@notepos>\slnc@textpos\relax
+ \PackageInfo{scrlayer-notecolumn}{%
+ Last note position before last text\MessageBreak
+ position.\MessageBreak
+ Need rerun to sync position%
+ }%
+ \else
+ \ifnum\slnc@notepos<\slnc@textpos\relax
+ \@tempdima=\numexpr \slnc@textpos-\slnc@notepos\relax sp
\PackageInfo{scrlayer-notecolumn}{%
- Last note position before last text\MessageBreak
- position.\MessageBreak
- Need rerun to sync position%
+ skipping \the\@tempdima\space to sync%
}%
- \else
- \ifnum\slnc@notepos<\slnc@textpos\relax
- \@tempdima=\numexpr \slnc@textpos-\slnc@notepos\relax sp
- \PackageInfo{scrlayer-notecolumn}{%
- skipping \the\@tempdima\space to sync%
- }%
- \vskip\@tempdima
- \fi
+ \vskip\@tempdima
\fi
\fi
- }%
+ \fi
}%
- \endgroup
- }%
+ }%
+ \endgroup
}
% \end{macrocode}
% \begin{macro}{\slnc@vadjust}
% \begin{macrocode}
-\scrlayerAddToInterface\slnc@vadjust{%
- \newcommand{\slnc@vadjust}[1]{%
- \@bsphack
- \vadjust{#1}%
- \@esphack
- }%
+\newcommand{\slnc@vadjust}[1]{%
+ \@bsphack
+ \vadjust{#1}%
+ \@esphack
}
%</body>
% \end{macrocode}
diff --git a/macros/latex/contrib/koma-script/source/scrlayer-scrpage.dtx b/macros/latex/contrib/koma-script/source/scrlayer-scrpage.dtx
index 22dfc382b8..6f223ad944 100644
--- a/macros/latex/contrib/koma-script/source/scrlayer-scrpage.dtx
+++ b/macros/latex/contrib/koma-script/source/scrlayer-scrpage.dtx
@@ -1,8 +1,7 @@
-% \CheckSum{2604}
% \iffalse^^A meta-comment
% ======================================================================
% scrlayer-scrpage.dtx
-% Copyright (c) Markus Kohm, 2012-2019
+% Copyright (c) Markus Kohm, 2012-2020
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
@@ -20,7 +19,7 @@
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrlayer-scrpage.dtx
-% Copyright (c) Markus Kohm, 2012-2019
+% Copyright (c) Markus Kohm, 2012-2020
%
% Diese Datei ist Teil der LaTeX2e KOMA-Script-Sammlung.
%
@@ -38,26 +37,8 @@
%
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
% ======================================================================
-% \fi^^A meta-comment
-%
-% \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^^A meta-comment
-%%% From File: $Id: scrlayer-scrpage.dtx 3390 2019-11-18 17:09:35Z kohm $
+%%% From File: $Id: scrlayer-scrpage.dtx 3531 2020-09-11 12:28:41Z kohm $
%<identify>%%% (run: identify)
%<init>%%% (run: init)
%<options>%%% (run: options)
@@ -66,9 +47,9 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2019-11-18 18:09:35 +0100 (Mon, 18 Nov 2019) $
+ \filedate$Date: 2020-09-11 14:28:41 +0200 (Fri, 11 Sep 2020) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
- \filerevision$Revision: 3390 $
+ \filerevision$Revision: 3531 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrlayer-scrpage.dtx}%
@@ -185,6 +166,7 @@
% \selectlanguage{english}
%
% \changes{v0.0}{2012/01/01}{start of interface}
+% \changes{v3.32}{2020/09/11}{do not use deprecated interface commands}
% \let\restorechapter\chapter
% \let\chapter\section
% \let\section\subsection
@@ -301,8 +283,6 @@
}%
\reserved@a
}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@headwidth}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@headwidth@default}
\KOMA@key{footwidth}{%
\begingroup
\sls@split@at@iicolons#1:::\@nil
@@ -317,8 +297,6 @@
}%
\reserved@a
}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@footwidth}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@footwidth@default}
% \end{macrocode}
% \begin{macro}{\sls@split@at@iicolons}
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A
@@ -332,24 +310,23 @@
% This little helper is used, e.g., by options \Option{headwidth} and
% \Option{footwidth}.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@split@at@iicolons{%
- \def\sls@split@at@iicolons#1:#2:#3:#4\@nil{%
- \Ifstr{#4}{}{}{%
- \Ifstr{#4}{:}{}{%
- \Ifstr{#4}{::}{}{%
- \PackageWarning{scrlayer}{extra `:' found!\MessageBreak
- You've used more than two colons at the argument\MessageBreak
- of a two value option.\MessageBreak
- The extra value(s) will be ignored%
- }%
+\newcommand\sls@split@at@iicolons{}
+\def\sls@split@at@iicolons#1:#2:#3:#4\@nil{%
+ \Ifstr{#4}{}{}{%
+ \Ifstr{#4}{:}{}{%
+ \Ifstr{#4}{::}{}{%
+ \PackageWarning{scrlayer}{extra `:' found!\MessageBreak
+ You've used more than two colons at the argument\MessageBreak
+ of a two value option.\MessageBreak
+ The extra value(s) will be ignored%
}%
}%
}%
- \def\reserved@a{#1}%
- \def\reserved@b{#2}%
- \def\reserved@c{#3}%
}%
-}
+ \def\reserved@a{#1}%
+ \def\reserved@b{#2}%
+ \def\reserved@c{#3}%
+}%
% \end{macrocode}
% \end{macro}%^^A \sls@split@at@iicolons
% \begin{macro}{\sls@set@hf@width}
@@ -364,62 +341,60 @@
% \end{description}
% This helper will generally set up width an offset of either head or footer.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@set@hf@width{%
- \newcommand*{\sls@set@hf@width}[4]{%
- \sls@settowidthof{\@tempdima}{#4}%
- \ifdim\@tempdima>\paperwidth
- \PackageWarning
- {scrlayer-scrpage}%
- {You've set width of #1 to a value\MessageBreak
- greater than width of page!\MessageBreak%
- I'll reduce width of #1 to width of page}%
- \setlength{\@tempdima}{\paperwidth}%
+\newcommand*{\sls@set@hf@width}[4]{%
+ \sls@settowidthof{\@tempdima}{#4}%
+ \ifdim\@tempdima>\paperwidth
+ \PackageWarning
+ {scrlayer-scrpage}%
+ {You've set width of #1 to a value\MessageBreak
+ greater than width of page!\MessageBreak%
+ I'll reduce width of #1 to width of page}%
+ \setlength{\@tempdima}{\paperwidth}%
+ \else
+ \ifdim\@tempdima<\z@
+ \PackageWarning
+ {scrlayer-scrpage}%
+ {You've set width of #1 to negative value!\MessageBreak%
+ I'll set it to 0pt}%
+ \setlength{\@tempdima}{\z@}%
+ \fi
+ \fi
+ \expandafter\edef\csname sls@#1width\endcsname{\the\@tempdima}%
+ \setlength{\@tempdima}{\textwidth}%
+ \addtolength{\@tempdima}{-\csname sls@#1width\endcsname}%
+ \Ifstr{#2}{}{%
+ \ifdim \csname sls@#1width\endcsname
+ = \dimexpr \textwidth+\marginparwidth+\marginparsep\relax
+ \setlength{\@tempdimb}{\z@}
\else
- \ifdim\@tempdima<\z@
- \PackageWarning
- {scrlayer-scrpage}%
- {You've set width of #1 to negative value!\MessageBreak%
- I'll set it to 0pt}%
- \setlength{\@tempdima}{\z@}%
- \fi
- \fi
- \expandafter\edef\csname sls@#1width\endcsname{\the\@tempdima}%
- \setlength{\@tempdima}{\textwidth}%
- \addtolength{\@tempdima}{-\csname sls@#1width\endcsname}%
- \Ifstr{#2}{}{%
- \ifdim \csname sls@#1width\endcsname
- = \dimexpr \textwidth+\marginparwidth+\marginparsep\relax
- \setlength{\@tempdimb}{\z@}
+ \if@twoside
+ \setlength{\@tempdimb}{.3333333333\@tempdima}%
\else
- \if@twoside
- \setlength{\@tempdimb}{.3333333333\@tempdima}%
- \else
- \setlength{\@tempdimb}{.5\@tempdima}%
- \fi
+ \setlength{\@tempdimb}{.5\@tempdima}%
\fi
- }{%
- \sls@settowidthof{\@tempdimb}{#2}%
- }%
- \Ifstr{#3}{}{%
- \addtolength{\@tempdima}{-\@tempdimb}%
- }{%
- \sls@settowidthof{\@tempdima}{#3}%
- \setlength{\@tempdima}{-\@tempdima}%
- }%
- \ifdim\@tempdimb<\z@
- \setlength{\@tempdimb}{-\@tempdimb}%
- \expandafter\edef\csname sls@odd#1shift\endcsname{-\the\@tempdimb}%
- \else
- \expandafter\edef\csname sls@odd#1shift\endcsname{\the\@tempdimb}%
- \fi
- \ifdim\@tempdima<\z@
- \setlength{\@tempdima}{-\@tempdima}%
- \expandafter\edef\csname sls@even#1shift\endcsname{-\the\@tempdima}%
- \else
- \expandafter\edef\csname sls@even#1shift\endcsname{\the\@tempdima}%
\fi
+ }{%
+ \sls@settowidthof{\@tempdimb}{#2}%
}%
-}
+ \Ifstr{#3}{}{%
+ \addtolength{\@tempdima}{-\@tempdimb}%
+ }{%
+ \sls@settowidthof{\@tempdima}{#3}%
+ \setlength{\@tempdima}{-\@tempdima}%
+ }%
+ \ifdim\@tempdimb<\z@
+ \setlength{\@tempdimb}{-\@tempdimb}%
+ \expandafter\edef\csname sls@odd#1shift\endcsname{-\the\@tempdimb}%
+ \else
+ \expandafter\edef\csname sls@odd#1shift\endcsname{\the\@tempdimb}%
+ \fi
+ \ifdim\@tempdima<\z@
+ \setlength{\@tempdima}{-\@tempdima}%
+ \expandafter\edef\csname sls@even#1shift\endcsname{-\the\@tempdima}%
+ \else
+ \expandafter\edef\csname sls@even#1shift\endcsname{\the\@tempdima}%
+ \fi
+}%
% \end{macrocode}
% \end{macro}%^^A \sls@set@hf@width
% \begin{macro}{\sls@headwidth}
@@ -432,28 +407,24 @@
% also used by the options and therefore need to be initialised before option
% usage.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@headwidth{%
- \scr@ifundefinedorrelax{@headwidth}{%
- \newcommand*{\sls@headwidth}{\textwidth}%
- \KOMA@kav@add{.scrlayer-scrpage.sty}{headwidth}{\textwidth:0pt:0pt}%
- }{%
- \newcommand*{\sls@headwidth}{\@headwidth}%
- \KOMA@kav@xadd{.scrlayer-scrpage.sty}{headwidth}{\@headwidth:0pt:0pt}%
- }%
-}
-\scrlayerAddToInterface\sls@oddheadshift{\newcommand*{\sls@oddheadshift}{0pt}}
-\scrlayerAddToInterface\sls@evenheadshift{\newcommand*{\sls@evenheadshift}{0pt}}
-\scrlayerAddToInterface\sls@footwidth{%
- \scr@ifundefinedorrelax{@footwidth}{%
- \newcommand*{\sls@footwidth}{\textwidth}%
- \KOMA@kav@add{.scrlayer-scrpage.sty}{footwidth}{\textwidth:0pt:0pt}
- }{%
- \newcommand*{\sls@footwidth}{\@footwidth}%
- \KOMA@kav@xadd{.scrlayer-scrpage.sty}{footwidth}{\@footwidth:0pt:0pt}
- }%
-}
-\scrlayerAddToInterface\sls@oddfootshift{\newcommand*{\sls@oddfootshift}{0pt}}
-\scrlayerAddToInterface\sls@evenfootshift{\newcommand*{\sls@evenfootshift}{0pt}}
+\scr@ifundefinedorrelax{@headwidth}{%
+ \newcommand*{\sls@headwidth}{\textwidth}%
+ \KOMA@kav@add{.scrlayer-scrpage.sty}{headwidth}{\textwidth:0pt:0pt}%
+}{%
+ \newcommand*{\sls@headwidth}{\@headwidth}%
+ \KOMA@kav@xadd{.scrlayer-scrpage.sty}{headwidth}{\@headwidth:0pt:0pt}%
+}%
+\newcommand*{\sls@oddheadshift}{0pt}
+\newcommand*{\sls@evenheadshift}{0pt}
+\scr@ifundefinedorrelax{@footwidth}{%
+ \newcommand*{\sls@footwidth}{\textwidth}%
+ \KOMA@kav@add{.scrlayer-scrpage.sty}{footwidth}{\textwidth:0pt:0pt}
+}{%
+ \newcommand*{\sls@footwidth}{\@footwidth}%
+ \KOMA@kav@xadd{.scrlayer-scrpage.sty}{footwidth}{\@footwidth:0pt:0pt}
+}%
+\newcommand*{\sls@oddfootshift}{0pt}
+\newcommand*{\sls@evenfootshift}{0pt}
% \end{macrocode}
% \end{macro}%^^A \sls@headwidth
% \end{macro}%^^A \sls@oddheadshift
@@ -474,50 +445,48 @@
% expression. But it cannot be both a dimensional expression using symbolic
% values!
% \begin{macrocode}
-\scrlayerAddToInterface\sls@settotwidthof{%
- \newcommand*{\sls@settowidthof}[2]{%
- \Ifstr{#2}{paper}{%
- \setlength{#1}{\paperwidth}%
+\newcommand*{\sls@settowidthof}[2]{%
+ \Ifstr{#2}{paper}{%
+ \setlength{#1}{\paperwidth}%
+ }{%
+ \Ifstr{#2}{text}{%
+ \setlength{#1}{\textwidth}%
}{%
- \Ifstr{#2}{text}{%
- \setlength{#1}{\textwidth}%
+ \Ifstr{#2}{marginpar}{%
+ \setlength{#1}{\dimexpr \marginparwidth+\marginparsep\relax}%
}{%
- \Ifstr{#2}{marginpar}{%
- \setlength{#1}{\dimexpr \marginparwidth+\marginparsep\relax}%
+ \Ifstr{#2}{textwithmarginpar}{%
+ \setlength{#1}{\dimexpr\textwidth
+ +\marginparwidth
+ +\marginparsep\relax}%
}{%
- \Ifstr{#2}{textwithmarginpar}{%
- \setlength{#1}{\dimexpr\textwidth
- +\marginparwidth
- +\marginparsep\relax}%
+ \Ifstr{#2}{head}{%
+ \setlength{#1}{\sls@headwidth}%
}{%
- \Ifstr{#2}{head}{%
- \setlength{#1}{\sls@headwidth}%
+ \Ifstr{#2}{foot}{%
+ \setlength{#1}{\sls@footwidth}%
}{%
- \Ifstr{#2}{foot}{%
- \setlength{#1}{\sls@footwidth}%
+ \Ifstr{#2}{headtopline}{%
+ \setlength{#1}{\sls@headabove@linelength}%
}{%
- \Ifstr{#2}{headtopline}{%
- \setlength{#1}{\sls@headabove@linelength}%
+ \Ifstr{#2}{headsepline}{%
+ \setlength{#1}{\sls@headbelow@linelength}%
}{%
- \Ifstr{#2}{headsepline}{%
- \setlength{#1}{\sls@headbelow@linelength}%
+ \Ifstr{#2}{footsepline}{%
+ \setlength{#1}{\sls@footabove@linelength}%
}{%
- \Ifstr{#2}{footsepline}{%
- \setlength{#1}{\sls@footabove@linelength}%
+ \Ifstr{#2}{footbotline}{%
+ \setlength{#1}{\sls@footbelow@linelength}%
}{%
- \Ifstr{#2}{footbotline}{%
- \setlength{#1}{\sls@footbelow@linelength}%
+ \Ifstr{#2}{page}{%
+ \setlength{#1}{\paperwidth}%
+ \begingroup
+ \expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname ta@bcor\endcsname\relax\else
+ \addtolength{#1}{-\ta@bcor}%
+ \fi
}{%
- \Ifstr{#2}{page}{%
- \setlength{#1}{\paperwidth}%
- \begingroup
- \expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname ta@bcor\endcsname\relax\else
- \addtolength{#1}{-\ta@bcor}%
- \fi
- }{%
- \setlength{#1}{\dimexpr #2\relax}%
- }%
+ \setlength{#1}{\dimexpr #2\relax}%
}%
}%
}%
@@ -529,21 +498,19 @@
}%
}%
}%
-}
-\scrlayerAddToInterface\sls@deftowidthof{%
- \newcommand*{\sls@deftowidthof}[2]{%
- \Ifstr{#2}{autohead}{%
- \expandafter\def\csname #1\endcsname{\sls@headwidth}%
+}%
+\newcommand*{\sls@deftowidthof}[2]{%
+ \Ifstr{#2}{autohead}{%
+ \expandafter\def\csname #1\endcsname{\sls@headwidth}%
+ }{%
+ \Ifstr{#2}{autofoot}{%
+ \expandafter\def\csname #1\endcsname{\sls@footwidth}%
}{%
- \Ifstr{#2}{autofoot}{%
- \expandafter\def\csname #1\endcsname{\sls@footwidth}%
- }{%
- \sls@settowidthof{\@tempdima}{#2}%
- \expandafter\edef\csname #1\endcsname{\the\@tempdima}%
- }%
+ \sls@settowidthof{\@tempdima}{#2}%
+ \expandafter\edef\csname #1\endcsname{\the\@tempdima}%
}%
}%
-}
+}%
%</options>
% \end{macrocode}
% \end{macro}%^^A \sls@deftowidthof
@@ -556,16 +523,12 @@
% For compatibility with \Package{scrpage2}, map the commands to the options:
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\setheadwidth{%
- \newcommand*{\setheadwidth}[2][]{%
- \KOMAoptions{headwidth=#2:#1}%
- }%
-}
-\scrlayerAddToInterface\setfootwidth{%
- \newcommand*{\setfootwidth}[2][]{%
- \KOMAoptions{footwidth=#2:#1}%
- }%
-}
+\newcommand*{\setheadwidth}[2][]{%
+ \KOMAoptions{headwidth=#2:#1}%
+}%
+\newcommand*{\setfootwidth}[2][]{%
+ \KOMAoptions{footwidth=#2:#1}%
+}%
%</body>
% \end{macrocode}
% \end{macro}%^^A \setheadwidth
@@ -611,23 +574,15 @@
\KOMA@key{headtopline}[:]{%
\sls@set@values[headtopline]{head}{above}{#1}%
}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@headtopline}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@headtopline@default}
\KOMA@key{headsepline}[:]{%
\sls@set@values[headsepline]{head}{below}{#1}%
}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@headsepline}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@headsepline@default}
\KOMA@key{footsepline}[:]{%
\sls@set@values[footsepline]{foot}{above}{#1}%
}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@footsepline}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@footsepline@default}
\KOMA@key{footbotline}[:]{%
\sls@set@values[footbotline]{foot}{below}{#1}%
}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@footbotline}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@footbotline@default}
% \end{macrocode}
% \begin{macro}{\sls@set@values}
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A
@@ -643,65 +598,63 @@
% Helper macros for the options to set two macros by two values of one
% option. The two values are separated by a colon.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@set@values{%
- \newcommand*{\sls@set@values}[4][]{%
- \begingroup
- \Ifstr{#1}{}{%
- \FamilyKeyStateUnknown
- }{%
- \KOMA@set@ifkey{#1}{@tempswa}{#4}%
- }%
- \ifx\FamilyKeyState\FamilyKeyStateProcessed
- \if@tempswa
- \edef\reserved@b{%
- \noexpand\endgroup
- \noexpand\@namedef{sls@#2#3@linethickness}{.4pt}%
- \noexpand\@namedef{sls@#2#3@linelength}{%
- \expandafter\noexpand\csname sls@#2width\endcsname
- }%
- }%
- \else
- \def\reserved@b{%
- \endgroup
- \@namedef{sls@#2#3@linethickness}{0pt}%
- \@namedef{sls@#2#3@linelength}{0pt}%
+\newcommand*{\sls@set@values}[4][]{%
+ \begingroup
+ \Ifstr{#1}{}{%
+ \FamilyKeyStateUnknown
+ }{%
+ \KOMA@set@ifkey{#1}{@tempswa}{#4}%
+ }%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \if@tempswa
+ \edef\reserved@b{%
+ \noexpand\endgroup
+ \noexpand\@namedef{sls@#2#3@linethickness}{.4pt}%
+ \noexpand\@namedef{sls@#2#3@linelength}{%
+ \expandafter\noexpand\csname sls@#2width\endcsname
}%
- \fi
+ }%
\else
- \let\reserved@a\@empty
- \let\reserved@b\@empty
- \sls@split@at@colon#4::\@nil
- \ifx\reserved@a\@empty
- \def\reserved@a{\endgroup\@namedef{sls@#2#3@linethickness}{.4pt}}%
- \else
- \setlength{\@tempdima}{\dimexpr\reserved@a\relax}%
- \edef\reserved@a{%
- \noexpand\endgroup
- \noexpand\@namedef{sls@#2#3@linethickness}{\the\@tempdima}%
- }%
- \fi
- \ifx\reserved@b\@empty
- \def\reserved@b{%
- \reserved@a
- \@namedef{sls@#2#3@linelength}{\@nameuse{sls@#2width}}%
- }%
- \else
- \edef\reserved@b{%
- \noexpand\reserved@a
- \noexpand\sls@deftowidthof{sls@#2#3@linelength}{\reserved@b}%
- }%
- \fi
+ \def\reserved@b{%
+ \endgroup
+ \@namedef{sls@#2#3@linethickness}{0pt}%
+ \@namedef{sls@#2#3@linelength}{0pt}%
+ }%
\fi
- \reserved@b
- \FamilyKeyStateProcessed
- \Ifstr{#1}{}{}{%
- \KOMA@kav@xreplacevalue{.scrlayer-scrpage.sty}{#1}{%
- \csname sls@#2#3@linethickness\endcsname
- :\csname sls@#2#3@linelength\endcsname
- }%
+ \else
+ \let\reserved@a\@empty
+ \let\reserved@b\@empty
+ \sls@split@at@colon#4::\@nil
+ \ifx\reserved@a\@empty
+ \def\reserved@a{\endgroup\@namedef{sls@#2#3@linethickness}{.4pt}}%
+ \else
+ \setlength{\@tempdima}{\dimexpr\reserved@a\relax}%
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\@namedef{sls@#2#3@linethickness}{\the\@tempdima}%
+ }%
+ \fi
+ \ifx\reserved@b\@empty
+ \def\reserved@b{%
+ \reserved@a
+ \@namedef{sls@#2#3@linelength}{\@nameuse{sls@#2width}}%
+ }%
+ \else
+ \edef\reserved@b{%
+ \noexpand\reserved@a
+ \noexpand\sls@deftowidthof{sls@#2#3@linelength}{\reserved@b}%
+ }%
+ \fi
+ \fi
+ \reserved@b
+ \FamilyKeyStateProcessed
+ \Ifstr{#1}{}{}{%
+ \KOMA@kav@xreplacevalue{.scrlayer-scrpage.sty}{#1}{%
+ \csname sls@#2#3@linethickness\endcsname
+ :\csname sls@#2#3@linelength\endcsname
}%
}%
-}
+}%
% \end{macrocode}
% \end{macro}%^^A \sls@set@values
% \begin{macro}{\sls@split@at@colon}
@@ -716,21 +669,20 @@
% This little helper is used, e.g., by options \Option{headwidth} and
% \Option{footwidth}.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@split@at@colon{%
- \def\sls@split@at@colon#1:#2:#3\@nil{%
- \Ifstr{#3}{}{}{%
- \Ifstr{#3}{:}{}{%
- \PackageWarning{scrlayer}{extra `:' found!\MessageBreak
- You've used more than one colon at the argument\MessageBreak
- of a two value option.\MessageBreak
- The extra value(s) will be ignored%
- }%
+\newcommand*{\sls@split@at@colon}{}
+\def\sls@split@at@colon#1:#2:#3\@nil{%
+ \Ifstr{#3}{}{}{%
+ \Ifstr{#3}{:}{}{%
+ \PackageWarning{scrlayer}{extra `:' found!\MessageBreak
+ You've used more than one colon at the argument\MessageBreak
+ of a two value option.\MessageBreak
+ The extra value(s) will be ignored%
}%
}%
- \def\reserved@a{#1}%
- \def\reserved@b{#2}%
}%
-}
+ \def\reserved@a{#1}%
+ \def\reserved@b{#2}%
+}%
% \end{macrocode}
% \end{macro}%^^A \sls@split@at@colon
% \begin{macro}{\sls@headabove@linelength}
@@ -745,42 +697,30 @@
% use macros. Those are also used by the options and therefore need to be
% initialised before option usage.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@headabove@linelength{%
- \newcommand*{\sls@headabove@linelength}{\sls@headwidth}%
-}
-\scrlayerAddToInterface\sls@headabove{%
- \newcommand*{\sls@headabove@linethickness}{0pt}%
-}
+\newcommand*{\sls@headabove@linelength}{\sls@headwidth}%
+\newcommand*{\sls@headabove@linethickness}{0pt}%
\KOMA@kav@xadd{.scrlayer-scrpage.sty}{headtopline}{%
\expandafter\noexpand\sls@headabove@linethickness:%
- \expandafter\noexpand\sls@headabove@linelength}
-\scrlayerAddToInterface\sls@headbelow@linelength{%
- \newcommand*{\sls@headbelow@linelength}{\sls@headwidth}%
-}
-\scrlayerAddToInterface\sls@headbelow@linethickness{%
- \newcommand*{\sls@headbelow@linethickness}{0pt}%
+ \expandafter\noexpand\sls@headabove@linelength
}
+\newcommand*{\sls@headbelow@linelength}{\sls@headwidth}%
+\newcommand*{\sls@headbelow@linethickness}{0pt}%
\KOMA@kav@xadd{.scrlayer-scrpage.sty}{headsepline}{%
\expandafter\noexpand\sls@headbelow@linethickness:%
- \expandafter\noexpand\sls@headbelow@linelength}
-\scrlayerAddToInterface\sls@footabove@linelength{%
- \newcommand*{\sls@footabove@linelength}{\sls@footwidth}%
-}
-\scrlayerAddToInterface\sls@footabove@linethickness{%
- \newcommand*{\sls@footabove@linethickness}{0pt}%
+ \expandafter\noexpand\sls@headbelow@linelength
}
+\newcommand*{\sls@footabove@linelength}{\sls@footwidth}%
+\newcommand*{\sls@footabove@linethickness}{0pt}%
\KOMA@kav@xadd{.scrlayer-scrpage.sty}{footsepline}{%
\expandafter\noexpand\sls@footabove@linethickness:%
- \expandafter\noexpand\sls@footabove@linelength}
-\scrlayerAddToInterface\sls@footbelow@linelength{%
- \newcommand*{\sls@footbelow@linelength}{\sls@footwidth}%
-}
-\scrlayerAddToInterface\sls@footbelow@linethickness{%
- \newcommand*{\sls@footbelow@linethickness}{0pt}%
+ \expandafter\noexpand\sls@footabove@linelength
}
+\newcommand*{\sls@footbelow@linelength}{\sls@footwidth}%
+\newcommand*{\sls@footbelow@linethickness}{0pt}%
\KOMA@kav@xadd{.scrlayer-scrpage.sty}{footbotline}{%
\expandafter\noexpand\sls@footbelow@linethickness:%
- \expandafter\noexpand\sls@footbelow@linelength}
+ \expandafter\noexpand\sls@footbelow@linelength
+}
%</options>
% \end{macrocode}
% \end{macro}%^^A \sls@footbelow@linethickness
@@ -810,38 +750,10 @@
% While these only switches the rule on or off, we need only some switches.
% \begin{macrocode}
%<*options>
-\scrlayerAddCsToInterface{ifsls@plain@head@above@line}{%
- \KOMA@ifkey{plainheadtopline}{sls@plain@head@above@line}%
- \scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@plainheadtopline}%
- \scrlayer@AddCsToInterface{%
- KV@KOMA.scrlayer-scrpage.sty@plainheadtopline@default}%
- \scrlayer@AddCsToInterface{sls@plain@head@above@linetrue}
- \scrlayer@AddCsToInterface{sls@plain@head@above@linefalse}
-}
-\scrlayerAddCsToInterface{ifsls@plain@head@sbelow@line}{%
- \KOMA@ifkey{plainheadsepline}{sls@plain@head@below@line}%
- \scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@plainheadsepline}%
- \scrlayer@AddCsToInterface{%
- KV@KOMA.scrlayer-scrpage.sty@plainheadsepline@default}%
- \scrlayer@AddCsToInterface{sls@plain@head@below@linetrue}%
- \scrlayer@AddCsToInterface{sls@plain@head@below@linefalse}%
-}
-\scrlayerAddCsToInterface{ifsls@plain@foot@above@line}{%
- \KOMA@ifkey{plainfootsepline}{sls@plain@foot@above@line}%
- \scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@plainfootsepline}%
- \scrlayer@AddCsToInterface{%
- KV@KOMA.scrlayer-scrpage.sty@plainfootsepline@default}%
- \scrlayer@AddCsToInterface{sls@plain@foot@above@linetrue}%
- \scrlayer@AddCsToInterface{sls@plain@foot@above@linefalse}%
-}
-\scrlayerAddCsToInterface{ifsls@plain@foot@below@line}{%
- \KOMA@ifkey{plainfootbotline}{sls@plain@foot@below@line}%
- \scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@plainfootbotline}%
- \scrlayer@AddCsToInterface{%
- KV@KOMA.scrlayer-scrpage.sty@plainfootbotline@default}%
- \scrlayer@AddCsToInterface{sls@plain@foot@below@linetrue}%
- \scrlayer@AddCsToInterface{sls@plain@foot@below@linefalse}%
-}
+\KOMA@ifkey{plainheadtopline}{sls@plain@head@above@line}%
+\KOMA@ifkey{plainheadsepline}{sls@plain@head@below@line}%
+\KOMA@ifkey{plainfootsepline}{sls@plain@foot@above@line}%
+\KOMA@ifkey{plainfootbotline}{sls@plain@foot@below@line}%
%</options>
% \end{macrocode}
% \end{macro}%^^A \ifsls@plain@foot@below@line
@@ -866,9 +778,7 @@
% may help.
% \begin{macrocode}
%<*options>
-\scrlayerAddToInterface\sls@hfline@adjust{%
- \newcommand*{\sls@hfline@adjust}{0}%
-}
+\newcommand*{\sls@hfline@adjust}{0}%
\KOMA@kav@add{.scrlayer-scrpage.sty}{ilines}{}
\KOMA@key{ilines}[]{%
\ifx\relax#1\relax
@@ -882,8 +792,6 @@
\def\FamilyKeyStateProcessed{unexpected value}%
\fi
}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@ilines}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@ilines@default}
\KOMA@key{clines}[]{%
\ifx\relax#1\relax
\renewcommand*{\sls@hfline@adjust}{1}%
@@ -896,8 +804,6 @@
\def\FamilyKeyStateProcessed{unexpected value}%
\fi
}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@clines}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@clines@default}
\KOMA@key{olines}[]{%
\ifx\relax#1\relax
\renewcommand*{\sls@hfline@adjust}{2}%
@@ -910,8 +816,6 @@
\def\FamilyKeyStateProcessed{unexpected value}%
\fi
}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@olines}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@olines@default}
\KOMA@kav@add{.scrlayer-scrpage.sty}{ilines}{}
%</options>
% \end{macrocode}
@@ -935,18 +839,10 @@
% \end{description}
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\setheadtopline{%
- \newcommand*{\setheadtopline}{\sls@setline{head}{above}}%
-}
-\scrlayerAddToInterface\setheadsepline{%
- \newcommand*{\setheadsepline}{\sls@setline{head}{below}}%
-}
-\scrlayerAddToInterface\setfootsepline{%
- \newcommand*{\setfootsepline}{\sls@setline{foot}{above}}%
-}
-\scrlayerAddToInterface\setfootbotline{%
- \newcommand*{\setfootbotline}{\sls@setline{foot}{below}}%
-}
+\newcommand*{\setheadtopline}{\sls@setline{head}{above}}%
+\newcommand*{\setheadsepline}{\sls@setline{head}{below}}%
+\newcommand*{\setfootsepline}{\sls@setline{foot}{above}}%
+\newcommand*{\setfootbotline}{\sls@setline{foot}{below}}%
% \end{macrocode}
% \begin{macro}{\sls@setline}
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
@@ -964,78 +860,72 @@
% Helper to set up the line attributes processing the parameters of the
% commands above.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@setline{%
- \newcommand*\sls@setline[2]{%
- \kernel@ifnextchar[%]
- {\sls@@setline{#1}{#2}}{\sls@@@setline{#1#2}}%
- }%
-}
-\scrlayerAddToInterface\sls@@setline{%
- \def\sls@@setline#1#2[#3]{%
- \Ifstr{#3}{auto}{%
- \sls@deftowidthof{sls@#1#2@linelength}{#3#1}%
- }{%
- \sls@deftowidthof{sls@#1#2@linelength}{#3}%
- }%
- \sls@@@setline{#1#2}%
+\newcommand*\sls@setline[2]{%
+ \kernel@ifnextchar[%]
+ {\sls@@setline{#1}{#2}}{\sls@@@setline{#1#2}}%
+}%
+\newcommand*{\sls@@setline}{}
+\def\sls@@setline#1#2[#3]{%
+ \Ifstr{#3}{auto}{%
+ \sls@deftowidthof{sls@#1#2@linelength}{#3#1}%
+ }{%
+ \sls@deftowidthof{sls@#1#2@linelength}{#3}%
}%
-}
-\scrlayerAddToInterface\sls@@@setline{%
- \def\sls@@@setline#1#2{%
- \edef\@tempa{#2}\edef\@tempb{current}%
- \Ifstr{#2}{}{}{%
- \Ifstr{#2}{current}{}{%
- \setlength{\@tempdima}{#2}%
- \Ifstr{#1}{headabove}{%
+ \sls@@@setline{#1#2}%
+}%
+\newcommand*{\sls@@@setline}[2]{%
+ \edef\@tempa{#2}\edef\@tempb{current}%
+ \Ifstr{#2}{}{}{%
+ \Ifstr{#2}{current}{}{%
+ \setlength{\@tempdima}{#2}%
+ \Ifstr{#1}{headabove}{%
+ \KOMAExecuteOptions[.scrlayer-scrpage.sty]%
+ {headtopline=\@tempdima:\csname sls@#1@linelength\endcsname}%
+ }{\Ifstr{#1}{headbelow}{%
\KOMAExecuteOptions[.scrlayer-scrpage.sty]%
- {headtopline=\@tempdima:\csname sls@#1@linelength\endcsname}%
- }{\Ifstr{#1}{headbelow}{%
+ {headsepline=\@tempdima:\csname sls@#1@linelength\endcsname}%
+ }{%
+ \Ifstr{#1}{footabove}{%
\KOMAExecuteOptions[.scrlayer-scrpage.sty]%
- {headsepline=\@tempdima:\csname sls@#1@linelength\endcsname}%
+ {footsepline=\@tempdima:\csname sls@#1@linelength\endcsname}%
}{%
- \Ifstr{#1}{footabove}{%
- \KOMAExecuteOptions[.scrlayer-scrpage.sty]%
- {footsepline=\@tempdima:\csname sls@#1@linelength\endcsname}%
- }{%
- \KOMAExecuteOptions[.scrlayer-scrpage.sty]%
- {footbotline=\@tempdima:\csname sls@#1@linelength\endcsname}%
- }%
+ \KOMAExecuteOptions[.scrlayer-scrpage.sty]%
+ {footbotline=\@tempdima:\csname sls@#1@linelength\endcsname}%
}%
}%
}%
}%
- \PackageWarning{scrlayer-scrpage}{%
- Command deprecated!\MessageBreak
- Usage of `\string\setheadtopline',
- `\string\setheadsepline',\MessageBreak
- `\string\setfootsepline', and `\string\setfootbotline'\MessageBreak
- became deprecated with scrlayer-scrpage.\MessageBreak
- You should use KOMA-Script options\MessageBreak
- `headsepline', `headtopline', `footsepline',\MessageBreak
- or `footbotline' with values\MessageBreak
- `<line thickness>:<line length>' to setup\MessageBreak
- the line length and thickness, and\MessageBreak
- `\string\setkomafont' or `\string\addtokomafont' to\MessageBreak
- setup the colour%
- }%
- \kernel@ifnextchar[%]
- {%
- \sls@@@@setline{#1}%
- }{%
- }%
}%
-}
-\scrlayerAddToInterface\sls@@@@setline{%
- \def\sls@@@@setline#1[#2]{%
- \Ifstr{#1}{headabove}{\setkomafont{headtopline}{#2}}{%
- \Ifstr{#1}{headbelow}{\setkomafont{headsepline}{#2}}{%
- \Ifstr{#1}{footabove}{\setkomafont{footsepline}{#2}}{%
- \setkomafont{footbotline}{#2}%
- }%
+ \PackageWarning{scrlayer-scrpage}{%
+ Command deprecated!\MessageBreak
+ Usage of `\string\setheadtopline',
+ `\string\setheadsepline',\MessageBreak
+ `\string\setfootsepline', and `\string\setfootbotline'\MessageBreak
+ became deprecated with scrlayer-scrpage.\MessageBreak
+ You should use KOMA-Script options\MessageBreak
+ `headsepline', `headtopline', `footsepline',\MessageBreak
+ or `footbotline' with values\MessageBreak
+ `<line thickness>:<line length>' to setup\MessageBreak
+ the line length and thickness, and\MessageBreak
+ `\string\setkomafont' or `\string\addtokomafont' to\MessageBreak
+ setup the colour%
+ }%
+ \kernel@ifnextchar[%]
+ {%
+ \sls@@@@setline{#1}%
+ }{%
+ }%
+}%
+\newcommand*{\sls@@@@setline}{}
+\def\sls@@@@setline#1[#2]{%
+ \Ifstr{#1}{headabove}{\setkomafont{headtopline}{#2}}{%
+ \Ifstr{#1}{headbelow}{\setkomafont{headsepline}{#2}}{%
+ \Ifstr{#1}{footabove}{\setkomafont{footsepline}{#2}}{%
+ \setkomafont{footbotline}{#2}%
}%
}%
}%
-}
+}%
% \end{macrocode}
% \end{macro}%^^A \sls@setline
% \end{macro}%^^A \sls@@setline
@@ -1050,32 +940,16 @@
% become only part of the interface if they are not.
% \begin{macrocode}
\@ifundefined{scr@fnt@headtopline}{%
- \@ifundefined{@headtoplinefont}{%
- \scrlayer@AddCsToInterface{@headtoplinefont}%
- }{}%
\newkomafont{headtopline}{}%
- \scrlayer@AddCsToInterface{scr@fnt@headtopline}%
}{}
\@ifundefined{scr@fnt@headsepline}{%
- \@ifundefined{@headseplinefont}{%
- \scrlayer@AddCsToInterface{@headseplinefont}%
- }{}%
\newkomafont{headsepline}{}%
- \scrlayer@AddCsToInterface{scr@fnt@headsepline}%
}{}
\@ifundefined{scr@fnt@footsepline}{%
- \@ifundefined{@footseplinefont}{%
- \scrlayer@AddCsToInterface{@footseplinefont}%
- }{}%
\newkomafont{footsepline}{}%
- \scrlayer@AddCsToInterface{scr@fnt@footsepline}%
}{}
\@ifundefined{scr@fnt@footbotline}{%
- \@ifundefined{@footbotlinefont}{%
- \scrlayer@AddCsToInterface{@footbotlinefont}%
- }{}%
\newkomafont{footbotline}{}%
- \scrlayer@AddCsToInterface{scr@fnt@footbotline}%
}{}
%</body>
% \end{macrocode}
@@ -1256,7 +1130,6 @@
\KOMA@kav@replacevalue{.scrlayer-scrpage.sty}{pagestyleset}{#1}%
}%
}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@pagestyleset}
% \end{macrocode}
% \begin{macro}{\sls@ps@style@standard}
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A
@@ -1264,63 +1137,59 @@
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A
% These are the predefined page style sets.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@ps@style@standard{%
- \newcommand*{\sls@ps@style@standard}{%
- \let\MakeMarkcase\MakeUppercase
- \scrlayer@AtEndOfPackage{%
- \pagestyle{scrheadings}%
- \clearpairofpagestyles
- \ihead{\headmark}%
- \ohead{\pagemark}%
- \cfoot[\if@twoside\else\pagemark\fi]{}%
- }%
+\newcommand*{\sls@ps@style@standard}{%
+ \let\MakeMarkcase\MakeUppercase
+ \scrlayer@AtEndOfPackage{%
+ \pagestyle{scrheadings}%
+ \clearpairofpagestyles
+ \ihead{\headmark}%
+ \ohead{\pagemark}%
+ \cfoot[\if@twoside\else\pagemark\fi]{}%
}%
-}
-\scrlayerAddCsToInterface{sls@ps@style@KOMA-Script}{%
- \@namedef{sls@ps@style@KOMA-Script}{%
- \let\MakeMarkcase\@firstofone
- \scrlayer@AtEndOfPackage{%
- \pagestyle{scrheadings}%
- \clearpairofpagestyles
- \ohead{\if@twoside\headmark\fi}%
- \chead{\if@twoside\else\headmark\fi}%
- \ofoot[\if@twoside\pagemark\fi]{\if@twoside\pagemark\fi}%
- \cfoot[\if@twoside\else\pagemark\fi]{\if@twoside\else\pagemark\fi}%
- \scr@ifundefinedorrelax{KOMAClassName}{}{%
- \Ifstr{\KOMAClassName}{scrlttr2}{%
+}%
+\expandafter\newcommand\expandafter*\csname sls@ps@style@KOMA-Script\endcsname{%
+ \let\MakeMarkcase\@firstofone
+ \scrlayer@AtEndOfPackage{%
+ \pagestyle{scrheadings}%
+ \clearpairofpagestyles
+ \ohead{\if@twoside\headmark\fi}%
+ \chead{\if@twoside\else\headmark\fi}%
+ \ofoot[\if@twoside\pagemark\fi]{\if@twoside\pagemark\fi}%
+ \cfoot[\if@twoside\else\pagemark\fi]{\if@twoside\else\pagemark\fi}%
+ \scr@ifundefinedorrelax{KOMAClassName}{}{%
+ \Ifstr{\KOMAClassName}{scrlttr2}{%
% \end{macrocode}
% We are using \Class{scrlttr2}, so we have to initialise the page style
% different:
% \changes{v3.18}{2015/06/24}{missing \cs{lofoot} and \cs{rofoot} added}%^^A
% \begin{macrocode}
- \clearpairofpagestyles
- \lehead[\ifnum\@pageat=\z@\pagemark\fi]
- {\ifnum\@pageat=\z@\pagemark\else\leftmark\fi}%
- \lohead[\ifnum\@pageat=\z@\pagemark\fi]
- {\ifnum\@pageat=\z@\pagemark\else\leftmark\fi}%
- \chead[\ifnum\@pageat=\@ne\pagemark\fi]
- {\ifcase\@pageat \rightmark\or \pagemark\or \rightmark\fi}%
- \rehead[\ifnum\@pageat=\tw@\pagemark\fi]
- {\ifcase\@pageat \leftmark\or \rightmark\or \pagemark
- \else \rightmark\fi}%
- \rohead[\ifnum\@pageat=\tw@\pagemark\fi]
- {\ifcase\@pageat \leftmark\or \rightmark\or \pagemark
- \else \rightmark\fi}%
- \lefoot[\ifnum\@pageat=\thr@@\pagemark\fi]
- {\ifnum\@pageat=\thr@@\pagemark\fi}%
- \lofoot[\ifnum\@pageat=\thr@@\pagemark\fi]
- {\ifnum\@pageat=\thr@@\pagemark\fi}%
- \cfoot[\ifnum\@pageat=4 \pagemark\fi]
- {\ifnum\@pageat=4 \pagemark\fi}%
- \refoot[\ifnum\@pageat=5 \pagemark\fi]
- {\ifnum\@pageat=5 \pagemark\fi}%
- \rofoot[\ifnum\@pageat=5 \pagemark\fi]
- {\ifnum\@pageat=5 \pagemark\fi}%
- }{}%
- }%
+ \clearpairofpagestyles
+ \lehead[\ifnum\@pageat=\z@\pagemark\fi]
+ {\ifnum\@pageat=\z@\pagemark\else\leftmark\fi}%
+ \lohead[\ifnum\@pageat=\z@\pagemark\fi]
+ {\ifnum\@pageat=\z@\pagemark\else\leftmark\fi}%
+ \chead[\ifnum\@pageat=\@ne\pagemark\fi]
+ {\ifcase\@pageat \rightmark\or \pagemark\or \rightmark\fi}%
+ \rehead[\ifnum\@pageat=\tw@\pagemark\fi]
+ {\ifcase\@pageat \leftmark\or \rightmark\or \pagemark
+ \else \rightmark\fi}%
+ \rohead[\ifnum\@pageat=\tw@\pagemark\fi]
+ {\ifcase\@pageat \leftmark\or \rightmark\or \pagemark
+ \else \rightmark\fi}%
+ \lefoot[\ifnum\@pageat=\thr@@\pagemark\fi]
+ {\ifnum\@pageat=\thr@@\pagemark\fi}%
+ \lofoot[\ifnum\@pageat=\thr@@\pagemark\fi]
+ {\ifnum\@pageat=\thr@@\pagemark\fi}%
+ \cfoot[\ifnum\@pageat=4 \pagemark\fi]
+ {\ifnum\@pageat=4 \pagemark\fi}%
+ \refoot[\ifnum\@pageat=5 \pagemark\fi]
+ {\ifnum\@pageat=5 \pagemark\fi}%
+ \rofoot[\ifnum\@pageat=5 \pagemark\fi]
+ {\ifnum\@pageat=5 \pagemark\fi}%
+ }{}%
}%
}%
-}
+}%
%</options>
% \end{macrocode}
% \end{macro}%^^A \sls@ps@style@KOMA-Script
@@ -1394,9 +1263,10 @@
% \end{description}
% Note: \Package{scrpage2} also provides starred versions of the page style
% definition commands, doing the same like the starless versions. This has
-% been done for compatibility reasons with deprecated \Package{scrpage2} and
+% been done for compatibility reasons with deprecated \Package{scrpage} and
% may be removed some times. The layer interface doesn't support this.
%
+%
% \begin{macro}{\defpagestyle}
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A
% \begin{description}
@@ -1410,41 +1280,16 @@
% See \Package{scrpage2} implementation.
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\defpagestyle{%
- \newcommand*{\defpagestyle}[3]{%
- \sls@defhead{#1}#2\@empty\@empty\@empty
- \sls@deffoot{#1}#3\@empty\@empty\@empty
- \DeclarePageStyleByLayers{#1}{%
- #1.head.odd,#1.head.even,#1.head.oneside,%
- #1.head.above.line,#1.head.below.line,%
- #1.foot.odd,#1.foot.even,#1.foot.oneside,%
- #1.foot.above.line,#1.foot.below.line%
- }%
- \edef\reserved@a{%
- \noexpand\scrlayerOnAutoRemoveInterface[scrlayer-scrpage.sty]{%
- \noexpand\DestroyLayer{#1.head.odd}%
- \noexpand\DestroyLayer{#1.head.even}%
- \noexpand\DestroyLayer{#1.head.oneside}%
- \noexpand\DestroyLayer{#1.head.above.line}%
- \noexpand\DestroyLayer{#1.head.below.line}%
- \noexpand\DestroyLayer{#1.foot.odd}%
- \noexpand\DestroyLayer{#1.foot.even}%
- \noexpand\DestroyLayer{#1.foot.oneside}%
- \noexpand\DestroyLayer{#1.foot.above.line}%
- \noexpand\DestroyLayer{#1.foot.below.line}%
- \noexpand\Ifstr{\noexpand\currentpagestyle}{#1}{%
- \noexpand\PackageWarning{scrlayer-scrpage}{%
- page style `#1' not longer valid.\noexpand\MessageBreak
- The page style has been defined using\noexpand\MessageBreak
- interface `scrlayer-scrpage.sty', that\noexpand\MessageBreak
- has been removed%
- }%
- }{}%
- \noexpand\DestroyRealLayerPageStyle{#1}%
- }%
- }\reserved@a
+\newcommand*{\defpagestyle}[3]{%
+ \sls@defhead{#1}#2\@empty\@empty\@empty
+ \sls@deffoot{#1}#3\@empty\@empty\@empty
+ \DeclarePageStyleByLayers{#1}{%
+ #1.head.odd,#1.head.even,#1.head.oneside,%
+ #1.head.above.line,#1.head.below.line,%
+ #1.foot.odd,#1.foot.even,#1.foot.oneside,%
+ #1.foot.above.line,#1.foot.below.line%
}%
-}
+}%
% \end{macrocode}
% \begin{macro}{\sls@defhead}
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
@@ -1473,86 +1318,82 @@
% \end{description}
% Helper to define the head layers.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@defhead{%
- \newcommand*\sls@defhead[1]{%
- \kernel@ifnextchar(%)
- {\sls@@defhead{#1}}%
- {\sls@@defhead{#1}(\sls@headabove@linelength,\sls@headabove@linethickness)}%
- }%
-}
-\scrlayerAddToInterface\sls@@defhead{%
- \def\sls@@defhead#1(#2,#3)#4#5#6{%
- \kernel@ifnextchar(%)
- {\sls@@@defhead{#1}({#2},{#3}){#4}{#5}{#6}}%
- {\sls@@@defhead{#1}%
- ({#2},{#3})%
- {#4}{#5}{#6}%
- (\sls@headbelow@linelength,\sls@headbelow@linethickness)}%
- }%
-}
-\scrlayerAddToInterface\sls@@@defhead{%
- \def\sls@@@defhead#1(#2,#3)#4#5#6(#7,#8){%
+\newcommand*\sls@defhead[1]{%
+ \kernel@ifnextchar(%)
+ {\sls@@defhead{#1}}%
+ {\sls@@defhead{#1}(\sls@headabove@linelength,\sls@headabove@linethickness)}%
+}%
+\newcommand*{\sls@@defhead}{}
+\def\sls@@defhead#1(#2,#3)#4#5#6{%
+ \kernel@ifnextchar(%)
+ {\sls@@@defhead{#1}({#2},{#3}){#4}{#5}{#6}}%
+ {\sls@@@defhead{#1}%
+ ({#2},{#3})%
+ {#4}{#5}{#6}%
+ (\sls@headbelow@linelength,\sls@headbelow@linethickness)}%
+}%
+\newcommand*{\sls@@@defhead}{}
+\def\sls@@@defhead#1(#2,#3)#4#5#6(#7,#8){%
% \end{macrocode}
% The lines:
% \begin{macrocode}
- \DeclareLayer[%
- background,%
- hoffset=\sls@leftmargin{head},%
- voffset=\sls@topmargin+\dp\strutbox,%
- width=\sls@headwidth,%
- height=0pt,%
- align=bl,%
- contents={%
- {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagehead}{%
- \sls@hf@rule{headtop}{#2}{#3}}}}%
- }%
- ]{#1.head.above.line}%
- \DeclareLayer[%
- background,%
- hoffset=\sls@leftmargin{head},%
- voffset=\sls@topmargin+\headheight-\ht\strutbox+#8,%
- width=\sls@headwidth,%
- height=0pt,%
- align=tl,%
- contents={%
- {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagehead}{%
- \sls@hf@rule{headsep}{#7}{#8}}}}%
- }%
- ]{#1.head.below.line}%
+ \DeclareLayer[%
+ background,%
+ hoffset=\sls@leftmargin{head},%
+ voffset=\sls@topmargin+\dp\strutbox,%
+ width=\sls@headwidth,%
+ height=0pt,%
+ align=bl,%
+ contents={%
+ {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagehead}{%
+ \sls@hf@rule{headtop}{#2}{#3}}}}%
+ }%
+ ]{#1.head.above.line}%
+ \DeclareLayer[%
+ background,%
+ hoffset=\sls@leftmargin{head},%
+ voffset=\sls@topmargin+\headheight-\ht\strutbox+#8,%
+ width=\sls@headwidth,%
+ height=0pt,%
+ align=tl,%
+ contents={%
+ {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagehead}{%
+ \sls@hf@rule{headsep}{#7}{#8}}}}%
+ }%
+ ]{#1.head.below.line}%
% \end{macrocode}
% The odd side, even side and one side:
% \changes{v3.13b}{2014/10/16}{workaround: additional group added to avoid
% pdf\TeX{} color stack warnings}%^^A
% \begin{macrocode}
- \DeclareLayer[%
- background,evenpage,twoside,%
- head,%
- hoffset=\sls@leftmargin{head},%
- width=\sls@headwidth,%
- contents={%
- \sls@secure@box\headheight{%
- \normalfont{\usekomafont{pageheadfoot}{\usekomafont{pagehead}{#4}}}}}%
- ]{#1.head.even}%
- \DeclareLayer[%
- background,oddpage,twoside,%
- head,%
- hoffset=\sls@leftmargin{head},%
- width=\sls@headwidth,%
- contents={%
- \sls@secure@box\headheight{%
- \normalfont{\usekomafont{pageheadfoot}{\usekomafont{pagehead}{#5}}}}}%
- ]{#1.head.odd}%
- \DeclareLayer[%
- background,oddpage,oneside,%
- head,%
- hoffset=\sls@leftmargin{head},%
- width=\sls@headwidth,%
- contents={%
- \sls@secure@box\headheight{%
- \normalfont{\usekomafont{pageheadfoot}{\usekomafont{pagehead}{#6}}}}}%
- ]{#1.head.oneside}%
- }%
-}
+ \DeclareLayer[%
+ background,evenpage,twoside,%
+ head,%
+ hoffset=\sls@leftmargin{head},%
+ width=\sls@headwidth,%
+ contents={%
+ \sls@secure@box\headheight{%
+ \normalfont{\usekomafont{pageheadfoot}{\usekomafont{pagehead}{#4}}}}}%
+ ]{#1.head.even}%
+ \DeclareLayer[%
+ background,oddpage,twoside,%
+ head,%
+ hoffset=\sls@leftmargin{head},%
+ width=\sls@headwidth,%
+ contents={%
+ \sls@secure@box\headheight{%
+ \normalfont{\usekomafont{pageheadfoot}{\usekomafont{pagehead}{#5}}}}}%
+ ]{#1.head.odd}%
+ \DeclareLayer[%
+ background,oddpage,oneside,%
+ head,%
+ hoffset=\sls@leftmargin{head},%
+ width=\sls@headwidth,%
+ contents={%
+ \sls@secure@box\headheight{%
+ \normalfont{\usekomafont{pageheadfoot}{\usekomafont{pagehead}{#6}}}}}%
+ ]{#1.head.oneside}%
+}%
% \end{macrocode}
% \begin{macro}{\sls@deffoot}
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
@@ -1581,93 +1422,89 @@
% \end{description}
% Helper to define the foot layers.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@deffoot{%
- \newcommand*\sls@deffoot[1]{%
- \kernel@ifnextchar(%)
- {\sls@@deffoot{#1}}%
- {\sls@@deffoot{#1}(\sls@footabove@linelength,\sls@footabove@linethickness)}%
- }%
-}
-\scrlayerAddToInterface\sls@@deffoot{%
- \def\sls@@deffoot#1(#2,#3)#4#5#6{%
- \kernel@ifnextchar(%)
- {\sls@@@deffoot{#1}({#2},{#3}){#4}{#5}{#6}}%
- {\sls@@@deffoot{#1}%
- ({#2},{#3})%
- {#4}{#5}{#6}%
- (\sls@footbelow@linelength,\sls@footbelow@linethickness)}%
- }%
-}
-\scrlayerAddToInterface\sls@@@deffoot{%
- \def\sls@@@deffoot#1(#2,#3)#4#5#6(#7,#8){%
+\newcommand*\sls@deffoot[1]{%
+ \kernel@ifnextchar(%)
+ {\sls@@deffoot{#1}}%
+ {\sls@@deffoot{#1}(\sls@footabove@linelength,\sls@footabove@linethickness)}%
+}%
+\newcommand*{\sls@@deffoot}{}
+\def\sls@@deffoot#1(#2,#3)#4#5#6{%
+ \kernel@ifnextchar(%)
+ {\sls@@@deffoot{#1}({#2},{#3}){#4}{#5}{#6}}%
+ {\sls@@@deffoot{#1}%
+ ({#2},{#3})%
+ {#4}{#5}{#6}%
+ (\sls@footbelow@linelength,\sls@footbelow@linethickness)}%
+}%
+\newcommand*{\sls@@@deffoot}{}
+\def\sls@@@deffoot#1(#2,#3)#4#5#6(#7,#8){%
% \end{macrocode}
% The lines:
% \begin{macrocode}
- \DeclareLayer[%
- foreground,%
- hoffset=\sls@leftmargin{foot},%
- voffset=\sls@topmargin
- +\headheight+\headsep
- +\textheight
- +\footskip-\footheight
- +2\dp\strutbox,%
- width=\sls@footwidth,%
- height=0pt,%
- align=bl,%
- contents={%
- {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{%
- \sls@hf@rule{footsep}{#2}{#3}}}}%
- }%
- ]{#1.foot.above.line}%
- \DeclareLayer[%
- foreground,%
- hoffset=\sls@leftmargin{foot},%
- voffset=\sls@topmargin
- +\headheight+\headsep
- +\textheight
- +\footskip
- +2\dp\strutbox
- +#8,%
- width=\sls@footwidth,%
- height=0pt,%
- align=bl,%
- contents={%
- {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{%
- \sls@hf@rule{footbot}{#7}{#8}}}}%
- }%
- ]{#1.foot.below.line}%
+ \DeclareLayer[%
+ foreground,%
+ hoffset=\sls@leftmargin{foot},%
+ voffset=\sls@topmargin
+ +\headheight+\headsep
+ +\textheight
+ +\footskip-\footheight
+ +2\dp\strutbox,%
+ width=\sls@footwidth,%
+ height=0pt,%
+ align=bl,%
+ contents={%
+ {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{%
+ \sls@hf@rule{footsep}{#2}{#3}}}}%
+ }%
+ ]{#1.foot.above.line}%
+ \DeclareLayer[%
+ foreground,%
+ hoffset=\sls@leftmargin{foot},%
+ voffset=\sls@topmargin
+ +\headheight+\headsep
+ +\textheight
+ +\footskip
+ +2\dp\strutbox
+ +#8,%
+ width=\sls@footwidth,%
+ height=0pt,%
+ align=bl,%
+ contents={%
+ {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{%
+ \sls@hf@rule{footbot}{#7}{#8}}}}%
+ }%
+ ]{#1.foot.below.line}%
% \end{macrocode}
% The odd side, even side and one side:
% \begin{macrocode}
- \DeclareLayer[%
- foreground,evenpage,twoside,%
- foot,%
- hoffset=\sls@leftmargin{foot},%
- width=\sls@footwidth,%
- contents={%
- \sls@secure@box\footheight{%
- \normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{#4}}}}%
- ]{#1.foot.even}%
- \DeclareLayer[%
- foreground,oddpage,twoside,%
- foot,%
- hoffset=\sls@leftmargin{foot},%
- width=\sls@footwidth,%
- contents={%
- \sls@secure@box\footheight{%
- \normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{#5}}}}%
- ]{#1.foot.odd}%
- \DeclareLayer[%
- foreground,oddpage,oneside,%
- foot,%
- hoffset=\sls@leftmargin{foot},%
- width=\sls@footwidth,%
- contents={%
- \sls@secure@box\footheight{%
- \normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{#6}}}}%
- ]{#1.foot.oneside}%
- }%
-}
+ \DeclareLayer[%
+ foreground,evenpage,twoside,%
+ foot,%
+ hoffset=\sls@leftmargin{foot},%
+ width=\sls@footwidth,%
+ contents={%
+ \sls@secure@box\footheight{%
+ \normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{#4}}}}%
+ ]{#1.foot.even}%
+ \DeclareLayer[%
+ foreground,oddpage,twoside,%
+ foot,%
+ hoffset=\sls@leftmargin{foot},%
+ width=\sls@footwidth,%
+ contents={%
+ \sls@secure@box\footheight{%
+ \normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{#5}}}}%
+ ]{#1.foot.odd}%
+ \DeclareLayer[%
+ foreground,oddpage,oneside,%
+ foot,%
+ hoffset=\sls@leftmargin{foot},%
+ width=\sls@footwidth,%
+ contents={%
+ \sls@secure@box\footheight{%
+ \normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{#6}}}}%
+ ]{#1.foot.oneside}%
+}%
% \end{macrocode}
% \begin{macro}{\sls@secure@box}
% \begin{description}
@@ -1678,68 +1515,66 @@
% \end{description}
% Note, that several length may be changed, to fit.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@secure@box{%
- \newcommand*{\sls@secure@box}[2]{%
- \begingroup
- \setbox\z@\vbox{%
- \ifsls@leavevmode\leavevmode\expandafter\ignorespaces\fi
- #2%
- }%
- \ifdim #1<\dimexpr \ht\z@+\dp\z@\relax
- \PackageWarning{scrlayer-scrpage}{%
- \string#1 to low.\MessageBreak
- At least \the\dimexpr \ht\z@+\dp\z@\relax\space needed,\MessageBreak
- but only \the#1 found.\MessageBreak
- \ifsls@autoenlarge
- I'll enlarge \string#1, for further\MessageBreak
- processing, but you should do this yourself,\MessageBreak
- \else
- You should enlarge \string#1,\MessageBreak
- \fi
- e.g.,
- \scr@ifundefinedorrelax{geometry}{%
- \scr@ifundefinedorrelax{typearea}{%
- using\MessageBreak
- \space\space\string\setlength{\string#1}{%
- \the\dimexpr \ht\z@+\dp\z@\relax}\MessageBreak
- in your preamble%
- }{%
- setting typearea's option\MessageBreak
- `\expandafter\@gobble\string#1=\the\dimexpr \ht\z@+\dp\z@\relax'%
- }%
+\newcommand*{\sls@secure@box}[2]{%
+ \begingroup
+ \setbox\z@\vbox{%
+ \ifsls@leavevmode\leavevmode\expandafter\ignorespaces\fi
+ #2%
+ }%
+ \ifdim #1<\dimexpr \ht\z@+\dp\z@\relax
+ \PackageWarning{scrlayer-scrpage}{%
+ \string#1 to low.\MessageBreak
+ At least \the\dimexpr \ht\z@+\dp\z@\relax\space needed,\MessageBreak
+ but only \the#1 found.\MessageBreak
+ \ifsls@autoenlarge
+ I'll enlarge \string#1, for further\MessageBreak
+ processing, but you should do this yourself,\MessageBreak
+ \else
+ You should enlarge \string#1,\MessageBreak
+ \fi
+ e.g.,
+ \scr@ifundefinedorrelax{geometry}{%
+ \scr@ifundefinedorrelax{typearea}{%
+ using\MessageBreak
+ \space\space\string\setlength{\string#1}{%
+ \the\dimexpr \ht\z@+\dp\z@\relax}\MessageBreak
+ in your preamble%
}{%
- \ifx #1\headheight
- setting geometry's option\MessageBreak
- `head=\the\dimexpr \ht\z@+\dp\z@\relax'%
- \else
- using\MessageBreak
- \space\space\string\setlength{\string#1}{%
- \the\dimexpr \ht\z@+\dp\z@\relax}\MessageBreak
- in your preamble%
- \fi
+ setting typearea's option\MessageBreak
+ `\expandafter\@gobble\string#1=\the\dimexpr \ht\z@+\dp\z@\relax'%
}%
- \ifsls@autoenlarge
- .\MessageBreak
- I'll also
- \ifx #1\headheight decrease \string\topmargin
- \else increase \string\footskip\fi
- \fi
- }%
- \ifsls@autoenlarge
- \@tempdima\dimexpr \ht\z@+\dp\z@\relax
+ }{%
\ifx #1\headheight
- \global\advance\topmargin by \dimexpr #1-(\ht\z@+\dp\z@)\relax
- \dp\z@\dimexpr \dp\z@+\ht\z@+\dp\z@-\headheight\relax
+ setting geometry's option\MessageBreak
+ `head=\the\dimexpr \ht\z@+\dp\z@\relax'%
\else
- \global\advance\footskip by \dimexpr \ht\z@+\dp\z@-#1\relax
+ using\MessageBreak
+ \space\space\string\setlength{\string#1}{%
+ \the\dimexpr \ht\z@+\dp\z@\relax}\MessageBreak
+ in your preamble%
\fi
- \global#1\@tempdima
+ }%
+ \ifsls@autoenlarge
+ .\MessageBreak
+ I'll also
+ \ifx #1\headheight decrease \string\topmargin
+ \else increase \string\footskip\fi
+ \fi
+ }%
+ \ifsls@autoenlarge
+ \@tempdima\dimexpr \ht\z@+\dp\z@\relax
+ \ifx #1\headheight
+ \global\advance\topmargin by \dimexpr #1-(\ht\z@+\dp\z@)\relax
+ \dp\z@\dimexpr \dp\z@+\ht\z@+\dp\z@-\headheight\relax
+ \else
+ \global\advance\footskip by \dimexpr \ht\z@+\dp\z@-#1\relax
\fi
+ \global#1\@tempdima
\fi
- \usebox\z@
- \endgroup
- }%
-}
+ \fi
+ \usebox\z@
+ \endgroup
+}%
%</body>
% \end{macrocode}
% \begin{option}{hmode}
@@ -1748,10 +1583,6 @@
% \begin{macrocode}
%<*options>
\KOMA@ifkey{hmode}{sls@leavevmode}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@hmode}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@hmode@default}
-\scrlayer@AddCsToInterface{sls@leavevmode@linetrue}
-\scrlayer@AddCsToInterface{sls@leavevmode@linefalse}
%</options>
% \end{macrocode}
% \end{option}%^^A hmode
@@ -1763,11 +1594,6 @@
%<*options>
\KOMA@ifkey{autoenlargeheadfoot}{sls@autoenlarge}
\KOMAExecuteOptions{autoenlargeheadfoot=true}
-\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@autoenlargeheadfoot}
-\scrlayer@AddCsToInterface{%
- KV@KOMA.scrlayer-scrpage.sty@autoenlargeheadfoot@default}
-\scrlayer@AddCsToInterface{sls@autoenlargetrue}
-\scrlayer@AddCsToInterface{sls@autoenlargefalse}
%</options>
% \end{macrocode}
% \end{option}%^^A autoenlargeheadfoot
@@ -1797,16 +1623,13 @@
}%
\let\scr@fnt@instead@pagehead\relax
}%
- \scrlayer@AddCsToInterface{scr@fnt@pagehead}%
\@ifundefined{@pageheadfont}{%
\newcommand*{\@pageheadfont}{}%
- \scrlayer@AddCsToInterface{@pageheadfont}%
}{}%
\newcommand*{\scr@fnt@pagehead}{\@pageheadfont}%
}{}
\@ifundefined{scr@fnt@pageheadfoot}{%
\newcommand*{\scr@fnt@pageheadfoot}{\headfont}%
- \scrlayer@AddCsToInterface{scr@fnt@pageheadfoot}%
\@ifundefined{headfont}{%
\newcommand*{\headfont}{\normalcolor\slshape}%
}{}
@@ -1831,11 +1654,9 @@
% \changes{v0.9}{2014/01/13}{warning always deactivated}
% \begin{macrocode}
\@ifundefined{scr@fnt@pagefoot}{%
- \scrlayer@AddCsToInterface{scr@fnt@pagefoot}%
\def\scr@fnt@pagefoot{\footfont}%
\@ifundefined{footfont}{%
\newcommand*{\footfont}{}%
- \scrlayer@AddCsToInterface{footfont}%
}{}%
}{}
\scr@ifundefinedorrelax{scr@fnt@wrn@pagefoot}{}{%
@@ -1858,56 +1679,50 @@
% \end{description}
% Helper to draw the line.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@hf@rule{%
- \newcommand*\sls@hf@rule[3]{%
- \begingroup
- \normalfont\usekomafont{#1line}{%
- \vbox to \z@{%
- \kern -\dimexpr #3\relax
- \ifnum \sls@hfline@adjust>\z@ \@tempswatrue \else \@tempswafalse\fi
- \if@twoside\ifodd\value{page}\else
- \ifnum \sls@hfline@adjust<\tw@ \@tempswatrue\else \@tempswafalse\fi
- \fi\fi
- \if@tempswa
- \hskip \z@\@plus 1fill\@minus \paperwidth
- \fi
- \vrule \@width\dimexpr #2\relax \@height\dimexpr #3\relax \@depth\z@
+\newcommand*\sls@hf@rule[3]{%
+ \begingroup
+ \normalfont\usekomafont{#1line}{%
+ \vbox to \z@{%
+ \kern -\dimexpr #3\relax
+ \ifnum \sls@hfline@adjust>\z@ \@tempswatrue \else \@tempswafalse\fi
+ \if@twoside\ifodd\value{page}\else
\ifnum \sls@hfline@adjust<\tw@ \@tempswatrue\else \@tempswafalse\fi
- \if@twoside\ifodd\value{page}\else
- \ifnum \sls@hfline@adjust>\z@ \@tempswatrue \else \@tempswafalse\fi
- \fi\fi
- \if@tempswa
- \hskip \z@\@plus 1fill\@minus \paperwidth\null
- \fi
- }%
- }%
- \endgroup
- }%
-}
+ \fi\fi
+ \if@tempswa
+ \hskip \z@\@plus 1fill\@minus \paperwidth
+ \fi
+ \vrule \@width\dimexpr #2\relax \@height\dimexpr #3\relax \@depth\z@
+ \ifnum \sls@hfline@adjust<\tw@ \@tempswatrue\else \@tempswafalse\fi
+ \if@twoside\ifodd\value{page}\else
+ \ifnum \sls@hfline@adjust>\z@ \@tempswatrue \else \@tempswafalse\fi
+ \fi\fi
+ \if@tempswa
+ \hskip \z@\@plus 1fill\@minus \paperwidth\null
+ \fi
+ }%
+ }%
+ \endgroup
+}%
% \end{macrocode}
% \end{macro}%^^A \sls@hf@rule
% \begin{macro}{\sls@topmargin}
% \begin{macro}{\sls@leftmargin}
% Two simple helper macros:
% \begin{macrocode}
-\scrlayerAddToInterface\sls@topmargin{%
- \newcommand*{\sls@topmargin}{\dimexpr\topmargin+1in\relax}%
-}
-\scrlayerAddToInterface\sls@leftmargin{%
- \newcommand*{\sls@leftmargin}[1]{%
- \dimexpr
- \if@twoside
- \ifodd\value{page}
- \oddsidemargin+\csname sls@odd#1shift\endcsname
- \else
- \evensidemargin+\csname sls@even#1shift\endcsname
- \fi
- \else
+\newcommand*{\sls@topmargin}{\dimexpr\topmargin+1in\relax}%
+\newcommand*{\sls@leftmargin}[1]{%
+ \dimexpr
+ \if@twoside
+ \ifodd\value{page}
\oddsidemargin+\csname sls@odd#1shift\endcsname
- \fi
- +1in\relax
- }%
-}
+ \else
+ \evensidemargin+\csname sls@even#1shift\endcsname
+ \fi
+ \else
+ \oddsidemargin+\csname sls@odd#1shift\endcsname
+ \fi
+ +1in\relax
+}%
%</body>
% \end{macrocode}
% \end{macro}%^^A \sls@leftmargin
@@ -1915,49 +1730,89 @@
% \end{macro}%^^A \defpagestyle
%
% \begin{macro}{\newpagestyle}
+% \changes{v3.32}{2020/09/11}{test for \textsf{titlesec}}
% For the parameters see \Macro{defpagestyle}.
-% Define only, if not already defined:
+% Define the pagestyle only, if not already defined. Unfortunately
+% \textsf{titlesec} also defines this command. So new definition will
+% fail. \textsf{titlesec} uses \cs{providecommand} so if the order would be
+% changed, everything would be OK.
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\newpagestyle{%
- \newcommand*\newpagestyle[3]{%
- \@ifundefined{ps@#1}{\defpagestyle{#1}{#2}{#3}}{%
- \PackageError{scrlayer-scrpage}{Page style `#1' already defined}{%
- Only not yet defined page style may be defined using
- \string\newpagestyle.\MessageBreak
- You may use either \string\renewpagestyle, \string\providepagestyle,
- or \string\defpagestyle\MessageBreak
- with already defined page styles.\MessageBreak
- If you'll continue, your command will be ignored.%
+\@ifpackageloaded{titlesec}{%
+ \@ifundefined{newpagestyle}{}{%
+ \@ifpackageloaded{titleps}{}{%
+ \PackageWarningNoLine{scrlayer-scrpage}{%
+ it seems that package `titlesec' is used\MessageBreak
+ and has already defined `\string\newpagestyle'.\MessageBreak
+ To avoid this warning message, you should\MessageBreak
+ load package `titlesec' not before package\MessageBreak
+ `scrlayer-scrpage'. If you need `titlesec'\MessageBreak
+ you could load it after `scrlayer-scrpage',\MessageBreak
+ but you still would not be able to use\MessageBreak
+ the `titlesec' implemenation of\MessageBreak
+ `\string\newpagestyle'%
}%
+ \let\newpagestyle\relax
}%
}%
-}
+}{}
+\newcommand*\newpagestyle[3]{%
+ \@ifundefined{ps@#1}{\defpagestyle{#1}{#2}{#3}}{%
+ \PackageError{scrlayer-scrpage}{Page style `#1' already defined}{%
+ Only not yet defined page style may be defined using
+ \string\newpagestyle.\MessageBreak
+ You may use either \string\renewpagestyle, \string\providepagestyle,
+ or \string\defpagestyle\MessageBreak
+ with already defined page styles.\MessageBreak
+ If you'll continue, your command will be ignored.%
+ }%
+ }%
+}%
%</body>
% \end{macrocode}
% \end{macro}%^^A \newpagestyle
%
% \begin{macro}{\renewpagestyle}
+% \changes{v3.32}{2020/09/11}{test for \textsf{titlesec}}
% For the parameters see \Macro{defpagestyle}.
-% Define only, if not already defined:
+% Define the pagestyle only, if not already defined. Unfortunately
+% \textsf{titlesec} also defines this command. So new definition will
+% fail. \textsf{titlesec} uses \cs{providecommand} so if the order would be
+% changed, everything would be OK.
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\renewpagestyle{%
- \newcommand*\renewpagestyle[3]{%
- \@ifundefined{ps@#1}{%
- \PackageError{scrlayer-scrpage}{Undefined page style `#1'}{%
- Only already defined page style may be re-defined using
- \string\renewpagestyle.\MessageBreak
- You may use either \string\newpagestyle, \string\providepagestyle,
- or \string\defpagestyle\MessageBreak
- with not yet defined page styles.\MessageBreak
- If you'll continue, your command will be ignored.%
+\@ifpackageloaded{titlesec}{%
+ \@ifundefined{renewpagestyle}{}{%
+ \@ifpackageloaded{titleps}{}{%
+ \PackageWarningNoLine{scrlayer-scrpage}{%
+ It seems that package `titlesec' is used\MessageBreak
+ and has already defined `\string\renewpagestyle'.\MessageBreak
+ To avoid this warning message, you should\MessageBreak
+ load package `titlesec' not before package\MessageBreak
+ `scrlayer-scrpage'. If you need `titlesec'\MessageBreak
+ you could load it after `scrlayer-scrpage',\MessageBreak
+ but you still would not be able to use\MessageBreak
+ the `titlesec' implemenation of\MessageBreak
+ `\string\renewpagestyle'%
}%
- }{%
- \defpagestyle{#1}{#2}{#3}%
+ \let\renewpagestyle\relax
}%
}%
-}
+}{}
+\newcommand*\renewpagestyle[3]{%
+ \@ifundefined{ps@#1}{%
+ \PackageError{scrlayer-scrpage}{Undefined page style `#1'}{%
+ Only already defined page style may be re-defined using
+ \string\renewpagestyle.\MessageBreak
+ You may use either \string\newpagestyle, \string\providepagestyle,
+ or \string\defpagestyle\MessageBreak
+ with not yet defined page styles.\MessageBreak
+ If you'll continue, your command will be ignored.%
+ }%
+ }{%
+ \defpagestyle{#1}{#2}{#3}%
+ }%
+}%
%</body>
% \end{macrocode}
% \end{macro}%^^A \renewpagestyle
@@ -1967,18 +1822,16 @@
% Define only, if not already defined:
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\providepagestyle{%
- \newcommand*\providepagestyle[3]{%
- \@ifundefined{ps@#1}{%
- \defpagestyle{#1}{#2}{#3}%
- }{%
+\newcommand*\providepagestyle[3]{%
+ \@ifundefined{ps@#1}{%
+ \defpagestyle{#1}{#2}{#3}%
+ }{%
%<*trace>
- \PackageInfo{scrlayer-scrpage}{%
- page style `#1' already defined.\MessageBreak
- New definition ignored%
- }%
-%</trace>
+ \PackageInfo{scrlayer-scrpage}{%
+ page style `#1' already defined.\MessageBreak
+ New definition ignored%
}%
+%</trace>
}%
}
%</body>
@@ -2029,30 +1882,22 @@
% defined. Additional commands have been added.
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface{\deftriplepagestyle}{%
- \newcommand*{\deftriplepagestyle}[1]{%
- \let\@tempa\defpagestyle
- \scrlayer@triplestyle{#1}%
- }%
-}
-\scrlayerAddToInterface{\newtriplepagestyle}{%
- \newcommand*{\newtriplepagestyle}[1]{%
- \let\@tempa\newpagestyle
- \scrlayer@triplestyle{#1}%
- }%
-}
-\scrlayerAddToInterface{\renewtriplepagestyle}{%
- \newcommand*{\renewtriplepagestyle}[1]{%
- \let\@tempa\renewpagestyle
- \scrlayer@triplestyle{#1}%
- }%
-}
-\scrlayerAddToInterface{\providetriplepagestyle}{%
- \newcommand*{\providetriplepagestyle}[1]{%
- \let\@tempa\providepagestyle
- \scrlayer@triplestyle{#1}%
- }%
-}
+\newcommand*{\deftriplepagestyle}[1]{%
+ \let\@tempa\defpagestyle
+ \scrlayer@triplestyle{#1}%
+}%
+\newcommand*{\newtriplepagestyle}[1]{%
+ \let\@tempa\newpagestyle
+ \scrlayer@triplestyle{#1}%
+}%
+\newcommand*{\renewtriplepagestyle}[1]{%
+ \let\@tempa\renewpagestyle
+ \scrlayer@triplestyle{#1}%
+}%
+\newcommand*{\providetriplepagestyle}[1]{%
+ \let\@tempa\providepagestyle
+ \scrlayer@triplestyle{#1}%
+}%
% \end{macrocode}
% \begin{macro}{\scrlayer@triplestyle}
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
@@ -2065,73 +1910,67 @@
% to be one of \Macro{defpagestyle}, \Macro{newpagestyle},
% \Macro{renewpagestyle}, or \Macro{providepagestyle}.
% \begin{macrocode}
-\scrlayerAddToInterface\scrlayer@triplestyle{%
- \def\scrlayer@triplestyle#1{%
- \kernel@ifnextchar[%]
- {\scrlayer@@triplestyle{#1}}%
- {\scrlayer@@triplestyle{#1}[\z@]}%
- }
-}
-\scrlayerAddToInterface\scrlayer@@triplestyle{%
- \def\scrlayer@@triplestyle#1[#2]{%
- \kernel@ifnextchar[%]
- {\scrlayer@@@triplestyle{#1}[#2]}%
- {\scrlayer@@@triplestyle{#1}[\z@][#2]}%
- }%
-}
-\scrlayerAddToInterface\scrlayer@@@triplestyle{%
- \def\scrlayer@@@triplestyle#1[#2][#3]#4#5#6#7#8#9{%
- \@tempa{#1}{%
- (\sls@headwidth,#2)%
- {%
- \makebox[\z@][l]{#6}\hfill
- \makebox[\z@][c]{#5}\hfill
- \makebox[\z@][r]{#4}%
- }{%
- \makebox[\z@][l]{#4}\hfill
- \makebox[\z@][c]{#5}\hfill
- \makebox[\z@][r]{#6}%
- }{%
- \makebox[\z@][l]{#4}\hfill
- \makebox[\z@][c]{#5}\hfill
- \makebox[\z@][r]{#6}%
- }%
- (\sls@headwidth,#3)%
+\newcommand*{\scrlayer@triplestyle}[1]{%
+ \kernel@ifnextchar[%]
+ {\scrlayer@@triplestyle{#1}}%
+ {\scrlayer@@triplestyle{#1}[\z@]}%
+}
+\newcommand*{\scrlayer@@triplestyle}{}
+\def\scrlayer@@triplestyle#1[#2]{%
+ \kernel@ifnextchar[%]
+ {\scrlayer@@@triplestyle{#1}[#2]}%
+ {\scrlayer@@@triplestyle{#1}[\z@][#2]}%
+}%
+\newcommand*{\scrlayer@@@triplestyle}{}
+\def\scrlayer@@@triplestyle#1[#2][#3]#4#5#6#7#8#9{%
+ \@tempa{#1}{%
+ (\sls@headwidth,#2)%
+ {%
+ \makebox[\z@][l]{#6}\hfill
+ \makebox[\z@][c]{#5}\hfill
+ \makebox[\z@][r]{#4}%
}{%
- (\sls@footwidth,#3)%
- {%
- \makebox[\z@][l]{#9}\hfill
- \makebox[\z@][c]{#8}\hfill
- \makebox[\z@][r]{#7}%
- }{%
- \makebox[\z@][l]{#7}\hfill
- \makebox[\z@][c]{#8}\hfill
- \makebox[\z@][r]{#9}%
- }{%
- \makebox[\z@][l]{#7}\hfill
- \makebox[\z@][c]{#8}\hfill
- \makebox[\z@][r]{#9}%
- }%
- (\sls@footwidth,#2)%
+ \makebox[\z@][l]{#4}\hfill
+ \makebox[\z@][c]{#5}\hfill
+ \makebox[\z@][r]{#6}%
+ }{%
+ \makebox[\z@][l]{#4}\hfill
+ \makebox[\z@][c]{#5}\hfill
+ \makebox[\z@][r]{#6}%
+ }%
+ (\sls@headwidth,#3)%
+ }{%
+ (\sls@footwidth,#3)%
+ {%
+ \makebox[\z@][l]{#9}\hfill
+ \makebox[\z@][c]{#8}\hfill
+ \makebox[\z@][r]{#7}%
+ }{%
+ \makebox[\z@][l]{#7}\hfill
+ \makebox[\z@][c]{#8}\hfill
+ \makebox[\z@][r]{#9}%
+ }{%
+ \makebox[\z@][l]{#7}\hfill
+ \makebox[\z@][c]{#8}\hfill
+ \makebox[\z@][r]{#9}%
}%
+ (\sls@footwidth,#2)%
}%
-}
+}%
% \end{macrocode}
% \end{macro}%^^A \scrlayer@@@triplestyle
% \end{macro}%^^A \scrlayer@@triplestyle
% \end{macro}%^^A \scrlayer@triplestyle
% \begin{macrocode}
-\scrlayerAddToInterface{\deftripstyle}{%
- \newcommand*{\deftripstyle}{%
- \PackageWarning{scrlayer-scrpage}{%
- Command \string\deftripstyle\space is deprecate.\MessageBreak
- You should replace it by \string\deftriplepagestyle,\MessageBreak
- e.g.,%
- }%
- \let\deftripstyle\deftriplepagestyle
- \deftripstyle
+\newcommand*{\deftripstyle}{%
+ \PackageWarning{scrlayer-scrpage}{%
+ Command \string\deftripstyle\space is deprecate.\MessageBreak
+ You should replace it by \string\deftriplepagestyle,\MessageBreak
+ e.g.,%
}%
-}
+ \let\deftripstyle\deftriplepagestyle
+ \deftripstyle
+}%
%</body>
% \end{macrocode}
% \end{macro}%^^A \deftripstyle
@@ -2176,132 +2015,105 @@
% they depend on page style \texttt{scrheadings}.
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\defpairofpagestyles{%
- \newcommand*{\defpairofpagestyles}[3][]{%
- \def\reserved@a##1##2##3##4##5##6##7\@nil{##1##2##3##4##5##6}%
- \edef\reserved@a{\expandafter\reserved@a #2xxxxxx\@nil}%
- \Ifstr\reserved@a{plain.}{%
- \PackageError{scrlayer-scrpage}{plain page style `#2' not allowed}{%
- You may not define a plain page style using
- \string\defpairofpagestyles, \string\newpairofpagestyles,
- \string\renewpairofpagestyles, or\MessageBreak
- \string\providepairofpagestyles. I'd suggest to simply define the
- corresponding\MessageBreak
- non-plain page style to also define the plain one.\MessageBreak
- If you'll continue, your command will be ignored.}%
- }{%
- \sls@init@pair@page@style*{#2}%
- \sls@init@pair@page@style*{plain.#2}%
- \ifx\relax #1\relax\else
- \scr@ifundefinedorrelax{sls@ps@#1@even@left@head}{%
- \PackageError{scrlayer-scrpage}{`#1' not a pair page style}{%
- Only pair page styles may be used to initialise new pairs of page
- styles. So\MessageBreak
- optional argument of \string\defpairofpagestyles,
- \string\newpairofpagestyles,\MessageBreak
- \string\renewpairofpagestyles, or \string\providepairofpagestyle has
- to be a pair\MessageBreak
- page style or should be unused.\MessageBreak
- If you'll continue, the initialisation will be ignored.}%
+\newcommand*{\defpairofpagestyles}[3][]{%
+ \def\reserved@a##1##2##3##4##5##6##7\@nil{##1##2##3##4##5##6}%
+ \edef\reserved@a{\expandafter\reserved@a #2xxxxxx\@nil}%
+ \Ifstr\reserved@a{plain.}{%
+ \PackageError{scrlayer-scrpage}{plain page style `#2' not allowed}{%
+ You may not define a plain page style using
+ \string\defpairofpagestyles, \string\newpairofpagestyles,
+ \string\renewpairofpagestyles, or\MessageBreak
+ \string\providepairofpagestyles. I'd suggest to simply define the
+ corresponding\MessageBreak
+ non-plain page style to also define the plain one.\MessageBreak
+ If you'll continue, your command will be ignored.}%
+ }{%
+ \sls@init@pair@page@style*{#2}%
+ \sls@init@pair@page@style*{plain.#2}%
+ \ifx\relax #1\relax\else
+ \scr@ifundefinedorrelax{sls@ps@#1@even@left@head}{%
+ \PackageError{scrlayer-scrpage}{`#1' not a pair page style}{%
+ Only pair page styles may be used to initialise new pairs of page
+ styles. So\MessageBreak
+ optional argument of \string\defpairofpagestyles,
+ \string\newpairofpagestyles,\MessageBreak
+ \string\renewpairofpagestyles, or \string\providepairofpagestyle has
+ to be a pair\MessageBreak
+ page style or should be unused.\MessageBreak
+ If you'll continue, the initialisation will be ignored.}%
+ }{%
+ \sls@init@pair@page@style{#2}{#1}%
+ \scr@ifundefinedorrelax{sls@ps@plain.#1@even@left@head}{%
+ \sls@init@pair@page@style{plain.#2}{#1}%
}{%
- \sls@init@pair@page@style{#2}{#1}%
- \scr@ifundefinedorrelax{sls@ps@plain.#1@even@left@head}{%
- \sls@init@pair@page@style{plain.#2}{#1}%
- }{%
- \sls@init@pair@page@style{plain.#2}{plain.#1}%
- }%
+ \sls@init@pair@page@style{plain.#2}{plain.#1}%
}%
- \fi
- \edef\reserved@a{%
- \noexpand\scrlayerOnAutoRemoveInterface[scrlayer-scrpage.sty]{%
- \noexpand\sls@init@pair@page@style**{#2}%
- \noexpand\sls@init@pair@page@style**{plain.#2}%
- \noexpand\expandafter\noexpand\ifx\noexpand
- \csname ps@plain.#2\noexpand\endcsname\noexpand\ps@plain
- \noexpand\PackageWarning{scrlayer-scrpage}{%
- page style `#2' not longer valid.\noexpand\MessageBreak
- This was the current plain page style.\noexpand\MessageBreak
- Making current plain page style empty.\noexpand\MessageBreak
- The page style has been defined using\noexpand\MessageBreak
- interface `scrlayer-scrpage.sty', that\noexpand\MessageBreak
- has been removed%
- }%
- \noexpand\def\noexpand\ps@plain{%
- \noexpand\def\noexpand\@oddhead{}\noexpand\def\noexpand\@evenhead{}%
- \noexpand\def\noexpand\@oddhead{}\noexpand\def\noexpand\@evenhead{}%
- }%
- \noexpand\fi
- }%
- }\reserved@a
- \sls@def@pair@page@style@member{#2}%
- \AddToLayerPageStyleOptions{#2}{%
- onselect={%
+ }%
+ \fi
+ \sls@def@pair@page@style@member{#2}%
+ \AddToLayerPageStyleOptions{#2}{%
+ onselect={%
% \end{macrocode}
% \changes{v3.15}{2015/01/08}{usage of \cs{DeclarePageStyleAlias} instead of
% \cs{let}}%^^A fixme: Is this correct?
% \begin{macrocode}
- \DeclarePageStyleAlias{plain}{plain.#2}%
- \DeclarePageStyleAlias{headings}{#2}%
- \def\sls@currentheadings{#2}%
- \def\sls@currentplain{plain.#2}%
- #3%
- }%
+ \DeclarePageStyleAlias{plain}{plain.#2}%
+ \DeclarePageStyleAlias{headings}{#2}%
+ \def\sls@currentheadings{#2}%
+ \def\sls@currentplain{plain.#2}%
+ #3%
}%
- \sls@def@pair@page@style@member{plain.#2}%
- \AddToLayerPageStyleOptions{plain.#2}{%
- onselect={%
+ }%
+ \sls@def@pair@page@style@member{plain.#2}%
+ \AddToLayerPageStyleOptions{plain.#2}{%
+ onselect={%
% \end{macrocode}
% \changes{v3.15}{2015/01/08}{usage of \cs{DeclarePageStyleAlias} instead of
% \cs{let}}%^^A fixme: Is this correct?
% \begin{macrocode}
- \DeclarePageStyleAlias{plain}{plain.#2}%
- \DeclarePageStyleAlias{headings}{#2}%
- \def\sls@currentheadings{#2}%
- \def\sls@currentplain{plain.#2}%
- #3%
- },%
- oninit={%
- \expandafter
- \ifx\csname ifsls@plain@head@above@line\expandafter\endcsname
+ \DeclarePageStyleAlias{plain}{plain.#2}%
+ \DeclarePageStyleAlias{headings}{#2}%
+ \def\sls@currentheadings{#2}%
+ \def\sls@currentplain{plain.#2}%
+ #3%
+ },%
+ oninit={%
+ \expandafter
+ \ifx\csname ifsls@plain@head@above@line\expandafter\endcsname
+ \csname iftrue\endcsname\else
+ \let\sls@headabove@linelength\z@
+ \let\sls@headabove@linethickness\z@
+ \fi
+ \expandafter
+ \ifx\csname ifsls@plain@head@below@line\expandafter\endcsname
\csname iftrue\endcsname\else
- \let\sls@headabove@linelength\z@
- \let\sls@headabove@linethickness\z@
- \fi
- \expandafter
- \ifx\csname ifsls@plain@head@below@line\expandafter\endcsname
- \csname iftrue\endcsname\else
- \let\sls@headbelow@linelength\z@
- \let\sls@headbelow@linethickness\z@
- \fi
- \expandafter
- \ifx\csname ifsls@plain@foot@above@line\expandafter\endcsname
- \csname iftrue\endcsname\else
- \let\sls@footabove@linelength\z@
- \let\sls@footabove@linethickness\z@
- \fi
- \expandafter
- \ifx\csname ifsls@plain@foot@below@line\expandafter\endcsname
- \csname iftrue\endcsname\else
- \let\sls@footbelow@linelength\z@
- \let\sls@footbelow@linethickness\z@
- \fi
- }%
+ \let\sls@headbelow@linelength\z@
+ \let\sls@headbelow@linethickness\z@
+ \fi
+ \expandafter
+ \ifx\csname ifsls@plain@foot@above@line\expandafter\endcsname
+ \csname iftrue\endcsname\else
+ \let\sls@footabove@linelength\z@
+ \let\sls@footabove@linethickness\z@
+ \fi
+ \expandafter
+ \ifx\csname ifsls@plain@foot@below@line\expandafter\endcsname
+ \csname iftrue\endcsname\else
+ \let\sls@footbelow@linelength\z@
+ \let\sls@footbelow@linethickness\z@
+ \fi
}%
}%
}%
-}
+}%
% \end{macrocode}
% \begin{macro}{\sls@currentheadings}
% \begin{macro}{\sls@currentplain}
% These little helpers will be set up at selection of each pair page style and
% stores the last activated page style pair of the scope.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@currentheadings{%
- \newcommand*\sls@currentheadings{scrheadings}%
-}
-\scrlayerAddToInterface\sls@currentplain{%
- \newcommand*\sls@currentplain{plain.scrheadings}%
-}
+\newcommand*\sls@currentheadings{scrheadings}%
+\newcommand*\sls@currentplain{plain.scrheadings}%
% \end{macrocode}
% \end{macro}%^^A \sls@currentplain
% \end{macro}%^^A \sls@currentheadings
@@ -2324,47 +2136,43 @@
% Note also, that the second argument may either be the plain or the non-plain
% member of the page style pair.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@init@pair@page@style{%
- \newcommand*{\sls@init@pair@page@style}{%
+\newcommand*{\sls@init@pair@page@style}{%
+ \kernel@ifstar {%
\kernel@ifstar {%
- \kernel@ifstar {%
- \sls@let@pair@page@style\relax
- }{%
- \sls@let@pair@page@style\@empty
- }
+ \sls@let@pair@page@style\relax
}{%
- \sls@init@@pair@page@style
- }%
- }%
-}
-\scrlayerAddToInterface\sls@init@@pair@page@style{%
- \newcommand*{\sls@init@@pair@page@style}[2]{%
- \expandafter\let\csname sls@ps@#1@even@left@head\expandafter\endcsname
- \csname sls@ps@#2@even@left@head\endcsname
- \expandafter\let\csname sls@ps@#1@even@middle@head\expandafter\endcsname
- \csname sls@ps@#2@even@middle@head\endcsname
- \expandafter\let\csname sls@ps@#1@even@right@head\expandafter\endcsname
- \csname sls@ps@#2@even@right@head\endcsname
- \expandafter\let\csname sls@ps@#1@odd@left@head\expandafter\endcsname
- \csname sls@ps@#2@odd@left@head\endcsname
- \expandafter\let\csname sls@ps@#1@odd@middle@head\expandafter\endcsname
- \csname sls@ps@#2@odd@middle@head\endcsname
- \expandafter\let\csname sls@ps@#1@odd@right@head\expandafter\endcsname
- \csname sls@ps@#2@odd@right@head\endcsname
- \expandafter\let\csname sls@ps@#1@even@left@foot\expandafter\endcsname
- \csname sls@ps@#2@even@left@foot\endcsname
- \expandafter\let\csname sls@ps@#1@even@middle@foot\expandafter\endcsname
- \csname sls@ps@#2@even@middle@foot\endcsname
- \expandafter\let\csname sls@ps@#1@even@right@foot\expandafter\endcsname
- \csname sls@ps@#2@even@right@foot\endcsname
- \expandafter\let\csname sls@ps@#1@odd@left@foot\expandafter\endcsname
- \csname sls@ps@#2@odd@left@foot\endcsname
- \expandafter\let\csname sls@ps@#1@odd@middle@foot\expandafter\endcsname
- \csname sls@ps@#2@odd@middle@foot\endcsname
- \expandafter\let\csname sls@ps@#1@odd@right@foot\expandafter\endcsname
- \csname sls@ps@#2@odd@right@foot\endcsname
+ \sls@let@pair@page@style\@empty
+ }
+ }{%
+ \sls@init@@pair@page@style
}%
-}
+}%
+\newcommand*{\sls@init@@pair@page@style}[2]{%
+ \expandafter\let\csname sls@ps@#1@even@left@head\expandafter\endcsname
+ \csname sls@ps@#2@even@left@head\endcsname
+ \expandafter\let\csname sls@ps@#1@even@middle@head\expandafter\endcsname
+ \csname sls@ps@#2@even@middle@head\endcsname
+ \expandafter\let\csname sls@ps@#1@even@right@head\expandafter\endcsname
+ \csname sls@ps@#2@even@right@head\endcsname
+ \expandafter\let\csname sls@ps@#1@odd@left@head\expandafter\endcsname
+ \csname sls@ps@#2@odd@left@head\endcsname
+ \expandafter\let\csname sls@ps@#1@odd@middle@head\expandafter\endcsname
+ \csname sls@ps@#2@odd@middle@head\endcsname
+ \expandafter\let\csname sls@ps@#1@odd@right@head\expandafter\endcsname
+ \csname sls@ps@#2@odd@right@head\endcsname
+ \expandafter\let\csname sls@ps@#1@even@left@foot\expandafter\endcsname
+ \csname sls@ps@#2@even@left@foot\endcsname
+ \expandafter\let\csname sls@ps@#1@even@middle@foot\expandafter\endcsname
+ \csname sls@ps@#2@even@middle@foot\endcsname
+ \expandafter\let\csname sls@ps@#1@even@right@foot\expandafter\endcsname
+ \csname sls@ps@#2@even@right@foot\endcsname
+ \expandafter\let\csname sls@ps@#1@odd@left@foot\expandafter\endcsname
+ \csname sls@ps@#2@odd@left@foot\endcsname
+ \expandafter\let\csname sls@ps@#1@odd@middle@foot\expandafter\endcsname
+ \csname sls@ps@#2@odd@middle@foot\endcsname
+ \expandafter\let\csname sls@ps@#1@odd@right@foot\expandafter\endcsname
+ \csname sls@ps@#2@odd@right@foot\endcsname
+}%
% \end{macrocode}
% \end{macro}%^^A \sls@init@@pair@page@style
% \begin{macro}{\sls@let@pair@page@style}
@@ -2377,22 +2185,20 @@
% \end{description}
% A little helper for \Macro{sls@init@pair@page@style}.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@let@pair@page@style{%
- \newcommand*{\sls@let@pair@page@style}[2]{%
- \expandafter\let\csname sls@ps@#2@even@left@head\endcsname #1%
- \expandafter\let\csname sls@ps@#2@even@middle@head\endcsname #1%
- \expandafter\let\csname sls@ps@#2@even@right@head\endcsname #1%
- \expandafter\let\csname sls@ps@#2@odd@left@head\endcsname #1%
- \expandafter\let\csname sls@ps@#2@odd@middle@head\endcsname #1%
- \expandafter\let\csname sls@ps@#2@odd@right@head\endcsname #1%
- \expandafter\let\csname sls@ps@#2@even@left@foot\endcsname #1%
- \expandafter\let\csname sls@ps@#2@even@middle@foot\endcsname #1%
- \expandafter\let\csname sls@ps@#2@even@right@foot\endcsname #1%
- \expandafter\let\csname sls@ps@#2@odd@left@foot\endcsname #1%
- \expandafter\let\csname sls@ps@#2@odd@middle@foot\endcsname #1%
- \expandafter\let\csname sls@ps@#2@odd@right@foot\endcsname #1%
- }%
-}
+\newcommand*{\sls@let@pair@page@style}[2]{%
+ \expandafter\let\csname sls@ps@#2@even@left@head\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@even@middle@head\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@even@right@head\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@odd@left@head\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@odd@middle@head\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@odd@right@head\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@even@left@foot\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@even@middle@foot\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@even@right@foot\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@odd@left@foot\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@odd@middle@foot\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@odd@right@foot\endcsname #1%
+}%
% \end{macrocode}
% \end{macro}%^^A \sls@let@pair@page@style
% \end{macro}%^^A \sls@init@pair@page@style
@@ -2409,57 +2215,55 @@
% \end{description}
% A little helper for \Macro{defpairofpagestyles}.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@def@pair@page@style@member{%
- \newcommand*{\sls@def@pair@page@style@member}[1]{%
- \defpagestyle{#1}{%
- {%
- \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@headwidth}{\LaTeXraggedright
- \strut\@nameuse{sls@ps@#1@even@left@head}\strut}}%
- \parbox{\sls@headwidth}{\LaTeXcentering
- \strut\@nameuse{sls@ps@#1@even@middle@head}\strut}%
- \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@headwidth}{\LaTeXraggedleft
- \strut\@nameuse{sls@ps@#1@even@right@head}\strut}}%
- }{%
- \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@headwidth}{\LaTeXraggedright
- \strut\@nameuse{sls@ps@#1@odd@left@head}\strut}}%
- \parbox{\sls@headwidth}{\LaTeXcentering
- \strut\@nameuse{sls@ps@#1@odd@middle@head}\strut}%
- \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@headwidth}{\LaTeXraggedleft
- \strut\@nameuse{sls@ps@#1@odd@right@head}\strut}}%
- }{%
- \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@headwidth}{\LaTeXraggedright
- \strut\@nameuse{sls@ps@#1@odd@left@head}\strut}}%
- \parbox{\sls@headwidth}{\LaTeXcentering
- \strut\@nameuse{sls@ps@#1@odd@middle@head}\strut}%
- \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@headwidth}{\LaTeXraggedleft
- \strut\@nameuse{sls@ps@#1@odd@right@head}\strut}}%
- }%
+\newcommand*{\sls@def@pair@page@style@member}[1]{%
+ \defpagestyle{#1}{%
+ {%
+ \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@headwidth}{\LaTeXraggedright
+ \strut\@nameuse{sls@ps@#1@even@left@head}\strut}}%
+ \parbox{\sls@headwidth}{\LaTeXcentering
+ \strut\@nameuse{sls@ps@#1@even@middle@head}\strut}%
+ \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@headwidth}{\LaTeXraggedleft
+ \strut\@nameuse{sls@ps@#1@even@right@head}\strut}}%
}{%
- {%
- \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@footwidth}{\LaTeXraggedright
- \strut\@nameuse{sls@ps@#1@even@left@foot}\strut}}%
- \parbox{\sls@footwidth}{\LaTeXcentering
- \strut\@nameuse{sls@ps@#1@even@middle@foot}\strut}%
- \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@footwidth}{\LaTeXraggedleft
- \strut\@nameuse{sls@ps@#1@even@right@foot}\strut}}%
- }{%
- \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@footwidth}{\LaTeXraggedright
- \strut\@nameuse{sls@ps@#1@odd@left@foot}\strut}}%
- \parbox{\sls@footwidth}{\LaTeXcentering
- \strut\@nameuse{sls@ps@#1@odd@middle@foot}\strut}%
- \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@footwidth}{\LaTeXraggedleft
- \strut\@nameuse{sls@ps@#1@odd@right@foot}\strut}}%
- }{%
- \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@footwidth}{\LaTeXraggedright
- \strut\@nameuse{sls@ps@#1@odd@left@foot}\strut}}%
- \parbox{\sls@footwidth}{\LaTeXcentering
- \strut\@nameuse{sls@ps@#1@odd@middle@foot}\strut}%
- \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@footwidth}{\LaTeXraggedleft
- \strut\@nameuse{sls@ps@#1@odd@right@foot}\strut}}%
- }%
+ \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@headwidth}{\LaTeXraggedright
+ \strut\@nameuse{sls@ps@#1@odd@left@head}\strut}}%
+ \parbox{\sls@headwidth}{\LaTeXcentering
+ \strut\@nameuse{sls@ps@#1@odd@middle@head}\strut}%
+ \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@headwidth}{\LaTeXraggedleft
+ \strut\@nameuse{sls@ps@#1@odd@right@head}\strut}}%
+ }{%
+ \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@headwidth}{\LaTeXraggedright
+ \strut\@nameuse{sls@ps@#1@odd@left@head}\strut}}%
+ \parbox{\sls@headwidth}{\LaTeXcentering
+ \strut\@nameuse{sls@ps@#1@odd@middle@head}\strut}%
+ \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@headwidth}{\LaTeXraggedleft
+ \strut\@nameuse{sls@ps@#1@odd@right@head}\strut}}%
+ }%
+ }{%
+ {%
+ \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@footwidth}{\LaTeXraggedright
+ \strut\@nameuse{sls@ps@#1@even@left@foot}\strut}}%
+ \parbox{\sls@footwidth}{\LaTeXcentering
+ \strut\@nameuse{sls@ps@#1@even@middle@foot}\strut}%
+ \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@footwidth}{\LaTeXraggedleft
+ \strut\@nameuse{sls@ps@#1@even@right@foot}\strut}}%
+ }{%
+ \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@footwidth}{\LaTeXraggedright
+ \strut\@nameuse{sls@ps@#1@odd@left@foot}\strut}}%
+ \parbox{\sls@footwidth}{\LaTeXcentering
+ \strut\@nameuse{sls@ps@#1@odd@middle@foot}\strut}%
+ \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@footwidth}{\LaTeXraggedleft
+ \strut\@nameuse{sls@ps@#1@odd@right@foot}\strut}}%
+ }{%
+ \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@footwidth}{\LaTeXraggedright
+ \strut\@nameuse{sls@ps@#1@odd@left@foot}\strut}}%
+ \parbox{\sls@footwidth}{\LaTeXcentering
+ \strut\@nameuse{sls@ps@#1@odd@middle@foot}\strut}%
+ \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@footwidth}{\LaTeXraggedleft
+ \strut\@nameuse{sls@ps@#1@odd@right@foot}\strut}}%
}%
}%
-}
+}%
%</body>
% \end{macrocode}
% \end{macro}%^^A \sls@def@pair@page@style@member
@@ -2471,83 +2275,77 @@
% See \Macro{defpairofpagestyles} for the arguments.
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\newpairofpagestyles{%
- \newcommand*{\newpairofpagestyles}[3][]{%
- \scr@ifundefinedorrelax{ps@#2}{%
- \@ifundefined{ps@plain.#2}{\defpairofpagestyles[#1]{#2}{#3}}{%
- \PackageError{scrlayer-scrpage}{%
- Plain page style of `#2' already defined}{%
- You may only define a new pair of page styles, if neither the style
- itself\MessageBreak
- nor it's plain page style has already been defined.\MessageBreak
- You may use only \string\defpairofpagestyles\space or
- \string\providepairofpagestyles\space with partly\MessageBreak
- already defined page styles.\MessageBreak
- If you'll continue, your command will be ignored.%
- }%
- }%
- }{%
+\newcommand*{\newpairofpagestyles}[3][]{%
+ \scr@ifundefinedorrelax{ps@#2}{%
+ \@ifundefined{ps@plain.#2}{\defpairofpagestyles[#1]{#2}{#3}}{%
\PackageError{scrlayer-scrpage}{%
- Page style `#2' already defined}{%
+ Plain page style of `#2' already defined}{%
You may only define a new pair of page styles, if neither the style
itself\MessageBreak
nor it's plain page style has already been defined.\MessageBreak
- You may use either \string\renewpairsofpagestyles,
- \string\defpairofpagestyles, or\MessageBreak
- \string\providepairofpagestyles\space with already defined page
- styles.\MessageBreak
+ You may use only \string\defpairofpagestyles\space or
+ \string\providepairofpagestyles\space with partly\MessageBreak
+ already defined page styles.\MessageBreak
If you'll continue, your command will be ignored.%
}%
}%
+ }{%
+ \PackageError{scrlayer-scrpage}{%
+ Page style `#2' already defined}{%
+ You may only define a new pair of page styles, if neither the style
+ itself\MessageBreak
+ nor it's plain page style has already been defined.\MessageBreak
+ You may use either \string\renewpairsofpagestyles,
+ \string\defpairofpagestyles, or\MessageBreak
+ \string\providepairofpagestyles\space with already defined page
+ styles.\MessageBreak
+ If you'll continue, your command will be ignored.%
+ }%
}%
-}
-\scrlayerAddToInterface\renewpairofpagestyles{%
- \newcommand*{\renewpairofpagestyles}[3][]{%
- \scr@ifundefinedorrelax{ps@#2}{%
+}%
+\newcommand*{\renewpairofpagestyles}[3][]{%
+ \scr@ifundefinedorrelax{ps@#2}{%
+ \PackageError{scrlayer-scrpage}{%
+ Undefined page style `#2'}{%
+ You may only redefine existing pairs of page styles. You may use
+ either\MessageBreak
+ \string\newpairsofpagestyles, \string\defpairofpagestyles, or
+ \string\providepairofpagestyles\MessageBreak
+ with not yet defined page styles.\MessageBreak
+ If you'll continue, your command will be ignored.%
+ }%
+ }{%
+ \@ifundefined{ps@plain.#2}{%
\PackageError{scrlayer-scrpage}{%
- Undefined page style `#2'}{%
+ Undefined plain page style of `#2'}{%
You may only redefine existing pairs of page styles. You may use
either\MessageBreak
- \string\newpairsofpagestyles, \string\defpairofpagestyles, or
- \string\providepairofpagestyles\MessageBreak
- with not yet defined page styles.\MessageBreak
+ \string\defpairofpagestyles\space or
+ \string\providepairofpagestyles\space with partly already
+ defined\MessageBreak
+ page styles.\MessageBreak
If you'll continue, your command will be ignored.%
}%
- }{%
- \@ifundefined{ps@plain.#2}{%
- \PackageError{scrlayer-scrpage}{%
- Undefined plain page style of `#2'}{%
- You may only redefine existing pairs of page styles. You may use
- either\MessageBreak
- \string\defpairofpagestyles\space or
- \string\providepairofpagestyles\space with partly already
- defined\MessageBreak
- page styles.\MessageBreak
- If you'll continue, your command will be ignored.%
- }%
- }{\defpairofpagestyles[#1]{#2}{#3}}%
- }%
+ }{\defpairofpagestyles[#1]{#2}{#3}}%
}%
-}
-\scrlayerAddToInterface\providepairofpagestyles{%
- \newcommand*{\providepairofpagestyles}[3][]{%
- \scr@ifundefinedorrelax{ps@#2}{%
- \@ifundefined{ps@plain.#2}{\defpairofpagestyles[#1]{#2}{#3}}{%
-%<*trace>
- \PackageInfo{scrlayer-scrpage}{%
- Plain page style of `#2' already\MessageBreak
- defined. Definition ignored}%
-%</trace>
- }%
- }{%
+}%
+\newcommand*{\providepairofpagestyles}[3][]{%
+ \scr@ifundefinedorrelax{ps@#2}{%
+ \@ifundefined{ps@plain.#2}{\defpairofpagestyles[#1]{#2}{#3}}{%
%<*trace>
\PackageInfo{scrlayer-scrpage}{%
- Page style of `#2' already defined.\MessageBreak
- Definition ignored}%
+ Plain page style of `#2' already\MessageBreak
+ defined. Definition ignored}%
%</trace>
}%
+ }{%
+%<*trace>
+ \PackageInfo{scrlayer-scrpage}{%
+ Page style of `#2' already defined.\MessageBreak
+ Definition ignored}%
+%</trace>
}%
-}
+}%
%</body>
% \end{macrocode}
% \end{macro}%^^A \providepairofpagestyles
@@ -2567,7 +2365,6 @@
% \texttt{scrplain}. So we make a kind of alias:
% \begin{macrocode}
\DeclarePageStyleAlias{scrplain}{plain.scrheadings}
-\scrlayerOnAutoRemoveInterface{\DestroyPageStyleAlias{scrplain}}
%</body>
% \end{macrocode}
% \end{macro}%^^A \ps@scrplain
@@ -2653,9 +2450,7 @@
% member.
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\ihead{%
- \newcommand*{\ihead}{\kernel@ifstar {\@dblarg\@@@ihead}{\@ihead}}%
-}
+\newcommand*{\ihead}{\kernel@ifstar {\@dblarg\@@@ihead}{\@ihead}}%
% \end{macrocode}
% \begin{macro}{\@ihead}
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
@@ -2666,23 +2461,15 @@
% \changes{v3.27}{2019/04/05}{made long}%^^A
% Two helpers for the previous one to double the command and it's arguments.
% \begin{macrocode}
-\scrlayerAddToInterface\@ihead{%
- \newcommand*{\@ihead}{\kernel@ifnextchar[{\@@@ihead}{\@@ihead}}%
-}
-\scrlayerAddToInterface\@@ihead{%
- \newcommand{\@@ihead}[1]{\rehead{#1}\lohead{#1}}%
-}
-\scrlayerAddToInterface\@@@ihead{%
- \newcommand{\@@@ihead}[2][]{\rehead[{#1}]{#2}\lohead[{#1}]{#2}}%
-}
+\newcommand*{\@ihead}{\kernel@ifnextchar[{\@@@ihead}{\@@ihead}}%
+\newcommand{\@@ihead}[1]{\rehead{#1}\lohead{#1}}%
+\newcommand{\@@@ihead}[2][]{\rehead[{#1}]{#2}\lohead[{#1}]{#2}}%
% \end{macrocode}
% \end{macro}%^^A \@@@ihead
% \end{macro}%^^A \@@ihead
% \end{macro}%^^A \@ihead
% \begin{macrocode}
-\scrlayerAddToInterface\ohead{%
- \newcommand*{\ohead}{\kernel@ifstar {\@dblarg\@@@ohead}{\@ohead}}%
-}
+\newcommand*{\ohead}{\kernel@ifstar {\@dblarg\@@@ohead}{\@ohead}}%
% \end{macrocode}
% \begin{macro}{\@ohead}
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
@@ -2693,23 +2480,15 @@
% \changes{v3.27}{2019/04/05}{made long}%^^A
% Two helpers for the previous one to double the command and it's arguments.
% \begin{macrocode}
-\scrlayerAddToInterface\@ohead{%
- \newcommand*{\@ohead}{\kernel@ifnextchar[{\@@@ohead}{\@@ohead}}%
-}
-\scrlayerAddToInterface\@@ohead{%
- \newcommand{\@@ohead}[1]{\lehead{#1}\rohead{#1}}%
-}
-\scrlayerAddToInterface\@@@ohead{%
- \newcommand{\@@@ohead}[2][]{\lehead[{#1}]{#2}\rohead[{#1}]{#2}}%
-}
+\newcommand*{\@ohead}{\kernel@ifnextchar[{\@@@ohead}{\@@ohead}}%
+\newcommand{\@@ohead}[1]{\lehead{#1}\rohead{#1}}%
+\newcommand{\@@@ohead}[2][]{\lehead[{#1}]{#2}\rohead[{#1}]{#2}}%
% \end{macrocode}
% \end{macro}%^^A \@@@ohead
% \end{macro}%^^A \@@ohead
% \end{macro}%^^A \@ohead
% \begin{macrocode}
-\scrlayerAddToInterface\chead{%
- \newcommand*{\chead}{\kernel@ifstar {\@dblarg\@@@chead}{\@chead}}%
-}
+\newcommand*{\chead}{\kernel@ifstar {\@dblarg\@@@chead}{\@chead}}%
% \end{macrocode}
% \begin{macro}{\@chead}
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
@@ -2720,43 +2499,23 @@
% \changes{v3.27}{2019/04/05}{made long}%^^A
% Two helpers for the previous one to double the command and it's arguments.
% \begin{macrocode}
-\scrlayerAddToInterface\@chead{%
- \newcommand*{\@chead}{\kernel@ifnextchar[{\@@@chead}{\@@chead}}%
-}
-\scrlayerAddToInterface\@@chead{%
- \newcommand{\@@chead}[1]{\cehead{#1}\cohead{#1}}%
-}
-\scrlayerAddToInterface\@@@chead{%
- \newcommand{\@@@chead}[2][]{\cehead[{#1}]{#2}\cohead[{#1}]{#2}}%
-}
+\newcommand*{\@chead}{\kernel@ifnextchar[{\@@@chead}{\@@chead}}%
+\newcommand{\@@chead}[1]{\cehead{#1}\cohead{#1}}%
+\newcommand{\@@@chead}[2][]{\cehead[{#1}]{#2}\cohead[{#1}]{#2}}%
% \end{macrocode}
% \end{macro}%^^A \@@@chead
% \end{macro}%^^A \@@chead
% \end{macro}%^^A \@chead
% \begin{macrocode}
-\scrlayerAddToInterface\lehead{%
- \newcommand*{\lehead}{\sls@renewelement{even}{left}{head}}%
-}
-\scrlayerAddToInterface\lohead{%
- \newcommand*{\lohead}{\sls@renewelement{odd}{left}{head}}%
-}
-\scrlayerAddToInterface\rehead{%
- \newcommand*{\rehead}{\sls@renewelement{even}{right}{head}}%
-}
-\scrlayerAddToInterface\rohead{%
- \newcommand*{\rohead}{\sls@renewelement{odd}{right}{head}}%
-}
-\scrlayerAddToInterface\cehead{%
- \newcommand*{\cehead}{\sls@renewelement{even}{middle}{head}}%
-}
-\scrlayerAddToInterface\cohead{%
- \newcommand*{\cohead}{\sls@renewelement{odd}{middle}{head}}%
-}
+\newcommand*{\lehead}{\sls@renewelement{even}{left}{head}}%
+\newcommand*{\lohead}{\sls@renewelement{odd}{left}{head}}%
+\newcommand*{\rehead}{\sls@renewelement{even}{right}{head}}%
+\newcommand*{\rohead}{\sls@renewelement{odd}{right}{head}}%
+\newcommand*{\cehead}{\sls@renewelement{even}{middle}{head}}%
+\newcommand*{\cohead}{\sls@renewelement{odd}{middle}{head}}%
% \end{macrocode}
% \begin{macrocode}
-\scrlayerAddToInterface\ifoot{%
- \newcommand*{\ifoot}{\kernel@ifstar {\@dblarg\@@@ifoot}{\@ifoot}}%
-}
+\newcommand*{\ifoot}{\kernel@ifstar {\@dblarg\@@@ifoot}{\@ifoot}}%
% \end{macrocode}
% \begin{macro}{\@ifoot}
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
@@ -2767,23 +2526,15 @@
% \changes{v3.27}{2019/04/05}{made long}%^^A
% Two helpers for the previous one to double the command and it's arguments.
% \begin{macrocode}
-\scrlayerAddToInterface\@ifoot{%
- \newcommand*{\@ifoot}{\kernel@ifnextchar[{\@@@ifoot}{\@@ifoot}}%
-}
-\scrlayerAddToInterface\@@ifoot{%
- \newcommand{\@@ifoot}[1]{\refoot{#1}\lofoot{#1}}%
-}
-\scrlayerAddToInterface\@@@ifoot{%
- \newcommand{\@@@ifoot}[2][]{\refoot[{#1}]{#2}\lofoot[{#1}]{#2}}%
-}
+\newcommand*{\@ifoot}{\kernel@ifnextchar[{\@@@ifoot}{\@@ifoot}}%
+\newcommand{\@@ifoot}[1]{\refoot{#1}\lofoot{#1}}%
+\newcommand{\@@@ifoot}[2][]{\refoot[{#1}]{#2}\lofoot[{#1}]{#2}}%
% \end{macrocode}
% \end{macro}%^^A \@@@ifoot
% \end{macro}%^^A \@@ifoot
% \end{macro}%^^A \@ifoot
% \begin{macrocode}
-\scrlayerAddToInterface\ofoot{%
- \newcommand*{\ofoot}{\kernel@ifstar {\@dblarg\@@@ofoot}{\@ofoot}}%
-}
+\newcommand*{\ofoot}{\kernel@ifstar {\@dblarg\@@@ofoot}{\@ofoot}}%
% \end{macrocode}
% \begin{macro}{\@ofoot}
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
@@ -2794,23 +2545,15 @@
% \changes{v3.27}{2019/04/05}{made long}%^^A
% Two helpers for the previous one to double the command and it's arguments.
% \begin{macrocode}
-\scrlayerAddToInterface\@ofoot{%
- \newcommand*{\@ofoot}{\kernel@ifnextchar[{\@@@ofoot}{\@@ofoot}}%
-}
-\scrlayerAddToInterface\@@ofoot{%
- \newcommand{\@@ofoot}[1]{\lefoot{#1}\rofoot{#1}}%
-}
-\scrlayerAddToInterface\@@@ofoot{%
- \newcommand{\@@@ofoot}[2][]{\lefoot[{#1}]{#2}\rofoot[{#1}]{#2}}%
-}
+\newcommand*{\@ofoot}{\kernel@ifnextchar[{\@@@ofoot}{\@@ofoot}}%
+\newcommand{\@@ofoot}[1]{\lefoot{#1}\rofoot{#1}}%
+\newcommand{\@@@ofoot}[2][]{\lefoot[{#1}]{#2}\rofoot[{#1}]{#2}}%
% \end{macrocode}
% \end{macro}%^^A \@@@ofoot
% \end{macro}%^^A \@@ofoot
% \end{macro}%^^A \@ofoot
% \begin{macrocode}
-\scrlayerAddToInterface\cfoot{%
- \newcommand*{\cfoot}{\kernel@ifstar {\@dblarg\@@@cfoot}{\@cfoot}}%
-}
+\newcommand*{\cfoot}{\kernel@ifstar {\@dblarg\@@@cfoot}{\@cfoot}}%
% \end{macrocode}
% \begin{macro}{\@cfoot}
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
@@ -2821,38 +2564,20 @@
% \changes{v3.27}{2019/04/05}{made long}%^^A
% Two helpers for the previous one to double the command and it's arguments.
% \begin{macrocode}
-\scrlayerAddToInterface\@cfoot{%
- \newcommand*{\@cfoot}{\kernel@ifnextchar[{\@@@cfoot}{\@@cfoot}}%
-}
-\scrlayerAddToInterface\@@cfoot{%
- \newcommand{\@@cfoot}[1]{\cefoot{#1}\cofoot{#1}}%
-}
-\scrlayerAddToInterface\@@@cfoot{%
- \newcommand{\@@@cfoot}[2][]{\cefoot[{#1}]{#2}\cofoot[{#1}]{#2}}%
-}
+\newcommand*{\@cfoot}{\kernel@ifnextchar[{\@@@cfoot}{\@@cfoot}}%
+\newcommand{\@@cfoot}[1]{\cefoot{#1}\cofoot{#1}}%
+\newcommand{\@@@cfoot}[2][]{\cefoot[{#1}]{#2}\cofoot[{#1}]{#2}}%
% \end{macrocode}
% \end{macro}%^^A \@@@cfoot
% \end{macro}%^^A \@@cfoot
% \end{macro}%^^A \@cfoot
% \begin{macrocode}
-\scrlayerAddToInterface\lefoot{%
- \newcommand*{\lefoot}{\sls@renewelement{even}{left}{foot}}%
-}
-\scrlayerAddToInterface\lofoot{%
- \newcommand*{\lofoot}{\sls@renewelement{odd}{left}{foot}}%
-}
-\scrlayerAddToInterface\refoot{%
- \newcommand*{\refoot}{\sls@renewelement{even}{right}{foot}}%
-}
-\scrlayerAddToInterface\rofoot{%
- \newcommand*{\rofoot}{\sls@renewelement{odd}{right}{foot}}%
-}
-\scrlayerAddToInterface\cefoot{%
- \newcommand*{\cefoot}{\sls@renewelement{even}{middle}{foot}}%
-}
-\scrlayerAddToInterface\cofoot{%
- \newcommand*{\cofoot}{\sls@renewelement{odd}{middle}{foot}}%
-}
+\newcommand*{\lefoot}{\sls@renewelement{even}{left}{foot}}%
+\newcommand*{\lofoot}{\sls@renewelement{odd}{left}{foot}}%
+\newcommand*{\refoot}{\sls@renewelement{even}{right}{foot}}%
+\newcommand*{\rofoot}{\sls@renewelement{odd}{right}{foot}}%
+\newcommand*{\cefoot}{\sls@renewelement{even}{middle}{foot}}%
+\newcommand*{\cofoot}{\sls@renewelement{odd}{middle}{foot}}%
% \end{macrocode}
% \begin{macro}{\sls@renewelement}
% \begin{macro}{\sls@@renewelement}
@@ -2868,43 +2593,34 @@
% \changes{v3.27}{2019/04/05}{made long}%^^A
% Little helper for several of the above commands.
% \begin{macrocode}
-\scrlayerAddToInterface\sls@renewelement{%
- \newcommand*{\sls@renewelement}[3]{%
- \kernel@ifstar{\@dblarg{\sls@@@@renewelement{#1}{#2}{#3}}}%
- {\sls@@renewelement{#1}{#2}{#3}}%
- }%
-}
-\scrlayerAddToInterface\sls@@renewelement{%
- \newcommand*{\sls@@renewelement}[3]{%
- \kernel@ifnextchar[%]
- {\sls@@@@renewelement{#1}{#2}{#3}}%
- {\sls@@@renewelement{#1}{#2}{#3}}%
- }%
-}
-\scrlayerAddToInterface\sls@@@renewelement{%
- \newcommand{\sls@@@renewelement}[4]{%
- \scr@ifundefinedorrelax{sls@ps@\sls@currentheadings @#1@#2@#3}{%
- \@namedef{sls@ps@scrheadings@#1@#2@#3}{#4}%
- }{%
- \@namedef{sls@ps@\sls@currentheadings @#1@#2@#3}{#4}%
- }%
- }%
-}
-\scrlayerAddToInterface\sls@@@@renewelement{%
- \long\def\sls@@@@renewelement#1#2#3[#4]#5{%
- \sls@@renewplainelement{#1}{#2}{#3}{#4}%
- \sls@@@renewelement{#1}{#2}{#3}{#5}%
+\newcommand*{\sls@renewelement}[3]{%
+ \kernel@ifstar{\@dblarg{\sls@@@@renewelement{#1}{#2}{#3}}}%
+ {\sls@@renewelement{#1}{#2}{#3}}%
+}%
+\newcommand*{\sls@@renewelement}[3]{%
+ \kernel@ifnextchar[%]
+ {\sls@@@@renewelement{#1}{#2}{#3}}%
+ {\sls@@@renewelement{#1}{#2}{#3}}%
+}%
+\newcommand{\sls@@@renewelement}[4]{%
+ \scr@ifundefinedorrelax{sls@ps@\sls@currentheadings @#1@#2@#3}{%
+ \@namedef{sls@ps@scrheadings@#1@#2@#3}{#4}%
+ }{%
+ \@namedef{sls@ps@\sls@currentheadings @#1@#2@#3}{#4}%
}%
-}
-\scrlayerAddToInterface\sls@@renewplainelement{%
- \newcommand{\sls@@renewplainelement}[4]{%
- \scr@ifundefinedorrelax{sls@ps@\sls@currentplain @#1@#2@#3}{%
- \@namedef{sls@ps@plain.scrheadings@#1@#2@#3}{#4}%
- }{%
- \@namedef{sls@ps@\sls@currentplain @#1@#2@#3}{#4}%
- }%
+}%
+\newcommand*{\sls@@@@renewelement}{}
+\long\def\sls@@@@renewelement#1#2#3[#4]#5{%
+ \sls@@renewplainelement{#1}{#2}{#3}{#4}%
+ \sls@@@renewelement{#1}{#2}{#3}{#5}%
+}%
+\newcommand{\sls@@renewplainelement}[4]{%
+ \scr@ifundefinedorrelax{sls@ps@\sls@currentplain @#1@#2@#3}{%
+ \@namedef{sls@ps@plain.scrheadings@#1@#2@#3}{#4}%
+ }{%
+ \@namedef{sls@ps@\sls@currentplain @#1@#2@#3}{#4}%
}%
-}
+}%
%</body>
% \end{macrocode}
% \end{macro}%^^A \sls@@renewplainelement
@@ -2933,18 +2649,21 @@
%
% \begin{macro}{\clearmainofpairofpagestyles}
% \begin{macro}{\clearscrheadings}
+% \changes{v3.32}{2020/09/11}{deprecation warning added}
% Maybe you want to clear the currently defined head and foot. First
% let's clear only scrheadings pagestyle but not scrplain pagestyle.
% We do this simply using the already known command:
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\clearmainofpairofpagestyles{%
- \newcommand*{\clearmainofpairofpagestyles}{%
- \ihead{}\chead{}\ohead{}\ifoot{}\cfoot{}\ofoot{}%
+\newcommand*{\clearmainofpairofpagestyles}{%
+ \ihead{}\chead{}\ohead{}\ifoot{}\cfoot{}\ofoot{}%
+}%
+\newcommand*{\clearscrheadings}{%
+ \PackageWarning{scrlayer-scrpage}{%
+ replacing deprecated \string\clearscrheading\space by\MessageBreak
+ \string\clearmainofpairofpagestyles
}%
-}
-\scrlayerAddToInterface\clearscrheadings{%
- \let\clearscrheadings\clearmainofpairofpagestyles
+ \clearmainofpairofpagestyles
}
%</body>
% \end{macrocode}
@@ -2952,27 +2671,30 @@
% \end{macro}%^^A \clearmainofpairofpagestyles
% \begin{macro}{\clearplainofpairofpagestyles}
% \begin{macro}{\clearscrplain}
+% \changes{v3.32}{2020/09/11}{deprecation warning added}
% Now, we use the not recommended feature to set up a plain style:
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\clearplainofpairofpagestyles{%
- \newcommand*{\clearplainofpairofpagestyles}{%
- \sls@@renewplainelement{odd}{left}{head}{}%
- \sls@@renewplainelement{odd}{right}{head}{}%
- \sls@@renewplainelement{odd}{middle}{head}{}%
- \sls@@renewplainelement{even}{left}{head}{}%
- \sls@@renewplainelement{even}{right}{head}{}%
- \sls@@renewplainelement{even}{middle}{head}{}%
- \sls@@renewplainelement{odd}{left}{foot}{}%
- \sls@@renewplainelement{odd}{right}{foot}{}%
- \sls@@renewplainelement{odd}{middle}{foot}{}%
- \sls@@renewplainelement{even}{left}{foot}{}%
- \sls@@renewplainelement{even}{right}{foot}{}%
- \sls@@renewplainelement{even}{middle}{foot}{}%
+\newcommand*{\clearplainofpairofpagestyles}{%
+ \sls@@renewplainelement{odd}{left}{head}{}%
+ \sls@@renewplainelement{odd}{right}{head}{}%
+ \sls@@renewplainelement{odd}{middle}{head}{}%
+ \sls@@renewplainelement{even}{left}{head}{}%
+ \sls@@renewplainelement{even}{right}{head}{}%
+ \sls@@renewplainelement{even}{middle}{head}{}%
+ \sls@@renewplainelement{odd}{left}{foot}{}%
+ \sls@@renewplainelement{odd}{right}{foot}{}%
+ \sls@@renewplainelement{odd}{middle}{foot}{}%
+ \sls@@renewplainelement{even}{left}{foot}{}%
+ \sls@@renewplainelement{even}{right}{foot}{}%
+ \sls@@renewplainelement{even}{middle}{foot}{}%
+}%
+\newcommand*{\clearscrplain}{%
+ \PackageWarning{scrlayer-scrpage}{%
+ replacing deprecated \string\clearscrplain\space by\MessageBreak
+ \string\clearplainofpairofpagestyles
}%
-}
-\scrlayerAddToInterface\clearscrplain{%
- \let\clearscrplain\clearplainofpairofpagestyles
+ \clearplainofpairofpagestyles
}
%</body>
% \end{macrocode}
@@ -2980,16 +2702,19 @@
% \end{macro}%^^A \clearplainofpairofpagestyles
% \begin{macro}{\clearpairofpagestyles}
% \begin{macro}{\clearscrheadfoot}
+% \changes{v3.32}{2020/09/11}{deprecation warning added}
% Last but not least we clean up both, the main and the plain:
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\clearpairofpagestyles{%
- \newcommand*{\clearpairofpagestyles}{%
- \ihead[]{}\chead[]{}\ohead[]{}\ifoot[]{}\cfoot[]{}\ofoot[]{}%
+\newcommand*{\clearpairofpagestyles}{%
+ \ihead[]{}\chead[]{}\ohead[]{}\ifoot[]{}\cfoot[]{}\ofoot[]{}%
+}%
+\newcommand*{\clearscrheadfoot}{%
+ \PackageWarning{scrlayer-scrpage}{%
+ replacing deprecated \string\clearscrheadfoot\space by\MessageBreak
+ \string\clearpairofpagestyles
}%
-}
-\scrlayerAddToInterface\clearscrheadfoot{%
- \let\clearscrheadfoot\clearpairofpagestyles
+ \clearpairofpagestyles
}
%</body>
% \end{macrocode}
@@ -3000,24 +2725,22 @@
% Not longer supported:
% \begin{macrocode}
%<*body>
-\scrlayerAddToInterface\ps@useheadings{%
- \newcommand*\ps@useheadings{%
- \PackageWarning{scrlayer-scrpage}{incompatible page style!\MessageBreak
- Page styles like `headings' and `plain'\MessageBreak
- are incompatible with the page styles\MessageBreak
- of scrlayer-scrpage. You shouldn't mix\MessageBreak
- them up. Therefore page style\MessageBreak
- `useheadings' is not longer provided.\MessageBreak
- Usage is deprecated and will be replaced\MessageBreak
- by `scrheadings'%
- }%
- \let\ps@useheadings\ps@scrheadings
- \ps@useheadings
+\newcommand*\ps@useheadings{%
+ \PackageWarning{scrlayer-scrpage}{incompatible page style!\MessageBreak
+ Page styles like `headings' and `plain'\MessageBreak
+ are incompatible with the page styles\MessageBreak
+ of scrlayer-scrpage. You shouldn't mix\MessageBreak
+ them up. Therefore page style\MessageBreak
+ `useheadings' is not longer provided.\MessageBreak
+ Usage is deprecated and will be replaced\MessageBreak
+ by `scrheadings'%
}%
-}
-\scrlayerAddCsToInterface{ps@plain.useheadings}{%
- \@namedef{ps@plain.useheadings}{\@nameuse{ps@plain.scrheadings}}%
-}
+ \let\ps@useheadings\ps@scrheadings
+ \ps@useheadings
+}%
+\expandafter\newcommand\expandafter*\csname ps@plain.useheadings\endcsname{%
+ \@nameuse{ps@plain.scrheadings}%
+}%
%</body>
% \end{macrocode}
% \end{macro}%^^A \ps@useheadings
diff --git a/macros/latex/contrib/koma-script/source/scrlayer.dtx b/macros/latex/contrib/koma-script/source/scrlayer.dtx
index 50c44bd332..5bc3153887 100644
--- a/macros/latex/contrib/koma-script/source/scrlayer.dtx
+++ b/macros/latex/contrib/koma-script/source/scrlayer.dtx
@@ -1,8 +1,7 @@
-% \CheckSum{4107}
% \iffalse^^A meta-comment
% ======================================================================
% scrlayer.dtx
-% Copyright (c) Markus Kohm, 2012-2019
+% Copyright (c) Markus Kohm, 2012-2020
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
@@ -20,7 +19,7 @@
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrlayer.dtx
-% Copyright (c) Markus Kohm, 2012-2019
+% Copyright (c) Markus Kohm, 2012-2020
%
% Diese Datei ist Teil der LaTeX2e KOMA-Script-Sammlung.
%
@@ -38,26 +37,8 @@
%
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
% ======================================================================
-% \fi^^A meta-comment
-%
-% \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^^A meta-comment
-%%% From File: $Id: scrlayer.dtx 3411 2019-11-28 09:11:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 3533 2020-09-11 13:32:10Z kohm $
%<identify>%%% (run: identify)
%<init>%%% (run: init)
%<options>%%% (run: options)
@@ -67,9 +48,9 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2019-11-28 10:11:27 +0100 (Thu, 28 Nov 2019) $
+ \filedate$Date: 2020-09-11 15:32:10 +0200 (Fri, 11 Sep 2020) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
- \filerevision$Revision: 3411 $
+ \filerevision$Revision: 3533 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrlayer.dtx}%
@@ -2033,9 +2014,10 @@
% shouldn't matter, because layers with, e.g.,
% \Macro{if@scr@l@\dots@nonfloatpage}=\Macro{relax} and
% \Macro{if@scr@l@\dots@floatpage}=\Macro{relax} won't be output ever. This
-% command may and should be used by interfaces via
+% command could be used by interfaces via
% \Macro{scrlayerOnAutoRemoveInterface} to remove the generated
-% layers. Therefore it only destroys existing layers and doesn't care for not
+% layers, if the interface commands wouldn't be depreacted.
+% However, it only destroys existing layers and doesn't care for not
% existing.
% \begin{macrocode}
%<*package&body>
@@ -3992,8 +3974,9 @@
% Destroys the given layer page style but not the layers! If the page style is
% the current page style, the empty page style an empty page style will be
% activated. If the special page style is valid an the destroyed one, this
-% will be removed. This command may be used, e.g., at
-% \Macro{scrlayerOnAutoRemoveInterface} after destroying the layers.
+% will be removed. This command could be used, e.g., at
+% \Macro{scrlayerOnAutoRemoveInterface} after destroying the layers. However,
+% the interface commands are deprecated.
% \begin{macrocode}
%<*package&body>
\newcommand*{\DestroyRealLayerPageStyle}[1]{%
@@ -4133,6 +4116,8 @@
%
% \subsection{Declaration of End User Interfaces}
%
+% \changes{v3.32}{2020/09/11}{the interface commands are deprecated}
+%
% The package also supports an interface for loading end user interfaces.
% Maybe it would be a good idea to move this to \Package{scrbase}, but
% currently it is not needed.
@@ -4150,6 +4135,7 @@
% \begin{macrocode}
%<*package&body>
\newcommand*{\scrlayerAddToInterface}[2][\@currname.\@currext]{%
+ \scrlayer@report@deprecated{#1}{\scrlayerAddToInterface}%
\begingroup
\edef\reserve@a{%
\noexpand\scrlayerAddCsToInterface[#1]{\expandafter\@gobble\string #2}%
@@ -4157,6 +4143,7 @@
\expandafter\endgroup\reserve@a
}
\newcommand{\scrlayerAddCsToInterface}[3][\@currname.\@currext]{%
+ \scrlayer@report@deprecated{#1}{\scrlayerAddCsToInterface}%
\@ifundefined{scrlayer@#1@commandlist}{%
\PackageError{scrlayer}{unkown interface `#1'}{%
I've been told to add a command sequence to an interface, that hasn't
@@ -4253,6 +4240,7 @@
% \end{description}
% \begin{macrocode}
\newcommand*\scrlayer@AddCsToInterface[2][\@currname.\@currext]{%
+ \scrlayer@report@deprecated{#1}{\scrlayer@AddCsToInterface}%
\expandafter\expandafter\expandafter\def\expandafter
\csname scrlayer@#1@commandlist\expandafter\expandafter\expandafter\endcsname
\expandafter\expandafter\expandafter{%
@@ -4304,6 +4292,7 @@
%</package>
%<*interface>
\KOMA@key{autoremoveinterfaces}[true]{%
+ \scrlayer@report@deprecated{#1}{autoremoveinterface}%
\KOMA@set@ifkey{autoremoveinterfaces}{scrlayer@autoremoveinterfaces}{#1}%
\KOMA@kav@replacebool{.scrlayer.sty}{autoremoveinterfaces}
{scrlayer@autoremoveinterfaces}%
@@ -4334,6 +4323,7 @@
% \begin{macrocode}
%<*package&body>
\newcommand*{\scrlayerInitInterface}[1][\@currname.\@currext]{%
+ \scrlayer@report@deprecated{#1}{\scrlayerInitInterface}%
\@ifundefined{scrlayer@#1@commandlist}{%
\@namedef{scrlayer@#1@commandlist}{}%
}{%
@@ -4353,10 +4343,6 @@
}
%</package&body>
% \end{macrocode}
-% The initialisation has to be done by each interface package:
-% \begin{macrocode}
-%<interface&init>\scrlayerInitInterface
-% \end{macrocode}
% \end{macro}%^^A \scrlayerInitInterface
%
% \begin{macro}{\scrlayerOnAutoRemoveInterface}
@@ -4370,6 +4356,7 @@
% \begin{macrocode}
%<*package&body>
\newcommand*{\scrlayerOnAutoRemoveInterface}[2][\@currname.\@currext]{%
+ \scrlayer@report@deprecated{#1}{\scrlayerOnAutoRemoveInterface}%
\@ifundefined{scrlayer@#1@onremove}{\@namedef{scrlayer@#1@onremove}{}}{}%
\expandafter\l@addto@macro\csname scrlayer@#1@onremove\endcsname{#2}%
}
@@ -4377,6 +4364,25 @@
% \end{macrocode}
% \end{macro}%^^A \scrlayerOnAutoRemoveInterface
%
+% \begin{macro}{\scrlayer@report@deprecated}
+% \changes{v3.32}{2020/09/11}{new (internal)}
+% Report that the deprecated interface commands are used but should not. But
+% report this only once per interface.
+% \begin{macrocode}
+%<*package&init>
+\newcommand*{\scrlayer@report@deprecated}[2]{%
+ \@ifundefined{scrlayer@deprecated@reported@for@#1}{%
+ \PackageWarning{scrlayer}{%
+ Deprecated interface detected for `#1'.\MessageBreak
+ There isn't any support for using, e.g.,\MessageBreak
+ `\string #2'%
+ }%
+ \@namedef{scrlayer@deprecated@reported@for@#1}{\string #2}%
+ }{}%
+}
+%</package&init>
+% \end{macrocode}
+% \end{macro}
%
% \iffalse^^A meta-comment
%</package|interface|class>
diff --git a/macros/latex/contrib/koma-script/source/scrlfile-hook.dtx b/macros/latex/contrib/koma-script/source/scrlfile-hook.dtx
new file mode 100644
index 0000000000..1f944139be
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrlfile-hook.dtx
@@ -0,0 +1,634 @@
+% \iffalse^^A meta-comment
+% ======================================================================
+% scrlfile-hook.dtx
+% Copyright (c) Markus Kohm, 2020
+%
+% This file is part of the work `scrlfile' which 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.
+% ----------------------------------------------------------------------
+% scrlfile-hook.dtx
+% Copyright (c) Markus Kohm, 2020
+%
+% Diese Datei ist Teil des Werks `scrlfile', das wiederum Teil des
+% LaTeX2e KOMA-Script Pakets ist.
+%
+% 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 aufgeführten Dateien.
+% ======================================================================
+%
+%%% From File: $Id: scrlfile-hook.dtx$
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2020-09-17 14:01:13 +0200 (Thu, 17 Sep 2020) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 3544 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrlfile-hook.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script package source
+ }%
+\reserved@a
+%</dtx>
+%<package>\ProvidesPackage{scrlfile-hook}[%
+%!KOMAScriptVersion
+%<package> package
+ (using LaTeX hooks)]
+%<*dtx>
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHTFROM}{2002}
+ \generate{\usepreamble\defaultpreamble
+ \file{scrlfile-hook.sty}{%
+ \from{scrlfile-hook.dtx}{package}%
+ }%
+ }%
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+\documentclass{l3doc}
+\usepackage[english]{babel}
+\DeclareRobustCommand{\KOMAScript}{\textsf{K\kern.05em O\kern.05em%
+ M\kern.05em A\kern.1em-\kern.1em Script}}
+\CodelineIndex
+\GetFileInfo{scrlfile-hook.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \thanks{This file is revision \fileversion\ of file \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm\thanks{mailto:komascript@gmx.info}}
+
+\begin{document}
+ \maketitle
+ \begin{abstract}
+ This package provides hooks before and after loading files, packages or
+ classes. It also provides a hook after the last \cs{clearpage} of the
+ document. It allowes to replace files, packages and classes by other
+ files, packages and classes. It is inteded to be used by package and class
+ authors but may also be used by \LaTeX{} users.
+ \end{abstract}
+
+ \tableofcontents
+
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi^^A meta-comment
+%
+% \changes{v3.32}{2020/08/25}{new (sub-)package}
+%^^A TODO: We should use docstrip3 instead of of docstrip. This would enable
+%^^A usability of @@-syntax in the source. But for this, additional
+%^^A changes would be needed to setup the version string. Because of
+%^^A this it should be done together with switch over to l3build.
+%
+% \section{The User Manual of \textsf{scrlfile-hook}}
+%
+% \textsf{scrlfile-hook} implements the \LaTeX-hook-based part of
+% \textsf{scrlfile}.
+%
+% There isn't any user manual for the user level \LaTeXe{} commands in this
+% file. Please see the manual of \textsf{scrlfile} for more information about
+% \textsf{scrlfile-hook}.
+%
+% This section, however, contains the user manual of the \LaTeX3{} package
+% author commands.
+%
+% \begin{function}[TF, added = 2020-08-26]
+% {\scrlfile_if_class_loaded:n,\scrlfile_if_package_loaded:n}
+% \begin{syntax}
+% \cs{scrlfile_if_class_loaded:nTF} \Arg{class name} \Arg{true code} \Arg{false code}
+% \cs{scrlfile_if_package_loaded:nTF} \Arg{package name} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Tests if the class \meta{class name} resp. the package \meta{package name}
+% has been loaded completely. It runs the \Arg{true code} only, if the input
+% of the class file with the name \meta{class
+% name}\texttt{.}\cs{@clsextension} resp. the package file with the name
+% \meta{package name}\texttt{.}\cs{@pkgextension} has already been
+% finished. It runs the \Arg{false code}, if the class or package has not
+% been loaded or the input of the class or package file is still in
+% progress.
+% \end{function}
+%
+%
+% \StopEventually{\PrintIndex}
+%
+% \section{The Implementation of \textsf{scrlfile-hook}}
+%
+% \begin{macrocode}
+%<@@=scrlfile>
+% \end{macrocode}
+%
+% Test whether the uses \LaTeX{} provides all commands we need.
+% \begin{macrocode}
+\@ifundefined{AddToHook}{%
+ \PackageError{scrlfile-hook}{LaTeX too old for this package}{%
+ \string\AddToHook\space of LaTeX 2020-10-01 or newer is
+ needed.\MessageBreak
+ Please update LaTeX or use package scrlfile-patch instead of\MessageBreak
+ scrlfile-hook.\MessageBreak
+ If you would continue, I will try to load scrlfile-patch
+ }%
+ \RequirePackage{scrlfile-patch}%
+ \endinput
+}{}
+% \end{macrocode}
+%
+%
+% \subsection{Before and After Commands}
+%
+% The hook implementation is based on a \LaTeX{} version that provides
+% \LaTeX3. So it makes sense to use it.
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% \begin{macro}{\BeforeFile}
+% The hook version of this command is just a wrapper to the corresponding
+% \LaTeX{} file hooks. It supports a mandatory \meta{file} argument, an
+% optional \meta{label} argument and a mandatory \meta{hook code} argument.
+% \begin{macrocode}
+\NewDocumentCommand \BeforeFile { m }
+ {
+ \AddToHook { file / before / #1 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AfterFile}
+% The hook version of this command is just a wrapper to the corresponding
+% \LaTeX{} file hooks. It supports a mandatory \meta{file} argument, an
+% optional \meta{label} argument and a mandatory \meta{hook code} argument.
+% \begin{macrocode}
+\NewDocumentCommand \AfterFile { m }
+ {
+ \AddToHook { file / after / #1 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\BeforeClass,\BeforePackage}
+% The hook version of these commands are also wrappers to the
+% \texttt{file/before} hooks, because the \meta{code} should also be executed
+% already in the class or package context.
+% \begin{macrocode}
+\NewDocumentCommand \BeforeClass { m }
+ {
+ \BeforeFile { #1.\@clsextension }
+ }
+\NewDocumentCommand \BeforePackage { m }
+ {
+ \BeforeFile { #1.\@pkgextension }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AfterAtEndOfClass,\AfterAtEndOfPackage}
+% With version 3.32 the syntax of these commands have been changed. Now, there
+% is also a star variant, that runs the \meta{code} immediately if the class
+% or package has already been loaded completely. Otherwise and in the normal
+% variant the \meta{code} is added to the \texttt{class/after} or
+% \texttt{package/after} hook, because this hook is used outside the context
+% of the class or package and after the \cs{AtEndOfClass} or
+% \cs{AtEndOfPackage} code.
+% \begin{macrocode}
+\NewDocumentCommand \AfterAtEndOfClass { s m o +m }
+ {
+ \IfBooleanTF { #1 }
+ {
+ \scrlfile_if_class_loaded:nTF { #2 }
+ { #4 }
+ { \hook_gput_code:nnn { class / after / #2 } { #3 } { #4 } }
+ }
+ { \hook_gput_code:nnn { class / after / #2 } { #3 } { #4 } }
+ }
+\NewDocumentCommand \AfterAtEndOfPackage { s m o +m }
+ {
+ \IfBooleanTF { #1 }
+ {
+ \scrlfile_if_package_loaded:nTF { #2 }
+ { #4 }
+ { \hook_gput_code:nnn { package / after / #2 } { #3 } { #4 } }
+ }
+ { \hook_gput_code:nnn { package / after / #2} { #3 } { #4 } }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{variable}[added = 2020-06-26]{\g__scrlfile_input_file_seq}
+% \cs{g__scrlfile_input_file_seq} is a sequence of active file inputs (without
+% path information). Two global hooks are used to setup the sequence. The new
+% conditional tests if a file is in the sequence.
+% \begin{macrocode}
+\seq_new:N \g__scrlfile_input_file_seq
+\hook_gput_code:nnn { file / before } { . }
+ { \seq_gpush:Nx \g__scrlfile_input_file_seq { \CurrentFile } }
+\hook_gput_code:nnn { file / after } { . }
+ {
+ \seq_gpop:NNF \g__scrlfile_input_file_seq \l_tmpa_seq
+ {
+ \msg_new:nnn { scrlfile-hook } { to-much-pops }
+ {
+ More~file~names~popped~from~stack~than~put~to.~
+ This~should~never~happen.~
+ However,~it~could~happen~if~scrlfile-hook~is~loaded~by~another~
+ package~or~class.~In~this~case~some~packages~or~classes~are~not~
+ recognised~correctly.
+ }
+ \msg_warning:nn { scrlfile-hook } { to-much-pops }
+ }
+ }
+% \end{macrocode}
+% Unfortunately we need an ugly hack to initialise the stack using an internal
+% kernel variable. This is a no go but I do not know a better solution for
+% this, because loading of the package could be done late.
+% TODO: Decide, if the second or fourth token is correct. If fourth,
+% \cs{CurrentFile} has to be used always instead of
+% \cs{CurrentFileUsed}.
+% \begin{macrocode}
+\cs_if_exist:NTF \g__filehook_input_file_seq
+ {
+ \seq_map_inline:Nn \g__filehook_input_file_seq
+ {
+ \seq_gput_right:Nx \g__scrlfile_input_file_seq
+ { \tl_item:nn { #1 } { 2 } }
+ }
+ }
+ {
+ \seq_gpush:Nx \g__scrlfile_input_file_seq { }
+ \cs_if_exist:NTF \CurrentFileUsed
+ { \seq_gpush:Nx \g__scrlfile_input_file_seq { \CurrentFileUsed } }
+ { \seq_gpush:Nx \g__scrlfile_input_file_seq { \CurrentFile } }
+ }
+% \end{macrocode}
+% \end{variable}
+% \begin{function}[TF, added = 2020-06-26]{\@@_if_loading:n}
+% Test if the file name is in the file name list.
+% \begin{macrocode}
+\prg_new_protected_conditional:Npnn \__scrlfile_if_loading:n #1 { T, F, TF }
+ {
+ \str_set:Nx \l_tmpa_str { #1 }
+ \seq_if_in:NxTF \g__scrlfile_input_file_seq { \str_use:N \l_tmpa_str }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+% \end{macrocode}
+% \end{function}
+%
+% \begin{function}[TF, added = 2020/08/22]
+% {\scrlfile_if_class_loaded:n,\scrlfile_if_package_loaded:n}
+% \cs{scrlfile_if_class_loaded:nTF} is similar to \cs{@ifclassloaded} and
+% \cs{scrlfile_if_package_loaded:nTF} is similar to \cs{@ifpackageloaded} but in
+% opposite to those they test, if the class or package has been loaded
+% completely.
+% \begin{macrocode}
+\prg_new_protected_conditional:Npnn \scrlfile_if_class_loaded:n #1 { T, F, TF }
+ {
+ \@ifclassloaded { #1 }
+ {
+ \__scrlfile_if_loading:nTF { #1.\@clsextension }
+ { \prg_return_false: }
+ { \prg_return_true: }
+ }
+ {
+ \prg_return_false:
+ }
+ }
+\prg_new_protected_conditional:Npnn \scrlfile_if_package_loaded:n #1 { T, F, TF }
+ {
+ \@ifpackageloaded { #1 }
+ {
+ \__scrlfile_if_loading:nTF { #1.\@pkgextension }
+ { \prg_return_false: }
+ { \prg_return_true: }
+ }
+ {
+ \prg_return_false:
+ }
+ }
+% \end{macrocode}
+% \end{function}
+%
+% \begin{macro}{\AfterClass,\AfterPackage}
+% With version 3.32 these do not support plus or exclamation mark variants,
+% but only the normal and the star variants. Instead of the plus or
+% exclamation mark variants users should use the star variant of
+% \cs{AfterAtEndOfClass} and \cs{AfterAtEndOfPackage}. The commands use the
+% \texttt{file/after} hook, because the user manual declares, that \meta{code}
+% is used before the code of \cs{AtEndOfClass} or \cs{AtEndOfPackage}.
+% \begin{macrocode}
+\NewDocumentCommand \scrlfile@AfterClass { s m o +m }
+ {
+ \IfBooleanTF { #1 }
+ {
+ \@ifclassloaded{ #2 }
+ { #4 }
+ {
+ \hook_gput_code:nnn
+ { file / after / #2.\@clsextension }
+ { #3 }
+ { #4 }
+ }
+ }
+ {
+ \hook_gput_code:nnn { file / after / #2.\@clsextension } { #3 } { #4 }
+ }
+ }
+\NewDocumentCommand \AfterClass { } { \scrlfile@AfterClass }
+\NewDocumentCommand \scrlfile@AfterPackage { s m o +m }
+ {
+ \IfBooleanTF { #1 }
+ {
+ \@ifpackageloaded{ #2 }
+ { #4 }
+ {
+ \hook_gput_code:nnn
+ { file / after / #2.\@pkgextension }
+ { #3 }
+ { #4 }
+ }
+ }
+ {
+ \hook_gput_code:nnn { file / after / #2.\@pkgextension } { #3 } { #4 }
+ }
+ }
+\NewDocumentCommand \AfterPackage { } { \scrlfile@AfterPackage }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{File Substitution}
+%
+% With new file hooks the substitutions are so easy we even do not need
+% \LaTeX3 syntax to implement them.
+%
+% \begin{macro}{\ReplaceInput}
+% This is only the simplest wrapper to \cs{declare@file@substitution}.
+% \begin{macrocode}
+\NewDocumentCommand{\ReplaceInput}{}{\declare@file@substitution}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ReplaceClass}
+% \begin{macro}{\ReplacePackage}
+% These are also wrappers to \cs{declare@file@substitution}. But in this case
+% we also have to add the extension.
+% \begin{macrocode}
+\NewDocumentCommand\ReplaceClass{mm}{%
+ \declare@file@substitution{#1.\@clsextension}{#2.\@clsextension}%
+}
+\NewDocumentCommand\ReplacePackage{mm}{%
+ \declare@file@substitution{#1.\@pkgextension}{#2.\@pkgextension}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\UnReplaceInput}
+% This is the simplest wrapper to \cs{undeclare@file@substitution}.
+% \begin{macrocode}
+\NewDocumentCommand{\UnReplaceInput}{}{\undeclare@file@substitution}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\UnReplaceClass}
+% \begin{macro}{\UnReplacePackage}
+% Also very simple but again we have to add the extension.
+% \begin{macrocode}
+\NewDocumentCommand\UnReplaceClass{m}{%
+ \undeclare@file@substitution{#1.\@clsextension}%
+}
+\NewDocumentCommand\UnReplacePackage{mm}{%
+ \undeclare@file@substitution{#1.\@pkgextension}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Prevent Package from Loading}
+%
+% To store and reset the hole list of prevents we use a comma separated
+% list. So we need again use \LaTeX3.
+%
+% \begin{variable}[added = 2020-09-02]{\g__scrlfile_prevents_clist}
+% This local variable stores the list of files, that should be prevented from
+% loading. It is needed to stay compatible with old \file{scrlfile}. Without
+% this compatibility purpose we would be able to use simple wrappers to
+% \cs{disable@package@load} and \cs{reenable@package@load}.
+% \begin{macrocode}
+\clist_new:N \g__scrlfile_prevent_clist
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\PreventPackageFromLoading}
+% This is more than a wrapper to \cs{disable@package@load} because we have to
+% manage an internal list and it is documented, that the re-enabling does not
+% undefine the \meta{alternate-code} setting but only disables it. So we have
+% to extra store it. Note: Local loading of packages does not make sense, so
+% local changes of the prevent list also does not make sense. Therefore this
+% is a global acting command!
+% \begin{macrocode}
+\NewDocumentCommand \PreventPackageFromLoading { s +o m }
+ {
+ \clist_set:Nx \l__scrlfile_package_clist { #3 }
+ \clist_map_inline:Nn \l__scrlfile_package_clist
+ {
+ \@ifpackageloaded { ##1 }
+ {
+ \IfBooleanTF { #1 } { \msg_info:nnn } { \msg_warning:nnn }
+ { scrlfile } { no-prevent-for-already-loaded } { ##1 }
+ }
+ {
+ \clist_if_in:NnF \g__scrlfile_prevent_clist { ##1 }
+ { \clist_gput_right:Nn \g__scrlfile_prevent_clist { ##1 } }
+ \tl_if_exist:cF { g__scrlfile_exclude_package_##1_tl }
+ {
+ \tl_new:c { g__scrlfile_exclude_package_##1_tl }
+ }
+ \IfValueT { #2 }
+ {
+ \tl_gput_right:cn { g__scrlfile_exclude_package_##1_tl } { #2 }
+ }
+ \disable@package@load { ##1 }
+ { \tl_use:c { g__scrlfile_exclude_package_##1_tl } }
+ }
+ }
+ \clist_clear:N \l__scrlfile_package_clist
+ }
+% \end{macrocode}
+%
+% \begin{macro}{\l__scrlfile_package_clist}
+% One local variable is used to process the \meta{package-list} argument of
+% \cs{PreventPackageFromLoading}.
+% \begin{macrocode}
+\clist_new:N \l__scrlfile_package_clist
+% \end{macrocode}
+% \end{macro}
+%
+% And here comes the message, that could be used either as a warning or as an
+% info.
+% \begin{macrocode}
+\msg_new:nnn { scrlfile } { no-prevent-for-already-loaded }
+ {
+ Cannot~prevent~package~`#1'~from~being~loaded,~
+ because~it~has~been~loaded~already~before~line~\msg_line_number:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\StorePreventPackageFromLoading}
+% This simply copies the internal \texttt{clist} to a macro.
+% \begin{macrocode}
+\NewDocumentCommand \StorePreventPackageFromLoading { m }
+ { \edef #1 { \clist_use:Nn \g__scrlfile_prevent_clist { , } } }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ResetPreventPackageFromLoading}
+% Map the internal list to a function that re-enables the package. At the end
+% the internal list is cleared.
+% \begin{macrocode}
+\NewDocumentCommand \ResetPreventPackageFromLoading {}
+ {
+ \clist_map_function:NN \g__scrlfile_prevent_clist \reenable@package@load
+ \clist_gclear:N \g__scrlfile_prevent_clist
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\UnPreventPackageFromLoading}
+% Here again the argument is a \meta{package-list} not only one
+% \meta{package}. So we have to build a local \texttt{clist} and walk through
+% it.
+% \begin{macrocode}
+\NewDocumentCommand \UnPreventPackageFromLoading { s m }
+ {
+ \clist_set:Nx \l__scrlfile_package_clist { #2 }
+ \clist_map_inline:Nn \l__scrlfile_package_clist
+ {
+ \clist_if_in:NnT \g__scrlfile_prevent_clist { ##1 }
+ {
+ \clist_gremove_all:Nn \g__scrlfile_prevent_clist { ##1 }
+ \reenable@package@load { ##1 }
+ \IfBooleanT { #1 }
+ { \cs_undefine:c { g__scrlfile_exclude_package_##1_tl } }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Extra Document Hooks}
+%
+% \begin{macro}{\BeforeClosingMainAux}
+% \changes{v3.32}{2020/09/10}{optional argument added}
+% Here we cannot simply wrap this to the hook
+% \texttt{enddocument/afterlastpage}, because it is documented, that inside
+% the \meta{code} \cs{protected@write} is replaced by
+% \cs{immediate@protected@write}. So we have to take extra care to it.
+% \begin{macrocode}
+\NewDocumentCommand \BeforeClosingMainAux { o m }
+ {
+ \hook_gput_code:nnn { enddocument / afterlastpage } { #1 }
+ {
+ \debug_suspend:
+ \RenewDocumentCommand \BeforeClosingMainAux { m } { ##1 }
+ \cs_set_eq:NN \__scrlfile_protected@write:Nnn \protected@write
+ \cs_set_eq:NN \protected@write \protected@immediate@write
+ #2
+ \cs_set_eq:NN \protected@write \__scrlfile_protected@write:Nnn
+ \debug_resume:
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AfterReadingMainAux}
+% \changes{v3.32}{2020/09/10}{optional argument added}
+% Here we the exact same problem as with \cs{BeforeClosingMainAux}.
+% \begin{macrocode}
+\NewDocumentCommand \AfterReadingMainAux { o m }
+ {
+ \hook_gput_code:nnn { enddocument / afteraux } { #1 }
+ {
+ \debug_suspend:
+ \RenewDocumentCommand \AfterReadingMainAux { m } { ##1 }
+ \cs_set_eq:NN \__scrlfile_protected@write:Nnn \protected@write
+ \cs_set_eq:NN \protected@write \protected@immediate@write
+ #2
+ \cs_set_eq:NN \protected@write \__scrlfile_protected@write:Nnn
+ \debug_resume:
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \subsection{Kernel Extensions not Using \LaTeX3}
+%
+% \begin{macro}{\protected@immediate@write}
+% Like \LaTeX{} kernel's |\protected@write| but using |\immediate\write|. In
+% this case it is even not a good idea to protect |\thepage|!
+% \begin{macrocode}
+\ProvideDocumentCommand\protected@immediate@write{m+m+m}
+ {%
+ \begingroup
+ #2%
+ \let\protect\@unexpandable@protect
+ \edef\reserved@a{\immediate\write#1{#3}}%
+ \reserved@a
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{The \KOMAScript{} Logo}
+%
+% Last but not least this is a \KOMAScript{} package, so we also define the
+% \KOMAScript{} logo:
+% \begin{macrocode}
+\RequirePackage{scrlogo}
+% \end{macrocode}
+%
+% \Finale
+%
+% \endinput
+% Local Variables:
+% mode: doctex
+% TeX-master: t
+% End:
diff --git a/macros/latex/contrib/koma-script/source/scrlfile-patcholdlatex.dtx b/macros/latex/contrib/koma-script/source/scrlfile-patcholdlatex.dtx
new file mode 100644
index 0000000000..070d28a5dd
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrlfile-patcholdlatex.dtx
@@ -0,0 +1,1269 @@
+% \iffalse^^A meta-comment
+% ======================================================================
+% scrlfile-patcholdlatex.dtx
+% Copyright (c) Markus Kohm, 2002-2020
+%
+% This file is part of the work `scrlfile' which 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.
+% ----------------------------------------------------------------------
+% scrlfile-patcholdlatex.dtx
+% Copyright (c) Markus Kohm, 2002-2020
+%
+% Diese Datei ist Teil des Werks `scrlfile', das wiederum Teil des
+% LaTeX2e KOMA-Script Pakets ist.
+%
+% 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^^A meta-comment
+%
+% \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: scrlfile-patcholdlatex.dtx 3527 2020-09-11 09:44:32Z kohm $
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2020-09-11 11:44:32 +0200 (Fri, 11 Sep 2020) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 3527 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrlfile-patcholdlatex.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script package source
+ }%
+\reserved@a
+%</dtx>
+%<package>\ProvidesPackage{scrlfile-patcholdlatex}[%
+%!KOMAScriptVersion
+%<package> package
+ (patching old LaTeX kernels)]
+%<*dtx>
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHTFROM}{2002}
+ \generate{\usepreamble\defaultpreamble
+ \file{scrlfile-patcholdlatex.sty}{%
+ \from{scrlfile-patcholdlatex.dtx}{package}%
+ }%
+ }
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[main=english]{babel}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrlfile-patcholdlatex.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \thanks{This file is revision \fileversion\ of file \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm\thanks{mailto:komascript@gmx.info}}
+
+\begin{document}
+ \maketitle
+ \begin{abstract}
+ This package provides hooks before and after loading files, packages or
+ classes. It also provides a hook after the last \cs{clearpage} of the
+ document. It allowes to replace files, packages and classes by other
+ files, packages and classes. It is inteded to be used by package and class
+ authors but may also be used by \LaTeX{} users.
+ \end{abstract}
+
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi^^A meta-comment
+%
+% \changes{v2.95}{2002/06/11}{First version split from hugh scrclass.dtx}
+% \changes{v3.24}{2017/05/06}{standalone manual removed}
+% \changes{v3.32}{2020/09/02}{new (sub)-package}
+%
+% \section{The User Manual of \textsf{scrlfile-patcholdlatex}}
+%
+% \textsf{scrlfile-patcholdlatex} implements the part of \textsf{scrlfile}
+% that patches old \LaTeX{} kernels.
+%
+% There isn't any user manual for the user level \LaTeXe{} commands in this
+% file. Please see the manual of \textsf{scrlfile} for more information about
+% \textsf{scrlfile-patcholdlatex}.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Implementation of \textsf{scrlfile-patcholdlatex}}
+%
+%
+% \subsection{Patching \LaTeX{} Kernel Macros}
+%
+% \begin{macro}{\InputIfFileExists}
+% \changes{v2.96}{2006/07/19}{replacement code added}%^^A
+% \LaTeX{} uses this macro for loading files with
+% \cs{input}\marg{filename}, \cs{include}, \cs{LoadClass},
+% \cs{LoadClassWithOptions}, \cs{documentclass}, \cs{documentstyle},
+% \cs{RequirePackage}, \cs{usepackage}. Only
+% \cs{input}~\meta{filename} loads \meta{filename} without using
+% \cs{InputIfFileExists}.
+%
+% Because of this, it's very easy to add stuff before and after
+% loading a file. We simply change this macro and add to
+% macros\,---\,one before loading the file and one after loading the
+% file. But before we redefine the macro, we test, if the macro was
+% defined like we expected. \LaTeX{} will warn, if not.
+% \changes{v3.27}{2019/10/06}{\LaTeX{} 2019-10-01 changed the definition}%^^A
+%
+% \changes{v3.28}{2019/11/21}{support for \textsf{memoir}}%^^A
+% With \textsf{memoir} their is a special case. It also redefines
+% \cs{InputIfFileExists}. As shown in the source of the class it does so
+% because \textsf{scrlfile} does it. However it does it not compatible with
+% \textsf{scrlfile} and it does not emulate \textsf{scrlfile} as it do for
+% other packages. So if you try to use \textsf{scrlfile} with memoir,
+% \textsf{scrbase} has to take care to \textsf{memoir}. And in oposit to
+% \textsf{scrlfile} \textsf{memoir} does not always fix the argument order bug
+% of \LaTeX{} but do so only for the implementation of \LaTeX{} 2019-10-01.
+% So in case of \textsf{memoir} we just patch every version of it without
+% testing.
+% \begin{macrocode}
+\@ifclassloaded{memoir}{%
+ \PackageInfo{scrlfile}{class `memoir' detected.\MessageBreak
+ Using a compatible redefinition of \string\InputIfFileExists,\MessageBreak
+ but always robust and with the fix of the\MessageBreak
+ argument order bug even for old versions of the\MessageBreak
+ LaTeX kernel%
+ }%
+}{%
+ \long\def\reserved@a#1#2{%
+ \IfFileExists{#1}%
+ {#2\@addtofilelist{#1}\@@input \@filef@und}}%
+ \ifx\reserved@a\InputIfFileExists\else
+ \expandafter\CheckCommand\expandafter*\expandafter\InputIfFileExists
+ \expandafter{%
+ \expandafter\protect\csname InputIfFileExists \endcsname
+ }%
+ \expandafter\CheckCommand \csname InputIfFileExists \endcsname[2]{%
+ \IfFileExists {#1}{%
+ \expandafter \@swaptwoargs \expandafter {\@filef@und }%
+ {#2\@addtofilelist {#1}\@@input }%
+ }%
+ }%
+ \fi
+}
+% \end{macrocode}
+% Now we can redefine the macro like described above:
+% \begin{macrocode}
+\expandafter\renewcommand\expandafter*\expandafter\InputIfFileExists
+\expandafter{\expandafter
+ \protect\csname InputIfFileExists \endcsname}%
+\expandafter\long\expandafter\def\csname InputIfFileExists \endcsname#1#2{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname #1-@alias\endcsname\relax
+ \expandafter\@secondoftwo
+ \else
+ \scr@replacefile@msg{\csname #1-@alias\endcsname}{#1}%
+ \expandafter\@firstoftwo
+ \fi
+ {%
+ \expandafter\InputIfFileExists\expandafter{\csname
+ #1-@alias\endcsname}{#2}%
+ }%
+ {\IfFileExists{#1}{%
+ \expandafter\scr@input@withhook\expandafter{\@filef@und}{#1}{#2}%
+ }}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@input@withhook}
+% \changes{v3.27}{2019/03/28}{new (internal)}%^^A
+% \changes{v3.28}{2019/11/21}{support for \textsf{memoir}}%^^A
+% We need a new internal, because of expanding \cs{@file@und} before inputting
+% the file.
+% \begin{macrocode}
+\@ifclassloaded{memoir}{%
+ \newcommand{\scr@input@withhook}[3]{%
+ \scr@load@hook{before}{#2}%
+ #3\@addtofilelist{#2}%
+ \@ifundefined{m@matbeginf}{}{\m@matbeginf{#2}}%
+ \@@input #1%
+ \@ifundefined{m@matendf}{}{\m@matendf{#2}}%
+ \@ifundefined{killm@matf}{}{\killm@matf{#2}}%
+ \scr@load@hook{after}{#2}%
+ }%
+}{%
+ \newcommand{\scr@input@withhook}[3]{%
+ \scr@load@hook{before}{#2}%
+ #3\@addtofilelist{#2}%
+ \@@input #1%
+ \scr@load@hook{after}{#2}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@loadwithoptions}
+% \changes{v2.96}{2006/07/19}{new redefinition}
+% \begin{macro}{\scr@loadwithoptions}
+% \changes{v2.96}{2006/07/19}{new helper macro}
+% \begin{macro}{\scr@@loadwithoptions}
+% \changes{v2.97a}{2007/03/07}{new helper macro}
+% \LaTeX{} uses this macro for loading classes and packages using
+% \cs{LoadClassWithOptions} or \cs{RequirePackageWithOptions}. We simply say
+% now: if the class or package should be replaced by another, try it again
+% with the replacement name. The stack is used. This will result in an
+% error if the replacements are nested too deep. This should be, because it
+% will also result in an error using ring replacements.
+% \begin{macrocode}
+\newcommand*{\scr@@loadwithoptions}{}
+\newcommand*{\scr@loadwithoptions}{}
+\let\scr@loadwithoptions\@loadwithoptions
+\renewcommand*{\@loadwithoptions}[3]{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname #3.#1-@aliasname\endcsname\relax
+ \def\scr@@loadwithoptions{\scr@loadwithoptions{#1}{#2}{#3}}%
+ \else
+ \scr@replacefile@msg{\csname #3.#1-@aliasname\endcsname.#1}{#3.#1}%
+ \def\scr@@loadwithoptions{%
+ \@loadwithoptions{#1}{#2}{\csname #3.#1-@aliasname\endcsname}%
+ }%
+ \fi
+ \scr@@loadwithoptions
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@onefilewithoption}
+% \changes{v2.96}{2006/07/19}{new redefinition}
+% \begin{macro}{\scr@onefilewithoption}
+% \changes{v2.96}{2006/07/19}{new helper macro}
+% \begin{macro}{\scr@@onefilewithoption}
+% \changes{v2.98}{2007/12/18}{new helper macro}
+% \LaTeX{} uses this macro for loading classes and packages using
+% \cs{LoadClass}, \cs{documentclass}, \cs{RequirePackage}, and
+% \cs{usepackage}. We simply say now: if the class or package should be
+% replaced by another, try it again with the replacement name. The stack is
+% used. This will result in an error if the replacements are nested too
+% deep. This should be, because it will also result in an error using ring
+% replacements.
+% \begin{macrocode}
+\newcommand*{\scr@onefilewithoptions}{}
+\let\scr@onefilewithoptions\@onefilewithoptions
+\def\@onefilewithoptions#1[#2][#3]#4{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname #1.#4-@aliasname\endcsname\relax
+% \end{macrocode}
+% Do this ridiculous definition and call outside of \cs{ifx}\dots\cs{fi}
+% because of some errornous packages like some versions of
+% \textsf{breakurl}. This does not avoid an error, but the message about
+% unclosed \cs{if} will be outside of \textsf{scrlfile}.
+% \begin{macrocode}
+ \def\scr@@onefilewithoptions{\scr@onefilewithoptions{#1}}%
+ \else
+ \scr@replacefile@msg{\csname #1.#4-@aliasname\endcsname.#4}{#1.#4}%
+ \edef\scr@@onefilewithoptions{%
+ \noexpand\@onefilewithoptions{\csname #1.#4-@aliasname\endcsname}}%
+ \fi
+ \scr@@onefilewithoptions[{#2}][{#3}]{#4}%
+ \scr@load@hook{lateafter}{#1.#4}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scr@replacefile@msg}
+% \changes{v2.96}{2006/07/19}{new helper command}
+% \changes{v2.98}{2007/12/18}{spellfix}
+% Last but not least \textsf{scrlfile} will write a message to the log file at
+% every replacement.
+% \begin{macrocode}
+\newcommand*{\scr@replacefile@msg}[2]{%
+ \PackageInfo{scrlfile}{inputing `#1' instead of `#2'}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scr@load@hook}
+% \changes{v3.27a}{2019/10/16}{workaround for strange handling of
+% \cs{AtEndOfPackage} hook in \cs{@onefilewithoptions}}%^^A
+% This macro simply calls a load-file-hook, either the \emph{before}
+% or the \emph{after} one, if the hook exists. After calling the hook
+% it will be deleted. First argument is the type of hook
+% (\meta{before} or \meta{after}), second argument is a filename.
+% \begin{macrocode}
+\newcommand*{\scr@load@hook}[2]{%
+% \end{macrocode}
+% \begin{macro}{\scrlfile@cmp@hook}
+% \changes{v3.27a}{2019/10/23}{local macros renamed}%^^A
+% \begin{macro}{\scrlfile@hookname}
+% \changes{v3.27a}{2019/10/23}{local macros renamed}%^^A
+% \changes{v3.29}{2020/06/01}{do the class and package load hooks only in the
+% document preamble}%^^A --> https://komascript.de/node/2274
+% Workaround for strange handling of the \cs{AtEndOfPackage} hook in
+% \cs{@onefilewithoptions} (becomes \cs{@empty}, if the package already has
+% been loaded and is not loaded again). This workaround is not nice but
+% smart. Before loading a file it defines a marker macro and undefines it
+% later. To decide whether to define or remove the marker, two local macros
+% are used \cs{scrlfile@hookname} and \cs{scrlfile@cmp@hook}. The first has
+% the name of the current hook from the first argument. The other is a compare
+% string. The first one is also valid while processing the hook, but only in
+% the document preamble. The names are very unique, so we do not reserve them
+% using \cs{newcommand} outside. The name of the marker is less
+% unique. Nevertheless it is not reserved.
+% Note: For recursive loading of files this does not work. But this also does
+% not matter, because it is needed only for packages and classes, which are
+% never loaded recursive. For the same reason from \KOMAScript{} 3.29 this is
+% only used inside the document preamble. After the document preamble it can
+% be dangerous, e.g., inside a |tabular| or |array|.
+% \begin{macrocode}
+ \ifx\@begindocumenthook\@undefined\else
+ \edef\scrlfile@hookname{#1}%
+ \def\scrlfile@cmp@hook{before}%
+ \ifx\scrlfile@hookname\scrlfile@cmp@hook
+ \expandafter\def\csname #2-l@ading\endcsname{#2}%
+ \fi
+ \let\scrlfile@cmp@hook\@undefined
+ \fi
+ \@ifundefined{#2-@#1}{}{%
+ \@nameuse{#2-@#1}%
+ \expandafter\let\csname #2-@#1\endcsname\relax
+ }%
+% \end{macrocode}
+% The hook could destroy \cs{scrlfile@hookname} so define it again:
+% \begin{macrocode}
+ \ifx\@begindocumenthook\@undefined\else
+ \edef\scrlfile@hookname{#1}%
+ \def\scrlfile@cmp@hook{after}%
+ \ifx\scrlfile@hookname\scrlfile@cmp@hook
+ \expandafter\let\csname #2-l@ading\endcsname\@undefined
+ \fi
+ \let\scrlfile@cmp@hook\@undefined
+ \let\scrlfile@hookname\@undefined
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scr@set@load@hook}
+% This command adds stuff to a load-file-hook, either the
+% \emph{before} or the \emph{after} one. First argument is the type of
+% hook (\meta{before} or \meta{after}), second is a filename. There's
+% a third argument not parsed by the macro itself but
+% \cs{g@addto@macro}. This third argument is the stuff, which will be
+% added to the hook. Because of using \cs{g@addto@macro} the hook must
+% be defined. So we define it, if it isn't.
+% TODO: Handling/ignoring an optional argument to make it more compatible with
+% \LaTeX's new \cs{AddToHook}.
+% \begin{macrocode}
+\newcommand*{\scr@set@load@hook}[2]{%
+ \@ifundefined{#2-@#1}{\@namedef{#2-@#1}{}}{}%
+ \expandafter\g@addto@macro\csname #2-@#1\endcsname
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Before and After Commands}
+%
+% \begin{macro}{\BeforeFile}
+% \begin{macro}{\AfterFile}
+% Just add code to the \emph{before} or \emph{after} hook of a file. The
+% arguments are:
+% \begin{description}
+% \item[\meta{file name}:] mandatory argument with the file name as given by
+% \cs{InputIfFileExists}.
+% \item[\meta{code}:] this argument is not processed by \cs{BeforeFile} or
+% \cs{AfterFile} but the internal \cs{scr@set@load@hook}. It is the code
+% that should be added to either the \emph{before} or the \emph{after} hook.
+% \end{description}
+% \begin{macrocode}
+\newcommand*{\BeforeFile}{\scr@set@load@hook{before}}
+\newcommand*{\AfterFile}{\scr@set@load@hook{after}}
+% \end{macrocode}
+% \end{macro}%^^A \AfterFile
+% \end{macro}%^^A \BeforeFile
+%
+% \begin{macro}{\BeforeClass}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}%^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}%^^A
+% This is quite simple. It only has to add code to the \emph{before} hook
+% already known by \cs{BeforeFile}. The arguments are:
+% \begin{description}
+% \item[\meta{package name}:] mandatory argument.
+% \item[\meta{code}:] this argument is processed not by \cs{BeforeClass} but
+% by the internal \cs{scr@set@load@hook} (see above), that will add the code
+% to the \emph{before} hook of file \meta{code}\texttt{.cls} (or whatever the
+% package extension is).
+% \end{description}
+% \begin{macrocode}
+\newcommand*{\BeforeClass}[1]{%
+ \scr@set@load@hook{before}{#1.\@clsextension}%
+}
+% \end{macrocode}
+% \end{macro}%^^A \BeforeClass
+%
+% \begin{macro}{\AfterClass}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}}
+% \changes{v3.32}{2020/09/02}{plus and exclamation mark variants removed}
+% \begin{macro}{\AfterAtEndOfClass}
+% \changes{v3.32}{2020/09/02}{star variant replaces the exclamation mark
+% variant of \cs{AfterClass}}
+% These are more complicated. There are four forms:
+% \begin{description}
+% \item[\cs{AfterClass}] corresponds to \cs{AfterFile}. So the code will be
+% added to the usual \emph{after} hook and the code is exexuted before code
+% added by the class itself using \cs{AtEndOfClass}. Argument procession
+% will be done by \cs{@AfterClass}.
+% \item[\cs{AfterAtEndOfClass}] This uses the \emph{lateafter} hook, which
+% is executed after the class has been loaded completely inclusive the
+% execution of \cs{AtEndOfClass} code. However, the code will never be
+% executed, if the class will not be loaded (again). But it does nothing,
+% if the class has already been loaded. The arguments are:
+% \begin{description}
+% \item[\meta{class name}] mandatory argument
+% \item[\meta{code}:] this argument is processed not by \cs{BeforeClass}
+% but by the internal \cs{scr@set@load@hook} (see above), that will add
+% the code to the \emph{lateafter} hook of file \meta{code}\texttt{.cls}
+% (or whatever the class extension is), or by \cs{@gobble}.
+% \end{description}
+% \item[\cs{AfterClass*}] like \cs{AfterClass}, but if loading of the
+% class has already began, the code will be executed immediately. So, if
+% the command is used inside the class it is simply
+% \cs{@firstofone}. Argument procession will be done by \cs{@sAfterClass}.
+% \item[\cs{AfterAtEndOfClass*}] like \cs{AfterClass*}, but the code will be
+% executed immediately only if the class already has been loaded
+% completely. Inside \cs{AtEndOfClass} the code is executed after every all
+% the \cs{AtEndOfClass} code. Argument procession will be done by
+% \cs{@xAfterClass}.
+% \end{description}
+% \begin{macrocode}
+\newcommand*{\scrlfile@AfterClass}{%
+ \kernel@ifstar \@sAfterClass\@AfterClass
+}
+\newcommand*{\AfterClass}{\scrlfile@AfterClass}
+% \end{macrocode}
+% \begin{macro}{\@AfterClass}
+% \cs{AfterClass}\marg{class name}\marg{code}.
+% It uses \cs{scr@set@load@hook} to add \meta{code} to the
+% \emph{after} hook. The second argument will be processed by
+% \cs{scr@set@load@hook}.
+% \begin{macrocode}
+\newcommand*{\@AfterClass}[1]{%
+ \scr@set@load@hook{after}{#1.\@clsextension}%
+}
+% \end{macrocode}
+% \end{macro}%^^A \@AfterClass
+% \begin{macro}{\@sAfterClass}
+% \changes{v3.27a}{2019/10/16}{group removed}%^^A
+% This is the internal implementation of:
+% \cs{AfterClass*}\marg{class name}\marg{code}.
+% It tests, whether or not \LaTeX{} thinks that the class
+% has already been loaded, but this only means whether or not the class
+% loading has already been started. If so, it immediately executes the next
+% argument. If not, is uses \cs{@AfterClass} to execute the \meta{code}
+% after loading the class.
+% \begin{macrocode}
+\newcommand*{\@sAfterClass}[1]{%
+ \@ifclassloaded{#1}{%
+ \@secondoftwo
+ }{%
+ \@AfterClass
+ }%
+ {#1}%
+}
+% \end{macrocode}
+% \end{macro}%^^A \@sAfterClass
+% \begin{macrocode}
+\newcommand*{\AfterAtEndOfClass}{%
+ \kernel@ifstar \@sAfterAtEndOfClass\@AfterAtEndOfClass
+}
+% \end{macrocode}
+% \begin{macro}{\@AfterAtEndOfClass}
+% \changes{v3.32}{2020/09/02}{new (internal)}
+% Note that \cs{AfterAtEndOfClass} executed the \meta{code} after each try
+% to load a class, even if the class has already been loaded and you try
+% to load it again.
+% \begin{macrocode}
+\newcommand*{\@AfterAtEndOfClass}[1]{%
+ \scr@set@load@hook{lateafter}{#1.\@clsextension}%
+}
+% \end{macrocode}
+% \begin{macro}{\@sAfterAtEndOfClass}
+% \changes{v3.09}{2011/03/09}{new (internal)}%^^A
+% \changes{v3.27}{2019/08/26}{using inside class fixed}%^^A
+% \changes{v3.27a}{2019/10/15}{renamed from \cs{@@@AfterClass}}%^^A
+% \changes{v3.27a}{2019/10/16}{usage of \emph{l@ading} marker}%^^A
+% \changes{v3.27a}{2019/10/16}{group removed}%^^A
+% \changes{v3.32}{2020/09/02}{renamed from \cs{@xAfterClass}}
+% This is the internal implementation of:
+% \cs{AfterClass!}\marg{class name}\marg{code}. Note, that the exclamation
+% mark has not already read. So the arguments are:
+% \begin{description}
+% \item[\texttt{!}:] static exclamation mark, to be ignored.
+% \item[\meta{class name}] mandatory argument
+% \item[\meta{code}:] this argument is processed not by \cs{BeforeClass} but
+% by the internal \cs{@sAfterClass} or \cs{@AfterClass} (see above).
+% \end{description}
+% There are two differences to \cs{@pAfterClass}:
+% \begin{enumerate}
+% \item In case of \cs{\meta{class name}.cls-l@ading} is defined (and not
+% \cs{relax}), while loading a class, it used \cs{AfterAtEndOfClass}
+% instead of \cs{AfterClass} to add \meta{code} to the \emph{lateafter}
+% hook instead of the \emph{after} hook.
+% \item In case of \cs{\meta{class name}.cls-l@ading} is undefined (or
+% \cs{relax}) it also has to test, whether or not the class has already
+% been loaded. If so, it uses \cs{@sAfterClass} to execute the \meta{code}
+% immediately, otherwise it uses \cs{AfterAtEndOfClass} to add the
+% \meta{code} to the \emph{lateafter} hook.
+% \end{enumerate}
+% So it is more like (the not existing) \cs{AfterAtEndOfClass+} than
+% \cs{AfterAtEndOfClass*}.
+% \begin{macrocode}
+\newcommand*{\@sAfterAtEndOfClass}[1]{%
+ \@ifundefined{#1.\@clsextension-l@ading}{%
+ \@ifclassloaded{#1}{%
+ \@secondoftwo
+ }{%
+ \@AfterAtEndOfClass
+ }%
+ }{%
+ \@AfterAtEndOfClass
+ }%
+ {#1}%
+}
+% \end{macrocode}
+% \end{macro}%^^A \@sAfterAtEndOfClass
+% \end{macro}%^^A \AfterAtEndOfClass
+% \end{macro}%^^A \AfterClass
+%
+% \begin{macro}{\BeforePackage}
+% This is quite simple. It only has to add code to the \emph{before} hook
+% already known by \cs{BeforeFile}. The arguments are:
+% \begin{description}
+% \item[\meta{package name}:] mandatory argument.
+% \item[\meta{code}:] this argument is processed not by \cs{BeforePackage} but
+% by the internal \cs{scr@set@load@hook} (see above), that will add the code
+% to the \emph{before} hook of file \meta{code}\texttt{.sty} (or whatever the
+% package extension is).
+% \end{description}
+% \begin{macrocode}
+\newcommand*{\BeforePackage}[1]{%
+ \scr@set@load@hook{before}{#1.\@pkgextension}%
+}
+% \end{macrocode}
+% \end{macro}%^^A \BeforePackage
+%
+% \begin{macro}{\AfterPackage}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}%^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}%^^A
+% \begin{macro}{\AfterAtEndOfPackage}
+% These are more complicated. There are four forms:
+% \begin{description}
+% \item[\cs{AfterPackage}] corresponds to \cs{AfterFile}. So the code will be
+% added to the usual \emph{after} hook and the code is exexuted before code
+% added by the package itself using \cs{AtEndOfPackage}. Argument procession
+% will be done by \cs{@AfterPackage}.
+% \item[\cs{AfterAtEndOfPackage}] This uses the \emph{lateafter} hook, which
+% is executed after the package has been loaded completely inclusive the
+% execution of \cs{AtEndOfPackage} code. However, the code will never be
+% executed, if the package will not be loaded (again). But it does nothing,
+% if the package has already been loaded. The arguments are:
+% \begin{description}
+% \item[\meta{package name}] mandatory argument
+% \item[\meta{code}:] this argument is processed not by \cs{BeforePackage}
+% but by the internal \cs{scr@set@loaf@hook} (see above), that will add
+% the code to the \emph{lateafter} hook of file \meta{code}\texttt{.sty}
+% (or whatever the package extension is), or by \cs{@gobble}.
+% \end{description}
+% \item[\cs{AfterPackage*}] like \cs{AfterPackage}, but if loading of the
+% package has already began, the code will be executed immediately. So, if
+% the command is used inside the package it is simply
+% \cs{@firstofone}..
+% \item[\cs{AfterAtEndOfPackage*}] like \cs{AfterPackage*}, but the code will
+% be executed immediately only if the package already has been loaded
+% completely. Inside \cs{AtEndOfPackage} the code is executed after every
+% all the \cs{AtEndOfPackage} code.
+% \end{description}
+% \begin{macrocode}
+\newcommand*{\scrlfile@AfterPackage}{%
+ \kernel@ifstar \@sAfterPackage\@AfterPackage
+}
+\newcommand*{\AfterPackage}{\scrlfile@AfterPackage}
+% \end{macrocode}
+% \begin{macro}{\@AfterPackage}
+% This is the internal implementation of:
+% \cs{AfterPackage}\marg{package name}\marg{code}.
+% It uses \cs{scr@set@load@hook} to add \meta{code} to the
+% \emph{after} hook. The second argument will be processed by
+% \cs{scr@set@load@hook}.
+% \begin{macrocode}
+\newcommand*{\@AfterPackage}[1]{%
+ \scr@set@load@hook{after}{#1.\@pkgextension}%
+}
+% \end{macrocode}
+% \end{macro}%^^A \@AfterPackage
+% \begin{macro}{\@sAfterPackage}
+% \changes{v3.27a}{2019/10/16}{group removed}%^^A
+% This is the internal implementation of:
+% \cs{AfterPackage*}\marg{package name}\marg{code}.
+% It tests, whether or not \LaTeX{} thinks that the package
+% has already been loaded, but this only means whether or not the package
+% loading has already been started. If so, it immediately executes the next
+% argument. If not, is uses \cs{@AfterPackage} to execute the \meta{code}
+% after loading the package.
+% \begin{macrocode}
+\newcommand*{\@sAfterPackage}[1]{%
+ \@ifpackageloaded{#1}{%
+ \@secondoftwo
+ }{%
+ \@AfterPackage
+ }%
+ {#1}%
+}
+% \end{macrocode}
+% \end{macro}%^^A \@sAfterPackage
+% \begin{macrocode}
+\newcommand*{\AfterAtEndOfPackage}{%
+ \kernel@ifstar \@sAfterAtEndOfPackage\@AfterAtEndOfPackage
+}
+% \end{macrocode}
+% \begin{macro}{\@sAfterAtEndOfPackage}
+% \changes{v3.09}{2011/03/09}{new (internal)
+% \changes{v3.27}{2019/08/26}{using inside package fixed}
+% \changes{v3.27a}{2019/10/15}{renamed from \cs{@@@AfterPackage}
+% \changes{v3.27a}{2019/10/16}{usage of \emph{l@ading} marker}
+% \changes{v3.27a}{2019/10/16}{group removed}
+% \changes{v3.32}{2020/09/02}{renamed from \@xAfterPackage}
+% This is the internal implementation of:
+% \cs{AfterAtEndOfPackage*}\marg{package name}\marg{code}.
+% \begin{macrocode}
+\newcommand*{\@sAfterAtEndOfPackage}[1]{%
+ \@ifundefined{#1.\@pkgextension-l@ading}{%
+ \@ifpackageloaded{#1}{%
+ \@secondoftwo
+ }{%
+ \@@AfterAtEndOfPackage
+ }%
+ }{%
+ \@@AfterAtEndOfPackage
+ }%
+ {#1}%
+}
+% \end{macrocode}
+% \end{macro}%^^A \@sAfterAtEndOfPackage
+% \begin{macro}{\@AfterAtEndOfPackage}
+% \changes{v3.32}{2020/09/02}{new (internal)}
+% \begin{macro}{\@@AfterAtEndOfPackage}
+% \changes{v3.27a}{2019/10/15}{new (internal)}
+% \changes{v3.27a}{2019/10/16}{group removed}
+% \changes{v3.32}{2020/09/02}{renamed from \cs{@AfterAtEndOfPackage}}
+% Note that until 3.27a \cs{AfterAtEndOfPackage} executed the \meta{code}
+% after each try to load a package, even if the package has already been
+% loaded and you've try to load it again. Since 3.27a this is the
+% functionality of \cs{@AfterAtEndOfPackage}. \cs{AfterAtEndOfPackage} now
+% does not do anything for already loaded packages or while loading the
+% package.
+% \begin{macrocode}
+\newcommand*{\@AfterAtEndOfPackage}[1]{%
+ \@ifpackageloaded{#1}{%
+ \@ifundefined{#1.\@pkgextension-l@ading}{%
+ \@gobbletwo
+ }{%
+ \@@AfterAtEndOfPackage
+ }%
+ }{%
+ \@@AfterAtEndOfPackage
+ }%
+ {#1}%
+}
+\newcommand*{\@@AfterAtEndOfPackage}[1]{%
+ \scr@set@load@hook{lateafter}{#1.\@pkgextension}%
+}
+% \end{macrocode}
+% \end{macro}%^^A \@@AfterAtEndOfPackage
+% \end{macro}%^^A \@AfterEndOfPackage
+% \end{macro}%^^A \AfterAtEndOfPackage
+% \end{macro}%^^A \AfterPackage
+%
+%
+% \subsection{File Substitution}
+%
+% \begin{macro}{\ReplaceInput}
+% \changes{v2.96}{2006/07/19}{new command}
+% \changes{v3.12}{2013/11/15}{implemented}
+% Defining the replacement by definition of \cs{\#1-@alias}.
+% \begin{macrocode}
+\newcommand*{\ReplaceInput}[2]{%
+ \expandafter\edef\csname #1-@alias\endcsname{#2}%
+}
+% \end{macrocode}
+% \begin{macro}{\ReplaceFile}
+% \changes{v2.96}{2006/07/19}{new command}
+% \changes{v3.12}{2013/11/15}{throw error}
+% Sorry, but I've implemented the wrong command some time ago.
+% \begin{macrocode}
+\newcommand*{\ReplaceFile}{%
+ \PackageError{scrlfile}{%
+ usage of not documented command `\string\ReplaceFile'%
+ }{%
+ Command `\string\ReplaceFile' has been implemented accidentally in
+ KOMA-Script 2.96\MessageBreak
+ and replaced by `\string\ReplaceInput' in KOMA-Script 3.12.\MessageBreak
+ You should replace `\string\ReplaceFile' by `\string\ReplaceInput' to
+ avoid this error\MessageBreak
+ message%
+ }%
+ \ReplaceInput
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\UnReplaceInput}
+% \changes{v3.12}{2013/11/15}{new command}
+% Do not longer replace a file.
+% \begin{macrocode}
+\newcommand*{\UnReplaceInput}[1]{%
+ \ifcsname #1-@alias\endcsname
+ \expandafter\let\csname #1-@alias\endcsname\relax
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ReplacePackage}
+% \changes{v2.96}{2006/07/19}{new command}
+% \begin{macro}{\ReplaceClass}
+% \changes{v2.96}{2006/07/19}{new command}
+% \begin{macro}{\@replacefilewithext}
+% \changes{v2.96}{2006/07/19}{new helper command}
+% \changes{v3.32}{2020/09/09}{works global}
+% Note that replacing a package or class will not replace the input of the
+% file of the package or class but only the input of package or class.
+% \begin{macrocode}
+\newcommand*{\@replacefilewithext}[3]{%
+ \expandafter\xdef\csname #1.#3-@aliasname\endcsname{#2}%
+}
+\newcommand*{\ReplacePackage}[2]{%
+ \@replacefilewithext{#1}{#2}\@pkgextension
+}
+\newcommand*{\ReplaceClass}[2]{%
+ \@replacefilewithext{#1}{#2}\@clsextension
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\UnReplacePackage}
+% \changes{v3.12}{2013/11/15}{new command}
+% \begin{macro}{\UnReplaceClass}
+% \changes{v3.12}{2013/11/15}{new command}
+% \begin{macro}{\@unreplacefilewithext}
+% \changes{v3.12}{2013/11/15}{new helper command}%^^A
+% \changes{v3.32}{2020/09/09}{works global}
+% Do not nolonger replace a class or package.
+% \begin{macrocode}
+\newcommand*{\@unreplacefilewithext}[2]{%
+ \ifcsname #1.#2-@aliasname\endcsname
+ \expandafter\global\expandafter\let\csname #1.#2-@aliasname\endcsname\relax
+ \fi
+}
+\newcommand*{\UnReplacePackage}[1]{%
+ \@unreplacefilewithext{#1}\@pkgextension
+}
+\newcommand*{\UnReplaceClass}[1]{%
+ \@unreplacefilewithext{#1}\@clsextension
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Prevent Package from Loading}
+%
+% \begin{macro}{\PreventPackageFromLoading}
+% \changes{v3.08}{2010/11/04}{New}
+% \changes{v3.11a}{2012/06/13}{write fault error in \cs{MessageBreak} fixed}
+% \changes{v3.12}{2012/06/15}{new star version allowes empty argument with
+% info instead of warning}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}}
+% \changes{v3.32}{2020/09/09}{works global}
+% \begin{macro}{\@PreventPackageFromLoading}
+% \changes{v3.12}{2012/06/15}{New (internal)}%^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}%^^A
+% \begin{macro}{\@@PreventPackageFromLoading}
+% \changes{v3.12}{2013/11/22}{New (internal)}%^^A
+% \changes{v3.12}{2013/11/22}{\cs{usepackage} before \cs{documentclass}
+% fixed}%^^A
+% \begin{macro}{\scrlfile@excludedpackages}
+% \changes{v3.08}{2010/11/04}{New (internal)}%^^A
+% \begin{macro}{\scrlfile@saved@RequirePackage}
+% \changes{v3.08}{2010/11/04}{New (internal)}%^^A
+% \begin{macrocode}
+\newcommand*{\scrlfile@excludedpackages}{}
+\let\scrlfile@excludedpackages\@empty
+\newcommand*{\scrlfile@saved@RequirePackage}{}
+\newcommand*{\PreventPackageFromLoading}{%
+ \kernel@ifstar{\@PreventPackageFromLoading\PackageInfo}%
+ {\@PreventPackageFromLoading\PackageWarning}%
+}
+\newcommand*{\@PreventPackageFromLoading}[1]{%
+ \kernel@ifnextchar [%]
+ {\@@PreventPackageFromLoading#1}{\@@PreventPackageFromLoading#1[]}%
+}
+\newcommand*{\@@PreventPackageFromLoading}{}
+\def\@@PreventPackageFromLoading#1[#2]#3{%
+% \end{macrocode}
+% We do nothing, if the argument was empty:
+% \begin{macrocode}
+ \edef\reserved@b{\zap@space#3 \@empty}%
+ \ifx \reserved@b\@empty
+ #1{scrlfile}{%
+ \string\PreventPackageFromLoading\space with empty packages\MessageBreak
+ argument ignored%
+ }%
+ \else
+% \end{macrocode}
+% If the argument was not empty we first need to patch \cs{RequirePackage} and
+% maybe \cs{usepackage} too.
+% \begin{macrocode}
+ \ifx\scrlfile@excludedpackages\@empty
+ \global\let\scrlfile@saved@RequirePackage\RequirePackage
+ \global\let\RequirePackage\scrlfile@RequirePackage
+ \def\reserved@a##1##{%
+ \@latex@error
+ {\noexpand \usepackage before \string\documentclass}%
+ {\noexpand \usepackage may only appear in the document
+ preamble, i.e.,\MessageBreak
+ between \noexpand\documentclass and
+ \string\begin{document}.}%
+ \@gobble}%
+ \ifx\reserved@a\usepackage\else
+ \ifx\usepackage\scrlfile@saved@RequirePackage\else
+ \PackageWarning{scrlfile}{%
+ Maybe serious problem: unexpected definition of\MessageBreak
+ \string\usepackage
+ }%
+ \fi
+ \global\let\usepackage\RequirePackage
+ \fi
+ \fi
+% \end{macrocode}
+% We have to test, if a package was already loaded. Only not yet loaded
+% packages will be added to the exclusion list. Empty arguments will be
+% ignored.
+% \changes{v3.11a}{2012/06/11}{missing \cs{scrlfile@excludedpackages} at
+% redefinition of \cs{scrlfile@excludedpackages} added}%^^A
+% \changes{v3.26}{2018/08/29}{spurious \cs{expandafter} removed}%^^A
+% \begin{macrocode}
+ \@for\reserved@a:=\reserved@b\do {%
+ \ifx\reserved@a\@empty
+ #1{scrlfile}{%
+ empty package argument for
+ \string\PreventPackageFromLoading\MessageBreak
+ ignored%
+ }%
+ \else
+ \expandafter\@ifpackageloaded\expandafter{\reserved@a}{%
+ #1{scrlfile}{%
+ package `\reserved@a' already loaded.\MessageBreak
+ Cannot prevent it from beeing loaded%
+ }%
+ }{%
+ \ifx\scrlfile@excludedpackages\@empty
+ \global\let\scrlfile@excludedpackages\reserved@a
+ \else
+ \xdef\scrlfile@excludedpackages{\scrlfile@excludedpackages,%
+ \reserved@a}%
+ \fi
+ \if\relax\detokenize{#2}\relax\else
+ \@ifundefined{scrlfile@exclude@package@\reserved@a @do}{%
+ \@namedef{scrlfile@exclude@package@\reserved@a @do}{}%
+ }{}%
+ \expandafter\gdef
+ \csname scrlfile@exclude@package@\reserved@a
+ @do\expandafter\expandafter\expandafter\endcsname
+ \expandafter\expandafter\expandafter{%
+ \csname scrlfile@exclude@package@\reserved@a @do\endcsname
+ #2%
+ }%
+ \fi
+ }%
+ \fi
+ }%
+% \end{macrocode}
+% If the exclusion list is still empty (because all packages has been loaded
+% already), remove the patch:
+% \begin{macrocode}
+ \ifx\scrlfile@excludedpackages\@empty
+ \ResetPreventPackageFromLoading
+ \fi
+ \fi
+}
+\@onlypreamble\PreventPackageFromLoading
+% \end{macrocode}
+% \begin{macro}{\ResetPreventPackageFromLoading}
+% \changes{v3.08}{2010/11/04}{New}
+% \changes{v3.32}{2020/09/09}{works global}
+% \begin{macro}{\StorePreventPackageFromLoading}
+% \changes{v3.08}{2010/11/04}{New}
+% These two are very simple
+% \begin{macrocode}
+\newcommand*{\ResetPreventPackageFromLoading}{%
+ \global\let\scrlfile@excludedpackages\@empty
+ \ifx\RequirePackage\scrlfile@RequirePackage
+ \ifx\usepackage\RequirePackage
+ \global\let\usepackage\scrlfile@saved@RequirePackage
+ \fi
+ \global\let\RequirePackage\scrlfile@saved@RequirePackage
+ \fi
+}
+\@onlypreamble\ResetPreventPackageFromLoading
+\newcommand*{\StorePreventPackageFromLoading}[1]{%
+ \let#1\scrlfile@excludedpackages
+}
+\@onlypreamble\StorePreventPackageFromLoading
+% \end{macrocode}
+% \begin{macro}{\UnPreventPackageFromLoading}
+% \changes{v3.12}{2013/11/22}{New}%^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}%^^A
+% \changes{v3.32}{2020/09/09}{works global}
+% \begin{macro}{\@UnPreventPackageFromLoading}
+% \changes{v3.12}{2013/11/22}{New (internal)}%^^A
+% This removes packages from the prevent exclude list. The star variant also
+% undefines the instead code.
+% \begin{macrocode}
+\newcommand*{\UnPreventPackageFromLoading}{%
+ \kernel@ifstar {\@tempswatrue\@UnPreventPackageFromLoading}%
+ {\@tempswafalse\@UnPreventPackageFromLoading}%
+}
+\newcommand*{\@UnPreventPackageFromLoading}[1]{%
+ \edef\reserved@b{\zap@space#1 \@empty}%
+ \if@tempswa
+ \@for\reserved@a:=\reserved@b\do {%
+ \ifx\reserved@a\@empty \else
+ \ifcsname scrlfile@exclude@package@\reserved@a @do\endcsname
+ \expandafter\let
+ \csname scrlfile@exclude@package@\reserved@a @do\endcsname
+ \undefined
+ \fi
+ \fi
+ }%
+ \fi
+ \ifcsname scrlfile@excludedpackages\endcsname
+ \let\reserved@a\scrlfile@excludedpackages
+ \let\scrlfile@excludedpackages\@empty
+ \expandafter\@for\expandafter\reserved@c
+ \expandafter:\expandafter=\reserved@a
+ \do{%
+ \ifx\reserved@c\@empty\else
+ \@expandtwoargs\in@{,\reserved@c,}{,\reserved@b,}%
+ \ifin@
+ \else
+ \ifx\scrlfile@excludepackages\@empty
+ \global\let\scrlfile@excludepackages\reserved@c
+ \else
+ \xdef\scrlfile@excludedpackages{%
+ \scrlfile@excludedpackages,\reserved@c
+ }%
+ \fi
+ \fi
+ \fi
+ }%
+ \ifx\scrlfile@excludedpackages\@empty\ResetPreventPackageFromLoading\fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\scrlfile@RequirePackage}
+% \changes{v3.08}{2010/11/04}{New (internal)}
+% \changes{v3.12}{2013/11/22}{tolerate spaces}
+% \changes{v3.12}{2013/11/22}{execute the optional argument of
+% \cs{PreventPackageFromLoading}}
+% This macro will replace \cs{RequirePackage} whenever the exlude list is not
+% empty
+% \begin{macrocode}
+\newcommand*{\scrlfile@RequirePackage}[2][]{%
+ \let\reserved@c\@empty
+ \let\reserved@d\@empty
+ \edef\reserved@b{\zap@space#2 \@empty}%
+ \expandafter\@for\expandafter\reserved@b\expandafter:\expandafter=\reserved@b
+ \do {%
+ \begingroup
+ \@tempswatrue
+ \@for\reserved@a:=\scrlfile@excludedpackages\do {%
+ \ifx\reserved@a\reserved@b
+ \@tempswafalse
+ \fi
+ }%
+ \if@tempswa
+ \xdef\reserved@c{\reserved@c,\reserved@b}%
+ \else
+ \ifx\reserved@b\@empty\else
+ \PackageInfo{scrlfile}{Excluding package `\reserved@b'\MessageBreak
+ from loading}%
+ \@ifundefined{scrlfile@exclude@package@\reserved@b @do}{%
+ }{%
+ \expandafter\g@addto@macro\expandafter\reserved@d
+ \csname scrlfile@exclude@package@\reserved@b @do\endcsname
+ }%
+ \fi
+ \fi
+ \endgroup
+ }%
+ \ifx\reserved@c\@empty
+ \let\reserved@a\scr@gobbleopt
+ \else
+ \edef\reserved@a{\noexpand\scrlfile@saved@RequirePackage[#1]{%
+ \expandafter\@gobble\reserved@c\@empty}}%
+ \fi
+ \expandafter\reserved@d
+ \reserved@a
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scr@gobbleopt}
+% \changes{v3.08}{2010/11/04}{New (internal)}
+% \changes{v3.08a}{2011/02/11}{\cs{@gobbleopt} renamed due to compaibility
+% problems with \texttt{ntheorem}}
+% Eat the optional argument if it exists.
+% \begin{macrocode}
+\providecommand{\scr@gobbleopt}[1][]{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\kernel@ifstar}
+% \changes{v3.20}{2016/04/12}{New (internal)}
+% I hope, the \LaTeX{} kernel will define this command in future. But
+% nevertheless, there are \LaTeX{} kernels in real live without this
+% command. So I do it again if needed:
+% \begin{macrocode}
+\providecommand*\kernel@ifstar[1]{\kernel@ifnextchar*{\@firstoftwo{#1}}}
+% \end{macrocode}
+% \end{macro}%^^A \kernel@ifstar
+%
+%
+% \subsection{Extra Document Hooks}
+%
+% \begin{macro}{\BeforeClosingMainAux}
+% \changes{v2.95}{2002/09/03}{new}
+% \begin{macro}{\AfterReadingMainAux}
+% \changes{v3.03}{2009/03/25}{new}
+% These are completly different. First we have to establish a new hook
+% at \cs{end\{document\}}, just after closing the group and after the
+% final \cs{clearpage}.
+% TODO: Handling/ignoring an optional argument to make them more compatible
+% with \LaTeX's new \cs{AddToHook}.
+% \begin{macrocode}
+\AtEndDocument{%
+ \let\scr@saved@checkend=\@checkend
+ \renewcommand*{\@checkend}[1]{%
+ \def\reserved@a{#1}\def\reserved@b{document}%
+ \scr@saved@checkend{#1}%
+ \ifx\reserved@a\reserved@b
+ \let\scr@saved@clearpage=\clearpage
+ \renewcommand*{\clearpage}{\scr@saved@clearpage
+ \scr@hook@bcma
+ \scr@restore@newpage
+ \let\clearpage=\scr@saved@clearpage}%
+ \fi%
+ \let\scr@saved@dofilelist\@dofilelist
+ \def\@dofilelist{%
+ \scr@hook@acma
+ \let\@dofilelist\scr@saved@dofilelist
+ \scr@saved@dofilelist
+ }%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@saved@checkend}
+% \changes{v2.95}{2002/09/03}{new (internal)}
+% \begin{macro}{\scr@saved@dofilelist}
+% \changes{v3.03}{2009/03/25}{new}
+% You may see above, that we need save-to macros.
+% \begin{macrocode}
+\newcommand*{\scr@saved@checkend}{}
+\newcommand*{\scr@saved@dofilelist}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\scr@redefine@newpage}
+% \changes{v3.00}{2008/07/09}{new (internal)}
+% Some classes (e.g. \textsf{letter}) write output to the aux file.
+% Because of this, redefinition of \cs{newpage} will only be done, if
+% \cs{BeforeClosingMainAux} is used.
+% \begin{macro}{\scr@saved@newpage}
+% \changes{v3.00}{2008/07/09}{new (internal)}
+% And \cs{newpage} will be restored after the hook.
+% \begin{macro}{\scr@restore@newpage}
+% \begin{macrocode}
+\newcommand*{\scr@redefine@newpage}{%
+ \let\scr@saved@newpage\newpage
+ \def\scr@restore@newpage{%
+ \renewcommand*{\newpage}{%
+ \PackageWarningNoLine{%
+ scrlfile%
+ }{%
+ \string\newpage\space at main aux file!\MessageBreak
+ You have output material at the main aux file.\MessageBreak
+ Note, that the \string\BeforeClosingMainAux\space commands\MessageBreak
+ are processed before the output from aux file%
+ }%
+ \let\newpage\scr@saved@newpage
+ \newpage
+ }%
+ }%
+ \renewcommand*{\newpage}{%
+ \PackageError{%
+ scrlfile%
+ }{%
+ \string\newpage\space at \string\BeforeClosingMainAux
+ }{%
+ You should never use \string\newpage\space or
+ \string\clear(double)page or other output material at the\MessageBreak
+ argument of \string\BeforeClosingMainAux!\MessageBreak
+ If you'll continue, the \string\newpage\space will be ignored to
+ avoid corruption of\MessageBreak
+ every prior use of \string\BeforeClosingMainAux.
+ }%
+ }%
+}
+\newcommand*{\scr@restore@newpage}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\scr@hook@bcma}
+% \changes{v2.95}{2002/09/03}{new (internal)}
+% \begin{macro}{\scr@hook@acma}
+% \changes{v3.03}{2009/03/25}{new (internal)}
+% We also need macros, that saves the commands at the hooks and are
+% extendable using \cs{g@addto@macro}.
+% \begin{macrocode}
+\newcommand*{\scr@hook@bcma}{}
+\newcommand*{\scr@hook@acma}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% Now we are able to write the user command. Here we also warn, if we detect
+% one more \cs{newpage}\,---\,maybe at a \cs{clearpage} or
+% \cs{cleardoublepage}.
+% \begin{macrocode}
+\newcommand*{\BeforeClosingMainAux}{%
+ \ifx\scr@hook@bcma\@empty
+ \gdef\scr@hook@bcma{%
+ \renewcommand*{\BeforeClosingMainAux}[1]{####1}%
+ \let\protected@write\protected@immediate@write
+ \scr@redefine@newpage
+ }%
+ \fi
+ \g@addto@macro\scr@hook@bcma%
+}
+\newcommand*{\AfterReadingMainAux}{%
+ \ifx\scr@hook@acma\@empty
+ \gdef\scr@hook@acma{%
+ \renewcommand*{\AfterReadingMainAux}[1]{####1}%
+ \let\protected@write\protected@immediate@write
+ }%
+ \fi
+ \g@addto@macro\scr@hook@acma%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\protected@immediate@write}
+% Like \LaTeX{} kernel's |\protected@write| but using |\immediate\write|. In
+% this case it is even not a good idea to protect |\thepage|!
+% \begin{macrocode}
+\long\def\protected@immediate@write#1#2#3{%
+ \begingroup
+ #2%
+ \let\protect\@unexpandable@protect
+ \edef\reserved@a{\immediate\write#1{#3}}%
+ \reserved@a
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{The \KOMAScript{} Logo}
+%
+% Last but not least this is a \KOMAScript{} package, so we also define the
+% \KOMAScript{} logo:
+% \begin{macrocode}
+\RequirePackage{scrlogo}
+% \end{macrocode}
+%
+% \Finale
+%
+% \endinput
+% Local Variables:
+% mode: doctex
+% TeX-master: t
+% End:
diff --git a/macros/latex/contrib/koma-script/source/scrlfile.dtx b/macros/latex/contrib/koma-script/source/scrlfile.dtx
index 8746d73643..b9782c81e5 100644
--- a/macros/latex/contrib/koma-script/source/scrlfile.dtx
+++ b/macros/latex/contrib/koma-script/source/scrlfile.dtx
@@ -1,4 +1,3 @@
-% \CheckSum{849}
% \iffalse^^A meta-comment
% ======================================================================
% scrlfile.dtx
@@ -40,31 +39,13 @@
%
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
% ======================================================================
-% \fi^^A meta-comment
-%
-% \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: scrlfile.dtx 3447 2020-01-06 16:40:47Z kohm $
+%%% From File: $Id: scrlfile.dtx 3537 2020-09-14 07:30:10Z kohm $
%<*dtx>
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2020-01-06 17:40:47 +0100 (Mon, 06 Jan 2020) $
+ \filedate$Date: 2020-09-14 09:30:10 +0200 (Mon, 14 Sep 2020) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
\filerevision$Revision: 2631 $
\edef\reserved@a{%
@@ -75,12 +56,10 @@
}%
\reserved@a
%</dtx>
-%<*dtx|scrlfile>
-%<scrlfile>\ProvidesPackage{scrlfile}[%
+%<package>\ProvidesPackage{scrlfile}[%
%!KOMAScriptVersion
-%<scrlfile> package
- (loading files)]
-%</dtx|scrlfile>
+%<package> package
+ (file load hooks)]
%<*dtx>
\ifx\documentclass\undefined
\input scrdocstrip.tex
@@ -89,1262 +68,173 @@
\KOMAdefVariable{COPYRIGHTFROM}{2002}
\generate{\usepreamble\defaultpreamble
\file{scrlfile.sty}{%
- \from{scrlfile.dtx}{scrlfile}%
- \from{scrlogo.dtx}{logo}%
+ \from{scrlfile.dtx}{package}%
}%
}
+ \batchinput{scrlfile-hook.dtx}
+ \batchinput{scrlfile-patcholdlatex.dtx}
\@@input scrstrop.inc
\else
\let\endbatchfile\relax
\fi
\endbatchfile
\documentclass[parskip=half-]{scrdoc}
-\usepackage[german,english]{babel}
+\usepackage[english]{babel}
\CodelineIndex
\RecordChanges
\GetFileInfo{scrlfile.dtx}
\title{\KOMAScript{} \partname\ \texttt{\filename}%
- \thanks{This file is version \fileversion\ of file \texttt{\filename}.}}
+ \thanks{This file is revision \fileversion\ of file \texttt{\filename}.}}
\date{\filedate}
-\author{Markus Kohm\thanks{mailto:komascript@gmx.info}~\thanks{Parts of
- description sections of the documentation where written by Jens-Uwe
- Morawski.}}
+\author{Markus Kohm\thanks{mailto:komascript@gmx.info}}
\begin{document}
\maketitle
\begin{abstract}
- This package provides hooks before and after loading files, packages or
- classes. It also provides a hook after the last \cs{clearpage} of the
- document. It allowes to replace files, packages and classes by other
- files, packages and classes. It is inteded to be used by package and class
- authors but may also be used by \LaTeX{} users.
+ This package is the compatibility layer over \texttt{scrlfile-hook} and
+ \texttt{scrlfile-patcholdlatex}. It provides package and class hook
+ handling independent from the used \LaTeX{} release.
\end{abstract}
+ \tableofcontents
+
\DocInput{\filename}
\end{document}
%</dtx>
-% \fi
-%
-% \selectlanguage{english}
-%
-% \changes{v2.95}{2002/06/11}{First version split from hugh scrclass.dtx}%^^A
-% \changes{v3.24}{2017/05/06}{standalone manual removed}%^^A
-%
-% \StopEventually{\PrintIndex\PrintChanges}
-%
-% \section{Implementation of \textsf{scrlfile}}
+% \fi^^A meta-comment
%
-% \iffalse
-%<*scrlfile>
-% \fi
+% \changes{v2.95}{2002/06/11}{First version split from hugh scrclass.dtx}
+% \changes{v3.24}{2017/05/06}{standalone manual removed}
+% \changes{v3.32}{2020/09/11}{new implementation based on
+% \texttt{scrlfile-hook} and \texttt{scrlfile-patcholdlatex}}
%
-% \subsection{Preamble}
%
-% \changes{v3.24}{2017/05/06}{Preamble sub-section removed}%^^A
-% Since \KOMAScript~3.24 we do not longer output version information into the
-% \texttt{log}-file.
+% \section{User Manual}
%
-% \subsection{Options}
+% For user manual see the \KOMAScript{} manual. Here you can find interim
+% documentation only (before it is added to the \KOMAScript{} manual).
%
-% Currently there are no options.
-% \begin{macrocode}
-\ExecuteOptions{}
-\ProcessOptions\relax
-% \end{macrocode}
+% \DescribeOption{withdeprecated}
+% Package option \texttt{withdeprecated} enables the definition of deprecated
+% commands \cs{AfterClass+}, \cs{AfterPackage+}, \cs{AfterClass!} and
+% \cs{AfterPackage!}. All of them will be emulated by \cs{AfterAtEndOClass*}
+% and \cs{AfterAtEndOfPackage*} so they are not completely compatible with the
+% original deprecated commands.
%
+% Users of classes or package, that use such deprecated commands can load
+% \texttt{scrlfile} already before the class using:
+% \begin{verbatim}
+% \RequirePackage[withdeprecated]{scrlfile}
+% \end{verbatim}
+% or adding option \texttt{withdeprecated} to the global options of
+% \cs{documentclass}. Note, this is not a key-value option. It cannot be
+% changed after loading \texttt{scrlfile}.
%
-% \subsection{The macros}
%
-% \begin{macro}{\InputIfFileExists}
-% \changes{v2.96}{2006/07/19}{replacement code added}%^^A
-% \LaTeX{} uses this macro for loading files with
-% \cs{input}\marg{filename}, \cs{include}, \cs{LoadClass},
-% \cs{LoadClassWithOptions}, \cs{documentclass}, \cs{documentstyle},
-% \cs{RequirePackage}, \cs{usepackage}. Only
-% \cs{input}~\meta{filename} loads \meta{filename} without using
-% \cs{InputIfFileExists}.
+% \StopEventually{\PrintIndex\PrintChanges}
%
-% Because of this, it's very easy to add stuff before and after
-% loading a file. We simply change this macro and add to
-% macros\,---\,one before loading the file and one after loading the
-% file. But before we redefine the macro, we test, if the macro was
-% defined like we expected. \LaTeX{} will warn, if not.
-% \changes{v3.27}{2019/10/06}{\LaTeX{} 2019-10-01 changed the definition}%^^A
+% \section{Implementation of \textsf{scrlfile}}
%
-% \changes{v3.28}{2019/11/21}{support for \textsf{memoir}}%^^A
-% With \textsf{memoir} their is a special case. It also redefines
-% \cs{InputIfFileExists}. As shown in the source of the class it does so
-% because \textsf{scrlfile} does it. However it does it not compatible with
-% \textsf{scrlfile} and it does not emulate \textsf{scrlfile} as it do for
-% other packages. So if you try to use \textsf{scrlfile} with memoir,
-% \textsf{scrbase} has to take care to \textsf{memoir}. And in oposit to
-% \textsf{scrlfile} \textsf{memoir} does not always fix the argument order bug
-% of \LaTeX{} but do so only for the implementation of \LaTeX{} 2019-10-01.
-% So in case of \textsf{memoir} we just patch every version of it without
-% testing.
-% \begin{macrocode}
-\@ifclassloaded{memoir}{%
- \PackageInfo{scrlfile}{class `memoir' detected.\MessageBreak
- Using a compatible redefinition of \string\InputIfFileExists,\MessageBreak
- but always robust and with the fix of the\MessageBreak
- argument order bug even for old versions of the\MessageBreak
- LaTeX kernel%
- }%
-}{%
- \long\def\reserved@a#1#2{%
- \IfFileExists{#1}%
- {#2\@addtofilelist{#1}\@@input \@filef@und}}%
- \ifx\reserved@a\InputIfFileExists\else
- \expandafter\CheckCommand\expandafter*\expandafter\InputIfFileExists
- \expandafter{%
- \expandafter\protect\csname InputIfFileExists \endcsname
- }%
- \expandafter\CheckCommand \csname InputIfFileExists \endcsname[2]{%
- \IfFileExists {#1}{%
- \expandafter \@swaptwoargs \expandafter {\@filef@und }%
- {#2\@addtofilelist {#1}\@@input }%
- }%
- }%
- \fi
-}
-% \end{macrocode}
-% Now we can redefine the macro like described above:
+% We either need to load one of these packages. We could do the decision by
+% testing the \LaTeX{} version. But the existence of macro \cs{AddToHook} is
+% easier and better.
% \begin{macrocode}
-\expandafter\renewcommand\expandafter*\expandafter\InputIfFileExists
-\expandafter{\expandafter
- \protect\csname InputIfFileExists \endcsname}%
-\expandafter\long\expandafter\def\csname InputIfFileExists \endcsname#1#2{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname #1-@alias\endcsname\relax
- \expandafter\@secondoftwo
- \else
- \scr@replacefile@msg{\csname #1-@alias\endcsname}{#1}%
- \expandafter\@firstoftwo
- \fi
- {%
- \expandafter\InputIfFileExists\expandafter{\csname
- #1-@alias\endcsname}{#2}%
- }%
- {\IfFileExists{#1}{%
- \expandafter\scr@input@withhook\expandafter{\@filef@und}{#1}{#2}%
- }}%
-}
-% \end{macrocode}
-% \begin{macro}{\scr@input@withhook}
-% \changes{v3.27}{2019/03/28}{new (internal)}%^^A
-% \changes{v3.28}{2019/11/21}{support for \textsf{memoir}}%^^A
-% We need a new internal, because of expanding \cs{@file@und} before inputting
-% the file.
-% \begin{macrocode}
-\@ifclassloaded{memoir}{%
- \newcommand{\scr@input@withhook}[3]{%
- \scr@load@hook{before}{#2}%
- #3\@addtofilelist{#2}%
- \@ifundefined{m@matbeginf}{}{\m@matbeginf{#2}}%
- \@@input #1%
- \@ifundefined{m@matendf}{}{\m@matendf{#2}}%
- \@ifundefined{killm@matf}{}{\killm@matf{#2}}%
- \scr@load@hook{after}{#2}%
- }%
+\@ifundefined{AddToHook}{%
+ \RequirePackage{scrlfile-patcholdlatex}%
+ \RequirePackage{xparse}%
}{%
- \newcommand{\scr@input@withhook}[3]{%
- \scr@load@hook{before}{#2}%
- #3\@addtofilelist{#2}%
- \@@input #1%
- \scr@load@hook{after}{#2}%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@loadwithoptions}
-% \changes{v2.96}{2006/07/19}{new redefinition}
-% \begin{macro}{\scr@loadwithoptions}
-% \changes{v2.96}{2006/07/19}{new helper macro}
-% \begin{macro}{\scr@@loadwithoptions}
-% \changes{v2.97a}{2007/03/07}{new helper macro}
-% \LaTeX{} uses this macro for loading classes and packages using
-% \cs{LoadClassWithOptions} or \cs{RequirePackageWithOptions}. We simply say
-% now: if the class or package should be replaced by another, try it again
-% with the replacement name. The stack is used. This will result in an
-% error if the replacements are nested too deep. This should be, because it
-% will also result in an error using ring replacements.
-% \begin{macrocode}
-\newcommand*{\scr@@loadwithoptions}{}
-\newcommand*{\scr@loadwithoptions}{}
-\let\scr@loadwithoptions\@loadwithoptions
-\renewcommand*{\@loadwithoptions}[3]{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname #3.#1-@aliasname\endcsname\relax
- \def\scr@@loadwithoptions{\scr@loadwithoptions{#1}{#2}{#3}}%
- \else
- \scr@replacefile@msg{\csname #3.#1-@aliasname\endcsname.#1}{#3.#1}%
- \def\scr@@loadwithoptions{%
- \@loadwithoptions{#1}{#2}{\csname #3.#1-@aliasname\endcsname}%
- }%
- \fi
- \scr@@loadwithoptions
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@onefilewithoption}
-% \changes{v2.96}{2006/07/19}{new redefinition}
-% \begin{macro}{\scr@onefilewithoption}
-% \changes{v2.96}{2006/07/19}{new helper macro}
-% \begin{macro}{\scr@@onefilewithoption}
-% \changes{v2.98}{2007/12/18}{new helper macro}
-% \LaTeX{} uses this macro for loading classes and packages using
-% \cs{LoadClass}, \cs{documentclass}, \cs{RequirePackage}, and
-% \cs{usepackage}. We simply say now: if the class or package should be
-% replaced by another, try it again with the replacement name. The stack is
-% used. This will result in an error if the replacements are nested too
-% deep. This should be, because it will also result in an error using ring
-% replacements.
-% \begin{macrocode}
-\newcommand*{\scr@onefilewithoptions}{}
-\let\scr@onefilewithoptions\@onefilewithoptions
-\def\@onefilewithoptions#1[#2][#3]#4{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname #1.#4-@aliasname\endcsname\relax
-% \end{macrocode}
-% Do this ridiculous definition and call outside of \cs{ifx}\dots\cs{fi}
-% because of some errornous packages like some versions of
-% \textsf{breakurl}. This does not avoid an error, but the message about
-% unclosed \cs{if} will be outside of \textsf{scrlfile}.
-% \begin{macrocode}
- \def\scr@@onefilewithoptions{\scr@onefilewithoptions{#1}}%
- \else
- \scr@replacefile@msg{\csname #1.#4-@aliasname\endcsname.#4}{#1.#4}%
- \edef\scr@@onefilewithoptions{%
- \noexpand\@onefilewithoptions{\csname #1.#4-@aliasname\endcsname}}%
- \fi
- \scr@@onefilewithoptions[{#2}][{#3}]{#4}%
- \scr@load@hook{lateafter}{#1.#4}%
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\ReplaceInput}
-% \changes{v2.96}{2006/07/19}{new command}
-% \changes{v3.12}{2013/11/15}{implemented}
-% Defining the replacement by definition of \cs{\#1-@alias}.
-% \begin{macrocode}
-\newcommand*{\ReplaceInput}[2]{%
- \expandafter\edef\csname #1-@alias\endcsname{#2}%
-}
-% \end{macrocode}
-% \begin{macro}{\ReplaceFile}
-% \changes{v2.96}{2006/07/19}{new command}
-% \changes{v3.12}{2013/11/15}{throw error}
-% Sorry, but I've implemented the wrong command some time ago.
-% \begin{macrocode}
-\newcommand*{\ReplaceFile}{%
- \PackageError{scrlfile}{%
- usage of not documented command `\string\ReplaceFile'%
- }{%
- Command `\string\ReplaceFile' has been implemented accidentally in
- KOMA-Script 2.96\MessageBreak
- and replaced by `\string\ReplaceInput' in KOMA-Script 3.12.\MessageBreak
- You should replace `\string\ReplaceFile' by `\string\ReplaceInput' to
- avoid this error\MessageBreak
- message%
- }%
- \ReplaceInput
+ \RequirePackage{scrlfile-hook}%
}
% \end{macrocode}
-% \end{macro}
-% \end{macro}
%
-% \begin{macro}{\UnReplaceInput}
-% \changes{v3.12}{2013/11/15}{new command}
-% Do not longer replace a file.
+% \begin{option}{withdeprecated}
+% \changes{v3.32}{2020/09/11}{new option}
+% Depending on this option we implement addition deprecated commands.
% \begin{macrocode}
-\newcommand*{\UnReplaceInput}[1]{%
- \ifcsname #1-@alias\endcsname
- \expandafter\let\csname #1-@alias\endcsname\relax
- \fi
-}
+\DeclareOption{withdeprecated}{%
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\ReplacePackage}
-% \changes{v2.96}{2006/07/19}{new command}
-% \begin{macro}{\ReplaceClass}
-% \changes{v2.96}{2006/07/19}{new command}
-% \begin{macro}{\@replacefilewithext}
-% \changes{v2.96}{2006/07/19}{new helper command}%^^A
-% Note that replacing a package or class will not replace the input of the
-% file of the package or class but only the input of package or class.
+% \begin{macro}{\AfterClass+}
+% \begin{macro}{\AfterClass!}
+% \cs{scrlfile@AfterClass} is used to store the original \cs{AfterClass},
+% before redefining \cs{AfterClass} to handle the plus and the exclamation
+% mark variant.
% \begin{macrocode}
-\newcommand*{\@replacefilewithext}[3]{%
- \expandafter\edef\csname #1.#3-@aliasname\endcsname{#2}%
- }
-\newcommand*{\ReplacePackage}[2]{%
- \@replacefilewithext{#1}{#2}\@pkgextension
-}
-\newcommand*{\ReplaceClass}[2]{%
- \@replacefilewithext{#1}{#2}\@clsextension
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\UnReplacePackage}
-% \changes{v3.12}{2013/11/15}{new command}
-% \begin{macro}{\UnReplaceClass}
-% \changes{v3.12}{2013/11/15}{new command}
-% \begin{macro}{\@unreplacefilewithext}
-% \changes{v3.12}{2013/11/15}{new helper command}%^^A
-% Do not nolonger replace a class or package.
-% \begin{macrocode}
-\newcommand*{\@unreplacefilewithext}[2]{%
- \ifcsname #1.#2-@aliasname\endcsname
- \expandafter\let\csname #1.#2-@aliasname\endcsname\relax
- \fi
-}
-\newcommand*{\UnReplacePackage}[1]{%
- \@unreplacefilewithext{#1}\@pkgextension
-}
-\newcommand*{\UnReplaceClass}[1]{%
- \@unreplacefilewithext{#1}\@clsextension
-}
+ \RenewDocumentCommand\AfterClass{}{%
+ \kernel@ifnextchar +%
+ {\scrlfile@emulatedeprecated{Class}}%
+ {%
+ \kernel@ifnextchar !%
+ {\scrlfile@emulatedeprecated{Class}}%
+ \scrlfile@AfterClass
+ }%
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\scr@replacefile@msg}
-% \changes{v2.96}{2006/07/19}{new helper command}
-% \changes{v2.98}{2007/12/18}{spellfix}
-% Last but not least \textsf{scrlfile} will write a message to the log file at
-% every replacement.
-% \begin{macrocode}
-\newcommand*{\scr@replacefile@msg}[2]{%
- \PackageInfo{scrlfile}{inputing `#1' instead of `#2'}%
-}
-% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\scr@load@hook}
-% \changes{v3.27a}{2019/10/16}{workaround for strange handling of
-% \cs{AtEndOfPackage} hook in \cs{@onefilewithoptions}}%^^A
-% This macro simply calls a load-file-hook, either the \emph{before}
-% or the \emph{after} one, if the hook exists. After calling the hook
-% it will be deleted. First argument is the type of hook
-% (\meta{before} or \meta{after}), second argument is a filename.
-% \begin{macrocode}
-\newcommand*{\scr@load@hook}[2]{%
-% \end{macrocode}
-% \begin{macro}{\scrlfile@cmp@hook}
-% \changes{v3.27a}{2019/10/23}{local macros renamed}%^^A
-% \begin{macro}{\scrlfile@hookname}
-% \changes{v3.27a}{2019/10/23}{local macros renamed}%^^A
-% \changes{v3.29}{2020/06/01}{do the class and package load hooks only in the
-% document preamble}%^^A --> https://komascript.de/node/2274
-% Workaround for strange handling of the \cs{AtEndOfPackage} hook in
-% \cs{@onefilewithoptions} (becomes \cs{@empty}, if the package already has
-% been loaded and is not loaded again). This workaround is not nice but
-% smart. Before loading a file it defines a marker macro and undefines it
-% later. To decide whether to define or remove the marker, two local macros
-% are used \cs{scrlfile@hookname} and \cs{scrlfile@cmp@hook}. The first has
-% the name of the current hook from the first argument. The other is a compare
-% string. The first one is also valid while processing the hook, but only in
-% the document preamble. The names are very unique, so we do not reserve them
-% using \cs{newcommand} outside. The name of the marker is less
-% unique. Nevertheless it is not reserved.
-% Note: For recursive loading of files this does not work. But this also does
-% not matter, because it is needed only for packages and classes, which are
-% never loaded recursive. For the same reason from \KOMAScript{} 3.29 this is
-% only used inside the document preamble. After the document preamble it can
-% be dangerous, e.g., inside a |tabular| or |array|.
-% \begin{macrocode}
- \ifx\@begindocumenthook\@undefined\else
- \edef\scrlfile@hookname{#1}%
- \def\scrlfile@cmp@hook{before}%
- \ifx\scrlfile@hookname\scrlfile@cmp@hook
- \expandafter\def\csname #2-l@ading\endcsname{#2}%
- \fi
- \let\scrlfile@cmp@hook\@undefined
- \fi
- \@ifundefined{#2-@#1}{}{%
- \@nameuse{#2-@#1}%
- \expandafter\let\csname #2-@#1\endcsname\relax
- }%
-% \end{macrocode}
-% The hook could destroy \cs{scrlfile@hookname} so define it again:
-% \begin{macrocode}
- \ifx\@begindocumenthook\@undefined\else
- \edef\scrlfile@hookname{#1}%
- \def\scrlfile@cmp@hook{after}%
- \ifx\scrlfile@hookname\scrlfile@cmp@hook
- \expandafter\let\csname #2-l@ading\endcsname\@undefined
- \fi
- \let\scrlfile@cmp@hook\@undefined
- \let\scrlfile@hookname\@undefined
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\scr@set@load@hook}
-% This command adds stuff to a load-file-hook, either the
-% \emph{before} or the \emph{after} one. First argument is the type of
-% hook (\meta{before} or \meta{after}), second is a filename. There's
-% a third argument not parsed by the macro itself but
-% \cs{g@addto@macro}. This third argument is the stuff, which will be
-% added to the hook. Because of using \cs{g@addto@macro} the hook must
-% be defined. So we define it, if it isn't.
-% \begin{macrocode}
-\newcommand*{\scr@set@load@hook}[2]{%
- \@ifundefined{#2-@#1}{\@namedef{#2-@#1}{}}{}%
- \expandafter\g@addto@macro\csname #2-@#1\endcsname}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\BeforeFile}
-% \begin{macro}{\AfterFile}
-% Just add code to the \emph{before} or \emph{after} hook of a file. The
-% arguments are:
-% \begin{description}
-% \item[\meta{file name}:] mandatory argument with the file name as given by
-% \cs{InputIfFileExists}.
-% \item[\meta{code}:] this argument is not processed by \cs{BeforeFile} or
-% \cs{AfterFile} but the internal \cs{scr@set@load@hook}. It is the code
-% that should be added to either the \emph{before} or the \emph{after} hook.
-% \end{description}
-% \begin{macrocode}
-\newcommand*{\BeforeFile}{\scr@set@load@hook{before}}
-\newcommand*{\AfterFile}{\scr@set@load@hook{after}}
-% \end{macrocode}
-% \end{macro}%^^A \AfterFile
-% \end{macro}%^^A \BeforeFile
-%
-% \begin{macro}{\BeforeClass}
-% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
-% \cs{kernel@ifnextchar}}%^^A
-% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
-% ersetzt}%^^A
-% This is quite simple. It only has to add code to the \emph{before} hook
-% already known by \cs{BeforeFile}. The arguments are:
-% \begin{description}
-% \item[\meta{package name}:] mandatory argument.
-% \item[\meta{code}:] this argument is processed not by \cs{BeforeClass} but
-% by the internal \cs{scr@set@load@hook} (see above), that will add the code
-% to the \emph{before} hook of file \meta{code}\texttt{.cls} (or whatever the
-% package extension is).
-% \end{description}
-% \begin{macrocode}
-\newcommand*{\BeforeClass}[1]{%
- \scr@set@load@hook{before}{#1.\@clsextension}}
-% \end{macrocode}
-% \end{macro}%^^A \BeforeClass
-%
-% \begin{macro}{\AfterClass}
-% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
-% \cs{kernel@ifnextchar}}%^^A
-% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
-% ersetzt}%^^A
-% \begin{macro}{\AfterAtEndOfClass}
-% These are more complicated. There are five forms:
-% \begin{description}
-% \item[\cs{AfterClass}] corresponds to \cs{AfterFile}. So the code will be
-% added to the usual \emph{after} hook and the code is exexuted before code
-% added by the class itself using \cs{AtEndOfClass}. Argument procession
-% will be done by \cs{@AfterClass}.
-% \item[\cs{AfterAtEndOfClass}] This uses the \emph{lateafter} hook, which
-% is executed after the class has been loaded completely inclusive the
-% execution of \cs{AtEndOfClass} code. However, the code will never be
-% executed, if the class will not be loaded (again). But it does nothing,
-% if the class has already been loaded. The arguments are:
-% \begin{description}
-% \item[\meta{class name}] mandatory argument
-% \item[\meta{code}:] this argument is processed not by \cs{BeforeClass}
-% but by the internal \cs{scr@set@load@hook} (see above), that will add
-% the code to the \emph{lateafter} hook of file \meta{code}\texttt{.cls}
-% (or whatever the class extension is), or by \cs{@gobble}.
-% \end{description}
-% \item[\cs{AfterClass*}] like \cs{AfterClass}, but if loading of the
-% class has already began, the code will be executed immediately. So, if
-% the command is used inside the class it is simply
-% \cs{@firstofone}. Argument procession will be done by \cs{@sAfterClass}.
-% \item[\cs{AfterClass+}] like \cs{AfterClass*}, but the code will be
-% executed immediately only if the class already has been loaded
-% completely or it is used inside \cs{AtEndOfClass}. So inside the class
-% it is similar to \cs{AtEndOfClass}. Argument procession will be done by
-% \cs{@pAfterClass}.
-% \item[\cs{AfterClass!}] like \cs{AfterClass+}, but even inside
-% \cs{AtEndOfClass} the code is executed after every all the
-% \cs{AtEndOfClass} code. Argument procession will be done by
-% \cs{@xAfterClass}. (Some class authors interpret this as the star
-% form of \cs{AfterAtEndOfClass}.)
-% \end{description}
-% \begin{macrocode}
-\newcommand*{\AfterClass}{%
- \kernel@ifstar {\@sAfterClass}{%
- \kernel@ifnextchar +\@pAfterClass{%
- \kernel@ifnextchar !\@xAfterClass\@AfterClass
- }%
- }%
-}
-% \end{macrocode}
-% \begin{macro}{\@AfterClass}
-% \cs{AfterClass}\marg{class name}\marg{code}.
-% It uses \cs{scr@set@load@hook} to add \meta{code} to the
-% \emph{after} hook. The second argument will be processed by
-% \cs{scr@set@load@hook}.
-% \begin{macrocode}
-\newcommand*{\@AfterClass}[1]{%
- \scr@set@load@hook{after}{#1.\@clsextension}}
-% \end{macrocode}
-% \end{macro}%^^A \@AfterClass
-% \begin{macro}{\@sAfterClass}
-% \changes{v3.27a}{2019/10/16}{group removed}%^^A
-% This is the internal implementation of:
-% \cs{AfterClass*}\marg{class name}\marg{code}.
-% It tests, whether or not \LaTeX{} thinks that the class
-% has already been loaded, but this only means whether or not the class
-% loading has already been started. If so, it immediately executes the next
-% argument. If not, is uses \cs{@AfterClass} to execute the \meta{code}
-% after loading the class.
-% \begin{macrocode}
-\newcommand*{\@sAfterClass}[1]{%
- \@ifclassloaded{#1}{%
- \@secondoftwo
- }{%
- \@AfterClass
- }%
- {#1}%
-}
-% \end{macrocode}
-% \end{macro}%^^A \@sAfterClass
-% \begin{macro}{\@pAfterClass}
-% \changes{v3.09}{2011/03/08}{new (internal)}%^^A
-% \changes{v3.27a}{2019/10/15}{renamed from \cs{@@AfterClass}}%^^A
-% \changes{v3.27a}{2019/10/16}{usage of \emph{l@ading} marker}%^^A
-% \changes{v3.27a}{2019/10/16}{group removed}%^^A
-% This is the internal implementation of:
-% \cs{AfterClass+}\marg{class name}\marg{code}.
-% Note, that the plus has not already read. So the arguments are:
-% \begin{description}
-% \item[\texttt{+}:] static plus, to be ignored.
-% \item[\meta{class name}] mandatory argument
-% \item[\meta{code}:] this argument is processed not by \cs{BeforeClass} but
-% by the internal \cs{@sAfterClass} or \cs{@AfterClass} (see above).
-% \end{description}
-% Here we cannot use \LaTeX's test, whether or not the class as already been
-% loaded, because it tests only, if loading of the class has already been
-% started. Here we use an internal information of our \emph{l@ading} marker
-% (see \cs{scr@load@hook}). It is as long defined as a file is read while
-% input. If it is undefined (or \cs{relax}) we can use \cs{@sAfterClass} to
-% either execute \meta{code} immediately or add it to the \emph{after}
-% hook. If is defined (and not \cs{relax}) loading of the class is in progress
-% and \cs{AfterClass} is used to add \meta{code} to the \emph{after} hook. The
-% effect is, that \meta{code} is executed immediately if loading of
-% \meta{class name} has already been finished and after the class if the
-% loading of the \meta{class name} has not already been finished.
-% \begin{macrocode}
-\newcommand*{\@pAfterClass}[2]{%
- \@ifundefined{#2.\@clsextension-l@ading}{%
- \@sAfterClass
- }{%
- \@AfterClass
- }%
- {#2}%
-}
-% \end{macrocode}
-% \end{macro}%^^A \@pAfterClass
-% \begin{macro}{\@xAfterClass}
-% \changes{v3.09}{2011/03/09}{new (internal)}%^^A
-% \changes{v3.27}{2019/08/26}{using inside class fixed}%^^A
-% \changes{v3.27a}{2019/10/15}{renamed from \cs{@@@AfterClass}}%^^A
-% \changes{v3.27a}{2019/10/16}{usage of \emph{l@ading} marker}%^^A
-% \changes{v3.27a}{2019/10/16}{group removed}%^^A
-% This is the internal implementation of:
-% \cs{AfterClass!}\marg{class name}\marg{code}. Note, that the exclamation
-% mark has not already read. So the arguments are:
-% \begin{description}
-% \item[\texttt{!}:] static exclamation mark, to be ignored.
-% \item[\meta{class name}] mandatory argument
-% \item[\meta{code}:] this argument is processed not by \cs{BeforeClass} but
-% by the internal \cs{@sAfterClass} or \cs{@AfterClass} (see above).
-% \end{description}
-% There are two differences to \cs{@pAfterClass}:
-% \begin{enumerate}
-% \item In case of \cs{\meta{class name}.cls-l@ading} is defined (and not
-% \cs{relax}), while loading a class, it used \cs{AfterAtEndOfClass}
-% instead of \cs{AfterClass} to add \meta{code} to the \emph{lateafter}
-% hook instead of the \emph{after} hook.
-% \item In case of \cs{\meta{class name}.cls-l@ading} is undefined (or
-% \cs{relax}) it also has to test, whether or not the class has already
-% been loaded. If so, it uses \cs{@sAfterClass} to execute the \meta{code}
-% immediately, otherwise it uses \cs{AfterAtEndOfClass} to add the
-% \meta{code} to the \emph{lateafter} hook.
-% \end{enumerate}
-% So it is more like (the not existing) \cs{AfterAtEndOfClass+} than
-% \cs{AfterAtEndOfClass*}.
+% \begin{macro}{\AfterPackage+}
+% \begin{macro}{\AfterPackage!}
+% \cs{scrlfile@AfterPackage} is used to store the original \cs{AfterPackage},
+% before redefining \cs{AfterPackage} to handle the plus and the exclamation
+% mark variant.
% \begin{macrocode}
-\newcommand*{\@xAfterClass}[2]{%
- \@ifundefined{#2.\@clsextension-l@ading}{%
- \@ifclassloaded{#2}{%
- \@sAfterClass
- }{%
- \AfterAtEndOfClass
- }%
- }{%
- \AfterAtEndOfClass
- }%
- {#2}%
-}
-% \end{macrocode}
-% \end{macro}%^^A \@xAfterClass
-% Note that \cs{AfterAtEndOfClass} executed the \meta{code} after each try
-% to load a class, even if the class has already been loaded and you try
-% to load it again.
-% \begin{macrocode}
-\newcommand*{\AfterAtEndOfClass}[1]{%
- \scr@set@load@hook{lateafter}{#1.\@clsextension}}
-% \end{macrocode}
-% \end{macro}%^^A \AfterAtEndOfClass
-% \end{macro}%^^A \AfterClass
-%
-% \begin{macro}{\BeforePackage}
-% This is quite simple. It only has to add code to the \emph{before} hook
-% already known by \cs{BeforeFile}. The arguments are:
-% \begin{description}
-% \item[\meta{package name}:] mandatory argument.
-% \item[\meta{code}:] this argument is processed not by \cs{BeforePackage} but
-% by the internal \cs{scr@set@load@hook} (see above), that will add the code
-% to the \emph{before} hook of file \meta{code}\texttt{.sty} (or whatever the
-% package extension is).
-% \end{description}
-% \begin{macrocode}
-\newcommand*{\BeforePackage}[1]{%
- \scr@set@load@hook{before}{#1.\@pkgextension}}
-% \end{macrocode}
-% \end{macro}%^^A \BeforePackage
-%
-% \begin{macro}{\AfterPackage}
-% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
-% \cs{kernel@ifnextchar}}%^^A
-% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
-% ersetzt}%^^A
-% \begin{macro}{\AfterAtEndOfPackage}
-% These are more complicated. There are five forms:
-% \begin{description}
-% \item[\cs{AfterPackage}] corresponds to \cs{AfterFile}. So the code will be
-% added to the usual \emph{after} hook and the code is exexuted before code
-% added by the package itself using \cs{AtEndOfPackage}. Argument procession
-% will be done by \cs{@AfterPackage}.
-% \item[\cs{AfterAtEndOfPackage}] This uses the \emph{lateafter} hook, which
-% is executed after the package has been loaded completely inclusive the
-% execution of \cs{AtEndOfPackage} code. However, the code will never be
-% executed, if the package will not be loaded (again). But it does nothing,
-% if the package has already been loaded. The arguments are:
-% \begin{description}
-% \item[\meta{package name}] mandatory argument
-% \item[\meta{code}:] this argument is processed not by \cs{BeforePackage}
-% but by the internal \cs{scr@set@loaf@hook} (see above), that will add
-% the code to the \emph{lateafter} hook of file \meta{code}\texttt{.sty}
-% (or whatever the package extension is), or by \cs{@gobble}.
-% \end{description}
-% \item[\cs{AfterPackage*}] like \cs{AfterPackage}, but if loading of the
-% package has already began, the code will be executed immediately. So, if
-% the command is used inside the package it is simply
-% \cs{@firstofone}. Argument procession will be done by \cs{@sAfterPackage}.
-% \item[\cs{AfterPackage+}] like \cs{AfterPackage*}, but the code will be
-% executed immediately only if the package already has been loaded
-% completely or it is used inside \cs{AtEndOfPackage}. So inside the package
-% it is similar to \cs{AtEndOfPackage}. Argument procession will be done by
-% \cs{@pAfterPackage}.
-% \item[\cs{AfterPackage!}] like \cs{AfterPackage+}, but even inside
-% \cs{AtEndOfPackage} the code is executed after every all the
-% \cs{AtEndOfPackage} code. Argument procession will be done by
-% \cs{@xAfterPackage}. (Some package authors interpret this as the star
-% form of \cs{AfterAtEndOfPackage}.)
-% \end{description}
-% \begin{macrocode}
-\newcommand*{\AfterPackage}{%
- \kernel@ifstar {\@sAfterPackage}{%
- \kernel@ifnextchar +\@pAfterPackage{%
- \kernel@ifnextchar !\@xAfterPackage\@AfterPackage
- }%
- }%
-}
-% \end{macrocode}
-% \begin{macro}{\@AfterPackage}
-% This is the internal implementation of:
-% \cs{AfterPackage}\marg{package name}\marg{code}.
-% It uses \cs{scr@set@load@hook} to add \meta{code} to the
-% \emph{after} hook. The second argument will be processed by
-% \cs{scr@set@load@hook}.
-% \begin{macrocode}
-\newcommand*{\@AfterPackage}[1]{%
- \scr@set@load@hook{after}{#1.\@pkgextension}}
-% \end{macrocode}
-% \end{macro}%^^A \@AfterPackage
-% \begin{macro}{\@sAfterPackage}
-% \changes{v3.27a}{2019/10/16}{group removed}%^^A
-% This is the internal implementation of:
-% \cs{AfterPackage*}\marg{package name}\marg{code}.
-% It tests, whether or not \LaTeX{} thinks that the package
-% has already been loaded, but this only means whether or not the package
-% loading has already been started. If so, it immediately executes the next
-% argument. If not, is uses \cs{@AfterPackage} to execute the \meta{code}
-% after loading the package.
-% \begin{macrocode}
-\newcommand*{\@sAfterPackage}[1]{%
- \@ifpackageloaded{#1}{%
- \@secondoftwo
- }{%
- \@AfterPackage
- }%
- {#1}%
-}
-% \end{macrocode}
-% \end{macro}%^^A \@sAfterPackage
-% \begin{macro}{\@pAfterPackage}
-% \changes{v3.09}{2011/03/08}{new (internal)}%^^A
-% \changes{v3.27a}{2019/10/15}{renamed from \cs{@@AfterPackage}}%^^A
-% \changes{v3.27a}{2019/10/16}{usage of \emph{l@ading} marker}%^^A
-% \changes{v3.27a}{2019/10/16}{group removed}%^^A
-% This is the internal implementation of:
-% \cs{AfterPackage+}\marg{package name}\marg{code}.
-% Note, that the plus has not already read. So the arguments are:
-% \begin{description}
-% \item[\texttt{+}:] static plus, to be ignored.
-% \item[\meta{package name}] mandatory argument
-% \item[\meta{code}:] this argument is processed not by \cs{BeforePackage} but
-% by the internal \cs{@sAfterPackage} or \cs{@AfterPackage} (see above).
-% \end{description}
-% Here we cannot use \LaTeX's test, whether or not the package as already been
-% loaded, because it tests only, if loading of the package has already been
-% started. Here we use an internal information of our \emph{l@ading} marker
-% (see \cs{scr@load@hook}). It is as long defined as a file is read while
-% input. If it is undefined (or \cs{relax}) we can use \cs{@sAfterPackage} to
-% either execute \meta{code} immediately or add it to the \emph{after}
-% hook. If is defined (and not \cs{relax}) loading of the package is in
-% progress and \cs{AfterPackage} is used to add \meta{code} to the
-% \emph{after} hook. The effect is, that \meta{code} is executed immediately
-% if loading of \meta{package name} has already been finished and after the
-% package if the loading of the \meta{package name} has not already been
-% finished.
-% \begin{macrocode}
-\newcommand*{\@pAfterPackage}[2]{%
- \@ifundefined{#2.\@pkgextension-l@ading}{%
- \@sAfterPackage
- }{%
- \@AfterPackage
- }%
- {#2}%
-}
-% \end{macrocode}
-% \end{macro}%^^A \@pAfterPackage
-% \begin{macro}{\@xAfterPackage}
-% \changes{v3.09}{2011/03/09}{new (internal)}%^^A
-% \changes{v3.27}{2019/08/26}{using inside package fixed}%^^A
-% \changes{v3.27a}{2019/10/15}{renamed from \cs{@@@AfterPackage}}%^^A
-% \changes{v3.27a}{2019/10/16}{usage of \emph{l@ading} marker}%^^A
-% \changes{v3.27a}{2019/10/16}{group removed}%^^A
-% This is the internal implementation of:
-% \cs{AfterPackage!}\marg{package name}\marg{code}. Note, that the exclamation
-% mark has not already read. So the arguments are:
-% \begin{description}
-% \item[\texttt{!}:] static exclamation mark, to be ignored.
-% \item[\meta{package name}] mandatory argument
-% \item[\meta{code}:] this argument is processed not by \cs{BeforePackage} but
-% by the internal \cs{@sAfterPackage} or \cs{@AfterPackage} (see above).
-% \end{description}
-% There are two differences to \cs{@pAfterPackage}:
-% \begin{enumerate}
-% \item In case of \cs{\meta{package name}.sty-l@ading} is defined (and not
-% \cs{relax}), to while loading a package, it used \cs{@AfterAtEndOfPackage}
-% instead of \cs{AfterPackage} to add \meta{code} to the \emph{lateafter}
-% hook instead of the \emph{after} hook.
-% \item In case of \cs{\meta{package name}.sty-l@ading} is not defined (or
-% \cs{relax}) it also has to test, whether or not the package has already
-% been loaded. If so, it uses \cs{@sAfterPackage} to execute the \meta{code}
-% immediately, otherwise it uses \cs{@AfterAtEndOfPackage} to add the
-% \meta{code} to the \emph{lateafter} hook.
-% \end{enumerate}
-% So it is more like (the not existing) \cs{AfterAtEndOfPackage+} than
-% \cs{AfterAtEndOfPackage*}.
-% \begin{macrocode}
-\newcommand*{\@xAfterPackage}[2]{%
- \@ifundefined{#2.\@pkgextension-l@ading}{%
- \@ifpackageloaded{#2}{%
- \@sAfterPackage
- }{%
- \@AfterAtEndOfPackage
- }%
- }{%
- \@AfterAtEndOfPackage
- }%
- {#2}%
-}
-% \end{macrocode}
-% \end{macro}%^^A \@xAfterPackage
-% \begin{macro}{\@AfterAtEndOfPackage}
-% \changes{v3.27a}{2019/10/15}{new (internal)}
-% \changes{v3.27a}{2019/10/16}{group removed}%^^A
-% Note that until 3.27a \cs{AfterAtEndOfPackage} executed the \meta{code}
-% after each try to load a package, even if the package has already been
-% loaded and you've try to load it again. Since 3.27a this is the
-% functionality of \cs{@AfterAtEndOfPackage}. \cs{AfterAtEndOfPackage} now
-% does not do anything for already loaded packages or while loading the
-% package.
-% \begin{macrocode}
-\newcommand*{\AfterAtEndOfPackage}[1]{%
- \@ifpackageloaded{#1}{%
- \@ifundefined{#1.\@pkgextension-l@ading}{%
- \@gobbletwo
- }{%
- \@AfterAtEndOfPackage
- }%
- }{%
- \@AfterAtEndOfPackage
- }%
- {#1}%
-}
-\newcommand*{\@AfterAtEndOfPackage}[1]{%
- \scr@set@load@hook{lateafter}{#1.\@pkgextension}%
-}
-% \end{macrocode}
-% \end{macro}%^^A \@AfterAtEndOfPackage
-% \end{macro}%^^A \AfterAtEndOfPackage
-% \end{macro}%^^A \AfterPackage
-%
-% \begin{macro}{\PreventPackageFromLoading}
-% \changes{v3.08}{2010/11/04}{New}
-% \changes{v3.11a}{2012/06/13}{write fault error in \cs{MessageBreak} fixed}
-% \changes{v3.12}{2012/06/15}{new star version allowes empty argument with
-% info instead of warning}
-% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
-% ersetzt}%^^A
-% \begin{macro}{\@PreventPackageFromLoading}
-% \changes{v3.12}{2012/06/15}{New (internal)}%^^A
-% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
-% \cs{kernel@ifnextchar}}%^^A
-% \begin{macro}{\@@PreventPackageFromLoading}
-% \changes{v3.12}{2013/11/22}{New (internal)}%^^A
-% \changes{v3.12}{2013/11/22}{\cs{usepackage} before \cs{documentclass}
-% fixed}%^^A
-% \begin{macro}{\scrlfile@excludedpackages}
-% \changes{v3.08}{2010/11/04}{New (internal)}%^^A
-% \begin{macro}{\scrlfile@saved@RequirePackage}
-% \changes{v3.08}{2010/11/04}{New (internal)}%^^A
-% \begin{macrocode}
-\newcommand*{\scrlfile@excludedpackages}{}
-\let\scrlfile@excludedpackages\@empty
-\newcommand*{\scrlfile@saved@RequirePackage}{}
-\newcommand*{\PreventPackageFromLoading}{%
- \kernel@ifstar{\@PreventPackageFromLoading\PackageInfo}%
- {\@PreventPackageFromLoading\PackageWarning}%
-}
-\newcommand*{\@PreventPackageFromLoading}[1]{%
- \kernel@ifnextchar [%]
- {\@@PreventPackageFromLoading#1}{\@@PreventPackageFromLoading#1[]}%
-}
-\newcommand*{\@@PreventPackageFromLoading}{}
-\def\@@PreventPackageFromLoading#1[#2]#3{%
-% \end{macrocode}
-% We do nothing, if the argument was empty:
-% \begin{macrocode}
- \edef\reserved@b{\zap@space#3 \@empty}%
- \ifx \reserved@b\@empty
- #1{scrlfile}{%
- \string\PreventPackageFromLoading\space with empty packages\MessageBreak
- argument ignored%
- }%
- \else
-% \end{macrocode}
-% If the argument was not empty we first need to patch \cs{RequirePackage} and
-% maybe \cs{usepackage} too.
-% \begin{macrocode}
- \ifx\scrlfile@excludedpackages\@empty
- \let\scrlfile@saved@RequirePackage\RequirePackage
- \let\RequirePackage\scrlfile@RequirePackage
- \def\reserved@a##1##{%
- \@latex@error
- {\noexpand \usepackage before \string\documentclass}%
- {\noexpand \usepackage may only appear in the document
- preamble, i.e.,\MessageBreak
- between \noexpand\documentclass and
- \string\begin{document}.}%
- \@gobble}%
- \ifx\reserved@a\usepackage\else
- \ifx\usepackage\scrlfile@saved@RequirePackage\else
- \PackageWarning{scrlfile}{%
- Maybe serious problem: unexpected definition of\MessageBreak
- \string\usepackage
- }%
- \fi
- \let\usepackage\RequirePackage
- \fi
- \fi
-% \end{macrocode}
-% We have to test, if a package was already loaded. Only not yet loaded
-% packages will be added to the exclusion list. Empty arguments will be
-% ignored.
-% \changes{v3.11a}{2012/06/11}{missing \cs{scrlfile@excludedpackages} at
-% redefinition of \cs{scrlfile@excludedpackages} added}%^^A
-% \changes{v3.26}{2018/08/29}{spurious \cs{expandafter} removed}%^^A
-% \begin{macrocode}
- \@for\reserved@a:=\reserved@b\do {%
- \ifx\reserved@a\@empty
- #1{scrlfile}{%
- empty package argument for
- \string\PreventPackageFromLoading\MessageBreak
- ignored%
- }%
- \else
- \expandafter\@ifpackageloaded\expandafter{\reserved@a}{%
- #1{scrlfile}{%
- package `\reserved@a' already loaded.\MessageBreak
- Cannot prevent it from beeing loaded%
- }%
- }{%
- \edef\scrlfile@excludedpackages{\scrlfile@excludedpackages,%
- \reserved@a}%
- \if\relax\detokenize{#2}\relax\else
- \@ifundefined{scrlfile@exclude@package@\reserved@a @do}{%
- \@namedef{scrlfile@exclude@package@\reserved@a @do}{}%
- }{}%
- \expandafter\def
- \csname scrlfile@exclude@package@\reserved@a
- @do\expandafter\expandafter\expandafter\endcsname
- \expandafter\expandafter\expandafter{%
- \csname scrlfile@exclude@package@\reserved@a @do\endcsname
- #2%
- }%
- \fi
- }%
- \fi
- }%
-% \end{macrocode}
-% If the exclusion list is still empty (because all packages has been loaded
-% already), remove the patch:
-% \begin{macrocode}
- \ifx\scrlfile@excludedpackages\@empty
- \ResetPreventPackageFromLoading
- \fi
- \fi
-}
-\@onlypreamble\PreventPackageFromLoading
-% \end{macrocode}
-% \begin{macro}{\ResetPreventPackageFromLoading}
-% \changes{v3.08}{2010/11/04}{New}
-% \begin{macro}{\StorePreventPackageFromLoading}
-% \changes{v3.08}{2010/11/04}{New}
-% These two are very simple
-% \begin{macrocode}
-\newcommand*{\ResetPreventPackageFromLoading}{%
- \let\scrlfile@excludedpackages\@empty
- \ifx\RequirePackage\scrlfile@RequirePackage
- \ifx\usepackage\RequirePackage
- \let\usepackage\scrlfile@saved@RequirePackage
- \fi
- \let\RequirePackage\scrlfile@saved@RequirePackage
- \fi
-}
-\@onlypreamble\ResetPreventPackageFromLoading
-\newcommand*{\StorePreventPackageFromLoading}[1]{%
- \let#1\scrlfile@excludedpackages
-}
-\@onlypreamble\StorePreventPackageFromLoading
-% \end{macrocode}
-% \begin{macro}{\UnPreventPackageFromLoading}
-% \changes{v3.12}{2013/11/22}{New}%^^A
-% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
-% ersetzt}%^^A
-% \begin{macro}{\@UnPreventPackageFromLoading}
-% \changes{v3.12}{2013/11/22}{New (internal)}%^^A
-% This removes packages from the prevent exclude list. The star variant also
-% undefines the instead code.
-% \begin{macrocode}
-\newcommand*{\UnPreventPackageFromLoading}{%
- \kernel@ifstar {\@tempswatrue\@UnPreventPackageFromLoading}%
- {\@tempswafalse\@UnPreventPackageFromLoading}%
-}
-\newcommand*{\@UnPreventPackageFromLoading}[1]{%
- \edef\reserved@b{\zap@space#1 \@empty}%
- \if@tempswa
- \@for\reserved@a:=\reserved@b\do {%
- \ifx\reserved@a\@empty \else
- \ifcsname scrlfile@exclude@package@\reserved@a @do\endcsname
- \expandafter\let
- \csname scrlfile@exclude@package@\reserved@a @do\endcsname
- \undefined
- \fi
- \fi
- }%
- \fi
- \ifcsname scrlfile@excludedpackages\endcsname
- \let\reserved@a\scrlfile@excludedpackages
- \let\scrlfile@excludedpackages\@empty
- \expandafter\@for\expandafter\reserved@c
- \expandafter:\expandafter=\reserved@a
- \do{%
- \ifx\reserved@c\@empty\else
- \@expandtwoargs\in@{,\reserved@c,}{,\reserved@b,}%
- \ifin@
- \else
- \edef\scrlfile@excludedpackages{%
- \scrlfile@excludedpackages,\reserved@c
- }%
- \fi
- \fi
- }%
- \ifx\scrlfile@excludedpackages\@empty\ResetPreventPackageFromLoading\fi
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \begin{macro}{\scrlfile@RequirePackage}
-% \changes{v3.08}{2010/11/04}{New (internal)}
-% \changes{v3.12}{2013/11/22}{tolerate spaces}
-% \changes{v3.12}{2013/11/22}{execute the optional argument of
-% \cs{PreventPackageFromLoading}}
-% This macro will replace \cs{RequirePackage} whenever the exlude list is not
-% empty
-% \begin{macrocode}
-\newcommand*{\scrlfile@RequirePackage}[2][]{%
- \let\reserved@c\@empty
- \let\reserved@d\@empty
- \edef\reserved@b{\zap@space#2 \@empty}%
- \expandafter\@for\expandafter\reserved@b\expandafter:\expandafter=\reserved@b
- \do {%
- \begingroup
- \@tempswatrue
- \@for\reserved@a:=\scrlfile@excludedpackages\do {%
- \ifx\reserved@a\reserved@b
- \@tempswafalse
- \fi
+ \RenewDocumentCommand\AfterPackage{}{%
+ \kernel@ifnextchar +%
+ {\scrlfile@emulatedeprecated{Package}}%
+ {%
+ \kernel@ifnextchar !%
+ {\scrlfile@emulatedeprecated{Package}}%
+ \scrlfile@AfterPackage
}%
- \if@tempswa
- \xdef\reserved@c{\reserved@c,\reserved@b}%
- \else
- \ifx\reserved@b\@empty\else
- \PackageInfo{scrlfile}{Excluding package `\reserved@b'\MessageBreak
- from loading}%
- \@ifundefined{scrlfile@exclude@package@\reserved@b @do}{%
- }{%
- \expandafter\g@addto@macro\expandafter\reserved@d
- \csname scrlfile@exclude@package@\reserved@b @do\endcsname
- }%
- \fi
- \fi
- \endgroup
- }%
- \ifx\reserved@c\@empty
- \let\reserved@a\scr@gobbleopt
- \else
- \edef\reserved@a{\noexpand\scrlfile@saved@RequirePackage[#1]{%
- \expandafter\@gobble\reserved@c\@empty}}%
- \fi
- \expandafter\reserved@d
- \reserved@a
-}
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\scr@gobbleopt}
-% \changes{v3.08}{2010/11/04}{New (internal)}
-% \changes{v3.08a}{2011/02/11}{\cs{@gobbleopt} renamed due to compaibility
-% problems with \texttt{ntheorem}}
-% Eat the optional argument if it exists.
-% \begin{macrocode}
-\newcommand{\scr@gobbleopt}[1][]{}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\kernel@ifstar}
-% \changes{v3.20}{2016/04/12}{New (internal)}
-% I hope, the \LaTeX{} kernel will define this command in future. But
-% nevertheless, there are \LaTeX{} kernels in real live without this
-% command. So I do it again if needed:
-% \begin{macrocode}
-\providecommand*\kernel@ifstar[1]{\kernel@ifnextchar*{\@firstoftwo{#1}}}
-% \end{macrocode}
-% \end{macro}%^^A \kernel@ifstar
%
-% \begin{macro}{\BeforeClosingMainAux}
-% \changes{v2.95}{2002/09/03}{new}
-% \begin{macro}{\AfterReadingMainAux}
-% \changes{v3.03}{2009/03/25}{new}
-% These are completly different. First we have to establish a new hook
-% at \cs{end\{document\}}, just after closing the group and after the
-% final \cs{clearpage}.
+% \begin{macro}{\scrlfile@emulatedeprecated}
+% \changes{v3.32}{2020/09/11}{new internal command}
+% This emulates \cs{AfterClass+}, \cs{AfterPackage+}, \cs{AfterClass!} and
+% \cs{AfterPackage!} using \cs{AfterAtEndOfClass} or
+% \cs{AfterAtEndOfPackage}. Note, that both, the plus and the exclamation mark
+% variants, are emulated by the star variant of \cs{AfterAtEndOfClass}
+% resp. \cs{AfterAtEndOfPackage}. So the emulation is not perfect.
% \begin{macrocode}
-\AtEndDocument{%
- \let\scr@saved@checkend=\@checkend
- \renewcommand*{\@checkend}[1]{%
- \def\reserved@a{#1}\def\reserved@b{document}%
- \scr@saved@checkend{#1}%
- \ifx\reserved@a\reserved@b
- \let\scr@saved@clearpage=\clearpage
- \renewcommand*{\clearpage}{\scr@saved@clearpage
- \scr@hook@bcma
- \scr@restore@newpage
- \let\clearpage=\scr@saved@clearpage}%
- \fi%
- \let\scr@saved@dofilelist\@dofilelist
- \def\@dofilelist{%
- \scr@hook@acma
- \let\@dofilelist\scr@saved@dofilelist
- \scr@saved@dofilelist
+ \newcommand*{\scrlfile@emulatedeprecated}[2]{%
+ \PackageWarning{scrlfile}{%
+ emulating deprecated \expandafter\string\csname After#1#2\endcsname
+ \space by\MessageBreak
+ \expandafter\string\csname AfterAtEndOf#1*\endcsname.\MessageBreak
+ Note, this may fail, so you should not use\MessageBreak
+ \expandafter\string\csname After#1#2\endcsname
}%
- }%
-}
-% \end{macrocode}
-% \begin{macro}{\scr@saved@checkend}
-% \changes{v2.95}{2002/09/03}{new (internal)}
-% \begin{macro}{\scr@saved@dofilelist}
-% \changes{v3.03}{2009/03/25}{new}
-% You may see above, that we need save-to macros.
-% \begin{macrocode}
-\newcommand*{\scr@saved@checkend}{}
-\newcommand*{\scr@saved@dofilelist}{}
+ \csname AfterAtEndOf#1\endcsname*%
+ }
% \end{macrocode}
% \end{macro}
-% \end{macro}
-% \begin{macro}{\scr@redefine@newpage}
-% \changes{v3.00}{2008/07/09}{new (internal)}
-% Some classes (e.g. \textsf{letter}) write output to the aux file.
-% Because of this, redefinition of \cs{newpage} will only be done, if
-% \cs{BeforeClosingMainAux} is used.
-% \begin{macro}{\scr@saved@newpage}
-% \changes{v3.00}{2008/07/09}{new (internal)}
-% And \cs{newpage} will be restored after the hook.
-% \begin{macro}{\scr@restore@newpage}
+%
% \begin{macrocode}
-\newcommand*{\scr@redefine@newpage}{%
- \let\scr@saved@newpage\newpage
- \def\scr@restore@newpage{%
- \renewcommand*{\newpage}{%
- \PackageWarningNoLine{%
- scrlfile%
- }{%
- \string\newpage\space at main aux file!\MessageBreak
- You have output material at the main aux file.\MessageBreak
- Note, that the \string\BeforeClosingMainAux\space commands\MessageBreak
- are processed before the output from aux file%
- }%
- \let\newpage\scr@saved@newpage
- \newpage
- }%
- }%
- \renewcommand*{\newpage}{%
- \PackageError{%
- scrlfile%
- }{%
- \string\newpage\space at \string\BeforeClosingMainAux
- }{%
- You should never use \string\newpage\space or
- \string\clear(double)page or other output material at the\MessageBreak
- argument of \string\BeforeClosingMainAux!\MessageBreak
- If you'll continue, the \string\newpage\space will be ignored to
- avoid corruption of\MessageBreak
- every prior use of \string\BeforeClosingMainAux.
- }%
- }%
}
-\newcommand*{\scr@restore@newpage}{}
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \begin{macro}{\scr@hook@bcma}
-% \changes{v2.95}{2002/09/03}{new (internal)}
-% \begin{macro}{\scr@hook@acma}
-% \changes{v3.03}{2009/03/25}{new (internal)}
-% We also need macros, that saves the commands at the hooks and are
-% extendable using \cs{g@addto@macro}.
-% \begin{macrocode}
-\newcommand*{\scr@hook@bcma}{}
-\newcommand*{\scr@hook@acma}{}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% Now we are able to write the user command. Here we also warn, if we detect
-% one more \cs{newpage}\,---\,maybe at a \cs{clearpage} or
-% \cs{cleardoublepage}.
+% \end{option}
+%
+% Now, we just have to execute and process the options.
% \begin{macrocode}
-\newcommand*{\BeforeClosingMainAux}{%
- \ifx\scr@hook@bcma\@empty
- \gdef\scr@hook@bcma{%
- \renewcommand*{\BeforeClosingMainAux}[1]{####1}%
- \let\protected@write\protected@immediate@write
- \scr@redefine@newpage
- }%
- \fi
- \g@addto@macro\scr@hook@bcma%
-}
-\newcommand*{\AfterReadingMainAux}{%
- \ifx\scr@hook@acma\@empty
- \gdef\scr@hook@acma{%
- \renewcommand*{\AfterReadingMainAux}[1]{####1}%
- \let\protected@write\protected@immediate@write
- }%
- \fi
- \g@addto@macro\scr@hook@acma%
-}
+\ExecuteOptions{}
+\ProcessOptions\relax
% \end{macrocode}
-% \end{macro}
-% \end{macro}
%
-% \begin{macro}{\protected@immediate@write}
-% Like \LaTeX{} kernel's |\protected@write| but using |\immediate\write|. In
-% this case it is even not a good idea to protect |\thepage|!
+% Last but not least this is a \KOMAScript{} package, so we also define the
+% \KOMAScript{} logo:
% \begin{macrocode}
-\long\def\protected@immediate@write#1#2#3{%
- \begingroup
- #2%
- \let\protect\@unexpandable@protect
- \edef\reserved@a{\immediate\write#1{#3}}%
- \reserved@a
- \endgroup
- \if@nobreak\ifvmode\nobreak\fi\fi
-}
+\RequirePackage{scrlogo}
% \end{macrocode}
-% \end{macro}
%
% \Finale
%
-% \iffalse
-%</scrlfile>
-%<*load>
-% Used at \KOMAScript{} classes.
-% \begin{macrocode}
-\RequirePackage{scrlfile}[%
-%!KOMAScriptVersion
-]
-% \end{macrocode}
-%</load>
-% \fi
-%
-\endinput
+% \endinput
%
-% end of file `scrlfile.dtx'
-
-%%% Local Variables:
-%%% mode: doctex
-%%% TeX-master: t
-%%% End:
+% Local Variables:
+% mode: doctex
+% TeX-master: t
+% End:
diff --git a/macros/latex/contrib/koma-script/source/scrlogo.dtx b/macros/latex/contrib/koma-script/source/scrlogo.dtx
index 14c5f0b6c9..ceea050dca 100644
--- a/macros/latex/contrib/koma-script/source/scrlogo.dtx
+++ b/macros/latex/contrib/koma-script/source/scrlogo.dtx
@@ -1,8 +1,7 @@
-% \CheckSum{9}
-% \iffalse meta-comment
+% \iffalse^^A meta-comment
% ======================================================================
% scrlogo.dtx
-% Copyright (c) Markus Kohm, 2002-2017
+% Copyright (c) Markus Kohm, 2002-2020
%
% This work may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, version 1.3c of the license.
@@ -18,7 +17,7 @@
% This work consists of the file `scrlogo.dtx' at least.
% ----------------------------------------------------------------------
% scrlogo.dtx
-% Copyright (c) Markus Kohm, 2002-2017
+% Copyright (c) Markus Kohm, 2002-2020
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c, verteilt und/oder veraendert werden.
@@ -34,42 +33,45 @@
%
% Dieses Werk besteht mindestens aus der Datei `scrlogo.dtx'.
% ======================================================================
-% \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: scrlogo.dtx 2640 2017-05-08 09:36:55Z kohm $
+%%% From File: $Id: scrlogo.dtx 3527 2020-09-11 09:44:32Z kohm $
%<*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: 2017-05-08 11:36:55 +0200 (Mon, 08 May 2017) $
+ \filedate$Date: 2020-09-11 11:44:32 +0200 (Fri, 11 Sep 2020) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
\filerevision$Revision: 2631 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrlogo.dtx}%
[\filedate\space\filerevision\space
- KOMA-Script package source (Logo)]
+ KOMA-Script package source
}%
\reserved@a
-% \iffalse
+%</dtx>
+%<*dtx|package>
+%<package>\ProvidesPackage{scrlogo}[%
+%!KOMAScriptVersion
+%<package> package
+ (logo)]
+%</dtx|package>
+%<*dtx>
+\ifx\documentclass\undefined
+ \ifx\ifTopLevel\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHTFROM}{2002}
+ \generate{\usepreamble\defaultpreamble
+ \file{scrlogo.sty}{\from{scrlogo.dtx}{package,logo}}%
+ }
+ \@@input scrstrop.inc
+ \fi
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
\documentclass[parskip=half-]{scrdoc}
\usepackage[english,ngerman]{babel}
\CodelineIndex
@@ -85,7 +87,7 @@
\DocInput{\filename}
\end{document}
%</dtx>
-% \fi
+% \fi^^A meta-comment
%
% \selectlanguage{ngerman}
%
diff --git a/macros/latex/contrib/koma-script/source/scrmain.ins b/macros/latex/contrib/koma-script/source/scrmain.ins
index e215e83afd..e53a87c791 100644
--- a/macros/latex/contrib/koma-script/source/scrmain.ins
+++ b/macros/latex/contrib/koma-script/source/scrmain.ins
@@ -35,7 +35,7 @@
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
% ======================================================================
-% $Id: scrmain.ins 3478 2020-04-11 07:27:27Z kohm $
+% $Id: scrmain.ins 3527 2020-09-11 09:44:32Z kohm $
% ---------- KOMA-Script default docstrip declarations -----------------
@@ -478,7 +478,6 @@
\from{scrkernel-basics.dtx}{package,prepare,koma}%
\from{scrkernel-basics.dtx}{package,option,koma}%
\from{scrkernel-fonts.dtx}{package,option,scrkbase}%
- \from{scrlfile.dtx}{package,load}%
\from{scrkernel-basics.dtx}{package,body,koma}%
\from{scrkernel-fonts.dtx}{package,body,scrkbase}%
\from{scrlogo.dtx}{logo}%
@@ -487,6 +486,7 @@
% --- additional package batches (maybe used with other classes, too) --
+\batchinput{scrlogo.dtx}% scrlogo.sty
\batchinput{scrkernel-typearea.dtx}% typearea.sty
\batchinput{scrkernel-basics.dtx}% scrbase.sty
\batchinput{scrhack.dtx}% scrhack.sty and the hak files
diff --git a/macros/latex/contrib/koma-script/source/tocbasic.dtx b/macros/latex/contrib/koma-script/source/tocbasic.dtx
index eae0e3ed91..44a222f81d 100644
--- a/macros/latex/contrib/koma-script/source/tocbasic.dtx
+++ b/macros/latex/contrib/koma-script/source/tocbasic.dtx
@@ -54,7 +54,7 @@
% Right brace \} Tilde \~}
%
% \iffalse
-%%% From File: $Id: tocbasic.dtx 3508 2020-07-08 08:45:20Z kohm $
+%%% From File: $Id: tocbasic.dtx 3518 2020-08-25 08:26:01Z kohm $
%<identify>%%% (run: identify)
%<prepare>%%% (run: prepare)
%<option>%%% (run: option)
@@ -65,7 +65,7 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2020-07-08 10:45:20 +0200 (Wed, 08 Jul 2020) $
+ \filedate$Date: 2020-08-25 10:26:01 +0200 (Tue, 25 Aug 2020) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
\filerevision$Revision: 1962 $
\endgroup
@@ -764,10 +764,12 @@
% too. Here are basics and high level commands for this.
%
% \begin{macro}{\tocbasic@starttoc}
-% \changes{v3.17}{2015/03/23}{usage of feature \texttt{noparskipfake}}%^^A
-% \changes{v3.27}{2019/07/08}{hack to add \cs{par} at end of (main) file}%^^A
+% \changes{v3.17}{2015/03/23}{usage of feature \texttt{noparskipfake}}
+% \changes{v3.27}{2019/07/08}{hack to add \cs{par} at end of (main) file}
% \changes{v3.28}{2019/11/19}{\cs{iftocfeature} replaced by
-% \cs{Iftocfeature}}%^^A
+% \cs{Iftocfeature}}
+% \changes{v3.32}{2020/08/25}{replace \cs{par} hack by \cs{par} solution}}
+% \changes{v3.32}{2020/08/25}{reentrant warning}
% Some basics are done like setting up \cs{parskip}, \cs{parindent} and
% \cs{parfillskip}, a general hook will be called, an individual hook will
% be called, the toc will be started, an individual hook will be called, an
@@ -776,6 +778,16 @@
%<*body>
\newcommand*{\tocbasic@starttoc}[1]{%
\begingroup
+ \tocbasic@reentrant@warning
+ \def\tocbasic@reentrant@warning{%
+ \PackageWarning{tocbasic}{%
+ Loading one auxiliary file inside the setup context\MessageBreak
+ of another auxiliary file is not recommended.\MessageBreak
+ In this case settings for `\@currext' could also influence\MessageBreak
+ settings of `#1' and local states of `#1' can also\MessageBreak
+ influence local states of `\@currext'%
+ }%
+ }%
\edef\@currext{#1}%
\Iftocfeature{\@currext}{noparskipfake}{}{%
\ifvmode
@@ -790,16 +802,29 @@
\setlength{\parfillskip}{\z@\@plus 1fil}%
\csname tocbasic@@before@hook\endcsname
\csname tb@#1@before@hook\endcsname
- \let\tocbasic@saved@input\@input
- \def\@input##1{%
- \let\@input\tocbasic@saved@input\@input{##1}\par
- }%
\@starttoc{#1}%
+ \BeforeClosingMainAux{%
+ \addtocontents{#1}{%
+ \string\providecommand\string\tocbasic@end@toc@file{}%
+ \string\tocbasic@end@toc@file
+ }%
+ }%
+ \edef\@currext{#1}%
\csname tb@#1@after@hook\endcsname
\csname tocbasic@@after@hook\endcsname
\endgroup
}
% \end{macrocode}
+% \begin{macro]{tocbasic@end@toc@file}
+% \changes{v3.32}{2020/08/25}{new}
+% \begin{macrocode}
+\newcommand*{\tocbasic@end@toc@file}{\par}
+% \end{macrocode}
+% \end{macro}%^^A \tocbasic@end@toc@file
+% \begin{macro}{\tocbasic@reentrant@warning}
+% \changes{v3.32}{2020/08/25}{new}
+\newcommand*{\tocbasic@reentrant@warning}{}
+% \end{macro}
% \begin{macro}{\tocbasic@@before@hook}
% \begin{macro}{\tocbasic@@after@hook}
% These are the general hooks. They may be used by classes and packages for
diff --git a/macros/latex/contrib/semantex/semantex.pdf b/macros/latex/contrib/semantex/semantex.pdf
index 71f086e8d0..7ccf0be800 100644
--- a/macros/latex/contrib/semantex/semantex.pdf
+++ b/macros/latex/contrib/semantex/semantex.pdf
Binary files differ
diff --git a/macros/latex/contrib/semantex/semantex.sty b/macros/latex/contrib/semantex/semantex.sty
index e705b06886..dcbf1f9193 100644
--- a/macros/latex/contrib/semantex/semantex.sty
+++ b/macros/latex/contrib/semantex/semantex.sty
@@ -1,5 +1,5 @@
\RequirePackage{xparse,l3keys2e,leftindex}
-\ProvidesExplPackage{semantex}{2020/09/13}{0.43}{}
+\ProvidesExplPackage{semantex}{2020/09/27}{0.44}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -20,6 +20,7 @@
semtexfile .choice:,
semtexfile / true .code:n = \semantex_turn_semtex_file_on:,
semtexfile / false .code:n = \semantex_turn_semtex_file_off:,
+ semtexfile / .code:n = \semantex_turn_semtex_file_on:,
semtexfile / unknown .code:n = \msg_error:nnnn { semantex } { semantex_setup_key_value_not_found } { semtexfile } { #1 },
unknown .code:n = \msg_error:nnx { semantex } { semantex_setup_key_not_found } { \l_keys_key_str }
}
@@ -29,110 +30,23 @@
\keys_set:nn { semantex } { #1 }
}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% THE FOLLOWING SECTION IS IDENTICAL TO THE semtex PACKAGE
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% These are some essential commands that are needed for bullets and parentheses,
-% and they are the only ones that will not be stripped by running the
-% stripsemantex algorithm. Therefore, they are also available as a standalone
-% package, called "semtex". This name is meant to suggest "stripped SemanTeX",
-% and at the same time, semtex is the name of a plastic explosive, suggesting
-% "blown-up SemanTeX".
-% (Mathematicians are not famous for the quality of their humour.)
-
-% Bullets:
-
-\box_if_exist:NF \g__semantex_bullet_box
-{
- \box_new:N \g__semantex_bullet_box
- \hbox_set:Nn \g__semantex_bullet_box { $\cdot$ }
- \box_scale:Nnn \g__semantex_bullet_box {1.2} {1.2}
- \tl_set:Nn\g_semantex_bullet
- {
- \box_move_up:nn{-0.25ex}{\box_use:N \g__semantex_bullet_box}
- }
-
- \tl_set:Nn\g_semantex_double_bullet{\g_semantex_bullet \g_semantex_bullet}
-
- \tl_set_eq:NN\SemantexBullet \g_semantex_bullet
-
- \tl_set_eq:NN \SemantexDoubleBullet \g_semantex_double_bullet
-}
-
-% Parentheses:
-
-\cs_set:Npn\SemantexLeft { \mathopen{}\mathclose\bgroup\left }
-
-\cs_set:Npn\SemantexRight { \aftergroup\egroup\right }
-
-\tl_set:Nn\SemantexDelimiterSize{}
-
-\DeclareDocumentCommand\SemantexParentheses { mmmm }
-{
- \str_case:nnF { #1 } % This is where \big,\Big, etc. go.
- {
- { normal } {
- \group_begin:
- \tl_clear:N \SemantexDelimiterSize
- \str_if_eq:nnF { #2 } { . } { \mathopen #2 }
- #4
- \str_if_eq:nnF { #3 } { . } { \mathclose #3 }
- \group_end:
- }
- { auto } {
- \group_begin:
- \tl_set_eq:NN \SemantexDelimiterSize \middle
- \SemantexLeft #2
- #4
- \SemantexRight #3
- \group_end:
- }
- { * } {
- \group_begin:
- \tl_set_eq:NN \SemantexDelimiterSize \middle
- \SemantexLeft #2
- #4
- \SemantexRight #3
- \group_end:
- }
- }
- {
- \group_begin:
- \tl_set_eq:NN\SemantexDelimiterSize #1
- \mathopen #1 #2
- #4
- \mathclose #1 #3
- \group_end:
- }
-}
-
-\DeclareDocumentCommand\SemantexNoParentheses { m }
-{
- \group_begin:
- \tl_clear:N\SemantexDelimiterSize
- #1
- \group_end:
-}
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% THE .semtex FILE
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\bool_new:N \g__semantex_semtex_file_was_opened
+\bool_new:N \g__semantex_semtex_file_was_opened_bool
\iow_new:N \g__semantex_semtex_file_stream_temp_iow
\cs_new_protected:Npn \semantex_turn_semtex_file_on:
{
- \bool_if:NF \g__semantex_semtex_file_was_opened
+ \bool_if:NF \g__semantex_semtex_file_was_opened_bool
{
\iow_open:Nn \g__semantex_semtex_file_stream_temp_iow { \jobname.semtex }
\iow_now:Nn \g__semantex_semtex_file_stream_temp_iow { \DeclareClass {\SemantexBaseObject } }
+ \iow_now:Nn \g__semantex_semtex_file_stream_temp_iow { \DeclareObject {\SemantexDelimiterSize } }
}
\cs_set:Npn\semantex_write_to_semtex_file:n##1
@@ -140,23 +54,38 @@
\iow_now:Nn \g__semantex_semtex_file_stream_temp_iow { ##1 }
}
- \bool_set_true:N \g__semantex_semtex_file_was_opened
+ \cs_set:Npn\semantex_write_to_semtex_file_V:N ##1
+ {
+ % We use this command instead of a :V variant
+ % in order to save time; when semtexfile=false,
+ % there is no reason to V-expand the argument.
+ \semantex_write_to_semtex_file:V ##1
+ }
+
+ \bool_set_true:N \g__semantex_semtex_file_was_opened_bool
}
\cs_new_protected:Npn \semantex_turn_semtex_file_off:
{
- \bool_if:NT \g__semantex_semtex_file_was_opened
+ \bool_if:NT \g__semantex_semtex_file_was_opened_bool
{
\iow_close:N \g__semantex_semtex_file_stream_temp_iow
}
\cs_set:Npn\semantex_write_to_semtex_file:n##1 {}
- \bool_set_false:N \g__semantex_semtex_file_was_opened
+ \cs_set:Npn\semantex_write_to_semtex_file_V:N ##1 {}
+ % We use this command instead of a :V variant
+ % in order to save time; when semtexfile=false,
+ % there is no reason to V-expand the argument.
+
+ \bool_set_false:N \g__semantex_semtex_file_was_opened_bool
}
\semantex_turn_semtex_file_off:
+\cs_generate_variant:Nn \semantex_write_to_semtex_file:n { V }
+
\cs_new_protected:Npn\semantex_write_original_source_to_semtex_file:n#1
{
\semantex_write_to_semtex_file:n { \BeginSource }
@@ -170,6 +99,8 @@
\semantex_write_to_semtex_file:n { #1 }
}
+\cs_set_eq:NN\SemantexAddToRecordedSource\semantex_add_to_existing_original_source_in_semtex_file:n
+
\cs_new_protected:Npn\semantex_write_output_to_semtex_file:n#1
{
\semantex_write_to_semtex_file:n { \EndSource }
@@ -178,9 +109,15 @@
\semantex_write_to_semtex_file:n { \EndOutput }
}
-\cs_generate_variant:Nn\semantex_write_output_to_semtex_file:n { V }
+\cs_set_eq:NN\SemantexRecordOutput\semantex_write_output_to_semtex_file:n
-\cs_generate_variant:Nn\semantex_write_original_source_to_semtex_file:n { o }
+\cs_new_protected:Npn\semantex_write_output_to_semtex_file_V:N#1
+{
+ \semantex_write_to_semtex_file:n { \EndSource }
+ \semantex_write_to_semtex_file:n { \BeginOutput }
+ \semantex_write_to_semtex_file_V:N #1
+ \semantex_write_to_semtex_file:n { \EndOutput }
+}
\cs_new_protected:Npn\semantex_write_class_declaration_to_semtex_file:n#1
{
@@ -199,6 +136,99 @@
\cs_set_eq:NN\SemantexRecordObject\semantex_write_object_declaration_to_semtex_file:n
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% THE FOLLOWING SECTION IS IDENTICAL TO THE semtex PACKAGE
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% These are some essential commands that are needed for bullets and parentheses,
+% and they are the only ones that will not be stripped by running the
+% stripsemantex algorithm. Therefore, they are also available as a standalone
+% package, called "semtex". This name is meant to suggest "stripped SemanTeX",
+% and at the same time, semtex is the name of a plastic explosive, suggesting
+% "blown-up SemanTeX".
+% (Mathematicians are not famous for the quality of their humour.)
+
+% Bullets:
+
+\box_if_exist:NF \g__semantex_bullet_box
+{
+ \box_new:N \g__semantex_bullet_box
+ \hbox_set:Nn \g__semantex_bullet_box { $\cdot$ }
+ \box_scale:Nnn \g__semantex_bullet_box {1.2} {1.2}
+ \tl_set:Nn\g_semantex_bullet
+ {
+ \box_move_up:nn{-0.25ex}{\box_use:N \g__semantex_bullet_box}
+ }
+
+ \tl_set:Nn\g_semantex_double_bullet{\g_semantex_bullet \g_semantex_bullet}
+
+ \tl_set_eq:NN\SemantexBullet \g_semantex_bullet
+
+ \tl_set_eq:NN \SemantexDoubleBullet \g_semantex_double_bullet
+}
+
+% Parentheses:
+
+\cs_set:Npn\SemantexLeft { \mathopen{}\mathclose\bgroup\left }
+
+\cs_set:Npn\SemantexRight { \aftergroup\egroup\right }
+
+\DeclareDocumentCommand\SemantexDelimiterSize { }
+{
+ \semantex_write_original_source_to_semtex_file:n { \SemantexDelimiterSize }
+ \semantex_write_output_to_semtex_file_V:N \l_semantex_delimiter_size_temp_tl
+ \l_semantex_delimiter_size_temp_tl
+}
+
+\DeclareDocumentCommand\RecordSemantexDelimiterSize { }
+{
+ \semantex_write_output_to_semtex_file_V:N \l_semantex_delimiter_size_temp_tl
+}
+
+\DeclareDocumentCommand\SemantexDelimiterSizeNoRecord { }
+{
+ \l_semantex_delimiter_size_temp_tl
+}
+
+\DeclareDocumentCommand\SemantexMathOpen { mm }
+{
+ \group_begin:
+ \tl_set:Nn\l_semantex_delimiter_size_temp_tl { #1 }
+ \str_if_eq:nnF { #2 } { . } { \mathopen #1 #2 }
+}
+
+\DeclareDocumentCommand\SemantexMathClose { mm }
+{
+ \str_if_eq:nnF { #2 } { . } { \mathclose #1 #2 }
+ \group_end:
+}
+
+\DeclareDocumentCommand\SemantexMathOpenAuto { m }
+{
+ \group_begin:
+ \tl_set:Nn\l_semantex_delimiter_size_temp_tl { \middle }
+ \SemantexLeft #1
+}
+
+\DeclareDocumentCommand\SemantexMathCloseAuto { m }
+{
+ \SemantexRight #1
+ \group_end:
+}
+
+\DeclareDocumentCommand\SemantexMathOpenNoPar { }
+{
+ \group_begin:
+ \tl_clear:N\l_semantex_delimiter_size_temp_tl
+}
+
+\DeclareDocumentCommand\SemantexMathCloseNoPar { }
+{
+ \group_end:
+}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% USER COMMANDS FOR CREATING NEW CLASSES
@@ -1572,20 +1602,6 @@
\semantex_data_bool_get:nnTF { #1 } { output } % Checks if the register is supposed to output
{
\semantex_inner_return:n { #1 }
- \semantex_data_int_if_positive:nnTF { #1 } { numberofarguments } % Checks if more than one argument has been received, i.e. whether we want to render any argument
- {
- \semantex_data_bool_get:nnTF { #1 } { leftargument } % Checks if left or right argument
- {
- \semantex_left_return:n { #1 }
- }
- {
- \semantex_right_return:n { #1 }
- }
- }
- {
- % do nothing
- }
- \tl_set:Nx\l__semantex_render_symbol_temp_tl { \semantex_data_tl_get_exp_not:nn { #1 } { symbol } } % Stores the symbol in a temporary command
\tl_set:Nx \l__semantex_render_output_class_temp_tl { \semantex_data_tl_get:nn { #1 } { output } } % The output class
\exp_args:NNx\cs_set:Nn\l__semantex_render_outputoptions_temp_cs:n
{ \semantex_data_tl_get_exp_not:nn { #1 } { outputoptions } }
@@ -1602,51 +1618,130 @@
{
\l__semantex_render_outputoptions_temp_tl
} % This was necessary, trust me.
- \tl_set:Nx \l__semantex_render_temp_tl
- {
- \exp_not:c {
- __semantex_make_object_of_\l__semantex_render_output_class_temp_tl _with_options:nnw
- }
- % This is for outputting -- the command
- % \__semantex_make_object_of_class_???_with_options:nnw
- % makes a one-time object of class ??? and allows us to
- % immediately pass options to it
- {
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { upperputleft } { \semantex_data_tl_get_exp_not:nn { #1 } { upper } }
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { lowerputleft } { \semantex_data_tl_get_exp_not:nn { #1 } { lower } }
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { upperleftputright } { \semantex_data_tl_get_exp_not:nn { #1 } { upperleft } }
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { lowerleftputright } { \semantex_data_tl_get_exp_not:nn { #1 } { lowerleft } }
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { preupper } { \semantex_data_tl_get_exp_not:nn { #1 } { preupper } }
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { postupper } { \semantex_data_tl_get_exp_not:nn { #1 } { postupper } }
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { prelower } { \semantex_data_tl_get_exp_not:nn { #1 } { prelower } }
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { postlower } { \semantex_data_tl_get_exp_not:nn { #1 } { postlower } }
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { preupperleft } { \semantex_data_tl_get_exp_not:nn { #1 } { preupperleft } }
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { postupperleft } { \semantex_data_tl_get_exp_not:nn { #1 } { postupperleft } }
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { prelowerleft } { \semantex_data_tl_get_exp_not:nn { #1 } { prelowerleft } }
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { postlowerleft } { \semantex_data_tl_get_exp_not:nn { #1 } { postlowerleft } }
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { heightphantom } { \semantex_data_tl_get_exp_not:nn { #1 } { heightphantom } }
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { slantingphantom } { \semantex_data_tl_get_exp_not:nn { #1 } { slantingphantom } }
- \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { texclass } { \semantex_data_tl_get_exp_not:nn { #1 } { texclass } }
- \exp_not:V \l__semantex_render_outputoptions_temp_tl
- % These are the options we pass to the output class so that it
- % can eventually render it
- }
- { \exp_not:V \l__semantex_render_symbol_temp_tl }
+ \semantex_data_int_if_positive:nnTF { #1 } { numberofarguments } % Checks if more than one argument has been received, i.e. whether we want to render any argument
+ {
+ \semantex_data_bool_get:nnTF { #1 } { leftargument } % Checks if left or right argument
+ {
+ \semantex_left_pre_return:n { #1 }
+ \tl_set:Nx\l__semantex_render_symbol_temp_tl { \semantex_data_tl_get_exp_not:nn { #1 } { symbol } } % Stores the symbol in a temporary command
+ \tl_set:Nx \l__semantex_render_temp_tl
+ {
+ \exp_not:c {
+ __semantex_make_object_of_\l__semantex_render_output_class_temp_tl _with_options:nnw
+ }
+ % This is for outputting -- the command
+ % \__semantex_make_object_of_class_???_with_options:nnw
+ % makes a one-time object of class ??? and allows us to
+ % immediately pass options to it
+ {
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { upperputleft } { \semantex_data_tl_get_exp_not:nn { #1 } { upper } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { lowerputleft } { \semantex_data_tl_get_exp_not:nn { #1 } { lower } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { preupper } { \semantex_data_tl_get_exp_not:nn { #1 } { preupper } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { postupper } { \semantex_data_tl_get_exp_not:nn { #1 } { postupper } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { prelower } { \semantex_data_tl_get_exp_not:nn { #1 } { prelower } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { postlower } { \semantex_data_tl_get_exp_not:nn { #1 } { postlower } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { texclass } { \semantex_data_tl_get_exp_not:nn { #1 } { texclass } }
+ \exp_not:V \l__semantex_render_outputoptions_temp_tl
+ % These are the options we pass to the output class so that it
+ % can eventually render it
+ }
+ { \exp_not:V \l__semantex_render_symbol_temp_tl }
+ }
+ }
+ {
+ \semantex_right_pre_return:n { #1 }
+ \tl_set:Nx\l__semantex_render_symbol_temp_tl { \semantex_data_tl_get_exp_not:nn { #1 } { symbol } } % Stores the symbol in a temporary command
+ \tl_set:Nx \l__semantex_render_temp_tl
+ {
+ \exp_not:c {
+ __semantex_make_object_of_\l__semantex_render_output_class_temp_tl _with_options:nnw
+ }
+ % This is for outputting -- the command
+ % \__semantex_make_object_of_class_???_with_options:nnw
+ % makes a one-time object of class ??? and allows us to
+ % immediately pass options to it
+ {
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { upperleftputright } { \semantex_data_tl_get_exp_not:nn { #1 } { upperleft } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { lowerleftputright } { \semantex_data_tl_get_exp_not:nn { #1 } { lowerleft } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { preupperleft } { \semantex_data_tl_get_exp_not:nn { #1 } { preupperleft } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { postupperleft } { \semantex_data_tl_get_exp_not:nn { #1 } { postupperleft } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { prelowerleft } { \semantex_data_tl_get_exp_not:nn { #1 } { prelowerleft } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { postlowerleft } { \semantex_data_tl_get_exp_not:nn { #1 } { postlowerleft } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { heightphantom } { \semantex_data_tl_get_exp_not:nn { #1 } { heightphantom } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { slantingphantom } { \semantex_data_tl_get_exp_not:nn { #1 } { slantingphantom } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { texclass } { \semantex_data_tl_get_exp_not:nn { #1 } { texclass } }
+ \exp_not:V \l__semantex_render_outputoptions_temp_tl
+ % These are the options we pass to the output class so that it
+ % can eventually render it
+ }
+ { \exp_not:V \l__semantex_render_symbol_temp_tl }
+ }
+ }
+ }
+ {
+ \tl_set:Nx\l__semantex_render_symbol_temp_tl { \semantex_data_tl_get_exp_not:nn { #1 } { symbol } } % Stores the symbol in a temporary command
+ \tl_set:Nx \l__semantex_render_temp_tl
+ {
+ \exp_not:c {
+ __semantex_make_object_of_\l__semantex_render_output_class_temp_tl _with_options:nnw
+ }
+ % This is for outputting -- the command
+ % \__semantex_make_object_of_class_???_with_options:nnw
+ % makes a one-time object of class ??? and allows us to
+ % immediately pass options to it
+ {
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { upperputleft } { \semantex_data_tl_get_exp_not:nn { #1 } { upper } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { lowerputleft } { \semantex_data_tl_get_exp_not:nn { #1 } { lower } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { upperleftputright } { \semantex_data_tl_get_exp_not:nn { #1 } { upperleft } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { lowerleftputright } { \semantex_data_tl_get_exp_not:nn { #1 } { lowerleft } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { preupper } { \semantex_data_tl_get_exp_not:nn { #1 } { preupper } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { postupper } { \semantex_data_tl_get_exp_not:nn { #1 } { postupper } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { prelower } { \semantex_data_tl_get_exp_not:nn { #1 } { prelower } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { postlower } { \semantex_data_tl_get_exp_not:nn { #1 } { postlower } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { preupperleft } { \semantex_data_tl_get_exp_not:nn { #1 } { preupperleft } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { postupperleft } { \semantex_data_tl_get_exp_not:nn { #1 } { postupperleft } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { prelowerleft } { \semantex_data_tl_get_exp_not:nn { #1 } { prelowerleft } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { postlowerleft } { \semantex_data_tl_get_exp_not:nn { #1 } { postlowerleft } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { heightphantom } { \semantex_data_tl_get_exp_not:nn { #1 } { heightphantom } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { slantingphantom } { \semantex_data_tl_get_exp_not:nn { #1 } { slantingphantom } }
+ \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
+ { texclass } { \semantex_data_tl_get_exp_not:nn { #1 } { texclass } }
+ \exp_not:V \l__semantex_render_outputoptions_temp_tl
+ % These are the options we pass to the output class so that it
+ % can eventually render it
+ }
+ { \exp_not:V \l__semantex_render_symbol_temp_tl }
+ }
}
}
{
@@ -1669,7 +1764,7 @@
}
}
\group_begin:
- \semantex_write_output_to_semtex_file:V \l__semantex_render_temp_tl
+ \semantex_write_output_to_semtex_file_V:N \l__semantex_render_temp_tl
% Adds the output to the .semtex file, if this has been turned on,
% which it is not by default.
\group_end:
@@ -1703,113 +1798,78 @@
\cs_new_protected:Npn \semantex_parentheses_store:nN#1#2
{
\semantex_data_tl_get_store:nnN { #1 } { parsize } \l__semantex_parentheses_store_temp_tl
- \semantex_data_bool_get:nnTF { #1 } { allowSemantexDelimiterSize }
+ \str_case:VnF { \l__semantex_parentheses_store_temp_tl } % This is where \big,\Big, etc. go.
{
- \tl_set:Nn#2 { \SemantexParentheses }
- \tl_put_right:Nx#2
- {
- { \exp_not:V \l__semantex_parentheses_store_temp_tl }
- { \semantex_data_tl_get_exp_not:nn { #1 } { leftpar } }
- { \semantex_data_tl_get_exp_not:nn { #1 } { rightpar } }
+ { normal } {
+ \tl_set:Nx #2
{
+ \exp_not:N \SemantexMathOpen { }
+ \semantex_data_tl_get_exp_not:nn { #1 } { leftpar }
\semantex_data_tl_get_exp_not:nn { #1 } { prearg }
\semantex_data_tl_get_exp_not:nn { #1 } { arg }
\semantex_data_tl_get_exp_not:nn { #1 } { postarg }
+ \exp_not:N \SemantexMathClose { }
+ \semantex_data_tl_get_exp_not:nn { #1 } { rightpar }
}
}
- }
- {
- \str_case:VnF { \l__semantex_parentheses_store_temp_tl } % This is where \big,\Big, etc. go.
- {
- { normal } {
- \tl_set:Nx#2
- {
- \semantex_data_tl_get_exp_not:nn { #1 } { prearg }
- \semantex_data_tl_get_exp_not:nn { #1 } { arg }
- \semantex_data_tl_get_exp_not:nn { #1 } { postarg }
- }
- \str_if_eq:xnF { \semantex_data_tl_get_exp_not:nn { #1 } { leftpar } } { . }
- {
- \tl_put_left:Nx#2
- {
- \exp_not:N \mathopen \semantex_data_tl_get_exp_not:nn { #1 } { leftpar }
- }
- }
- \str_if_eq:xnF { \semantex_data_tl_get_exp_not:nn { #1 } { rightpar } } { . }
- {
- \tl_put_right:Nx#2
- {
- \exp_not:N \mathclose \semantex_data_tl_get_exp_not:nn { #1 } { rightpar }
- }
- }
- }
- { auto } {
- \tl_set:Nx#2
- {
- \exp_not:N \SemantexLeft \semantex_data_tl_get_exp_not:nn { #1 } { leftpar }
- \semantex_data_tl_get_exp_not:nn { #1 } { prearg }
- \semantex_data_tl_get_exp_not:nn { #1 } { arg }
- \semantex_data_tl_get_exp_not:nn { #1 } { postarg }
- \exp_not:N \SemantexRight \semantex_data_tl_get_exp_not:nn { #1 } { rightpar }
- }
- }
- { * } {
- \tl_set:Nx#2
- {
- \exp_not:N \SemantexLeft \semantex_data_tl_get_exp_not:nn { #1 } { leftpar }
- \semantex_data_tl_get_exp_not:nn { #1 } { prearg }
- \semantex_data_tl_get_exp_not:nn { #1 } { arg }
- \semantex_data_tl_get_exp_not:nn { #1 } { postarg }
- \exp_not:N \SemantexRight \semantex_data_tl_get_exp_not:nn { #1 } { rightpar }
- }
- }
- }
- {
- \tl_set:Nx#2
+ { auto } {
+ \tl_set:Nx #2
{
- \exp_not:N \mathopen
- \exp_not:V \l__semantex_parentheses_store_temp_tl
+ \exp_not:N \SemantexMathOpenAuto
\semantex_data_tl_get_exp_not:nn { #1 } { leftpar }
\semantex_data_tl_get_exp_not:nn { #1 } { prearg }
\semantex_data_tl_get_exp_not:nn { #1 } { arg }
\semantex_data_tl_get_exp_not:nn { #1 } { postarg }
- \exp_not:N \mathclose
- \exp_not:V \l__semantex_parentheses_store_temp_tl
+ \exp_not:N \SemantexMathCloseAuto
\semantex_data_tl_get_exp_not:nn { #1 } { rightpar }
}
}
- }
-}
-
-\cs_generate_variant:Nn \str_case:nnF { VnF }
-
-\cs_generate_variant:Nn \str_if_eq:nnF { xnF }
-
-\cs_new_protected:Npn \semantex_no_parentheses_store:nN#1#2
-% The central command for handling the rendering of arguments with no parentheses around
-{
- \semantex_data_bool_get:nnTF { #1 } { allowSemantexDelimiterSize }
- {
- \tl_set:Nn#2 { \SemantexNoParentheses }
- \tl_put_right:Nx#2
- {
+ { * } {
+ \tl_set:Nx #2
{
+ \exp_not:N \SemantexMathOpenAuto
+ \semantex_data_tl_get_exp_not:nn { #1 } { leftpar }
\semantex_data_tl_get_exp_not:nn { #1 } { prearg }
\semantex_data_tl_get_exp_not:nn { #1 } { arg }
\semantex_data_tl_get_exp_not:nn { #1 } { postarg }
+ \exp_not:N \SemantexMathCloseAuto
+ \semantex_data_tl_get_exp_not:nn { #1 } { rightpar }
}
}
}
{
- \tl_set:Nx#2
+ \tl_set:Nx #2
{
+ \exp_not:N \SemantexMathOpen
+ \exp_not:V \l__semantex_parentheses_store_temp_tl
+ \semantex_data_tl_get_exp_not:nn { #1 } { leftpar }
\semantex_data_tl_get_exp_not:nn { #1 } { prearg }
\semantex_data_tl_get_exp_not:nn { #1 } { arg }
\semantex_data_tl_get_exp_not:nn { #1 } { postarg }
+ \exp_not:N \SemantexMathClose
+ \exp_not:V \l__semantex_parentheses_store_temp_tl
+ \semantex_data_tl_get_exp_not:nn { #1 } { rightpar }
}
}
}
+\cs_generate_variant:Nn \str_case:nnF { VnF }
+
+\cs_generate_variant:Nn \str_if_eq:nnF { xnF }
+
+\cs_new_protected:Npn \semantex_no_parentheses_store:nN#1#2
+% The central command for handling the rendering of arguments with no parentheses around
+{
+ \tl_set:Nx#2
+ {
+ \exp_not:N\SemantexMathOpenNoPar
+ \semantex_data_tl_get_exp_not:nn { #1 } { prearg }
+ \semantex_data_tl_get_exp_not:nn { #1 } { arg }
+ \semantex_data_tl_get_exp_not:nn { #1 } { postarg }
+ \exp_not:N\SemantexMathCloseNoPar
+ }
+}
+
\cs_new_protected:Npn \__semantex_symbol_parentheses_store:nnnnN#1#2#3#4#5
% The central command handling the rendering of symbol parentheses
{
@@ -2188,7 +2248,6 @@
\cs_new_protected:Npn \_semantex_arg_return_store:nN#1#2
{
- \semantex_data_tl_get_store:nnN { #1 } { parsize } \l__arg_return_store_parsize_temp_tl
\semantex_data_bool_get:nnTF { #1 } { par }
{
\semantex_data_int_if_positive:nnTF { #1 } { numberofarguments }
@@ -5621,8 +5680,6 @@
dataprovide=parseoptions,
dataprovide=texclass,
boolprovide=leftargument,
- boolprovide=allowSemantexDelimiterSize,
- boolsettrue=allowSemantexDelimiterSize,
dataprovide=heightphantom,
dataprovide=slantingphantom,
execute={ \semantex_data_seq_provide:nn { \semantex_this: } { commands_sequence } },
@@ -5692,21 +5749,6 @@
},
},
},
- {allowSemantexDelimiterSize}{
- strifeqTF={#1}{true}
- {
- boolsettrue={allowSemantexDelimiterSize},
- }
- {
- strifeqTF={#1}{false}
- {
- boolsetfalse={allowSemantexDelimiterSize},
- }
- {
- ERRORkeyvaluenotfound={allowSemantexDelimiterSize}{#1},
- }
- },
- },
{default}{si={#1}},
{degreedefault}{sd={#1}},
{arg}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } },
@@ -5893,7 +5935,9 @@
},
},
{parsize}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { parsize } { #1 } },
+ execute={
+ \semantex_data_tl_set:nnn { ##1 } { parsize } { #1 }
+ },
},
{leftpar}{
execute={ \semantex_data_tl_set:nnn { ##1 } { leftpar } { #1 } },
@@ -6023,12 +6067,16 @@
},
{preupper}{
execute={
- \semantex_data_tl_put_left:nnn { ##1 } { preupper } { #1 }
+ \tl_if_blank:nF{#1}{
+ \semantex_data_tl_put_left:nnn { ##1 } { preupper } { #1 }
+ }
},
},
{postupper}{
execute={
- \semantex_data_tl_put_right:nnn { ##1 } { postupper } { #1 }
+ \tl_if_blank:nF{#1}{
+ \semantex_data_tl_put_right:nnn { ##1 } { postupper } { #1 }
+ }
},
},
{upperputleft}{
@@ -6203,12 +6251,16 @@
},
{prelower}{
execute={
- \semantex_data_tl_put_left:nnn { ##1 } { prelower } { #1 }
+ \tl_if_blank:nF{#1}{
+ \semantex_data_tl_put_left:nnn { ##1 } { prelower } { #1 }
+ }
},
},
{postlower}{
execute={
- \semantex_data_tl_put_right:nnn { ##1 } { postlower } { #1 }
+ \tl_if_blank:nF{#1}{
+ \semantex_data_tl_put_right:nnn { ##1 } { postlower } { #1 }
+ }
},
},
{lowerputleft}{
@@ -6383,12 +6435,16 @@
},
{preupperleft}{
execute={
- \semantex_data_tl_put_left:nnn { ##1 } { preupperleft } { #1 }
+ \tl_if_blank:nF{#1}{
+ \semantex_data_tl_put_left:nnn { ##1 } { preupperleft } { #1 }
+ }
},
},
{postupperleft}{
execute={
- \semantex_data_tl_put_right:nnn { ##1 } { postupperleft } { #1 }
+ \tl_if_blank:nF{#1}{
+ \semantex_data_tl_put_right:nnn { ##1 } { postupperleft } { #1 }
+ }
},
},
{upperleftputright}{
@@ -6563,12 +6619,16 @@
},
{prelowerleft}{
execute={
- \semantex_data_tl_put_left:nnn { ##1 } { prelowerleft } { #1 }
+ \tl_if_blank:nF{#1}{
+ \semantex_data_tl_put_left:nnn { ##1 } { prelowerleft } { #1 }
+ }
},
},
{postlowerleft}{
execute={
- \semantex_data_tl_put_right:nnn { ##1 } { postlowerleft } { #1 }
+ \tl_if_blank:nF{#1}{
+ \semantex_data_tl_put_right:nnn { ##1 } { postlowerleft } { #1 }
+ }
},
},
{lowerleftputright}{
diff --git a/macros/latex/contrib/semantex/semantex.tex b/macros/latex/contrib/semantex/semantex.tex
index 1ce506b54f..e692b55010 100644
--- a/macros/latex/contrib/semantex/semantex.tex
+++ b/macros/latex/contrib/semantex/semantex.tex
@@ -38,7 +38,7 @@
\usepackage[nameinlink]{cleveref}
-\title{Seman\!\TeX: semantic, keyval-based mathematics (v0.43)}
+\title{Seman\!\TeX: semantic, keyval-based mathematics (v0.44)}
\date{\today}
\author{Sebastian Ørsted (\href{mailto:sorsted@gmail.com}{sorsted@gmail.com})}
@@ -220,8 +220,6 @@
\makeatother
-
-
\begin{document}
\maketitle
@@ -890,8 +888,8 @@ Adding support for free algebras, power series, and Laurent series is almost as
{laurent}{
par,
leftpar=(, rightpar=),
- prearg={\!\!\mathopen\SemantexDelimiterSize(},
- postarg={\mathclose\SemantexDelimiterSize)\!\!},
+ prearg={\!\!\mathopen{}\SemantexDelimiterSize(},
+ postarg={\SemantexDelimiterSize)\mathclose{}\!\!},
% The "prearg" and "postarg" are printed before after
% the argument, if the argument is non-empty.
% The command "\SemantexDelimiterSize" is substituted
@@ -916,8 +914,8 @@ Adding support for free algebras, power series, and Laurent series is almost as
{laurent}{
par,
leftpar=(, rightpar=),
- prearg={\!\!\mathopen\SemantexDelimiterSize(},
- postarg={\mathclose\SemantexDelimiterSize)\!\!},
+ prearg={\!\!\mathopen{}\SemantexDelimiterSize(},
+ postarg={\SemantexDelimiterSize)\mathclose{}\!\!},
% These are printed before and after the argument.
% The command "\SemantexDelimiterSize" is substituted
% by \big, \Big, ..., or whatever size the
@@ -1933,17 +1931,20 @@ $\norm{\va}$,
$\inner{\va,\vb}$,
$\inner{slot,slot}$
\end{LTXexample}
+
We can also use it for more complicated constructions, like sets.
-The following is inspired from the \pack{mathtools} package where a similar construction is created using the commands from that package. My impression is that Lars Madsen is the main mastermind behind the code I use for the \lstinline!\where!~command:
+The following is inspired from the \pack{mathtools} package where a similar construction is created using the commands from that package. My impression is that Lars Madsen is the main mastermind behind the code I use for the \lstinline!\where!~construction:
\begin{lstlisting}
-\newcommand\where{
+\newcommand\wherecommand[1]{
\nonscript\:
- \SemantexDelimiterSize\vert
+ #1\vert
\allowbreak
\nonscript\:
\mathopen{}
}
+\NewObject\MyVar\where{ \wherecommand{\SemantexDelimiterSize} }
+
\NewObject\MyDelim\Set{\lbrace}{\rbrace}[
prearg={\,},postarg={\,},
% adds \, inside {...}, as recommended by D. Knuth
@@ -1951,20 +1952,24 @@ The following is inspired from the \pack{mathtools} package where a similar cons
% this turns off all keyval syntax in the argument
]
\end{lstlisting}
-\newcommand\where{
+\newcommand\wherecommand[1]{
\nonscript\:
- \SemantexDelimiterSize\vert
+ #1\vert
\allowbreak
\nonscript\:
\mathopen{}
}
+\NewObject\MyVar\where{ \wherecommand{\SemantexDelimiterSize} }
+
\NewObject\MyDelim\Set{\lbrace}{\rbrace}[
prearg={\,},postarg={\,},
% adds \, inside {...}, as recommended by D. Knuth
argkeyval=false,
% this turns off all keyval syntax in the argument
]
+
+\noindent
As we briefly mentioned previously,
\lstinline!\SemantexDelimiterSize!~is a command
that returns the size of the delimiters in the
@@ -1975,7 +1980,7 @@ $\Set{ \vx\in\vY \where \vx\ge0 }$,
$\Set[par=\big]{ \vx\in\vY \where \vx\ge0 }$
\end{LTXexample}
Don't forget that, since the class~\lstinline!\MyDelim! inherits from~\lstinline!\MyVar!,
-the output of any of these commands has class~\lstinline!\MyVar!.
+the output of any of these commands also belongs to class~\lstinline!\MyVar!.
So you can do stuff like
\begin{LTXexample}
$\Set{
@@ -2755,6 +2760,8 @@ Let us see it in action:
\partialdif[\vu^2,\vv^2,
d=4,raise=false]{
\vf },
+\]
+\[
\partialdif[\vx[1],
\vx[2],...,\vx[\vn],
d=\vn,raise=false]{
@@ -2794,27 +2801,21 @@ The system has the following limitations:
\item It is currently only able to strip the \semantex markup from your main document (so it will ignore anything in \lstinline!\input{...}! and~\lstinline!\include{...}!). So prior to running \pack{stripsemantex},
you should include your entire document body in your
main \texttt{.tex}~file.
+ \item Partly because of the previous point, no attempt is made to remove
+ the \emph{setup} of \semantex,
+ so commands like \lstinline!\NewObject!, \lstinline!\SetupObject!, and~\lstinline!\SetupClass!
+ will remain in the document body.
+ You will then have to remove these yourself afterwards.
+ But the \semantex markup itself should be stripped completely from your document.
\item As mentioned, as long as you do normal, supported things,
everything should work fine. Non-normal, non-supported
things are tings like
\begin{lstlisting}
\va[execute={\vb}]
\end{lstlisting}
- \item Occasionally, you will have to run the stripping algorithm
- multiple times. This happens e.g.~if you have
- a key that does stuff like \lstinline!symbolputleft=\vH[d=0]!,
- i.e.~keys that are defined using other objects. When you run
- \pack{stripsemantex}, such objects will remain in the text until you run it again.
- \item Partly because of the previous point, no attempt is made to remove
- the \emph{setup} of \semantex,
- so commands like \lstinline!\NewObject!, \lstinline!\SetupObject!, and~\lstinline!\SetupClass!
- will remain in the document body.
- You will then have to remove these yourself afterwards.
- But the \semantex markup itself should be stripped completely from your document
- (possibly after more than one run of the algorithm).
\item Things might go wrong if you define new keys
between \lstinline!\begin{document}! and~\lstinline!\end{document}!
- whose definitions make use of \semantex objects or classes,
+ whose definitions make use of other \semantex objects or classes,
since the algorithm will try to strip these from the definitions.
For instance, don't do stuff like this
after~\lstinline!\begin{document}!:
@@ -2833,9 +2834,20 @@ The system has the following limitations:
\item When the document has just been stripped,
it will load a small package called \pack{semtex},
which contains a couple of commands that the output will need
- in order to run. You should be able to replace most (often all) of these commands
+ in order to run. You will be able to replace all of these commands
by other commands and then render the package \pack{semtex}
unnecessary. More on this in \cref{sec:semtex_package}.
+ \item When \semantex runs, the content of any argument is being wrapped
+ between \lstinline!\begingroup! and~\lstinline!\endgroup!. This is part of what
+ makes it possible to use the command~\lstinline!\SemantexDelimiterSize!.
+ However, these \lstinline!\begingroup! and~\lstinline!\endgroup! will not appear
+ in the stripped document. This means that if you do stuff like
+ \begin{lstlisting}
+$ \def\foo{bar} \va{ \def\foo{barbar} \vx } \foo $
+ \end{lstlisting}
+ then this will print~\( \va{\vx} bar \) before running \pack{stripsemantex},
+ but~\( \va{\vx} barbar \) after. In order to avoid this, simply don't define
+ commands inside arguments, which you should never do in the first place (and why would you anyway?).
\end{itemize}
As a small proof of concept, this is what the example in the introduction
@@ -2870,9 +2882,9 @@ you can have a look at my latest paper, which was stripped with
When you have stripped your document and removed all \semantex package setup, it should be safe to remove
the loading of \semantex from your preamble.
However, the stripping algorithm will automatically
-add the following right before~\lstinline!\begin{document}!:
+add the following lines to your document right before~\lstinline!\begin{document}!:
\begin{lstlisting}
-% The following was added by "stripsemantex"
+% The following was added by "stripsemantex":
\usepackage{semtex,leftindex,graphicx}
@@ -2896,18 +2908,12 @@ possible left indices. The package~\pack{graphicx}
is loaded to provide the command~\lstinline!\scalebox!.
This package~\pack{semtex} is a small package whose sole purpose
is to be loaded by stripped \semantex documents.
-It contains a couple of simple commands that the document
-needs immediately after the stripping.
-Depending on your document,
-you should be able to completely replace these commands
-by commands from other packages, or define them yourself, rendering the package~\pack{semtex}
-unnecessary.
-And actually, four of those commands are the commands
+All it does is define the four commands
\lstinline!\SemantexLeft!, \lstinline!\SemantexRight!,
\lstinline!\SemantexBullet!, and~\lstinline!\SemantexDoubleBullet!
-which are provided right below, making it even faster to just remove~\pack{semtex}.
+so that you can remove these definitions from your document and just rely on the package instead.
-In total, the package~\pack{semtex} adds the following commands:
+Let us take a look at the commands defined by \pack{semtex}:
\begin{itemize}
\item
@@ -2929,74 +2935,8 @@ In total, the package~\pack{semtex} adds the following commands:
from the package~\pack{mleftright}, so it is safe to just load that package
and replace the above commands by \lstinline!\mleft...\mright! instead,
or use the redefinitions mentioned above.
-
- \item
- \mylst!\SemantexParentheses{$\values\<normal|auto|*|{\textit{other}}\>$}{$\<left parenthesis\>$}!\\
- \mbox{\qquad}\mylst!{$\<right parenthesis\>$}{$\<content\>$}!,
-
- This one writes \<content\> enclosed in the pair of parentheses
- and with the size given by the first argument.
- Here,~\lstinline!normal! means normal size
- parentheses,
- and
- \lstinline!auto! and~\lstinline!*!
- mean auto-scaled parentheses using the commands~\lstinline!\SemantexLeft...\SemantexRight!.
- If another value is received, that value
- is used for the parenthesis size,
- so the intended values are~\lstinline!\big!, \lstinline!\Big!,
- \lstinline!\bigg!,~\lstinline!\Bigg!.
- The important property of this command is that
- inside the~\<content\>, you can access the delimiter size
- at any point using the command~\lstinline!\SemantexDelimiterSize!. In other words, when
- no~\lstinline!\SemantexDelimiterSize! is found inside the~\<content\>,
- the command is completely redundant. We shall see
- in a moment how to make sure it does not appear in your output
- unless absolutely necessary.
-
- \item
- \mylst!\SemantexNoParentheses{$\<content\>$}!
-
- This command prints the content with no parentheses, but importantly, it also resets
- the command \lstinline!\SemantexDelimiterSize!
- to~\lstinline!{}!, i.e.~blank.
- As with the command~\lstinline!\SemantexParentheses!,
- we shall see in a moment how to make this
- command not appear in your output
- unless absolutely necessary.
\end{itemize}
-As you see, most of these commands can be removed completely
-or replaced by commands from other packages. The one
-issue is with the annoying
-commands \lstinline!\SemantexParentheses!
-and~\lstinline!\SemantexNoParentheses!.
-These exist solely for the purpose of allowing the use of
-the command~\lstinline!\SemantexDelimiterSize! in the content.
-However, there are very few cases, such as set constructions, where
-\lstinline!\SemantexDelimiterSize! is even necessary. Therefore,
-\textbf{it is possible to turns the use of these commands off}.
-More precisely, there is a key that can be
-activated for any object or class:
-\begin{center}
- \mylst!allowSemantexDelimiterSize=$\values\<\default{true}|false\>$!
-\end{center}
-When this is set to false, \semantex will not use the
-commands~\lstinline!\SemantexParentheses!
-and~\lstinline!\SemantexNoParentheses! internally,
-and consequently, \lstinline!\SemantexDelimiterSize! will not work in that class or object.
-Instead, it will simply print the parentheses as raw code,
-and this is what will appear in your stripped document instead.
-The natural thing to do is to turn it off by default and
-only turn it back on for the few cases where you really need it:
-
-\begin{lstlisting}
-\SetupClass\MyVar{allowSemantexDelimiterSize=false}
-
-% We turn it back on for the set constructions
-% as defined above.
-\SetupObject\Set{allowSemantexDelimiterSize=true}
-\end{lstlisting}
-
\section{The \texttt{stripsemantex} algorithm}
The stripping algorithm works like this.
@@ -3009,18 +2949,12 @@ Suppose in the following that you \TeX\ document is called~\texttt{mydoc.tex}.
\item Make sure to collect all of the \semantex markup you want
stripped in the main document,~\texttt{mydoc.tex}.
Also make sure to follow the recommendations
- in \cref{sec:UseClassInCommand}, in case you have created keys
+ in \cref{sec:UseClassInCommand}, in case you have created commands
of the form described there.
- \item Set~\lstinline!allowSemantexDelimiterSize=false!
- for your main class~\lstinline!\MyVar!, and only
- turn it back on in the few cases where you need it,
- i.e.~when you need to use the command~\lstinline!\SemantexDelimiterSize!.
\item Put the following somewhere in your preamble, after
the loading of \semantex:
\begin{lstlisting}
-\SemantexSetup{
- semtexfile=true,
-}
+\SemantexSetup{semtexfile=true}
\end{lstlisting}
\item Compile your document \texttt{mydoc.tex} using your preferred \TeX\ engine (\hologo{pdfTeX}, \hologo{XeTeX}, \hologo{LuaTeX}, or whatever).
Because of the previous step, there
@@ -3039,58 +2973,59 @@ Suppose in the following that you \TeX\ document is called~\texttt{mydoc.tex}.
\begin{document}
-\StripSemantexCopyFile{mydoc}
-
-%\StripSemantexStripFile{mydoc}
+\StripSemantex{mydoc}
\end{document}
\end{lstlisting}
Then compile it \textbf{with \hologo{LuaTeX}}.
- \item After the previous step, another document will have been created in the same
+
+ After this step, another document will have been created in the same
folder, called~\lstinline!mydoc_prestripped.tex!. It will look just like \texttt{mydoc.tex},
but in the document body, each \semantex markup command will now
have a command \mylst!\SemantexIDcommand{$\<a unique ID\>$}!
- preceding it. Compile this new document \lstinline!mydoc_prestripped.tex! using the same \TeX\ engine as the one you used
+ preceding it.
+
+ \item\label{pt:pre_strip_point}
+ Compile the document \lstinline!mydoc_prestripped.tex! using the same \TeX\ engine as the one you used
for \texttt{mydoc.tex}.
- \item\label{pt:strip_point} Edit~\texttt{stripdoc.tex}, commenting out the line~\lstinline!\StripSemantexCopyFile{mydoc}!, and
- uncommentng the next one, so that the file now looks like this:
- \begin{lstlisting}
+ \item\label{pt:strip_point}
+ Compile the document~\lstinline!stripdoc.tex! again, this time also \textbf{using \hologo{LuaTeX}}.
+
+ \item After the previous step, some (but usually not all) \semantex markup will have been
+ removed from the file~\lstinline!mydoc_prestripped.tex!.
+ If the stripping algorithm has terminated (which it almost never does after a single run), there will now be a new document in your folder,
+ called~\lstinline!mydoc_stripped.tex!.
+ If this document is not there, repeat the steps \ref{pt:pre_strip_point} and~\ref{pt:strip_point}.
+
+ Continue this way until the file \lstinline!mydoc_stripped.tex! appears. It can easily require three or more iterations, but each iteration will usually be faster than the previous one, and eventually, the file~\lstinline!mydoc_stripped.tex! will appear.
+ (Note that at the point~\ref{pt:strip_point}, \pack{stripsemantex} will also issue a warning if the algorithm has not yet terminated, asking you to repeat the steps \ref{pt:pre_strip_point} and~\ref{pt:strip_point}).
+
+ Note again that your \semantex \textbf{setup}
+ will not be removed, so there
+ will still be commands like \lstinline!\NewObject!,
+ \lstinline!\SetupObject!, \lstinline!\SetupClass!,~etc.
+ left. You will then have to remove these few commands from your document manually.
+\end{enumerate}
+
+Apart from the machinery for stripping \semantex markup from documents,
+the package \pack{stripsemantex} also provides the command~\lstinline!\StripSemantexStripComments!,
+which is in principle completely unrelated to \semantex itself.
+This command allows you to strip all comments between \lstinline!\begin{document}! and~\lstinline!\end{document}!.
+If your document is again called~\lstinline!mydoc.tex!,
+you can create the following document and compile it \textbf{with \hologo{LuaTeX}}:
+\begin{lstlisting}
\documentclass{article}
\usepackage{stripsemantex}
\begin{document}
-%\StripSemantexCopyFile{mydoc}
-
-\StripSemantexStripFile{mydoc}
+\StripSemantexStripComments{mydoc}
\end{document}
- \end{lstlisting}
- Then compile this document again, this time also \textbf{using \hologo{LuaTeX}}.
- This will create a document called \lstinline!mydoc_stripped.tex!, which should (hopefully)
- be completely stripped of \semantex markup in the document body.
- Occasionally, as mentioned above, a few such commands may remain, in which case you will simply
- have to repeat the above steps, this time with the document~\texttt{mydoc.tex}
- replaced by~\lstinline!mydoc_stripped.tex!.
- Note again that your \semantex \textbf{setup}
- will not be removed, so there
- will still be commands like \lstinline!\NewObject!,
- \lstinline!\SetupObject!, \lstinline!\SetupClass!,~etc.
- left. You will then have to remove these few commands from your document manually.
-\end{enumerate}
-
-There is also another command in the \pack{stripsemantex} package,
-called simply \mylst!\StripSemantex!, which will
-run either the command \mylst!\StripSemantexCopyFile! or the command \mylst!\StripSemantexStripFile!,
-depending on which of the files \lstinline!mydoc.semtex!
-and~\mylst!mydoc_prestripped.semtex! is newer.
-This will allow you to not have to edit
-the file \texttt{stripdoc.tex}
-at point~\ref{pt:strip_point}.
-Unfortunately, due to a bug in \LaTeX3,
-this command does not work right now (in~\hologo{LuaTeX}). This bug has been reported
-and has hopefully already been fixed by the time you read this.
+\end{lstlisting}
+This will create a new document, called \lstinline!mydoc_comments_stripped.tex!, where all comments
+in the document body have been removed.
\chapter{Known bugs}
@@ -3503,19 +3438,6 @@ In the following sections, we include the full list.
The intended values are \lstinline!\mathord!, \lstinline!\mathop!, \lstinline!\mathbin!, \lstinline!\mathrel!, \lstinline!\mathopen!, \lstinline!\mathclose!, and~\lstinline!\mathpunct!.
\item
- \mylst!allowSemantexDelimiterSize={$\values\<\default{true}|false\>$}!
-
- Sets whether to allow the command \lstinline!\SemantexDelimiterSize!
- inside the argument.
- The default is~\lstinline!true!.
- The only real reason to turn this off is if you are using
- \lstinline!stripsemantex! to strip the document of \semantex markup.
- For if it is set to false, the system will not
- add \lstinline!\SemantexParentheses! and \lstinline!\SemantexNoParentheses!
- all over the place to set the value of \lstinline!\SemantexDelimiterSize!,
- and this probably looks better in the outputted code.
-
- \item
\mylst!default={$\<value\>$}!
This is the key that is applied whenever the
@@ -5872,19 +5794,6 @@ the programming keys and commands:
(boolean):
If true, the next lower upper index will have a separator printed in front of it.
\item
- \mylst!allowSemantexDelimiterSize!
- (boolean):
- if true, the argument will
- allow the command \lstinline!\SemantexDelimiterSize!
- inside the argument;
- the default is~\lstinline!true!.
- The only real reason to turn this off is if you are using
- \lstinline!stripsemantex! to strip the document of \semantex markup.
- For if it is set to false, the system will not
- add \lstinline!\SemantexParentheses! and \lstinline!\SemantexNoParentheses!
- all over the place to set the value of \lstinline!\SemantexDelimiterSize!,
- and this probably looks better in the outputted code.
- \item
\mylst!numberofarguments!
(integer):
the number of arguments.
diff --git a/macros/latex/contrib/semantex/stripsemantex.lua b/macros/latex/contrib/semantex/stripsemantex.lua
index 1ebce1f716..0ecb5e6240 100644
--- a/macros/latex/contrib/semantex/stripsemantex.lua
+++ b/macros/latex/contrib/semantex/stripsemantex.lua
@@ -64,6 +64,11 @@ addIDsToRegisters = function(str)
end
removeSuperfluousIDs = function()
+ local p = content:find('([^\\]%%[^\n]-)\\SemantexIDcommand{}([^\n]-\n)')
+ while p do
+ content = content:gsub('([^\\]%%[^\n]-)\\SemantexIDcommand{}([^\n]-\n)','%1%2')
+ p = content:find('([^\\]%%[^\n]-)\\SemantexIDcommand{}([^\n]-\n)')
+ end
content = content:gsub('parent(%s*)=(%s*)\\SemantexIDcommand{}','parent%1=%2')
content = content:gsub('class(%s*)=(%s*)\\SemantexIDcommand{}','class%1=%2')
content = content:gsub('clone(%s*)=(%s*)\\SemantexIDcommand{}','clone%1=%2')
@@ -75,12 +80,12 @@ removeSuperfluousIDs = function()
end
addNumbersToIDs = function()
- local n = 1
+ local n = 0
local p,q = string.find(content,'\\SemantexIDcommand{}')
while q do
+ n = n + 1
content = content:sub(1,q-1) .. n .. content:sub(q,-1)
p, q = string.find(content,'\\SemantexIDcommand{}')
- n = n + 1
end
end
@@ -154,7 +159,7 @@ semantexIDluacommand = function(id, source, output)
netto = netto + 1
elseif e == '\\' then
q = q + 1
- -- there is no chance that the source contains a %, so we do not
+ -- there is no chance that the source contains an unescaped %, so we do not
-- check for this
end
end
@@ -187,14 +192,18 @@ semantexIDluacommand = function(id, source, output)
output = output:gsub('\\mathclose \\}', '\\}')
output = output:gsub('\\mathopen \\lbrace', '\\lbrace')
output = output:gsub('\\mathclose \\rbrace', '\\rbrace')
- output = output:gsub('\\mathopen \\lbrack', '\\rbrack')
+ output = output:gsub('\\mathopen \\lbrack', '\\lbrack')
output = output:gsub('\\mathclose \\rbrack', '\\rbrack')
output = output:gsub('\\mathopen \\langle', '\\langle')
output = output:gsub('\\mathclose \\rangle', '\\rangle')
- output = output:gsub('\\mathopen \\lvert', '\\rvert')
+ output = output:gsub('\\mathopen \\lvert', '\\lvert')
output = output:gsub('\\mathclose \\rvert', '\\rvert')
- output = output:gsub('\\mathopen \\lVert', '\\rVert')
+ output = output:gsub('\\mathopen \\vert', '\\lvert')
+ output = output:gsub('\\mathclose \\vert', '\\rvert')
+ output = output:gsub('\\mathopen \\lVert', '\\lVert')
output = output:gsub('\\mathclose \\rVert', '\\rVert')
+ output = output:gsub('\\mathopen \\Vert', '\\lVert')
+ output = output:gsub('\\mathclose \\Vert', '\\rVert')
output = output:gsub('%^{\\prime }', '\'')
output = output:gsub('%^{\\prime \\prime }', '\'\'')
output = output:gsub('%^{\\prime \\prime \\prime }', '\'\'\'')
@@ -227,8 +236,56 @@ stripRemainingSemantexIDs = function()
content = content:gsub('\\SemantexIDcommand{%d+}', '')
end
+removeParenthesisCommands = function()
+ content = content:gsub('\\SemantexMathOpen \\bigg%s?', '\\biggl')
+ content = content:gsub('\\SemantexMathClose \\bigg%s?', '\\biggr')
+ content = content:gsub('\\SemantexMathOpen \\Bigg%s?', '\\Biggl')
+ content = content:gsub('\\SemantexMathClose \\Bigg%s?', '\\Biggr')
+ content = content:gsub('\\SemantexMathOpen \\big%s?', '\\bigl')
+ content = content:gsub('\\SemantexMathClose \\big%s?', '\\bigr')
+ content = content:gsub('\\SemantexMathOpen \\Big%s?', '\\Bigl')
+ content = content:gsub('\\SemantexMathClose \\Big%s?', '\\Bigr')
+ content = content:gsub('\\SemantexMathOpen{} %(', '(')
+ content = content:gsub('%s*\\SemantexMathClose{}%)', ')')
+ content = content:gsub('\\SemantexMathOpen{} %[', '[')
+ content = content:gsub('%s*\\SemantexMathClose{}%]', ']')
+ content = content:gsub('\\SemantexMathOpen{} \\{', '\\{')
+ content = content:gsub('%s*\\SemantexMathClose{} \\}', '\\}')
+ content = content:gsub('\\SemantexMathOpen{} \\lbrace', '\\lbrace')
+ content = content:gsub('\\SemantexMathClose{} \\rbrace', '\\rbrace')
+ content = content:gsub('\\SemantexMathOpen{} \\lbrack', '\\rbrack')
+ content = content:gsub('\\SemantexMathClose{} \\rbrack', '\\rbrack')
+ content = content:gsub('\\SemantexMathOpen{} \\langle', '\\langle')
+ content = content:gsub('\\SemantexMathClose{} \\rangle', '\\rangle')
+ content = content:gsub('\\SemantexMathOpen{} \\lvert', '\\lvert')
+ content = content:gsub('\\SemantexMathClose{} \\rvert', '\\rvert')
+ content = content:gsub('\\SemantexMathOpen{} \\vert', '\\lvert')
+ content = content:gsub('\\SemantexMathClose{} \\vert', '\\rvert')
+ content = content:gsub('\\SemantexMathOpen{} \\lVert', '\\lVert')
+ content = content:gsub('\\SemantexMathClose{} \\rVert', '\\rVert')
+ content = content:gsub('\\SemantexMathOpen{} \\Vert', '\\lVert')
+ content = content:gsub('\\SemantexMathClose{} \\Vert', '\\rVert')
+ content = content:gsub('\\SemantexMathOpen{} .%s?', '')
+ content = content:gsub('\\SemantexMathClose{} .%s?', '')
+ content = content:gsub('\\SemantexMathOpen{}', '\\mathopen ')
+ content = content:gsub('\\SemantexMathClose{}', '\\mathclose ')
+ content = content:gsub('\\SemantexMathOpenAuto%s?', '\\SemantexLeft')
+ content = content:gsub('\\SemantexMathCloseAuto%s?', '\\SemantexRight')
+ content = content:gsub('\\SemantexMathOpenNoPar%s?', '')
+ content = content:gsub('\\SemantexMathCloseNoPar%s?', '')
+ content = content:gsub('\\SemantexMathOpen%s?', '\\mathopen')
+ content = content:gsub('\\SemantexMathClose%s?', '\\mathclose')
+end
+
+stripComments = function()
+ content = content:gsub('\\%%', '\\StripSemantexEscapedPercent')
+ content = content:gsub('(\\%w+)%%.-\n%s*', '%1 ')
+ content = content:gsub('%%.-\n%s*', '')
+ content = content:gsub('\\StripSemantexEscapedPercent', '\\%%')
+end
+
addSemtexPackageToFile = function()
- content = [[% The following was added by "stripsemantex"
+ content = [[% The following was added by "stripsemantex":
\usepackage{semtex,leftindex,graphicx}
diff --git a/macros/latex/contrib/semantex/stripsemantex.sty b/macros/latex/contrib/semantex/stripsemantex.sty
index 2599c108c2..419a4dd75a 100644
--- a/macros/latex/contrib/semantex/stripsemantex.sty
+++ b/macros/latex/contrib/semantex/stripsemantex.sty
@@ -1,5 +1,5 @@
\RequirePackage{xparse}
-\ProvidesExplPackage{stripsemantex}{2020/09/13}{0.43}{}
+\ProvidesExplPackage{stripsemantex}{2020/09/27}{0.44}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -18,6 +18,8 @@
\msg_new:nnn { stripsemantex } { begin_document_not_found } { No~\token_to_str:N\begin{document}~found~in~the~file~#1;~it~has~to~be~in~the~main~document. }
+\msg_new:nnn { stripsemantex } { rerun_stripsemantex } { Some~SemanTeX~commands~are~still~remaining~in~your~document;~please~(re)run~TeX~on~the~file~#1_prestripped.tex,~and~then~rerun~LuaTeX~on~the~file~\jobname.tex. }
+
\sys_if_engine_luatex:F { \msg_fatal:nn { stripsemantex } { not_luatex } }
\lua_now:n { require('stripsemantex.lua') }
@@ -31,6 +33,10 @@
\lua_now:e {
copy_file('\lua_escape:e{#1}.tex', '\lua_escape:e{#1}_prestripped.tex')
+ }
+
+ \lua_now:e
+ {
openFile('\lua_escape:e{#1}_prestripped.tex')
}
@@ -53,9 +59,13 @@
addNumbersToIDs()
closeFile('\lua_escape:e{#1}_prestripped.tex')
}
+
+ \msg_warning:nnn { stripsemantex } { rerun_stripsemantex } { #1 }
}
-\cs_new_protected:Npn\stripsemantex_create_stripped_file:n#1
+\bool_new:N\g_stripsemantex_something_left_to_strip_bool
+
+\cs_new_protected:Npn\stripsemantex_strip_file:n#1
{
\file_if_exist:nF { #1_prestripped.semtex }
{
@@ -63,8 +73,7 @@
}
\lua_now:e {
- copy_file('\lua_escape:e{#1}_prestripped.tex', '\lua_escape:e{#1}_stripped.tex')
- openFile('\lua_escape:e{#1}_stripped.tex')
+ openFile('\lua_escape:e{#1}_prestripped.tex')
}
\DeclareDocumentCommand\SemantexID{ m t{\BeginSource} }
@@ -78,6 +87,7 @@
\cs_set:Npn\strip_semantex_id_command:w##1\BeginSource##2\EndSource\BeginOutput##3\EndOutput
{
+ \bool_set_true:N \g_stripsemantex_something_left_to_strip_bool
\lua_now:e
{
semantexIDluacommand( '\lua_escape:e{\tl_trim_spaces:n{##1}}' , '\lua_escape:e{\exp_not:n{##2}}' , '\lua_escape:e{\exp_not:n{##3}}' )
@@ -95,30 +105,69 @@
\lua_now:e
{
stripRemainingSemantexIDs()
- addSemtexPackageToFile()
- closeFile('\lua_escape:e{#1}_stripped.tex')
+ }
+
+ \bool_if:NTF \g_stripsemantex_something_left_to_strip_bool
+ {
+ \cs_set:Npn\DeclareObject##1
+ {
+ \lua_now:e { addIDsToRegisters ( '\cs_to_str:N ##1' ) }
+ }
+
+ \cs_set:Npn\DeclareClass##1
+ {
+ \lua_now:e { addIDsToRegisters ( '\cs_to_str:N ##1' ) }
+ }
+
+ \cs_set:Npn\SemantexID##1 {}
+
+ \cs_set:Npn\BeginSource##1\EndSource\BeginOutput##2\EndOutput {}
+
+ \file_input:n { #1.semtex }
+
+ \lua_now:e
+ {
+ removeSuperfluousIDs()
+ addNumbersToIDs()
+ closeFile('\lua_escape:e{#1}_prestripped.tex')
+ }
+
+ \msg_warning:nnn { stripsemantex } { rerun_stripsemantex } { #1 }
+ }
+ {
+ \lua_now:e
+ {
+ removeParenthesisCommands()
+ addSemtexPackageToFile()
+ closeFile('\lua_escape:e{#1}_prestripped.tex')
+ copy_file('\lua_escape:e{#1}_prestripped.tex', '\lua_escape:e{#1}_stripped.tex')
+ }
}
}
-\cs_set_eq:NN\StripSemantexCopyFile\stripsemantex_create_prestripped_file:n
-
-\cs_new_protected:Npn\StripSemantexStripFile#1
-{
- \begingroup
- \ExplSyntaxOn
- \stripsemantex_create_stripped_file:n { #1 }
-% \ExplSyntaxOff
- \endgroup
-}
\cs_new_protected:Npn\StripSemantex#1
{
- % This will only work after a bug has been corrected in expl3
+ \group_begin:
+ \ExplSyntaxOn % this will prevent the inserting of the annoying extra spaces
+ % from the .semtex file into the document.
\file_compare_timestamp:nNnTF { #1.semtex } < { #1_prestripped.semtex }
{
- \StripSemantexStripFile { #1 }
+ \stripsemantex_strip_file:n { #1 }
+ }
+ {
+ \stripsemantex_create_prestripped_file:n { #1 }
}
+ \group_end:
+}
+
+\cs_new_protected:Npn\StripSemantexStripComments#1
+{
+ \lua_now:e
{
- \StripSemantexCopyFile { #1 }
+ copy_file('\lua_escape:e{#1}.tex', '\lua_escape:e{#1}_comments_stripped.tex')
+ openFile('\lua_escape:e{#1}_comments_stripped.tex')
+ stripComments()
+ closeFile('\lua_escape:e{#1}_comments_stripped.tex')
}
} \ No newline at end of file
diff --git a/macros/latex/contrib/semtex/semtex.pdf b/macros/latex/contrib/semtex/semtex.pdf
index 3fe2797582..6500750b39 100644
--- a/macros/latex/contrib/semtex/semtex.pdf
+++ b/macros/latex/contrib/semtex/semtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/semtex/semtex.sty b/macros/latex/contrib/semtex/semtex.sty
index f7d979205d..28c9303f69 100644
--- a/macros/latex/contrib/semtex/semtex.sty
+++ b/macros/latex/contrib/semtex/semtex.sty
@@ -1,5 +1,5 @@
\RequirePackage{xparse}
-\ProvidesExplPackage{semtex}{2020/09/10}{0.2}{}
+\ProvidesExplPackage{semtex}{2020/09/27}{0.44}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -33,53 +33,4 @@
\cs_set:Npn\SemantexLeft { \mathopen{}\mathclose\bgroup\left }
-\cs_set:Npn\SemantexRight { \aftergroup\egroup\right }
-
-\tl_set:Nn\SemantexDelimiterSize{}
-
-\DeclareDocumentCommand\SemantexParentheses { mmmm }
-{
- \str_case:nnF { #1 } % This is where \big,\Big, etc. go.
- {
- { normal } {
- \group_begin:
- \tl_clear:N \SemantexDelimiterSize
- \str_if_eq:nnF { #2 } { . } { \mathopen #2 }
- #4
- \str_if_eq:nnF { #3 } { . } { \mathclose #3 }
- \group_end:
- }
- { auto } {
- \group_begin:
- \tl_set_eq:NN \SemantexDelimiterSize \middle
- \SemantexLeft #2
- #4
- \SemantexRight #3
- \group_end:
- }
- { * } {
- \group_begin:
- \tl_set_eq:NN \SemantexDelimiterSize \middle
- \SemantexLeft #2
- #4
- \SemantexRight #3
- \group_end:
- }
- }
- {
- \group_begin:
- \tl_set_eq:NN\SemantexDelimiterSize #1
- \mathopen #1 #2
- #4
- \mathclose #1 #3
- \group_end:
- }
-}
-
-\DeclareDocumentCommand\SemantexNoParentheses { m }
-{
- \group_begin:
- \tl_clear:N\SemantexDelimiterSize
- #1
- \group_end:
-} \ No newline at end of file
+\cs_set:Npn\SemantexRight { \aftergroup\egroup\right } \ No newline at end of file
diff --git a/macros/latex/contrib/semtex/semtex.tex b/macros/latex/contrib/semtex/semtex.tex
index 45e64e16da..e390c4ba23 100644
--- a/macros/latex/contrib/semtex/semtex.tex
+++ b/macros/latex/contrib/semtex/semtex.tex
@@ -38,7 +38,7 @@
\usepackage[nameinlink]{cleveref}
-\title{\texttt{semtex}: For stripped Seman\!\TeX\ documents (v0.2)}
+\title{\texttt{semtex}: For stripped Seman\!\TeX\ documents (v0.44)}
\date{\today}
\author{Sebastian Ørsted (\href{mailto:sorsted@gmail.com}{sorsted@gmail.com})}
@@ -167,63 +167,4 @@ Alternatively, you can recreate them yourself by
}
\end{lstlisting}
-\chapter*{Commands for scaled delimiters}
-
-First and foremost, the package provides the command
-\begin{lstlisting}
-\SemantexParentheses{@\values\<normal|auto|*|{\textit{other}}\>@}{@\<left parenthesis\>@}!\\
- {@\<right parenthesis\>@}{@\<content\>@}
-\end{lstlisting}
-This one writes \<content\> enclosed in the pair of parentheses
-and with the size given by the first argument.
-Here,~\lstinline!normal! means normal size
-parentheses,
-and \lstinline!auto! and~\lstinline!*!
-mean auto-scaled parentheses using~\lstinline!\SemantexLeft...\SemantexRight!.
-If another value is received, that value
-is used for the parenthesis size,
-so the intended values are~\lstinline!\big!, \lstinline!\Big!,
-\lstinline!\bigg!,~\lstinline!\Bigg!:
-\begin{LTXexample}
-$\SemantexParentheses{normal}{(}{
- )}{\frac{a}{b}}$,
-$\SemantexParentheses{auto}{[}{]}{
- \frac{a}{b}}$,
-$\SemantexParentheses{\big}{
- \langle}{\rangle}{\frac{a}{b}}$,
-$\SemantexParentheses{\Bigg}{\{}{
- \}}{\frac{a}{b}}$,
-\end{LTXexample}
-The important property of this command
-is that inside the~\<content\>, you can access
-the delimiter size at any point using
-the command~\lstinline!\SemantexDelimiterSize!:
-\begin{LTXexample}
-$\SemantexParentheses{\Bigg}{\{}{\}}{
- \frac{a}{b}
- \SemantexDelimiterSize|
- \frac{u}{v}
-}$
-\end{LTXexample}
-
-Secondly, the package provides the command
-\begin{lstlisting}
-\SemantexNoParentheses{@\<content\>@}
-\end{lstlisting}
-This command prints the content with no parentheses, but importantly, it also resets
-the command \lstinline!\SemantexDelimiterSize!
-to~\lstinline!{}!, i.e.~blank.
-This makes the following work:
-\begin{LTXexample}
-$\SemantexParentheses{\Bigg}{\{}{\}}{
- \frac{a}{b}
- \SemantexDelimiterSize|
- \SemantexNoParentheses{
- a
- \SemantexDelimiterSize|
- b
- }
-}$
-\end{LTXexample}
-
\end{document} \ No newline at end of file