LaTeX is a large set of commands that is executed by a TeX
program (see Overview of LaTeX). Such a set of commands is called a
format, and is embodied in a binary
.fmt file, which can
be read much more quickly than the corresponding TeX source.
This section gives a terse overview of the TeX programs that are commonly available (see also Command line interface).
In TeX Live (https://tug.org/texlive), if LaTeX is invoked
via either the system command
then the pdfTeX engine is run (https://ctan.org/pkg/pdftex).
When invoked as
latex, the main output is a .dvi
pdflatex, the main output is a .pdf file.
pdfTeX incorporates the e-TeX extensions to Knuth’s original
program (https://ctan.org/pkg/etex), including additional
programming features and bi-directional typesetting, and has plenty of
extensions of its own. e-TeX is available on its own as the system
etex, but this is plain TeX (and produces
In other TeX distributions,
latex may invoke e-TeX
rather than pdfTeX. In any case, the e-TeX extensions can be
assumed to be available in LaTeX.
If LaTeX is invoked via the system command
LuaTeX engine is run (https://ctan.org/pkg/luatex). This
program allows code written in the scripting language Lua
(http://luatex.org) to interact with TeX’s typesetting.
LuaTeX handles UTF-8 Unicode input natively, can handle OpenType
and TrueType fonts, and produces a .pdf file by default.
There is also
dvilualatex to produce a .dvi file.
If LaTeX is invoked with the system command
XeTeX engine is run (https://tug.org/xetex). Like LuaTeX,
XeTeX natively supports UTF-8 Unicode and TrueType and OpenType
fonts, though the implementation is completely different, mainly using
external libraries instead of internal code. XeTeX produces a
.pdf file as output; it does not support DVI output.
Internally, XeTeX creates an
.xdv file, a variant of DVI,
and translates that to PDF using the (
program, but this process is automatic. The
.xdv file is only
useful for debugging.
As of 2019, there is a companion
-dev command and format for
all of the above:
These are candidates for an upcoming LaTeX release. The main purpose is to find and address compatibility problems before an official release.
-dev formats make it easy for anyone to help test
documents and code: you can run, say,
pdflatex-dev instead of
pdflatex, without changing anything else in your environment.
Indeed, it is easiest and most helpful to always run the
versions instead of bothering to switch back and forth. During quiet
times after a release, the commands will be equivalent.
These are not daily snapshots or untested development code. They undergo the same extensive regression testing by the LaTeX team before being released.
For more information, see “The LaTeX release workflow and the
dev formats” by Frank Mittelbach, TUGboat 40:2,