Yes, I’m a big computer nerd. Feel free to skip this post if you’re not interested in (La)TeX.

In the past 3 days, I have read the first 80 pages of Don Knuth’s TeXbook, as well as looked through another ~30 pages of appendices (the whole book is about 500 pages long). The book is absolutely fabulous! Many of the finer points do not actually apply to LaTeX (I don’t ever plan on using commands like \bye or \sl), but a lot of it is incredibly useful. I feel like I have begun to lift the wool from my eyes and see (La)TeX for what it truly is. I’ve even found a falsity in Kopka and Daly’s Guide to LaTeX, 4th Edition (the control character \/ inserts an italic correction spacing, and should certainly not be used to break ligatures in any font outside the rm family, and possibly not even inside this family). I can use TeX’s interactive debugger to do something besides quit the current build. I understand catcodes for the first time ever (except the 13th one, which I will get to in a few days), and have had some adventures with them (if you redefine the character `1′, it becomes pretty hard to type the numbers needed to undo such a redefinition, so plan ahead for these difficulties!). This was kinda neat—LaTeX has some extra code built on top of TeX’s handling of accents to make sure you’re in a font that can properly deal with accents (such as the OT1 font encoding, which is used by default), and many of these commands use control sequences such as \OT1-cmd (for those of you who don’t know, by default you cannot use a `1′ or a `-‘ in the name of a control sequence, and I had to do some crazy stuff to even find let alone understand these commands). These past 3 days have been amazing. and I have another 400 pages to read.

Knuth’s intelligence still blows me away. Yes, he’s widely considered one of the smartest CS people ever, but even so, he amazes me. He discusses computers and tokenizers. Then, without skipping a beat, he explains how to customize all of this stuff for Norwegian (including special ligatures and nonstandard keyboards). He describes how typesetting was done in the old days (“upper case” and “lower case” letters were actually stored in two cases of stamps; he talks all about chases, quoins, kerning, ems, exs, etc.). He casually mentions things like how the inch was redefined in the late ’50s, so TeX creates different documents than it might have fifty years ago. It turns out that TeX characters are written accurately to the nearest ~4,000,000th of an inch, and that any round-off errors should not be worrisome because the wavelength of visible light is larger than this.

Throughout the book, Knuth has questions for you to answer, so that you get the hang of applying the stuff he describes, and they remind me uncannily of Prof. O’Neill’s tests: almost all the knowledge I need is right there in the text, but I’m still only getting about 60% of them. They’re amazingly clever and elegant.

If you’re already familiar with (La)TeX and are interested in learning more, I highly recommend this book! However, Knuth describes absolutely all of the TeXnical details in it, and it’s probably a bit too much for the new/casual user.

Leave a Reply

4 Comments

  1. fireshadowed says:

    You’re a computer nerd? I never would have guessed …

    ;)

  2. I’m lazy; post me a link to the source.

    For that matter, is there a copy of the Lamport book online?

    • Alan says:

      The source code can be found here. Appendix E has some instructions on how to compile it (it’s in Plain TeX, with a whole bunch of pretty straightforward modifications), but I haven’t bothered doing that for myself yet. I’m using a PDF that can be found here, though it doesn’t contain figures (this isn’t a big problem; so far it’s missing 1 in the first 12 chapters, and another in an appendix).

      I haven’t heard very good things about Lamport’s book, so I haven’t looked for it yet. Popular opinion seems to be that the Not-So-Short Guide is more useful than his writings.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>