diff options
Diffstat (limited to 'systems/knuth/dist/errata/errata.seven')
-rw-r--r-- | systems/knuth/dist/errata/errata.seven | 821 |
1 files changed, 821 insertions, 0 deletions
diff --git a/systems/knuth/dist/errata/errata.seven b/systems/knuth/dist/errata/errata.seven new file mode 100644 index 0000000000..0866189da5 --- /dev/null +++ b/systems/knuth/dist/errata/errata.seven @@ -0,0 +1,821 @@ +% Bugs (sigh) in Computers \& Typesetting + +\input manmac +\font\sltt=cmsltt10 +\font\niness=cmss9 +\font\ninessi=cmssi9 +\proofmodefalse +\raggedbottom +\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}} + +\def\today{\number\day\ + \ifcase\month\or + Jan\or Feb\or Mar\or Apr\or May\or Jun\or + Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi + \ \number\year} + +\def\cutpar{{\parfillskip=0pt\par}} + +\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1991}} +\def\bugonpage#1(#2) \par{\bigbreak\tenpoint + \hrule width\hsize + \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize + \nobreak\medskip} +\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint + \hrule width\hsize + \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize + \nobreak\medskip} +\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo +\def\0{\raise.7ex\hbox{$\scriptstyle\#$}} +\newcount\nn +\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt +\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt} + +\tenpoint +\noindent This is a list of all corrections made to {\sl Computers \& +Typesetting}, Volumes A,~B, C, and D\null, between 1 January 1991 and +15 March 1992. +Corrections made to the softcover version of {\sl The \TeX book\/} are +the same as corrections to Volume~A\null. Corrections to the softcover +version of {\sl The \slMF\kern1ptbook\/} are the same as corrections +to Volume~C\null. Some of the corrections below have already been made in +reprintings of the books. Changes to Volume~B refer to the fourth printing +(1991), which differs markedly from earlier printings because it includes +all the revisions for \TeX3.0. Changes to Volume~D refer to the third +printing (1991), which differs markedly from earlier printings because +it includes all the revisions for \MF\kern1pt2.0. Changes to the mini-indexes +and master indexes of Volumes B and~D are not shown here unless they are +not obviously derivable from what has been shown. +Dozens of changes, too many to list +here, have been made to Volume~E because of recent upgrades to the +Computer Modern font source files. +Those changes, which affect only the digitization at +low resolution and the appearance of lowercase delta and +some characters in the math symbols +fonts (but not the {\tt TFM} files), are documented at +the end of file {\tt cm85.bug}. +\looseness=-1 + +% volume A + +\bugonpage A96, lines 9--11 (9/18/91) + +\ninepoint +Some ^{German} words traditionally change their spelling +when they are split between lines. For example, `backen' becomes `bak-ken' +and `Bettuch' becomes `Bett-tuch'. How can you instruct \TeX\ to produce +such effects? + +\bugonpage A178, line 17 (11/19/91) + +\ninepoint +If you say `|\phantom{|\<subformula>|}|' in any formula, plain +\TeX\ will do its\cutpar + +\bugonpage A286, bottom two lines and continuing into A287 (11/21/91) + +\ninepoint\noindent +stands for zero or more \<assignment> +commands other than |\setbox|. +If the assignments are not followed by a \<character>, where +\<character> stands for any of the commands just discussed in the previous +paragraph, \TeX\ treats |\accent| as if it were |\char|, except that +the space factor is set to 1000. Otherwise the character that follows +the assignment is accented by the character that corresponds to the +\<8-bit number>. \ (The purpose of the intervening assignments is to +allow the accenter and accentee to be in different fonts.) \ If the +accent must be moved up or down, it is put into an hbox that is +raised or lowered. Then the accent is effectively superposed on the +character by means of kerns, in such a way that the width of the accent +does not influence the width of the resulting horizontal list. +Finally, \TeX\ sets |\spacefactor=1000|. + +\bugonpage A291, lines 6--8 (11/21/91) + +\ninepoint\noindent +`|}|' may be followed by +optional \<assignment> commands other than |\setbox|, +after which `|$$|'~must conclude +the display. \TeX\ will insert the |\abovedisplayskip| and +|\belowdisplayskip| glue before and after the result of the alignment. + +\bugonpage A293, line 14 (9/18/91) + +\ninepoint\noindent +explained in Appendix~G\null. \TeX\ +scans \<one optional space> after completing a displayed formula; this is +usually the implicit space at the end of a line in the input file. + +\bugonpage A311, bottom four lines (9/18/91) + +\ninepoint +\ansno12.7: 1000, except: 999 after |O|, |B|, |S|, |D|, and |J|; 1250 after the +comma; 3000 after the exclamation point, the right-quote marks, and the +periods. If a period had come just after the |B| (i.e., if the text had +said `|B. Sally|'), the space factor after that period would have +been~1000, not~3000. + +\bugonpage A314, lines 16--18 from the bottom (1/10/92) + +\ninepoint +\ansno14.8: |ba\ck/en| and |Be\ttt/uch|, where the macros |\ck/| and |\ttt/| +are defined by +\begintt +\def\ck/{\discretionary{k-}{k}{ck}} +\def\ttt/{tt\discretionary{-}{t}{}} +\endtt + +\bugonpage A354, line 8 (9/18/91) + +\ninepoint\noindent +|\def\multispan#1{\omit\mscount=#1\relax\loop\ifnum\mscount>1 \sp@n\repeat}|% +\kern-10pt\null + +\bugonpage A356, line 11 from the bottom (9/23/91) + +\ninepoint\noindent +| \else{\ooalign{\unhbox0\crcr\hidewidth\char'30\hidewidth}}\fi}| + +\bugonpage A358, line 8 from the bottom (9/18/91) + +\ninepoint\noindent +|\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow}| + +\bugonpage A359, line 13 (11/4/91) + +\ninepoint\noindent +|\def\overrightarrow#1{\vbox{\m@th\ialign{##\crcr| + +\bugonpage A359, line 16 (11/4/91) + +\ninepoint\noindent +|\def\overleftarrow#1{\vbox{\m@th\ialign{##\crcr| + +\bugonpage A359, line 19 (11/4/91) + +\ninepoint\noindent +|\def\overbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3pt}| + +\bugonpage A359, line 22 (11/4/91) + +\ninepoint\noindent +|\def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr| + +\bugonpage A359, lines 7--14 from the bottom (1/11/92) + +\ninepoint\noindent +|\def\lgroup{\delimiter"462833A } \def\rgroup{\delimiter"562933B }|% +\par\noindent +|\def\lmoustache{\delimiter"437A340 } \def\rmoustache{\delimiter"537B341 }|% + \kern-2pt\null\par\noindent +|\def\uparrow{\delimiter"3222378 } \def\Uparrow{\delimiter"322A37E }|% +\par\noindent +|\def\downarrow{\delimiter"3223379 } \def\Downarrow{\delimiter"322B37F }|% +\par\noindent +|\def\updownarrow{\delimiter"326C33F } \def\arrowvert{\delimiter"026A33C }|% +\par\noindent +|\def\Updownarrow{\delimiter"326D377 } \def\Arrowvert{\delimiter"026B33D } |% +\par\noindent +|\def\vert{\delimiter"026A30C } \def\Vert{\delimiter"026B30D } |% +\par\noindent +|\def\backslash{\delimiter"026E30F } \def\bracevert{\delimiter"077C33E }| + +\bugonpage A360, line 13 (11/19/91) + +\ninepoint\noindent +|\phantom|, |\smash|, |\root|, and other +operations. (Actually |\phantom| and |\smash| are not perfect: They +assume that the current style is uncramped.) + +\bugonpage A360, line 2 from the bottom (11/4/91) + +\ninepoint\noindent +|\def\c@ncel#1#2{\m@th\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}}| + +\bugonpage A361, top line (11/4/91) + +\ninepoint\noindent +|\def\rlh@#1{\vcenter{\m@th\hbox{\ooalign{\raise2pt| + +\bugonpage A364, line 5 from the bottom (11/4/91) + +\ninepoint\noindent +|\def|^|\fmtname||{plain}\def\fmtversion{3.141}| + +\bugonpage A377, the bottom 17 lines (9/18/91) + +\eightpoint\noindent\hangindent\parindent\hangafter-3 +story: Macro |\stest| decides whether or not +a given token list register begins with +a \<space token> as defined in Chapter~24. If so, the macro +decides whether the token is explicit and/or funny and/or active. +\begintt +\newif\ifspace \newif\iffunny \newif\ifexplicit \newif\ifactive +\def\stest#1{\funnyfalse \expandafter\s\the#1! \stest} +\def\s{\global\explicitfalse \global\activefalse \futurelet\next\ss} +\def\ss{\ifcat\noexpand\next\stoken\let\nxt\sx\else\let\nxt\ns\fi\nxt} +\def\sx{\spacetrue\ifx\next\stoken\let\nxt\sss\else\let\nxt=\ssss\fi\nxt} +\long\def\sss#1 #2\stest{\def\next{#1}% + \ifx\next\empty \global\explicittrue \else\testactive#1\s\fi} +\long\def\ssss#1#2\stest{\funnytrue{\escapechar=\if*#1`?\else`*\fi\relax + \if#1\string#1\uccode`#1=`~ % we assume that ~ is an active character + \uppercase{\ifcat\noexpand#1}\noexpand~\global\activetrue + \else\global\explicittrue\fi + \else\testactive#1\s\fi}} +\long\def\ns#1\stest{\spacefalse} +\long\def\testactive#1#2\s{\expandafter\tact\string#1\s\tact} +\long\def\tact#1#2\tact{\def\next{#2}\ifx\next\xs\global\activetrue + \else\ifx\next\empty \global\activetrue\fi\fi} \def\xs{\s} +\endtt + +\bugonpage A444, lines 15--26 (3/26/91) + +\ninepoint +\textindent{\bf14.}If the current item is an Ord atom, +go directly to Rule~17 unless +all of the following are true: The nucleus is a symbol; the subscript +and superscript are both empty; the very next item in the math list is an +atom of type Ord, Op, Bin, Rel, Open, Close, or Punct; and the nucleus of the +next item is a symbol whose family is the same as the family in the present +Ord atom. In such cases the present symbol is marked as a text symbol. +If the font information shows a ligature between this symbol and the +following one, using the specified family and the current size, then +insert the ligature character and continue as specified by the font; +in this process, two characters may collapse into a single Ord +text symbol, and/or new Ord text characters may appear. If the font information +shows a kern between the current symbol and the next, insert a kern item +following the current atom. +As soon as an Ord atom has been fully processed for ligatures and kerns, +go to Rule~17. + +\bugonpage A446, lines 5 and 6 from the bottom (1/13/92) + +\ninepoint\noindent +are used to change the current style just as +in the first pass, so that both passes have the same value of~$C$ when +they work on any particular atom. + +\bugonpage A447, in the parameter usage table (1/13/92) + +\ninepoint\noindent[Delete the entry for `$\sigma_2$'; the entry for +`$\sigma_{17}$' moves down to the bottom of the left column.] + +\bugonpage A447, line 2 after the parameter usage table (1/13/92) + +\ninepoint\noindent +to parameters in arbitrary families: +Rule~17 uses |\fontdimen| parameter~2 (space) to de-\cutpar + +\bugonpage A467, entry for {\tt\char`\\hss} (9/18/91) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +{\tt\char`\\hss}, 71--72, {\it82--83}, 233, 283, 285, 290, 442. + +\bugonpage A467, new subentry under hyphenation (9/18/91) + +\eightpoint\indent\quad +suppressing, 93, 414, 424, 454. + +\bugonpage A476, right column (11/21/91) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +{\tt\char`\\setbox}, 66--67, 77, 81, $\underline{120}$, 276, 279, 286,\par +\indent\qquad 291, {\it386--392}. + +% volume B +\hsize=35pc +\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers +\def\to{\mathrel{.\,.}} % double dot, used only in math mode + +\bugonpage B2, line 10 from the bottom (1/11/92) + +\ninepoint\noindent\hskip10pt +{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$% +{\tt This\]is\]TeX,\]Version\]3.141\char'23}\quad +$\{\,$printed when \TeX\ starts$\,\}$ + +\bugonpage B18, lines 21 and 22 (10/12/91) + +\tenpoint\noindent +must have an \\{xchr} equivalent in the local +character set. (This restriction applies only to preloaded strings, +not to those generated dynamically by the user.) + +\bugonpage B26, new line before fourth line from bottom (1/24/92) + +\ninepoint\noindent\hskip20pt +\\{nl}: \\{integer};\quad$\{\,$new-line character to restore$\,\}$ + +\bugonpage B26, bottom line and top 3 lines of B27 (1/24/92) + +\ninepoint\noindent\hskip30pt +{\bf else begin if\/} $\\{selector}>\\{pseudo}$ {\bf then}\par +\noindent\hskip50pt +{\bf begin} \\{print\_char}($s$); \ {\bf return};\quad + $\{\,$internal strings are not expanded$\,\}$\par\noindent\hskip50pt +{\bf end};\par\noindent\hskip40pt +{\bf if\/} ($\langle\,$Character $s$ is the current new-line + character{\sevenrm\kern.5em244}$\,\rangle$) {\bf then}\par\noindent\hskip50pt +{\bf if\/} $\\{selector}<\\{pseudo}$ {\bf then}\par\noindent\hskip60pt +{\bf begin} \\{print\_ln}; \ {\bf return}; \ +{\bf end};\par\noindent\hskip40pt +$\\{nl}\gets\\{new\_line\_char}$; \ $\\{new\_line\_char}\gets-1$;\quad + $\{\,$temporarily disable new-line character$\,\}$\par\noindent\hskip40pt +$j\gets\\{str\_start}[s]$;\par\noindent\hskip40pt +{\bf while} $j<\\{str\_start}[s+1]$ {\bf do}\par\noindent\hskip50pt +{\bf begin} $\\{print\_char}(\\{so}(\\{str\_pool}[j]))$; \ $\\{incr}(j)$; \ +{\bf end};\par\noindent\hskip40pt +$\\{new\_line\_char}\gets\\{nl}$; \ {\bf return};\par\noindent\hskip40pt +{\bf end}; + +\bugonpage B27, lines 9 and 10 (9/19/91) + +\tenpoint\noindent +{\bf 60.\quad}% +Control sequence names, file names, and strings constructed with +{\tt\char`\\string} might contain \\{ASCII\_code} values that can't +be printed using \\{print\_char}. Therefore we use +\\{slow\_print} for them: + +\bugonpage B27, lines 13--26 (1/24/92) + +\ninepoint\noindent\hskip10pt +{\bf var} $j$: \\{pool\_pointer};\quad$\{\,$current character code + position$\,\}$\par\noindent\hskip10pt +{\bf begin if\/} $(s\ge\\{str\_ptr})\lor(s<256)$ {\bf then} \\{print}(s) +\par\noindent\hskip10pt {\bf else begin} $j\gets\\{str\_start}[s]$;\par +\noindent\hskip20pt{\bf while} $j<\\{str\_start}[s+1]$ {\bf do}\par +\noindent\hskip30pt{\bf begin} $\\{print}(\\{so}(\\{str\_pool}[j]))$; \ + $\\{incr}(j)$;\par\noindent\hskip30pt +{\bf end};\par\noindent\hskip20pt +{\bf end};\par\noindent\hskip10pt +{\bf end}; + +\bugonpage B28, line 8 (9/19/91) + +\ninepoint\noindent\hskip10pt +{\bf else begin} \\{slow\_print}(\\{format\_ident}); \ \\{print\_ln}; + +\bugonpage B33, line 3 (1/11/92) + +\tenpoint\noindent +recursively. A similar interlock is provided by \\{set\_box\_allowed}. + +\bugonpage B33, new line to come after line 14 (1/11/92) + +\ninepoint\noindent +\\{set\_box\_allowed}: \\{boolean};\quad + $\{\,$is it safe to do a |\setbox| assignment?$\,\}$ + +\bugonpage B33, new line to come after line 20 (1/11/92) + +\ninepoint\noindent\hskip10pt +$\\{set\_box\_allowed}\gets\\{true}$; + +\bugonpage B36, line 12 (9/19/91) + +\ninepoint\noindent\hskip30pt +{\bf begin} \\{print\_nl}({\tt\char`\"You\]want\]to\]edit\]file\]\char`\"}); + \ \\{slow\_print}(\\{input\_stack}[\\{base\_ptr}].\\{name\_field}); + +\bugonpage B46, lines 9 and 10 (5/24/91) + +\tenpoint\noindent +arithmetic; see {\sl TUGboat \bf3},1 (March 1982), 10--27. (But the +routines cited there must be modified to allow negative glue ratios.) + +\bugonpage B47, lines 2 and 3 (5/24/91) + +\tenpoint\noindent +structures on a \\{memory\_word}, which contains either a (signed) integer, +possibly scaled, or a (signed) \\{glue\_ratio}, or a small number of +fields that are one half or one quarter of the size used\cutpar + +\bugonpage B177, lines 10 and 11 (9/19/91) + +\ninepoint\noindent\hskip20pt +{\bf begin} \\{print\_err}({\tt\char`\"Bad\]mathchar\char`\"});\par +\noindent\hskip20pt +\\{help2}({\tt\char`\"A\]mathchar\]number\]must\]be\]between\]0\]% + and\]32767.\char`\"}) + +\bugonpage B196, new lines after line 11 (1/13/92) + +\ninepoint\noindent\hskip20pt +{\bf if\/} $\\{align\_state}<1000000$ {\bf then}\quad + $\{\,$unmatched `|}|' aborts the line$\,\}$\par\noindent\hskip30pt +{\bf begin repeat} \\{get\_token}; \ {\bf until} $\\{cur\_tok}=0$;\par +\noindent\hskip30pt$\\{align\_state}\gets1000000$; \ {\bf goto} \\{done};\par +\noindent\hskip30pt{\bf end}; + +\bugonpage B208, line 21 (9/19/91) + +\ninepoint\noindent\hskip10pt +{\bf begin} \\{slow\_print}($a$); \ \\{slow\_print}($n$); \ + \\{slow\_print}($e$); + +\bugonpage B214, line 14 (9/19/91) + +\ninepoint\noindent\hskip10pt +{\bf begin} \\{wlog}(\\{banner}); \\{slow\_print}(\\{format\_ident}); \ + \\{print}({\tt\char`\"\]\]\char`\"}); \ + \\{print\_int}(\\{day}); \ + \\{print\_char}({\tt\char`\"\]\char`\"}); + +\bugonpage B214, line 2 from the bottom (9/19/91) + +\ninepoint\noindent\hskip10pt +\\{print\_char}({\tt\char`\"(\char`\"}); \ +\\{incr}(\\{open\_parens}); \ +\\{slow\_print}(\\{name}); \ +\\{update\_terminal}; \ +$\\{state}\gets\\{new\_line}$; + +\bugonpage B234, line 22 (9/19/91) + +\ninepoint\noindent\hskip20pt +\\{print}({\tt\char`\"\]in\]font\]\char`\"}); \ +\\{slow\_print}(\\{font\_name}[$f$]); \ +\\{print\_char}({\tt\char`\"!\char`\"}); \ +\\{end\_diagnostic}(\\{false}); + +\bugonpage B267, lines 7 and 8 (9/19/91) + +\ninepoint\noindent\hskip20pt +\\{print\_nl}({\tt\char`\"Output\]written\]on\]\char`\"}); \ +\\{slow\_print}(\\{output\_file\_name});\par\noindent\hskip20pt +\\{print}({\tt\char`\"\](\char`\"}); \ +\\{print\_int}(\\{total\_pages}); \ +\\{print}({\tt\char`\"\]page\char`\"}); + +\bugonpage B296, new lines after line 8 of section 716 (1/11/92) + +\ninepoint\noindent\hskip10pt +{\bf if\/} $f<0$ {\bf then}\par\noindent\hskip20pt +{\bf begin} \\{decr}($n$); \ $f\gets f+\oct{200000}$;\par\noindent\hskip20pt +{\bf end}; + +\bugonpage B297, new lines after line 7 of section 717 (1/11/92) + +\ninepoint\noindent\hskip20pt +{\bf if\/} $f<0$ {\bf then}\par\noindent\hskip30pt +{\bf begin} \\{decr}($n$); \ $f\gets f+\oct{200000}$;\par\noindent\hskip30pt +{\bf end}; + +\bugonpage B348, bottom two lines (1/3/92) + +\tenpoint\noindent\hskip10pt +Up to three passes might be made through the paragraph in an attempt to find at +least one set of feasible breakpoints. On the first pass, we have +$\\{threshold}=\\{pretolerance}$ and $\\{second\_pass}=$\cutpar + +\bugonpage B364, line 20 (1/3/92) + +\tenpoint\noindent +{\bf 863.\quad} +The `{\bf loop}' in the following code is performed at most +thrice per call of \\{line\_break}, since\cutpar + +\bugonpage B377, insert new line after line 12 (9/19/91) + +\ninepoint\noindent +\\{hyf\_bchar}:\enspace\\{halfword};\quad + $\{\,$boundary character after $c_n\,\}$ + +\bugonpage B378, line 12 from the bottom (9/19/91) + +\ninepoint\noindent\hskip30pt +$\\{hyf\_bchar}\gets\\{character}(s)$; \ +$c\gets\\{qo}(\\{hyf\_bchar})$; + +\bugonpage B378, line 9 from the bottom (1/10/92) + +\ninepoint\noindent\hskip30pt +$\\{hb}\gets s$; \ \\{incr}(\\{hn}); \ $\\{hu}[\\{hn}]\gets c$; \ +$\\{hc}[\\{hn}]\gets\\{lc\_code}(c)$; \ +$\\{hyf\_bchar}\gets\\{non\_char}$; + +\bugonpage B378, line 5 from the bottom (9/19/91) + +\ninepoint\noindent\hskip30pt +{\bf else if} $(\\{type}(s)=\\{kern\_node})\land(\\{subtype}(s)=\\{normal})$ + {\bf then} $\\{hb}\gets s$\par\noindent\hskip40pt + {\bf else goto} \\{done3}; + +\bugonpage B379, line 6 (9/19/91) + +\ninepoint\noindent\hskip10pt +$j\gets\\{hn}$; \ $q\gets\\{lig\_ptr}(s)$; \ +{\bf if\/} $q>\\{null}$ {\bf then} $\\{hyf\_bchar}\gets\\{character}(q)$; + +\bugonpage B379, new line between lines 14 and 15 (1/10/92) + +\ninepoint\noindent\hskip10pt +{\bf if\/} $\\{odd}(\\{subtype}(s))$ {\bf then} +$\\{hyf\_bchar}\gets\\{font\_bchar}[\\{hf}]$ {\bf else} +$\\{hyf\_bchar}\gets\\{non\_char}$; + +\bugonpage B379, line 19 (9/19/91) + +\ninepoint\noindent\hskip10pt +{\bf if\/} $\\{hn}<\\{l\_hyf}+\\{r\_hyf}$ {\bf then goto} \\{done1}; \ +\quad$\{\,$\\{l\_hyf} and \\{r\_hyf} are always $\ge1\,\}$ + +\bugonpage B380, lines 9--11 from the bottom reduce to a single line (1/10/92) + +\ninepoint\noindent\hskip10pt +$q\gets\\{link}(\\{hb})$; \ $\\{link}(\\{hb})\gets\\{null}$; \ +$r\gets\\{link}(\\{ha})$; \ $\\{link}(\\{ha})\gets\\{null}$; \ +$\\{bchar}\gets\\{hyf\_bchar}$; + +\bugonpage B436, lines 9 and 10 (3/15/92) + +\tenpoint +$$\\{cur\_r}=\cases{\\{character}(\\{lig\_stack}),&if $\\{lig\_stack}> + \\{null}$;\cr + \\{font\_bchar}[\\{cur\_font}],&otherwise;\cr}$$ +except when $\\{character}(\\{lig\_stack})=\\{font\_false\_bchar} + [\\{cur\_font}]$. Several additional global variables are needed. + +\bugonpage B438, line 13 from the bottom (3/15/92) + +\ninepoint\noindent\hskip10pt +$\\{cur\_q}\gets\\{tail}$; \ $\\{cur\_l}\gets\\{character}(\\{lig\_stack})$; + +\bugonpage B507, line 6 of section 1241 (1/11/92) + +\ninepoint\noindent\hskip10pt +\\{scan\_optional\_equals};\par\noindent\hskip10pt +{\bf if\/} \\{set\_box\_allowed} {\bf then} +$\\{scan\_box}(\\{box\_flag}+n)$\par\noindent\hskip10pt +{\bf else begin} \\{print\_err}({\tt\char`\"Improper\]\char`\"}); +\ \\{print\_esc}({\tt\char`\"setbox\char`\"});\par\noindent\hskip20pt +\\{help2}({\tt\char`\"Sorry,\]\char`\\setbox\]is\]not\]allowed\]after\]% +\char`\\halign\]in\]a\]display,\char`\"})\par\noindent\hskip20pt +({\tt\char`\"or\]between\]\char`\\accent\]% +and\]an\]accented\]character.\char`\"}); +\ \\{error};\par\noindent\hskip20pt +{\bf end}; + +\bugonpage B511, new line inserted after line 3 (1/24/92) + +\ninepoint\noindent\hskip20pt +\\{flushable\_string}: \\{str\_number};\quad + $\{\,$string not yet referenced$\,\}$ + +\bugonpage B512, new line inserted after line 3 of section 1260 (1/24/92) + +\ninepoint\noindent\hskip10pt +$\\{flushable\_string}\gets\\{str\_ptr}-1$; + +\bugonpage B512, the former line 6 of section 1260 (1/24/92) + +\ninepoint\noindent\hskip30pt +{\bf begin if\/} $\\{cur\_name}=\\{flushable\_string}$ {\bf then} +\par\noindent\hskip40pt{\bf begin} \\{flush\_string}; \ + $\\{cur\_name}\gets\\{font\_name}[f]$; \ {\bf end}; +\par\noindent\hskip30pt{\bf if\/} $s>0$ {\bf then} + +\bugonpage B512, line 10 from the bottom (9/19/91) + +\ninepoint\noindent +\\{set\_font}:\enspace{\bf begin} +\\{print}({\tt\char`\"select\]font\]\char`\"}); \ +\\{slow\_print}(\\{font\_name}[\\{chr\_code}]); + +\bugonpage B514, line 9 (1/11/92) + +\ninepoint\noindent\hskip20pt +$\\{set\_box\_allowed}\gets\\{false}$; \ +\\{prefixed\_command}; \ +$\\{set\_box\_allowed}\gets\\{true}$; + +\bugonpage B515, line 19 (9/19/91) + +\ninepoint\noindent\hskip10pt +\\{slow\_print}($s$); \ \\{update\_terminal}; + +\bugonpage B516, line 2 (9/19/91) + +\ninepoint\noindent\hskip10pt +{\bf begin} \\{print\_err}({\tt\char`\"\char`\"}); \ + \\{slow\_print}($s$); + +\bugonpage B531, lines 19 and 20 (9/19/91) + +\ninepoint\noindent\hskip10pt +\\{print\_nl}({\tt\char`\"Beginning\]to\]dump\]on\]file\]\char`\"}; \ +\\{slow\_print}(\\{w\_make\_name\_string}(\\{fmt\_file})); \ +\\{flush\_string};\par\noindent\hskip10pt +\\{print\_nl}({\tt\char`\"\char`\"}); \ +\\{slow\_print}(\\{format\_ident}) + +\bugonpage B533, line 29 (9/19/91) + +\ninepoint\noindent\hskip30pt +{\bf begin} \\{print\_nl}({\tt\char`\"Transcript\]written\]on\]\char`\"}); \ +\\{slow\_print}(\\{log\_name}); \ +\\{print\_char}({\tt\char`\".\char`\"}); + +\bugonpage B538, line 13 (9/19/91) + +\ninepoint\noindent +10:\enspace\\{slow\_print}($n$); + +\bugonpage B577, left column (12/23/91) + +\eightpoint\noindent[Add 798 to the index entries for `system dependencies'.] + +% volume C +\hsize=29pc +\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers + +\bugonpage C262, line 15 (3/26/91) + +\ninepoint\noindent +|string base_name, base_version; base_name="plain"; base_version="2.7";| + +\bugonpage C271, line 17 from the bottom (3/26/91) + +\ninepoint\noindent +| currentpen_path shifted (z.t_) withpen penspeck enddef;| + +\bugonpage C347, Bront''e entry (1/29/91) + +\eightpoint\noindent +[The accent was clobbered; her name should, of course, be Bront\"e. +Fix the entries for D\"urer, M\"obius, and Stravinsky in the same way.] + +\bugonpage C348, left column (1/11/92) + +\eightpoint\indent +compound statement, $\underline{155}$, 217. + +\bugonpage C353, right column (1/11/92) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +{\tt numeric}, 55, $\underline{56}$, {\it65}, 88. + +\bugonpage C354, miscellaneous entries in both columns (1/11/92) + +\eightpoint +\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +{\tt openwindow}, $\underline{191}$--$\underline{193}$, 220, {\it277}, + {\it312--313}. +\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +{\tt or}, {\it65}, $\underline{170}$, 210, 237, 288--289. +\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +{\tt pair}, 55, $\underline{56}$, 65. +\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +{\tt path}, 55, $\underline{56}$, 171. +\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +{\tt pen}, 55, $\underline{56}$, {\it65}, 170. +\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +{\tt picture}, 55, $\underline{56}$, {\it114}. + +\bugonpage C356, right column (1/11/92) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +{\tt string}, 55, $\underline{56}$, 69. + +\bugonpage C357, right column (1/11/92) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +{\tt transform}, 55, $\underline{56}$, 57, 141--143, {\it160}, 266. + +% Volume D +\hsize=35pc +\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers +\def\to{\mathrel{.\,.}} % double dot, used only in math mode + +\bugonpage D2, last line of section 2 (1/24/92) + +\ninepoint\noindent\hskip10pt +{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$% +{\tt This\]is\]METAFONT,\]Version\]2.71\char'23}\quad +$\{\,$printed when \MF\ starts$\,\}$ + +\bugonpage D102, line 15 from the bottom (11/1/91) + +\tenpoint\noindent +Then +$\\{eq\_type}(h(x))=\\{tag\_token}$ and $\\{equiv}(h(x))=p$, +where $p$~is a two-word value +node with\cutpar + +\bugonpage D188, lines 16 and 17 (1/24/92) + +\tenpoint\noindent +errors. Our subroutines also obey the identity $t[a,b]+t[b,a]=a+b$. + +\bugonpage D190, new copy before bottom four lines (1/24/92) + +\ninepoint\noindent\hskip10pt +{\bf if\/} $\\{x\_coord}(r)<\\{x\_coord}(\\{pp})$ {\bf then} + $\\{x\_coord}(r)\gets\\{x\_coord}(\\{pp})$\par\noindent\hskip10pt +{\bf else if\/} $\\{x\_coord}(r)>\\{dest\_x}$ {\bf then} + $\\{x\_coord}(r)\gets\\{dest\_x}$;\par\noindent\hskip10pt +{\bf if\/} $\\{left\_x}(r)>\\{x\_coord}(r)$ {\bf then}\par\noindent\hskip20pt +{\bf begin} $\\{left\_x}(r)\gets\\{x\_coord}(r)$; \ +{\bf if\/} $\\{right\_x}(\\{pp})>\\{x\_coord}(r)$ {\bf then} +$\\{right\_x}(\\{pp})\gets\\{x\_coord}(r)$; \ {\bf end};\par\noindent\hskip10pt +{\bf if\/} $\\{right\_x}(r)<\\{x\_coord}(r)$ {\bf then}\par\noindent\hskip20pt +{\bf begin} $\\{right\_x}(r)\gets\\{x\_coord}(r)$; \ +{\bf if\/} $\\{left\_x}(\\{qq})<\\{x\_coord}(r)$ {\bf then} +$\\{left\_x}(\\{qq})\gets\\{x\_coord}(r)$; \ {\bf end}; + +\bugonpage D191, new copy before bottom two lines of section 416 (1/24/92) + +\ninepoint\noindent\hskip10pt +{\bf if\/} $\\{x\_coord}(s)<\\{x\_coord}(r)$ {\bf then} + $\\{x\_coord}(s)\gets\\{x\_coord}(r)$\par\noindent\hskip10pt +{\bf else if\/} $\\{x\_coord}(s)>\\{dest\_x}$ {\bf then} + $\\{x\_coord}(s)\gets\\{dest\_x}$;\par\noindent\hskip10pt +{\bf if\/} $\\{left\_x}(s)>\\{x\_coord}(s)$ {\bf then}\par\noindent\hskip20pt +{\bf begin} $\\{left\_x}(s)\gets\\{x\_coord}(s)$; \ +{\bf if\/} $\\{right\_x}(r)>\\{x\_coord}(s)$ {\bf then} +$\\{right\_x}(r)\gets\\{x\_coord}(s)$; \ {\bf end};\par\noindent\hskip10pt +{\bf if\/} $\\{right\_x}(s)<\\{x\_coord}(s)$ {\bf then}\par\noindent\hskip20pt +{\bf begin} $\\{right\_x}(s)\gets\\{x\_coord}(s)$; \ +{\bf if\/} $\\{left\_x}(\\{qq})<\\{x\_coord}(s)$ {\bf then} +$\\{left\_x}(\\{qq})\gets\\{x\_coord}(s)$; \ {\bf end}; + +\bugonpage D194, lines 4 and 5 (1/24/92) + +\tenpoint\noindent[Delete those two lines; I no longer believe that the +assertion has been proved (although it might be true).] + +\bugonpage D194, lines 7--13 of section 424 (1/24/92) + +\ninepoint\noindent\hskip10pt +{\bf if\/} $\\{y\_coord}(r)<\\{y\_coord}(p)$ {\bf then} + $\\{y\_coord}(r)\gets\\{y\_coord}(p)$\par\noindent\hskip10pt +{\bf else if\/} $\\{y\_coord}(r)>\\{dest\_y}$ {\bf then} + $\\{y\_coord}(r)\gets\\{dest\_y}$;\par\noindent\hskip10pt +{\bf if\/} $\\{x\_coord}(p)+\\{y\_coord}(r)>\\{dest\_x}+\\{dest\_y}$ +{\bf then} $\\{y\_coord}(r)\gets\\{dest\_x}+\\{dest\_y}-\\{x\_coord}(p)$;\par +\noindent\hskip10pt +{\bf if\/} $\\{left\_y}(r)>\\{y\_coord}(r)$ {\bf then}\par\noindent\hskip20pt +{\bf begin} $\\{left\_y}(r)\gets\\{y\_coord}(r)$; \ +{\bf if\/} $\\{right\_y}(p)>\\{y\_coord}(r)$ {\bf then} +$\\{right\_y}(p)\gets\\{y\_coord}(r)$; \ {\bf end};\par\noindent\hskip10pt +{\bf if\/} $\\{right\_y}(r)<\\{y\_coord}(r)$ {\bf then}\par\noindent\hskip20pt +{\bf begin} $\\{right\_y}(r)\gets\\{y\_coord}(r)$; \ +{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(r)$ {\bf then} +$\\{left\_y}(q)\gets\\{y\_coord}(r)$; \ {\bf end}; + +\bugonpage D194, lines 8--11 from the bottom (1/24/92) + +\ninepoint\noindent\hskip10pt +{\bf if\/} $\\{right\_y}(r)<\\{y\_coord}(r)$ {\bf then}\par\noindent\hskip20pt +{\bf begin} $\\{right\_y}(r)\gets\\{y\_coord}(r)$; \ +{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(r)$ {\bf then} +$\\{left\_y}(q)\gets\\{y\_coord}(r)$; \ {\bf end}; + +\bugonpage D195, lines 3--9 of section 425 (1/24/92) + +\ninepoint\noindent\hskip10pt +{\bf if\/} $\\{y\_coord}(s)<\\{y\_coord}(r)$ {\bf then} + $\\{y\_coord}(s)\gets\\{y\_coord}(r)$\par\noindent\hskip10pt +{\bf else if\/} $\\{y\_coord}(s)>\\{dest\_y}$ {\bf then} + $\\{y\_coord}(s)\gets\\{dest\_y}$;\par\noindent\hskip10pt +{\bf if\/} $\\{x\_coord}(r)+\\{y\_coord}(s)>\\{dest\_x}+\\{dest\_y}$ +{\bf then} $\\{y\_coord}(s)\gets\\{dest\_x}+\\{dest\_y}-\\{x\_coord}(r)$;\par +\noindent\hskip10pt +{\bf if\/} $\\{left\_y}(s)>\\{y\_coord}(s)$ {\bf then}\par\noindent\hskip20pt +{\bf begin} $\\{left\_y}(s)\gets\\{y\_coord}(s)$; \ +{\bf if\/} $\\{right\_y}(r)>\\{y\_coord}(s)$ {\bf then} +$\\{right\_y}(r)\gets\\{y\_coord}(s)$; \ {\bf end};\par\noindent\hskip10pt +{\bf if\/} $\\{right\_y}(s)<\\{y\_coord}(s)$ {\bf then}\par\noindent\hskip20pt +{\bf begin} $\\{right\_y}(s)\gets\\{y\_coord}(s)$; \ +{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(s)$ {\bf then} +$\\{left\_y}(q)\gets\\{y\_coord}(s)$; \ {\bf end}; + +\bugonpage D195, lines 3--7 from the bottom if section 425 (1/24/92) + +\ninepoint\noindent\hskip10pt +{\bf if\/} $\\{right\_y}(s)<\\{y\_coord}(s)$ {\bf then}\par\noindent\hskip20pt +{\bf begin} $\\{right\_y}(s)\gets\\{y\_coord}(s)$; \ +{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(s)$ {\bf then} +$\\{left\_y}(q)\gets\\{y\_coord}(s)$; \ {\bf end}; + +\bugonpage D289, lines 9 and 10 (11/1/91) + +\ninepoint\noindent\hskip20pt +$p\gets\\{dep\_list}(p)$; \ $r\gets\\{inf\_val}$;\par\noindent\hskip20pt +{\bf repeat if\/} $\\{value}(\\{info}(p))\ge\\{value}(r)$ {\bf then}\par + +\bugonpage D486, line 18 (11/1/91) + +\tenpoint\noindent +The \\{label\_loc} +and \\{label\_char} arrays have been set up to record all the +starting addresses; we have\cutpar + +% volume E +\hsize=29pc +\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}} + + +\bye + |