Installation of the new font selection scheme, β-Test release

Frank Mittelbach  Rainer Schöpf

91/03/29, v1.0a

Abstract

This file gives some basic information which are necessary to generate a format with the new font selection scheme. It is essentially the last part of fontsel.tex the article that appeared in TUGboat. However, it was modified and updated to reflect changes within the font selection scheme, wheras fontsel.tex was left unchanged.

When setting up a new format one has to start IniTEX with lplain.tex as the input file. After displaying some progress report on the terminal, lplain.tex

will try to \input the files hyphen.tex and lfonts.tex.

It seems a good idea to rename these files because, when TEX complains that it cannot find them and asks you to type in another file name, you get the chance to substitute your favourate hyphenation patterns without changing lplain.tex or copying something to hyphen.tex. The transcript file will show the name of the file used which is very useful to debug weird errors (later).

When the point is reached where TEX wants to read in lfonts.tex, you now have to specify ‘lfonts.new’. After processing this file (which will take some time), IniTEX stops once more since it cannot find the file xxxlfont.sty. This is intentional; in this way you may now specify the desired default by entering one of the following file names:

oldlfont.sty If you choose this file, your format will be identical to the standard L^{A}TEX version 2.09 except that a few additional commands (like \normalshape) are available. Of course, documents or style options which explicitly refer to things like \tentt will produce error messages since such internal commands are no longer defined.^{1} Nevertheless it is easy to fix the problem in such a case: if we know that \tentt referred to cmtt10, i.e. Computer modern typewriter normal at 10pt, we can define it as

1By the way, such documents were at no time portable since Leslie Lamport stated that it was always permissible to customize lfonts.tex according to the local needs. Therefore this is not an incompatible change.

 \newcommand{\tentt}{\fontfamily{cmtt}%
     \fontseries{m}\fontshape{n}\fontsize{10}{12pt}%
     \selectfont}

Since we assume the ‘oldlfont’ option as default, where \tt resets series and shape, the definition could be shortened to

\newcommand{\tentt}{\fontsize{10}{12pt}\tt}

To get the new way of font selection as described in fontsel.tex (e.g. where \tt simply means to switch to another family) you only have to add the ‘newlfont’ style option to the \documentstyle command in your document.

newlfont.sty This is just the counterpart to oldlfont.sty: it will make the new mechanism the default and you have to add ‘oldlfont’ as a style option if you want to process older documents which depend on the old mechanism.

basefont.tex This file is similar to newlfont.sty but does not define the L^{A}TEX symbol fonts. These fonts contain only a few characters which are also included in the AMS symbol fonts. Therefore we provided the possibility of generating a format which doesn’t unnecessarily occupy one of the (only) sixteen math groups within one math version. Using this file you can easily switch to the old scheme (adding ‘oldlfont’ as an option), to the new scheme with L^{A}TEX symbol fonts (using ‘newlfont’) or to the new scheme with additional AMS fonts by using either the style option ‘amsfonts’ (fonts only) or the style option ‘amstex’ (defining the whole set of AMS-TEX macros in a L^{A}TEX like syntax).

We suggest using the basefont.tex file since the new font selection scheme will be incorporated into L^{A}TEX version 2.10, but on installations with many users it might be better to switch smoothly to the new font selection scheme by first using ‘oldlfont’ as a default.

Anyway, after reading the file chosen, TEX will continue by processing latex.tex and finally displaying the message “Input any local modifications here”. If you don’t dare to do so, use \dump to finish the run. This will leave you with a new .fmt file (to be put into TEX’s format area) and the corresponding transcript file. It isn’t a very good idea to delete this one because you might need it later to find out what you did when you dumped the format!

1 Remarks on the development of this interface

We started designing the new font selection scheme around April 1989. A first implementation was available after one month’s work and thereafter the prototype version ran successfully for some months at a few sites in Germany and the UK. Frank’s visit to Stanford as well as our work on the ‘amstex’ style option brought new aspects to our view. The result was a more or less complete redefinition of the L^{A}TEX interface for this font mechanism. It was a long way from the first sketch (which was about five pages in Frank’s notebook) to the current implementation of the interface which now consists of nearly 2000 lines of code and about 4000 lines of internal documentation. The AMS-TEX project itself, which triggered this reimplemenation, has about the same dimensions. Surely in such a huge software package one will find typos and bugs. But we hope that most of the bugs in the code are found by now. It is planned that the new font selection scheme will replace the old one in L^{A}TEX version 2.10. We therefore hope that this pre-release which runs in version 2.09 will help to find all remaining problems so that the switch to version 2.10 will be without discomfort to the user.

2 Acknowledgements

During this project we got help from many people. A big ‘thank you’ to all of them, especially to Michael Downes from the AMS for his cooperation and help, to Stefan Lindner for his help with the Atari TEX and to Sebastian Rahtz for playing a willing guinea-pig. Finally we also want to thank Ron Whitney who did a marvelous job on all our articles so far. This time we posed some extra problems because he had to first make a new format in order to read how to make a new format.

3 List of distributed files

lfonts.new The new version of lfonts.tex, to be copied to a file of this name after the old lfonts.tex has been renamed.

fontdef.ori The font definitions for the computer modern fonts in the distribution by Donald E. Knuth. To be copied to fontdef.tex if this selection is to be used.

fontdef.max Complete font definitions for the computer modern fonts and the AMSFonts collections. To be copied to fontdef.tex if this selection is to be used.

preload.ori Preloads the same fonts as the old lfonts.tex does. To be copied to preload.tex if this is desired.

preload.min Preloads only the absolute minimum of fonts. To be copied to preload.tex if this is desired.

newlfont.sty Selects new version of font selection for L^{A}TEX. oldlfont.sty Selects old version of font selection for L^{A}TEX.

basefont.tex Like newlfont.sty, but does not define the L^{A}TEX symbol fonts.

margid.sty Style file that defines all ⟨math alphabet identifiers⟩ to have one argument. This is the default that is built in into the new font selection scheme. Therefore this style file is only necessary if the installation decided to load ‘nomargid.sty’ at dump time.

nomargid.sty In contrast to margid.sty, defines all ⟨math alphabet identifiers⟩ to switch to the alphabet. This style option is necessary if you want to be compatible to the old L^{A}TEX syntax in math mode only.

tracefnt.sty Style file that allows the tracing of font usage. Use \tracingfonts with values 1 to 3 and watch what happens.

syntonly.sty Defines the \syntaxonly declaration. This can be used in the preamble of a document to suppress all output.

euscript.sty Contains the definitions to use the Euler script fonts.

There are some more files included in the distribution. For a complete set see the readme files.

Together with the AMS-L^{A}TEX package (that uses the the new font selection scheme) there are some additional file that might be of interest of many users even even if they don’t intend to use the mathematical features of the AMS-L^{A}TEX package. This includes the files:

amsfonts.sty Defines the commands to select symbols from the AmSFonts collection.

amsbsy.sty Defines the \boldsymbol command.

amssymb.sty Defines additional AMS-TEX symbols.

amstext.sty Defines the AMS-TEX \text command.

Note, that these files come with the AMS-L^{A}TEX distribution and not with the standard fontsel package.