summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/tpslifonts/tpslifonts.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/tpslifonts/tpslifonts.dtx')
-rw-r--r--Master/texmf-dist/source/latex/tpslifonts/tpslifonts.dtx1621
1 files changed, 1621 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/tpslifonts/tpslifonts.dtx b/Master/texmf-dist/source/latex/tpslifonts/tpslifonts.dtx
new file mode 100644
index 00000000000..a549c2dcc40
--- /dev/null
+++ b/Master/texmf-dist/source/latex/tpslifonts/tpslifonts.dtx
@@ -0,0 +1,1621 @@
+% \iffalse meta-comment
+%
+% --------------------------------------------------------------
+% Package tpslifonts - part of TeXPower bundle - configure
+% presentation fonts. Copyright (C) 1999-2004 Stephan Lehmke
+%
+% This program is free software; you can redistribute it and/or
+% modify it under the terms of the GNU General Public License
+% as published by the Free Software Foundation; either version 2
+% of the License, or (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+% --------------------------------------------------------------
+%
+% tpslifonts.dtx,v 1.2 2004/07/27 11:30:39 hansfn Exp
+%
+% \fi
+%
+% \iffalse
+%
+%<*driver>
+\ProvidesFile{tpslifonts.dtx}
+%</driver>
+%<tpslifonts>\NeedsTeXFormat{LaTeX2e}
+%<tpslifonts>\ProvidesPackage{tpslifonts}
+%<*tpslifonts>
+ [2004/07/27 v0.6d Configure presentation fonts.]
+%</tpslifonts>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{tpslifonts.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \CheckSum{1030}
+%
+% \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 \~}
+%
+%
+% \GetFileInfo{tpslifonts.dtx}
+%
+% \DoNotIndex{\newcommand,\newenvironment}
+%
+% \title{The \textsf{tpslifonts} package\thanks{This document
+% corresponds to \textsf{tpslifonts}~\fileversion, dated \filedate.}}
+% \author{ Stephan Lehmke \\ \texttt{Stephan.Lehmke@cs.uni-dortmund.de}}
+%
+% \maketitle
+%
+% \tableofcontents
+%
+% \section{Introduction}
+%
+% Presentations to be displayed `online' with a video beamer have special needs
+% concerning font configuration owing to low `screen' resolution and bad
+% contrast caused by possibly bad light conditions combined with color
+% highlighting.
+%
+% This package tries to cater to these needs by offering a holistic
+% configuration of all document fonts, including text, typewriter, and math
+% fonts. Special features are `smooth scaling' of Type1 fonts and careful design
+% size selection for optimal readability.
+%
+% The default is to use ``lcmss'', also called ``slifonts'' for text and the
+% usual cmtt and cmm for typewriter and math. There's a large variety of
+% options and parameters for choosing different text and math fonts, all from
+% the large ``cm'' family of fonts, which has the advantage that readability can
+% be enhanced by scaling small design sizes.
+% A couple of additional math fonts like ams and doublestroke fonts are
+% supported.
+%
+% For some of the options to yield satisfying results, it is neccessary to
+% install additional (free) Type1 fonts on your system.
+% There's no intention to support other font families like the typical
+% ``psnfss'' PostScript fonts, as they usually don't come in different design
+% sizes, making the effort of tuning them for viewing futile. If you wish to use
+% such a font, load it with the usual packages.
+%
+% This package is part of the TeXPower bundle, to be found at\\ |http://texpower.sourceforge.net/|
+%
+% \section{User interface}
+%
+% The package doesn't define any user-level commands; the font
+% configuration is done entirely by package options.
+%
+% Furthermore, the accompanying example document slifontsexample gives a
+% lot of information about the fonts configured and some examples of
+% math typesetting. Please read the comments in slifontsexample.tex
+% carefully and try out some of the configuration variants described
+% therein.
+%
+% \section{Description of package options}
+%
+% \subsection{Text font options}
+%
+% The default is to use \SliTeX\ computer modern sans serif, an eminently
+% readable font and my personal favourite.\\
+%
+% \begin{tabular}{@{}l@{\hspace{1cm}}l}
+% Option & Meaning\\ \hline
+% cmr & Set computer modern roman text fonts.\\
+% cmfib & Set computer modern roman Fibonacci text fonts.\\
+% cmss & Set computer modern sans serif text fonts.\\
+% cmbright & Set computer modern bright text fonts.\\
+% concrete & Set concrete text fonts.
+% \end{tabular}
+%
+% \subsection{Design size bounding}
+%
+% Usually design sizes are `bounded' by 8pt, that is, if an 8pt (or
+% % lower) design size of a font exists, it will be scaled to larger sizes
+% even if larger design sizes exist, because large design sizes tend to
+% be less readable at low resolutions. For sizes below 8pt, smaller
+% design sizes are used if available.
+%
+% The limit of 8pt is adjustable (downwards) by options. \\
+%
+% \begin{tabular}{@{}l@{\hspace{1cm}}l}
+% Option & Meaning\\ \hline
+% scale7pt & Use 7pt as a bound.\\
+% scale6pt & Use 6pt as a bound.\\
+% scale5pt & Use 5pt as a bound.
+% \end{tabular}
+%
+% \subsection{Font scaling}
+%
+% The default lcmss text fonts have very high `small letters', making
+% normal-size fonts look small and difficult to read. There are options
+% for scaling up math and typewriter fonts slightly so they harmonize a
+% little more with text fonts.\\
+%
+% \begin{tabular}{@{}l@{\hspace{1cm}}l}
+% Option & Meaning\\ \hline
+% scaleupmath & scale up math fonts\\
+% scaleuptt & scale up typewriter fonts
+% \end{tabular}
+%
+% \subsection{Math fonts}
+%
+% Because the availability of different fonts in different encodings is
+% not really homogenous, we differentiate between the font used for
+% operator names (plus upper case greek, digits and some symbols) and
+% the font used for other symbols. In some cases (math extension font),
+% the choices are quite limited anyway.
+%
+% The default is to use cmr for operators and such and the standard cmm
+% and relatives for symbols. The concrete option for concrete text fonts
+% selects concrete math fonts by default, but as these don't seem to
+% exist in Type1 format currently, it's recommended to combine concrete
+% text with Euler math.\\
+%
+% \begin{tabular}{@{}l@{\hspace{1cm}}p{0.6\textwidth}}
+% Option & Meaning \\ \hline
+% eulermath & Use Euler math fonts. This implies the option textops
+% (see below). \\
+% eulerdigits & Take digits also from the Euler fonts (default: the
+% text font used). Can be used only in conjunction with
+% the eulermath option. \\
+% cmbrightmath & Use cmbright math fonts. \\
+% textops & Take operator names, upper case greek, digits and some
+% symbols from the text font rather than from some font
+% matching the math font (default for Euler math).
+% \end{tabular}
+%
+% \StopEventually{\PrintChanges\PrintIndex}
+%
+% \section{Implementation}
+%
+% \changes{v0.1}{2001/08/10}{First version for the pre-alpha release of
+% texpower.}
+%
+% \changes{v0.2}{2001/11/17}{Added support for stmaryrd fonts.}
+%
+% \changes{v0.3}{2002/10/18}{Rewritten to go without .fd files. Euler package
+% dependence changed to eulervm. Added support for ams, lasy, wasysym, rsfs,
+% dstroke fonts.}
+%
+% \changes{v0.4}{2003/03/25}{Added support for cmbright math.}
+%
+% \changes{v0.5}{2003/03/26}{Added support for T1 encoding.}
+%
+% \changes{v0.6}{2003/05/29}{Change of attitude: I found out how desolate the
+% situation of most presentation packages is wrt fonts. Hence, instead of
+% trying to be as minimally invasive as possible, tpslifonts will try to hijack
+% every single font which might possibly be used in a presentation and replace
+% it by something sensible. No `private' ``lcmr'' to replace ``cmr'' any more
+% - cmr is redefined no matter what. Now configures (almost) all fonts type1cm
+% and type1ec do, plus concrete, cmbright, and euler fonts. Added options
+% ``scale5pt'', ``scale6pt'', ``scale7pt'' to bound the design sizes of fonts
+% used. Added options ``cmr'', ``cmss'', ``cmbright'' and ``concrete'' to
+% choose text fonts different from lcmss. Improved handling of option
+% incompatibilities.}
+%
+% \changes{v0.6a}{2003/06/02}{Removed some font warnings by selecting `silent'
+% forms of declaration. }
+%
+% \changes{v0.6b}{2003/07/19}{A small change making `cmbright' AMS fonts
+% useable before \cs{begin\{document\}}. }
+%
+% \changes{v0.6c}{2003/09/23}{Added the option ``cmfib''.}
+%
+% \changes{v0.6d}{2004/07/27}{Moved to dtx format. No other code changes.}
+%
+% \begin{macrocode}
+\RequirePackage{ifthen}
+% \end{macrocode}
+%
+% \subsection{Options and general setup}
+%
+% Text fonts. The default is to use ``slifonts'' (lcmss).
+% \begin{macrocode}
+\newcommand{\TPSFTextfont}{lcmss}
+% \end{macrocode}
+% The option cmr sets ``computer modern roman'' text fonts.
+% \begin{macrocode}
+\DeclareOption{cmr}{\renewcommand{\TPSFTextfont}{cmr}}
+% \end{macrocode}
+% The option cmfib sets ``computer modern roman Fibonacci'' text fonts.
+% \begin{macrocode}
+\DeclareOption{cmfib}{\renewcommand{\TPSFTextfont}{cmfib}}
+% \end{macrocode}
+% The option cmss sets ``computer modern roman sans serif'' text fonts.
+% \begin{macrocode}
+\DeclareOption{cmss}{\renewcommand{\TPSFTextfont}{cmss}}
+% \end{macrocode}
+% The option cmbright sets ``computer modern bright'' text fonts.
+% \begin{macrocode}
+\DeclareOption{cmbright}{\renewcommand{\TPSFTextfont}{cmbr}}
+% \end{macrocode}
+% The option concrete sets ``concrete'' text fonts.
+% \begin{macrocode}
+\DeclareOption{concrete}
+{%
+ \renewcommand{\TPSFTextfont}{ccr}%
+ \renewcommand{\TPSFMathfont}{ccm}%
+ \renewcommand{\TPSFOperatorfont}{ccr}%
+}
+% \end{macrocode}
+%
+% \subsubsection{Design size selection}
+%
+% Usually design sizes are `bounded' by 8pt, that is, if
+% an 8pt (or lower) design size of a font exists, it will be scaled to larger
+% sizes even if larger design sizes exist, to enhance readability at low
+% resolutions. For sizes below 8pt, smaller design sizes are used if available.
+% \begin{macrocode}
+\providecommand{\TPSFMaxDesignSize}{8}
+% \end{macrocode}
+% The option scale5pt causes scaled 5pt design sizes to be used wherever
+% possible.
+% \begin{macrocode}
+\DeclareOption{scale5pt}{\renewcommand{\TPSFMaxDesignSize}{5}}
+% \end{macrocode}
+% The option scale6pt causes scaled 6pt design sizes to be used wherever
+% possible (for font sizes above 6pt).
+% \begin{macrocode}
+\DeclareOption{scale6pt}{\renewcommand{\TPSFMaxDesignSize}{6}}
+% \end{macrocode}
+% The option scale7pt causes scaled 7pt design sizes to be used wherever
+% possible (for font sizes above 7pt).
+% \begin{macrocode}
+\DeclareOption{scale7pt}{\renewcommand{\TPSFMaxDesignSize}{7}}
+% \end{macrocode}
+%
+% lcmss text fonts have very high `small letters', making normal-size fonts look
+% small and difficult to read.
+% The option scaleupmath (scaleuptt) will scale up math (typewriter) fonts
+% slightly so they harmonize a little more with text fonts.
+% These options do not make much sense with other text fonts, hence a warning
+% (but no error message) is generated to remind the user they might have
+% overlooked something.
+% \begin{macrocode}
+\newboolean{TPSFscaleup}
+\DeclareOption{scaleupmath}
+{%
+ \providecommand\TPSFmathscale{1.15}%
+ \providecommand\TPSFeulerscale{1.1}%
+ \providecommand\TPSFcmbrscale{1.1}%
+ \setboolean{TPSFscaleup}{true}%
+}
+
+\DeclareOption{scaleuptt}
+{\providecommand\TPSFttscale{1.2}\setboolean{TPSFscaleup}{true}}
+% \end{macrocode}
+%
+% \subsubsection{Math fonts}
+%
+% Because the availability of different fonts in different encodings is not
+% really homogenous, we differentiate between the font used for Operators (plus
+% upper case greek, digits and some symbols) and the font used for other
+% symbols. In some cases (math extension font), the choices are quite limited
+% anyway.
+%
+% The default is to use cmr for operators and such and the standard cmm and
+% relatives for symbols.
+% \begin{macrocode}
+\newcommand{\TPSFMathfont}{cmm}
+
+\newcommand{\TPSFOpF@cmm}{cmrm}
+
+\newcommand{\TPSFOpF@ccm}{ccr}
+
+\newcommand{\TPSFOperatorfont}{cmr}
+% \end{macrocode}
+% The option textops makes the operator font follow the text font.
+% \begin{macrocode}
+\newboolean{TPSFtextops}
+\DeclareOption{textops}{\setboolean{TPSFtextops}{true}}
+% \end{macrocode}
+% The option eulermath sets euler math fonts (slightly adapted from the eulervm
+% package to match lcmss better).
+% When using this option, the operator font automatically follows the text
+% font.
+% \begin{macrocode}
+\DeclareOption{eulermath}
+{\renewcommand{\TPSFMathfont}{euler}\setboolean{TPSFtextops}{true}}
+% \end{macrocode}
+% The option eulerdigits works only in conjunction with eulermath and sets the
+% euler-digits option of the eulervm package.
+% \begin{macrocode}
+\newboolean{TPSFeulerdigits}
+\DeclareOption{eulerdigits}
+{%
+ \setboolean{TPSFeulerdigits}{true}%
+ \PassOptionsToPackage{euler-digits}{eulervm}%
+}
+% \end{macrocode}
+% The option cmbrightmath sets cmbright math fonts (slightly adapted from the
+% cmbright package to match lcmss better).
+% \begin{macrocode}
+\DeclareOption{cmbrightmath}{\renewcommand{\TPSFMathfont}{cmbrm}}
+
+\newcommand{\TPSFOpF@cmbrm}{cmbrmt}
+% \end{macrocode}
+
+%
+% \subsubsection{Process options}
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+%
+% Option postprocessing.
+%
+% Parameters |\TPSFmathscale| and such can be (re)defined from outside the
+% tpslifonts package to adjust scaling. If any of these scaling parameters is
+% defined before the tpslifonts package is loaded, there is no need to give the
+% respective option.
+% Here, we test whether the parameters have been provided (either by defining
+% them independently or by giving one of the ``scaleup...'' options), and define
+% the `real' scaling parameter for font definition accordingly.
+% \begin{macrocode}
+\@ifundefined{TPSFmathscale}
+{\let\TPSFmathscale\@undefined\let\mathscale@TPSF\empty}
+{\def\mathscale@TPSF{[\TPSFmathscale]}}
+
+\@ifundefined{TPSFeulerscale}
+{\let\TPSFeulerscale\@undefined\let\eulerscale@TPSF\empty}
+{\def\eulerscale@TPSF{[\TPSFeulerscale]}}
+
+\@ifundefined{TPSFcmbrscale}
+{\let\TPSFcmbrscale\@undefined\let\cmbrscale@TPSF\empty}
+{\def\cmbrscale@TPSF{[\TPSFcmbrscale]}}
+
+\@ifundefined{TPSFttscale}
+{\let\TPSFttscale\@undefined\let\ttscale@TPSF\empty}
+{\def\ttscale@TPSF{[\TPSFttscale]}}
+% \end{macrocode}
+%
+% As mentioned above, the ``scaleup...'' options make sense really only if lcmss
+% text fonts are used. Otherwise, we give a warning.
+% \begin{macrocode}
+\ifthenelse{\boolean{TPSFscaleup}\and\not\equal{\TPSFTextfont}{lcmss}}
+{%
+ \PackageWarning{tpslifonts}
+ {Using the ``scaleup'' Options makes sense only\MessageBreak
+ when lcmss text fonts are used.\MessageBreak
+ Watch closely whether the results of scaling math\MessageBreak
+ and/or typewriter fonts together with ``\TPSFTextfont''\MessageBreak
+ text fonts is what you intended to achieve.%
+ }%
+}
+{}
+% \end{macrocode}
+%
+% We need to set the math operator font corresponing to the settings of the
+% TPSFtextops switch, the text and math fonts.
+% \begin{macrocode}
+\ifthenelse{\boolean{TPSFtextops}}
+{\let\TPSFOperatorfont\TPSFTextfont}
+{%
+ \expandafter\let\expandafter\TPSFOperatorfont
+ \csname TPSFOpF@\TPSFMathfont\endcsname
+}
+% \end{macrocode}
+%
+% The cmbright package also sets text fonts, so if cmbright math is requested,
+% we load the cmbright package first and later overwrite the text font settings
+% (if no cmbright text fonts were requested).
+% \begin{macrocode}
+\ifthenelse{\equal{\TPSFMathfont}{cmbrm}}
+{%
+ \RequirePackage[standard-baselineskips]{cmbright}%
+}
+% \end{macrocode}
+%
+% \subsection{Font shape configuration}
+
+% We need a couple of macros to help in configuring fonts.
+% To increase readability in presentations, design size selection is
+% restricted. Without any options, the largest design size used is 8pt. The
+% options scale5pt ... scale7pt impose further constraints.
+% Another restriction is caused by the availability of design sizes. Not all
+% fonts exist in all design sizes. If no design size exists at all in the
+% requested range (i.e. the font exists only in size 10), then the smallest
+% available size has to be chosen no matter what.
+
+% |\FilterSizes@TPSF<name>{<list>}| filters out all sizes (represented as
+% nonnegative integer numbers) from the comma-separated <list> which are above
+% the threshold in |\TPSFMaxDesignSize| and stores the result in the macro
+% <name>. To avoid inconsistencies if all sizes exceed |\TPSFMaxDesignSize|, the
+% first size is always passed.
+% \begin{macrocode}
+\newcommand{\FilterSizes@TPSF}[2]{\expandafter\@FilterSizes@TPSF#2,\@nil#1}
+
+\def\@FilterSizes@TPSF#1,#2\@nil#3%
+{%
+ \def#3{#1}%
+ \ifx\empty#2\empty\else\@@FilterSizes@TPSF#2\@nil#3\fi
+}
+
+\def\@@FilterSizes@TPSF#1,#2\@nil#3%
+{%
+ \ifnum#1>\TPSFMaxDesignSize\relax
+ \else
+ \expandafter\def\expandafter#3\expandafter{#3,#1}%
+ \ifx\empty#2\empty\else\@@FilterSizes@TPSF#2\@nil#3\fi
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\DeclareFontShape@TPSF}
+% |\DeclareFontShape@TPSF[<scale>]|\\
+% | {<enc>}{<fam>}{<ser>}{<shp>}{<name>}{<sizes>}|
+% declares a font with presentation-friendly design size selection (which
+% means all design sizes above |\TPSFMaxDesignSize| are filtered out. The actually
+% existing design sizes have to be provided in |<sizes>| as a comma-separated list
+% of numbers. If |<s>| is one of the sizes, it is expected that the corresponding
+% font name can be constructed as |<name><s>|.
+% If the optional argument |<scale>| is given, it has to be of the form
+% |[<factor>]|, where |<factor>| specifies the scaling of the font (see the
+% options ``scaleupmath'' and ``scaleuptt'' above).
+% \begin{macrocode}
+\newcommand{\DeclareFontShape@TPSF}[7][]
+{%
+ \FilterSizes@TPSF\sizes@TPSF{#7}%
+ \let\sizedecl@TPSF\empty
+ \def\fontname@TPSF{#6}%
+ \def\scale@TPSF{#1}%
+ \expandafter\parsesizes@TPSF\sizes@TPSF,,\@nil
+ \DeclareFontShape{#2}{#3}{#4}{#5}{\sizedecl@TPSF}{}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+
+\def\parsesizes@TPSF#1,#2\@nil
+{%
+ \let\prevsize@TPSF\empty
+ \def\currsize@TPSF{#1}%
+ \@parsesizes@TPSF#2\@nil
+}
+
+\def\@parsesizes@TPSF#1,#2\@nil
+{%
+ \edef\sizedecl@TPSF{\sizedecl@TPSF\space<\prevsize@TPSF-#1>s*\scale@TPSF \fontname@TPSF\currsize@TPSF}%
+ \def\currsize@TPSF{#1}%
+ \let\prevsize@TPSF\currsize@TPSF
+ \ifx\currsize@TPSF\empty\else\@parsesizes@TPSF#2\@nil\fi
+}
+% \end{macrocode}
+%
+% \subsection{Declaration of font shapes}
+%
+% The following is copied more or less verbatim from type1cm.sty,
+% type1ec.sty, and other sources of font definitions for e.g. cmbright fonts.
+% For fonts following the usual naming conventions, we use
+% |\DeclareFontShape@TPSF| instead of |\DeclareFontShape| to implement design size
+% bounding.
+% For T1 ec fonts, the same is achieved by appropriate redefinition of
+% |\EC@family|.
+% \begin{macrocode}
+\begingroup
+\nfss@catcodes
+% \end{macrocode}
+%
+% \subsubsection{Text fonts for OT1 encoding}
+%
+% computer modern roman.
+% \begin{macrocode}
+\DeclareFontFamily{OT1}{cmr}{\hyphenchar\font=45}
+
+\DeclareFontShape@TPSF{OT1}{cmr}{m}{n}{cmr}{5,6,7,8,9,10,12,17}
+
+\DeclareFontShape@TPSF{OT1}{cmr}{m}{sl}{cmsl}{8,9,10,12}
+
+\DeclareFontShape@TPSF{OT1}{cmr}{m}{it}{cmti}{7,8,9,10,12}
+
+\DeclareFontShape@TPSF{OT1}{cmr}{m}{sc}{cmcsc}{9,10}
+
+\DeclareFontShape@TPSF{OT1}{cmr}{m}{ui}{cmu}{10}
+
+\DeclareFontShape@TPSF{OT1}{cmr}{b}{n}{cmb}{10}
+
+\DeclareFontShape@TPSF{OT1}{cmr}{bx}{n}{cmbx}{5,6,7,8,9,10,12}
+
+\DeclareFontShape@TPSF{OT1}{cmr}{bx}{sl}{cmbxsl}{10}
+
+\DeclareFontShape@TPSF{OT1}{cmr}{bx}{it}{cmbxti}{10}
+
+\DeclareFontShape{OT1}{cmr}{bx}{ui}
+ {<->ssub * cmr/m/ui}{}
+
+\DeclareFontFamily{OT1}{cmfr}{\hyphenchar\font=45}
+
+\DeclareFontShape{OT1}{cmfr}{m}{n}{%
+ <->s* cmff10
+ }{}
+\DeclareFontShape{OT1}{cmfr}{m}{it}{
+ <->s* cmfi10
+ }{}
+
+\DeclareFontFamily{OT1}{cmdh}{\hyphenchar\font=45}
+
+\DeclareFontShape{OT1}{cmdh}{m}{n}{
+ <->s* cmdunh10
+ }{}
+
+\DeclareFontFamily{OT1}{cmfib}{\hyphenchar\font=45}
+
+\DeclareFontShape{OT1}{cmfib}{m}{n}{
+ <->s* cmfib8
+ }{}
+
+\DeclareFontShape{OT1}{cmfib}{m}{sl}
+ {<->ssub * cmr/m/sl}{}
+
+\DeclareFontShape{OT1}{cmfib}{m}{it}
+ {<->ssub * cmr/m/it}{}
+
+\DeclareFontShape{OT1}{cmfib}{m}{sc}
+ {<->ssub * cmr/m/sc}{}
+
+\DeclareFontShape{OT1}{cmfib}{m}{ui}
+ {<->ssub * cmr/m/ui}{}
+
+\DeclareFontShape{OT1}{cmfib}{b}{n}
+ {<->ssub * cmr/b/n}{}
+
+\DeclareFontShape{OT1}{cmfib}{bx}{n}
+ {<->ssub * cmr/bx/n}{}
+
+\DeclareFontShape{OT1}{cmfib}{bx}{sl}
+ {<->ssub * cmr/bx/sl}{}
+
+\DeclareFontShape{OT1}{cmfib}{bx}{it}
+ {<->ssub * cmr/bx/it}{}
+
+\DeclareFontShape{OT1}{cmfib}{bx}{ui}
+ {<->ssub * cmr/m/ui}{}
+% \end{macrocode}
+% computer modern sans serif.
+% \begin{macrocode}
+\DeclareFontFamily{OT1}{cmss}{\hyphenchar\font=45}
+
+\DeclareFontShape@TPSF{OT1}{cmss}{m}{n}{cmss}{8,9,10,12,17}
+
+\DeclareFontShape{OT1}{cmss}{m}{it}
+ {<->sub*cmss/m/sl}{}
+
+\DeclareFontShape@TPSF{OT1}{cmss}{m}{sl}{cmssi}{8,9,10,12,17}
+
+\DeclareFontShape{OT1}{cmss}{m}{sc}
+ {<->sub*cmr/m/sc}{}
+
+\DeclareFontShape{OT1}{cmss}{m}{ui}
+ {<->sub*cmr/m/ui}{}
+
+\DeclareFontShape@TPSF{OT1}{cmss}{sbc}{n}{cmssdc}{10}
+
+\DeclareFontShape@TPSF{OT1}{cmss}{bx}{n}{cmssbx}{10}
+
+\DeclareFontShape{OT1}{cmss}{bx}{ui}
+ {<->sub*cmr/bx/ui}{}
+% \end{macrocode}
+% slide computer modern sans serif.
+% \begin{macrocode}
+\DeclareFontFamily{OT1}{lcmss}{\hyphenchar\font45 }
+
+\DeclareFontShape@TPSF{OT1}{lcmss}{m}{n}{lcmss}{8}
+
+\DeclareFontShape@TPSF{OT1}{lcmss}{m}{In}{ilcmss}{8}
+
+\DeclareFontShape@TPSF{OT1}{lcmss}{m}{sl}{lcmssi}{8}
+
+\DeclareFontShape@TPSF{OT1}{lcmss}{m}{Isl}{ilcmssi}{8}
+
+\DeclareFontShape{OT1}{lcmss}{m}{it}{%
+ <->sub*lcmss/m/sl}{}
+
+\DeclareFontShape{OT1}{lcmss}{m}{Iit}{%
+ <->sub*lcmss/m/Isl}{}
+
+\DeclareFontShape@TPSF{OT1}{lcmss}{b}{n}{lcmssb}{8}
+
+\DeclareFontShape@TPSF{OT1}{lcmss}{b}{In}{ilcmssb}{8}
+
+\DeclareFontShape{OT1}{lcmss}{bx}{n}{%
+ <->sub*lcmss/b/n}{}
+
+\DeclareFontShape{OT1}{lcmss}{bx}{In}{%
+ <->sub*lcmss/b/In}{}
+
+\DeclareFontShape{OT1}{lcmss}{m}{ui}{%
+ <->sub*cmr/m/ui}{}
+
+\DeclareFontShape{OT1}{lcmss}{bx}{ui}{%
+ <->sub*cmr/m/ui}{}
+% \end{macrocode}
+% computer modern bright
+% \begin{macrocode}
+\DeclareFontFamily{OT1}{cmbr}{\hyphenchar\font45}
+
+\DeclareFontShape@TPSF{OT1}{cmbr}{m}{n}{cmbr}{8,9,10,17}
+
+\DeclareFontShape@TPSF{OT1}{cmbr}{m}{sl}{cmbrsl}{8,9,10,17}
+
+\DeclareFontShape{OT1}{cmbr}{m}{it}{%
+<->ssub*cmbr/m/sl%
+}{}
+
+\DeclareFontShape{OT1}{cmbr}{b}{n}{%
+<->ssub*cmbr/bx/n%
+}{}
+
+\DeclareFontShape@TPSF{OT1}{cmbr}{bx}{n}{cmbrbx}{10}
+% \end{macrocode}
+% concrete roman
+% \begin{macrocode}
+\DeclareFontFamily{OT1}{ccr}{\hyphenchar\font45 }
+
+\DeclareFontShape@TPSF{OT1}{ccr}{m}{n}{ccr}{5,6,7,8,9,10}
+
+\DeclareFontShape@TPSF{OT1}{ccr}{m}{sl}{ccsl}{9,10}
+
+\DeclareFontShape@TPSF{OT1}{ccr}{m}{it}{ccti}{10}
+
+\DeclareFontShape@TPSF{OT1}{ccr}{m}{sc}{cccsc}{10}
+
+\DeclareFontShape{OT1}{ccr}{bx}{n} {<-> ssub * cmss/bx/n}{}
+\DeclareFontShape{OT1}{ccr}{bx}{sl}{<-> ssub * cmss/bx/sl}{}
+\DeclareFontShape{OT1}{ccr}{bx}{it}{<-> ssub * cmss/bx/it}{}
+% \DeclareFontShape{OT1}{ccr}{bx}{n} {<-> ssub * cmr/bx/n}{}
+% \DeclareFontShape{OT1}{ccr}{bx}{sl}{<-> ssub * cmr/bx/sl}{}
+% \DeclareFontShape{OT1}{ccr}{bx}{it}{<-> ssub * cmr/bx/it}{}
+\DeclareFontShape{OT1}{ccr}{sbc}{n} {<-> ssub * cmss/sbc/n}{}
+\DeclareFontShape{OT1}{ccr}{sbc}{sl}{<-> ssub * cmss/sbc/n}{}
+\DeclareFontShape{OT1}{ccr}{sbc}{it}{<-> ssub * cmss/sbc/n}{}
+
+\DeclareFontShape@TPSF{OT1}{ccr}{c}{sl}{ccslc}{9}
+% \end{macrocode}
+%
+% \subsubsection{Text fonts for T1 encoding}
+%
+% \begin{macrocode}
+\let\ecscale@TPSF\empty
+
+\ifcase\TPSFMaxDesignSize
+ \or\or\or\or\or
+ \providecommand{\EC@family}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <->s*\ecscale@TPSF#50500%
+ }{}}
+ \or
+ \providecommand{\EC@family}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <-6>s*\ecscale@TPSF#50500%
+ <6->s*\ecscale@TPSF#50600%
+ }{}}
+ \or
+ \providecommand{\EC@family}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <-6>s*\ecscale@TPSF#50500%
+ <6-7>s*\ecscale@TPSF#50600%
+ <7->s*\ecscale@TPSF#50700%
+ }{}}
+ \or
+ \providecommand{\EC@family}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <-6>s*\ecscale@TPSF#50500%
+ <6-7>s*\ecscale@TPSF#50600%
+ <7-8>s*\ecscale@TPSF#50700%
+ <8->s*\ecscale@TPSF#50800%
+ }{}}
+ \or
+ \providecommand{\EC@family}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <-6>s*\ecscale@TPSF#50500%
+ <6-7>s*\ecscale@TPSF#50600%
+ <7-8>s*\ecscale@TPSF#50700%
+ <8-9>s*\ecscale@TPSF#50800%
+ <9->s*\ecscale@TPSF#50900%
+ }{}}
+ \or
+ \providecommand{\EC@family}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <-6>s*\ecscale@TPSF#50500%
+ <6-7>s*\ecscale@TPSF#50600%
+ <7-8>s*\ecscale@TPSF#50700%
+ <8-9>s*\ecscale@TPSF#50800%
+ <9-10>s*\ecscale@TPSF#50900%
+ <10->s*\ecscale@TPSF#51000%
+ }{}}
+ \or
+ \providecommand{\EC@family}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <-6>s*\ecscale@TPSF#50500%
+ <6-7>s*\ecscale@TPSF#50600%
+ <7-8>s*\ecscale@TPSF#50700%
+ <8-9>s*\ecscale@TPSF#50800%
+ <9-10>s*\ecscale@TPSF#50900%
+ <10-10.95>s*\ecscale@TPSF#51000%
+ <10.95->s*\ecscale@TPSF#51095%
+ }{}}
+ \or
+ \providecommand{\EC@family}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <-6>s*\ecscale@TPSF#50500%
+ <6-7>s*\ecscale@TPSF#50600%
+ <7-8>s*\ecscale@TPSF#50700%
+ <8-9>s*\ecscale@TPSF#50800%
+ <9-10>s*\ecscale@TPSF#50900%
+ <10-10.95>s*\ecscale@TPSF#51000%
+ <10.95-12>s*\ecscale@TPSF#51095%
+ <12->s*\ecscale@TPSF#51200%
+ }{}}
+\fi
+% \end{macrocode}
+% european computer modern roman.
+% \begin{macrocode}
+\input{t1cmr.fd}
+
+\input{t1cmfr.fd}
+
+\input{t1cmdh.fd}
+
+\input{t1cmfib.fd}
+
+\DeclareFontShape{T1}{cmfib}{m}{it}
+ {<->ssub * cmr/m/it}{}
+
+\DeclareFontShape{T1}{cmfib}{m}{sc}
+ {<->ssub * cmr/m/sc}{}
+
+\DeclareFontShape{T1}{cmfib}{m}{ui}
+ {<->ssub * cmr/m/ui}{}
+
+\DeclareFontShape{T1}{cmfib}{b}{n}
+ {<->ssub * cmr/b/n}{}
+
+\DeclareFontShape{T1}{cmfib}{bx}{n}
+ {<->ssub * cmr/bx/n}{}
+
+\DeclareFontShape{T1}{cmfib}{bx}{sl}
+ {<->ssub * cmr/bx/sl}{}
+
+\DeclareFontShape{T1}{cmfib}{bx}{it}
+ {<->ssub * cmr/bx/it}{}
+
+\DeclareFontShape{T1}{cmfib}{bx}{ui}
+ {<->ssub * cmr/m/ui}{}
+% \end{macrocode}
+% european computer modern roman sans serif.
+% \begin{macrocode}
+\input{t1cmss.fd}
+
+\DeclareFontShape@TPSF{T1}{cmss}{sbc}{n}{ecssdc}{10}
+% \end{macrocode}
+% european slide computer modern sans serif.
+% \begin{macrocode}
+\DeclareFontFamily{T1}{lcmss}{}
+\DeclareFontShape@TPSF{T1}{lcmss}{m}{n}{eclq}{8}
+
+\DeclareFontShape@TPSF{T1}{lcmss}{m}{In}{ieclq}{8}
+
+\DeclareFontShape@TPSF{T1}{lcmss}{m}{sl}{ecli}{8}
+
+\DeclareFontShape@TPSF{T1}{lcmss}{m}{Isl}{iecli}{8}
+
+\DeclareFontShape{T1}{lcmss}{m}{it}{%
+ <->sub*lcmss/m/sl}{}
+
+\DeclareFontShape{T1}{lcmss}{m}{Iit}{%
+ <->sub*lcmss/m/Isl}{}
+
+\DeclareFontShape@TPSF{T1}{lcmss}{bx}{n}{eclb}{8}
+
+\DeclareFontShape@TPSF{T1}{lcmss}{bx}{In}{ieclb}{8}
+
+\DeclareFontShape@TPSF{T1}{lcmss}{bx}{sl}{eclo}{8}
+
+\DeclareFontShape@TPSF{T1}{lcmss}{bx}{Isl}{ieclo}{8}
+
+\DeclareFontShape{T1}{lcmss}{bx}{it}{%
+ <->sub*lcmss/bx/sl}{}
+
+\DeclareFontShape{T1}{lcmss}{bx}{Iit}{%
+ <->sub*lcmss/bx/Isl}{}
+
+\DeclareFontShape{T1}{lcmss}{b}{n}{%
+ <->sub*lcmss/bx/n}{}
+
+\DeclareFontShape{T1}{lcmss}{m}{ui}{%
+ <->sub*cmr/m/ui}{}
+
+\DeclareFontShape{T1}{lcmss}{bx}{ui}{%
+ <->sub*cmr/m/ui}{}
+% \end{macrocode}
+% european computer modern bright
+% \begin{macrocode}
+\DeclareFontFamily{T1}{cmbr}{}
+
+\DeclareFontShape@TPSF{T1}{cmbr}{m}{n}{ebmr}{8,9,10,17}
+
+\DeclareFontShape@TPSF{T1}{cmbr}{m}{sl}{ebmo}{8,9,10,17}
+
+\DeclareFontShape{T1}{cmbr}{m}{it}{%
+<->ssub*cmbr/m/sl%
+}{}
+
+\DeclareFontShape@TPSF{T1}{cmbr}{sb}{n}{ebsr}{8,9,10,17}
+
+\DeclareFontShape@TPSF{T1}{cmbr}{sb}{sl}{ebso}{8,9,10,17}
+
+\DeclareFontShape{T1}{cmbr}{sb}{it}{%
+<->ssub*cmbr/sb/sl%
+}{}
+
+\DeclareFontShape{T1}{cmbr}{b}{n}{%
+<->ssub*cmbr/bx/n%
+}{}
+
+\DeclareFontShape{T1}{cmbr}{bx}{n}{%
+<->sub*cmbr/sb/n%
+}{}
+% \end{macrocode}
+% european concrete roman
+% \begin{macrocode}
+\DeclareFontFamily{T1}{ccr}{}
+
+\DeclareFontShape@TPSF{T1}{ccr}{m}{n}{eorm}{5,6,7,8,9,10}
+
+\DeclareFontShape@TPSF{T1}{ccr}{m}{sl}{eosl}{5,6,7,8,9,10}
+
+\DeclareFontShape@TPSF{T1}{ccr}{m}{it}{eoti}{10}
+
+\DeclareFontShape@TPSF{T1}{ccr}{m}{sc}{eocc}{10}
+
+\DeclareFontShape{T1}{ccr}{bx}{n}{%
+<->ssub*cmss/bx/n}{}
+
+\DeclareFontShape{T1}{ccr}{bx}{sl}{%
+<->ssub*cmss/bx/sl}{}
+
+\DeclareFontShape{T1}{ccr}{bx}{it}{%
+<->ssub*cmss/bx/it}{}
+
+% \DeclareFontShape{T1}{ccr}{bx}{n}{%
+% <->ssub*cmr/bx/n}{}
+
+% \DeclareFontShape{T1}{ccr}{bx}{sl}{%
+% <->ssub*cmr/bx/sl}{}
+
+% \DeclareFontShape{T1}{ccr}{bx}{it}{%
+% <->ssub*cmr/bx/it}{}
+
+\DeclareFontShape{T1}{ccr}{sbc}{n}{%
+ <->ssubf*ecssdc10}{}
+% \end{macrocode}
+%
+% \subsection{Typewriter fonts for OT1 encoding}
+%
+% computer modern typewriter.
+% \begin{macrocode}
+\DeclareFontFamily{OT1}{cmtt}{\hyphenchar\font\m@ne}
+
+\DeclareFontShape@TPSF[\ttscale@TPSF]{OT1}{cmtt}{m}{n}{cmtt}{8,9,10,12}
+
+\DeclareFontShape@TPSF[\ttscale@TPSF]{OT1}{cmtt}{m}{it}{cmitt}{10}
+
+\DeclareFontShape@TPSF[\ttscale@TPSF]{OT1}{cmtt}{m}{sl}{cmsltt}{10}
+
+\DeclareFontShape@TPSF[\ttscale@TPSF]{OT1}{cmtt}{m}{sc}{cmtcsc}{10}
+
+\DeclareFontShape{OT1}{cmtt}{m}{ui}
+ {<->sub * cmtt/m/it}{}
+
+\DeclareFontShape{OT1}{cmtt}{bx}{n}
+ {<->sub * cmtt/m/n}{}
+
+\DeclareFontShape{OT1}{cmtt}{bx}{it}
+ {<->sub * cmtt/m/it}{}
+
+\DeclareFontShape{OT1}{cmtt}{bx}{ui}
+ {<->sub * cmtt/m/it}{}
+% \end{macrocode}
+% `Slides' computer modern typewriter exists only for compatibility with T1
+% encoding.
+% \begin{macrocode}
+\DeclareFontFamily{OT1}{lcmtt}{\hyphenchar\font\m@ne}
+
+\DeclareFontShape@TPSF[\ttscale@TPSF]{OT1}{lcmtt}{m}{n}{cmtt}{8,9,10,12}
+
+\DeclareFontShape@TPSF[\ttscale@TPSF]{OT1}{lcmtt}{m}{it}{cmitt}{10}
+
+\DeclareFontShape@TPSF[\ttscale@TPSF]{OT1}{lcmtt}{m}{sl}{cmsltt}{10}
+
+\DeclareFontShape@TPSF[\ttscale@TPSF]{OT1}{lcmtt}{m}{sc}{cmtcsc}{10}
+
+\DeclareFontShape{OT1}{lcmtt}{m}{ui}
+ {<->sub * lcmtt/m/it}{}
+
+\DeclareFontShape{OT1}{lcmtt}{bx}{n}
+ {<->sub * lcmtt/m/n}{}
+
+\DeclareFontShape{OT1}{lcmtt}{bx}{it}
+ {<->sub * lcmtt/m/it}{}
+
+\DeclareFontShape{OT1}{lcmtt}{bx}{ui}
+ {<->sub * lcmtt/m/it}{}
+% \end{macrocode}
+% computer modern typewriter light.
+% \begin{macrocode}
+\DeclareFontFamily{OT1}{cmtl}{\hyphenchar\font\m@ne}
+
+\DeclareFontShape{OT1}{cmtl}{m}{n}{%
+<->s*\ttscale@TPSF cmtl10%
+}{}
+
+\DeclareFontShape{OT1}{cmtl}{m}{sl}{%
+<->s*\ttscale@TPSF cmsltl10%
+}{}
+
+\DeclareFontShape{OT1}{cmtl}{m}{it}{<->ssub*cmtl/m/sl}{}
+% \end{macrocode}
+%
+% \subsection{Typewriter fonts for T1 encoding}
+%
+% \begin{macrocode}
+\ifcase\TPSFMaxDesignSize
+ \or\or\or\or\or
+ \providecommand{\EC@ttfamily}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <->s*\ttscale@TPSF#50800%
+ }{}}
+ \or
+ \providecommand{\EC@ttfamily}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <->s*\ttscale@TPSF#50800%
+ }{}}
+ \or
+ \providecommand{\EC@ttfamily}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <->s*\ttscale@TPSF#50800%
+ }{}}
+ \or
+ \providecommand{\EC@ttfamily}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <->s*\ttscale@TPSF#50800%
+ }{}}
+ \or
+ \providecommand{\EC@ttfamily}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <-9>s*\ttscale@TPSF#50800%
+ <9->s*\ttscale@TPSF#50900%
+ }{}}
+ \or
+ \providecommand{\EC@ttfamily}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <-9>s*\ttscale@TPSF#50800%
+ <9-10>s*\ttscale@TPSF#50900%
+ <10->s*\ttscale@TPSF#51000%
+ }{}}
+ \or
+ \providecommand{\EC@ttfamily}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <-9>s*\ttscale@TPSF#50800%
+ <9-10>s*\ttscale@TPSF#50900%
+ <10-10.95>s*\ttscale@TPSF#51000%
+ <10.95->s*\ttscale@TPSF#51095%
+ }{}}
+ \or
+ \providecommand{\EC@ttfamily}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <-9>s*\ttscale@TPSF#50800%
+ <9-10>s*\ttscale@TPSF#50900%
+ <10-10.95>s*\ttscale@TPSF#51000%
+ <10.95-12>s*\ttscale@TPSF#51095%
+ <12->s*\ttscale@TPSF#51200%
+ }{}}
+\fi
+% \end{macrocode}
+% european computer modern typewriter.
+% \begin{macrocode}
+\input{t1cmtt.fd}
+% \end{macrocode}
+% european `Slides' computer modern typewriter. There exists \textbf{one} dedicated
+% font ``ecltt8'' for this setup.
+% \begin{macrocode}
+\DeclareFontFamily{T1}{lcmtt}{\hyphenchar\font\m@ne}
+
+\DeclareFontShape{T1}{lcmtt}{m}{n}{%
+ <->s*\ttscale@TPSF ecltt8%
+}{}
+
+\DeclareFontShape{T1}{lcmtt}{m}{In}{%
+ <->s*\ttscale@TPSF iecltt8%
+}{}
+
+\DeclareFontShape{T1}{lcmtt}{m}{it}{%
+ <->s*\ttscale@TPSF ecit0800%
+}{}
+
+\DeclareFontShape{T1}{lcmtt}{m}{sl}{
+ <->s*\ttscale@TPSF ecst0800
+}{}
+
+\DeclareFontShape{T1}{lcmtt}{m}{sc}{
+ <->s*\ttscale@TPSF ectc0800
+}{}
+
+\DeclareFontShape{T1}{lcmtt}{m}{ui}
+{<->sub * lcmtt/m/it}{}
+
+\DeclareFontShape{T1}{lcmtt}{bx}{n}
+{<->sub * lcmtt/m/n}{}
+
+\DeclareFontShape{T1}{lcmtt}{bx}{it}
+{<->sub * lcmtt/m/it}{}
+
+\DeclareFontShape{T1}{lcmtt}{bx}{ui}
+{<->sub * lcmtt/m/it}{}
+% \end{macrocode}
+% european computer modern typewriter light.
+% \begin{macrocode}
+\DeclareFontFamily{T1}{cmtl}{\hyphenchar\font\m@ne}
+
+\DeclareFontShape{T1}{cmtl}{m}{n}{%
+<->s*\ttscale@TPSF ebtl10%
+}{}
+
+\DeclareFontShape{T1}{cmtl}{m}{sl}{%
+<->s*\ttscale@TPSF ebto10%
+}{}
+
+\DeclareFontShape{T1}{cmtl}{m}{it}{<->ssub*cmtl/m/sl}{}
+% \end{macrocode}
+%
+% \subsection{Typewriter fonts for mTT encoding}
+%
+% Used by cmtt.sty.
+% \begin{macrocode}
+\@ifundefined{T@mTT}{}
+{%
+ \DeclareFontFamily{mTT}{cmtt}{\hyphenchar\font\m@ne}
+ \DeclareFontShape@TPSF[\ttscale@TPSF]{mTT}{cmtt}{m}{n}{cmtt}{8,9,10,12}
+
+ \DeclareFontShape@TPSF[\ttscale@TPSF]{mTT}{cmtt}{m}{it}{cmitt}{10}
+
+ \DeclareFontShape@TPSF[\ttscale@TPSF]{mTT}{cmtt}{m}{sl}{cmsltt}{10}
+
+ \DeclareFontShape@TPSF[\ttscale@TPSF]{mTT}{cmtt}{m}{sc}{cmtcsc}{10}
+
+ \DeclareFontShape{mTT}{cmtt}{m}{ui}
+ {<->sub * cmtt/m/it}{}
+
+ \DeclareFontShape{mTT}{cmtt}{bx}{n}
+ {<->sub * cmtt/m/n}{}
+
+ \DeclareFontShape{mTT}{cmtt}{bx}{it}
+ {<->sub * cmtt/m/it}{}
+
+ \DeclareFontShape{mTT}{cmtt}{bx}{ui}
+ {<->sub * cmtt/m/it}{}
+
+ \DeclareFontFamily{mTT}{lcmtt}{\hyphenchar\font\m@ne}
+
+ \DeclareFontShape@TPSF[\ttscale@TPSF]{mTT}{lcmtt}{m}{n}{cmtt}{8,9,10,12}
+
+ \DeclareFontShape@TPSF[\ttscale@TPSF]{mTT}{lcmtt}{m}{it}{cmitt}{10}
+
+ \DeclareFontShape@TPSF[\ttscale@TPSF]{mTT}{lcmtt}{m}{sl}{cmsltt}{10}
+
+ \DeclareFontShape@TPSF[\ttscale@TPSF]{mTT}{lcmtt}{m}{sc}{cmtcsc}{10}
+
+ \DeclareFontShape{mTT}{lcmtt}{m}{ui}
+ {<->sub * lcmtt/m/it}{}
+
+ \DeclareFontShape{mTT}{lcmtt}{bx}{n}
+ {<->sub * lcmtt/m/n}{}
+
+ \DeclareFontShape{mTT}{lcmtt}{bx}{it}
+ {<->sub * lcmtt/m/it}{}
+
+ \DeclareFontShape{mTT}{lcmtt}{bx}{ui}
+ {<->sub * lcmtt/m/it}{}
+
+ \DeclareFontFamily{mTT}{cmtl}{\hyphenchar\font\m@ne}
+
+ \DeclareFontShape{mTT}{cmtl}{m}{n}{%
+ <->s*\ttscale@TPSF cmtl10%
+ }{}
+
+ \DeclareFontShape{mTT}{cmtl}{m}{sl}{%
+ <->s*\ttscale@TPSF cmsltl10%
+ }{}
+
+ \DeclareFontShape{mTT}{cmtl}{m}{it}{<->ssub*cmtl/m/sl}{}
+}
+% \end{macrocode}
+%
+% \subsection{Math fonts}
+%
+% computer modern math italic.
+% \begin{macrocode}
+\DeclareFontFamily{OML}{cmm}{\skewchar\font127}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{OML}{cmm}{m}{it}{cmmi}{5,6,7,8,9,10,12}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{OML}{cmm}{m}{Iit}{icmmi}{8}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{OML}{cmm}{b}{it}{cmmib}{5,7,10}
+
+\DeclareFontShape{OML}{cmm}{bx}{it}%
+ {<->ssub*cmm/b/it}{}
+
+\DeclareFontFamily{OML}{cmr}{\skewchar\font127 }
+\DeclareFontShape{OML}{cmr}{m}{n}
+ {<-> ssub * cmm/m/it}{}
+\DeclareFontShape{OML}{cmr}{m}{it}
+ {<-> ssub * cmm/m/it}{}
+\DeclareFontShape{OML}{cmr}{m}{sl}
+ {<-> ssub * cmm/m/it}{}
+\DeclareFontShape{OML}{cmr}{m}{sc}
+ {<-> ssub * cmm/m/it}{}
+\DeclareFontShape{OML}{cmr}{bx}{n}
+ {<-> ssub * cmm/b/it}{}
+\DeclareFontShape{OML}{cmr}{bx}{it}
+ {<-> ssub * cmm/b/it}{}
+\DeclareFontShape{OML}{cmr}{bx}{sl}
+ {<-> ssub * cmm/b/it}{}
+\DeclareFontShape{OML}{cmr}{bx}{sc}
+ {<-> ssub * cmm/b/it}{}
+
+\DeclareFontFamily{OT1}{cmrm}{\hyphenchar\font=45}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{OT1}{cmrm}{m}{n}{cmr}{5,6,7,8,9,10,12,17}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{OT1}{cmrm}{m}{it}{cmti}{7,8,9,10,12}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{OT1}{cmrm}{bx}{n}{cmbx}{5,6,7,8,9,10,12}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{OT1}{cmrm}{bx}{it}{cmbxti}{10}
+
+{%
+\let\ecscale@TPSF\mathscale@TPSF
+
+\DeclareFontFamily{T1}{cmrm}{}
+
+\EC@family{T1}{cmrm}{m}{n}{ecrm}
+
+\EC@family{T1}{cmrm}{m}{it}{ecti}
+
+\EC@family{T1}{cmrm}{bx}{n}{ecbx}
+
+\EC@family{T1}{cmrm}{bx}{it}{ecbi}
+}
+
+\DeclareFontFamily{OMS}{cmsy}{\skewchar\font48}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{OMS}{cmsy}{m}{n}{cmsy}{5,6,7,8,9,10}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{OMS}{cmsy}{b}{n}{cmbsy}{5,7,10}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{OMS}{cmsy}{m}{In}{icmsy}{8}
+
+\DeclareFontFamily{OMS}{cmr}{\skewchar\font48 }
+\DeclareFontShape{OMS}{cmr}{m}{n}
+ {<-> ssub * cmsy/m/n}{}
+\DeclareFontShape{OMS}{cmr}{m}{it}
+ {<-> ssub * cmsy/m/n}{}
+\DeclareFontShape{OMS}{cmr}{m}{sl}
+ {<-> ssub * cmsy/m/n}{}
+\DeclareFontShape{OMS}{cmr}{m}{sc}
+ {<-> ssub * cmsy/m/n}{}
+\DeclareFontShape{OMS}{cmr}{bx}{n}
+ {<-> ssub * cmsy/b/n}{}
+\DeclareFontShape{OMS}{cmr}{bx}{it}
+ {<-> ssub * cmsy/b/n}{}
+\DeclareFontShape{OMS}{cmr}{bx}{sl}
+ {<-> ssub * cmsy/b/n}{}
+\DeclareFontShape{OMS}{cmr}{bx}{sc}
+ {<-> ssub * cmsy/b/n}{}
+
+\DeclareFontFamily{OMX}{cmex}{}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{OMX}{cmex}{m}{n}{cmex}{7,10}
+% \end{macrocode}
+% Euler fonts (eulervm style).
+% \begin{macrocode}
+\DeclareFontFamily{U}{zeur}{\skewchar \font =127}
+
+\DeclareFontShape@TPSF[\eulerscale@TPSF]{U}{zeur}{m}{n}{zeurm}{5,7,10}
+
+\DeclareFontShape@TPSF[\eulerscale@TPSF]{U}{zeur}{b}{n}{zeurb}{5,7,10}
+
+\DeclareFontShape{U}{zeur}{bx}{n}{<->ssub * zeur/b/n}{}
+
+\DeclareFontFamily{U}{zeus}{\skewchar \font =176}
+
+\DeclareFontShape@TPSF[\eulerscale@TPSF]{U}{zeus}{m}{n}{zeusm}{5,7,10}
+
+\DeclareFontShape@TPSF[\eulerscale@TPSF]{U}{zeus}{b}{n}{zeusb}{5,7,10}
+
+\DeclareFontShape{U}{zeus}{bx}{n}{<->ssub * zeus/b/n}{}
+
+\DeclareFontFamily{U}{zeuex}{}
+
+\DeclareFontShape{U}{zeuex}{m}{n}{
+ <->s* \eulerscale@TPSF zeuex10
+}{}
+% \end{macrocode}
+% computer modern bright math slanted.
+% \begin{macrocode}
+\DeclareFontFamily{OML}{cmbrm}{\skewchar\font 127}
+
+\DeclareFontShape@TPSF[\cmbrscale@TPSF]{OML}{cmbrm}{m}{it}{cmbrmi}{8,9,10}
+
+\DeclareFontShape@TPSF[\cmbrscale@TPSF]{OML}{cmbrm}{b}{it}{cmbrmb}{10}
+
+\DeclareFontFamily{OML}{cmbr}{\skewchar\font 127}
+
+\DeclareFontShape{OML}{cmbr}{m}{it}{<->ssub*cmbrm/m/it}{}
+
+\DeclareFontShape{OML}{cmbr}{sb}{it}{<->ssub*cmbrm/b/it}{}
+
+\DeclareFontShape{OML}{cmbr}{bx}{it}{<->ssub*cmbrm/b/it}{}
+
+\DeclareFontFamily{OT1}{cmbrmt}{\hyphenchar\font45}
+
+\DeclareFontShape@TPSF[\cmbrscale@TPSF]{OT1}{cmbrmt}{m}{n}{cmbr}{8,9,10,17}
+
+\DeclareFontShape@TPSF[\cmbrscale@TPSF]{OT1}{cmbrmt}{m}{sl}{cmbrsl}{8,9,10,17}
+
+\DeclareFontShape{OT1}{cmbrmt}{m}{it}{%
+<->ssub*cmbrmt/m/sl%
+}{}
+
+\DeclareFontShape@TPSF[\cmbrscale@TPSF]{OT1}{cmbrmt}{bx}{n}{cmbrbx}{10}
+
+\DeclareFontFamily{T1}{cmbrmt}{}
+
+\DeclareFontShape@TPSF[\cmbrscale@TPSF]{T1}{cmbrmt}{m}{n}{ebmr}{8,9,10,17}
+
+\DeclareFontShape@TPSF[\cmbrscale@TPSF]{T1}{cmbrmt}{m}{sl}{ebmo}{8,9,10,17}
+
+\DeclareFontShape{T1}{cmbrmt}{m}{it}{%
+<->ssub*cmbrmt/m/sl%
+}{}
+
+\DeclareFontShape@TPSF[\cmbrscale@TPSF]{T1}{cmbrmt}{sb}{n}{ebsr}{8,9,10,17}
+
+\DeclareFontShape@TPSF[\cmbrscale@TPSF]{T1}{cmbrmt}{sb}{sl}{ebso}{8,9,10,17}
+
+\DeclareFontShape{T1}{cmbrmt}{sb}{it}{%
+<->ssub*cmbrmt/sb/sl%
+}{}
+
+\DeclareFontShape{T1}{cmbrmt}{bx}{n}{%
+<->sub*cmbrmt/sb/n%
+}{}
+
+\DeclareFontShape{T1}{cmbrmt}{bx}{it}{%
+<->sub*cmbrmt/sb/it%
+}{}
+
+\DeclareFontFamily{OMS}{cmbrs}{\skewchar\font 48}
+
+\DeclareFontShape@TPSF[\cmbrscale@TPSF]{OMS}{cmbrs}{m}{n}{cmbrsy}{8,9,10}
+
+\DeclareFontShape{OMS}{cmbrs}{m}{b}{<->ssub*cmbrs/m/n}{}
+
+\DeclareFontFamily{OMS}{cmbr}{\skewchar\font 48}
+
+\DeclareFontShape{OMS}{cmbr}{m}{n}{<->ssub*cmbrs/m/n}{}
+
+\DeclareFontShape{OMS}{cmbr}{m}{b}{<->ssub*cmbrs/m/n}{}
+% \end{macrocode}
+% Concrete Math Italic
+% \begin{macrocode}
+\DeclareFontFamily{OML}{ccm}{\skewchar\font127 }
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{OML}{ccm}{m}{it}{xccmi}{5,6,7,8,9,10}
+
+\DeclareFontShape{OML}{ccm}{b}{it}{<-> ssub * cmm/b/it}{}
+
+\DeclareFontShape{OML}{ccm}{c}{it}{<9>\mathscale@TPSF ccmic9}{}
+
+\DeclareFontFamily{OML}{ccr}{\skewchar\font127 }
+
+\DeclareFontShape{OML}{ccr}{m}{it} {<->ssub * ccm/m/it}{}
+
+\DeclareFontShape{OML}{ccr}{bx}{it} {<->ssub * ccm/b/it}{}
+
+\DeclareFontShape{OML}{ccr}{sbc}{it}{<->ssub * ccm/m/it}{}
+
+\DeclareFontFamily{OMS}{ccsy}{\skewchar\font48 }
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{OMS}{ccsy}{m}{n}{xccsy}{5,6,7,8,9,10}
+
+\DeclareFontShape{OMS}{ccsy}{b}{n}{<-> ssub * cmsy/b/n}{}
+
+\DeclareFontFamily{OMS}{ccr}{\skewchar\font48 }
+
+\DeclareFontShape{OMS}{ccr}{m}{n} {<->ssub * ccsy/m/n}{}
+
+\DeclareFontShape{OMS}{ccr}{bx}{n} {<->ssub * ccsy/b/n}{}
+
+\DeclareFontShape{OMS}{ccr}{sbc}{n}{<->ssub * ccsy/m/n}{}
+
+\DeclareFontFamily{OMX}{ccex}{}
+
+\DeclareFontShape{OMX}{ccex}{m}{n}{<->s*\mathscale@TPSF xccex10}{}
+% \end{macrocode}
+% LaTeX symbols
+% \begin{macrocode}
+\DeclareFontFamily{U}{lasy}{}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{U}{lasy}{m}{n}{lasy}{5,6,7,8,9,10}
+
+\DeclareFontShape{U}{lasy}{b}{n}{
+ <->s* \mathscale@TPSF lasyb10
+ }{}
+% \end{macrocode}
+% AMS fonts
+% \begin{macrocode}
+\DeclareFontFamily{U}{msa}{}
+
+\DeclareFontFamily{U}{msb}{}
+
+\ifthenelse{\equal{\TPSFMathfont}{cmbrm}}
+{%
+% \end{macrocode}
+% AMS fonts should be available immediately, so they can be used in say panels.
+% \begin{macrocode}
+ \DeclareFontShape@TPSF[\cmbrscale@TPSF]{U}{msa}{m}{n}{cmbras}{8,9,10}%
+ \DeclareFontShape@TPSF[\cmbrscale@TPSF]{U}{msb}{m}{n}{cmbrbs}{8,9,10}%
+% \end{macrocode}
+% On the other hand, the cmbright package redeclares them |\AtBeginDocument|, so
+% we need to overwrite that change as well.
+% \begin{macrocode}
+ \AtBeginDocument
+ {%
+ \DeclareFontShape@TPSF[\cmbrscale@TPSF]{U}{msa}{m}{n}{cmbras}{8,9,10}%
+ \DeclareFontShape@TPSF[\cmbrscale@TPSF]{U}{msb}{m}{n}{cmbrbs}{8,9,10}%
+ }%
+}
+{%
+ \DeclareFontShape@TPSF[\mathscale@TPSF]{U}{msa}{m}{n}{msam}{5,7,10}
+
+ \DeclareFontShape@TPSF[\mathscale@TPSF]{U}{msb}{m}{n}{msbm}{5,7,10}
+}
+
+\DeclareFontFamily{U}{euex}{}
+
+\DeclareFontShape{U}{euex}{m}{n}{
+ <->s* \eulerscale@TPSF euex10
+ }{}
+
+\DeclareFontFamily{U}{euf}{}
+
+\DeclareFontShape@TPSF[\eulerscale@TPSF]{U}{euf}{m}{n}{eufm}{5,7,10}
+
+\DeclareFontShape@TPSF[\eulerscale@TPSF]{U}{euf}{b}{n}{eufb}{5,7,10}
+
+\DeclareFontFamily{U}{eur}{\skewchar\font'177}
+
+\DeclareFontShape@TPSF[\eulerscale@TPSF]{U}{eur}{m}{n}{eurm}{5,7,10}
+
+\DeclareFontShape@TPSF[\eulerscale@TPSF]{U}{eur}{b}{n}{eurb}{5,7,10}
+
+\DeclareFontFamily{U}{eus}{\skewchar\font'60}
+
+\DeclareFontShape@TPSF[\eulerscale@TPSF]{U}{eus}{m}{n}{eusm}{5,7,10}
+
+\DeclareFontShape@TPSF[\eulerscale@TPSF]{U}{eus}{b}{n}{eusb}{5,7,10}
+% \end{macrocode}
+% St Mary's Road symbol font.
+% \begin{macrocode}
+\DeclareFontFamily{U}{stmry}{}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{U}{stmry}{m}{n}{stmary}{5,6,7,8,9,10}
+% \end{macrocode}
+% Wasy symbol font.
+% \begin{macrocode}
+\DeclareFontFamily{U}{wasy}{}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{U}{wasy}{m}{n}{wasy}{5,6,7,8,9,10}
+
+\DeclareFontShape{U}{wasy}{b}{n}
+{ <->s*\mathscale@TPSF wasyb10
+}{}
+% \end{macrocode}
+% formal script math symbols
+% \begin{macrocode}
+\DeclareFontFamily{U}{rsfs}{\skewchar\font127 }
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{U}{rsfs}{m}{n}{rsfs}{5,7,10}
+% \end{macrocode}
+% double stroke computer modern
+% \begin{macrocode}
+\DeclareFontFamily{U}{dsrom}{}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{U}{dsrom}{m}{n}{dsrom}{8,10,12}
+
+\DeclareFontFamily{U}{dsss}{}
+
+\DeclareFontShape@TPSF[\mathscale@TPSF]{U}{dsss}{m}{n}{dsss}{8,10,12}
+
+\endgroup
+% \end{macrocode}
+
+% Just to make sure in case these have been defined before...
+% \begin{macrocode}
+\expandafter\let\csname OT1/cmr/m/n/10\endcsname\relax
+\expandafter\let\csname OT1/cmr/m/n/10.95\endcsname\relax
+\expandafter\let\csname OT1/cmr/m/n/12\endcsname\relax
+\expandafter\let\csname T1/cmr/m/n/10\endcsname\relax
+\expandafter\let\csname T1/cmr/m/n/10.95\endcsname\relax
+\expandafter\let\csname T1/cmr/m/n/12\endcsname\relax
+% \end{macrocode}
+%
+% \subsection{Font shape selection}
+%
+% \subsubsection{Set text fonts}
+% \begin{macrocode}
+\newcommand{\setlcmssTextFonts@TPSF}
+{%
+ \renewcommand{\familydefault}{\sfdefault}% Main text font is sans serif.
+ \renewcommand{\sfdefault}{lcmss}% Choose lcmss as sans serif font.
+ \renewcommand{\ttdefault}{lcmtt}% Typewriter font lcmtt.
+}
+
+\newcommand{\setcmrTextFonts@TPSF}
+{%
+ \renewcommand{\familydefault}{\rmdefault}% Main text font is roman.
+ \renewcommand{\rmdefault}{cmr}% Choose cmr as roman font.
+ \renewcommand{\ttdefault}{cmtt}% Typewriter font.
+}
+
+\newcommand{\setcmfibTextFonts@TPSF}
+{%
+ \renewcommand{\familydefault}{\rmdefault}% Main text font is roman.
+ \renewcommand{\rmdefault}{cmfib}% Choose cmfib as roman font.
+ \renewcommand{\ttdefault}{cmtt}% Typewriter font.
+}
+
+\newcommand{\setcmssTextFonts@TPSF}
+{%
+ \renewcommand{\familydefault}{\sfdefault}% Main text font is sans serif.
+ \renewcommand{\sfdefault}{cmss}% Choose cmss as sans serif font.
+ \renewcommand{\ttdefault}{cmtt}% Typewriter font.
+}
+
+\newcommand{\setcmbrTextFonts@TPSF}
+{%
+ \renewcommand{\familydefault}{\sfdefault}% Main text font is sans serif.
+ \renewcommand{\sfdefault}{cmbr}% Choose cmss as sans serif font.
+ \renewcommand{\ttdefault}{cmtl}% Light Typewriter font.
+}
+
+\newcommand{\setccrTextFonts@TPSF}
+{%
+ \renewcommand{\familydefault}{\rmdefault}% Main text font is roman.
+ \renewcommand{\rmdefault}{ccr}% Choose ccr as roman font.
+ \renewcommand{\ttdefault}{cmtt}% Typewriter font.
+}
+
+\csname set\TPSFTextfont TextFonts@TPSF\endcsname
+% \end{macrocode}
+%
+% \subsubsection{Configure Math fonts}
+%
+% \begin{macrocode}
+\newcommand{\setcmmMathFonts@TPSF}
+{%
+ \SetSymbolFont{letters} {normal}{OML}{cmm} {m}{it}
+ \SetSymbolFont{symbols} {normal}{OMS}{cmsy}{m}{n}
+ \SetSymbolFont{largesymbols}{normal}{OMX}{cmex}{m}{n}
+ \SetSymbolFont{letters} {bold} {OML}{cmm} {b}{it}
+ \SetSymbolFont{symbols} {bold} {OMS}{cmsy}{b}{n}
+}
+
+\newcommand{\setccmMathFonts@TPSF}
+{%
+ \SetSymbolFont{letters} {normal}{OML}{ccm} {m}{it}
+ \SetSymbolFont{symbols} {normal}{OMS}{ccsy}{m}{n}
+ \SetSymbolFont{largesymbols}{normal}{OMX}{ccex}{m}{n}
+ \SetSymbolFont{letters} {bold} {OML}{ccm} {b}{it}
+ \SetSymbolFont{symbols} {bold} {OMS}{ccsy}{b}{n}
+}
+
+\newcommand{\seteulerMathFonts@TPSF}
+{%
+ \RequirePackage{eulervm}
+ \def\tpc@ncel##1##2{\m@th\ooalign{$\hfil##1/\hfil$\crcr$##1##2$}}
+ \def\neq{\mathrel{\m@th\mathpalette\tpc@ncel=}}
+ \DeclareSymbolFont{auxletters}{OML}{cmm}{m}{it}
+ \SetSymbolFont{auxletters}{bold}{OML}{cmm}{b}{it}
+ \DeclareMathSymbol{<}{\mathrel}{auxletters}{"3C}
+ \DeclareMathSymbol{>}{\mathrel}{auxletters}{"3E}
+}
+
+\newcommand{\setcmbrmMathFonts@TPSF}
+{%
+ \SetSymbolFont{letters} {normal}{OML}{cmbrm} {m}{it}
+ \SetSymbolFont{symbols} {normal}{OMS}{cmbrs}{m}{n}
+ \SetSymbolFont{largesymbols}{normal}{OMX}{cmex}{m}{n}
+ \SetSymbolFont{letters} {bold} {OML}{cmbrm} {b}{it}
+ \SetSymbolFont{symbols} {bold}{OMS}{cmbrs}{b}{n}
+}
+
+\csname set\TPSFMathfont MathFonts@TPSF\endcsname
+% \end{macrocode}
+%
+% \subsubsection{Configure Operator fonts}
+%
+% \begin{macrocode}
+\ifthenelse{\equal{\TPSFMathfont}{euler}}
+{%
+ \SetSymbolFont{operators}{normal}{\encodingdefault}{\TPSFOperatorfont}{m}{n}%
+ \SetSymbolFont{operators}{bold}{\encodingdefault}{\TPSFOperatorfont}{bx}{n}%
+}
+{%
+ \SetSymbolFont{operators}{normal}{OT1}{\TPSFOperatorfont}{m}{n}%
+ \SetSymbolFont{operators}{bold}{OT1}{\TPSFOperatorfont}{bx}{n}%
+}
+% \end{macrocode}
+%
+% \subsubsection{Alphabets for ``text inside math''}
+%
+% \begin{macrocode}
+\DeclareMathAlphabet {\mathbf}{\encodingdefault}{\TPSFOperatorfont}{bx}{n}
+\DeclareMathAlphabet {\mathsf}{\encodingdefault}{\sfdefault}{m}{n}
+\DeclareMathAlphabet {\mathit}{\encodingdefault}{\TPSFOperatorfont}{m}{it}
+\DeclareMathAlphabet {\mathtt}{\encodingdefault}{\ttdefault}{m}{n}
+\SetMathAlphabet\mathsf{bold}{\encodingdefault}{\sfdefault}{bx}{n}
+\SetMathAlphabet\mathit{bold}{\encodingdefault}{\TPSFOperatorfont}{bx}{it}
+\SetMathAlphabet{\mathtt}{bold}{\encodingdefault}{\ttdefault}{bx}{n}
+% \end{macrocode}
+%
+% |\oldstylenums| follow in style the math font setting.
+% \begin{macrocode}
+\def\oldstylenums#1{%
+ \begingroup
+ \spaceskip\fontdimen\tw@\font
+ \usefont{OML}{\TPSFMathfont}{\f@series}{it}%
+ \mathgroup\symletters #1%
+ \endgroup
+}
+% \end{macrocode}
+%
+% \subsubsection{Configure doublestroke fonts}
+%
+% \begin{macrocode}
+\@ifpackageloaded{dsfont}
+{%
+ \ifthenelse{\equal{\TPSFOperatorfont}{cmr}\or\equal{\TPSFOperatorfont}{cmrm}}
+ {%
+ \DeclareMathAlphabet{\mathds}{U}{dsrom}{m}{n}
+ }
+ {%
+ \DeclareMathAlphabet{\mathds}{U}{dsss}{m}{n}
+ }
+}{}%
+% \end{macrocode}
+%
+% \Finale
+\endinput