TeX is a typesetting system written by Donald E. Knuth, who says in the Preface to his book on TeX (see TeX-related books) that it is ``intended for the creation of beautiful books -and especially for books that contain a lot of mathematics''.
Knuth developed a system of `literate programming' to write TeX,
and he provides the literate (WEB) source of TeX free of charge,
together with tools for processing the
web source into something
that can be compiled and something that can be printed; there's never
any mystery about what TeX does. Furthermore, the WEB system
provides mechanisms to port TeX to new operating systems and
computers; in order that one may have some confidence in the ports,
Knuth supplied a test by means of which one may judge the fidelity of
a TeX system. TeX and its documents are therefore highly
TeX is a macro processor, and offers its users a powerful
programming capability. For this reason, TeX on its own is a
pretty difficult beast to deal with, so Knuth provided a package of
macros for use with TeX called
plain TeX is
effectively the minimum set of macros one can usefully employ with
TeX, together with some demonstration versions of higher-level
commands (the latter are better regarded as models than used as-is).
When people say they're ``programming in TeX'', they usually mean
they're programming in
The `X' stands for the Greek letter Chi, and is pronounced by English-speakers either a bit like the `ch' in `loch' ([x] in the IPA) or like `k'. It definitely is not pronounced `ks'.
METAFONT was written by Knuth as a companion to TeX; whereas TeX defines the layout of glyphs on a page, METAFONT defines the shapes of the glyphs and the relations between them. METAFONT details the sizes of glyphs, for TeX's benefit, and details the rasters used to represent the glyphs, for the benefit of programs that will produce printed output as post processes after a run of TeX.
METAFONT's language for defining fonts permits the expression of several classes of things: first (of course), the simple geometry of the glyphs; second, the properties of the print engine for which the output is intended; and third, `meta'-information which can distinguish different design sizes of the same font, or the difference between two fonts that belong to the same (or related) families.
Knuth (and others) have designed a fair range of fonts using METAFONT, but font design using METAFONT is much more of a minority skill than is TeX macro-writing. The complete TeX-user nevertheless needs to be aware of METAFONT, and to be able to run METAFONT to generate personal copies of new fonts.
The MetaPost system implements a picture-drawing language very much like that of METAFONT except that it outputs PostScript commands instead of run-length-encoded bitmaps. MetaPost is a powerful language for producing figures for documents to be printed on PostScript printers. It provides access to all the features of PostScript and it includes facilities for integrating text and graphics. (Knuth tells us that he uses nothing else for diagrams in text that he is writing.)
Much of MetaPost's source code was copied from METAFONT's sources with Knuth's permission.
TeX (and METAFONT and MetaPost) are written in a `literate' programming language called Web which is designed to be portable across a wide range of computer systems. How, then, is a new version of TeX checked?
Of course, any sensible software implementor will have his own suite of tests to check that his software runs: those who port TeX and its friends to other platforms do indeed perform such tests.
Knuth, however, provides a `conformance test' for both TeX
trip) and METAFONT (
He characterises these as `torture tests': they are designed not to
check the obvious things that ordinary typeset documents, or font
designs, will exercise, but rather to explore small alleyways off the
main path through the code of TeX. They are, to the casual reader,
Once an implementation of TeX has passed its
trip, or and
implementation of METAFONT has passed its
trap, test it may
reasonably be distributed as a working version.
Knuth's distributed source does not designate the code, which generates this 2-digit date, as a valid area where implementations may differ. However, he announced in 1998 that implementators can alter this code without fear of being accused of non-compliance. Nearly all implementations that are being actively maintained had been modified to generate 4-digit years in the format file and the log, by the end of 1998.
\yearreturn a meaningful value (which means that TeX can, in principle, be implemented on platforms that don't make the value of the clock available to user programs). The TeXbook (see TeX-related books) defines
\yearas ``the current year of our Lord'', which is the only correct meaning for
\yearfor those implementations which can supply a meaningful value, which is to say nearly all of them.
In short, TeX implementations should provide a value in
giving the 4-digit year Anno Domini, or the value 1776 if the
platform does not support a date function.
Note that if the system itself fails to deliver a correct date to
\year will of course return an incorrect value.
TeX cannot be considered Y2K compliant, in this sense, on a
system that is not itself Y2K compliant.
\year. The LaTeX suite performs such calculations in a small number of places; the calculations performed in the current (supported) version of LaTeX are known to be Y2K compliant.
Other macros and macro packages should be individually checked.
LaTeX is a TeX macro package, originally written by Leslie Lamport, that provides a document processing system. LaTeX allows markup to describe the structure of a document, so that the user need not think about presentation. By using document classes and add-on packages, the same document can be produced in a variety of different layouts.
Lamport says that LaTeX ``represents a balance between functionality and ease of use''. This shows itself as a continual conflict that leads to the need for such as the present article: LaTeX can meet most user requirements, but finding out how is often tricky.
Lamport never recommended how one should pronounce LaTeX, but a lot of people pronounce it `Lay TeX' or perhaps `Lah TeX' (with TeX pronounced as the program itself; see the rules for TeX).
The `epsilon' in `LaTeX2e' is supposed to be suggestive of a small improvement over the old LaTeX 2.09. Nevertheless, most people pronounce the name as `LaTeX-two-ee'.
plainTeX or LaTeX?
There's no straightforward answer to this question. Many people swear
plain TeX, and produce highly respectable documents using it
(Knuth is an example of this, of course). But equally, many people
are happy to let someone else take the design decisions for them,
accepting a small loss of flexibility in exchange for a saving of
The arguments around this topic can provoke huge amounts of noise and heat, without offering much by way of light; your best bet is to find out what those around you are using, and to go with the crowd. Later on, you can always switch your allegiance; don't bother about it.
If you are preparing a manuscript for a publisher or journal, ask them what markup they want before you develop your own; many big publishers have developed their own LaTeX styles for journals and books, and insist that authors stick closely to their markup.
AMS-TeX is a TeX macro package, originally written by Michael Spivak for
the American Mathematical Society (AMS) during 1983-1985. It
is described in
``The Joy of TeX'' by Michael D. Spivak (second edition,
AMS, 1990, ISBN 0-821-82997-1). It is based on
plain TeX, but
features for producing more professional-looking maths formulas with
less burden on authors. It pays attention to the finer details of
sizing and positioning that mathematical publishers care about. The
aspects covered include multi-line displayed equations, equation
numbering, ellipsis dots, matrices, double accents, multi-line
subscripts, syntax checking (faster processing on initial
error-checking TeX runs), and other things.
As LaTeX increased in popularity, authors asked to submit papers to the AMS in LaTeX, and so the AMS developed AMS-LaTeX, which is a collection of LaTeX packages and classes that offer authors most of the functionality of AMS-TeX.
The Eplain macro package expands on and extends the
plain TeX. Eplain is not intended to provide
``generic typesetting capabilities'', as do LaTeX or
Instead, it provides definitions that are intended to be useful
regardless of the high-level commands that you use when you actually
prepare your manuscript.
For example, Eplain does not have a command
which would format section headings in an ``appropriate'' way, as
\section. The philosophy of Eplain is that
some people will always need or want to go beyond the macro designer's
idea of ``appropriate''. Such canned macros are fine - as long as you
are willing to accept the resulting output. If you don't like the
results, or if you are trying to match a different format, you are out
On the other hand, almost everyone would like capabilities such as cross-referencing by labels, so that you don't have to put actual page numbers in the manuscript. Karl Berry, the author of Eplain, says he is not aware of any generally available macro packages that do not force their typographic style on an author, and yet provide such capabilities.
Lollipop is a macro package written by Victor Eijkhout; it was used in the production of his book ``TeX by Topic'' (see Tex-related books). The manual says of it:
Lollipop is `TeX made easy'. Lollipop is a macro package that functions as a toolbox for writing TeX macros. It was my intention to make macro writing so easy that implementing a fully new layout in TeX would become a matter of less than an hour for an average document, and that it would be a task that could be accomplished by someone with only a very basic training in TeX programming.
Lollipop is an attempt to make structured text formatting available for environments where previously only WYSIWYG packages could be used because adapting the layout is so much more easy with them than with traditional TeX macro packages.
The manual goes on to talk of ambitions to ``capture some of the LaTeX market share''; it's a very witty package, but little sign of it taking over from LaTeX is detectable... An article about Lollipop appeared in TUGboat 13(3).
Texinfo is a documentation system that uses one source file to
produce both on-line information and printed output. So
instead of writing two different documents, one for the on-line help
and the other for a typeset manual, you need write only one
document source file. When the work
is revised, you need only revise one document. You can read the
on-line information, known as an ``Info file'', with an Info
documentation-reading program. By convention, Texinfo source file
names end with a
You can write and format Texinfo files into Info files within GNU
emacs, and read them using the emacs Info
reader. If you do not have emacs, you can format Texinfo
files into Info files using makeinfo and read them using
The Texinfo distribution, including a set of TeX macros for formatting Texinfo files is available as macros/texinfo/texinfo.tar.gz
It's free because Knuth chose to make it so. He is nevertheless apparently happy that others should earn money by selling TeX-based services and products. While several valuable TeX-related tools and packages are offered subject to restrictions imposed by the GNU General Public Licence (`Copyleft'), TeX itself is not subject to Copyleft.
There are commercial versions of TeX available; for some users, it's reassuring to have paid support. What is more, some of the commercial implementations have features that are not available in free versions. (The reverse is also true: some free implementations have features not available commercially.)
Usually, this article does not describe commercial versions; see major vendors for some details.
Knuth has declared that he will do no further development of TeX; he will continue to fix any bugs that are reported to him (though bugs are rare). This decision was made soon after TeX version 3.0 was released; at each bug-fix release the version number acquires one more digit, so that it tends to the limit pi (at the time of writing, Knuth's latest release is version 3.14159). Knuth wants TeX to be frozen at version pi when he dies; thereafter, no further changes may be made to Knuth's source. (A similar rule is applied to METAFONT; its version number tends to the limit e, and currently stands at 2.718.)
There are projects (some of them long-term projects: see, for example, the LaTeX3 project) to build substantial new macro packages based on TeX. For the even longer term, there are various projects to build a successor to TeX; see the Omega project and NTS.
TUG is the TeX Users Group. TUGboat is TUG's main journal, containing useful articles about TeX and METAFONT. TUG also produces a newsletter for members (TeX and TUG News), organises a yearly conference, runs training courses, sells almost all TeX-related books, and distributes TeX-related microcomputer software on disk. TUG has a Technical Council to coordinate TeX-related developments (TUG Technical Working Groups). Enquiries should be directed to:
TeX Users Group
1466 NW Front Avenue, Suite 3141
Portland, OR 97209
Tel: (+1) 503-223-9994
Fax: (+1) 503-223-3960
CTAN details: usergrps/tug
The following groups publish their membership (etc.) information electronically on CTAN archives:
DANTE, Deutschsprachige Anwendervereinigung TeX e.V.
Tel: (+49) 06221 29766
Fax: (+49) 06221 167906
CTAN details: usergrps/dante
93220 Gagny principal,
CTAN details: usergrps/gut
Postbus 394, 1740AJ Schagen,
CTAN details: usergrps/ntg
UK TeX Users' Group,
c/o Peter Abbott,
1 Eymore Close,
Birmingham B29 4LB
Tel: (+44) 0121 476 2159
CTAN details: usergrps/uktug
A listing of all known groups is available as usergrps/info/usergrps.tex
TUG has an autonomous Technical Council which can appoint Technical Working Groups related to the specific areas of interest to the TeX community. Each group has a chair/contact person and establishes its own working methods and membership; anyone interested in taking part should contact the group's chair person. Suggestions for new groups should be addressed to email@example.com; a list of members of the Technical Council can be found at http://tug.org/committees.html
Below is a brief list of currently active groups:
Contact: Barbara Beeton (firstname.lastname@example.org)
Contact: Sebastian Rahtz (email@example.com)
The group's current set of proposals are to be found on CTAN at tds/draft-standard
Contact: Karl Berry (firstname.lastname@example.org)
Contact: Michael Sofka (email@example.com)
Contact: Christina Thiele (firstname.lastname@example.org)