%PDF- %PDF-
| Direktori : /proc/self/root/usr/share/texlive/texmf-dist/tex/latex/koma-script/ |
| Current File : //proc/self/root/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrbase.sty |
%%
%% 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-2012
%% 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 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 may
%% find a complete unmodified copy of LaTeX2e at
%% <http://www.ctan.org/pub/tex-archive/macros/latex/base/>.
%%
%%% 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{2012/07/29 v3.11b KOMA-Script}%
\endgroup
%%% From File: scrkbase.dtx
\ProvidesPackage{%
scrbase%
}[%
\KOMAScriptVersion\space package
(KOMA-Script-independent basics and keyval usage)]
\begingroup
\def\@tempb{}%
\def\@tempa{%
\PackageError{scrbase}{seems you are not running e-TeX\@tempb}{%
Since 2004 the LaTeX team recommends to use e-TeX.\MessageBreak
KOMA-Script since version 2.95 uses several e-TeX features.\MessageBreak
At actual systems `latex' should already use e-TeX.\MessageBreak
At deprecated systems it may be called `elatex'.\MessageBreak
Use either unsupported KOMA-Script up to version 2.9u or\MessageBreak
ask you administrator for LaTeX using e-TeX\@tempb.\MessageBreak
Not using e-TeX\@tempb\space is a fatal error!\MessageBreak
Processing cannot be continued!}%
\endgroup
\batchmode \errmessage{}\csname @@end\endcsname\end\relax
\csname endinput\endcsname
}%
\expandafter\ifx\csname eTeXversion\endcsname\relax\else
\ifnum\eTeXversion <2
\def\@tempb{ V 2}%
\else
\let\@tempa\endgroup
\fi
\fi
\@tempa
\RequirePackage{keyval}
\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
}
\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*{\scr@removeunused}{}
\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
\expandafter\def\expandafter\scr@removeunused\expandafter{%
\expandafter\def\expandafter\CurrentOption\expandafter{%
\CurrentOption}\@use@ption}%
\scr@optiontest{#2}\CurrentOption{}{%
\@expandtwoargs\setkeys{#2}%
\CurrentOption
\scr@removeunused
}%
\scr@optiontest{#2#1}\CurrentOption{}{%
\@expandtwoargs\setkeys{#2#1}%
\CurrentOption
\scr@removeunused
}%
\let\scr@removeunused\@empty
\fi
\fi
}%
\fi
\@for\CurrentOption:=\@curroptions\do{%
\@use@ption
\scr@ifundefinedorrelax{ds@\CurrentOption}{%
\scr@optiontest{#2}\CurrentOption{%
\scr@optiontest{#2#1}\CurrentOption{%
\default@ds
}{%
\let\scr@removeunused\relax
\edef\reserved@a{%
\noexpand\setkeys{#2#1}{\CurrentOption}%
\noexpand\def\noexpand\CurrentOption{\CurrentOption}%
}\reserved@a
\ifx\scr@removeunused\relax\else\default@ds\fi
}%
}{%
\let\scr@removeunused\relax
\edef\reserved@a{%
\noexpand\setkeys{#2}{\CurrentOption}%
\noexpand\def\noexpand\CurrentOption{\CurrentOption}%
}\reserved@a
\if\scr@removeunused\relax\else\default@ds\fi
\scr@optiontest{#2#1}\CurrentOption{}{%
\let\scr@removeunused\relax
\@expandtwoargs\setkeys{#2#1}%
\CurrentOption
\ifx\scr@removeunused\relax\else\default@ds\fi
}%
}%
}{%
}%
}%
\@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{2012/06/15 v3.12}
\edef\@tempa{\noexpand\RequirePackage{scrlfile}[\scrlfileversion]}
\@tempa
%%% From File: scrkbase.dtx
\newcommand*{\XdivY}[2]{%
\numexpr ( #1 + #2 / 2 ) / #2 - 1\relax
}
\newcommand*{\XmodY}[2]{%
\numexpr #1 - #2 * \XdivY{#1}{#2}\relax
}
\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
\ignorespaces
}%
\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}
\newcommand{\ifnotundefined}[1]{%
\ifcsname #1\endcsname
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
}
\newcommand\ifstr[2]{%
\begingroup\protected@edef\@tempa{#1}\protected@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@}%
\ifmmode
\expandafter\mathpalette\expandafter\mathsm@sh
\else
\expandafter\makesm@sh
\fi
{#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}{}{%
\protected@edef\reserved@a{\noexpand\setkeys{#2}{\scr@key@atlist}%
\noexpand\def\noexpand\scr@key@atlist{\scr@key@atlist}%
\noexpand\def\noexpand\scr@key@name{\scr@key@name}%
}%
\reserved@a
}%
\scr@ifundefinedorrelax{KV@#2#1@\scr@key@name}{}{%
\protected@edef\reserved@a{%
\noexpand\setkeys{#2#1}{\scr@key@atlist}%
\noexpand\def\noexpand\scr@key@atlist{\scr@key@atlist}%
\noexpand\def\noexpand\scr@key@name{\scr@key@name}%
}%
\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{%
\ifx\scr@key@atlist\@empty\else
\ifx\scr@key@atlist\space\else
\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
\protected@edef\reserved@a{%
\noexpand\setkeys{\@tempa}{%
\unexpanded\expandafter{\scr@key@atlist}}%
\noexpand\def\noexpand\@tempa{%
\unexpanded\expandafter{\@tempa}}%
\noexpand\def\noexpand\scr@key@atlist{%
\unexpanded\expandafter{\scr@key@atlist}}%
\noexpand\def\noexpand\scr@key@name{%
\unexpanded\expandafter{\scr@key@name}}%
\noexpand\def\noexpand\scr@key@value{%
\unexpanded\expandafter{\scr@key@value}}%
}%
\reserved@a
}%
}%
\ifscr@key@found@\else#3\fi
\fi
\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}%
\ifx\@tempa\@empty\else
\protected@edef\reserved@a{\reserved@a,\scr@key@name=\@tempa}%
\fi
}%
\ifx\reserved@a\@empty
\protected@edef\reserved@a{\noexpand\setkeys{\@tempb}{\scr@key@name}}%
\else
\protected@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]{%
\ifx\scr@removeunused\@empty
\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.%
}%
\else
\global\let\scr@removeunused\@empty
\PackageInfo{%
scrbase%
}{%
option `#2' of family `#1' has no value `#3'.\MessageBreak
Allowed values for option `#2' of family `#1'\MessageBreak
would be:\MessageBreak
#4\FamilyElseValues.\MessageBreak
Maybe another class or package provides this option.\MessageBreak
Global option ignored
}%
\fi
}
\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}{#4}{%
`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
\edef\@tempa{\endgroup
\noexpand\FamilyUnknownKeyValue{#1}{#2}{#5}{\@tempa}%
}%
\fi
\@tempa
\let\FamilyElseValues\@empty
}
\newcommand*{\FamilyStringKey}[3][.\@currname.\@currext]{%
\@ifnextchar [%]
{\Family@@String@@Key{#1}{#2}{#3}}{\Family@String@Key{#1}{#2}{#3}}%
}
\newcommand*{\Family@@String@@Key}{}
\long\def\Family@@String@@Key#1#2#3[#4]#5{%
\DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\def#5{##1}}%
}
\newcommand{\Family@String@Key}[4]{%
\DefineFamilyKey[{#1}]{#2}{#3}{\def#4{##1}}%
}
%%% 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
\def\@tempb{\relax\undefined\relax}%
\let #2\@tempb\relax
\csname captions#1\endcsname
\ifx #2\@tempb\relax
\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
\def\@tempb{\relax\undefined\relax}%
\let #2\@tempb\relax
\csname captions#1\endcsname
\ifx #2\@tempb\relax\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
\def\@tempb{\relax\undefined\relax}%
\let #2\@tempb\relax
\csname captions#1\endcsname
\ifx #2\@tempb\relax
\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'.