LaTeX vs. MiKTeX: The levels of TeX
A friend asked us once, “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:
- Distributions:
MiKTeX, TeX
Live, … These are the large collections of TeX-related
software to be downloaded and installed. When someone says “I
need TeX on my system”, they're usually looking for a
distribution.
- Front ends:
Emacs, TeXShop, TeXnicCenter, WinEdt, … These editors are what you use to
create a document file. Some (e.g., TeXShop) are devoted to TeX
specifically, others (e.g., Emacs) can be used to edit any sort of file.
TeX documents are independent of any particular editor; the
actual TeX typesetting program itself does not include any sort of
editor whatsoever. <--This is in stark contrast to programs such as
Microsoft Word, where editing and typesetting are fundamentally
intertwined.-->
- Packages:
geometry,
lm,
… These are add-ons to the basic TeX system, developed
independently, providing additional typesetting features, fonts,
documentation, etc. The CTAN web
sites provide access to the vast majority of packages in the TeX
world.
- Formats:
LaTeX,
plain TeX, … These are the TeX-based languages in which you
actually write documents. When someone says “TeX is giving me
this mysterious error”, they usually mean a format.
- Engines: TeX,
pdfTeX, XeTeX, LuaTeX, … These are the actual
executable binaries which implement the different TeX dialects. When
someone says “TeX can't find my fonts”, they usually mean an
engine.
Output formats
TeX source files can be typeset into several different output
formats, depending on the engine. Notably, the pdfTeX engine can output
both DVI and PDF
files (despite its name).
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 is commonly used. This utility uses TeX to do its job, but the
TeX engines themselves do not implement HTML output.
ConTeXt
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
utility (e.g., texmfstart) which then indirectly 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 startup
utility can control the flow of processing.
References
Of course, this short web page only covers the basics. Here are some
pointers to further information.
- TeX for the
confused, Gerben Wierda's page on basic terminology.
- Getting started with TeX, the TUG page
giving an introduction to various parts of the TeX world.
- Components
of TeX, Joachim Schrod's technical article describing many of
the relationships hinted at here in more detail. It was written
many years ago, but the relationships still hold.
$Date: 2007/06/04 00:43:02 $;
TUG home page;
search;
contact webmaster.