\def\fileversion{0.01} \def\filedate{91/8/20} \def\docdate {91/8/20} %% \CheckSum{125} %% \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 \~} %% % % %\iffalse % This is a META comment % % File `plainfsl.doc'. % Copyright (C) 1991 Wayne G. Sullivan, all rights reserved. % % Copying of this file is authorized only if either % (1) you make absolutely no changes to your copy, or % (2) you use a different name for your modified file. % % % Error reports (unmodified files only): % Department of Mathematics % University College % Dublin 4, Ireland % Bitnet: % % %\fi % % % \title{The file {\tt plainfsl.doc}\thanks{This file has version % number \fileversion, dated \filedate. The documentation was % last updated on \docdate.}.} % % \author{Wayne G. Sullivan} % % \maketitle % % \StopEventually{} % % \section{Font selection scheme} % The Mittelbach\slash Sch\"opf font selection scheme is a systematic % approach for handling of fonts in \TeX\ documents. It was originally % designed for use under \LaTeX, but it may be used with other formats. % The purpose of the present work is to provide the necessary adaptations % for \PlainTeX\null. First we include a few macros based on those in % \LaTeX\null. % \begin{macro}{\protect} % \begin{macro}{\makeatletter} % \begin{macro}{\makeatother} % The control sequence \verb+\protect+ is rather subtle. In ordinary text % setting it is superfluous. However, there are numerous contexts where % it can be used to control the way macros are expanded, as in the % \verb+\typeout+ macro given below. Other contexts require other tricks. % Some macros of \PlainTeX use {\tt @} as a letter to inhibit % redefinition. To access these, the catcode of {\tt @} needs to be % changed. The experienced \TeX\ user may occasionally wish to access % these {\em private\/} macros, so the required catcode changes are % assigned to control sequences. We use such a change here. % \begin{macrocode} \let\protect\relax \def\makeatletter{\catcode`\@11 } \def\makeatother{\catcode`\@12 } \makeatletter % \end{macrocode}% % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\@ifundefined} % \begin{macro}{\@ifdefinable} % \LaTeX~is sometimes careful about assigning new macro names. In these % cases the new identifier will be checked to see if it has already been % used. \verb+\@ifundefined+ takes the characters in the identifier % as its first parameter and uses \verb+\csname+ to construct the % control sequence name. Control sequences so constructed are given % the value \verb+\relax+ if they have not previously appeared. % If the control sequence defined by the characters has not previoulsy % appeared, or is currently equivalent to \verb+\relax+, then the % second parameter of \verb+\@ifundefined+ is included; otherwise the % third. The macro \verb+\@ifdefinable+ takes as first parameter a % control sequence which is converted to its characters. If these % characters form an undefined control sequence (in the above % sense), then the second parameter of the macro is included. % Otherwise an error messsage is issued. % \begin{macrocode} \long\def\@ifundefined#1#2#3{\expandafter\ifx\csname #1\endcsname\relax#2\else#3\fi} \long\def\@ifdefinable#1#2{\relax\count@\escapechar\escapechar\m@ne \edef\@tempa{\string#1}\escapechar\count@ \expandafter\@ifundefined\expandafter{\@tempa }{#2}{\errmessage{\string#1 already defined}}} % \end{macrocode}% % \end{macro} % \end{macro} % \begin{macro}{\typeout} % \begin{macro}{\@latexerr} % \begin{macro}{\@eha} % One of the main tools the font selection scheme uses for sending % messages to the screen is \verb+\typeout+. Without the % redefinition of \verb+\protect+, the output in some cases would % be considerably less legible. For reporting errors the font % selection scheme uses \LaTeX\ macros which are given here. % The \verb+\@eha+ error help given here is even more terse % than the original: such general messages are of little use % anyway. % \begin{macrocode} \def\typeout#1{{\let\protect\string\immediate\write\sixt@@n{#1}}} \def\@eha{Enter `?' for options.} \def\@latexerr#1#2{% \edef\@tempc{#2}\expandafter\errhelp\expandafter{\@tempc}% \errmessage{#1}} % \end{macrocode}% % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\mbox} % Most of those who use \TeX\ are sometimes baffled by \TeX's mode % (or mood). In order to get a paragraph to start with an \verb+\hbox+ % some coaxing must be employed. \verb+\leavevmode+ does the trick and % leaves no sticky residue. % \begin{macrocode} \def\mbox#1{\leavevmode\hbox{#1}} % \end{macrocode}% % \end{macro} % \begin{macro}{\@ifnextchar} % \begin{macro}{\@ifstar} % It is convenient when writing macros to have a technique for % modifying the interpretation based on the first character % following the control sequence. Thus \verb+\@ifstar+ will % invoke one set of instuctions if the character following is % {\tt *} and another otherwise. This is achieved by means of % the \TeX\ primitive \verb+\futurelet+. The matter is % complicated by the fact that spaces are skipped when % undelimited macro parameters are scanned. So if % \verb+\futurelet+ detects a space, the macro should skip on until % a non-blank token is found. The coding borders on the clever, % but because of the subtle difference between characters and % control sequences equating to characters, the whole business % could be derailed by a devious or unlucky token. Below, to obtain % space tokens in the desired locations, \verb+\edef+ and % \verb+\expandafter+ are used. The macros so defined do not % contain \verb+\expandafter+. % \begin{macrocode} \edef\@ifnextchar#1#2#3{\let\noexpand\@tempc=#1\def\noexpand \@tempa{#2}\def\noexpand\@tempb{#3}\noexpand\@peeknextch\space} \expandafter\def\expandafter\@peeknextch\space {\futurelet\@tempd\@finifnextch} \expandafter\def\expandafter\@finifnextch \expandafter{\expandafter\ifx\space\@tempd\let\@tempd\@peeknextch\else \ifx\@tempd\@tempc\let\@tempd\@tempa\else\let\@tempd\@tempb\fi\fi \@tempd} \def\@ifstar#1#2{\@ifnextchar*{\def\@tempa*{#1}\@tempa}{#2}} % \end{macrocode} % This completes the discussion of the macros adapted from \LaTeX. % \end{macro} % \end{macro} % \section{Plain fonts} % Next we proceed to the font selection macros which are described % in detail in their own documentation. Since these will be loaded % after \PlainTeX, some font material is already loaded. If your % version of plain preloads more than the 16 basic fonts and you % make little use of the other preloaded fonts, you might consider % commenting out the extra preloaded fonts in {\tt plain.tex}. Now that % there is a much greater choice of fonts for use with \TeX, % it makes even more sense to preload only fonts which are % frequently used. Whether a font is preloaded does not effect the % final output. The only advantage of preloading is that it may % result in slightly reduced processing time. Excessive preloading % can result in reduced processing speed. % The font selection scheme does its own % allocation of math alphabets, {\it i.e.,} \verb+\fam+, so we need to % reset this allocation to the minimum corresponding to % roman, math italic, symbol and extensible. We also give % the font selection name to the extensible font. % \begin{macrocode} \count18=3 % deallocate plain math alphabets=>\fam numbers \expandafter\let\csname cmex/m/n/10\endcsname=\tenex % \end{macrocode}% % \section{Mittelbach\slash Sch\"opf} % Next we append the bulk of the font selection macros by using % the {\em docstrip\/} utility to include the macros in % the same file as the above macros. However, near the end % of the scheme there are macros which appeal directly % to \LaTeX\ structures. We use a trick to omit these. The % scheme requests the file {\tt xxxlfont.sty} to give the user % the option of retaining the basic way that \LaTeX\ handles % math mode fonts or use a different approach. For use with % \PlainTeX\ we include a file with the name {\tt xxxlfont.sty}, % which itself will request the input of a file {\tt yyylfont.sty}, % again to allow the user choice of math mode font selection % styles. Penultimatily {\tt xxxlfont.sty} will request the % input of a file {\tt anyextra.xyz} to allow the user to include % other material in the format file. Only one file is requested; % if the user has several to include, then a single file which % inputs each of these should be made. If no further material % is to be included, then the user should enter the name of % the system {\em null\/} file or make up a file which consists % simply of \verb+\endinput+. The file {\tt xxxlfont.sty} then % executes \verb+\dump+. % \section{Other files needed} % In addition to {\tt plainfsl.tex} and {\tt xxxlfont.sty} one needs % a {\tt fontdef.tex}. There are several of these available from the % general font selection distribution. This file should be adapted to % local available fonts. Also requested during the format processing % is {\tt preload.tex}. The user should make up his own preload file % based on the fonts commonly used, but it is not necessary to preload % any additional fonts: a system null file (or equivalent) % can be supplied in place of {\tt preload.tex}. Also needed is either % {\tt oldlfont.sty} or {\tt basefont.tex}. % \Finale % \endinput