# e-TeX and LaTeX

Our fellow moderator Joseph wrote on his blog www.texdev.net, that from the next release on LaTeX2e will require e-TeX.

Why? Wasn’t LaTeX2e intended to be stable, nowadays only getting bug fixes and new features? Could it break something? Well, e-TeX is has been finished in 1999. In December 2003, the LaTeX team wrote:

We expect that within the next two years, releases of LaTeX will change modestly in order to run best under an extended TeX engine that contains the e-TeX primitives, e.g., e-TeX or pdfTeX.

So we have been warned a long time ago. 🙂 Well, e-TeX is in the major TeX distributions, and it is enabled by default. And note, that the latexrelease pack­age pro­vides both for­ward and back­ward com­pat­i­bil­ity of the LaTeX ker­nel.

Why to use e-TeX? One important reason is, that TeX originally has 256 registers, such as count registers for counters and dimen registers for lengths (and skip, muskip, toks, insert and box registers), and e-TeX makes 32768 registers available. Since 2015, LaTeX is already using the extended range if e-TeX is detected.

But there’s more, such as a bunch of additional primitives. Let’s summarize a bit:

• Extended register range
• `\unexpanded`, making the next token unexpandable
• `\unless` that lets you negate \if commands
• `\readline` for reading in text with special characters, such as `%`, `\$`,`\`, `&`, `_`, or `^`
• Bidirectional typesetting
• `\detokenize` for converting tokens into simple text strings
• The `\middle` delimiter that works like `\left` and `\right`

Just to mention what came first to my mind.

e-TeX and expl3 together is the programming layer that LaTeX3 is build on. Now LaTeX2e is committed to it as well.