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
portable.
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; 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 plain TeX.
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 (by John Hobby) 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 (trap).
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,
pretty incomprehensible!
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.
None of TeX, METAFONT or MetaPost can themselves crash
due to any change whatever in the date of any sort.
Timestamps:
As Knuth delivers the sources, a 2-digit year is
stored as the creation time for format files and that value is
printed in logfiles. These items should not be of general concern,
since the only use of the date format file is to produce the log
output, and the log file is designed for human readers only.
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.
The \year primitive:
Certification of a TeX
implementation (see trip/trap testing)
does not require that \year return 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 \year as
``the current year of our Lord'', which is the only correct meaning
for \year for 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 \year
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
TeX, then \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.
Macros:
TeX macros can in principle perform calculations on
the basis of the value of \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.
External software:
Software such as DVI translators
needs to 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'.
There's no straightforward answer to this question. Many people swear
by 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
brain power.
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.
\CONTeXT{} is a macro package developed by Hans Hagen, originally to
serve the needs of the Dutch firm, Pragma. It was designed with the
same general-purpose aims as LaTeX, but (being younger) reflects
much more recent thinking about the structure of markup, etc. In
particular, \CONTeXT{} can customise its markup to an
author's language (customising modules for Dutch, English and German
are provided, at present).
\CONTeXT{} is well integrated, in all of its structure,
with the needs of hypertext markup, and in particular with the
facilities offered by PDFTeX.
\CONTeXT{} doesn't yet have quite such a strong developer community as
does LaTeX, but those developers who are active seem to have
prodigious energy.
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,
and provides many
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
definitions in plain TeX. Eplain is not intended to provide
``generic typesetting capabilities'', as do LaTeX or
Texinfo.
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 \section,
which would format section headings in an ``appropriate'' way, as
LaTeX's \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
of luck.
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 .texi or .texinfo extension.
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
info.
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
USA
Tel: (+1) 503-223-9994
Fax: (+1) 503-223-3960
Email: tug@mail.tug.org
Web: http://www.tug.org/
CTAN details: usergrps/tug
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
tech-council@tug.org;
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:
WG-92-01
TeX Extended Mathematics Font Encoding.
To create font encoding standards for Mathematical fonts
used in TeX systems.
Contact: Barbara Beeton (bnb@math.ams.org)
WG-92-05
TeX Archive Guidelines.
To develop
guidelines for the effective management and utilisation of major TeX
archives, and to initiate communication among the maintainers of the
existing archives for the purpose of coordination and synchronisation.
Contact: Sebastian Rahtz (s.rahtz@elsevier.co.uk)
WG-94-07
TeX Directory Structure.
To identify a universal directory
structure for macros, fonts and other related TeX software so that
recommendations can be made to all suppliers of TeX software.
The group's current set of proposals are to be found on CTAN at tds/draft-standard
Contact: Karl Berry (kb@cs.umb.edu)
WG-94-08
DVI Driver Implementation and Standardisation Issues.
To study the issues in
the requirements of DVI Drivers imposed by changing needs and
technologies, and to make recommendations for implementation and
standardisation of such drivers to enhance the uniformity of their use.
Work will include, but not be limited to, the examination of the use,
syntax, and semantics of \special{..} commands.
Contact: Michael Sofka (sofkam@rpi.edu)
WG-94-10
TeX and Linguistics.
To study and discuss the
requirements for typesetting linguistics in TeX and as a means of
identifying, examining, testing, and comparing macros, fonts, style files
and other aids for typesetting linguistics.
Contact: Christina Thiele (cthiele@ccs.carleton.ca)