<<

. 12
( 13)



>>

\text prints a sample text, assuming TeX text font conventions;@%
\sample combines \table and \text;@%
\mixture mixes a background character with a series of others;@%
\alternation interleaves a background character with a series;@%
\alphabet prints all lowercase letters within a given background;@%
\ALPHABET prints all uppercase letters within a given background;@%
\series prints a series of letters within a given background;@%
\lowers prints a comprehensive test of lowercase;@%
\uppers prints a comprehensive test of uppercase;@%
\digits prints a comprehensive test of numerals;@%
\math prints a comprehensive test of TeX math italic;@%
\names prints a text that mixes upper and lower case;@%
\punct prints a punctuation test;@%
\bigtest combines many of the above routines;@%
\help repeats this message;@%
and you can use ordinary TeX commands (e.g., to \input a file).}}}
The program prompts you for a font name. If the font is in your local directory
instead of a system directory, you might have to specify the directory name as part of
the font name. You should also specify scaling if the font has been magni¬ed, as in
the example of Chapter 5. Several fonts can be tested during a single run, if you say
˜\init™ before ˜\end™.
\def\init{\message{@Name of the font to test = }
\read-1 to\fontname \startfont
\message{Now type a test command (\string\help\space for help):}}
\def\startfont{\font\testfont=\fontname \spaceskip=0pt
\leftline{\sevenrm Test of \fontname\unskip\ on \today\ at \hours}
\medskip
\testfont \setbaselineskip
338 Appendix H: Hardcopy Proofs


\ifdim\fontdimen6\testfont<10pt \rightskip=0pt plus 20pt ragged right
raggedright
\else\rightskip=0pt plus 2em \fi
background character
\spaceskip=\fontdimen2\testfont % space between words (\raggedright) starting character
ending character
\xspaceskip=\fontdimen2\testfont
mixture
\advance\xspaceskip by\fontdimen7\testfont} alternation

The speci¬ed font will be called \testfont. As soon as you have speci¬ed it, \init
calls on \startfont, which puts a title line on the page; then it chooses what it hopes
will be a good distance between baselines, and gets ready to typeset text with “ragged
right” margins. (The code above improves on plain TEX™s \raggedright.)
The baselineskip distance is taken to be 6 pt plus the height of the tallest
character plus the depth of the deepest character. This is the distance between base-
lines for “series” tests, but it is decreased by 4 pt when the sample text is set. If
you want to change the baseline distance chosen by testfont, you can just say, e.g.,
˜\baselineskip=11pt™.

\def\setbaselineskip{\setbox0=\hbox{\n=0
\loop\char\n \ifnum \n<255 \advance\n 1 \repeat} % 256 chars in \box0
\baselineskip=6pt \advance\baselineskip\ht0 \advance\baselineskip\dp0 }

When testfont prompts you for a “background character” or a “starting
character” or an “ending character,” you can type the character you want (assuming
ASCII code); or you can say, e.g., ˜#35™ to get character code number 35. Codes 0“32
and 127“255 have to be speci¬ed with the ˜#™ option, on non-fancy installations of TEX,
and so does code 35 (which is the ASCII code of ˜#™ itself).

\def\setchar#1{{\escapechar-1\message{\string#1 character = }%
\def\do##1{\catcode˜##1=\other}\dospecials
\read-1 to\next
\expandafter\finsetchar\next\next#1}}
\def\finsetchar#1#2\next#3{\global\chardef#3=˜#1
\ifnum #3=˜\# \global\chardef#3=#2 \fi}
\def\promptthree{\setchar\background
\setchar\starting \setchar\ending}

(The TEX hackery here is a bit subtle, because special characters like ˜\™ and ˜$™ must
temporarily lose their special signi¬cance.)
Suppose the background character is ˜o™ and the starting and ending characters
are respectively ˜p™ and ˜q™. Then the \mixture operation will typeset ˜opooppooopppop™
and ˜oqooqqoooqqqoq™; the \alternation operation will typeset ˜opopopopopopopopo™
and ˜oqoqoqoqoqoqoqoqo™. Other patterns could be added in a similar way.

\def\mixture{\promptthree \domix\mixpattern}
\def\alternation{\promptthree \domix\altpattern}
\def\mixpattern{\0\1\0\0\1\1\0\0\0\1\1\1\0\1}
\def\altpattern{\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0}
\def\domix#1{\par\chardef\0=\background \n=\starting
\loop \chardef\1=\n #1\endgraf
\ifnum \n<\ending \advance\n 1 \repeat}
Appendix H: Hardcopy Proofs 339


The \series operation puts the background character between all the others lowers
uppers
(e.g., ˜opoqo™). Special series containing the lowercase letters of TEX text fonts (includ-
digits
ing ˜ß™, ˜¦™, ˜“™, and ø™) and the uppercase letters (including ˜Æ™, ˜’™, and ˜˜™) are names
provided. Although \mixture and \alternation show you the e¬ects of ligatures and punct
kerning, \series does not.

\def\!{\discretionary{\background}{\background}{\background}}
\def\series{\promptthree \!\doseries\starting\ending\par}
\def\doseries#1#2{\n=#1\loop\char\n\!\ifnum\n<#2\advance\n 1 \repeat}
\def\complower{\!\doseries{˜a}{˜z}\doseries{™31}{™34}\par}
\def\compupper{\!\doseries{˜A}{˜Z}\doseries{™35}{™37}\par}
\def\compdigs{\!\doseries{˜0}{˜9}\par}
\def\alphabet{\setchar\background\complower}
\def\ALPHABET{\setchar\background\compupper}

(A long series might ¬ll more than one line; TEX™s \discretionary break operation is
used here so that the background character will end the line and be repeated at the
beginning of the next.)
A “comprehensive” test uses a series of background characters against a series
of others. The series will consist of lowercase letters (˜\lowers™), uppercase letters
(˜\uppers™), or numerals (˜\digits™).

\def\lowers{\docomprehensive\complower{˜a}{˜z}{™31}{™34}}
\def\uppers{\docomprehensive\compupper{˜A}{˜Z}{™35}{™37}}
\def\digits{\docomprehensive\compdigs{˜0}{˜4}{˜5}{˜9}}
\def\docomprehensive#1#2#3#4#5{\par\chardef\background=#2
\loop{#1} \ifnum\background<#3\m=\background\advance\m 1
\chardef\background=\m \repeat \chardef\background=#4
\loop{#1} \ifnum\background<#5\m=\background\advance\m 1
\chardef\background=\m \repeat}

The \names test puts uppercase letters and accents together with lowercase
letters. The accents will look funny if the test font doesn™t have them in plain TEX™s
favorite positions.

\def\names{ {\AA}ngel\aa\ Beatrice Claire
Diana \™Erica Fran\c{c}oise Ginette H\™el\˜ene Iris
Jackie K\=aren {\L}au\.ra Mar{\™\i}a N\H{a}ta{\l}{\u\i}e {\O}ctave
Pauline Qu\^eneau Roxanne Sabine T\˜a{\™\j}a Ur\v{s}ula
Vivian Wendy Xanthippe Yv{\o}nne Z\"azilie\par}

Punctuation marks are tested in juxtaposition with di¬erent sorts of letters,
by the ˜\punct™ macro:

\def\punct{\par\dopunct{min}\dopunct{pig}\dopunct{hid}
\dopunct{HIE}\dopunct{TIP}\dopunct{fluff}
\$1,234.56 + 7/8 = 9\% @ \#0\par}
\def\dopunct#1{#1,\ #1:\ #1;\ ˜#1™\
?˜#1?\ !˜#1!\ (#1)\ [#1]\ #1*\ #1.\par}
340 Appendix H: Hardcopy Proofs


Mixtures and alternations and series are excellent ways to discover that letters text
omitaccents
are too dark, too light, or too tightly spaced. But a font also has to be readable; in
Stanfords
fact, this is the number one objective. So testfont provides a sample ˜\text™. One of Kafka
the sentences is optional, because it contains lots of accents and unusual letters; you AEsop
centerlargechars
can omit it from the text by saying ˜\omitaccents™. Furthermore, you can type your
own text, online, or you can input one from a ¬le, instead of using this canned example.
\def\text{{\advance\baselineskip-4pt
\setbox0=\hbox{abcdefghijklmnopqrstuvwxyz}
\ifdim\hsize>2\wd0 \ifdim 15pc>2\wd0 \hsize=15pc \else\hsize=2\wd0 \fi\fi
On November 14, 1885, Senator \& Mrs.˜Leland Stanford called together at
their San Francisco mansion the 24˜prominent men who had been chosen as
the first trustees of The Leland Stanford Junior University. They
handed to the board the Founding Grant of the University, which they had
executed three days before. This document---with various amendments,
legislative acts, and court decrees---remains as the University™s
charter. In bold, sweeping language it stipulates that the objectives of
the University are ˜˜to qualify students for personal success and direct
usefulness in life; and to promote the publick welfare by exercising an
influence in behalf of humanity and civilization, teaching the blessings
of liberty regulated by law, and inculcating love and reverence for the
great principles of government as derived from the inalienable rights of
man to life, liberty, and the pursuit of happiness.™™ \moretext
(!˜THE DAZED BROWN FOX QUICKLY GAVE 12345--67890 JUMPS!)\par}}
\def\moretext{?˜But aren™t Kafka™s Schlo{\ss} and {\AE}sop™s {\OE}uvres
often na{\"\i}ve vis-\˜a-vis the d{\ae}monic ph{\oe}nix™s official
r\^ole in fluffy souffl\™es? }
\def\omitaccents{\let\moretext=\relax}
Now comes one of the hardest parts of the ¬le, from the TEX standpoint: The
\table macro prints a font diagram, omitting groups of sixteen characters that are
entirely absent from the font. The format of this table is the same as that used in
Appendix F of The TEXbook. When the font contains unusually large characters that
ought to be vertically centered, you should say ˜\centerlargechars™ before ˜\table™.
(A TEX math symbol font or math extension font would use this feature.)
\def\oct#1{\hbox{\rm\™{}\kern-.2em\it#1\/\kern.05em}} % octal constant
\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant
\def\setdigs#1"#2{\gdef\h{#2}% \h=hex prefix; \0\1=corresponding octal
\m=\n \divide\m by 64 \xdef\0{\the\m}%
\multiply\m by-64 \advance\m by\n \divide\m by 8 \xdef\1{\the\m}}
\def\testrow{\setbox0=\hbox{\penalty 1\def\\{\char"\h}%
\\0\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\B\\C\\D\\E\\F%
\global\p=\lastpenalty}} % \p=1 if none of the characters exist
\def\oddline{\cr
\noalign{\nointerlineskip}
\multispan{19}\hrulefill&
\setbox0=\hbox{\lower 2.3pt\hbox{\hex{\h x}}}\smash{\box0}\cr
\noalign{\nointerlineskip}}
Appendix H: Hardcopy Proofs 341


\newif\ifskipping sample
bigtest
\def\evenline{\loop\skippingfalse
hamburgefonstiv
\ifnum\n<256 \m=\n \divide\m 16 \chardef\next=\m math
italic
\expandafter\setdigs\meaning\next \testrow
\ifnum\p=1 \skippingtrue \fi\fi
\ifskipping \global\advance\n 16 \repeat
\ifnum\n=256 \let\next=\endchart\else\let\next=\morechart\fi
\next}
\def\morechart{\cr\noalign{\hrule\penalty5000}
\chartline \oddline \m=\1 \advance\m 1 \xdef\1{\the\m}
\chartline \evenline}
\def\chartline{&\oct{\0\1x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&}
\def\chartstrut{\lower4.5pt\vbox to14pt{}}
\def\table{$$\global\n=0
\halign to\hsize\bgroup
\chartstrut##\tabskip0pt plus10pt&
&\hfil##\hfil&\vrule##\cr
\lower6.5pt\null
&&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline}
\def\endchart{\cr\noalign{\hrule}
\raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B&
&\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$\par}
\def\:{\setbox0=\hbox{\noboundary\char\n\noboundary}%
\ifdim\ht0>7.5pt\reposition
\else\ifdim\dp0>2.5pt\reposition\fi\fi
\box0\global\advance\n 1 }
\def\reposition{\setbox0=\vbox{\kern2pt\box0}\dim=\dp0
\advance\dim 2pt \dp0=\dim}
\def\centerlargechars{
\def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}}
Two of the most important combinations of tests are treated now: \sample
prints the \table and the text; \bigtest gives you the works, plus a mysterious word
that is traditional in type specimens:
\def\sample{\table\text}
\def\bigtest{\sample
hamburgefonstiv HAMBURGEFONSTIV\par
\names \punct \lowers \uppers \digits}
Finally, there™s a \math routine useful for checking out the spacing in the math
italic fonts used by plain TEX; \mathsy does a similar thing for the uppercase letters
in a math symbols font.
\def\math{\textfont1=\testfont \skewchar\testfont=\skewtrial
\mathchardef\Gamma="100 \mathchardef\Delta="101
\mathchardef\Theta="102 \mathchardef\Lambda="103 \mathchardef\Xi="104
\mathchardef\Pi="105 \mathchardef\Sigma="106 \mathchardef\Upsilon="107
\mathchardef\Phi="108 \mathchardef\Psi="109 \mathchardef\Omega="10A
342 Appendix H: Hardcopy Proofs


\def\ii{i} \def\jj{j} init
fontname
\def\\##1{|##1|+}\mathtrial
startfont
\def\\##1{##1_2+}\mathtrial
\def\\##1{##1^2+}\mathtrial
\def\\##1{##1/2+}\mathtrial
\def\\##1{2/##1+}\mathtrial
\def\\##1{##1,{}+}\mathtrial
\def\\##1{d##1+}\mathtrial
\let\ii=\imath \let\jj=\jmath \def\\##1{\hat##1+}\mathtrial}
\newcount\skewtrial \skewtrial=™177
\def\mathtrial{$\\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 \\a \\b \\c \\d \\e \\f
\\g \\h \\\ii \\\jj \\k \\l \\m \\n \\o \\p \\q \\r \\s \\t \\u \\v \\w
\\x \\y \\z \\\alpha \\\beta \\\gamma \\\delta \\\epsilon \\\zeta
\\\eta \\\theta \\\iota \\\kappa \\\lambda \\\mu \\\nu \\\xi \\\pi
\\\rho \\\sigma \\\tau \\\upsilon \\\phi \\\chi \\\psi \\\omega
\\\vartheta \\\varpi \\\varphi \\\Gamma \\\Delta \\\Theta \\\Lambda
\\\Xi \\\Pi \\\Sigma \\\Upsilon \\\Phi \\\Psi \\\Omega
\\\partial \\\ell \\\wp$\par}
\def\mathsy{\begingroup\skewtrial=™060 % for math symbol font tests
\def\mathtrial{$\\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$\par}
\math\endgroup}
The last line of testfont is
\ifx\noinit!\else\init\fi
and it means “automatically call ˜\init™ unless ˜\noinit™ is an exclamation point.”
Why this? Well, you might have your own test ¬le from which you™d like to use the
facilities of testfont, without typing commands online. If your ¬le says ˜\let\noinit!
\input testfont™ TEX will read in testfont but the routine will not prompt you for
a ¬le name. The ¬le can then continue to test one or more fonts by saying, e.g.,
\def\fontname{cmbx10 }\startfont\sample\vfill\eject
\def\fontname{cmti10 scaled \magstep3}\startfont\sample\vfill\eject
thereby de¬ning \fontname directly, and using \startfont to do the initialization
instead of \init.
To conclude this appendix, let™s look at the listing of a ¬le that can be used
to test special constructions in math fonts with the conventions of plain TEX:
\raggedright \rightskip=2em plus 5em minus 2em
$\hbar \not\equiv B$, but $\sqrt C \mapsto \sqrt x$,
$Z \hookrightarrow W$, $Z \hookleftarrow W$,
$Z \longmapsto W$, $Z \bowtie W$, $Z \models W$,
$Z \Longrightarrow W$, $Z \longrightarrow W$,
$Z \longleftarrow W$, $Z \Longleftarrow W$,
$Z \longleftrightarrow W$, $Z \Longleftrightarrow W$,
$\overbrace{\hbox{very long things for testing}}$,
Appendix H: Hardcopy Proofs 343


$\underbrace{\hbox{very long things for testing}}$, SHAKESPEARE
DAVIS
$Z \choose W$, $Z \brack W$, $Z \brace W$, $Z \sqrt W$,
HERSH
$Z \cong W$, $Z \notin W$, $Z \rightleftharpoons W$,
$\widehat Z$, $\widehat{ZW}$, $\widehat{Z+W}$,
$\widetilde Z$, $\widetilde{ZW}$, $\widetilde{Z+W}$.
\def\sizetest#1#2{$$
\Bigggl{#1}\bigggl{#1}\Biggl{#1}\biggl{#1}\Bigl{#1}\bigl{#1}\left#1
\bullet
\right#2\bigr{#2}\Bigr{#2}\biggr{#2}\Biggr{#2}\bigggr{#2}\Bigggr{#2}$$}
\def\biggg#1{{\hbox{$\left#1\vbox to20.5pt{}\right.$}}}
\def\bigggl{\mathopen\biggg} \def\bigggr{\mathclose\biggg}
\def\Biggg#1{{\hbox{$\left#1\vbox to23.5pt{}\right.$}}}
\def\Bigggl{\mathopen\Biggg} \def\Bigggr{\mathclose\Biggg}
\sizetest () \sizetest [] \sizetest \lgroup\rgroup
\sizetest \lmoustache\rmoustache \sizetest \vert\Vert
\sizetest \arrowvert\Arrowvert \sizetest \uparrow\downarrow
\sizetest \updownarrow\Updownarrow \sizetest \Uparrow\Downarrow
\sizetest \bracevert{\delimiter"342} \sizetest \backslash/
\sizetest \langle\rangle \sizetest \lbrace\rbrace
\sizetest \lceil\rceil \sizetest \lfloor\rfloor
$$\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{-1}}}}}}}}}$$
\def\dobig{\do\bigvee \do\bigwedge \do\bigotimes \do\bigoplus \do\bigodot
\do\bigcap \do\bigcup \do\biguplus \do\bigsqcup
\do\int \do\ointop \do\smallint \do\prod \do\coprod \do\sum}
\def\do#1{#1_a^b A} $\dobig$ $$\dobig$$
\bye




Be sure of it: Giue me the Occular proofe.
” WILLIAM SHAKESPEARE, Othello (1604)

The ¬gure itself appears here
as a very necessary adjunct to the verbalization.
In Euclid™s presentation we cannot wholly follow the argumentation
without the ¬gure, and unless we are strong enough
to imagine the ¬gure in our mind™s eye, we would also be reduced
to supplying our own ¬gure if the author had not done it for us.
Notice also that the language of the proof has a
formal and severely restricted quality about it.
This is not the language of history, nor of drama,
nor of day to day life;
this is language that has been sharpened and re¬ned so as to serve
the precise needs of a precise but limited intellectual goal.
” P. J. DAVIS and R. HERSH, Proof (1981)
(page 344)




I
Index
Appendix I: Index 345


The author has tried to provide as complete an index as possible, so that people
will be able to ¬nd things that are tucked away in obscure corners of this long
book. Therefore the index itself is rather long. A short summary of the simpler
aspects of appears at the beginning of Appendix B; a summary of
the standard character classes for tokens can be found at the end of Chapter 6;
a summary of other special things appears under ˜tables™ below.
Page numbers are underlined in the index when they represent the de¬nition
or the main source of information about whatever is being indexed. (Underlined entries
are the most de¬nitive, but not necessarily the easiest for a beginner to understand.)
A page number is given in italics (e.g., ˜123 ™) when that page contains an instructive
example of how the concept in question might be used. Sometimes both underlining
and italics are appropriate. When an index entry refers to a page containing a relevant
exercise, the answer to that exercise (in Appendix A) might divulge further information;
an answer page is not indexed here unless it refers to a topic that isn™t included in the
statement of the relevant exercise.
Index entries for quoted symbols like ˜T™ refer to example programs that draw
the symbols in question.
Symbolic tokens that are preceded by an asterisk (*) in this index are primi-
tives of ; i.e., they are built in. It may be dangerous to rede¬ne them.

6test.mf, 312“313. *{ (left brace), 16“18, 60, 129, 213.
# (hash mark), see sharped dimensions. {{, 61, 289.
˜#™, 200“201. *} (right brace), 16“18, 60, 129, 213.
## (traced equation), 80“83, 239. }}, 61, 289.
### (removed independent variable), 83. *+ (plus sign), 62, 63, 72, 80, 211.
#### (deduced equation), 81. *++ (Pythagorean addition), 66, 67, 72, 211.
*#@ (pre¬x of at point), 177, 251. (double edge), 117, 296“297.
% (percent sign), 43, 50. +++ (triple edge), 296“297.
*& (ampersand), 213“214, see concatenation. *+-+ (Pythagorean subtraction), 66,
for preloaded bases, 35, 279. 72, 211, 238.
™ (apostrophe or prime), 25, 55, 81. *- (minus sign), 62, 63, 72, 80, 211, 297.
" (double-quote mark), 50“51. -- (straight join), 24“26, 127“129, 234, 262.
"" (empty string), 188, 236, 254, 276, (double edge), 117, 296“297.
294, 328. --- (tense join), 107, 127“129, 262.
˜(™, 103“105, 128, 318. (triple edge), 296“297.
( (left parenthesis), 59, 60, 61, 62“63, -> (macro expansion), 44, 160, 249, 251.
71“73, 165, 210“215. ˜”™ (em dash), 306.
((, 51. _ (underline), 49, 51, 173, 265, 270.
) (right parenthesis), 59, 60, 61, 62“63, * (asterisk), 285“286.
71“73, 165, 210“215. as prompt character, 31, 37, 279.
)), 51. *as times sign, 59, 62“64, 72, 73,
*[ (left bracket), 9“10, 54, 55, 60, 72, 80, 80, 211“212.
211“212, 298“299, 324. **, as command-line prompt, 31“32,
[[, 61. 35“40, 187, 269, 279.
[] (collective subscript), 56, 177, 273. as exponentiation sign, 59, 64, 72,
[1] (progress report), 37, 324. 237, 251, 265.
*] (right bracket), 9“10, 54, 55, 60, 72, 80, / (slash), 328, 329.
211“212, 298“299, 324. *as divided-by sign, 59, 62, 63, 72,
]], 61, 162, 262, 299. 80, 82, 210“211.
346 Appendix I: Index


| (vertical line), 117, 297. abs (absolute value), 66, 82, 238, 264.
accents, 315, 317.
*\ (backslash), 179, 236, 262.
at beginning of command line, 31, 38, 40. accuracy, 50, 62“69, 143, 237.
\\, 262. ad hoc dimensions, 92, 95.
< (less than sign), 64, 65, 170, 210, 237. Adams, John, 359.
*
*<= (less than or equal to), 64, 65, 170, addition of pictures, 115, 117, 245.
210, 282. addition of vectors, 9, 68.
<- (argument value), 160. *addto, 118“119, 144, 151, 242“245.
<> (unequal to), 64, 65, 170, 210, 282. addto command , 220.
*
(angle brackets), 49“50. adjust_fit, 306“308.
*= (equals sign), 5, 6, 23, 64, 75“85, 88, 97, Æschylus, 47.
165, 167, 170, 171, 210, 218. Æsopus, 340.
==, 292. a¬ne transformations, 247.
*=: (ligature replacement), 305, 306, algebraic operations, 59“73, 209“215, 230.
316, 317. Algol, 57, 89.
|=:, 316, 317. Alingham, William, 189.
*
*|=:>, 317. Allen, Fred (= Sullivan, John Florence), 85.
*=:|, 317. almost digitized character, 296.
*=:|>, 317. *also, 118, 220, 242“245.
*|=:|, 317. \alternation, 338.
*|=:|>, 317. alternatives, 169.
*|=:|>>, 317. always_iff, 307, 311“312.
/ (unequals sign), 282. ambiguous points, 150, 198“200, 204.
=
> (greater than sign), 64, 170, 210, 237. American Mathematical Society, ii, ix.
*
>> (shown value), 41, 62. anatomy of , 169, 179,
217, 285, 344.
>= (greater than or equal to), 64, 65,
*
170, 210, 282. *and, 65, 129, 170, 210, 213, 288“289.
Anderson, Izett William, 299.
*, (comma), 57, 72, 73, 129, 155, 165“167,
171, 317, 318. *angle, 29, 67, 72, 107, 135, 211.
,, , 51. angle brackets, 49“50.
. (period), 43, 50, 51. angle of pen, 21“22, 26“28, 152, 164.
˜.™, 306. arguments, 159“160, 166“167, 210, 288.
*.. (free join), 7, 15“19, 24, 127“133, 213. arithmetic, 59“63.
... (bounded join), 18“19, 44, 127, arrays, 54“57.
248, 262. ASCII, 49, 188, 281“283, 317.
*; (semicolon), 155, 169, 171, 172, 187, *ASCII, 72, 188, 211.
217, 223“224, 263, 312. aspect_ratio, 94, 145, 204, 269, 335.
;; , 51. assignment , 88.
: (colon), 169, 317“319. assignments, 28, 33, 87“89, 98, 159.
*
*:: (local label), 317. *at, 191, 220, 252, 277, 312.
*||: (left boundary label), 317. at size, 96, 319.
*:= (gets), 28, 33, 87, 88, 97, 98, 155“156, *atleast, 129, 132, 213, 262.
159, 165, 167, 171, 176, 218, 282. *autorounding, 127, 195, 204“205, 206,
?, 41, 42“43. 212, 262, 264, 271“272.
???, 224, 262. axis, 103.
! (exclamation point), 41, 189.
˜b™, 308.
*@ (at point), 177, 251.
background character, 40, 338“339.
*@# (su¬x of at point), 176, 177, 178,
Backus, John Warner, 49.
251, 273“274.
backwards path, 119.
˜a™, 192. badio.mf, 41, 223.
˜A™, 163, 164, 248, 302“303. barheight, 96, 161, 199, 302“303.
abort, 312“313. base ¬le, 34“35, 261, 278“279, 304, 307.
Appendix I: Index 347


baseline, 75“77, 101. Burns, Robert, 299.
basic path join , 129, 213. bye, 278, 279, 306, 321, 324.
batchmode, 219, 226. byte, 264, 275.
*
BCPL strings, 320. byte list , 318.
bean-like shape, 15“16, 21“22, 24“25.
c code, 106, 324.
beauty, v, 185.
Camden, William, 51.
Beethoven, Ludwig van, 185.
Campbell, John Campbell, 359.
beginchar, 35, 76, 96, 102“103, 107, 115,
cand, 288“289.
148, 156, 197, 199, 204, 275, 316.
CAPSULE, 239.
begingroup, 155“157, 175, 178, 210“215,
*
capsule_def, 264.
217, 236, 243, 275, 289.
capsules, 159, 166, 172, 210, 239, 247,
beginlogochar, 160, 302.
254, 264.
Bell, Eric Temple, 11.
Carter, Matthew, 207.
bell-shaped distribution, 251.
Cartesian coordinates, 5“6, 191.
Bernshte˜ Serge˜ Natanovich, 14.
±n, ±
cc (cicero), 92, 267, 268.
polynomials, 14, 133, 152, 246, 298“299.
ceiling, 65, 66, 72, 264.
B´zier, Pierre Etienne, 14.
e
\centerlargechars, 340, 341.
Bibby, Duane Robert, i.
chance, 183“185.
Bierce, Ambrose Gwinnett, ix.
change_width, 199, 276, 309.
\bigtest, 341.
*char, 187, 188, 214, 263.
Billawala, Nazneen Noorudin, 266, 294.
*charcode, 106, 210, 212, 220, 275, 324.
binary search, 176“177, 293“294.
*chardp, 106, 212, 220, 275, 315“316, 324.
black, 270, 332“333.
*chardx, 106, 212, 220, 276, 324, 334.
black-letter, 294.
*chardy, 212, 324.
black/white reversal, 115.
*charexists, 106, 210, 316, 324.
blacker, 93“94, 268, 270“271.
*charext, 106, 212, 220, 316, 324.
blankpicture, 192, 263.
*charht, 106, 212, 220, 275, 315“316,
Boole, George, 170.
324, 334, 335.
*boolean, 55, 56.
*charic, 106, 212, 220, 275, 315“316, 324.
boolean expression , 170, 210.
*charlist, 317, 318, 331, 334, 335.
Boolean expressions, 170, 257.
charlist command , 318.
boolean primary , 170, 210.
charwd, 106, 212, 220, 275, 315“316,
*
boolean secondary , 170, 210.
324, 334, 335.
boolean tertiary , 170, 210.
cheapo, 91“93, 99, 278“279, 332“333.
bot, 23, 80, 147, 151, 204, 273.
check sums, 320, 324, 325.
boundaries, 24“29, 123“125.
Chinese characters, 3, 106, 324.
*boundarychar, 212, 317.
circles, 123“124, 148.
bounded curves, 19, 132.
clear_pen_memory, 147, 273, 278, 310.
bounding box, 22, 35, 76, 101“107,
clearit, 115, 242, 275, 277, 295.
276, 307, 315.
clearpen, 272, 275.
bounding triangle, 19, 132.
clearxy, 275, 277.
box, see bounding box.
cm (centimeter), 18, 92, 267, 268.
bp (big point), 92, 267, 268.
cm.base, 35, 279, 311.
braces, 16“18, 60, 129, 213.
cmchar, 306, 307, 312“313.
bracket notation, see mediation.
cmex10, 317“318.
brackets, 9“10, 54, 55, 60, 72, 80, 211“212,
cmmf, 35, 279.
298“299, 324.
cmr9, 203, 320.
broad-edge pens, 26“29, 151“152, 162“165.
cmr10, 101, 305“306, 319.
Bront¨, Emily Jane, 73.
e
cmr10.mf, 305.
Bruck, Richard Hubert, 29.
cmsl10, 101.
bu¬er size, 226, 286.
cmtt10, 306.
built-up symbols, 318.
Burkitt, William, 99. code , 317.
348 Appendix I: Index


codes, 281“283. currentpicture, 114, 115, 116, 118, 120,
191, 271“272, 295.
Colburn, Dorothy, 107.
collective subscripts, 56, 177. currenttransform, 94, 145, 204, 269,
271, 301, 310.
command , 217.
command line, 38, 187, 269, 277, 301. currentwindow, 192, 312.
commands, 155, 217“220, 230, 321. curves, 13“19, see paths.
comments, 43, 50“51. cusps, 136.
commutativity, 247. cutdraw, 151, 271“272.
comparison, 65“66, 80, 170. cutoff, 150, 272.
compass directions, 26, 119, 206“207, *cycle, 15, 16, 24“28, 69, 129“131, 170,
228“229. 171, 210, 213.
complex numbers, 69.
d, 35, 76, 102, 204, 275.
compound , 217.
˜d™, 294.
compound statement, 155, 217.
da Vinci, Leonardo, 19.
Computer Modern, 35, 103“105, 203,
dangerous bend, vii, 11, 106“107, 115, 143.
206, 279, 304“313.
Darwin, Charles Robert, 57.
concatenation, of paths, 70“71, 123,
data structures, 53“57.
127, 129, 130, 245.
Davis, Philip Jacob, 343.
of strings, 69, 84“85, 187, 278, 286, 312.
*day, 212, 218, 323.
condition , 169.
dd (didot point), 92, 267, 268.
conditional and/or, 288“289.
de Casteljau, Paul de Faget, 14.
conditions, 169“171, 179, 219, 259.
debugging tricks, 229“231, 286.
constants, 59, 62, 263“264.
*decimal, 187“188, 214.
contents of this manual, table, x“xi.
decimal digit , 50.
*contour, 118“119, 220.
decimal point, 50“51.
control points, 13“19, 70“71, 133, 229.
decimal representation, 188.
*controls, 19, 70“71, 129“130, 133, 152, 213.
declaration , 56, 171.
controls , 129, 213.
declaration list , 57.
conversion to pixel units, 259, 268.
declarations, 56“57.
convex polygons, 119, 147, 297“298.
declarative versus imperative, 87.
Conway, John Horton, 121.
declared su¬x , 57.
coordinates, 5“11, 23, 109, 191, 193.
declared variable , 57, 175.
cor, 288“289.
decr, 266.
corner pixels, 93“94.
def, 36, 159“162, 165“167.
*cosd, 67, 72, 211. *
default_wt_, 271“272.
cosines, 67, 69.
define_blacker_pixels, 33, 92“93,
counterclockwise, 111, 119, 229, 255.
106, 268, 302.
counterclockwise, 264.
define_corrected_pixels, 93, 197, 268, 302.
Cowper, William, 51.
define_good_x_pixels, 199, 268, 302.
craziness, 184“185.
define_good_y_pixels, 199, 268, 302.
crispness, 103“104.
cube roots, 177. define_horizontal_corrected_pixels,
204, 268, 302.
cubes, 113.
define_pixels, 33, 92, 106, 199, 268, 302.
*cull, 118, 120, 151, 243“245.
define_whole_blacker_pixels, 202, 268.
cull command , 118, 220.
define_whole_pixels, 199, 268, 302.
culldraw, 271, 272.
culling, 113, 120, 151, 242“245, 296. define_whole_vertical_blacker_pixels,
268.
cullit, 113, 120, 242, 243, 277.
define_whole_vertical_pixels, 204,
Cundall, Frank, 299.
268, 302.
*curl, 17, 128“131, 213, 234.
de¬nition , 165.
currentbreadth, 310“311.
de¬nition heading , 165.
currentnull, 295.
currentpen, 118, 147, 150, 204, 271“272. de¬nitions, 159“167, 175“180.
Appendix I: Index 349


deleting tokens, 42“43, 225. driver ¬les, 304“306.
delimited parameters , 165. *dropping, 118, 120, 220.
delimiters, 61, 167, 210, 254, 288“289. D¨rer, Albrecht, 13, 19.
u
*delimiters, 61, 180, 210, 218, 221, *dump, 217, 221, 262, 279, 311.
262, 296, 299, 313. .dvi, 32, 40, 103, 106, 323, 327, 328.
delimiters command , 218.
e, 27“29, 273.
dependent variables, 81“83, 88, 224.
˜E™, 96“97, 204, 302“303.
depth, 101.
edge structure, 116“117, 296“297.
Derek, Bo, 287.
edges, 116.
Descartes, Ren´, 6, 11, 19.
e
editing, 46.
design size, 96, 319“320, 324, 329.
e¬ciency, 39, 99, 141, 144, 147, 228, 230,
designsize, 212, 320.
*
234, 244, 264, 265, 277, 291, 297, 298.
device drivers, 323, 325.
El Palo Alto, 124“126, 139, 228“229.
diagnostic aids, 229“231, 259, 286.
ellipses, 123, 126.
diamond-shaped nib, 148“149, 297.
Ellis, Henry Havelock, 11.
Dickens, Charles John Hu¬am, 145.
*else, 169“170, 179.
di¬erence of pictures, 115, 244.
*elseif, 169“170, 179.
digestion process, 179, 217“221.
em dash, 306.
digit string , 50.
emergency stops, 226.
digitization, 111, 149, 195“207, 230.
empty option in for list, 171, 299.
\digits, 339.
empty statement, 155, 217.
dimensions, 92, 267.
empty text argument, 299.
dir, 18, 67, 68, 83“84, 135, 163“164,
*end, 31, 37, 155, 167, 217, 221, 226,
175, 233, 264.
278, 287, 305, 321.
direction, 69, 70, 135, 235, 265.
end of a ¬le, 287.
direction speci¬er , 129, 213.
endchar, 36, 102, 156, 191, 276, 309,
directionpoint, 135, 265.
311, 329.
*directiontime, 135, 136, 211, 245, 265, 295.
enddef, 94, 159“164, 165, 175“178.
*
dishing, 152, 164.
*endfor, 18, 39, 171“172, 173, 250, 290.
display, 191“192, 220.
*
ENDFOR, 45, 286, 290.
display command , 220.
*endgroup, 155“157, 167, 175, 178, 210“215,
displaying, 269, 276, 278.
217, 236, 243, 276, 289, 290.
distance, 76, 84.
ending character, 40, 338“339.
ditto, 187, 263.
*endinput, 179, 287“288.
div, 265.
endpoints, 128, 150“151.
division, 59, 62, 63, 80, 82.
ENE, 119, 206“207, 228.
of numeric tokens, 61, 73.
enormous number, 63, 236.
Dopping, Olle, 181.
envelopes, 118“119, 150, 230.
dot, 306, 311.
eps, 93, 199“200, 229, 263, 310“311.
dot product, 69.
epsilon, 62“69, 115, 135, 152, 229, 263.
dotprod, 69, 178, 238, 265.
equality test, general, 292.
dotsize, 332, 334.
equality versus equation, 171.
double-quote mark, 50“51, 187.
equally_spaced, 290.
*doublepath, 118, 119, 151, 220.
equation , 88.
doubly ¬lled pixels, 110“112.
equations, 5, 6, 23, 75“85, 88, 141, 171.
down, 32, 263.
nonlinear, 84“85, 176“177, 292“294.
downto, 172, 262.
equilateral triangle, 25, 203.
draw, 7, 15“19, 21, 112, 118“120, 145, 147,
erase, 113, 120, 167, 271, 272.
150, 198, 230, 271, 295.
errhelp, 189, 219, 294.
one point, 22, 150, 200, 253. *
*errmessage, 178, 189, 219, 294.
drawdot, 31, 113, 147, 150, 234, 271.
error messages, 41“46, 223“228.
Drayton, Michael, 279.
*errorstopmode, 219, 227, 313.
drift, 102, 106.
350 Appendix I: Index


font_coding_scheme, 277, 303, 304,
ESE, 206“207, 228“229.
320“321.
*everyjob, 180, 219.
font_extra_space, 277, 319.
everyjob command , 219.
font_identifier, 277, 303, 304, 305,
Evetts, L. C., 153.
320, 332“333.
exercises, viii, 5“231.
font_normal_shrink, 97, 276, 305, 319.
exit clause , 171.
font_normal_space, 97, 276, 305, 319, 332.
exitif, 171, 173, 176, 179, 262.
*
font_normal_stretch, 97, 276, 305, 319.
exitunless, 173, 262.
font_quad, 97, 277, 308, 319, 332.
expandable tokens, 179, 230.
font_setup, 203, 305, 309“312.
*expandafter, 179, 180, 270, 286“290, 313.
font_size, 95, 96, 276.
expansion process, 179“180, 285“291.
font_slant, 276, 305, 319, 331, 335“336.
exponential, see mexp.
font_x_height, 277, 319, 332.
*expr, 160, 162, 165, 166, 167, 176, 210.
*fontdimen, 276“277, 318“319, 331“332, 335.
(EXPRn ), 44, 160, 249, 251.
fontdimen command , 318.
expr.mf, 61, 62“71, 116“117, 132, 135“137,
fontmaking, 54, 94, 211, 270, 315.
142“143, 150, 173. *
\fontname, 342.
expression , 167, 209.
*for, 18, 39, 113, 171“173, 179, 228,
expressions, 59“73, 209“215.
285“291, 299.
*extensible, 318.
for list , 171, 299.
extensible command , 318.
forbidden tokens, 173, 218“219, 286.
external tags, 55, 218.
forever, 61, 171“173, 176, 179.
extra_beginchar, 275“276, 278. *
*forsuffixes, 171“172.
extra_endchar, 276, 277, 309.
FORTRAN language, 237.
extra_setup, 269, 270, 278.
four codes , 318.
! Extra tokens will be flushed,
four-point method for curves, 13“14, 133.
43“44, 224“225.
Fournier, Simon Pierre, 321.
˜F™, 97, 204, 302“303. fractions, 61, 62“63, 72, 73.
*false, 55, 64“65, 170, 210. *from 191, 220, 252, 277, 312.
faster operation, 39, 99, 141, 144, 147, fullcircle, 114, 123“124, 126, 135“137,
228, 230, 234, 244, 264, 265, 277, 263, 266.
291, 297, 298. Fulton, A. G., 157.
Fatal base file error, 226. function values by interpolation, 294“295.
fatter pens, 297“298. future pen primary , 148, 214.
*fi, 169“170, 179. future pen secondary , 148, 214.
! File ended..., 287. future pens, 148“149, 170, 249, 264, 298.
¬le names, 36, 39, 180, 324, 329.
Galsworthy, John, 215.
¬lename , 179“180.
Gardner, Martin, 126.
fill, 24“27, 109“112, 116, 118“121,
generate, 305, 307, 311, 313.
145, 167, 271, 295.
gf, 32, 241, 295, 323“325.
filldraw, 103“105, 112“113, 118“119, 147,
148, 152, 164, 230, 271, 306, 310. gfcorners, 277, 278, 327.
*fillin, 93“94, 150, 212, 247, 268, 278“279. GFtoDVI, 32, 37, 187, 327“336.
fine, 103“104, 306“307, 310“311. gimme, 61“62.
fine.lft, 311. Giotto de Bondone, 139.
fix_units, 267. gobble, 167, 262, 289.
¬‚at spots, 196“197. gobbled, 262, 289“290.
flex, 124“125, 127, 152, 173, 228“229, 267. golden ratio, 11.
*floor, 65, 66, 72, 83, 211, 253. good.bot, 204, 273.
¬‚ushing, 43“44, 219, 224“225. good.lft, 204, 273.
Font, Fray Pedro, 139, 231. good.rt, 204, 273.
font metric command , 321. good.top, 204, 273.
good.x, 198, 268, 273.
font metric information, 39, 220, 315“321.
Appendix I: Index 351


good.y, 198, 204, 268, 273. ˜I™, 28, 32, 39, 163, 164.
! I can™t go on, 226.
Goudy, Frederic William, 19.
IBM Corporation, ix.
grammatical rules, 49“50.
identity, 141“145, 215, 263.
*granularity, 205, 212, 262, 310.
if, 169“170, 179, 289.
*
graph paper, 5, 102, 109, 188.
iff, 306, 307, 311.
gray, 332.
imagerules, 277, 278.
gray fonts, 327, 330“335.
imperative versus declarative, 87.
grayf.mf, 332“335.
impossible cube, 113.
grayfont, 270, 275, 323, 329.
in (inch), 92, 267, 268.
grayfontarea, 329.
inaccessible token, 286.
grayfontat, 329.
incomplete string, 50“51.
greater than or equal to, 65.
inconsistent equations, 82, 313.
greatest integer function, see ¬‚oor.
incr, 39, 176“177, 266.
grid, 5, 109, 275.
independent variables, 81“83, 88, 224.
Grimm, Jakob Ludwig Karl, 73.
in¬nite loops, 172, 226“227.
Grimm, Wilhelm Karl, 73.
infinity, 62“69, 263, 266.
group delimiters, 289.
in¬‚ection points, 18“19.
group expressions, 157, 160.
INIMF, 221, 262, 279.
groups, 155“157, 167.
\init, 342.
Gu Guoan, 3.
initial value , 171.
*inner, 180, 218“219, 286“287, 307, 321.
h, 22“25, 35“36, 76“78, 102, 204, 275.
inorder, 290.
˜H™, 163, 165.
*input, 179, 180, 269, 287“288, 324.
Haggard, Sir Henry Rider, 107.
input stack size, 226, 287.
hairlines, 104“105.
inserting text online, 42, 45, 61, 188,
halfcircle, 123, 136, 263.
223“225.
hamburgefonstiv, 341.
integers, 65“66.
hand tuning, 195.
interact, 230, 262.
*headerbyte, 318, 320“321.
interacting with , 42“45, 61,
headerbyte command , 318.
188“189, 191“193, 219, 223“225.
hearts, 134.
interim, 155“156, 230, 243, 244, 271, 272.
*
height, 101.
interim command , 155, 218.
Hein, Piet, 126, 231.
internal quantities, 54“55, 88, 218, 262.
help messages, 43“45, 189, 224“225.
table, 211“212.
Herbin, Auguste, 3.
internal quantity , 156, 218, 265.
Hersh, Reuben, 343. interpath, 134, 267.
*hex, 188, 211, 281. interpolation, 2, 134, 294“295.
hex symbol, 7“8, 28“29. interrupting , 219, 227“228, 313.
hexadecimal notation, 188. intersection, of lines, 84.
hide, 116, 143, 167, 173, 227, 262. of paths, 136“137.
hierarchy of operators, 60“61, 71“73, of pictures, 120.
137, 209, 289. intersectionpoint, 107, 137, 138, 178, 265.
histogram, 251. *intersectiontimes, 136, 178, 213,
Hobby, John Douglas, viii, 3, 130, 131, 265, 294, 298.
149, 252, 285. inverse, 143, 264.
holes, 110. inverse video, 115, 118.
Holland, Philemon, 51. *inwindow, 191, 277.
Homerus, 51. Io, 33, 40, 47.
homogeneous transforms, 247. is , 165, 171, 218.
*hppp, 92“93, 212, 267, 268, 324. Isis, 40.
hround, 264, 268. ! Isolated expression, 223.
Hult´n, Karl Gunnar Pontus, 3.
e isolated math characters, 316, 319.
352 Appendix I: Index


italcorr, 103“105, 275, 303, 306, 316. leveldef , 178.
italic corrections, 102, 105, 275, 276, leveldef heading , 165, 178.
304, 315“316, 319. lft, 23, 77, 80, 147, 151, 273.
italic type, 55, 206, 341. lies, viii, 231.
Life, 121.
jaggies, 201.
ligature op , 317.
*jobname, 187, 214, 324. ligatures, 305“306, 315“317.
Johnson, Samuel, 167.
lightweight, 332.
Johnston, Edward, 29.
*ligtable, 97, 305, 316“317.
join_radius, 266.
ligtable command , 317.
jokes, viii, 231.
ligtable program , 317.
Journal of Algorithms, 137“139.
ligtable step , 317.
jut, 162, 308.
limit value , 171.
line, point to be on, 83“84.
Kafka, Franz, 340.
linear dependencies, 82“83.
Kandinski˜ Vasili˜ Vasil™evich, 3.
±, ±
linear forms, 64, 82.
keep or drop , 118, 120.
Linn´, Karel von (= Linn¦us), 325.
e
*keeping, 118, 120, 220.
local.mf, 278“279, 321.
keepit, 295.
localfont, 39, 271, 278, 279.
kern, 97, 316, 317.
*
locations of characters within a font,
kerning, 97, 316“317.
106“107, 281“283, 320.
killtext, 262, 272.
Lockyer, Sir Joseph Norman, 57.
knife, 24.
log ¬le, 42, 46, 62, 230, 295“297.
*known, 65, 79“82, 143, 170, 210.
logarithm, see mlog.
Knuth, Donald Ervin, i, ii, ix, 3, 134, 192,
loggingall, 230, 263.
206, 255, 282, 291, 304, 308, 345, 361.
logo of , ii, 22“23, 95“99,
Knuth, Nancy Jill Carter, ix, 134, 137.
160“161, 184“185, 199“200, 204,
l, 308“309. 301“304.
La Rochefoucald, Fran¸ois VI, 313.
c logo.mf, 95“98, 199, 302“303.
label , 317. logos, i, 97, 114, 137“139.
labeled code , 318. logo10.mf, 95, 287, 301, 304.
labelfont, 275, 329. loop , 171.
labelfontarea, 329. loop header , 171.
labelfontat, 329. loop text, 171“172, 219, 286.
labels, 107, 274“275, 327“328. loops, 169, 179, 226“227, 259, 290“291, 299.
labels in font metric information, 317“318. low-resolution proofs, 99, 327.
labels on proofmode output, 37, 187, \lowers, 339.
274“275. lowres, 196, 201, 230, 270.
labels.top, 328. lowres_fix, 203, 268, 310.
Lam´, Gabriel, 126.
e luxo, 91“94, 99, 195, 278“279.
large_pixels, 332.
˜M™, 23, 97, 200, 302“303.
lcode_, 274, 328.
macros, 36“37, 53, 114, 159“167,
le B´, Pierre, 207.
e
175“179, 285“299.
least integer function; see ceiling.
mag, 39, 91“93, 98, 169, 230, 269, 278,
Leban, Bruce Philip, 242, 243, 270, 295.
333“334.
left, 16, 263.
magnets, 60“61.
left-handed dangerous bend, 143.
magni¬cation, 38“40, 91“99.
leftstemloc, 96, 199, 302.
magstep, 98, 270.
*length, 66, 69, 72, 211, 238.
makebox, 270, 276, 309.
less than or equal to, 65.
makegrid, 275.
*let, 53, 180, 218, 287“289, 299, 311.
makelabel, 274, 328.
let command , 218.
*makepath, 150, 213, 247, 298.
letter_fit, 307“308.
Appendix I: Index 353


*makepen, 147“148, 214, 264. Mulford, Clarence Edward, 89.
multiplication, 59, 62“64, 69, 79“80, 82.
maketicks, 270, 276, 309.
of vector by scalar, 9.
mastication, 169, 179, 285.
music, 183, 185.
\math, 341.
Matthew, Saint, 173.
˜n™, 201“203.
max, 65, 266, 290“291.
˜N™, 184“185, 303.
maximum, 65.
\names, 339.
mediation, 9“11, 14, 63, 68, 72, 80,
National Science Foundation, ix.
133, 298“299.
Naur, Peter, 49, 89.
memory usage, 226“227.
negation, of pictures, 115.
*message, 61, 189, 262.
of vectors, 9.
message command , 189, 219.
new_window, 193.
message op , 189, 219.
*newinternal, 180, 218.
meta-design, 1“3, 103“105, 294.
newinternal command , 218.
meta-font, 1“3, 98, 192, 301“304.
nice tangent points, 177.
meta-ness, 3, 301.
NNE, 119, 228.
, the logo, ii, 22“23, 95“99,
NNW, 26, 119, 228“229.
160“161, 184“185, 199“200, 204,
nodisplays, 277, 278.
301“304.
nodot, 274, 328.
the name, 1“3.
nonlinear equations, 84“85, 176“177,
METAFONT capacity exceeded, 226“227.
292“294.
79, viii.
nonsquare pixels, 94, 145, 204.
mexp, 67, 72, 211, 265, 270.
*
*nonstopmode, 219, 226.
mf, 31, 35.
*normaldeviate, 68, 72, 183“185, 210.
.mf, 36.
*not, 65, 170, 210.
mfput, 31“32, 187, 324.
notransforms, 277, 278.
MFT, 262.
*nullpen, 148, 214, 272.
midpoints, 9, 13.
*nullpicture, 115, 192, 214, 272, 277.
Mies van der Rohe, Ludwig, 185.
*numeric, 55, 56, 65, 88.
min, 65, 266, 290“291.
numeric atom , 72, 210.
minimum, 65.
numeric expression , 72, 211.
Mirk, John, 313.
numeric expressions, 72“73, 257.
! Missing ˜)™ has been inserted, 254.
numeric list , 318.
misspelling, 45, 224.
numeric operator , 72, 211.
\mixture, 40, 338.
numeric primary , 72, 211.
*mlog, 67, 72, 211, 265. numeric secondary , 72, 178, 211.
mm (millimeter), 76, 91“92, 267, 268.
numeric tertiary , 72, 211.
M¨bius, August Ferdinand, 114.
o
numeric token , 50, 236.
mock curvature, 131.
numeric token primary , 72, 210.
mod, 66, 265.
numeric tokens, 49“50, 166.
mode, 38“39, 75, 91“94, 269, 278.
maximum value, 50.
mode command , 219.
rounded fractional values, 50.
mode_def, 94, 189, 270, 278“279.
numeric_pickup_, 272, 310.
mode_name, 269.
*numspecial, 220, 274, 323“324, 327“329.
mode_setup, 32“34, 75, 76, 91“94, 96, 115,
numtok, 274.
169, 269, 278, 304, 305, 329.
mono_charwd, 308. o, 23, 34, 93, 197, 200, 204, 302.
monospace, 305“308. ˜o™, 203.
*month, 212, 323. ˜O™, 32“37, 199, 303.
More, Sir Thomas, 215. o_correction, 93“94, 268.
Morison, Stanley, ix, 283. *oct, 188, 211, 281.
mouth, 169, 179, 285. octal notation, 188.
Moxon, Joseph, 325. octants, 119, 206“207, 228“230.
354 Appendix I: Index


*odd, 170, 210, 250. *path, 55, 56, 171.
path expression , 129, 213.
*of, 73, 129, 165“167, 187, 211“214.
path expressions, 129“134, 258.
of-the-way function, see mediation.
o¬ by x, 82. path join , 129“130, 171, 213.
path primary , 129, 213.
O¬ce of Naval Research, ix.
path secondary , 129, 213.
! OK, 219, 224.
path tertiary , 129, 213.
\omitaccents, 340.
paths, 13“19, 123“139.
one-point draw, 22, 150, 200, 253.
*pausing, 211, 231.
online interaction, 42“45, 61, 188“189,
pc (pica), 92, 267, 268.
191“193, 219, 223“225.
pels, see pixels.
openit, 277, 312.
pen, 55, 56, 65, 170.
*openwindow, 191“193, 220, 277, 312“313. *
pen expression , 147, 148, 214.
openwindow command , 191, 220.
pen expressions, 147“148, 258, 298.
operands, 59.
pen primary , 148, 214.
operators, 59, 230.
pen secondary , 148, 214.
optional skip , 317.
pen tertiary , 148, 214.
*or, 65, 170, 210, 237, 288“289.
pen_bot, 151, 272.
order of operations, 60“61, 137, 247, 289.
pen_lft, 151, 272.
oriental characters, 3, 106, 324.
pen_rt, 151, 272.
origin, 77“78, 243, 251, 263.
pen_top, 151, 272.
ornament, 144“145.
*pencircle, 21“23, 28, 29, 147“149,
Orwell, George (= Blair, Eric Arthur), 85.
150“152, 198, 200, 214.
*outer, 180, 218“219, 221, 286“287, 307, 321.
penlabels, 36, 274.
outlines, 121.
*penoffset, 150, 212, 230, 298.
output of , 39, 42, 315“325.
penpos, 26“29, 37, 103, 162, 273, 310.
overdraw, 114, 243.
penrazor, 107, 112, 147, 150, 264, 297.
over¬‚ow labels, 37, 328.
pens, 21“39, 147“152, 297“298.
overlays, 295.
penspeck, 264, 271.
overshoot, 23, 34, 93, 197, 200, 204.
pensquare, 147, 152, 264, 275.
˜P™, 207. penstroke, 27“29, 138, 273.
Paget, Francis Edward, 279. perpendicular, 29, 69, 84, 235.
*pair, 55, 56, 65. pickup, 21“23, 145, 147, 272.
pair expression , 73, 213. *picture, 55, 56, 114.
pair expressions, 73, 171, 258. picture command , 118, 220.
pair part , 211. picture expression , 115, 214.
pair primary , 73, 212. picture expressions, 115, 258.
pair secondary , 73, 212. transformation of, 144, 297.
pair tertiary , 73, 213. picture primary , 115, 214.
Palais, Richard Sheldon, ii. picture secondary , 115, 214.
parallel lines, 84. picture tertiary , 115, 214.
parallelogram, 293“294. pictures, 109“121.
parameter , 178. pimples, 196“197, 204.
parameter ¬les, 301, 304. pix_ht, 332, 333.
parameter heading , 165. pix_picture, 332, 333.
parameter tokens , 165. pix_wd, 332, 333.
parameter type , 165. pixels, 5, 109, 259, 324.
pixels_per_inch, 267, 268.
parameters, v, 1“3.
to fonts, 95, 103“104, 305. plain base, 34, 257“279.
to macros, 159“167, 175“178. plain.mf, 261“278.
parentheses, 51, 59, 60, 61, 71, 128, plus or minus , 72, 211.
210“215, 247. point, 69“70, 73, 114, 133, 212, 267.
*
Pascal language, 54. polygonal path, 24, 297.
Appendix I: Index 355


pool size, 226, 286. reference point, 77, 101.
pos, 310. reflectedabout, 138, 141, 142, 160, 266.
*postcontrol, 134, 212, 267. reinitializing a variable, 88, 157.
posttension, 136. relation , 170, 210.
precedence, 60“61, 71“73, 137, 289. relations, 64“65, 170“171.
*precontrol, 134, 212, 267. relax, 31, 262, 307.
pretension, 136. remainder, 66.
pretty-printed programs, 262. rep, 332, 335.
*primary, 165, 167. replacement text, 159, 166, 219.
primary , 71, 170, 209. resolution, 6, 38“39, 91“99, 116.
*primarydef, 166, 178. return key, 31.
prime numbers, 173. *reverse, 129, 132, 213.
primitives, 53, 209, 345. reverse video, 115, 118.
private tokens, 173, 265, 270. Reynolds, Lloyd Jay, 153.
product, 59, 62“64, 69, 79“80, 82. right, 26, 68, 263.
of vector by scalar, 9. right-hand side , 88, 171.
program , 155, 217. *rotated, 21“22, 25, 27, 44, 68, 73, 107,
program ¬les, 304, 306. 114, 117, 141, 212, 238.
progression , 171. rotatedabout, 266.
proof mode, 92, 93, 104, 270, 327. rotatedaround, 138, 141, 142, 144,
*proofing, 94, 187, 211, 220, 270, 274, 159“160, 266.
323“324, 327. round, 66, 196, 202, 264, 273.
proofoffset, 275, 329. rounding, 34“35, 50, 195“207, 308.
proofrule, 274, 323, 328“329. rt, 23, 77, 80, 103, 147, 151, 273.
proofrulethickness, 275, 329. rtest.mf, 311.
proofsheets, 37, 261, 327“343. rulepen, 274, 275.
protection command , 218. rules on proofsheets, 328“329.
pseudo-driver ¬les, 311“313. runaway, 287.
pt (printer™s point), 21“23, 33, 91“92, Running, Theodore Rudolph, 47.
267, 268. Ruskin, John, 139.
\punct, 339.
˜S™, 40, 114.
punctuation marks, 306.
Pythagorean addition, 66, 67, 72, 211. safefill, 121.
Pythagorean plus or minus , 72, 211. \sample, 341.
Pythagorean subtraction, 66, 72, 211, 238. sans-serif, 105, 305, 308.
*save, 155“156, 160, 173, 178, 218, 236,
˜Q™, 207.
244, 296, 299.
quartercircle, 123, 263.
save command , 155, 218.
Quick, Jonathan Horatio, 54, 137.
savepen, 96, 147, 272, 310.
*quote, 166, 172, 270, 286, 312. scalar multiplication operator , 72, 211.
*scaled, 21“23, 68, 73, 141, 212, 244, 291.
r, 308“309.
*scantokens, 61, 179, 180, 189, 251, 269,
˜R™, 207.
270, 286“288, 313.
\raggedright, 338.
scatter plots, 183.
Ramshaw, Lyle Harold, 320.
screen coordinates , 191, 220.
random numbers, 183“185.
screen place , 191, 220.
*randomseed, 185, 218.
screen_cols, 193, 277, 278.
randomseed command , 218.
screen_rows, 277, 278.
range, 107, 138, 200, 274.
screenchars, 191, 277.
raster, 5, 91, 109, 195.
screenrule, 274, 278.
*readstring, 61, 187“188, 214.
screenstrokes, 191, 277.
recipes, 2.
scrollmode, 61, 219, 313.
recursion, 227. *
redundant equations, 82. *secondary, 165, 167.
356 Appendix I: Index


secondary , 71, 209. special-purpose macros, 160, 248.
*secondarydef, 166, 178. *sqrt, 59, 64, 72, 211.
selective complement, 120. square roots, 66, see also sqrt.
semantics, 50. SSE, 206“207, 228“229.
semicolons, 155, 169, 171, 172, 187, 217, SSW, 119, 228“229.
223“224, 263, 312. stack positions, 227.
serif_fit, 308. Stanford, Amasa Leland, 340.
serifs, 152, 162“165, 308. Stanford, Jane Elizabeth Lathrop, 340.
Serlio, Sebastiano, 19. Stanford University, 125, 340.
setu_, 266, 291. star, 114.
Shakespeare, William, 173, 255, 343. \startfont, 337, 338, 342.
sharped dimensions, 32“35, 91“99, starting a job, 39, 95, 259, 277.
102“103, 268, 315. starting character, 40, 338“339.
shiftdef, 311. statement , 155, 171, 217.
*shifted, 68, 73, 117, 141, 213. statement list , 155, 217.
shipit, 31, 276, 277, 295. statements, 155, 217“221.
*shipout, 106, 210, 220, 277, 295, 316, summary, 260“261.
324, 329. stems, 201“203.
shipout command , 220. *step, 18, 171.
*show, 142, 219, 227, 230, 250, 296. step size , 171.
show command , 219. stomach, 169, 217, 285.
*showdependencies, 81, 83, 219, 262. stop, 262, 311“312.
showit, 31, 191, 276, 277, 295. stopping , see end.
*showstats, 219. *str, 187“188, 214, 250, 251.
*showstopping, 211, 227, 230, 262. strange paths, 110“111, 119, 121, 136,
*showtoken, 180, 219, 221. 152, 228“229.
*showvariable, 175, 177, 180, 219. Stravinski˜ Igor™ F¨dorovich, 193.
±, e
shrink_fit, 308“310. stretchability, 319.
shrinkability, 319. Strindberg, Johan August, 185.
shu¬„ed binary numbers, 137. *string, 55, 56, 69.
sidebearings, 10, 34“35, 307“308. string expression , 73, 187, 214.
SIMULA67 language, 175. string expressions, 187“189, 258, 286.
*sind, 67, 72, 211. string primary , 187, 214.
*skipto, 316, 317. string secondary , 187, 214.
skyline, 251. string tertiary , 187, 214.
slant, 105, 206, 301“303, 310, 319. string tokens, 49“51.
slant fonts, 329, 335“336. stroke, 306, 310.
*slanted, 68, 73, 105, 141, 213. *subpath, 70, 71, 114, 129, 133, 134,
slantfont, 275, 329. 188, 213, 298.
slantfontarea, 329. subroutines, see macros.
slantfontat, 329. subscript , 54.
smode, 269. subscripts, 54“57.
smoke mode, 38, 75, 93, 270, 327. *substring, 69, 187, 188, 214, 320.
*smoothing, 55, 195, 205“206, 212, 262. subtraction, of pictures, 115, 244.
softjoin, 262, 266. of vectors, 9.
solve, 176“177, 267, 292“294. Suetonius Tranquillus, Gaius, 181.
(some charht values...), 316. *suffix, 161, 165, 176.
Southall, Richard Francis, 176. su¬x , 54, 161, 176, 188.
spaces, 43, 50, 236. su¬x list , 171.
sparks, 53“55, 156, 175, 215, 219, 289. (SUFFIXn ), 44, 251.
*special, 220, 240“241, 274, 323“324, sum, of pictures, 115, 117, 245.
327“329. of transforms, 178.
special command , 220. of vectors, 9.
Appendix I: Index 357


superellipse, 126, 138, 267. titlefontarea, 329.
titlefontat, 329.
superellipses, 126, 161.
*to, 191, 220, 252, 277, 312.
superness, 126.
<to be read again>, 223.
Sutherland, Ivan Edward, 121.
Tobin, Georgia Kay Mase, ii, 240.
Swift, Jonathan, 99, 121.
tokens, 42“43, 49“51, 210.
symbolic token list , 155, 218.
tolerance, 176, 251, 267, 293.
symbolic tokens, 49“51.
top, 23, 77, 80, 103, 147, 151, 204, 273.
symmetric di¬erence, 120.
Tory, Geo¬roy, 19.
syntax rules, 49“50.
totalnull, 295.
System Development Foundation, ix.
*totalweight, 115, 211, 292.
˜T™, 22“23, 97, 151, 199“200, 302“303. tracingall, 230, 263, 288.
tables of trivia: *tracingcapsules, 211, 219, 239.
character classes, 51. *tracingchoices, 211, 229.
character codes, 281“282. *tracingcommands, 211, 230.
expandable tokens, 179“180. *tracingedges, 211, 230, 295“296.
fontdimen parameters, 319. *tracingequations, 80“83, 211, 229.
internal quantities, 211“212. *tracingmacros, 160, 211, 229.
language features, 257“261. tracingnone, 230, 263.
proof label options, 328. *tracingonline, 61, 80, 211, 219, 230.
types, 55.
*tracingoutput, 211, 229“230, 296.
units of measure, 92.
*tracingpens, 211, 229, 230.
tags, 53“55, 156, 175, 218“219. *tracingrestores, 156, 211, 229.
takepower, 265. *tracingspecs, 206“207, 211, 229.
taller pens, 297“298. *tracingstats, 211, 227, 230.
tapered stroke, 28. *tracingtitles, 55, 94, 187, 211, 229.
tensepath, 128, 264, 298. Trajanus, 153.
*tension, 15“16, 114, 129“132, 136, 296. trajectories, see paths.
tension , 129, 213. transcript ¬le, 42, 46, 62, 230, 295“297.
tension amount , 129, 213. *transform, 55, 56, 57, 141“143, 160, 266.
*tertiary, 165, 167. transform expression , 215.
tertiary , 71, 137, 209. transform expressions, 141“143, 170,
*tertiarydef, 166, 178, 266. 178, 258.
test.mf, 311“312. transform part , 211.
testfont.tex, 40, 336“342. transform primary , 215.
TEX, 1, 34, 40, 91, 96, 98, 101“102, transform secondary , 215.
315, 336“343, 361. transform tertiary , 215.
text, 161, 165“167.
* transformations, 44, 141“145.
\text, 340. *transformed, 73, 141“145, 213.
(TEXTn ), 45, 249, 251. transformer , 73, 213.
text arguments, 219, 288“290, 299. transition lines, 230.
.tfm, 39, 315“317, 333, 335. transum, 178.
! This can™t happen, 226. trial path, 235.
Thomson, James, 189. triangle, 24“25, 203.
Thoreau, Henry David, 221. trigonometric functions, 67, 69, 131, 177.
thru, 107, 138, 200, 274. *true, 55, 64, 170, 210.
tilde, 152. truth, viii, 217, 221.
*time, 212, 218, 323. TUGboat, ix, 361.
time in paths, 119, 133“137. turning numbers, 110, 111, 112, 119,
times or over , 72, 211. 136, 147.
Tinguely, Jean, 3. *turningcheck, 112, 119, 212, 229,
title , 187, 217“218, 323. 244, 262, 296.
*turningnumber, 111, 211, 257, 264.
titlefont, 275, 329.
358 Appendix I: Index


Twain, Mark (= Clemens, Samuel vectors, 9“10, 77.
Langhorne), 145. velocity zero, 136, 298.
Venezky, Richard Lawrence, 193.
type , 56, 171.
*vppp, 212, 267, 324.
type declarations, 56.
vround, 204, 264, 268.
types, 55.
typewriter type, 55, 105.
w, 22“25, 35“36, 76“78, 102“103, 106,
typographic errors, 45, 224.
275“276, 308“310.
˜w™, 202.
u, 103“104, 305“308.
*warningcheck, 212, 269, 270.
! Undefined coordinate, 224.
Warren, Mercy Otis, 359.
undelimited arguments, 167.
Webster, Noah, 167.
undelimited parameters , 165.
whatever, 83“84, 138, 157, 233, 239,
undelimited su¬x parameters, 167,
264, 290.
176, 265, 270.
width, 101.
underline characters, 49, 51, 173, 265, 270.
Wilde, Oscar Fingal O™Flahertie Wills, 321.
undraw, 113, 118, 120, 242, 271.
Wilkins, John, ii, 283.
undrawdot, 113, 271.
Willis, Ellen Jane, 157.
unequal to, 65.
window , 191, 220.
unfill, 25, 27, 109“110, 118, 126, 271.
window spec , 191, 220.
unfilldraw, 113, 118, 271.
with clause , 118, 120.
*uniformdeviate, 68, 72, 183, 184, 211.
*withpen, 118, 220, 242.
union, 120.
*withweight, 118, 220, 242, 297.
Union Jack, 7.
WNW, 119, 228“229.
unitpixel, 263, 333.
WSW, 119, 228“229.
units of measure, 33, 91“99, 267“268.
table, 92.
x coordinates, 5“7.
unitsquare, 116, 128, 132, 136, 263.
x-height, 319.
unitvector, 238, 264.
Xerox Corporation, 320.
*unknown, 79“82, 143, 170, 210. xgap, 95“96, 199.
unknown quantities, nonnumeric, 84“85.
*xoffset, 212, 220, 309, 315, 324.
numeric, 79“83.
xor, 120.

<<

. 12
( 13)



>>