TEX(1)

NAME

tex, virtex - text formatting and typesetting

SYNOPSIS

tex [ first line ]

virtex [ first line ]

DESCRIPTION

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 ). capabilities and language are described in The book .

is normally used with a large body of precompiled macros, and there are several specific formatting systems, such as , 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 cannot create one. It is the version of which is usually invoked in production, as opposed to installation.

Any arguments given on the command line to the programs 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 misinterpret 's favorite symbols, like backslashes, unless you quote them.) As described in The book , that first line should begin with a filename or a \controlsequence. The normal usage is to say

to start processing paper.tex. The name paper will be the ``jobname'', and is used in forming output filenames. If 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, 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 directory /usr/local/lib/tex/macros contains the basic macro package plain.tex, described in The book , as well as several others. Except when .fmt files are being prepared it is unnecessary to \input plain , since almost all instances of begin by loading plain.fmt . This means that all of the control sequences discussed in The book are known when you invoke tex . For a discussion of .fmt files, see below.

The e response to 's error prompt causes the system default editor to start up at the current line of the current 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" indicating where the decimal line number (if any) goes. For example, a TEXEDIT string for vi can be set with the csh command

A convenient file in the library is null.tex , containing nothing. When can't find a file it thinks you want to input, it keeps asking you for another filename; responding `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 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 command 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 command line.

Fortunately, it is no longer necessary to make explicit references to the format file. The present version of , 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. During 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 individual version of will more likely be linked to a private version by a symbolic link:

Another approach is to set up an alias using, for example, csh (1):

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 version of . This can produce executables which load faster, but the executables also consume more disk space.

When looking for a font f , (and its companion programs) first look for a file starting with f in the various 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 reads a texfonts.map entry that looks like g f it will then search for a font file starting with g .

ENVIRONMENT

The defaults for all environment variables are set at the time of compilation. 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. Likewise for a trailing colon. For example, if you say will search If one of the components in a search path ends with two slashes, e.g., then all subdirectories of the given path are searched, instead of the directory itself. For efficiency reasons, however, if a directory being searched for subdirectories contains only symbolic links to directories, and no real subdirectories, the symbolic links are not followed. You can work around this by simply creating a dummy subdirectory. In any case, the directory named in the path is always searched for subdirectories.

A ~ character at the beginning of a path component, as in

expands into the current home directory. ~username expands into user's home directory. In most formats, however, you cannot use ~ in a filename you give directly to , because ~ is an active character, and hence is expanded, not taken as part of the filename. Other programs, such as , do not have this problem.

All the programs in the web2c distribution (as well as some others) use this same search method.

Normally, puts its output files in the current directory. 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 current directory is not writable, if TEXMFOUTPUT has the value /tmp , 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/local/lib/tex/macros//
  • TEXFONTS Search path for font metric ( .tfm ) files. Default: .:/usr/local/lib/tex/fonts//
  • TEXFORMATS Search path for format files. Default: /usr/local/lib/tex/formats
  • TEXPOOL search path for initex internal strings. Default: /usr/local/lib/tex
  • TEXEDIT Command template for switching to editor. Default: vi +%d %s

    FILES

  • /usr/local/lib/tex 's library area
  • /usr/local/lib/tex/tex.pool Encoded text of 's messages.
  • /usr/local/lib/tex/fonts/texfonts.map Filename mapping definitions. /usr/local/lib/tex/fonts/*.tfm Metric files for 's fonts.
  • /usr/local/lib/tex/fonts/*.nnn{gf,pk} Character bitmaps for various devices. These files are not used by .
  • /usr/local/lib/tex/formats/*.fmt .fmt files.
  • /usr/local/lib/tex/macros/plain.tex The ``default'' macro package.

    SEE ALSO

    mf (1), undump (1),
    Donald E. Knuth, The book , Addison-Wesley, 1986, ISBN 0-201-13447-0.
    Leslie Lamport, - A Document Preparation System , Addison-Wesley, 1985, ISBN 0-201-15790-X.
    Michael Spivak, The Joy of , 2nd edition, Addison-Wesley, 1990, ISBN 0-8218-2997-1.
    TUGboat (the journal of the Users Group).

    TRIVIA

    , pronounced properly, rhymes with ``blecchhh.'' The proper spelling in typewriter-like fonts is ``TeX'' and not ``TEX'' or ``tex.''

    AUTHORS

    was designed by Donald E. Knuth, who implemented it using his 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 distribution is that generated by the to C system ( web2c ), originally written by Tomas Rokicki and Tim Morgan.