summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/koma-script/scrbase.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/koma-script/scrbase.sty')
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrbase.sty813
1 files changed, 813 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrbase.sty b/Master/texmf-dist/tex/latex/koma-script/scrbase.sty
new file mode 100644
index 00000000000..648b5fdfa2f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/koma-script/scrbase.sty
@@ -0,0 +1,813 @@
+%%
+%% This is file `scrbase.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% scrkvers.dtx (with options: `package,scrbase')
+%% scrkbase.dtx (with options: `package,option,base')
+%% scrklang.dtx (with options: `package,option,base')
+%% scrlfile.dtx (with options: `load')
+%% scrkbase.dtx (with options: `package,body,base')
+%% scrklang.dtx (with options: `package,body,base')
+%% scrlogo.dtx (with options: `logo')
+%%
+%% Copyright (c) 1994-2007
+%% Markus Kohm and any individual authors listed elsewhere in this file.
+%%
+%% 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 are not allowed to distribute it.
+%%
+%% 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
+%% LaTeX2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
+%% standard classes created by The LaTeX3 Project 1994-1996.
+%%
+%%% From File: scrkvers.dtx
+\begingroup
+ \makeatletter
+ \ifx\KOMAScriptVersion\undefined
+ \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ \gdef\KOMAScriptVersion{#1}%
+ }%
+ \else
+ \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ \def\@tempa{#1}%
+ \ifx\KOMAScriptVersion\@tempa\else
+ \@latex@warning@no@line{%
+ \noexpand\KOMAScriptVersion\space is
+ `\KOMAScriptVersion',\MessageBreak
+ but `#1' was expected!\MessageBreak
+ You should not use classes, packages or files
+ from\MessageBreak
+ different KOMA-Script versions%
+ }%
+ \fi
+ }
+ \fi
+ \@CheckKOMAScriptVersion{2008/11/03 v3.00 KOMA-Script}%
+\endgroup
+%%% From File: scrkbase.dtx
+\ProvidesPackage{%
+ scrbase%
+}[%
+ \KOMAScriptVersion\space package
+ (KOMA-Script-independent basics and keyval usage)]
+\RequirePackage{keyval}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname ifcsname\endcsname\relax
+ \newcommand{\scr@ifundefinedorrelax}[1]{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname #1\endcsname\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }
+\else
+ \newcommand{\scr@ifundefinedorrelax}[1]{%
+ \ifcsname #1\endcsname
+ \expandafter\ifx\csname #1\endcsname\relax
+ \expandafter\expandafter\expandafter\@firstoftwo
+ \else
+ \expandafter\expandafter\expandafter\@secondoftwo
+ \fi
+ \else
+ \expandafter\@firstoftwo
+ \fi
+ }
+\fi
+\newcommand*{\DefineFamily}[1]{%
+ \scr@ifundefinedorrelax{#1@key@familylist}{%
+ \@namedef{#1@key@familylist}{}%
+ }{}%
+}
+\newcommand*{\scr@if@family}[2]{%
+ \scr@ifundefinedorrelax{#1@key@familylist}{%
+ \PackageError{scrbase}{%
+ unknown family `#1'%
+ }{%
+ You've tried to #2 for family `#1'.\MessageBreak
+ This my be done only for previous defined families.\MessageBreak
+ You should call `\string\DefineFamily{#1}' first.%
+ }%
+ }%
+}
+\newcommand*{\DefineFamilyMember}[2][.\@currname.\@currext]{%
+ \scr@if@family{#2}{define a family member}{%
+ \edef\reserved@a{%
+ \noexpand\in@{#2#1,}{\csname #2@key@familylist\endcsname}}%
+ \reserved@a
+ \ifin@\else
+ \expandafter\edef\csname #2@key@familylist\endcsname{%
+ \@nameuse{#2@key@familylist}#2#1,}%
+ \fi
+ }%
+}
+\newcommand*{\scr@if@familymember}[3]{%
+ \scr@if@family{#2}{#3}{%
+ \edef\reserved@a{%
+ \noexpand\in@{#2#1,}{\csname #2@key@familylist\endcsname}}%
+ \reserved@a
+ \ifin@
+ \expandafter\@firstofone
+ \else
+ \PackageError{scrbase}{%
+ unknown member `#1' at family `#2'%
+ }{%
+ You've tried to #3 for member `#1' of family `#2'.\MessageBreak
+ This my be done only for previous defined family members.\MessageBreak
+ You should call `\string\DefineFamilyMember[{#1}]{#2}' first.%
+ }%
+ \expandafter\@gobble
+ \fi
+ }%
+}
+\newcommand*{\DefineFamilyKey}[2][.\@currname.\@currext]{%
+ \scr@if@familymember{#1}{#2}{define a key}{%
+ \define@key{#2#1}%
+ }%
+}
+\newcommand*{\@globaloptionslist}{}
+\let\@globaloptionslist\@classoptionslist
+\scr@ifundefinedorrelax{XKV@classoptionslist}{}{%
+ \ifx\XKV@classoptionslist\@empty\else
+ \let\@globaloptionslist\XKV@classoptionslist
+ \fi
+}
+\newcommand*{\FamilyProcessOptions}[2][.\@currname.\@currext]{%
+ \let\ds@\@empty
+ \edef\@curroptions{\@ptionlist{\@currname.\@currext}}%
+ \ifx\@currext\@clsextension\else
+ \@for\CurrentOption:=\@globaloptionslist\do{%
+ \ifx\CurrentOption\@empty\else
+ \@expandtwoargs\in@{,\CurrentOption,}{,\@declaredoptions,}%
+ \ifin@
+ \@use@ption
+ \expandafter\let\csname ds@\CurrentOption\endcsname\@empty
+ \else
+ \scr@optiontest{#2}\CurrentOption{}{%
+ \@use@ption
+ \@expandtwoargs\setkeys{#2}%
+ \CurrentOption
+ }%
+ \scr@optiontest{#2#1}\CurrentOption{}{%
+ \@use@ption
+ \@expandtwoargs\setkeys{#2#1}%
+ \CurrentOption
+ }%
+ \fi
+ \fi
+ }%
+ \fi
+ \@for\CurrentOption:=\@curroptions\do{%
+ \@use@ption
+ \scr@ifundefinedorrelax{ds@\CurrentOption}{%
+ \scr@optiontest{#2}\CurrentOption{%
+ \scr@optiontest{#2#1}\CurrentOption{%
+ \default@ds
+ }{%
+ \edef\reserved@a{%
+ \noexpand\setkeys{#2#1}{\CurrentOption}%
+ \noexpand\def\noexpand\CurrentOption{\CurrentOption}%
+ }\reserved@a
+ }%
+ }{%
+ \@expandtwoargs\setkeys{#2}%
+ \CurrentOption
+ \scr@optiontest{#2#1}\CurrentOption{}{%
+ \@expandtwoargs\setkeys{#2#1}%
+ \CurrentOption
+ }%
+ }%
+ }{%
+ }%
+ }%
+ \@for\CurrentOption:=\@declaredoptions\do{%
+ \expandafter\let\csname ds@\CurrentOption\endcsname\relax}%
+ \let\CurrentOption\@empty
+ \let\@fileswith@pti@ns\@@fileswith@pti@ns
+ \AtEndOfPackage{\let\@unprocessedoptions\relax}%
+}
+\@onlypreamble\FamilyProcessOptions
+\newcommand*{\scr@optiontest}[2]{%
+ \edef\reserved@a{\noexpand\scr@pti@ntest{#1}#2=\noexpand\@nil}%
+ \reserved@a
+}
+\newcommand*{\scr@pti@ntest}{}
+\def\scr@pti@ntest#1#2=#3\@nil{\scr@ifundefinedorrelax{KV@#1@#2}}
+\newcommand*{\dont@let@as@internal@defined}{/}
+\newif\if@let@as@internalonly@defined\@let@as@internalonly@definedfalse
+\DefineFamily{KOMA}
+\DefineFamilyMember{KOMA}
+\DefineFamilyKey{KOMA}{internalonly}[\relax]{%
+ \ifx\relax#1\relax
+ \@let@as@internalonly@definedtrue
+ \else
+ \@let@as@internalonly@definedfalse
+ \begingroup
+ \@expandtwoargs\in@{#1}\dont@let@as@internal@defined
+ \expandafter\endgroup
+ \ifin@\else\g@addto@macro\dont@let@as@internal@defined{#1/}\fi
+ \fi
+}
+\FamilyProcessOptions{KOMA}\relax
+%%% From File: scrklang.dtx
+%%% From File: scrlfile.dtx
+\def\scrlfileversion{2008/07/09 v3.00}
+\edef\@tempa{\noexpand\RequirePackage{scrlfile}[\scrlfileversion]}
+\@tempa
+%%% From File: scrkbase.dtx
+\newif\if@atdocument
+\AtBeginDocument{\@atdocumenttrue}
+\@onlypreamble\@atdocumentrue
+\@onlypreamble\@atdocumentfalse
+\newcommand*{\let@as@internal@defined}[1]{%
+ \begingroup
+ \if@let@as@internalonly@defined
+ \in@true
+ \else
+ \@expandtwoargs\in@{/#1/}\dont@let@as@internal@defined
+ \fi
+ \expandafter\endgroup
+ \ifin@
+ \PackageInfo{%
+ scrbase%
+ }{%
+ \expandafter\string\csname #1\endcsname\space excluded from being
+ defined%
+ }%
+ \else
+ \@ifundefined{#1}{%
+ \begingroup
+ \expandafter\def\expandafter\@tempa
+ \expandafter{\csname scr@#1\endcsname}
+ \expandafter\def\expandafter\@tempb
+ \expandafter{\csname #1\endcsname}
+ \expandafter\expandafter\expandafter\endgroup
+ \expandafter\expandafter\expandafter\let\expandafter\@tempb\@tempa
+ \if@atdocument\else
+ \g@addto@macro\document{%
+ \expandafter\ifx\csname #1\expandafter\endcsname
+ \csname scr@#1\endcsname
+ \else
+ \PackageWarning{scrbase}{%
+ \expandafter\string\csname #1\endcsname\space was
+ redefined\MessageBreak
+ at the document preamble.\MessageBreak
+ If you did not redefine it by yourself, have a\MessageBreak
+ a look at the description of this command at\MessageBreak
+ the manual of every package you are using\@gobble
+ }%
+ \fi
+ }%
+ \fi
+ }{%
+ \PackageInfo{%
+ scrbase%
+ }{%
+ \expandafter\string\csname #1\endcsname\space already
+ defined.\MessageBreak
+ If \expandafter\string\csname #1\endcsname\space does not behave
+ like\MessageBreak
+ it was described at the KOMA-Script manual, try to\MessageBreak
+ load `scrbase.sty' earlier or find out at which\MessageBreak
+ package or class \expandafter\string\csname #1\endcsname\space
+ was defined before\@gobble
+ }%
+ }%
+ \fi
+}
+\let@as@internal@defined{ifundefinedorrelax}
+\scr@ifundefinedorrelax{ifcsname}{%
+ \newcommand{\ifnotundefined}[1]{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname #1\endcsname\relax
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+ }%
+}{%
+ \newcommand{\ifnotundefined}[1]{%
+ \ifcsname #1\endcsname
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }%
+}
+\newcommand\ifstr[2]{%
+ \begingroup\edef\@tempa{#1}\edef\@tempb{#2}%
+ \ifx\@tempa\@tempb
+ \endgroup\expandafter\@firstoftwo
+ \else
+ \endgroup\expandafter\@secondoftwo
+ \fi
+}
+\newcommand\ifnumber[1]{%
+ \begingroup\@tempswafalse\let\scr@next\test@number
+ \expandafter\scr@next#1\scr@next
+ \if@tempswa
+ \endgroup\expandafter\@firstoftwo
+ \else
+ \endgroup\expandafter\@secondoftwo
+ \fi
+}
+\newcommand*{\test@number}[1]{%
+ \ifx \scr@next#1
+ \let\scr@next\relax
+ \else
+ \@tempcnta=\expandafter\expandafter\expandafter\number
+ \expandafter`#1\relax
+ \ifnum \@tempcnta>47
+ \ifnum \@tempcnta<58
+ \@tempswatrue
+ \else\@tempswafalse\fi
+ \else\@tempswafalse\fi
+ \if@tempswa\else\let\scr@next\gobble@till@scr@next\fi
+ \fi
+ \scr@next
+}
+\newcommand*{\gobble@till@scr@next}{}
+\def\gobble@till@scr@next#1\scr@next{}
+\newcommand{\ifdimen}[1]{%
+ \begingroup\@tempswatrue\let\scr@next\test@posdimen
+ \expandafter\test@dimen#1\scr@next
+ \if@tempswa
+ \endgroup\expandafter\@firstoftwo
+ \else
+ \endgroup\expandafter\@secondoftwo
+ \fi
+}
+\newcommand*{\test@dimen}[1]{%
+ \ifx -#1\else\ifx +#1\else
+ \def\scr@next{\let\scr@next\test@posdimen\scr@next#1}\fi\fi
+ \scr@next
+}
+\newcommand*{\test@posdimen}[1]{%
+ \ifx \scr@next#1%
+ \@tempswafalse\let\scr@next\relax
+ \else
+ \if .#1\else\if ,#1\else
+ \@tempcnta=%
+ \expandafter\expandafter\expandafter\number\expandafter`#1\relax
+ \ifnum \@tempcnta>47
+ \ifnum \@tempcnta<58
+ \else\def\scr@next{\test@dimunt#1}\fi
+ \else\def\scr@next{\test@dimunt#1}\fi
+ \fi\fi
+ \fi
+ \scr@next
+}
+\newcommand*{\test@dimunt}{}
+\def\test@dimunt#1\scr@next{%
+ \expandafter\test@trueunt#1truetrue\test@trueunt
+}
+\newcommand*{\test@trueunt}{}
+\def\test@trueunt#1true#2true#3\test@trueunt{%
+ \edef\@tempa{#1}
+ \ifx\@tempa\@empty\test@@ifdimunt{#2}\else\test@@ifdimunt{#1}\fi
+}
+\newcommand*\test@@ifdimunt[1]{%
+ \@tempswafalse
+ \ifstr{#1}{pt}{\@tempswatrue}{%
+ \ifstr{#1}{pc}{\@tempswatrue}{%
+ \ifstr{#1}{in}{\@tempswatrue}{%
+ \ifstr{#1}{bp}{\@tempswatrue}{%
+ \ifstr{#1}{cm}{\@tempswatrue}{%
+ \ifstr{#1}{mm}{\@tempswatrue}{%
+ \ifstr{#1}{dd}{\@tempswatrue}{%
+ \ifstr{#1}{cc}{\@tempswatrue}{%
+ \ifstr{#1}{sp}{\@tempswatrue}{}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}
+\newcommand{\scr@ifpdftex}{\ifnotundefined{pdftexversion}}
+\let@as@internal@defined{ifpdftex}
+\BeforePackage{pdfcprot}{\let\ifpdftex\relax}
+\AfterPackage{pdfcprot}{\let@as@internal@defined{ifpdftex}}
+\newcommand{\scr@ifVTeX}{\ifnotundefined{VTeXversion}}
+\let@as@internal@defined{ifVTeX}
+\newcommand{\scr@ifpdfoutput}{%
+ \scr@ifundefinedorrelax{pdfoutput}{%
+ \scr@ifundefinedorrelax{OpMode}{%
+ \expandafter\@secondoftwo%
+ }{%
+ \ifnum\OpMode=1
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }%
+ }{%
+ \ifnum\pdfoutput>0
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }%
+}%
+\let@as@internal@defined{ifpdfoutput}
+\newcommand*{\scr@ifpsoutput}{%
+ \ifnotundefined{if@dvips}{%
+ \if@dvips
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }{%
+ \ifnotundefined{OpMode}{%
+ \ifnum\OpMode=2
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }{%
+ \expandafter\@secondoftwo
+ }%
+ }%
+}
+\let@as@internal@defined{ifpsoutput}
+\newcommand*{\scr@ifdvioutput}{%
+ \scr@ifundefinedorrelax{pdfoutput}{%
+ \scr@ifundefinedorrelax{OpMode}{%
+ \expandafter\@firstoftwo
+ }{%
+ \ifnum\OpMode=0
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }%
+ }{%
+ \ifnum\pdfoutput=0
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }%
+}
+\let@as@internal@defined{ifdvioutput}
+\newcommand*{\scr@smashdp}[1]{%
+ \begingroup
+ \def\finsm@sh{\dp\z@\z@\box\z@}%
+ \smash{#1}%
+ \endgroup
+}
+\providecommand*{\PackageInfoNoLine}[2]{%
+ \PackageInfo{#1}{#2\@gobble}%
+}
+\providecommand*{\ClassInfoNoLine}[2]{%
+ \ClassInfo{#1}{#2\@gobble}%
+}
+\newcommand*{\FamilyExecuteOptions}[3][.\@currname.\@currext]{%
+ \def\reserved@a##1\@nil{%
+ \@for\scr@key@atlist:=#3\do{%
+ \expandafter\scr@key@split@name@value\scr@key@atlist==\@nil
+ \scr@ifundefinedorrelax{KV@#2@\scr@key@name}{}{%
+ \edef\reserved@a{\noexpand\setkeys{#2}{\scr@key@atlist}%
+ }%
+ \reserved@a
+ }%
+ \scr@ifundefinedorrelax{KV@#2#1@\scr@key@name}{}{%
+ \edef\reserved@a{%
+ \noexpand\setkeys{#2#1}{\scr@key@atlist}%
+ }%
+ \reserved@a
+ }%
+ \let\CurrentOption\scr@key@atlist
+ \csname ds@\CurrentOption\endcsname
+ }%
+ \edef\CurrentOption{##1}%
+ }%
+ \expandafter\reserved@a\CurrentOption\@nil
+}
+\@onlypreamble\FamilyExecuteOptions
+\newcommand*{\FamilyOptions}[2]{%
+ \Family@Options{#1}{#2}{%
+ \PackageError{scrbase}{%
+ option `\scr@key@name' unknown at family `#1'%
+ }{%
+ You have used \string\FamilyOptions{#1} to set
+ `\scr@key@atlist',\MessageBreak
+ but family `#1' does not know any option named
+ `\scr@key@name'.\MessageBreak
+ See the manual for the package or class using family `#1' for
+ more\MessageBreak
+ informations about options and their values.%
+ }%
+ }%
+}
+\newcommand*{\Family@Options}[3]{%
+ \@for\scr@key@atlist:=#2\do{%
+ \expandafter\scr@key@split@name@value\scr@key@atlist==\@nil
+ \scr@key@found@false
+ \edef\@tempa{\csname #1@key@familylist\endcsname}%
+ \@for\@tempa:=\@tempa\do{%
+ \scr@ifundefinedorrelax{KV@\@tempa @\scr@key@name}{}{%
+ \scr@key@found@true
+ \edef\reserved@a{\noexpand\setkeys{\@tempa}{\scr@key@atlist}%
+ \noexpand\edef\noexpand\@tempa{\@tempa}%
+ \noexpand\edef\noexpand\scr@key@atlist{\scr@key@atlist}%
+ \noexpand\edef\noexpand\scr@key@name{\scr@key@name}%
+ \noexpand\edef\noexpand\scr@key@value{\scr@key@value}%
+ }%
+ \reserved@a
+ }%
+ }%
+ \ifscr@key@found@\else#3\fi
+ }%
+}
+\newif\ifscr@key@found@
+\newcommand*{\scr@key@atlist}{}
+\newcommand*{\scr@key@name}{}
+\newcommand*{\scr@key@value}{}
+\newcommand*{\scr@key@split@name@value}{}
+\def\scr@key@split@name@value#1=#2=#3\@nil{%
+ \KV@@sp@def\scr@key@name{#1}%
+ \KV@@sp@def\scr@key@value{#2}%
+}
+\newcommand*{\FamilyOption}[3]{%
+ \Family@Option{#1}{#2}{#3}{%
+ \PackageError{scrbase}{%
+ unknown option `\scr@key@name' for familie `#1'%
+ }{%
+ You have used \string\FamilyOption{#1} to set
+ `\scr@key@name',\MessageBreak
+ but family '#1' does not know any option named
+ `\scr@key@name'.\MessageBreak
+ See the the manual of the class or package, that provides
+ family\MessageBreak
+ `#1' for more informations about options and their values.%
+ }%
+ }%
+}
+\newcommand*{\Family@Option}[4]{%
+ \expandafter\KV@@sp@def\expandafter\scr@key@name\expandafter{#2}%
+ \scr@key@found@false
+ \edef\@tempa{\csname #1@key@familylist\endcsname}%
+ \@for\@tempa:=\@tempa\do{%
+ \scr@ifundefinedorrelax{KV@\@tempa @\scr@key@name}{}{%
+ \scr@key@found@true
+ \let\@tempb\@tempa
+ }%
+ }%
+ \ifscr@key@found@
+ \let\reserved@a\@empty
+ \@for\@tempa:=#3\do{%
+ \expandafter\KV@@sp@def\expandafter\@tempa\expandafter{\@tempa}%
+ \edef\reserved@a{\reserved@a,\scr@key@name=\@tempa}%
+ }%
+ \ifx\reserved@a\@empty
+ \edef\reserved@a{\noexpand\setkeys{\@tempb}{\scr@key@name}}%
+ \else
+ \edef\reserved@a{%
+ \noexpand\setkeys{\@tempb}{\expandafter\@gobble\reserved@a}}%
+ \fi
+ \reserved@a
+ \else
+ #4
+ \fi
+}
+\scr@ifundefinedorrelax{unexpanded}{%
+ \newcommand*{\g@addto@macro@temp}{}%
+ \newcommand{\l@addto@macro}[2]{%
+ \begingroup%
+ \toks@\expandafter{#1#2}%
+ \xdef\g@addto@macro@temp{\the\toks@}%
+ \endgroup
+ \let#1\g@addto@macro@temp
+ }%
+}{%
+ \newcommand{\l@addto@macro}[2]{%
+ \edef#1{\unexpanded\expandafter{#1#2}}%
+ }%
+}
+\newcommand*{\FamilyUnknownKeyValue}[4]{%
+ \PackageError{%
+ scrbase%
+ }{%
+ option `#2' of family `#1' has no value `#3'%
+ }{%
+ You've tried to set option `#2' of family '#1' to value `#3'.\MessageBreak
+ But allowed values are only:\MessageBreak
+ #4\FamilyElseValues.\MessageBreak
+ See the manual of the class or package, that provides family
+ `#1'\MessageBreak
+ for more information about options and their values.%
+ }%
+}
+\newcommand*{\FamilyElseValues}{}
+\newcommand*{\FamilyBoolKey}[4][.\@currname.\@currext]{%
+ \@ifundefined{if#4}{%
+ \expandafter\newif\csname if#4\endcsname
+ }{}%
+ \DefineFamilyKey[{#1}]{#2}{#3}[true]{\FamilySetBool{#2}{#3}{#4}{##1}}%
+}
+\newcommand*{\FamilySetBool}[4]{%
+ \ifstr{#4}{true}{\@nameuse{#3true}}{%
+ \ifstr{#4}{on}{\@nameuse{#3true}}{%
+ \ifstr{#4}{yes}{\@nameuse{#3true}}{%
+ \ifstr{#4}{false}{\@nameuse{#3false}}{%
+ \ifstr{#4}{off}{\@nameuse{#3false}}{%
+ \ifstr{#4}{no}{\@nameuse{#3false}}{%
+ \FamilyUnknownKeyValue{#1}{#2}{#3}{%
+ `true', `on', `yes', `false', `off', `no'%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \let\FamilyElseValues\@empty
+}
+\newcommand*{\FamilyNumericalKey}[3][.\@currname.\@currext]{%
+ \@ifnextchar [%]
+ {\Family@Numerical@Key{#1}{#2}{#3}}{\Family@Numerical@Key{#1}{#2}{#3}[]}%
+}
+\newcommand*{\Family@Numerical@Key}{}
+\def\Family@Numerical@Key#1#2#3[#4]#5#6{%
+ \@ifundefined{#5}{\@namedef{#5}{0}}%
+ \ifx\relax#4\relax
+ \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetNumerical{#2}{#3}{#5}{#6}{##1}}%
+ \else
+ \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{%
+ \FamilySetNumerical{#2}{#3}{#5}{#6}{##1}}%
+ \fi
+}
+\newcommand*{\FamilySetNumerical}[5]{%
+ \begingroup
+ \edef\@searched{#5}%
+ \let\@tempa=\@empty
+ \let\@tempb=\@empty
+ \@tempswafalse
+ \@for\@valuelist:=#4\do{%
+ \if@tempswa\else
+ \edef\@tempc{\expandafter\@firstoftwo\@valuelist}%
+ \edef\@tempa{\@tempa\@tempb`\@tempc'}%
+ \edef\@tempb{, }%
+ \ifx\@tempc\@searched
+ \@tempswatrue
+ \edef\@tempa{\expandafter\@secondoftwo\@valuelist}%
+ \fi
+ \fi
+ }%
+ \if@tempswa
+ \edef\@tempa{\endgroup
+ \noexpand\@namedef{#3}{\@tempa}%
+ }%
+ \else
+ \FamilyUnknownKeyValue{#1}{#2}{#5}{\@tempa}%
+ \let\@tempa=\endgroup
+ \fi
+ \@tempa
+ \let\FamilyElseValues\@empty
+}
+%%% From File: scrklang.dtx
+\newcommand*{\providecaptionname}[3]{%
+ \@ifundefined{captions#1}{%
+ \@ifundefined{cap@info@#1@done}{%
+ \PackageInfo{scrbase}{%
+ No captions found for `#1'\MessageBreak
+ --> skipped%
+ }%
+ \expandafter\let\csname cap@info@#1@done\endcsname\@empty
+ }{}%
+ }{%
+ \begingroup
+ \let\@tempa\endgroup
+ \csname captions#1\endcsname
+ \ifx #2\undefined
+ \edef\@tempb{#1}%
+ \@onelevel@sanitize\@tempb
+ \@onelevel@sanitize\languagename
+ \ifx\@tempb\languagename
+ \def\@tempa{\endgroup%
+ \expandafter\g@addto@macro\csname captions#1\endcsname{%
+ \def#2{#3}}%
+ \csname captions#1\endcsname
+ }%
+ \else
+ \def\@tempa{\endgroup%
+ \expandafter\g@addto@macro\csname captions#1\endcsname{%
+ \def#2{#3}}%
+ }%
+ \fi
+ \else
+ \PackageInfo{scrbase}{%
+ `\string#2' at language `#1' already
+ defined\MessageBreak
+ --> skipped%
+ }%
+ \fi
+ \@tempa
+ }%
+}
+\newcommand*{\newcaptionname}[3]{%
+ \@ifundefined{captions#1}{%
+ \PackageInfo{scrbase}{%
+ No captions found for `#1' --> defining%
+ }%
+ \@namedef{captions#1}{}%
+ }{}%
+ \begingroup
+ \csname captions#1\endcsname
+ \ifx #2\undefined\else
+ \PackageError{scrbase}{%
+ `\string#2' at language `#1' already defined%
+ }{%
+ You've told me to define `\string#2' at language
+ `#1',\MessageBreak
+ but it is already defined.\MessageBreak
+ It will be redefined, if you'll continue.%
+ }%
+ \fi
+ \endgroup
+ \expandafter\g@addto@macro\csname captions#1\endcsname{%
+ \def#2{#3}%
+ }%
+ \begingroup
+ \edef\@tempb{#1}%
+ \@onelevel@sanitize\@tempb
+ \@onelevel@sanitize\languagename
+ \ifx\@tempb\languagename
+ \def\@tempa{\endgroup\csname captions#1\endcsname}%
+ \else
+ \let\@tempa\endgroup
+ \fi
+ \@tempa
+}
+\newcommand*{\renewcaptionname}[3]{%
+ \@ifundefined{captions#1}{%
+ \PackageError{scrbase}{%
+ No captions found for `#1'%
+ }{%
+ You've told me to redefine the caption `\string#2' at language
+ `#1',\MessageBreak
+ but `\expandafter\string\csname captions#1\endcsname' is not
+ defined.\MessageBreak
+ If you'll continue it will be defined.%
+ }
+ \@namedef{captions#1}{}%
+ }{}%
+ \begingroup
+ \csname captions#1\endcsname
+ \ifx #2\undefined
+ \PackageError{scrbase}{%
+ `\string#2' not defined at language `#1'%
+ }{%
+ You've told me to redefine `\string#2' at language
+ `#1',\MessageBreak
+ but it is not defined.\MessageBreak
+ If you'll continue it will be defined.%
+ }%
+ \fi
+ \endgroup
+ \expandafter\g@addto@macro\csname captions#1\endcsname{%
+ \def#2{#3}%
+ }%
+ \begingroup
+ \edef\@tempb{#1}%
+ \@onelevel@sanitize\@tempb
+ \@onelevel@sanitize\languagename
+ \ifx\@tempb\languagename
+ \def\@tempa{\endgroup\csname captions#1\endcsname}%
+ \else
+ \let\@tempa\endgroup
+ \fi
+ \@tempa
+}
+%%% From File: scrlogo.dtx
+\@ifundefined{KOMAScript}{%
+ \DeclareRobustCommand{\KOMAScript}{\textsf{K\kern.05em O\kern.05em%
+ M\kern.05em A\kern.1em-\kern.1em Script}}}{}
+\endinput
+%%
+%% End of file `scrbase.sty'.