Current File : //usr/share/texlive/texmf-dist/tex/latex/koma-script/scrkbase.sty
%%
%% This is file `scrkbase.sty',
%% generated with the docstrip utility, extended by scrdocstrip.
%%
%% The original source files were:
%%
%% scrkernel-version.dtx  (with options: `package,scrkbase')
%% scrkernel-basics.dtx  (with options: `package,prepare,koma')
%% scrkernel-basics.dtx  (with options: `package,option,koma')
%% scrkernel-fonts.dtx  (with options: `package,option,scrkbase')
%% scrkernel-basics.dtx  (with options: `package,body,koma')
%% scrkernel-fonts.dtx  (with options: `package,body,scrkbase')
%% scrlogo.dtx  (with options: `logo')
%% 
%% Copyright (c) 1994-2019 Markus Kohm [komascript at gmx info]
%% 
%% 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 can
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%% 
%%% From File: $Id: scrkernel-version.dtx 3586 2021-03-17 13:57:48Z kohm $
\begingroup
  \catcode`\@11\relax
  \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{2021/03/17 v3.33 KOMA-Script}%
\endgroup
\providecommand*{\scr@pkgextension}{\@pkgextension}
\AtBeginDocument{%
  \let\scr@pkgextension\@pkgextension
}
%%% From File: $Id: scrkernel-basics.dtx 3578 2021-03-12 16:50:00Z kohm $
%%%            (run: prepare)
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\ProvidesPackage{%
  scrkbase%
}[%
  2021/03/17 v3.33 KOMA-Script
  package
  (%
    KOMA-Script-dependent
  basics and keyval usage)]
\RequirePackage{scrbase}[\KOMAScriptVersion]
\newcommand*{\KOMA@key}[1][.\@currname.\@currext]{%
  \DefineFamilyMember[{#1}]{KOMA}%
  \@ifundefined{scr@kav@KOMA#1}{\@namedef{scr@kav@KOMA#1}{}}{}%
  \DefineFamilyKey[{#1}]{KOMA}%
}
\newcommand*{\KOMA@kav@add}[3]{%
  \@ifundefined{scr@kav@KOMA#1}{%
    \KOMA@internal@error\KOMA@kav@add{#1}%
  }{%
    \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{\do{{#2}{#3}}}%
  }%
}
\newcommand*{\KOMA@kav@xadd}[3]{%
  \@ifundefined{scr@kav@KOMA#1}{%
    \KOMA@internal@error\KOMA@kav@xadd{#1}%
  }{%
    \protected@edef\reserved@a{{#2}{#3}}%
    \expandafter\l@addto@macro\csname scr@kav@KOMA#1\expandafter\endcsname
    \expandafter{\expandafter\do\expandafter{\reserved@a}}%
  }%
}
\newcommand*{\KOMA@kav@remove}[3]{%
  \@ifundefined{scr@kav@KOMA#1}{%
    \KOMA@internal@error\KOMA@kav@remove{#1}%
  }{%
    \begingroup
      \def\reserved@a{\endgroup\@namedef{scr@kav@KOMA#1}{}}%
      \edef\reserved@b{\detokenize{{#2}{#3}}}%
      \def\do##1{%
        \edef\reserved@c{\detokenize{##1}}%
        \ifx\reserved@b\reserved@c\else
          \l@addto@macro\reserved@a{%
            \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{%
              \do{##1}%
            }%
          }%
        \fi
      }%
      \@nameuse{scr@kav@KOMA#1}%
    \reserved@a
  }%
}
\newcommand*{\KOMA@kav@removekey}[2]{%
  \@ifundefined{scr@kav@KOMA#1}{%
    \KOMA@internal@error\KOMA@kav@removekey{#1}%
  }{%
    \begingroup
      \def\reserved@a{\endgroup\@namedef{scr@kav@KOMA#1}{}}%
      \edef\reserved@b{\detokenize{#2}}%
      \def\reserved@d##1##2{\edef\reserved@c{\detokenize{##1}}}%
      \def\do##1{%
        \reserved@d##1\relax
        \ifx\reserved@b\reserved@c\else
          \l@addto@macro\reserved@a{%
            \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{%
              \do{##1}%
            }%
          }%
        \fi
      }%
      \@nameuse{scr@kav@KOMA#1}%
    \reserved@a
  }%
}
\newcommand*{\KOMA@kav@replacevalue}[3]{%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed
    \@ifundefined{scr@kav@KOMA#1}{%
      \KOMA@internal@error\KOMA@kav@replacevalue{#1}%
    }{%
      \KOMA@kav@removekey{#1}{#2}%
      \KOMA@kav@add{#1}{#2}{#3}%
    }%
  \fi
}
\newcommand*{\KOMA@kav@xreplacevalue}[3]{%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed
    \@ifundefined{scr@kav@KOMA#1}{%
      \KOMA@internal@error\KOMA@kav@replacevalue{#1}%
    }{%
      \KOMA@kav@removekey{#1}{#2}%
      \KOMA@kav@xadd{#1}{#2}{#3}%
    }%
  \fi
}
\newcommand*{\KOMA@kav@replacebool}[3]{%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed
    \@ifundefined{scr@kav@KOMA#1}{%
      \KOMA@internal@error\KOMA@kav@replacebool{#1}%
    }{%
      \KOMA@kav@remove{#1}{#2}{false}%
      \KOMA@kav@remove{#1}{#2}{true}%
      \expandafter\ifx\csname if#3\expandafter\endcsname
                      \csname iftrue\endcsname
        \KOMA@kav@xadd{#1}{#2}{true}%
      \else
        \KOMA@kav@xadd{#1}{#2}{false}%
      \fi
    }%
  \fi
}
\newcommand*{\KOMA@kav@defall}[2]{%
  \@ifundefined{scr@kav@KOMA#2}{%
    \KOMA@internal@error\KOMA@kav@defall{#1}%
  }{%
    \begingroup
      \let\reserved@a\@empty
      \def\reserved@b##1##2{\l@addto@macro\reserved@a{,{##1=##2}}}%
      \def\do##1{\reserved@b##1}%
      \@nameuse{scr@kav@KOMA#2}%
      \ifx\reserved@a\@empty
        \def\reserved@b{\endgroup\let#1\@empty}%
      \else
        \edef\reserved@b{%
          \unexpanded{\endgroup\def#1}{%
            \unexpanded
            \expandafter\expandafter\expandafter{%
              \expandafter\@gobble\reserved@a}}}%
      \fi
    \reserved@b
  }%
}
\newcommand*{\KOMA@kav@defone}[3]{%
  \@ifundefined{scr@kav@KOMA#2}{%
    \KOMA@internal@error\KOMA@kav@defall{#1}%
  }{%
    \begingroup
      \let\reserved@a\@empty
      \def\reserved@b##1##2{%
        \Ifstr{##1}{#3}{\l@addto@macro\reserved@a{,{##2}}}{}%
      }%
      \def\do##1{\reserved@b##1}%
      \@nameuse{scr@kav@KOMA#2}%
      \ifx\reserved@a\@empty
        \def\reserved@b{\endgroup\let#1\@empty}%
      \else
        \edef\reserved@b{%
          \unexpanded{\endgroup\def#1}{%
            \unexpanded
            \expandafter\expandafter\expandafter{%
              \expandafter\@gobble\reserved@a}}}%
      \fi
    \reserved@b
  }%
}
\newcommand*{\KOMA@internal@error}[2]{%
  \PackageError{scrkbase}{internal error using \string#1{#2}}{%
    You've found an internal error either in KOMA-Script or a third
    party\MessageBreak
    definition, that uses KOMA-Script internal macros.\MessageBreak
    Please send a bug report with a minimal but complete example,
    that\MessageBreak
    shows this error, to komascript at gmx dot info or report it
    at\MessageBreak
    <http://www.komascript.de/forum/20> (you need an account to do so).%
  }%
}
\newcommand*{\KOMAProcessOptions}{\FamilyProcessOptions{KOMA}}
\@onlypreamble\KOMAProcessOptions
%%% From File: $Id: scrkernel-basics.dtx 3578 2021-03-12 16:50:00Z kohm $
%%%            (run: option)
\KOMAProcessOptions\relax
%%% From File: $Id: scrkernel-fonts.dtx 3390 2019-11-18 17:09:35Z kohm $
%%%            (run: option)
%%% From File: $Id: scrkernel-basics.dtx 3578 2021-03-12 16:50:00Z kohm $
%%%            (run: body)
\newcommand*{\KOMAExecuteOptions}[1][.\@currname.\@currext]{%
  \FamilyExecuteOptions[#1]{KOMA}%
}
\newcommand*{\KOMAoptions}{\FamilyOptions{KOMA}}
\newcommand*{\KOMAoptionsOf}[2][\@firstofone]{%
  \scr@ifundefinedorrelax{scr@kav@KOMA.#2}{%
    \PackageError{scrkbase}{\string\KOMAoptionsOf\space not supported}{%
      #2 is not the name of a KOMA-Script package or\MessageBreak
      KOMA-Script class, that supports \string\KOMAoptionsOf.}%
  }{%
    \begingroup
      \def\reserved@a{#1}%
      \KOMA@kav@defall\reserved@b{.#2}%
    \expandafter\expandafter\expandafter\endgroup
    \expandafter\reserved@a\expandafter{\reserved@b}%
  }%
}
\newcommand*{\KOMAoptionOf}[3][\@firstofone]{%
  \scr@ifundefinedorrelax{scr@kav@KOMA.#2}{%
    \PackageError{scrkbase}{\string\KOMAoptionOf\space not supported}{%
      #2 is not the name of a KOMA-Script package or\MessageBreak
      KOMA-Script class, that supports \string\KOMAoptionOf.}%
  }{%
    \begingroup
      \def\reserved@a{#1}%
      \KOMA@kav@defone\reserved@b{.#2}{#3}%
      \ifx\reserved@b\@empty
        \PackageWarning{scrkbase}{option `#3' for `#2' unset}%
        \endgroup
      \else
      \expandafter\expandafter\expandafter\endgroup
      \expandafter\reserved@a\expandafter{\reserved@b}%
    \fi
  }%
}
\newcommand*{\AfterKOMAoptions}{\AtEndOfFamilyOptions}
\newcommand*{\KOMAoption}{\FamilyOption{KOMA}}
\newcommand*{\KOMA@unknown@keyval}{\FamilyUnknownKeyValue{KOMA}}
\newcommand*{\KOMA@ifkey}[2][.\@currname.\@currext]{%
  \begingroup\edef\reserved@a{\noexpand\KOMA@@ifkey{#1}{#2}}%
  \expandafter\endgroup\reserved@a
}
\newcommand*{\KOMA@@ifkey}[3]{%
  \@ifundefined{if#3}{%
    \expandafter\newif\csname if#3\endcsname
  }{}%
  \KOMA@key[{#1}]{#2}[true]{%
    \KOMA@set@ifkey{#2}{#3}{##1}%
    \KOMA@kav@replacebool{#1}{#2}{#3}%
  }%
  \csname if#3\endcsname
    \KOMA@kav@xadd{#1}{#2}{true}%
  \else
    \KOMA@kav@xadd{#1}{#2}{false}%
  \fi
}
\newcommand*{\KOMA@set@ifkey}{\FamilySetBool{KOMA}}
\newcommand*{\KOMA@ncmdkey}[2][.\@currname.\@currext]{%
  \begingroup\edef\reserved@a{\noexpand\KOMA@@ncmdkey{#1}{#2}}%
  \expandafter\endgroup\reserved@a
}
\newcommand*{\KOMA@@ncmdkey}[2]{%
  \kernel@ifnextchar [%]
    {\KOMA@@@ncmdkey{#1}{#2}}{\KOMA@@@ncmdkey{#1}{#2}[]}
}
\newcommand*{\KOMA@@@ncmdkey}{}
\def\KOMA@@@ncmdkey#1#2[#3]#4#5{%
  \@ifundefined{#4}{\@namedef{#4}{0}}{}%
  \ifx\relax#3\relax
    \KOMA@key[{#1}]{#2}{%
      \KOMA@set@ncmdkey{#2}{#4}{#5}{##1}%
      \KOMA@kav@replacevalue{#1}{#2}{##1}%
    }%
  \else
    \KOMA@key[{#1}]{#2}[{#3}]{%
      \KOMA@set@ncmdkey{#2}{#4}{#5}{##1}%
      \KOMA@kav@replacevalue{#1}{#2}{##1}%
    }%
  \fi
}
\newcommand*{\KOMA@set@ncmdkey}{\FamilySetNumerical{KOMA}}
\newcommand*{\KOMA@DeclareDeprecatedOption}{%
  \kernel@ifnextchar [%]
  {\KOMA@@DeclareDeprecatedOption}%
  {\KOMA@@@DeclareDeprecatedOption{\ClassWarningNoLine{\KOMAClassName}}}%
}
\newcommand*{\KOMA@@DeclareDeprecatedOption}[1][]{%
  \KOMA@@@DeclareDeprecatedOption{\PackageWarningNoLine{#1}}%
}
\newcommand*{\KOMA@@@DeclareDeprecatedOption}[3]{%
  \DeclareOption{#2}{\KOMA@UseDeprecatedOption{#1}{#2}{#3}}%
}
\newcommand*{\KOMA@UseDeprecatedOption}[3]{%
  \begingroup
    \scr@ifundefinedorrelax{KV@KOMA.\@currname.\@currext @version}{%
      \edef\reserved@a{\noexpand\endgroup
        \noexpand#1{%
          You've used obsolete option `\detokenize{#2}'.\noexpand\MessageBreak
          Usage of this option is deprecated.\noexpand\MessageBreak
          You should simply replace `\detokenize{#2}'\noexpand\MessageBreak
          by `\detokenize{#3}'%
        }%
        \noexpand\KOMAExecuteOptions{#3}%
        \noexpand\def\noexpand\CurrentOption{\CurrentOption}%
      }%
    }{%
      \edef\reserved@a{\noexpand\endgroup
        \noexpand#1{%
          You've used obsolete option `\detokenize{#2}'.\noexpand\MessageBreak
          Usage of this option indicates an old document\noexpand\MessageBreak
          and changes compatibility level using\noexpand\MessageBreak
          `\detokenize{#3},version=first,\noexpand\MessageBreak
          enabledeprecatedfontcommands' that may result\noexpand\MessageBreak
          in further warnings.\noexpand\MessageBreak
          If you don't want this, you should simply\noexpand\MessageBreak
          replace option `\detokenize{#2}' by `\detokenize{#3}'%
        }%
        \noexpand\KOMAExecuteOptions{%
          #3,version=first}%
        \noexpand\ExecuteOptions{enabledeprecatedfontcommands}%
        \noexpand\def\noexpand\CurrentOption{\CurrentOption}%
      }%
    }%
  \reserved@a
}
\newcommand*{\KOMA@DeclareStandardOption}{%
  \kernel@ifnextchar [%]
  {\KOMA@@DeclareStandardOption}%
  {\KOMA@@@DeclareStandardOption{\ClassInfoNoLine{\KOMAClassName}}}%
}
\newcommand*{\KOMA@@DeclareStandardOption}[1][]{%
  \KOMA@@@DeclareStandardOption{\PackageInfoNoLine{#1}}%
}
\newcommand*{\KOMA@@@DeclareStandardOption}[3]{%
  \DeclareOption{#2}{\KOMA@UseStandardOption{#1}{#2}{#3}}%
}
\newcommand*{\KOMA@UseStandardOption}[3]{%
  \begingroup
    \edef\reserved@a{\noexpand\endgroup
      \noexpand#1{%
        You've used standard option `#2'.\noexpand\MessageBreak
        This is correct!\noexpand\MessageBreak
        Internally I'm using `#3'.\noexpand\MessageBreak
        If you'd like to set the option with \string\KOMAoptions,%
        \noexpand\MessageBreak
        you'd have to use `#3' there\noexpand\MessageBreak
        instead of `#2', too%
      }%
      \noexpand\KOMAExecuteOptions{#3}%
      \noexpand\def\noexpand\CurrentOption{\CurrentOption}%
    }%
  \reserved@a
}
\newcommand*{\KOMA@newdeprecatedcommand}[3][\@gobbletwo]{%
  \newcommand*{#2}{\KOMA@UseDeprecatedCommand{#1}{\string#2}{#3}}%
}
\newcommand*{\KOMA@UseDeprecatedCommand}[3]{%
  #1{%
    scrkbase%
  }{%
    You've used deprecated command `#2'.\MessageBreak
    \protect\KOMAoptions{#3} will be used instead.\MessageBreak
    You should also replace `#2' by `\protect\KOMAoptions{#3}'%
  }%
  \KOMAoptions{#3}%
}
%%% From File: $Id: scrkernel-fonts.dtx 3390 2019-11-18 17:09:35Z kohm $
%%%            (run: body)
\newcommand*{\IfExistskomafont}[1]{%
  \scr@ifundefinedorrelax{scr@fnt@#1}{%
    \scr@ifundefinedorrelax{scr@fnt@instead@#1}{\@secondoftwo}{\@firstoftwo}%
  }{%
    \@firstoftwo
  }%
}
\newcommand*{\IfIsAliaskomafont}[1]{%
  \scr@ifundefinedorrelax{scr@fnt@#1}{%
    \scr@ifundefinedorrelax{scr@fnt@instead@#1}{\@secondoftwo}{\@firstoftwo}%
  }{%
    \@secondoftwo
  }%
}
\newcommand*{\setkomafont}[2]{%
  \@ifundefined{scr@fnt@#1}{%
    \@ifundefined{scr@fnt@instead@#1}{%
      \PackageError{scrkbase}{%
        font of element `#1' can't be set}{%
        You've told me to redefine the font selection of the
        element,\MessageBreak%
        but either no such element is known by
        KOMA-Script\MessageBreak%
        or the element does not use a special font selection%
      }%
    }{%
      \PackageInfo{scrkbase}{%
        You've told me to redefine the font selection of the\MessageBreak
        element `#1' that is an alias of element\MessageBreak
        `\csname scr@fnt@instead@#1\endcsname'%
      }%
      \expandafter\setkomafont\expandafter{%
        \csname scr@fnt@instead@#1\endcsname}{#2}%
    }%
  }{%
    \expandafter\expandafter\expandafter\def\csname scr@fnt@#1\endcsname{#2}%
  }%
  \@ifundefined{scr@fnt@wrn@#1}{}{%
    \PackageWarning{scrkbase}{%
      \csname scr@fnt@wrn@#1\endcsname{#1}%
    }%
  }%
}
\newcommand*{\addtokomafont}[2]{%
  \@ifundefined{scr@fnt@#1}{%
    \@ifundefined{scr@fnt@instead@#1}{%
      \PackageError{scrkbase}{%
        font of element `#1' can't be extended%
      }{%
        You've told me to extend the font selection of the
        element,\MessageBreak
        but either no such element is known by
        KOMA-Script\MessageBreak
        or the element does not use a special font selection%
      }%
    }{%
      \PackageInfo{scrkbase}{%
        You've told me to extend the font selection of the\MessageBreak
        element `#1' that is an alias of element\MessageBreak
        `\csname scr@fnt@instead@#1\endcsname'%
      }%
      \expandafter\addtokomafont\expandafter{%
        \csname scr@fnt@instead@#1\endcsname}{#2}%
    }%
  }{%
    \expandafter\expandafter\expandafter\l@addto@macro
    \csname scr@fnt@#1\endcsname{#2}%
  }%
  \@ifundefined{scr@fnt@wrn@#1}{}{%
    \PackageWarning{scrkbase}{%
      \csname scr@fnt@wrn@#1\endcsname{#1}%
    }%
  }%
}
\newcommand*{\usekomafont}[1]{%
  \@ifundefined{scr@fnt@#1}{%
    \@ifundefined{scr@fnt@instead@#1}{%
      \PackageError{scrkbase}{%
        font of element `#1' can't be used%
      }{%
        You've told me to use the font selection of the
        element,\MessageBreak
        but either no such element is known by
        KOMA-Script\MessageBreak
        or the element does not use a special font selection%
      }%
    }{%
      \PackageInfo{scrkbase}{%
        You've told me to use the font selection of the
        element\MessageBreak
        `#1' that is an alias of element `\csname
        scr@fnt@instead@#1\endcsname'\MessageBreak
      }%
      \expandafter\expandafter\expandafter\usekomafont
      \expandafter\expandafter\expandafter{%
        \csname scr@fnt@instead@#1\endcsname}%
    }%
  }{%
    \@nameuse{scr@fnt@#1}%
  }%
}
\newcommand*{\usesizeofkomafont}[1]{%
  \begingroup
    \scr@prepareforkomafont
    \def\selectfont{%
      \global\let\g@scr@f@size\f@size
      \global\let\g@scr@f@baselineskip\f@baselineskip
      \global\let\g@scr@f@linespread\f@linespread
    }%
    \selectfont
    \sbox\@tempboxa{%
      \usekomafont{#1}{\relax}%
    }%
  \endgroup
  \linespread{\g@scr@f@linespread}%
  \fontsize{\g@scr@f@size}{\g@scr@f@baselineskip}%
  \selectfont
}
\newcommand*{\usefamilyofkomafont}{\use@ofkomafont{family}}
\newcommand*{\useseriesofkomafont}{\use@ofkomafont{series}}
\newcommand*{\useshapeofkomafont}{\use@ofkomafont{shape}}
\newcommand*{\useencodingofkomafont}{\use@ofkomafont{encoding}}
\newcommand*{\usefontofkomafont}[1]{%
  \begingroup
    \scr@prepareforkomafont
    \def\selectfont{%
      \global\let\g@scr@f@encoding\f@encoding
      \global\let\g@scr@f@family\f@family
      \global\let\g@scr@f@series\f@series
      \global\let\g@scr@f@shape\f@shape
      \global\let\g@scr@f@size\f@size
      \global\let\g@scr@f@baselineskip\f@baselineskip
      \global\let\g@scr@f@linespread\f@linespread
    }%
    \selectfont
    \sbox\@tempboxa{%
      \usekomafont{#1}{\relax}%
    }%
  \endgroup
  \linespread{\g@scr@f@linespread}%
  \fontsize{\g@scr@f@size}{\g@scr@f@baselineskip}%
  \usefont{\g@scr@f@encoding}{\g@scr@f@family}{\g@scr@f@series}{\g@scr@f@shape}%
}
\newcommand*{\use@ofkomafont}[2]{%
  \begingroup
    \scr@prepareforkomafont
    \def\selectfont{%
      \global\expandafter\let\csname g@scr@f@#1\expandafter\endcsname
                             \csname f@#1\endcsname
    }%
    \selectfont
    \sbox\@tempboxa{%
      \usekomafont{#2}{\relax}%
    }%
  \endgroup
  \@nameuse{font#1}{\csname g@scr@f@#1\endcsname}%
  \selectfont
}
\newcommand*{\g@scr@f@encoding}{}\let\g@scr@f@encoding\f@encoding
\newcommand*{\g@scr@f@family}{}\let\g@scr@f@family\f@family
\newcommand*{\g@scr@f@series}{}\let\g@scr@f@series\f@series
\newcommand*{\g@scr@f@shape}{}\let\g@scr@f@shape\f@shape
\newcommand*{\g@scr@f@size}{}\let\g@scr@f@size\f@size
\newcommand*{\g@scr@f@baselineskip}{}\let\g@scr@f@baselineskip\f@baselineskip
\newcommand*{\g@scr@f@linespread}{}\let\g@scr@f@linespread\f@linespread
\newcommand*{\scr@komafontrelaxlist}{%
  \do\normalcolor
}
\newcommand*{\scr@komafontgobblelist}{%
  \do\color
}
\newcommand*{\scr@komafontonearglist}{%
  \do\MakeUppercase \do\MakeLowercase
}
\newcommand*{\scr@prepareforkomafont}{%
  \long\def\do##1{\let##1\relax}\scr@komafontrelaxlist
  \long\def\do##1{\let##1\@gobble}\scr@komafontgobblelist
  \long\def\do##1{\let##1\@firstofone}\scr@komafontonearglist
}
\newcommand*{\addtokomafontrelaxlist}[1]{%
  \l@addto@macro\scr@komafontrelaxlist{\do#1}%
}
\newcommand*{\addtokomafontgobblelist}[1]{%
  \l@addto@macro\scr@komafontgobblelist{\do#1}%
}
\newcommand*{\addtokomafontonearglist}[1]{%
  \l@addto@macro\scr@komafontonearglist{\do#1}%
}
\newcommand*{\newkomafont}[3][\relax]{%
  \scr@ifundefinedorrelax{scr@fnt@instead@#2}{}{%
    \PackageWarning{scrkbase}{%
      Making stand-alone element `#2' from\MessageBreak
      alias to `\@nameuse{scr@fnt@instead@#2}'
    }%
    \expandafter\let\csname scr@fnt@instead@#2\endcsname\relax
  }%
  \expandafter\newcommand\expandafter*\csname @#2font\endcsname{#3}%
  \expandafter\expandafter\expandafter\newcommand
  \expandafter\expandafter\expandafter*%
  \expandafter\csname scr@fnt@#2\expandafter\endcsname\expandafter{%
    \csname @#2font\endcsname%
  }%
  \ifx\relax#1\relax\else
    \expandafter\newcommand\expandafter*\csname scr@fnt@wrn@#2\endcsname[1]{#1}%
  \fi
}
\newcommand*{\aliaskomafont}[2]{%
  \scr@ifundefinedorrelax{scr@fnt@#1}{}{%
    \PackageWarning{scrkbase}{%
      Redefining stand alone element `#1' as\MessageBreak
      alias to `#2'%
    }
    \expandafter\let\csname scr@fnt@#1\endcsname\relax
  }%
  \scr@ifundefinedorrelax{scr@fnt@wrn@#1}{}{%
    \expandafter\let\csname scr@fnt@wrn@#1\encsname\relax
  }
  \expandafter\newcommand\expandafter*\csname scr@fnt@instead@#1\endcsname{%
    #2%
  }%
}
%%% From File: $Id: scrlogo.dtx 3527 2020-09-11 09:44:32Z kohm $
\@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'.