Date: 1 November 91 Message No: 032
To: TeX implementors and distributors
From: Barbara Beeton
Subject: Publication info for C & T; messages from DEK, part 1
On my return from several weeks of out-of-town meetings, I found
waiting for me a large package from DEK (about 1cm of paper, plus half
a dozen checks, or checques, depending which side of the Atlantic you
were on when you learned to spell English). No major rewards in this
batch, although there will be a version 3.141 probably in January,
after some updates have been checked out a bit more thoroughly and DEK
returns from a couple months in Sweden. I am just about ready to
distribute the checks and the supporting documentation to the original
submitters. I will also post here the details of the submissions and
the replies; this involves deciphering DEK's handwritten notes and
typing them in so that they make sense. The first installment is
included below.
I was also asked to find out the current status of several volumes in
the Computers & Typesetting series, in particular, whether volumes B
and D (**: The Program) now contain the version 3 (etc.) updates. As
this information is likely to be of general interest, the report from
Addison-Wesley is given below.
As usual after such a long break in "official" messages, there have
been quite a few address updates and a few additions. So, once again,
acknowledgements would be appreciated, to make sure the mail is getting
through.
########################################################################
status of volumes in the series Computers & Typesetting, by Donald E. Knuth
information received from Addison-Wesley, 23 October 1991
printing
ref.no. vol. title edition number date
hardbound:
13447 A The TeXbook 1 11th June 1, 1991
13437 B TeX: The Program 1 4th May 1, 1991
13445 C The METAFONTbook 1 4th Sept, 1991
13438 D METAFONT: The Program 1 4th Oct, 1991
13446 E Computer Modern Typefaces 1 3rd Aug, 1987
soft/spiral bound:
13448 The TeXbook 1 20th May 1, 1991
13444 The METAFONTbook 1 6th Feb, 1991
note: all printings are marked "with corrections"
########################################################################
Date: Mon 24 Jun 91 13:28:03-EST
Subject: bug report (plain.tex) for don
don,
here's a bug in plain that has been flushed out by phil taylor.
Date: Fri, 21 JUN 91 20:54:14 BST
From: CHAA006@vax.rhbnc.ac.uk
"Philip Taylor (RHBNC)
"
Subject: Bug in PLAIN
Hi, Barbara et al ...
I have just spent nine hours searching for a bug in my code ...
I finally thought to check Plain.TeX (fmtversion{3.0}) and found ...
\def\multispan#1{\omit \mscount#1
\loop\ifnum\mscount>\@ne \sp@n\repeat}
\def\sp@n{\span\omit\advance\mscount\m@ne}
which explained everything ...
It's simply that the first line ends `#1', rather than `#1\relax';
if \multispan is invoked with a \countdef'd register, as in
\multispan \columns \hrulefill \cr
an extra and totally unwanted space intrudes before the \hrulefill.
Is this a known bug, or has it just failed to emerge from the woodwork
before ?
** Phil.
this little test demonstrates the problem "loud and clear".
\def\testmspan#1{%
\halign{##\hfil&&\qquad##\hfil\cr
XX&\multispan{#1}XXXXX&XX\cr
XX&XX&XX&XX&XX\cr}}
\testmspan{3}
\newcount\columns
\columns=3
\testmspan{\columns}
\catcode`\@=11
\def\multispan#1{\omit \mscount#1\relax
\loop\ifnum\mscount>\@ne \sp@n\repeat}
\catcode`\@=12
\testmspan{\columns}
\bye
i wonder how many people have noticed something slightly wrong but
never went out of their way to check?
-- bb
[ reply from dek:
$2.56 (which works out to about 28\cents{} per hour)
Thanks very much!
will be fixed in plain version 3.1
]
########################################################################
Date: Sun 15 Sep 91 15:03:54-EST
Subject: bugs and questions for don
don, here are some bug reports and other comments that have been
accumulating. i should have sent most of them earlier, but most
of these aren't "easy" ones, and i've been out of town so much
[ dek: ^^^^ rather an understatement ...
but nothing to match the earlier stuff on hyphenation & ligatures. ]
that i just never got them organized.
-- bb
[ dek:
No problem -- good thing in fat, because I just finished a
big project that was causing me to turn off all other mail --
and I'm just about tostart another -- so Sep 17 was the day
I chose to look at TeX stuff. ]
--------------------
Contents:
question on "final" update to TeX and MF
TeXbook errata and questions
easy items
handling of space tokens
still a bug in p. 377 footnote
incompatibility of positive/negative integer values
file name overflow of string pool
TeX
handling of \newlinechar within \special
size of \smash'ed boxes
verifying that 8-bit input is supported
incompatibilities between \input and \openin
WEB system
dealing with repeating code in .WEB files
************************************************************************
Question on "final" update to TeX and MF
Who will be authorized to change the version numbers of TeX and MF
to $\pi$ and $e$ respectively? It might be a good idea just to have
this information "on the record"; perhaps a message to be placed on
file in the TUG office would suffice.
[ dek:
I put such a message into TEX82.BUG and MF84.BUG some time ago,
so I presume any archive keeper could make the change. (Actually
it also implies changes to Volumes B and D also, and in the
`Running' chapters of Volumes A and C; so I have added a phrase
to TEX82.BUG and MF84.BUG. I guess the authorized person will
be my literary executor, given that my program is supposed to be
literate?
]
************************************************************************
TeXbook errata and questions -- easy items
Date: Thu, 27 Jun 91 23:11:47 BST
From: CET1@phoenix.cambridge.ac.uk
Subject: A TeXbook possible-bug from Robert Hunt, etc
> Submitted: 20:44:00 12 Apr 91
> From: Robert Hunt
> To: cet1
> Subject: TeX
>
> I've just discovered a _very_ minor problem with the TeXbook, but I thought I'd
> point it out to you anyway, while there's already an outstanding problem being
> considered. I certainly don't think it's a real "bug" but it's certainly worth
> telling Knuth! I've just noticed that the only place in the TeXbook where it
> informs you that exactly one space token is ignored after a closing $$ is in
> the answer to Exercise 14.30, on page 316. It surely ought to mention this in
> some other places as well: in particular, it should be on page 287, and
> possibly on page 189 (though Knuth is unlikely to want to do this as it'd be
> difficult to avoid having to rearrange lots of text to fit!).
I think that there is something in this, although I suspect that the
canonical place it should be documented is on page 293 (treatment of
$ and $$ when encountered in math mode), not page 287. Anyway, I think
[ dek: ^^^^^^^^^^^^ right
it deserves to have Don look at it: as far as I can make out there
haven't been any TeXbook changes that affect Robert's claim.
[ dek:
Aha, there _is_ room on page 293!
$2.56 ]
i still have outstanding the various error reports about the p.377
footnote. I will try to get back to you on this *soon* (sigh).
Chris Thompson
-------
Date: Mon, 9 Sep 91 13:19:21 PDT
From: raymond@math.berkeley.edu (Raymond Chen)
Subject: TeXbook errata
Please pass these on to DEK, as I ran across them in my marginal notes
after I mailed off my letter...
They're all index items, and they're not really errata.
add `\note: 318'. Many times I've wanted to find that macro and couldn't.
though perhaps keeping it under `footnotes: 121' is good enough.
[ dek: \check ]
add `72' to \hss, even though it doesn't appear explicitly, since that
is where we learn exactly how much glue an \hss produces. (Curiously,
\hfil, \hfill, and \hfilneg are indexed for that page. \hss is the
odd man out.)
[ dek: 32\cents ]
add `93' to `hyphenation', since that's where the most obvious method
of suppressing hyphenation is presented. (I get asked this quite a bit,
and it's annoying not to be able to say, ``Just check the index.'')
[ dek: $2.56
included in check sent directly to him in response to his letter ]
My proposals to change the index are usually rejected, but if DEK feels
like considering them, he can do so.
--rjc
-------
Date: Sun, 18 AUG 91 17:57:27 +0100
From: CA_ROWLEY@vax.acs.open.ac.uk
Subject: Bug in TeXbook
whilst idly perusing Chap 24, looking for yet more amazing syntax and
overloading (of the latter, \font was a new one for me!),
[ dek: you knew about \span ]
i discovered in black and white in the middle of page 275 the bold
statement:
"but in all cases this sign (=) is optional"
now you and i know that Don knows perfectly well that this is not
true---to take a simple example (there are other more subtle ones),
the assignment:
\let \equalsign = =
here the first equals sign is essential.
[ dek: precisely _because_ it is optional! ]
do you think Don wants to know about this?
[ dek: a (black and white) lie? ]
chris
-------
Date: Wed, 21 Aug 91 12:12:15 +0200
From: Eberhard Mattes
Subject: Very insignificant error in The TeXbook?
p. 96:
----------------------------------------------------------------------------
Some compound words in German text change their spelling when they are
split between lines. For example, `backen' becomes `bak-ken' and `Bettuch'
becomes `Bett-tuch'.
----------------------------------------------------------------------------
I think `backen' isn't a compound word, if `compound word' meens
a word composed of two or more words (in contrast to syllables).
[ dek:
$2.56
should i have used `backenfisch' instead? ]
-Eberhard Mattes
-------
************************************************************************
TeXbook errata and questions -- still a bug in p. 377 footnote
[ note that according to Chris Thompson, Robert Hunt had already
informed him that the p. 377 bug wasn't entirely fixed; however
this commentary reached me first. ]
Date: Fri, 31 May 91 11:43:02
From: Mike Piff
To: beebe <@nsfnet-relay.ac.uk:beebe@MATH.UTAH.edu>
Subject: Space tokens
% Please forward to DEK.
% The scheme in the footnote on p377 of The TeXbook appears not to work.
% Mike Piff
[ test code was included, but was replaced by later version, below ]
-----------------------------------------------------------------------------
From Dr M. J. Piff, Department of Pure Mathematics, PO Box 597,
Hicks Noisy Building Site, Hounsfield Road,
[ dek:^^^^^^^^^^^^^^^^^^^^^^^^^ beautiful ]
SHEFFIELD S10 2UN, England.
Tel. SHEFFIELD(0742) 768555 Extension 4431.
JANET MPiff@UK.AC.SHEF.PA or MPiff@UK.AC.SHEF.IBM
-----------------------------------------------------------------------------
-------
Date: Sat 1 Jun 91 23:32:27-EST
From: bbeeton
To: mpiff@pa.shef.ac.uk
Cc: beebe@math.utah.edu
Subject: texbook bug, footnote, p377
nelson beebe forwarded to me your bug report on the footnote on p.377
of the texbook.
this was already reported just a couple of months ago. the attached
correction appears in the most recent errata.tex file (the seventh
such file).
-- bb
--------------------
\bugonpage A377, the bottom 14 lines (3/26/91)
\eightpoint\indent
ASCII \; the macro
also decides whether a space token is explicit or implicit.
\begintt
\newif\ifspace \newif\iffunny \newif\ifexplicit
\def\stest#1{\expandafter\s\the#1! \stest}
\def\s{\funnyfalse \global\explicitfalse \futurelet\next\ss}
\def\ss{\ifcat\noexpand\next\stoken \spacetrue
\ifx\next\stoken \let\next=\sss \else\let\next=\ssss \fi
\else \let\next=\sssss \fi \next}
\long\def\sss#1 #2\stest{\def\next{#1}%
\ifx\next\empty \global\explicittrue \fi}
\long\def\ssss#1#2\stest{\funnytrue {\uccode`#1=`~
\uppercase{\ifcat\noexpand#1}\noexpand~% active funny space
\else \escapechar=\if*#1`?\else`*\fi
\if#1\string#1\global\explicittrue\fi \fi}}
\long\def\sssss#1\stest{\spacefalse}
\endtt
-------
Date: Tue, 04 Jun 91 10:11:21
From: Mike Piff
Subject: texbook bug, footnote, p377
I don't think the code you sent works. It gives an error message on \ftoken.
Mine definitely works, and correctly distinguishes the SIX different space
[dek:^^^^^^^^^^^^^^^^ ha ha
touch\'e [and I sure thought I had tested it ... ]
tokens.
Mike Piff
-------
Date: Wed, 05 Jun 91 10:25:12
From: Mike Piff
Subject: Re: texbook bug, footnote, p377
% I attach a cleaned-up version of what I sent before. This looks more like
% the footnote on p377 of The TeXbook.
% Mike Piff
\newif\ifspace \newif\iffunny \newif\ifexplicit \newif\ifactive
\def\stest#1{\expandafter\s\the#1 \stest}
% [ dek: ^ put ! here in case the token list is empty ]
\def\s{\spacetrue\explicittrue\activefalse\funnyfalse\futurelet\next\ss}
% [ dek: ^ ^ \global (see page 301 near bottom) ]
\def\ss{\ifcat\noexpand\next\stoken
\ifx\next\stoken\let\next=\sss\else\let\next=\ssss\fi
\else\spacefalse\let\next=\sssss\fi\next}
\long\def\seeifactive#1{\expandafter\seex\string#1\seex}
\long\def\seex#1#2\seex{\def\Temp{#2}\ifx\Temp\empty\global\activetrue\fi}
\long\def\sss#1 #2\stest{\def\next{#1}%
\ifx\next\empty\else\explicitfalse\seeifactive{#1}\fi}
% [ dek: ^^
bug if the token list has length >1 ]
\long\def\ssss#1#2\stest{\funnytrue
{\escapechar=\if*#1`?\else`*\fi
% [ dek: ^ \relax needed here I think
[Because TeX wants a space after `*! Otherwise the escapechar
isn't changed until after the \if#1\string#2 .]
diagonalization, eh? ]
\if#1\string#1\else\global\explicitfalse\seeifactive{#1}\fi}}
\long\def\sssss#1\stest{}
\def\CR{\immediate\write16{}}
[ dek:
nice; I had decided in March to give up trying to distinguish
active ones! Actually this _doesn't_ quite work, but it is
my fault (a bug in 3.0: \string^^88 comes out of length 1 when
^^88 is not active, but of length 4 when it's active; according
to page 213 it should be length 1 in both cases).
Also it fails to distinguish _active_ _funny_ *
from explicit funny *,
Also there's a problem when you make |_| active because string
converts that into a space token! Then \seex will have a
runaway argument because an undelimited parameter #1 can't be
a space token.
+-------+
| Aargh |
+-------+
_Also_ a problem when \next is \futurelet to be \if ...
]
\def\report{%
\ifspace
\ifexplicit
\message{explicit}%
\else
\message{implicit}%
\ifactive
\message{active}%
\fi
\fi
\iffunny\message{funny}\else\message{normal}\fi
\message{space}%
\else
\message{nonspace}
\fi
\CR
}
% and now, a few tests of the various possibilities
\newtoks\Test
\def\1{\let\stoken= }\1 %
\catcode`\!=\active
\def\2{\let!= }\2 % ! active let to space
\uccode` =`*
\uppercase{\uppercase{\def\fspace{ }\let\ftoken= } }
% \fspace expands to *space, \ftoken let to *space
\catcode`[=\active
\edef\3{\let\noexpand[=\fspace\fspace}\3% [active let to *space
[ dek: where used? ]
\CR
\Test={ } % explicit normal space
\stest\Test\report
\Test=\expandafter{\fspace} % explicit funny space
\stest\Test\report
\Test={\stoken} %implicit normal space
\stest\Test\report
\Test={\ftoken} % implicit funny space
\stest\Test\report
\Test={!} % active normal space
\stest\Test\report
\catcode`|=\active \let|= \ftoken % active funny space
\Test={|}
\stest\Test\report
\end
[ dek:
see enclosed test [p377.tex, p377.log] which I think _really_
puts the thing through its paces
[actually I did additional tests too because the enclosed
trials always set \escapechar to `?]
]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
p377 dated September 20, 1991 at 1014
% decoding space tokens (footnote on page A377)
% solution found with help of Mike Piff
\newif\ifspace \newif\iffunny \newif\ifexplicit \newif\ifactive
\def\stest#1{\funnyfalse \expandafter\s\the#1! \stest}
\def\s{\global\explicitfalse \global\activefalse \futurelet\next\ss}
\def\ss{\ifcat\noexpand\next\stoken\let\nxt\sx\else\let\nxt\ns\fi\nxt}
\def\sx{\spacetrue\ifx\next\stoken\let\nxt\sss\else\let\nxt=\ssss\fi\nxt}
\long\def\sss#1 #2\stest{\def\next{#1}%
\ifx\next\empty\global\explicittrue \else\testactive#1\s\fi}
\long\def\ssss#1#2\stest{\funnytrue{\escapechar=\if*#1`?\else`*\fi\relax
\if#1\string#1\uccode`#1=`~ % we assume that ~ is an active character
\uppercase{\ifcat\noexpand#1}\noexpand~\global\activetrue
\else\global\explicittrue\fi
\else\testactive#1\s\fi}}
\long\def\ns#1\stest{\spacefalse}
\long\def\testactive#1#2\s{\expandafter\tact\string#1\s\tact}
\long\def\tact#1#2\tact{\def\next{#2}\ifx\next\xs\global\activetrue
\else\ifx\next\empty \global\activetrue\fi\fi} \def\xs{\s}
\def\report#1{\message{#1:}%
\ifspace
\message{\ifexplicit ex\elseim\fi plicit}%
\ifactive\message{active}%
\message{\iffunny funny\else normal\fi space}%
\else\message{nonspace}
\fi
\CR}
\def\CR{\immediate\write16{}}
\newtoks\Test
\def\1{\let\stoken= }\1 % implicit normal space token
\catcode`\!=\active
\def\2{\let!= }\2 % active normal space token
\uccode` =`*
\uppercase{\uppercase{\def\fspace{ }\let\ftoken= } }
% \fspace expands to explicit funny space, \ftoken is implicit funny *space
\uccode` =0
\CR
\test={ }
\stest\test\report1 % explicit normal space
\test=\expandafter{\fspace}
\stest\test\report2 % explicit funny space
\test={\stoken}
\stest\test\report3 % implicit normal space
\test={\ftoken}
\stest\test\report4 % implicit funny space
\test={!}
\stest\test\report5 % implicit active normal space
\catcode`\^^99=\active \let^^99= \ftoken
\test={^^99\par}
\stest\test\report6 % implicit active funny space
{\catcode`\*=\active \let*= ^^99
\test={*}
\stest\test\report7 % implicit active funny space
}
\test={}
\stest\test\report8 % nonspace
\test={{ }}
\stest\test\report9 % nonspace
\test={\if}
\stest\test\report{10} % dangerous nonspace
\test={ \par}
\stest\test\report{11} % explicit normal space
{\catcode`\ =\active\let =\stoken\stoken%
\test={ }%
\stest\test\report{12} % implicit active normal space
}
{\catcode`\ =\active\let =\stoken\ftoken%
\test={ }%
\stest\test\report{13} % implicit active funny space
}
\bye
(end of file)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
This is TeX, Version 3.14a for SunOS (preloaded format=plain 91.9.20)
20 SEP 1991 10:13
[ dek: ^^^^^ Note!
[Same variations do _not_ work with version 3.14;
3.14a is an experimental "\alpha test" for next release]
]
**p377.tex
(p377.tex
\test=\toks12
1: explicit normalspace
2: explicit funnyspace
3: implicit normalspace
4: implicit funnyspace
5: implicit active normalspace
6: implicit active funnyspace
7: implicit active funnyspace
8: nonspace
9: nonspace
10: nonspace
11: explicit normalspace
12: implicit active normalspace
13: implicit active funnyspace
)
No pages of output.
(end of file)
########################################################################
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Character code reference
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Upper case letters: ABCDEFGHIJKLMNOPQRSTUVWXYZ
% Lower case letters: abcdefghijklmnopqrstuvwxyz
% Digits: 0123456789
% Square, curly, angle braces, parentheses: [] {} <> ()
% Backslash, slash, vertical bar: \ / |
% Punctuation: . ? ! , : ;
% Underscore, hyphen, equals sign: _ - =
% Quotes--right left double: ' ` "
%"at", "number" "dollar", "percent", "and": @ # $ % &
% "hat", "star", "plus", "tilde": ^ * + ~
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[ end of message 032 ]
-------