LaTeX vs. MiKTeX: The levels of TeX
A friend once asked us, “Should I use LaTeX or MiKTeX?”
In various guises, this is a common question, seemingly innocent, but
actually betraying a fundamental confusion about the levels of operation
in the TeX world. As a further confusion, the word “TeX”
can be used to refer to any of a myriad of items at any level. Starting
at the top:
Live, … These are the large collections of TeX-related
software to be downloaded and installed. When someone says “I
need to install TeX on my machine”, they're usually looking for a
- Front ends and editors:
WinEdt, … These editors are what you use
to create a document file. Some (e.g., TeXShop) are devoted specifically
to TeX, others (e.g., Emacs) can be used to edit any sort of file. TeX
documents are independent of any particular editor; the TeX typesetting
program itself does not include an editor.
- Engines: TeX,
pdfTeX, XeTeX, LuaTeX, … These are the executable
binaries which implement different TeX variants. For example, pdfTeX
implements direct PDF output (which is not in Knuth's original TeX),
LuaTeX provides access to many internals via the embedded Lua language,
etc. When someone says “TeX can't find my fonts”, they
usually mean an engine.
plain TeX, … These are the TeX-based languages in which one
actually writes documents. When someone says “TeX is giving me a
mysterious error”, they usually mean a format. (Incidentally, “LaTeX”
has meant “LaTeX2e” for many years now.)
geometry, lm, … These are add-ons to
the basic TeX system, developed independently, providing additional
typesetting features, fonts, documentation, etc. A package might or
might not work with any given format and/or engine; for example, many
are designed specifically for LaTeX, but there are plenty of others,
too. The CTAN sites provide access
to the vast majority of packages in the TeX world; CTAN is generally the
source used by the distributions.
TeX source files can be typeset into several different output
formats, depending on the engine. Notably, the pdfTeX engine (despite
its name) can output both DVI and PDF
At a high level, the output format that gets used depends on the
program you invoke. If you run latex (which implements the
LaTeX format), you will get DVI; if you run pdflatex (which
also implements the LaTeX format), you will get PDF.
To get HTML, XML, etc., output, the tex4ht
program can be used (run htlatex). TeX4ht uses TeX to do its
job, but no TeX engine implements native HTML output. The lwarp LaTeX package causes LaTeX
to output HTML5. The LaTeXML Perl program
independently parses LaTeX documents and generates various output
ConTeXt is a special case,
straddling levels. It contains a format at the level of plain TeX and
LaTeX, but unlike the other formats, it is invoked via a separate
program (e.g., context) which then runs a TeX engine. This
makes it possible to support a wide array of advanced features, such as
integrated graphics and XML input, since the control program can
determine the flow of processing.
Of course, this short web page is only a brief introduction to the
basics. Here are some pointers to further information.
This file is public domain.
$Date: 2019/07/01 01:22:30 $;