Reasons to use plain TeX

Without disagreeing with the other answers, let my try to give an answer to your actual question.

I think that the best reason by far to use Plain TeX is that it will compile in 20 years and produce exactly the same output as it does now and as it did 20 years ago. (Okay, Knuth has fixed some extremely minor bugs.)

Consider the situation with LaTeX today. Various versions of packages can give wildly different results. I've written papers with people and in the 15 minutes before the deadline, we had three different looking PDFs, one of which was over the page limit, from the same code because the page breaking decision had been changed by something. And that's with everybody using LaTeX 2e. Try compiling a LaTeX 2.09 file today. What about Lamport's original LaTeX?

The situation with ConTeXt seems to be worse. It is still in heavy, active development.


Two words: output routines.

LaTeX does much of its heavy lifting in its enormously complex output routine, which leaves essentially no room for user customization. With plain TeX, you can override the default output routine with minimal fuss, giving you a tremendous amount of power over the precise output.

This is just one example of a more general experience that I've had with plain TeX vs. LaTeX. (I haven't used ConTeXt, but I would imagine the situation is similar.) If the core team or package author has anticipated your needs, either explicitly or via parametrization, then everything's fine. But if not, you're totally out of luck. Things tend to be set up in such a way that you can't override them without re-implementing a huge amount of scaffolding. One might say it's the inverse problem of leaky abstractions: the abstractions often prevent you from getting down to the lower levels, even when that's what you need to do.

Plain TeX takes exactly the opposite approach. Everything is low-level, and so is easy to change or override when you need to. The downside of this is obvious: it tends to be more work for the document or format author, since you generally can't just reach for an already prepared package to do X for you. But the advantage is that you can have vastly more control over how your document is typeset. If you don't care about that (and there are perfectly defensible reasons not to care), that's fine; but if you do, plain TeX makes it much easier to achieve.

Since I moved away from LaTeX and to plain TeX, I've noticed another thing that's rarely mentioned. There's a very elegant kind of ‘minimal markup’ (I got this term from Kees van der Laan [PDF]) that tends to be used in plain TeX documents, which I find to be much nicer than the fairly verbose LaTeX commands and environments. Essentially, you end up with very many tiny domain-specific languages that allow you to clearly and concisely express the structure and style of your document. This makes automatic processing of plain TeX documents almost impossible, but it makes working on them as a human very pleasant. There's simply less clutter; the commands sort of fade into the background, leaving just the text.

There are plenty of other reasons I prefer plain Tex, but others have already raised many of them. Keep in mind, though, that the learning curve is steep, and the TeXbook (still the best way to master TeX) is not easy going. But, for me at least, it was—and continues to be—a thoroughly worthwhile and enjoyable experience. Making LaTeX do what I wanted always seemed frustrating and annoying; making plain TeX behave as I want it to is sometimes difficult, but vastly more satisfying.


LaTeX does 90% of what I need, but there are times when I just need to get under the hood. It's the whole leaky abstraction thing. So although I don't recommend learning plain TeX the format, I think learning the core TeX language can make you a much better LaTeX or ConTeXt user.

Tags:

Plain Tex