diff options
Diffstat (limited to 'macros/latex/contrib/koma-script/scrkernel-fonts.dtx')
-rw-r--r-- | macros/latex/contrib/koma-script/scrkernel-fonts.dtx | 2028 |
1 files changed, 2028 insertions, 0 deletions
diff --git a/macros/latex/contrib/koma-script/scrkernel-fonts.dtx b/macros/latex/contrib/koma-script/scrkernel-fonts.dtx new file mode 100644 index 0000000000..7c4c1af971 --- /dev/null +++ b/macros/latex/contrib/koma-script/scrkernel-fonts.dtx @@ -0,0 +1,2028 @@ +% \iffalse meta-comment +% ====================================================================== +% scrkernel-fonts.dtx +% Copyright (c) Markus Kohm, 2002-2022 +% +% 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.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c 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.md. +% ====================================================================== +%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $ +%<identify>%%% (run: identify) +%<option>%%% (run: option) +%<body>%%% (run: body) +%<10pt>%%% (run: 10pt) +%<11pt>%%% (run: 11pt) +%<11pt>%%% (run: 12pt) +%<*dtx> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\begingroup + \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}} + \filedate$Date: 2022-06-05 12:38:02 +0200 (So, 05. Jun 2022) $ + \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}} + \filerevision$Revision: 3874 $ + \edef\reserved@a{% + \noexpand\endgroup + \noexpand\ProvidesFile{scrkernel-fonts.dtx}% + [\filedate\space\filerevision\space + KOMA-Script source + (font size)] + }% +\reserved@a +% \changes{v3.09}{2011/02/23}{new package \pkg*{scrfontsizes}} +%</dtx> +%<*package&generator&identify> +%<package&generator&identify>\ProvidesPackage{scrfontsizes}[% +%!KOMAScriptVersion +%<package&generator&identify> package (font size file generator)] +%</package&generator&identify> +%<*dtx> +\documentclass[USenglish]{koma-script-source-doc} +\usepackage{babel} +\usepackage{hvlogos} +\setcounter{StandardModuleDepth}{2} +\begin{document} +\DocInput{scrkernel-fonts.dtx} +\end{document} +%</dtx> +% \fi +% +% +% \changes{v2.95}{2002/06/25}{new by splitting \file{scrclass.dtx}} +% \changes{v3.36}{2022/02/22}{switch over from \cls*{scrdoc} to +% \cls*{koma-script-source-doc}} +% \changes{v3.36}{2022/02/22}{implementation documentation in English} +% +% \GetFileInfo{scrkernel-fonts.dtx} +% \title{Code for the Foats of the +% \href{https://komascript.de}{\KOMAScript} Classes} +% \author{\href{mailto:komascript@gmx.info}{Markus Kohm}} +% \date{Revision \fileversion{} of \filedate} +% \maketitle +% \begin{abstract} +% \file{scrkernel-fonts.dtx} mainly implements the font selection of +% \KOMAScript{}. This is not only the selection of the font sizes but also +% the implementation of font elements. Additionally it provides package +% \pkg*{scrfontsizes} to generate new font size files. +% \end{abstract} +% \tableofcontents +% +% \section{User Manual} +% +% You can find the user documentation the commands implemented here in the +% \KOMAScript{} manual, either the German \file{scrguide} or the English +% \file{scrguien}. The user documentation of alpha package \pkg*{scrfontsizes} +% is still missing. +% +% +% \MaybeStop{\PrintIndex} +% +% +% \section{Implementation of \KOMAScript{} Font Features} +% +% \subsection{Options of the font size files generator package} +% +% From version 3.09 there exist package \pkg*{scrfontsizes}, which is currently +% very rudimentary. However it can used to generate font size files that can +% be modified by the user afterwards. Currently it does not provide any options. +% +% \begin{macrocode} +%<*generator&option> +\ProcessOptions\relax +%</generator&option> +% \end{macrocode} +% +% \subsection{Font size options of the \KOMAScript{} classes} +% +% \begin{option}{10pt,11pt,12pt} +% These options do not exist as explicit options but are handled by +% \cs{DeclareOption*} via \cs{@pt@scan}. +% \end{option} +% +% \begin{macro}{\@ptsize} +% \changes{v2.96}{2006/08/11}{\cs{@ptsize} different temporary meaning} +% \changes{v3.27}{2019/03/25}{\cs{providecommand} instead of \cs{newcommand}} +% The main meaning of \cs{@ptsize} is the base font size minus 10\,pt, or in +% other words: base font size = \cs{@ptsize} + 10\,pt. But, until the final +% font size has been set, we use it for the default size. \cs{providecommand} +% is used to define it, so a wrapper class can define a different default size +% before loading the final class. +% \begin{macrocode} +%<*class&option> +\providecommand*\@ptsize{% +%<!letter> 11% +%<letter> 12% +} +%</class&option> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@pt@scan} +% \changes{v2.6}{2000/01/04}{added} +% \begin{macro}{\@pt@@scan} +% \changes{v2.6}{2000/01/04}{added} +% \changes{v2.97c}{2007/05/12}{\cs{KOMA@UseObsolete} replaced by +% \cs{KOMA@UseObsoleteOption}} +% \changes{v2.98c}{2008/03/22}{Usage of \cs{KOMA@UseObsoleteOption} fixed} +% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by \cs{PackageInfoNoLine}} +% \changes{v3.12}{2013/03/04}{other font size options than \opt{10pt}, +% \opt{11pt}, \opt{12pt} are deprecated} +% \changes{v3.28}{2019/11/18}{\cs{ifstr} renamed to \cs{Ifstr}} +% \changes{v3.28}{2019/11/18}{\cs{ifnumber} renamed to \cs{Ifnumber}} +% This macro scans the current option and recognizes classic font size +% options. It is used with \cs{DeclareOption*}. +% \begin{macrocode} +%<*class&option> +\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}{% + \Ifstr{#1}{10}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \Ifstr{#1}{11}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \Ifstr{#1}{12}{% + \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }{% + \KOMA@UseDeprecatedOption{\PackageWarningNoLine{\KOMAClassName}}% + {#1#2}{fontsize=#1#2}% + }% + }% + } + }{\@headlines}% + }{\@headlines}% +} +%</class&option> +% \end{macrocode} +% \end{macro}^^A \@pt@@scan +% \end{macro}^^A \@pt@scan +% +% \begin{macro}{\@fontsizefilebase} +% \changes{v2.96}{2006/08/11}{added} +% \changes{v3.00}{2008/05/01}{definition earlier because of \pkg*{scrextend}} +% This is the prefix for the \KOMAScript{} font size files. Wrapper classes +% are allowed to change it to use their own font size files. +% \begin{macrocode} +%<*option&(class|extend)> +\providecommand*{\@fontsizefilebase}{scrsize} +% \end{macrocode} +% \end{macro} +% +% \changes{v3.17}{2015/03/10}{die Schriftgröße wird in der internen +% Optionenliste gespeichert} +% \begin{option}{fontsize} +% \changes{v2.96}{2006/08/11}{Funktion komplett geändert} +% \changes{v2.98c}{2008/03/26}{lädt nach Möglichkeit die zugehörige +% Schriftgrößendatei} +% \changes{v3.12}{2013/03/05}{Status wird mit \cs{FamilyKeyStateProcessed} +% gesetzt.} +% 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}{% +%<*!extend> + \scr@ifundefinedorrelax{changefontsizes}{% + \@defaultunits\@tempdima#1pt\relax\@nnil + \edef\@ptsize{#1}% + }{% +%</!extend> + \expandafter\@defaultunits\expandafter\@tempdima#1 pt\relax\@nnil + \edef\@tempa{#1}% + \setlength{\@tempdimb}{\@tempdima}% + \edef\@tempb{\strip@pt\@tempdimb}% + \addtolength{\@tempdimb}{-10\p@}% + \edef\@ptsize{\strip@pt\@tempdimb}% + \edef\@tempa{% + \noexpand\makeatletter + \noexpand\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{% +%<!extend> \noexpand\ClassInfo{\KOMAClassName}{% +%<extend> \noexpand\PackageInfo{scrextend}{% + File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}% + }{% + \noexpand\InputIfFileExists{\@fontsizefilebase\@tempb pt.clo}{% +%<!extend> \noexpand\ClassInfo{\KOMAClassName}{% +%<extend> \noexpand\PackageInfo{scrextend}{% + File `\@fontsizefilebase\@tempb pt.clo' used instead of% + \noexpand\MessageBreak + file `\@fontsizefilebase\@tempa.clo' to setup font sizes}% + }{% + \noexpand\changefontsizes{#1}% + }% + }% + \noexpand\catcode`\noexpand\@=\the\catcode`\@ + }% +%<extend> \scr@ifundefinedorrelax{changefontsizes}{% +%<extend> \expandafter\AtEndOfPackage\expandafter{\@tempa}% +%<extend> }{% + \@tempa + }% + \FamilyKeyStateProcessed + \KOMA@kav@xreplacevalue{.% +%<class> \KOMAClassFileName +%<extend> scrextend.\scr@pkgextension + }{fontsize}{#1}% +} +%</option&(class|extend)> +% \end{macrocode} +% \end{option} +% +% +% \subsection{Packages required by the font size file generator package} +% +% \pkg*{scrfontsizes} needs command \cs{changefontsizes}. This can either be +% provided by a \KOMAScript{} class or package \pkg*{scrextend}. +% \begin{macrocode} +%<*generator&body> +\@ifundefined{changefontsizes}{\RequirePackage{scrextend}}{} +%</generator&body> +% \end{macrocode} +% +% +% \subsection{The font size files} +% +% \changes{v2.6}{2000/01/04}{reading font size files works independent from size} +% \changes{v2.98c}{2008/03/26}{using my own \file{scrsize\dots.clo} files} +% +% We need at least the font size files for the three base sizes 10\,pt, 11\,pt +% and 12\,pt. From version 2.98c \KOMAScript{} prefers to use its own files, +% because these can be loaded without problems after |\begin{document}| and +% after another font size file has already been loaded. Nevertheless the base +% sizes are more or less from the standard classes. +% +% \begin{macrocode} +%<*10pt|11pt|12pt> +\ProvidesFile{% +%<10pt> scrsize10pt.clo% +%<11pt> scrsize11pt.clo% +%<12pt> scrsize12pt.clo% +}[\KOMAScriptVersion\space font size class option % +%<10pt> (10pt)% +%<11pt> (11pt)% +%<12pt> (12pt)% +] +% \end{macrocode} +% +% \begin{command}{\normalsize,\small,\footnotesize,\scriptsize,\tiny,\large, +% \Large,\LARGE,\huge,\Huge} +% \changes{v2.98c}{2008/03/26}{defined in the \file{scrsize\dots.clo} files} +% \begin{macrocode} +\def\normalsize{% +%<*10pt> + \@setfontsize\normalsize\@xpt\@xiipt + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ +%</10pt> +%<*11pt> + \@setfontsize\normalsize\@xipt{13.6}% + \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ +%</11pt> +%<*12pt> + \@setfontsize\normalsize\@xiipt{14.5}% + \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ +%</12pt> + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI +} +\def\small{% +%<*10pt> + \@setfontsize\small\@ixpt{11}% + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus2\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 4\p@ \@plus2\p@ \@minus2\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep}% +%</10pt> +%<*11pt> + \@setfontsize\small\@xpt\@xiipt + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 6\p@ \@plus2\p@ \@minus2\p@ + \parsep 3\p@ \@plus2\p@ \@minus\p@ + \itemsep \parsep}% +%</11pt> +%<*12pt> + \@setfontsize\small\@xipt{13.6}% + \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 9\p@ \@plus3\p@ \@minus5\p@ + \parsep 4.5\p@ \@plus2\p@ \@minus\p@ + \itemsep \parsep}% +%</12pt> + \belowdisplayskip \abovedisplayskip +} +\def\footnotesize{% +%<*10pt> + \@setfontsize\footnotesize\@viiipt{9.5}% + \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus\p@ + \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 3\p@ \@plus\p@ \@minus\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep}% +%</10pt> +%<*11pt> + \@setfontsize\footnotesize\@ixpt{11}% + \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 4\p@ \@plus2\p@ \@minus2\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep}% +%</11pt> +%<*12pt> + \@setfontsize\footnotesize\@xpt\@xiipt + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 6\p@ \@plus2\p@ \@minus2\p@ + \parsep 3\p@ \@plus2\p@ \@minus\p@ + \itemsep \parsep}% +%</12pt> + \belowdisplayskip \abovedisplayskip +} +%<*10pt> +\def\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt} +\def\tiny{\@setfontsize\tiny\@vpt\@vipt} +\def\large{\@setfontsize\large\@xiipt{14}} +\def\Large{\@setfontsize\Large\@xivpt{18}} +\def\LARGE{\@setfontsize\LARGE\@xviipt{22}} +\def\huge{\@setfontsize\huge\@xxpt{25}} +\def\Huge{\@setfontsize\Huge\@xxvpt{30}} +%</10pt> +%<*11pt> +\def\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} +\def\tiny{\@setfontsize\tiny\@vipt\@viipt} +\def\large{\@setfontsize\large\@xiipt{14}} +\def\Large{\@setfontsize\Large\@xivpt{18}} +\def\LARGE{\@setfontsize\LARGE\@xviipt{22}} +\def\huge{\@setfontsize\huge\@xxpt{25}} +\def\Huge{\@setfontsize\Huge\@xxvpt{30}} +%</11pt> +%<*12pt> +\def\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} +\def\tiny{\@setfontsize\tiny\@vipt\@viipt} +\def\large{\@setfontsize\large\@xivpt{18}} +\def\Large{\@setfontsize\Large\@xviipt{22}} +\def\LARGE{\@setfontsize\LARGE\@xxpt{25}} +\def\huge{\@setfontsize\huge\@xxvpt{30}} +\let\Huge=\huge +%</12pt> +\normalsize +% \end{macrocode} +% \end{command} +% +% \begin{length}{\footnotesep,\footins,\floatsep,\textfloatsep,\intextsep, +% \dblfloatsep,\sbltextfloatsep,\partopsep} +% \changes{v2.98c}{2008/03/26}{defined in the \file{scrsize\dots.clo} files} +% \begin{ilength}{\@fptop,\@fpsep,\@fpbot,\@dblfptop,\@dblfpsep,\@dblfpbot} +% \changes{v2.98c}{2008/03/26}{defined in the \file{scrsize\dots.clo} files} +% The values are same as with the standard classes. +% \begin{macrocode} +%<*10pt> +\setlength\footnotesep {6.65\p@} +\setlength{\skip\footins} {9\p@ \@plus 4\p@ \@minus 2\p@} +\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\textfloatsep {20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\partopsep {2\p@ \@plus 1\p@ \@minus 1\p@} +\setlength\@fptop {0\p@ \@plus 1fil} +\setlength\@fpsep {8\p@ \@plus 2fil} +\setlength\@fpbot {0\p@ \@plus 1fil} +\setlength\@dblfptop {0\p@ \@plus 1fil} +\setlength\@dblfpsep {8\p@ \@plus 2fil} +\setlength\@dblfpbot {0\p@ \@plus 1fil} +%</10pt> +%<*11pt> +\setlength\footnotesep {7.7\p@} +\setlength{\skip\footins} {10\p@ \@plus 4\p@ \@minus 2\p@} +\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\textfloatsep {20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\partopsep {3\p@ \@plus 1\p@ \@minus 1\p@} +\setlength\@fptop {0\p@ \@plus 1fil} +\setlength\@fpsep {8\p@ \@plus 2fil} +\setlength\@fpbot {0\p@ \@plus 1fil} +\setlength\@dblfptop {0\p@ \@plus 1fil} +\setlength\@dblfpsep {8\p@ \@plus 2fil} +\setlength\@dblfpbot {0\p@ \@plus 1fil} +%</11pt> +%<*12pt> +\setlength\footnotesep {8.4\p@} +\setlength{\skip\footins} {10.8\p@ \@plus 4\p@ \@minus 2\p@} +\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\textfloatsep {20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\intextsep {14\p@ \@plus 4\p@ \@minus 4\p@} +\setlength\dblfloatsep {14\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\partopsep {3\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\@fptop {0\p@ \@plus 1fil} +\setlength\@fpsep {10\p@ \@plus 2fil} +\setlength\@fpbot {0\p@ \@plus 1fil} +\setlength\@dblfptop {0\p@ \@plus 1fil} +\setlength\@dblfpsep {10\p@ \@plus 2fil} +\setlength\@dblfpbot {0\p@ \@plus 1fil} +%</12pt> +% \end{macrocode} +% \begin{macro}{\@listi,\@listii,\@listiii,\@listiv,\@listv,\@listvi} +% \changes{v2.98c}{2008/03/26}{defined in the \file{scrsize\dots.clo} files} +% The definitions are the same as with the standard classes. +% \begin{macrocode} +\def\@listi{\leftmargin\leftmargini +%<*10pt> + \parsep 4\p@ \@plus2\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep4\p@ \@plus2\p@ \@minus\p@} +%</10pt> +%<*11pt> + \parsep 4.5\p@ \@plus2\p@ \@minus\p@ + \topsep 9\p@ \@plus3\p@ \@minus5\p@ + \itemsep4.5\p@ \@plus2\p@ \@minus\p@} +%</11pt> +%<*12pt> + \parsep 5\p@ \@plus2.5\p@ \@minus\p@ + \topsep 10\p@ \@plus4\p@ \@minus6\p@ + \itemsep5\p@ \@plus2.5\p@ \@minus\p@} +%</12pt> +\let\@listI\@listi +\def\@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep +%<*10pt> + \topsep 4\p@ \@plus2\p@ \@minus\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ +%</10pt> +%<*11pt> + \topsep 4.5\p@ \@plus2\p@ \@minus\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ +%</11pt> +%<*12pt> + \topsep 5\p@ \@plus2.5\p@ \@minus\p@ + \parsep 2.5\p@ \@plus\p@ \@minus\p@ +%</12pt> + \itemsep \parsep} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep +%<10pt> \topsep 2\p@ \@plus\p@\@minus\p@ +%<11pt> \topsep 2\p@ \@plus\p@\@minus\p@ +%<12pt> \topsep 2.5\p@\@plus\p@\@minus\p@ + \parsep \z@ + \partopsep \p@ \@plus\z@ \@minus\p@ + \itemsep \topsep} +\def\@listiv {\leftmargin\leftmarginiv + \labelwidth\leftmarginiv + \advance\labelwidth-\labelsep} +\def\@listv {\leftmargin\leftmarginv + \labelwidth\leftmarginv + \advance\labelwidth-\labelsep} +\def\@listvi {\leftmargin\leftmarginvi + \labelwidth\leftmarginvi + \advance\labelwidth-\labelsep} +%</10pt|11pt|12pt> +% \end{macrocode} +% \end{macro}^^A \@listi … \@listvi +% \end{ilength}^^A \@fptop … \@dblfpbot +% \end{length}^^A \footnotesep … \partopsep +% +% \begin{command}{\changefontsizes} +% \changes{v2.96}{2006/08/11}{added} +% \changes{v3.08b}{2011/02/22}{three \cs{def} replaced by \cs{edef}} +% \changes{v3.17}{2015/02/23}{define if undefined only} +% \changes{v3.17}{2015/02/23}{indirect definition for Falk} +% \begin{macro}{\simple@changefontsizes} +% \changes{v3.17}{2015/02/23}{added} +% \changes{v3.17}{2015/03/25}{\cs{par@updaterelative} added} +% Fallback calculation of font size settings relative to known 10\,pt values: +% \begin{quote} +% \cs{changefontsizes}\oarg{baseline skip}\marg{font size} +% \end{quote} +% If the \meta{baseline skip} is given, it is used as \len{baselineskip} for +% \cs{normalsize} and all other baseline skips are relative to it. If it is +% not give, it is also calculated. +% \begin{macro}{\scr@setlength} +% \changes{v3.12}{2013/10/08}{added} +% Command +% \begin{quote} +% \cs{scr@setlength}\marg{\LaTeX length}\marg{base dimension}\marg{plus +% dimension}\marg{minus dimension} +% \end{quote} +% sets \meta{\LaTeX length} to \meta{base dimension} \texttt{plus} \meta{plus +% dimension} \texttt{minus} \meta{minus dimension}. Minimum value for +% \meta{plus dimension} and \meta{minus dimension} is 1\,pt. +% \begin{macrocode} +%<*body&(class|extend)> +\newcommand*\scr@setlength[4]{% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{#1}{#2 \@plus#3 \@minus#4}% + \else + \ifdim #2<\ifdim #2=\z@ \z@ \else \p@\fi + \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{\p@ \@plus\p@ \@minus\p@}% + \else + \setlength{#1}{\p@ \@plus\p@ \@minus#4}% + \fi + \else + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{\p@ \@plus#3 \@minus\p@}% + \else + \setlength{#1}{\p@ \@plus#3 \@minus#4}% + \fi + \fi + \else + \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{#2 \@plus\p@ \@minus\p@}% + \else + \setlength{#1}{#2 \@plus\p@ \@minus#4}% + \fi + \else + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{#2 \@plus#3 \@minus\p@}% + \else + \setlength{#1}{#2 \@plus#3 \@minus#4}% + \fi + \fi + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \changes{v3.17}{2015/03/10}{\eTeX{} warning removed} +% \begin{macrocode} +\providecommand*{\simple@changefontsizes}[2][1.2\@tempdima]{% + \KOMA@kav@removekey{.% +%<class> \KOMAClassFileName +%<extend> scrextend.\scr@pkgextension + }{fontsize}% + \@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% +% \end{macrocode} +% Now, \len{@temdimc} is the wanted basic font size in pt. \cs{@tempb} is the +% factor of the baseline skip rounded to two decimals. \len{@tempdima} is also +% the basic font size and \len{@tempdimb} the \len{baselineskip}. But +% \len{@tempdima} and \len{tempdimb} will change in further calculations +% depending on the wanted font size command. +% +% Calculation and definition of \cs{normalsize}: +% \begin{macrocode} + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \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 + }% +% \end{macrocode} +% Calculation and definition of \cs{small}: +% \begin{macrocode} + \setlength{\@tempdima}{0.9125\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \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 + }% +% \end{macrocode} +% Calculation and definition of \cs{footnotesize}: +% \begin{macrocode} + \setlength{\@tempdima}{.83334\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\abovedisplayskip}{% + \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}% + \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}% + \setlength{\belowdisplayshortskip}{% + .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}% + \else + \scr@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \scr@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \fi + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \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 + }% +% \end{macrocode} +% Calculation and definition of \cs{scriptsize}: +% \begin{macrocode} + \setlength{\@tempdima}{.66667\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\scriptsize{% + \noexpand\@setfontsize\noexpand\scriptsize + {\the\@tempdima}{\the\@tempdimb}% + }% +% \end{macrocode} +% Calculation and definition of \cs{tiny}: +% \begin{macrocode} + \setlength{\@tempdima}{.5\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\tiny{% + \noexpand\@setfontsize\noexpand\tiny + {\the\@tempdima}{\the\@tempdimb}% + }% +% \end{macrocode} +% Calculation and definition of \cs{large}: +% \begin{macrocode} + \setlength{\@tempdima}{1.2\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\large{% + \noexpand\@setfontsize\noexpand\large + {\the\@tempdima}{\the\@tempdimb}% + }% +% \end{macrocode} +% Calculation and definition of \cs{Large}: +% \begin{macrocode} + \setlength{\@tempdima}{1.44\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\Large{% + \noexpand\@setfontsize\noexpand\Large + {\the\@tempdima}{\the\@tempdimb}% + }% +% \end{macrocode} +% Calculation and definition of \cs{LARGE}: +% \begin{macrocode} + \setlength{\@tempdima}{1.728\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\LARGE{% + \noexpand\@setfontsize\noexpand\LARGE + {\the\@tempdima}{\the\@tempdimb}% + }% +% \end{macrocode} +% Calculation and definition of \cs{huge}: +% \begin{macrocode} + \setlength{\@tempdima}{2.074\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\huge{% + \noexpand\@setfontsize\noexpand\huge + {\the\@tempdima}{\the\@tempdimb}% + }% +% \end{macrocode} +% Calculation and definition of \cs{Huge}: +% \begin{macrocode} + \setlength{\@tempdima}{2.488\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\Huge{% + \noexpand\@setfontsize\noexpand\Huge + {\the\@tempdima}{\the\@tempdimb}% + }% +% \end{macrocode} +% Activation of \cs{normalsize} and calculation of additional font size +% depending sized. +% \begin{macrocode} + \normalsize +%<!extend> \expandafter\ifnum\scr@v@is@ge{3.17}\@nameuse{par@updaterelative}\fi +% \end{macrocode} +% After the activation of \cs{normalsize} above, we can use \cs{f@size} and +% \cs{f@baselineskip}. We cannot use \cs{baselineskip}, because this would be +% influenced by \cs{baselinestretch}. +% \begin{macrocode} + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \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}% + \fi +% \end{macrocode} +% Calculation and definition of \cs{@listi} and \cs{@listI}: +% \begin{macrocode} + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.8333\@tempdimc \@plus .3333\@tempdimc \@minus + .5\@tempdimc}% + \setlength{\parsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}% + \else + \setlength{\@tempdimb}{\f@baselineskip}% + \scr@setlength{\parsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% + \fi + \@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 +% \end{macrocode} +% Calculation and definition of \cs{@listi@small}: +% \begin{macrocode} + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.75\@tempdimc \@plus .25\@tempdimc \@minus + .41667\@tempdimc}% + \setlength{\parsep}{.375\@tempdimc \@plus .16667\@tempdimc \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% + \fi + \@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 + }% +% \end{macrocode} +% Calculation and definition of \cs{@listi@footnotesize}: +% \begin{macrocode} + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.5\@tempdimc \@plus .16667\@tempdimc \@minus + .16667\@tempdimc}% + \setlength{\parsep}{.25\@tempdimc \@plus .16667\@tempdimc \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.125\@tempdimb}{.0625\@tempdimb}{.0625\@tempdimb}% + \scr@setlength{\topsep}% + {.25\@tempdimb}{.125\@tempdimb}{.125\@tempdimb}% + \fi + \@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 + }% +% \end{macrocode} +% Calculation and definition of \cs{@listii}: +% \begin{macrocode} + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}% + \setlength{\parsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}% + \else + \scr@setlength{\parsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \scr@setlength{\topsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% + \fi + \@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 + }% +% \end{macrocode} +% Calculation and definition of \cs{@listiii}: +% \begin{macrocode} + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\topsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}% + \else + \scr@setlength{\topsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \fi + \setlength{\partopsep}{\z@ \@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\partopsep + \itemsep \topsep + \if@tempswa\noexpand\@list@extra\fi + }% +% \end{macrocode} +% Calculation and definition of \cs{@listiv}: +% \begin{macrocode} + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listiv\endcsname + \endgroup + \edef\@listiv{\leftmargin\leftmarginiv + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% +% \end{macrocode} +% Calculation and definition of \cs{@listv}: +% \begin{macrocode} + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listv\endcsname + \endgroup + \edef\@listv{\leftmargin\leftmarginv + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% +% \end{macrocode} +% Calculation and definition of \cs{@listvi}: +% \begin{macrocode} + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listvi\endcsname + \endgroup + \edef\@listvi{\leftmargin\leftmarginvi + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@listi +% \end{macrocode} +% \changes{v2.97c}{2007/07/04}{setting \cs{intextsep}} +% \changes{v2.97c}{2007/07/04}{setting \cs{dblfloatsep}} +% \changes{v2.97c}{2007/07/04}{setting \cs{partopsep}} +% \changes{v3.12}{2013/10/08}{calculation of some lengths changed} +% Calculation and setting of \len{intextsep}, \len{dblfloatsep}, +% \len{partopsep}, \len{footnotesep}, \cs{skip}\len{footins}, \len{footsep}, +% \len{textfloatsep}, \len{@fptop}, \len{@fpsep}, \len{@fpbot}, +% \len{@dblfptop}, \len{@dblfpsep}, \len{@dblfpbot}. Setting of \len{topsep} +% and \len{parsep} is not needed because part of \cs{@listi}. +% \begin{macrocode} + \expandafter\ifnum\scr@v@is@lt{3.12}\relax + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \setlength{\@tempdima}{\dimexpr \@tempdimb-\@tempdimc}% + \setlength\intextsep{\@tempdimb \@plus.2\@tempdima \@minus.2\@tempdima}% + \setlength\dblfloatsep\intextsep + \setlength\partopsep{.2\@tempdimc \@plus.1\@tempdimc \@minus.1\@tempdimc}% + \else + \setlength{\@tempdimb}{\f@baselineskip}% + \setlength{\footnotesep}{.555\@tempdimb}% + \scr@setlength{\skip\footins}% + {.75\@tempdimb}{.3333\@tempdimb}{.1667\@tempdimb}% + \scr@setlength{\floatsep}% + {\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% + \scr@setlength{\textfloatsep}% + {1.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% + \setlength{\intextsep}{\floatsep}% + \setlength{\dblfloatsep}{\floatsep}% + \setlength{\dbltextfloatsep}{\textfloatsep}% + \setlength{\@fptop}{\z@ \@plus 1fil}% + \setlength{\@fpsep}{.6667\@tempdimb \@plus 2fil}% + \setlength{\@fpbot}{\@fptop}% + \setlength{\@dblfptop}{\@fptop}% + \setlength{\@dblfpsep}{\@fpsep}% + \setlength{\@dblfpbot}{\@fptop}% + \scr@setlength{\partopsep}{.2\@tempdimb}{.1\@tempdimb}{.1\@tempdimb}% + \fi +} +\scr@ifundefinedorrelax{changefontsizes}{% + \let\changefontsizes\simple@changefontsizes +}{% +%<class> \ClassWarning{\KOMAClassName}{% +%<package&extend> \PackageWarning{scrextend}{% + \string\changefontsizes\space already defined.\MessageBreak + I hope, the definition is compatible,\MessageBreak + because I do not change it% + }% +} +%</body&(class|extend)> +% \end{macrocode} +% \end{macro}^^A \simple@changefontsizes +% \end{command}^^A \changefontsizes +% +% +% \begin{command}{\generatefontfile} +% \changes{v3.09}{2011/02/23}{added} +% \changes{v3.17}{2015/03/26}{\cs{par@updaterelative} added} +% \changes{v3.28}{2019/11/18}{\cs{ifstr} renamed to \cs{Ifstr}} +% The main command of the generator: +% \begin{quote} +% \cs{generatefontfile}\marg{base name}\oarg{baseline skip}\marg{font size} +% \end{quote} +% It writes a font size file ``\meta{base name}\meta{font +% size}.clo''. \meta{base name} ``\texttt{scrbase}'' is protected and results +% in an error message. +% \begin{macrocode} +%<*generator&body> +\newcommand*{\generatefontfile}[1]{% + \Ifstr{#1}{scrsize}{% + \ClassError{\KOMAClassName}{% + Font file name `scrsize' not allowed% + }{% + Font files with name `scrsize<fontsize>.clo' are reserved for + KOMA-Script.\MessageBreak + You should use another prefix and rename \string\@fontsizefilebase\space + either before\MessageBreak + loading a KOMA-Script class using one of \string\documentclass, + \string\LoadClass,\MessageBreak + or \string\LoadClassWithOptions\space or before loading package + `scrextend' using another\MessageBreak + class.}% + \@@@generatefontfile + }{% +% \end{macrocode} +% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by \cs{kernel@ifnextchar}} +% Test for optional argument and use proper helper. +% \begin{macrocode} + \kernel@ifnextchar [{\@generatefontfile{#1}}{\@@generatefontfile{#1}}% + }% +} +% \end{macrocode} +% \begin{macro}{\@generatefontfile,\@@generatefontfile} +% \changes{v3.09}{2011/02/23}{added} +% The helper macros are needed, because we are not using \pkg{xparse} currently. +% \begin{macrocode} +\newcommand*{\@generatefontfile}{} +\def\@generatefontfile#1[#2]#3{% + \begingroup + \@ifundefined{setparsizes}{\setlength{\parskip}{0pt}}% + {\setparsizes{0pt}{0pt}{0pt}}% + \changefontsizes[{#2}]{#3}% + \generate@fontfile{#1}{#3}% + \endgroup +} +\newcommand\@@generatefontfile[2]{% + \begingroup + \@ifundefined{setparsizes}{\setlength{\parskip}{0pt}}% + {\setparsizes{0pt}{0pt}{0pt}}% + \changefontsizes{#2}% + \generate@fontfile{#1}{#2}% + \endgroup +} +% \end{macrocode} +% \end{macro}^^A \@generatefontfile,\@@generatefontfile +% \begin{macro}{\@@@generatefontfile} +% \changes{v3.09}{2011/02/23}{added} +% Dummy used in error case to eat an optional and a mandatory argument. +% \begin{macrocode} +\newcommand*{\@@@generatefontfile}[2][]{} +% \end{macrocode} +% \end{macro}^^A \@@@generatefontfile +% \begin{macro}{\@fontfile} +% \changes{v3.09}{2011/02/23}{added} +% Because \cs{generatefontfile} is allowed in the document preamble only, when +% the main aux file is not yet opened, we can use \cs{@mainaux} as temporary +% file handle. +% \begin{macrocode} +\newcommand*{\@fontfile}{} +\let\@fontfile\@mainaux +% \end{macrocode} +% \begin{macro}{\generate@fontfile} +% \changes{v3.09}{2011/02/23}{added} +% \changes{v3.16a}{2015/02/11}{\cs{footnotesize} fixed} +% Output of the font size file using the current font setting. It has to be +% used inside a local group! +% \begin{macrocode} +\newcommand*{\generate@fontfile}[2]{% + \def\@ind{\space\space}% + \immediate\openout\@fontfile #1#2.clo + \immediate\write\@fontfile{\@percentchar^^J% + \@percentchar\space This is file `#1#2.clo', generated with^^J% + \@percentchar\space scrfontsizes + \csname ver@scrfontsizes.\scr@pkgextension\endcsname,^^J% + \@percentchar\space Copyright (c) Markus Kohm.^^J% + \@percentchar^^J% + \string\ProvidesFile{#1#2.clo}[% + \the\year/\ifnum\month<10 0\fi\the\month/\ifnum\day<10 0\fi\the\day% + \space generated font size class option (#2)]}% + \immediate\write\@fontfile{% + \string\def\string\normalsize{\@percentchar^^J% + \@ind\string\@setfontsize\string\normalsize{\f@size}{\f@baselineskip}% + \@percentchar^^J% + \@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J% + \@ind\string\abovedisplayshortskip\space \the\abovedisplayshortskip^^J% + \@ind\string\belowdisplayskip\space \the\belowdisplayskip^^J% + \@ind\string\belowdisplayshortskip\space \the\belowdisplayshortskip^^J% + \@ind\string\let\string\@listi\string\@listI^^J% + }\@percentchar% + }% + \begingroup\small\@listi + \immediate\write\@fontfile{% + \string\def\string\small{\@percentchar^^J% + \@ind\string\@setfontsize\string\small{\f@size}{\f@baselineskip}% + \@percentchar^^J% + \@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J% + \@ind\string\abovedisplayshortskip\space \the\abovedisplayshortskip^^J% + \@ind\string\belowdisplayskip\space \the\belowdisplayskip^^J% + \@ind\string\belowdisplayshortskip\space \the\belowdisplayshortskip^^J% + \@ind\string\def\string\@listi{\@percentchar^^J% + \@ind\@ind\string\leftmargin\string\leftmargini^^J% + \@ind\@ind\string\topsep \the\topsep^^J% + \@ind\@ind\string\parsep \the\parsep^^J% + \@ind\@ind\string\itemsep \string\parsep^^J% + \@ind}\@percentchar^^J% + }\@percentchar% + }% + \endgroup + \begingroup\footnotesize\@listi + \immediate\write\@fontfile{% + \string\def\string\footnotesize{\@percentchar^^J% + \@ind\string\@setfontsize\string\footnotesize{\f@size}{\f@baselineskip}% + \@percentchar^^J% + \@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J% + \@ind\string\abovedisplayshortskip\space \the\abovedisplayshortskip^^J% + \@ind\string\belowdisplayskip\space \the\belowdisplayskip^^J% + \@ind\string\belowdisplayshortskip\space \the\belowdisplayshortskip^^J% + \@ind\string\def\string\@listi{\@percentchar^^J% + \@ind\@ind\string\leftmargin\string\leftmargini^^J% + \@ind\@ind\string\topsep \the\topsep^^J% + \@ind\@ind\string\parsep \the\parsep^^J% + \@ind\@ind\string\itemsep \string\parsep^^J% + \@ind}\@percentchar^^J% + }\@percentchar% + }% + \endgroup + \begingroup\scriptsize + \immediate\write\@fontfile{% + \string\def\string\scriptsize{% + \string\@setfontsize\string\scriptsize{\f@size}{\f@baselineskip}% + }\@percentchar% + }% + \endgroup + \begingroup\tiny + \immediate\write\@fontfile{% + \string\def\string\tiny{% + \string\@setfontsize\string\tiny{\f@size}{\f@baselineskip}% + }\@percentchar% + }% + \endgroup + \begingroup\large + \immediate\write\@fontfile{% + \string\def\string\large{% + \string\@setfontsize\string\large{\f@size}{\f@baselineskip}% + }\@percentchar% + }% + \endgroup + \begingroup\Large + \immediate\write\@fontfile{% + \string\def\string\Large{% + \string\@setfontsize\string\Large{\f@size}{\f@baselineskip}% + }\@percentchar% + }% + \endgroup + \begingroup\LARGE + \immediate\write\@fontfile{% + \string\def\string\LARGE{% + \string\@setfontsize\string\LARGE{\f@size}{\f@baselineskip}% + }\@percentchar% + }% + \endgroup + \begingroup\huge + \immediate\write\@fontfile{% + \string\def\string\huge{% + \string\@setfontsize\string\huge{\f@size}{\f@baselineskip}% + }\@percentchar% + }% + \endgroup + \begingroup\Huge + \immediate\write\@fontfile{% + \string\def\string\Huge{% + \string\@setfontsize\string\Huge{\f@size}{\f@baselineskip}% + }\@percentchar% + }% + \endgroup + \immediate\write\@fontfile{\string\normalsize}% + \immediate\write\@fontfile{% + \string\setlength{\string\footnotesep}{\the\footnotesep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\skip\string\footins}{\the\skip\footins}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\floatsep}{\the\floatsep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\textfloatsep}{\the\textfloatsep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\intextsep}{\the\intextsep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\dblfloatsep}{\the\dblfloatsep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\dbltextfloatsep}{\the\dbltextfloatsep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\@fptop}{\the\@fptop}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\@fpsep}{\the\@fpsep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\@fpbot}{\the\@fpbot}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\@dblfptop}{\the\@dblfptop}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\@dblfpsep}{\the\@dblfpsep}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\@dblfpbot}{\the\@dblfpbot}\@percentchar + }% + \immediate\write\@fontfile{% + \string\setlength{\string\partopsep}{\the\partopsep}\@percentchar + }% + \begingroup + \@listi + \immediate\write\@fontfile{% + \string\def\string\@listi{\@percentchar^^J% + \@ind\string\leftmargin\string\leftmargini^^J% + \@ind\string\topsep \the\topsep^^J% + \@ind\string\parsep \the\parsep^^J% + \@ind\string\itemsep \string\parsep^^J% + }\@percentchar + }% + \endgroup + \immediate\write\@fontfile{% + \string\let\string\@listI\string\@listi + }% + \begingroup + \@listii + \immediate\write\@fontfile{% + \string\def\string\@listii{\@percentchar^^J% + \@ind\string\leftmargin\string\leftmarginii^^J% + \@ind\string\labelwidth\string\leftmarginii^^J% + \@ind\string\advance\string\labelwidth-\string\labelsep^^J% + \@ind\string\topsep \the\topsep^^J% + \@ind\string\parsep \the\parsep^^J% + \@ind\string\itemsep \string\parsep^^J% + }\@percentchar + }% + \endgroup + \begingroup + \@listiii + \immediate\write\@fontfile{% + \string\def\string\@listiii{\@percentchar^^J% + \@ind\string\leftmargin\string\leftmarginiii^^J% + \@ind\string\labelwidth\string\leftmarginiii^^J% + \@ind\string\advance\string\labelwidth-\string\labelsep^^J% + \@ind\string\topsep \the\topsep^^J% + \@ind\string\parsep \the\parsep^^J% + \@ind\string\partopsep \the\partopsep^^J% + \@ind\string\itemsep \string\topsep^^J% + }\@percentchar + }% + \endgroup + \begingroup + \@listiv + \immediate\write\@fontfile{% + \string\def\string\@listiv{\@percentchar^^J% + \@ind\string\leftmargin\string\leftmarginiv^^J% + \@ind\string\labelwidth\string\leftmarginiv^^J% + \@ind\string\advance\string\labelwidth-\string\labelsep^^J% + }\@percentchar + }% + \endgroup + \begingroup + \@listv + \immediate\write\@fontfile{% + \string\def\string\@listv{\@percentchar^^J% + \@ind\string\leftmargin\string\leftmarginv^^J% + \@ind\string\labelwidth\string\leftmarginv^^J% + \@ind\string\advance\string\labelwidth-\string\labelsep^^J% + }\@percentchar + }% + \endgroup + \begingroup + \@listvi + \immediate\write\@fontfile{% + \string\def\string\@listvi{\@percentchar^^J% + \@ind\string\leftmargin\string\leftmarginvi^^J% + \@ind\string\labelwidth\string\leftmarginvi^^J% + \@ind\string\advance\string\labelwidth-\string\labelsep^^J% + }\@percentchar + }% + \endgroup + \immediate\write\@fontfile{% + \string\@ifundefined{@list@extra}{}{\@percentchar^^J% + \string\expandafter\string\ifnum\string\scr@v@is@ge{3.17}% + \string\par@updaterelative\string\fi^^J% + \@ind\string\l@addto@macro{\string\@listi}{\string\@list@extra}% + \@percentchar^^J% + \@ind\string\let\string\@listI=\string\@listi^^J% + \@ind\string\l@addto@macro{\string\@listii}{\string\@list@extra}% + \@percentchar^^J% + \@ind\string\l@addto@macro{\string\@listiii}{\string\@list@extra}% + \@percentchar^^J% + \@ind\string\l@addto@macro{\string\footnotesize}{\string\protect + \string\add@extra@listi{ftns}}\@percentchar^^J% + \@ind\string\l@addto@macro{\string\small}{\string\protect + \string\add@extra@listi{sml}}\@percentchar^^J% + }\@percentchar^^J% + \string\@listi^^J% + \string\endinput^^J% + \@percentchar^^J% + \@percentchar\space End of file `#1#2.clo'. + } + \immediate\closeout\@fontfile +} +\@onlypreamble\generatefontfile +%</generator&body> +% \end{macrocode} +% \end{macro}^^A \generate@fontfile +% \end{macro}^^A \@fontfile +% \end{command}^^A \generatefontfile +% +% Now, we want to initially load the font size file into the class. First we +% have to convert the \cs{@ptsize} to a length. Note, \cs{@ptsize} can already +% have a unit or the unit is \texttt{pt}. The original value is stored in +% \cs{@tempa} to be able to use a font size files with the original +% unit. \cs{@tempb} is the size in \texttt{pt} without the \texttt{pt} to be +% able to use a standard font size file. After this, \cs{@ptsize} is reduced +% by 10\,pt and the unit is cut off. +% \begin{macrocode} +%<*class&body> +\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} +% Now, let's try to input a file +% ``\file{\cs{fontsizefilebase}\cs{@tempa}.clo}''. This is a file with the +% original unit. +% \begin{macrocode} +\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{% + \ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempa}% +}{% +% \end{macrocode} +% If this is not successful, try +% ``\file{\cs{fontsizefilebase}\cs{@tempb}pt.clo}''. +% \begin{macrocode} + \InputIfFileExists{\@fontsizefilebase\@tempb pt.clo}{% + \ClassInfo{\KOMAClassName}{% + File `\@fontsizefilebase\@tempb pt.clo' used instead of\MessageBreak + file `\@fontsizefilebase\@tempa.clo' to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb pt}% + }{% +% \end{macrocode} +% If this is still not successful try a font size file of the standard +% classes. +% \begin{macrocode} +%<*book> + \InputIfFileExists{bk\@tempb.clo}{% + \ClassInfo{\KOMAClassName}{% + File `bk\@tempb.clo' used to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb}% + }{% +%</book> + \InputIfFileExists{size\@tempb.clo}{% + \ClassInfo{\KOMAClassName}{% + File `size\@tempb.clo' used to setup font sizes}% + \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}% + \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb}% + }{% +% \end{macrocode} +% If this is still not successful, use the fallback calculation. +% \begin{macrocode} + \edef\@tempa{% + \noexpand\changefontsizes{\@tempa}% + \noexpand\KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempa}% + }\@tempa + }% +%<book> }% + }% +} +%</class&body> +% \end{macrocode} +% +% +% \subsection{Deprecated old font selection commands} +% +% \begin{option}{enabledeprecatedfontcommands} +% \changes{v3.20}{2015/10/14}{added} +% \changes{v3.20}{2015/10/14}{deprecated} +% This option is deprecated by specification already when it has been defined +% first, because it is used to define deprecated old font selection commands, +% that should not be used any longer. So the usage of this options always +% results in a warning. It can be used at load time only. +% \begin{macro}{\scr@defineobsoletefonts} +% \changes{v3.20}{2015/10/14}{added} +% \changes{v3.20}{2015/10/14}{deprecated} +% Depending on this command +% \begin{itemize} +% \item[0] an internal error message, +% \item[1] a warning, +% \item[2] an info message, +% \item[3] no message +% \end{itemize} +% is added to the usage of any deprecated font command. Values less than 0 +% result in not defining the commands anyhow. +% \begin{macrocode} +%<*class&option> +\DeclareOption{enabledeprecatedfontcommands}{% + \ClassWarningNoLine{\KOMAClassName}{% + deprecated option `enabledeprecatedfontcommands'.\MessageBreak + Note, that this option was already depreacted when\MessageBreak + it has been defined. Support for old font commands\MessageBreak + has been removed from KOMA-Script more than one\MessageBreak + decade ago. It is not recommended to use them any\MessageBreak + longer. Therefore usage of this class option also\MessageBreak + is not recommended% + }% + \let\scr@defineobsoletefonts\@ne +} +\scr@ifundefinedorrelax{scr@defineobsoletefonts}{% + \let\scr@defineobsoletefonts\z@ +}{} +\BeforePackage{tex4ht}{% + \let\scr@defineobsoletefonts\thr@@ +} +%</class&option> +% \end{macrocode} +% \end{macro}^^A \scr@degineobsoletefonts +% \end{option}^^A enabledeprecatedfontscommands +% +% \begin{macro}{\scr@DeclareOldFontCommand} +% \changes{v3.12}{2013/10/31}{added} +% \changes{v3.20}{2015/10/14}{deprecated escalation} +% The command is similar to \cs{DeclareOldFontCommand} but adds a warning, +% info, error to the commands. +% \begin{macrocode} +%<*class&body> +\newcommand*{\scr@DeclareOldFontCommand}[3]{% + \ifnum\scr@defineobsoletefonts<\z@\else + \ifnum\scr@defineobsoletefonts>\tw@ + \DeclareOldFontCommand{#1}{#2}{#3}% + \else + \DeclareOldFontCommand{#1}{% + \scr@ErrorWarningInfo{#1}{#2}#2% + }{% + \scr@ErrorWarningInfo{#1}{#3}#3% + }% + \fi + \fi +} +% \end{macrocode} +% \begin{macro}{\scr@ErrorWarningInfo} +% \changes{v3.20}{2015/10/14}{added} +% \changes{v3.22}{2016/09/28}{message fixed} +% \begin{macrocode} +\DeclareRobustCommand*{\scr@ErrorWarningInfo}[2]{% +% \end{macrocode} +% \cs{scr@defineobsoletefonts} = 0 means an error message: +% \begin{macrocode} + \ifnum \scr@defineobsoletefonts=\z@ + \ClassError{\KOMAClassName}{undefined old font command `\string#1'}{% + You should note that since 1994 LaTeX2e provides a new font selection + scheme\MessageBreak + called NFSS2 with several new, combinable font commands. + KOMA-Script\MessageBreak + classes had defined the old font commands like `\string#1' + only for compatibility\MessageBreak + with old LaTeX 2.09 document styles of Script 2.0. Nevertheless, + these\MessageBreak + commands are deprecated and undocumented at least since 2003. Since + 2013\MessageBreak + KOMA-Script classes warned about soon removement of these deprecated + commands.\MessageBreak + Now, after two decades of LaTeX2e and NFSS2, these commands will not + work any\MessageBreak + more. If loading a package results in this error message, you should + contact\MessageBreak + the author of that package and ask him to replace the deprecated font + command\MessageBreak + `\string#1', e.g., by `\detokenize{#2}`. Otherwise you should + reconfigure\MessageBreak + or replace the package. If you have used the old font command + `\string#1' yourself,\MessageBreak + you should replace it, e.g., by `\detokenize{#2}'.\MessageBreak + To make it work for now, you can use the already also deprecated class + option\MessageBreak + `enabledeprecatedfontcommands'.% + }% + \else + \ifcase \scr@defineobsoletefonts +% \end{macrocode} +% \cs{scr@defineobsoletefonts} = 0 means a warning: +% \begin{macrocode} + \or + \expandafter\ClassWarning +% \end{macrocode} +% \cs{scr@defineobsoletefonts} = 0 means an info message: +% \begin{macrocode} + \or + \expandafter\ClassInfo +% \end{macrocode} +% All other values mean no message: +% \begin{macrocode} + \else + \expandafter\@gobbletwo + \fi + {\KOMAClassName}{deprecated old font command `\string#1' used.\MessageBreak + You should note, that since 1994 LaTeX2e provides a\MessageBreak + new font selection scheme called NFSS2 with several\MessageBreak + new, combinable font commands. New KOMA-Script classes\MessageBreak + defined the old font commands like `\string#1' only for\MessageBreak + compatibility with LaTeX 2.09 document styles of\MessageBreak + Script 2.0. These commands are deprecated and\MessageBreak + undocumented at least since 2003. Since 2013,\MessageBreak + KOMA-Script classes warned about soon removement of\MessageBreak + these deprecated commands. Now, after two decades of\MessageBreak + LaTeX2e, NFSS2, and KOMA-Script these commands will\MessageBreak + not work any longer. If loading a package results in\MessageBreak + this message you should contact the author of that\MessageBreak + package and ask him to replace the depracted font\MessageBreak + command `\string#1', e.g., by `\detokenize{#2}'.\MessageBreak + Otherwise you should reconfigure or replace the\MessageBreak + package. If you have used the old font command\MessageBreak + `\string #1' yourself you should replace it, e.g., by\MessageBreak + `\detokenize{#2}'% + }% + \fi +} +%</class&body> +% \end{macrocode} +% \end{macro}^^A \scr@OldFontErrorWarningInfo +% \end{macro}^^A \scr@DeclareOldFontCommand +% +% \begin{command}{\rm,\sf,\tt,\bf,\it,\sl,\sc} +% \changes{v3.12}{2013/10/13}{deprecated} +% \begin{command}{\sfb} +% \changes{v2.2c}{1995/05/25}{not in math mode} +% \changes{v2.3a}{1995/07/08}{independent from compatibility mode} +% \changes{v3.12}{2013/10/13}{deprecated} +% The old font selection commands from \LaTeX~2.09. They are not supported any +% more. The same for the \pkg*{Script 2.0} command \cs{sfb}. +% \begin{macrocode} +%<*class&body> +\scr@DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\scr@DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\scr@DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\scr@DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\scr@DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\scr@DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\scr@DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\scr@DeclareOldFontCommand{\sfb}{\normalfont\sffamily\bfseries}{% + \@nomath\sfb} +%</class&body> +% \end{macrocode} +% \end{command} +% \end{command} +% +% \begin{command}{\cal,\mit} +% \changes{v2.3}{1995/06/25}{here instead in the \LaTeX{} kernel} +% \changes{v2.3g}{1996/01/14}{not needed braces removed} +% \begin{macrocode} +%<*class&body> +\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal} +%</class&body> +% \end{macrocode} +% \end{command} +% +% +% \subsection{Font elements} +% +% +% \begin{command}{\IfExistskomafont} +% \changes{v3.15}{2014/11/21}{added} +% Command +% \begin{quote} +% \cs{IfExistskomafont}\marg{font element}\marg{then code}\marg{else code} +% \end{quote} +% executes \meta{then code} if the font element \meta{font element} exists +% either as a real font element or an alias. Otherwise \meta{else code} is used. +% \begin{macrocode} +%<*scrkbase&body> +\newcommand*{\IfExistskomafont}[1]{% + \scr@ifundefinedorrelax{scr@fnt@#1}{% + \scr@ifundefinedorrelax{scr@fnt@instead@#1}{\@secondoftwo}{\@firstoftwo}% + }{% + \@firstoftwo + }% +} +% \end{macrocode} +% \end{command}^^A \IfExistskomafont +% +% \begin{command}{\IfIsAliaskomafont} +% \changes{v3.25}{2017/12/08}{added} +% Command +% \begin{quote} +% \cs{IfIsAliaskomafont}\marg{font element}\marg{then code}\marg{else code} +% \end{quote} +% executes \meta{then code} if the font element \meta{font element} is an alias. +% Otherwise \meta{else code} is used. +% \begin{macrocode} +\newcommand*{\IfIsAliaskomafont}[1]{% + \scr@ifundefinedorrelax{scr@fnt@#1}{% + \scr@ifundefinedorrelax{scr@fnt@instead@#1}{\@secondoftwo}{\@firstoftwo}% + }{% + \@secondoftwo + }% +} +% \end{macrocode} +% \end{command}^^A \IfIsAliaskomafont +% +% \begin{command}{\setkomafont} +% \changes{v2.8o}{2001/09/14}{added} +% \changes{v3.05a}{2010/03/24}{moved to \pkg*{scrkbase}} +% Command +% \begin{quote} +% \cs{setkomafont}\marg{element}\marg{font settings} +% \end{quote} +% sets the \meta{font settings} of font element \meta{element}. Setting of an +% unknown font element results in an error. Setting of an alias font element +% results in an info an the setting of the real element. Note: \meta{font +% settings} should be only font selection commands. +% \begin{macrocode} +\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}% + }% + }% +} +% \end{macrocode} +% \end{command}^^A \setkomafont +% +% \begin{command}{\addtokomafont} +% \changes{v2.8p}{2001/09/22}{added} +% \changes{v3.05a}{2010/03/24}{moved to \pkg*{scrkbase}} +% Command +% \begin{quote} +% \cs{addtokomafont}\marg{element}\marg{font settings} +% \end{quote} +% adds the \meta{font settings} to the settings of font element +% \meta{element}. Setting of an unknown font element results in an +% error. Setting of an alias font element results in an info an the setting of +% the real element. +% \begin{macrocode} +\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}% + }% + }% +} +% \end{macrocode} +% \end{command}^^A \addtokomafont +% +% \begin{command}{\usekomafont} +% \changes{v2.8p}{2001/09/28}{added} +% \changes{v2.96}{2006/08/18}{alias usage fixed} +% \changes{v3.05a}{2010/03/24}{moved to \pkg*{scrkbase}} +% Command +% \begin{quote} +% \cs{usekomafont}\marg{element} +% \end{quote} +% activates the font settings of the font \meta{element}. +% \begin{macrocode} +\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}% + }% +} +% \end{macrocode} +% \end{command}^^A \usekomafont +% +% +% \begin{command}{\usesizeofkomafont} +% \changes{v3.12}{2013/03/30}{new} +% \changes{v3.17}{2015/04/03}{new more robust implementation} +% \changes{v3.24}{2017/05/06}{new more robust implementation} +% \changes{v3.34}{2021/05/17}{new implementation due to \LaTeX{} kernel change} +% \begin{command}{\usefamilyofkomafont,\useseriesofkomafont} +% \changes{v3.12}{2013/03/30}{new} +% \changes{v3.17}{2015/04/03}{new more robust implementation} +% \changes{v3.24}{2017/05/06}{new more robust implementation} +% \begin{command}{\useshapeofkomafont} +% \changes{v3.12}{2013/03/30}{new} +% \changes{v3.16a}{2015/02/20}{fix of macro name} +% \changes{v3.17}{2015/04/03}{new more robust implementation} +% \changes{v3.24}{2017/05/06}{new more robust implementation} +% \begin{command}{\useencodingofkomafont} +% \changes{v3.12}{2013/03/30}{new} +% \changes{v3.17}{2015/04/03}{new more robust implementation} +% \changes{v3.24}{2017/05/06}{new more robust implementation} +% \begin{command}{\usefontofkomafont} +% \changes{v3.12}{2013/03/30}{new} +% \changes{v3.17}{2015/04/03}{new more robust implementation} +% \changes{v3.24}{2017/05/06}{new more robust implementation} +% \changes{v3.34}{2021/05/17}{new implementation due to \LaTeX{} kernel change} +% Sometimes not the whole font but only single elements of a font is +% wanted. +% \begin{macrocode} +\newcommand*{\usesizeofkomafont}[1]{% + \begingroup + \scr@prepareforkomafont + \sbox\@tempboxa{% + \usekomafont{#1}{% + \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 + }% + }% + \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 + \sbox\@tempboxa{% + \usekomafont{#1}{% + \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 + }% + }% + \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}% +}% +% \end{macrocode} +% \begin{macro}{\use@ofkomafont} +% \changes{v3.12}{2013/03/30}{new (internal)} +% \changes{v3.17}{2015/04/03}{new more robust implementation} +% \changes{v3.24}{2017/05/06}{new more robust implementation} +% \changes{v3.34}{2021/05/17}{new implementation due to \LaTeX{} kernel change} +% Helper macro for all commands above despite the first and the last one. +% \begin{macrocode} +\newcommand*{\use@ofkomafont}[2]{% + \begingroup + \scr@prepareforkomafont + \sbox\@tempboxa{% + \usekomafont{#2}{% + \selectfont + \global\expandafter\let\csname g@scr@f@#1\expandafter\endcsname + \csname f@#1\endcsname + }% + }% + \endgroup + \@nameuse{font#1}{\csname g@scr@f@#1\endcsname}% + \selectfont +} +% \end{macrocode} +% \begin{macro}{\g@scr@usefont} +% \changes{v3.17}{2015/04/03}{added} +% \changes{v3.24}{2017/05/06}{removed} +% \end{macro}^^A \g@scr@usefont +% \begin{macro}{\g@scr@f@encoding,\g@scr@f@family,\g@scr@f@series,\g@scr@f@shape, +% \g@scr@f@size,\g@scr@f@baselineskip,\g@scr@f@linespread} +% \changes{v3.24}{2017/05/06}{added} +% \begin{macrocode} +\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 +% \end{macrocode} +% \end{macro}^^A \g@scr@f@encoding … \g@scr@f@linespread +% \begin{macro}{\scr@komafontrelaxlist} +% \changes{v3.17}{2015/04/03}{added} +% \changes{v3.24}{2017/05/05}{\cs{uppercase} and \cs{lowercase} removed} +% \changes{v3.24}{2017/05/05}{\cs{MakeUppercase} and \cs{MakeLowercase} moved to +% \cs{scr@komafontonearglist}} +% A \cs{do} list of all macros, that should become \cs{relax} in the previous +% commands. +% \begin{macrocode} +\newcommand*{\scr@komafontrelaxlist}{% + \do\normalcolor +} +% \end{macrocode} +% \end{macro}^^A \scr@komafontrelaxlist +% \begin{macro}{\scr@komafontgobblelist} +% \changes{v3.19}{2015/08/20}{added} +% Like \cs{scr@komafontrelaxlist} but with \cs{@gobble} instead of \cs{relax}. +% \begin{macrocode} +\newcommand*{\scr@komafontgobblelist}{% + \do\color +} +% \end{macrocode} +% \end{macro}^^A \scr@komafontgobblelist +% \begin{macro}{\scr@komafontonearglist} +% \changes{v3.24}{2017/05/05}{added} +% Like \cs{scr@komafontgobblelist} but with \cs{@firstofone} instead of +% \cs{@gobble}. +% \begin{macrocode} +\newcommand*{\scr@komafontonearglist}{% + \do\MakeUppercase \do\MakeLowercase +} +% \end{macrocode} +% \end{macro}^^A \scr@komafontonearglist +% \begin{macro}{\scr@prepareforkomafont} +% \changes{v3.17}{2015/04/03}{added} +% \changes{v3.19}{2015/08/20}{using \cs{scr@komafontgobblelist}} +% \changes{v3.24}{2017/05/05}{using \cs{scr@komafontonearglist}} +% Process all the \cs{do} lists. Note: Should be encapsulated into a local group. +% \begin{macrocode} +\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 +} +% \end{macrocode} +% \end{macro}^^A \scr@prepareforkomafont +% \begin{command}{\addtokomafontrelaxlist} +% \changes{v3.17}{2015/04/03}{added} +% Adds exactly one macro/command to \cs{scr@komafontrelaxlist}. +% \begin{macrocode} +\newcommand*{\addtokomafontrelaxlist}[1]{% + \l@addto@macro\scr@komafontrelaxlist{\do#1}% +} +% \end{macrocode} +% \end{command}^^A \addtokomafontrelaxlist +% \begin{command}{\addtokomafontgobblelist} +% \changes{v3.19}{2015/08/20}{added} +% Adds exactly one macro/command to \cs{scr@komafontgobblelist}. +% \begin{macrocode} +\newcommand*{\addtokomafontgobblelist}[1]{% + \l@addto@macro\scr@komafontgobblelist{\do#1}% +} +% \end{macrocode} +% \end{command}^^A \addtokomafontgobblelist +% \begin{command}{\addtokomafontonearglist} +% \changes{v3.24}{2017/05/05}{added} +% Adds exactly one macro/command to \cs{scr@komafontonearglist}. +% \begin{macrocode} +\newcommand*{\addtokomafontonearglist}[1]{% + \l@addto@macro\scr@komafontonearglist{\do#1}% +} +% \end{macrocode} +% \end{command}^^A \addtokonafontonearglist +% \end{macro}^^A \use@ofkomafont +% \end{command}^^A \usefontofkomafont +% \end{command}^^A \useencodingofkomafont +% \end{command}^^A \useshapeofkomafont +% \end{command}^^A \usefamilyofkomafont,\useseriesofkomafont +% \end{command}^^A \usesizeofkomafont +% +% +% \begin{command}{\newkomafont} +% \changes{v2.95}{2004/07/21}{added} +% \changes{v3.05a}{2010/03/24}{moved to \pkg*{scrkbase}} +% \changes{v3.11c}{2013/02/18}{the warning needs an argument} +% \changes{v3.25}{2017/12/08}{warn if already exists as an alias} +% Command +% \begin{quote} +% \cs{newkomafont}\oarg{warning}\marg{element}\marg{font settings} +% \end{quote} +% defines a new font \meta{element} with the given \meta{font settings} as +% default. The optional \meta{warning} is shown whenever the font setting of +% the element is changed, but not when the element is used. Internally a macro +% \cs{@\meta{element}font} is defined with the \meta{font settings}. An +% additional macro \cs{scr@fnt@\meta{element}} is defined to just execute +% \cs{@meta{element}font}. But you also can define \cs{scr@fnt@\meta{element}} +% to use another internal font storage macro. So several elements can share +% the same font settings. +% \begin{macrocode} +\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 +} +% \end{macrocode} +% \begin{command}{\aliaskomafont} +% \changes{v2.95}{2004/07/21}{added} +% \changes{v3.05a}{2010/03/24}{moved to \pkg*{scrkbase}} +% \changes{v3.25}{2017/12/08}{warning if element is already defined} +% Another possibility to share fonts is to define an +% alias by defining \cs{scr@fnt@instead@\meta{element}} with the name of +% another element. This can be done using +% \begin{quote} +% \cs{aliaskomafont}\marg{alias}\marg{element} +% \end{quote} +% It defines \marg{alias} to be an alias of \meta{element}. +% \begin{macrocode} +\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% + }% +} +%</scrkbase&body> +% \end{macrocode} +% \end{command} +% \end{command} +% +% \Finale +% \PrintChanges +% +\endinput +% Local Variables: +% mode: doctex +% ispell-local-dictionary: "en_US" +% eval: (flyspell-mode 1) +% TeX-master: t +% TeX-engine: luatex-dev +% eval: (setcar (or (cl-member "Index" (setq-local TeX-command-list (copy-alist TeX-command-list)) :key #'car :test #'string-equal) (setq-local TeX-command-list (cons nil TeX-command-list))) '("Index" "mkindex %s" TeX-run-index nil t :help "makeindex for dtx")) +% End: |