summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/koma-script/scrkbase.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/koma-script/scrkbase.sty')
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrkbase.sty351
1 files changed, 286 insertions, 65 deletions
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrkbase.sty b/Master/texmf-dist/tex/latex/koma-script/scrkbase.sty
index bfc4d9fcf7a..63f70bf603a 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrkbase.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrkbase.sty
@@ -44,7 +44,7 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://www.ctan.org/pub/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 1926 2015-02-07 13:38:11Z kohm $
+%%% From File: $Id: scrkernel-version.dtx 2081 2015-04-23 06:46:09Z kohm $
\begingroup
\catcode`\@11\relax
\ifx\KOMAScriptVersion\undefined
@@ -66,47 +66,267 @@
\fi
}
\fi
- \@CheckKOMAScriptVersion{2015/02/07 v3.16 KOMA-Script}%
+ \@CheckKOMAScriptVersion{2015/04/23 v3.17 KOMA-Script}%
\endgroup
-%%% From File: $Id: scrkernel-basics.dtx 1897 2015-01-02 12:04:12Z kohm $
+\providecommand*{\scr@pkgextension}{\@pkgextension}
+\AtBeginDocument{%
+ \let\scr@pkgextension\@pkgextension
+}
+%%% From File: $Id: scrkernel-basics.dtx 2011 2015-03-17 11:39:55Z kohm $
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\ProvidesPackage{%
scrkbase%
}[%
- 2015/02/07 v3.16 KOMA-Script
+ 2015/04/23 v3.17 KOMA-Script
package (%
KOMA-Script-dependent
basics and keyval usage)]
\RequirePackage{scrbase}[\KOMAScriptVersion]
\newcommand*{\KOMA@key}[1][.\@currname.\@currext]{%
- \DefineFamilyMember{KOMA}%
- \DefineFamilyKey[#1]{KOMA}%
+ \DefineFamilyMember[{#1}]{KOMA}%
+ \@ifundefined{scr@kav@KOMA#1}{\@namedef{scr@kav@KOMA#1}{}}{}%
+ \DefineFamilyKey[{#1}]{KOMA}%
+}
+\newcommand*{\KOMA@kav@add}[3]{%
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@add{#1}%
+ }{%
+ \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{\do{{#2}{#3}}}%
+ }%
+}
+\newcommand*{\KOMA@kav@xadd}[3]{%
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@xadd{#1}%
+ }{%
+ \protected@edef\reserved@a{{#2}{#3}}%
+ \expandafter\l@addto@macro\csname scr@kav@KOMA#1\expandafter\endcsname
+ \expandafter{\expandafter\do\expandafter{\reserved@a}}%
+ }%
+}
+\newcommand*{\KOMA@kav@remove}[3]{%
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@remove{#1}%
+ }{%
+ \begingroup
+ \def\reserved@a{\endgroup\@namedef{scr@kav@KOMA#1}{}}%
+ \edef\reserved@b{\detokenize{{#2}{#3}}}%
+ \def\do##1{%
+ \edef\reserved@c{\detokenize{##1}}%
+ \ifx\reserved@b\reserved@c\else
+ \l@addto@macro\reserved@a{%
+ \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{%
+ \do{##1}%
+ }%
+ }%
+ \fi
+ }%
+ \@nameuse{scr@kav@KOMA#1}%
+ \reserved@a
+ }%
+}
+\newcommand*{\KOMA@kav@removekey}[2]{%
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@removekey{#1}%
+ }{%
+ \begingroup
+ \def\reserved@a{\endgroup\@namedef{scr@kav@KOMA#1}{}}%
+ \edef\reserved@b{\detokenize{#2}}%
+ \def\reserved@d##1##2{\edef\reserved@c{\detokenize{##1}}}%
+ \def\do##1{%
+ \reserved@d##1\relax
+ \ifx\reserved@b\reserved@c\else
+ \l@addto@macro\reserved@a{%
+ \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{%
+ \do{##1}%
+ }%
+ }%
+ \fi
+ }%
+ \@nameuse{scr@kav@KOMA#1}%
+ \reserved@a
+ }%
+}
+\newcommand*{\KOMA@kav@replacevalue}[3]{%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@replacevalue{#1}%
+ }{%
+ \KOMA@kav@removekey{#1}{#2}%
+ \KOMA@kav@add{#1}{#2}{#3}%
+ }%
+ \fi
+}
+\newcommand*{\KOMA@kav@xreplacevalue}[3]{%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@replacevalue{#1}%
+ }{%
+ \KOMA@kav@removekey{#1}{#2}%
+ \KOMA@kav@xadd{#1}{#2}{#3}%
+ }%
+ \fi
+}
+\newcommand*{\KOMA@kav@replacebool}[3]{%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@replacebool{#1}%
+ }{%
+ \KOMA@kav@remove{#1}{#2}{false}%
+ \KOMA@kav@remove{#1}{#2}{true}%
+ \expandafter\ifx\csname if#3\expandafter\endcsname
+ \csname iftrue\endcsname
+ \KOMA@kav@xadd{#1}{#2}{true}%
+ \else
+ \KOMA@kav@xadd{#1}{#2}{false}%
+ \fi
+ }%
+ \fi
+}
+\newcommand*{\KOMA@kav@defall}[2]{%
+ \@ifundefined{scr@kav@KOMA#2}{%
+ \KOMA@internal@error\KOMA@kav@defall{#1}%
+ }{%
+ \begingroup
+ \let\reserved@a\@empty
+ \def\reserved@b##1##2{\l@addto@macro\reserved@a{,{##1=##2}}}%
+ \def\do##1{\reserved@b##1}%
+ \@nameuse{scr@kav@KOMA#2}%
+ \ifx\reserved@a\@empty
+ \def\reserved@b{\endgroup\let#1\@empty}%
+ \else
+ \edef\reserved@b{%
+ \unexpanded{\endgroup\def#1}{%
+ \unexpanded
+ \expandafter\expandafter\expandafter{%
+ \expandafter\@gobble\reserved@a}}}%
+ \fi
+ \reserved@b
+ }%
+}
+\newcommand*{\KOMA@kav@defone}[3]{%
+ \@ifundefined{scr@kav@KOMA#2}{%
+ \KOMA@internal@error\KOMA@kav@defall{#1}%
+ }{%
+ \begingroup
+ \let\reserved@a\@empty
+ \def\reserved@b##1##2{%
+ \ifstr{##1}{#3}{\l@addto@macro\reserved@a{,{##2}}}{}%
+ }%
+ \def\do##1{\reserved@b##1}%
+ \@nameuse{scr@kav@KOMA#2}%
+ \ifx\reserved@a\@empty
+ \def\reserved@b{\endgroup\let#1\@empty}%
+ \else
+ \edef\reserved@b{%
+ \unexpanded{\endgroup\def#1}{%
+ \unexpanded
+ \expandafter\expandafter\expandafter{%
+ \expandafter\@gobble\reserved@a}}}%
+ \fi
+ \reserved@b
+ }%
+}
+\newcommand*{\KOMA@internal@error}[2]{%
+ \PackageError{scrkbase}{internal error using \string#1{#2}}{%
+ You've found an internal error either in KOMA-Script or a third
+ party\MessageBreak
+ definition, that uses KOMA-Script internal macros.\MessageBreak
+ Please send a bug report with a minimal but complete example,
+ that\MessageBreak
+ shows this error, to komascript at gmx dot info or report it
+ at\MessageBreak
+ <http://www.komascript.de/forum/20> (you need an account to do so).%
+ }%
}
\newcommand*{\KOMAProcessOptions}{\FamilyProcessOptions{KOMA}}
\@onlypreamble\KOMAProcessOptions
\KOMAProcessOptions\relax
-%%% From File: $Id: scrkernel-fonts.dtx 1829 2014-11-21 09:27:52Z kohm $
+%%% From File: $Id: scrkernel-fonts.dtx 2063 2015-04-03 11:55:42Z kohm $
%%% From File: $Id: scrlfile.dtx 1525 2013-11-22 12:57:29Z mjk $
\RequirePackage{scrlfile}[%
- 2015/02/07 v3.16 KOMA-Script
+ 2015/04/23 v3.17 KOMA-Script
]
-%%% From File: $Id: scrkernel-basics.dtx 1897 2015-01-02 12:04:12Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 2011 2015-03-17 11:39:55Z kohm $
\newcommand*{\KOMAExecuteOptions}[1][.\@currname.\@currext]{%
\FamilyExecuteOptions[#1]{KOMA}%
}
\newcommand*{\KOMAoptions}{\FamilyOptions{KOMA}}
+\newcommand*{\KOMAoptionsOf}[2][\@firstofone]{%
+ \scr@ifundefinedorrelax{scr@kav@KOMA.#2}{%
+ \PackageError{scrkbase}{\string\KOMAoptionsOf\space not supported}{%
+ #2 is not the name of a KOMA-Script package or\MessageBreak
+ KOMA-Script class, that supports \string\KOMAoptionsOf.}%
+ }{%
+ \begingroup
+ \def\reserved@a{#1}%
+ \KOMA@kav@defall\reserved@b{.#2}%
+ \expandafter\expandafter\expandafter\endgroup
+ \expandafter\reserved@a\expandafter{\reserved@b}%
+ }%
+}
+\newcommand*{\KOMAoptionOf}[3][\@firstofone]{%
+ \scr@ifundefinedorrelax{scr@kav@KOMA.#2}{%
+ \PackageError{scrkbase}{\string\KOMAoptionOf\space not supported}{%
+ #2 is not the name of a KOMA-Script package or\MessageBreak
+ KOMA-Script class, that supports \string\KOMAoptionOf.}%
+ }{%
+ \begingroup
+ \def\reserved@a{#1}%
+ \KOMA@kav@defone\reserved@b{.#2}{#3}%
+ \ifx\reserved@b\@empty
+ \PackageWarning{scrkbase}{option `#3' for `#2' unset}%
+ \endgroup
+ \else
+ \expandafter\expandafter\expandafter\endgroup
+ \expandafter\reserved@a\expandafter{\reserved@b}%
+ \fi
+ }%
+}
\newcommand*{\AfterKOMAoptions}{}
\let\AfterKOMAoptions\AtEndOfFamilyOptions
\newcommand*{\KOMAoption}{\FamilyOption{KOMA}}
\newcommand*{\KOMA@unknown@keyval}{\FamilyUnknownKeyValue{KOMA}}
-\newcommand*{\KOMA@ifkey}{%
- \DefineFamilyMember{KOMA}%
- \FamilyBoolKey{KOMA}%
+\newcommand*{\KOMA@ifkey}[2][.\@currname.\@currext]{%
+ \begingroup\edef\reserved@a{\noexpand\KOMA@@ifkey{#1}{#2}}%
+ \expandafter\endgroup\reserved@a
+}
+\newcommand*{\KOMA@@ifkey}[3]{%
+ \@ifundefined{if#3}{%
+ \expandafter\newif\csname if#3\endcsname
+ }{}%
+ \KOMA@key[{#1}]{#2}[true]{%
+ \KOMA@set@ifkey{#2}{#3}{##1}%
+ \KOMA@kav@replacebool{#1}{#2}{#3}%
+ }%
+ \csname if#3\endcsname
+ \KOMA@kav@xadd{#1}{#2}{true}%
+ \else
+ \KOMA@kav@xadd{#1}{#2}{false}%
+ \fi
}
\newcommand*{\KOMA@set@ifkey}{\FamilySetBool{KOMA}}
-\newcommand*{\KOMA@ncmdkey}{%
- \DefineFamilyMember{KOMA}%
- \FamilyNumericalKey{KOMA}%
+\newcommand*{\KOMA@ncmdkey}[2][.\@currname.\@currext]{%
+ \begingroup\edef\reserved@a{\noexpand\KOMA@@ncmdkey{#1}{#2}}%
+ \expandafter\endgroup\reserved@a
+}
+\newcommand*{\KOMA@@ncmdkey}[2]{%
+ \@ifnextchar [%]
+ {\KOMA@@@ncmdkey{#1}{#2}}{\KOMA@@@ncmdkey{#1}{#2}[]}
+}
+\newcommand*{\KOMA@@@cmdkey}{}
+\def\KOMA@@@ncmdkey#1#2[#3]#4#5{%
+ \@ifundefined{#4}{\@namedef{#4}{0}}{}%
+ \ifx\relax#3\relax
+ \KOMA@key[{#1}]{#2}{%
+ \KOMA@set@ncmdkey{#2}{#4}{#5}{##1}%
+ \KOMA@kav@replacevalue{#1}{#2}{##1}%
+ }%
+ \else
+ \KOMA@key[{#1}]{#2}[{#3}]{%
+ \KOMA@set@ncmdkey{#2}{#4}{#5}{##1}%
+ \KOMA@kav@replacevalue{#1}{#2}{##1}%
+ }%
+ \fi
}
\newcommand*{\KOMA@set@ncmdkey}{\FamilySetNumerical{KOMA}}
\newcommand*{\KOMA@DeclareDeprecatedOption}{%
@@ -190,7 +410,7 @@
}%
\KOMAoptions{#3}%
}
-%%% From File: $Id: scrkernel-fonts.dtx 1829 2014-11-21 09:27:52Z kohm $
+%%% From File: $Id: scrkernel-fonts.dtx 2063 2015-04-03 11:55:42Z kohm $
\newcommand*{\IfExistskomafont}[1]{%
\@ifundefined{scr@fnt@#1}{%
\@ifundefined{scr@fnt@instead@#1}{\@secondoftwo}{\@firstoftwo}%
@@ -287,69 +507,70 @@
}
\newcommand*{\usesizeofkomafont}[1]{%
\begingroup
- \let\color\@gobble\let\normalcolor\relax
- \@tempcnta=\currentgrouplevel
- \usekomafont{#1}{%
- \ifnum \currentgrouplevel>\numexpr\@tempcnta\relax
- \edef\reserved@a{\noexpand\egroup\noexpand\endgroup
- \noexpand\fontsize{\f@size}{\f@baselineskip}%
- \noexpand\bgroup}%
- \else
- \edef\reserved@a{\noexpand\endgroup
- \noexpand\fontsize{\f@size}{\f@baselineskip}}%
- \fi
- \reserved@a
+ \scr@prepareforkomafont
+ \sbox\@tempboxa{%
+ \usekomafont{#1}{%
+ \xdef\g@scr@usefont{%
+ \noexpand\fontsize{\f@size}{\f@baselineskip}\noexpand\selectfont
+ }%
+ }%
}%
- \selectfont
+ \endgroup
+ \g@scr@usefont
}
\newcommand*{\usefamilyofkomafont}{\use@ofkomafont{family}}
\newcommand*{\useseriesofkomafont}{\use@ofkomafont{series}}
-\newcommand*{\useshaperofkomafont}{\use@ofkomafont{shape}}
+\newcommand*{\useshapeofkomafont}{\use@ofkomafont{shape}}
\newcommand*{\useencodingofkomafont}{\use@ofkomafont{encoding}}
\newcommand*{\usefontofkomafont}[1]{%
\begingroup
- \let\color\@gobble\let\normalcolor\relax
- \@tempcnta=\currentgrouplevel
- \usekomafont{#1}{%
- \ifnum \currentgrouplevel>\numexpr\@tempcnta\relax
- \edef\reserved@a{\noexpand\egroup\noexpand\endgroup
+ \scr@prepareforkomafont
+ \sbox\@tempboxa{%
+ \usekomafont{#1}{%
+ \xdef\g@scr@usefont{%
\noexpand\fontsize{\f@size}{\f@baselineskip}%
- \noexpand\fontfamily{\f@family}%
- \noexpand\fontseries{\f@series}%
- \noexpand\fontshape{\f@shape}%
- \noexpand\fontencoding{\f@encoding}%
- \noexpand\bgroup}%
- \else
- \edef\reserved@a{\noexpand\endgroup
- \noexpand\fontsize{\f@size}{\f@baselineskip}}%
- \noexpand\fontfamily{\f@family}%
- \noexpand\fontseries{\f@series}%
- \noexpand\fontshape{\f@shape}%
- \noexpand\fontencoding{\f@encoding}%
- \fi
- \reserved@a
+ \noexpand\usefont{\f@encoding}{\f@family}{\f@series}{\f@shape}%
+ }%
+ }%
}%
- \selectfont
+ \endgroup
+ \g@scr@usefont
}
\newcommand*{\use@ofkomafont}[2]{%
\begingroup
- \let\color\@gobble\let\normalcolor\relax
- \@tempcnta=\currentgrouplevel
- \usekomafont{#2}{%
- \ifnum \currentgrouplevel>\numexpr\@tempcnta\relax
- \edef\reserved@a{\noexpand\egroup\noexpand\endgroup
- \expandafter\noexpand\csname font#1\endcsname
- {\csname f@#1\endcsname}%
- \noexpand\bgroup}%
- \else
- \edef\reserved@a{\noexpand\endgroup
- \expandafter\noexpand\csname font#1\endcsname
- {\csname f@#1\endcsname}%
+ \scr@prepareforkomafont
+ \sbox\@tempboxa{%
+ \usekomafont{#2}{%
+ \xdef\g@scr@usefont{%
+ \expandafter\noexpand
+ \csname font#1\endcsname{\csname f@#1\endcsname}\noexpand\selectfont
}%
- \fi
- \reserved@a
+ }%
}%
- \selectfont
+ \endgroup
+ \g@scr@usefont
+}
+\newcommand*{\g@scr@usefont}{%
+ \PackageError{scrkbase}{%
+ undefined usage of \string\g@scr@usefont
+ }{%
+ \string\g@scr@usefont\space is an internal macro of KOMA-Script and
+ should\MessageBreak
+ not be used this way.\MessageBreak
+ This may be an internal error of KOMA-Script, a mistake of a package
+ author,\MessageBreak
+ or a mistake of the user.%
+ }%
+}
+\newcommand*{\scr@komafontrelaxlist}{%
+ \do\color \do\normalcolor
+ \do\uppercase \do\lowercase \do\MakeUppercase \do\MakeLowercase
+}
+\newcommand*{\scr@prepareforkomafont}{%
+ \long\def\do##1{\let##1\relax}\scr@komafontrelaxlist
+}
+\newcommand*{\addtokomafontrelaxlist}[1]{%
+ \l@addto@macro\scr@komafontrelaxlist{\do#1}%
}
\newcommand*{\newkomafont}[3][\relax]{%
\expandafter\newcommand\expandafter*\csname @#2font\endcsname{#3}%