The exscale package^{∗} for use with L^{A}TEX2e

Frank Mittelbach  Rainer Schöpf

1995/11/27

1 Introduction

On popular request, this package implements scaling of the math extension font ‘cmex’. If this package is used the site needs scaled versions of the cmex10 in the sizes 10.95pt, 12pt, 14.4pt , 17.28pt, 20.74pt, and 24.88pt which corresponds to standard magsteps using \magstephalf, and \magstep1 through \magstep5. Additionally ‘cmex’ variants for the sizes 7pt to 9pt are necessary. These fonts are part of the AMS font package and can be found on many servers.

We don’t think that using a scalable ‘cmex’ font improves the appearance of the document very much because the linear scaling of the font introduces changes to font dimen parameters of the font that are used all over the place in TEX’s math placement routines and definitely shouldn’t be scaled linearly. As a positive result, however, symbols from this font will come out in approximately the right size when used with a large basis font size.

We therefore strongly recomment the generation of designed fonts for the larger sizes and hope that the corresponding Metafont sources will be available in the near future.

2 Usage

This file can be used either as a package by placing its name in the argument of \usepackage, or by generating from it a .fd file which then replaces the normally

used .fd file OMXcmex.fd.

For the second solution you should prepare a small docstrip command file containing the following statements:

\def\batchfile{⟨name-of-your-command-file⟩}

     \input docstrip.tex
     \generateFile{OMXcmex.fd}{t}{\from{exscale.dtx}{fd}}

∗This file has version number v2.1f, dated 1995/11/27.

and then run this file through L^{A}TEX. This would mean however, that your documents may look different if they are printed on another installation whereas when using the package file they would come out the same on both sites.

3 Implementation

In case this should produce a font definition file we write a message to the transcript file only. The explicit spaces are necessary in an .fd file and the \string guards against situations where `, < or > is active.

 1 %\ProvidesFile{OMXcmex.fd}[]% moved to top of the file

We now define to which external fonts the font/shape Computer Modern Extension Medium Normal. For the sizes 7–10pt we use fonts that are designed for the corresponding size and for the higher sizes we use scaled versions of the 10pt font since for these sizes no designed fonts are easily available.

2 ⟨∗fd | package⟩

 3 \DeclareFontShape{OMX}{cmex}{m}{n}{%

According to Michael Downes ‘cmex5’ and ‘cmex6’ are not distributed currently. Therefore we use ‘cmex7’ in those size but we omit a warning.

 4  <-8>sfixed * cmex7
 5  <8> cmex8
 6  <9> cmex9
 7  <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>cmex10
 8  }{}

9 ⟨/fd | package⟩

We also redeclare the symbol font for large symbols. This is already done when the base format also uses CM math fonts, but it doesn’t hurt either.

10 ⟨∗package⟩

11 \DeclareSymbolFont{largesymbols}{OMX}{cmex}{m}{n}

Finally we redefine the primitive commands \big, \Big, \bigg and \Bigg to change size with main size changes. To this end we need a new dimen register

\big@size.
12 \newdimen\big@size

This dimen is set with every size change to 1.2 times the height of a left parenthesis.

13 \addto@hook\every@math@size{\setbox\z@\vbox{\hbox{$($}\kern\z@}%
14 \global\big@size 1.2\ht\z@}

Now we can define the macros. Note: \n@space sets the internal variables

\nulldelimiterspace and \mathsurropund to zero length.
15 \def\bBigg@#1#2{%
16 {\hbox{$\left#2\vcenter to#1\big@size{}\right.\n@space$}}}
17 \def\big{\bBigg@\@ne}
18 \def\Big{\bBigg@{1.5}}
19 \def\bigg{\bBigg@\tw@}
20 \def\Bigg{\bBigg@{2.5}}

21 ⟨/package⟩