The following messages are excerpts of the TeXhax list, whose complete archive is on CTAN under digests/texhax. Denis Roegel, June 5, 1995 ============================================================================== Date: 26 Jan 87 0155 PST From: Don Knuth Subject: it happened To: texhax@SCORE.STANFORD.EDU After 14 months with no bug reports, I was getting pretty confident that we could declare TeX to be bug-free. But Saturday night I tried something different (for me) and guess what: There will be a version 2.1. If you have a tendency to type a space after a hyphen or a dash, you might not have been getting optimum line breaks, since TeX didn't compute the correct `badness' of the line following such a break. The incorrect badnesses tended to be masked off because they were associated with an extra penalty; but they could give strange behavior. I'm so sorry. The reward for the next bug will be $40.96. ============================================================================== Date: Tue, 2 Aug 88 14:06 N From: (Gavin Burnage) Subject: RE: Problems combining \tt, \obeyspaces, and \halign \obeyspaces, as you might expect, means that spaces typed become spaces printed -- even if they were inserted for the noblest of reasons (program readability, for example). The starkness of this simple truth makes me wonder whether I ought not to be in Hawaii selling pencils for a living. First correct answer down the line came from one Don Knuth. Thanks also to the other de-goofers who got in touch: Ken Brown, Julian Bradfield and David Lau. > Received: From STANFORD(MAILER) by HNYMPI52 with RSCS id 5665 > for GAVIN@HNYMPI52; Mon, 25 Jul 88 19:26 N > Received: by Forsythe.Stanford.EDU; Mon, 25 Jul 88 10:32:25 PDT > Message-ID: > Date: 25 Jul 88 1025 PDT > From: Don Knuth > Subject: re: Problems combining \tt, \obeyspaces, and \halign > To: GAVIN@HNYMPI52.BITNET > > TeX is obeying the spaces you inserted before the \strut in the > preamble to your \halign. If you move that \strut to the previous > line, everything should work fine (unless the text contains the > character combinations !` or ?`, which give Spanish-style characters!). > > (I don't usually have time to answer TeX questions, but I had an > extra few seconds this morning. I hope there are lots of other > people out there able to answer your query easily.) Gavin Burnage Reply to: Centre for Lexical Information GAVIN@HNYMPI52.BITNET University of Nijmegen Wundtlaan 1 Tel: 6525 XD NIJMEGEN 31-(0)80-515972 (work) The Netherlands ============================================================================== Date: 23 Jan 89 1304 PST >From: Don Knuth Subject: The em in \tt Keywords: TeX as in all cm fonts is twice the width of a digit; thus, \enspace always corresponds to a blank the size of `0' ============================================================================== Date: Mon, 10 Apr 89 15:37:04 EDT From: gpg@arbortext.com Subject: Replies to \fontdimen question Keywords: \fontdimen, TeX Thanks for enlightenment to Don Hosek, whose reply was also sent to TeXhax, and to Don Knuth, who sent me the following note: From DEK@SAIL.Stanford.EDU Mon Apr 3 23:10:04 1989 Date: 03 Apr 89 2003 PDT From: Don Knuth Subject: \fontdimens (see the symbolic code in Volume E, which is a bit more meaningful than the numeric data) The spacing in these fonts is designed under the assumption that 7pt type is used for subscripts of 10pt, 6pt for subscripts of 9pt, and 5pt for subscripts of 7, 6, and 5 pt. The amounts were based on measurements of industrial practice from Monotype days. Other \fontdimen values would be appropriate for other font family groupings. ============================================================================== Date: 27 Oct 89 1211 PDT From: Don Knuth Subject: Calling all Grand Wizards Keywords: TeX, new versions I'm hoping to muster as many as possible of TeX's past masters for an important battle charge, as we lead TeX into the 90s! You may have heard rumors that my resistance to change was temporarily worn down during the recent TUG meeting. Well, it's true: I caved in, and decided to make a TeX version 3.0 that differs substantially from the present version 2.991. The new version is upward compatible, nearly as fast, and only about 10K bytes larger if you don't make full use of the new capabilities. During the past few weeks I have hacked the new version together, and it is now ready for beta-testing. I hope it can be spread rapidly to the hundreds of different machine/operatingsystem configurations that currently run yesterday's version. So I desperately need your help. How about it --- won't it be fun to have one last go at TeX and MF, as they enter their truly final stage? I am now convinced that the new version is the natural, ultimate conclusion to the philosophy I adopted in TeX82 and MF84. Major changes were needed to many of the previous programs. I have prepared and tested the following new versions: TeX version 2.992 (will become 3.0 as soon as two months go by without bug reports) MF version 1.8 (will become 2.0, similarly) TANGLE version 4 WEAVE version 4 POOLtype version 3 TFtoPL version 3 PLtoTF version 3 GFtoDVI version 3 MFtype version 2 The changes fall mostly into three categories: (1) Input files are allowed to contain arbitrary 8-bit characters; previously only 7-bit character sets were supported on input. This means in particular that TANGLE now starts its string pool with string number 256, not 128; all programs that use WEB's string pool feature need to be revised, as they will no longer work with the new TANGLE. (Actually I don't know of any such programs except variants of TeX and MF.) (2) The new TeX supports hyphenation in 256 languages simultaneously. These changes were inspired by Michael Ferguson's Multi-lingual TeX, by my implementation is quite different from his. (3) There is a greatly improved ligature mechanism, allowing (for example) letters to change based on their being at the beginning or end of a word. This upward-compatible extension of TFM format allows ligature/kern programs to be up to 32K words long, and it also has a `skip' command for code-sharing to help keep programs compact. Each of these new features affects many hundreds of lines of code. Altogether 218 of TeX's 1377 modules have been changed; dozens of modules have been completely rewritten. I don't think the change files will be severely affected, but the new situation should still be looked at by experts because expertise is needed to do things right. For example, the 8-bit extension to TANGLE looks fairly innocuous, but on my Sun-UNIX system I had to change one of the accompanying C routines (lineread) because the buffer is now an array of 0..255 instead of an array of 0..127; consequently the Berkeley Pascal compiler now uses two bytes for each buffer element! In TANGLE and WEAVE I can afford that extra memory, but not in TeX or MF; so I've made provisions in the latter for optionally adding/subtracting 128 when reading/writing string pool elements. In your change file you only need to redefine two WEB macros to make that happen; but you also need to change one line of the system-dependent calledit function (which reads directly from TeX/MF's string pool). To run the new TRIP test, you need the new PLtoTF; otherwise you won't have a test font with its new ligature mechanisms. To run the new TRAP test, you need the new TFtoPL in order to test MF's new ability to generate such ligature data. Look for the phrase "change file" in the files tex82.bug and mf84.bug for a few hints. Once you have these new systems working, there will be much more to do in order to make best use of the new 8-bit capabilities. But that can be done in a more relaxed way; the big upgrade in the basic systems needs to be done quickly. With your help, this transition should go very smoothly; we should have trouble only when people who use the new facilities try to do so on old versions of TeX and MF. Therefore: THE SOONER WE STAMP OUT THE OLD VERSIONS, THE BETTER. I've put copies of the new sources on the master TeX archive at Stanford. Joe Weening will soon be sending a message to TeXhax announcing the new location and organization of this archive. I've also sent copies of my personal change files, and updated the files that log all the changes. I hope this material will propagate soon to other TeX archives around the world. A complete list of changes to The TeXbook and The METAFONTbook will appear in the next TUGboat, which has just gone to the printer. A new printing of Volume A is now in the bindery and will be available soon in bookstores; this contains all the version 3.0 changes to TeX. (You will be able to identify it by the words "ninth printing" on the copyright page, on the back of the title page.) Unfortunately the publishers had just made a large printing of the paperback version before I decided to make these changes, so it will be a few months before the paperback version of the TeXbook is updated; at that time it will be recognizable by the words "Seventeenth printing". A-W is keeping two independent numbering schemes for printings of the hardback and paperback versions. The finder's fee for bugs in the new code is $10.24. And if you discover a bug in the "old" paats of TeX while you're installing the new version, you win $163.84. ============================================================================== Date: 30 Oct 89 1240 PST From: Don Knuth Subject: New DVItype Keywords: TeX, dvitype As of today, the new TeX sources at Stanford contain DVItype version 3, which differs from the old by having a new mode of output intermediate between "terse" and "verbose". Old codes were 0 (errors only), 1 (terse), 2 (verbose), 3 (theworks); new codes are 0 (errors only), 1 (terse), 2 (mnemonics), 3 (verbose), 4 (works). As before you run the TRIP test with level 2. This will now choose the new mode, which will still validate the TRIP test although it will lead to files that are almost identical in spite of floating point rounding differences. (The old TRIP test could give you a TRIP.TYP file that looked almost totally different from the "definitive" TRIP.TYP, even when the test was passed.) ============================================================================== Date: 27 Nov 89 2305 PST From: Don Knuth Subject: TeX: a new bug Keywords: TeX, bug I just received a message from Rainer Sch\"opf and Frank Mittelbach in Gutenberg's city (Mainz) that they've done it again, found another subtle bug. This one is especially unique because it will not be detected in the TRIP test; it only occurs in the system-dependent code that figures out the "area" and "extension" part of a file name. As far as I know, the error occurs only when you try to combine \csname somehow with file name specification; for example, \input area:file.ext\csname xyz\endcsname will fail on many systems. (Reason: TeX may have to store the control sequence name xyz, while it's looking for the token following "ext". This moves things in the string pool; but the present TeX doesn't move the area and extension pointers, so they might point to garbage.) This bug will be corrected in version 2.993, but I decided to use TeXhax to let installers get a head start, since this bug affects nearly everybody's system-dependent code! The changes are simple--- so simple I haven't even felt the need to test them yet---but they should be made, and you can get a head start by putting them into your change files before you get a new TEX.WEB file. Here are the changes I'll be making to TEX.WEB (unless there's an error here, which cannot be:) %---- an excerpt from the next version of tex82.bug -------------------- 372. Bugfix 339 didn't go far enough (found by Sch\"opf and Mittelbach). @x module 516 [NOTE: THIS AFFECTS ALMOST ALL CHANGE FILES!] @ And here's the second. @^system dependencies@> @p function more_name(@!c:ASCII_code):boolean; begin if c=" " then more_name:=false else begin if (c=">")or(c=":") then begin area_delimiter:=pool_ptr; ext_delimiter:=0; end else if (c=".")and(ext_delimiter=0) then ext_delimiter:=pool_ptr; str_room(1); append_char(c); {contribute |c| to the current string} @y @ And here's the second. The string pool might change as the file name is being scanned, since a new \.{\\csname} might be entered; therefore we keep |area_delimiter| and |ext_delimiter| relative to the beginning of the current string, instead of assigning an absolute address like |pool_ptr| to them. @^system dependencies@> @p function more_name(@!c:ASCII_code):boolean; begin if c=" " then more_name:=false else begin str_room(1); append_char(c); {contribute |c| to the current string} if (c=">")or(c=":") then begin area_delimiter:=cur_length; ext_delimiter:=0; end else if (c=".")and(ext_delimiter=0) then ext_delimiter:=cur_length; @z @x module 517 [NOTE: THIS DOES TOO, AND SO DOES THE NEXT!] else begin cur_area:=str_ptr; incr(str_ptr); str_start[str_ptr]:=area_delimiter+1; @y else begin cur_area:=str_ptr; str_start[str_ptr+1]:=str_start[str_ptr]+area_delimiter; incr(str_ptr); @z @x ibid else begin cur_name:=str_ptr; incr(str_ptr); str_start[str_ptr]:=ext_delimiter; cur_ext:=make_string; @y else begin cur_name:=str_ptr; str_start[str_ptr+1]:=str_start[str_ptr]+ext_delimiter-area_delimiter-1; incr(str_ptr); cur_ext:=make_string; @z ============================================================================== Date: 08 Jan 90 1727 PST From: Don Knuth Subject: Virtual fonts: More fun for Grand Wizards Keywords: fonts [Not included here; it's the TUGboat article; DR] ============================================================================== Date: Mon, 8 Jan 90 22:37:11 -0800 From: Don Knuth and Joe Weening Subject: New TeX/MF sources available on Stanford's master archive Keywords: TeX, METAFONT, source Thanks to excellent contributions by TeXhaxers and Grand Wizards around the world, the new versions of TeX and METAFONT and their supporting programs have now been quite thoroughly checked out. All known bugs have been corrected and the current state of the master files should be very nearly the permanent one. Therefore, anybody who "held back" on trying the October 1989 versions (on grounds that they were sure to crash) can now be fairly confident that time invested in switching to the new versions will not be wasted. Although TeX and MF have not changed extensively since October, the English language commentary in their WEB files has been edited to agree with the contents of Volumes B and D. Hence you will find that your change files probably need to be revised slightly in this go-round... (some lines won't "match" any more). But this should be the last time you have to fool with such stuff. The archive at Labrea.Stanford.EDU now contains the latest sources of everything, including the brand-new support programs for virtual fonts (VFtoVP and VPtoVF) that have been mentioned in a separate message to TeXhax. Here are the latest version numbers: TANGLE version 4 WEAVE version 4 TeX version 2.993 POOLtype version 3 TFtoPL version 3.1 PLtoTF version 3.2 DVItype version 3.2 METAFONT version 1.9 GFtype version 3 GFtoPK version 2.2 GFtoDVI version 3.0 MFT version 2.0 VFtoVP version 1.0 VPtoVF version 1.0 The new sources also have uptodate versions of the WEB and TRIP and TRAP manuals, as well as the current versions of The TeXbook and The METAFONTbook. To get these files, open an FTP connection to Labrea.Stanford.EDU, log in as "anonymous" with any password, and connect to the directory "pub/tex". The README file in that directory describes what is there. For the programs listed above, the file CHANGES lists the names of files that have changed since the October 1989 release. (It does not list changes to LaTeX, BibTeX, AmSTeX, etc. that have happened in the past few months.) We believe TeX version 3.0 and METAFONT version 2.0 will be essentially identical to the present versions 2.993 and 1.9, since these have been subjected to so many exacting tests. But the version numbers won't be changed officially until two months go by with no bug reports from anywhere in the world. ============================================================================== Date: 08 Jan 90 1752 PST From: Don Knuth Subject: a UNIX-oriented TeX trick Keywords: TeX, UNIX Try creating the following two-line file trick.tex: \def\trick#1 {\setbox0=\lastbox\endgraf\message{`#1'}} \everypar{\trick} and then give UNIX a command line like tex trick *.tex \\end (here I'm assuming that your current directory contains one or more files with the suffix ".tex"). Once you understand this trick, you'll see how to write a listing macro that makes a nicely formatted listing of any group of files named on your command line. Enjoy! ==============================================================================