diff options
Diffstat (limited to 'Master/texmf-dist/doc/generic/knuth/source/errata/errata.four')
-rw-r--r-- | Master/texmf-dist/doc/generic/knuth/source/errata/errata.four | 1052 |
1 files changed, 1052 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/knuth/source/errata/errata.four b/Master/texmf-dist/doc/generic/knuth/source/errata/errata.four new file mode 100644 index 00000000000..11d0435e749 --- /dev/null +++ b/Master/texmf-dist/doc/generic/knuth/source/errata/errata.four @@ -0,0 +1,1052 @@ +% 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, 1987--1988}} +\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} + +\noindent This is a list of all corrections made to {\sl Computers \& +Typesetting}, Volumes A--E\null, between +16 June 1987 and 20 February 1989. 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 these corrections have already been made in reprintings +of the books. Some of these corrections affect the indexes and +mini-indexes of Volumes B~and~D in ways not shown here. Corrections +made up to 15 June 1987 appear in other files. +% volume A + +\bugonpage A159, line 22 (2/15/88) + +\ninepoint\noindent +`|\nolimits|' if the normal |\displaylimits| +convention has been overridden; a Rad\cutpar + +\bugonpage A213, lines 34--35 (12/23/87) + +\ninepoint\noindent +text will be a single control sequence token, defined to be like |\relax| if +its meaning is currently undefined. + +\bugonpage A299, line 30 (7/6/88) + +\ninepoint\indent\tt +Fatal format file error; I'm stymied. + +\bugonpage A326, line 12 (12/12/87) + +\ninepoint\noindent +its natural width. The |\hbox| version also invokes |\everymath|. + +\bugonpage A359, line 2 (11/6/88) + +\ninepoint\noindent +|\mathchardef\ldotp="613A\mathchardef\cdotp="6201\mathchardef\colon="603A| + +\bugonpage A359, lines 35--38 (5/24/88) + +\ninepoint\noindent +|\def\updownarrow{\delimiter"326C33F } \def\arrowvert{\delimiter"033C000 }|% + \par\noindent +|\def\Updownarrow{\delimiter"326D377 } \def\Arrowvert{\delimiter"033D000 } |% + \par\noindent +|\def\vert{\delimiter"026A30C } \def\Vert{\delimiter"026B30D } |% + \par\noindent +|\def\backslash{\delimiter"026E30F } \def\bracevert{\delimiter"033E000 }| + +\bugonpage A364, line 35 (11/6/88) + +\ninepoint\noindent +|\def\fmtname{plain}\def\fmtversion{2.94} % identifies the current format| + +\bugonpage A379, line 15 (10/12/87) + +\ninepoint +|\def\deleterightmost#1{\edef#1{\expandafter\xyzzy#1\xyzzy}}| + +\bugonpage A383, lines 7--15 from the bottom (1/4/89) + +\begintt + 209 strings out of 1685 + 1659 string characters out of 17636 + 27618 words of memory out of 52821 + 1172 multiletter control sequences out of 2500 +\endtt +Consequently there was plenty of room for more macros: $52821-27618= +25203$ unused cells of main memory, $2500-1172=1328$ of name memory, +$1685-209=1476$ of string memory, and $17636-1659=15977$ of character memory. +But a fairly large \TeX\ was being used, and only the macros of +Appendices B and~E were loaded; in other circumstances it might have +been necessary to conserve space. + +\bugonpage A454, lines 23--29 (8/13/87) + +\begingroup +\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000 +\doublehyphendemerits=-100000 \finalhyphendemerits=-100000 +\ddanger If a suitable starting letter is found, let it be in font~$f$. +Hyphenation is abandoned unless the |\hyphenchar| of~$f$ is between +0 and~255, and unless a character of that number exists in the font. +If this test is passed, \TeX\ continues to scan forward +until coming to something that's not one of the following three +``admissible items'': (1)~a character in font~$f$ whose |\lccode| +is nonzero; (2)~a ligature formed entirely from characters of type~(1); +(3)~an implicit kern. The first inadmissible item terminates this part of +the process; the trial word consists of all the letters found in admissible +items. Notice that all of these letters are in font~$f$. + +\endgroup % end the special hyphenation conventions + +\bugonpage A458, left column, line 19 (2/15/88) + +\eightpoint\indent +|\|\| ( $\Vert$ ), {\it146--147}, {\it171}, $\underline{361}$, 435, 438. + +\bugonpage A462, left column, line 7 (10/9/87) + +\eightpoint\indent\qquad 152, 178, $\underline{360}$. + +\bugonpage A463, left column (4/17/88) + +\eightpoint\indent +\hbox to0pt{\hss\lower1pt\hbox{*}}|\day|, 273, 349, {\it406}. + +\bugonpage A464, left column, under Displays (12/8/88) + +\eightpoint\indent\quad +non-centered, 186, 326, 375--376, 420--421. + +\bugonpage A465, entry for {\tt\char`\\everymath} (12/12/87) + +\eightpoint\indent[Include also a reference to page 326.] + +\bugonpage A465, right column (7/6/88) + +\eightpoint\indent{\tt Fatal format file error}, 299. + +\bugonpage A473, entry for `page builder' (8/13/87) + +\eightpoint\indent\quad when exercised, 122, 280--283, 286--287. + +\bugonpage A474, left column (12/27/88) + +\eightpoint\indent +\hbox to0pt{\hss\lower1pt\hbox{*}}|\parshape|, 101--102, 214, 271, 277, 283, + +\bugonpage A480, right column (2/15/88) + +\eightpoint\indent|\vdots| ( $\vdots$ ), {\it177}, $\underline{359}$. + +\bugonpage A481, right column (7/3/87) + +\eightpoint|\z@|, $\underline{347}$, 348.\par +|\z@skip|, $\underline{347}$, 348. +% 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 32 (2/20/89) + +\ninepoint\noindent\hskip10pt +{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$% +{\tt This\]is\]TeX,\]Version\]2.97\char'23}\quad +$\{\,$printed when \TeX\ starts$\,\}$ + +\bugonpage B38, lines 7--9 from the bottom (11/6/88) + +\tenpoint\noindent[Delete this paragraph; it is being moved to page B214.] + +\bugonpage B38, line 5 from the bottom (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf begin if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{term\_and\_log}$ + +\bugonpage B39, line 5 (12/14/88) + +\ninepoint\noindent\kern50pt +{\bf if\/} \\{log\_opened} {\bf then} \\{error}; + +\bugonpage B52, line 5 (8/13/87) + +\tenpoint\noindent +cannot be done, i.e., if $\\{hi\_mem\_min}=\\{lo\_mem\_max}+1$, +we have to quit. + +\bugonpage B54, lines 34--35 (7/9/88) + +\ninepoint\noindent\kern10pt +{\bf begin if\/} $\\{hi\_mem\_min}-\\{lo\_mem\_max}\ge1998$ + {\bf then} $t\gets\\{lo\_mem\_max}+1000$\par\noindent\kern10pt +{\bf else} $t\gets\\{lo\_mem\_max}+1+(\\{hi\_mem\_min}-\\{lo\_mem\_max}) +\,\mathbin{\bf div}\,2$;\quad\kern-4pt +$\{\,\\{lo\_mem\_max}+2\le t<\\{hi\_mem\_min}\,\}$ + +\bugonpage B108, new line after line 8 (5/24/88) + +\ninepoint\noindent\kern20pt +$d$: \\{integer};\quad +$\{\,$number of characters in incomplete current string$\,\}$ + +\bugonpage B108, lines 31--33 (5/24/88) + +\ninepoint\noindent\kern10pt +$\\{str\_room}(l)$; $d\gets\\{cur\_length}$;\par\noindent\kern10pt +{\bf while} $\\{pool\_ptr}>\\{str\_start}[\\{str\_ptr}]$ {\bf do} + \par\noindent\kern20pt +{\bf begin} \\{decr}(\\{pool\_ptr}); + $\\{str\_pool}[\\{pool\_ptr}+l]\gets\\{str\_pool}[\\{pool\_ptr}]$; + \par\noindent\kern20pt +{\bf end};\quad$\{\,$move current string up to make room for another$\,\}$ +\par\noindent\kern10pt +{\bf for} $k\gets j$ {\bf to} $j+l-1$ {\bf do} $\\{append\_char}(\\{buffer}[k])$; +\par\noindent\kern10pt +$\\{text}(p)\gets\\{make\_string}$; $\\{pool\_ptr}\gets\\{pool\_ptr}+d$; + +\bugonpage B115, line 12 (4/28/88) + +\ninepoint\noindent\hskip10pt +$\\{group\_code}=0\to\\{max\_group\_code}$;\quad + $\{\,$\\{save\_level} for a level boundary$\,\}$ + +\bugonpage B141, line 19 (4/28/88) + +\ninepoint\noindent +\\{par\_token}: \\{halfword};\quad + $\{\,$token representing `|\par|'$\,\}$ + +\bugonpage B150, line 24 (4/28/88) + +\tenpoint\noindent{\bf 358.\quad}% +The present point in the program is reached only when the \\{expand} +routine has inserted\cutpar + +\bugonpage B151, mini-index (4/28/88) + +\eightpoint\noindent +Delete the entry for `\\{no\_expand}'; replace it by: + +\indent\\{expand}: {\bf procedure}, \S366. + +\bugonpage B154, lines 25, 29, 34 respectively (9/20/87) + +\ninepoint\noindent\hskip20pt +$\\{cvl\_backup},\\{radix\_backup},\\{co\_backup}$: \\{small\_number};\quad + $\{\,$to save \\{cur\_val\_level}, etc.$\,\}$\par\noindent\hskip10pt +$\\{co\_backup}\gets\\{cur\_order}$; + $\\{backup\_backup}\gets\\{link}(\\{backup\_head})$;\par\noindent\hskip10pt +$\\{cur\_order}\gets\\{co\_backup}$; + $\\{link}(\\{backup\_head})\gets\\{backup\_backup}$; + +\bugonpage B155, new entry for mini-index (9/20/87) + +\eightpoint\indent +\\{cur\_order}: \\{glue\_ord}, \S447. + +\bugonpage B156, line 28 (12/23/87) + +\ninepoint\noindent\hskip20pt +{\bf begin }$\\{eq\_define}(\\{cur\_cs},\\{relax},256)$; + +\bugonpage B157, mini-index (12/23/87) + +\eightpoint\noindent +Delete the entries for `\\{eqtb}' and `\\{frozen\_relax}'; replace them +by the following: + +\indent\\{eq\_define}: {\bf procedure}, \S227.\par +$\\{relax}=0$, \S207.\par + +\bugonpage B162, lines 12--14 (4/30/88) + +\ninepoint\noindent\hskip10pt +{\bf repeat} $\\{link}(\\{temp\_head})\gets\\{null}$;\par\noindent\hskip20pt +{\bf if\/} $(\\{info}(r)>\\{match\_token}+127)\lor + (\\{info}(r)<\\{match\_token})$ {\bf then} + $s\gets\\{null}$\par\noindent\hskip20pt +{\bf else begin} $\\{match\_chr}\gets\\{info}(r)-\\{match\_token}$; \ + $s\gets\\{link}(r)$; \ $r\gets s$; \ $p\gets\\{temp\_head}$; \ + $m\gets 0$; + +\bugonpage B177, bottom line before mini-index (7/13/88) + +\ninepoint\noindent\hskip10pt +$\\{cur\_val}\gets0$; \ + $\\{cur\_val\_level}\gets\\{int\_val}$; \ + $\\{radix}\gets0$; \ + $\\{cur\_order}\gets0$; + +\bugonpage B181, line 31 (4/28/88) + +\ninepoint\noindent +[Change `$x$ units per sp' to `$x$ sp per unit'! This change also +should be made on line~1 of page B183 and line $-8$ of page B590.] + +\bugonpage B188, line 8 (5/25/88) + +\ninepoint\noindent +{\bf function} $\\{str\_toks}(b:\\{pool\_pointer})$: \\{pointer};\quad + $\{\,$changes the string \\{str\_pool}$[b\to\\{pool\_ptr}]$ to a token list$\,\}$ + +\bugonpage B188, line 13 (5/25/88) + +\ninepoint\noindent\kern10pt +{\bf begin} \\{str\_room}(1); $p\gets\\{temp\_head}$; + $\\{link}(p)\gets\\{null}$; $k\gets b$; + +\bugonpage B188, line 20 (5/25/88) + +\ninepoint\noindent\kern10pt +$\\{pool\_ptr}\gets b$; $\\{str\_toks}\gets p$; + +\bugonpage B188, new line after line 28 (5/25/88) + +\ninepoint\noindent\kern20pt +$b$: \\{pool\_pointer};\quad$\{\,$base of temporary string$\,\}$ + +\bugonpage B188, line 31 (5/25/88) + +\ninepoint\noindent\kern10pt +{\bf else begin} $\\{old\_setting}\gets\\{selector}$; + $\\{selector}\gets\\{new\_string}$; $b\gets\\{pool\_ptr}$; + +\bugonpage B188, line 41 (5/25/88) + +\ninepoint\noindent\kern20pt +$\\{selector}\gets\\{old\_setting}$; $\\{the\_toks}\gets\\{str\_toks}(b)$; + +\bugonpage B190, lines 16--18 (5/25/88) + +\ninepoint\noindent\kern20pt +$b$: \\{pool\_pointer};\quad$\{\,$base of temporary string$\,\}$\par +\noindent\kern10pt +{\bf begin} $c\gets\\{cur\_chr}$; + $\langle\,$Scan the argument for command $c${\eightrm\kern.5em471}$\,\rangle$; +\par\noindent\kern10pt +$\\{old\_setting}\gets\\{selector}$; +$\\{selector}\gets\\{new\_string}$; $b\gets\\{pool\_ptr}$; +$\langle\,$Print the result of command~$c${\eightrm\kern.5em472}$\,\rangle$; +\par\noindent\kern10pt +$\\{selector}\gets\\{old\_setting}$; +$\\{link}(\\{garbage})\gets\\{str\_toks}(b)$; +$\\{ins\_list}(\\{link}(\\{temp\_head}))$; + +\bugonpage B210, line 36 (5/25/88) + +\ninepoint\noindent\kern10pt +{\bf begin if} $(\\{pool\_ptr}+\\{name\_length}>\\{pool\_size}) + \lor(\\{str\_ptr}=\\{max\_strings})\lor(\\{cur\_length}>0)$ {\bf then} + +\bugonpage B211, new line of code before the mini-index (12/14/88) + +\ninepoint\noindent +\\{log\_opened}: \\{boolean};\quad$\{\,$has the transcript file been opened?$\,\}$ + +\bugonpage B212, line 5 (12/14/88) + +\ninepoint\noindent\kern10pt +$\\{job\_name}\gets0$; \ $\\{name\_in\_progress}\gets\\{false}$; \ +$\\{log\_opened}\gets\\{false}$; + +\bugonpage B213, line 24 (12/14/88) + +\ninepoint\noindent\kern10pt +$\\{log\_name}\gets\\{a\_make\_name\_string}(\\{log\_file})$; \ +$\\{selector}\gets\\{log\_only}$; \ +$\\{log\_opened}\gets\\{true}$; + +\bugonpage B214, lines 2 and 3 (12/14/88) + +\tenpoint\noindent +messages or even to \\{show\_context}. +The \\{prompt\_file\_name} routine can result in a \\{fatal\_error}, +but the \\{error} +routine will not be invoked because \\{log\_opened} will be false. +\par\noindent\hskip10pt +The normal idea of \\{batch\_mode} is that nothing at all should be written +on the terminal. However, in the unusual case that +no log file could be opened, we make an exception and allow +an explanatory message to be seen. + +\bugonpage B214, lines 7--11 reduce to a single line (12/14/88) + +\ninepoint\noindent\hskip10pt +{\bf begin} $\\{selector}\gets\\{term\_only}$; + +\bugonpage B224, second-last line (4/28/87) + +\ninepoint\noindent +\\{done}: {\bf if} \\{file\_opened} {\bf then} \\{b\_close}(\\{tfm\_file});\par +\noindent\hskip10pt $\\{read\_font\_info}\gets g$; + +\bugonpage B229, lines 6--8 (11/17/87) + +\tenpoint\noindent +than $2^{27}$. +If $z<2^{23}$, the individual multiplications $b\cdot z$, +$c\cdot z$, $d\cdot z$ cannot overflow; otherwise we will divide $z$ by 2, +4, 8, or 16, to obtain a multiplier less than $2^{23}$, and we can +compensate for this later. If $z$ has thereby been replaced by +$z^\prime=z/2^e$, let $\beta=2^{4-e}$; we shall compute + +\bugonpage B229, lines 11--12 (11/17/87) + +\tenpoint\noindent +if $a=0$, or the same quantity minus $\alpha=2^{4+e}z^\prime$ if $a=255$. +This calculation must be done exactly, in order to guarantee portability +of \TeX\ between computers. + +\bugonpage B230, lines 2--5 (11/17/87) + +\ninepoint +\noindent\hskip10pt{\bf begin} $\\{alpha}\gets16$;\par +\noindent\hskip10pt{\bf while} $z\ge\oct{40000000}$ {\bf do}\par +\noindent\hskip20pt{\bf begin} $z\gets z\ {\bf div}\ 2$; \ + $\\{alpha}\gets\\{alpha}+\\{alpha}$; \ {\bf end};\par +\noindent\hskip10pt$\\{beta}\gets256\ {\bf div}\ \\{alpha}$; \ + $\\{alpha}\gets\\{alpha}\ast z$;\par + +\bugonpage B245, new entry for mini-index (8/7/87) + +\eightpoint\indent +\\{cur\_s}: \\{integer}, \S616. + +\bugonpage B254, line 29 (8/7/87) + +\ninepoint\noindent +\\{cur\_s}: \\{integer};\quad +$\{\,$current depth of output box nesting, initially $-1\,\}$ + +\bugonpage B254, line 31 (8/7/87) + +\ninepoint\noindent +[Remove the statement `$\\{cur\_s}\gets-1$;' and put it on page B244 at the +end of line 31.] + +\bugonpage B259, line 13 (11/9/87) + +\ninepoint\noindent\hskip20pt +{\bf begin }$\\{rule\_wd}\gets\\{rule\_wd}+10$;\quad +$\{\,$compensate for floating-point rounding$\,\}$\par\noindent\hskip20pt +$\\{edge}\gets\\{cur\_h}+\\{rule\_wd}$; $\\{lx}\gets0$; +$\langle\,$Let \\{cur\_h} be the position of the first box, and set + +\bugonpage B259, line 17 (11/9/87) + +\ninepoint\noindent\hskip20pt +$\\{cur\_h}\gets\\{edge}-10$; {\bf goto} \\{next\_p}; + +\bugonpage B263, line 21 (11/9/87) + +\ninepoint\noindent\hskip20pt +{\bf begin }$\\{rule\_ht}\gets\\{rule\_ht}+10$;\quad +$\{\,$compensate for floating-point rounding$\,\}$\par\noindent\hskip20pt +$\\{edge}\gets\\{cur\_v}+\\{rule\_ht}$; $\\{lx}\gets0$; +$\langle\,$Let \\{cur\_v} be the position of the first box, and set + +\bugonpage B263, line 25 (11/9/87) + +\ninepoint\noindent\hskip20pt +$\\{cur\_v}\gets\\{edge}-10$; {\bf goto} \\{next\_p}; + +\bugonpage B266, line 8 (8/7/87) + +\ninepoint\noindent\hskip10pt +\\{dvi\_out}(\\{eop}); \\{incr}(\\{total\_pages}); $\\{cur\_s}\gets-1$; + +\bugonpage B266, new code between lines 31 and 32 (8/7/87) + +\ninepoint +\noindent\hskip10pt{\bf while} $\\{cur\_s}>-1$ {\bf do}\par +\noindent\hskip20pt{\bf begin if} $\\{cur\_s}>0$ {\bf then} + \\{dvi\_out}(\\{pop})\par +\noindent\hskip20pt{\bf else begin} \\{dvi\_out}(\\{eop}); + \\{incr}(\\{total\_pages})\par +\noindent\hskip30pt{\bf end};\par +\noindent\hskip20pt\\{decr}(\\{cur\_s});\par +\noindent\hskip20pt{\bf end};\par + +\bugonpage B285, line 21 (4/28/88) + +\noindent\tenpoint +is subsidiary to the \\{nucleus} field of some noad; the dot is replaced by +`|_|' or `|^|' or `|/|' or `|\|' if $p$ is\cutpar + +\bugonpage B338, second-last line (8/19/87) + +\ninepoint\noindent\kern10pt +$q\gets\\{link}(\\{head})$; $s\gets\\{head}$; + +\bugonpage B339, line 4 (8/19/87) + +\ninepoint\noindent\kern20pt +$s\gets q$; $q\gets\\{link}(q)$; + +\bugonpage B339, new code to insert after line 10 (8/19/87) + +\ninepoint +\noindent\kern10pt{\bf if} $o\ne0$ {\bf then}\par +\noindent\kern20pt{\bf begin} $r\gets\\{link}(q)$; $\\{link}(q)\gets\\{null}$; + $q\gets\\{hpack}(q,\\{natural})$;\par +\noindent\kern20pt$\\{shift\_amount}(q)\gets o$; $\\{link}(q)\gets r$; + $\\{link}(s)\gets q$;\par +\noindent\kern20pt{\bf end};\par +\noindent[These new lines also imply changes to the index that aren't + shown in this errata list.] + +\bugonpage B387, line 2 (5/24/88) + +\tenpoint\noindent +is quite short. In the following code we set \\{hc}$[\\{hn}+2]$ to the +impossible value 128, in order to\cutpar + +\bugonpage B387, line 8 (5/24/88) + +\ninepoint\noindent\kern10pt +$\\{hc}[0]\gets127$; $\\{hc}[\\{hn}+1]\gets127$; + $\\{hc}[\\{hn}+2]\gets128$;\quad$\{\,$insert delimiters$\,\}$ + +\bugonpage B390, lines 17--18 (5/24/88) + +\ninepoint\noindent\kern10pt +$\langle\,$Enter as many hyphenation exceptions as are listed, until coming + to a right brace; then {\bf return\eightrm\kern.5em961}$\,\rangle$; + +\smallskip[The same change applies to lines 20--21, and +to page~582.] + +\bugonpage B396, new line after line 34 (5/24/88) + +\ninepoint\noindent\kern10pt +$\\{trie\_link}(\\{trie\_size})\gets0$; +$\\{trie\_back}(0)\gets\\{trie\_size}$;\quad +$\{\,$wrap around$\,\}$ + +\bugonpage B396, bottom line (12/12/87) + +\ninepoint\noindent\hskip10pt +$\\{trie\_link}(0)\gets0$; $\\{trie\_char}(0)\gets0$; + $\\{trie\_op}(0)\gets\\{min\_quarterword}$; + +\bugonpage B397, lines 15--17 (5/24/88) + +\ninepoint\noindent\kern10pt +{\bf begin} $c\gets\\{trie\_c}[p]$;\par\noindent\kern10pt +{\bf if} $c<\\{trie\_min}$ {\bf then} $\\{trie\_min}\gets c$;\par\noindent\kern10pt +{\bf if} $\\{trie\_min}=0$ {\bf then} $z\gets\\{trie\_link}(\\{trie\_size})$\par +\noindent\kern10pt +{\bf else} $z\gets\\{trie\_link}(\\{trie\_min}-1)$;\quad +$\{\,$get the first conceivably good hole$\,\}$ + +\bugonpage B400, lines 3--4 (5/24/88) + +\ninepoint\noindent +$\langle\,$Enter all of the patterns into a linked trie, until coming + to a right brace{\eightrm\kern.5em961}$\,\rangle\equiv$ + +\smallskip[The same change applies to page B399, lines 29--30, and +to page~582.] + +\bugonpage B402, line 10 (5/24/88) + +\ninepoint\noindent\kern10pt +$r\gets\\{trie\_size}$;\quad +$\{\,$finally, we will zero out the holes$\,\}$ + +\bugonpage B406, line 9 from the bottom (1/23/89) + +\ninepoint\noindent\kern30pt +$\\{shrink\_order}(r)\gets\\{normal}$; \ $\\{delete\_glue\_ref}(q)$; \ +$\\{glue\_ptr}(p)\gets r$; \ $q\gets r$; + +\bugonpage B417, line 10 (1/23/89) + +\ninepoint\noindent\kern10pt +$q\gets\\{new\_skip\_param}(\\{top\_skip\_code})$; \quad +$\{\,$now $\\{temp\_ptr}=\\{glue\_ptr}(q)\,\}$ + +\bugonpage B418, line 14 (1/23/89) + +\ninepoint\noindent\kern30pt +$\\{shrink\_order}(r)\gets\\{normal}$; \ $\\{delete\_glue\_ref}(q)$; \ +$\\{glue\_ptr}(p)\gets r$; \ $q\gets r$; + +\bugonpage B507, line 13 (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{selector}+2$; + +\bugonpage B527, line 21 (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf if\/} \\{log\_opened} {\bf then} + +\bugonpage B528, line 5 (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf if\/} \\{log\_opened} {\bf then} + +\bugonpage B547, right column (9/20/87) + +\eightpoint +\leftline{\\{co\_backup}:\quad $\underline{366}$.} + +\bugonpage B548, right column (9/20/87) + +\eightpoint +\leftline{\\{cur\_order}:\quad 366, $\underline{447}$, 448, 454, 462.} + +\bugonpage B548, right column (8/7/87) + +\eightpoint +\leftline{\\{cur\_s}:\quad 593, $\underline{616}$, 619, 629, 640, 642.} + +\bugonpage B551, both columns (12/23/87) + +\eightpoint[Remove `372' from \\{eqtb} and put it into \\{eq\_define}.] + +\bugonpage B552, left column (4/28/88) + +\eightpoint[Insert `358' into \\{expand}.] + +\bugonpage B554, left column (12/23/87) + +\eightpoint[Remove `372' from \\{frozen\_relax}.] + +\bugonpage B559, new entry (12/14/88) + +\eightpoint\noindent +\\{log\_opened}, 92--93, $\underline{527}$, 528, 534--535, 1265, 1333--1334. + +\bugonpage B559, right column (8/13/87) + +\eightpoint[Delete the entry for \\{low\_mem\_max}.] + +\bugonpage B562, left column (4/28/88) + +\eightpoint[Remove `358' from \\{no\_expand}.] + +\bugonpage B565, left column (8/7/87) + +\eightpoint +\leftline{\\{pop}:\quad 584--585, $\underline{586}$, 590, 601, 608, 642.} + +\bugonpage B567, left column (12/23/87) + +\eightpoint[Insert `372' into \\{relax}.] + +\bugonpage B568, left column (4/28/88) + +\eightpoint[Move `269' from \\{save\_index} to \\{save\_level}.] +% volume C +\hsize=29pc +\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers + +\bugonpage C26, bottom line (7/18/87) + +\tenpoint\noindent +What angle corresponds to the direction North-Northwest? + +\bugonpage C107, line 13 (10/7/87) + +{\bf pickup penrazor} xscaled \\{heavyline} + rotated (angle$(z_{32}-z_{31})+90$); + +\bugonpage C164, line 10 (4/27/88) + +\ninepoint\indent +\quad $y_{\$c}=\\{top}\,y_{\$l}$; \ $y_{\$d}=y_{\$r}$; \ + $x_{\$c}=x_{\$l}-\\{left\_jut}$; \ $x_{\$d}=x_{\$r}+\\{right\_jut}$; + +\bugonpage C175, line 23 (1/11/88) + +\ninepoint\noindent +expand into a sequence of tokens. \ +(The language {\eightrm{SIMULA67}} demonstrated that it is\cutpar + +\bugonpage C241, line 11 (5/25/88) + +\ninepoint\indent +{\bf numeric} $\\{ht}\0,\\{dp}\0$; \ + $\\{ht}\0=\\{body\_height}\0$; \ + $.5[\\{ht}\0,-\\{dp}\0]=\\{axis}\0$; + +\bugonpage C248, line 21 becomes two lines (1/24/89) + +\ninepoint\noindent +which might not +be numerically stable in the presence of rounding errors.) +Another case, not really desirable, is $\\{left\_jut}=\\{right\_jut}=0$. + +\bugonpage C262, line 15 (12/23/88) + +\ninepoint\noindent +|string base_name, base_version; base_name="plain"; base_version="1.7";| + +\bugonpage C271, line 12 (1/4/89) + +\ninepoint\noindent +the user and \MF's primitive picture commands. +First, some important program\cutpar + +\bugonpage C271, line 4 from the bottom (12/23/88) + +\ninepoint\noindent +|def |^|cutdraw|| expr p = % caution: you may need autorounding=0| + +\bugonpage C272, lines 5 and 6 (12/23/88) + +\ninepoint\noindent +| (cut_ scaled (1+max(pen_lft,pen_rt,pen_top,pen_bot))|\par\noindent +| rotated theta shifted z)t_;| + +\bugonpage C273, lines 20 and 22 (9/26/88) + +\ninepoint\noindent +| (z_+(0,pen_top))t_=round((z+(0,pen_top))t_); z_ enddef;|\par\noindent +| (z_+(0,pen_bot))t_=round((z+(0,pen_bot))t_); z_ enddef;| + +\bugonpage C290, line 6 from the bottom (12/23/88) + +\ninepoint\noindent +(2)~A throwaway variable, +`\\{whatever}', nullifies an unwanted equation at the beginning\cutpar + +\bugonpage C331, just below the illustration (7/18/87) + +\ninepoint\noindent +Such a pattern is, of course, rather unlikely to occur in a |gf| file, +but |GFtoDVI| would\cutpar + +\bugonpage C337, line 11 (4/28/88) + +\ninepoint +An online ``menu'' of the available test routines will be typed at your +terminal\cutpar + +\bugonpage C346, entry for {\tt autorounding} (12/23/88) + +\eightpoint\indent\hskip20pt +212, {\it262}, {\it264}, 271--272. + +\bugonpage C350, left column (7/6/88) + +\eightpoint\indent +|Fatal| |base| |file| |error|, 226. + +\bugonpage C356, left column (1/11/88) + +\eightpoint +SIMULA67 language, 175. + +\bugonpage C358, right column (2/15/88) + +\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% +|yoffset|, 212, $\underline{220}$, 315, 324. +% 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, line 27 (12/14/88) + +\ninepoint\noindent\hskip10pt +{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$% +{\tt This\]is\]METAFONT,\]Version\]1.7\char'23}\quad +$\{\,$printed when \MF\ starts$\,\}$ + +\bugonpage D36, lines 3--5 (11/6/88) + +\tenpoint\noindent[Delete this paragraph; it is being moved to page D349.] + +\bugonpage D36, line 7 (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf begin if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{term\_and\_log}$ + +\bugonpage D36, line 16 (12/14/88) + +\ninepoint\noindent\kern50pt +{\bf if\/} \\{log\_opened} {\bf then} \\{error}; + +\bugonpage D66, lines 34--35 (7/9/88) + +\ninepoint\noindent\kern10pt +{\bf begin if\/} $\\{hi\_mem\_min}-\\{lo\_mem\_max}\ge1998$ + {\bf then} $t\gets\\{lo\_mem\_max}+1000$\par\noindent\kern10pt +{\bf else} $t\gets\\{lo\_mem\_max}+1+(\\{hi\_mem\_min}-\\{lo\_mem\_max}) +\,\mathbin{\bf div}\,2$;\quad\kern-4pt +$\{\,\\{lo\_mem\_max}+2\le t<\\{hi\_mem\_min}\,\}$ + +\bugonpage D347, new line of code after line 5 (12/14/88) + +\ninepoint\noindent +\\{log\_opened}: \\{boolean};\quad$\{\,$has the transcript file been opened?$\,\}$ + +\bugonpage D347, line 11 (12/14/88) + +\ninepoint\noindent\kern10pt +$\\{job\_name}\gets0$; \ +$\\{log\_opened}\gets\\{false}$; + +\bugonpage D348, line 4 from the bottom (12/14/88) + +\ninepoint\noindent\kern10pt +$\\{log\_name}\gets\\{a\_make\_name\_string}(\\{log\_file})$; \ +$\\{selector}\gets\\{log\_only}$; \ +$\\{log\_opened}\gets\\{true}$; + +\bugonpage D349, lines 6 and 7 (12/14/88) + +\tenpoint\noindent +print error messages or even to \\{show\_context}. +The \\{prompt\_file\_name} routine can result in a \\{fatal\_error}, +but the \\{error} +routine will not be invoked because \\{log\_opened} will be false. +\par\noindent\hskip10pt +The normal idea of \\{batch\_mode} is that nothing at all should be written +on the terminal. However, in the unusual case that +no log file could be opened, we make an exception and allow +an explanatory message to be seen. + +\bugonpage D349, lines 11--15 reduce to a single line (12/14/88) + +\ninepoint\noindent\hskip10pt +{\bf begin} $\\{selector}\gets\\{term\_only}$; + +\bugonpage D420, bottom line (5/25/88) + +\ninepoint\noindent\kern30pt +{\bf if\/} \\{txx} {\bf mod} $\\{unity}=0$ {\bf then} + +\bugonpage D441, delete line 2 and change line 12 as follows (5/25/88) + +\ninepoint\noindent +\\{done}: {\bf if} $\\{eq\_type}(x)\ne\\{tag\_token}$ {\bf then} + $\\{clear\_symbol}(x,\\{false})$;\par\noindent\kern10pt +{\bf if} $\\{equiv}(x)=\\{null}$ {\bf then} $\\{new\_root}(x)$; +\par\noindent\kern10pt +$\\{scan\_declared\_variable}\gets h$; + +\bugonpage D444, line 8 from the bottom (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{selector}+2$; + +\bugonpage D510, line 14 (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf if\/} \\{log\_opened} {\bf then} + +\bugonpage D511, line 11 (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf if\/} \\{log\_opened} {\bf then} + +\bugonpage D530, new entry (12/14/88) + +\eightpoint\noindent +\\{log\_opened}, 87--88, $\underline{782}$, 783, 788--789, 1023, 1205, 1208. + +\bugonpage D545, left column (10/31/87) + +\eightpoint +\leftline{{\bf zscaled} primitive:\quad $\underline{893}$.} +\leftline{Zabala Salelles, Ignacio Andres:\quad 812.} + +% volume E +\hsize=29pc +\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}} + +\bugonpage E32, second-last line (9/20/87) + +\tenpoint\noindent +after which comes `\\{math\_axis}\0; {\bf generate} |mathsy|' (which we +won't bother to\cutpar + +\bugonpage E111, line 29 (10/16/88) + +\ninepoint\noindent +$\\{lft}\,x_{11}={\rm hround}\,u$; \ + $x_{1l}-x_{11}=x_{2l}-x_{12}=x_{22}-x_{2r}={\rm hround}\,1.6\\{cap\_jut}$; + +\bugonpage E285, bottom line (12/1/87) + +\rightline{\eightssi Due to Technical Developments\/\enspace\eightss(1968)} + +\bugonpage E333, lines 9--11 (1/9/89) + +\ninepoint\noindent +$\\{lft}\,x_{1l}={\rm hround}(2.5u-.5\\{mfudged.stem})$; \ + $x_{1l}=x_{1'l}=x_{2l}=x_{2'l}$;\par\noindent +$\\{lft}\,x_{3l}={\rm hround}(.5w-.5\\{mfudged.stem})$; \ + $x_5-x_3=x_3-x_1$;\par +\line{{\bf if\/} not \\{monospace}: + $r:={\rm hround}(x_5+x_1)+r-w$; {\bf fi}\hfill + \% change width for better fit} + +\bugonpage E353, lines 38--39 (8/12/87) + +\ninepoint +\leftline{\kern10pt{\bf else}: {\bf fill} \\{diag\_end}$(6r,5r,1,1,5l,6l) + \dashto.9[z_{5l},z_{6l}]$} +\line{\kern30pt$.\,.\,\{z_5-z_6\}\,.1[z_{5r},z_{6r}]\dashto\rm cycle$;\hfil + \% middle stem} + +\bugonpage E387, line 13 (8/12/87) + +\ninepoint +\line{\kern10pt{\bf pickup} \\{tiny}.\\{nib}; \ \\{bulb}$(3,4,5)$;\hfil\% bulb} + +\bugonpage E413, lines 37--38 (8/12/87) + +\ninepoint +\leftline{\kern10pt{\bf else}: {\bf fill} \\{diag\_end}$(6r,5r,1,1,5l,6l) + \dashto.9[z_{5l},z_{6l}]$} +\line{\kern30pt$.\,.\,\{z_5-z_6\}\,.1[z_{5r},z_{6r}]\dashto\rm cycle$;\hfil + \% middle stem} + +\bugonpage E459, line 24 (8/7/87) + +\ninepoint\noindent[Delete the `$=$' sign between `\\{lft}' and `$x_5$'.] + +\bugonpage E471, line 5 (12/11/88) + +\ninepoint\noindent +$x_2=\\{good}.x\,.5w$; \ $\\{center\_on}(x_2)$; + +\bugonpage E471, insert two lines below the rule at bottom of page (12/11/88) + +\ninepoint +\line{{\bf def\/} +\\{center\_on}({\bf expr} $x) =\null$ +{\bf if\/} not \\{monospace}:\hfill \% change width for symmetric fit} +\leftline{\kern10pt + $r:=r+2x-w$; \ $w:=2x$; \ {\bf fi} {\bf enddef};} + +\bugonpage E477, line 20 (12/11/87) + +\ninepoint\noindent +$x_4=x_8=\\{good}.x\,.5w$; \ $\\{center\_on}(x_4)$; \ +$x_2=w-x_6=\\{good}.x(x_4+a)$; + +\bugonpage E483, third line of elementary division operator (12/11/88) + +\ninepoint\noindent +$x_3-.5\\{dot\_size}={\rm hround}(.5w-.5\\{dot\_size})$; \ +$\\{center\_on}(x_3)$; + +\bugonpage E485, line 4 (8/7/87) + +\ninepoint\noindent[Delete the `$=$' sign between `\\{lft}' and `$x_5$'.] + +\bugonpage E487, line 17 (8/4/88) + +\ninepoint\line{% +{\bf fill} \\{fullcircle} scaled$\,(\\{bold}+3.8\\{dw}+\\{eps})\,$% + shifted$\,(.5[z_4,z_8])$;\hfill\% dot} +\smallskip\noindent[Also remove page 487 from the index entry for +\\{dot\_size}, and add it to the entries for \\{bold} and \\{dw}.] + +\bugonpage E515, lines 5 and 12 (12/11/88) + +\ninepoint\noindent +$.5[x_1,x_2]=x_3=\\{good}.x\,.5w$; \ +$\\{center\_on}(x_3)$; \ $\\{lft}\,x_1={\rm hround}(.5w-u*{\rm sqrt}48)$; + +\bugonpage E515, line 21 (1/23/89) + +\ninepoint\noindent +{\bf labels}$(5,6)$; \ \\{zero\_width}; \ {\bf endchar\/}; +\smallskip\noindent[Also put labels `{\tt5}' and `{\tt6}' on the +upper right figure, page E514.] + +\bugonpage E521, lines 4 and 14 (12/12/88) + +\ninepoint\noindent +$x_1=x_2=\\{good}.x\,.5w$; \ +$\\{center\_on}(x_1)$; \ $\\{lft}\,x_3={\rm hround}\,u$; \ $x_4=w-x_3$; + +\bugonpage E537, line 6 (12/11/88) + +\ninepoint\noindent +$x_1=x_2=x_3=x_4$; \ +$x_1-.5\\{stem}={\rm hround}(.5w-.5\\{stem})$; \ +$\\{center\_on}(x_1)$; + +\bugonpage E537, line 19 (12/11/88) + +\ninepoint\noindent +$x_1=x_2=x_3$; \ +$x_1-.5\\{stem}={\rm hround}(.5w-.5\\{stem})$; \ +$\\{center\_on}(x_1)$; + +\bugonpage E539, line 4 (12/11/88) + +\ninepoint\noindent +$x_1=x_4=x_{30}=x_{33}=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$; + +\bugonpage E539, line 21 (12/11/88) + +\ninepoint\noindent +$x_1=x_4=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$; + +\bugonpage E541, line 4 (12/11/88) + +\ninepoint\noindent +$x_1=x_5=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$; + +\bugonpage E541, line 17 (12/11/88) + +\ninepoint\noindent +$x_1=x_{10}=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$; + +\bugonpage E550, new line after line 23 (8/15/87) + +\ninepoint\noindent\kern10pt +{\bf forsuffixes} $\hbox{\$}=\\{notch\_cut},\\{cap\_notch\_cut}$: + {\bf if\/} $\hbox{\$}<3$: $\hbox{\$}:=3$; {\bf fi endfor} +\smallskip\noindent +[To make room for this, combine lines 38 and 39 into a single line.] + +\bugonpage E550, line 29 (7/9/88) + +\ninepoint\noindent\hskip10pt +{\bf \def\_{\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em}% +define\_whole\_vertical\_blacker\_pixels}$(\\{vair},\\{bar},\\{slab}, + \\{cap\_bar},\\{cap\_band})$; + +\bugonpage E572, new entry at bottom (12/11/88) + +\eightpoint\noindent +\\{center\_on}, $\underline{471}$, 477, 483, 515, 521, 537--541. +\bye +Now here are some that I will make soon! + |