TEX(1)
NAME
tex, virtex - text formatting and typesetting
SYNOPSIS
tex [ first line ]
virtex [ first line ]
DESCRIPTION
TeX formats the interspersed text and commands contained
in the named files and outputs a typesetter independent
file (called DVI, which is short for DeVice Independent).
TeX capabilities and language are described in The TeX-
book.
TeX is normally used with a large body of precompiled
macros, and there are several specific formatting systems,
such as LaTeX, which require the support of several macro
files. The basic programs as compiled are called initex
and virtex, and are distinguished by the fact that initex
can be used to precompile macros into a .fmt file, which
is used by virtex. On the other hand, virtex starts more
quickly and can read a precompiled .fmt file, but it can-
not create one. It is the version of TeX which is usually
invoked in production, as opposed to installation.
Any arguments given on the command line to the TeX pro-
grams are passed to them as the first input line. (But it
is often easier to type extended arguments as the first
input line, since Unix shells tend to gobble up or misin-
terpret TeX's favorite symbols, like backslashes, unless
you quote them.) As described in The TeXbook, that first
line should begin with a filename or a \controlsequence.
The normal usage is to say
tex paper
to start processing paper.tex. The name paper will be the
``jobname'', and is used in forming output filenames. If
TeX doesn't get a filename in the first line, the jobname
is texput. The default extension, .tex, can be overridden
by specifying an extension explicitly.
If there is no paper.tex in the current directory, TeX
will look through a search path of directories to try to
find it. If paper is the ``jobname'', a log of error mes-
sages, with rather more detail than normally appears on
the screen, will appear in paper.log, and the output file
will be in paper.dvi. The system library directory
/usr/lib/texmf/texmf/tex contains the basic macro package
plain.tex, described in The TeXbook, as well as several
others. Except when .fmt files are being prepared it is
unnecessary to \input plain, since almost all instances of
TeX begin by loading plain.fmt. This means that all of
the control sequences discussed in The TeXbook are known
when you invoke tex. For a discussion of .fmt files, see
below.
The e response to TeX's error prompt causes the system
default editor to start up at the current line of the cur-
rent file. The environment variable TEXEDIT can be used
to change the editor used. It can contain a string with
"%s" indicating where the filename goes and "%d" indicat-
ing where the decimal line number (if any) goes. For
example, a TEXEDIT string for vi can be set with the csh
command
setenv TEXEDIT "/usr/ucb/vi +%d %s"
A convenient file in the library is null.tex, containing
nothing. When TeX can't find a file it thinks you want to
input, it keeps asking you for another filename; respond-
ing `null' gets you out of the loop if you don't want to
input anything. You can also type your EOF character
(usually control-D).
The initex and virtex programs can be used to create fast-
loading versions of TeX based on macro source files. The
initex program is used to create a format (.fmt) file that
permits fast loading of fonts and macro packages. After
processing the fonts and definitions desired, a \dump com-
mand will create the format file. The format file is used
by virtex. It needs to be given a format filename as the
first thing it reads. A format filename is preceded by an
&, which needs to be escaped with \, or quoted, to prevent
misinterpretation by the Unix shell if given on the com-
mand line.
Fortunately, it is no longer necessary to make explicit
references to the format file. The present version of
TeX, when compiled from this distribution, looks at its
own command line to determine what name it was called
under. It then uses that name, with the .fmt suffix
appended, to search for the appropriate format file. Dur-
ing installation, one format file with the name tex.fmt,
with only the plain.tex macros defined, should have been
created. This will be your format file when you invoke
virtex with the name tex. You can also create a file
mytex.fmt using initex, so that this will be loaded when
you invoke virtex with the name mytex. To make the whole
thing work, it is necessary to link virtex to all the
names of format files that you have prepared. Hard links
will do for system-wide equivalences and Unix systems
which do not use symbolic links. Symbolic links can be
used for access to formats for individual projects. For
example: virtex can be hard linked to tex in the general
system directory for executable programs, but an individ-
ual version of TeX will more likely be linked to a private
version by a symbolic link:
ln -s /usr/lib/texmf/bin/i686-linux/virtex
$HOME/bin/mytex
Another approach is to set up an alias using, for example,
csh(1):
alias mytex virtex \&myfmt
Besides being more cumbersome, however, this approach is
not available to systems which do not accept aliases.
Finally, there is a program known as undump(1) which takes
the headers from an a.out file (e.g., virtex) and applies
them to a core image which has been dumped by the Unix
quit signal. This is very system-dependent, and produces
extremely large files when used with a large-memory ver-
sion of TeX. This can produce executables which load
faster, but the executables also consume more disk space.
When looking for a font f, TeX (and its companion pro-
grams) first look for a file starting with f in the vari-
ous font directories (see the next section). If no such
file is found, it then looks for a file texfonts.map in
each of the font directories in turn. Each non-blank non-
comment line of texfonts.map specifies mappings from one
name to another. (Comments start with % and continue to
the end of the line.) The target name is the first word
(words are separated by spaces or tabs) and the source
name is the second. (Subsequent words are ignored, so
that information intended for other programs can be given
there.) Thus, going back to f for a moment, if TeX reads
a texfonts.map entry that looks like g f it will then
search for a font file starting with g.
ENVIRONMENT
See the Kpathsearch library documentation (the `Path spec-
ifications' node) for precise details of how the environ-
ment variables are used.
One caveat: In most TeX formats, you cannot use ~ in a
filename you give directly to TeX, because ~ is an active
character, and hence is expanded, not taken as part of the
filename. Other programs, such as Metafont, do not have
this problem.
All the programs in the web2c distribution (as well as
some others) use this same search method.
Normally, TeX puts its output files in the current direc-
tory. If any output file cannot be opened there, it tries
to open it in the directory specified in the environment
variable TEXMFOUTPUT. There is no default value for that
variable. For example, if you say tex paper and the cur-
rent directory is not writable, if TEXMFOUTPUT has the
value /tmp, TeX attempts to create /tmp/paper.log (and
/tmp/paper.dvi, if any output is produced.)
TEXINPUTS Search path for \input and \openin files.
This should probably start with ``.'', so
that user files are found before system
files. Default:
.:!!/usr/lib/texmf/texmf/tex//
TEXFONTS Search path for font metric (.tfm) files.
Default:
!!/usr/lib/texmf/texmf/fonts/tfm//:/var/tmp/tex-
fonts/tfm//:.
TEXFORMATS Search path for format files. Default:
.:!!/usr/lib/texmf/texmf/web2c
TEXPOOL search path for initex internal strings.
Default: .:!!/usr/lib/texmf/texmf/web2c
TEXEDIT Command template for switching to editor.
Default: vi +%d %s
MAKETEXTEX Arguments to pass to the MakeTeXTeX script
before the filename to create. None by
default. (If set, also implies invoking
MakeTeXTeX.)
USE_MAKETEXTEX If set, a program MakeTeXTeX is invoked
when TeX cannot find an input file (before
it complains about ``can't find file'').
If neither MAKETEXTEX nor USE_MAKETEXTEX
are set, whether MakeTeXTeX is invoked is
the choice of installer.
MAKETEXTFM Analogous.
USE_MAKETEXTFM Analogous.
FILES
/usr/lib/texmf/texmf/web2c/tex.pool
Encoded text of TeX's messages.
/usr/lib/texmf/texmf/fonts/texfonts.map
Filename mapping definitions.
/usr/lib/texmf/texmf/fonts//*.tfm
Metric files for TeX's fonts.
/usr/lib/texmf/texmf/fonts//*.nnn{gf,pk}
Character bitmaps for various
devices. These files are not used
by TeX.
/usr/lib/texmf/texmf/web2c/*.fmt
Predigest TeX format (.fmt) files.
/usr/lib/texmf/texmf/tex/plain/base/plain.tex
The basic macro package described in
the TeXbook.
SEE ALSO
mf(1) undump(1)
Donald E. Knuth, The TeXbook, Addison-Wesley, 1986, ISBN
0-201-13447-0.
Leslie Lamport, LaTeX - A Document Preparation System,
Addison-Wesley, 1985, ISBN 0-201-15790-X.
Michael Spivak, The Joy of TeX, 2nd edition, Addison-Wes-
ley, 1990, ISBN 0-8218-2997-1.
TUGboat(the journal of the TeX Users Group).
TRIVIA
TeX, pronounced properly, rhymes with ``blecchhh.'' The
proper spelling in typewriter-like fonts is ``TeX'' and
not ``TEX'' or ``tex.''
AUTHORS
TeX was designed by Donald E. Knuth, who implemented it
using his Web system for Pascal programs. It was ported
to Unix at Stanford by Howard Trickey, and at Cornell by
Pavel Curtis. The version now offered with the Unix TeX
distribution is that generated by the Web to C system
(web2c), originally written by Tomas Rokicki and Tim Mor-
gan.