Subject: more errata; corrections to TEX82.BUG and CM changes, etc.
From: bbeeton <[email-masked]>
To: [email-masked]
Date: Sat 7 Jan 89 17:40:07-EST

Date:	  7 Jan 89				Message No:	012

To:	  TeX implementors and distributors

From:	  Barbara Beeton

Subject:  more errata; corrections to TEX82.BUG and CM changes

Don Knuth says

    people still read those books 
    and still find mistakes! I just added errata for pages A383 and C271.
    Page A383 should have been updated when I made TeX version 1.3 in 1985!

Changes to ERRATA.TEX are included below.

A small correction has been made to TEX82.BUG in a very old change; it
affects only documentation, and corrects a module number.

Chris Thompson has informed me that some lines in the difference list for
SYMBOL.MF were corrupted.  I believe that all of these were in the final
context lines, so anyone who has tried to apply the changes by hand has
probably been able to get a correct file.  Nonetheless, the correct
difference list is given below.  (The discrepancies are due to a glitch in
the software used to transfer the difference files from a DEC-20 to a
VAX/VMS.  I knew this was a problem, and checked all the difference files
accordingly, or so I thought.  This one slipped through somehow.  Apologies.)

After contemplating the nature of the last two bug fixes to TeX and MF, I
have decided that a cumulative list of differences might be useful to anyone
who may have delayed installing the changes conveyed in these messages.
The following cumulative difference lists now exist, and I will be happy to
send one or more of them to anyone who sends me a specific request.

	TeX 2.0 (Dec 86) through 2.7 (Nov 87)
	TeX 2.7 (Nov 87) through 2.95 (Dec 88)
	MF 1.3 (Dec 86) through 1.7 (Dec 88)

When I communicated the changes for TANGLE 2.9 in message 11, I failed to
include Knuth's explanation.  Here it is.

    At the suggestion of Wayne Sewell, who is writing a book about WEB,
    I've removed a restriction: One can now use a nonnumeric macro
    before declaring it. (The old documentation for section 59 of TANGLE
    mentioned that this restriction wasn't really necessary. I've finally
    eliminated it, because Wayne found it a hassle, and I wanted to reward
    him for all his hard work.

    The only change, except to version number and documentation, is
    to insert `if t=numeric then' before the first err_print in section 59.
    The only change as far as users go is that some programs that used to
    give error messages will now run without error.

    Programmers who use a macro before declaring it may get a spurious
    warning about conflict between identifiers with the same first six letters;
    TANGLE won't know that certain identifiers will later become macros.

The changes to TANGLE precipitated some changes in the WEB manual.  Those
changes are listed below.

In response to an inquiry for suggestions on how the TRIP and TRAP LOG files
might safely be sent across unpredictable gateways, I was sent two small C
programs, one to hexify files and the other to unhex them.  Here is the
description and a warning that came with the code:

    The C programs hex.c and unhex.c translate between 8-bit binary files
    and straight hex files, in which every pair of hexadecimal digits
    corresponds to a single 8-bit byte.  Certain files in the Kermit
    distribution are in this format.  You can recognize them because they
    contain only the characters 0-9 and A-F -- no colons or other characters.
 
    Warning - HEX.C doesn't work under Microsoft C on the IBM PC family:
    getchar() returns EOF (-1) whenever it reads a 0xFF byte from the input
    file.  Seems like a bug in MSC...  Since everything is an int, there
    shouldn't be any sign extension going on.  Boo.  Testing with feof()
    wouldn't help either, because getchar() buffers ahead.  Maybe use
    single-character read()?

This seems the most promising method I've heard about so far.  I doubt very
much that any 0xFF bytes will occur in the LOG files, so that doesn't seem
a problem.  I plan to test this out, and if I can succeed in making it work
here, the next message will include the C code, and then I will begin to
send out the long-awaited TRIP and TRAP.  If anyone believes they would have
a problem with this technique, please let me know; on the other hand, if
anyone has another reasonable suggestion, I'd like to hear that too.

I was notified by my system administrator that at least two copies of the
last message failed to be sent, but the addresses were scrambled and there
was no way to identify the intended recipients.  If you have missed any
messages, please let me know, and also acknowledge receipt of this one.
I will be out of town from Jan 13-30, and I will try, after I return, to
query anyone from whom I haven't received a reply.  (TRIP and TRAP will
also have to wait until after I return, but I hope finally to be able to
take care of them quickly then.)

########################################################################

Extracts from ERRATA.TeX (differences as compared with previous version)

;COMPARISON OF PS:<TEX.DOC>ERRATA.TEX.18 AND PS:<TEX.DOC>ERRATA.NEW.2
;OPTIONS ARE    /E /3

**** FILE PS:<TEX.DOC>ERRATA.TEX.18, 2-51 (2996)
\bugonpage A454, lines 23--29 (8/13/87)
**** FILE PS:<TEX.DOC>ERRATA.NEW.2, 2-51 (2996)
\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)
***************

**** FILE PS:<TEX.DOC>ERRATA.TEX.18, 2-100 (4766)
\bugonpage A480, right column (2/15/88)
**** FILE PS:<TEX.DOC>ERRATA.NEW.2, 2-115 (5382)
\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)
***************

**** FILE PS:<TEX.DOC>ERRATA.TEX.18, 4-39 (21232)
\bugonpage C271, line 4 from the bottom (12/23/88)
**** FILE PS:<TEX.DOC>ERRATA.NEW.2, 4-39 (21991)
\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)
***************

########################################################################

Correction to TEX82.BUG in change no. 300 (25 Nov 84)

;COMPARISON OF PS:<TEX.DOC>TEX82.BUG.14 AND PS:<BEETON.BB>TEX82.BUG.2
;OPTIONS ARE    /E /3

**** FILE PS:<TEX.DOC>TEX82.BUG.14, 19-463 (139100)
@x module 693
  print_int(dyn_used); print("; max so far: ");
**** FILE PS:<TEX.DOC>TEX82.BUG.15, 19-463 (139100)
@x module 639
  print_int(dyn_used); print("; max so far: ");
***************

########################################################################

Differences in SYMBOL.MF

;COMPARISON OF PS:<TEX.CM>SYMBOL.MF.7 AND PS:<TEX.CM>SYMBOL.MF.8
;OPTIONS ARE    /E /3

**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-47 (1929)
x3-.5dot_size=hround(.5w-.5dot_size); w:=r:=2x3;
y3+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height]+.5dot_size);
**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-47 (1929)
x3-.5dot_size=hround(.5w-.5dot_size); center_on(x3);
y3+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height]+.5dot_size);
***************

**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-500 (21343)
.5[x1,x2]=x3=good.x .5w; w:=r:=2x3; lft x1=hround(.5w-u*sqrt48);
draw z1--z2--z3--cycle;  % stroke
**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-500 (21347)
.5[x1,x2]=x3=good.x .5w; center_on(x3); lft x1=hround(.5w-u*sqrt48);
draw z1--z2--z3--cycle;  % stroke
***************

**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-508 (21625)
.5[x1,x2]=x3=good.x .5w; w:=r:=2x3; lft x1=hround(.5w-u*sqrt48);
draw z1--z2--z3--cycle;  % stroke
**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-508 (21633)
.5[x1,x2]=x3=good.x .5w; center_on(x3); lft x1=hround(.5w-u*sqrt48);
draw z1--z2--z3--cycle;  % stroke
***************

**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-615 (26376)
x1=x2=good.x .5w; w:=r:=2x1; lft x3=hround u; x4=r-x3;
bot y1=0; y2-y1=x4-x3;
**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-615 (26388)
x1=x2=good.x .5w; center_on(x1); lft x3=hround u; x4=w-x3;
bot y1=0; y2-y1=x4-x3;
***************

**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-626 (26691)
x1=x2=good.x .5w; w:=r:=2x1; lft x3=hround u; x4=r-x3;
bot y1=0; y2-y1=x4-x3;
**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-626 (26707)
x1=x2=good.x .5w; center_on(x1); lft x3=hround u; x4=w-x3;
bot y1=0; y2-y1=x4-x3;
***************

**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-932 (39305)
x1=x2=x3=x4; x1-.5stem=hround(.5w-.5stem); w:=r:=2x1;
x5-.5stem=hround u; x6=w-x5;
**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-932 (39325)
x1=x2=x3=x4; x1-.5stem=hround(.5w-.5stem); center_on(x1);
x5-.5stem=hround u; x6=w-x5;
***************

**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-946 (39921)
x1=x2=x3; x1-.5stem=hround(.5w-.5stem); w:=r:=2x1;
x4-.5stem=hround u; x5=w-x4;
**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-946 (39945)
x1=x2=x3; x1-.5stem=hround(.5w-.5stem); center_on(x1);
x4-.5stem=hround u; x5=w-x4;
***************

**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-979 (41448)
x1=x4=x30=x33=good.x .5w; w:=r:=2x1;
x2=good.x(x1-.5u)-eps; lft x1-rt x10=hround .5pt; lft x12=hround .5u;
**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-979 (41476)
x1=x4=x30=x33=good.x .5w; center_on(x1);
x2=good.x(x1-.5u)-eps; lft x1-rt x10=hround .5pt; lft x12=hround .5u;
***************

**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-997 (42416)
x1=x4=good.x .5w; w:=r:=2x1;
lft x2=hround u; x3=w-x2;
**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-997 (42448)
x1=x4=good.x .5w; center_on(x1);
lft x2=hround u; x3=w-x2;
***************

**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-1009 (42973)
x1=x5=good.x .5w; w:=r:=2x1;
lft x7=hround u; x8=4u; x2+x8=x3+x7=x4+x6=w;
**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-1009 (43009)
x1=x5=good.x .5w; center_on(x1);
lft x7=hround u; x8=4u; x2+x8=x3+x7=x4+x6=w;
***************

**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-1023 (43554)
x1=x10=good.x .5w; w:=r:=2x1;
x2=good.x(x1-.5u)-eps; lft x1-rt x6=hround .5pt; x5=x6;
**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-1023 (43594)
x1=x10=good.x .5w; center_on(x1);
x2=good.x(x1-.5u)-eps; lft x1-rt x6=hround .5pt; x5=x6;
***************

########################################################################

Changes in the WEB manual

;COMPARISON OF PS:<TEX.DOC>WEBMAN.TEX.2 AND PS:<TEX.DOC>WEBMAN.TEX.3
;OPTIONS ARE    /E /3

**** FILE PS:<TEX.DOC>WEBMAN.TEX.2, 1-198 (11598)
A module begins with the pair of symbols `\.{@\ }' or `\.{@*}', where
**** FILE PS:<TEX.DOC>WEBMAN.TEX.3, 3-43 (11596)
\eject % page break inserted Dec 88

A module begins with the pair of symbols `\.{@\ }' or `\.{@*}', where
***************

**** FILE PS:<TEX.DOC>WEBMAN.TEX.2, 1-361 (21994)
and \\{char}, even though \\{buffer} and \\{char}
**** FILE PS:<TEX.DOC>WEBMAN.TEX.3, 3-208 (22031)
\vadjust{\eject} % page break inserted Dec 88
and \\{char}, even though \\{buffer} and \\{char}
***************

**** FILE PS:<TEX.DOC>WEBMAN.TEX.2, 1-413 (24876)
than one; it must not be a single letter. Furthermore, the identifier must
be making its first appearance in the \.{WEB} file; a macro must be defined
before it is used.

Numeric macros are subject to the following restrictions:\quad
(1)~The right-hand side of the numeric definition must be made entirely from
integer constants, numeric macros, preprocessed strings (see below), and
**** FILE PS:<TEX.DOC>WEBMAN.TEX.3, 4-18 (24959)
than one; it must not be a single letter.

Numeric macros are subject to the following restrictions:\quad
(1)~The identifier must
be making its first appearance in the \.{WEB} file;
a numeric macro must be defined before it is used.\quad
(2)~The right-hand side of the numeric definition must be made entirely from
integer constants, numeric macros, preprocessed strings (see below), and
***************

**** FILE PS:<TEX.DOC>WEBMAN.TEX.2, 1-425 (25582)
(2)~The numeric value must be less than $2^{15}=32768$ in absolute value.
(For larger values, you can use `\.{==}' in place of~`\.=', thus making use
**** FILE PS:<TEX.DOC>WEBMAN.TEX.3, 4-31 (25670)
(3)~The numeric value must be less than $2^{15}=32768$ in absolute value.
(For larger values, you can use `\.{==}' in place of~`\.=', thus making use
***************

########################################################################

[ end of message 012 ]
-------