LaTeX is a large set of commands (macros) 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).
latex
¶pdflatex
¶In TeX Live (https://tug.org/texlive), if LaTeX is invoked
via either the system command latex
or 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, and a few extensions beyond
e-TeX, particularly for file manipulation.
lualatex
¶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.
xelatex
¶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 (x
)dvipdfmx
program, but this process is automatic. The .xdv
file is only
useful for debugging.
hilatex
¶If LaTeX is invoked via the system command hilatex
, the
HiTeX engine is run (https://ctan.org/pkg/hitex). This
program produces its own format, named HINT, designed especially for
high-quality typesetting on mobile devices.
platex
¶uplatex
¶These commands provide significant additional support for Japanese and
other languages; the u
variant supports Unicode. See
https://ctan.org/pkg/ptex and https://ctan.org/pkg/uptex.
As of 2019, there is a companion -dev
command and format for
all of the above, except hitex
:
dvilualatex-dev
¶latex-dev
¶lualatex-dev
¶pdflatex-dev
¶platex-dev
¶uplatex-dev
¶xelatex-dev
¶These are candidates for an upcoming LaTeX release. The main purpose is to find and address compatibility problems before an official release.
These -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.