%% %% This is file `scrkbase.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% scrkvers.dtx (with options: `package,scrkbase') %% scrkbase.dtx (with options: `package,option') %% scrlfile.dtx (with options: `load') %% scrkbase.dtx (with options: `package,body') %% 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{2007/12/24 v2.98 KOMA-Script}% \endgroup %%% From File: scrkbase.dtx \ProvidesPackage{scrkbase}[% \KOMAScriptVersion\space package (basics and keyval use)] \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*{\KOMA@key}[1][.\@currname.\@currext]{% \edef\reserved@a{\noexpand\in@{KOMA#1,}{\KOMA@key@familylist}}\reserved@a \ifin@\else\xdef\KOMA@key@familylist{\KOMA@key@familylist KOMA#1,}\fi \define@key{KOMA#1}% } \newcommand*{\KOMA@key@familylist}{} \newcommand*{\@globaloptionslist}{} \let\@globaloptionslist\@classoptionslist \scr@ifundefinedorrelax{XKV@classoptionslist}{}{% \ifx\XKV@classoptionslist\@empty\else \let\@globaloptionslist\XKV@classoptionslist \fi } \newcommand*{\KOMAProcessOptions}[1][KOMA]{% \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 \KOMA@optiontest{#1}\CurrentOption{}{% \@use@ption \@expandtwoargs\setkeys{#1}% \CurrentOption }% \KOMA@optiontest{#1.\@currname.\@currext}\CurrentOption{}{% \@use@ption \@expandtwoargs\setkeys{#1.\@currname.\@currext}% \CurrentOption }% \fi \fi }% \fi \@for\CurrentOption:=\@curroptions\do{% \@use@ption \scr@ifundefinedorrelax{ds@\CurrentOption}{% \KOMA@optiontest{#1}\CurrentOption{% \KOMA@optiontest{#1.\@currname.\@currext}\CurrentOption{% \default@ds }{% \let\scr@sr@co\CurrentOption \@expandtwoargs\setkeys{#1.\@currname.\@currext}% \CurrentOption \let\CurrentOption\scr@sr@co }% }{% \@expandtwoargs\setkeys{#1}% \CurrentOption \KOMA@optiontest{#1.\@currname.\@currext}\CurrentOption{}{% \@expandtwoargs\setkeys{#1.\@currname.\@currext}% \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\KOMA@process@options \@onlypreamble\KOMAProcessOptions \newcommand*{\KOMA@optiontest}[2]{% \edef\reserved@a{\noexpand\KOMA@pti@ntest{#1}#2=\noexpand\@nil}% \reserved@a } \newcommand*{\KOMA@pti@ntest}{} \def\KOMA@pti@ntest#1#2=#3\@nil{\scr@ifundefinedorrelax{KV@#1@#2}} \newcommand*{\scr@sr@co}{} \newcommand*{\dont@let@as@internal@defined}{/} \newif\if@let@as@internalonly@defined\@let@as@internalonly@definedfalse \KOMA@key{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 } \KOMAProcessOptions\relax %%% From File: scrlfile.dtx \def\scrlfileversion{2007/12/18 v2.98} \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{% scrkbase% }{% \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{scrkbase}{% \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{% scrkbase% }{% \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 `scrkbase.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}% } \newcommand*{\KOMAExecuteOptions}[2][KOMA]{% \def\reserved@a##1\@nil{% \@for\KOMA@key@atlist:=#2\do{% \expandafter\KOMA@key@split@name@value\KOMA@key@atlist==\@nil \scr@ifundefinedorrelax{KV@#1@\KOMA@key@name}{}{% \edef\reserved@a{\noexpand\setkeys{#1}{\KOMA@key@atlist}% }% \reserved@a }% \scr@ifundefinedorrelax{KV@#1.\@currname.\@currext @\KOMA@key@name}{}{% \edef\reserved@a{% \noexpand\setkeys{#1.\@currname.\@currext}{\KOMA@key@atlist}% }% \reserved@a }% \let\CurrentOption\KOMA@key@atlist \csname ds@\CurrentOption\endcsname }% \edef\CurrentOption{##1}% }% \expandafter\reserved@a\CurrentOption\@nil } \@onlypreamble\KOMAExecuteOptions \newcommand*{\KOMAoptions}[1]{% \let\post@kopt@hook\@empty \KOMA@options{#1}{% \PackageError{scrkbase}{% unknown KOMA option `\KOMA@key@name'% }{% You have used \string\KOMAoptions\space to set `\KOMA@key@atlist',\MessageBreak but KOMA-Script does not know any option named `\KOMA@key@name'.\MessageBreak See the KOMA-Script manual for more informations about options and\MessageBreak their values.% }% }% \post@kopt@hook\let\post@kopt@hook\relax } \newcommand*{\KOMA@options}[2]{% \@for\KOMA@key@atlist:=#1\do{% \expandafter\KOMA@key@split@name@value\KOMA@key@atlist==\@nil \KOMA@key@found@false \@for\@tempa:=\KOMA@key@familylist\do{% \scr@ifundefinedorrelax{KV@\@tempa @\KOMA@key@name}{}{% \KOMA@key@found@true \edef\reserved@a{\noexpand\setkeys{\@tempa}{\KOMA@key@atlist}% \noexpand\edef\noexpand\@tempa{\@tempa}% \noexpand\edef\noexpand\KOMA@key@atlist{\KOMA@key@atlist}% \noexpand\edef\noexpand\KOMA@key@name{\KOMA@key@name}% \noexpand\edef\noexpand\KOMA@key@value{\KOMA@key@value}% }% \reserved@a }% }% \ifKOMA@key@found@\else#2\fi }% } \newif\ifKOMA@key@found@ \newcommand*{\KOMA@key@atlist}{} \newcommand*{\KOMA@key@name}{} \newcommand*{\KOMA@key@value}{} \newcommand*{\KOMA@key@split@name@value}{} \def\KOMA@key@split@name@value#1=#2=#3\@nil{% \KV@@sp@def\KOMA@key@name{#1}% \KV@@sp@def\KOMA@key@value{#2}% } \newcommand*{\post@kopt@hook}{} \let\post@kopt@hook\relax \newcommand*{\AfterKOMAoptions}{% \ifx\post@kopt@hook\relax \PackageWarning{scrkbase}{% \string\AfterKOMAoptions\space can only be used inside a\MessageBreak KOMA-Script option that is called using \space\KOMAoptions.\MessageBreak Because if this, command will be ignored% }% \expandafter\@gobbletwo \else \expandafter\l@addto@macro \fi \post@kopt@hook } \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*{\KOMA@unknown@keyval}[3]{% \PackageError{% scrkbase% }{% KOMA option `#1' has no value `#2'% }{% You've tried to set option `#1' to value `#2'.\MessageBreak But allowed values are only:\MessageBreak #3.\MessageBreak See the KOMA-Script manual for more information.% }% } \newcommand*{\KOMA@ifkey}[2]{% \@ifundefined{if#2}{% \expandafter\newif\csname if#2\endcsname }{}% \KOMA@key{#1}[true]{\KOMA@set@ifkey{#1}{#2}{##1}}% } \newcommand*{\KOMA@set@ifkey}[3]{% \ifstr{#3}{true}{\@nameuse{#2true}}{% \ifstr{#3}{on}{\@nameuse{#2true}}{% \ifstr{#3}{yes}{\@nameuse{#2true}}{% \ifstr{#3}{false}{\@nameuse{#2false}}{% \ifstr{#3}{off}{\@nameuse{#2false}}{% \ifstr{#3}{no}{\@nameuse{#2false}}{% \KOMA@unknown@keyval{#1}{#3}{% `true', `on', `yes', `false', `off', `no'% }% }% }% }% }% }% }% } \newcommand*{\KOMA@ncmdkey}[1]{% \@ifnextchar [%] {\KOMA@@ncmdkey{#1}}{\KOMA@@ncmdkey{#1}[]}% } \newcommand*{\KOMA@@ncmdkey}{} \def\KOMA@@ncmdkey#1[#2]#3#4{% \ifx\relax#2\relax\else \@namedef{KV@KOMA@#1@default\expandafter}\expandafter{% \csname KV@KOMA@#1\endcsname{#2}% }% \fi \@ifundefined{#3}{\@namedef{#3}{0}}% \KOMA@key{#1}{\KOMA@set@ncmdkey{#1}{#3}{#4}{##1}}% } \newcommand*{\KOMA@set@ncmdkey}[4]{% \begingroup \edef\@searched{#4}% \let\@tempa=\@empty \let\@tempb=\@empty \@tempswafalse \@for\@valuelist:=#3\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{#2}{\@tempa}% }% \else \KOMA@unknown@keyval{#1}{#4}{\@tempa}% \let\@tempa=\endgroup \fi \@tempa } \newcommand*{\KOMA@DeclareObsoleteOption}[3][\@gobbletwo]{% \DeclareOption{#2}{\KOMA@UseObsoleteOption{#1}{#2}{#3}}% } \newcommand*{\KOMA@UseObsoleteOption}[3]{% \let\scr@sr@co\CurrentOption #1{scrkbase}{% You've used obsolete option `#2'.\MessageBreak \protect\KOMAExecuteOptions{#3} will be\MessageBreak used instead.\MessageBreak You may simply replace `#2'\MessageBreak by `#3'% }% \KOMAExecuteOptions{#3}% \let\CurrentOption\scr@sr@co } \newcommand*{\KOMA@newobsoletecommand}[3][\@gobbletwo]{% \newcommand*{#2}{\KOMA@UseObsoleteCommand{#1}{\string#2}{#3}}% } \newcommand*{\KOMA@UseObsoleteCommand}[3]{% #1{% scrkbase% }{% You've used the obsolete command `#2'.\MessageBreak \protect\KOMAoptions{#3} will be used instead.\MessageBreak You should also replace `#2' by `\protect\KOMAoptions{#3}'% }% \KOMAoptions{#3}% } %%% 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 `scrkbase.sty'.