TeX Frequently Asked Questions - Section 1

Go to the first, previous, next, last section, table of contents.

# The Background

## What is TeX?

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.

## How should I pronounce ``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'.

## What is METAFONT?

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.

## What is MetaPost?

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.

## How can I be sure it's really TeX?

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.

## Are TeX and friends Y2K compliant?

Crashing:
  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.

## What is LaTeX?

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.

## How should I pronounce ``LaTeX(2e)''?

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'.

## Should I use `plain` TeX or LaTeX?

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.

## What is \CONTeXT{}?

\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.

Try a copy, from `macros/context`

## What are the AMS packages (AMS-TeX, etc.)?

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.

## What is Eplain?

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.

## What is Lollipop?

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).

## What is Texinfo?

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`

## If TeX is so good, how come it's free?

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.

## What is the future of TeX?

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.

## What are TUG and TUGboat?

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`

## Are there nationally-based user groups, too?

The following groups publish their membership (etc.) information electronically on CTAN archives:

> DANTE, Deutschsprachige Anwendervereinigung TeX e.V.
> Postfach 101840
> D-69008 Heidelberg
> Germany
> Tel: (+49) 06221 29766
> Fax: (+49) 06221 167906
> Email: `dante@dante.de`
> Web: `http://www.dante.de/`
> CTAN details: `usergrps/dante`

> Association GUTenberg,
> BP 10,
> 93220 Gagny principal,
> France
> Email: `gut@irisa.fr`
> Web: `http://www.ens.fr/gut/`
> CTAN details: `usergrps/gut`

> NTG
> Postbus 394, 1740AJ Schagen,
> The Netherlands
> Email: `ntg@nic.surfnet.nl`
> Web: `http://www.ntg.nl/`
> CTAN details: `usergrps/ntg`

> UK TeX Users' Group,
> c/o Peter Abbott,
> 1 Eymore Close,
> Selly Oak,
> Birmingham B29 4LB
> UK
> Tel: (+44) 0121 476 2159
> Email: `UKTuG-Enquiries@tex.ac.uk`
> Web: `http://uk.tug.org/uk-tug`
> CTAN details: `usergrps/uktug`

A listing of all known groups is available as `usergrps/info/usergrps.tex`

## TUG Technical Working Groups

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`)

Go to the first, previous, next, last section, table of contents.