web2c
web2c
Karl Berry
Olaf Weber
https://tug.org/web2c
This file documents the installation and use of the programs in Web2c, an implementation
of Donald Knuth’s TeX system.
Copyright c 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009,
2010–2023 Karl Berry & Olaf Weber.
Permission is granted to make and distribute verbatim copies of this manual provided the
copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the con-
ditions for verbatim copying, provided that the entire resulting derived work is distributed
under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another lan-
guage, under the above conditions for modified versions, except that this permission notice
may be stated in a translation
i
Table of Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1 configure options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Compile-time options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Additional targets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Trip, trap, and mptrap: Torture tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Commonalities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1 Option conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2 Common options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3 Path searching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.4 Output file location. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5 TEX: Typesetting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.1 tex invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2 Initial TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.3 Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.4 Languages and hyphenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.4.1 MLTEX: Multi-lingual TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.4.1.1 \charsubdef: Character substitutions . . . . . . . . . . . . . . . . 21
5.4.1.2 \tracingcharsubdef: Substitution diagnostics . . . . . . . . 22
5.4.2 TCX files: Character translations . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.4.3 Patgen: Creating hyphenation patterns . . . . . . . . . . . . . . . . . . . . 24
5.5 Shell escapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.6 IPC and TEX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.7 Extended TEX engines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
ii
8 BibTEX: Bibliographies . . . . . . . . . . . . . . . . . . . . . . . . 37
8.1 BibTEX invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.2 Basic BibTEX style files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
10 DVI utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
10.1 DVIcopy: Canonicalize virtual font references . . . . . . . . . . . . . . . . . . 42
10.2 DVItype: Plain text transliteration of DVI files . . . . . . . . . . . . . . . . 42
10.2.1 DVItype output example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
11 Font utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
11.1 Font file formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
11.2 GFtoPK: Generic to packed font conversion . . . . . . . . . . . . . . . . . . 47
11.3 PKtoGF: Packed to generic font conversion . . . . . . . . . . . . . . . . . . . 47
11.4 PKtype: Plain text transliteration of packed fonts . . . . . . . . . . . . 47
11.5 GFtype: Plain text transliteration of generic fonts . . . . . . . . . . . . 49
11.6 TFtoPL: TEX font metric to property list conversion . . . . . . . . . . 51
11.7 PLtoTF: Property list to TEX font metric conversion . . . . . . . . . 53
11.8 VFtoVP: Virtual font to virtual property lists . . . . . . . . . . . . . . . . 53
11.9 VPtoVF: Virtual property lists to virtual font . . . . . . . . . . . . . . . . 54
11.10 Font utilities available elsewhere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Appendix A Legalisms . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Appendix B References . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
1
1 Introduction
This manual corresponds to version 2024 of Web2c, released in March 2024.
Web2c (also spelled Web2C) is the name of a TEX implementation, originally for Unix,
but now also running under Windows and other operating systems. By TEX implementa-
tion, we mean all of the standard programs developed by the Stanford TEX project led by
Donald E. Knuth: Metafont, DVItype, GFtoDVI, BibTEX, Tangle, etc., as well as TEX it-
self. Other programs are also included: DVIcopy, written by Peter Breitenlohner, MetaPost
and its utilities (derived from Metafont), by John Hobby, and many more.
General strategy: Web2c works, as its name implies, by translating the WEB source in
which TEX is written into C source code. Its output is not self-contained, however; it makes
extensive use of many macros and functions in a library (the web2c/lib directory in the
sources). Therefore, it will not work without change on an arbitrary WEB program.
Availability: All of Web2c is freely available—“free” both in the sense of no cost (free
ice cream) and of having the source code to modify and/or redistribute (free speech). See
Section “unixtex.ftp” in Kpathsea, for the practical details of how to obtain Web2c.
Different parts of the Web2c distribution have different licensing terms, however, reflect-
ing the different circumstances of their creation; consult each source file for exact details.
The main practical implication for redistributors of Web2c is that most of the executables
are covered by the GNU General Public License or GNU Lesser General Public License,
and therefore anyone who gets a binary distribution must also be able to get the sources,
as explained by the terms of the GPL (https://gnu.org/licenses/). The GPL covers
the Web2c executables, including tex, because the Free Software Foundation sponsored the
initial development of the Kpathsea library that Web2c uses. The basic source files from
Stanford, however, have their own copyright terms or are in the public domain, and are not
covered by the GPL.
History: Tomas Rokicki originated the TEX-to-C system in 1987, working from the first
change files for TEX under Unix, which were done primarily by Howard Trickey and Pavel
Curtis. Tim Morgan then took over development and maintenance for a number of years; the
name changed to Web-to-C somewhere in there. In 1990, Karl Berry became the maintainer.
He made many changes to the original sources, and started using the shorter name Web2c.
In 1997, Olaf Weber took over, and then in 2006, Karl started taking care of it again. No
significant development or changes have been needed for many years, though dozens of other
people have contributed in many ways; their names are listed in the ChangeLog files.
Originally, Web2c was distributed as its own package, alongside the original web pro-
grams from Stanford and other components. It was also the basis for the teTEX distribution
(now discontinued). Around 2004, the packaging focus shifted entirely to the TEX Live dis-
tribution (https://tug.org/texlive/), though the same Web2c is at the heart of the
release.
Other acknowledgements by Karl: The University of Massachusetts at Boston (partic-
ularly Rick Martin and Bob Morris) provided computers and ftp access to me for many
years. Richard Stallman at the Free Software Foundation employed me while I wrote the
original path searching library (for the GNU font utilities). (rms also gave us Emacs, GDB,
and GCC, without which I cannot imagine developing Web2c.) And, of course, TEX would
not exist in the first place without Donald E. Knuth.
Chapter 1: Introduction 2
2 Installation
‘--disable-dump-share’
Do not make fmt/base/mem files sharable across different endian architectures.
See Section 4.3.3 [Hardware and memory dumps], page 13.
Chapter 2: Installation 4
‘--without-maketexmf-default’
‘--without-maketexpk-default’
‘--without-maketextfm-default’
‘--with-maketextex-default’
Enable or disable the dynamic generation programs. See Section “mktex con-
figuration” in Kpathsea. The defaults are the inverse of the options, i.e., every-
thing is enabled except mktextex.
‘--enable-shared’
Build Kpathsea as a shared library. See Section “Shared library” in Kpathsea.
‘--with-editor=cmd’
Change the default editor invoked by the ‘e’ interactive command. See Sec-
tion 4.4 [Editor invocation], page 14.
‘--with-epsfwin’
‘--with-hp2627win’
‘--with-mftalkwin’
‘--with-nextwin’
‘--with-regiswin’
‘--with-suntoolswin’
‘--with-tektronixwin’
‘--with-unitermwin’
‘--with-x’
‘--with-x-toolkit=KIT’
‘--with-x11win’
‘--with-x11’
Define Metafont graphics support; by default, no graphics support is enabled.
See Section 6.4 [Online Metafont graphics], page 30.
‘--x-includes=dir’
‘--x-libraries=dir’
Define the locations of the X11 include files and libraries; by default, configure
does its best to guess). See Section “Optional Features” in Autoconf . A copy
is in kpathsea/CONFIGURE.
‘-DFIXPT’
‘-DNO_MF_ASM’
Use the original WEB fixed-point routines for Metafont and MetaPost arith-
metic calculations regarding fractions. By default, assembly-language routines
are used on x86 hardware with GNU C (unless ‘NO_MF_ASM’ is defined), and
floating-point routines are used otherwise.
‘-DIPC_DEBUG’
Report on various interprocess communication activities. See Section 5.6 [IPC
and TEX], page 25.
3 Commonalities
Many aspects of the TEX system are the same among more than one program, so we describe
those pieces together, here.
Another kind of commonality is the extensions to TEX that are available across all the
engines; see Section 5.7 [TeX extensions], page 26.
‘-file-line-error’
‘-no-file-line-error’
Change (or do not change) the way error messages are printed. The
alternate style looks like error messages from many compilers and is easier
to parse for some editors that invoke TEX. This option used to be called
‘-file-line-error-style’.
‘-fmt=dumpname’
‘-base=dumpname’
‘-mem=dumpname’
Use dumpname instead of the program name or a ‘%&’ line to determine the
name of the memory dump file read (‘fmt’ for TEX, ‘base’ for Metafont, ‘mem’ for
MetaPost). See Section 4.3 [Memory dumps], page 12. Also sets the program
name to dumpname if no ‘-progname’ option was given.
‘-halt-on-error’
Stop processing and exit when an error occurs, as opposed to the normal process
of trying to recover and continue.
‘-ini’ Enable the “initial” form of the program (see Section 4.2 [Initial and virgin],
page 12). This is implicitly set if the program name is initex resp. inimf.
‘-interaction=string’
Set the interaction mode from the command line. The string must be one of
‘batchmode’, ‘nonstopmode’, ‘scrollmode’, or ‘errorstopmode’.
‘-jobname=string’
Set the job name to string, instead of deriving it from the name of the input
file.
‘-kpathsea-debug=number’
Set path searching debugging flags according to the bits of number (see Sec-
tion “Debugging” in Kpathsea). You can also specify this in KPATHSEA_DEBUG
environment variable (for all Web2c programs). (The command line value over-
rides.) The most useful value is ‘-1’, to get all available output.
‘-output-directory=dirname’
Specify the directory dirname to which output files are written. Also look
for input files in dirname first, before looking along the normal search path.
Input files are only looked for as specified; no default extension is added. See
Section 3.4 [Output file location], page 9.
‘-parse-first-line’
‘-no-parse-first-line’
Check or disable checking whether the first line of the main input file starts with
‘%&’, and parse it if it does. This line can be used specify the format and/or a
TCX file.
‘-progname=string’
Set program (and memory dump) name to string. This may affect the search
paths and other values used (see Section “Config files” in Kpathsea). Using
this option is equivalent to making a link named string to the binary and then
invoking the binary under that name. See Section 4.3 [Memory dumps], page 12.
Chapter 3: Commonalities 9
‘-recorder’
Enable the filename recorder. This makes the program save a list of the opened
files into a file with (by default) extension ‘.fls’. For Aleph, this option is
always on, and the file has extension ‘.ofl’.
Ordinarily, the ‘.fls’ file is written to the same location as the ‘.log’ file, for
example, respecting -output-directory if it is given (see Section 3.4 [Output
file location], page 9). However, if TEX processing is done on the command line
(or in response to the ‘**’ prompt), the ‘.fls’ might be written to the current
directory, or include an integer (the current pid), as in texput1234.fls. You
can use -jobname to explicitly set the basename.
‘-translate-file=tcxfile’
Use tcxfile to define which characters are printable and translations between the
internal and external character sets. Moreover, tcxfile can be explicitly declared
in the first line of the main input file ‘%& -translate-file=tcxfile’. This is
the recommended method for portability reasons. See Section 5.4.2 [TCX files],
page 22.
‘-8bit’ This option specifies that by default all characters should be considered print-
able. If ‘-translate-file’ was given as well, then the TCX file may mark
characters as non-printable. This is a no-op in engines natively supporting
Unicode.
at the top of the TL installation tree. That is, if the system texmf.cnf is installed in
/some/path/to/texlive/YYYY/texmf-dist/web2c/texmf.cnf is put your custom settings
in /some/path/to/texlive/YYY/texmf.cnf, where YYYY is the year of installation (if
you use that subdirectory; it’s the default). That way, unrelated changes to the system
texmf.cnf can happen with normal updates, without affecting your local values.
If you don’t know what endianness your machine is, and you’re curious, here is a little C
program to tell you. (The configure script contains a similar program.) This is from the
book C: A Reference Manual, by Samuel P. Harbison and Guy L. Steele Jr. (see Appendix B
[References], page 56).
main ()
{
/* Are we little or big endian? From Harbison&Steele. */
union
{
long l;
char c[sizeof (long)];
} u;
u.l = 1;
if (u.c[0] == 1)
printf ("LittleEndian\n");
else if (u.c[sizeof (long) - 1] == 1)
printf ("BigEndian\n");
else
printf ("unknownEndian");
As (allowed) extensions to standard TEX, Web2c also supports specifying the filename in
double quotes ("some name") and in braces ({some name}), which is convenient for filenames
containing spaces or other special characters, as described in the sections below.
In all cases, space tokens are ignored after the filename is read.
Also, double quote (") characters are ignored within the filename; there is no way to
read files whose names contain a ".
However, for maximal portability of your document across systems, use only the char-
acters ‘a’–‘z’, ‘0’–‘9’, and at most one ‘.’. Do not use anything but simple filenames,
since directory separators vary among systems; instead, add the necessary directories to the
appropriate search path.
Finally, the present Web2c implementation does ‘~’ and ‘$’ expansion on name, unlike
Knuth’s original implementation. Thus:
\input ~jsmith/$foo.bar
will dereference the environment variable or Kpathsea config file value ‘foo’ and read
that file, extended with ‘.bar’, in user ‘jsmith’’s home directory. You can also use braces
in the variable expansion, as in ‘${foo}bar’, if you want to follow the variable name with
a letter, numeral, or ‘_’.
(So another way to get a program to read a filename containing whitespace is to define
an environment variable and dereference it.)
In all the common TEX formats (plain TEX, LATEX, ConTEXt, AMSTEX, . . . ), the char-
acters ‘~’ and ‘$’ have special category codes, so to actually use these in a document you
have to change their catcodes or use \string.
17
5 TEX: Typesetting
TEX is a typesetting system: it was especially designed to handle complex mathematics, as
well as most ordinary text typesetting.
TEX is a batch language, like C or Pascal, and not an interactive “word processor”:
you compile a TEX input file into a corresponding device-independent (DVI) file (and then
translate the DVI file to the commands for a particular output device). This approach has
both considerable disadvantages and considerable advantages. For a complete description
of the TEX language, see The TEXbook (see Appendix B [References], page 56). Many other
books on TEX, introductory and otherwise, are available.
‘-output-comment=string’
Use string as the DVI file comment. Ordinarily, this comment records the date
and time of the TEX run, but if you are doing regression testing, you may not
want the DVI file to have this spurious difference. This is also taken from the
environment variable and config file value ‘output_comment’.
‘-shell-escape’
‘-no-shell-escape’
‘-shell-restricted’
Enable, or disable, or enable with restrictions the \write18{shell-command}
feature for external executing shell commands. See Section 5.5 [Shell escapes],
page 24.
‘-enable-write18’
‘-disable-write18’
Synonyms for -shell-escape and -no-shell-escape, for compatibility with
MiKTEX. (MiKTEX also accepts both pairs of options.) See Section 5.5 [Shell
escapes], page 24.
‘-src-specials’
‘-src-specials=string’
This option makes TEX output specific source information using ‘\special’
commands in the DVI file. These ‘\special’ track the current filename and
line number.
Using the first form of this option, the ‘\special’ commands are inserted au-
tomatically.
In the second form of the option, string is a comma separated list of the following
values: ‘cr’, ‘display’, ‘hbox’, ‘math’, ‘par’, ‘parend’, ‘vbox’. You can use this
list to specify where you want TEX to output such commands. For example,
‘-src-specials=cr,math’ will output source information every line and every
math formula.
These commands can be used with the appropriate DVI viewer and text editor
to switch from the current position in the editor to the same position in the
viewer and back from the viewer to the editor.
This option works by inserting ‘\special’ commands into the token stream,
and thus in principle these additional tokens can be recovered or seen by the
tricky-enough macros. If you run across a case, let us know, because this counts
as a bug. However, such bugs are very hard to fix, requiring significant changes
to TEX, so please don’t count on it.
Redefining ‘\special’ will not affect the functioning of this option. The
commands inserted into the token stream are hard-coded to always use the
‘\special’ primitive.
TEX does not pass the trip test when this option is enabled.
[Memory dumps], page 12). For a detailed comparison of virgin and initial forms, see
Section 4.2 [Initial and virgin], page 12.
For a list of options and other information, see Section 5.1 [tex invocation], page 17.
Unlike Metafont and MetaPost, many format files are commonly used with TEX. The
standard one implementing the features described in the TEXbook is ‘plain.fmt’, also
known as ‘tex.fmt’ (again, see Section 4.3 [Memory dumps], page 12). It is created by
default during installation, but you can also do so by hand if necessary (e.g., if an update
to plain.tex is issued):
tex -ini '\input plain \dump'
(The quotes prevent interpretation of the backslashes from the shell.) Then install the
resulting plain.fmt in ‘$(fmtdir)’ (/usr/local/share/texmf/web2c by default), and
link tex.fmt to it.
The necessary invocation for generating a format file differs for each format, so instruc-
tions that come with the format should explain. The top-level web2c Makefile has targets
for making most common formats: plain latex amstex texinfo eplain. See Section 5.3
[Formats], page 20, for more details on TEX formats.
5.3 Formats
TEX formats are large collections of macros, often dumped into a .fmt file (see Section 4.3
[Memory dumps], page 12) by tex -ini (see Section 5.2 [Initial TeX], page 19). A number
of formats are in reasonably widespread use, and the Web2c Makefile has targets to make
the versions current at the time of release. You can change which formats are automatically
built by setting the fmts Make variable; by default, only the ‘plain’ and ‘latex’ formats
are made.
Nowadays, the formats are generally installed and updated as part of a larger TEX
distribution, such as TEX Live (https://tug.org/texlive).
latex The most widely used format. The current release is named ‘LATEX2e’; new
versions are released approximately every six months, with patches issued as
needed. The old release was called ‘LATEX 2.09’, and is no longer maintained
or supported. LATEX attempts to provide generic markup instructions, such
as “emphasize”, instead of specific typesetting instructions, such as “use the
10 pt Computer Modern italic font”. The LATEX home page: https://www.
latex-project.org.
context ConTEXt is an independent macro package which has a basic document struc-
turing approach similar to LATEX. It also supports creating interactive PDF files
and has integrated MetaPost support, among many other interesting features.
The ConTEXt home page: http://www.pragma-ade.com.
amstex The official typesetting system of the American Mathematical Society. Like
LATEX, it encourages generic markup commands. The AMS also provides many
LATEX packages for authors who prefer LATEX. Taken together, they are used
to produce nearly all AMS publications, e.g., Mathematical Reviews. The
AMSTEX home page: https://www.ams.org/tex.
texinfo The documentation system developed and maintained by the Free Software
Foundation for their software manuals. It can be automatically converted into
Chapter 5: TEX: Typesetting 21
plain text, a machine-readable on-line format called ‘info’, HTML, etc. The
Texinfo home page: https://www.gnu.org/software/texinfo.
eplain The “expanded plain” format provides various common features (e.g., sym-
bolic cross-referencing, tables of contents, indexing, citations using BibTEX),
for those authors who prefer to handle their own high-level formatting. The
Eplain home page: https://tug.org/eplain.
slitex An obsolete LATEX 2.09 format for making slides. It is replaced by the ‘slides’
document class, although the ‘beamer’ package is the most commonly method
for making slides nowadays. The Beamer page on CTAN: https://ctan.org/
pkg/beamer.
For example, if you assume glyph code 138 (decimal) for an e-circumflex (^e) and you
are using the Computer Modern fonts, which have the circumflex accent in position 18
and lowercase ‘e’ in the usual ASCII position 101 decimal, you would use \charsubdef as
follows:
\charsubdef 138 = 18 101
For the plain TEX format to make use of this substitution, you have to redefine the
circumflex accent macro \^ in such a way that if its argument is character ‘e’ the expansion
\char138 is used instead of \accent18 e. Similar \charsubdef declaration and macro
redefinitions have to be done for all other accented characters.
To disable a previous \charsubdef c, redefine c as a pair of zeros. For example:
\charsubdef '321 = 0 0 % disable N tilde
(Octal ’321 is the ISO Latin-1 value for the Spanish N tilde.)
\charsubdef commands should only be given once. Although in principle you can
use \charsubdef at any time, the result is unspecified. If \charsubdef declarations are
changed, usually either incorrect character dimensions will be used or MLTEX will output
missing character warnings. (The substitution of a \charsubdef is used by TEX when
appending the character node to the current horizontal list, to compute the width of a
horizontal box when the box gets packed, and when building the \accent construction
at \shipout-time. In summary, the substitution is accessed often, so changing it is not
desirable, nor generally useful.)
This is entirely independent of the MLTEX extension (see Section 5.4.1 [MLTeX],
page 21): whereas a TCX file defines how an input keyboard character is mapped to TEX’s
internal code, MLTEX defines substitutions for a non-existing character glyph in a font
with a \accent construction made out of two separate character glyphs. TCX files involve
no new primitives; it is not possible to specify that an input (keyboard) character maps to
more than one character.
Information on specifying TCX files:
• The best way to specify a TCX file is to list it explicitly in the first line of the main
document:
%& -translate-file=tcxfile
• You can also specify a TCX file to be used on a particular TEX run with the command-
line option ‘-translate-file=tcxfile’.
• TCX files are searched for along the WEB2C path.
• Initial TEX (see Section 5.2 [Initial TEX], page 19) ignores TCX files.
The Web2c distribution comes with a number of TCX files. Two important ones are
il1-t1.tcx and il2-t1.tcx, which support ISO Latin 1 and ISO Latin 2, respectively,
with Cork-encoded fonts (a.k.a. the LATEX T1 encoding). TCX files for Czech, Polish, and
Slovak are also provided.
One other notable TCX file is empty.tcx, which is, well, empty. Its purpose is to reset
Web2C’s behavior to the default (only visible ASCII being printable, as described below)
when a format was dumped with another TCX being active—which is in fact the case for
everything but plain TEX in the TeX Live and other distributions. Thus:
latex somefile8.tex
⇒ terminal etc. output with 8-bit chars
latex --translate-file=empty.tcx somefile8.tex
⇒ terminal etc. output with ^^ notation
Syntax of TCX files:
1. Line-oriented. Blank lines are ignored.
2. Whitespace is ignored except as a separator.
3. Comments start with ‘%’ and continue to the end of the line.
4. Otherwise, a line consists of one or two character codes, optionally followed by 0 or 1.
The last number indicates whether dest is considered printable.
src [dest [prnt]]
5. Each character code may be specified in octal with a leading ‘0’, hexadecimal with
a leading ‘0x’, or decimal otherwise. Values must be between 0 and 255, inclusive
(decimal).
6. If the dest code is not specified, it is taken to be the same as src.
7. If the same src code is specified more than once, it is the last definition that counts.
Finally, here’s what happens: when TEX sees an input character with code src, it 1)
changes src to dest; and 2) makes the dest code “printable”, i.e., printed as-is in diagnostics
and the log file rather than in ‘^^’ notation.
Chapter 5: TEX: Typesetting 24
By default, no characters are translated, and character codes between 32 and 126 inclu-
sive (decimal) are printable.
Specifying translations for the printable ASCII characters (codes 32–127) will yield un-
predictable results. Additionally you shouldn’t make the following characters printable:
^^I (TAB), ^^J (line feed), ^^M (carriage return), and ^^? (delete), since TEX uses them
in various ways.
Thus, the idea is to specify the input (keyboard) character code for src, and the output
(font) character code for dest.
By default, only the printable ASCII characters are considered printable by TEX. If you
specify the ‘-8bit’ option, all characters are considered printable by default. If you specify
both the ‘-8bit’ option and a TCX file, then the TCX can set specific characters to be
non-printable.
Both the specified TCX encoding and whether characters are printable are saved in the
dump files (like tex.fmt). So by giving these options in combination with ‘-ini’, you
control the defaults seen by anyone who uses the resulting dump file.
When loading a dump, if the ‘-8bit’ option was given, then all characters become
printable by default.
When loading a dump, if a TCX file was specified, then the TCX data from the dump
is ignored and the data from the file used instead.
From TEX’s point of view, this is a normal \write command, and is therefore subject
to the usual TEX expansions. Also, the system call either happens during the ‘\output’
routine or right away, according to the absence or presence of the \immediate prefix, as
usual for \write.
The shell-command string is passed to the command shell (via the C library function
system). The output of shell-command is not diverted anywhere, so it will not appear in
the log file, or anywhere but the terminal output. The exit status of the system call is also
not available to TEX.
In unrestricted mode, the argument is simply passed straight to system unaltered.
In restricted mode, ASCII double quote characters (") should always be used in the
argument to \write18 where quoting of arguments is needed, as in the example above. This
is to achieve some measure of system independence. On Unix systems, these are replaced
with single quote (') characters to avoid insecure further expansion (from, e.g., `...`). Care
is also taken on Windows to avoid additional expansions. Mismatched quotation marks in
the command string result in a diagnostic message in the log file, and no execution is
performed.
After quotation processing, if the first word (delimited by a space or tab) of the command
is in the list specified by the shell_escape_commands configuration value, the command is
executed. Otherwise it is not. In any case, a message is written to the log file.
The shell_escape_commands value is a comma-separated list of words. Whitespace is
significant, and typically should not be present. The default definition in texmf.cnf looks
like this, with more commands included:
shell_escape_commands = bibtex,kpsewhich,repstopdf,...
pdfTEX and luaTEX support reading (via \input and \openin) and writing (via
\openout) from pipes if the first character is ‘|’. The following command is then treated
exactly the same as the argument to \write18. In these engines, the primitive variable
\pdfshellescape is set to 0 if shell escapes are disabled, 1 if they are enabled, and 2 if
they are enabled with restrictions.
The purpose of this feature is to make it possible for TEX documents to perform useful
external actions in the common case of an individual user running a known document on
his or her own machine. In environments such as CGI scripts or wikis where the input has
to be considered untrustworthy, shell escapes should be completely disabled.
Programs intended to be called from TEX in restricted should implement the “paranoid”
safety measures regarding output files that TEX itself does. See Section “Calling sequence”
in Kpathsea.
6.1 mf invocation
Metafont (usually invoked as mf) reads character definitions specified in the Metafont pro-
gramming language, and outputs the corresponding font. This section merely describes the
options available in the Web2c implementation. For a complete description of the Metafont
language, see The Metafontbook (see Appendix B [References], page 56).
Metafont processes its command line and determines its memory dump (base) file in a
way exactly analogous to MetaPost and TEX (see Section 5.1 [tex invocation], page 17, and
see Section 4.3 [Memory dumps], page 12). Synopses:
mf [option]... [mfname[.mf]] [mf-commands]
mf [option]... \first-line
mf [option]... &base args
Most commonly, a Metafont invocation looks like this:
mf '\mode:=mode; mag:=magnification; input mfname'
(The single quotes avoid unwanted interpretation by the shell.)
Metafont searches the usual places for the main input file mfname (see Section “Sup-
ported file formats” in Kpathsea), extending mfname with .mf if necessary. To see all the
relevant paths, set the environment variable KPATHSEA_DEBUG to ‘-1’ before running the
program. By default, Metafont runs an external program named mktexmf to create any
nonexistent Metafont source files you input. You can disable this at configure-time or run-
time (see Section “mktex configuration” in Kpathsea). This is mostly for the sake of the
EC fonts, which can be generated at any size.
Metafont writes the main GF output to the file basemfname.nnngf, where nnn is the
font resolution in pixels per inch, and basemfname is the basename of mfname, or ‘mfput’
if no input file was specified. A GF file contains bitmaps of the actual character shapes.
Usually GF files are converted immediately to PK files with GFtoPK (see Section 11.2
[gftopk invocation], page 47), since PK files contain equivalent information, but are more
compact. (Metafont output in GF format rather than PK for only historical reasons.)
Metafont also usually writes a metric file in TFM format to basemfname.tfm. A TFM
file contains character dimensions, kerns, and ligatures, and spacing parameters. TEX reads
only this .tfm file, not the GF file.
The mode in the example command above is a name referring to a device definition (see
Section 6.3 [Modes], page 29); for example, localfont or ljfour. These device definitions
Chapter 6: Metafont: Creating typeface families 28
must generally be precompiled into the base file. If you leave this out, the default is
proof mode, as stated in The Metafontbook, in which Metafont outputs at a resolution
of 2602 dpi; this is usually not what you want. The remedy is simply to assign a different
mode—localfont, for example.
The magnification assignment in the example command above is a magnification factor;
for example, if the device is 600 dpi and you specify mag:=2, Metafont will produce output at
1200 dpi. Very often, the magnification is an expression
√ such as magstep(.5), corresponding
to a TEX “magstep”, which are factors of 1.2 2.
After running Metafont, you can use the font in a TEX document as usual. For example:
\font\myfont = newfont
\myfont Now I am typesetting in my new font (minimum hamburgers).
The program accepts the following options, as well as the standard ‘-help’ and
‘-version’ (see Section 3.2 [Common options], page 7):
‘-[no]-file-line-error’
‘-fmt=fmtname’
‘-halt-on-error’
‘-ini’
‘-interaction=string’
‘-jobname=string’
‘-kpathsea-debug=number’
‘-[no]parse-first-line’
‘-output-directory’
‘-progname=string’
‘-recorder’
‘-translate-file=tcxfile’
‘-8bit’ These options are common to TEX, Metafont, and MetaPost. See Section 3.2
[Common options], page 7.
‘-mktex=filetype’
‘-no-mktex=filetype’
Turn on or off the ‘mktex’ script associated with filetype. The only value that
makes sense for filetype is ‘mf’.
(The quotes prevent interpretation of the backslashes from the shell.) Then install the
resulting plain.base in ‘$(basedir)’ (/usr/local/share/texmf/web2c by default), and
link mf.base to it.
For an explanation of the additional modes.mf file, see Section 6.3 [Modes], page 29.
This file has no counterpart in TEX or MetaPost.
In the past, it was sometimes useful to create a base file cmmf.base (a.k.a. cm.base),
with the Computer Modern macros also included in the base file. Nowadays, however, the
additional time required to read cmbase.mf is exceedingly small, usually not enough to
be worth the administrative hassle of updating the cmmf.base file when you install a new
version of modes.mf. People actually working on a typeface may still find it worthwhile to
create their own base file, of course.
the tables on the last page of web2c/lib/texmfmp.c. Or you can write an independent
program and use MFtalk (see web2c/window/mftalk.c).
(The above description was edited from mft.web, written by D.E. Knuth.)
The program accepts the following options, as well as the standard ‘-help’ and
‘-version’ (see Section 3.2 [Common options], page 7):
‘-change=chfile[.ch]’
Apply the change file chfile as with Tangle and Weave (see Chapter 9 [WEB],
page 39).
Chapter 6: Metafont: Creating typeface families 33
‘-style=mftfile[.mft]’
Read mftfile before anything else; a MFT style file typically contains only MFT
directives as described above. The default style file is named plain.mft, which
defines this properly for programs using plain Metafont. The MFT files is
searched along the MFTINPUTS path; see Section “Supported file formats” in
Kpathsea.
Other examples of MFT style files are cmbase.mft, which defines formatting
rules for the macros defined in cm.base, and e.mft, which was used in the
production of Knuth’s Volume E, Computer Modern Typefaces.
Using an appropriate MFT style file, it is also possible to configure MFT for
typesetting MetaPost sources. However, MFT does not search the usual places
for MetaPost input files.
If you use eight-bit characters in the input file, they are passed on verbatim to the TEX
output file; it is up to you to configure TEX to print these properly.
34
simply passes the tex-input through to TEX. For example, if you are using LATEX,
your MetaPost input file must start with a verbatimtex block that gives the necessary
\documentclass (or \documentstyle) \begin{document} command. You will also need
to set the environment variable TEX to ‘latex’.
tex-input need not be specifically TEX input; it could also be Troff. In that case, you
will need the ‘-m pictures’ Troff macro package (unfortunately absent from many Troff
implementations), or an equivalent such as the ‘-m pspic’ macros from GNU groff described
in grops(1).
Naturally, you must use fonts that are supported by the typesetter; specifically, you’ll
probably want to use standard PostScript fonts with Troff. And only the TEX system
understands Computer Modern or other Metafont fonts; you can also use PostScript fonts
with TEX, of course.
MetaPost-generated PostScript figures which do use Computer Modern fonts for labels
cannot be directly previewed or printed. Instead, you must include them in a TEX document
and run the resulting DVI file through Dvips to arrange for the downloading of the required
fonts (see Section “Fonts in figures” in Dvips). To help with this, the MetaPost distribution
provides a small TEX file mproof.tex which is typically called as:
tex mproof mp-output-files... ; dvips mproof -o
The resulting file mproof.ps can then be printed or previewed.
To generate EPSF files, set the internal MetaPost variable prologues positive. To make
the output files self-contained, use only standard PostScript fonts. MetaPost reads the same
psfonts.map file as Dvips, to determine PostScript fonts that need to be downloaded (see
Section “psfonts.map” in Dvips).
It is possible for pdfTEX to read MetaPost output directly; this is in contrast to general
EPSF files, which have to be converted for use with PDF output. The easiest way is to name
the MetaPost output files with the .mps extension. Then the LATEX \includegraphics
command, for example, will be able to read them, even when outputting PDF.
MetaPost can write output files, via the write primitive; this opens a security hole. See
Section 5.1 [tex invocation], page 17.
The program accepts the following options, as well as the standard ‘-help’ and
‘-version’ (see Section 3.2 [Common options], page 7):
‘-[no]-file-line-error’
‘-fmt=fmtname’
‘-halt-on-error’
‘-ini’
‘-interaction=string’
‘-jobname=string’
‘-kpathsea-debug=number’
‘-[no]parse-first-line’
‘-output-directory’
‘-progname=string’
‘-recorder’
‘-translate-file=tcxfile’
‘-8bit’ These options are common to TEX, Metafont, and MetaPost. See Section 3.2
[Common options], page 7.
Chapter 7: MetaPost: Generating PostScript 36
‘-T’
‘-troff’ Set the prologues internal variable to 1.
‘-tex=texprogram’
When this option is given, the program texprogram is used to typeset the labels.
8 BibTEX: Bibliographies
BibTEX automates much of the job of typesetting bibliographies, and makes bibliography
entries reusable in many different contexts.
‘-loose’
‘-strict’ These options specify how strict tangle must be when checking identifiers for
equality. The default is ‘-loose’, which means that tangle will follow the rules
set by the case-smashing and underline options above. If ‘-strict’ is set, then
identifiers will always be stripped of underlines and converted to uppercase
before checking whether they collide.
10 DVI utilities
TEX outputs a file in DVI (DeVice Independent) format as a compact representation of
the original document. DVI files can be translated to meet the requirements of a real
physical device, such as PostScript printers (see Section “Introduction” in Dvips), PCL
printers (see dvilj(1)), and X displays (see xdvi(1)). In fact, DVI translators are available for
virtually all common devices: see CTAN:/dviware (for CTAN info, see Section “unixtex.ftp”
in Kpathsea).
For the precise definition of the DVI file format, see (for example) the source file
web2c/dvitype.web.
The DVI-processing programs in the Web2c distribution are not device drivers; they
perform generic utility functions.
Explanation:
• The DVItype options are recorded at the beginning, followed by global information
about the document, including fonts used.
• Each DVI command is preceded by its byte position in the file (‘42:’, ‘87:’, . . . ),
Chapter 10: DVI utilities 45
and (because of the ‘-show-opcodes’) followed by its decimal opcode value in braces
(‘{141}’, ‘{142}’, . . . ).
• The ‘level’ lines record information about the DVI stack; ‘h’ and ‘v’ define the current
position in DVI units, while ‘hh’ and ‘vv’ are the same in pixels.
• Text sequences are summarized in brackets, as in ‘[A SHORT STORY]’ and the ‘[ 1]’.
46
11 Font utilities
The Web2c programs described here convert between various TEX-related font formats; the
first section below briefly describes the formats. GFtoPK is the only one that is routinely
used, as Metafont outputs GF format, but it’s most efficient for device drivers to use PK.
The precise definitions of the PK, GF, TFM, PL, VF, and VPL formats mentioned below
are in the source files that read them; pktype.web, gftype.web, tftopl.web, etc.
The suffix ‘.vf’ identifies “virtual font” files, for which ‘.vpl’ is the human-readable ana-
log. See See Section 11.8 [vftovp invocation], page 53, and Section 11.9 [vptovf invocation],
page 54. For further discussion of virtual fonts, see CTAN:/doc/virtual-fonts.knuth,
CTAN:/help/virtualfonts.txt, and Section “Virtual fonts” in Dvips.
(This section is based on documentation in the original Unix TEX distribution by Pierre
MacKay and Elizabeth Tachikawa.)
pktype pkname.dpi[pk]
The font pkname is searched for in the usual places (see Section “Glyph lookup” in
Kpathsea). To see all the relevant paths, set the environment variable KPATHSEA_DEBUG to
‘-1’ before running the program.
The suffix ‘pk’ is supplied if not already present. This suffix is not an extension; no ‘.’
precedes it: for instance, cmr10.600pk.
The translation is written to standard output.
The only options are ‘-help’ and ‘-version’ (see Section 3.2 [Common options], page 7).
As an example of the output, here is the (abridged) translation of the letter ‘K’ in
‘cmr10’, as rendered at 600 dpi with the mode ‘ljfour’ from modes.mf (available from
ftp://ftp.tug.org/tex/modes.mf).
955: Flag byte = 184 Character = 75 Packet length = 174
Dynamic packing variable = 11
TFM width = 815562 dx = 4259840
Height = 57 Width = 57 X-offset = -3 Y-offset = 56
[2]23(16)17(8)9(25)11(13)7(27)7(16)7(28)4(18)7(28)2(20)7(27)...
...
(14)9(24)12(5)[2]23(13)21
Explanation:
‘955’ The byte position in the file where this character starts.
‘Flag byte’
‘Dynamic packing variable’
Related to the packing for this character; see the source code.
‘Character’
The character code, in decimal.
‘Packet length’
The total length of this character definition, in bytes.
‘TFM width’
The device-independent (TFM) width of this character. It is 2^24 times the
ratio of the true width to the font’s design size.
‘dx’ The device-dependent width, in scaled pixels, i.e., units of horizontal pixels
times 2^16.
‘Height’
‘Width’ The bitmap height and width, in pixels.
‘X-offset’
‘Y-offset’
Horizontal and vertical offset from the upper left pixel to the reference (origin)
pixel for this character, in pixels (right and down are positive). The reference
pixel is the pixel that occupies the unit square in Metafont; the Metafont ref-
erence point is the lower left hand corner of this pixel. Put another way, the
x-offset is the negative of the left side bearing; the right side bearing is the
horizontal escapement minus the bitmap width plus the x-offset.
Chapter 11: Font utilities 49
‘[2]23(16)...’
Finally, run lengths of black pixels alternate with parenthesized run lengths of
white pixels, and brackets indicate a repeated row.
‘-mnemonics’
Translate all commands in the GF file.
As an example of the output, here is the (abridged) translation of the letter ‘K’ in ‘cmr10’,
as rendered at 600 dpi with the mode ‘ljfour’ from modes.mf (available from ftp://ftp.
tug.org/tex/modes.mf), with both ‘-mnemonics’ and ‘-images’ enabled.
GFtype outputs the information about a character in two places: a main definition and
a one-line summary at the end. We show both. Here is the main definition:
2033: beginning of char 75: 3<=m<=60 0<=n<=56
(initially n=56) paint (0)24(12)20
2043: newrow 0 (n=55) paint 24(12)20
2047: newrow 0 (n=54) paint 24(12)20
2051: newrow 0 (n=53) paint 24(12)20
2055: newrow 7 (n=52) paint 10(21)13
2059: newrow 8 (n=51) paint 8(23)9
...
2249: newrow 8 (n=5) paint 8(23)11
2253: newrow 7 (n=4) paint 10(22)12
2257: newrow 0 (n=3) paint 24(11)22
2261: newrow 0 (n=2) paint 24(11)22
2265: newrow 0 (n=1) paint 24(11)22
2269: newrow 0 (n=0) paint 24(11)22
2273: eoc
Chapter 11: Font utilities 50
...
(LABEL C f)
(LIG C i O 14)
(LIG C f O 13)
(LIG C l O 15)
(KRN O 47 R 0.077779)
(KRN O 77 R 0.077779)
(KRN O 41 R 0.077779)
(KRN O 51 R 0.077779)
(KRN O 135 R 0.077779)
(STOP)
...
)
...
(CHARACTER C f
(CHARWD R 0.305557)
(CHARHT R 0.694445)
(CHARIC R 0.077779)
(COMMENT
(LIG C i O 14)
(LIG C f O 13)
(LIG C l O 15)
(KRN O 47 R 0.077779)
(KRN O 77 R 0.077779)
...
)
)
...
As you can see, the general format is a list of parenthesized properties, nested where
necessary.
• The first few items (FAMILY, FACE, and so on) are the so-called headerbyte information
from Metafont, giving general information about the font.
• The FONTDIMEN property defines the TEX \fontdimen values.
• The LIGTABLE property defines the ligature and kerning table. LIG properties define
ligatures: in the example above, an ‘f’ (in the ‘LABEL’) followed by an ‘i’ is a ligature,
i.e., a typesetting program like TEX replaces those two consecutive characters by the
character at position octal ’014 in the current font—presumably the ‘fi’ ligature. KRN
properties define kerns: if an ‘f’ is followed by character octal ’047 (an apostrophe),
TEX inserts a small amount of space between them: 0.077779 times the design size the
font was loaded at (about three-quarters of a printer’s point by default in this case, or
.001 inches).
• The CHARACTER property defines the dimensions of a character: its width, height, depth,
and italic correction, also in design-size units, as explained in the previous item. For
our example ‘f’, the depth is zero, so that property is omitted. TFtoPL also inserts
any kerns and ligatures for this character as a comment.
Chapter 11: Font utilities 53
‘-charcode-format=type’
Output character codes in the PL file according to type: either ‘octal’ or
‘ascii’. Default is ‘ascii’ for letters and digits, octal for all other characters.
Exception: if the font’s coding scheme starts with ‘TeX math sy’ or ‘TeX math
ex’, all character codes are output in octal.
In ‘ascii’ format, character codes that correspond to graphic characters, except
for left and right parentheses, are output as a ‘C’ followed by the single character:
‘C K’, for example. In octal format, character codes are output as the letter ‘O’
followed by octal digits, as in ‘O 113’ for ‘K’.
‘octal’ format is useful for symbol and other non-alphabetic fonts, where using
ASCII characters for the character codes is merely confusing.
Chapter 11: Font utilities 54
Appendix A Legalisms
In general, each file has its own copyright notice stating the copying permissions for that
file. Following is a summary.
The Stanford TEX programs and Web2c system itself are in the public domain (https://
tug.org/texlive/copying.html). The sources may be copied verbatim, or used as the
starting point of new software under different names; however, per the wishes of the authors,
they should be modified only through a .ch file, but this is in the nature of a development
request rather than a legal requirement.
MLTEX, pdfTEX, LuaTEX, XeTEX, and all the other derived engines have used various
license terms for their additions to the base code, often the GPL (see https://www.gnu.
org/licenses/#GPL) or (for example) the file web2c/pdftexdir/COPYINGv2. They also
mostly make use of additional libraries with their own (compatible) terms. Please see each
program’s sources.
The Kpathsea library is covered by the GNU Lesser General Public License (see Sec-
tion “Introduction” in Kpathsea). Therefore, the binaries resulting from a standard Web2c
compilation are also covered by the LGPL; so if you (re)distribute the binaries, you must
also (offer to) distribute the complete source that went into those binaries. See https://
gnu.org/licenses/#LGPL or the file kpathsea/COPYING.LESSERv2.
56
Appendix B References
1. Kpathsea: See Kpathsea.
2. Dvips and Afm2tfm: See Dvips.
3. The TEX Users Group: https://tug.org. For an introduction to the TEX system, see
https://tug.org/begin.html.
4. TUGboat, the principal journal for the TEX world: https://tug.org/TUGboat.
5. TEX and computer typesetting in general:
ftp://ftp.math.utah.edu/pub/tex/bib/texbook1.bib.
6. For a bibliography of formal articles and technical reports on the TEX project, see the
books TEX: The Program or Metafont: The Program cited below.
7. [Bil87] Neenie Billawala. Write-white printing engines and tuning fonts with Meta-
font. TUGboat, 8(1):29–32, April 1987. https://tug.org/TUGboat/tb08-1/
tb17billawala.pdf.
8. [Hob89] John D. Hobby. A Metafont-like system with PS output. TUGboat, 10(4):505–
512, December 1989. https://tug.org/metapost.
9. [Hob92] John D. Hobby. A User’s Manual for MetaPost. Technical Report CSTR-162,
AT&T Bell Laboratories, 1992.
10. [Hob93] John D. Hobby. Drawing Graphs with MetaPost. Technical Report CSTR-164,
AT&T Bell Laboratories, 1993.
11. [HS91] Samuel P. Harbison and Guy L. Steele Jr. C—A Reference Manual. Prentice-
Hall, Upper Saddle River, NJ 07458, USA, third edition, 1991. An authoritative refer-
ence to the C programming language, and a good companion to Kernighan and Ritchie.
12. [KL93] Donald E. Knuth and Silvio Levy. The CWEB System of Structured Documen-
tation, Version 3.0. Addison-Wesley, Reading, MA, USA, 1993. https://ctan.org/
pkg/cweb.
13. [Knu84] Donald E. Knuth. A torture test for TEX. Report No. STAN-CS-84-1027,
Stanford University, Department of Computer Science, 1984.
14. [Knu86a] Donald E. Knuth. A Torture Test for METAFONT. Report No. STAN-CS-
86-1095, Stanford University, Department of Computer Science, 1986.
15. [Knu86b] Donald E. Knuth. The TEXbook, volume A of Computers and Typesetting.
Addison-Wesley, Reading, MA, USA, 1986.
16. [Knu86c] Donald E. Knuth. TEX: The Program, volume B of Computers and Type-
setting. Addison-Wesley, Reading, MA, USA, 1986.
17. [Knu86d] Donald E. Knuth. The METAFONTbook, volume C of Computers and
Typesetting. Addison-Wesley, Reading, MA, USA, 1986.
18. [Knu86e] Donald E. Knuth. METAFONT: The Program, volume D of Computers and
Typesetting. Addison-Wesley, Reading, MA, USA, 1986.
19. [Knu86f] Donald E. Knuth. Computer Modern Typefaces, volume E of Computers and
Typesetting. Addison-Wesley, Reading, MA, USA, 1986.
20. [Knu89] Donald E. Knuth. The errors of TEX. Software—Practice and Experience,
19(7):607–681, July 1989. This is an updated version of Knuth:1988:ET.
Appendix B: References 57
21. [Knu90] Donald Knuth. Virtual Fonts: More Fun for Grand Wizards. TUGboat,
11(1):13–23, April 1990. https://tug.org/TUGboat/tb11-1/tb27knut.pdf.
22. [Knu92] Donald E. Knuth. Literate Programming. CSLI Lecture Notes Number 27.
Stanford University Center for the Study of Language and Information, Stanford, CA,
USA, 1992.
23. [Lam94] Leslie Lamport. LATEX: A Document Preparation System: User’s Guide
and Reference Manual. Addison-Wesley, Reading, MA, USA, second edition, 1994.
Reprinted with corrections, 1996.
24. [Lia83] Franklin Mark Liang. Word hy-phen-a-tion by com-put-er. Technical Report
STAN-CS-83-977, Stanford University, August 1983. https://tug.org/docs/liang/
liang-thesis.pdf.
25. [Mac91] Pierre A. MacKay. Looking at the pixels: Quality control for 300 dpi laser
printer fonts, especially Metafonts. In Robert A. Morris and Jacques Andre, editors,
Raster Imaging and Digital Typography II—Papers from the second RIDT meeting,
held in Boston, Oct. 14–16, 1991, pages 205–215, New York, 1991. Cambridge Univer-
sity Press.
58
Index
" -images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
" character, ignored in filenames . . . . . . . . . . . . . . . 15 -ini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8, 12
-interaction=string . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
-ipc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
# -ipc-start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
‘#define’ options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 -jobname=string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
-kpathsea-debug=number . . . . . . . . . . . . . . . . . . . . . . . 8
-length=number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
$ -loose. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
$ expansion in filenames . . . . . . . . . . . . . . . . . . . . . . . 15 -lowercase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-magnification=integer . . . . . . . . . . . . . . . . . . 42, 43
-max-pages=n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42, 43
% -mem=dumpname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
%& magic number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 -min-crossrefs=n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
-mixedcase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-mktex=filetype. . . . . . . . . . . . . . . . . . . . . . . . . . . 18, 28
– -mltex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
- starting a filename . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 -mnemonics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
- starts option names . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 -no-file-line-error . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
-- starts option names . . . . . . . . . . . . . . . . . . . . . . . . . . 7 -no-mktex=filetype . . . . . . . . . . . . . . . . . . . . . . . 18, 28
--disable-dump-share configure option . . . . . . 13
-no-parse-first-line. . . . . . . . . . . . . . . . . . . . . . . . . . 8
--disable-mf-nowin . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
-no-shell-escape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
--enable-epsfwin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
--enable-hp2627win . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 -output-comment=string . . . . . . . . . . . . . . . . . . . . . . 19
--enable-ipc configure option. . . . . . . . . . . . . . . . 18 -output-directory . . . . . . . . . . . . . . . . . . . . . . . . . 8, 10
--enable-mftalkwin . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 -output-level=n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
--enable-next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 -overflow-label-offset=points . . . . . . . . . . . . . . 31
--enable-regiswin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 -page-start=page-spec . . . . . . . . . . . . . . . . . . . . 42, 43
--enable-suntoolswin . . . . . . . . . . . . . . . . . . . . . . . . 30 -parse-first-line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
--enable-tektronixwin . . . . . . . . . . . . . . . . . . . . . . . 30 -progname=string. . . . . . . . . . . . . . . . . . . . . . . . . . . 8, 13
--enable-unitermwin. . . . . . . . . . . . . . . . . . . . . . . . . . 30 -recorder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
--help common option . . . . . . . . . . . . . . . . . . . . . . . . . . 7 -shell-escape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
--verbose common option . . . . . . . . . . . . . . . . . . . . . . 7 -shell-restricted . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
--version common option . . . . . . . . . . . . . . . . . . . . . . 7
-show-opcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
--with-editor=cmd . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
-strict . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
--with-mf-x-toolkit=kit . . . . . . . . . . . . . . . . . . . . . 30
--with-x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 -style=mftfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
-8bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 -terse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
-base=base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 -tex=texprogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
-base=dumpname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 -translate-file=tcxfile . . . . . . . . . . . . . . . . . . . . . . 9
-change=chfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 -troff. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
-charcode-format=type . . . . . . . . . . . . . . . . . . . . 51, 53 -T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
-cnf-line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 -underline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-D compiler options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 -uppercase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
-disable-write18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 -x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
-dpi=real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
-enable-write18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
-enc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
-file-line-error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
-file-line-error-style . . . . . . . . . . . . . . . . . . . . . . . 8
-fmt=dumpname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
-fmt=fmt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
-geometry, supported with Xt . . . . . . . . . . . . . . . . . 30
-halt-on-error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Index 59
. 3
., used for output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 32-bit architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
.2602gf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
.aux cross-reference files . . . . . . . . . . . . . . . . . . . . . . . 37
.base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
.bbl bibliography files . . . . . . . . . . . . . . . . . . . . . . . . . 37
.bib bibliography databases. . . . . . . . . . . . . . . . . . . . 37 6
.blg BibTEX log file . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
.fmt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 64-bit architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
.mf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
.mp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
.mps files and PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
.nnn PostScript figures . . . . . . . . . . . . . . . . . . . . . . . . . 34
.nnngf generic fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 8
.tcx character translation files . . . . . . . . . . . . . . . 9, 22 8 bit clean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
.tex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 8 bit clean output, specifying . . . . . . . . . . . . . . . . 9
.tfm output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27, 34 8-bit characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
.Xdefaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
.Xresources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
^ A
^^ notation, avoiding. . . . . . . . . . . . . . . . . . . . . . . . . . . 23
abbrv.bst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
accented character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
\ accents, hyphenating words with . . . . . . . . . . . . . . . 21
\bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 acknowledgements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
\bibliographystyle . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 acm.bst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
\charsubdef and MLTEX . . . . . . . . . . . . . . . . . . . . . . 21 Ada, WEB for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
\countn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42, 43 additional Make targets . . . . . . . . . . . . . . . . . . . . . . . . . 5
\font and dynamic generation . . . . . . . . . . . . . . . . . 17 afm2tfm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
\fontdimen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 AFM to TFM conversion . . . . . . . . . . . . . . . . . . . . . . . 54
\immediate\write18 . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 afmtopl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
\input braced (grouped) filename . . . . . . . . . . . . . . 15 Aleph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
\input filename caveats . . . . . . . . . . . . . . . . . . . . . . . . 15 aliases for fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
\input filenames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
alpha.bst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
\input quoted filename . . . . . . . . . . . . . . . . . . . . . . . . 15
American Mathematical Society, typesetting
\input, and pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
\mag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42, 43 system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
\openin, and pipes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 AMSTEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
\openout and security . . . . . . . . . . . . . . . . . . . . . . . . . 17 apalike.bst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
\openout, and pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 architecture dependencies . . . . . . . . . . . . . . . . . . . . . . 13
\output routine, and \write . . . . . . . . . . . . . . . . . . . 24 array limit, fixed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
\pdfshellescape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 array sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
\string, and \input filenames . . . . . . . . . . . . . . . . 16 assembly language routines . . . . . . . . . . . . . . . . . . . . . . 5
\tracingcharsubdef and MLTEX . . . . . . . . . . . . . . 22 autotrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
\tracinglostchars and MLTEX . . . . . . . . . . . . . . . 22
Awk, WEB for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
\write18 shell escape extension . . . . . . . . . . . . . . . . 24
\write18, output location for . . . . . . . . . . . . . . . . . . 10
~
~ expansion in filenames . . . . . . . . . . . . . . . . . . . . . . . 15
2
2602gf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Index 60
B cmbase.mf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
base file, determining . . . . . . . . . . . . . . . . . . . . . . . . . . 13 cmbase.mft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
base files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 cmmf.base not recommended . . . . . . . . . . . . . . . . . . . 29
base files, need mode definitions . . . . . . . . . . . . . . . . 29 color, in DVItoMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
base files, plain only . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 comments, in TCX files . . . . . . . . . . . . . . . . . . . . . . . . 23
base files, sharing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 comments, MFT control . . . . . . . . . . . . . . . . . . . . . . . 32
bases Make target . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 common options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
basic BibTEX style files . . . . . . . . . . . . . . . . . . . . . . . . 38 commonalities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
basic fonts and macros . . . . . . . . . . . . . . . . . . . . . . . . . . 3 compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
batch languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 compile-time options. . . . . . . . . . . . . . . . . . . . . . . . . . 3, 4
BDF and GF conversion . . . . . . . . . . . . . . . . . . . . . . . 54 Computer Modern fonts, and Troff . . . . . . . . . . . . . 35
beamer, package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Computer Modern macros . . . . . . . . . . . . . . . . . . . . . 29
beginfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Computer Modern Typefaces, production of . . . . 33
Berry, Karl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
BIBINPUTS, search path for bib files. . . . . . . . . . . . . 37 configuration file reading . . . . . . . . . . . . . . . . . . . . . . . . 9
bibliographies, creating . . . . . . . . . . . . . . . . . . . . . . . . 37 configuration file values . . . . . . . . . . . . . . . . . . . . . . . . 11
bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 configuration, compile-time . . . . . . . . . . . . . . . . . . . . . . 3
bibliography items, cross-referenced . . . . . . . . . . . . 37 configure --with/--enable options . . . . . . . . . . . . 3
bibtex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 CONTENTS.tex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
BibTEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 ConTEXt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
BibTEX collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 conventions for options, . . . . . . . . . . . . . . . . . . . . . . . . . 7
BibTEX style files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 conversion, DVI to plain text . . . . . . . . . . . . . . . . . . . 42
BigEndian machines . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 conversion, GF to PK . . . . . . . . . . . . . . . . . . . . . . . . . . 47
binaries, linking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 conversion, GF to plain text. . . . . . . . . . . . . . . . . . . . 49
blank lines, in TCX files . . . . . . . . . . . . . . . . . . . . . . . 23 conversion, PK to GF . . . . . . . . . . . . . . . . . . . . . . . . . . 47
boxes, memory for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 conversion, PK to plain text . . . . . . . . . . . . . . . . . . . 47
braced filename for \input . . . . . . . . . . . . . . . . . . . . . 15 conversion, property list to TFM . . . . . . . . . . . . . . . 53
breakpoints, memory for . . . . . . . . . . . . . . . . . . . . . . . 11 conversion, property list to VF . . . . . . . . . . . . . . . . . 54
Breitenlohner, Peter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 conversion, TFM to property list . . . . . . . . . . . . . . . 51
BSTINPUTS, search path for bst files . . . . . . . . . . . . . 37 conversion, VF to VPL. . . . . . . . . . . . . . . . . . . . . . . . . 53
btex for MetaPost labels . . . . . . . . . . . . . . . . . . . . . . . 34 copyright notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
btxdoc.bib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Cork encoding and ISO input . . . . . . . . . . . . . . . . . . 23
btxdoc.tex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 creating memory dumps. . . . . . . . . . . . . . . . . . . . . . . . 12
btxhak.tex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 cross-engine functionality . . . . . . . . . . . . . . . . . . . . . . 26
byte position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48, 50 cross-referenced bibliography items . . . . . . . . . . . . . 37
byte swapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 cross-references, omitting. . . . . . . . . . . . . . . . . . . . . . . 40
current directory, used for output . . . . . . . . . . . . . . . 9
Curtis, Pavel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
C Cweb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
c-sources Makefile target . . . . . . . . . . . . . . . . . . . . . . . 5 CWEB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
caveats for \input filenames . . . . . . . . . . . . . . . . . . . 15
change files, and MFT . . . . . . . . . . . . . . . . . . . . . . . . . 32
change files, and Tangle . . . . . . . . . . . . . . . . . . . . . . . . 39
D
change files, and Weave . . . . . . . . . . . . . . . . . . . . . . . . 40 date and time, in memory dumps . . . . . . . . . . . . . . 13
changing error messages style. . . . . . . . . . . . . . . . . . . . 8 debugging DVI utilities . . . . . . . . . . . . . . . . . . . . . . . . 43
character codes, in GFtype output . . . . . . . . . . . . . 50 debugging flags, specifying . . . . . . . . . . . . . . . . . . . . . . 8
character codes, in PKtype output . . . . . . . . . . . . . 48 decimal character codes, in TCX files. . . . . . . . . . . 23
character codes, in TCX files . . . . . . . . . . . . . . . . . . . 23 dependencies, hardware . . . . . . . . . . . . . . . . . . . . . . . . 13
character proofs of fonts . . . . . . . . . . . . . . . . . . . . . . . 31 design-size units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
character translation files . . . . . . . . . . . . . . . . . . . . . . 22 device definitions, for Metafont . . . . . . . . . . . . . . . . . 29
CHARACTER property . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 device-independent width . . . . . . . . . . . . . . . . . . . 48, 50
CHARDP property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 directory structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
CHARHT property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 DISPLAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
CHARIC property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 dot files, written by TEX programs . . . . . . . . . . . . . 17
CHARWD property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 double quote character, ignored in filenames . . . . 15
chtopx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 downloading of fonts for MetaPost labels . . . . . . . 35
class name for Metafont . . . . . . . . . . . . . . . . . . . . . . . . 30 DrawingServant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
cm.base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 dump file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Index 61
dumping memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 F
DVI comment, specifying . . . . . . . . . . . . . . . . . . . . . . 19 FACE property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
DVI files, converting to MPX . . . . . . . . . . . . . . . . . . 36 FAMILY property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
DVI files, explained . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Ferguson, Michael . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
DVI format definition . . . . . . . . . . . . . . . . . . . . . . . . . . 42 file formats for fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
DVI opcodes, showing. . . . . . . . . . . . . . . . . . . . . . . . . . 43 file recorder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
DVI utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 filename conventions, in input files . . . . . . . . . . . . . 14
dvicopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 filenames starting with ‘-’ . . . . . . . . . . . . . . . . . . . . . . . 7
dvitomp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 first line of the main input file . . . . . . . . . . . . . . . . . . . 9
dvitype DVI validation . . . . . . . . . . . . . . . . . . . . . . . . 42 fixed-point arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
dvitype output example . . . . . . . . . . . . . . . . . . . . . . . . 43 FIXPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
dvitype.web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 flag byte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
dx horizontal escapement . . . . . . . . . . . . . . . . . . . 48, 50 floating-point arithmetic . . . . . . . . . . . . . . . . . . . . . . . . 5
dy vertical escapement . . . . . . . . . . . . . . . . . . . . . . . . . 50 floating-point values . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
fmt file, determining . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
dynamic array allocation . . . . . . . . . . . . . . . . . . . . . . . 11
fmt files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
dynamic Metafont mode definitions with smode . 29
fmt files, sharing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
dynamic packing variable . . . . . . . . . . . . . . . . . . . . . . 48 fmts Make target . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
font aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
font character code, translating . . . . . . . . . . . . . . . . 24
font design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
E font downloading for MetaPost labels. . . . . . . . . . . 35
e response at error prompt . . . . . . . . . . . . . . . . . . . . . 14 font file formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
e-circumflex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 font proofs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
e-TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 font utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
e.mft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 font utilities, non-Web2c . . . . . . . . . . . . . . . . . . . . . . . 54
fontforge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
EC fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17, 27
fontinst, for creating virtual fonts . . . . . . . . . . . . . 54
editing of bitmap fonts . . . . . . . . . . . . . . . . . . . . . . . . . 54
fonts, basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
editor invoked at error . . . . . . . . . . . . . . . . . . . . . . . . . 14 format files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
eight-bit characters in filenames . . . . . . . . . . . . . . . . 15 formats for TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
empty.tcx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 formats Make target . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
endian dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 fraction routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
eoc GF command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Free Software Foundation documentation system . 20
Eplain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 freedom of Web2c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
epsf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 ftp.math.utah.edu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
epTEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
errors, editor invoked at . . . . . . . . . . . . . . . . . . . . . . . . 14
escapement, horizontal . . . . . . . . . . . . . . . . . . . . . 48, 50 G
escapement, vertical. . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 generating source specials . . . . . . . . . . . . . . . . . . . . . . 19
etex for MetaPost labels . . . . . . . . . . . . . . . . . . . . . . . 34 geometric designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
etex is pdfTEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 geometric font scaling . . . . . . . . . . . . . . . . . . . . . . . . . . 46
eupTEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 geometry for Metafont . . . . . . . . . . . . . . . . . . . . . . . . . 30
executables, shared initial and virgin . . . . . . . . . . . 12 getopt_long_only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
exit status, of shell escape . . . . . . . . . . . . . . . . . . . . . . 25 GF files, explained . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
expand_depth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 GF files, output by Metafont . . . . . . . . . . . . . . . . . . . 27
expanded plain format . . . . . . . . . . . . . . . . . . . . . . . . . 21 GF format definition . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
expansion limit, recursive . . . . . . . . . . . . . . . . . . . . . . 11 GF output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
expansion, and \input filenames . . . . . . . . . . . . . . . 15 GF, converting PK to . . . . . . . . . . . . . . . . . . . . . . . . . . 47
GF, converting to PK . . . . . . . . . . . . . . . . . . . . . . . . . . 47
extensions to TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
gftodvi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
extra_mem_bot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
gftopk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
gftopxl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
gftype GF validation . . . . . . . . . . . . . . . . . . . . . . . . . . 49
gftype.web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
glue ratio representations . . . . . . . . . . . . . . . . . . . . . . 13
glue, memory for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
glyph substitutions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Index 62
pktype PK validation . . . . . . . . . . . . . . . . . . . . . . . . . . 47 R
pktype.web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Raichle, Bernd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
PL files, explained . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 reading from the output directory . . . . . . . . . . . . . . . 9
plain Metafont, compatibility in MetaPost . . . . . . 36 reading, additional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
plain text, converting DVI to . . . . . . . . . . . . . . . . . . . 42 readonly directory, running TEX in . . . . . . . . . . . . . 10
plain text, converting GF to. . . . . . . . . . . . . . . . . . . . 49 reallocation of arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
plain text, converting PK to . . . . . . . . . . . . . . . . . . . 47 recursive expansion limit . . . . . . . . . . . . . . . . . . . . . . . 11
plain text, converting TFM to . . . . . . . . . . . . . . . . . . 51 redefined character substitutions . . . . . . . . . . . . . . . 22
plain text, converting VF to . . . . . . . . . . . . . . . . . . . . 53 reference pixel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
plain.base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
plain.bst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 regis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
plain.fmt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Regis graphics support . . . . . . . . . . . . . . . . . . . . . . . . . 30
plain.mft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 regression testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
pltotf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 repeated rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
pool file, writing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 representation of strings . . . . . . . . . . . . . . . . . . . . . . . . 41
Poole, Simon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 restricted shell escapes . . . . . . . . . . . . . . . . . . . . . . . . . 24
pooltype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 right side bearing . . . . . . . . . . . . . . . . . . . . . . . . . . 48, 50
portable filenames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Rokicki, Tomas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
PostScript fonts, and Troff . . . . . . . . . . . . . . . . . . . . . 35 run length encoded bitmaps . . . . . . . . . . . . . . . . 49, 50
runtime options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
PostScript meets Metafont . . . . . . . . . . . . . . . . . . . . . 34
runtime stack overflow . . . . . . . . . . . . . . . . . . . . . . . . . 11
PostScript output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
PostScript to PK bitmaps . . . . . . . . . . . . . . . . . . . . . . 54
PostScript Type 1 font conversion . . . . . . . . . . . . . . 54 S
PostScript, and font scaling . . . . . . . . . . . . . . . . . . . . 46
scaled pixels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48, 50
potrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
scaling of fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
predefined macros and memory dumps . . . . . . . . . 12 security, and \openout . . . . . . . . . . . . . . . . . . . . . . . . . 17
prettyprinting Metafont source . . . . . . . . . . . . . . . . . 32 security, and output files . . . . . . . . . . . . . . . . . . . . . . . 17
prettyprinting WEB programs . . . . . . . . . . . . . . . . . 40 security, and shell escapes . . . . . . . . . . . . . . . . . . . . . . 24
primitives, new . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 security, and write . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
printable characters, specifying . . . . . . . . . . . . . . . . . 23 segmentation fault . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
printer characteristics, for Metafont . . . . . . . . . . . . 29 shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
production use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 sharing memory dumps . . . . . . . . . . . . . . . . . . . . . . . . 13
program name, determines memory dump . . . . . . 13 shell commands in TEX . . . . . . . . . . . . . . . . . . . . . . . . 24
program names, special . . . . . . . . . . . . . . . . . . . . . . 8, 18 shell_escape enabling in TEX . . . . . . . . . . . . . . . . . 24
prologues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 shell_escape_commands . . . . . . . . . . . . . . . . . . . . . . . 25
prologues, and EPSF output . . . . . . . . . . . . . . . . . . 35 siam.bst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
proof mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 side bearings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48, 50
proof sheets, of fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 SIGSEGV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
property list format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 slant font . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
property list, converting TFM to . . . . . . . . . . . . . . . 51 slides, producing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
property list, converting VF to virtual . . . . . . . . . . 53 SliTEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
ps2pk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 small Metafont memory and modes. . . . . . . . . . . . . 29
psfonts.map, read by MetaPost . . . . . . . . . . . . . . . . 35 smode and dynamic Metafont mode definition . . 29
pTEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
PXL files, explained . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 space-terminated filenames . . . . . . . . . . . . . . . . . . . . . 14
pxtoch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Spiderweb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Stallman, Richard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
starting page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42, 43
Steele Jr., Guy L. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Q stopping at the first error . . . . . . . . . . . . . . . . . . . . . . . 8
strategy, overall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
quoted filename for \input . . . . . . . . . . . . . . . . . . . . . 15 string numbers, displaying . . . . . . . . . . . . . . . . . . . . . 40
string pool, writing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
string representation . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
style design, for BibTEX. . . . . . . . . . . . . . . . . . . . . . . . 37
style files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
substitutions of font glyphs . . . . . . . . . . . . . . . . . . . . 21
Index 65