%% %% 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-2010 %% 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 %% . %% %%% 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{2010/09/17 v3.07 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*{\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{2009/03/25 v3.03} \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 }% \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{% \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}{\scr@key@atlist}% \noexpand\def\noexpand\@tempa{\@tempa}% \noexpand\def\noexpand\scr@key@atlist{\scr@key@atlist}% \noexpand\def\noexpand\scr@key@name{\scr@key@name}% \noexpand\def\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}% \protected@edef\reserved@a{\reserved@a,\scr@key@name=\@tempa}% }% \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]{% \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 \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'.