\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 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
\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}$
\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$\,\}$
\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?$\,\}$
\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)
\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.
\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
\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 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
\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.]
\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 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$.
\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}$
\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[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}.]
\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.]
\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.]