Date: 24 Dec 87 Message No: 003 To: TeX implementors and distributors From: Barbara Beeton Subject: TeX 2.9, DVItype 2.9 I've just received a message from Don Knuth regarding two messages I forwarded to him from TeXhax; both appeared in issue 103. Oliver Schoett, Negative column widths in \halign -- bug or feature? Chris Thompson, re the expansion of \csname...\endcsname to be \relax The reply: Naturally I'm hoping to get the last bug out of TeX before the bonus amount doubles next week! The "bug or feature" discussed by Oliver Schoett is a feature. I don't want to forbid negative widths, even though they can be confusing in certain cases. Negative numbers have proved to be useful even in accounting, so I hesitate to say that they will never be desired. On the other hand, Chris Thompson has found a bug; I can't argue that the assignment should be global. Ergo, he wins the prize and TeX moves to Version 2.9. Updates from TeX82.BUG, ERRATA.TeX and a list of differences between TeX.WEB 2.8 and 2.9 are given below. A point to ponder: What's the next number after 2.9? -------------------- A couple of items need to be cleaned up from earlier messages. In message 2, the underline _ and assignment := characters were reversed in item 336 of the extract from TeX82.BUG. This is an unfortunate result of my having erred in translating the idiosyncratic SAIL character set by hand instead of by a nice tested canned procedure. 336 is included in its correct form in the expanded extract below. Apologies, and thanks to Chris Thompson for pointing it out. The TeX bug fixed in version 2.7 (bug 335) has also been fixed in DVItype version 2.9. A difference list between DVItype 2.8 and 2.9 appears below. -------------------- Extract from TeX82.BUG 336. If there are no \patterns and some \lccode is 1 (Breitenlohner, 12Dec87) @x module 952 trie_link(0):=0; trie_char(0):=0; trie_op(0):=0; @y trie_link(0):=0; trie_char(0):=0; trie_op(0):=min_quarterword; @z 337. \csname might encounter undefined_cs in a group (Chris Thompson, 23Dec87) @x module 372 begin eqtb[cur_cs]:=eqtb[frozen_relax]; @y begin eq_define(cur_cs,relax,256); @z 338. (I sincerely hope that there won't be any more) -------------------- Extracts from ERRATA.TeX (differences as compared with previous version) **** FILE PS:ERRATA.NEW.2, 2-3 (1510) \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. **** FILE PS:ERRATA.TEX.73, 2-2 (1508) *************** **** FILE PS:ERRATA.NEW.2, 3-6 (3474) \bugonpage B2, line 32 (12/23/87) \ninepoint\noindent\hskip10pt {\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$% {\tt This\]is\]TeX,\]Version\]2.9\char'23}\quad **** FILE PS:ERRATA.TEX.73, 3-6 (3290) \bugonpage B2, line 32 (11/17/87) \ninepoint\noindent\hskip10pt {\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$% {\tt This\]is\]TeX,\]Version\]2.8\char'23}\quad *************** **** FILE PS:ERRATA.NEW.2, 3-34 (4391) \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: \\{eq\_define}: {\bf procedure}, \S227.\par $\\{relax}=0$, \S207.\par **** FILE PS:ERRATA.TEX.73, 3-34 (4207) *************** **** FILE PS:ERRATA.NEW.2, 3-178 (8959) \bugonpage B551, both columns (12/23/87) \eightpoint[Remove `372' from \\{eqtb} and put it into \\{eq\_define}.] \bugonpage B554, left column (12/23/87) \eightpoint[Remove `372' from \\{frozen\_relax}.] **** FILE PS:ERRATA.TEX.73, 3-164 (8413) *************** **** FILE PS:ERRATA.NEW.2, 3-195 (9393) \bugonpage B567, left column (12/23/87) \eightpoint[Insert `372' into \\{relax}.] **** FILE PS:ERRATA.TEX.73, 4-1 (8633) *************** -------------------- Differences between TeX.WEB versions 2.9 and 2.8 **** FILE PS:<1SCRATCH>TEX.WEB.3, 1-26 (1735) % Version 2.9 makes \csname\endcsname's "relax" local (December 1987). % A reward of $40.96 will be paid to the first finder of any remaining bug. **** FILE PS:TEX.WEB.3, 1-27 (1737) % A reward of $40.96 will be paid to the first finder of any remaining bug. *************** **** FILE PS:<1SCRATCH>TEX.WEB.3, 2-93 (9066) @d banner=='This is TeX, Version 2.9' {printed when \TeX\ starts} @ Different \PASCAL s have slightly different conventions, and the present **** FILE PS:TEX.WEB.3, 1-166 (8922) @d banner=='This is TeX, Version 2.8' {printed when \TeX\ starts} @ Different \PASCAL s have slightly different conventions, and the present *************** **** FILE PS:<1SCRATCH>TEX.WEB.3, 26-119 (332316) begin eq_define(cur_cs,relax,256); end; {the control sequence will now match `\.{\\relax}'} **** FILE PS:TEX.WEB.3, 1-7543 (332196) begin eqtb[cur_cs]:=eqtb[frozen_relax]; end; {the control sequence will now match `\.{\\relax}'} *************** -------------------- Differences between DVItype.WEB versions 2.9 and 2.8 **** FILE TX:DVITYPE.WEB.1, 1-14 (823) % Version 2.9 changes negative scaling as in TeX version 2.7 (November, 1987). % Here is TeX material that gets inserted after \input webmac **** FILE TX:DVITYPE.WEB.7, 1-15 (825) % Here is TeX material that gets inserted after \input webmac *************** **** FILE TX:DVITYPE.WEB.1, 1-33 (1532) \centerline{(Version 2.9, November 1987)} \vfill} **** FILE TX:DVITYPE.WEB.7, 1-32 (1452) \centerline{(Version 2.8, August 1984)} \vfill} *************** **** FILE TX:DVITYPE.WEB.1, 1-81 (4122) @d banner=='This is DVItype, Version 2.9' {printed when the program starts} @ This program is written in standard \PASCAL, except where it is necessary **** FILE TX:DVITYPE.WEB.7, 1-80 (4040) @d banner=='This is DVItype, Version 2.8' {printed when the program starts} @ This program is written in standard \PASCAL, except where it is necessary *************** **** FILE TX:DVITYPE.WEB.1, 1-1143 (52850) integer~|z|, which is known to be less than $2^{27}$. If $|z|<2^{23}$, the individual multiplications $b\cdot z$, $c\cdot z$, **** FILE TX:DVITYPE.WEB.7, 1-1142 (52768) integer~|z|, which is known to be less than $2^{27}$. Let $\alpha=16z$. If $|z|<2^{23}$, the individual multiplications $b\cdot z$, $c\cdot z$, *************** **** FILE TX:DVITYPE.WEB.1, 1-1150 (53311) or the same quantity minus $\alpha=2^{4+e}z^\prime$ if $a=255$. This calculation must be done exactly, for the reasons stated above; the following program does the **** FILE TX:DVITYPE.WEB.7, 1-1149 (53247) or the same quantity minus $\alpha$ if $a=255$. This calculation must be done exactly, for the reasons stated above; the following program does the *************** **** FILE TX:DVITYPE.WEB.1, 1-1166 (53927) begin alpha:=16; while z>=@'40000000 do begin z:=z div 2; alpha:=alpha+alpha; end; beta:=256 div alpha; alpha:=alpha*z; end **** FILE TX:DVITYPE.WEB.7, 1-1164 (53847) begin alpha:=16*z; beta:=16; while z>=@'40000000 do begin z:=z div 2; beta:=beta div 2; end; end *************** [ end of message 003 ] -------