LaTeX is a large set of commands that is executed by a TeX program (see Overview). 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
pdflatex, then the pdfTeX engine is run (https://ctan.org/pkg/pdftex). When invoked as
latex, the main output is a .dvi file; as
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 command
etex, but this is plain TeX (and produces .dvi).
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
lualatex, the 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
xelatex, the 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 (
dvipdfmx 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
-dev 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 LaTeX
dev formats” by Frank Mittelbach, TUGboat 40:2, https://tug.org/TUGboat/tb40-2/tb125mitt-dev.pdf.
© 2007–2018 Karl Berry
Public Domain Software