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 package provides both forward and backward compatibility of the LaTeX kernel.
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.