diff options
author | Karl Berry <karl@freefriends.org> | 2008-11-12 00:44:32 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-11-12 00:44:32 +0000 |
commit | e0fa36719ae8b943d0c515ccc2a4f1e2670cc614 (patch) | |
tree | cfd7d451101897cf222cd885a36573ccacd922c4 /Master/texmf-dist/tex/latex/koma-script/scrbase.sty | |
parent | 6d06dddb5a2041f7c07b6502a3bfa973f0d86635 (diff) |
koma-script update (11nov08)
git-svn-id: svn://tug.org/texlive/trunk@11262 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/koma-script/scrbase.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/koma-script/scrbase.sty | 813 |
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'. |