TEX(1) TEX(1)
NAME
tex, virtex - text formatting and typesetting
SYNOPSIS
tex [ first line ]
initex [ 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 TeXbook
by Donald E. Knuth, published by Addison-Wesley.
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 shells tend to gobble up or misinterpret
TeX's favorite symbols, like backslashes, unless you quote
them.) As described in The TeXbook, that first line
should begin with a file name 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 file names. If TeX doesn't
get a file name in the first line, the jobname is ``tex-
put''. 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
messages, 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
/usr/contrib/lib/tex/inputs contains the basic macro pack-
age plain.tex, described in The TeXbook, as well as sev-
eral others. Except when .fmt files are being prepared it
is hardly ever necessary 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
12 Apr 92 1
TEX(1) TEX(1)
are known when you invoke tex. For a discussion of .fmt
files, see below.
Several environment variables can be used to set up direc-
tory paths to search when TeX opens a file for input. For
example, the csh command
setenv TEXINPUTS
.:/usr/me/mylib:/usr/contrib/lib/tex/inputs
or the sh command sequence
TEXINPUTS=.:/usr/me/mylib:
export TEXINPUTS
would cause all invocations of TeX and its derivatives to
look for \input files first in the current directory, then
in a hypothetical user's ``mylib'', and finally in the
system library. (TeX expands a trailing or leading colon
into the system directories.) Normally, you would place
the variable assignment which sets up the TEXINPUTS envi-
ronment variable in your .login or .profile file. The
environment variables section below lists the relevant
environment variables, and their defaults.
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. There is an environment variable, TEXEDIT,
that can be used to change the editor used. It should
contain a string with "%s" indicating where the filename
goes and "%d" indicating where the decimal linenumber (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 file name;
responding `null' gets you out of the loop if you don't
want to input anything. You can also type your EOF char-
acter (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 file name as the
first thing it reads. A format file name is preceded by
an &, which needs to be escaped with \ to prevent misin-
terpretation by your shell if given on the command 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
12 Apr 92 2
TEX(1) TEX(1)
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 by a sym-
bolic link in a privately maintained path
ln -s /usr/contrib/bin/virtex mytex
in a directory such as /home/me/bin.
Another approach is to set up a alias using, for example,
the C shell:
alias mytex virtex \&myfmt
Besides being more cumbersome, however, this approach is
not available to systems which do not accept aliases.
Finally, there is the system known as ``undump'' 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 pro-
duces extremely large files when used with a large-memory
version of TeX. This can produce executables which load
faster, but the executables also consume enormous amounts
of disk space.
ENVIRONMENT
The defaults for all environment variables are set at the
time of compilation in a file named site.h in the web2c
distribution. All paths are colon-separated. If you set
an environment variable to a value that has a leading
colon, the system default shown here is prepended. Like-
wise for a trailing colon. For example, if you say
setenv TEXFONTS /u/karl/myfonts:
TeX will search
/u/karl/myfonts:/usr/contrib/lib/tex/fonts//:. /*
TFM font */.
If one of the components in a search path ends with two
slashes, e.g.,
:/u/karl/myfonts//.
then all subdirectories of the given path are searched,
instead of the directory itself.
A ~ character at the beginning of a path component, as in
~:/system/dir//
expands into the current home directory. ~user expands
12 Apr 92 3
TEX(1) TEX(1)
into user's home directory. In most TeX formats, however,
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 base TeX distribution 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 texpaper and the cur-
rent directory is not writable, and 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 ``.''. Default:
.:/usr/contrib/lib/tex/inputs// /*TeXsource*/.
TEXFONTS
Search path for font metric (.tfm) files. Default:
/usr/contrib/lib/tex/fonts//:. /*TFMfont*/.
TEXFORMATS
Search path for format files. Default:
/usr/contrib/lib/tex/formats /*formatfile*/.
TEXPOOL
Search path for INITEX internal strings. Default:
/usr/contrib/lib/tex /*tex.pool*/.
TEXEDIT
Command template for switching to editor. Default:
/usr/ucb/vi+%d%s.
FILES
/usr/contrib/lib/tex
TeX's library areas
/usr/contrib/lib/tex/tex.pool
Encoded text of TeX's messages.
/usr/contrib/lib/tex/fonts/*.tfm
Metric files for TeX's fonts.
/usr/contrib/lib/tex/fonts/*nnn{gf,pk}
Bitmaps for various devices. These
files are not used by TeX.
12 Apr 92 4
TEX(1) TEX(1)
/usr/contrib/lib/tex/formats/*.fmt
TeX .fmt files.
/usr/contrib/lib/tex/inputs/plain.tex
The ``default'' macro package.
SEE ALSO
Donald E. Knuth, The TeXbook
Leslie Lamport, The LaTeX Document Preparation System
Michael Spivak, The Joy of TeX
TUGBOAT (the publication of the TeX Users Group)
TRIVIA
TeX, pronounced properly, rhymes with ``blecchhh.'' Note
that the proper spelling in typewriter-like media 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,
written by Tomas Rokicki and Tim Morgan.
12 Apr 92 5