You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2294 lines
82 KiB
2294 lines
82 KiB
%%
|
|
%% This is file `scrlayer.sty',
|
|
%% generated with the docstrip utility, extended by scrdocstrip.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% scrlayer.dtx (with options: `package,trace,scrlayer,identify')
|
|
%% scrlayer.dtx (with options: `package,trace,scrlayer,init')
|
|
%% scrlayer.dtx (with options: `package,trace,scrlayer,options')
|
|
%% scrlayer.dtx (with options: `package,trace,scrlayer,body')
|
|
%% scrlayer.dtx (with options: `package,trace,scrlayer,final')
|
|
%% scrlogo.dtx (with options: `logo')
|
|
%%
|
|
%% Copyright (c) 2012-2019 Markus Kohm [komascript at gmx info]
|
|
%%
|
|
%% This file was generated from file(s) of the KOMA-Script bundle.
|
|
%% ---------------------------------------------------------------
|
|
%%
|
|
%% It may be distributed under the conditions of the
|
|
%% LaTeX Project Public License in the version distributed together
|
|
%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'.
|
|
%%
|
|
%% This file may only be distributed together with a copy of the
|
|
%% KOMA-Script bundle. You may however distribute the
|
|
%% KOMA-Script bundle without all such generated files. See also
|
|
%% `lppl.txt' or `lppl-de.txt' for additional information.
|
|
%%
|
|
%% The list of files belonging to KOMA-Script distribution is given in
|
|
%% the file `manifest.txt'. See also `lppl.txt' or `lppl-de.txt' for
|
|
%% additional information.
|
|
%%
|
|
%% If this file is a beta version, you may not be allowed to distribute
|
|
%% it. Look at the comments below to see if this is the case.
|
|
%%
|
|
%% English and German manuals are part of KOMA-Script bundle.
|
|
%% ----------------------------------------------------------
|
|
%%
|
|
%% See `README'.
|
|
%%
|
|
%% The KOMA-Script bundle (but maybe not this file) was based upon the
|
|
%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
|
|
%% standard classes created by The LaTeX3 Project 1994-1996. You can
|
|
%% find a complete unmodified copy of LaTeX2e at
|
|
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
|
|
%%
|
|
%%% From File: $Id: scrlayer.dtx 3411 2019-11-28 09:11:27Z kohm $
|
|
%%% (run: identify)
|
|
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
|
\ProvidesPackage{scrlayer}[%
|
|
2020/07/22 v3.31 KOMA-Script
|
|
package
|
|
(defining layers and page styles)]
|
|
%%% From File: $Id: scrlayer.dtx 3411 2019-11-28 09:11:27Z kohm $
|
|
%%% (run: init)
|
|
\RequirePackage{scrkbase}[2013/03/05]
|
|
\scr@ifundefinedorrelax{scrlayer@AtEndOfPackage}{%
|
|
\AtEndOfPackage{\let\scrlayer@AtEndOfPackage\@firstofone}%
|
|
}{%
|
|
\ifx\scrlayer@AtEndOfPackage\@firstofone
|
|
\AtEndOfPackage{\let\scrlayer@AtEndOfPackage\@firstofone}%
|
|
\fi
|
|
}
|
|
\let\scrlayer@AtEndOfPackage\AtEndOfPackage
|
|
\newcommand*{\scrlayer@testunexpectedarg}[2]{%
|
|
\ifx\relax#2\relax\else
|
|
\PackageError{scrlayer}{unexpected value to `#1'}{%
|
|
Option `#1' doesn't expect any value.\MessageBreak
|
|
If you'll continue, the value `#2' will be ignored.%
|
|
}%
|
|
\fi
|
|
}
|
|
\scr@ifundefinedorrelax{if@chapter}{%
|
|
\newif\if@chapter
|
|
\scr@ifundefinedorrelax{chapter}{\@chapterfalse}{\@chaptertrue}%
|
|
}{}
|
|
\scr@ifundefinedorrelax{if@mainmatter}{%
|
|
\scr@ifundefinedorrelax{mainmatter}{%
|
|
\newif\if@mainmatter\@mainmattertrue
|
|
}{%
|
|
\PackageWarningNoLine{scrlayer}{%
|
|
\string\mainmatter\space defined without
|
|
\string\if@mainmatter!\MessageBreak
|
|
Note, that several packages need
|
|
\string\if@mainmatter\space\MessageBreak
|
|
to detect whether or no the main matter has been\MessageBreak
|
|
entered. So does scrlayer. Because of this\MessageBreak
|
|
it will extend \string\mainmatter, now%
|
|
}%
|
|
\newif\if@mainmatter\@mainmattertrue
|
|
\expandafter\def\expandafter\mainmatter\expandafter{%
|
|
\expandafter\@mainmattertrue\mainmatter}%
|
|
\scr@ifundefinedorrelax{frontmatter}{}{%
|
|
\expandafter\def\expandafter\frontmatter\expandafter{%
|
|
\expandafter\@mainmatterfalse\frontmatter}
|
|
}%
|
|
\scr@ifundefinedorrelax{backmatter}{}{%
|
|
\expandafter\def\expandafter\backmatter{%
|
|
\expandafter\@mainmatterfalse\backmattter}%
|
|
}%
|
|
}%
|
|
}{}
|
|
\@ifundefined{footheight}{%
|
|
\newlength{\footheight}%
|
|
\setlength{\footheight}{-12345sp}%
|
|
}{%
|
|
\PackageInfo{scrlayer}{Using already defined \string\footheight\MessageBreak
|
|
hoping, that this is a length and\MessageBreak
|
|
not only a macro}%
|
|
}
|
|
\AtBeginDocument{%
|
|
\ifdim\footheight=-12345sp
|
|
\PackageInfo{scrlayer}{Setting magic \string\footheight\space to
|
|
\string\baselineskip\space while\MessageBreak
|
|
\string\begin{document}}%
|
|
\setlength{\footheight}{\baselineskip}
|
|
\fi
|
|
}
|
|
%%% From File: $Id: scrlayer.dtx 3411 2019-11-28 09:11:27Z kohm $
|
|
%%% (run: options)
|
|
\KOMA@key{markcase}{%
|
|
\begingroup
|
|
\KOMA@set@ncmdkey{markcase}{reserved@a}{%
|
|
{upper}{0},{lower}{1},{used}{2},%
|
|
{ignoreuppercase}{3},{nouppercase}{3},%
|
|
{ignoreupper}{3},{noupper}{3}%
|
|
}{#1}%
|
|
\ifx\FamilyKeyState\FamilyKeyStateProcessed
|
|
\aftergroup\FamilyKeyStateProcessed
|
|
\ifnum \reserved@a>\m@ne
|
|
\aftergroup\let\aftergroup\MakeMarkcase
|
|
\ifcase \reserved@a
|
|
\aftergroup\MakeUppercase
|
|
\aftergroup\scrlayer@forceignoreuppercasefalse
|
|
\or
|
|
\aftergroup\MakeLowercase
|
|
\aftergroup\scrlayer@forceignoreuppercasefalse
|
|
\or
|
|
\aftergroup\@firstofone
|
|
\aftergroup\scrlayer@forceignoreuppercasefalse
|
|
\else
|
|
\aftergroup\scrlayer@ignoreuppercase
|
|
\aftergroup\scrlayer@forceignoreuppercasetrue
|
|
\fi
|
|
\fi
|
|
\else
|
|
\aftergroup\FamilyKeyStateUnknownValue
|
|
\fi
|
|
\endgroup
|
|
\ifx\FamilyKeyState\FamilyKeyStateProcessed
|
|
\KOMA@kav@removekey{.scrlayer.sty}{markcase}%
|
|
\KOMA@kav@xadd{.scrlayer.sty}{markcase}{#1}%
|
|
\fi
|
|
}
|
|
\@ifundefined{MakeMarkcase}{\let\MakeMarkcase\@firstofone}{}
|
|
\ifx\MakeMarkcase\@firstofone
|
|
\KOMA@kav@replacevalue{.scrlayer.sty}{markcase}{used}%
|
|
\else\ifx\MakeMarkcase\MakeUppercase
|
|
\KOMA@kav@replacevalue{.scrlayer.sty}{markcase}{upper}%
|
|
\else\ifx\MakeMarkcase\MakeLowercase
|
|
\KOMA@kav@replacevalue{.scrlayer.sty}{markcase}{lower}%
|
|
\else\ifx\MakeMarkcase\scr@ignoreuppercase
|
|
\KOMA@kav@replacevalue{.scrlayer.sty}{markcase}{ignoreuppercase}%
|
|
\fi\fi\fi\fi
|
|
\DeclareRobustCommand*{\scrlayer@ignoreuppercase}[1]{%
|
|
\begingroup
|
|
\let\uppercase\@firstofone
|
|
\let\MakeUppercase\@firstofone
|
|
\expandafter\let\csname MakeUppercase \endcsname\@firstofone
|
|
#1%
|
|
\endgroup
|
|
}
|
|
\newif\ifscrlayer@forceignoreuppercase
|
|
\KOMA@ifkey{autooneside}{scrlayer@autooneside}\scrlayer@autoonesidetrue
|
|
\KOMA@kav@replacebool{.scrlayer.sty}{autooneside}{scrlayer@autooneside}
|
|
\KOMA@key{automark}[]{%
|
|
\scrlayer@testunexpectedarg{automark}{#1}%
|
|
\scrlayer@AtEndOfPackage{%
|
|
\if@chapter
|
|
\scr@ifundefinedorrelax{section}{%
|
|
\automark{chapter}%
|
|
}{%
|
|
\automark[section]{chapter}%
|
|
}%
|
|
\else
|
|
\scr@ifundefinedorrelax{section}{%
|
|
\automark{}%
|
|
}{%
|
|
\scr@ifundefinedorrelax{subsection}{%
|
|
\automark{section}%
|
|
}{%
|
|
\automark[subsection]{section}%
|
|
}
|
|
}%
|
|
\fi
|
|
}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@removekey{.scrlayer.sty}{automark}%
|
|
\KOMA@kav@removekey{.scrlayer.sty}{manualmark}%
|
|
\KOMA@kav@add{.scrlayer.sty}{automark}{}%
|
|
}
|
|
\KOMA@key{manualmark}[]{%
|
|
\scrlayer@testunexpectedarg{manualmark}{#1}%
|
|
\scrlayer@AtEndOfPackage{\manualmark}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@removekey{.scrlayer.sty}{automark}%
|
|
\KOMA@kav@removekey{.scrlayer.sty}{manualmark}%
|
|
\KOMA@kav@add{.scrlayer.sty}{manualmark}{}%
|
|
}
|
|
\KOMA@key{onpsselect}{%
|
|
\l@addto@macro{\@ps@initialhook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsselect}{#1}%
|
|
}
|
|
\newcommand*{\@ps@initialhook}{}
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsselect}{}
|
|
\KOMA@key{onpsinit}{%
|
|
\l@addto@macro{\@ps@hook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsinit}{#1}%
|
|
}
|
|
\newcommand*{\@ps@hook}{}
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsinit}{}
|
|
\KOMA@key{onpsoneside}{%
|
|
\l@addto@macro{\@ps@onesidehook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsoneside}{#1}%
|
|
}
|
|
\newcommand*{\@ps@onesidehook}{}
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsoneside}{}
|
|
\KOMA@key{onpstwoside}{%
|
|
\l@addto@macro{\@ps@twosidehook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpstwoside}{#1}%
|
|
}
|
|
\newcommand*{\@ps@twosidehook}{}
|
|
\KOMA@kav@add{.scrlayer.sty}{onpstwoside}{}
|
|
\KOMA@key{onpsoddpage}{%
|
|
\l@addto@macro{\@ps@oddpagehook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsoddpage}{#1}%
|
|
}
|
|
\newcommand*{\@ps@oddpagehook}{}
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsoddpage}{}
|
|
\KOMA@key{onpsevenpage}{%
|
|
\l@addto@macro{\@ps@evenpagehook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsevenpage}{#1}%
|
|
}
|
|
\newcommand*{\@ps@evenpagehook}{}
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsevenpage}{}
|
|
\KOMA@key{onpsfloatpage}{%
|
|
\l@addto@macro{\@ps@floatpagehook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsfloatpage}{#1}%
|
|
}
|
|
\newcommand*{\@ps@floatpagehook}{}
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsfloatpage}{}
|
|
\KOMA@key{onpsnonfloatpage}{%
|
|
\l@addto@macro{\@ps@nonfloatpagehook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsnonfloatpage}{#1}%
|
|
}
|
|
\newcommand*{\@ps@nonfloatpagehook}{}
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsnonfloatpage}{}
|
|
\KOMA@key{onpsbackground}{%
|
|
\l@addto@macro{\@ps@backgroundhook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsbackground}{#1}%
|
|
}
|
|
\newcommand*{\@ps@backgroundhook}{}
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsbackground}{}
|
|
\KOMA@key{onpsforeground}{%
|
|
\l@addto@macro{\@ps@foregroundhook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsforeground}{#1}%
|
|
}
|
|
\newcommand*{\@ps@foregroundhook}{}
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsforeground}{}
|
|
\KOMA@ifkey{singlespacing}{@ps@singlespacing}
|
|
\KOMA@ifkey{deactivatepagestylelayers}{scrlayer@deactivate@layers}
|
|
\KOMA@ifkey{draft}{scrlayer@draft}
|
|
\KOMA@ifkey{forceoverwrite}{scrlayer@forceoverwrite}
|
|
\KOMA@ifkey{autoremoveinterfaces}{scrlayer@autoremoveinterfaces}
|
|
%%% From File: $Id: scrlayer.dtx 3411 2019-11-28 09:11:27Z kohm $
|
|
%%% (run: body)
|
|
\KOMAProcessOptions\relax
|
|
\newcommand*{\rightfirstmark}{\expandafter\@rightmark\firstmark\@empty\@empty}
|
|
\newcommand*{\rightbotmark}{\expandafter\@rightmark\botmark\@empty\@empty}
|
|
\newcommand*{\righttopmark}{\expandafter\@rightmark\topmark\@empty\@empty}
|
|
\newcommand*{\leftfirstmark}{\expandafter\@leftmark\firstmark\@empty\@empty}
|
|
\newcommand*{\leftbotmark}{\expandafter\@leftmark\botmark\@empty\@empty}
|
|
\newcommand*{\lefttopmark}{\expandafter\@leftmark\topmark\@empty\@empty}
|
|
\@ifundefined{headmark}{}{%
|
|
\PackageWarningNoLine{scrlayer}{%
|
|
\string\headmark\space detected!\MessageBreak
|
|
\string\headmark\space will either be set to
|
|
\string\rightmark\MessageBreak
|
|
or \string\leftmark inside of page styles.\MessageBreak
|
|
This means, that \string\headmark\space will be overwritten\MessageBreak
|
|
at every page layer usage!\MessageBreak
|
|
Nevertheless it will stay unchanged outside\MessageBreak
|
|
of page layers.\MessageBreak
|
|
I hope, this won't break your document%
|
|
}%
|
|
}
|
|
\@ifundefined{pagemark}{%
|
|
\DeclareRobustCommand\pagemark{{\pnumfont{\thepage}}}%
|
|
}{}%
|
|
\@ifundefined{pnumfont}{%
|
|
\newcommand{\pnumfont}{\normalfont}%
|
|
}{}
|
|
\@ifundefined{scr@fnt@pagenumber}{%
|
|
\newcommand{\scr@fnt@pagenumber}{\pnumfont}%
|
|
}{}
|
|
\providecommand*{\partmarkformat}{\partname\ \thepart. \ }%
|
|
\if@chapter
|
|
\providecommand*{\@chapapp}{\chaptername}%
|
|
\providecommand*{\chaptermarkformat}{\@chapapp\ \thechapter. \ }%
|
|
\providecommand*{\sectionmarkformat}{\thesection. \ }%
|
|
\else
|
|
\providecommand*{\sectionmarkformat}{\GenericMarkFormat{section}}%
|
|
\fi
|
|
\scr@ifundefinedorrelax{@seccntmarkformat}{%
|
|
\providecommand*{\GenericMarkFormat}{\@seccntformat}%
|
|
}{%
|
|
\providecommand*{\GenericMarkFormat}[1]{\@seccntmarkformat{#1}}%
|
|
}
|
|
\providecommand*{\@mkleft}{%
|
|
\IfActiveMkBoth{\markleft}{\@gobble}%
|
|
}%
|
|
\providecommand*{\@mkright}{%
|
|
\IfActiveMkBoth{\markright}{\@gobble}%
|
|
}%
|
|
\providecommand{\@mkdouble}[1]{%
|
|
\@mkboth{#1}{#1}%
|
|
}
|
|
\@ifundefined{markleft}{%
|
|
\DeclareRobustCommand{\markleft}[1]{%
|
|
\begingroup
|
|
\let\label\relax \let\index\relax \let\glossary\relax
|
|
\expandafter\@markleft\@themark {#1}%
|
|
\@temptokena \expandafter{\@themark}%
|
|
\mark{\the\@temptokena}%
|
|
\endgroup
|
|
\if@nobreak\ifvmode\nobreak\fi\fi
|
|
}%
|
|
\providecommand{\@markleft}[3]{%
|
|
\@temptokena {#2}%
|
|
\unrestored@protected@xdef\@themark{{#3}{\the\@temptokena}}%
|
|
}%
|
|
}{}
|
|
\providecommand{\markdouble}[1]{\markboth{#1}{#1}}
|
|
\newcommand*{\manualmark}{%
|
|
\begingroup
|
|
\def\@elt##1{%
|
|
\aftergroup\let\expandafter\aftergroup\csname ##1mark\endcsname
|
|
\aftergroup\@gobble
|
|
}%
|
|
\scrlayer@level@list
|
|
\endgroup
|
|
\let\@mkleft\@gobble
|
|
\let\@mkright\@gobble
|
|
\let\@mkdouble\@gobble
|
|
\let\@mkboth\@gobbletwo
|
|
}
|
|
\newcommand*{\automark}{%
|
|
\kernel@ifstar{\@automark}{\manualmark\@automark}%
|
|
}
|
|
\newcommand*{\@automark}[2][]{%
|
|
\Ifstr{#2}{}{%
|
|
\Ifstr{#1}{}{%
|
|
\automark@basics
|
|
}{%
|
|
\automark@basics
|
|
\automark@righthigh{#1}%
|
|
}%
|
|
}{%
|
|
\Ifstr{#1}{}{%
|
|
\automark@basics
|
|
\automark@leftlow{#2}%
|
|
}{%
|
|
\automark@basics
|
|
\automark@both{#1}{#2}%
|
|
}%
|
|
}%
|
|
}
|
|
\newcommand*{\automark@basics}{%
|
|
\let\@mkleft\markleft
|
|
\let\@mkright\markright
|
|
\let\@mkboth\markboth
|
|
\def\@mkdouble##1{\@mkboth{##1}{##1}}%
|
|
}
|
|
\newcommand*{\automark@righthigh}[1]{%
|
|
\ifscrlayer@level@prepared{#1}{%
|
|
\expandafter\def\csname #1mark\endcsname##1{%
|
|
\begingroup
|
|
\@tempswafalse
|
|
\if@twoside\@tempswatrue
|
|
\else\ifscrlayer@autooneside\else\@tempswatrue\fi\fi
|
|
\expandafter\endgroup
|
|
\if@tempswa
|
|
\@mkright{%
|
|
\MakeMarkcase{%
|
|
\ifnum \c@secnumdepth<\numexpr \csname #1numdepth\endcsname +0\relax
|
|
\else\if@mainmatter \csname #1markformat\endcsname\fi\fi
|
|
##1%
|
|
}%
|
|
}%
|
|
\fi
|
|
}%
|
|
}{}%
|
|
}
|
|
\newcommand*{\automark@leftlow}[1]{%
|
|
\ifscrlayer@level@prepared{#1}{%
|
|
\expandafter\def\csname #1mark\endcsname ##1{%
|
|
\if@twoside
|
|
\expandafter\@mkboth
|
|
\else
|
|
\expandafter\@mkdouble
|
|
\fi
|
|
{%
|
|
\MakeMarkcase{%
|
|
\ifnum \c@secnumdepth<\numexpr \csname #1numdepth\endcsname +0\relax
|
|
\else\if@mainmatter \csname #1markformat\endcsname\fi\fi
|
|
##1%
|
|
}%
|
|
}{}%
|
|
}%
|
|
}{}%
|
|
}
|
|
\newcommand*{\automark@both}[2]{%
|
|
\ifscrlayer@level@prepared{#1}{%
|
|
\ifscrlayer@level@prepared{#2}{%
|
|
\ifnum \numexpr \csname #1numdepth\endcsname +0\relax
|
|
> \numexpr \csname #2numdepth\endcsname +0\relax
|
|
\automark@leftlow{#2}%
|
|
\automark@righthigh{#1}%
|
|
\else \ifnum \numexpr \csname #1numdepth\endcsname +0\relax
|
|
= \numexpr \csname #2numdepth\endcsname +0\relax
|
|
\expandafter\def\csname #2mark\endcsname##1{%
|
|
\@mkdouble{%
|
|
\MakeMarkcase{%
|
|
\ifnum \c@secnumdepth<\numexpr
|
|
\csname #2numdepth\endcsname +0\relax
|
|
\else
|
|
\if@mainmatter \csname #2markformat\endcsname\fi
|
|
\fi
|
|
##1%
|
|
}%
|
|
}%
|
|
}%
|
|
\else
|
|
\expandafter\def\csname #1mark\endcsname##1{%
|
|
\begingroup
|
|
\@tempswafalse
|
|
\if@twoside\@tempswatrue
|
|
\else\ifscrlayer@autooneside\else\@tempswatrue\fi\fi
|
|
\expandafter\endgroup
|
|
\if@tempswa
|
|
\@mkleft{%
|
|
\MakeMarkcase{%
|
|
\ifnum \c@secnumdepth
|
|
< \numexpr\csname #1numdepth\endcsname +0\relax
|
|
\else
|
|
\if@mainmatter \csname #1markformat\endcsname\fi
|
|
\fi
|
|
##1%
|
|
}%
|
|
}%
|
|
\fi
|
|
}%
|
|
\expandafter\def\csname #2mark\endcsname##1{%
|
|
\@mkboth{}{%
|
|
\MakeMarkcase{%
|
|
\ifnum \c@secnumdepth
|
|
< \numexpr \csname #2numdepth\endcsname +0\relax
|
|
\else\if@mainmatter \csname #2markformat\endcsname\fi\fi
|
|
##1%
|
|
}%
|
|
}%
|
|
}%
|
|
\fi
|
|
\fi
|
|
}{}%
|
|
}{}%
|
|
}
|
|
\newcommand*{\ifscrlayer@level@prepared}[1]{%
|
|
\typeout{1: \detokenize{#1}}%
|
|
\scr@ifundefinedorrelax{#1numdepth}{%
|
|
\PackageError{scrlayer}{numbering depth of `#1' unknown}{%
|
|
Someone told me to use a section mark for level `#1',\MessageBreak
|
|
but the numbering depth hasn't been declared before. You may solve this
|
|
using\MessageBreak
|
|
\string\DeclareSectionNumberDepth{#1}{NUMBER}.%
|
|
}%
|
|
\@secondoftwo
|
|
}{%
|
|
\@firstoftwo
|
|
}%
|
|
}
|
|
\newcommand*{\DeclareSectionNumberDepth}[2]{%
|
|
\expandafter\edef\csname #1numdepth\endcsname{\the\numexpr #2\relax}%
|
|
\@ifundefined{#1mark}{%
|
|
\expandafter\let\csname #1mark\endcsname\@gobble
|
|
}{}%
|
|
\@ifundefined{#1markformat}{%
|
|
\@namedef{#1markformat}{\GenericMarkFormat{#1}}%
|
|
}{}%
|
|
\begingroup
|
|
\@tempswatrue
|
|
\def\@elt##1{\Ifstr{#1}{##1}{\@tempswafalse}{}}%
|
|
\scrlayer@level@list
|
|
\if@tempswa
|
|
\aftergroup\@firstofone
|
|
\else
|
|
\aftergroup\@gobble
|
|
\fi
|
|
\endgroup
|
|
{%
|
|
\l@addto@macro\scrlayer@level@list{\@elt{#1}}%
|
|
}%
|
|
}
|
|
\newcommand*{\scrlayer@level@list}{}
|
|
\scr@ifundefinedorrelax{part}{}{%
|
|
\DeclareSectionNumberDepth{part}{-1}%
|
|
}
|
|
\if@chapter
|
|
\DeclareSectionNumberDepth{chapter}{0}%
|
|
\fi
|
|
\newcommand*{\scrlayer@level@init}{%
|
|
\@tempcnta=1
|
|
\def\reserved@b##1{%
|
|
\@tempswatrue
|
|
\def\reserved@a{##1}%
|
|
\@whilesw \if@tempswa \fi {%
|
|
\scr@ifundefinedorrelax{\reserved@a}{%
|
|
\@tempswafalse
|
|
}{%
|
|
\@ifundefined{\reserved@a numdepth}{%
|
|
\expandafter\DeclareSectionNumberDepth
|
|
\expandafter{\reserved@a}{\@tempcnta}%
|
|
}{%
|
|
\expandafter\DeclareSectionNumberDepth
|
|
\expandafter{\reserved@a}{\csname \reserved@a numdepth\endcsname}%
|
|
}%
|
|
\advance \@tempcnta by \@ne
|
|
\edef\reserved@a{sub\reserved@a}%
|
|
}%
|
|
}%
|
|
}%
|
|
\reserved@b{section}%
|
|
\reserved@b{paragraph}%
|
|
\reserved@b{minisec}%
|
|
}
|
|
\scrlayer@level@init
|
|
\AtBeginDocument{%
|
|
\scrlayer@level@init
|
|
}
|
|
\DefineFamily{KOMAarg}
|
|
\DefineFamilyMember[.definelayer]{KOMAarg}
|
|
\newcommand*{\def@scr@l@pos}[4]{%
|
|
\@namedef{scr@l@\scr@current@layer @x}{#1}%
|
|
\@namedef{scr@l@\scr@current@layer @y}{#2}%
|
|
\@namedef{scr@l@\scr@current@layer @w}{#3}%
|
|
\@namedef{scr@l@\scr@current@layer @h}{#4}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{mode}{%
|
|
\scr@ifundefinedorrelax{layer#1mode}{\FamilyKeyStateUnknownValue}{%
|
|
\@namedef{scr@l@\scr@current@layer @mode}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{hoffset}{%
|
|
\@namedef{scr@l@\scr@current@layer @x}{\dimexpr #1\relax}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{voffset}{%
|
|
\@namedef{scr@l@\scr@current@layer @y}{\dimexpr #1\relax}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{width}{%
|
|
\@namedef{scr@l@\scr@current@layer @w}{\dimexpr #1\relax}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{height}{%
|
|
\@namedef{scr@l@\scr@current@layer @h}{\dimexpr #1\relax}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{align}{%
|
|
\@namedef{scr@l@\scr@current@layer @align}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{contents}{%
|
|
\long\@namedef{scr@l@\scr@current@layer @contents}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{background}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{background}{#1}%
|
|
\csname @scr@l@\scr@current@layer @backgroundtrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @foregroundfalse\endcsname
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{foreground}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{foreground}{#1}%
|
|
\csname @scr@l@\scr@current@layer @backgroundfalse\endcsname
|
|
\csname @scr@l@\scr@current@layer @foregroundtrue\endcsname
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{backandforeground}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{backandforeground}{#1}%
|
|
\csname @scr@l@\scr@current@layer @backgroundtrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @foregroundtrue\endcsname
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{oddpage}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{oddpage}{#1}%
|
|
\csname @scr@l@\scr@current@layer @oddtrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @evenfalse\endcsname
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{evenpage}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{evenpage}{#1}%
|
|
\csname @scr@l@\scr@current@layer @oddfalse\endcsname
|
|
\csname @scr@l@\scr@current@layer @eventrue\endcsname
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{oddorevenpage}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{oddorevenpage}{#1}%
|
|
\csname @scr@l@\scr@current@layer @oddtrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @eventrue\endcsname
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{evenoroddpage}[\relax]{%
|
|
\PackageWarning{scrlayer}{Option `evenoroddpage' unknown.\MessageBreak
|
|
Using `oddorevenpage' instead}%
|
|
\ExecuteFamilyOptions[.definelayer]{KOMAarg}{oddorevenpage=#1}
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{oddandevenpages}[\relax]{%
|
|
\PackageWarning{scrlayer}{Option `oddandevenpages' unknown.\MessageBreak
|
|
Using `oddorevenpage' instead}%
|
|
\ExecuteFamilyOptions[.definelayer]{KOMAarg}{oddorevenpage=#1}
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{evenandoddpages}[\relax]{%
|
|
\PackageWarning{scrlayer}{Option `evenandoddpages' unknown.\MessageBreak
|
|
Using `oddorevenpage' instead}%
|
|
\ExecuteFamilyOptions[.definelayer]{KOMAarg}{oddorevenpage=#1}
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{floatpage}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{floatpage}{#1}%
|
|
\csname @scr@l@\scr@current@layer @nonfloatpagefalse\endcsname
|
|
\csname @scr@l@\scr@current@layer @floatpagetrue\endcsname
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{nonfloatpage}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{nonfloatpage}{#1}%
|
|
\csname @scr@l@\scr@current@layer @nonfloatpagetrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @floatpagefalse\endcsname
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{floatornonfloatpage}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{floatornonfloatpage}{#1}%
|
|
\csname @scr@l@\scr@current@layer @nonfloatpagetrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @floatpagetrue\endcsname
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{nonfloatorfloatpage}[\relax]{%
|
|
\PackageWarning{scrlayer}{Option `nonfloatorfloatpage' unknown.\MessageBreak
|
|
Using `floatornonfloatpage' instead}%
|
|
\FamilyExecuteOptions[.definelayer]{KOMAarg}{floatornonfloatpage=#1}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{floatandnonfloatpages}[\relax]{%
|
|
\PackageWarning{scrlayer}{Option `floatandnonfloatpages' unknown.\MessageBreak
|
|
Using `floatornonfloatpage' instead}%
|
|
\FamilyExecuteOptions[.definelayer]{KOMAarg}{floatornonfloatpage=#1}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{nonfloatandfloatpages}[\relax]{%
|
|
\PackageWarning{scrlayer}{Option `nonfloatandfloatpages' unknown.\MessageBreak
|
|
Using `floatornonfloatpage' instead}%
|
|
\FamilyExecuteOptions[.definelayer]{KOMAarg}{floatornonfloatpage=#1}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{everypage}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{everypage}{#1}%
|
|
\csname @scr@l@\scr@current@layer @oddtrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @eventrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @nonfloatpagetrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @floatpagetrue\endcsname
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{oneside}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{oneside}{#1}%
|
|
\csname @scr@l@\scr@current@layer @twosidefalse\endcsname
|
|
\csname @scr@l@\scr@current@layer @onesidetrue\endcsname
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{twoside}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{twoside}{#1}%
|
|
\csname @scr@l@\scr@current@layer @twosidetrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @onesidefalse\endcsname
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{everyside}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{everyside}{#1}%
|
|
\csname @scr@l@\scr@current@layer @twosidetrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @onesidetrue\endcsname
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{unrestricted}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{unrestricted}{#1}%
|
|
\csname @scr@l@\scr@current@layer @oddtrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @eventrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @backgroundtrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @foregroundtrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @nonfloatpagetrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @floatpagetrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @twosidetrue\endcsname
|
|
\csname @scr@l@\scr@current@layer @onesidetrue\endcsname
|
|
}
|
|
\FamilyCSKey[.definelayer]{KOMAarg}{beforecontents}
|
|
{scr@l@\scr@current@layer @precontents@hook}
|
|
\FamilyCSKey[.definelayer]{KOMAarg}{aftercontents}
|
|
{scr@l@\scr@current@layer @postcontents@hook}
|
|
\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
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{addhoffset}{%
|
|
\expandafter\edef\csname scr@l@\scr@current@layer @x\endcsname{%
|
|
\noexpand\dimexpr \unexpanded\expandafter\expandafter\expandafter{%
|
|
\csname scr@l@\scr@current@layer @x\endcsname + (#1)\relax}}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{addvoffset}{%
|
|
\expandafter\edef\csname scr@l@\scr@current@layer @y\endcsname{%
|
|
\noexpand\dimexpr \unexpanded\expandafter\expandafter\expandafter{%
|
|
\csname scr@l@\scr@current@layer @y\endcsname + (#1)\relax}}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{addwidth}{%
|
|
\expandafter\edef\csname scr@l@\scr@current@layer @w\endcsname{%
|
|
\noexpand\dimexpr \unexpanded\expandafter\expandafter\expandafter{%
|
|
\csname scr@l@\scr@current@layer @w\endcsname + (#1)\relax}}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{addheight}{%
|
|
\expandafter\edef\csname scr@l@\scr@current@layer @h\endcsname{%
|
|
\noexpand\dimexpr \unexpanded\expandafter\expandafter\expandafter{%
|
|
\csname scr@l@\scr@current@layer @h\endcsname + (#1)\relax}}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{addcontents}{%
|
|
\expandafter\edef\csname scr@l@\scr@current@layer @contents\endcsname{%
|
|
\unexpanded\expandafter\expandafter\expandafter{%
|
|
\csname scr@l@\scr@current@layer @contents\endcsname #1}}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{pretocontents}{%
|
|
\expandafter\edef\csname scr@l@\scr@current@layer @contents\endcsname{%
|
|
\unexpanded{#1}\unexpanded\expandafter\expandafter\expandafter{%
|
|
\csname scr@l@\scr@current@layer @contents\endcsname}}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\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
|
|
}
|
|
\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
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{page}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{page}{#1}%
|
|
\def@scr@l@pos{\z@}{\z@}{\paperwidth}{\paperheight}%
|
|
\@namedef{scr@l@\scr@current@layer @align}{tl}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{topmargin}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{topmargin}{#1}%
|
|
\def@scr@l@pos{\z@}{\z@}{\paperwidth}{\dimexpr \topmargin+1in\relax}%
|
|
\@namedef{scr@l@\scr@current@layer @align}{tl}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{head}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{head}{#1}%
|
|
\def@scr@l@pos{%
|
|
\dimexpr
|
|
\if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi
|
|
\else\oddsidemargin\fi
|
|
+1in
|
|
\relax
|
|
}{%
|
|
\dimexpr \topmargin+1in+\headheight\relax
|
|
}{\textwidth}{\headheight}%
|
|
\@namedef{scr@l@\scr@current@layer @align}{bl}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{headsep}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{head}{#1}%
|
|
\def@scr@l@pos{%
|
|
\dimexpr
|
|
\if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi
|
|
\else\oddsidemargin\fi
|
|
+1in
|
|
\relax
|
|
}{%
|
|
\dimexpr \topmargin+1in+\headheight\relax
|
|
}{\textwidth}{\headsep}%
|
|
\@namedef{scr@l@\scr@current@layer @align}{tl}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{textarea}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{textarea}{#1}%
|
|
\def@scr@l@pos{%
|
|
\dimexpr
|
|
\if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi
|
|
\else\oddsidemargin\fi
|
|
+1in
|
|
\relax
|
|
}{%
|
|
\dimexpr \topmargin+1in+\headheight+\headsep\relax
|
|
}{\textwidth}{\textheight}%
|
|
\@namedef{scr@l@\scr@current@layer @align}{tl}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{foot}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{foot}{#1}%
|
|
\def@scr@l@pos{%
|
|
\dimexpr
|
|
\if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi
|
|
\else\oddsidemargin\fi
|
|
+1in
|
|
\relax
|
|
}{%
|
|
\dimexpr \topmargin+1in+\headheight+\headsep+\textheight
|
|
+\footskip+\dp\strutbox-\footheight\relax
|
|
}{\textwidth}{\footheight}%
|
|
\@namedef{scr@l@\scr@current@layer @align}{tl}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{footskip}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{foot}{#1}%
|
|
\def@scr@l@pos{%
|
|
\dimexpr
|
|
\if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi
|
|
\else\oddsidemargin\fi
|
|
+1in
|
|
\relax
|
|
}{%
|
|
\dimexpr \topmargin+1in+\headheight+\headsep+\textheight\relax
|
|
}{\textwidth}{\dimexpr\footskip+\dp\strutbox-\footheight\relax}%
|
|
\@namedef{scr@l@\scr@current@layer @align}{tl}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{bottommargin}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{bottommargin}{#1}%
|
|
\def@scr@l@pos{\z@}{%
|
|
\dimexpr \topmargin+1in+\headheight+\headsep
|
|
+\textheight
|
|
+\footskip+\dp\strutbox\relax
|
|
}{\paperwidth}{\dimexpr\paperheight-\layeryoffset\relax}%
|
|
\@namedef{scr@l@\scr@current@layer @align}{tl}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{leftmargin}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{leftmargin}{#1}%
|
|
\def@scr@l@pos{\z@}{\z@}{%
|
|
\dimexpr
|
|
\if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi
|
|
\else\oddsidemargin\fi
|
|
+1in
|
|
\relax
|
|
}{\paperheight}%
|
|
\@namedef{scr@l@\scr@current@layer @align}{tl}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{rightmargin}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{rightmargin}{#1}%
|
|
\def@scr@l@pos{\paperwidth}{\z@}{%
|
|
\dimexpr \paperwidth-1in-\textwidth
|
|
-\if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi
|
|
\else\oddsidemargin\fi\relax
|
|
}{\paperheight}%
|
|
\@namedef{scr@l@\scr@current@layer @align}{tr}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{innermargin}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{innermargin}{#1}%
|
|
\def@scr@l@pos{%
|
|
\if@twoside
|
|
\ifodd\value{page} \z@
|
|
\else \dimexpr \evensidemargin+1in+\textwidth\relax
|
|
\fi
|
|
\else \z@\fi
|
|
}{\z@}{%
|
|
\dimexpr
|
|
\if@twoside\ifodd\value{page} \oddsidemargin+1in
|
|
\else \paperwidth-\layerxoffset\fi
|
|
\else \oddsidemargin+1in\fi
|
|
\relax
|
|
}{\paperheight}%
|
|
\@namedef{scr@l@\scr@current@layer @align}{tl}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{outermargin}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{outermargin}{#1}%
|
|
\def@scr@l@pos{%
|
|
\dimexpr
|
|
\if@twoside\ifodd\value{page} \oddsidemargin+1in+\textwidth
|
|
\else \z@\fi
|
|
\else \oddsidemargin+1in+\textwidth\fi
|
|
\relax
|
|
}{\z@}{%
|
|
\dimexpr
|
|
\if@twoside\ifodd\value{page}\paperwidth-\layerxoffset
|
|
\else \evensidemargin+1in\fi
|
|
\else \paperwidth-\layerxoffset\fi
|
|
\relax
|
|
}{\paperheight}%
|
|
\@namedef{scr@l@\scr@current@layer @align}{tl}%
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{area}{%
|
|
\def@scr@l@pos#1
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayer]{KOMAarg}{clone}{%
|
|
\scr@ifundefinedorrelax{scr@l@#1@x}{%
|
|
\FamilyKeyStateUnknownValue
|
|
\PackageError{scrlayer}{layer `#1' undefined}{%
|
|
You can clone only already defined layers.\MessageBreak
|
|
If you'll continue, `clone=#1' will be ignored.%
|
|
}%
|
|
}{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@clone@attribute{\scr@current@layer}{#1}{mode}%
|
|
\scrlayer@clone@attribute{\scr@current@layer}{#1}{x}%
|
|
\scrlayer@clone@attribute{\scr@current@layer}{#1}{y}%
|
|
\scrlayer@clone@attribute{\scr@current@layer}{#1}{w}%
|
|
\scrlayer@clone@attribute{\scr@current@layer}{#1}{h}%
|
|
\scrlayer@clone@attribute{\scr@current@layer}{#1}{align}%
|
|
\scrlayer@clone@attribute{\scr@current@layer}{#1}{contents}%
|
|
\scrlayer@clone@switch{\scr@current@layer}{#1}{background}%
|
|
\scrlayer@clone@switch{\scr@current@layer}{#1}{foreground}%
|
|
\scrlayer@clone@switch{\scr@current@layer}{#1}{odd}%
|
|
\scrlayer@clone@switch{\scr@current@layer}{#1}{even}%
|
|
\scrlayer@clone@switch{\scr@current@layer}{#1}{oneside}%
|
|
\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}%
|
|
}%
|
|
}
|
|
\newcommand*{\scrlayer@clone@attribute}[3]{%
|
|
\expandafter\let\csname scr@l@#1@#3\expandafter\endcsname
|
|
\csname scr@l@#2@#3\expandafter\endcsname
|
|
}
|
|
\newcommand*{\scrlayer@clone@switch}[3]{%
|
|
\expandafter\let\csname if@scr@l@#1@#3\expandafter\endcsname
|
|
\csname if@scr@l@#2@#3\expandafter\endcsname
|
|
}
|
|
\newcommand{\DeclareLayer}[2][]{%
|
|
\def\scr@current@layer{#2}%
|
|
\@namedef{scr@l@#2@mode}{text}%
|
|
\@namedef{scr@l@#2@x}{\z@}%
|
|
\@namedef{scr@l@#2@y}{\z@}%
|
|
\@namedef{scr@l@#2@w}{\paperwidth}%
|
|
\@namedef{scr@l@#2@h}{\paperheight}%
|
|
\@namedef{scr@l@#2@align}{tl}%
|
|
\@namedef{scr@l@#2@contents}{}%
|
|
\expandafter\newif\csname if@scr@l@#2@background\endcsname
|
|
\csname @scr@l@#2@backgroundtrue\endcsname
|
|
\expandafter\newif\csname if@scr@l@#2@foreground\endcsname
|
|
\csname @scr@l@#2@foregroundtrue\endcsname
|
|
\expandafter\newif\csname if@scr@l@#2@odd\endcsname
|
|
\csname @scr@l@#2@oddtrue\endcsname
|
|
\expandafter\newif\csname if@scr@l@#2@even\endcsname
|
|
\csname @scr@l@#2@eventrue\endcsname
|
|
\expandafter\newif\csname if@scr@l@#2@oneside\endcsname
|
|
\csname @scr@l@#2@onesidetrue\endcsname
|
|
\expandafter\newif\csname if@scr@l@#2@twoside\endcsname
|
|
\csname @scr@l@#2@twosidetrue\endcsname
|
|
\expandafter\newif\csname if@scr@l@#2@floatpage\endcsname
|
|
\csname @scr@l@#2@floatpagetrue\endcsname
|
|
\expandafter\newif\csname if@scr@l@#2@nonfloatpage\endcsname
|
|
\csname @scr@l@#2@nonfloatpagetrue\endcsname
|
|
\FamilyExecuteOptions[.definelayer]{KOMAarg}{#1}%
|
|
\let\scr@current@layer\@empty
|
|
}
|
|
\newcommand*{\scr@current@layer}{}
|
|
\newcommand*{\IfLayerExists}[1]{%
|
|
\scr@ifundefinedorrelax{scr@l@#1@mode}{%
|
|
\expandafter\@secondoftwo
|
|
}{%
|
|
\expandafter\@firstoftwo
|
|
}%
|
|
}
|
|
\newcommand{\DeclareNewLayer}[2][]{%
|
|
\IfLayerExists{#2}{%
|
|
\PackageError{scrlayer}{layer `#2' already defined}{%
|
|
You may declare only layer, that haven't been declared previously
|
|
using\MessageBreak
|
|
\string\DeclareNewLayer. See also the alternatives
|
|
\string\RedeclareLayer,\MessageBreak
|
|
\string\ModifyLayer\space and \string\ProvideLayer.\MessageBreak
|
|
If you'll continue, declaration will be ignored.}%
|
|
}{\DeclareLayer[{#1}]{#2}}%
|
|
}
|
|
\newcommand{\ProvideLayer}[2][]{%
|
|
\IfLayerExists{#2}{%
|
|
\PackageInfo{scrlayer}{\string\ProvideLayer{#2} ignored,\MessageBreak
|
|
because of already defined layer}%
|
|
}{\DeclareNewLayer[{#1}]{#2}}%
|
|
}
|
|
\newcommand{\RedeclareLayer}[2][]{%
|
|
\IfLayerExists{#2}{}{%
|
|
\PackageError{scrlayer}{layer `#2' not yet defined}{%
|
|
You may declare only already declared layers using
|
|
\string\RedeclareLayer.\MessageBreak
|
|
See also the alternatives
|
|
\string\DeclareLayer and \string\ProvideLayer.\MessageBreak
|
|
Nevertheless, if you'll continue, declaration will be done.}%
|
|
}%
|
|
\DeclareLayer[{#1}]{#2}%
|
|
}
|
|
\newcommand{\ModifyLayer}[2][]{%
|
|
\IfLayerExists{#2}{%
|
|
\def\scr@current@layer{#2}%
|
|
\edef\reserved@a{%
|
|
\unexpanded{%
|
|
\FamilyExecuteOptions[.definelayer]{KOMAarg}{#1}%
|
|
\Ifstr{\csname scr@l@#2@mode\endcsname}%
|
|
}{\csname scr@l@#2@mode\endcsname}%
|
|
}\reserved@a{}{%
|
|
\PackageWarning{scrlayer}{%
|
|
change of layer mode could result in unexpected\MessageBreak
|
|
output and errors%
|
|
}%
|
|
}%
|
|
\let\scr@current@layer\@empty
|
|
}{%
|
|
\PackageError{scrlayer}{layer `#2' not yet defined}{%
|
|
You may modify only already declared layers using
|
|
\string\ModifyLayer.\MessageBreak
|
|
See also the alternatives
|
|
\string\DeclareLayer and \string\ProvideLayer.\MessageBreak
|
|
Nevertheless, if you'll continue, declaration will be done.}%
|
|
\DeclareLayer[{#1}]{#2}%
|
|
}%
|
|
}
|
|
\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
|
|
}
|
|
\newcommand*{\GetLayerContents}[1]{%
|
|
\IfLayerExists{#1}{\@nameuse{scr@l@#1@contents}}{%
|
|
\PackageError{scrlayer}{unknown layer `#1'}{%
|
|
You can ask only for the contents of an existing layer.}%
|
|
}%
|
|
}
|
|
\newcommand*{\DestroyLayer}[1]{%
|
|
\IfLayerExists{#1}{%
|
|
\expandafter\let\csname scr@l@#1@mode\endcsname\relax
|
|
\expandafter\let\csname scr@l@#1@x\endcsname\relax
|
|
\expandafter\let\csname scr@l@#1@y\endcsname\relax
|
|
\expandafter\let\csname scr@l@#1@w\endcsname\relax
|
|
\expandafter\let\csname scr@l@#1@h\endcsname\relax
|
|
\expandafter\let\csname scr@l@#1@align\endcsname\relax
|
|
\expandafter\let\csname scr@l@#1@contents\endcsname\relax
|
|
\expandafter\let\csname if@scr@l@#1@background\endcsname\relax
|
|
\expandafter\let\csname @scr@l@#1@backgroundfalse\endcsname\relax
|
|
\expandafter\let\csname @scr@l@#1@backgroundtrue\endcsname\relax
|
|
\expandafter\let\csname if@scr@l@#1@foreground\endcsname\relax
|
|
\expandafter\let\csname @scr@l@#1@foregroundfalse\endcsname\relax
|
|
\expandafter\let\csname @scr@l@#1@foregroundtrue\endcsname\relax
|
|
\expandafter\let\csname if@scr@l@#1@odd\endcsname\relax
|
|
\expandafter\let\csname @scr@l@#1@oddfalse\endcsname\relax
|
|
\expandafter\let\csname @scr@l@#1@oddtrue\endcsname\relax
|
|
\expandafter\let\csname if@scr@l@#1@even\endcsname\relax
|
|
\expandafter\let\csname @scr@l@#1@evenfalse\endcsname\relax
|
|
\expandafter\let\csname @scr@l@#1@eventrue\endcsname\relax
|
|
\expandafter\let\csname if@scr@l@#1@oneside\endcsname\relax
|
|
\expandafter\let\csname @scr@l@#1@onesidefalse\endcsname\relax
|
|
\expandafter\let\csname @scr@l@#1@onesidetrue\endcsname\relax
|
|
\expandafter\let\csname if@scr@l@#1@twoside\endcsname\relax
|
|
\expandafter\let\csname @scr@l@#1@twosidefalse\endcsname\relax
|
|
\expandafter\let\csname @scr@l@#1@twosidetrue\endcsname\relax
|
|
\expandafter\let\csname if@scr@l@#1@floatpage\endcsname\relax
|
|
\expandafter\let\csname @scr@l@#1@floatpagefalse\endcsname\relax
|
|
\expandafter\let\csname @scr@l@#1@floatpagetrue\endcsname\relax
|
|
\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
|
|
}{%
|
|
\PackageInfo{scrlayer}{\string\DestroyLayer{#1} ignored,\MessageBreak
|
|
because that layer doesn't exist\MessageBreak
|
|
(any longer)%
|
|
}%
|
|
}%
|
|
}
|
|
\newcommand*{\layercontentsmeasure}{%
|
|
\smash{\begin{picture}(0,0)
|
|
(0,\LenToUnit{%
|
|
\if t\layervalign -\ht\strutbox
|
|
\else
|
|
\if b\layervalign -\dimexpr\layerheight-\dp\strutbox\relax
|
|
\else -.5\dimexpr\layerheight+\ht\strutbox-\dp\strutbox\relax
|
|
\fi
|
|
\fi})
|
|
\setlength{\unitlength}{1mm}%
|
|
\put(0,0){\line(1,0){\LenToUnit{\layerwidth}}}%
|
|
\@tempcnta=\numexpr \dimexpr\layerwidth + .5mm\relax/\dimexpr 1mm\relax\relax
|
|
\multiput(0,0)(1,0){\@tempcnta}{%
|
|
\line(0,-1){1}%
|
|
}%
|
|
\@tempcnta=\numexpr \dimexpr\layerwidth + 2.5mm\relax/\dimexpr 5mm\relax\relax
|
|
\multiput(0,0)(5,0){\@tempcnta}{%
|
|
\line(0,-1){2}%
|
|
}%
|
|
\@tempcnta=\numexpr \dimexpr\layerwidth + .5cm\relax/\dimexpr 1cm\relax\relax
|
|
\multiput(0,0)(10,0){\@tempcnta}{%
|
|
\put(0,0){\line(0,-1){3}}%
|
|
\put(0,-3.5){%
|
|
\makebox(0,0)[ct]{\the\numexpr\@tempcnta-\@multicnt\relax}}%
|
|
}%
|
|
\put(0,\LenToUnit{-\layerheight}){\line(1,0){\LenToUnit{\layerwidth}}}%
|
|
\@tempcnta=\numexpr \dimexpr\layerwidth + .05in\relax/\dimexpr .1in\relax\relax
|
|
\multiput(0,\LenToUnit{-\layerheight})(2.54,0){\@tempcnta}{%
|
|
\line(0,1){1}%
|
|
}%
|
|
\@tempcnta=\numexpr \dimexpr\layerwidth + .25in\relax/\dimexpr .5in\relax\relax
|
|
\multiput(0,\LenToUnit{-\layerheight})(12.7,0){\@tempcnta}{%
|
|
\line(0,1){2}%
|
|
}%
|
|
\@tempcnta=\numexpr \dimexpr\layerwidth + .5in\relax/\dimexpr 1in\relax\relax
|
|
\multiput(0,\LenToUnit{-\layerheight})(25.4,0){\@tempcnta}{%
|
|
\put(0,0){\line(0,1){3}}%
|
|
\put(0,3.5){%
|
|
\makebox(0,0)[cb]{\the\numexpr\@tempcnta-\@multicnt\relax}}%
|
|
}%
|
|
\put(0,0){\line(0,-1){\LenToUnit{\layerheight}}}%
|
|
\@tempcnta\numexpr \dimexpr\layerheight + .5mm\relax/\dimexpr 1mm\relax\relax
|
|
\multiput(0,0)(0,-1){\@tempcnta}{%
|
|
\line(1,0){1}%
|
|
}%
|
|
\@tempcnta\numexpr \dimexpr\layerheight + 2.5mm\relax/\dimexpr 5mm\relax\relax
|
|
\multiput(0,0)(0,-5){\@tempcnta}{%
|
|
\line(1,0){2}%
|
|
}%
|
|
\@tempcnta\numexpr \dimexpr\layerheight + .5cm\relax/\dimexpr 1cm\relax\relax
|
|
\multiput(0,0)(0,-10){\@tempcnta}{%
|
|
\put(0,0){\line(1,0){3}}%
|
|
\put(3.5,0){%
|
|
\makebox(0,0)[cl]{\the\numexpr\@tempcnta-\@multicnt\relax}}%
|
|
}%
|
|
\put(\LenToUnit{\layerwidth},0){\line(0,-1){\LenToUnit{\layerheight}}}%
|
|
\@tempcnta\numexpr \dimexpr\layerheight + .05in\relax/\dimexpr .1in\relax\relax
|
|
\multiput(\LenToUnit{\layerwidth},0)(0,-2.54){\@tempcnta}{%
|
|
\line(-1,0){1}%
|
|
}%
|
|
\@tempcnta\numexpr \dimexpr\layerheight + .25in\relax/\dimexpr .5in\relax\relax
|
|
\multiput(\LenToUnit{\layerwidth},0)(0,-12.7){\@tempcnta}{%
|
|
\line(-1,0){2}%
|
|
}%
|
|
\@tempcnta\numexpr \dimexpr\layerheight + .5in\relax/\dimexpr 1in\relax\relax
|
|
\multiput(\LenToUnit{\layerwidth},0)(0,-25.4){\@tempcnta}{%
|
|
\put(0,0){\line(-1,0){3}}%
|
|
\put(-3.5,0){%
|
|
\makebox(0,0)[cr]{\the\numexpr\@tempcnta-\@multicnt\relax}}%
|
|
}%
|
|
\end{picture}}%
|
|
}
|
|
\providecommand*{\LenToUnit}[1]{\strip@pt\dimexpr#1*\p@/\unitlength}
|
|
\DefineFamily{KOMAarg}
|
|
\DefineFamilyMember[.definelayerpagestyle]{KOMAarg}
|
|
\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onselect}{%
|
|
\expandafter\l@addto@macro
|
|
\csname @ps@\scrlayer@current@pagestyle @initialhook\endcsname
|
|
{#1}%
|
|
\let\scr@opt@marker@initialhook\FamilyKeyStateProcssed
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{oninit}{%
|
|
\expandafter\l@addto@macro
|
|
\csname @ps@\scrlayer@current@pagestyle @hook\endcsname
|
|
{#1}%
|
|
\let\scr@opt@marker@hook\FamilyKeyStateProcssed
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{ononeside}{%
|
|
\expandafter\l@addto@macro
|
|
\csname @ps@\scrlayer@current@pagestyle @onesidehook\endcsname
|
|
{#1}%
|
|
\let\scr@opt@marker@onesidehook\FamilyKeyStateProcssed
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{ontwoside}{%
|
|
\expandafter\l@addto@macro
|
|
\csname @ps@\scrlayer@current@pagestyle @twosidehook\endcsname
|
|
{#1}%
|
|
\let\scr@opt@marker@twosidehook\FamilyKeyStateProcssed
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onoddpage}{%
|
|
\expandafter\l@addto@macro
|
|
\csname @ps@\scrlayer@current@pagestyle @oddpagehook\endcsname
|
|
{#1}%
|
|
\let\scr@opt@marker@oddpagehook\FamilyKeyStateProcssed
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onevenpage}{%
|
|
\expandafter\l@addto@macro
|
|
\csname @ps@\scrlayer@current@pagestyle @evenpagehook\endcsname
|
|
{#1}%
|
|
\let\scr@opt@marker@evenpagehook\FamilyKeyStateProcssed
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onfloatpage}{%
|
|
\expandafter\l@addto@macro
|
|
\csname @ps@\scrlayer@current@pagestyle @floatpagehook\endcsname
|
|
{#1}%
|
|
\let\scr@opt@marker@floatpagehook\FamilyKeyStateProcssed
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onnonfloatpage}{%
|
|
\expandafter\l@addto@macro
|
|
\csname @ps@\scrlayer@current@pagestyle @nonfloatpagehook\endcsname
|
|
{#1}%
|
|
\let\scr@opt@marker@nonfloatpagehook\FamilyKeyStateProcssed
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onbackground}{%
|
|
\expandafter\l@addto@macro
|
|
\csname @ps@\scrlayer@current@pagestyle @backgroundhook\endcsname
|
|
{#1}%
|
|
\let\scr@opt@marker@backgroundhook\FamilyKeyStateProcssed
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onforeground}{%
|
|
\expandafter\l@addto@macro
|
|
\csname @ps@\scrlayer@current@pagestyle @foregroundhook\endcsname
|
|
{#1}%
|
|
\let\scr@opt@marker@foregroundhook\FamilyKeyStateProcssed
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\newcommand*{\DeclarePageStyleByLayers}[3][]{%
|
|
\edef\scrlayer@current@pagestyle{\GetRealPageStyle{#2}}%
|
|
\expandafter\scrlayer@declare@ps@by@layers\expandafter{%
|
|
\scrlayer@current@pagestyle
|
|
}{#1}{#3}%
|
|
}
|
|
\newcommand*{\scrlayer@declare@ps@by@layers}[3]{%
|
|
\@namedef{@ps@#1@initialhook}{\@ps@initialhook}%
|
|
\@namedef{@ps@#1@hook}{\@ps@hook}%
|
|
\@namedef{@ps@#1@backgroundhook}{\@ps@backgroundhook}%
|
|
\@namedef{@ps@#1@foregroundhook}{\@ps@foregroundhook}%
|
|
\@namedef{@ps@#1@oddpagehook}{\@ps@oddpagehook}%
|
|
\@namedef{@ps@#1@evenpagehook}{\@ps@evenpagehook}%
|
|
\@namedef{@ps@#1@onesidehook}{\@ps@onesidehook}%
|
|
\@namedef{@ps@#1@twosidehook}{\@ps@twosidehook}%
|
|
\@namedef{@ps@#1@floatpagehook}{\@ps@floatpagehook}%
|
|
\@namedef{@ps@#1@nonfloatpagehook}{\@ps@nonfloatpagehook}%
|
|
\FamilyExecuteOptions[.definelayerpagestyle]{KOMAarg}{#2}%
|
|
\@namedef{ps@#1}{%
|
|
\renewcommand*{\currentpagestyle}{#1}%
|
|
\@nameuse{@ps@@everystyle@@initialhook}%
|
|
\@nameuse{@ps@#1@initialhook}%
|
|
\renewcommand*{\currentpagestyle}{#1}%
|
|
\renewcommand*{\@oddhead}{%
|
|
\begingroup
|
|
\let\headmark\rightmark
|
|
\if@ps@singlespacing\linespread{1}\selectfont\fi
|
|
\@nameuse{@ps@@everystyle@@hook}%
|
|
\@nameuse{@ps@#1@hook}%
|
|
\@nameuse{@ps@@everystyle@@\if@twoside two\else one\fi sidehook}%
|
|
\@nameuse{@ps@#1@\if@twoside two\else one\fi sidehook}%
|
|
\@nameuse{@ps@@everystyle@@oddpagehook}%
|
|
\@nameuse{@ps@#1@oddpagehook}%
|
|
\@nameuse{@ps@@everystyle@@\if@fcolmade\else non\fi floatpagehook}%
|
|
\@nameuse{@ps@#1@\if@fcolmade\else non\fi floatpagehook}%
|
|
\@nameuse{@ps@@everystyle@@backgroundhook}%
|
|
\@nameuse{@ps@#1@backgroundhook}%
|
|
\parbox[b][\headheight][t]{\textwidth}{%
|
|
\vskip \dimexpr -\topmargin-1in
|
|
-\ht\strutbox\relax
|
|
\hskip \dimexpr -\oddsidemargin-1in\relax
|
|
\strut\makebox[\z@][l]{%
|
|
\ForEachLayerOfPageStyle{@everystyle@}{%
|
|
\scrlayer@do@page@style@element@layer{background}{odd}%
|
|
{########1}%
|
|
}%
|
|
\ForEachLayerOfPageStyle{#1}{%
|
|
\scrlayer@do@page@style@element@layer{background}{odd}%
|
|
{########1}%
|
|
}%
|
|
}%
|
|
}%
|
|
\endgroup
|
|
}%
|
|
\renewcommand*{\@evenhead}{%
|
|
\begingroup
|
|
\let\headmark\leftmark
|
|
\if@ps@singlespacing\linespread{1}\selectfont\fi
|
|
\@nameuse{@ps@@everystyle@@hook}%
|
|
\@nameuse{@ps@#1@hook}%
|
|
\@nameuse{@ps@@everystyle@@twosidehook}%
|
|
\@nameuse{@ps@#1@twosidehook}%
|
|
\@nameuse{@ps@@everystyle@@evenpagehook}%
|
|
\@nameuse{@ps@#1@evenpagehook}%
|
|
\@nameuse{@ps@@everystyle@@\if@fcolmade\else non\fi floatpagehook}%
|
|
\@nameuse{@ps@#1@\if@fcolmade\else non\fi floatpagehook}%
|
|
\@nameuse{@ps@@everystyle@@backgroundhook}%
|
|
\@nameuse{@ps@#1@backgroundhook}%
|
|
\parbox[b][\headheight][t]{\textwidth}{%
|
|
\vskip \dimexpr -\topmargin-1in
|
|
-\ht\strutbox\relax
|
|
\hskip \dimexpr-\evensidemargin-1in\relax
|
|
\strut\makebox[\z@][l]{%
|
|
\ForEachLayerOfPageStyle{@everystyle@}{%
|
|
\scrlayer@do@page@style@element@layer{background}{even}%
|
|
{########1}%
|
|
}%
|
|
\ForEachLayerOfPageStyle{#1}{%
|
|
\scrlayer@do@page@style@element@layer{background}{even}%
|
|
{########1}%
|
|
}%
|
|
}%
|
|
}%
|
|
\endgroup
|
|
}%
|
|
\renewcommand*{\@oddfoot}{%
|
|
\begingroup
|
|
\let\headmark\rightmark
|
|
\if@ps@singlespacing\linespread{1}\selectfont\fi
|
|
\@nameuse{@ps@@everystyle@@hook}%
|
|
\@nameuse{@ps@#1@hook}%
|
|
\@nameuse{@ps@@everystyle@@\if@twoside two\else one\fi sidehook}%
|
|
\@nameuse{@ps@#1@\if@twoside two\else one\fi sidehook}%
|
|
\@nameuse{@ps@@everystyle@@oddpagehook}%
|
|
\@nameuse{@ps@#1@oddpagehook}%
|
|
\@nameuse{@ps@@everystyle@@\if@fcolmade\else non\fi floatpagehook}%
|
|
\@nameuse{@ps@#1@\if@fcolmade\else non\fi floatpagehook}%
|
|
\@nameuse{@ps@@everystyle@@foregroundhook}%
|
|
\@nameuse{@ps@#1@foregroundhook}%
|
|
\parbox[t][\headheight][t]{\textwidth}{%
|
|
\vskip \dimexpr -\topmargin-1in
|
|
-\headheight
|
|
-\headsep
|
|
-\textheight
|
|
-\footskip
|
|
-\ht\strutbox\relax
|
|
\hskip \dimexpr -\oddsidemargin-1in\relax
|
|
\strut\makebox[\z@][l]{%
|
|
\ForEachLayerOfPageStyle{@everystyle@}{%
|
|
\scrlayer@do@page@style@element@layer{foreground}{odd}%
|
|
{########1}%
|
|
}%
|
|
\ForEachLayerOfPageStyle{#1}{%
|
|
\scrlayer@do@page@style@element@layer{foreground}{odd}%
|
|
{########1}%
|
|
}%
|
|
}%
|
|
}%
|
|
\endgroup
|
|
}%
|
|
\renewcommand*{\@evenfoot}{%
|
|
\begingroup
|
|
\let\headmark\leftmark
|
|
\if@ps@singlespacing\linespread{1}\selectfont\fi
|
|
\@nameuse{@ps@@everystyle@@hook}%
|
|
\@nameuse{@ps@#1@hook}%
|
|
\@nameuse{@ps@@everystyle@@twosidehook}%
|
|
\@nameuse{@ps@#1@twosidehook}%
|
|
\@nameuse{@ps@@everystyle@@evenpagehook}%
|
|
\@nameuse{@ps@#1@evenpagehook}%
|
|
\@nameuse{@ps@@everystyle@@\if@fcolmade\else non\fi floatpagehook}%
|
|
\@nameuse{@ps@#1@\if@fcolmade\else non\fi floatpagehook}%
|
|
\@nameuse{@ps@@everystyle@@foregroundhook}%
|
|
\@nameuse{@ps@#1@foregroundhook}%
|
|
\parbox[t][\headheight][t]{\textwidth}{%
|
|
\vskip \dimexpr -\topmargin-1in
|
|
-\headheight
|
|
-\headsep
|
|
-\textheight
|
|
-\footskip
|
|
-\ht\strutbox\relax
|
|
\hskip \dimexpr-\evensidemargin-1in\relax
|
|
\strut\makebox[\z@][l]{%
|
|
\ForEachLayerOfPageStyle{@everystyle@}{%
|
|
\scrlayer@do@page@style@element@layer{foreground}{even}%
|
|
{########1}%
|
|
}%
|
|
\ForEachLayerOfPageStyle{#1}{%
|
|
\scrlayer@do@page@style@element@layer{foreground}{even}%
|
|
{########1}%
|
|
}%
|
|
}%
|
|
}%
|
|
\endgroup
|
|
}%
|
|
}%
|
|
\@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}}%
|
|
}%
|
|
}%
|
|
}
|
|
\newcommand*{\ForEachLayerOfPageStyle}{%
|
|
\kernel@ifstar {\@s@ForEachLayerOfPageStyle}{\@ForEachLayerOfPageStyle}%
|
|
}
|
|
\newcommand*{\@ForEachLayerOfPageStyle}[2]{%
|
|
\begingroup
|
|
\edef\reserved@a{\GetRealPageStyle{#1}}%
|
|
\def\@elt##1{\ifscrlayer@deactivate@layers\else #2\fi}%
|
|
\@nameuse{@ps@\reserved@a @layers}%
|
|
\endgroup
|
|
}
|
|
\newcommand*{\@s@ForEachLayerOfPageStyle}[2]{%
|
|
\begingroup
|
|
\edef\reserved@a{\GetRealPageStyle{#1}}%
|
|
\def\reserved@b{\endgroup}%
|
|
\def\@elt##1{%
|
|
\l@addto@macro\reserved@b{%
|
|
\ifscrlayer@deactivate@layers\else #2\fi
|
|
}%
|
|
}%
|
|
\@nameuse{@ps@\reserved@a @layers}%
|
|
\reserved@b
|
|
}
|
|
\newcommand*{\scrlayer@do@page@style@element@layer}[3]{%
|
|
\begingroup
|
|
\expandafter\ifx\csname if@scr@l@#3@\if@fcolmade\else non\fi floatpage%
|
|
\expandafter\endcsname\csname iftrue\endcsname
|
|
\expandafter\ifx\csname if@scr@l@#3@\if@twoside two\else one\fi side%
|
|
\expandafter\endcsname\csname iftrue\endcsname
|
|
\expandafter
|
|
\ifx\csname if@scr@l@#3@#1\expandafter\endcsname
|
|
\csname iftrue\endcsname
|
|
\expandafter
|
|
\ifx\csname if@scr@l@#3@#2\expandafter\endcsname
|
|
\csname iftrue\endcsname
|
|
\ifscrlayer@draft
|
|
\scr@layerbox(\csname scr@l@#3@x\endcsname,%
|
|
\csname scr@l@#3@y\endcsname)%
|
|
(\csname scr@l@#3@w\endcsname,%
|
|
\csname scr@l@#3@h\endcsname)%
|
|
[\csname scr@l@#3@align\endcsname]%
|
|
{%
|
|
\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)%
|
|
(\csname scr@l@#3@w\endcsname,%
|
|
\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@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
|
|
\fi
|
|
\endgroup
|
|
}
|
|
\newcommand*{\scrlayer@predraftmeasure@hook}{}
|
|
\newcommand*{\BeforeDraftMeasuringLayer}[1]{%
|
|
\edef\scrlayer@predraftmeasure@hook{%
|
|
\unexpanded{#1}\unexpanded\expandafter{\scrlayer@predraftmeasure@hook}%
|
|
}%
|
|
}
|
|
\newcommand*{\scrlayer@postdraftmeasure@hook}{}
|
|
\newcommand*{\AfterDraftMeasuringLayer}[1]{%
|
|
\expandafter\def\expandafter\scrlayer@postdraftmeasure@hook\expandafter{%
|
|
\scrlayer@postdraftmeasure@hook #1%
|
|
}%
|
|
}
|
|
\def\scr@layerbox(#1,#2)(#3,#4){%
|
|
\kernel@ifnextchar [%]
|
|
{\scr@@layerbox(#1,#2)(#3,#4)}{\scr@@layerbox(#1,#2)(#3,#4)[]}%
|
|
}
|
|
\def\scr@@layerbox(#1,#2)(#3,#4)[#5]#6{%
|
|
\begingroup
|
|
\protected@edef\layerxoffset{\noexpand\dimexpr #1\relax}%
|
|
\protected@edef\layeryoffset{\noexpand\dimexpr #2\relax}%
|
|
\protected@edef\layerwidth{\noexpand\dimexpr #3\relax}%
|
|
\protected@edef\layerheight{\noexpand\dimexpr #4\relax}%
|
|
\def\layervalign{t}%
|
|
\def\layerhalign{l}%
|
|
\edef\reserved@b{#5}%
|
|
\expandafter\@tfor\expandafter\reserved@a\expandafter:\expandafter=%
|
|
\reserved@b\do{%
|
|
\if t\reserved@a
|
|
\def\layervalign{t}%
|
|
\else
|
|
\if c\reserved@a
|
|
\def\layervalign{c}%
|
|
\def\layerhalign{c}%
|
|
\else
|
|
\if b\reserved@a
|
|
\def\layervalign{b}%
|
|
\else
|
|
\if l\reserved@a
|
|
\def\layerhalign{l}%
|
|
\else
|
|
\if r\reserved@a
|
|
\def\layerhalign{r}%
|
|
\else
|
|
\PackageWarning{scrlayer}{%
|
|
Unknown alignment `\reserved@a' ignored}%
|
|
\fi
|
|
\fi
|
|
\fi
|
|
\fi
|
|
\fi
|
|
}%
|
|
\parbox[t][\z@][t]{\z@}{%
|
|
\vskip\layeryoffset
|
|
\if b\layervalign\vskip-\layerheight\fi
|
|
\if c\layervalign\vskip-.5\layerheight\fi
|
|
\makebox[\z@][\IfRTL{r}{l}]{%
|
|
\hskip\layerxoffset
|
|
\IfRTL{\hskip\layerwidth}{}%
|
|
\makebox[\z@][\layerhalign]{%
|
|
\parbox[\layervalign][\layerheight][\layervalign]{\layerwidth}{%
|
|
\vskip\z@\strut{%
|
|
\ifscrlayer@forceignoreuppercase
|
|
\expandafter\let\csname MakeUppercase \endcsname\@firstofone
|
|
\let\MakeUppercase\@firstofone
|
|
\let\uppercase\@firstofone
|
|
\fi
|
|
#6%
|
|
}\strut\vskip\z@
|
|
}%
|
|
}%
|
|
}%
|
|
}%
|
|
\endgroup
|
|
}
|
|
\newcommand{\layerrawmode}[1]{#1}
|
|
\newcommand{\layertextmode}[1]{#1}
|
|
\newcommand{\layerpicturemode}[1]{%
|
|
\begin{picture}(0,0)
|
|
(0,\LenToUnit{%
|
|
\if t\layervalign \dimexpr\layerheight-\ht\strutbox\relax
|
|
\else
|
|
\if b\layervalign \dp\strutbox
|
|
\else .5\dimexpr\layerheight-\ht\strutbox+\dp\strutbox\relax
|
|
\fi
|
|
\fi})
|
|
\long\def\putLL##1{\put(0,0){##1}}%
|
|
\long\def\putUL##1{\put(0,\LenToUnit{\layerheight}){##1}}%
|
|
\long\def\putLR##1{\put(\LenToUnit{\layerwidth},0){##1}}%
|
|
\long\def\putUR##1{\put(\LenToUnit{\layerwidth},%
|
|
\LenToUnit{\layerheight}){##1}}%
|
|
\long\def\putC##1{\put(\LenToUnit{.5\layerwidth},%
|
|
\LenToUnit{.5\layerheight}){##1}}%
|
|
#1%
|
|
\end{picture}%
|
|
}
|
|
\newcommand*{\DeclareNewPageStyleByLayers}[2][]{%
|
|
\@ifundefined{ps@#2}{}{%
|
|
\PackageError{scrlayer}{%
|
|
Page style `#2' already defined%
|
|
}{%
|
|
You may use \string\DeclareNewPageStyleByLayers\space to declare a new
|
|
page style only\MessageBreak
|
|
if that page style hasn't been declared or defined before.\MessageBreak
|
|
You may use either \string\ProvidePageStyleByLayers\space to declare the
|
|
page style only\MessageBreak
|
|
if it hasn't been declared or defined before, or
|
|
\string\RedeclarePageStyleByLayers\MessageBreak
|
|
to overwrite the former
|
|
declaration or definition of the page style%
|
|
\@ifundefined{@ps@#2@layers}{}{,\MessageBreak
|
|
or \string\AddLayersToPageStyle\space to add further layers to the
|
|
already declared\MessageBreak
|
|
page style, or \string\RemoveLayersFromPageStyle\space to remove
|
|
layers from the\MessageBreak
|
|
already declared page style}.\MessageBreak
|
|
Nevertheless, if you'll continue, the page style will be
|
|
overwritten\MessageBreak
|
|
by the new declaration.%
|
|
}%
|
|
}%
|
|
\DeclarePageStyleByLayers[{#1}]{#2}%
|
|
}
|
|
\newcommand*{\ProvidePageStyleByLayers}[3][]{%
|
|
\@ifundefined{ps@#2}{%
|
|
\DeclarePageStyleByLayers[{#1}]{#2}{#3}%
|
|
}{%
|
|
\PackageInfo{scrlayer}{%
|
|
\string\ProvidePageStyleByLayers{#2}{#3} ignored,\MessageBreak
|
|
because page style `#2'\MessageBreak
|
|
already exists%
|
|
}%
|
|
}%
|
|
}
|
|
\newcommand*{\RedeclarePageStyleByLayers}[2][]{%
|
|
\@ifundefined{ps@#2}{%
|
|
\PackageError{scrlayer}{%
|
|
Page style `#2' not yet defined%
|
|
}{%
|
|
You may use \string\RedeclarePageStyleByLayers\space to declare a page
|
|
style only\MessageBreak
|
|
if that page style has already been declared or defined.\MessageBreak
|
|
You may use either \string\DeclareNewPageStyleByLayers,
|
|
\string\DeclarePageStyleByLayers,\MessageBreak
|
|
or \string\ProvidePageStyleByLayers\space to declare that not yet
|
|
defined page style.\MessageBreak
|
|
Nevertheless, if you'll continue, the page style will be declared.%
|
|
}%
|
|
}{}%
|
|
\DeclarePageStyleByLayers[{#1}]{#2}%
|
|
}
|
|
\newcommand*{\AddLayersToPageStyle}[2]{%
|
|
\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}}%
|
|
}%
|
|
}%
|
|
}{%
|
|
\scrlayer@lpm@error{#1}{adding layers}%
|
|
}%
|
|
}
|
|
\newcommand*{\AddLayersAtEndOfPageStyle}{%
|
|
\AddLayersToPageStyle
|
|
}
|
|
\newcommand*{\AddLayersAtBeginOfPageStyle}[2]{%
|
|
\begingroup
|
|
\let\@cons\@snoc
|
|
\AddLayersToPageStyle{#1}{#2}%
|
|
\endgroup
|
|
}
|
|
\newcommand*{\@snoc}[2]{%
|
|
\begingroup\let\@elt\relax\xdef#1{\@elt #2#1}\endgroup
|
|
}
|
|
\newcommand*{\RemoveLayersFromPageStyle}[2]{%
|
|
\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}%
|
|
}%
|
|
}%
|
|
}{%
|
|
\scrlayer@lpm@error{#1}{removing layers}%
|
|
}%
|
|
}
|
|
\newcommand*{\remove@layer@from@page@style}[2]{%
|
|
\begingroup
|
|
\expandafter\let\expandafter\reserved@a\csname @ps@#2@layers\endcsname
|
|
\expandafter\global\expandafter\let\csname @ps@#2@layers\endcsname\@empty
|
|
\def\@elt##1{%
|
|
\Ifstr{#1}{##1}{}{%
|
|
\expandafter\@cons\csname @ps@#2@layers\endcsname{{##1}}%
|
|
}%
|
|
}\reserved@a
|
|
\endgroup
|
|
}
|
|
\newcommand*{\scrlayer@lpm@error}[2]{%
|
|
\PackageError{scrlayer}{`#1' is not a layer page style}{%
|
|
\scr@ifundefinedorrelax{ps@#1}{%
|
|
Page style `#1' is not defined,
|
|
}{%
|
|
Page style `#1' is not a layer page style,
|
|
}%
|
|
but #2\MessageBreak
|
|
may be used only for layer page styles declared using\MessageBreak
|
|
\string\DeclarePageStyleByLayers,
|
|
\string\DeclareNewPageStyleByLayers,\MessageBreak
|
|
of \string\ProvidePageStyleByLayers.\MessageBreak
|
|
If you'll continue, your operation will be ignored.%
|
|
}%
|
|
}
|
|
\newcommand*{\AddLayersToPageStyleAfterLayer}[3]{%
|
|
\edef\reserved@b{\GetRealPageStyle{#1}}%
|
|
\IfLayerPageStyleExists{\reserved@b}{%
|
|
\begingroup
|
|
\expandafter\let\expandafter\reserved@a
|
|
\csname @ps@\reserved@b @layers\endcsname
|
|
\@namedef{@ps@\reserved@b @layers}{}%
|
|
\def\@elt##1{%
|
|
\Ifstr{##1}\@empty{}{%
|
|
\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}}%
|
|
}%
|
|
}%
|
|
}{}%
|
|
}%
|
|
}%
|
|
\reserved@a
|
|
\endgroup
|
|
}{%
|
|
\scrlayer@lpm@error{#1}{adding layers}%
|
|
}%
|
|
}
|
|
\newcommand*{\AddLayersToPageStyleBeforeLayer}[3]{%
|
|
\edef\reserved@b{\GetRealPageStyle{#1}}%
|
|
\IfLayerPageStyleExists{\reserved@b}{%
|
|
\begingroup
|
|
\expandafter\let\expandafter\reserved@a
|
|
\csname @ps@\reserved@b @layers\endcsname
|
|
\@namedef{@ps@\reserved@b @layers}{}%
|
|
\def\@elt##1{%
|
|
\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}}%
|
|
}%
|
|
}%
|
|
}{}%
|
|
\expandafter\@cons\csname @ps@#1@layers\endcsname{{##1}}%
|
|
}%
|
|
}%
|
|
\reserved@a
|
|
\endgroup
|
|
}{%
|
|
\scrlayer@lpm@error{#1}{adding layers}%
|
|
}%
|
|
}
|
|
\newcommand*{\UnifyLayersAtPageStyle}[1]{%
|
|
\edef\reserved@b{\GetRealPageStyle{#1}}%
|
|
\IfLayerPageStyleExists{\reserved@b}{%
|
|
\expandafter\let\expandafter\reserved@a
|
|
\csname @ps@\reserved@b @layers\endcsname
|
|
\@namedef{@ps@\reserved@b @layers}{}%
|
|
\begingroup
|
|
\def\@elt##1{%
|
|
\Ifstr{##1}\@empty{}{%
|
|
\remove@layer@from@page@style{##1}{\reserved@b}%
|
|
\expandafter\@cons\csname @ps@\reserved@b @layers\endcsname{{##1}}%
|
|
}%
|
|
}%
|
|
\reserved@a
|
|
\endgroup
|
|
}{%
|
|
\scrlayer@lpm@error{#1}{unifying}%
|
|
}%
|
|
}
|
|
\newcommand*{\ModifyLayerPageStyleOptions}[2]{%
|
|
\edef\reserved@a{\GetRealPageStyle{#1}}%
|
|
\IfLayerPageStyleExists{#1}{%
|
|
\expandafter\scrlayer@modify@layer@ps@options\expandafter{%
|
|
\reserved@a
|
|
}{#2}%
|
|
}{%
|
|
\scrlayer@lpm@error{#1}{modifying}%
|
|
}%
|
|
}
|
|
\newcommand*{\scrlayer@modify@layer@ps@options}[2]{%
|
|
\begingroup
|
|
\def\scrlayer@current@pagestyle{#1}%
|
|
\@namedef{@ps@#1@initialhook}{}%
|
|
\@namedef{@ps@#1@hook}{}%
|
|
\@namedef{@ps@#1@backgroundhook}{}%
|
|
\@namedef{@ps@#1@foregroundhook}{}%
|
|
\@namedef{@ps@#1@oddpagehook}{}%
|
|
\@namedef{@ps@#1@evenpagehook}{}%
|
|
\@namedef{@ps@#1@onesidehook}{}%
|
|
\@namedef{@ps@#1@twosidehook}{}%
|
|
\@namedef{@ps@#1@floatpagehook}{}%
|
|
\@namedef{@ps@#1@nonfloatpagehook}{}%
|
|
\let\scr@opt@marker@initialhook\@empty
|
|
\let\scr@opt@marker@hook\@empty
|
|
\let\scr@opt@marker@backgroundhook\@empty
|
|
\let\scr@opt@marker@foregroundhook\@empty
|
|
\let\scr@opt@marker@oddpagehook\@empty
|
|
\let\scr@opt@marker@evenpagehook\@empty
|
|
\let\scr@opt@marker@onesidehook\@empty
|
|
\let\scr@opt@marker@twosidehook\@empty
|
|
\let\scr@opt@marker@floatpagehook\@empty
|
|
\let\scr@opt@marker@nonfloatpagehook\@empty
|
|
\FamilyExecuteOptions[.definelayerpagestyle]{KOMAarg}{#2}%
|
|
\def\reserved@a{\endgroup}%
|
|
\def\@sls@##1{%
|
|
\expandafter\ifx \csname scr@opt@marker@##1hook\endcsname\@empty\else
|
|
\expandafter\let\expandafter\reserved@b\csname @ps@#1@##1hook\endcsname
|
|
\l@addto@macro\reserved@a{\@namedef{@ps@#1@##1hook}}%
|
|
\expandafter\l@addto@macro\expandafter\reserved@a\expandafter{%
|
|
\expandafter{%
|
|
\reserved@b
|
|
}%
|
|
}%
|
|
\fi
|
|
}%
|
|
\@sls@{initial}%
|
|
\@sls@{}%
|
|
\@sls@{background}%
|
|
\@sls@{foreground}%
|
|
\@sls@{oddpage}%
|
|
\@sls@{evenpage}%
|
|
\@sls@{oneside}%
|
|
\@sls@{twoside}%
|
|
\@sls@{floatpage}%
|
|
\@sls@{nonfloatpage}%
|
|
\reserved@a
|
|
}
|
|
\newcommand*{\AddToLayerPageStyleOptions}[2]{%
|
|
\IfLayerPageStyleExists{#1}{%
|
|
\def\scrlayer@current@pagestyle{#1}%
|
|
\FamilyExecuteOptions[.definelayerpagestyle]{KOMAarg}{#2}%
|
|
}{%
|
|
\scrlayer@lpm@error{#1}{modifying}%
|
|
}%
|
|
}
|
|
\RequirePackage{scrlfile}
|
|
\BeforePackage{tagpdf}{%
|
|
\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
|
|
}%
|
|
}
|
|
\providecommand*{\scrlayer@beginartifact}[1]{}
|
|
\providecommand*{\scrlayer@endartifact}[1]{}
|
|
\newcommand*{\DeclarePageStyleAlias}[2]{%
|
|
\edef\reserved@a{\GetRealPageStyle{#2}}%
|
|
\scr@ifundefinedorrelax{ps@\reserved@a}{%
|
|
\PackageError{scrlayer}{unknown real page style `#2'}{%
|
|
You've tried to declare an alias for page style `#2',\MessageBreak
|
|
but the real page style of `#2' is undefined.\MessageBreak
|
|
You can define aliases, only if the real page style has been
|
|
defined.\MessageBreak
|
|
If you'll continue, the declaration will be ignored.%
|
|
}%
|
|
\DestroyRealLayerPageStyle{#1}%
|
|
\DestroyLayerAlias{#1}%
|
|
}{%
|
|
\@namedef{@ps@#1@alias}{#2}%
|
|
\@namedef{ps@#1}{\pagestyle{\@nameuse{@ps@#1@alias}}}%
|
|
}%
|
|
}
|
|
\newcommand*{\DeclareNewPageStyleAlias}[1]{%
|
|
\@ifundefined{ps@#1}{}{%
|
|
\PackageError{scrlayer}{%
|
|
Page style `#1' already defined%
|
|
}{%
|
|
You may use \string\DeclareNewPageStyleAlias\space to declare a new
|
|
page style only\MessageBreak
|
|
if that page style hasn't been declared or defined before.\MessageBreak
|
|
You may use either \string\ProvidePageStyleAlias\space to declare the
|
|
page style only\MessageBreak
|
|
if it hasn't been declared or defined before, or
|
|
\string\RedeclarePageStyleAlias\MessageBreak
|
|
to overwrite the former declaration or definition of the page
|
|
style\MessageBreak
|
|
Nevertheless, if you'll continue, the page style will be
|
|
overwritten\MessageBreak
|
|
by the new alias.%
|
|
}%
|
|
}%
|
|
\DeclarePageStyleAlias{#1}%
|
|
}
|
|
\newcommand*{\ProvidePageStyleAlias}[2]{%
|
|
\@ifundefined{ps@#1}{%
|
|
\DeclarePageStyleAlias{#1}{#2}%
|
|
}{%
|
|
\PackageInfo{scrlayer}{%
|
|
\string\ProvidePageStyleAlias{#1}{#2} ignored,\MessageBreak
|
|
because page style `#1' already\MessageBreak
|
|
exists%
|
|
}%
|
|
}%
|
|
}
|
|
\newcommand*{\RedeclarePageStyleAlias}[1]{%
|
|
\@ifundefined{ps@#1}{%
|
|
\PackageError{scrlayer}{%
|
|
Page style `#1' not yet defined%
|
|
}{%
|
|
You may use \string\RedeclarePageStyleAlias\space to declare a page
|
|
style only\MessageBreak
|
|
if that page style has already been declared or defined.\MessageBreak
|
|
You may use either \string\DeclareNewPageStyleAlias,
|
|
\string\DeclarePageStyleAlias,\MessageBreak
|
|
or \string\ProvidePageStyleAlias\space to declare that not yet
|
|
defined page style.\MessageBreak
|
|
Nevertheless, if you'll continue, the page style will be declared.%
|
|
}%
|
|
}{}%
|
|
\DeclarePageStyleAlias{#1}%
|
|
}
|
|
\newcommand*{\DestroyPageStyleAlias}[1]{%
|
|
\scr@ifundefinedorrelax{@ps@#1@alias}{}{%
|
|
\expandafter\let\csname @ps@#1@alias\endcsname\relax
|
|
\expandafter\let\csname ps@#1\endcsname\relax
|
|
}%
|
|
}
|
|
\newcommand*{\GetRealPageStyle}[1]{%
|
|
\scr@ifundefinedorrelax{@ps@#1@alias}{#1}{%
|
|
\expandafter\GetRealPageStyle\expandafter{%
|
|
\expandafter\csname @ps@#1@alias\expandafter\endcsname\expandafter}%
|
|
}%
|
|
}
|
|
\newcommand*{\IfLayerPageStyleExists}[1]{%
|
|
\scr@ifundefinedorrelax{ps@#1}{%
|
|
\expandafter\@secondoftwo
|
|
}{%
|
|
\scr@ifundefinedorrelax{@ps@#1@layers}{%
|
|
\scr@ifundefinedorrelax{@ps@#1@alias}{%
|
|
\expandafter\@secondoftwo
|
|
}{%
|
|
\expandafter\IfLayerPageStyleExists\expandafter{%
|
|
\expandafter\csname @ps@#1@alias\expandafter\endcsname\expandafter}%
|
|
}%
|
|
}{%
|
|
\expandafter\@firstoftwo
|
|
}%
|
|
}%
|
|
}
|
|
\newcommand*{\IfRealLayerPageStyleExists}[1]{%
|
|
\scr@ifundefinedorrelax{ps@#1}{%
|
|
\expandafter\@secondoftwo
|
|
}{%
|
|
\scr@ifundefinedorrelax{@ps@#1@layers}{%
|
|
\expandafter\@secondoftwo
|
|
}{%
|
|
\expandafter\@firstoftwo
|
|
}%
|
|
}%
|
|
}
|
|
\newcommand*{\IfLayerAtPageStyle}[2]{%
|
|
\IfLayerPageStyleExists{#1}{%
|
|
\begingroup
|
|
\edef\reserved@a{\GetRealPageStyle{#1}}%
|
|
\@tempswafalse
|
|
\Ifstr{#2}{}{%
|
|
\expandafter\ifx\csname @ps@\reserved@a @layers\endcsname\@empty
|
|
\@tempswatrue
|
|
\fi
|
|
}{%
|
|
\expandafter\ForEachLayerOfPageStyle\expandafter{%
|
|
\reserved@a}{\Ifstr{##1}{#2}{\aftergroup\@tempswatrue}{}}%
|
|
}%
|
|
\if@tempswa \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi
|
|
\expandafter\endgroup
|
|
}{%
|
|
\scrlayer@lpm@error{#1}{testing for layers}%
|
|
\expandafter\@gobbletwo
|
|
}%
|
|
}
|
|
\newcommand*{\IfSomeLayersAtPageStyle}[2]{%
|
|
\IfLayerPageStyleExists{#1}{%
|
|
\begingroup
|
|
\@tempswafalse
|
|
\@for \reserved@a:=#2\do {%
|
|
\scr@trim@spaces\reserved@a
|
|
\edef\reserved@a{\noexpand\IfLayerAtPageStyle{#1}{\reserved@a}}%
|
|
\reserved@a{\@tempswatrue}{}%
|
|
}%
|
|
\if@tempswa \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi
|
|
\expandafter\endgroup
|
|
}{%
|
|
\scrlayer@lpm@error{#1}{testing for layers}%
|
|
\expandafter\@gobbletwo
|
|
}%
|
|
}
|
|
\newcommand*{\IfLayersAtPageStyle}[2]{%
|
|
\IfLayerPageStyleExists{#1}{%
|
|
\begingroup
|
|
\@tempswatrue
|
|
\Ifstr{#2}{}{%
|
|
\edef\reserved@a{\GetRealPageStyle{#1}}%
|
|
\expandafter\ifx\csname @scr@\reserved@a @layers\endcsname\@empty \else
|
|
\@tempswafalse
|
|
\fi
|
|
}{%
|
|
\@for \reserved@a:=#2\do {%
|
|
\scr@trim@spaces\reserved@a
|
|
\edef\reserved@a{\noexpand\IfLayerAtPageStyle{#1}{\reserved@a}}%
|
|
\reserved@a{}{\@tempswafalse}%
|
|
}%
|
|
}%
|
|
\if@tempswa \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi
|
|
\expandafter\endgroup
|
|
}{%
|
|
\scrlayer@lpm@error{#1}{testing for layers}%
|
|
\expandafter\@gobbletwo
|
|
}%
|
|
}
|
|
\newcommand*{\DestroyRealLayerPageStyle}[1]{%
|
|
\IfRealLayerPageStyleExists{#1}{%
|
|
\expandafter\let\csname @ps@#1@initialhook\endcsname\relax
|
|
\expandafter\let\csname @ps@#1@hook\endcsname\relax
|
|
\expandafter\let\csname @ps@#1@backgroundhook\endcsname\relax
|
|
\expandafter\let\csname @ps@#1@foregroundhook\endcsname\relax
|
|
\expandafter\let\csname @ps@#1@oddpagehook\endcsname\relax
|
|
\expandafter\let\csname @ps@#1@evenpagehook\endcsname\relax
|
|
\expandafter\let\csname @ps@#1@onesidehook\endcsname\relax
|
|
\expandafter\let\csname @ps@#1@twosidehook\endcsname\relax
|
|
\expandafter\let\csname @ps@#1@floatpagehook\endcsname\relax
|
|
\expandafter\let\csname @ps@#1@nonfloatpagehook\endcsname\relax
|
|
\expandafter\let\csname @ps@#1@layers\endcsname\relax
|
|
\expandafter\let\csname ps@#1\endcsname\relax
|
|
\Ifstr{\currentpagestyle}{#1}{%
|
|
\def\currentpagestyle{scrlayer@empty}%
|
|
\let\@oddhead\@empty\let\@evenhead\@empty
|
|
\let\@oddfoot\@empty\let\@evenfoot\@empty
|
|
}{}%
|
|
\if@specialpage
|
|
\Ifstr{\@specialstyle}{#1}{%
|
|
\global\let\@specialstyle\relax
|
|
\global\@specialpagefalse
|
|
}{}%
|
|
\fi
|
|
}{%
|
|
\PackageInfo{scrlayer}{%
|
|
\string\DestroyRealLayerPageStyle{#1} ignored,\MessageBreak
|
|
because the layer page style isn't\MessageBreak
|
|
defined (any longer)%
|
|
}%
|
|
}%
|
|
}
|
|
\newcommand*{\currentpagestyle}{}
|
|
\PackageInfo{scrlayer}{patching LaTeX kernel macro \string\pagestyle}
|
|
\def\reserved@a{%
|
|
\iftoplevelpagestyle\edef\toplevelpagestyle{##1}\toplevelpagestylefalse\fi
|
|
\scrlayer@exec@before@pagestyle@hook{##1}%
|
|
}
|
|
\expandafter\expandafter\expandafter\renewcommand
|
|
\expandafter\expandafter\expandafter*%
|
|
\expandafter\expandafter\expandafter\pagestyle
|
|
\expandafter\expandafter\expandafter[%
|
|
\expandafter\expandafter\expandafter1%
|
|
\expandafter\expandafter\expandafter]%
|
|
\expandafter\expandafter\expandafter{%
|
|
\expandafter\reserved@a
|
|
\pagestyle{#1}%
|
|
\edef\currentpagestyle{\GetRealPageStyle{#1}}%
|
|
\scrlayer@exec@after@pagestyle@hook{#1}%
|
|
\toplevelpagestyletrue
|
|
}
|
|
\newif\iftoplevelpagestyle\toplevelpagestyletrue
|
|
\AtBeginDocument{%
|
|
\begingroup
|
|
\let\scrlayer@exec@before@pagestyle@hook\@gobble
|
|
\let\scrlayer@exec@after@pagestyle@hook\@gobble
|
|
\def\ps@test{}%
|
|
\pagestyle{test}%
|
|
\Ifstr{\currentpagestyle}{test}{}{%
|
|
\PackageError{scrlayer}{package incompatibility detected}{%
|
|
Another package redefines \string\pagestyle\space incompatible with
|
|
scrlayer.\MessageBreak
|
|
This disables setting of \string\currentpagestyle\space and may
|
|
be serious.\MessageBreak
|
|
Maybe you could prevent this loading package scrlayer
|
|
later.\MessageBreak
|
|
If not you should either not use scrlayer or not the other
|
|
package,\MessageBreak
|
|
that redefines \string\pagestyle.%
|
|
}%
|
|
}%
|
|
\endgroup
|
|
}
|
|
\newcommand*{\BeforeSelectAnyPageStyle}[1]{%
|
|
\expandafter\renewcommand\expandafter*%
|
|
\expandafter\scrlayer@exec@before@pagestyle@hook
|
|
\expandafter[\expandafter1\expandafter]\expandafter{%
|
|
\scrlayer@exec@before@pagestyle@hook{##1}#1}%
|
|
}
|
|
\newcommand*{\scrlayer@exec@before@pagestyle@hook}[1]{}
|
|
\newcommand*{\AfterSelectAnyPageStyle}[1]{%
|
|
\expandafter\renewcommand\expandafter*%
|
|
\expandafter\scrlayer@exec@after@pagestyle@hook
|
|
\expandafter[\expandafter1\expandafter]\expandafter{%
|
|
\scrlayer@exec@after@pagestyle@hook{##1}#1}%
|
|
}
|
|
\newcommand*{\scrlayer@exec@after@pagestyle@hook}[1]{}
|
|
\newcommand*{\scrlayerAddToInterface}[2][\@currname.\@currext]{%
|
|
\begingroup
|
|
\edef\reserve@a{%
|
|
\noexpand\scrlayerAddCsToInterface[#1]{\expandafter\@gobble\string #2}%
|
|
}%
|
|
\expandafter\endgroup\reserve@a
|
|
}
|
|
\newcommand{\scrlayerAddCsToInterface}[3][\@currname.\@currext]{%
|
|
\@ifundefined{scrlayer@#1@commandlist}{%
|
|
\PackageError{scrlayer}{unkown interface `#1'}{%
|
|
I've been told to add a command sequence to an interface, that hasn't
|
|
been\MessageBreak
|
|
defined yet. Please initialise every interface using
|
|
\string\InitInterface\space before\MessageBreak
|
|
trying to add command sequences to it.\MessageBreak
|
|
If you'll continue, the command will be ignored.%
|
|
}%
|
|
}{%
|
|
\@ifundefined{#2}{%
|
|
\scrlayer@AddCsToInterface[#1]{#2}#3%
|
|
}{%
|
|
\@ifundefined{scrlayer@command@#2}{%
|
|
\ifscrlayer@forceoverwrite
|
|
\PackageWarning{scrlayer}{%
|
|
Overloading `\@backslashchar#2'!\MessageBreak
|
|
scrlayer detected, that the given command\MessageBreak
|
|
has been defined already, when\MessageBreak
|
|
`#1' tried to define it again.\MessageBreak
|
|
Nevertheless, while scrlayer is in force overwrite\MessageBreak
|
|
mode currently, the original definition will be\MessageBreak
|
|
removed%
|
|
}%
|
|
\expandafter\let\csname #2\endcsname\relax
|
|
\scrlayer@AddCsToInterface[#1]{#2}#3%
|
|
\else
|
|
\PackageError{scrlayer}{cannot define `\@backslashchar#2'}{%
|
|
scrlayer interface `#1' has tried to
|
|
define command\MessageBreak
|
|
`\@backslashchar#2', but this has already been defined\MessageBreak
|
|
and is not part of another interface. So it cannot be
|
|
defined.\MessageBreak
|
|
Before continuing you should solve this conflict.\MessageBreak
|
|
Nevertheless, you may use option `forceoverwrite' to get only a
|
|
warning instead\MessageBreak
|
|
of an error. But this wouldn't solve the problem at
|
|
all!\MessageBreak
|
|
This error is almost fatal, so you should abort the LaTeX
|
|
run.%
|
|
}%
|
|
\fi
|
|
}{%
|
|
\ifscrlayer@autoremoveinterfaces
|
|
\PackageInfo{scrlayer}{%
|
|
already define interface command\MessageBreak
|
|
`\@backslashchar#2' detected.\MessageBreak
|
|
Command has been defined by interface\MessageBreak
|
|
`\@nameuse{scrlayer@command@#2}'.\MessageBreak
|
|
To continue installation of interface\MessageBreak
|
|
`#1', interface\MessageBreak
|
|
`\@nameuse{scrlayer@command@#2}' will\MessageBreak
|
|
be removed%
|
|
}%
|
|
\@nameuse{scrlayer@\@nameuse{scrlayer@command@#2}@onremove}%
|
|
\begingroup
|
|
\def\@elt##1{%
|
|
\aftergroup\let\aftergroup##1\aftergroup\relax
|
|
}%
|
|
\@nameuse{scrlayer@\@nameuse{scrlayer@command@#2}@commandlist}%
|
|
\endgroup
|
|
\expandafter\let\csname
|
|
scrlayer@\@nameuse{scrlayer@command@#2}@commandlist\endcsname\relax
|
|
\expandafter\let\csname
|
|
scrlayer@\@nameuse{scrlayer@command@#2}@onremove\endcsname\relax
|
|
\expandafter\let\csname #2\endcsname\relax
|
|
\scrlayer@AddCsToInterface[#1]{#2}#3%
|
|
\else
|
|
\PackageError{scrlayer}{cannot define `\@backslashchar#2'}{%
|
|
Interface command `\@backslashchar#2' has already
|
|
been\MessageBreak
|
|
defined by interface
|
|
`\@nameuse{scrlayer@command@#2}'.\MessageBreak
|
|
So it cannot be defined again.\MessageBreak
|
|
You may try scrlayer option `autoremoveinterfaces' to
|
|
automatically remove\MessageBreak
|
|
older interfaces in such conflict situations.\MessageBreak
|
|
For now, it's recommended so solve the problem before you'll
|
|
continue.%
|
|
}%
|
|
\fi
|
|
}%
|
|
}%
|
|
}%
|
|
}%
|
|
\newcommand*\scrlayer@AddCsToInterface[2][\@currname.\@currext]{%
|
|
\expandafter\expandafter\expandafter\def\expandafter
|
|
\csname scrlayer@#1@commandlist\expandafter\expandafter\expandafter\endcsname
|
|
\expandafter\expandafter\expandafter{%
|
|
\csname scrlayer@#1@commandlist\expandafter\endcsname
|
|
\expandafter\@elt\csname #2\endcsname
|
|
}%
|
|
\@namedef{scrlayer@command@#2}{#1}%
|
|
}
|
|
\newcommand*{\scrlayerInitInterface}[1][\@currname.\@currext]{%
|
|
\@ifundefined{scrlayer@#1@commandlist}{%
|
|
\@namedef{scrlayer@#1@commandlist}{}%
|
|
}{%
|
|
\begingroup
|
|
\def\@elt##1{\space\space\string##1\MessageBreak}%
|
|
\PackageError{scrlayer}{interface `#1' already initialised}{%
|
|
You've tried to initialise scrlayer interface `#1',\MessageBreak
|
|
but an interface of this name has been initialised
|
|
already.\MessageBreak
|
|
Here's a list of all macros of the already initialised
|
|
interface:\MessageBreak
|
|
\@nameuse{scrlayer@#1@commandlist}.%
|
|
If you'll continue, this re-initialisation will be ignored.%
|
|
}%
|
|
\endgroup
|
|
}%
|
|
}
|
|
\newcommand*{\scrlayerOnAutoRemoveInterface}[2][\@currname.\@currext]{%
|
|
\@ifundefined{scrlayer@#1@onremove}{\@namedef{scrlayer@#1@onremove}{}}{}%
|
|
\expandafter\l@addto@macro\csname scrlayer@#1@onremove\endcsname{#2}%
|
|
}
|
|
%%% From File: $Id: scrlayer.dtx 3411 2019-11-28 09:11:27Z kohm $
|
|
%%% (run: final)
|
|
\DeclareNewPageStyleByLayers{@everystyle@}{}
|
|
\RedeclarePageStyleByLayers{empty}{}
|
|
%%% From File: $Id: scrlogo.dtx 2640 2017-05-08 09:36:55Z kohm $
|
|
\@ifundefined{KOMAScript}{%
|
|
\DeclareRobustCommand{\KOMAScript}{\textsf{K\kern.05em O\kern.05em%
|
|
M\kern.05em A\kern.1em-\kern.1em Script}}}{}
|
|
\endinput
|
|
%%
|
|
%% End of file `scrlayer.sty'.
|
|
|