% \CheckSum{953}
% \iffalse meta-comment
% ======================================================================
% scrkfont.dtx
% Copyright (c) Markus Kohm, 2002-2007
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
% This work may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, version 1.3b of the license.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3b or later is part of all distributions of LaTeX 
% version 2005/12/01 or later and of this work.
%
% This work has the LPPL maintenance status "author-maintained".
%
% The Current Maintainer and author of this work is Markus Kohm.
%
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrkfont.dtx
% Copyright (c) Markus Kohm, 2002-2007
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3b, verteilt und/oder veraendert werden.
% Die neuste Version dieser Lizenz ist
%   http://www.latex-project.org/lppl.txt
% und Version 1.3b ist Teil aller Verteilungen von LaTeX
% Version 2005/12/01 oder spaeter und dieses Werks.
%
% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
% (allein durch den Autor verwaltet).
%
% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm.
% 
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
% ======================================================================
% \fi
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
% \iffalse
%%% From File: scrkfont.dtx
%<*driver>
% \fi
\ProvidesFile{scrkfont.dtx}[2006/08/18 v2.96 KOMA-Script (font selection)]
% \iffalse
\documentclass[halfparskip-]{scrdoc}
\usepackage[english,ngerman]{babel}
\usepackage[latin1]{inputenc}
\CodelineIndex
\RecordChanges
\GetFileInfo{scrkfont.dtx}
\title{\KOMAScript{} \partname\ \texttt{\filename}%
  \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
\date{\filedate}
\author{Markus Kohm}

\begin{document}
  \maketitle
  \tableofcontents
  \DocInput{\filename}
\end{document}
%</driver>
% \fi
%
% \selectlanguage{ngerman}
%
% \changes{v2.95}{2002/06/25}{%
%   erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
%
% \section{Schriftauswahl}
%
% Dieser Bereich befasst sich mit allem, was zur Schriftauswahl
% gehört. Die einzelnen Elemente, für die eine Schriftauswahl möglich
% ist, sind jedoch in den Dateien definiert, in denen diese Elemente
% auftreten.
%
% \StopEventually{\PrintIndex\PrintChanges}
%
% \iffalse
%<*option>
% \fi
%
%
% \subsection{Option zur Auswahl der Größe der Grundschrift}
%
%  \begin{option}{10pt}
%  \begin{option}{11pt}
%  \begin{option}{12pt}
% Diese Optionen existieren nicht mehr als explizite Optionen, sondern
% werden in \texttt{scrtarea.dtx} über \cs{DeclareOption*}
% ausgewertet.
%  \begin{macro}{\@ptsize}
%    \changes{v2.96}{2006/08/11}{\cs{@ptsize} hat temporär eine andere
%      Bedeutung}
% Wir definieren \cs{@ptsize} als Grundschriftgrößee minus 10\,pt.
% Hier wird die Standardeinstellung 11\,pt für alle Klassen außer der
% Briefklasse gewählt. Bis zum Einstellen tatsächlichen Einstellen der
% Schriftgröße wird in \cs{@ptsize} allerdings die tatsächliche Größe
% angegeben, damit sich Rundungsfehler nicht so leicht summieren.
%    \begin{macrocode}
\newcommand*\@ptsize{%
%<!letter>  11%
%<letter>  12%
}
%    \end{macrocode}
%  \end{macro}
%  \end{option}
%  \end{option}
%  \end{option}
%
%  \begin{macro}{\@pt@scan}
%    \changes{v2.6}{2000/01/04}{neu (intern)}
%  \begin{macro}{\@pt@@scan}
%    \changes{v2.6}{2000/01/04}{neu (intern)}
% Das Macro \cs{@pt@scan} wird benötigt, um die Schriftgröße nach der alten
% Methode zu erkennen.
%    \begin{macrocode}
\newcommand*{\@pt@scan}{%
  \expandafter\@pt@@scan\CurrentOption pt\@pt@@scan%
}
\newcommand*{\@pt@@scan}{}
\def\@pt@@scan #1pt#2\@pt@@scan{%
  \ifstr{#2}{pt}{%
    \ifnumber{#1}{%
      \KOMA@UseObsolete{option}{\PackageInfo}{#1#2}{fontsize=#1#2}%
    }{\@headlines}%
  }{\@headlines}%
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
% \begin{option}{fontsize}
%   \changes{v2.96}{2006/08/11}{Funktion komplett geändert}
% Hier nun die Option, die tatsächlich verwendet wird. Es sei darauf
% hingewiesen, dass damit auch Schriftgrößen wie \texttt{10.3pt} denkbar
% wären.
%    \begin{macrocode}
\KOMA@key{fontsize}{%
  \scr@ifundefined{changefontsizes}{%
    \@defaultunits\@tempdima#1pt\relax\@nnil
    \edef\@ptsize{#1}%
  }{%
    \changefontsizes{#1}%
  }%
}
%    \end{macrocode}
% \end{option}
%
%
%
% \iffalse
%</option>
%<*body>
% \fi
%
% \subsection{Einlesen der Schriftgrößendatei}
%
% \changes{v2.6}{2000/01/04}{Einlesen der Schriftgrößen-Options-Datei
%   funktioniert nun mit diversen Größen}
%
% \begin{macro}{\changefontsizes}
%   \changes{v2.96}{2006/08/11}{neue Anweisung (benötigt \eTeX)}
% Diese Anweisung bietet berechnete Schriftgrößen als Fallbacklösung an. Das
% optionale erste Argument ist dabei der Grundlinienabstand. Das zweite
% Argument ist die gewünschte Grundschriftgröße.
%    \begin{macrocode}
\newcommand*{\changefontsizes}[2][1.2\@tempdima]{%
  \ClassWarning{\KOMAClassName}{%
    Using fallback calculation to setup font sizes\MessageBreak
    for basic size `#2'}%
  \@defaultunits\@tempdima#2pt\relax\@nnil
  \setlength{\@tempdimc}{\@tempdima}%
  \addtolength{\@tempdimc}{-10\p@}%
  \edef\@ptsize{\strip@pt\@tempdimc}%
  \@defaultunits\@tempdimb#1pt\relax\@nnil
  \setlength{\@tempdimc}{\dimexpr (100\@tempdimb / \@tempdima * \p@)}%
  \edef\@tempb{\the\@tempdimc}%
  \setlength{\@tempdimc}{\@tempdima}%
  \def\@tempa##1##2##3##4##5\@nnil{\def##1{##2.##3##4}}%
  \expandafter\@tempa\expandafter\@tempb\@tempb\@nnil%
  \setlength{\abovedisplayskip}{%
    \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}%
  \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}%
  \setlength{\belowdisplayskip}{\abovedisplayskip}%
  \setlength{\belowdisplayshortskip}{%
    .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}%
  \edef\normalsize{%
    \noexpand\@setfontsize\noexpand\normalsize
      {\the\@tempdima}{\the\@tempdimb}%
    \abovedisplayskip \the\abovedisplayskip
    \abovedisplayshortskip \the\abovedisplayshortskip
    \belowdisplayskip \the\belowdisplayskip
    \belowdisplayshortskip \the\belowdisplayshortskip
    \let\noexpand\@listi\noexpand\@listI
  }%
  \setlength{\@tempdima}{0.9125\@tempdimc}%
  \setlength{\@tempdimb}{\@tempb\@tempdima}%
  \setlength{\abovedisplayskip}{%
    \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}%
  \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}%
  \setlength{\belowdisplayskip}{\abovedisplayskip}%
  \setlength{\belowdisplayshortskip}{%
    .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}%
  \edef\small{%
    \noexpand\@setfontsize\noexpand\small
      {\the\@tempdima}{\the\@tempdimb}%
    \abovedisplayskip \the\abovedisplayskip
    \abovedisplayshortskip \the\abovedisplayshortskip
    \belowdisplayskip \the\belowdisplayskip
    \belowdisplayshortskip \the\belowdisplayshortskip
    \let\noexpand\@listi\noexpand\@listi@small
  }%
  \setlength{\@tempdima}{.83334\@tempdimc}%
  \setlength{\@tempdimb}{\@tempb\@tempdima}%
  \setlength{\abovedisplayskip}{%
    \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}%
  \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}%
  \setlength{\belowdisplayskip}{\abovedisplayskip}%
  \setlength{\belowdisplayshortskip}{%
    .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}%
  \edef\footnotesize{%
    \noexpand\@setfontsize\noexpand\footnotesize
      {\the\@tempdima}{\the\@tempdimb}%
    \abovedisplayskip \the\abovedisplayskip
    \abovedisplayshortskip \the\abovedisplayshortskip
    \belowdisplayskip \the\belowdisplayskip
    \belowdisplayshortskip \the\belowdisplayshortskip
    \let\noexpand\@listi\noexpand\@listi@footnotesize
  }%
  \setlength{\@tempdima}{.66667\@tempdimc}%
  \setlength{\@tempdimb}{\@tempb\@tempdima}%
  \edef\scriptsize{%
    \noexpand\@setfontsize\noexpand\scriptsize
      {\the\@tempdima}{\the\@tempdimb}%
  }%
  \setlength{\@tempdima}{.5\@tempdimc}%
  \setlength{\@tempdimb}{\@tempb\@tempdima}%
  \edef\tiny{%
    \noexpand\@setfontsize\noexpand\tiny
      {\the\@tempdima}{\the\@tempdimb}%
  }%
  \setlength{\@tempdima}{1.2\@tempdimc}%
  \setlength{\@tempdimb}{\@tempb\@tempdima}%
  \edef\large{%
    \noexpand\@setfontsize\noexpand\large
      {\the\@tempdima}{\the\@tempdimb}%
  }%
  \setlength{\@tempdima}{1.44\@tempdimc}%
  \setlength{\@tempdimb}{\@tempb\@tempdima}%
  \edef\Large{%
    \noexpand\@setfontsize\noexpand\Large
      {\the\@tempdima}{\the\@tempdimb}%
  }%
  \setlength{\@tempdima}{1.728\@tempdimc}%
  \setlength{\@tempdimb}{\@tempb\@tempdima}%
  \edef\LARGE{%
    \noexpand\@setfontsize\noexpand\LARGE
      {\the\@tempdima}{\the\@tempdimb}%
  }%
  \setlength{\@tempdima}{2.074\@tempdimc}%
  \setlength{\@tempdimb}{\@tempb\@tempdima}%
  \edef\huge{%
    \noexpand\@setfontsize\noexpand\huge
      {\the\@tempdima}{\the\@tempdimb}%
  }%
  \setlength{\@tempdima}{2.488\@tempdimc}%
  \setlength{\@tempdimb}{\@tempb\@tempdima}%
  \edef\Huge{%
    \noexpand\@setfontsize\noexpand\Huge
      {\the\@tempdima}{\the\@tempdimb}%
  }%
  \normalsize
  \setlength{\footnotesep}{.7\@tempdimc}%
  \setlength{\skip\footins}{.9\@tempdimc \@plus .3333\@tempdimc \@minus
    .6\@tempdimc}%
  \setlength{\floatsep}{\@tempdimc \@plus .1667\@tempdimc \@minus
    .3333\@tempdimc}%
  \setlength{\textfloatsep}{1.6667\@tempdimc \@plus .1667\@tempdimc \@minus
    .3333\@tempdimc}%
  \setlength{\intextsep}{\@tempb\@tempdimc \@plus .3333\@tempdimc \@minus
    .3333\@tempdimc}%
  \setlength{\dblfloatsep}{\@tempb\@tempdimc \@plus .1667\@tempdimc \@minus
    .3333\@tempdimc}%
  \setlength{\dbltextfloatsep}{\textfloatsep}%
  \setlength{\@fptop}{0\p@ \@plus 1fil}%
  \setlength{\@fpsep}{.8333\@tempdimc \@plus 2fil}%
  \setlength{\@fpbot}{\@fptop}%
  \setlength{\@dblfptop}{0\p@ \@plus 1fil}%
  \setlength{\@dblfpsep}{.8333\@tempdimc \@plus 2fil}%
  \setlength{\@dblfpbot}{\@fptop}%
  \setlength{\partopsep}{.25\@tempdimc \@plus .16667\@tempdimc \@minus
    .16667\@tempdimc}%
  \setlength{\topsep}{.8333\@tempdimc \@plus .3333\@tempdimc \@minus
    .5\@tempdimc}%
  \setlength{\parsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}%
  \@tempswafalse
  \begingroup
    \def\@list@extra{\aftergroup\@tempswatrue}%
    \csname @listi\endcsname
  \endgroup
  \edef\@listi{\leftmargin\leftmargini
    \topsep \the\topsep
    \parsep \the\parsep
    \itemsep \parsep
    \if@tempswa\noexpand\@list@extra\fi
  }%
  \let\@listI\@listi
  \setlength{\topsep}{.75\@tempdimc \@plus .25\@tempdimc \@minus
    .41667\@tempdimc}%
  \setlength{\parsep}{.375\@tempdimc \@plus .16667\@tempdimc \@minus \p@}%
  \@tempswafalse
  \begingroup
    \def\@list@extra{\aftergroup\@tempswatrue}%
    \csname @listi\endcsname
  \endgroup
  \edef\@listi@small{\leftmargin\leftmargini
    \topsep \the\topsep
    \parsep \the\parsep
    \itemsep \parsep
    \if@tempswa\noexpand\@list@extra\fi
  }%
  \setlength{\topsep}{.5\@tempdimc \@plus .16667\@tempdimc \@minus
    .16667\@tempdimc}%
  \setlength{\parsep}{.25\@tempdimc \@plus .16667\@tempdimc \@minus \p@}%
  \@tempswafalse
  \begingroup
    \def\@list@extra{\aftergroup\@tempswatrue}%
    \csname @listi\endcsname
  \endgroup
  \edef\@listi@footnotesize{\leftmargin\leftmargini
    \topsep \the\topsep
    \parsep \the\parsep
    \itemsep \parsep
    \if@tempswa\noexpand\@list@extra\fi
  }%
  \setlength{\topsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}%
  \setlength{\parsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}%
  \@tempswafalse
  \begingroup
    \def\@list@extra{\aftergroup\@tempswatrue}%
    \csname @listii\endcsname
  \endgroup
  \edef\@listii{\leftmargin\leftmarginii
    \labelwidth=\dimexpr \leftmargin-\labelsep
    \topsep \the\topsep
    \parsep \the\parsep
    \itemsep \parsep
    \if@tempswa\noexpand\@list@extra\fi
  }%
  \setlength{\topsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}%
  \setlength{\parsep}{\p@ \@plus\z@ \@minus\p@}%
  \@tempswafalse
  \begingroup
    \def\@list@extra{\aftergroup\@tempswatrue}%
    \csname @listiii\endcsname
  \endgroup
  \edef\@listiii{\leftmargin\leftmarginiii
    \labelwidth=\dimexpr \leftmargin-\labelsep
    \topsep \the\topsep
    \parsep \z@
    \partopsep \the\parsep
    \itemsep \topsep
    \if@tempswa\noexpand\@list@extra\fi
  }%
  \@tempswafalse
  \begingroup
    \def\@list@extra{\aftergroup\@tempswatrue}%
    \csname @listiv\endcsname
  \endgroup
  \def\@listiv{\leftmargin\leftmarginiv
    \labelwidth=\dimexpr \leftmargin-\labelsep
    \if@tempswa\noexpand\@list@extra\fi
  }%
  \@tempswafalse
  \begingroup
    \def\@list@extra{\aftergroup\@tempswatrue}%
    \csname @listv\endcsname
  \endgroup
  \def\@listv{\leftmargin\leftmarginv
    \labelwidth=\dimexpr \leftmargin-\labelsep
    \if@tempswa\noexpand\@list@extra\fi
  }%
  \@tempswafalse
  \begingroup
    \def\@list@extra{\aftergroup\@tempswatrue}%
    \csname @listvi\endcsname
  \endgroup
  \def\@listvi{\leftmargin\leftmarginvi
    \labelwidth=\dimexpr \leftmargin-\labelsep
    \if@tempswa\noexpand\@list@extra\fi
  }%
  \@listi
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@fontsizefilebase}
%   \changes{v2.96}{2006/08/11}{neu (intern)}
% Dieses Makro speichert den Präfix der primären
% Schriftgrößenoptionsdateien. Es wird nur definiert, wenn es nicht bereits
% definiert ist. Damit können Wrapperklassen komplett andere Größen vorgeben,
% ohne mit \cs{ReplaceInput} arbeiten zu müssen.
%    \begin{macrocode}
\providecommand*{\@fontsizefilebase}{scrsize}
%    \end{macrocode}
% \end{macro}
%
% Zunächst wird die gewünschte Größe, die in \cs{@ptsize} abgelegt ist, als
% Länge ermittelt. In \cs{@tempa} wird die ursprünglich gewünschte Größe
% abgelegt, damit zwischen \texttt{10pt}, \texttt{10} und \texttt{10dd}
% unterschieden werden kann. In \cs{@tempb} wird hingegen die Größe in pt
% abgelegt, damit die Standard-Dateien verwendet werden können. Dann wird
% \cs{@ptsize} schon einmal richtig eingestellt.
%    \begin{macrocode}
\expandafter\@defaultunits\expandafter\@tempdima\@ptsize pt\relax\@nnil
\edef\@tempa{\@ptsize}%
\setlength{\@tempdimb}{\@tempdima}%
\edef\@tempb{\strip@pt\@tempdimb}%
\addtolength{\@tempdimb}{-10\p@}%
\edef\@ptsize{\strip@pt\@tempdimb}%
%    \end{macrocode}
% Jetzt wird zunächst versucht, ob eine Datei
% "`\texttt{\cs{fontsizefilebase}\cs{@tempa}.clo}"' vorhanden ist, also eine,
% bei der die ursprünliche Einheit im Namen angegeben ist. Wenn das der Fall
% ist, wird diese verwendet. Wenn nicht wird das Ganze für \cs{@tempb} um die
% Einheit pt erweitert wiederholt.
%    \begin{macrocode}
\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{
  \ClassInfo{\KOMAClassName}{%
    File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}%
}{%
  \InputIfFileExists{\@fontsizefilebase\@tempb pt.clo}{%
    \ClassInfo{\KOMAClassName}{%
      File `\@fontsizefilebase\@tempb pt.clo' used instead of\MessageBreak
      file `\@fontsizefilebase\@tempa.clo' to setup font sizes}%
  }{%
%    \end{macrocode}
% Wurde bis hier noch keine Datei geladen, wird nun versucht, die
% Größendateien der Standardklassen zu verwenden.
%    \begin{macrocode}
%<*book>
    \InputIfFileExists{bk\@tempb.clo}{%
      \ClassInfo{\KOMAClassName}{%
        File `bk\@tempb.clo' used to setup font sizes}%
    }{%
%</book>
      \InputIfFileExists{size\@tempb.clo}{%
        \ClassInfo{\KOMAClassName}{%
          File `size\@tempb.clo' used to setup font sizes}%
      }{%
%    \end{macrocode}
% Sind auch diese Dateien nicht vorhanden, so wird als Fallback eine
% Berechnung der Schriftgrößen verwendet. Es sei darauf hingewiesen, dass
% dabei auch \cs{@tempa}, \cs{@tempb} und \cs{@ptsize} neu gesetzt werden.
%    \begin{macrocode}
        \changefontsizes{\@tempa}%
%    \end{macrocode}
% Damit sollten nun die Schriftgrößen eingestellt sein.
%    \begin{macrocode}
      }%
%<book>    }%
  }%
}
%    \end{macrocode}
% 
%
% \subsection{"`Alte"' Font-Auswahlbefehle}
%
%  \begin{macro}{\rm}
%  \begin{macro}{\sf}
%  \begin{macro}{\tt}
%  \begin{macro}{\bf}
%  \begin{macro}{\it}
%  \begin{macro}{\sl}
%  \begin{macro}{\sc}
%  \begin{macro}{\sfb}
%    \changes{v2.2c}{1995/05/25}{nicht mehr mathematisch}
%    \changes{v2.3a}{1995/07/08}{keine Unterscheidung mehr für den
%      Kompatibilitätsmodus}
% Um die Umstellung von \LaTeX\ auf \LaTeXe\ zu erleichtern, gibt es
% die alten Font-Auswahlbefehle \cs{rm}, \cs{sf}, \cs{tt}, \cs{bf},
% \cs{it}, \cs{sl} und \cs{sc} auch in den Klassen. Es ist zu
% beachten, dass diese Befehle hier nach dem alten
% Fontauswahlverfahren arbeiten. Es werden also immer alle Parameter
% zugleich geändert. Somit ist zu empfehlen, dass statt dieser Befehle
% zukünftig in der Regel die neuen \cs{text\dots}-Befehle verwendet
% werden.
%
% Der aus der \textsf{Script 2.0}-Familie bekannte Befehl \cs{sfb} ist
% hier ebenfalls definiert.
%    \begin{macrocode}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareOldFontCommand{\sfb}{\normalfont\sffamily\bfseries}{%
  \@nomath\sfb}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\cal}
%    \changes{v2.3}{1995/06/25}{hier statt im \LaTeX-Kern}
% Der Befehl ist in \LaTeX{} nicht mehr definiert. Deshalb wird er nun
% neu und gleich robust deklariert. Dafür fällt \cs{pcal} weg.
%    \changes{v2.3g}{1996/01/14}{überflüssige Klammerpaare entfernt}
%  \begin{macro}{\mit}
%    \changes{v2.3}{1995/06/25}{hier statt im \LaTeX-Kern}
% Der Befehl ist in \LaTeX{} nicht mehr definiert. Deshalb wird er nun
% neu und gleich robust deklariert. Dafür fällt \cs{pmit} weg.
%   \changes{v2.3g}{1996/01/14}{überflüssige Klammerpaare entfernt}
%
% Die beiden Befehle \cs{cal} und \cs{mit} war bis zur \LaTeX-Version
% vom 1.12.1994 patch level 3 noch im Kernal definiert. Jetzt sind die
% beiden den Klassen überlassen. Hier ist die Definition aus den
% Standard-classes übernommen.
%    \begin{macrocode}
\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%
% \subsection{Setzen der Schrift eines Elements}
%
%  \begin{macro}{\setkomafont}
%    \changes{v2.8o}{2001/09/14}{neu}
% Mit Hilfe dieses Makros kann die Schriftart von
% \KOMAScript-Elementen gesetzt werden.
%    \begin{macrocode}
\newcommand*{\setkomafont}[2]{%
  \@ifundefined{scr@fnt@#1}{%
    \@ifundefined{scr@fnt@instead@#1}{%
      \ClassError{\KOMAClassName}{%
        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%
      }%
    }{%
      \ClassInfo{\KOMAClassName}{%
        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}{}{%
    \ClassWarning{\KOMAClassName}{%
      \csname scr@fnt@wrn@#1\endcsname{#1}%
    }%
  }%
}
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\addtokomafont}
%    \changes{v2.8p}{2001/09/22}{neu}
% Dieses Makro funktioniert fast wie obiges, allerdings fügt es der
% vorhandenen Definition etwas an.
%  \begin{macro}{\l@addto@macro}
%    \changes{v2.8p}{2001/09/22}{neu (intern)}
% Damit dies lokal möglich ist, wird eine lokal arbeitende Variante
% von \cs{g@addto@macro} benötigt, wie sie hier vorgestellt wird.
%    \changes{v2.95}{2006/06/02}{korrigiert, damit es sich bezüglich
%      Erweiterung um Makrodefinitonen mit Argumenten wie \cs{g@addto@macro}
%      verhält}
%    \begin{macrocode}
\scr@ifundefined{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}}%
  }%
}
%    \end{macrocode}
%  \end{macro}
%    \begin{macrocode}
\newcommand*{\addtokomafont}[2]{%
  \@ifundefined{scr@fnt@#1}{%
    \@ifundefined{scr@fnt@instead@#1}{%
      \ClassError{\KOMAClassName}{%
        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%
      }%
    }{%
      \ClassInfo{\KOMAClassName}{%
        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}{}{%
    \ClassWarning{\KOMAClassName}{%
      \csname scr@fnt@wrn@#1\endcsname{#1}%
    }%
  }%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\usekomafont}
%    \changes{v2.8p}{2001/09/28}{neu}
%    \changes{v2.96}{2006/08/18}{Benutzung eines Fontalias korrigiert}
% Mit Hilfe dieses Makros kann auf die Schriftart von
% \KOMAScript-Elementen umgeschaltet werden.
%    \begin{macrocode}
\newcommand*{\usekomafont}[1]{%
  \@ifundefined{scr@fnt@#1}{%
    \@ifundefined{scr@fnt@instead@#1}{%
      \ClassError{\KOMAClassName}{%
        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%
      }%
    }{%
      \ClassInfo{\KOMAClassName}{%
        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}%
  }%
}
%    \end{macrocode}
%  \end{macro}
%
% Um dann ein Element zu definieren, definiert man zunächst ein
% Makro, das die Schriftart enthält. Dann definiert man
% \cs{scr@fnt@\emph{Elementname}}. Wobei der Inhalt dieses Makros das
% Makro ist, das die Schriftart speichert. Damit ist das Element
% definiert. Soll ein Element durch ein anderes Element gesteuert
% werden, so definiert man stattdessen
% \cs{scr@fnt@instead@\emph{Elementname}}, wobei der Inhalt des Makros
% dann der Name jenes anderen Elements ist. Soll beim Ändern der
% Schrift eines Elements eine zusätzliche Warnung ausgegeben werden,
% so kann der Text dieser Warnung in
% \cs{scr@fnt@wrn@\emph{Elementname}} abgelegt werden. Also alles
% eigentlich ganz einfach. Damit es noch einfacher wird, ein paar 
% Hilfsmakros:
%
%  \begin{macro}{\newkomafont}
%    \changes{v2.95}{2004/07/21}{neu}
% Mit \cs{newkomafont} wird ein neues Element definiert. Das erste optionale
% Argument ist dabei die optionale Warnung. Ist dieses nicht gesetzt oder
% \cs{relax}, so wird keine Warnung definiert. Das erste obligatorische
% Argument ist der Name des Elements. Als letztes folgt die Voreinstellung für
% die Schrift dieses Elements. Als Fontmakro wird übrigens
% \cs{@\emph{Elementname}font} definiert.
%    \begin{macrocode}
\newcommand*{\newkomafont}[3][\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}%
  \fi
}
%    \end{macrocode}
%  \begin{macro}{\aliaskomafont}
%    \changes{v2.95}{2004/07/21}{neu}
% Mit \cs{aliaskomafont} wird hingegen einfach ein Alias definiert. Dieser
% Befehlt kennt zwei Argumente: der Name des Elements und der Names des
% Elements, das stattdessen verwendet werden soll.
%    \begin{macrocode}
\newcommand*{\aliaskomafont}[2]{%
  \expandafter\newcommand\expandafter*\csname scr@fnt@instead@#1\endcsname{%
    #2%
  }%
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
% \iffalse
%</body>
% \fi
%
% \Finale
%
\endinput
%
% end of file `scrkfont.dtx'
%%% Local Variables:
%%% mode: doctex
%%% TeX-master: t
%%% End:
