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 ] -------