diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/koma-script/scrkbase.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/koma-script/scrkbase.sty | 351 |
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}% |