Bugs in Computers & Typesetting, 1992 1

This is a list of all corrections made to Computers & Typesetting between 15 March 1992 and the publication of the final printed versions of those books. Corrections made to the softcover version of The TEXbook are the same as corrections to Volume A. Corrections to the softcover version of The book are the same as corrections to Volume C. 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 2.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.

Page A23, line 14 (9/1/92)

a command and you type ‘tex’ or ‘run tex’ or something like that.)

Page A53, line 23 (7/7/92)

scientiarum imperialis petropolitanæ became Akademiıa Nauk SSSR, Doklady.

Page A146, line 2 from the bottom (2/25/93)

       $\bigl| |x|-|y| \bigr|$                 ||x| − |y||

Page A149, lines 3–5 (2/25/93)

example, we used \bigl and \bigr to produce ||x| − |y|| in one of the previous illustrations; \left and \right don’t make things any bigger than necessary,

so ‘$\left|\left|x\right|-\left|y\right|\right|$’ yields only ‘||x| − |y||’.

Page A158, line 18 from the bottom (2/25/93)

are four possibilities for each of these fields. A field can be

Page A282, line 9 from the bottom (7/8/92)

category 4) are intercepted by the alignment process, en route to TEX’s stomach, so

Page A293, new paragraph after line 15 (4/9/92)

\unhbox⟨8-bit number⟩, \unhcopy⟨8-bit number⟩. The specified box register must be void. Nothing happens.

Page A309, line 23 (7/7/92)

petropolitan\ae\/} became {\sl Akademi\t\i a Nauk SSSR, Doklady}.

Page A320, line 11 (1/26/93)

 17.12. $\bigl(x+f(x)\bigr) \big/ \bigl(x-f(x)\bigr)$. Notice especially the

Page A349, second line from the bottom (7/8/92)

expand to a ⟨number⟩ en route to TEX’s “stomach”; \multiply wouldn’t work, because

Page A358, bottom line (2/3/93)

it is easy to define \ldots and \cdots macros that give the proper spacing in most

Page A370, lines 28 and 29 (9/1/92)

example, if TEX is implemented for a purely Cyrillic keyboard, the letter ‘Π’ should be assigned to code ´ 160 and ‘T’ to code ´ 164 , so that ‘ΠT’ still means ‘pt’; or else control

Page A377, lines 17–24 (5/4/92)

        \def\sanswitch{\let\n@xt\endsanity \ifx\next\endsanity
          \else\ifcat\noexpand\next\stoken\aftergroup\space\let\n@xt=\eat
           \else\ifcat\noexpand\next\bgroup\aftergroup{\let\n@xt=\eat
            \else\ifcat\noexpand\next\egroup\aftergroup}\let\n@xt=\eat
             \else\let\n@xt=\copytok\fi\fi\fi\fi \n@xt}
        \def\eat{\afterassignment\sanitize \let\next= }
        \long\def\copytok#1{\ifcat\noexpand#1\relax\aftergroup\noexpand\fi
          \ifcat\noexpand#1\noexpand~\aftergroup\noexpand\fi

Page A455, line 25 (2/26/93)

rent language” is set equal to \language. Whenever a character is added to the cur-

Page A459, second line of entry for ampersand (3/22/92)

231–248, \underline{282}, 339, 344, 385–386, 428.

Page A461, right column (2/19/93)

*\chardef, 44, 121, 155, 210, 214, 215, 271, \underline{277}, 336, 343, 345, 356, 452. ⟨chardef token⟩, \underline{271}, 283, 286, 289.

Page A467, left column (2/25/93)

Greek, 127–128, 137, 156, 164, 319, 358, 430, 434.

Page A470, left column (2/25/93)

         margins, see \hoffset, \hsize, \narrower.

Page A471, left column (2/19/93)

*\mathchardef, 155, 199, 214, 215, 271, 277, 289, 336, 358, 394. ⟨mathchardef token⟩, \underline{271}, 289.

Page A474, right column (3/22/92)

pound sterling, 54, 339, 428.

Page A477, right column (3/22/92)

sterling, 54, 339, 428.

Page A480, left column (4/9/92)

*\unhbox, 120, 283, \underline{285}, 293, 354, 356, 399.

*\unhcopy, 120, 283, \underline{285}, 293, 353.

Page A481, left column (2/25/93)

whatsits, 95, 110, 157, 226–229, 455.

Page A483, lines 15–21 (2/25/93)

       P.O. Box 869
       Santa Barbara, CA 93102-0869 USA.
       }

Don’t delay, write today! That number again is TEX Users Group P.O. Box 869 Santa Barbara, CA 93102-0869 USA.

Page B2, line 10 from the bottom (2/27/93)

define banner ≡ ´ This␣is␣TeX,␣Version␣3.1415´ { printed when TEX starts }

Page B89, line 12 (2/27/93)

In horizontal mode, the prev graf field is used for initial language data.

Page B89, line 20 (2/27/93)

pg field , ml field : integer ; aux field : memory word ; [Also delete the definitions of lhmin and rhmin , lines 32 and 33.]

Page B90, line 13 (2/27/93)

prev depth ← ignore depth ; mode line ← 0; prev graf ← 0;

Page B91, top three lines (2/27/93)

if m = hmode then if nest [p].pg field ≠ ´ 40600000 then begin print ("␣(language"); print int (nest [p].pg field mod ´ 200000 ); print (":hyphenmin"); print int (nest [p].pg field div ´ 20000000 ); print char (","); print int ((nest [p].pg field div ´ 200000 ) mod ´ 100 ); print char (")");

Page B344, lines 21 and 22 (2/27/93) This code assumes that a glue node and a penalty node occupy the same number of mem words.

Page B344, line 30 (2/27/93)

link (tail ) ← new param glue(par fill skip code); init cur lang ← prev graf mod ´ 200000 ; init l hyf ← prev graf div ´ 20000000 ; init r hyf ← (prev graf div ´ 200000 ) mod ´ 100 ; pop nest ;

Page B353, line 4 (2/27/93) Kern nodes do not disappear at a line break unless they are explicit .

Page B353, lines 15 and 16 (2/27/93)

math node: break width [1] ← break width [1] − width (s); kern node: if subtype(s) ≠ explicit then goto done else break width [1] ← break width [1] − width (s);

Page B354, lines 6 and 7 (2/27/93) will be the background plus l_{1}, so the length from cur p to cur p should be γ + l_{0} + l_{1} − l. If the post-break text of the discretionary is empty, a break may also discard q; in that unusual case we subtract the length of q and any other nodes that will be discarded after the discretionary break.

Page B354, line 18 (2/27/93)

begin ⟨ Add the width of node s to break width 842 ⟩;

Page B354, line 22 (2/27/93)

if post break (cur p) = null then s ← link (v); { nodes may be discardable after the break }

Page B355, top line (2/27/93)

842. ⟨ Add the width of node s to break width 842 ⟩ ≡

Page B355, lines 9–14 (2/27/93)

hlist node, vlist node, rule node, kern node: break width [1] ← break width [1] + width (s); othercases confusion ("disc2") endcases

Page B364, line 10 (2/27/93) a glue node, penalty node, explicit kern node, or math node.

Page B366, line 11 from the bottom (2/27/93)

kern node: if subtype(cur p) = explicit then kern break else act width ← act width + width (cur p);

Page B367, line 21 (2/27/93)

else if precedes break (prev p) then try break (0, unhyphenated )

else if (type(prev p) = kern node) ∧ (subtype(prev p) ≠ explicit ) then try break (0, unhyphenated );

Page B372, lines 12 and 13 (2/27/93)

if type(q) = kern node then if subtype(q) ≠ explicit then goto done1 ;

Page B376, line 3 from the bottom (2/27/93)

cur lang ← init cur lang ; l hyf ← init l hyf ; r hyf ← init r hyf ;

Page B377, lines 11 and 12 (2/27/93)

cur lang , init cur lang : ASCII code; { current hyphenation table of interest } l hyf , r hyf , init l hyf , init r hyf : integer ; { limits on fragment sizes }

Page B378, line 5 from the bottom, overriding earlier change (2/27/93)

else if (type(s) = kern node) ∧ (subtype(s) = normal ) then begin hb ← s; hyf bchar ← font bchar [hf ]; end

else goto done3 ;

Page B394, lines 12 and 13 (2/27/93)

var n: 0 . . 64; { length of current word; not always a small number } j: 0 . . 64; { an index into hc }

Page B404, line 21 (2/27/93)

var k, l: 0 . . 64; { indices into hc and hyf ; not always in small number range }

Page B460, lines 21 and 22 (2/27/93)

push nest ; mode ← hmode; space factor ← 1000; set cur lang ; clang ← cur lang ; prev graf ← (norm min (left hyphen min )∗´ 100 +norm min (right hyphen min ))∗´ 200000 +cur lang ;

Page B492, line 6 from the bottom (2/27/93)

unsave; prev graf ← prev graf + 3; push nest ; mode ← hmode; space factor ← 1000; set cur lang ; clang ← cur lang ; prev graf ← (norm min (left hyphen min )∗´ 100 +norm min (right hyphen min ))∗´ 200000 +cur lang ;

Page C151, line 11 from the bottom (6/26/93)

scaled 1.42(1 + max(−pen lft , pen rt , pen top, −pen bot ))

Page C262, line 15 (6/26/93)

string base_name, base_version; base_name="plain"; base_version="2.71";

Page C262, line 29 (6/26/93)

def gobble primary g = enddef; def killtext text t = enddef;

Page C271, bottom line (6/26/93)

 culldraw p enddef;

Page C272, three new lines for top of page (6/26/93)

def culldraw expr p = addto pic_doublepath p.t_withpen currentpen;
 cull pic_dropping(-infinity,0) withweight default_wt_;
 addto_currentpicture also pic_; pic_:=nullpicture; killtext enddef;

Page C272, replacement for former line 5 (6/26/93)

  (cut_scaled (1+max(-pen_lft,pen_rt,pen_top,-pen_bot))

Page C296, line 24 (2/3/93)

the definition of rp is changed to ‘]..tension 4..’, and if ‘scaled 5pt’ is inserted

Page C299, line 3 (5/15/92)

a Bernshteĭn polynomial of order n − 1.)

Page C347, left column (5/15/92)

Bernshteĭn, Sergeĭ Natanovich, 14.

Page C348, left column (6/26/93)

culldraw, 271, \underline{272}.

Page C350, left column (6/26/93)

exponential, see mexp.

Page C352, left column (6/26/93)

killtext, \underline{262}, 272.

Page C352, right column (6/26/93)

logarithm, see mlog.

Page C361, lines 14 and 15 (2/25/93) P.O. Box 869 Santa Barbara, CA 93102-0869 USA.

Page D190, and subsequent pages (6/26/93) [Several changes to the code in sections 415, 416, 424, and 425 were made to version 2.71 in July 1991, too numerous to mention here.]

Page D216, line 10 from the bottom (7/15/92) will be offset by w_{1} or w_{2}, unless its slope drops to zero en route to the eighth octant; in the latter

Page D289, lines 9 and 10 (6/26/93)

p ← dep list (p); r ← inf val ;

repeat if value(info(p)) ≥ value(r) then