summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/texpower/tpslifonts
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/texpower/tpslifonts
Initial commit
Diffstat (limited to 'macros/latex/contrib/texpower/tpslifonts')
-rw-r--r--macros/latex/contrib/texpower/tpslifonts/00readme.txt90
-rw-r--r--macros/latex/contrib/texpower/tpslifonts/01install.txt79
-rw-r--r--macros/latex/contrib/texpower/tpslifonts/Makefile38
-rw-r--r--macros/latex/contrib/texpower/tpslifonts/slifontsexample.tex1600
-rw-r--r--macros/latex/contrib/texpower/tpslifonts/tpslifonts.dtx1621
-rw-r--r--macros/latex/contrib/texpower/tpslifonts/tpslifonts.ins64
6 files changed, 3492 insertions, 0 deletions
diff --git a/macros/latex/contrib/texpower/tpslifonts/00readme.txt b/macros/latex/contrib/texpower/tpslifonts/00readme.txt
new file mode 100644
index 0000000000..6d46258caa
--- /dev/null
+++ b/macros/latex/contrib/texpower/tpslifonts/00readme.txt
@@ -0,0 +1,90 @@
+======================================================================
+
+ Package tpslifonts
+ Configure presentation fonts
+
+ alpha version (v0.6)
+ This readme file last changed on July 27, 2004
+
+ Author: Stephan Lehmke <mailto:Stephan.Lehmke@cs.uni-dortmund.de>
+ Lehrstuhl Informatik I
+ Universität Dortmund
+ Dortmund, Germany
+
+======================================================================
+
+Contents:
+=========
+
+00readme.txt
+ This file.
+
+01install.txt
+ Installation instructions.
+
+Makefile
+ Builds documentation and unpacks dtx-file.
+ (Only useful on Unix-like systems.)
+
+tpslifonts.dtx
+ Documented TeX source for the tpslifonts package.
+
+tpslifonts.ins
+ Docstrip batchfile that generates the tpslifonts package.
+
+slifontsexample.tex
+ An documented example.
+
+Overview:
+=========
+
+Beamer and overhead presentations are often viewed under peculiar
+circumstances. Especially for presentations which are projected
+directly `out of the computer', low power of the beamer, low
+resolution and an abundance of colors can lead to severe readability
+problems.
+
+It is therefore of utmost importance to optimize font selection as
+much as possible towards readability.
+
+The package tpslifonts offers a couple of `harmonising' combinations
+of text and math fonts from the (distant) relatives of computer modern
+fonts, with a couple of extras for optimising readability.
+
+The package offers the following features:
+
+ 1) Text fonts from computer modern roman, computer modern sans serif,
+ SliTeX computer modern sans serif, computer modern bright, or
+ concrete roman.
+
+ 2) Support for OT1 and T1 font encoding.
+
+ 3) Math fonts from computer modern math, computer modern bright math,
+ or Euler fonts.
+
+ 4) Support of additional symbol fonts like AMS symbols or
+ doublestroke.
+
+ 5) All fonts configured for `smooth scaling' (like in the type1cm
+ package).
+
+ 6) Avoiding fonts not freely available in Type 1 format.
+
+ 7) Careful design size selection for optimum readability.
+
+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.
+
+tpslifonts is part of the TeXPower bundle, residing at
+
+http://texpower.sourceforge.net/
+
+but is completely independent and can be used without texpower without
+problems. The example document slifontsexample.tex can also be
+compiled without TeXPower installed.
+
diff --git a/macros/latex/contrib/texpower/tpslifonts/01install.txt b/macros/latex/contrib/texpower/tpslifonts/01install.txt
new file mode 100644
index 0000000000..733f860738
--- /dev/null
+++ b/macros/latex/contrib/texpower/tpslifonts/01install.txt
@@ -0,0 +1,79 @@
+======================================================================
+
+ Package tpslifonts
+ Configure presentation fonts
+
+ alpha version (v0.6)
+ Installation Instructions
+
+ This file last changed on July 27, 2004
+
+ Author: Stephan Lehmke <mailto:Stephan.Lehmke@cs.uni-dortmund.de>
+ Lehrstuhl Informatik I
+ Universität Dortmund
+ Dortmund, Germany
+
+======================================================================
+
+Installation of tpslifonts.sty:
+-------------------------------
+
+If you have installed the current TeXPower bundle, then tpslifonts has
+been installed as part of it, so there's nothing to do.
+
+If you want to install tpslifonts without TeXPower, do:
+
+1) Run "latex tpslifonts.ins" to generate
+ - tpslifonts.sty
+
+2) Produce the documentation by running
+ latex tpslifonts.dtx
+ makeindex -s gglo.ist -o tpslifonts.gls tpslifonts.glo
+ makeindex -s gind.ist -o tpslifonts.ind tpslifonts.idx
+ latex tpslifonts.dtx
+
+3) Move the file tpslifonts.sty to a place where latex can find it. On a
+ TDS-compliant system, a nice place would be
+
+ <path to a texmf tree>/tex/latex/texpower/tpslifonts/
+
+ Then, on systems using a filename database, don't forget to refresh
+ the database!
+
+On a Unix-like system 1) and 2) can be done easily using "make".
+
+Compiling the example document:
+-------------------------------
+
+After installing tpslifonts, you can compile the document
+
+ slifontsexample
+
+using pdflatex or latex, to see whether everything works as expected.
+
+If you get an error message, most likely you're missing a package used
+therein. Don't worry, if you don't want to install a new package, just
+open the file slifontsexample.tex and comment out the offending
+\usepackage command, the document will adapt by leaving out the
+corresponding parts.
+
+If you've not used pdflatex, please do whatever neccessary on your
+system to convert the document to pdf, then open in acrobat reader.
+
+Read the file slifontsexample.tex carefully; there are a lot
+of configuration alternatives to try out.
+
+If the document should look ugly on screen, most likely you're missing
+Type1 (PostScript outline) versions of some fonts used.
+
+Either you use a configuration alternative for which you possess the
+fonts, or you install the respective PostScript fonts.
+
+Some candidates which may not be present even in an up-to-date
+distributuion:
+
+cm-super CTAN:/fonts/ps-type1/cm-super/
+
+hfbright CTAN:/fonts/ps-type1/hfbright/
+
+doublestroke CTAN:/fonts/doublestroke/
diff --git a/macros/latex/contrib/texpower/tpslifonts/Makefile b/macros/latex/contrib/texpower/tpslifonts/Makefile
new file mode 100644
index 0000000000..625328b252
--- /dev/null
+++ b/macros/latex/contrib/texpower/tpslifonts/Makefile
@@ -0,0 +1,38 @@
+RM=rm -f
+SHELL=sh
+VERSION=0.1
+JUNKS=*.aux *.toc *.idx *.glo *.dvi *.log *.lof *.ist *.ilg *.ind *.gls *.out *.tmp *~
+
+help:
+ @echo '**********************************************'
+ @echo ' The following targets exist: '
+ @echo ' - all: All targets below '
+ @echo ' - unpack: Unpacks the tpslifonts package '
+ @echo ' - pack: Packs the package '
+ @echo ' - doc: Builds tpslifonts documentation '
+ @echo ' - clean: Remove all generate/junk files '
+ @echo '**********************************************'
+
+unpack:
+ latex tpslifonts.ins
+ @echo '**********************************************'
+ @echo ' To make tpslifonts package documentation '
+ @echo ' % make doc '
+ @echo '**********************************************'
+
+all: unpack doc
+
+doc: tpslifonts.dtx
+ latex tpslifonts.dtx
+ latex tpslifonts.dtx
+ makeindex -s gglo.ist -o tpslifonts.gls tpslifonts.glo
+ makeindex -s gind.ist -o tpslifonts.ind tpslifonts.idx
+ latex tpslifonts.dtx
+
+pack: clean
+ -(cd ..; cp -r tpslifonts tpslifonts-$(VERSION); \
+ tar cvfz tpslifonts-$(VERSION).tgz tpslifonts-$(VERSION))
+
+clean:
+ @$(RM) $(JUNKS) tpslifonts.sty
+ @echo The current directory has been cleaned up.
diff --git a/macros/latex/contrib/texpower/tpslifonts/slifontsexample.tex b/macros/latex/contrib/texpower/tpslifonts/slifontsexample.tex
new file mode 100644
index 0000000000..7b92148943
--- /dev/null
+++ b/macros/latex/contrib/texpower/tpslifonts/slifontsexample.tex
@@ -0,0 +1,1600 @@
+%-----------------------------------------------------------------------------------------------------------------
+% File: slifontsexample.tex
+%
+% Example for the package tpslifonts.sty.
+%
+% This file can be compiled with pdfLaTeX or (standard) LaTeX. When using standard LaTeX, the dvi file produced should
+% be converted to pdf afterwards (using dvips+distill/ps2pdf or dvipdf, for instance).
+%
+% The resulting pdf file is meant for presenting `interactively' with Adobe Acrobat Reader.
+%
+%-----------------------------------------------------------------------------------------------------------------
+% Author: Stephan Lehmke <Stephan.Lehmke@cs.uni-dortmund.de>
+%
+% v0.1 Nov 14, 2002: First version for the pre-alpha release of TeXPower.
+%
+% v0.2 Jan 07, 2003: Adapted to tpslifonts v0.4 (added support for cmbright).
+%
+% v0.3 Mar 28, 2003: Adapted to tpslifonts v0.5 (added support for T1 encoding).
+%
+% v0.4 May 28, 2003: Adapted to tpslifonts v0.6.
+%
+%-----------------------------------------------------------------------------------------------------------------
+% Please go to USER CONFIGURATION AREA below to find configuration options for experimenting with font settings.
+%-----------------------------------------------------------------------------------------------------------------
+
+\newif\ifTPaware
+\IfFileExists{texpower.sty}{\TPawaretrue}{\TPawarefalse}
+
+\ifTPaware
+\documentclass[letterpaper,landscape,KOMA,smallheadings,calcdimensions,display]{powersem}
+%-----------------------------------------------------------------------------------------------------------------
+% Set slide margins rather small for maximum use of space. This is a demo, remember.
+\renewcommand{\slidetopmargin}{5mm}
+\renewcommand{\slidebottommargin}{5mm}
+\renewcommand{\slideleftmargin}{5mm}
+\renewcommand{\sliderightmargin}{5mm}
+%-----------------------------------------------------------------------------------------------------------------
+% Some setup for more reasonable spacing.
+\makeatletter
+\renewcommand\section{\@startsection{section}{1}{\z@}%
+ {-1.5ex\@plus -1ex \@minus -.5ex}%
+ {.5ex \@plus .2ex}%
+ {\raggedsection\normalfont\size@section\sectfont}}
+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
+ {-1.25ex\@plus -1ex \@minus -.2ex}%
+ {.5ex \@plus .2ex}%
+ {\raggedsection\normalfont\size@subsection\sectfont}}
+\def\slideitemsep{.5ex plus .3ex minus .2ex}
+\makeatother
+%-----------------------------------------------------------------------------------------------------------------
+% We need some more packages...
+\usepackage{url}
+\usepackage[latin1]{inputenc}
+% One more Text emphasis command...
+\let\name=\textsc
+\else % NOT TPaware
+% Make a `poor man's presentation mode.
+\documentclass{article}
+\setlength{\paperwidth}{13cm}
+\setlength{\paperheight}{10cm}
+\usepackage[left=3mm,right=3mm,top=3mm,bottom=3mm]{geometry}
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{1ex plus .5ex minus .5ex}
+\linespread{1.3}
+\usepackage{url}
+\usepackage{calc}
+\raggedbottom
+\fi % END TPaware
+
+%=================================================================================================================
+% begin USER CONFIGURATION AREA.
+% In the following, you can configure this demo by changing settings made below (until the ``end USER CONFIGURATION
+% AREA mark).
+% Note in particular the part below labelled ``Configuration scenarios''.
+%=================================================================================================================
+
+%-----------------------------------------------------------------------------------------------------------------
+% Packages and Preamble settings individual for this example.
+
+% We use a lot of fonts for demonstration. You can comment out any of the following \usepackage calls to emulate your
+% own working environment. Note, however, that some of the examples will vanish then because of lacking commands.
+
+\usepackage{amssymb}
+\usepackage{latexsym}
+\usepackage{wasysym}
+\usepackage{stmaryrd}
+\usepackage{mathrsfs}
+\usepackage{dsfont}
+
+\usepackage[override]{cmtt}
+
+% Make nested braces grow.
+\delimitershortfall-1sp\relax
+
+% The following packages are needed only for the examples. If you're lacking any of them, just comment out the
+% \usepackage call. Note, however, that some of the examples will vanish then because of lacking commands.
+
+% Both amsmath and wasysym insist on defining \iint and \iiint.
+\makeatletter\let\iint\@undefined\let\iiint\@undefined\makeatother
+\usepackage[leqno]{amsmath}
+
+\usepackage{amscd}
+
+\usepackage{array}
+
+\IfFileExists{easymat.sty}{\usepackage{easymat}}
+
+%-----------------------------------------------------------------------------------------------------------------
+% TeXPower configuration.
+
+\PassOptionsToPackage{lightbackground,colorhighlight}{texpower}
+
+% Comment out to avoid coloring math formulae.
+\PassOptionsToPackage{colormath}{texpower}
+
+\usepackage{ifthen}[2001/05/26]
+
+%-----------------------------------------------------------------------------------------------------------------
+% Configuration scenarios
+
+% In the following, we give several `configuration scenarios' for presentation font selection with tpslifonts. Each
+% hopefully represents a nice and readable selection of tpslifonts options and parameters. For some scenarios, you might
+% need to have some Type1 fonts installed which are not part of every TeX distribution, otherwise bitmap versions will
+% be used which look `blurred' in acroread.
+% Of course taste varies, so after testing each scenario in turn and making yourself acquainted with the possibilities,
+% you might start experimenting further by removing some options or parameters from a scenario or by adding parameters
+% used in other scenarios.
+% For selecting a scenario, just uncomment its code lines. Remember to comment out all other scenarios, otherwise there
+% might be conflicts.
+
+% Configuration scenario 1:
+% Slifonts with cm italic math.
+% -----------------------------
+% This is a `standard' setting. The text fonts come from the lcmss family, Typewriter from cmtt and math from cmmi. Size
+% differences are remedied by using `scaleup' options. The `textops' option causes operator names and digits to be taken
+% from the text font lcmss. The `scale7pt' will hopefully make math look a little `bolder'.
+% Type 1 versions of all fonts used by this scenario (apart from certain math fonts like dsrom) should be part of every
+% moderately modern TeX distribution.
+
+% \PassOptionsToPackage{scaleupmath,scaleuptt,textops,scale7pt}{tpslifonts}
+
+% If you find the typewriter characters to be too `bold', try uncommenting the following line:
+
+% \def\TPSFttscale{1.13}
+
+
+% Configuration scenario 2:
+% Slifonts with euler math.
+% -------------------------
+% Combining lcmss with euler math might look strange at first, but the euler math fonts are definitely extremely well
+% readable on screen. The text fonts come from the lcmss family, Typewriter from cmtt and math from euler roman. Size
+% differences are remedied by using `scaleup' options.
+% Type 1 versions of all fonts used by this scenario (apart from certain math fonts like dsrom) should be part of every
+% moderately modern TeX distribution.
+
+% \PassOptionsToPackage{eulermath,scaleupmath,scaleuptt}{tpslifonts}
+
+% If you uncomment the following option, digits are also taken from Euler math.
+
+% \PassOptionsToPackage{eulerdigits}{tpslifonts}
+
+% If you find the typewriter characters to be too `bold', try uncommenting the following line:
+
+% \def\TPSFttscale{1.13}
+
+% Configuration scenario 3:
+% Slifonts with cmbright math.
+% ----------------------------
+% The cmbright family is the only existing source for a complete set of sans serif math fonts which fit the computer
+% modern grand family. Although being slightly different from cmss, it fits well with lcmss . The text fonts come from
+% the lcmss family, Typewriter from cmtt and math from cm bright. Size differences are remedied by using `scaleup'
+% options. The `textops' option causes operator names and digits to be taken from the text font lcmss.
+% Even with a modern TeX distribution, you might need to install Type1 versions of the cmbright fonts, for instance from
+% the ``hfbright'' bundle by Harald Harders.
+
+% \PassOptionsToPackage{cmbrightmath,scaleupmath,scaleuptt,textops}{tpslifonts}
+
+% If you find the typewriter characters to be too `bold', try uncommenting the following line:
+
+% \def\TPSFttscale{1.1}
+
+% Configuration scenario 4:
+% cmss fonts with cm italic math.
+% -------------------------------
+% The text fonts come from the cmss family, Typewriter from cmtt and math from cmmi. The `textops' option causes
+% operator names and digits to be taken from the text font cmss. The `scale7pt' option makes characters look a little
+% `bolder', enhancing readability.
+% Type 1 versions of all fonts used by this scenario (apart from certain math fonts like dsrom) should be part of every
+% moderately modern TeX distribution.
+
+% \PassOptionsToPackage{cmss,textops,scale7pt}{tpslifonts}
+
+% Configuration scenario 5:
+% cmss fonts with euler math.
+% ---------------------------
+% Combining cmss with euler math might look strange at first, but the euler math fonts are definitely extremely well
+% readable on screen. The text fonts come from the cmss family, Typewriter from cmtt and math from euler roman.
+% Type 1 versions of all fonts used by this scenario (apart from certain math fonts like dsrom) should be part of every
+% moderately modern TeX distribution.
+
+% \PassOptionsToPackage{cmss,eulermath}{tpslifonts}
+
+% If you uncomment the following option, digits are also taken from Euler math.
+
+% \PassOptionsToPackage{eulerdigits}{tpslifonts}
+
+% Configuration scenario 6:
+% cmss fonts with cmbright math.
+% ------------------------------
+% The cmbright family is the only existing source for a complete set of sans serif math fonts which fit the computer
+% modern grand family. Although being slightly different from cmss, it fits well with cmss. The text fonts come from
+% the cmss family, Typewriter from cmtt and math from cm bright. The `textops' option causes operator names and digits
+% to be taken from the text font cmss.
+% Even with a modern TeX distribution, you might need to install Type1 versions of the cmbright fonts, for instance from
+% the ``hfbright'' bundle by Harald Harders.
+
+% \PassOptionsToPackage{cmss,cmbrightmath,textops}{tpslifonts}
+
+% Configuration scenario 7:
+% cmr fonts.
+% -------------------------
+% In this case, all fonts are the TeX standard computer modern roman. The text fonts come from the cmr family,
+% Typewriter from cmtt and math from cmmi. The `scale7pt' option makes characters look a little `bolder', enhancing
+% readability.
+% Type 1 versions of all fonts used by this scenario (apart from certain math fonts like dsrom) should be part of every
+% moderately modern TeX distribution.
+
+\PassOptionsToPackage{cmr,scale7pt}{tpslifonts}
+
+% Configuration scenario 8:
+% cmbright fonts.
+% -------------------------
+% In this case, all fonts are taken from the cmbright family. The text fonts come from the cmbr family,
+% Typewriter from cmtl and math from cmbrm.
+% Even with a modern TeX distribution, you might need to install Type1 versions of the cmbright fonts, for instance from
+% the ``hfbright'' bundle by Harald Harders.
+
+% \PassOptionsToPackage{cmbright,cmbrightmath}{tpslifonts}
+
+% Configuration scenario 9:
+% concrete fonts with Euler math.
+% -------------------------------
+% In this case, text fonts are taken from the concrete family. The text fonts come from the ccr family,
+% Typewriter from cmtt and math from Euler.
+% Unfortunately, it seems there are no Type1 versions of OT1 encoded ccr fonts. Hence, to use this setup (at this
+% moment) it is neccessary to select T1 fontencoding (see below) and install some Type1 collection of ``ec'' fonts like
+% the cm-super fonts. Even then, there's no Type1 version of ccm math fonts, so for this scenario, (the matching) Euler
+% math fonts are selected.
+
+% \PassOptionsToPackage{concrete,eulermath}{tpslifonts}
+
+% With this scenario, T1 fontencoding is neccessary because (to the authors knowledge) there exists no OT1 encoded Type1
+% version of ccr.
+
+% \usepackage[T1]{fontenc}
+
+%-----------------------------------------------------------------------------------------------------------------
+% Other tpslifonts settings.
+
+% Use T1 font encoding. This will lead to using EC fonts instead of CM.
+
+\usepackage[T1]{fontenc}
+
+% tpslifonts allows to define independent scaling factors for different groups of fonts. Selecting one of the
+% scaleup... options will define a default value supposed to match ``SliTeX'' fonts, but you can set any scaling factor
+% by just defining (any of) the respective macros:
+
+% Typewriter fonts.
+
+% \def\TPSFttscale{1.1}
+
+% Math fonts related to cm math.
+
+% \def\TPSFmathscale{1.1}
+
+% Euler math fonts.
+
+% \def\TPSFeulerscale{1.05}
+
+% cmbright math fonts.
+
+% \def\TPSFcmbrscale{1.05}
+
+
+%=================================================================================================================
+% end USER CONFIGURATION AREA.
+%=================================================================================================================
+
+
+\RequirePackage{tpslifonts}
+
+\makeatletter
+\ifTPaware
+%-----------------------------------------------------------------------------------------------------------------
+% We load hyperref and fixseminar which fixes some problems with seminar.
+\usepackage[plainpages=false,bookmarksopen,colorlinks,urlcolor=red,pdfpagemode=FullScreen]{hyperref}
+\usepackage{fixseminar}
+%-----------------------------------------------------------------------------------------------------------------
+% Finally, the texpower package is loaded.
+\usepackage{texpower}
+%-----------------------------------------------------------------------------------------------------------------
+% Some more parameters...
+\slidesmag{5}
+\slideframe{none}
+\pagestyle{empty}
+\setcounter{tocdepth}{2}
+\renewcommand{\currentpagevalue}{\value{slide}}
+%-----------------------------------------------------------------------------------------------------------------
+% The following command produces a title page for every example and documentation file.
+\newcommand{\makeslidetitle}[1]
+{%
+ \title{The \TeX Power bundle\\[2ex]{\normalfont #1}}
+ \author
+ {%
+ Stephan Lehmke\\
+ \mdseries
+ University of Dortmund\\
+ \mdseries
+ Department of Computer Science I\\
+ \url{mailto:Stephan.Lehmke@udo.edu}%
+ }
+ {\centerslidestrue
+ \maketitle
+ \newslide}
+ \setcounter{firststep}{1}% This way, the first step of all examples is displayed.
+}
+\hypersetup{pdftitle={texpower tpslifonts example}}
+\slidesmag{4}
+\else % NOT TPaware
+% Load everything manually.
+\pagestyle{empty}
+\newcommand{\makeslidetitle}[1]
+{%
+ \begin{center}
+ {\leavevmode\Large\sffamily
+
+ \vspace*{\fill}
+
+ \textbf{The \TeX Power bundle\\{\normalfont #1}}
+ \par}
+
+ \vspace*{\fill}
+
+ Stephan Lehmke\\
+ University of Dortmund\\
+ Department of Computer Science I\\
+ \url{mailto:Stephan.Lehmke@udo.edu}%
+
+ \vspace*{\fill}
+ \today
+
+ \vspace*{\fill}
+
+ \vspace*{\fill}
+ \end{center}
+ \newpage
+}
+
+\renewcommand\section{\@startsection{section}{1}{\z@}%
+ {-1.5ex\@plus -1ex \@minus -.5ex}%
+ {.5ex \@plus .2ex}%
+ {\normalfont\large\sffamily\bfseries}}
+
+\let\code\texttt
+\let\concept\textbf
+\let\underl\textbf
+\let\name\textsc
+\newcommand{\macroname}[1]{\code{\textbackslash##1}}
+
+\newenvironment{slide}{\raggedright}{}
+
+\newenvironment{presentbox}{\par\begin{minipage}[t]{\linewidth}}{\end{minipage}\par}
+
+\let\present=\fbox
+\fi % END TPaware
+
+\newboolean{TPSFamsfonts}
+\@ifpackageloaded{amsfonts}{\setboolean{TPSFamsfonts}{true}}{}
+\newboolean{TPSFlasy}
+\@ifpackageloaded{latexsym}{\setboolean{TPSFlasy}{true}}{}
+\newboolean{TPSFwasysym}
+\@ifpackageloaded{wasysym}{\setboolean{TPSFwasysym}{true}}{}
+\newboolean{TPSFstmaryrd}
+\@ifpackageloaded{stmaryrd}{\setboolean{TPSFstmaryrd}{true}}{}
+\newboolean{TPSFrsfs}
+\@ifpackageloaded{mathrsfs}{\setboolean{TPSFrsfs}{true}}{}
+\newboolean{TPSFdstroke}
+\@ifpackageloaded{dsfont}{\setboolean{TPSFdstroke}{true}}{}
+\makeatother
+
+
+%-----------------------------------------------------------------------------------------------------------------
+% Finally, everything is set up. Here we go...
+%
+\begin{document}
+\begin{slide}
+%
+%-----------------------------------------------------------------------------------------------------------------
+%
+% Body of slifonts example.
+%
+
+\newcommand{\textbfsl}[1]{\textbf{\textsl{#1}}}
+\newcommand{\textbfit}[1]{\textbf{\textit{#1}}}
+\newcommand{\textbfsc}[1]{\textbf{\textsc{#1}}}
+\newcommand{\textcsl}[1]{\textc{\textsl{#1}}}
+\newcommand{\textsbsl}[1]{\textsb{\textsl{#1}}}
+\newcommand{\textsbc}[1]{{\fontseries{sbc}\selectfont#1}}
+\newcommand{\textb}[1]{{\fontseries{b}\selectfont#1}}
+\newcommand{\textsb}[1]{{\fontseries{sb}\selectfont#1}}
+\newcommand{\textc}[1]{{\fontseries{c}\selectfont#1}}
+\newcommand{\textui}[1]{{\fontshape{ui}\selectfont#1}}
+\newcommand{\textff}[1]{{\fontfamily{cmfr}\selectfont#1}}
+\newcommand{\textffi}[1]{{\fontfamily{cmfr}\textit{#1}}}
+\newcommand{\textdh}[1]{{\fontfamily{cmdh}\selectfont#1}}
+\newcommand{\textfib}[1]{{\fontfamily{cmfib}\selectfont#1}}
+\newcommand{\textfibsl}[1]{{\fontfamily{cmfib}\selectfont\textsl{#1}}}
+
+\makeatletter
+\@namedef{TextFontNamelcmssOT1}{SliTeX Sans Serif (\code{lcmss})}
+
+\@namedef{TextFontNameShortlcmssOT1}{\code{lcmss}}
+
+\@namedef{TextItFontNamelcmssOT1}{SliTeX Sans-Serif Slanted (\code{lcmssi})}
+
+\@namedef{TextFontslcmssOT1}%
+{%
+ {SliTeX Sans Serif (\code{lcmss})}\textnormal,%
+ {SliTeX Sans-Serif Slanted (\code{lcmssi})}\textsl,%
+ {SliTeX Sans-Serif bold (\code{lcmssb})}\textbf%
+}
+
+\@namedef{TextFontNamelcmssT1}{European Computer Modern Sans Serif Quotation (\code{eclq})}
+
+\@namedef{TextFontNameShortlcmssT1}{\code{eclq}}
+
+\@namedef{TextItFontNamelcmssT1}{European Computer Modern Sans Serif Quotation Inclined (\code{ecli})}
+
+\@namedef{TextFontslcmssT1}%
+{%
+ {European Computer Modern Sans Serif Quotation (\code{eclq})}\textnormal,%
+ {European Computer Modern Sans Serif Quotation Inclined (\code{ecli})}\textsl,%
+ {European Computer Modern Sans Serif Quotation Bold (\code{eclb})}\textbf,%
+ {European Computer Modern Sans Serif Quotation Bold Oblique (\code{eclo})}\textbfsl%
+}
+
+\@namedef{TextFontNamecmrOT1}{Computer Modern Roman (\code{cmr})}
+\expandafter\let\csname TextFontNamecmrmOT1\expandafter\endcsname\csname TextFontNamecmrOT1\endcsname
+
+\@namedef{TextFontNameShortcmrOT1}{\code{cmr}}
+\expandafter\let\csname TextFontNameShortcmrmOT1\expandafter\endcsname\csname TextFontNameShortcmrOT1\endcsname
+
+\@namedef{TextItFontNamecmrOT1}{Computer Modern Text Italic (\code{cmti})}
+
+\@namedef{TextFontscmrOT1}%
+{%
+ {Computer Modern Roman (\code{cmr})}\textnormal,%
+ {Computer Modern Slanted Roman (\code{cmsl})}\textsl,%
+ {Computer Modern Text Italic (\code{cmti})}\textit,%
+ {Computer Modern Roman Caps and Small Caps (\code{cmcsc})}\textsc,%
+ {Computer Modern Unslanted Italic (\code{cmu})}\textui,%
+ {Computer Modern Bold Roman (\code{cmb})}\textb,%
+ {Computer Modern Bold Extended Roman (\code{cmbx})}\textbf,%
+ {Computer Modern Bold Extended Slanted Roman (\code{cmbxsl})}\textbfsl,%
+ {Computer Modern Bold Extended Text Italic (\code{cmbxti})}\textbfit,%
+ {Computer Modern Funny Roman (\code{cmff})}\textff,%
+ {Computer Modern Funny Italic (\code{cmfi})}\textffi,%
+ {Computer Modern Dunhill Roman (\code{cmdunh})}\textdh,%
+ {Computer Modern Roman Fibonacci Font (\code{cmfib})}\textfib%
+}
+
+\@namedef{TextFontNamecmrT1}{European Computer Modern Roman Medium (\code{ecrm})}
+\expandafter\let\csname TextFontNamecmrmT1\expandafter\endcsname\csname TextFontNamecmrT1\endcsname
+
+\@namedef{TextFontNameShortcmrT1}{\code{ecrm}}
+\expandafter\let\csname TextFontNameShortcmrmT1\expandafter\endcsname\csname TextFontNameShortcmrT1\endcsname
+
+\@namedef{TextItFontNamecmrT1}{European Computer Modern Text Italic (\code{ecti})}
+
+\@namedef{TextFontscmrT1}%
+{%
+ {European Computer Modern Roman Medium (\code{ecrm})}\textnormal,%
+ {European Computer Modern Roman Slanted (\code{ecsl})}\textsl,%
+ {European Computer Modern Text Italic (\code{ecti})}\textit,%
+ {European Computer Modern Caps and Small Caps (\code{eccc})}\textsc,%
+ {European Computer Modern Bold Extend Roman (\code{ecbx})}\textbf,%
+ {European Computer Modern Roman Bold (Non-Extended) (\code{ecrb})}\textb,%
+ {European Computer Modern Bold Extended Text Italic (\code{ecbi})}\textbfit,%
+ {European Computer Modern Bold Extended Slanted Roman (\code{ecbl})}\textbfsl,%
+ {European Computer Modern Bold Extended Caps and Small Caps (\code{ecxc})}\textbfsc,%
+ {European Computer Modern Unslanted Italic (\code{ecui})}\textui,%
+% {European Computer Modern Funny Roman (\code{ecff})}\textff,% unable to make tfm ?!?
+% {European Computer Modern Funny Italic (\code{ecfi})}\textffi,%
+ {European Computer Modern Dunhill Roman (\code{ecdh})}\textdh,%
+ {European Computer Modern Fibonacci Font (\code{ecfb})}\textfib,%
+ {European Computer Modern Fibonacci Slanted Font (\code{ecfs})}\textfibsl%
+}
+
+\@namedef{TextFontNamecmssOT1}{Computer Modern Sans Serif (\code{cmss})}
+
+\@namedef{TextFontNameShortcmssOT1}{\code{cmss}}
+
+\@namedef{TextItFontNamecmssOT1}{Computer Modern Slanted Sans Serif (\code{cmssi})}
+
+\@namedef{TextFontscmssOT1}%
+{%
+ {Computer Modern Sans Serif (\code{cmss})}\textnormal,%
+ {Computer Modern Slanted Sans Serif (\code{cmssi})}\textsl,%
+ {Computer Modern Sans Serif Demibold Condensed (\code{cmssdc})}\textsbc,%
+ {Computer Modern Sans Serif Bold Extended (\code{cmssbx})}\textbf%
+}
+
+\@namedef{TextFontNamecmssT1}{European Computer Modern Sans Serif (\code{ecss})}
+
+\@namedef{TextFontNameShortcmssT1}{\code{ecss}}
+
+\@namedef{TextItFontNamecmssT1}{European Computer Modern Sans Serif Inclined (\code{ecsi})}
+
+\@namedef{TextFontscmssT1}%
+{%
+ {European Computer Modern Sans Serif (\code{ecss})}\textnormal,%
+ {European Computer Modern Sans Serif Inclined (\code{ecsi})}\textsl,%
+ {European Computer Modern Sans Serif Bold Extended (\code{ecsx})}\textbf,%
+ {European Computer Modern Sans Serif Bold Extended Oblique (\code{ecso})}\textbfsl,%
+ {European Computer Modern Sans Serif Demi Condensed (\code{ecssdc})}\textsbc%
+}
+
+\@namedef{TextFontNamecmbrOT1}{Computer Modern Bright (\code{cmbr})}
+\expandafter\let\csname TextFontNamecmbrmtOT1\expandafter\endcsname\csname TextFontNamecmbrOT1\endcsname
+
+\@namedef{TextFontNameShortcmbrOT1}{\code{cmbr}}
+\expandafter\let\csname TextFontNameShortcmbrmtOT1\expandafter\endcsname\csname TextFontNameShortcmbrOT1\endcsname
+
+\@namedef{TextItFontNamecmbrOT1}{Computer Modern Bright Slanted (\code{cmbrsl})}
+
+\@namedef{TextFontscmbrOT1}%
+{%
+ {Computer Modern Bright (\code{cmbr})}\textnormal,%
+ {Computer Modern Bright Slanted (\code{cmbrsl})}\textsl,%
+ {Computer Modern Bright Bold Extended (\code{cmbrbx})}\textbf%
+}
+
+\@namedef{TextFontNamecmbrT1}{European Computer Modern Bright medium regular (\code{ebmr})}
+\expandafter\let\csname TextFontNamecmbrmtT1\expandafter\endcsname\csname TextFontNamecmbrT1\endcsname
+
+\@namedef{TextFontNameShortcmbrT1}{\code{ebmr}}
+\expandafter\let\csname TextFontNameShortcmbrmtT1\expandafter\endcsname\csname TextFontNameShortcmbrT1\endcsname
+
+\@namedef{TextItFontNamecmbrT1}{European Computer Modern Bright medium oblique (\code{ebmo})}
+
+\@namedef{TextFontscmbrT1}%
+{%
+ {European Computer Modern Bright medium regular (\code{ebmr})}\textnormal,%
+ {European Computer Modern Bright medium oblique (\code{ebmo})}\textsl,%
+ {European Computer Modern Bright semibold regular (\code{ebsr})}\textsb,%
+ {European Computer Modern Bright semibold oblique (\code{ebso})}\textsbsl%
+}
+
+\@namedef{TextFontNameccrOT1}{Concrete Roman (\code{ccr})}
+
+\@namedef{TextFontNameShortccrOT1}{\code{ccr}}
+
+\@namedef{TextItFontNameccrOT1}{Concrete Text Italic (\code{ccti})}
+
+\@namedef{TextFontsccrOT1}%
+{%
+ {Concrete Roman (\code{ccr})}\textnormal,%
+ {Concrete Slanted Roman (\code{ccsl})}\textsl,%
+ {Concrete Text Italic (\code{ccti})}\textit,%
+ {Concrete Roman Caps and Small Caps (\code{cccsc})}\textsc,%
+ {Concrete Slanted Condensed Roman (\code{ccslc})}\textcsl,%
+ {Computer Modern Sans Serif Bold Extended (\code{cmssbx}) as a replacement for `bold' ccr}\textbf%
+}
+
+\@namedef{TextFontNameccrT1}{European Concrete Roman (\code{eorm})}
+
+\@namedef{TextFontNameShortccrT1}{\code{eorm}}
+
+\@namedef{TextItFontNameccrT1}{European Computer Concrete Text Italic (\code{eoti})}
+
+\@namedef{TextFontsccrT1}%
+{%
+ {European Concrete Roman (\code{eorm})}\textnormal,%
+ {European Computer Concrete Slanted (\code{eosl})}\textsl,%
+ {European Computer Concrete Text Italic (\code{eoti})}\textit,%
+ {European Concrete Roman Caps and Small Caps (\code{eocc})}\textsc,%
+ {European Computer Modern Sans Serif Bold Extended (\code{ecsx}) as a replacement for `bold' ccr}\textbf,%
+ {European Computer Modern Sans Serif Bold Extended Oblique (\code{ecso}) as a replacement for `bold slanted' ccr}%
+ \textbfsl%
+}
+
+\@namedef{TTFontNamelcmssOT1}{Computer Modern Typewriter Text (\code{cmtt})}
+
+\@namedef{TTItFontNamelcmssOT1}{Computer Modern Italic Typewriter Text (\code{cmitt})}
+
+\@namedef{TTFontslcmssOT1}%
+{%
+ {Computer Modern Typewriter Text (\code{cmtt})}\textnormal,%
+ {Computer Modern Italic Typewriter Text (\code{cmitt})}\textit,%
+ {Computer Modern Slanted Typewriter Text (\code{cmsltt})}\textsl,%
+ {Computer Modern Typewriter Caps and Small Caps (\code{cmtcsc})}\textsc%
+}
+
+\@namedef{TTFontNamelcmssT1}{European Computer Modern LaTeX Typewriter (\code{ecltt})}
+
+\@namedef{TTItFontNamelcmssT1}{European Computer Modern Italic Typewriter Text (\code{ecit})}
+
+\@namedef{TTFontslcmssT1}%
+{%
+ {European Computer Modern LaTeX Typewriter (\code{ecltt})}\textnormal,%
+ {European Computer Modern Italic Typewriter Text (\code{ecit})}\textit,%
+ {European Computer Modern Slanted Typewriter Text (\code{ecst})}\textsl,%
+ {European Computer Modern Typewritr Caps and Small Caps (\code{ectc})}\textsc%
+}
+
+\@namedef{TTFontNamecmrOT1}{Computer Modern Typewriter Text (\code{cmtt})}
+
+\@namedef{TTItFontNamecmrOT1}{Computer Modern Italic Typewriter Text (\code{cmitt})}
+
+\@namedef{TTFontscmrOT1}%
+{%
+ {Computer Modern Typewriter Text (\code{cmtt})}\textnormal,%
+ {Computer Modern Italic Typewriter Text (\code{cmitt})}\textit,%
+ {Computer Modern Slanted Typewriter Text (\code{cmsltt})}\textsl,%
+ {Computer Modern Typewriter Caps and Small Caps (\code{cmtcsc})}\textsc%
+}
+
+\@namedef{TTFontNamecmrT1}{European Computer Modern Typewriter (\code{ectt})}
+
+\@namedef{TTItFontNamecmrT1}{European Computer Modern Italic Typewriter Text (\code{ecit})}
+
+\@namedef{TTFontscmrT1}%
+{%
+ {European Computer Modern Typewriter (\code{ectt})}\textnormal,%
+ {European Computer Modern Italic Typewriter Text (\code{ecit})}\textit,%
+ {European Computer Modern Slanted Typewriter Text (\code{ecst})}\textsl,%
+ {European Computer Modern Typewritr Caps and Small Caps (\code{ectc})}\textsc%
+}
+
+\expandafter\let\csname TTFontscmssOT1\expandafter\endcsname\csname TTFontscmrOT1\endcsname
+
+\expandafter\let\csname TTFontscmssT1\expandafter\endcsname\csname TTFontscmrT1\endcsname
+
+\expandafter\let\csname TTFontNamecmssOT1\expandafter\endcsname\csname TTFontNamecmrOT1\endcsname
+
+\expandafter\let\csname TTFontNamecmssT1\expandafter\endcsname\csname TTFontNamecmrT1\endcsname
+
+\expandafter\let\csname TTItFontNamecmssOT1\expandafter\endcsname\csname TTItFontNamecmrOT1\endcsname
+
+\expandafter\let\csname TTItFontNamecmssT1\expandafter\endcsname\csname TTItFontNamecmrT1\endcsname
+
+\@namedef{TTFontNamecmbrOT1}{CM Typewriter Light (\code{cmtl})}
+
+\@namedef{TTItFontNamecmbrOT1}{CM Typewriter Light Slanted (\code{cmsltl})}
+
+\@namedef{TTFontscmbrOT1}%
+{%
+ {CM Typewriter Light (\code{cmtl})}\textnormal,%
+ {CM Typewriter Light Slanted (\code{cmsltl})}\textsl%
+}
+
+\@namedef{TTFontNamecmbrT1}{EC Typewriter Light (\code{ebtl})}
+
+\@namedef{TTItFontNamecmbrT1}{EC Typewriter Light oblique (\code{ebto})}
+
+\@namedef{TTFontscmbrT1}%
+{%
+ {EC Typewriter Light (\code{ebtl})}\textnormal,%
+ {EC Typewriter Light oblique (\code{ebto})}\textsl%
+}
+
+\expandafter\let\csname TTFontsccrOT1\expandafter\endcsname\csname TTFontscmrOT1\endcsname
+
+\expandafter\let\csname TTFontsccrT1\expandafter\endcsname\csname TTFontscmrT1\endcsname
+
+\expandafter\let\csname TTFontNameccrOT1\expandafter\endcsname\csname TTFontNamecmrOT1\endcsname
+
+\expandafter\let\csname TTFontNameccrT1\expandafter\endcsname\csname TTFontNamecmrT1\endcsname
+
+\expandafter\let\csname TTItFontNameccrOT1\expandafter\endcsname\csname TTItFontNamecmrOT1\endcsname
+
+\expandafter\let\csname TTItFontNameccrT1\expandafter\endcsname\csname TTItFontNamecmrT1\endcsname
+
+\@namedef{MathFontNamecmm}{Computer Modern Math}
+
+\@namedef{MathFontNameccm}{Concrete Math}
+
+\@namedef{MathFontNameeuler}{Euler}
+
+\@namedef{MathFontNamecmbrm}{Computer Modern Bright Math}
+
+\@namedef{MathLetterFontNamecmm}{Computer Modern Math Italic (\code{cmmi})}
+
+\@namedef{MathLetterFontNameccm}{Concrete Math Italic (\code{xccmi})}
+
+\@namedef{MathLetterFontNameeuler}{Euler Roman Medium (\code{eurm})}
+
+\@namedef{MathLetterFontNamecmbrm}{Computer Modern Bright Math Slanted (\code{cmbrmi})}
+
+\@namedef{MathSymbolFontNamecmm}{Computer Modern Math Symbols (\code{cmsy})}
+
+\@namedef{MathSymbolFontNameccm}{Concrete Math Symbols (\code{xccsy})}
+
+\@namedef{MathSymbolFontNameeuler}{Euler Script Medium (\code{eusm})}
+
+\@namedef{MathSymbolFontNamecmbrm}{Computer Modern Bright Math Symbols (\code{cmbrmi})}
+
+\@namedef{MathExtensionFontNamecmm}{Computer Modern Math Extension (\code{cmex})}
+
+\@namedef{MathExtensionFontNameccm}{Concrete Math Extension (\code{xccex})}
+
+\@namedef{MathExtensionFontNameeuler}{Euler Extension (\code{euex})}
+
+\expandafter\let\csname MathExtensionFontNamecmbrm\expandafter\endcsname\csname MathExtensionFontNamecmm\endcsname
+
+\newcommand{\listdescriptions}[1]
+{%
+ \expandafter\expandafter\expandafter\@listdescriptions\expandafter\expandafter\expandafter
+ {\csname#1\endcsname}%
+}
+
+\newcommand{\@listdescriptions}[1]{\@for\temp := #1 \do {\expandafter\mkdescription\temp}}
+
+\newcommand{\mkdescription}[2]{}
+
+\newcommand{\TextFontName}{\@nameuse{TextFontName\TPSFTextfont\encodingdefault}}
+
+\newcommand{\TextFontNameShort}{\@nameuse{TextFontNameShort\TPSFTextfont\encodingdefault}}
+
+\let\nameuse\@nameuse
+\makeatother
+
+%-----------------------------------------------------------------------------------------------------------------
+%
+\makeslidetitle{\TeX Power Example: Package \code{tpslifonts}}\label{Sec:tpslifonts}
+
+This is the demonstration document for \code{tpslifonts}, \TeX Power's slide fonts configuration package.
+
+Beamer and overhead presentations are often viewed under peculiar circumstances. Especially for presentations which are
+projected directly `out of the computer', low power of the beamer, low resolution and an abundance of colors can lead to
+severe readability problems.
+
+It is therefore of utmost importance to optimize font selection as much as possible towards \emph{readability}.
+
+The package \code{tpslifonts} offers a couple of `harmonising' combinations of text and math fonts from the (distant)
+relatives of \concept{computer modern} fonts, with a couple of extras for optimising readability.
+
+\newpage
+
+The package offers the following features:
+\begin{enumerate}
+\item Text fonts from \concept{computer modern roman}, \concept{computer modern sans serif}, \concept{Sli\TeX{} computer
+ modern sans serif}, \concept{computer modern bright}, or \concept{concrete roman}.
+\item Math fonts from \concept{computer modern math}, \concept{computer modern bright math}, or \concept{Euler fonts}.
+\item Support of additional symbol fonts like \concept{AMS symbols} or \concept{doublestroke}.
+\item All fonts configured for `smooth scaling' (like in the \code{type1cm} package).
+\item Avoiding fonts not freely available in \concept{Type 1} format.
+\item Careful \concept{design size} selection for optimum readability.
+\end{enumerate}
+
+\newpage
+
+In the following, the fonts configured by this package are listed, augmented by font samples and some larger examples
+which hopefully allow to review the configuration parameters.
+
+Note that there are a couple of options and parameter settings in the preamble of \code{slifontsexample.tex} which allow
+to try different configuration variants.
+
+This document has been typeset using \encodingdefault{} font encoding.
+
+\section{Text Fonts}
+
+Package \code{tpslifonts} has configured the following \concept{text fonts}:
+
+\renewcommand{\mkdescription}[2]
+{%
+
+ \medskip\pagebreak[3]
+
+ \hrule
+
+ #1:\\ #2{The quick brown fox jumps over the lazy dog.}
+
+}%
+\listdescriptions{TextFonts\TPSFTextfont\encodingdefault}
+
+\medskip
+
+\hrule
+
+\medskip
+
+\section{Typewriter Fonts}
+
+\ifthenelse{\isundefined{\TPSFttscale}}{}
+{%
+ \ifthenelse{\equal{\TPSFTextfont}{lcmss}}
+ {For harmonising better with \ifthenelse{\equal{\encodingdefault}{OT1}}{\code{lcmss}}{\code{eclq}}, t}
+ {T}%
+ ypewriter fonts are scaled up by a factor of $\TPSFttscale$.
+}%
+
+Package \code{tpslifonts} has configured the following \concept{typewriter fonts}:
+
+\renewcommand{\mkdescription}[2]
+{%
+
+ \medskip\pagebreak[3]
+
+ \hrule
+
+ #1:\\ #2{\texttt{The quick brown fox jumps over the lazy dog.}}
+
+}%
+\listdescriptions{TTFonts\TPSFTextfont\encodingdefault}
+
+\medskip
+
+\hrule
+
+\medskip
+
+\section{Math Fonts}
+
+\ifthenelse{\equal{\TPSFMathfont}{euler}}
+{%
+ The main math fonts are derived from the \concept{\MathFontNameeuler} fonts. Operators%
+ \ifthenelse{\boolean{TPSFeulerdigits}}{}{ and digits} are taken from \TextFontName.
+}%
+{%
+ The main math fonts are derived from the \concept{\nameuse{MathFontName\TPSFMathfont}} fonts.
+ \ifthenelse{\boolean{TPSFtextops}}%
+ {Operators, digits, and upper case greek letters are taken from \TextFontName.}
+ {}%
+}
+
+\ifthenelse{\isundefined{\TPSFmathscale}}{}
+{%
+ \ifthenelse{\equal{\TPSFTextfont}{lcmss}}
+ {For harmonising better with \ifthenelse{\equal{\encodingdefault}{OT1}}{\code{lcmss}}{\code{eclq}}, m}
+ {M}%
+ ath fonts are scaled up by a factor of $\TPSFmathscale$. %
+ \ifthenelse{\equal{\TPSFMathfont}{euler}} {Euler fonts are scaled up by a factor of $\TPSFeulerscale$. }
+ {}%
+ \ifthenelse{\equal{\TPSFMathfont}{cmbrm}}
+ {The cmbright math fonts are scaled up by a factor of $\TPSFcmbrscale$. }
+ {}%
+}%
+
+\medskip\pagebreak[3]
+
+\hrule\nopagebreak
+
+\ifthenelse{\equal{\TPSFMathfont}{euler}}
+{%
+ Operators\ifthenelse{\boolean{TPSFeulerdigits}}{}{ and digits} are taken from \TextFontName:\\
+ $\min \max \sup \lim \ifthenelse{\boolean{TPSFeulerdigits}}{}{1 2 3 4 5}$
+
+ \medskip
+
+ \hrule
+
+ Latin and greek letters\ifthenelse{\boolean{TPSFeulerdigits}}{, digits,}{} and some symbols are taken from (virtual)
+ Euler Roman (\code{zeur}):\\
+ $abcd ABCD>/<\alpha \beta \gamma \delta\Phi \Pi \Gamma \Theta\ifthenelse{\boolean{TPSFeulerdigits}}{1 2 3 4 5}{}$
+
+ \medskip
+
+ \begin{samepage}
+ \hrule\nopagebreak
+
+ Symbols and calligraphic letters are taken from (virtual) Euler Script (\code{zeus}):\\
+ $ \mathcal{ABC} -*+ = \div\equiv \leq \forall \cap \cup \nabla \neq$
+ \par
+ \end{samepage}
+
+ \medskip
+
+ \hrule
+
+ \parbox{\linewidth-\widthof{$\displaystyle\left(\sum^{\left\{\bigcup\limits^\bigoplus\right\}}_{\left[\prod\limits_\biguplus\right]}\right)$}-1ex}
+ {%
+ Large and growing symbols are taken from (virtual) Euler Extension (\code{zeuex}).
+ }\hfill
+ $\displaystyle\left(\sum^{\left\{\bigcup\limits^\bigoplus\right\}}_{\left[\prod\limits_\biguplus\right]}\right)$
+}
+{%
+ Operators, digits, some symbols and upper case greek letters are taken from
+ \nameuse{TextFontName\TPSFOperatorfont OT1}%
+ :\\
+ $\min \max \sup \lim 1 2 3 4 5 + = \Phi \Pi \Gamma \Theta$
+
+ \medskip
+
+ \hrule
+
+ Latin and lower case greek letters and some symbols are taken from \nameuse{MathLetterFontName\TPSFMathfont}%
+ :\\
+ $abcd ABCD >/< \alpha \beta \gamma \delta$
+
+ \medskip
+
+\begin{samepage}
+ \hrule\nopagebreak
+
+ Symbols and calligraphic letters are taken from \nameuse{MathSymbolFontName\TPSFMathfont}%
+ :\\
+ $\mathcal{ABC} -*\div\equiv \leq \forall \cap \cup \nabla \neq$
+ \par
+\end{samepage}
+
+\medskip
+
+\begin{samepage}
+ \hrule\nopagebreak
+
+\parbox{\linewidth-\widthof{$\displaystyle\left(\sum^{\left\{\bigcup\limits^\bigoplus\right\}}_{\left[\prod\limits_\biguplus\right]}\right)$}-1ex}
+{%
+ Large and growing symbols are taken from \nameuse{MathExtensionFontName\TPSFMathfont}.
+}\hfill
+$\displaystyle\left(\sum^{\left\{\bigcup\limits^\bigoplus\right\}}_{\left[\prod\limits_\biguplus\right]}\right)$
+\par
+\end{samepage}
+}
+
+\medskip
+
+\ifthenelse{\boolean{TPSFamsfonts}}
+{%
+ \begin{samepage}
+ \hrule\nopagebreak
+
+ \ifthenelse{\equal{\TPSFMathfont}{cmbrm}}
+ {%
+ Fraktur letters are taken from Euler Fraktur (\code{eufm}):\\
+ $\mathfrak{abcdABCD}$
+ \par
+ \end{samepage}
+
+ \medskip
+
+ \begin{samepage}
+ \hrule\nopagebreak
+
+ Blackboard bold letters and a lot of additional math symbols are taken from the cmbright AMS math fonts
+ (\code{cmbras}, \code{cmbrbs}):\\
+ $\mathbb{NZQR} \Cap \boxtimes \succapprox \subseteqq \nsubseteq \curvearrowright \complement \varnothing$
+ }
+ {%
+ Fraktur letters, blackboard bold letters, and a lot of additional math symbols are taken from the AMS math fonts
+ (\code{msam}, \code{msbm}, \code{eufm}):\\
+ $\mathfrak{abcdABCD}\mathbb{NZQR} \Cap \boxtimes \succapprox \subseteqq \nsubseteq \curvearrowright \complement
+ \varnothing$
+ }
+ \par
+ \end{samepage}
+
+ \medskip
+}%
+{}
+
+\ifthenelse{\boolean{TPSFlasy}\and\not\boolean{TPSFwasysym}}
+{%
+ \begin{samepage}
+ \hrule\nopagebreak
+
+ A couple of additional math symbols are taken from the \LaTeX{} symbol font (\code{lasy}):\\
+ $\mho\Join\Box\leadsto\Diamond\sqsubset\sqsupset$
+ \par
+ \end{samepage}
+
+ \medskip
+}%
+{}
+
+\ifthenelse{\boolean{TPSFstmaryrd}}
+{%
+ \begin{samepage}
+ \hrule\nopagebreak
+
+ Additional math symbols are taken from St Mary's Road symbol font (\code{stmary}):\\
+ $\boxast \merge \nplus \varolessthan \subsetpluseq \lightning$
+ \par
+ \end{samepage}
+
+ \medskip
+}%
+{}
+
+\ifthenelse{\boolean{TPSFwasysym}}
+{%
+ \begin{samepage}
+ \hrule\nopagebreak
+
+ Additional symbols are taken from Waldis symbol font (\code{wasy}):\\
+ $\oiint$\space \permil\space \phone\space \diameter\space \smiley\space \venus\space \mars
+ \par
+ \end{samepage}
+
+ \medskip
+}%
+{}
+
+\ifthenelse{\boolean{TPSFrsfs}}
+{%
+ \begin{samepage}
+ \hrule\nopagebreak
+
+ Upper case script letters are taken from Ralph Smith Formal Script (\code{rsfs}):\\
+ $\mathscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
+ \par
+ \end{samepage}
+
+ \medskip
+}%
+{}
+
+\ifthenelse{\boolean{TPSFdstroke}}
+{%
+ \begin{samepage}
+ \hrule\nopagebreak
+
+ Double stroke letters are taken from Doublestroke Font
+ (\ifthenelse{\equal{\TPSFOperatorfont}{cmr}}{\code{dsrom}}{\code{dsss}}):\\
+ $\mathds{ABCDEFGHIJKLMNOPQRSTUVWXYZ1hk}$
+ \par
+ \end{samepage}
+
+ \medskip
+}%
+{}
+
+\hrule
+
+\newpage
+\subsection{Math Examples}
+Next, some examples of math formulae so you can see how the fonts work together (translations from german done by me).
+
+\ifthenelse{\isundefined{\align}}{}
+{%
+\medskip
+
+\hrule
+
+\begin{minipage}{\linewidth}
+ \underl{From The Book.}
+ \begin{presentbox}
+ \setlength{\abovedisplayskip}{.3\abovedisplayskip}%
+ \textbf{(D)}\quad The functions $f$ and $g$ fulfil the same functional equation:
+ $f\left(\frac{x}{2}\right)+f\left(\frac{x+1}{2}\right)=2f(x)$ and
+ $g\left(\frac{x}{2}\right)+g\left(\frac{x+1}{2}\right)=2g(x)$.
+
+ For $f(x)$, we obtain this from the addition formulas for the sine and cosine:
+ \begin{align*}
+ f\left(\textstyle\frac{x}{2}\right)+f\left(\textstyle\frac{x+1}{2}\right)
+ &=\pi
+ \left[\frac{\cos\frac{\pi x}{2}}{\sin\frac{\pi x}{2}}-\frac{\sin\frac{\pi x}{2}}{\cos\frac{\pi x}{2}}\right]
+ \\[1ex]
+ &=2\pi\frac{\cos\left(\frac{\pi x}{2}+\frac{\pi x}{2}\right)}{\sin\left(\frac{\pi x}{2}+\frac{\pi x}{2}\right)}
+ =2f(x)\text{.}
+ \end{align*}
+
+ The functional equation for $g$ follows from
+ \begin{displaymath}
+ g_N\left(\textstyle\frac{x}{2}\right)+g_N\left(\textstyle\frac{x+1}{2}\right)
+ =2g_{2N}(x)+\frac{2}{x+2N+1}\text{.}
+ \end{displaymath}
+ \end{presentbox}
+\end{minipage}%
+}
+
+\ifthenelse{\boolean{TPSFdstroke}\and\not\isundefined{\align}}
+{%
+\newpage
+
+\begin{minipage}{\linewidth}
+ \underl{From an undergrad book on calculus.}
+ \begin{presentbox}
+ \begin{align*}
+ c_k&=\frac{1}{2\pi}\int_{0}^{2\pi} f(x) e^{-\mathrm{i}kx}\,\mathrm{d}x
+ =\frac{1}{2\pi}\sum_{j=1}^{r}\int_{t_{j-1}}^{t_j} f(x) e^{-\mathrm{i}kx}\,\mathrm{d}x\\
+ &=\frac{-\mathrm{i}}{2\pi k}\int_{0}^{2\pi} \varphi(x) e^{-\mathrm{i}kx}\,\mathrm{d}x
+ =\frac{-\mathrm{i}\gamma_k}{k}\text{.}
+ \end{align*}
+ As for all $\alpha,\beta\in\mathds{C}$,
+ $\left|\alpha\beta\right|\leq\frac{1}{2}\left(\left|\alpha\right|^2+\left|\beta\right|^2\right)$, it holds that
+ \begin{displaymath}
+ \left|c_k\right|\leq\frac{1}{2}\left(\frac{1}{\left|k\right|^2}+\left|\gamma_k\right|^2\right)\text{.}
+ \end{displaymath}
+ From the convergence of $\sum\limits_{k=1}^{\infty}\frac{1}{k^2}$ and
+ $\sum\limits_{k=-\infty}^{\infty}\left|\gamma_k\right|^2$, it follows that
+ \begin{displaymath}
+ \sum_{k=-\infty}^{\infty}\left|c_k\right|<\infty\text{.}
+ \end{displaymath}
+ \end{presentbox}
+\end{minipage}%
+}
+{}
+
+\ifthenelse{\isundefined{\align}\or\isundefined{\extrarowheight}}{}
+{%
+\newpage
+
+\begin{minipage}{\linewidth}
+ \underl{From an undergrad book on calculus (2nd volume).}
+ \begin{presentbox}
+ \small
+ By \name{Fubini}'s theorem,
+ \setcounter{equation}{8}%
+ \begin{equation}
+ \label{eq:GaussLemma1}
+ \int\limits_{Z_\varepsilon}\operatorname{div} F \,\mathrm{d}x
+ = \sum_{k=1}^{n}\,
+ \underbrace
+ {%
+ \int\limits_{Q'}
+ \left(
+ \int\limits^{h\left(x'\right)-\varepsilon}_{-\infty}\partial_kF_k\left(x',x_n\right)\,\mathrm{d}x_n
+ \right)
+ \,\mathrm{d}x'
+ }_{{}\mathrel{=:} I_k}
+ \text{.}
+ \end{equation}
+ Evaluation of $I_k$: Obviously,
+ \begin{displaymath}
+ I_n=\int\limits_{Q'}F_n\left(x',h(x'-\varepsilon)\right)\,\mathrm{d}x'\text{.}
+ \end{displaymath}
+ In the case $1\leq k \leq n-1$, we employ the identity
+ \begin{displaymath}
+ \partial_k
+ \left(
+ \int\limits^{h\left(x'\right)-\varepsilon}_{-\infty}\!\!\!\!\!\!F_k\left(x',x_n\right)\,\mathrm{d}x_n
+ \right)
+ =
+ \begin{array}[t]{@{}>{\displaystyle}l@{}}
+ \int\limits^{h\left(x'\right)-\varepsilon}_{-\infty}
+ \!\!\!\!\!\!\partial_kF_k\left(x',x_n\right)\,\mathrm{d}x_n\\
+ {}+F_k\left(x',h(x'-\varepsilon)\right)\cdot\partial_k h\left(x'\right)\text{.}
+ \end{array}
+ \end{displaymath}
+ \end{presentbox}
+\end{minipage}%
+}
+
+\newpage
+
+\ifthenelse{\isundefined{\align}\or\isundefined{\CD}}{}
+{%
+\begin{minipage}{\linewidth}
+ \underl{From a book on functional analysis.}
+ \begin{presentbox}
+ \textbf{Definition 25}\quad Let $\mathcal{C}$ and $\mathcal{D}$ be categories and $\mathcal{F}, \mathcal{G}$
+ functors from $\mathcal{C}$ into $\mathcal{D}$. A mapping
+ $\eta:\operatorname{Ob}\mathcal{C}\to\operatorname{Mor}\mathcal{D}$ is called a \concept{natural transformation
+ between $\mathcal{F}$ and $\mathcal{G}$} if
+ \begin{enumerate}
+ \item[(i)] $\forall
+ A\in\operatorname{Ob}\mathcal{C}:
+ \eta(A)\in\operatorname{Mor}_{\mathcal{D}}\left(\mathcal{F}(A),\mathcal{G}(A)\right)$
+ \item[(ii)] $\forall A,B\in\operatorname{Ob}\mathcal{C}\;\forall f\in\operatorname{Mor}_{\mathcal{C}}(A,B):$
+ \begin{align*}
+ \begin{CD}
+ \mathcal{F}(A)@>{\mathcal{F}(f)}>>\mathcal{F}(B)\\
+ @V{\eta(A)}VV @VV{\eta(B)}V\\
+ \mathcal{G}(A)@>>{\mathcal{G}(f)}>\mathcal{G}(B)\\
+ \end{CD}
+ &&\text{or}&&
+ \begin{CD}
+ \mathcal{F}(A)@<{\mathcal{F}(f)}<<\mathcal{F}(B)\\
+ @V{\eta(A)}VV @VV{\eta(B)}V\\
+ \mathcal{G}(A)@<<{\mathcal{G}(f)}<\mathcal{G}(B)\\
+ \end{CD}
+ \end{align*}
+ respectively, commute, if $\mathcal{F}, \mathcal{G}$ are covariant or contravariant, respectively.
+ \end{enumerate}
+
+ This is denoted as $\eta:\mathcal{F}\to \mathcal{G}$. Such a natural transformation is called a \concept{natural
+ equivalence between $\mathcal{F}$ and $\mathcal{G}$} if $\eta(A)$ is an isomorphism for every
+ $A\in\operatorname{Ob}\mathcal{C}$.
+ \end{presentbox}
+\end{minipage}%
+}
+
+\ifthenelse{\boolean{TPSFamsfonts}\and\not\isundefined{\align}\and\not\isundefined{\MAT}}
+{%
+\newpage
+
+\begin{minipage}{\linewidth}
+ \underl{From an undergrad book on linear algebra.}
+ \begin{presentbox}
+ \textit{Step 2.}\quad Determine an eigenvector $v_2$ for an eigenvalue $\lambda_2$ of $F_2$ ($\lambda_2$ is also
+ an eigenvalue of $F_1$). Next, determine a $j_2\in\{1,\dots,n\}$ such that
+ \begin{displaymath}
+ \mathfrak{B}_3 := (v_1,v_2,w_1,\dots,\widehat{w_{j_1}},\dots,\widehat{w_{j_2}},\dots,w_n)
+ \end{displaymath}
+ is a base of $V$.
+
+ Next, calculate
+ \vspace*{-\baselineskip}
+ \begin{displaymath}
+ M_{\mathfrak{B}_3}(F)=
+ \left(
+ \begin{MAT}(b){ccccccc}
+ \lambda_1&\cdot&\cdot&\cdot&\cdot&\cdot&\cdot\\
+ 0&\lambda_2&\cdot&\cdot&\cdot&\cdot&\cdot\\
+ \cdot&0&&&&&\\
+ \cdot&\cdot&&&&&\\
+ \cdot&\cdot&&&A_3&&\\
+ \cdot&\cdot&&&&&\\
+ 0&0&&&&&
+ \addpath{(2,0,0)rrrrruuuuulllllddddd}\\
+ \end{MAT}
+ \right)\text{.}
+ \end{displaymath}
+ If $W_3:=\operatorname{Span}(w_1,\dots,\widehat{w_{j_1}},\dots,\widehat{w_{j_2}},\dots,w_n)$, then $A_3$
+ determines a linear mapping $F_3:W_3\to W_3$.
+ \end{presentbox}
+\end{minipage}%
+}
+{}
+
+\ifthenelse{\isundefined{\align}}{}
+{%
+\newpage
+
+\begin{minipage}{\linewidth}
+ \underl{From an undergrad book on linear algebra (2nd volume).}
+ \begin{presentbox}
+ \DeclareRobustCommand{\with}{\;\vline\;}%
+ \DeclareRobustCommand{\Set}[2]{\left\{#1\with#2\right\}}%
+ \setlength{\abovedisplayskip}{.5\abovedisplayskip}%
+ \setlength{\belowdisplayskip}{.5\belowdisplayskip}%
+ \textit{Remark.}\quad If $\left(Y_i\right)_{i\in I}$ is a family of affine subspaces $Y_i$ of an affine space $X$,
+ then
+ \begin{displaymath}
+ Y := \bigcup_{i\in I} Y_i\subset X
+ \end{displaymath}
+ is again an affine subspace. If $Y\neq\emptyset$, then
+ \begin{displaymath}
+ T(Y)=\bigcup_{i\in I} T\left(Y_i\right)\text{.}
+ \end{displaymath}
+
+ \textit{Proof.}\quad For $Y=\emptyset$, nothing is to be proved. Otherwise, there is a fixed point $p_0\in Y$ such
+ that
+ \begin{align*}
+ T(Y)&=\Set{\overrightarrow{p_0q}\in T(X)}{q\in\bigcup_{i\in I} Y_i} \\
+ &= \bigcup_{i\in I}\Set{\overrightarrow{p_0q}\in T(X)}{q\in Y_i}=\bigcup_{i\in I} T\left(Y_i\right)\text{.}
+ \end{align*}
+ From this, both claims follow.
+ \end{presentbox}
+\end{minipage}
+}
+
+\ifthenelse{\boolean{TPSFrsfs}\and\not\isundefined{\align}}
+{%
+\newpage
+
+\begin{minipage}{\linewidth}
+ \underl{From a book on measure theory.}
+ \begin{presentbox}
+ Analogously, the general \concept{associativity} of $\sigma$-Algebra products is shown, that is
+ \begin{equation}
+ \tag{23.12}
+ \left(\bigotimes_{i=1}^{m}\mathscr{A}_i\right)\otimes\left(\bigotimes_{i=m+1}^{n}\mathscr{A}_i\right)
+ =\bigotimes_{i=1}^{n}\mathscr{A}_i
+ \makebox[0pt][l]{\normalcolor\quad($1\leq m<n$).}
+ \qquad\qquad\qquad\quad
+ \end{equation}
+ Statement (23.11) allows to prove the existence of the product measure for all $n\geq 2$ by induction.
+
+ \medskip
+
+ \textbf{23.9 Theorem}\quad\textit{For $\sigma$-finite measures $\mu_1,\dots,\mu_n$ on
+ $\mathscr{A}_1,\dots,\mathscr{A}_n$, there exists exactly one measure $\pi$ on
+ $\mathscr{A}_1\otimes\dots\otimes\mathscr{A}_n$ such that
+ \begin{equation}
+ \tag{23.13}
+ \pi\left(A_1\times\dots\times A_n\right)=\mu_1(A_1)\cdot\dots\cdot\mu_n(A_n)
+ \end{equation}
+ for all $A_i\in\mathscr{A}_i$ ($i=1,\dots,n$). Here, $\pi$ is also $\sigma$-finite.}
+ \end{presentbox}
+\end{minipage}%
+}
+{}
+
+\ifthenelse{\boolean{TPSFrsfs}\and\boolean{TPSFdstroke}\and\not\isundefined{\align}}
+{%
+\newpage
+
+\begin{minipage}{\linewidth}
+ \underl{From a book on probability theory.}
+ \begin{presentbox}
+ \textbf{17.3 Lemma}\quad\textit{If\/ $T$ takes values exclusively from $\mathds{N}$, then $X_T$ is an
+ $\mathscr{F}_T$-measurable random variable with values in $\left(\Omega',\mathscr{A}'\right)$. If only
+ $P\left\{T<+\infty\right\}=1$ holds, then up to $P$-almost certain equality there exists exactly one
+ $\mathscr{F}_T$-measurable random variable $X^*$ with values in $\left(\Omega',\mathscr{A}'\right)$ which
+ fulfils the condition
+ \begin{equation}
+ \tag{17.7}
+ X^*(\omega)=X_{T(\omega)}(\omega)
+ \makebox[0pt][l]{\normalcolor\quad for all $\omega\in\{T<\infty\}$.}
+ \qquad\qquad
+ \end{equation}
+ }%
+
+ \smallskip
+
+ \textit{Proof.}\quad It suffices to treat the second case and provide an $\mathscr{F}_T$-measurable random
+ variable fulfilling the given condition. To this end, choose an arbitrary $\omega'\in\Omega'$. We set
+ \begin{displaymath}
+ X^*(\omega) :=
+ \begin{cases}
+ X_{T(\omega)}(\omega),&\omega\in\{T<\infty\}\text{,}\\
+ \omega',&\omega\in\{T=\infty\}\text{.}
+ \end{cases}
+ \end{displaymath}
+ For every $A'\in\mathscr{A}'$, it is to be proved that $A := \left\{X^*\in A'\right\}$ is an element of
+ $\mathscr{F}_T$.
+ \end{presentbox}
+\end{minipage}%
+}
+{}
+
+\ifthenelse{\isundefined{\align}\or\isundefined{\extrarowheight}}{}
+{%
+\newpage
+
+\begin{minipage}{\linewidth}
+ \underl{From my MSc Thesis.}
+ \begin{presentbox}
+ \newcommand{\PV}{\operatorname{PV}}%
+ If we expand equations (4.102) and (4.103), we get
+ \begin{align*}
+ \lefteqn{\left(\sum_{q\in\PV}\max\left(M(q),M(\neg q)\right)\right)-\delta}\quad&\\[1ex]
+ &=
+ \begin{array}[t]{@{}>{\displaystyle}l@{}}
+ \sum_{\substack{q\in\PV\\q\neq p}}
+ \max
+ \left(
+ \begin{array}{@{}l@{}}
+ \frac{m}{M_{{>}s}'\left(\neg p\right)}\cdot M_{{>}s}'(q)
+ +\frac{m}{M_{s}'\left(p\right)}\cdot M_{s}'(q),\\[2ex]
+ \frac{m}{M_{{>}s}'\left(\neg p\right)}\cdot M_{{>}s}'(\neg q)
+ +\frac{m}{M_{s}'\left(p\right)}\cdot M_{s}'(\neg q)
+ \end{array}
+ \right)\\[6ex]
+ {}-\frac{m}{M_{{>}s}'\left(\neg p\right)}\cdot\delta_{{>}s}'
+ -\frac{m}{M_{s}'\left(p\right)}\cdot\delta_{s}'\\[3ex]
+ {}-\left(\frac{m}{M_{{>}s}'\left(\neg p\right)}-1\right)\cdot r_1
+ -\left(\frac{m}{M_{s}'\left(p\right)}-1\right)\cdot r_2\\[3ex]
+ {}-\max(r_1,r_2)+m
+ \end{array}
+ \end{align*}
+ \end{presentbox}
+\end{minipage}%
+}
+
+\ifthenelse{\boolean{TPSFamsfonts}\and\not\isundefined{\align}}
+{%
+\newpage
+
+\begin{minipage}{\linewidth}
+ \underl{From my PhD Thesis.}
+ \begin{presentbox}
+ \DeclareRobustCommand{\Lcap}{\ensuremath{\sqcap}}
+ \DeclareRobustCommand{\FPcapIcup}{\ensuremath{\uplus}}
+ \DeclareRobustCommand{\pFl}[1]{\ensuremath{\overline{#1}}}
+ \DeclareRobustCommand{\Lprimecup}{\ensuremath{\curlyvee}}
+ \def\FpFl(#1,#2)%
+ {%
+ \ensuremath{\mathord
+ {%
+ \mathchoice
+ {\sideset{^{#1}}{^{\,}}{\mathop{\displaystyle\pFl{#2}}}}%
+ {\sideset{^{#1}}{^{\,}}{\mathop{\pFl{#2}}}}%
+ {\sideset{^{\scriptscriptstyle#1}}{^{\,}}{\mathop{\scriptstyle\pFl{#2}}}}%
+ {\sideset{^{\scriptscriptstyle#1}}{^{\,}}{\mathop{\scriptscriptstyle\pFl{#2}}}}%
+ }}%
+ }
+ \DeclareRobustCommand{\Lprimesub}{\ensuremath{\preccurlyeq}}
+ \DeclareRobustCommand{\Lsub}{\ensuremath{\sqsubseteq}}
+ \DeclareRobustCommand{\FIsub}{\ensuremath{\subseteqq}}
+ By Lemma 2.2.7,
+ \begin{displaymath}
+ \FpFl(d,a)\FPcapIcup\FpFl(d',b)
+ =\FpFl({\left(d\Lprimecup \delta\left(\FpFl(d',b)\right)\right)},{a\Lcap \alpha\left(\FpFl(d',b)\right)}).
+ \end{displaymath}
+ Furthermore,
+ \begin{align*}
+ d&\Lprimesub d\Lprimecup \delta\left(\FpFl(d',b)\right),\\
+ a\Lcap \alpha\left(\FpFl(d',b)\right)&\Lsub a.
+ \end{align*}
+ From this,
+ \begin{displaymath}
+ \FpFl(d,a)\FIsub\FpFl(d,a)\FPcapIcup\FpFl(d',b)
+ \end{displaymath}
+ follows by (2.3).
+ \end{presentbox}
+\end{minipage}%
+}
+{}
+
+\newcounter{char}%
+\newcounter{symcnt}%
+\makeatletter
+\newcommand{\charlist}[4]
+{%
+ \begingroup
+ \setcounter{char}{#1}
+ \whiledo{\value{char}<#2}
+ {%
+ \medskip
+ \hrule
+ \hbox{\@for\charht := #3\do{\fontsize{\charht}{\charht}\selectfont#4}}%
+ \stepcounter{char}%
+ \hrule
+ }%
+ \endgroup
+}%
+\newcommand{\mksymline}[2]
+{%
+ \begingroup
+ \medskip
+ \hrule
+ \hbox
+ {%
+ \@for\charht := #2\do
+ {%
+ \fontsize{\charht}{\charht}\selectfont
+ \setcounter{symcnt}{0}%
+ $%
+ \@for\thesymbol := #1\do
+ {%
+ \ifcase\value{symcnt}%
+ \ifthenelse{\equal{\TPSFMathfont}{euler}}{{\thesymbol}}{}%
+ \or\ifthenelse{\equal{\TPSFMathfont}{euler}}{\,\vrule\,{\thesymbol}}{}%
+ \or\ifthenelse{\equal{\TPSFMathfont}{euler}}{}{{\thesymbol}}%
+ \or\ifthenelse{\equal{\TPSFMathfont}{euler}}{}{\,\vrule\,{\thesymbol}}%
+ \or\ifthenelse{\equal{\TPSFMathfont}{euler}}{}{\,\vrule\,{\thesymbol}}%
+ \or\ifthenelse{\boolean{TPSFamsfonts}}{\,\vrule\,{\thesymbol}}{}%
+ \or\ifthenelse{\boolean{TPSFlasy}\and\not\boolean{TPSFwasysym}}{\,\vrule\,{\thesymbol}}{}%
+ \or\ifthenelse{\boolean{TPSFstmaryrd}}{\,\vrule\,{\thesymbol}}{}%
+ \or\ifthenelse{\boolean{TPSFwasysym}}{\,\vrule\,{\thesymbol}}{}%
+ \fi
+ \stepcounter{symcnt}%
+ }%
+ \;\vrule width1ex\;%
+ $%
+ }%
+ }%
+ \hrule
+ \endgroup
+}%
+\makeatother
+
+\ifthenelse{\equal{\TPSFTextfont}{lcmss}}
+{%
+\newpage
+
+\section{Comparison of Characters}
+As mentioned before, \code{tpslifonts} does a little scaling and fiddling with design sizes to make the fonts harmonize
+as much as possible.
+
+The following scaling factors are used in this document:
+\begin{center}
+ \begin{tabular}{lll}
+ Name&Purpose&Value\\\hline
+ \macroname{TPSFttscale}&Typewriter fonts&\TPSFttscale\\\hline
+ \macroname{TPSFmathscale}&Math fonts related to cm math&\TPSFmathscale\\\hline
+ \macroname{TPSFeulerscale}&Euler math fonts&\TPSFeulerscale\\\hline
+ \macroname{TPSFcmbrscale}&Cmbright math fonts&\TPSFcmbrscale\\\hline
+ \end{tabular}
+\end{center}
+
+Unfortunately, the base font \TextFontName{} is quite excentric wrt the height ratio of upper case and lower case
+letters; compare \TextFontNameShort{} \present{a\,A} with \nameuse{TextFontNameShortcmss\encodingdefault}
+\present{\fontfamily{cmss}\selectfont a\,A}.
+
+For this reason, no amount of scaling can make \TextFontNameShort{} harmonise completely with `normal' fonts.
+
+In this section, you will see lists of similar characters from different fonts, arranged such that you can check how
+good the sizes match. You then have to set your priorities and decide the respective scaling factors accordingly. See
+the comments in the preamble of \code{slifontsexample.tex} for instructions on how to experiment with scaling.
+
+To account for different design sizes, the character samples are shown in several sizes.
+
+\subsection{Digits}
+
+Digits from \TextFontName, \nameuse{TTFontName\TPSFTextfont\encodingdefault}%
+\ifthenelse{\boolean{TPSFeulerdigits}}{, Euler Roman (\code{zeur})}{}%
+\ifthenelse{\equal{\TPSFOperatorfont}{\TPSFTextfont}}{}{, \nameuse{TextFontName\TPSFOperatorfont OT1}},
+\nameuse{TextItFontName\TPSFTextfont\encodingdefault}, and \nameuse{TTItFontName\TPSFTextfont\encodingdefault} are
+listed in sizes 5pt, 6pt, 7pt, 8pt, 9pt, 10pt, 11pt, and 17pt.
+
+\charlist{48}{58}{5,6,7,8,9,10,11,17}
+{%
+ \char\value{char}\texttt{\char\value{char}}%
+ \ifthenelse
+ {%
+ \boolean{TPSFeulerdigits}\OR\not\equal{\TPSFOperatorfont}{\TPSFTextfont}%
+ }%
+ {$\char\value{char}$}{}%
+ \,\textit{\char\value{char}}\textit{\texttt{\char\value{char}}}
+}
+
+\subsection{Upper Case Letters}
+
+Upper Case Letters from \TextFontName, \nameuse{TTFontName\TPSFTextfont\encodingdefault}%
+\ifthenelse{\equal{\TPSFMathfont}{euler}}{, Euler Roman (\code{zeur})}{}%
+\ifthenelse{\equal{\TPSFOperatorfont}{\TPSFTextfont}}{}{, \nameuse{TextFontName\TPSFOperatorfont OT1}}%
+\ifthenelse{\equal{\TPSFMathfont}{euler}}{, Euler Script (\code{zeus}; for calligraphic letters)}{}%
+\ifthenelse{\boolean{TPSFamsfonts}}
+{%
+ , Euler Fraktur (\code{eufm})%
+ , \ifthenelse{\equal{\TPSFMathfont}{cmbrm}}{cmbright AMS math (\code{cmbrbs}}{AMS math (\code{msbm}}%
+ ; for blackboard bold)%
+}{}%
+\ifthenelse{\boolean{TPSFdstroke}}
+{, Doublestroke Font (\ifthenelse{\equal{cmr}{\TPSFTextfont}}{\code{dsrom}}{\code{dsss}})}{}%
+, \nameuse{TextItFontName\TPSFTextfont\encodingdefault}, \nameuse{TTItFontName\TPSFTextfont\encodingdefault}%
+\ifthenelse{\equal{\TPSFMathfont}{euler}}{}{, \nameuse{MathLetterFontName\TPSFMathfont}}%
+\ifthenelse{\equal{\TPSFMathfont}{euler}}{}{, \nameuse{MathSymbolFontName\TPSFMathfont} for calligraphic letters}%
+\ifthenelse{\boolean{TPSFrsfs}}{, Ralph Smith Formal Script (\code{rsfs})}{}
+are listed in sizes 5pt, 7pt, and 10pt.
+
+\charlist{65}{91}{5,6,7,10}
+{%
+ \char\value{char}\texttt{\char\value{char}}%
+ \ifthenelse{\equal{\TPSFMathfont}{euler}}{$\char\value{char}$}{}%
+ \ifthenelse{\equal{\TPSFOperatorfont}{\TPSFTextfont}}{}
+ {$\operatorname{\char\value{char}}$}%
+ \ifthenelse{\equal{\TPSFMathfont}{euler}}{$\mathcal{\char\value{char}}$}{}%
+ \ifthenelse{\boolean{TPSFamsfonts}}{$\mathfrak{\char\value{char}}\mathbb{\char\value{char}}$}{}%
+ \ifthenelse{\boolean{TPSFdstroke}}{$\mathds{\char\value{char}}$}{}%
+ \,\textit{\char\value{char}}\textit{\texttt{\char\value{char}}}%
+ \ifthenelse{\equal{\TPSFMathfont}{euler}}{}{$\char\value{char}$}%
+ \ifthenelse{\equal{\TPSFMathfont}{euler}}{}{$\mathcal{\char\value{char}}$}%
+ \ifthenelse{\boolean{TPSFrsfs}}{$\mathscr{\char\value{char}}$}{}%
+ ~
+}
+
+\subsection{Lower Case Letters}
+
+Lower Case Letters from \TextFontName, \nameuse{TTFontName\TPSFTextfont\encodingdefault}%
+\ifthenelse{\equal{\TPSFMathfont}{euler}}{, Euler Roman (\code{zeur})}{}%
+\ifthenelse{\equal{\TPSFOperatorfont}{\TPSFTextfont}}{}{, \nameuse{TextFontName\TPSFOperatorfont OT1}}%
+\ifthenelse{\boolean{TPSFamsfonts}}{, Euler Fraktur (\code{eufm})}{}%
+, \nameuse{TextItFontName\TPSFTextfont\encodingdefault}, \nameuse{TTItFontName\TPSFTextfont\encodingdefault}%
+\ifthenelse{\equal{\TPSFMathfont}{euler}}{}{, \nameuse{MathLetterFontName\TPSFMathfont}}
+are listed in sizes 5pt, 7pt, 10pt, 12pt, and 14pt.
+
+\charlist{97}{123}{5,7,10,12,14}
+{%
+ \char\value{char}\texttt{\char\value{char}}%
+ \ifthenelse{\equal{\TPSFMathfont}{euler}}{$\char\value{char}$}{}%
+ \ifthenelse{\equal{\TPSFOperatorfont}{\TPSFTextfont}}{}
+ {$\operatorname{\char\value{char}}$}%
+ \ifthenelse{\boolean{TPSFamsfonts}}{$\mathfrak{\char\value{char}}$}{}%
+ \,\textit{\char\value{char}}\textit{\texttt{\char\value{char}}}%
+ \ifthenelse{\equal{\TPSFMathfont}{euler}}{}{$\char\value{char}$}%
+ ~
+}
+
+\newpage
+
+\subsection{Math Symbols}
+
+The different math fonts define symbols of similar shape, which should look equally large. Symbols from
+\ifthenelse{\equal{\TPSFMathfont}{euler}}
+{Euler Roman (\code{zeur}), Euler Symbol (\code{zeus})}
+{%
+ \nameuse{TextFontName\TPSFOperatorfont OT1}, \nameuse{MathLetterFontName\TPSFMathfont},
+ \nameuse{MathSymbolFontName\TPSFMathfont}%
+}%
+\ifthenelse{\boolean{TPSFamsfonts}}{, \ifthenelse{\equal{\TPSFMathfont}{cmbrm}}{cmbright }{}AMS math fonts}{}%
+\ifthenelse{\boolean{TPSFlasy}\and\not\boolean{TPSFwasysym}}{, \LaTeX{} symbol font (\code{lasy})}{}%
+\ifthenelse{\boolean{TPSFstmaryrd}}{, St Mary's Road symbol font (\code{stmary})}{}%
+\ifthenelse{\boolean{TPSFwasysym}}{, Waldis symbol font (\code{wasy})}{}
+are listed in sizes 5pt, 7pt, 10pt, and 12pt.
+
+To make clear which characters stem from which font, they are separated by vertical bars.
+
+\mksymline{\star,+,+,\star,\times,\divideontimes,,\moo,}{5,7,10,12}
+
+\mksymline{,\cup,,,\cup,\Cup,,\nplus,}{5,7,10,12}
+
+\mksymline{,\oplus,,,\oplus,\circledast,,\olessthan,\ocircle}{5,7,10,12}
+
+\mksymline{,\vdash,,,\vdash,\Vdash,,,}{5,7,10,12}
+
+\mksymline{,=,=,,\equiv,\doteqdot,,,}{5,7,10,12}
+
+\mksymline{<,\leq,,<,\leq,\leqslant,\sqsubset,\trianglelefteqslant,\apprle}{5,7,10,12}
+
+\mksymline{\leftharpoondown,\leftarrow,,\leftharpoondown,\leftarrow,\twoheadleftarrow,\leadsto,\leftarrowtriangle,\leadsto}{5,7,10,12}
+}
+{}
+
+\end{slide}
+\end{document}
diff --git a/macros/latex/contrib/texpower/tpslifonts/tpslifonts.dtx b/macros/latex/contrib/texpower/tpslifonts/tpslifonts.dtx
new file mode 100644
index 0000000000..a549c2dcc4
--- /dev/null
+++ b/macros/latex/contrib/texpower/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
diff --git a/macros/latex/contrib/texpower/tpslifonts/tpslifonts.ins b/macros/latex/contrib/texpower/tpslifonts/tpslifonts.ins
new file mode 100644
index 0000000000..8d73c1c2cf
--- /dev/null
+++ b/macros/latex/contrib/texpower/tpslifonts/tpslifonts.ins
@@ -0,0 +1,64 @@
+%%
+%% --------------------------------------------------------------
+%% 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.ins,v 1.2 2004/07/27 11:33:07 hansfn Exp
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+
+\input docstrip
+
+\preamble
+
+--------------------------------------------------------------
+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.
+--------------------------------------------------------------
+
+\endpreamble
+
+\keepsilent
+\usedir{tex/latex/texpower/tpslifonts}
+\askonceonly
+
+\generate{%
+ \file{tpslifonts.sty}{\from{tpslifonts.dtx}{tpslifonts}}
+}
+
+\ifToplevel{
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space tpslifonts.sty}
+\Msg{*}
+\Msg{* Happy TeXing}
+\Msg{***********************************************************}
+}
+
+\endbatchfile
+