Should I read Donald Knuth's The TeXbook?

If you want an in-depth understanding of LaTeX you can start somewhere else. However, if you want to really understand TeX then there is no way to avoid the great TeXBook! (I actually ordered the whole 'Computers & Typesetting, Volumes A-E Boxed Set' just two weeks ago. It's still on its way to Europe -- the US prices are so much cheaper :-) )

It explains a lot of how the TeX engine works. I really just started to understand some of the fine mechanics of it after reading this book.

The sources of The TeXBook are on CTAN, so you could have a peek in it (in source form only). There is also TeX for the Impatient as a full PDF document. However, I didn't read that book yet.


If you want to gain an in-depth understanding of the TeX family, you will certainly read the TeXbook, early or late.

There are electronic versions of "TeX for the Impatient" and "TeX by Topic" (already installed in TeX Live, but not MiKTeX). They are easy to achieve, and can be additional supplements or alternate of TeXbook. Anyway, TeXbook is still worth to read.

Since you are a LaTeX user, you may also read the documented source code of LaTeX, say source2e and classes document, and source code of any package you are interested in. This may be what Martin said a start somewhere else about LaTeX. I learned a lot from others' code, no less than from the books.

Since you want to understand how TeX works, you may also need knowledge of MetaFont, modern TeX engines (eTeX, pdfTeX, XeTeX, LuaTeX, ...), PostScript/PDF drivers (Dvips, dvipdfmx, ...), WEB2C, and so on. For an overview of TeX family, I suggest "An overview of TeX". These may be as important as TeX language itself.


Yes, you should definitely read it. I also have a background in Computer Science, and I first read The TeX Book ~5 years after I learned LaTeX; I seriously regret not having read it sooner.

The argument for a LaTeX user to learn TeX is similar to the argument for a C coder to learn assembly: You can program just fine in C without understanding assembly, but it's often useful to know what is going on behind the scenes.

As for first reading alternative texts, I think there is something to be said about reading the manual written by the guy who created TeX in the first place. Isn't that why most C++ programmers first read Stroustrup's book? I also find Knuth's writing style to be very entertaining.