summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrlayer.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrlayer.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrlayer.dtx313
1 files changed, 252 insertions, 61 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrlayer.dtx b/Master/texmf-dist/source/latex/koma-script/scrlayer.dtx
index 86bedf742eb..0fc52a4e682 100644
--- a/Master/texmf-dist/source/latex/koma-script/scrlayer.dtx
+++ b/Master/texmf-dist/source/latex/koma-script/scrlayer.dtx
@@ -1,8 +1,8 @@
-% \CheckSum{3933}
+% \CheckSum{4042}
% \iffalse^^A meta-comment
% ======================================================================
% scrlayer.dtx
-% Copyright (c) Markus Kohm, 2012-2017
+% Copyright (c) Markus Kohm, 2012-2018
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
@@ -20,7 +20,7 @@
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrlayer.dtx
-% Copyright (c) Markus Kohm, 2012-2017
+% Copyright (c) Markus Kohm, 2012-2018
%
% Diese Datei ist Teil der LaTeX2e KOMA-Script-Sammlung.
%
@@ -57,7 +57,7 @@
% Right brace \} Tilde \~}
%
% \iffalse^^A meta-comment
-%%% From File: $Id: scrlayer.dtx 2684 2017-10-13 13:35:13Z kohm $
+%%% From File: $Id: scrlayer.dtx 3015 2018-09-03 10:51:32Z kohm $
%<identify>%%% (run: identify)
%<init>%%% (run: init)
%<options>%%% (run: options)
@@ -67,9 +67,9 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2017-10-13 15:35:13 +0200 (Fri, 13 Oct 2017) $
+ \filedate$Date: 2018-09-03 12:51:32 +0200 (Mon, 03 Sep 2018) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
- \filerevision$Revision: 2684 $
+ \filerevision$Revision: 3015 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrlayer.dtx}%
@@ -572,54 +572,10 @@
% \begin{macrocode}
%<*(package|class)&body>
\providecommand*{\@mkleft}{%
- \begingroup
- \ifx\@mkboth\markboth \aftergroup\markleft
- \else
- \ifx\@mkboth\@gobbletwo \aftergroup\@gobble
- \else \def\@gobbletwo##1##2{}%
- \ifx \@mkboth\@gobbletwo \aftergroup\@gobble
- \else
-%<class> \ClassWarning{\KOMAClassName}{%
-%<package> \PackageWarning{scrlayer}{%
- package incompatibility detected!\MessageBreak
- \string\@mkboth it neither \string\markboth nor any\MessageBreak
- kind of two arguments gobbling,\MessageBreak
- e.g., \string\@gobbletwo.\MessageBreak
- So I don't known, what to do\MessageBreak
- with \string\@mkleft.\MessageBreak
- Nevertheless, \string\markleft\space will be\MessageBreak
- used%
- }%
- \aftergroup\markleft
- \fi
- \fi
- \fi
- \endgroup
+ \IfActiveMkBoth{\markleft}{\@gobble}%
}%
\providecommand*{\@mkright}{%
- \begingroup
- \ifx\@mkboth\markboth \aftergroup\markright
- \else
- \ifx\@mkboth\@gobbletwo \aftergroup\@gobble
- \else \def\@gobbletwo##1##2{}%
- \ifx \@mkboth\@gobbletwo \aftergroup\@gobble
- \else
-%<class> \ClassWarning{\KOMAClassName}{%
-%<package> \PackageWarning{scrlayer}{%
- package incompatibility detected!\MessageBreak
- \string\@mkboth it neither \string\markboth nor any\MessageBreak
- kind of two arguments gobbling,\MessageBreak
- e.g., \string\@gobbletwo.\MessageBreak
- So I don't known, what to do\MessageBreak
- with \string\@mkright.\MessageBreak
- Nevertheless, \string\markright\space will be\MessageBreak
- used%
- }%
- \aftergroup\markright
- \fi
- \fi
- \fi
- \endgroup
+ \IfActiveMkBoth{\markright}{\@gobble}%
}%
\providecommand*{\@mkdouble}[1]{%
\@mkboth{#1}{#1}%
@@ -1411,6 +1367,44 @@
\csname @scr@l@\scr@current@layer @onesidetrue\endcsname
}
% \end{macrocode}
+% \changes{v3.26}{2018/07/14}{new attribute \texttt{beforecontents}}^^A
+% \item[\Option{beforecontents}:] code to be executed immediately before
+% setting the contents. See also modification attribute
+% \texttt{addbeforecontents}.
+% \begin{macrocode}
+\FamilyCSKey[.definelayer]{KOMAarg}{beforecontents}
+ {scr@l@\scr@current@layer @precontents@hook}
+% \end{macrocode}
+% \changes{v3.26}{2018/07/14}{new attribute \texttt{aftercontents}}^^A
+% \item[\Option{aftercontents}:] code to be executed immediately before
+% setting the contents. See also modification attribute
+% \texttt{addaftercontents}.
+% \begin{macrocode}
+\FamilyCSKey[.definelayer]{KOMAarg}{aftercontents}
+ {scr@l@\scr@current@layer @postcontents@hook}
+% \end{macrocode}
+% \changes{v3.26}{2018/07/14}{new attribute \texttt{artifact}}^^A
+% \item[\Option{artifact}:] reserved for tagging packages. The artifact can
+% either be a boolean or a general value. Boolean false will unset the
+% attribute. Boolean true is the same like empty. All other values will be
+% stored.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{artifact}[true]{%
+ \FamilySetBool{KOMAarg}{artifact}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \if@tempswa
+ \expandafter\let\csname scr@l@\scr@current@layer @artifact\endcsname
+ \@empty
+ \else
+ \expandafter\let\csname scr@l@\scr@current@layer @artifact\endcsname
+ \relax
+ \fi
+ \else
+ \FamilyKeyStateProcessed
+ \@namedef{scr@l@\scr@current@layer @artifact}{#1}%
+ \fi
+}
+% \end{macrocode}
% \end{description}
%
% Attribute modifications are attributes, that modify existing basic
@@ -1484,6 +1478,44 @@
\FamilyKeyStateProcessed
}
% \end{macrocode}
+% \changes{v3.26}{2018/07/14}{new attribute \texttt{addbeforecontents}}^^A
+% \item[\Option{addbeforecontents}:] code to be executed immediately before
+% setting the contents. The new code will be added before the old code.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{addbeforecontents}{%
+ \scr@ifundefinedorrelax{scr@l@\scr@current@layer @precontents@hook}{%
+ \expandafter\def
+ \csname scr@l@\scr@current@layer @precontents@hook\endcsname{#1}%
+ }{%
+ \expandafter\edef
+ \csname scr@l@\scr@current@layer @precontents@hook\endcsname{%
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname scr@l@\scr@current@layer @precontents@hook\endcsname}%
+ \unexpanded{#1}
+ }%
+ }%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \changes{v3.26}{2018/07/14}{new attribute \texttt{addaftercontents}}^^A
+% \item[\Option{addaftercontents}:] code to be executed immediately before
+% setting the contents. The new code will be added after the old code.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{addaftercontents}{%
+ \scr@ifundefinedorrelax{scr@l@\scr@current@layer @postcontents@hook}{%
+ \expandafter\def
+ \csname scr@l@\scr@current@layer @postcontents@hook\endcsname{#1}%
+ }{%
+ \expandafter\edef
+ \csname scr@l@\scr@current@layer @postcontents@hook\endcsname{%
+ \unexpanded{#1}%
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname scr@l@\scr@current@layer @postcontents@hook\endcsname}%
+ }%
+ }%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
% \end{description}
%
% Compounding attributes are attributes, that set up several basic attributes
@@ -1729,6 +1761,8 @@
\FamilyKeyStateProcessed
}
% \end{macrocode}
+% \changes{v3.26}{2018/07/14}{clone code for \texttt{precontents@hook},
+% \texttt{postcontents@hook} and \texttt{artifact} added}^^A
% \item[\texttt{clone=\meta{layer}}:] set up the new layer by the settings
% of the given \meta{layer}.
% \begin{macrocode}
@@ -1756,6 +1790,9 @@
\scrlayer@clone@switch{\scr@current@layer}{#1}{twoside}%
\scrlayer@clone@switch{\scr@current@layer}{#1}{floatpage}%
\scrlayer@clone@switch{\scr@current@layer}{#1}{nonfloatpage}%
+ \scrlayer@clone@attribute{\scr@current@layer}{#1}{precontents@hook}%
+ \scrlayer@clone@attribute{\scr@current@layer}{#1}{postcontents@hook}%
+ \scrlayer@clone@attribute{\scr@current@layer}{#1}{artifact}%
}%
}
% \end{macrocode}
@@ -1921,6 +1958,31 @@
% \end{macro}^^A \ProvideLayer
% \end{macro}^^A \DeclareNewLayer
%
+% \begin{macro}{\ModifyLayers}
+% \changes{v3.26}{2018/07/14}{new}^^A
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
+% Like \cs{ModifyLayer} but allows a list of layers instead of only one layer.
+% For the commands \cs{DeclareLayer}, \cs{ProvideLayer} and
+% \cs{RedeclareLayer} this does not make any sense, so there are not similar
+% list commands for these commands.
+% \begin{macrocode}
+%<*package&body>
+\newcommand{\ModifyLayers}[2][]{%
+ \edef\scr@current@layer{#2}%
+ \@for\scr@current@layer:=\scr@current@layer\do{%
+ \scr@trim@spaces\scr@current@layer
+ \ifx\scr@current@layer\@emtpy\else
+ \edef\scr@current@layer{%
+ \unexpanded{\ModifyLayer[{#1}]}{\scr@current@layer}%
+ }%
+ \scr@current@layer
+ \fi
+ }%
+ \let\scr@current@layer\@empty
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \ModifyLayers
%
% \begin{macro}{\GetLayerContents}
% \changes{v3.16}{2015/01/26}{new}
@@ -1942,6 +2004,8 @@
%
%
% \begin{macro}{\DestroyLayer}
+% \changes{v3.26}{2018/07/14}{destroy pre-contents hook, post-contents hook
+% and artifact}^^A
% \begin{description}
% \item[\Parameter{string}:] the name of the layer, that should be
% destroyed
@@ -1989,6 +2053,9 @@
\expandafter\let\csname if@scr@l@#1@nonfloatpage\endcsname\relax
\expandafter\let\csname @scr@l@#1@nonfloatpagefalse\endcsname\relax
\expandafter\let\csname @scr@l@#1@nonfloatpagetrue\endcsname\relax
+ \expandafter\let\csname scr@l@#1@precontents@hook\relax
+ \expandafter\let\csname scr@l@#1@postcontents@hook\relax
+ \expandafter\let\csname scr@l@#1@artifact\relax
}{%
%<*trace>
\PackageInfo{scrlayer}{\string\DestroyLayer{#1} ignored,\MessageBreak
@@ -2596,12 +2663,13 @@
}
% \end{macrocode}
% \begin{macro}{\scrlayer@declare@ps@by@layers}
-% \changes{v3.15}{2014/12/28}{fix: \cs{linewidth} replaced by
-% \cs{textwidth}}^^A
-% \changes{v3.18}{2015/06/09}{usage of \cs{parbox[b]} instead of
-% \cs{parbox[t]} because of strange effect with package
-% \textsf{multicol}}^^A
-% \changes{v3.24}{2017/05/22}{test for \cs{if@ps@singlespacing} added}^^A
+% \changes{v3.15}{2014/12/28}{fix: \cs{linewidth} replaced by
+% \cs{textwidth}}^^A
+% \changes{v3.18}{2015/06/09}{usage of \cs{parbox[b]} instead of
+% \cs{parbox[t]} because of strange effect with package
+% \textsf{multicol}}^^A
+% \changes{v3.24}{2017/05/22}{test for \cs{if@ps@singlespacing} added}^^A
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
% Needed, because of page style aliases. Same arguments like
% \cs{DeclarePageStyleByLayers} but, \#1 is the name of the page style, \#2 is
% the list of options and \#3 is still the list of layers.
@@ -2758,6 +2826,7 @@
}%
\@namedef{@ps@#1@layers}{}%
\@for \reserved@a:=#3\do {%
+ \scr@trim@spaces\reserved@a
\ifstr\reserved@a\@empty{}{%
\expandafter\@cons\csname @ps@#1@layers\endcsname{{\reserved@a}}%
}%
@@ -2847,6 +2916,7 @@
% \end{macro}^^A \ForEachLayerOfPageStyle
%
% \begin{macro}{\scrlayer@do@page@style@element@layer}
+% \changes{v3.26}{2018/07/14}{added hooks and artifact code}^^A
% Helper macro to show one layer. First argument is either ``background'' or
% ``foreground'', second argument is either ``odd'' or ``even'', and third
% argument is the name of the layer. Note, that in draft mode for every layer
@@ -2871,7 +2941,13 @@
(\csname scr@l@#3@w\endcsname,%
\csname scr@l@#3@h\endcsname)%
[\csname scr@l@#3@align\endcsname]%
- {\layercontentsmeasure}%
+ {%
+ \scrlayer@predraftmeasure@hook
+ \scrlayer@beginartifact{}%
+ \layercontentsmeasure
+ \scrlayer@endartifact{}%
+ \scrlayer@postdraftmeasure@hook
+ }%
\fi
\scr@layerbox(\csname scr@l@#3@x\endcsname,%
\csname scr@l@#3@y\endcsname)%
@@ -2879,8 +2955,26 @@
\csname scr@l@#3@h\endcsname)%
[\csname scr@l@#3@align\endcsname]%
{\csname layer\csname scr@l@#3@mode\endcsname
- mode\expandafter\endcsname
- \csname scr@l@#3@contents\endcsname}%
+ mode\expandafter\endcsname{%
+ \csname scr@l@#3@precontents@hook\endcsname
+ \scr@ifundefinedorrelax{scr@l@#3@artifact}{}{%
+ \expandafter\expandafter\expandafter
+ \scrlayer@beginartifact
+ \expandafter\expandafter\expandafter{%
+ \csname scr@l@#3@artifact\endcsname
+ }%
+ \csname scr@l@#3@contents\endcsname
+ \expandafter\expandafter\expandafter
+ \scrlayer@endartifact
+ \expandafter\expandafter\expandafter{%
+ \csname scr@l@#3@artifact\endcsname
+ }%
+ }{%
+ \csname scr@l@#3@contents\endcsname
+ }%
+ \csname scr@l@#3@postcontents@hook\endcsname
+ }%
+ }%
\fi
\fi
\fi
@@ -2888,6 +2982,42 @@
\endgroup
}
% \end{macrocode}
+% \begin{macro}{\scrlayer@predraftmeasure@hook}
+% \changes{v3.26}{2018/07/14}{new (internal)}^^A
+% The hooks that will be executed before setting the draft measuring.
+% \begin{macrocode}
+\newcommand*{\scrlayer@predraftmeasure@hook}{}
+% \end{macrocode}
+% \begin{macro}{\BeforeDraftMeasuringLayer}
+% \changes{v3.26}{2018/07/14}{new}^^A
+% New code will be added in front of the hook.
+% \begin{macrocode}
+\newcommand*{\BeforeDraftMeasuringLayer}[1]{%
+ \edef\scrlayer@predraftmeasure@hook{%
+ \unexpanded{#1}\unexpanded\expandafter{\scrlayer@predraftmeasure@hook}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \BeforeDraftMeasuringLayer
+% \end{macro}^^A \scrlayer@predraftmeasure@hook
+% \begin{macro}{\scrlayer@postdraftmeasure@hook}
+% \changes{v3.26}{2018/07/14}{new (internal)}^^A
+% The hook that will be executed after setting the draft measuring.
+% \begin{macrocode}
+\newcommand*{\scrlayer@postdraftmeasure@hook}{}
+% \end{macrocode}
+% \begin{macro}{\AfterDraftMeasuringLayer}
+% \changes{v3.26}{2018/07/14}{new}^^A
+% New code will be added at the end of the hook.
+% \begin{macrocode}
+\newcommand*{\AfterDraftMeasuringLayer}[1]{%
+ \expandafter\def\expandafter\scrlayer@postdraftmeasure@hook\expandafter{%
+ \scrlayer@postdraftmeasure@hook #1%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \AfterDraftMeasuringLayer
+% \end{macro}^^A \scrlayer@postdraftmeasure@hook
% \begin{macro}{\scr@layerbox}
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
% \cs{kernel@ifnextchar}}^^A
@@ -3145,9 +3275,11 @@
% \end{macrocode}
%
% \begin{macro}{\AddLayersToPageStyle}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
% \begin{macro}{\AddLayersAtBeginOfPageStyle}
% \begin{macro}{\AddLayersAtEndOfPageStyle}
% \begin{macro}{\RemoveLayersFromPageStyle}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
% \begin{description}
% \item[\Parameter{string}:] the name of the page style to be modified (must
% be expandable and result in a string).
@@ -3174,6 +3306,7 @@
\edef\reserved@b{\GetRealPageStyle{#1}}%
\IfLayerPageStyleExists{\reserved@b}{%
\@for \reserved@a:=#2\do {%
+ \scr@trim@spaces\reserved@a
\ifstr\reserved@a\@empty{}{%
\expandafter\@cons\csname @ps@\reserved@b @layers\endcsname
{{\reserved@a}}%
@@ -3207,6 +3340,7 @@
\edef\reserved@b{\GetRealPageStyle{#1}}%
\IfLayerPageStyleExists{#1}{%
\@for \reserved@a:=#2\do {%
+ \scr@trim@spaces\reserved@a
\ifstr\reserved@a\@empty{}{%
\expandafter\remove@layer@from@page@style\expandafter{\reserved@a}%
{\reserved@b}%
@@ -3268,7 +3402,9 @@
% \end{macro}^^A \AddLayersToPageStyle
%
% \begin{macro}{\AddLayersToPageStyleBeforeLayer}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
% \begin{macro}{\AddLayersToPageStyleAfterLayer}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
% \begin{description}
% \item[\Parameter{string}:] the name of the page style to be modified (must
% be expandable and result in a string).
@@ -3296,6 +3432,7 @@
\expandafter\@cons\csname @ps@\reserved@b @layers\endcsname{{##1}}%
\ifstr{##1}{#3}{%
\@for \reserved@a:=#2\do {%
+ \scr@trim@spaces\reserved@a
\ifstr\reserved@a\@empty{}{%
\expandafter\@cons\csname @ps@\reserved@b @layers\endcsname
{{\reserved@a}}%
@@ -3321,6 +3458,7 @@
\ifstr{##1}\@empty{}{%
\ifstr{##1}{#3}{%
\@for \reserved@a:=#2\do {%
+ \scr@trim@spaces\reserved@a
\ifstr\reserved@a\@empty{}{%
\expandafter\@cons\csname @ps@\reserved@b @layers\endcsname
{{\reserved@a}}%
@@ -3457,6 +3595,55 @@
% \end{macro}^^A \AddToLayerPageStyleOptions
% \end{macro}^^A \ModifyLayerPageStyleOptions
%
+% \begin{macro}{\scrlayer@beginartifact}
+% \changes{v3.26}{2018/07/14}{new (semi internal)}^^A
+% \begin{macro}{\scrlayer@endartifact}
+% \changes{v3.26}{2018/07/14}{new (semi internal)}^^A
+% These macros are reserved for tagging packages. The first one is executed
+% after the initial contents hook, the last one is executed after the final
+% contents hook. Both executions are done only, if the \texttt{artifact}
+% option of the layer has been used an was not boolean false. With boolean
+% true the argument will be empty. All other values will be passed as
+% argument.
+%
+% In case of package \textsf{tagpdf} the following definition would be
+% usefull (here automatically done after loading the package, if the package
+% does not do its own definitions):
+% \begin{macrocode}
+%<*package&body>
+\RequirePackage{scrlfile}
+\BeforePackage{tagpdf}{%
+% \end{macrocode}
+% Deactivation of the two commands before loading \textsf{tagpdf}, so that
+% after loading the package \cs{providecommand} can be used to do a new
+% default definition.
+% \begin{macrocode}
+ \let\scrlayer@beginartifact\relax
+ \let\scrlayer@endartifact\relax
+}
+\AfterPackage*{tagpdf}{%
+ \providecommand*{\scrlayer@beginartifact}[1]{%
+ \ifstr{#1}{}{%
+ \tagmcbegin{artifact}%
+ }{%
+ \tagmcbegin{artifact=#1}%
+ }%
+ }%
+ \providecommand*{\scrlayer@endartifact}[1]{%
+ \tagmcend
+ }%
+}
+% \end{macrocode}
+% But the default definition (if \textsf{tagpdf} has not already been loaded)
+% are simple dummies:
+% \begin{macrocode}
+\providecommand*{\scrlayer@beginartifact}[1]{}
+\providecommand*{\scrlayer@endartifact}[1]{}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \scrlayer@endartifact
+% \end{macro}^^A \scrlayer@beginartifact
+%
% \begin{macro}{\DeclarePageStyleAlias}
% \begin{macro}{\DeclareNewPageStyleAlias}
% \begin{macro}{\ProvidePageStyleAlias}
@@ -3621,7 +3808,9 @@
% \end{macro}^^A \IfLayerPageStyleExists
%
% \begin{macro}{\IfLayerAtPageStyle}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
% \begin{macro}{\IfSomeLayersAtPageStyle}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
% \begin{macro}{\IfLayersAtPageStyle}
% \begin{description}
% \item[\Parameter{string}:] the name of the page style to be tested (must
@@ -3678,6 +3867,7 @@
\begingroup
\@tempswafalse
\@for \reserved@a:=#2\do {%
+ \scr@trim@spaces\reserved@a
\edef\reserved@a{\noexpand\IfLayerAtPageStyle{#1}{\reserved@a}}%
\reserved@a{\@tempswatrue}{}%
}%
@@ -3699,6 +3889,7 @@
\fi
}{%
\@for \reserved@a:=#2\do {%
+ \scr@trim@spaces\reserved@a
\edef\reserved@a{\noexpand\IfLayerAtPageStyle{#1}{\reserved@a}}%
\reserved@a{}{\@tempswafalse}%
}%