r769 - in branches/stable/source: . src/auxdir/auxsub src/libs/libpng src/libs/poppler src/libs/xpdf src/libs/zlib src/texk/kpathsea src/texk/web2c/doc src/texk/web2c/web2c

karl at freefriends.org karl at freefriends.org
Tue Mar 7 20:07:22 CET 2017


Author: karl
Date: 2017-03-07 19:07:21 +0000 (Tue, 07 Mar 2017)
New Revision: 769

Added:
   branches/stable/source/src/texk/web2c/doc/Makefile.am
   branches/stable/source/src/texk/web2c/doc/README
   branches/stable/source/src/texk/web2c/doc/install.texi
   branches/stable/source/src/texk/web2c/doc/ref.txi
   branches/stable/source/src/texk/web2c/doc/web2c.info
   branches/stable/source/src/texk/web2c/doc/web2c.texi
Modified:
   branches/stable/source/src/auxdir/auxsub/
   branches/stable/source/src/libs/libpng/
   branches/stable/source/src/libs/poppler/
   branches/stable/source/src/libs/xpdf/
   branches/stable/source/src/libs/zlib/
   branches/stable/source/src/texk/kpathsea/
   branches/stable/source/src/texk/web2c/web2c/
   branches/stable/source/sync-pdftex.sh
Log:
ignore autom4te.cache dirs, add web2c/doc for easier build

Index: branches/stable/source/src/auxdir/auxsub
===================================================================
--- branches/stable/source/src/auxdir/auxsub	2017-03-07 18:21:57 UTC (rev 768)
+++ branches/stable/source/src/auxdir/auxsub	2017-03-07 19:07:21 UTC (rev 769)

Property changes on: branches/stable/source/src/auxdir/auxsub
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+autom4te.cache
Index: branches/stable/source/src/libs/libpng
===================================================================
--- branches/stable/source/src/libs/libpng	2017-03-07 18:21:57 UTC (rev 768)
+++ branches/stable/source/src/libs/libpng	2017-03-07 19:07:21 UTC (rev 769)

Property changes on: branches/stable/source/src/libs/libpng
___________________________________________________________________
Modified: svn:ignore
## -1 +1,2 ##
 Makefile
+autom4te.cache
Index: branches/stable/source/src/libs/poppler
===================================================================
--- branches/stable/source/src/libs/poppler	2017-03-07 18:21:57 UTC (rev 768)
+++ branches/stable/source/src/libs/poppler	2017-03-07 19:07:21 UTC (rev 769)

Property changes on: branches/stable/source/src/libs/poppler
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+autom4te.cache
Index: branches/stable/source/src/libs/xpdf
===================================================================
--- branches/stable/source/src/libs/xpdf	2017-03-07 18:21:57 UTC (rev 768)
+++ branches/stable/source/src/libs/xpdf	2017-03-07 19:07:21 UTC (rev 769)

Property changes on: branches/stable/source/src/libs/xpdf
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+autom4te.cache
Index: branches/stable/source/src/libs/zlib
===================================================================
--- branches/stable/source/src/libs/zlib	2017-03-07 18:21:57 UTC (rev 768)
+++ branches/stable/source/src/libs/zlib	2017-03-07 19:07:21 UTC (rev 769)

Property changes on: branches/stable/source/src/libs/zlib
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+autom4te.cache
Index: branches/stable/source/src/texk/kpathsea
===================================================================
--- branches/stable/source/src/texk/kpathsea	2017-03-07 18:21:57 UTC (rev 768)
+++ branches/stable/source/src/texk/kpathsea	2017-03-07 19:07:21 UTC (rev 769)

Property changes on: branches/stable/source/src/texk/kpathsea
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+autom4te.cache
Added: branches/stable/source/src/texk/web2c/doc/Makefile.am
===================================================================
--- branches/stable/source/src/texk/web2c/doc/Makefile.am	                        (rev 0)
+++ branches/stable/source/src/texk/web2c/doc/Makefile.am	2017-03-07 19:07:21 UTC (rev 769)
@@ -0,0 +1,8 @@
+## Makefile.am for the TeX Live subdirectory texk/web2c/doc/
+##
+## Copyright (C) 2009 Peter Breitenlohner <tex-live at tug.org>
+## You may freely use, modify and/or distribute this file.
+##
+info_TEXINFOS = web2c.texi
+web2c_TEXINFOS = install.texi ref.txi
+


Property changes on: branches/stable/source/src/texk/web2c/doc/Makefile.am
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/stable/source/src/texk/web2c/doc/README
===================================================================
--- branches/stable/source/src/texk/web2c/doc/README	                        (rev 0)
+++ branches/stable/source/src/texk/web2c/doc/README	2017-03-07 19:07:21 UTC (rev 769)
@@ -0,0 +1,7 @@
+This directory contains the Texinfo manual for Web2c, which includes
+nodes for all the TeX system programs in the distribution.
+
+The man pages are no longer supported, and are no longer in the distribution.
+I do not wish to take the time to maintain the same documentation in two
+source formats.  If you want to volunteer to keep the man pages in sync
+with the Texinfo manual, let me know.


Property changes on: branches/stable/source/src/texk/web2c/doc/README
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/stable/source/src/texk/web2c/doc/install.texi
===================================================================
--- branches/stable/source/src/texk/web2c/doc/install.texi	                        (rev 0)
+++ branches/stable/source/src/texk/web2c/doc/install.texi	2017-03-07 19:07:21 UTC (rev 769)
@@ -0,0 +1,347 @@
+ at ifclear version
+ at defcodeindex cm
+ at defcodeindex fl
+ at defcodeindex op
+ at end ifclear
+
+ at node Installation
+ at chapter Installation
+
+ at cindex configuration
+ at cindex compilation
+ at cindex installation
+
+ at ifset version
+(A copy of this chapter is in the distribution file @file{web2c/INSTALL}.)
+ at end ifset
+
+Installing Web2c is mostly the same as installing any other
+Kpathsea-using program.  Therefore, for the basic steps involved,
+see @ref{Installation,,, kpathsea, Kpathsea}.  (A copy is in the file
+ at file{kpathsea/INSTALL}.)
+
+One peculiarity to Web2c is that the source distribution comes in two
+files: @file{web.tar.gz} and @file{web2c.tar.gz}.  You must retrieve and
+unpack them both.  (We have two because the former archive contains the
+very large and seldom-changing original WEB source files.)
+ at xref{unixtex.ftp,,, kpathsea, Kpathsea}.
+
+ at pindex mpost at r{, reason for name change}
+Another peculiarity is the MetaPost program.  Although it has been
+installed previously as @code{mp}, as of Web2c 7.0 the installed name is
+now @code{mpost}, to avoid conflict with the @code{mp} program that does
+prettyprinting.  This approach was recommended by the MetaPost author,
+John Hobby.  If you as the @TeX{} administrator wish to make it
+available under its shorter name as well, you will have to set up a link
+or some such yourself.  And of course individual users can do the same.
+
+For solutions to common installation problems and information on how to
+report a bug, see the file @file{kpathsea/BUGS} (@pxref{Bugs,,,
+kpathsea, Kpathsea}).  See also the Web2c home page,
+ at url{http://www.tug.org/web2c}.
+
+Points worth repeating:
+
+ at itemize @bullet
+ at item
+ at cindex directory structure
+ at cindex basic fonts and macros
+ at cindex fonts, basic
+ at cindex macros, basic
+Before starting the standard compilation and installation you must
+install the basic fonts, macros, and other library files.
+ at xref{Installation,,,kpathsea, Kpathsea}.
+
+ at item
+If you do not wish to use the standard file locations, see @ref{Changing
+search paths,,, kpathsea, Kpathsea}.
+
+ at item
+Some Web2c features are enabled or disabled at @code{configure} time,
+as described in the first section below.
+
+ at end itemize
+
+ at menu
+* configure options::           Especially --with and --enable.
+* Compile-time options::        Unusual -D's.
+* Additional targets::		Breaking down the task.
+* Triptrap::                    Running the torture tests.
+* Runtime options::             Array sizes and the like.
+ at end menu
+
+
+ at node configure options
+ at section @code{configure} options
+
+ at cindex configuration, compile-time
+ at cindex compile-time options
+ at pindex configure --with/--enable @r{options}
+This section gives pointers to descriptions of the @samp{--with} and
+ at samp{--enable} @code{configure} arguments that Web2c accepts.  Some are
+specific to Web2c, others are generic to all Kpathsea-using programs.
+
+For a list of all the options @code{configure} accepts, run
+ at samp{configure --help}.  The generic options are listed first, and the
+package-specific options come last.
+
+For a description of the generic options (which mainly allow you to
+specify installation directories) and basic @code{configure} usage,
+see @ref{Invoking configure,, Running @code{configure} scripts, autoconf,
+Autoconf}, a copy is in the file @file{kpathsea/CONFIGURE}.
+
+ at table @samp
+ at item --disable-dump-share
+Do not make fmt/base/mem files sharable across different endian
+architectures.  @xref{Hardware and memory dumps}.
+
+ at item --without-maketexmf-default
+ at itemx --without-maketexpk-default
+ at itemx --without-maketextfm-default
+ at itemx --with-maketextex-default
+Enable or disable the dynamic generation programs.  @xref{mktex
+configuration,,, kpathsea, Kpathsea}.  The defaults are the inverse of
+the options, i.e., everything is enabled except @code{mktextex}.
+
+ at item --enable-shared
+Build Kpathsea as a shared library.  @xref{Shared library,,, kpathsea,
+Kpathsea}.
+
+ at item --with-editor=@var{cmd}
+Change the default editor invoked by the @samp{e} interactive command.
+ at xref{Editor invocation}.
+
+ at item --with-epsfwin
+ at itemx --with-hp2627win
+ at itemx --with-mftalkwin
+ at itemx --with-nextwin
+ at itemx --with-regiswin
+ at itemx --with-suntoolswin
+ at itemx --with-tektronixwin
+ at itemx --with-unitermwin
+ at itemx --with-x
+ at itemx --with-x-toolkit=KIT
+ at itemx --with-x11win
+ at itemx --with-x11
+Define Metafont graphics support; by default, no graphics support is
+enabled.  @xref{Online Metafont graphics}.
+
+ at item --x-includes=@var{dir}
+ at itemx --x-libraries=@var{dir}
+Define the locations of the X11 include files and libraries; by default,
+ at code{configure} does its best to guess).  @xref{Optional Features,,,
+autoconf, Autoconf}.  A copy is in @file{kpathsea/CONFIGURE}.
+ at end table
+
+
+ at node Compile-time options
+ at section Compile-time options
+
+ at cindex compile-time options
+ at cindex @samp{#define} options
+ at opindex -D @r{compiler options}
+In addition to the @code{configure} options listed in the previous
+section, there are a few things that can be affected at compile-time
+with C definitions, rather than with @code{configure}.  Using any of
+these is unusual.
+
+To specify extra compiler flags (@samp{-D at var{name}} in this case), the
+simplest thing to do is:
+ at example
+make XCFLAGS="@var{ccoptions}"
+ at end example
+ at noindent You can also set the @code{CFLAGS} environment variable before
+running @code{configure}.  @xref{configure environment,,, kpathsea, Kpathsea}.
+
+Anyway, here are the possibilities:
+
+ at table @samp
+ at item -DFIXPT
+ at itemx -DNO_MF_ASM
+ at vindex FIXPT
+ at cindex fixed-point arithmetic
+ at cindex floating-point arithmetic
+ at cindex assembly language routines
+ at cindex fraction routines
+Use the original WEB fixed-point routines for Metafont and MetaPost
+arithmetic calculations regarding fractions.  By default,
+assembly-language routines are used on x86 hardware with GNU C (unless
+ at samp{NO_MF_ASM} is defined), and floating-point routines are used
+otherwise.
+
+ at item -DIPC_DEBUG
+ at vindex IPC_DEBUG
+Report on various interprocess communication activities.  @xref{IPC and
+TeX,, IPC and @TeX{}}.
+ at end table
+
+
+ at node Additional targets
+ at section Additional targets
+
+ at cindex additional Make targets
+ at cindex targets, additional Make
+ at cindex Make targets, additional
+
+Web2c has several Make targets besides the standard ones.  You can invoke
+these either in the top level directory of the source distribution (the
+one containing @file{kpathsea/} and @file{web2c/}), or in the
+ at file{web2c/} directory.
+
+ at table @samp
+ at item c-sources
+ at cmindex c-sources @r{Makefile target}
+ at cindex non-Unix system, compiling on
+Make only the C files, translated from the Web sources, presumably
+because you want to take them to a non-Unix machine.
+
+ at item formats
+ at itemx install-formats
+ at cmindex formats @r{Make target}
+ at cmindex install-formats @r{Make target}
+Make or install all the memory dumps (@pxref{Memory dumps}).  By
+default, the standard plain formats plus @file{latex.fmt} are made.  You
+can add other formats by redefining the @code{fmts}, @code{bases}, and
+ at code{mems} variables.  See the top of @file{web2c/Makefile} for the
+possibilities.
+
+ at item fmts
+ at itemx install-fmts
+ at cmindex fmts @r{Make target}
+ at cmindex install-fmts @r{Make target}
+Make or install the @TeX{} @file{.fmt} files. @xref{Initial TeX}.
+
+ at item bases
+ at itemx install-bases
+ at cmindex bases @r{Make target}
+ at cmindex install-bases @r{Make target}
+
+Make or install the Metafont @file{.base} files.  @xref{Initial Metafont}.
+
+ at item mems
+ at itemx install-mems
+ at cmindex mems @r{Make target}
+ at cmindex install-mems @r{Make target}
+Make or install the MetaPost @file{.mem} files.  @xref{Initial MetaPost}.
+
+ at item triptrap
+ at itemx trip
+ at itemx trap
+ at itemx mptrap
+ at cmindex triptrap @r{Make target}
+ at findex trip @r{Make target}
+ at findex trap @r{Make target}
+ at findex mptrap @r{Make target}
+To run the torture tests for @TeX{}, Metafont, and MetaPost
+(respectively).  See the next section.
+
+ at end table
+
+
+ at node Triptrap
+ at section Trip, trap, and mptrap: Torture tests
+
+ at cindex Gruff, Billy Goat
+ at cindex trip test
+ at cindex trap test
+ at cindex mptrap test
+ at cindex torture tests
+
+ at flindex tripman.tex
+ at flindex trapman.tex
+ at flindex mptrap.readme
+To validate your @TeX{}, Metafont, and MetaPost executables, run
+ at samp{make triptrap}.  This runs the trip, trap, and mptrap ``torture
+tests''.  See the files @file{triptrap/tripman.tex},
+ at file{triptrap/trapman.tex}, and @file{triptrap/mptrap.readme} for
+detailed information and background on the tests.
+
+The differences between your executables' behavior and the standard
+values will show up on your terminal.  The usual differences (these are
+all acceptable) are:
+
+ at itemize @bullet
+ at item string usage and table sizes;
+ at item glue set ratios;
+ at item @samp{down4}, @samp{right4}, and @samp{y4} commands in DVItype output;
+ at item dates and times.
+ at end itemize
+
+ at noindent Any other differences are trouble. The most common culprit in
+the past has been compiler bugs, especially when optimizing.
+ at xref{TeX or Metafont failing,, @TeX{} or Metafont failing, kpathsea,
+Kpathsea}.
+
+The files @file{trip.diffs}, @file{mftrap.diffs}, and
+ at file{mptrap.diffs} in the @file{triptrap} directory show the standard
+diffs against the original output.  If you diff your diffs against these
+files, you should come up clean.  For example
+ at example
+make trip >&mytrip.diffs
+diff triptrap/trip.diffs mytrip.diffs
+ at end example
+
+To run the tests separately, use the targets @code{trip}, @code{trap},
+and @code{mptrap}.
+
+To run simple tests for all the programs as well as the torture tests,
+run @samp{make check}.  You can compare the output to the distributed
+file @file{tests/check.log} if you like.
+
+
+ at node Runtime options
+ at section Runtime options
+
+ at cindex runtime options
+
+ at cindex configuration file values
+ at cindex array sizes
+Besides the configure- and compile-time options described in the
+previous sections, you can control a number of parameters (in
+particular, array sizes) in the @file{texmf.cnf} runtime file read by
+Kpathsea (@pxref{Config files,,, kpathsea, Kpathsea}).
+
+Rather than exhaustively listing them here, please see the last section
+of the distributed @file{kpathsea/texmf.cnf}.  Some of the more
+interesting values:
+
+ at vtable @samp
+ at item main_memory
+Total words of memory available, for @TeX{}, Metafont, and MetaPost.
+Must remake the format file after changing.
+
+ at item extra_mem_bot
+ at cindex boxes, memory for
+ at cindex glue, memory for
+ at cindex breakpoints, memory for
+ at cindex PiC at TeX{}, increasing memory for
+Extra space for ``large'' @TeX{} data structures: boxes, glue,
+breakpoints, et al.  If you use PiC at TeX{}, you may well want to set this.
+
+ at item font_mem_size
+ at cindex TFM files, memory for
+Words of font info available for @TeX{}; this is approximately the total
+size of all TFM files read.
+
+ at item hash_extra
+ at cindex control sequence names, space for
+ at cindex hash table, increasing size of
+Additional space for the hash table of control sequence names.
+Approximately 10,000 control sequences can be stored in the main hash
+table; if you have a large book with numerous cross-references, 
+this might not be enough, and thus you will want to set @code{hash_extra}.
+
+ at end vtable
+
+ at cindex array limit, fixed
+ at cindex swap space, as array limit
+ at cindex reallocation of arrays
+ at cindex dynamic array allocation
+Of course, ideally all arrays would be dynamically expanded as
+necessary, so the only limiting factor would be the amount of swap space
+available.  Unfortunately, implementing this is extremely difficult, as
+the fixed size of arrays is assumed in many places throughout the source
+code.  These runtime limits are a practical compromise between the
+compile-time limits in previous versions, and truly dynamic arrays.  (On
+the other hand, the Web2c Bib at TeX{} implementation does do dynamic
+reallocation of some arrays.)


Property changes on: branches/stable/source/src/texk/web2c/doc/install.texi
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/stable/source/src/texk/web2c/doc/ref.txi
===================================================================
--- branches/stable/source/src/texk/web2c/doc/ref.txi	                        (rev 0)
+++ branches/stable/source/src/texk/web2c/doc/ref.txi	2017-03-07 19:07:21 UTC (rev 769)
@@ -0,0 +1,134 @@
+ at c begin{thebibliography}{Knu86d}
+
+ at item [Bil87]
+Neenie Billawala.
+Write-white printing engines and tuning fonts with Metafont.
+ at cite{TUGboat}, 8(1):29--32, April 1987.
+ at url{http://tug.org/TUGboat/tb08-1/tb17billawala.pdf}.
+
+ at item [GMS94]
+Michel Goossens, Frank Mittelbach, and Alexander Samarin.
+ at cite{The @LaTeX{} Companion}.
+Addison-Wesley, Reading, MA, USA, 1994.
+
+ at item [Hob89]
+John D. Hobby.
+A Metafont-like system with PS output.
+ at cite{TUGboat}, 10(4):505--512, December 1989.
+ at url{http://tug.org/metapost}.
+
+ at item [Hob92]
+John D. Hobby.
+A User's Manual for MetaPost.
+Technical Report CSTR-162, AT&T Bell Laboratories, 1992.
+
+ at item [Hob93]
+John D. Hobby.
+Drawing Graphs with MetaPost.
+Technical Report CSTR-164, AT&T Bell Laboratories, 1993.
+
+ at item [HS91]
+Samuel P. Harbison and Guy L. Steele Jr.
+ at cite{C---A Reference Manual}.
+Prentice-Hall, Upper Saddle River, NJ 07458, USA, third edition, 1991.
+An authoritative reference to the C programming language, and a good
+  companion to Kernighan and Ritchie.
+
+ at item [KL93]
+Donald E. Knuth and Silvio Levy.
+ at cite{The CWEB System of Structured Documentation, Version 3.0}.
+Addison-Wesley, Reading, MA, USA, 1993.
+
+ at item [Knu84]
+Donald E. Knuth.
+A torture test for @TeX{}.
+Report No. STAN-CS-84-1027, Stanford University, Department of Computer
+  Science, 1984.
+
+ at item [Knu86a]
+Donald E. Knuth.
+A Torture Test for METAFONT.
+Report No. STAN-CS-86-1095, Stanford University, Department of Computer
+  Science, 1986.
+
+ at item [Knu86b]
+Donald E. Knuth.
+ at cite{The @TeX{}book}, volume A of @cite{Computers and Typesetting}.
+Addison-Wesley, Reading, MA, USA, 1986.
+
+ at item [Knu86c]
+Donald E. Knuth.
+ at cite{@TeX{}: The Program}, volume B of @cite{Computers and Typesetting}.
+Addison-Wesley, Reading, MA, USA, 1986.
+
+ at item [Knu86d]
+Donald E. Knuth.
+ at cite{The METAFONTbook}, volume C of @cite{Computers and Typesetting}.
+Addison-Wesley, Reading, MA, USA, 1986.
+
+ at item [Knu86e]
+Donald E. Knuth.
+ at cite{METAFONT: The Program}, volume D of @cite{Computers and
+  Typesetting}.
+Addison-Wesley, Reading, MA, USA, 1986.
+
+ at item [Knu86f]
+Donald E. Knuth.
+ at cite{Computer Modern Typefaces}, volume E of @cite{Computers and
+  Typesetting}.
+Addison-Wesley, Reading, MA, USA, 1986.
+
+ at item [Knu89]
+Donald E. Knuth.
+The errors of @TeX{}.
+ at cite{Software---Practice and Experience}, 19(7):607--681, July
+  1989.
+This is an updated version of Knuth:1988:ET.
+
+ at item [Knu90]
+Donald Knuth.
+Virtual Fonts: More Fun for Grand Wizards.
+ at cite{TUGboat}, 11(1):13--23, April 1990.
+ at url{http://tug.org/TUGboat/tb11-1/tb27knut.pdf}.
+
+ at item [Knu92]
+Donald E. Knuth.
+ at cite{Literate Programming}.
+CSLI Lecture Notes Number 27. Stanford University Center for the Study of
+  Language and Information, Stanford, CA, USA, 1992.
+
+ at item [Lam94]
+Leslie Lamport.
+ at cite{@LaTeX{}: A Document Preparation System: User's Guide and Reference
+  Manual}.
+Addison-Wesley, Reading, MA, USA, second edition, 1994.
+Reprinted with corrections in 1996.
+
+ at item [Lia83]
+Franklin Mark Liang.
+Word hy-phen-a-tion by com-pu-ter.
+Technical Report STAN-CS-83-977, Stanford University, August 1983.
+ at url{http://tug.org/docs/liang/liang-thesis.pdf}.
+
+ at item [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, @cite{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
+  University Press.
+
+ at item [Spi89]
+Michael D. Spivak.
+ at cite{LAMS at TeX{}, The Synthesis}.
+The @TeX{}plorators Corporation, 3701 W. Alabama, Suite 450-273, Houston, TX
+  77027, USA, 1989.
+
+ at item [Spi90]
+Michael D. Spivak.
+ at cite{The Joy of @TeX{}---A Gourmet Guide to Typesetting with the
+  AMS at TeX{} macro package}.
+American Mathematical Society, Providence, RI, USA, 2nd revised edition, 1990.
+
+ at c end{thebibliography}


Property changes on: branches/stable/source/src/texk/web2c/doc/ref.txi
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/stable/source/src/texk/web2c/doc/web2c.info
===================================================================
--- branches/stable/source/src/texk/web2c/doc/web2c.info	                        (rev 0)
+++ branches/stable/source/src/texk/web2c/doc/web2c.info	2017-03-07 19:07:21 UTC (rev 769)
@@ -0,0 +1,4459 @@
+This is web2c.info, produced by makeinfo version 6.1 from web2c.texi.
+
+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 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 conditions 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 language, under the above conditions for modified
+versions, except that this permission notice may be stated in a
+translation
+INFO-DIR-SECTION TeX
+START-INFO-DIR-ENTRY
+* Web2c: (web2c).               TeX, Metafont, and companion programs.
+END-INFO-DIR-ENTRY
+
+INFO-DIR-SECTION Individual utilities
+START-INFO-DIR-ENTRY
+* bibtex: (web2c)bibtex invocation.             Maintaining bibliographies.
+* dvicopy: (web2c)dvicopy invocation.           Virtual font expansion
+* dvitomp: (web2c)dvitomp invocation.           DVI to MPX (MetaPost pictures).
+* dvitype: (web2c)dvitype invocation.           DVI to human-readable text.
+* gftodvi: (web2c)gftodvi invocation.           Generic font proofsheets.
+* gftopk: (web2c)gftopk invocation.             Generic to packed fonts.
+* gftype: (web2c)gftype invocation.             GF to human-readable text.
+* mf: (web2c)mf invocation.                     Creating typeface families.
+* mft: (web2c)mft invocation.                   Prettyprinting Metafont source.
+* mltex: (web2c)MLTeX.                          Multi-lingual TeX.
+* mpost: (web2c)mpost invocation.               Creating technical diagrams.
+* patgen: (web2c)patgen invocation.             Creating hyphenation patterns.
+* pktogf: (web2c)pktogf invocation.             Packed to generic fonts.
+* pktype: (web2c)pktype invocation.             PK to human-readable text.
+* pltotf: (web2c)pltotf invocation.             Property list to TFM.
+* pooltype: (web2c)pooltype invocation.         Display WEB pool files.
+* tangle: (web2c)tangle invocation.             WEB to Pascal.
+* tex: (web2c)tex invocation.                   Typesetting.
+* tftopl: (web2c)tftopl invocation.             TFM -> property list.
+* vftovp: (web2c)vftovp invocation.             Virtual font -> virtual pl.
+* vptovf: (web2c)vptovf invocation.             Virtual pl -> virtual font.
+* weave: (web2c)weave invocation.               WEB to TeX.
+END-INFO-DIR-ENTRY
+
+
+File: web2c.info,  Node: Top,  Next: Introduction,  Up: (dir)
+
+Web2c
+*****
+
+This document describes how to install and use the programs in the Web2c
+implementation of the TeX system, especially for Unix systems.  It
+corresponds to Web2c version 2016, released in April 2016.
+
+* Menu:
+
+* Introduction::                A brief introduction.
+* Installation::                How to compile and install Web2c.
+* Commonalities::               Option syntax, standard options, memory dumps.
+* TeX::                         Typesetting.
+* Metafont::                    Typeface design.
+* MetaPost::                    Technical illustrations.
+* BibTeX::                      Reusable bibliographies.
+* WEB::                         Literate programming.
+* DVI utilities::               DVI expansion.
+* Font utilities::              Font format conversion.
+* Legalisms::                   Blah blah blah.
+* References::                  Books and such.
+* Index::                       General index.
+
+
+File: web2c.info,  Node: Introduction,  Next: Installation,  Prev: Top,  Up: Top
+
+1 Introduction
+**************
+
+This manual corresponds to version 2016 of Web2c, released in April
+2016.
+
+   "Web2c" is the name of a TeX implementation, originally for Unix, but
+now also running under DOS, Amiga, and other operating systems.  By "TeX
+implementation", we mean all of the standard programs developed by the
+Stanford TeX project directed by Donald E. Knuth: Metafont, DVItype,
+GFtoDVI, BibTeX, Tangle, etc., as well as TeX itself.  Other programs
+are also included: DVIcopy, written by Peter Breitenlohner, MetaPost and
+its utilities (derived from Metafont), by John Hobby, etc.
+
+   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).  *Note
+(kpathsea)unixtex.ftp::, for the practical details of how to obtain
+Web2c.
+
+   Different parts of the Web2c distribution have different licensing
+terms, however, reflecting the different circumstances of their
+creation; consult each source file for exact details.  The main
+practical implication for redistributors of Web2c is that the
+executables are covered by the GNU General Public License, and therefore
+anyone who gets a binary distribution must also get the sources, as
+explained by the terms of the GPL (*note (kpathsea)Copying::).  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.  Dozens of other
+people have contributed; their names are listed in the 'ChangeLog'
+files.
+
+   Other acknowledgements: The University of Massachusetts at Boston
+(particularly 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.
+
+   Further reading: *Note References::.
+
+
+File: web2c.info,  Node: Installation,  Next: Commonalities,  Prev: Introduction,  Up: Top
+
+2 Installation
+**************
+
+(A copy of this chapter is in the distribution file 'web2c/INSTALL'.)
+
+   Installing Web2c is mostly the same as installing any other
+Kpathsea-using program.  Therefore, for the basic steps involved, see
+*note (kpathsea)Installation::.  (A copy is in the file
+'kpathsea/INSTALL'.)
+
+   One peculiarity to Web2c is that the source distribution comes in two
+files: 'web.tar.gz' and 'web2c.tar.gz'.  You must retrieve and unpack
+them both.  (We have two because the former archive contains the very
+large and seldom-changing original WEB source files.)  *Note
+(kpathsea)unixtex.ftp::.
+
+   Another peculiarity is the MetaPost program.  Although it has been
+installed previously as 'mp', as of Web2c 7.0 the installed name is now
+'mpost', to avoid conflict with the 'mp' program that does
+prettyprinting.  This approach was recommended by the MetaPost author,
+John Hobby.  If you as the TeX administrator wish to make it available
+under its shorter name as well, you will have to set up a link or some
+such yourself.  And of course individual users can do the same.
+
+   For solutions to common installation problems and information on how
+to report a bug, see the file 'kpathsea/BUGS' (*note (kpathsea)Bugs::).
+See also the Web2c home page, <http://www.tug.org/web2c>.
+
+   Points worth repeating:
+
+   * Before starting the standard compilation and installation you must
+     install the basic fonts, macros, and other library files.  *Note
+     (kpathsea)Installation::.
+
+   * If you do not wish to use the standard file locations, see *note
+     (kpathsea)Changing search paths::.
+
+   * Some Web2c features are enabled or disabled at 'configure' time, as
+     described in the first section below.
+
+* Menu:
+
+* configure options::           Especially -with and -enable.
+* Compile-time options::        Unusual -D's.
+* Additional targets::		Breaking down the task.
+* Triptrap::                    Running the torture tests.
+* Runtime options::             Array sizes and the like.
+
+
+File: web2c.info,  Node: configure options,  Next: Compile-time options,  Up: Installation
+
+2.1 'configure' options
+=======================
+
+This section gives pointers to descriptions of the '--with' and
+'--enable' 'configure' arguments that Web2c accepts.  Some are specific
+to Web2c, others are generic to all Kpathsea-using programs.
+
+   For a list of all the options 'configure' accepts, run 'configure
+--help'.  The generic options are listed first, and the package-specific
+options come last.
+
+   For a description of the generic options (which mainly allow you to
+specify installation directories) and basic 'configure' usage, see *note
+Running 'configure' scripts: (autoconf)Invoking configure, a copy is in
+the file 'kpathsea/CONFIGURE'.
+
+'--disable-dump-share'
+     Do not make fmt/base/mem files sharable across different endian
+     architectures.  *Note Hardware and memory dumps::.
+
+'--without-maketexmf-default'
+'--without-maketexpk-default'
+'--without-maketextfm-default'
+'--with-maketextex-default'
+     Enable or disable the dynamic generation programs.  *Note
+     (kpathsea)mktex configuration::.  The defaults are the inverse of
+     the options, i.e., everything is enabled except 'mktextex'.
+
+'--enable-shared'
+     Build Kpathsea as a shared library.  *Note (kpathsea)Shared
+     library::.
+
+'--with-editor=CMD'
+     Change the default editor invoked by the 'e' interactive command.
+     *Note Editor invocation::.
+
+'--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.  *Note Online Metafont graphics::.
+
+'--x-includes=DIR'
+'--x-libraries=DIR'
+     Define the locations of the X11 include files and libraries; by
+     default, 'configure' does its best to guess).  *Note
+     (autoconf)Optional Features::.  A copy is in 'kpathsea/CONFIGURE'.
+
+
+File: web2c.info,  Node: Compile-time options,  Next: Additional targets,  Prev: configure options,  Up: Installation
+
+2.2 Compile-time options
+========================
+
+In addition to the 'configure' options listed in the previous section,
+there are a few things that can be affected at compile-time with C
+definitions, rather than with 'configure'.  Using any of these is
+unusual.
+
+   To specify extra compiler flags ('-DNAME' in this case), the simplest
+thing to do is:
+     make XCFLAGS="CCOPTIONS"
+You can also set the 'CFLAGS' environment variable before running
+'configure'.  *Note (kpathsea)configure environment::.
+
+   Anyway, here are the possibilities:
+
+'-DFIXPT'
+'-DNO_MF_ASM'
+     Use the original WEB fixed-point routines for Metafont and MetaPost
+     arithmetic 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.  *Note IPC
+     and TeX: IPC and TeX.
+
+
+File: web2c.info,  Node: Additional targets,  Next: Triptrap,  Prev: Compile-time options,  Up: Installation
+
+2.3 Additional targets
+======================
+
+Web2c has several Make targets besides the standard ones.  You can
+invoke these either in the top level directory of the source
+distribution (the one containing 'kpathsea/' and 'web2c/'), or in the
+'web2c/' directory.
+
+'c-sources'
+     Make only the C files, translated from the Web sources, presumably
+     because you want to take them to a non-Unix machine.
+
+'formats'
+'install-formats'
+     Make or install all the memory dumps (*note Memory dumps::).  By
+     default, the standard plain formats plus 'latex.fmt' are made.  You
+     can add other formats by redefining the 'fmts', 'bases', and 'mems'
+     variables.  See the top of 'web2c/Makefile' for the possibilities.
+
+'fmts'
+'install-fmts'
+     Make or install the TeX '.fmt' files.  *Note Initial TeX::.
+
+'bases'
+'install-bases'
+
+     Make or install the Metafont '.base' files.  *Note Initial
+     Metafont::.
+
+'mems'
+'install-mems'
+     Make or install the MetaPost '.mem' files.  *Note Initial
+     MetaPost::.
+
+'triptrap'
+'trip'
+'trap'
+'mptrap'
+     To run the torture tests for TeX, Metafont, and MetaPost
+     (respectively).  See the next section.
+
+
+File: web2c.info,  Node: Triptrap,  Next: Runtime options,  Prev: Additional targets,  Up: Installation
+
+2.4 Trip, trap, and mptrap: Torture tests
+=========================================
+
+To validate your TeX, Metafont, and MetaPost executables, run 'make
+triptrap'.  This runs the trip, trap, and mptrap "torture tests".  See
+the files 'triptrap/tripman.tex', 'triptrap/trapman.tex', and
+'triptrap/mptrap.readme' for detailed information and background on the
+tests.
+
+   The differences between your executables' behavior and the standard
+values will show up on your terminal.  The usual differences (these are
+all acceptable) are:
+
+   * string usage and table sizes;
+   * glue set ratios;
+   * 'down4', 'right4', and 'y4' commands in DVItype output;
+   * dates and times.
+
+Any other differences are trouble.  The most common culprit in the past
+has been compiler bugs, especially when optimizing.  *Note TeX or
+Metafont failing: (kpathsea)TeX or Metafont failing.
+
+   The files 'trip.diffs', 'mftrap.diffs', and 'mptrap.diffs' in the
+'triptrap' directory show the standard diffs against the original
+output.  If you diff your diffs against these files, you should come up
+clean.  For example
+     make trip >&mytrip.diffs
+     diff triptrap/trip.diffs mytrip.diffs
+
+   To run the tests separately, use the targets 'trip', 'trap', and
+'mptrap'.
+
+   To run simple tests for all the programs as well as the torture
+tests, run 'make check'.  You can compare the output to the distributed
+file 'tests/check.log' if you like.
+
+
+File: web2c.info,  Node: Runtime options,  Prev: Triptrap,  Up: Installation
+
+2.5 Runtime options
+===================
+
+Besides the configure- and compile-time options described in the
+previous sections, you can control a number of parameters (in
+particular, array sizes) in the 'texmf.cnf' runtime file read by
+Kpathsea (*note (kpathsea)Config files::).
+
+   Rather than exhaustively listing them here, please see the last
+section of the distributed 'kpathsea/texmf.cnf'.  Some of the more
+interesting values:
+
+'main_memory'
+     Total words of memory available, for TeX, Metafont, and MetaPost.
+     Must remake the format file after changing.
+
+'extra_mem_bot'
+     Extra space for "large" TeX data structures: boxes, glue,
+     breakpoints, et al.  If you use PiCTeX, you may well want to set
+     this.
+
+'font_mem_size'
+     Words of font info available for TeX; this is approximately the
+     total size of all TFM files read.
+
+'hash_extra'
+     Additional space for the hash table of control sequence names.
+     Approximately 10,000 control sequences can be stored in the main
+     hash table; if you have a large book with numerous
+     cross-references, this might not be enough, and thus you will want
+     to set 'hash_extra'.
+
+   Of course, ideally all arrays would be dynamically expanded as
+necessary, so the only limiting factor would be the amount of swap space
+available.  Unfortunately, implementing this is extremely difficult, as
+the fixed size of arrays is assumed in many places throughout the source
+code.  These runtime limits are a practical compromise between the
+compile-time limits in previous versions, and truly dynamic arrays.  (On
+the other hand, the Web2c BibTeX implementation does do dynamic
+reallocation of some arrays.)
+
+
+File: web2c.info,  Node: Commonalities,  Next: TeX,  Prev: Installation,  Up: Top
+
+3 Commonalities
+***************
+
+Many aspects of the TeX system are the same among more than one program,
+so we describe all those pieces together, here.
+
+* Menu:
+
+* Option conventions::   - or -, = or ' ' for values.
+* Common options::       -help -version -verbose, and TeX/MF/MP options.
+* Path searching::       Features of the common path searching library.
+* Output file location:: TEXMFOUTPUT allows output in places other than '.'.
+* Three programs::       TeX, Metafont, and MetaPost have a lot in common.
+
+
+File: web2c.info,  Node: Option conventions,  Next: Common options,  Up: Commonalities
+
+3.1 Option conventions
+======================
+
+To provide a clean and consistent behavior, we chose to have all these
+programs use the GNU function 'getopt_long_only' to parse command lines.
+However, we do use in a restricted mode, where all the options have to
+come before the rest of the arguments.
+
+   As a result, you can:
+   * use '-' or '--' to start an option name;
+
+   * use any unambiguous abbreviation for an option name;
+
+   * separate option names and values with either '=' or one or more
+     spaces;
+
+   * use filenames that would otherwise look like options by putting
+     them after an option '--'.
+
+   By convention, non-option arguments, if specified, generally define
+the name of an input file, as documented for each program.
+
+   If a particular option with a value is given more than once, it is
+the last value that counts.
+
+   For example, the following command line specifies the options 'foo',
+'bar', and 'verbose'; gives the value 'baz' to the 'abc' option, and the
+value 'xyz' to the 'quux' option; and specifies the filename '-myfile-'.
+
+     -foo --bar -verb -abc=baz -quux karl --quux xyz -- -myfile-
+
+
+File: web2c.info,  Node: Common options,  Next: Path searching,  Prev: Option conventions,  Up: Commonalities
+
+3.2 Common options
+==================
+
+All of these programs accept the standard GNU '--help' and '--version'
+options, and several programs accept '--verbose'.  Rather than writing
+identical descriptions for every program, they are described here.
+
+'--help'
+     Print a usage message listing basic usage and all available options
+     to standard output, then exit successfully.
+
+'--verbose'
+     Print progress reports to standard output.
+
+'--version'
+     Print the version number to standard output, then exit
+     successfully.
+
+   TeX, Metafont, and MetaPost have a number of additional options in
+common:
+
+'-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).  *Note Memory dumps::.
+     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 (*note Initial and
+     virgin::).  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
+     (*note (kpathsea)Debugging::).  You can also specify this in
+     'KPATHSEA_DEBUG' environment variable (for all Web2c programs).
+     (The command line value overrides.)  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.  *Note Output file location::.
+
+'-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 (*note (kpathsea)Config
+     files::).  Using this option is equivalent to making a link named
+     STRING to the binary and then invoking the binary under that name.
+     *Note Memory dumps::.
+
+'-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 (*note Output file location::).  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.  *Note TCX files::.
+
+'-8bit'
+     This option specifies that by default all characters should be
+     considered printable.  If '-translate-file' was given as well, then
+     the TCX file may mark characters as non-printable.
+
+
+File: web2c.info,  Node: Path searching,  Next: Output file location,  Prev: Common options,  Up: Commonalities
+
+3.3 Path searching
+==================
+
+All of the Web2c programs, including TeX, which do path searching use
+the Kpathsea routines to do so.  The precise names of the environment
+and configuration file variables which get searched for particular file
+formatted are therefore documented in the Kpathsea manual (*note
+(kpathsea)Supported file formats::).  Reading 'texmf.cnf' (*note
+(kpathsea)Config files::), invoking 'mktex...' scripts (*note
+(kpathsea)mktex scripts::), and so on are all handled by Kpathsea.
+
+   The programs which read fonts make use of another Kpathsea feature:
+'texfonts.map', which allows arbitrary aliases for the actual names of
+font files; for example, 'Times-Roman' for 'ptmr8r.tfm'.  The
+distributed (and installed by default) 'texfonts.map' includes aliases
+for many widely available PostScript fonts by their PostScript names.
+
+
+File: web2c.info,  Node: Output file location,  Next: Three programs,  Prev: Path searching,  Up: Commonalities
+
+3.4 Output file location
+========================
+
+All the programs generally follow the usual convention for output files.
+Namely, they are placed in the directory current when the program is
+run, regardless of any input file location; or, in a few cases, output
+is to standard output.
+
+   For example, if you run 'tex /tmp/foo', for example, the output will
+be in './foo.dvi' and './foo.log', not '/tmp/foo.dvi' and
+'/tmp/foo.log'.
+
+   You can use the '-output-directory' option to cause all output files
+that would normally be written in the current directory to be written in
+the specified directory instead.  *Note Common options::.
+
+   If the current directory is not writable, and '-output-directory' is
+not specified, the main programs (TeX, Metafont, MetaPost, and BibTeX)
+make an exception: if the config file or environment variable value
+'TEXMFOUTPUT' is set (it is not by default), output files are written to
+the directory specified.
+
+   'TEXMFOUTPUT' is also checked for input files, as TeX often generates
+files that need to be subsequently read; for input, no suffixes (such as
+'.tex') are added by default and no exhaustive path searching is done,
+the input name is simply checked as given.
+
+
+File: web2c.info,  Node: Three programs,  Prev: Output file location,  Up: Commonalities
+
+3.5 Three programs: Metafont, MetaPost, and TeX
+===============================================
+
+TeX, Metafont, and MetaPost have a number of features in common.
+Besides the ones here, the common command-line options are described in
+the previous section.  The configuration file options that let you
+control some array sizes and other features are described in *note
+Runtime options::.
+
+* Menu:
+
+* Initial and virgin::          Making memory dumps vs. production runs.
+* Memory dumps::                .fmt/.base files for fast startup.
+* Editor invocation::           The 'e' response at errors.
+* \input filenames::            ~ and $ expansion in TeX/MF/MP.
+
+
+File: web2c.info,  Node: Initial and virgin,  Next: Memory dumps,  Up: Three programs
+
+3.5.1 Initial and virgin
+------------------------
+
+The TeX and Metafont programs each have two main variants, called
+"initial" and "virgin".  MetaPost no longer makes this distinction.
+
+   The initial form is enabled if:
+  1. the '-ini' option was specified; or
+  2. the program name is 'initex' resp. 'inimf'; or
+  3. the first line of the main input file is '%&ini';
+otherwise, the virgin form is used.
+
+   The "virgin" form is the one generally invoked for production use.
+The first thing it does is read a memory dump (*note Determining the
+memory dump to use::), and then proceeds on with the main job.
+
+   The "initial" form is generally used only to create memory dumps (see
+the next section).  It starts up more slowly than the virgin form,
+because it must do lengthy initializations that are encapsulated in the
+memory dump file.
+
+
+File: web2c.info,  Node: Memory dumps,  Next: Editor invocation,  Prev: Initial and virgin,  Up: Three programs
+
+3.5.2 Memory dumps
+------------------
+
+In typical use, TeX and Metafont require a large number of macros to be
+predefined; therefore, they support "memory dump" files, which can be
+read much more efficiently than ordinary source code.
+
+* Menu:
+
+* Creating memory dumps::
+* Determining the memory dump to use::
+* Hardware and memory dumps::
+
+
+File: web2c.info,  Node: Creating memory dumps,  Next: Determining the memory dump to use,  Up: Memory dumps
+
+3.5.2.1 Creating memory dumps
+.............................
+
+The programs all create memory dumps in slightly idiosyncratic (thought
+substantially similar) way, so we describe the details in separate
+sections (references below).  The basic idea is to run the initial
+version of the program (*note Initial and virgin::), read the source
+file to define the macros, and then execute the '\dump' primitive.
+
+   Also, each program uses a different filename extension for its memory
+dumps, since although they are completely analogous they are not
+interchangeable (TeX cannot read a Metafont memory dump, for example).
+
+   Here is a list of filename extensions with references to examples of
+creating memory dumps:
+
+TeX
+     ('.fmt') *Note Initial TeX: Initial TeX.
+
+Metafont
+     ('.base') *Note Initial Metafont::.
+
+   When making memory dumps, the programs read environment variables and
+configuration files for path searching and other values as usual.  If
+you are making a new installation and have environment variables
+pointing to an old one, for example, you will probably run into
+difficulties.
+
+
+File: web2c.info,  Node: Determining the memory dump to use,  Next: Hardware and memory dumps,  Prev: Creating memory dumps,  Up: Memory dumps
+
+3.5.2.2 Determining the memory dump to use
+..........................................
+
+The virgin form (*note Initial and virgin::) of each program always
+reads a memory dump before processing normal source input.  All three
+programs determine the memory dump to use in the same way:
+
+  1. If the first non-option command-line argument begins with '&', the
+     program uses the remainder of that argument as the memory dump
+     name.  For example, running 'tex \&super' reads 'super.fmt'.  (The
+     backslash protects the '&' against interpretation by the shell.)
+
+  2. If the '-fmt' resp. '-base' option is specified, its value is used.
+
+  3. If the '-progname' option is specified, its value is used.
+
+  4. If the first line of the main input file (which must be specified
+     on the command line, not in response to '**') is '%&DUMP', and DUMP
+     is an existing memory dump of the appropriate type, DUMP is used.
+
+     The first line of the main input file can also specify which
+     character translation file is to be used:
+     '%&-translate-file=TCXFILE' (*note TCX files::).
+
+     These two roles can be combined: '%&DUMP -translate-file=TCXFILE'.
+     If this is done, the name of the dump must be given first.
+
+  5. Otherwise, the program uses the program invocation name, most
+     commonly 'tex' resp. 'mf'.  For example, if 'latex' is a link to
+     'tex', and the user runs 'latex foo', 'latex.fmt' will be used.
+
+
+File: web2c.info,  Node: Hardware and memory dumps,  Prev: Determining the memory dump to use,  Up: Memory dumps
+
+3.5.2.3 Hardware and memory dumps
+.................................
+
+By default, memory dump files are generally sharable between
+architectures of different types; specifically, on machines of different
+endianness (*note (libc)Byte order::).  (This is a feature of the Web2c
+implementation, and is not true of all TeX implementations.)  If you
+specify '--disable-dump-share' to 'configure', however, memory dumps
+will be endian-dependent.
+
+   The reason to do this is speed.  To achieve endian-independence, the
+reading of memory dumps on LittleEndian architectures, such as PC's and
+DEC architectures, is somewhat slowed (all the multibyte values have to
+be swapped).  Usually, this is not noticeable, and the advantage of
+being able to share memory dumps across all platforms at a site far
+outweighs the speed loss.  But if you're installing Web2c for use on
+LittleEndian machines only, perhaps on a PC being used only by you, you
+may wish to get maximum speed.
+
+   TeXnically, even without '--disable-dump-share', sharing of '.fmt'
+files cannot be guaranteed to work.  Floating-point values are always
+written in native format, and hence will generally not be readable
+across platforms.  Fortunately, TeX uses floating point only to
+represent glue ratios, and all common formats (plain, LaTeX, AMSTeX,
+...) do not do any glue setting at '.fmt'-creation time.  Metafont does
+not use floating point in any dumped value at all.
+
+   Incidentally, different memory dump files will never compare equal
+byte-for-byte, because the program always dumps the current date and
+time.  So don't be alarmed by just a few bytes difference.
+
+   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.  (*note
+References::).
+
+     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");
+
+       exit (u.c[sizeof (long) - 1] == 1);
+     }
+
+
+File: web2c.info,  Node: Editor invocation,  Next: \input filenames,  Prev: Memory dumps,  Up: Three programs
+
+3.5.3 Editor invocation
+-----------------------
+
+TeX, Metafont, and MetaPost all (by default) stop and ask for user
+intervention at an error.  If the input came from a file, and the user
+responds with 'e' or 'E', the program invokes an editor.
+
+   Specifying '--with-editor=CMD' to 'configure' sets the default editor
+command string to CMD.  The environment variables/configuration values
+'TEXEDIT', 'MFEDIT', and 'MPEDIT' (respectively) override this.  If
+'--with-editor' is not specified, the default is 'vi +%d %s' on Unix,
+and an invocation of the TeXworks editor on Windows.  (See 'texmf.cnf'
+for the precise values.)
+
+   In this string, '%d' is replaced by the line number of the error, and
+'%s' is replaced by the name of the current input file.
+
+
+File: web2c.info,  Node: \input filenames,  Prev: Editor invocation,  Up: Three programs
+
+3.5.4 '\input' filenames
+------------------------
+
+TeX, Metafont, and MetaPost source programs can all read other source
+files with the '\input' (TeX) and 'input' (MF and MP) primitives:
+     \input NAME % in TeX
+
+   The file NAME can always be terminated with whitespace; for Metafont
+and MetaPost, the statement terminator ';' also works.  (LaTeX and other
+macro packages provide other interfaces to '\input' that allow different
+notation; here we are concerned only with the primitive operation.)
+
+   As of Web2c version 7.5.3, double-quote characters can be used to
+include spaces or other special cases.  In typical use, the '"'
+characters surround the entire filename:
+     \input "filename with spaces"
+
+   Technically, the quote characters can be used inside the name, and
+can enclose any characters, as in:
+     \input filename" "with" "spaces
+
+   One more point.  In LaTeX, the quotes are needed inside the braces,
+thus
+     \input{a b}    % fails
+     \input{"a b"}  % ok
+
+   This quoting mechanism comes into play _after_ TeX has tokenized and
+expanded the input.  So, multiple spaces and tabs may be seen as a
+single space, active characters such as '~' are expanded first, and so
+on.  (See below.)
+
+   On the other hand, various C library routines and Unix itself use the
+null byte (character code zero, ASCII NUL) to terminate strings.  So
+filenames in Web2c cannot contain nulls, even though TeX itself does not
+treat NUL specially.  In addition, some older Unix variants do not allow
+eight-bit characters (codes 128-255) in filenames.
+
+   For maximal portability of your document across systems, use only the
+characters 'a'-'z', '0'-'9', and '.', and restrict your filenames to at
+most eight characters (not including the extension), and at most a
+three-character extension.  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 and older versions of
+Web2c.  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, 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, AMSTeX), the
+characters '~' and '$' have special category codes, so to actually use
+these in a document you have to change their catcodes or use '\string'.
+(The result is unportable anyway, see the suggestions above.)  The place
+where they are most likely to be useful is when typing interactively.
+
+
+File: web2c.info,  Node: TeX,  Next: Metafont,  Prev: Commonalities,  Up: Top
+
+4 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' (*note References::).
+Many other books on TeX, introductory and otherwise, are available.
+
+* Menu:
+
+* tex invocation::              Invoking TeX.
+* Initial TeX::                 Making format files.
+* Formats::                     Major TeX macro packages.
+* Languages and hyphenation::   TeX supports many human languages.
+* Shell escapes::               Running subprograms from TeX.
+* IPC and TeX::                 DVI output to a socket.
+* TeX extensions::              Changes to the TeX language.
+
+
+File: web2c.info,  Node: tex invocation,  Next: Initial TeX,  Up: TeX
+
+4.1 'tex' invocation
+====================
+
+TeX (usually invoked as 'tex') formats the given text and commands, and
+outputs a corresponding device-independent representation of the typeset
+document.  This section merely describes the options available in the
+Web2c implementation.  For a complete description of the TeX typesetting
+language, see 'The TeXbook' (*note References::).
+
+   TeX, Metafont, and MetaPost process the command line (described here)
+and determine their memory dump (fmt) file in the same way (*note Memory
+dumps::).  Synopses:
+
+     tex [OPTION]... [TEXNAME[.tex]] [TEX-COMMANDS]
+     tex [OPTION]... \FIRST-LINE
+     tex [OPTION]... &FMT ARGS
+
+   TeX searches the usual places for the main input file TEXNAME (*note
+(kpathsea)Supported file formats::), extending TEXNAME with '.tex' if
+necessary.  To see all the relevant paths, set the environment variable
+'KPATHSEA_DEBUG' to '-1' before running the program.
+
+   After TEXNAME is read, TeX processes any remaining TEX-COMMANDS on
+the command line as regular TeX input.  Also, if the first non-option
+argument begins with a TeX escape character (usually '\'), TeX processes
+all non-option command-line arguments as a line of regular TeX input.
+
+   If no arguments or options are specified, TeX prompts for an input
+file name with '**'.
+
+   TeX writes the main DVI output to the file 'BASETEXNAME.dvi', where
+BASETEXNAME is the basename of TEXNAME, or 'texput' if no input file was
+specified.  A DVI file is a device-independent binary representation of
+your TeX document.  The idea is that after running TeX, you translate
+the DVI file using a separate program to the commands for a particular
+output device, such as a PostScript printer (*note Introduction:
+(dvips)Top.) or an X Window System display (see xdvi(1)).
+
+   TeX also reads TFM files for any fonts you load in your document with
+the '\font' primitive.  By default, it runs an external program named
+'mktextfm' to create any nonexistent TFM files.  You can disable this at
+configure-time or runtime (*note (kpathsea)mktex configuration::).  This
+is enabled mostly for the sake of the EC fonts, which can be generated
+at any size.
+
+   TeX can write output files, via the '\openout' primitive; this opens
+a security hole vulnerable to Trojan horse attack: an unwitting user
+could run a TeX program that overwrites, say, '~/.rhosts'.  (MetaPost
+has a 'write' primitive with similar implications).  To alleviate this
+and similar problems the functions 'kpathsea_out_name_ok' and
+'kpathsea_in_name_ok' from the Kpathse library (*note (kpathsea)Calling
+sequence::) are used to determine if a given filename is acceptable to
+be opened for output or input, depending on the setting of the
+configuration variables 'openout_any' and 'openin_any': 'a' (for "any",
+the default for 'openin_any'), 'r' (for "restricted"), or 'p' (for
+"paranoid", the default for 'openout_any').
+
+   In any case, all '\openout' filenames are recorded in the log file,
+except those opened on the first line of input, which is processed when
+the log file has not yet been opened.
+
+   The program accepts the following options, as well as the standard
+'-help' and '-version' (*note Common options::):
+'-enc'
+'-[no]-file-line-error'
+'-fmt=FMTNAME'
+'-halt-on-error'
+'-ini'
+'-interaction=STRING'
+'-ipc'
+'-ipc-start'
+'-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.  *Note
+     Common options::.
+
+'-enc'
+     Enable encTeX extensions, such as '\mubyte'.  This can be used to
+     support Unicode UTF-8 input encoding.  See
+     <http://www.olsak.net/enctex.html>.
+
+'-ipc'
+'-ipc-start'
+     With either option, TeX writes its DVI output to a socket as well
+     as to the usual '.dvi' file.  With '-ipc-start', TeX also opens a
+     server program at the other end to read the output.  *Note IPC and
+     TeX: IPC and TeX.
+
+     These options are available only if the '--enable-ipc' option was
+     specified to 'configure' during installation of Web2c.
+
+'-mktex=FILETYPE'
+'-no-mktex=FILETYPE'
+     Turn on or off the 'mktex' script associated with FILETYPE.  For
+     TeX proper, FILETYPE can only be 'tex' and 'tfm', but for pdfTeX
+     and luaTeX, it can also be 'pk'.
+
+'-mltex'
+     If we are 'INITEX' (*note Initial and virgin::), enable MLTeX
+     extensions such as '\charsubdef'.  Implicitly set if the program
+     name is 'mltex'.  *Note MLTeX: MLTeX.
+
+'-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.  *Note Shell escapes::.
+
+'-enable-write18'
+'-disable-write18'
+     Synonyms for '-shell-escape' and '-no-shell-escape', for
+     compatibility with MiKTeX.  (MiKTeX also accepts both pairs of
+     options.)  *Note Shell escapes::.
+
+'-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 file name and line number.
+
+     Using the first form of this option, the '\special' commands are
+     inserted automatically.
+
+     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.
+
+
+File: web2c.info,  Node: Initial TeX,  Next: Formats,  Prev: tex invocation,  Up: TeX
+
+4.2 Initial TeX
+===============
+
+The "initial" form of TeX is invoked by 'tex -ini'.  It does lengthy
+initializations avoided by the "virgin" ('vir') form, so as to be
+capable of dumping '.fmt' files (*note Memory dumps::).  For a detailed
+comparison of virgin and initial forms, *note Initial and virgin::.
+
+   For a list of options and other information, *note tex invocation::.
+
+   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, *note Memory
+dumps::).  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 instructions that come with the format should explain.
+The top-level 'web2c' Makefile has targets for making most common
+formats: plain latex amstex texinfo eplain.  *Note Formats::, for more
+details on TeX formats.
+
+
+File: web2c.info,  Node: Formats,  Next: Languages and hyphenation,  Prev: Initial TeX,  Up: TeX
+
+4.3 Formats
+===========
+
+TeX "formats" are large collections of macros, often dumped into a
+'.fmt' file (*note Memory dumps::) by 'tex -ini' (*note Initial TeX::).
+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.
+
+   You can get the latest versions of most of these formats from the
+CTAN archives in subdirectories of 'CTAN:/macros' (for CTAN info, *note
+(kpathsea)unixtex.ftp::).  The archive
+<ftp://ftp.tug.org/tex/lib.tar.gz> (also available from CTAN) contains
+most of these formats (although perhaps not the absolute latest
+version), among other things.
+
+latex
+     The most widely used format.  The current release is named 'LaTeX
+     2e'; 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 10pt
+     Computer Modern italic font".  The LaTeX home page:
+     <http://www.latex-project.org>.
+
+context
+     ConTeXt is an independent macro package which has a basic document
+     structuring 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 package for authors who prefer LaTeX.
+     Taken together, they are used to produce nearly all AMS
+     publications, e.g., 'Mathematical Reviews'.  The AMSTeX home page:
+     <http://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 plain text, a machine-readable on-line
+     format called 'info', HTML, etc.  The Texinfo home page:
+     <http://www.gnu.org/software/texinfo>.
+
+eplain
+     The "expanded plain" format provides various common features (e.g.,
+     symbolic 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:
+     <http://www.tug.org/eplain>.
+
+slitex
+     An obsolete LaTeX 2.09 format for making slides.  It is replaced by
+     the 'slides' document class, along with the 'beamer', 'texpower',
+     and other packages.
+
+
+File: web2c.info,  Node: Languages and hyphenation,  Next: Shell escapes,  Prev: Formats,  Up: TeX
+
+4.4 Languages and hyphenation
+=============================
+
+TeX supports most natural languages.  See also *note TeX extensions: TeX
+extensions.
+
+* Menu:
+
+* MLTeX::                Multi-lingual TeX.
+* TCX files::            Support for different character sets & fonts.
+* patgen invocation::    Creating hyphenation patterns.
+
+
+File: web2c.info,  Node: MLTeX,  Next: TCX files,  Up: Languages and hyphenation
+
+4.4.1 MLTeX: Multi-lingual TeX
+------------------------------
+
+Multi-lingual TeX ('mltex') is an extension of TeX originally written by
+Michael Ferguson and now updated and maintained by Bernd Raichle.  It
+allows the use of non-existing glyphs in a font by declaring glyph
+substitutions.  These are restricted to substitutions of an accented
+character glyph, which need not be defined in the current font, by its
+appropriate '\accent' construction using a base and accent character
+glyph, which do have to exist in the current font.  This substitution is
+automatically done behind the scenes, if necessary, and thus MLTeX
+additionally supports hyphenation of words containing an accented
+character glyph for fonts missing this glyph (e.g., Computer Modern).
+Standard TeX suppresses hyphenation in this case.
+
+   MLTeX works at '.fmt'-creation time: the basic idea is to specify the
+'-mltex' option to TeX when you '\dump' a format.  Then, when you
+subsequently invoke TeX and read that '.fmt' file, the MLTeX features
+described below will be enabled.
+
+   Generally, you use special macro files to create an MLTeX '.fmt'
+file.
+
+   The sections below describe the two new primitives that MLTeX
+defines.  Aside from these, MLTeX is completely compatible with standard
+TeX.
+
+* Menu:
+
+* \charsubdef::                 Character substitution definitions.
+* \tracingcharsubdef::          Tracing substitutions.
+
+
+File: web2c.info,  Node: \charsubdef,  Next: \tracingcharsubdef,  Up: MLTeX
+
+4.4.1.1 '\charsubdef': Character substitutions
+..............................................
+
+The most important primitive MLTeX adds is '\charsubdef', used in a way
+reminiscent of '\chardef':
+     \charsubdef COMPOSITE [=] ACCENT BASE
+
+   Each of COMPOSITE, ACCENT, and BASE are font glyph numbers, expressed
+in the usual TeX syntax: `\e symbolically, '145 for octal, "65 for hex,
+101 for decimal.
+
+   MLTeX's '\charsubdef' declares how to construct an accented character
+glyph (not necessarily existing in the current font) using two character
+glyphs (that do exist).  Thus it defines whether a character glyph code,
+either typed as a single character or using the '\char' primitive, will
+be mapped to a font glyph or to an '\accent' glyph construction.
+
+   For example, if you assume glyph code 138 (decimal) for an
+e-circumflex 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.)
+
+
+File: web2c.info,  Node: \tracingcharsubdef,  Prev: \charsubdef,  Up: MLTeX
+
+4.4.1.2 '\tracingcharsubdef': Substitution diagnostics
+......................................................
+
+To help diagnose problems with '\charsubdef', MLTeX provides a new
+primitive parameter, '\tracingcharsubdef'.  If positive, every use of
+'\charsubdef' will be reported.  This can help track down when a
+character is redefined.
+
+   In addition, if the TeX parameter '\tracinglostchars' is 100 or more,
+the character substitutions actually performed at '\shipout'-time will
+be recorded.
+
+
+File: web2c.info,  Node: TCX files,  Next: patgen invocation,  Prev: MLTeX,  Up: Languages and hyphenation
+
+4.4.2 TCX files: Character translations
+---------------------------------------
+
+TCX (TeX character translation) files help TeX support direct input of
+8-bit international characters if fonts containing those characters are
+being used.  Specifically, they map an input (keyboard) character code
+to the internal TeX character code (a superset of ASCII).
+
+   Of the various proposals for handling more than one input encoding,
+TCX files were chosen because they follow Knuth's original ideas for the
+use of the 'xchr' and 'xord' tables.  He ventured that these would be
+changed in the WEB source in order to adjust the actual version to a
+given environment.  It turns out, however, that recompiling the WEB
+sources is not as simple a task as Knuth may have imagined; therefore,
+TCX files, providing the possibility of changing of the conversion
+tables on on-the-fly, have been implemented instead.
+
+   This approach limits the portability of TeX documents, as some
+implementations do not support it (or use a different method for
+input-internal reencoding).  It may also be problematic to determine the
+encoding to use for a TeX document of unknown provenance; in the worst
+case, failure to do so correctly may result in subtle errors in the
+typeset output.  But we feel the benefits outweigh these disadvantages.
+
+   This is entirely independent of the MLTeX extension (*note MLTeX::):
+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 (*note Initial TeX: Initial TeX.) 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.
+
+   By default, no characters are translated, and character codes between
+32 and 126 inclusive (decimal) are printable.
+
+   Specifying translations for the printable ASCII characters (codes
+32-127) will yield unpredictable 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.
+
+
+File: web2c.info,  Node: patgen invocation,  Prev: TCX files,  Up: Languages and hyphenation
+
+4.4.3 Patgen: Creating hyphenation patterns
+-------------------------------------------
+
+Patgen creates hyphenation patterns from dictionary files for use with
+TeX.  Synopsis:
+
+     patgen DICTIONARY PATTERNS OUTPUT TRANSLATE
+
+   Each argument is a filename.  No path searching is done.  The output
+is written to the file OUTPUT.
+
+   In addition, Patgen prompts interactively for other values.
+
+   For more information, see 'Word hy-phen-a-tion by com-puter' by Frank
+Liang (*note References::), and also the 'patgen.web' source file.
+
+   The only options are '-help' and '-version' (*note Common options::).
+
+
+File: web2c.info,  Node: Shell escapes,  Next: IPC and TeX,  Prev: Languages and hyphenation,  Up: TeX
+
+4.5 Shell escapes
+=================
+
+TeX can execute "shell escapes", that is, arbitrary shell commands.
+Although tremendously useful, this also has obvious security
+implications.  Therefore, as of TeX Live 2009, a "restricted" mode for
+shell escapes is the default mode of operation, which allows executing
+only certain commands, as specified in the 'texmf.cnf' configuration
+file.
+
+   * Unrestricted shell escapes are allowed if the option
+     '--shell-escape' is specified, or if the environment variable or
+     config file value 'shell_escape' is set to 't' or 'y' and '1'.
+
+   * Restricted shell escapes are allowed if 'shell_escape' is set to
+     'p'.  This is the default.
+
+   * Shell escapes are completely disabled if '--no-shell-escape' is
+     specified, or if 'shell_escape' is set to anything else.
+
+   When enabled, the TeX construct to execute a system command is
+'\write18{SHELL-COMMAND}'; for example:
+
+     \write18{echo "hello, world"}
+
+   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.  Care is also
+taken on Windows to avoid additional expansions (from, e.g., `...`).
+Mismatched quotation marks in the command string result in a diagnostic
+message in the log file; 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 looks like this, but with more commands included:
+
+     shell_escape_commands = bibtex,dvips,epstopdf,...,tex
+
+   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 such
+environments as CGI scripts or wikis where the input has to be
+considered untrustworthy, shell escapes should be completely disabled.
+
+
+File: web2c.info,  Node: IPC and TeX,  Next: TeX extensions,  Prev: Shell escapes,  Up: TeX
+
+4.6 IPC and TeX
+===============
+
+(If anyone uses this feature and needs documentation, write
+<tex-k at tug.org>.)
+
+   This functionality is available only if the '--enable-ipc' option was
+specified to 'configure' during installation of Web2c (*note
+Installation::).
+
+   If you define 'IPC_DEBUG' before compilation (e.g., with 'make
+XCFLAGS=-DIPC_DEBUG'), TeX will print messages to standard error about
+its socket operations.  This may be helpful if you are, well, debugging.
+
+
+File: web2c.info,  Node: TeX extensions,  Prev: IPC and TeX,  Up: TeX
+
+4.7 TeX extensions
+==================
+
+The base TeX program has been extended in many ways.  Here's a partial
+list.
+
+e-TeX
+     Adds many new primitives, including right-to-left typesetting and
+     more registers.  Now frozen.
+
+Aleph
+     This adds Unicode support, right-to-left typesetting, and more.
+     Omega was the original program.  Aleph is an updated version with a
+     variety of bug fixes, and includes e-TeX.  Aleph is not actively
+     maintained.
+
+pdfTeX
+     Can produce PDF as well as DVI files.  It also incorporates the
+     e-TeX extensions, new primitives for hypertext and
+     micro-typography, reading/writing from pipes, and much more.  Home
+     page: <http://pdftex.org>.
+
+luaTeX
+     Based on pdfTeX, this also embeds the Lua programming language
+     (<http://lua.org>) and opens up the TeX typesetting engine to
+     control from Lua.  Home page: <http://luatex.org>.
+
+XeTeX
+     Combines support for Unicode input and OpenType- and system fonts
+     with the capabilities of pdfTeX.  Home page:
+     <http://tug.org/xetex>.
+
+
+File: web2c.info,  Node: Metafont,  Next: MetaPost,  Prev: TeX,  Up: Top
+
+5 Metafont: Creating typeface families
+**************************************
+
+Metafont is a system for producing shapes; it was designed for producing
+complete typeface families, but it can also produce geometric designs,
+dingbats, etc.  And it has considerable mathematical and
+equation-solving capabilities which can be useful entirely on their own.
+
+   Metafont is a batch language, like C or Pascal: you compile a
+Metafont program into a corresponding font, rather than interactively
+drawing lines or curves.  This approach has both considerable
+disadvantages (people unfamiliar with conventional programming languages
+will be unlikely to find it usable) and considerable advantages (you can
+make your design intentions specific and parameterizable).  For a
+complete description of the Metafont language, see 'The METAFONTbook'
+(*note References::).
+
+* Menu:
+
+* mf invocation::               Invoking Metafont.
+* Initial Metafont::            Making bases.
+* Modes::                       Device definitions for Metafont.
+* Online Metafont graphics::    Seeing MF output online.
+* gftodvi invocation::          Making proofsheets for fonts.
+* mft invocation::              Prettyprinting Metafont sources.
+
+
+File: web2c.info,  Node: mf invocation,  Next: Initial Metafont,  Up: Metafont
+
+5.1 'mf' invocation
+===================
+
+Metafont (usually invoked as 'mf') reads character definitions specified
+in the Metafont programming 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' (*note References::).
+
+   Metafont processes its command line and determines its memory dump
+(base) file in a way exactly analogous to MetaPost and TeX (*note tex
+invocation::, and *note Memory dumps::).  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
+(*note (kpathsea)Supported file formats::), 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 runtime (*note (kpathsea)mktex configuration::).  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 (*note gftopk
+invocation::), 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 (*note Modes::); for example, 'localfont' or 'ljfour'.  These
+device definitions 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 2602dpi;
+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 600dpi and you
+specify 'mag:=2', Metafont will produce output at 1200dpi.  Very often,
+the MAGNIFICATION is an expression such as 'magstep(.5)', corresponding
+to a TeX "magstep", which are factors of 1.2 * sqrt(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' (*note Common options::):
+'-[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.  *Note
+     Common options::.
+
+'-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'.
+
+
+File: web2c.info,  Node: Initial Metafont,  Next: Modes,  Prev: mf invocation,  Up: Metafont
+
+5.2 Initial Metafont
+====================
+
+'inimf' is the "initial" form of Metafont, which does lengthy
+initializations avoided by the "virgin" ('vir') form, so as to be
+capable of dumping '.base' files (*note Memory dumps::).  For a detailed
+comparison of virgin and initial forms, see *note Initial and virgin::.
+
+   For a list of options and other information, see *note mf
+invocation::.
+
+   The only memory dump file commonly used with Metafont is the default
+'plain.base', also known as 'mf.base' (again, *note Memory dumps::).  It
+is created by default during installation, but you can also do so by
+hand if necessary (e.g., if a Metafont update is issued):
+     mf -ini '\input plain; input modes; dump'
+(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 *note
+Modes::.  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.
+
+
+File: web2c.info,  Node: Modes,  Next: Online Metafont graphics,  Prev: Initial Metafont,  Up: Metafont
+
+5.3 Modes: Device definitions for Metafont
+==========================================
+
+Running Metafont and creating Metafont base files requires information
+that TeX and MetaPost do not: "mode" definitions which specify device
+characteristics, so Metafont can properly rasterize the shapes.
+
+   When making a base file, a file containing modes for
+locally-available devices should be input after 'plain.mf'.  One
+commonly used file is <ftp://ftp.tug.org/tex/modes.mf>; it includes all
+known definitions.
+
+   If, however, for some reason you have decreased the memory available
+in your Metafont, you may need to copy 'modes.mf' and remove the
+definitions irrelevant to you (probably most of them) instead of using
+it directly.  (Or, if you're a Metafont hacker, maybe you can suggest a
+way to redefine 'mode_def' and/or 'mode_setup'; right now, the amount of
+memory used is approximately four times the total length of the
+'mode_def' names, and that's a lot.)
+
+   If you have a device not included in 'modes.mf', please see comments
+in that file for how to create the new definition, and please send the
+definition to <tex-fonts at math.utah.edu> to get it included in the next
+release of 'modes.mf'.
+
+   Usually, when you run Metafont you must supply the name of a mode
+that was dumped in the base file.  But you can also define the mode
+characteristics dynamically, by invoking Metafont with an assignment to
+'smode' instead of 'mode', like this:
+     mf '\smode:="newmode.mf"; mag:=MAGNIFICATION; input MFNAME'
+This is most useful when you are working on the definition of a new
+mode.
+
+   The MAGNIFICATION and MFNAME arguments are explained in *note mf
+invocation::.  In the file 'newmode.mf', you should have the following
+(with no 'mode_def' or 'enddef'), if you are using 'modes.mf'
+conventions:
+     mode_param (pixels_per_inch, DPI);
+     mode_param (blacker, B);
+     mode_param (fillin, F);
+     mode_param (o_correction, O);
+     mode_common_setup_;
+(Of course, you should use real numbers for DPI, B, F, and O.)
+
+   For more information on the use of 'smode', or if you are not using
+'modes.mf', see page 269 of 'The Metafontbook'.
+
+
+File: web2c.info,  Node: Online Metafont graphics,  Next: gftodvi invocation,  Prev: Modes,  Up: Metafont
+
+5.4 Online Metafont graphics
+============================
+
+The Web2c implementation of Metafont can do online graphics with a
+number of devices.  (See the Metafont manual for more information about
+how to draw on your screen.)  By default, no graphics support is
+enabled.
+
+   Metafont examines the 'MFTERM' environment variable or config file
+value at runtime, or the 'TERM' environment variable if 'MFTERM' is not
+set, to determine the device support to use.  Naturally, only the
+devices for which support has been compiled in can be selected.
+
+   Here is a table of the possibilities, showing the 'MFTERM' value and
+the corresponding 'configure' option(s) in parentheses.
+
+'epsf'
+     ('--enable-epsfwin') Pseudo-window server for Encapsulated
+     PostScript (see 'web2c/window/epsf.c').  This device produces an
+     EPS file containing the graphics which would be displayed online on
+     other devices.  The name of the EPS file defaults to metafont.eps
+     but can be changed by setting the MFEPSF environment variable to
+     the new filename.  Contributed by Mathias Herberts.
+
+'hp2627'
+     ('--enable-hp2627win') HP2627a color graphics terminals.
+
+'mftalk'
+     ('--enable-mftalkwin') Generic window server (see
+     'web2c/window/mftalk.c').
+
+'next'
+     ('--enable-next') NeXT window system.  This requires a separate
+     program, called 'DrawingServant', available separately.  See the
+     'web2c/window/next.c'.
+
+'regis'
+     ('--enable-regiswin') Regis terminals.
+
+'sun'
+     ('--enable-suntoolswin') The old Suntools (not any flavor of X)
+     window system.  (You can get the even older SunWindows 'gfx' system
+     by using 'sun-gfx.c'.)
+
+'tek'
+     ('--enable-tektronixwin') Tektronix terminals.
+
+'uniterm'
+     ('--enable-unitermwin') Uniterm, Simon Poole's emulator of a smart
+     Tektronix 4014 terminal.  This may work with regular Tektronix
+     terminals as well; it's faster than the driver
+     '--enable-tektronixwin' selects.
+
+'xterm'
+     '--with-x' The X window system (version 11).
+
+     There are two variants of the X11 support, one that works with the
+     Xt toolkit, and another that works directly with Xlib.  The Xt
+     support is more efficient and has more functionality, so it is the
+     default.  If you must use the Xlib support, use 'configure --with-x
+     --with-kf-x-toolkit=no'.
+
+     Specify '--disable-mf-nowin' in order not to build a separate
+     non-windows-capable Metafont executable 'mf-nowin' (or
+     'mf-nowin.exe').
+
+     You cannot specify any of the usual X options (e.g., '-geometry')
+     on the Metafont command line, but you can specify X resources in
+     your '~/.Xdefaults' or '~/.Xresources' file.  The class name is
+     'Metafont'.  If you're using the Xt support, all the usual X
+     toolkit resources are supported.  If you're using the Xlib support,
+     only the 'geometry' resource is supported.
+
+     You specify the X display to which Metafont connects in the
+     'DISPLAY' environment variable, as usual.
+
+   Writing support for a new device is straightforward.  Aside from
+defining the basic drawing routines that Metafont uses (see 'mf.web'),
+you only have to add another entry to 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').
+
+
+File: web2c.info,  Node: gftodvi invocation,  Next: mft invocation,  Prev: Online Metafont graphics,  Up: Metafont
+
+5.5 GFtoDVI: Character proofs of fonts
+======================================
+
+GFtoDVI makes "proof sheets" from a GF bitmap file as output by, for
+example, Metafont (*note Metafont::).  This is an indispensable aid for
+font designers or Metafont hackers.  Synopsis:
+
+     gftodvi [OPTION]... GFNAME[gf]
+
+   The font GFNAME is searched for in the usual places (*note
+(kpathsea)Glyph lookup::).  To see all the relevant paths, set the
+environment variable 'KPATHSEA_DEBUG' to '-1' before running the
+program.
+
+   The suffix 'gf' is supplied if not already present.  This suffix is
+not an extension, no '.' precedes it; for instance, 'cmr10.600gf'.
+
+   The output filename is the basename of GFNAME extended with '.dvi',
+e.g., 'gftodvi /wherever/foo.600gf' creates './foo.dvi'.
+
+   The characters from GFNAME appear one per page in the DVI output,
+with labels, titles, and annotations, as specified in Appendix H
+(Hardcopy Proofs) of 'The Metafontbook'.
+
+   GFtoDVI uses several fonts besides GFNAME itself:
+
+   * "gray font" (default 'gray'): for the pixels that actually make up
+     the character.  Simply using black is not right, since then labels,
+     key points, and other information could not be shown.
+
+   * "title font" (default 'cmr8'): for the header information at the
+     top of each output page.
+
+   * "label font" (default 'cmtt10'): for the labels on key points of
+     the figure.
+
+   * "slant font" (no default): for diagonal lines, which are otherwise
+     simulated using horizontal and vertical rules.
+
+   To change the default fonts, you must use 'special' commands in your
+Metafont source file, typically via commands like 'slantfont slantlj4'.
+There is no default slant font since no one printer is suitable as a
+default.  You can make your own by copying one of the existing files,
+such as '.../fonts/source/public/misc/slantlj4.mf' and then running 'mf'
+on it.
+
+   For testing purposes, you may it useful to run 'mf-nowin rtest' (hit
+RETURN when it stops) to get a 'gf' file of a thorn glyph.  Or use 'mf'
+instead of 'mf-nowin' to have the glyph(s) displayed on the screen.
+After that, 'gftodvi rtest.2602gf' should produce 'rtest.dvi', which you
+process as usual.
+
+   The program accepts the following option, as well as the standard
+'-verbose', '-help', and '-version' (*note Common options::):
+
+'-overflow-label-offset=POINTS'
+     Typeset the so-called overflow labels, if any, POINTS TeX points
+     from the right edge of the character bounding box.  The default is
+     a little over two inches (ten million scaled points, to be
+     precise).  Overflow equations are used to locate coordinates when
+     their actual position is too crowded with other information.
+
+
+File: web2c.info,  Node: mft invocation,  Prev: gftodvi invocation,  Up: Metafont
+
+5.6 MFT: Prettyprinting Metafont source
+=======================================
+
+MFT translates a Metafont program into a TeX document suitable for
+typesetting, with the aid of TeX macros defined in the file
+'mftmac.tex'.  Synopsis:
+
+     mft [OPTION]... MFNAME[.mf]
+
+   MFT searches the usual places for MFNAME (*note (kpathsea)Supported
+file formats::).  To see all the relevant paths, set the environment
+variable 'KPATHSEA_DEBUG' to '-1' before running the program.  The
+output goes to the basename of MFNAME extended with '.tex', e.g., 'mft
+/wherever/foo.mf' creates './foo.tex'.
+
+   Line breaks in the input are carried over into the output; moreover,
+blank spaces at the beginning of a line are converted to quads of
+indentation in the output.  Thus, you have full control over the
+indentation and line breaks.  Each line of input is translated
+independently of the others.
+
+   Further control is allowed via Metafont comments:
+   * Metafont comments following a single '%' should be valid TeX input.
+     But Metafont material can be included within vertical bars in a
+     comment; this will be translated by MFT as if it were regular
+     Metafont code.  For example, a comment like '% |x2r| is the tip of
+     the bowl' will be translated into the TeX '% $x_{2r}$ is the ...',
+     i.e., the 'x2r' is treated as an identifier.
+
+   * '%%' indicates that the remainder of an input line should be copied
+     verbatim to the output.  This is typically used to introduce
+     additional TeX material at the beginning or an MFT job, e.g.  code
+     to modify the standard layout or the formatting macros defined in
+     'mftmac.tex', or to add a line saying '%%\bye' at the end of the
+     job.  (MFT doesn't add this automatically in order to allow
+     processing several files produces by MFT in the same TeX job.)
+
+   * '%%% TOKEN1 OTHER-TOKENS' introduces a change in MFT's formatting
+     rules; all the OTHER-TOKENS will henceforth be translated according
+     to the current conventions for TOKEN1.  The tokens must be symbolic
+     (i.e., not numeric or string tokens).  For example, the input line
+          %%% addto fill draw filldraw
+     says to format the 'fill', 'draw', and 'filldraw' operations of
+     plain Metafont just like the primitive token 'addto', i.e., in
+     boldface type.  Without such reformatting commands, MFT would treat
+     'fill' like an ordinary tag or variable name.  In fact, you need a
+     '%%%' command even to get parentheses to act like delimiters.
+
+   * '%%%%' introduces an MFT comment, i.e., MFT ignores the remainder
+     of such a line.
+
+   * Five or more '%' signs should not be used.
+
+   (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' (*note Common options::):
+'-change=CHFILE[.ch]'
+     Apply the change file CHFILE as with Tangle and Weave (*note
+     WEB::).
+
+'-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 *note (kpathsea)Supported file formats::.
+
+     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.
+
+
+File: web2c.info,  Node: MetaPost,  Next: BibTeX,  Prev: Metafont,  Up: Top
+
+6 MetaPost: Creating technical illustrations
+********************************************
+
+MetaPost is a picture-drawing language similar to Metafont (*note
+Metafont::), but instead of outputting bitmaps in a "font", it outputs
+PostScript commands.  It's primarily intended for creating technical
+illustrations.
+
+   MetaPost also provides for arbitrary integration of text and graphics
+in a natural way, using any typesetter (TeX and Troff are both
+supported) and a number of other subsidiary programs, described below.
+
+* Menu:
+
+* mpost invocation::            Invoking MetaPost.
+* Initial MetaPost::            Making mems.
+* dvitomp invocation::          DVI-to-MPX translation.
+
+
+File: web2c.info,  Node: mpost invocation,  Next: Initial MetaPost,  Up: MetaPost
+
+6.1 'mpost' invocation
+======================
+
+MetaPost (installed as 'mpost') reads a series of pictures specified in
+the MetaPost programming language, and outputs corresponding PostScript
+code.  This section merely describes the options available in the Web2c
+implementation.  For a complete description of the MetaPost language,
+see AT&T technical report CSTR-162, generally available in
+'TEXMF/doc/metapost/', where TEXMF is the root of TeX directory
+structure.  See also:
+   * <http://cm.bell-labs.com/who/hobby/MetaPost.html> (the MetaPost
+     author's home page);
+   * <http://tug.org/metapost> (papers, packages, and related
+     information).
+
+   Also, a standard MetaPost package for drawing graphs is documented in
+AT&T technical report CSTR-164, available as the file 'mpgraph.ps',
+generally stored alongside 'mpman.ps'.
+
+   MetaPost processes its command line and determines its memory dump
+(mem) file in a way exactly analogous to Metafont and TeX (*note 'tex'
+invocation: tex invocation, and *note Memory dumps::).  Synopses:
+
+     mpost [OPTION]... [MPNAME[.mp]] [MP-COMMANDS]
+     mpost [OPTION]... \FIRST-LINE
+     mpost [OPTION]... &MEM ARGS
+
+   MetaPost searches the usual places for the main input file MPNAME
+(*note (kpathsea)Supported file formats::), extending MPNAME with '.mp'
+if necessary.  To see all the relevant paths, set the environment
+variable 'KPATHSEA_DEBUG' to '-1' before running the program.
+
+   MetaPost writes its PostScript output to a series of files
+'BASEMPNAME.NNN' (or perhaps 'BASEMPNAME.ps', very occasionally
+'BASEMPNAME.tfm'), where NNN are the figure numbers specified in the
+input, typically to the 'beginfig' macro, and BASEMPNAME is the basename
+of MPNAME, or 'mpout' if no input file was specified.  MetaPost uses the
+'.ps' extension when the figure number is out of range, e.g., if you say
+'beginfig(-1)'.
+
+   You can use the output files as figures in a TeX document just as
+with any other PostScript figures.  For example, with this TeX command:
+     \special{psfile="FILENAME"}
+or by using 'epsf.tex' (*note (dvips)EPSF macros::).
+
+   The MetaPost construct
+     btex ... TEX-INPUT ... etex
+generates a MetaPost picture expression corresponding to TEX-INPUT.
+
+   The construct
+     verbatimtex ... TEX-INPUT ... etex
+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 enviroment
+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
+(*note (dvips)Fonts in figures::).  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
+(*note (dvips)psfonts.map::).
+
+   It is posible 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.  *Note tex invocation::.
+
+   The program accepts the following options, as well as the standard
+'-help' and '-version' (*note Common options::):
+'-[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.  *Note
+     Common options::.
+
+'-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.
+
+
+File: web2c.info,  Node: Initial MetaPost,  Next: dvitomp invocation,  Prev: mpost invocation,  Up: MetaPost
+
+6.2 Initial MetaPost
+====================
+
+As of MetaPost 1.504 (TeX Live 2011), MetaPost no longer dumps '.mem'
+files (*note Memory dumps::) and does not distinguish virgin and initial
+forms (*note Initial and virgin::).  Instead, the "initial" file name is
+read in its source form--that is, 'mpost.mp' when the program is invoked
+as 'mpost'.
+
+   For a list of options and other information, see *note mpost
+invocation::.
+
+   MetaPost provides a format with all the features of plain Metafont,
+called 'mfplain'.  You can use that in the same way; just run 'mfplain'
+instead of 'mpost'.  This lets you directly process Metafont source
+files with MetaPost, producing character proofs (one file for each
+character) similar to those produced with Metafont in proof mode and
+GFtoDVI (*note gftodvi invocation::).
+
+
+File: web2c.info,  Node: dvitomp invocation,  Prev: Initial MetaPost,  Up: MetaPost
+
+6.3 DVItoMP: DVI to MPX conversion
+==================================
+
+DVItoMP converts DVI files into low-level MetaPost commands in a
+so-called MPX file.  Synopsis:
+
+     dvitomp DVIFILE[.dvi] [MPXFILE[.mpx]]
+
+If MPXFILE is not specified, the output goes to the basename of DVIFILE
+extended with '.mpx', e.g., 'dvitomp /wherever/foo.dvi' creates
+'./foo.mpx'.
+
+   DVItoMP supports Dvips-style color specials, such as 'color push
+NAME' and 'color pop', outputting them as 'withcolor' MetaPost commands.
+
+   The only options are '-help' and '-version' (*note Common options::).
+
+
+File: web2c.info,  Node: BibTeX,  Next: WEB,  Prev: MetaPost,  Up: Top
+
+7 BibTeX: Bibliographies
+************************
+
+BibTeX automates much of the job of typesetting bibliographies, and
+makes bibliography entries reusable in many different contexts.
+
+* Menu:
+
+* bibtex invocation::
+* Basic BibTeX style files::    The standard and semi-standard styles.
+
+
+File: web2c.info,  Node: bibtex invocation,  Next: Basic BibTeX style files,  Up: BibTeX
+
+7.1 BibTeX invocation
+=====================
+
+BibTeX creates a printable bibliography ('.bbl') file from references in
+a '.aux' file, generally written by TeX or LaTeX.  The '.bbl' file is
+then incorporated on a subsequent run.  The basic bibliographic
+information comes from '.bib' files, and a BibTeX style ('.bst') file
+controls the precise contents of the '.bbl' file.  Synopsis:
+
+     bibtex [OPTION]... AUXFILE[.aux]
+
+The output goes to the basename of AUXFILE extended with '.bbl'; for
+example, 'bibtex /wherever/foo.aux' creates './foo.bbl'.  BibTeX also
+writes a log file to the basename of AUXFILE extended with '.blg'.
+
+   The names of the '.bib' and '.bst' files are specified in the '.aux'
+file as well, via the '\bibliography' and '\bibliographystyle' (La)TeX
+macros.  BibTeX searches for '.bib' files using the 'BIBINPUTS' and
+'TEXBIB' paths, and for '.bst' files using 'BSTINPUTS' (*note
+(kpathsea)Supported file formats::).  It does no path searching for
+'.aux' files.
+
+   The program accepts the following options, as well as the standard
+'-help' and '-version' (*note Common options::):
+'-terse'
+     Suppress the program banner and progress reports normally output.
+
+'-min-crossrefs=N'
+     If at least N (2 by default) bibliography entries refer to another
+     entry E via their 'crossref' field, include E in the .bbl file,
+     even if it was not explicitly referenced in the .aux file.  For
+     example, E might be a conference proceedings as a whole, with the
+     cross-referencing entries being individual articles published in
+     the proceedings.  In some circumstances, you may want to avoid
+     these automatic inclusions altogether; to do this, make N a
+     sufficiently large number.
+
+   See also:
+'btxdoc.tex'
+     Basic LaTeXable documentation for general BibTeX users.
+
+'btxhak.tex'
+     LaTeXable documentation for style designers.
+
+'btxdoc.bib'
+     BibTeX database file for the two above documents.
+
+'xampl.bib'
+     Example database file with all the standard entry types.
+
+'<ftp://ftp.math.utah.edu/pub/tex/bib/>'
+     A very large '.bib' and '.bst' collection, including references for
+     all the standard TeX books and a complete bibliography for TUGboat.
+
+
+File: web2c.info,  Node: Basic BibTeX style files,  Prev: bibtex invocation,  Up: BibTeX
+
+7.2 Basic BibTeX style files
+============================
+
+Here are descriptions of the four standard and four semi-standard basic
+BibTeX styles.  'CTAN:/biblio/bibtex' contains these and many more (for
+CTAN info, *note (kpathsea)unixtex.ftp::).
+
+'plain'
+     Sorts entries alphabetically, with numeric labels.  Generally
+     formatted according to van Leunen's 'A Handbook for Scholars'.  The
+     other style files listed here are based on 'plain'.
+
+'abbrv'
+     First names, month names, and journal names are abbreviated.
+
+'acm'
+     Names are printed in small caps.
+
+'alpha'
+     Alphanumeric labels, e.g., 'Knu66'.
+
+'apalike'
+     No labels at all; instead, the year appears in parentheses after
+     the author.  Use this in conjunction with 'apalike.tex' (plain TeX)
+     or 'apalike.sty' (LaTeX), which also changes the citations in the
+     text to be '(AUTHOR, YEAR)'.
+
+'ieeetr'
+     Numeric labels, entries in citation order, IEEE abbreviations,
+     article titles in quotes.
+
+'siam'
+     Numeric labels, alphabetic order, 'Math. Reviews' abbreviations,
+     names in small caps.
+
+'unsrt'
+     Lists entries in citation order, i.e., unsorted.
+
+'btxbst.doc'
+     The template file and documentation for the standard styles.
+
+
+File: web2c.info,  Node: WEB,  Next: DVI utilities,  Prev: BibTeX,  Up: Top
+
+8 WEB: Literate programming
+***************************
+
+"WEB" languages allow you to write a single source file that can produce
+both a compilable program and a well-formatted document describing the
+program in as much detail as you wish to prepare.  Writing in this kind
+of dual-purpose language is called "literate programming".  (The Usenet
+newsgroup 'comp.programming.literate' is devoted to this subject.)
+
+   WEB-like languages have been implemented with many pairs of base
+languages: Cweb provides C and Troff (*note References::); CWEB provides
+C and TeX ('CTAN:/web/c_cpp/cweb'); Spiderweb provides C, C++, Awk, Ada,
+many others, and TeX ('CTAN:/web/spiderweb'); and, of course, the
+original WEB provides Pascal and TeX, the implementation languages for
+the original TeX, Metafont, MetaPost, and related programs to come from
+the TeX project at Stanford.
+
+   The original WEB language is documented in the file 'webman.tex',
+which is included in the <ftp://ftp.tug.org/tex/lib.tar.gz> archive (and
+available in many other places, of course).
+
+* Menu:
+
+* tangle invocation::           
+* weave invocation::            
+* pooltype invocation::         
+
+
+File: web2c.info,  Node: tangle invocation,  Next: weave invocation,  Up: WEB
+
+8.1 Tangle: Translate WEB to Pascal
+===================================
+
+Tangle creates a compilable Pascal program from a WEB source file (*note
+WEB::).  Synopsis:
+
+     tangle [OPTION]... WEBFILE[.web] [CHANGEFILE[.ch]]
+
+The Pascal output is written to the basename of WEBFILE extended with
+'.p'; for example, 'tangle /wherever/foo.web' creates './foo.p'.  Tangle
+applies CHANGEFILE to WEBFILE before writing the output; by default,
+there is no change file.
+
+   If the program makes use of the WEB string facility, Tangle writes
+the string pool to the basename of WEBFILE extended with '.pool'.
+
+   The Pascal output is packed into lines of 72 characters or less, with
+the only concession to readability being the termination of lines at
+semicolons when this can be done conveniently.
+
+   The program accepts the following options, as well as the standard
+'--help' and '--version' (*note Common options::):
+
+'-length=NUMBER'
+     The number of characters that are considered significant in an
+     identifier.  Whether underline characters are counted depends on
+     the '-underline' option.  The default value is 32, the original
+     tangle used 7, but this proved too restrictive for use by Web2c.
+
+'-lowercase'
+'-mixedcase'
+'-uppercase'
+     These options specify the case of identifiers in the output of
+     tangle.  If '-uppercase' ('-lowercase') is specified, tangle will
+     convert all identfiers to uppercase (lowercase).  The default is
+     '-mixedcase', which specifies that the case will not be changed.
+
+'-underline'
+     When this option is given, tangle does not strip underline
+     characters from identifiers.
+
+'-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.
+
+
+File: web2c.info,  Node: weave invocation,  Next: pooltype invocation,  Prev: tangle invocation,  Up: WEB
+
+8.2 Weave: Translate WEB to TeX
+===============================
+
+Weave creates a TeX document from a WEB source file (*note WEB::),
+assuming various macros defined in 'webmac.tex'.  It takes care of
+typographic details such as page layout, indentation, and italicizing
+identifiers.  It also automatically gathers and outputs extensive
+cross-reference information.  Synopsis:
+
+     weave [OPTION]... WEBFILE[.web] [CHANGEFILE[.ch]]
+
+The output is to the basename of WEBFILE extended with '.tex'; for
+example, 'weave /wherever/foo.web' creates './foo.tex'.  Weave applies
+CHANGEFILE to WEBFILE before writing the output; by default, there is no
+change file.
+
+   The program accepts the following option, as well as the standard
+'-verbose', '-help' and '-version' (*note Common options::):
+'-x'
+     Omit the cross-reference information: the index, the list of WEB
+     module names, and the table of contents (an empty 'CONTENTS.tex'
+     file will still be written when the Weave output file is processed
+     by TeX using the default 'webmac.tex', though).
+
+   Conventionally, WEB programmers should define the TeX '\title' macro
+at the beginning of the source file.  Also, to get output of only
+changed modules, one can say '\let\maybe=\iffalse' (usually as the first
+change in the change file).
+
+
+File: web2c.info,  Node: pooltype invocation,  Prev: weave invocation,  Up: WEB
+
+8.3 Pooltype: Display WEB pool files
+====================================
+
+Pooltype shows the so-called "string number" of each string in a WEB
+pool file (*note WEB::), as output by Tangle (*note tangle
+invocation::), including the first 256 strings corresponding to the
+possible input characters.  Pooltype primarily serves as an example of
+WEB conventions to implementors of the TeX system.  Synopsis:
+
+     pooltype [OPTION]... POOLFILE[.pool]
+
+No path searching is done for POOLFILE.  Output is to standard output.
+
+   The only options are '--help' and '--version' (*note Common
+options::).
+
+   As an example of the output, here is the (edited) output for
+'tex.pool':
+     0: "^^@"
+     1: "^^A"
+     ...
+     255: "^^ff"
+     256: "pool size"
+     ...
+     1314: "Using character substitution: "
+     (23617 characters in all.)
+
+   In Metafont and MetaPost, the first 256 characters are actually
+represented as single bytes (i.e., themselves), not in the '^^'
+notation.  Consider Pooltype as showing the results after conversion for
+output.
+
+
+File: web2c.info,  Node: DVI utilities,  Next: Font utilities,  Prev: WEB,  Up: Top
+
+9 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 (*note Introduction: (dvips)Top.), 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,
+*note (kpathsea)unixtex.ftp::).
+
+   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.
+
+* Menu:
+
+* dvicopy invocation::          Expand virtual fonts.
+* dvitype invocation::          DVI to human-readable text.
+
+
+File: web2c.info,  Node: dvicopy invocation,  Next: dvitype invocation,  Up: DVI utilities
+
+9.1 DVIcopy: Canonicalize virtual font references
+=================================================
+
+DVIcopy reads a DVI file, expands any references to virtual fonts (*note
+(dvips)Virtual fonts::) to base fonts, and writes the resulting DVI
+file.  Thus you can use virtual fonts even if your DVI processor does
+not support them, by passing the documents through DVIcopy first.
+Synopsis:
+
+     dvicopy [OPTION]... [INDVI[.dvi] [OUTDVI[.dvi]]]
+
+   DVIcopy reads standard input if INDVI is not specified, and writes
+standard output if OUTDVI is not specified.
+
+   The program accepts the following options, as well as the standard
+'-help' and '-version' (*note Common options::):
+'-magnification=INTEGER'
+     Override existing magnification in INDVI with INTEGER; 1000
+     specifies no magnification.  This is equivalent to setting TeX's
+     '\mag' parameter.
+
+'-max-pages=N'
+     Process N pages; default is one million.
+
+'-page-start=PAGE-SPEC'
+     Start at the first page matching PAGE-SPEC, which is one or more
+     (signed) integers separated by periods, corresponding to TeX's
+     '\count0...9' parameters at '\shipout' time; '*' matches anything.
+     Examples: '3', '1.*.-4'.
+
+
+File: web2c.info,  Node: dvitype invocation,  Prev: dvicopy invocation,  Up: DVI utilities
+
+9.2 DVItype: Plain text transliteration of DVI files
+====================================================
+
+DVItype translates a DeVice Independent (DVI) file (as output by TeX,
+for example) to a plain text file that humans can read.  It also serves
+as a DVI-validating program, i.e., if DVItype can read a file, it's
+correct.  Synopsis:
+
+     dvitype [OPTION]... DVIFILE[.dvi]
+
+DVItype does not read any bitmap files, but it does read TFM files for
+fonts referenced in DVIFILE.  The usual places are searched (*note
+(kpathsea)Supported file formats::).  To see all the relevant paths, set
+the environment variable 'KPATHSEA_DEBUG' to '-1' before running the
+program.
+
+   Output goes to standard output.
+
+   The program accepts the following options, as well as the standard
+'-help' and '-version' (*note Common options::):
+'-dpi=REAL'
+     Do pixel movement calculations at REAL pixels per inch; default
+     300.0.
+
+'-magnification=INTEGER'
+     Override existing magnification in INDVI with INTEGER; 1000
+     specifies no magnification.  This is equivalent to setting TeX's
+     '\mag' parameter.
+
+'-max-pages=N'
+     Process N pages; default is one million.
+
+'-output-level=N'
+     Verbosity level of output, from 0 to 4 (default 4):
+        * 0: Global document information only.
+        * 1: Most DVI commands included, and typeset characters
+          summarized.
+        * 2: Character and movement commands explicitly included.
+        * 3: DVI stack and current position calculations included.
+        * 4: Same information as level 3, but DVItype does random
+          positioning in the file, reading the DVI postamble first.
+
+'-page-start=PAGE-SPEC'
+     Start at the first page matching PAGE-SPEC, which is one or more
+     (signed) integers separated by periods, corresponding to TeX's
+     '\count0...9' parameters at '\shipout' time; '*' matches anything.
+     Examples: '1', '5.*.-9'.
+
+'-show-opcodes'
+     Show numeric opcode values (in decimal) for DVI commands, in braces
+     after the command name.  This can help in debugging DVI utilities.
+     We use decimal because in the DVI format documentation (in
+     'dvitype.web', among others) the opcodes are shown in decimal.
+
+* Menu:
+
+* dvitype output example::      
+
+
+File: web2c.info,  Node: dvitype output example,  Up: dvitype invocation
+
+9.2.1 DVItype output example
+----------------------------
+
+As an example of the output from DVItype (see section above), here is
+its (abridged) translation of the 'story.dvi' resulting from running the
+example in 'The TeXbook', with '-output-level=4' and '-show-opcodes' on.
+
+     ...
+     Options selected:
+       Starting page = *
+       Maximum number of pages = 1000000
+       Output level = 4 (the works)
+       Resolution = 300.00000000 pixels per inch
+     numerator/denominator=25400000/473628672
+     magnification=1000;       0.00006334 pixels per DVI unit
+     ' TeX output 1992.05.17:0844'
+     Postamble starts at byte 564.
+     maxv=43725786, maxh=30785863, maxstackdepth=3, totalpages=1
+     Font 33: cmsl10---loaded at size 655360 DVI units
+     Font 23: cmbx10---loaded at size 655360 DVI units
+     Font 0: cmr10---loaded at size 655360 DVI units
+
+     42: beginning of page 1
+     87: push {141}
+     level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0)
+     88: down3 -917504 {159} v:=0-917504=-917504, vv:=-58
+     92: pop {142}
+     ...
+     104: putrule {137} height 26214, width 30785863 (2x1950 pixels)
+     113: down3 5185936 {159} v:=655360+5185936=5841296, vv:=370
+     117: push {141}
+     level 1:(h=0,v=5841296,w=0,x=0,y=0,z=0,hh=0,vv=370)
+     118: right4 12265425 {146} h:=0+12265425=12265425, hh:=777
+     [ ]
+     123: fntdef1 23 {243}: cmbx10
+     145: fntnum23 {194} current font is cmbx10
+     146: setchar65 h:=12265425+569796=12835221, hh:=813
+     147: w3 251220 {150} h:=12835221+251220=13086441, hh:=829
+     151: setchar83 h:=13086441+418700=13505141, hh:=856
+     ...
+     164: setchar82 h:=17448202+565245=18013447, hh:=1142
+     165: x0 -62805 {152} h:=18013447-62805=17950642, hh:=1138
+     166: setchar89 h:=17950642+569796=18520438, hh:=1174
+     [A SHORT STORY]
+     167: pop {142}
+     level 1:(h=0,v=5841296,w=0,x=0,y=0,z=0,hh=0,vv=370)
+     ...
+     550: pop {142}
+     level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670)
+     551: down3 1572864 {159} v:=42152922+1572864=43725786, vv:=2770
+     555: push {141}
+     level 0:(h=0,v=43725786,w=0,x=0,y=0,z=0,hh=0,vv=2770)
+     556: right4 15229091 {146} h:=0+15229091=15229091, hh:=965
+     561: setchar49 h:=15229091+327681=15556772, hh:=986
+     [ 1]
+     562: pop {142}
+     level 0:(h=0,v=43725786,w=0,x=0,y=0,z=0,hh=0,vv=2770)
+     563: eop {140}
+
+   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:', ...), 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]'.
+
+
+File: web2c.info,  Node: Font utilities,  Next: Legalisms,  Prev: DVI utilities,  Up: Top
+
+10 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.
+
+* Menu:
+
+* Font file formats::       Explanations of GF, PK, TFM, VF, ...
+* gftopk invocation::       GF -> PK (compact)
+* pktogf invocation::       PK -> GF (expand).
+* pktype invocation::       PK -> human-readable text.
+* gftype invocation::       GF -> human-readable text.
+* tftopl invocation::       TFM -> PL (for editing TFM).
+* pltotf invocation::       PL -> TFM (make editing results usable).
+* vftovp invocation::       VF -> VPL (tftopl for virtual fonts).
+* vptovf invocation::       VPL -> VF (pltotf for virtual fonts).
+* Font utilities available elsewhere:: Type 1, BDF, editors, etc.
+
+
+File: web2c.info,  Node: Font file formats,  Next: gftopk invocation,  Up: Font utilities
+
+10.1 Font file formats
+======================
+
+(For another perspective on this, *note (dvips)Font concepts::).
+
+   Font files come in several varieties, with suffixes like:
+     .tfm  .*pk  .*gf  .*pxl (obsolete)  .pl  .mf  .vf  .vpl
+Each represents a file format.
+
+   A TFM (TeX font metric) file is a compact binary file that contains
+information about each character in a font, about combinations of
+characters within that font, and about the font as a whole.  The font
+metric information contained in TFM files is device-independent units is
+used by TeX to do typesetting.  Unlike the bitmap (raster) fonts
+described below, TFM font files contain no information about the shapes
+of characters.  They describe rectangular areas and combinations
+thereof, but not what will eventually be printed in those areas.
+
+   Since TeX does scaling calculations, one TFM file serves for all
+magnifications of a given typeface.  On the other hand, the best printed
+results are obtained when magnified (or reduced fonts) are not produced
+geometrically (as done by PostScript, for example) but rather optically,
+with each size a separate design (as done with Computer Modern and the
+EC fonts, for example); then a separate TFM file is needed for each
+size.
+
+   At any rate, TeX produces a DVI (DeVice Independent) file from your
+source document.  In order to print DVI files on real devices, you need
+font files defining digitized character shapes and other data.  Then
+previewers and printer-driver programs can translate your DVI files into
+something usable by your monitor or printer.  Bitmap fonts come with
+suffixes such as '.600pk' or '.600gf' or '.3000pxl', where the '600' is
+the horizontal dots-per-inch resolution at which the font was produced,
+and the 'pk' or 'gf' or 'pxl' indicates the font format.  Outline fonts
+in PostScript Type 1 format have suffixes such as '.pfa' or '.pfb'.
+
+   Fonts in pk (packed) format are in the tightly packed raster format
+that is pretty much the standard today.  They take up less space than
+fonts in the gf (generic font) format that Metafont generates, and far
+less space than fonts in pxl format.  Fonts in pxl format take up gross
+amounts of disk space and permit only 128 characters.  They are
+obsolete.
+
+   Font files with the '.pl' (property list) suffix are the plain text
+(human-readable) analog of the binary '.tfm' files.  The TFtoPL and
+PLtoTF programs convert between the two formats (*note tftopl
+invocation:: and *note pltotf invocation::).
+
+   Font files with the '.mf' suffix are in Metafont source format.
+These are the files used by Metafont to generate rastered fonts for
+specific typefaces at specific magnifications for the specific
+resolution and type of mapping used by your device.
+
+   The suffix '.vf' identifies "virtual font" files, for which '.vpl' is
+the human-readable analog.  See *Note vftovp invocation::, and *note
+vptovf invocation::.  For further discussion of virtual fonts, see
+'CTAN:/doc/virtual-fonts.knuth', 'CTAN:/help/virtualfonts.txt', and
+*note (dvips)Virtual fonts::.
+
+   (This section is based on documentation in the original Unix TeX
+distribution by Pierre MacKay and Elizabeth Tachikawa.)
+
+
+File: web2c.info,  Node: gftopk invocation,  Next: pktogf invocation,  Prev: Font file formats,  Up: Font utilities
+
+10.2 GFtoPK: Generic to packed font conversion
+==============================================
+
+GFtoPK converts a generic font (GF) file output by, for example,
+Metafont (*note mf invocation::) to a packed font (PK) file.  PK files
+are considerably smaller than the corresponding gf files, so they are
+generally the bitmap font format of choice.  Some DVI-processing
+programs, notably Dvips, only support PK files and not GF files.
+Synopsis:
+
+     gftopk [OPTION]... GFNAME.DPI[gf] [PKFILE]
+
+The font GFNAME is searched for in the usual places (*note
+(kpathsea)Glyph lookup::).  To see all the relevant paths, set the
+environment variable 'KPATHSEA_DEBUG' to '-1' before running the
+program.
+
+   The suffix 'gf' is supplied if not already present.  This suffix is
+not an extension; no '.' precedes it: for instance, 'cmr10.600gf'.
+
+   If PKFILE is not specified, the output is written to the basename of
+'GFNAME.DPIpk', e.g., 'gftopk /wherever/cmr10.600gf' creates
+'./cmr10.600pk'.
+
+   The only options are '--verbose', '--help', and '--version' (*note
+Common options::).
+
+
+File: web2c.info,  Node: pktogf invocation,  Next: pktype invocation,  Prev: gftopk invocation,  Up: Font utilities
+
+10.3 PKtoGF: Packed to generic font conversion
+==============================================
+
+PKtoGF converts a packed font (PK) file to a generic font (GF) file.
+Since PK format is much more compact than GF format, the most likely
+reason to do this is to run GFtype (*note gftype invocation::) on the
+result, so you can see the bitmap images.  Also, a few old utility
+programs do not support PK format.  Synopsis:
+
+     pktogf [OPTION]... PKNAME.DPI[pk] [GFFILE]
+
+The font PKNAME is searched for in the usual places (*note
+(kpathsea)Glyph lookup::).  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'.
+
+   If GFFILE is not specified, the output is written to the basename of
+'PKNAME.DPIgf', e.g., 'pktogf /wherever/cmr10.600pk' creates
+'./cmr10.600gf'.
+
+   The only options are '--verbose', '--help', and '--version' (*note
+Common options::).
+
+
+File: web2c.info,  Node: pktype invocation,  Next: gftype invocation,  Prev: pktogf invocation,  Up: Font utilities
+
+10.4 PKtype: Plain text transliteration of packed fonts
+=======================================================
+
+PKtype translates a packed font (PK) bitmap file (as output by GFtoPK,
+for example) to a plain text file that humans can read.  It also serves
+as a PK-validating program, i.e., if PKtype can read a file, it's
+correct.  Synopsis:
+
+     pktype PKNAME.DPI[pk]
+
+   The font PKNAME is searched for in the usual places (*note
+(kpathsea)Glyph lookup::).  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' (*note Common options::).
+
+   As an example of the output, here is the (abridged) translation of
+the letter 'K' in 'cmr10', as rendered at 600dpi 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 reference 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.
+
+'[2]23(16)...'
+     Finally, run lengths of black pixels alternate with parenthesized
+     run lengths of white pixels, and brackets indicate a repeated row.
+
+
+File: web2c.info,  Node: gftype invocation,  Next: tftopl invocation,  Prev: pktype invocation,  Up: Font utilities
+
+10.5 GFtype: Plain text transliteration of generic fonts
+========================================================
+
+GFtype translates a generic font (GF) bitmap file (as output by
+Metafont, for example) to a plain text file that humans can read.  It
+also serves as a GF-validating program, i.e., if GFtype can read a file,
+it's correct.  Synopsis:
+
+     gftype [OPTION]... GFNAME.DPI[gf]
+
+   The font GFNAME is searched for in the usual places (*note
+(kpathsea)Glyph lookup::).  To see all the relevant paths, set the
+environment variable 'KPATHSEA_DEBUG' to '-1' before running the
+program.
+
+   The suffix 'gf' is supplied if not already present.  This suffix is
+not an extension; no '.' precedes it: for instance, 'cmr10.600gf'.
+
+   The translation is written to standard output.
+
+   The program accepts the following options, as well as the standard
+'-help' and '-version' (*note Common options::):
+'-images'
+     Show the characters' bitmaps using asterisks and spaces.
+
+'-mnemonics'
+     Translate all commands in the GF file.
+
+   As an example of the output, here is the (abrdiged) translation of
+the letter 'K' in 'cmr10', as rendered at 600dpi 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
+     .<--This pixel's lower left corner is at (3,57) in METAFONT coordinates
+     ************************            ********************
+     ************************            ********************
+     ************************            ********************
+     ************************            ********************
+            **********                     *************
+             ********                       *********
+     ...
+             ********                       ***********
+            **********                      ************
+     ************************           **********************
+     ************************           **********************
+     ************************           **********************
+     ************************           **********************
+     .<--This pixel's upper left corner is at (3,0) in METAFONT coordinates
+
+Explanation:
+
+'2033'
+'2043'
+'...'
+     The byte position in the file where each GF command starts.
+
+'beginning of char 75'
+     The character code, in decimal.
+
+'3<=m<=60 0<=n<=56'
+     The character's bitmap lies between 3 and 60 (inclusive)
+     horizontally, and between 0 and 56 (inclusive) vertically.  (m is a
+     column position and n is a row position.)  Thus, 3 is the left side
+     bearing.  The right side bearing is the horizontal escapement
+     (given below) minus the maximum m.
+
+'(initially n=56) paint (0)24(12)20'
+     The first row of pixels: 0 white pixels, 24 black pixels, 12 white
+     pixels, etc.
+
+'newrow 0 (n=55) paint 24(12)20'
+     The second row of pixels, with zero leading white pixels on the
+     row.
+
+'eoc'
+     The end of the main character definition.
+
+   Here is the GF postamble information that GFtype outputs at the end:
+
+     Character 75: dx 4259840 (65), width 815562 (64.57289), loc 2033
+
+   Explanation:
+
+'dx'
+     The device-dependent width, in "scaled pixels", i.e., units of
+     horizontal pixels times 2^16.  The '(65)' is simply the same number
+     rounded.  If the vertical escapement is nonzero, it would appear
+     here as a 'dy' value.
+
+'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.  The
+     '64.57289' is the same number converted to pixels.
+
+'loc'
+     The byte position in the file where this character starts.
+
+
+File: web2c.info,  Node: tftopl invocation,  Next: pltotf invocation,  Prev: gftype invocation,  Up: Font utilities
+
+10.6 TFtoPL: TeX font metric to property list conversion
+========================================================
+
+TFtoPL translates a TeX font metric (TFM, *note (dvips)Metric files::)
+file (as output by Metafont, for example) to "property list format" (a
+list of parenthesized items describing the font) that humans can edit or
+read.  This program is mostly used by people debugging TeX
+implementations, writing font utilities, etc.  Synopsis:
+
+     tftopl [OPTION]... TFMNAME[.tfm] [PLFILE[.pl]]
+
+   The font TFMNAME (extended with '.tfm' if necessary) is searched for
+in the usual places (*note (kpathsea)Supported file formats::).  To see
+all the relevant paths, set the environment variable 'KPATHSEA_DEBUG' to
+'-1' before running the program.
+
+   If PLFILE (which is extended with '.pl' if necessary) is not
+specified, the property list file is written to standard output.  The
+property list file can be converted back to TFM format by the companion
+program TFtoPL (see the next section).
+
+   The program accepts the following option, as well as the standard
+'-verbose', '-help' and '-version' (*note Common options::):
+'-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.
+
+   As an example of the output, here is the (abridged) property list
+translation of 'cmr10.tfm':
+
+     (FAMILY CMR)
+     (FACE O 352)
+     (CODINGSCHEME TEX TEXT)
+     (DESIGNSIZE R 10.0)
+     (COMMENT DESIGNSIZE IS IN POINTS)
+     (COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+     (CHECKSUM O 11374260171)
+     (FONTDIMEN
+        (SLANT R 0.0)
+        (SPACE R 0.333334)
+        (STRETCH R 0.166667)
+        (SHRINK R 0.111112)
+        (XHEIGHT R 0.430555)
+        (QUAD R 1.000003)
+        (EXTRASPACE R 0.111112)
+        )
+     (LIGTABLE
+        ...
+        (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.
+
+
+File: web2c.info,  Node: pltotf invocation,  Next: vftovp invocation,  Prev: tftopl invocation,  Up: Font utilities
+
+10.7 PLtoTF: Property list to TeX font metric conversion
+========================================================
+
+PLtoTF translates a property list file (as output by TFtoPL, for
+example) to TeX font metric (TFM, *note (dvips)Metric files::) format.
+It's much easier for both programs and humans to create the (plain text)
+property list files and let PLtoTF take care of creating the binary TFM
+equivalent than to output TFM files directly.  Synopsis:
+
+     pltotf [OPTION]... PLFILE[.pl] [TFMFILE[.tfm]]
+
+   If TFMFILE (extended with '.tfm' if necessary) is not specified, the
+TFM file is written to the basename of 'PLFILE.tfm', e.g., 'pltotf
+/wherever/cmr10.pl' creates './cmr10.tfm'.  (Since TFM files are binary,
+writing to standard output by default is undesirable.)
+
+   The only options are '-verbose', '-help', and '-version' (*note
+Common options::).
+
+   For an example of property list format, see the previous section.
+
+
+File: web2c.info,  Node: vftovp invocation,  Next: vptovf invocation,  Prev: pltotf invocation,  Up: Font utilities
+
+10.8 VFtoVP: Virtual font to virtual property lists
+===================================================
+
+VFtoVP translates a virtual font metric (VF, *note (dvips)Virtual
+fonts::) file and its accompanying TeX font metric (TFM, *note
+(dvips)Metric files::) file (as output by VPtoVF, for example) to
+"virtual property list format" (a list of parenthesized items describing
+the virtual font) that humans can edit or read.  This program is mostly
+used by people debugging virtual font utilities.  Synopsis:
+
+     vftovp [OPTION]... VFNAME[.vf] [TFMNAME[.tfm] [VPLFILE[.vpl]]]
+
+   The fonts VFNAME and TFMNAME (extended with '.vf' and '.tfm' if
+necessary) are searched for in the usual places (*note
+(kpathsea)Supported file formats::).  To see all the relevant paths, set
+the environment variable 'KPATHSEA_DEBUG' to '-1' before running the
+program.  If TFMNAME is not specified, VFNAME (without a trailing '.vf')
+is used.
+
+   If VPLFILE (extended with '.vpl' if necessary) is not specified, the
+property list file is written to standard output.  The property list
+file can be converted back to VF and TFM format by the companion program
+VFtoVP (see the next section).
+
+   The program accepts the following option, as well as the standard
+'-verbose', '-help' and '-version' (*note Common options::):
+'-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.
+
+
+File: web2c.info,  Node: vptovf invocation,  Next: Font utilities available elsewhere,  Prev: vftovp invocation,  Up: Font utilities
+
+10.9 VPtoVF: Virtual property lists to virtual font
+===================================================
+
+VPtoVF translates a virtual property list file (as output by VFtoVP, for
+example) to virtual font (VF, *note (dvips)Virtual fonts::) and TeX font
+metric (TFM, *note (dvips)Metric files::) files.  It's much easier for
+both programs and humans to create the (plain text) property list files
+and let VPtoVF take care of creating the binary VF and TFM equivalents
+than to output them directly.  Synopsis:
+
+     vptovf [OPTION]... VPLFILE[.vpl] [VFFILE[.vf] [TFMFILE[.tfm]]]
+
+   If VFFILE (extended with '.vf' if necessary) is not specified, the VF
+output is written to the basename of 'VPLFILE.vf'; similarly for
+TFMFILE.  For example, 'vptovf /wherever/ptmr.vpl' creates './ptmr.vf'
+and './ptmr.tfm'.
+
+   The only options are '-verbose', '-help', and '-version' (*note
+Common options::).
+
+
+File: web2c.info,  Node: Font utilities available elsewhere,  Prev: vptovf invocation,  Up: Font utilities
+
+10.10 Font utilities available elsewhere
+========================================
+
+The Web2c complement of font utilities merely implements a few basic
+conversions.  Many other more sophisticated font utilities exist; most
+are in 'CTAN:/fonts/utilities' (for CTAN info, *note
+(kpathsea)unixtex.ftp::).  Here are some of the most commonly-requested
+items:
+
+   * AFM (Adobe font metric) to TFM conversion: *note (dvips)Invoking
+     afm2tfm::, and 'CTAN:/fonts/utilities/afmtopl'.
+
+   * BDF (the X bitmap format) conversion:
+     <ftp://ftp.tug.org/tex/bdf.tar.gz>.
+
+   * Creating fonts using MetaPost: MetaType1.
+     <ftp://bop.eps.gda.pl/pub/metatype1>.  This is used to create the
+     excellent Latin Modern font family ('CTAN:/fonts/lm'), which
+     extends Computer Modern to a vast repertoire of scripts.
+
+   * Editing of bitmap fonts: Xbfe from the GNU font utilities mentioned
+     below; the X BDF-editing programs available from
+     <ftp://ftp.x.org/R5contrib/xfed.tar.Z> and
+     <ftp://ftp.x.org/R5contrib/xfedor.tar.Z>; and finally, if your
+     fonts have only 128 characters, you can use the old 'gftopxl',
+     'pxtoch', and 'chtopx' programs from <ftp://ftp.tug.org/tex/web>.
+
+   * Editing of outline fonts: FontForge, <fontforge.sourceforge.net>.
+     This is a very elaborate program with support for many outline
+     formats (Type 1, OpenType, TrueType, ...), and many advanced font
+     editing features.
+
+   * PK bitmaps from PostScript outline fonts: gsftopk from the 'xdvi'
+     distribution.  Alternatively, 'ps2pk', from
+     'CTAN:/fonts/utilities/ps2pk'.
+
+   * PostScript Type 1 font format conversion (i.e., between PFA and PFB
+     formats): <http://www.lcdf.org/type>.
+
+   * Scanned image conversion: the (aging) GNU font utilities convert
+     type specimen images to Metafont, PostScript, etc.:
+     <http://www.gnu.org/software/fontutils/>.
+
+   * Tracing bitmaps to fitted outlines: Autotrace
+     (<http://autotrace.sourceforge.net>), Potrace
+     (<http://potrace.sourceforge.net>).  For Metafont fonts, either of
+     the two programs 'mftrace' (<http://www.xs4all.nl/~hanwen/mftrace>)
+     or 'textrace' (<http://textrace.sourceforge.net>) make the job
+     easier.
+
+   * Virtual font creation: 'CTAN:/fonts/utilities/fontinst'.
+
+
+File: web2c.info,  Node: Legalisms,  Next: References,  Prev: Font utilities,  Up: Top
+
+Appendix A Legalisms
+********************
+
+In general, each file has its own copyright notice stating the copying
+permissions for that file.  Following is a summary.
+
+   The Web2c system itself and most of the original WEB source files are
+public domain.
+
+   'tex.web', the MLTeX code, 'mf.web', and 'bibtex.web', are
+copyrighted by their authors.  They may be copied verbatim, but may be
+modified only through a '.ch' file.
+
+   MetaPost-related files, including 'mp.web' itself, are copyrighted
+under X-like terms; the precise notice is included below.
+
+   Finally, the Kpathsea library is covered by the GNU Lesser General
+Public License (*note (kpathsea)Introduction::).  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
+the file 'LGPL' for complete details on the LGPL.
+
+   The following notice must be included by the terms of the MetaPost
+copyright.
+
+     Permission to use, copy, modify, and distribute this software and
+     its documentation for any purpose and without fee is hereby
+     granted, provided that the above copyright notice appear in all
+     copies and that both that the copyright notice and this permission
+     notice and warranty disclaimer appear in supporting documentation,
+     and that the names of AT&T Bell Laboratories or any of its entities
+     not be used in advertising or publicity pertaining to distribution
+     of the software without specific, written prior permission.
+
+     AT&T disclaims all warranties with regard to this software,
+     including all implied warranties of merchantability and fitness.
+     In no event shall AT&T be liable for any special, indirect or
+     consequential damages or any damages whatsoever resulting from loss
+     of use, data or profits, whether in an action of contract,
+     negligence or other tortious action, arising out of or in
+     connection with the use or performance of this software.
+
+
+File: web2c.info,  Node: References,  Next: Index,  Prev: Legalisms,  Up: Top
+
+Appendix B References
+*********************
+
+  1. Kpathsea: *Note Introduction: (kpathsea)Top.
+
+  2. Dvips and Afm2tfm: *Note Introduction: (dvips)Top.
+
+  3. The TeX Users Group: <http://www.tug.org>.  For an introduction to
+     the TeX system, see <http://tug.org/begin.html>.
+
+  4. TUGboat: <http://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 Metafont.  'TUGboat', 8(1):29-32, April 1987.
+     <http://tug.org/TUGboat/tb08-1/tb17billawala.pdf>.
+
+  8. [GMS94] Michel Goossens, Frank Mittelbach, and Alexander Samarin.
+     'The LaTeX Companion'.  Addison-Wesley, Reading, MA, USA, 1994.
+
+  9. [Hob89] John D. Hobby.  A Metafont-like system with PS output.
+     'TUGboat', 10(4):505-512, December 1989.
+     <http://tug.org/metapost>.
+
+  10. [Hob92] John D. Hobby.  A User's Manual for MetaPost.  Technical
+     Report CSTR-162, AT&T Bell Laboratories, 1992.
+
+  11. [Hob93] John D. Hobby.  Drawing Graphs with MetaPost.  Technical
+     Report CSTR-164, AT&T Bell Laboratories, 1993.
+
+  12. [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 reference to the C programming
+     language, and a good companion to Kernighan and Ritchie.
+
+  13. [KL93] Donald E. Knuth and Silvio Levy.  'The CWEB System of
+     Structured Documentation, Version 3.0'.  Addison-Wesley, Reading,
+     MA, USA, 1993.
+
+  14. [Knu84] Donald E. Knuth.  A torture test for TeX.  Report No.
+     STAN-CS-84-1027, Stanford University, Department of Computer
+     Science, 1984.
+
+  15. [Knu86a] Donald E. Knuth.  A Torture Test for METAFONT. Report No.
+     STAN-CS-86-1095, Stanford University, Department of Computer
+     Science, 1986.
+
+  16. [Knu86b] Donald E. Knuth.  'The TeXbook', volume A of 'Computers
+     and Typesetting'.  Addison-Wesley, Reading, MA, USA, 1986.
+
+  17. [Knu86c] Donald E. Knuth.  'TeX: The Program', volume B of
+     'Computers and Typesetting'.  Addison-Wesley, Reading, MA, USA,
+     1986.
+
+  18. [Knu86d] Donald E. Knuth.  'The METAFONTbook', volume C of
+     'Computers and Typesetting'.  Addison-Wesley, Reading, MA, USA,
+     1986.
+
+  19. [Knu86e] Donald E. Knuth.  'METAFONT: The Program', volume D of
+     'Computers and Typesetting'.  Addison-Wesley, Reading, MA, USA,
+     1986.
+
+  20. [Knu86f] Donald E. Knuth.  'Computer Modern Typefaces', volume E
+     of 'Computers and Typesetting'.  Addison-Wesley, Reading, MA, USA,
+     1986.
+
+  21. [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.
+
+  22. [Knu90] Donald Knuth.  Virtual Fonts: More Fun for Grand Wizards.
+     'TUGboat', 11(1):13-23, April 1990.
+     <http://tug.org/TUGboat/tb11-1/tb27knut.pdf>.
+
+  23. [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.
+
+  24. [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 in 1996.
+
+  25. [Lia83] Franklin Mark Liang.  Word hy-phen-a-tion by com-pu-ter.
+     Technical Report STAN-CS-83-977, Stanford University, August 1983.
+     <http://tug.org/docs/liang/liang-thesis.pdf>.
+
+  26. [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
+     University Press.
+
+  27. [Spi89] Michael D. Spivak.  'LAMSTeX, The Synthesis'.  The
+     TeXplorators Corporation, 3701 W. Alabama, Suite 450-273, Houston,
+     TX 77027, USA, 1989.
+
+  28. [Spi90] Michael D. Spivak.  'The Joy of TeX--A Gourmet Guide to
+     Typesetting with the AMSTeX macro package'.  American Mathematical
+     Society, Providence, RI, USA, 2nd revised edition, 1990.
+
+
+File: web2c.info,  Node: Index,  Prev: References,  Up: Top
+
+Index
+*****
+
+ [index ]
+* Menu:
+
+* #define options:                       Compile-time options.
+                                                              (line   6)
+* $ expansion in filenames:              \input filenames.    (line  47)
+* %& magic number:                       Determining the memory dump to use.
+                                                              (line  19)
+* - starting a filename:                 Option conventions.  (line  19)
+* - starts option names:                 Option conventions.  (line  11)
+* -- starts option names:                Option conventions.  (line  11)
+* --disable-dump-share configure option: Hardware and memory dumps.
+                                                              (line   6)
+* --disable-mf-nowin:                    Online Metafont graphics.
+                                                              (line  65)
+* --enable-epsfwin:                      Online Metafont graphics.
+                                                              (line  20)
+* --enable-hp2627win:                    Online Metafont graphics.
+                                                              (line  28)
+* --enable-ipc configure option:         tex invocation.      (line  92)
+* --enable-mftalkwin:                    Online Metafont graphics.
+                                                              (line  31)
+* --enable-next:                         Online Metafont graphics.
+                                                              (line  35)
+* --enable-regiswin:                     Online Metafont graphics.
+                                                              (line  40)
+* --enable-suntoolswin:                  Online Metafont graphics.
+                                                              (line  43)
+* --enable-tektronixwin:                 Online Metafont graphics.
+                                                              (line  48)
+* --enable-unitermwin:                   Online Metafont graphics.
+                                                              (line  51)
+* --help common option:                  Common options.      (line  11)
+* --verbose common option:               Common options.      (line  15)
+* --version common option:               Common options.      (line  18)
+* --with-editor=CMD:                     Editor invocation.   (line  10)
+* --with-mf-x-toolkit=KIT:               Online Metafont graphics.
+                                                              (line  59)
+* --with-x:                              Online Metafont graphics.
+                                                              (line  57)
+* -8bit:                                 Common options.      (line 105)
+* -base=BASE:                            Determining the memory dump to use.
+                                                              (line  15)
+* -base=DUMPNAME:                        Common options.      (line  34)
+* -change=CHFILE:                        mft invocation.      (line  63)
+* -charcode-format=TYPE:                 tftopl invocation.   (line  27)
+* -charcode-format=TYPE <1>:             vftovp invocation.   (line  30)
+* -D compiler options:                   Compile-time options.
+                                                              (line   6)
+* -disable-write18:                      tex invocation.      (line 127)
+* -dpi=REAL:                             dvitype invocation.  (line  24)
+* -enable-write18:                       tex invocation.      (line 126)
+* -enc:                                  tex invocation.      (line  86)
+* -file-line-error:                      Common options.      (line  25)
+* -file-line-error-style:                Common options.      (line  26)
+* -fmt=DUMPNAME:                         Common options.      (line  34)
+* -fmt=FMT:                              Determining the memory dump to use.
+                                                              (line  15)
+* -geometry, supported with Xt:          Online Metafont graphics.
+                                                              (line  69)
+* -halt-on-error:                        Common options.      (line  41)
+* -images:                               gftype invocation.   (line  26)
+* -ini:                                  Common options.      (line  45)
+* -ini <1>:                              Initial and virgin.  (line  10)
+* -interaction=STRING:                   Common options.      (line  50)
+* -ipc:                                  tex invocation.      (line  92)
+* -ipc-start:                            tex invocation.      (line  92)
+* -jobname=STRING:                       Common options.      (line  55)
+* -kpathsea-debug=NUMBER:                Common options.      (line  59)
+* -length=NUMBER:                        tangle invocation.   (line  27)
+* -loose:                                tangle invocation.   (line  46)
+* -lowercase:                            tangle invocation.   (line  35)
+* -magnification=INTEGER:                dvicopy invocation.  (line  20)
+* -magnification=INTEGER <1>:            dvitype invocation.  (line  28)
+* -max-pages=N:                          dvicopy invocation.  (line  25)
+* -max-pages=N <1>:                      dvitype invocation.  (line  33)
+* -mem=DUMPNAME:                         Common options.      (line  34)
+* -min-crossrefs=N:                      bibtex invocation.   (line  31)
+* -mixedcase:                            tangle invocation.   (line  35)
+* -mktex=FILETYPE:                       tex invocation.      (line 102)
+* -mktex=FILETYPE <1>:                   mf invocation.       (line  87)
+* -mltex:                                tex invocation.      (line 107)
+* -mnemonics:                            gftype invocation.   (line  29)
+* -no-file-line-error:                   Common options.      (line  26)
+* -no-mktex=FILETYPE:                    tex invocation.      (line 102)
+* -no-mktex=FILETYPE <1>:                mf invocation.       (line  87)
+* -no-parse-first-line:                  Common options.      (line  72)
+* -no-shell-escape:                      tex invocation.      (line 120)
+* -output-comment=STRING:                tex invocation.      (line 112)
+* -output-directory:                     Common options.      (line  66)
+* -output-directory <1>:                 Output file location.
+                                                              (line  15)
+* -output-level=N:                       dvitype invocation.  (line  36)
+* -overflow-label-offset=POINTS:         gftodvi invocation.  (line  59)
+* -page-start=PAGE-SPEC:                 dvicopy invocation.  (line  28)
+* -page-start=PAGE-SPEC <1>:             dvitype invocation.  (line  46)
+* -parse-first-line:                     Common options.      (line  71)
+* -progname=STRING:                      Common options.      (line  77)
+* -progname=STRING <1>:                  Determining the memory dump to use.
+                                                              (line  17)
+* -recorder:                             Common options.      (line  84)
+* -shell-escape:                         tex invocation.      (line 119)
+* -shell-restricted:                     tex invocation.      (line 121)
+* -show-opcodes:                         dvitype invocation.  (line  52)
+* -strict:                               tangle invocation.   (line  46)
+* -style=MFTFILE:                        mft invocation.      (line  67)
+* -T:                                    mpost invocation.    (line 115)
+* -terse:                                bibtex invocation.   (line  28)
+* -tex=TEXPROGRAM:                       mpost invocation.    (line 118)
+* -translate-file=TCXFILE:               Common options.      (line  98)
+* -troff:                                mpost invocation.    (line 115)
+* -underline:                            tangle invocation.   (line  41)
+* -uppercase:                            tangle invocation.   (line  35)
+* -x:                                    weave invocation.    (line  22)
+* ., used for output:                    Output file location.
+                                                              (line   6)
+* .2602gf:                               mf invocation.       (line  48)
+* .aux cross-reference files:            bibtex invocation.   (line   6)
+* .base:                                 Initial Metafont.    (line   6)
+* .bbl bibliography files:               bibtex invocation.   (line   6)
+* .bib bibliography databases:           bibtex invocation.   (line   6)
+* .blg BibTeX log file:                  bibtex invocation.   (line  14)
+* .fmt:                                  Initial TeX.         (line   6)
+* .mf:                                   mf invocation.       (line  24)
+* .mp:                                   mpost invocation.    (line  30)
+* .mps files and PDF:                    mpost invocation.    (line  86)
+* .NNN PostScript figures:               mpost invocation.    (line  35)
+* .NNNgf generic fonts:                  mf invocation.       (line  34)
+* .tcx character translation files:      Common options.      (line  98)
+* .tcx character translation files <1>:  TCX files.           (line   6)
+* .tex:                                  tex invocation.      (line  20)
+* .tfm output:                           mf invocation.       (line  43)
+* .tfm output <1>:                       mpost invocation.    (line  35)
+* .Xdefaults:                            Online Metafont graphics.
+                                                              (line  69)
+* .Xresources:                           Online Metafont graphics.
+                                                              (line  69)
+* 2602gf:                                mf invocation.       (line  48)
+* 8 bit clean:                           Common options.      (line 105)
+* 8 bit clean output, specifying:        Common options.      (line 105)
+* 8-bit characters:                      TCX files.           (line   6)
+* \bibliography:                         bibtex invocation.   (line  18)
+* \bibliographystyle:                    bibtex invocation.   (line  18)
+* \charsubdef and MLTeX:                 \charsubdef.         (line   6)
+* \countN:                               dvicopy invocation.  (line  28)
+* \countN <1>:                           dvitype invocation.  (line  46)
+* \font and dynamic generation:          tex invocation.      (line  41)
+* \fontdimen:                            tftopl invocation.   (line  99)
+* \immediate\write18:                    Shell escapes.       (line   6)
+* \input filenames:                      \input filenames.    (line   6)
+* \input, and pipes:                     Shell escapes.       (line  63)
+* \mag:                                  dvicopy invocation.  (line  20)
+* \mag <1>:                              dvitype invocation.  (line  28)
+* \openin, and pipes:                    Shell escapes.       (line  63)
+* \openout and security:                 tex invocation.      (line  48)
+* \openout, and pipes:                   Shell escapes.       (line  63)
+* \output routine, and \write:           Shell escapes.       (line  28)
+* \pdfshellescape:                       Shell escapes.       (line  63)
+* \string:                               \input filenames.    (line  59)
+* \tracingcharsubdef and MLTeX:          \tracingcharsubdef.  (line   6)
+* \tracinglostchars and MLTeX:           \tracingcharsubdef.  (line  11)
+* \write18 shell escape extension:       Shell escapes.       (line   6)
+* ^^ notation, avoiding:                 TCX files.           (line  87)
+* ~ expansion in filenames:              \input filenames.    (line  47)
+* abbrv.bst:                             Basic BibTeX style files.
+                                                              (line  16)
+* accented character:                    TCX files.           (line   6)
+* accents, hyphenating words with:       MLTeX.               (line   6)
+* acknowledgements:                      Introduction.        (line  52)
+* acm.bst:                               Basic BibTeX style files.
+                                                              (line  19)
+* Ada, WEB for:                          WEB.                 (line  12)
+* additional Make targets:               Additional targets.  (line   6)
+* AFM to TFM conversion:                 Font utilities available elsewhere.
+                                                              (line  12)
+* afm2tfm:                               Font utilities available elsewhere.
+                                                              (line  12)
+* afmtopl:                               Font utilities available elsewhere.
+                                                              (line  12)
+* Aleph:                                 TeX extensions.      (line  14)
+* aliases for fonts:                     Path searching.      (line  14)
+* alpha.bst:                             Basic BibTeX style files.
+                                                              (line  22)
+* American Mathematical Society, typesetting system: Formats. (line  39)
+* AMSTeX:                                Formats.             (line  39)
+* apalike.bst:                           Basic BibTeX style files.
+                                                              (line  25)
+* architecture dependencies:             Hardware and memory dumps.
+                                                              (line   6)
+* array limit, fixed:                    Runtime options.     (line  35)
+* array sizes:                           Runtime options.     (line   6)
+* assembly language routines:            Compile-time options.
+                                                              (line  21)
+* autotrace:                             Font utilities available elsewhere.
+                                                              (line  46)
+* Awk, WEB for:                          WEB.                 (line  12)
+* base file, determining:                Determining the memory dump to use.
+                                                              (line   6)
+* base files:                            Initial Metafont.    (line   6)
+* base files, need mode definitions:     Modes.               (line   6)
+* base files, plain only:                Initial Metafont.    (line  26)
+* base files, sharing:                   Hardware and memory dumps.
+                                                              (line   6)
+* bases Make target:                     Additional targets.  (line  28)
+* basic BibTeX style files:              Basic BibTeX style files.
+                                                              (line   6)
+* basic fonts and macros:                Installation.        (line  33)
+* batch languages:                       TeX.                 (line   9)
+* BDF and GF conversion:                 Font utilities available elsewhere.
+                                                              (line  15)
+* beginfig:                              mpost invocation.    (line  35)
+* Berry, Karl:                           Introduction.        (line  42)
+* BIBINPUTS, search path for bib files:  bibtex invocation.   (line  18)
+* bibliographies, creating:              BibTeX.              (line   6)
+* bibliography:                          References.          (line   6)
+* bibliography items, cross-referenced:  bibtex invocation.   (line  31)
+* bibtex:                                bibtex invocation.   (line   6)
+* BibTeX:                                BibTeX.              (line   6)
+* BibTeX collection:                     bibtex invocation.   (line  54)
+* BibTeX style files:                    Basic BibTeX style files.
+                                                              (line   6)
+* BigEndian machines:                    Hardware and memory dumps.
+                                                              (line   6)
+* binaries, linking:                     Common options.      (line  77)
+* blank lines, in TCX files:             TCX files.           (line  66)
+* boxes, memory for:                     Runtime options.     (line  20)
+* breakpoints, memory for:               Runtime options.     (line  20)
+* Breitenlohner, Peter:                  Introduction.        (line   9)
+* BSTINPUTS, search path for bst files:  bibtex invocation.   (line  18)
+* btex for MetaPost labels:              mpost invocation.    (line  48)
+* btxdoc.bib:                            bibtex invocation.   (line  48)
+* btxdoc.tex:                            bibtex invocation.   (line  42)
+* btxhak.tex:                            bibtex invocation.   (line  45)
+* byte position:                         pktype invocation.   (line  40)
+* byte position <1>:                     gftype invocation.   (line  76)
+* byte swapping:                         Hardware and memory dumps.
+                                                              (line  13)
+* c-sources Makefile target:             Additional targets.  (line  12)
+* change files, and MFT:                 mft invocation.      (line  63)
+* change files, and Tangle:              tangle invocation.   (line  11)
+* change files, and Weave:               weave invocation.    (line  14)
+* changing error messages style:         Common options.      (line  26)
+* character codes, in GFtype output:     gftype invocation.   (line  79)
+* character codes, in PKtype output:     pktype invocation.   (line  47)
+* character codes, in TCX files:         TCX files.           (line  77)
+* character proofs of fonts:             gftodvi invocation.  (line   6)
+* CHARACTER property:                    tftopl invocation.   (line 112)
+* character translation files:           TCX files.           (line   6)
+* CHARDP property:                       tftopl invocation.   (line 112)
+* CHARHT property:                       tftopl invocation.   (line 112)
+* CHARIC property:                       tftopl invocation.   (line 112)
+* CHARWD property:                       tftopl invocation.   (line 112)
+* chtopx:                                Font utilities available elsewhere.
+                                                              (line  23)
+* class name for Metafont:               Online Metafont graphics.
+                                                              (line  69)
+* cm.base:                               Initial Metafont.    (line  26)
+* cmbase.mf:                             Initial Metafont.    (line  26)
+* cmbase.mft:                            mft invocation.      (line  73)
+* cmmf.base not recommended:             Initial Metafont.    (line  26)
+* color, in DVItoMP:                     dvitomp invocation.  (line  15)
+* comments, in TCX files:                TCX files.           (line  70)
+* comments, MFT control:                 mft invocation.      (line  24)
+* common options:                        Common options.      (line   6)
+* commonalities:                         Commonalities.       (line   6)
+* compilation:                           Installation.        (line   6)
+* compile-time options:                  configure options.   (line   6)
+* compile-time options <1>:              Compile-time options.
+                                                              (line   6)
+* Computer Modern fonts, and Troff:      mpost invocation.    (line  65)
+* Computer Modern macros:                Initial Metafont.    (line  26)
+* Computer Modern Typefaces, production of: mft invocation.   (line  73)
+* configuration:                         Installation.        (line   6)
+* configuration file reading:            Path searching.      (line   6)
+* configuration file values:             Runtime options.     (line   6)
+* configuration, compile-time:           configure options.   (line   6)
+* configure --with/--enable options:     configure options.   (line   6)
+* CONTENTS.tex:                          weave invocation.    (line  22)
+* control sequence names, space for:     Runtime options.     (line  29)
+* conventions for options,:              Option conventions.  (line   6)
+* conversion, DVI to plain text:         dvitype invocation.  (line   6)
+* conversion, GF to PK:                  gftopk invocation.   (line   6)
+* conversion, GF to plain text:          gftype invocation.   (line   6)
+* conversion, PK to GF:                  pktogf invocation.   (line   6)
+* conversion, PK to plain text:          pktype invocation.   (line   6)
+* conversion, property list to TFM:      pltotf invocation.   (line   6)
+* conversion, property list to VF:       vptovf invocation.   (line   6)
+* conversion, TFM to property list:      tftopl invocation.   (line   6)
+* conversion, VF to VPL:                 vftovp invocation.   (line   6)
+* copyright notices:                     Legalisms.           (line   6)
+* Cork encoding and ISO input:           TCX files.           (line  48)
+* creating memory dumps:                 Creating memory dumps.
+                                                              (line   6)
+* cross-referenced bibliography items:   bibtex invocation.   (line  31)
+* cross-references, omitting:            weave invocation.    (line  22)
+* current directory, used for output:    Output file location.
+                                                              (line   6)
+* Curtis, Pavel:                         Introduction.        (line  42)
+* Cweb:                                  WEB.                 (line  12)
+* CWEB:                                  WEB.                 (line  12)
+* date and time, in memory dumps:        Hardware and memory dumps.
+                                                              (line  30)
+* debugging DVI utilities:               dvitype invocation.  (line  52)
+* debugging flags, specifying:           Common options.      (line  59)
+* decimal character codes, in TCX files: TCX files.           (line  77)
+* dependencies, hardware:                Hardware and memory dumps.
+                                                              (line   6)
+* design-size units:                     tftopl invocation.   (line 101)
+* device definitions, for Metafont:      Modes.               (line   6)
+* device-independent width:              pktype invocation.   (line  53)
+* device-independent width <1>:          gftype invocation.   (line 112)
+* directory structure:                   Installation.        (line  33)
+* DISPLAY:                               Online Metafont graphics.
+                                                              (line  76)
+* dot files, written by TeX programs:    tex invocation.      (line  48)
+* downloading of fonts for MetaPost labels: mpost invocation. (line  70)
+* DrawingServant:                        Online Metafont graphics.
+                                                              (line  35)
+* dump file:                             Common options.      (line  34)
+* dumping memory:                        Memory dumps.        (line   6)
+* DVI comment, specifying:               tex invocation.      (line 112)
+* DVI files, converting to MPX:          dvitomp invocation.  (line   6)
+* DVI files, explained:                  Font file formats.   (line  29)
+* DVI format definition:                 DVI utilities.       (line  14)
+* DVI opcodes, showing:                  dvitype invocation.  (line  52)
+* DVI utilities:                         DVI utilities.       (line   6)
+* dvicopy:                               dvicopy invocation.  (line   6)
+* dvitomp:                               dvitomp invocation.  (line   6)
+* dvitype DVI validation:                dvitype invocation.  (line   6)
+* dvitype output example:                dvitype output example.
+                                                              (line   6)
+* dvitype.web:                           DVI utilities.       (line  14)
+* dx horizontal escapement:              pktype invocation.   (line  57)
+* dx horizontal escapement <1>:          gftype invocation.   (line 106)
+* dy vertical escapement:                gftype invocation.   (line 106)
+* dynamic array allocation:              Runtime options.     (line  35)
+* dynamic Metafont mode definitions with smode: Modes.        (line  28)
+* dynamic packing variable:              pktype invocation.   (line  44)
+* e response at error prompt:            Editor invocation.   (line   6)
+* e-circumflex:                          \charsubdef.         (line  20)
+* e-TeX:                                 TeX extensions.      (line  10)
+* e.mft:                                 mft invocation.      (line  73)
+* EC fonts:                              tex invocation.      (line  41)
+* EC fonts <1>:                          mf invocation.       (line  24)
+* editing of bitmap fonts:               Font utilities available elsewhere.
+                                                              (line  23)
+* editor invoked at error:               Editor invocation.   (line   6)
+* eight-bit characters in filenames:     \input filenames.    (line  34)
+* empty.tcx:                             TCX files.           (line  48)
+* endian dependencies:                   Hardware and memory dumps.
+                                                              (line   6)
+* eoc GF command:                        gftype invocation.   (line  97)
+* Eplain:                                Formats.             (line  54)
+* epsf:                                  Online Metafont graphics.
+                                                              (line  19)
+* errors, editor invoked at:             Editor invocation.   (line   6)
+* escapement, horizontal:                pktype invocation.   (line  57)
+* escapement, horizontal <1>:            gftype invocation.   (line 106)
+* escapement, vertical:                  gftype invocation.   (line 106)
+* etex for MetaPost labels:              mpost invocation.    (line  48)
+* executables, shared initial and virgin: Initial and virgin. (line   6)
+* exit status, of shell escape:          Shell escapes.       (line  34)
+* expanded plain format:                 Formats.             (line  54)
+* extensions to TeX:                     TeX extensions.      (line   6)
+* extra_mem_bot:                         Runtime options.     (line  19)
+* FACE property:                         tftopl invocation.   (line  95)
+* FAMILY property:                       tftopl invocation.   (line  95)
+* FAMILY property <1>:                   tftopl invocation.   (line  99)
+* Ferguson, Michael:                     MLTeX.               (line   6)
+* file formats for fonts:                Font file formats.   (line   6)
+* file recorder:                         Common options.      (line  84)
+* filename conventions, in input files:  \input filenames.    (line   6)
+* filenames starting with -:             Option conventions.  (line  19)
+* first line of the main input file:     Common options.      (line  98)
+* fixed-point arithmetic:                Compile-time options.
+                                                              (line  21)
+* FIXPT:                                 Compile-time options.
+                                                              (line  21)
+* flag byte:                             pktype invocation.   (line  44)
+* floating-point arithmetic:             Compile-time options.
+                                                              (line  21)
+* floating-point values:                 Hardware and memory dumps.
+                                                              (line  22)
+* fmt file, determining:                 Determining the memory dump to use.
+                                                              (line   6)
+* fmt files:                             Initial TeX.         (line   6)
+* fmt files, sharing:                    Hardware and memory dumps.
+                                                              (line   6)
+* fmts Make target:                      Additional targets.  (line  24)
+* font aliases:                          Path searching.      (line  14)
+* font character code, translating:      TCX files.           (line 101)
+* font design:                           Metafont.            (line   6)
+* font downloading for MetaPost labels:  mpost invocation.    (line  70)
+* font file formats:                     Font file formats.   (line   6)
+* font proofs:                           gftodvi invocation.  (line   6)
+* font utilities:                        Font utilities.      (line   6)
+* font utilities, non-Web2c:             Font utilities available elsewhere.
+                                                              (line   6)
+* fontforge:                             Font utilities available elsewhere.
+                                                              (line  30)
+* fontinst, for creating virtual fonts:  Font utilities available elsewhere.
+                                                              (line  53)
+* fonts, basic:                          Installation.        (line  33)
+* fontutils:                             Font utilities available elsewhere.
+                                                              (line  42)
+* font_mem_size:                         Runtime options.     (line  24)
+* format files:                          Initial TeX.         (line  13)
+* formats for TeX:                       Formats.             (line   6)
+* formats Make target:                   Additional targets.  (line  17)
+* fraction routines:                     Compile-time options.
+                                                              (line  21)
+* Free Software Foundation documentation system: Formats.     (line  47)
+* freedom of Web2c:                      Introduction.        (line  23)
+* ftp.math.utah.edu:                     bibtex invocation.   (line  54)
+* generating source specials:            tex invocation.      (line 133)
+* geometric designs:                     Metafont.            (line   6)
+* geometric font scaling:                Font file formats.   (line  21)
+* geometry for Metafont:                 Online Metafont graphics.
+                                                              (line  69)
+* getopt_long_only:                      Option conventions.  (line   6)
+* GF files, explained:                   Font file formats.   (line  39)
+* GF files, output by Metafont:          mf invocation.       (line  34)
+* GF format definition:                  Font utilities.      (line  11)
+* GF output:                             mf invocation.       (line  34)
+* GF, converting PK to:                  pktogf invocation.   (line   6)
+* GF, converting to PK:                  gftopk invocation.   (line   6)
+* gftodvi:                               gftodvi invocation.  (line   6)
+* gftopk:                                gftopk invocation.   (line   6)
+* gftopxl:                               Font utilities available elsewhere.
+                                                              (line  23)
+* gftype GF validation:                  gftype invocation.   (line   6)
+* gftype.web:                            Font utilities.      (line  11)
+* glue ratio representations:            Hardware and memory dumps.
+                                                              (line  22)
+* glue, memory for:                      Runtime options.     (line  20)
+* glyph substitutions:                   MLTeX.               (line   6)
+* gray font:                             gftodvi invocation.  (line  29)
+* Gruff, Billy Goat:                     Triptrap.            (line   6)
+* gsftopk:                               Font utilities available elsewhere.
+                                                              (line  35)
+* Harbison, Samuel P.:                   Hardware and memory dumps.
+                                                              (line  34)
+* hardware and memory dumps:             Hardware and memory dumps.
+                                                              (line   6)
+* hash table, increasing size of:        Runtime options.     (line  29)
+* hash_extra:                            Runtime options.     (line  28)
+* headerbyte information:                tftopl invocation.   (line  95)
+* height, in pixels:                     pktype invocation.   (line  62)
+* help, online:                          Common options.      (line  11)
+* Henry, Patrick:                        Introduction.        (line  23)
+* Herberts, Mathias:                     Online Metafont graphics.
+                                                              (line  20)
+* hex character codes, in TCX files:     TCX files.           (line  77)
+* history:                               Introduction.        (line  42)
+* Hobby, John:                           Introduction.        (line   9)
+* horizontal escapement:                 pktype invocation.   (line  57)
+* horizontal escapement <1>:             gftype invocation.   (line 106)
+* hp2627:                                Online Metafont graphics.
+                                                              (line  27)
+* human languages, supported in TeX:     Languages and hyphenation.
+                                                              (line   6)
+* human-readable text, converting DVI to: dvitype invocation. (line   6)
+* human-readable text, converting GF to: gftype invocation.   (line   6)
+* human-readable text, converting PK to: pktype invocation.   (line   6)
+* human-readable text, converting TFM to: tftopl invocation.  (line   6)
+* human-readable text, converting VF to: vftovp invocation.   (line   6)
+* hypertext:                             TeX extensions.      (line  20)
+* hyphenation and languages:             Languages and hyphenation.
+                                                              (line   6)
+* hyphenation patterns, creating:        patgen invocation.   (line   6)
+* ice cream:                             Introduction.        (line  23)
+* identifier case:                       tangle invocation.   (line  35)
+* identifier collisions:                 tangle invocation.   (line  46)
+* identifier length:                     tangle invocation.   (line  27)
+* identifiers with underlines:           tangle invocation.   (line  41)
+* ieeetr.bst:                            Basic BibTeX style files.
+                                                              (line  31)
+* il1-t1.tcx:                            TCX files.           (line  48)
+* il2-t1.tcx:                            TCX files.           (line  48)
+* Info format:                           Formats.             (line  47)
+* initial form, enabling:                Common options.      (line  45)
+* initial Metafont:                      Initial Metafont.    (line   6)
+* initial MetaPost:                      Initial MetaPost.    (line   6)
+* initial programs:                      Initial and virgin.  (line  19)
+* initial TeX:                           Initial TeX.         (line   6)
+* initializations, lengthy:              Initial and virgin.  (line  19)
+* input filenames:                       \input filenames.    (line   6)
+* install-bases Make target:             Additional targets.  (line  28)
+* install-fmts Make target:              Additional targets.  (line  24)
+* install-formats Make target:           Additional targets.  (line  17)
+* install-mems Make target:              Additional targets.  (line  34)
+* installation:                          Installation.        (line   6)
+* interaction between TCX files and -8bit.: TCX files.        (line 104)
+* interaction mode:                      Common options.      (line  50)
+* international characters:              TCX files.           (line   6)
+* introduction:                          Introduction.        (line   6)
+* IPC:                                   IPC and TeX.         (line   6)
+* IPC_DEBUG:                             Compile-time options.
+                                                              (line  28)
+* IPC_DEBUG <1>:                         IPC and TeX.         (line  13)
+* job name:                              Common options.      (line  55)
+* kerning table, in TFM files:           tftopl invocation.   (line 101)
+* keyboard character code, translating:  TCX files.           (line 101)
+* Knuth, Donald E.:                      Introduction.        (line   9)
+* Knuth, Donald E. <1>:                  mft invocation.      (line  56)
+* KPATHSEA_DEBUG:                        Common options.      (line  59)
+* KRN property:                          tftopl invocation.   (line 101)
+* label font:                            gftodvi invocation.  (line  36)
+* LABEL property:                        tftopl invocation.   (line 101)
+* language support in TeX:               Languages and hyphenation.
+                                                              (line   6)
+* languages, hyphenation rules for:      patgen invocation.   (line   6)
+* LaTeX:                                 Formats.             (line  22)
+* Latin Modern:                          Font utilities available elsewhere.
+                                                              (line  18)
+* left side bearing:                     pktype invocation.   (line  66)
+* left side bearing <1>:                 gftype invocation.   (line  82)
+* legalisms:                             Legalisms.           (line   6)
+* licensing terms:                       Introduction.        (line  23)
+* LIG property:                          tftopl invocation.   (line 101)
+* ligature table, in TFM files:          tftopl invocation.   (line 101)
+* LIGTABLE property:                     tftopl invocation.   (line 101)
+* linking binaries:                      Common options.      (line  77)
+* links to binaries:                     Determining the memory dump to use.
+                                                              (line  30)
+* literate programming:                  WEB.                 (line   6)
+* LittleEndian machines:                 Hardware and memory dumps.
+                                                              (line   6)
+* log file, BibTeX:                      bibtex invocation.   (line  14)
+* Lua:                                   TeX extensions.      (line  26)
+* luaTeX:                                TeX extensions.      (line  26)
+* machine dependencies:                  Hardware and memory dumps.
+                                                              (line   6)
+* machine-readable, converting property lists to: pltotf invocation.
+                                                              (line   6)
+* machine-readable, converting property lists to <1>: vptovf invocation.
+                                                              (line   6)
+* MacKay, Pierre:                        Font file formats.   (line  62)
+* macro packages, major TeX:             Formats.             (line   6)
+* macros, basic:                         Installation.        (line  33)
+* macros, predefining in memory dumps:   Memory dumps.        (line   6)
+* magnification:                         dvicopy invocation.  (line  20)
+* magnification <1>:                     dvitype invocation.  (line  28)
+* main_memory:                           Runtime options.     (line  15)
+* Make targets, additional:              Additional targets.  (line   6)
+* Martin, Rick:                          Introduction.        (line  52)
+* Mathematical Reviews:                  Formats.             (line  39)
+* mathematical typesetting:              TeX.                 (line   6)
+* mem file, determining:                 Determining the memory dump to use.
+                                                              (line   6)
+* mem files, sharing:                    Hardware and memory dumps.
+                                                              (line   6)
+* memory dump to use, determining:       Determining the memory dump to use.
+                                                              (line   6)
+* memory dumps:                          Memory dumps.        (line   6)
+* memory dumps and hardware:             Hardware and memory dumps.
+                                                              (line   6)
+* memory dumps, contain date and time:   Hardware and memory dumps.
+                                                              (line  30)
+* memory dumps, creating:                Creating memory dumps.
+                                                              (line   6)
+* mems Make target:                      Additional targets.  (line  34)
+* meta characters in filenames:          \input filenames.    (line  34)
+* Metafont:                              Metafont.            (line   6)
+* Metafont geometry:                     Online Metafont graphics.
+                                                              (line  69)
+* Metafont graphics:                     Online Metafont graphics.
+                                                              (line   6)
+* Metafont input files:                  mf invocation.       (line  24)
+* Metafont invocation:                   mf invocation.       (line   6)
+* Metafont meets PostScript:             MetaPost.            (line   6)
+* Metafont online support, new devices:  Online Metafont graphics.
+                                                              (line  79)
+* Metafont source, prettyprinting:       mft invocation.      (line   6)
+* Metafont, compatibility in MetaPost:   Initial MetaPost.    (line  15)
+* Metafont, initial:                     Initial Metafont.    (line   6)
+* Metafont, MetaPost, and TeX:           Three programs.      (line   6)
+* MetaPost:                              MetaPost.            (line   6)
+* MetaPost and plain Metafont compatibility: Initial MetaPost.
+                                                              (line  15)
+* MetaPost input files:                  mpost invocation.    (line  30)
+* MetaPost invocation:                   mpost invocation.    (line   6)
+* MetaPost source, prettyprinting:       mft invocation.      (line  79)
+* MetaPost, initial:                     Initial MetaPost.    (line   6)
+* MetaPost, TeX, and Metafont:           Three programs.      (line   6)
+* metatype1:                             Font utilities available elsewhere.
+                                                              (line  18)
+* mf:                                    mf invocation.       (line   6)
+* mf.base:                               Initial Metafont.    (line  14)
+* MFEDIT:                                Editor invocation.   (line  10)
+* mfplain:                               Initial MetaPost.    (line  15)
+* mfput:                                 mf invocation.       (line  34)
+* mft:                                   mft invocation.      (line   6)
+* mftalk:                                Online Metafont graphics.
+                                                              (line  30)
+* MFTERM:                                Online Metafont graphics.
+                                                              (line  11)
+* mftmac.tex:                            mft invocation.      (line   6)
+* micro-typography:                      TeX extensions.      (line  20)
+* mktexmf, disabling:                    mf invocation.       (line  24)
+* mktextfM, disabling:                   tex invocation.      (line  41)
+* mltex:                                 MLTeX.               (line   6)
+* MLTeX, enabling:                       tex invocation.      (line 107)
+* mode needed to run Metafont:           mf invocation.       (line  48)
+* modes file needed for Metafont:        Modes.               (line   6)
+* modes.mf recommended modes file:       Modes.               (line  10)
+* mode_def:                              Modes.               (line  15)
+* mode_setup:                            Modes.               (line  15)
+* Morgan, Tim:                           Introduction.        (line  42)
+* Morris, Bob:                           Introduction.        (line  52)
+* MPEDIT:                                Editor invocation.   (line  10)
+* mpgraph.ps:                            mpost invocation.    (line  18)
+* mpman.ps:                              mpost invocation.    (line   6)
+* mpost:                                 mpost invocation.    (line   6)
+* mpost, reason for name change:         Installation.        (line  19)
+* mpout:                                 mpost invocation.    (line  35)
+* mproof.tex:                            mpost invocation.    (line  70)
+* mptrap Make target:                    Additional targets.  (line  41)
+* mptrap test:                           Triptrap.            (line   6)
+* mptrap.readme:                         Triptrap.            (line   6)
+* MPX files, converting from DVI files:  dvitomp invocation.  (line   6)
+* Multi-lingual TeX:                     MLTeX.               (line   6)
+* N tilde:                               \charsubdef.         (line  36)
+* new graphics support for Metafont:     Online Metafont graphics.
+                                                              (line  79)
+* newrow GF command:                     gftype invocation.   (line  93)
+* next:                                  Online Metafont graphics.
+                                                              (line  34)
+* non-Unix system, compiling on:         Additional targets.  (line  12)
+* non-windows-capable Metafont:          Online Metafont graphics.
+                                                              (line  65)
+* NO_X11WIN:                             Online Metafont graphics.
+                                                              (line  56)
+* NUL, not allowed in filenames:         \input filenames.    (line  34)
+* octal character codes, in TCX files:   TCX files.           (line  77)
+* offset for overflow labels:            gftodvi invocation.  (line  59)
+* online Metafont graphics:              Online Metafont graphics.
+                                                              (line   6)
+* opcodes, showing DVI:                  dvitype invocation.  (line  52)
+* optical font scaling:                  Font file formats.   (line  21)
+* option conventions:                    Option conventions.  (line   6)
+* origin:                                pktype invocation.   (line  66)
+* output directory, specifying:          Common options.      (line  66)
+* output directory, specifying <1>:      Output file location.
+                                                              (line  15)
+* output file location:                  Output file location.
+                                                              (line   6)
+* output files, written by TeX programs: tex invocation.      (line  48)
+* output_comment for DVI files:          tex invocation.      (line 112)
+* overflow label offset:                 gftodvi invocation.  (line  59)
+* packet length:                         pktype invocation.   (line  50)
+* page, starting:                        dvicopy invocation.  (line  28)
+* page, starting <1>:                    dvitype invocation.  (line  46)
+* parsing the first line:                Common options.      (line  72)
+* Pascal, creating from WEB:             tangle invocation.   (line   6)
+* patgen:                                patgen invocation.   (line   6)
+* path searching:                        Path searching.      (line   6)
+* path searching debugging:              Common options.      (line  59)
+* PDF:                                   TeX extensions.      (line  20)
+* PDF, and .mps files:                   mpost invocation.    (line  86)
+* pdfTeX:                                TeX extensions.      (line  20)
+* permissions, legal:                    Legalisms.           (line   6)
+* PFA and PFB conversion:                Font utilities available elsewhere.
+                                                              (line  39)
+* pfaedit:                               Font utilities available elsewhere.
+                                                              (line  30)
+* PiCTeX, increasing memory for:         Runtime options.     (line  20)
+* pipes, reading and writing:            Shell escapes.       (line  63)
+* pixel height:                          pktype invocation.   (line  62)
+* pixel width:                           pktype invocation.   (line  62)
+* PK bitmaps from PostScript:            Font utilities available elsewhere.
+                                                              (line  35)
+* PK files, explained:                   Font file formats.   (line  39)
+* PK files, not output by Metafont:      mf invocation.       (line  34)
+* PK format definition:                  Font utilities.      (line  11)
+* PK, converting GF to:                  gftopk invocation.   (line   6)
+* PK, converting to GF:                  pktogf invocation.   (line   6)
+* pktogf:                                pktogf invocation.   (line   6)
+* pktype PK validation:                  pktype invocation.   (line   6)
+* pktype.web:                            Font utilities.      (line  11)
+* PL files, explained:                   Font file formats.   (line  46)
+* plain Metafont, compatibility in MetaPost: Initial MetaPost.
+                                                              (line  15)
+* plain text, converting DVI to:         dvitype invocation.  (line   6)
+* plain text, converting GF to:          gftype invocation.   (line   6)
+* plain text, converting PK to:          pktype invocation.   (line   6)
+* plain text, converting TFM to:         tftopl invocation.   (line   6)
+* plain text, converting VF to:          vftovp invocation.   (line   6)
+* plain.base:                            Initial Metafont.    (line  14)
+* plain.bst:                             Basic BibTeX style files.
+                                                              (line  11)
+* plain.fmt:                             Initial TeX.         (line  13)
+* plain.mft:                             mft invocation.      (line  67)
+* pltotf:                                pltotf invocation.   (line   6)
+* pool file, writing:                    tangle invocation.   (line  16)
+* Poole, Simon:                          Online Metafont graphics.
+                                                              (line  50)
+* pooltype:                              pooltype invocation. (line   6)
+* portable filenames:                    \input filenames.    (line  40)
+* PostScript fonts, and Troff:           mpost invocation.    (line  65)
+* PostScript meets Metafont:             MetaPost.            (line   6)
+* PostScript output:                     mpost invocation.    (line  35)
+* PostScript to PK bitmaps:              Font utilities available elsewhere.
+                                                              (line  35)
+* PostScript Type 1 font conversion:     Font utilities available elsewhere.
+                                                              (line  39)
+* PostScript, and font scaling:          Font file formats.   (line  21)
+* potrace:                               Font utilities available elsewhere.
+                                                              (line  46)
+* predefined macros and memory dumps:    Memory dumps.        (line   6)
+* prettyprinting Metafont source:        mft invocation.      (line   6)
+* prettyprinting WEB programs:           weave invocation.    (line   6)
+* primitives, new:                       TeX extensions.      (line  10)
+* printable characters, specifying:      TCX files.           (line  87)
+* printer characteristics, for Metafont: Modes.               (line   6)
+* production use:                        Initial and virgin.  (line  15)
+* program name, determines memory dump:  Determining the memory dump to use.
+                                                              (line  30)
+* program names, special:                Common options.      (line  45)
+* program names, special <1>:            Common options.      (line  77)
+* program names, special <2>:            tex invocation.      (line 107)
+* prologues:                             mpost invocation.    (line 115)
+* prologues, and EPSF output:            mpost invocation.    (line  80)
+* proof mode:                            mf invocation.       (line  48)
+* proof sheets, of fonts:                gftodvi invocation.  (line   6)
+* property list format:                  tftopl invocation.   (line  43)
+* property list, converting TFM to:      tftopl invocation.   (line   6)
+* property list, converting VF to virtual: vftovp invocation. (line   6)
+* ps2pk:                                 Font utilities available elsewhere.
+                                                              (line  35)
+* psfonts.map, read by MetaPost:         mpost invocation.    (line  80)
+* PXL files, explained:                  Font file formats.   (line  39)
+* pxtoch:                                Font utilities available elsewhere.
+                                                              (line  23)
+* Raichle, Bernd:                        MLTeX.               (line   6)
+* reading, additional:                   Introduction.        (line  60)
+* readonly directory, running TeX in:    Output file location.
+                                                              (line  15)
+* readonly directory, running TeX in <1>: Output file location.
+                                                              (line  19)
+* reallocation of arrays:                Runtime options.     (line  35)
+* redefined character substitutions:     \tracingcharsubdef.  (line   6)
+* reference pixel:                       pktype invocation.   (line  66)
+* references:                            References.          (line   6)
+* regis:                                 Online Metafont graphics.
+                                                              (line  39)
+* Regis graphics support:                Online Metafont graphics.
+                                                              (line  40)
+* regression testing:                    tex invocation.      (line 112)
+* repeated rows:                         pktype invocation.   (line  76)
+* representation of strings:             pooltype invocation. (line  30)
+* restricted shell escapes:              Shell escapes.       (line   6)
+* right side bearing:                    pktype invocation.   (line  66)
+* right side bearing <1>:                gftype invocation.   (line  82)
+* Rokicki, Tomas:                        Introduction.        (line  42)
+* run length encoded bitmaps:            pktype invocation.   (line  76)
+* run length encoded bitmaps <1>:        gftype invocation.   (line  89)
+* runtime options:                       Runtime options.     (line   6)
+* scaled pixels:                         pktype invocation.   (line  57)
+* scaled pixels <1>:                     gftype invocation.   (line 106)
+* scaling of fonts:                      Font file formats.   (line  21)
+* scanned images of fonts:               Font utilities available elsewhere.
+                                                              (line  42)
+* security, and output files:            tex invocation.      (line  48)
+* security, and shell escapes:           Shell escapes.       (line   6)
+* security, and write:                   mpost invocation.    (line  92)
+* security, and \openout:                tex invocation.      (line  48)
+* shapes:                                Metafont.            (line   6)
+* sharing memory dumps:                  Hardware and memory dumps.
+                                                              (line   6)
+* shell commands in TeX:                 Shell escapes.       (line   6)
+* shell_escape enabling in TeX:          Shell escapes.       (line   6)
+* shell_escape_commands:                 Shell escapes.       (line  52)
+* siam.bst:                              Basic BibTeX style files.
+                                                              (line  35)
+* side bearings:                         pktype invocation.   (line  66)
+* side bearings <1>:                     gftype invocation.   (line  82)
+* slant font:                            gftodvi invocation.  (line  39)
+* slides, producing:                     Formats.             (line  61)
+* SliTeX:                                Formats.             (line  61)
+* small Metafont memory and modes:       Modes.               (line  15)
+* smode and dynamic Metafont mode definition: Modes.          (line  28)
+* sockets:                               IPC and TeX.         (line   6)
+* space-terminated filenames:            \input filenames.    (line  10)
+* Spiderweb:                             WEB.                 (line  12)
+* Stallman, Richard:                     Introduction.        (line  52)
+* starting page:                         dvicopy invocation.  (line  28)
+* starting page <1>:                     dvitype invocation.  (line  46)
+* Steele Jr., Guy L.:                    Hardware and memory dumps.
+                                                              (line  34)
+* stopping at the first error:           Common options.      (line  41)
+* strategy, overall:                     Introduction.        (line  17)
+* string numbers, displaying:            pooltype invocation. (line   6)
+* string pool, writing:                  tangle invocation.   (line  16)
+* string representation:                 pooltype invocation. (line  30)
+* style design, for BibTeX:              bibtex invocation.   (line  45)
+* style files:                           mft invocation.      (line  67)
+* substitutions of font glyphs:          MLTeX.               (line   6)
+* sun:                                   Online Metafont graphics.
+                                                              (line  42)
+* sun-gfx.c:                             Online Metafont graphics.
+                                                              (line  43)
+* Suntools:                              Online Metafont graphics.
+                                                              (line  43)
+* SunView:                               Online Metafont graphics.
+                                                              (line  43)
+* swap space, as array limit:            Runtime options.     (line  35)
+* swapping bytes:                        Hardware and memory dumps.
+                                                              (line  13)
+* syntax of TCX files:                   TCX files.           (line  65)
+* system C library function:             Shell escapes.       (line   6)
+* system command:                        Shell escapes.       (line   6)
+* T1 encoding and ISO input:             TCX files.           (line  48)
+* Tachikawa, Elizabeth:                  Font file formats.   (line  62)
+* tangle:                                tangle invocation.   (line   6)
+* targets, additional Make:              Additional targets.  (line   6)
+* TCX character translation files:       TCX files.           (line   6)
+* tek:                                   Online Metafont graphics.
+                                                              (line  47)
+* Tektronix:                             Online Metafont graphics.
+                                                              (line  48)
+* Tektronix 4014:                        Online Metafont graphics.
+                                                              (line  51)
+* TERM:                                  Online Metafont graphics.
+                                                              (line  11)
+* terminator for filenames:              \input filenames.    (line  10)
+* terse output:                          bibtex invocation.   (line  28)
+* tex:                                   tex invocation.      (line   6)
+* TeX, bibliographies for:               bibtex invocation.   (line  54)
+* TeX, creating from Metafont:           mft invocation.      (line   6)
+* TeX, creating from WEB:                weave invocation.    (line   6)
+* TeX, description of:                   TeX.                 (line   6)
+* TeX, extensions to:                    TeX extensions.      (line   6)
+* TeX, format packages for:              Formats.             (line   6)
+* TeX, initial:                          Initial TeX.         (line   6)
+* TeX, input files found:                tex invocation.      (line  20)
+* TeX, invocation:                       tex invocation.      (line   6)
+* TeX, Metafont, and MetaPost:           Three programs.      (line   6)
+* TeX, Web2c implementation of:          Introduction.        (line   9)
+* tex.fmt:                               Initial TeX.         (line  13)
+* TEXBIB, search path for bib files:     bibtex invocation.   (line  18)
+* TEXEDIT:                               Editor invocation.   (line  10)
+* texfonts.map:                          Path searching.      (line  14)
+* Texinfo:                               Formats.             (line  47)
+* texmf.cnf:                             Path searching.      (line   6)
+* texmfmp.c:                             Online Metafont graphics.
+                                                              (line  79)
+* TEXMFOUTPUT, used for reading:         Output file location.
+                                                              (line  25)
+* TEXMFOUTPUT, used if . unwritable:     Output file location.
+                                                              (line  19)
+* texput:                                tex invocation.      (line  33)
+* TFM files, converting property lists to: pltotf invocation. (line   6)
+* TFM files, explained:                  Font file formats.   (line  12)
+* TFM files, memory for:                 Runtime options.     (line  25)
+* TFM files, output by Metafont:         mf invocation.       (line  43)
+* TFM files, output by MetaPost:         mpost invocation.    (line  35)
+* TFM width of characters:               pktype invocation.   (line  53)
+* TFM width of characters <1>:           gftype invocation.   (line 112)
+* tftopl:                                tftopl invocation.   (line   6)
+* three programs:                        Three programs.      (line   6)
+* time and date, in memory dumps:        Hardware and memory dumps.
+                                                              (line  30)
+* title font:                            gftodvi invocation.  (line  33)
+* toolkits, X:                           Online Metafont graphics.
+                                                              (line  59)
+* torture tests:                         Triptrap.            (line   6)
+* translation file for TeX, specifying:  Common options.      (line  98)
+* translation from WEB to C:             Introduction.        (line  17)
+* trap Make target:                      Additional targets.  (line  41)
+* trap test:                             Triptrap.            (line   6)
+* trapman.tex:                           Triptrap.            (line   6)
+* Trickey, Howard:                       Introduction.        (line  42)
+* trip Make target:                      Additional targets.  (line  41)
+* trip test:                             Triptrap.            (line   6)
+* tripman.tex:                           Triptrap.            (line   6)
+* triptrap Make target:                  Additional targets.  (line  41)
+* Troff, and MetaPost:                   mpost invocation.    (line  65)
+* Troff, WEB for:                        WEB.                 (line  12)
+* Trojan horses and TeX programs:        tex invocation.      (line  48)
+* TUGboat bibliography:                  bibtex invocation.   (line  54)
+* Type 1 conversion:                     Font utilities available elsewhere.
+                                                              (line  39)
+* type design, personal:                 Initial Metafont.    (line  31)
+* type programs, DVI:                    dvitype invocation.  (line   6)
+* type programs, GF:                     gftype invocation.   (line   6)
+* type programs, PK:                     pktype invocation.   (line   6)
+* type programs, pool:                   pooltype invocation. (line   6)
+* typeface families:                     Metafont.            (line   6)
+* typeface specimen sheets:              Font utilities available elsewhere.
+                                                              (line  42)
+* typesetting:                           TeX.                 (line   6)
+* Unicode:                               TeX extensions.      (line  14)
+* Unicode <1>:                           TeX extensions.      (line  31)
+* Unicode input:                         tex invocation.      (line  86)
+* uniterm:                               Online Metafont graphics.
+                                                              (line  50)
+* unsrt.bst:                             Basic BibTeX style files.
+                                                              (line  39)
+* UTF-8 input:                           tex invocation.      (line  86)
+* validation, of DVI files:              dvitype invocation.  (line   6)
+* validation, of GF files:               gftype invocation.   (line   6)
+* validation, of PK files:               pktype invocation.   (line   6)
+* validation, of TFM files:              tftopl invocation.   (line   6)
+* validation, of VF files:               vftovp invocation.   (line   6)
+* verbose BibTeX output, suppressing:    bibtex invocation.   (line  28)
+* verbosity, enabling:                   Common options.      (line  15)
+* version number, finding:               Common options.      (line  18)
+* vertical escapement:                   gftype invocation.   (line 106)
+* VF files, converting property lists to: vptovf invocation.  (line   6)
+* vftovp:                                vftovp invocation.   (line   6)
+* virgin programs:                       Initial and virgin.  (line  15)
+* virtual font creation:                 Font utilities available elsewhere.
+                                                              (line  53)
+* virtual fonts, expanding:              dvicopy invocation.  (line   6)
+* virtual-fonts.knuth:                   Font file formats.   (line  56)
+* virtualfonts.txt:                      Font file formats.   (line  56)
+* vptovf:                                vptovf invocation.   (line   6)
+* weave:                                 weave invocation.    (line   6)
+* WEB:                                   WEB.                 (line   6)
+* web environments, and security:        Shell escapes.       (line  70)
+* WEB pool files, displaying:            pooltype invocation. (line   6)
+* WEB programs, compiling:               tangle invocation.   (line   6)
+* WEB programs, typesetting:             weave invocation.    (line   6)
+* WEB2C, search path for TCX files:      TCX files.           (line  35)
+* Weber, Olaf:                           Introduction.        (line  42)
+* webmac.tex:                            weave invocation.    (line  22)
+* webman.tex:                            WEB.                 (line  12)
+* whitespace, in TCX files:              TCX files.           (line  68)
+* whitespace-terminated filenames:       \input filenames.    (line  10)
+* width, device-independent:             pktype invocation.   (line  53)
+* width, device-independent <1>:         gftype invocation.   (line 112)
+* width, in pixels:                      pktype invocation.   (line  62)
+* word processor, not:                   TeX.                 (line   9)
+* writing memory dumps:                  Creating memory dumps.
+                                                              (line   6)
+* X bitmap fonts:                        Font utilities available elsewhere.
+                                                              (line  15)
+* X class name for Metafont:             Online Metafont graphics.
+                                                              (line  69)
+* x offset:                              pktype invocation.   (line  66)
+* X resources:                           Online Metafont graphics.
+                                                              (line  69)
+* X toolkits and Metafont:               Online Metafont graphics.
+                                                              (line  59)
+* xampl.bib:                             bibtex invocation.   (line  51)
+* xbfe, bitmap font editor:              Font utilities available elsewhere.
+                                                              (line  23)
+* XeTeX:                                 TeX extensions.      (line  31)
+* xfed, bitmap font editor:              Font utilities available elsewhere.
+                                                              (line  23)
+* xfedor, bitmap font editor:            Font utilities available elsewhere.
+                                                              (line  23)
+* Xlib:                                  Online Metafont graphics.
+                                                              (line  56)
+* Xlib support:                          Online Metafont graphics.
+                                                              (line  59)
+* Xt:                                    Online Metafont graphics.
+                                                              (line  56)
+* Xt support:                            Online Metafont graphics.
+                                                              (line  59)
+* xterm:                                 Online Metafont graphics.
+                                                              (line  56)
+* y offset:                              pktype invocation.   (line  66)
+
+
+
+Tag Table:
+Node: Top2754
+Node: Introduction3749
+Node: Installation6907
+Node: configure options9009
+Node: Compile-time options11031
+Node: Additional targets12133
+Node: Triptrap13410
+Node: Runtime options14937
+Node: Commonalities16695
+Node: Option conventions17296
+Node: Common options18519
+Node: Path searching22899
+Node: Output file location23871
+Node: Three programs25196
+Node: Initial and virgin25950
+Node: Memory dumps26879
+Node: Creating memory dumps27335
+Node: Determining the memory dump to use28546
+Node: Hardware and memory dumps30127
+Node: Editor invocation32577
+Node: \input filenames33444
+Node: TeX36437
+Node: tex invocation37588
+Node: Initial TeX44491
+Node: Formats45855
+Node: Languages and hyphenation48781
+Node: MLTeX49211
+Node: \charsubdef50699
+Node: \tracingcharsubdef53022
+Node: TCX files53597
+Node: patgen invocation59037
+Node: Shell escapes59743
+Node: IPC and TeX63307
+Node: TeX extensions63877
+Node: Metafont65008
+Node: mf invocation66296
+Node: Initial Metafont70133
+Node: Modes71763
+Node: Online Metafont graphics74013
+Node: gftodvi invocation77438
+Node: mft invocation80258
+Node: MetaPost84256
+Node: mpost invocation85018
+Node: Initial MetaPost90194
+Node: dvitomp invocation91116
+Node: BibTeX91781
+Node: bibtex invocation92142
+Node: Basic BibTeX style files94440
+Node: WEB95770
+Node: tangle invocation97011
+Node: weave invocation99134
+Node: pooltype invocation100541
+Node: DVI utilities101671
+Node: dvicopy invocation102603
+Node: dvitype invocation103886
+Node: dvitype output example106221
+Node: Font utilities109272
+Node: Font file formats110452
+Node: gftopk invocation113721
+Node: pktogf invocation114912
+Node: pktype invocation116078
+Node: gftype invocation118901
+Node: tftopl invocation123404
+Node: pltotf invocation127997
+Node: vftovp invocation129048
+Node: vptovf invocation131283
+Node: Font utilities available elsewhere132310
+Node: Legalisms134690
+Node: References136844
+Node: Index141411
+
+End Tag Table


Property changes on: branches/stable/source/src/texk/web2c/doc/web2c.info
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: branches/stable/source/src/texk/web2c/doc/web2c.texi
===================================================================
--- branches/stable/source/src/texk/web2c/doc/web2c.texi	                        (rev 0)
+++ branches/stable/source/src/texk/web2c/doc/web2c.texi	2017-03-07 19:07:21 UTC (rev 769)
@@ -0,0 +1,4179 @@
+\input texinfo
+ at setfilename web2c.info
+ at settitle Web2c: A @TeX{} implementation
+
+ at tex
+\expandafter\ifx\csname url\endcsname\relax
+  \errhelp{You must update texinfo.tex to at least version 3.8.
+The latest version is available from ftp://ftp.tug.org/tex/texinfo.tex.}
+  \errmessage{Your texinfo.tex is too old}
+  \csname bye\expandafter\endcsname
+\fi
+ at end tex
+
+ at set version 2016
+ at set month-year April 2016
+
+ at c Define new indices for commands in auxiliary files, filenames, and options.
+ at defcodeindex cm
+ at defcodeindex fl
+ at defcodeindex op
+
+ at c Put everything in one index (arbitrarily chosen to be the concept index).
+ at syncodeindex cm cp
+ at syncodeindex fl cp
+ at syncodeindex fn cp
+ at syncodeindex ky cp
+ at syncodeindex op cp
+ at syncodeindex pg cp
+ at syncodeindex vr cp
+
+ at dircategory TeX
+ at direntry
+* Web2c: (web2c).               TeX, Metafont, and companion programs.
+ at end direntry
+ at dircategory Individual utilities
+ at direntry
+* bibtex: (web2c)bibtex invocation.             Maintaining bibliographies.
+* dvicopy: (web2c)dvicopy invocation.           Virtual font expansion
+* dvitomp: (web2c)dvitomp invocation.           DVI to MPX (MetaPost pictures).
+* dvitype: (web2c)dvitype invocation.           DVI to human-readable text.
+* gftodvi: (web2c)gftodvi invocation.           Generic font proofsheets.
+* gftopk: (web2c)gftopk invocation.             Generic to packed fonts.
+* gftype: (web2c)gftype invocation.             GF to human-readable text.
+* mf: (web2c)mf invocation.                     Creating typeface families.
+* mft: (web2c)mft invocation.                   Prettyprinting Metafont source.
+* mltex: (web2c)MLTeX.                          Multi-lingual TeX.
+* mpost: (web2c)mpost invocation.               Creating technical diagrams.
+* patgen: (web2c)patgen invocation.             Creating hyphenation patterns.
+* pktogf: (web2c)pktogf invocation.             Packed to generic fonts.
+* pktype: (web2c)pktype invocation.             PK to human-readable text.
+* pltotf: (web2c)pltotf invocation.             Property list to TFM.
+* pooltype: (web2c)pooltype invocation.         Display WEB pool files.
+* tangle: (web2c)tangle invocation.             WEB to Pascal.
+* tex: (web2c)tex invocation.                   Typesetting.
+* tftopl: (web2c)tftopl invocation.             TFM -> property list.
+* vftovp: (web2c)vftovp invocation.             Virtual font -> virtual pl.
+* vptovf: (web2c)vptovf invocation.             Virtual pl -> virtual font.
+* weave: (web2c)weave invocation.               WEB to TeX.
+ at end direntry
+
+ at copying
+This file documents the installation and use of the programs in Web2c,
+an implementation of Donald Knuth's TeX system.
+
+Copyright @copyright{} 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+2004, 2005, 2007, 2008, 2009 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.
+
+ at ignore
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries a copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+ at end ignore
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions 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 language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation
+ at end copying
+
+
+ at titlepage
+
+ at title Web2c
+ at subtitle for version @value{version}
+ at subtitle @value{month-year}
+ at author Karl Berry
+ at author Olaf Weber
+ at author @url{http://tug.org/web2c}
+
+ at page
+ at vskip 0pt plus 1filll
+ at insertcopying
+ at end titlepage
+
+ at contents
+
+ at ifnottex
+ at node Top
+ at top Web2c
+
+This document describes how to install and use the programs in the Web2c
+implementation of the @TeX{} system, especially for Unix systems.  It
+corresponds to Web2c version @value{version}, released in
+ at value{month-year}.
+
+ at menu
+* Introduction::                A brief introduction.
+* Installation::                How to compile and install Web2c.
+* Commonalities::               Option syntax, standard options, memory dumps.
+* TeX::                         Typesetting.
+* Metafont::                    Typeface design.
+* MetaPost::                    Technical illustrations.
+* BibTeX::                      Reusable bibliographies.
+* WEB::                         Literate programming.
+* DVI utilities::               DVI expansion.
+* Font utilities::              Font format conversion.
+* Legalisms::                   Blah blah blah.
+* References::                  Books and such.
+* Index::                       General index.
+ at end menu
+ at end ifnottex
+
+
+ at node Introduction
+ at chapter Introduction
+
+ at cindex introduction
+
+This manual corresponds to version @value{version} of Web2c, released in
+ at value{month-year}.
+
+ at cindex Knuth, Donald E.
+ at cindex @TeX{}, Web2c implementation of
+ at cindex Hobby, John
+ at cindex Breitenlohner, Peter
+ at dfn{Web2c} is the name of a @TeX{} implementation, originally for Unix,
+but now also running under DOS, Amiga, and other operating systems. By
+ at dfn{@TeX{} implementation}, we mean all of the standard programs
+developed by the Stanford @TeX{} project directed by Donald E. Knuth:
+Metafont, DVItype, GFtoDVI, Bib at TeX{}, Tangle, etc., as well as @TeX{}
+itself. Other programs are also included: DVIcopy, written by Peter
+Breitenlohner, MetaPost and its utilities (derived from Metafont), by
+John Hobby, etc.
+
+ at cindex translation from WEB to C
+ at cindex strategy, overall
+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 @file{web2c/lib} directory in the sources).
+Therefore, it will not work without change on an arbitrary WEB program.
+
+ at cindex licensing terms
+ at cindex freedom of Web2c
+ at cindex ice cream
+ at cindex Henry, Patrick
+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).  @xref{unixtex.ftp,,,
+kpathsea, Kpathsea}, for the practical details of how to obtain Web2c.
+
+Different parts of the Web2c distribution have different licensing
+terms, however, reflecting the different circumstances of their
+creation; consult each source file for exact details.  The main
+practical implication for redistributors of Web2c is that the executables
+are covered by the GNU General Public License, and therefore anyone
+who gets a binary distribution must also get the sources, as explained
+by the terms of the GPL (@pxref{Copying, , , kpathsea, Kpathsea}). The
+GPL covers the Web2c executables, including @code{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.
+
+ at cindex history
+ at cindex Rokicki, Tomas
+ at cindex Trickey, Howard
+ at cindex Curtis, Pavel
+ at cindex Morgan, Tim
+ at cindex Berry, Karl
+ at cindex Weber, Olaf
+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.  Dozens of
+other people have contributed; their names are listed in the
+ at file{ChangeLog} files.
+
+ at cindex acknowledgements
+ at cindex Martin, Rick
+ at cindex Morris, Bob
+ at cindex Stallman, Richard
+Other acknowledgements: The University of Massachusetts at Boston
+(particularly 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,
+ at TeX{} would not exist in the first place without Donald E. Knuth.
+
+ at cindex reading, additional
+Further reading: @xref{References}.
+
+
+ at include install.texi
+
+
+ at node Commonalities
+ at chapter Commonalities
+
+ at cindex commonalities
+
+Many aspects of the @TeX{} system are the same among more than one
+program, so we describe all those pieces together, here.
+
+ at menu
+* Option conventions::   -- or -, = or ` ' for values.
+* Common options::       --help --version --verbose, and TeX/MF/MP options.
+* Path searching::       Features of the common path searching library.
+* Output file location:: TEXMFOUTPUT allows output in places other than `.'.
+* Three programs::       TeX, Metafont, and MetaPost have a lot in common.
+ at end menu
+
+
+ at node Option conventions
+ at section Option conventions
+
+ at cindex option conventions
+ at cindex conventions for options,
+
+ at findex getopt_long_only
+To provide a clean and consistent behavior, we chose to have all these
+programs use the GNU function @code{getopt_long_only} to parse command
+lines.  However, we do use in a restricted mode, where all the options
+have to come before the rest of the arguments.
+
+ at opindex - @r{starts option names}
+ at opindex -- @r{starts option names}
+As a result, you can:
+ at itemize @bullet
+ at item
+use @samp{-} or @samp{--} to start an option name;
+
+ at item
+use any unambiguous abbreviation for an option name;
+
+ at item
+separate option names and values with either @samp{=} or one or more
+spaces;
+
+ at item
+ at flindex - @r{starting a filename}
+ at cindex filenames starting with @samp{-}
+use filenames that would otherwise look like options by putting them
+after an option @samp{--}.
+ at end itemize
+
+By convention, non-option arguments, if specified, generally define the
+name of an input file, as documented for each program.
+
+If a particular option with a value is given more than once, it is the
+last value that counts.
+
+For example, the following command line specifies the options
+ at samp{foo}, @samp{bar}, and @samp{verbose}; gives the value @samp{baz}
+to the @samp{abc} option, and the value @samp{xyz} to the @samp{quux}
+option; and specifies the filename @file{-myfile-}.
+
+ at example
+-foo --bar -verb -abc=baz -quux karl --quux xyz -- -myfile-
+ at end example
+
+
+ at node Common options
+ at section Common options
+
+ at cindex common options
+All of these programs accept the standard GNU @samp{--help} and
+ at samp{--version} options, and several programs accept
+ at samp{--verbose}.  Rather than writing identical descriptions for
+every program, they are described here.
+
+ at table @samp
+ at item --help
+ at opindex --help @r{common option}
+ at cindex help, online
+Print a usage message listing basic usage and all available options to
+standard output, then exit successfully.
+
+ at item --verbose
+ at opindex --verbose @r{common option}
+ at cindex verbosity, enabling
+Print progress reports to standard output.
+
+ at item --version
+ at opindex --version @r{common option}
+ at cindex version number, finding
+Print the version number to standard output, then exit successfully.
+ at end table
+
+ at TeX{}, Metafont, and MetaPost have a number of additional options in
+common:
+
+ at table @samp
+ at item -file-line-error
+ at opindex -file-line-error
+ at itemx -no-file-line-error
+ at opindex -no-file-line-error
+ at opindex -file-line-error-style
+ at cindex changing error messages style
+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 @samp{-file-line-error-style}.
+
+ at item -fmt=@var{dumpname}
+ at itemx -base=@var{dumpname}
+ at itemx -mem=@var{dumpname}
+ at opindex -fmt=@var{dumpname}
+ at opindex -base=@var{dumpname}
+ at opindex -mem=@var{dumpname}
+ at cindex dump file
+Use @var{dumpname} instead of the program name or a @samp{%&} line to
+determine the name of the memory dump file read (@samp{fmt} for @TeX{},
+ at samp{base} for Metafont, @samp{mem} for MetaPost).  @xref{Memory
+dumps}.  Also sets the program name to @var{dumpname} if no
+ at samp{-progname} option was given.
+
+ at item -halt-on-error
+ at opindex -halt-on-error
+ at cindex stopping at the first error
+Stop processing and exit when an error occurs, as opposed to the normal
+process of trying to recover and continue.
+
+ at item -ini
+ at opindex -ini
+ at cindex program names, special
+ at cindex initial form, enabling
+Enable the ``initial'' form of the program (@pxref{Initial and
+virgin}).  This is implicitly set if the program name is @code{initex}
+resp.@: @code{inimf}.
+
+ at item -interaction=@var{string}
+ at opindex -interaction=@var{string}
+ at cindex interaction mode
+Set the interaction mode from the command line.  The @var{string} must
+be one of @samp{batchmode}, @samp{nonstopmode}, @samp{scrollmode}, or
+ at samp{errorstopmode}.
+
+ at item -jobname=@var{string}
+ at opindex -jobname=@var{string}
+ at cindex job name
+Set the job name to @var{string}, instead of deriving it from the name
+of the input file.
+
+ at item -kpathsea-debug=@var{number}
+ at opindex -kpathsea-debug=@var{number}
+ at vindex KPATHSEA_DEBUG
+ at cindex debugging flags, specifying
+ at cindex path searching debugging
+Set path searching debugging flags according to the bits of @var{number}
+(@pxref{Debugging,,,kpathsea,Kpathsea}).  You can also specify this in
+ at code{KPATHSEA_DEBUG} environment variable (for all Web2c programs).
+(The command line value overrides.)  The most useful value is @samp{-1},
+to get all available output.
+
+ at item -output-directory=@var{dirname}
+ at opindex -output-directory
+ at cindex output directory, specifying
+Specify the directory @var{dirname} to which output files are written.
+Also look for input files in @var{dirname} first, before looking along
+the normal search path.  @xref{Output file location}.
+
+ at item -parse-first-line
+ at opindex -parse-first-line
+ at itemx -no-parse-first-line
+ at opindex -no-parse-first-line
+ at cindex parsing the first line
+Check or disable checking whether the first line of the main input
+file starts with @samp{%&}, and parse it if it does.  This line can be
+used specify the format and/or a TCX file.
+
+ at item -progname=@var{string}
+ at opindex -progname=@var{string}
+ at cindex binaries, linking
+ at cindex linking binaries
+ at cindex program names, special
+Set program (and memory dump) name to @var{string}.  This may affect the
+search paths and other values used (@pxref{Config files,,, kpathsea,
+Kpathsea}).  Using this option is equivalent to making a link named
+ at var{string} to the binary and then invoking the binary under that
+name.  @xref{Memory dumps}.
+
+ at item -recorder
+ at opindex -recorder
+ at cindex file recorder
+Enable the filename recorder.  This makes the program save a list of the
+opened files into a file with (by default) extension @samp{.fls}.  For
+Aleph, this option is always on, and the file has extension @samp{.ofl}.
+
+Ordinarily, the @samp{.fls} file is written to the same location as
+the @samp{.log} file, for example, respecting
+ at option{-output-directory} if it is given (@pxref{Output file
+location}).  However, if @TeX{} processing is done on the command line
+(or in response to the @samp{**} prompt), the @samp{.fls} might be
+written to the current directory, or include an integer (the current
+pid), as in @file{texput1234.fls}.  You can use @option{-jobname} to
+explicitly set the basename.
+
+ at item -translate-file=@var{tcxfile}
+ at opindex -translate-file=@var{tcxfile}
+ at cindex translation file for @TeX{}, specifying
+ at flindex .tcx @r{character translation files}
+ at cindex first line of the main input file
+Use @var{tcxfile} to define which characters are printable and translations 
+between the internal and external character sets.   Moreover, 
+ at var{tcxfile} can be explicitly declared in  the first line of the main 
+input file @samp{%& -translate-file=@var{tcxfile}}.
+This is the recommended method for portability reasons.
+ at xref{TCX files}.
+
+ at item -8bit
+ at opindex -8bit
+ at cindex 8 bit clean
+ at flindex 8 bit clean output, specifying
+This option specifies that by default all characters should be
+considered printable.  If @samp{-translate-file} was given as well, then the
+TCX file may mark characters as non-printable.
+
+ at end table
+
+
+ at node Path searching
+ at section Path searching
+
+ at cindex path searching
+
+ at flindex texmf.cnf
+ at cindex configuration file reading
+All of the Web2c programs, including @TeX{}, which do path searching use
+the Kpathsea routines to do so.  The precise names of the environment
+and configuration file variables which get searched for particular file
+formatted are therefore documented in the Kpathsea manual
+(@pxref{Supported file formats,,, kpathsea, Kpathsea}).  Reading
+ at file{texmf.cnf} (@pxref{Config files,,, kpathsea, Kpathsea}), invoking
+ at code{mktex at dots{}} scripts (@pxref{mktex scripts,,, kpathsea,
+Kpathsea}), and so on are all handled by Kpathsea.
+
+ at cindex font aliases
+ at cindex aliases for fonts
+ at flindex texfonts.map
+The programs which read fonts make use of another Kpathsea feature:
+ at file{texfonts.map}, which allows arbitrary aliases for the actual names
+of font files; for example, @samp{Times-Roman} for @samp{ptmr8r.tfm}.
+The distributed (and installed by default) @file{texfonts.map} includes
+aliases for many widely available PostScript fonts by their PostScript
+names.
+
+
+ at node Output file location
+ at section Output file location
+
+ at cindex output file location
+ at cindex current directory, used for output
+ at flindex . at r{, used for output}
+All the programs generally follow the usual convention for output files.
+Namely, they are placed in the directory current when the program is
+run, regardless of any input file location; or, in a few cases, output
+is to standard output.
+
+For example, if you run @samp{tex /tmp/foo}, for example, the output
+will be in @file{./foo.dvi} and @file{./foo.log}, not
+ at file{/tmp/foo.dvi} and @file{/tmp/foo.log}.
+
+ at opindex -output-directory
+ at cindex output directory, specifying
+ at cindex readonly directory, running @TeX{} in
+You can use the @samp{-output-directory} option to cause all output
+files that would normally be written in the current directory to be
+written in the specified directory instead.  @xref{Common options}.
+
+ at vindex TEXMFOUTPUT at r{, used if @samp{.} unwritable}
+ at cindex readonly directory, running @TeX{} in
+If the current directory is not writable, and @samp{-output-directory}
+is not specified, the main programs (@TeX{}, Metafont, MetaPost, and
+Bib at TeX{}) make an exception: if the config file or environment
+variable value @code{TEXMFOUTPUT} is set (it is not by default),
+output files are written to the directory specified.
+
+ at vindex TEXMFOUTPUT at r{, used for reading}
+ at code{TEXMFOUTPUT} is also checked for input files, as @TeX{} often
+generates files that need to be subsequently read; for input, no
+suffixes (such as @samp{.tex}) are added by default and no exhaustive
+path searching is done, the input name is
+simply checked as given.
+
+
+ at node Three programs
+ at section Three programs: Metafont, MetaPost, and @TeX{}
+
+ at cindex three programs
+ at cindex @TeX{}, Metafont, and MetaPost
+ at cindex Metafont, MetaPost, and @TeX{}
+ at cindex MetaPost, @TeX{}, and Metafont
+
+ at TeX{}, Metafont, and MetaPost have a number of features in common.
+Besides the ones here, the common command-line options are described in
+the previous section.  The configuration file options that let you
+control some array sizes and other features are described in
+ at ref{Runtime options}.
+
+ at menu
+* Initial and virgin::          Making memory dumps vs. production runs.
+* Memory dumps::                .fmt/.base files for fast startup.
+* Editor invocation::           The `e' response at errors.
+* \input filenames::            ~ and $ expansion in TeX/MF/MP.
+ at end menu
+
+
+ at node Initial and virgin
+ at subsection Initial and virgin
+
+ at cindex executables, shared initial and virgin
+The @TeX{} and Metafont programs each have two main variants, called
+ at dfn{initial} and @dfn{virgin}.  MetaPost no longer makes this
+distinction.
+
+The initial form is enabled if:
+ at enumerate
+ at item
+ at opindex -ini
+the @samp{-ini} option was specified; or
+ at item
+the program name is @file{initex} resp.@: @file{inimf}; or
+ at item
+the first line of the main input file is @samp{%&ini};
+ at end enumerate
+ at noindent
+otherwise, the virgin form is used.
+
+ at cindex virgin programs
+ at cindex production use
+The @dfn{virgin} form is the one generally invoked for production use.
+The first thing it does is read a memory dump (@pxref{Determining the
+memory dump to use}), and then proceeds on with the main job.
+
+ at cindex initial programs
+ at cindex initializations, lengthy
+The @dfn{initial} form is generally used only to create memory dumps
+(see the next section).  It starts up more slowly than the virgin form,
+because it must do lengthy initializations that are encapsulated in the
+memory dump file.
+
+
+ at node Memory dumps
+ at subsection Memory dumps
+
+ at cindex memory dumps
+
+ at cindex dumping memory
+ at cindex macros, predefining in memory dumps
+ at cindex predefined macros and memory dumps
+In typical use, @TeX{} and Metafont require a large number of
+macros to be predefined; therefore, they support @dfn{memory dump}
+files, which can be read much more efficiently than ordinary source
+code. 
+
+ at menu
+* Creating memory dumps::
+* Determining the memory dump to use::
+* Hardware and memory dumps::
+ at end menu
+
+
+ at node Creating memory dumps
+ at subsubsection Creating memory dumps
+
+ at cindex memory dumps, creating
+ at cindex creating memory dumps
+ at cindex writing memory dumps
+
+The programs all create memory dumps in slightly idiosyncratic (thought
+substantially similar) way, so we describe the details in separate
+sections (references below).  The basic idea is to run the initial
+version of the program (@pxref{Initial and virgin}), read the source
+file to define the macros, and then execute the @code{\dump} primitive.
+
+Also, each program uses a different filename extension for its memory
+dumps, since although they are completely analogous they are not
+interchangeable (@TeX{} cannot read a Metafont memory dump, for
+example).
+
+Here is a list of filename extensions with references to examples of
+creating memory dumps:
+
+ at table @asis
+ at item @TeX{}
+(@samp{.fmt}) @xref{Initial TeX,,Initial @TeX{}}.
+
+ at item Metafont
+(@samp{.base}) @xref{Initial Metafont}.
+ at end table
+
+When making memory dumps, the programs read environment variables and
+configuration files for path searching and other values as usual.  If
+you are making a new installation and have environment variables
+pointing to an old one, for example, you will probably run into
+difficulties.
+
+
+ at node Determining the memory dump to use
+ at subsubsection Determining the memory dump to use
+
+ at cindex memory dump to use, determining
+ at cindex fmt file, determining
+ at cindex base file, determining
+ at cindex mem file, determining
+
+The virgin form (@pxref{Initial and virgin}) of each program always
+reads a memory dump before processing normal source input.  All three
+programs determine the memory dump to use in the same way:
+
+ at enumerate
+ at item
+If the first non-option command-line argument begins with @samp{&}, the
+program uses the remainder of that argument as the memory dump name.
+For example, running @samp{tex \&super} reads @file{super.fmt}.  (The
+backslash protects the @samp{&} against interpretation by the shell.)
+
+ at item
+ at opindex -fmt=@var{fmt}
+ at opindex -base=@var{base}
+If the @samp{-fmt} resp.@: @samp{-base} option is
+specified, its value is used.
+
+ at item
+ at opindex -progname=@var{string}
+If the @samp{-progname} option is specified, its value is used.
+
+ at item
+ at kindex %& @r{magic number}
+If the first line of the main input file (which must be specified on the
+command line, not in response to @samp{**}) is @code{%&@var{dump}}, and
+ at var{dump} is an existing memory dump of the appropriate type,
+ at var{dump} is used.
+
+The first line of the main input file can also specify which character
+translation file is to be used: @code{%&-translate-file=@var{tcxfile}}
+(@pxref{TCX files}).
+
+These two roles can be combined: @code{%&@var{dump}
+-translate-file=@var{tcxfile}}.  If this is done, the name of the dump
+must be given first.
+
+ at item
+ at cindex program name, determines memory dump
+ at cindex links to binaries
+Otherwise, the program uses the program invocation name, most commonly
+ at file{tex} resp.@: @file{mf}.  For example, if @file{latex} is a link
+to @file{tex}, and the user runs @samp{latex foo}, @file{latex.fmt}
+will be used.
+
+ at end enumerate
+
+
+ at node Hardware and memory dumps
+ at subsubsection Hardware and memory dumps
+
+ at cindex hardware and memory dumps
+ at cindex memory dumps and hardware
+ at cindex sharing memory dumps
+ at cindex fmt files, sharing
+ at cindex base files, sharing
+ at cindex mem files, sharing
+
+ at cindex LittleEndian machines
+ at cindex BigEndian machines
+ at cindex endian dependencies
+ at cindex machine dependencies
+ at cindex architecture dependencies
+ at cindex dependencies, hardware
+ at opindex --disable-dump-share configure @r{option}
+By default, memory dump files are generally sharable between
+architectures of different types; specifically, on machines of different
+endianness (@pxref{Byte order,,,libc,GNU C Library}).  (This is a
+feature of the Web2c implementation, and is not true of all @TeX{}
+implementations.)  If you specify @samp{--disable-dump-share} to
+ at code{configure}, however, memory dumps will be endian-dependent.
+
+ at cindex byte swapping
+ at cindex swapping bytes
+The reason to do this is speed.  To achieve endian-independence, the
+reading of memory dumps on LittleEndian architectures, such as PC's and
+DEC architectures, is somewhat slowed (all the multibyte values have to
+be swapped).  Usually, this is not noticeable, and the advantage of
+being able to share memory dumps across all platforms at a site far
+outweighs the speed loss.  But if you're installing Web2c for use on
+LittleEndian machines only, perhaps on a PC being used only by you, you
+may wish to get maximum speed.
+
+ at cindex floating-point values
+ at cindex glue ratio representations
+ at TeX{}nically, even without @samp{--disable-dump-share}, sharing of
+ at file{.fmt} files cannot be guaranteed to work.  Floating-point values
+are always written in native format, and hence will generally not be
+readable across platforms.  Fortunately, @TeX{} uses floating point
+only to represent glue ratios, and all common formats (plain,
+ at LaTeX{}, AMS at TeX{}, @dots{}) do not do any glue setting at
+ at file{.fmt}-creation time.  Metafont does not use floating point in
+any dumped value at all.
+
+ at cindex date and time, in memory dumps
+ at cindex time and date, in memory dumps
+ at cindex memory dumps, contain date and time
+Incidentally, different memory dump files will never compare equal
+byte-for-byte, because the program always dumps the current date and
+time. So don't be alarmed by just a few bytes difference.
+
+ at cindex Harbison, Samuel P.
+ at cindex Steele Jr., Guy L.
+If you don't know what endianness your machine is, and you're curious,
+here is a little C program to tell you. (The @code{configure} script
+contains a similar program.)  This is from the book @cite{C: A Reference
+Manual}, by Samuel P. Harbison and Guy L. Steele
+Jr@:. (@pxref{References}).
+
+ at example
+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");
+
+  exit (u.c[sizeof (long) - 1] == 1);
+@}
+ at end example
+
+
+ at node Editor invocation
+ at subsection Editor invocation
+
+ at cindex editor invoked at error
+ at cindex errors, editor invoked at
+ at opindex e @r{response at error prompt}
+
+ at TeX{}, Metafont, and MetaPost all (by default) stop and ask for user
+intervention at an error.  If the input came from a file, and the user
+responds with @kbd{e} or @kbd{E}, the program invokes an editor.
+
+ at vindex TEXEDIT
+ at vindex MFEDIT
+ at vindex MPEDIT
+ at opindex --with-editor=@var{cmd}
+Specifying @samp{--with-editor=@var{cmd}} to @code{configure} sets the
+default editor command string to @var{cmd}.  The environment
+variables/configuration values @code{TEXEDIT}, @code{MFEDIT}, and
+ at code{MPEDIT} (respectively) override this.  If @samp{--with-editor} is
+not specified, the default is @code{vi +%d %s} on Unix, and an
+invocation of the @TeX{}works editor on Windows.  (See
+ at file{texmf.cnf} for the precise values.)
+
+In this string, @samp{%d} is replaced by the line number of the error,
+and @samp{%s} is replaced by the name of the current input file.
+
+
+ at node \input filenames
+ at subsection @code{\input} filenames
+
+ at cindex input filenames
+ at cindex filename conventions, in input files
+ at findex \input @r{filenames}
+
+ at TeX{}, Metafont, and MetaPost source programs can all read other source
+files with the @code{\input} (@TeX{}) and @code{input} (MF and MP)
+primitives:
+ at example
+\input @var{name} % in TeX
+ at end example
+
+ at cindex space-terminated filenames
+ at cindex whitespace-terminated filenames
+ at cindex terminator for filenames
+The file @var{name} can always be terminated with whitespace; for
+Metafont and MetaPost, the statement terminator @samp{;} also works.
+(@LaTeX{} and other macro packages provide other interfaces to
+ at code{\input} that allow different notation; here we are concerned only
+with the primitive operation.)  
+
+As of Web2c version 7.5.3, double-quote characters can be used to
+include spaces or other special cases.  In typical use, the @samp{"}
+characters surround the entire filename:
+ at example
+\input "filename with spaces"
+ at end example
+
+Technically, the quote characters can be used inside the name, and
+can enclose any characters, as in:
+ at example
+\input filename" "with" "spaces
+ at end example
+
+One more point.  In @LaTeX{}, the quotes are needed inside the braces, thus
+ at example
+\input@{a b@}    % fails
+\input@{"a b"@}  % ok
+ at end example
+
+This quoting mechanism comes into play @emph{after} @TeX{} has
+tokenized and expanded the input.  So, multiple spaces and tabs may be
+seen as a single space, active characters such as @samp{~} are
+expanded first, and so on.  (See below.)
+
+ at cindex NUL, not allowed in filenames
+ at cindex eight-bit characters in filenames
+ at cindex meta characters in filenames
+On the other hand, various C library routines and Unix itself use the null
+byte (character code zero, ASCII NUL) to terminate strings.  So
+filenames in Web2c cannot contain nulls, even though @TeX{} itself does
+not treat NUL specially.
+In addition, some older Unix variants do not allow eight-bit characters
+(codes 128--255) in filenames.
+
+ at cindex portable filenames
+For maximal portability of your document across systems, use only the
+characters @samp{a}-- at samp{z}, @samp{0}-- at samp{9}, and @samp{.}, and
+restrict your filenames to at most eight characters (not including the
+extension), and at most a three-character extension.  Do not use
+anything but simple filenames, since directory separators vary among
+systems; instead, add the necessary directories to the appropriate
+search path.
+
+ at kindex ~ @r{expansion in filenames}
+ at kindex $ @r{expansion in filenames}
+Finally, the present Web2c implementation does @samp{~} and @samp{$}
+expansion on @var{name}, unlike Knuth's original implementation and
+older versions of Web2c.  Thus:
+ at example
+\input ~jsmith/$foo.bar
+ at end example
+will dereference the environment variable or Kpathsea config file value
+ at samp{foo} and read that file extended with @samp{.bar} in user
+ at samp{jsmith}'s home directory.  You can also use braces, as in
+ at samp{$@{foo@}bar}, if you want to follow the variable name with a letter,
+numeral, or @samp{_}.
+
+(So another way to get a program to read a filename containing
+whitespace is to define an environment variable and dereference it.)
+
+ at findex \string
+In all the common @TeX{} formats (plain @TeX{}, @LaTeX{}, AMS at TeX{}),
+the characters @samp{~} and @samp{$} have special category codes, so to
+actually use these in a document you have to change their catcodes or
+use @code{\string}.  (The result is unportable anyway, see the
+suggestions above.)  The place where they are most likely to be useful
+is when typing interactively.
+
+
+ at node TeX
+ at chapter @TeX{}: Typesetting
+
+ at cindex @TeX{}, description of
+ at cindex typesetting
+ at cindex mathematical typesetting
+
+ at TeX{} is a typesetting system: it was especially designed to handle
+complex mathematics, as well as most ordinary text typesetting.
+
+ at cindex batch languages
+ at cindex word processor, not
+ at 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 @cite{The @TeX{}book}
+(@pxref{References}).  Many other books on @TeX{}, introductory and
+otherwise, are available.
+
+ at menu
+* tex invocation::              Invoking TeX.
+* Initial TeX::                 Making format files.
+* Formats::                     Major TeX macro packages.
+* Languages and hyphenation::   TeX supports many human languages.
+* Shell escapes::               Running subprograms from TeX.
+* IPC and TeX::                 DVI output to a socket.
+* TeX extensions::              Changes to the TeX language.
+ at end menu
+
+
+ at node tex invocation
+ at section @code{tex} invocation
+
+ at pindex tex
+ at cindex @TeX{}, invocation
+
+ at TeX{} (usually invoked as @code{tex}) formats the given text and
+commands, and outputs a corresponding device-independent representation
+of the typeset document.  This section merely describes the options
+available in the Web2c implementation.  For a complete description of
+the @TeX{} typesetting language, see @cite{The @TeX{}book}
+(@pxref{References}).
+
+ at TeX{}, Metafont, and MetaPost process the command line (described
+here) and determine their memory dump (fmt) file in the same way
+(@pxref{Memory dumps}).  Synopses:
+
+ at example
+tex [@var{option}]@dots{} [@var{texname}[.tex]] [@var{tex-commands}]
+tex [@var{option}]@dots{} \@var{first-line}
+tex [@var{option}]@dots{} &@var{fmt} @var{args}
+ at end example
+
+ at flindex .tex
+ at cindex @TeX{}, input files found
+ at TeX{} searches the usual places for the main input file @var{texname}
+(@pxref{Supported file formats,,, kpathsea, Kpathsea}), extending
+ at var{texname} with @file{.tex} if necessary.  To see all the
+relevant paths, set the environment variable @code{KPATHSEA_DEBUG} to
+ at samp{-1} before running the program.
+
+After @var{texname} is read, @TeX{} processes any remaining
+ at var{tex-commands} on the command line as regular @TeX{} input.  Also,
+if the first non-option argument begins with a @TeX{} escape character
+(usually @code{\}), @TeX{} processes all non-option command-line
+arguments as a line of regular @TeX{} input.
+
+If no arguments or options are specified, @TeX{} prompts for an
+input file name with @samp{**}.
+
+ at flindex texput
+ at TeX{} writes the main DVI output to the file
+ at file{@var{basetexname}.dvi}, where @var{basetexname} is the basename of
+ at var{texname}, or @samp{texput} if no input file was specified.  A DVI
+file is a device-independent binary representation of your @TeX{}
+document.  The idea is that after running @TeX{}, you translate the DVI
+file using a separate program to the commands for a particular output
+device, such as a PostScript printer
+(@pxref{Top,,Introduction,dvips,Dvips}) or an X Window System display
+(see xdvi(1)).
+
+ at cindex EC fonts
+ at pindex mktextfM at r{, disabling}
+ at findex \font @r{and dynamic generation}
+ at TeX{} also reads TFM files for any fonts you load in your document with
+the @code{\font} primitive.  By default, it runs an external program
+named @file{mktextfm} to create any nonexistent TFM files.  You can
+disable this at configure-time or runtime (@pxref{mktex
+configuration,,, kpathsea, Kpathsea}).  This is enabled mostly for the
+sake of the EC fonts, which can be generated at any size.
+
+ at findex \openout @r{and security}
+ at cindex security, and @code{\openout}
+ at cindex output files, written by @TeX{} programs
+ at cindex Trojan horses and @TeX{} programs
+ at cindex dot files, written by @TeX{} programs
+ at cindex security, and output files
+ at TeX{} can write output files, via the @code{\openout} primitive; this opens
+a security hole vulnerable to Trojan horse attack: an unwitting user could
+run a @TeX{} program that overwrites, say, @file{~/.rhosts}.  (MetaPost has
+a @code{write} primitive with similar implications).  To alleviate this and
+similar problems the functions @code{kpathsea_out_name_ok} and
+ at code{kpathsea_in_name_ok} from the Kpathse library (@pxref{Calling
+sequence,,, kpathsea, Kpathsea}) are used to determine if a given filename
+is acceptable to be opened for output or input, depending on the setting of
+the configuration variables @code{openout_any} and @code{openin_any}:
+ at samp{a} (for ``any'', the default for @code{openin_any}), @samp{r} (for
+``restricted''), or @samp{p} (for ``paranoid'', the default for
+ at code{openout_any}).
+
+In any case, all @code{\openout} filenames are recorded in the log file,
+except those opened on the first line of input, which is processed when
+the log file has not yet been opened.
+
+The program accepts the following options, as well as the standard
+ at samp{-help} and @samp{-version} (@pxref{Common options}):
+ at table @samp
+ at item -enc
+ at itemx -[no]-file-line-error
+ at itemx -fmt=@var{fmtname}
+ at itemx -halt-on-error
+ at itemx -ini
+ at itemx -interaction=@var{string}
+ at itemx -ipc
+ at itemx -ipc-start
+ at itemx -jobname=@var{string}
+ at itemx -kpathsea-debug=@var{number}
+ at itemx -[no]parse-first-line
+ at itemx -output-directory
+ at itemx -progname=@var{string}
+ at itemx -recorder
+ at itemx -translate-file=@var{tcxfile}
+ at itemx -8bit
+These options are common to @TeX{}, Metafont, and MetaPost.
+ at xref{Common options}.
+
+ at item -enc
+ at opindex -enc
+ at cindex Unicode input
+ at cindex UTF-8 input
+Enable enc at TeX{} extensions, such as @code{\mubyte}.  This can be used
+to support Unicode UTF-8 input encoding.  See
+ at url{http://www.olsak.net/enctex.html}.
+
+ at item -ipc
+ at itemx -ipc-start
+ at opindex -ipc
+ at opindex -ipc-start
+ at opindex --enable-ipc configure @r{option}
+With either option, @TeX{} writes its DVI output to a socket as well as
+to the usual @file{.dvi} file.  With @samp{-ipc-start}, @TeX{} also
+opens a server program at the other end to read the output.  @xref{IPC
+and TeX,,IPC and @TeX{}}.
+
+These options are available only if the @samp{--enable-ipc} option was
+specified to @code{configure} during installation of Web2c.
+
+ at item -mktex=@var{filetype}
+ at itemx -no-mktex=@var{filetype}
+ at opindex -mktex=@var{filetype}
+ at opindex -no-mktex=@var{filetype}
+Turn on or off the @samp{mktex} script associated with @var{filetype}.
+For @TeX{} proper, @var{filetype} can only be @samp{tex} and
+ at samp{tfm}, but for pdf at TeX{} and lua at TeX{}, it can also be @samp{pk}.
+
+ at item -mltex
+ at opindex -mltex
+ at cindex ML at TeX{}, enabling
+ at cindex program names, special
+If we are @code{INITEX} (@pxref{Initial and virgin}), enable ML at TeX{}
+extensions such as @code{\charsubdef}.  Implicitly set if the program
+name is @code{mltex}.  @xref{MLTeX,,ML at TeX{}}.
+
+ at item -output-comment=@var{string}
+ at opindex -output-comment=@var{string}
+ at vindex output_comment @r{for DVI files}
+ at cindex DVI comment, specifying
+ at cindex regression testing
+Use @var{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 @samp{output_comment}.
+
+ at item -shell-escape
+ at opindex -shell-escape
+ at itemx -no-shell-escape
+ at opindex -no-shell-escape
+ at itemx -shell-restricted
+ at opindex -shell-restricted
+Enable, or disable, or enable with restrictions the
+ at code{\write18@{@var{shell-command}@}} feature for external executing
+shell commands.  @xref{Shell escapes}.
+
+ at item -enable-write18
+ at opindex -enable-write18
+ at itemx -disable-write18
+ at opindex -disable-write18
+Synonyms for @option{-shell-escape} and @option{-no-shell-escape}, for
+compatibility with MiK at TeX{}.  (MiK at TeX{} also accepts both pairs of
+options.)  @xref{Shell escapes}.
+
+ at item -src-specials
+ at itemx -src-specials=@var{string}
+ at cindex generating source specials
+This option makes @TeX{} output specific source information using
+ at samp{\special} commands in the DVI file. These @samp{\special} track
+the current file name and line number.
+
+Using the first form of this option, the @samp{\special} commands are
+inserted automatically.
+
+In the second form of the option, @var{string} is
+a comma separated list of the following values: @samp{cr},
+ at samp{display}, @samp{hbox}, @samp{math}, @samp{par}, @samp{parend},
+ at samp{vbox}. You can use this list to specify where you want  @TeX{} to
+output such commands. For example, @samp{-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 @samp{\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 @samp{\special} will not affect the functioning of this
+option.  The commands inserted into the token stream are
+hard-coded to always use the @samp{\special} primitive.
+
+ at TeX{} does not pass the trip test when this option is enabled.
+
+ at end table
+
+
+ at node Initial TeX
+ at section Initial @TeX{}
+
+ at cindex initial @TeX{}
+ at cindex @TeX{}, initial
+
+ at flindex .fmt
+ at cindex fmt files
+The @dfn{initial} form of @TeX{} is invoked by @samp{tex -ini}.  It
+does lengthy initializations avoided by the ``virgin'' (@code{vir})
+form, so as to be capable of dumping @samp{.fmt} files (@pxref{Memory
+dumps}).  For a detailed comparison of virgin and initial forms,
+ at pxref{Initial and virgin}.
+
+For a list of options and other information, @pxref{tex invocation}.
+
+ at flindex plain.fmt
+ at flindex tex.fmt
+ at cindex format files
+Unlike Metafont and MetaPost, many format files are commonly used with
+ at TeX{}.  The standard one implementing the features described in the
+ at cite{@TeX{}book} is @samp{plain.fmt}, also known as @samp{tex.fmt}
+(again, @pxref{Memory dumps}).  It is created by default during
+installation, but you can also do so by hand if necessary (e.g., if an
+update to @file{plain.tex} is issued):
+ at example
+tex -ini '\input plain \dump'
+ at end example
+ at noindent
+(The quotes prevent interpretation of the backslashes from the shell.)
+Then install the resulting @file{plain.fmt} in @samp{$(fmtdir)}
+(@file{/usr/local/share/texmf/web2c} by default), and link
+ at file{tex.fmt} to it.
+
+The necessary invocation for generating a format file differs for each
+format, so instructions that come with the format should explain.  The
+top-level @file{web2c} Makefile has targets for making most common
+formats: @t{plain latex amstex texinfo eplain}.  @xref{Formats}, for
+more details on @TeX{} formats.
+
+
+ at node Formats
+ at section Formats
+
+ at cindex formats for @TeX{}
+ at cindex @TeX{}, format packages for
+ at cindex macro packages, major @TeX{}
+
+ at TeX{} @dfn{formats} are large collections of macros, often dumped
+into a @file{.fmt} file (@pxref{Memory dumps}) by @code{tex -ini}
+(@pxref{Initial TeX}).  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 @code{fmts} Make variable; by default,
+only the @samp{plain} and @samp{latex} formats are made.
+
+You can get the latest versions of most of these formats from the CTAN
+archives in subdirectories of @file{@var{CTAN:}/macros} (for CTAN info,
+ at pxref{unixtex.ftp,,, kpathsea, Kpathsea}).  The archive
+ at url{ftp://ftp.tug.org/tex/lib.tar.gz} (also available from CTAN)
+contains most of these formats (although perhaps not the absolute latest
+version), among other things.
+
+ at table @t
+ at item latex
+ at cindex @LaTeX{}
+The most widely used format.  The current release is named `@LaTeX{}
+2e'; 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 at dmn{pt} Computer Modern
+italic font''.  The @LaTeX{} home page: @url{http://www.latex-project.org}.
+
+ at item context
+Con at TeX{}t is an independent macro package which has a basic document
+structuring approach similar to @LaTeX{}.  It also supports creating
+interactive PDF files and has integrated MetaPost support, among many
+other interesting features.  The Con at TeX{}t home page:
+ at url{http://www.pragma-ade.com}.
+
+ at item amstex
+ at cindex AMS at TeX{}
+ at cindex American Mathematical Society, typesetting system
+ at cindex Mathematical Reviews
+The official typesetting system of the American Mathematical Society.
+Like @LaTeX{}, it encourages generic markup commands.  The AMS also
+provides many @LaTeX{} package for authors who prefer @LaTeX{}.  Taken
+together, they are used to produce nearly all AMS publications, e.g.,
+ at cite{Mathematical Reviews}.  The AMS at TeX{} home page:
+ at url{http://www.ams.org/tex}.
+
+ at item texinfo
+ at cindex Texinfo
+ at cindex Info format
+ at cindex Free Software Foundation documentation system
+The documentation system developed and maintained by the Free Software
+Foundation for their software manuals.  It can be automatically
+converted into plain text, a machine-readable on-line format called
+`info', HTML, etc.  The Texinfo home page:
+ at url{http://www.gnu.org/software/texinfo}.
+
+ at item eplain
+ at cindex Eplain
+ at cindex expanded plain format
+The ``expanded plain'' format provides various common features (e.g.,
+symbolic cross-referencing, tables of contents, indexing, citations
+using Bib at TeX{}), for those authors who prefer to handle their own
+high-level formatting.  The Eplain home page:
+ at url{http://www.tug.org/eplain}.
+
+ at item slitex
+ at cindex Sli at TeX{}
+ at cindex slides, producing
+An obsolete @LaTeX{} 2.09 format for making slides.  It is replaced by
+the @samp{slides} document class, along with the @samp{beamer},
+ at samp{texpower}, and other packages.
+
+ at end table
+
+
+ at node Languages and hyphenation
+ at section Languages and hyphenation
+
+ at cindex language support in @TeX{}
+ at cindex human languages, supported in @TeX{}
+ at cindex hyphenation and languages
+
+ at TeX{} supports most natural languages.  See also @ref{TeX extensions,,
+ at TeX{} extensions}.
+
+ at menu
+* MLTeX::                Multi-lingual TeX.
+* TCX files::            Support for different character sets & fonts.
+* patgen invocation::    Creating hyphenation patterns.
+ at end menu
+
+
+ at node MLTeX
+ at subsection ML at TeX{}: Multi-lingual @TeX{}
+
+ at pindex mltex
+ at cindex Multi-lingual @TeX{}
+
+ at cindex Ferguson, Michael
+ at cindex Raichle, Bernd
+ at cindex accents, hyphenating words with
+ at cindex glyph substitutions
+ at cindex substitutions of font glyphs
+Multi-lingual @TeX{} (@code{mltex}) is an extension of @TeX{} originally
+written by Michael Ferguson and now updated and maintained by Bernd
+Raichle.  It allows the use of non-existing glyphs in a font by
+declaring glyph substitutions.  These are restricted to substitutions of
+an accented character glyph, which need not be defined in the current
+font, by its appropriate @code{\accent} construction using a base and
+accent character glyph, which do have to exist in the current font.
+This substitution is automatically done behind the scenes, if necessary,
+and thus ML at TeX{} additionally supports hyphenation of words containing
+an accented character glyph for fonts missing this glyph (e.g., Computer
+Modern).  Standard @TeX{} suppresses hyphenation in this case.
+
+ML at TeX{} works at @file{.fmt}-creation time: the basic idea is to
+specify the @samp{-mltex} option to @TeX{} when you @code{\dump} a
+format.  Then, when you subsequently invoke @TeX{} and read that
+ at code{.fmt} file, the ML at TeX{} features described below will be enabled.
+
+Generally, you use special macro files to create an ML at TeX{} @code{.fmt}
+file.
+
+The sections below describe the two new primitives that ML at TeX{} defines.
+Aside from these, ML at TeX{} is completely compatible with standard @TeX{}.
+
+ at menu
+* \charsubdef::                 Character substitution definitions.
+* \tracingcharsubdef::          Tracing substitutions.
+ at end menu
+
+
+ at node \charsubdef
+ at subsubsection @code{\charsubdef}: Character substitutions
+
+ at findex \charsubdef @r{and ML at TeX{}}
+
+The most important primitive ML at TeX{} adds is @code{\charsubdef}, used
+in a way reminiscent of @code{\chardef}:
+ at example
+\charsubdef @var{composite} [=] @var{accent} @var{base}
+ at end example
+
+Each of @var{composite}, @var{accent}, and @var{base} are font glyph
+numbers, expressed in the usual @TeX{} syntax: @t{`\e} symbolically,
+ at t{'145} for octal, @t{"65} for hex, @t{101} for decimal.
+
+ML at TeX{}'s @code{\charsubdef} declares how to construct an accented
+character glyph (not necessarily existing in the current font) using two
+character glyphs (that do exist).  Thus it defines whether a character
+glyph code, either typed as a single character or using the @code{\char}
+primitive, will be mapped to a font glyph or to an @code{\accent} glyph
+construction.
+
+For example, if you assume glyph code 138
+ at cindex e-circumflex
+(decimal) for an e-circumflex
+ at tex
+(\^e)
+ at end tex
+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 @code{\charsubdef} as follows:
+
+ at example
+\charsubdef 138 = 18 101
+ at end example
+
+For the plain @TeX{} format to make use of this substitution, you have
+to redefine the circumflex accent macro @code{\^} in such a way that if
+its argument is character `e' the expansion @code{\char138 } is used
+instead of @code{\accent18 e}.  Similar @code{\charsubdef} declaration
+and macro redefinitions have to be done for all other accented
+characters.
+
+To disable a previous @code{\charsubdef @var{c}}, redefine @var{c}
+as a pair of zeros. For example:
+ at example
+\charsubdef '321 = 0 0  % disable N tilde
+ at end example
+ at cindex N tilde
+ at noindent
+(Octal @t{'321} is the ISO Latin-1 value for the Spanish N tilde.)
+
+ at code{\charsubdef} commands should only be given once.  Although in
+principle you can use @code{\charsubdef} at any time, the result is
+unspecified.  If @code{\charsubdef} declarations are changed, usually
+either incorrect character dimensions will be used or ML at TeX{} will
+output missing character warnings.  (The substitution of a
+ at code{\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 @code{\accent}
+construction at @code{\shipout}-time.  In summary, the substitution is
+accessed often, so changing it is not desirable, nor generally useful.)
+
+
+ at node \tracingcharsubdef
+ at subsubsection @code{\tracingcharsubdef}: Substitution diagnostics
+
+ at findex \tracingcharsubdef @r{and ML at TeX{}}
+ at cindex redefined character substitutions
+To help diagnose problems with @samp{\charsubdef}, ML at TeX{} provides a
+new primitive parameter, @code{\tracingcharsubdef}.  If positive, every
+use of @code{\charsubdef} will be reported.  This can help track down
+when a character is redefined.
+
+ at findex \tracinglostchars @r{and ML at TeX{}}
+In addition, if the @TeX{} parameter @code{\tracinglostchars} is 100 or
+more, the character substitutions actually performed at
+ at code{\shipout}-time will be recorded.
+
+
+ at node TCX files
+ at subsection TCX files: Character translations
+
+ at flindex TCX @r{character translation files}
+ at flindex .tcx @r{character translation files}
+ at cindex character translation files
+
+ at cindex international characters
+ at cindex 8-bit characters
+ at cindex accented character
+TCX (@TeX{} character translation) files help @TeX{} support direct
+input of 8-bit international characters if fonts containing those
+characters are being used.  Specifically, they map an input (keyboard)
+character code to the internal @TeX{} character code (a superset of
+ASCII).
+
+Of the various proposals for handling more than one input encoding,
+TCX files were chosen because they follow Knuth's original ideas for
+the use of the @samp{xchr} and @samp{xord} tables.  He ventured that
+these would be changed in the WEB source in order to adjust the actual
+version to a given environment.  It turns out, however, that
+recompiling the WEB sources is not as simple a task as Knuth may have
+imagined; therefore, TCX files, providing the possibility of changing
+of the conversion tables on on-the-fly, have been implemented instead.
+
+This approach limits the portability of @TeX{} documents, as some
+implementations do not support it (or use a different method for
+input-internal reencoding).  It may also be problematic to determine
+the encoding to use for a @TeX{} document of unknown provenance; in
+the worst case, failure to do so correctly may result in subtle errors
+in the typeset output.  But we feel the benefits outweigh these
+disadvantages.
+
+This is entirely independent of the ML at TeX{} extension (@pxref{MLTeX}):
+whereas a TCX file defines how an input keyboard character is mapped to
+ at TeX{}'s internal code, ML at TeX{} defines substitutions for a
+non-existing character glyph in a font with a @code{\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.
+
+ at vindex WEB2C at r{, search path for TCX files}
+Information on specifying TCX files:
+
+ at itemize @bullet
+ at item
+The best way to specify a TCX file is to list it explicitly in the
+first line of the main document:
+ at example
+%& -translate-file=@var{tcxfile}
+ at end example
+
+ at item
+You can also specify a TCX file to be used on a particular @TeX{} run
+with the command-line option @samp{-translate-file=@var{tcxfile}}.
+
+ at item
+TCX files are searched for along the @code{WEB2C} path.
+
+ at item
+Initial @TeX{} (@pxref{Initial TeX,,Initial @TeX{}}) ignores TCX files.
+ at end itemize
+
+ at flindex il1-t1.tcx
+ at flindex il2-t1.tcx
+ at flindex empty.tcx
+ at cindex Cork encoding and ISO input
+ at cindex T1 encoding and ISO input
+The Web2c distribution comes with a number of TCX files.  Two
+important ones are @file{il1-t1.tcx} and @file{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 @file{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:
+
+ at example
+latex somefile8.tex
+ at result{} terminal etc. output with 8-bit chars
+latex --translate-file=empty.tcx somefile8.tex
+ at result{} terminal etc. output with ^^ notation
+ at end example
+
+ at cindex syntax of TCX files
+Syntax of TCX files:
+ at enumerate
+ at item
+ at cindex blank lines, in TCX files
+Line-oriented. Blank lines are ignored.
+
+ at item
+ at cindex whitespace, in TCX files
+Whitespace is ignored except as a separator.
+
+ at item
+ at cindex comments, in TCX files
+Comments start with @samp{%} and continue to the end of the line.
+
+ at item
+Otherwise, a line consists of one or two character codes, optionally
+followed by 0 or 1.  The last number indicates whether @var{dest} is
+considered printable.
+ at example
+ at var{src} [@var{dest} [@var{prnt}]]
+ at end example
+
+ at item
+ at cindex character codes, in TCX files
+ at cindex octal character codes, in TCX files
+ at cindex hex character codes, in TCX files
+ at cindex decimal character codes, in TCX files
+Each character code may be specified in octal with a leading @samp{0},
+hexadecimal with a leading @samp{0x}, or decimal otherwise. Values must
+be between 0 and 255, inclusive (decimal).
+
+ at item
+If the @var{dest} code is not specified, it is taken to be the same as
+ at var{src}.
+
+ at item
+If the same @var{src} code is specified more than once, it is the last
+definition that counts.
+ at end enumerate
+
+ at cindex printable characters, specifying
+ at kindex ^^ @r{notation, avoiding}
+Finally, here's what happens: when @TeX{} sees an input character with
+code @var{src}, it 1) changes @var{src} to @var{dest}; and 2) makes the
+ at var{dest} code ``printable'', i.e., printed as-is in diagnostics and the
+log file rather than in @samp{^^} notation.
+
+By default, no characters are translated, and character codes between 32
+and 126 inclusive (decimal) are printable.
+
+Specifying translations for the printable ASCII characters (codes
+32--127) will yield unpredictable results.  Additionally you shouldn't
+make the following characters printable: @code{^^I} (TAB), @code{^^J}
+(line feed), @code{^^M} (carriage return), and @code{^^?} (delete),
+since @TeX{} uses them in various ways.
+
+ at cindex font character code, translating
+ at cindex keyboard character code, translating
+Thus, the idea is to specify the input (keyboard) character code for
+ at var{src}, and the output (font) character code for @var{dest}.
+
+ at cindex interaction between TCX files and @samp{-8bit}.
+By default, only the printable ASCII characters are considered printable
+by @TeX{}.  If you specify the @samp{-8bit} option, all characters are
+considered printable by default.  If you specify both the @samp{-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 @file{tex.fmt}).  So by giving these
+options in combination with @samp{-ini}, you control the defaults seen
+by anyone who uses the resulting dump file.
+
+When loading a dump, if the @samp{-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.
+
+
+ at node patgen invocation
+ at subsection Patgen: Creating hyphenation patterns
+
+ at pindex patgen
+ at cindex hyphenation patterns, creating
+ at cindex languages, hyphenation rules for
+
+Patgen creates hyphenation patterns from dictionary files for use with
+ at TeX{}. Synopsis:
+
+ at example
+patgen @var{dictionary} @var{patterns} @var{output} @var{translate}
+ at end example
+
+Each argument is a filename. No path searching is done. The output is
+written to the file @var{output}.
+
+ at c @table @var
+ at c @item dictionary
+ at c @cindex dictionary file
+ at c @findex \lefthyphemmin
+ at c @findex \righthyphenmin
+ at c The first line contains the values of @code{}\lefthyphenmin} and
+ at c @code{\righthyphenmin} in columns 1--2 and 3--4. Columns 5, 6, and 7 may
+ at c optionally contain replacements for the default characters @samp{.},
+ at c @samp{-}, and @samp{*} respectively used in the word lists.
+ at c 
+ at c Subsequent lines are either comments (if they start with two identical
+ at c characters, e.g., @samp{%%}), or contain the external representation of
+ at c the lower case version of a letter, followed by an arbitrary number of
+ at c upper case versions, preceded and separated by a delimiter and followed
+ at c by two consecutive delimiters. The delimiter may be any character not
+ at c occurring in either version.
+
+In addition, Patgen prompts interactively for other values.
+
+For more information, see @cite{Word hy-phen-a-tion by com-puter} by
+Frank Liang (@pxref{References}), and also the @file{patgen.web} source file.
+
+The only options are @samp{-help} and @samp{-version} (@pxref{Common
+options}).
+
+
+ at node Shell escapes
+ at section Shell escapes
+
+ at cindex shell commands in @TeX{}
+ at cindex security, and shell escapes
+ at cindex restricted shell escapes
+ at cindex system command
+ at vindex shell_escape @r{enabling in @TeX{}}
+ at findex \immediate\write18
+ at findex \write18 @r{shell escape extension}
+ at findex system @r{C library function}
+
+ at TeX{} can execute @dfn{shell escapes}, that is, arbitrary shell
+commands.  Although tremendously useful, this also has obvious
+security implications.  Therefore, as of @TeX{} Live 2009, a
+ at dfn{restricted} mode for shell escapes is the default mode of
+operation, which allows executing only certain commands, as specified
+in the @file{texmf.cnf} configuration file.
+
+ at itemize @bullet
+ at item
+Unrestricted shell escapes are allowed if the option
+ at option{--shell-escape} is specified, or if the environment variable
+or config file value @code{shell_escape} is set to @samp{t} or
+ at samp{y} and @samp{1}.
+
+ at item
+Restricted shell escapes are allowed if @code{shell_escape} is set to
+ at samp{p}.  This is the default.
+
+ at item
+Shell escapes are completely disabled if @option{--no-shell-escape} is
+specified, or if @code{shell_escape} is set to anything else.
+ at end itemize
+
+When enabled, the @TeX{} construct to execute a system command is
+ at code{\write18@{@var{shell-command}@}}; for example:
+
+ at example
+\write18@{echo "hello, world"@}
+ at end example
+
+ at findex \output @r{routine, and @code{\write}}
+From @TeX{}'s point of view, this is a normal @code{\write} command,
+and is therefore subject to the usual @TeX{} expansions.  Also, the
+system call either happens during the @samp{\output} routine or right
+away, according to the absence or presence of the @code{\immediate}
+prefix, as usual for @code{\write}.
+
+ at cindex exit status, of shell escape
+The @var{shell-command} string is passed to the command shell (via the
+C library function @code{system}).  The output of @var{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
+ at code{system} unaltered.
+
+In restricted mode, ASCII double quote characters (@verb{|"|}) should
+always be used in the argument to @code{\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 (@verb{|'|}) characters to avoid insecure further
+expansion.  Care is also taken on Windows to avoid additional
+expansions (from, e.g., @verb{|`...`|}).  Mismatched quotation marks
+in the command string result in a diagnostic message in the log file;
+no execution is performed.
+
+ at findex shell_escape_commands
+After quotation processing, if the first word (delimited by a space or
+tab) of the command is in the list specified by the
+ at code{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 @code{shell_escape_commands} value is a comma-separated list of
+words.  Whitespace is significant, and typically should not be
+present.  The default definition looks like this, but with more
+commands included:
+
+ at example
+shell_escape_commands = bibtex,dvips,epstopdf,...,tex
+ at end example
+
+ at cindex pipes, reading and writing
+ at findex \openin at r{, and pipes}
+ at findex \input at r{, and pipes}
+ at findex \openout at r{, and pipes}
+ at findex \pdfshellescape
+pdf at TeX{} and lua at TeX{} support reading (via @code{\input} and
+ at code{\openin}) and writing (via @code{\openout}) from pipes if the
+first character is @samp{|}.  The following command is then treated
+exactly the same as the argument to @code{\write18}.  In these
+engines, the primitive variable @code{\pdfshellescape} is set to 0 if
+shell escapes are disabled, 1 if they are enabled, and 2 if they are
+enabled with restrictions.
+
+ at cindex web environments, and security
+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 such environments as CGI scripts or wikis where the input has to be
+considered untrustworthy, shell escapes should be completely disabled.
+
+
+ at node IPC and TeX
+ at section IPC and @TeX{}
+
+ at cindex IPC
+ at cindex sockets
+(If anyone uses this feature and needs documentation, write
+ at email{tex-k@@tug.org}.)
+
+This functionality is available only if the @samp{--enable-ipc} option
+was specified to @code{configure} during installation of Web2c
+(@pxref{Installation}).
+
+ at vindex IPC_DEBUG
+If you define @code{IPC_DEBUG} before compilation (e.g., with @samp{make
+XCFLAGS=-DIPC_DEBUG}), @TeX{} will print messages to standard error
+about its socket operations.  This may be helpful if you are, well,
+debugging.
+
+
+ at node TeX extensions
+ at section @TeX{} extensions
+
+ at cindex extensions to @TeX{}
+ at cindex @TeX{}, extensions to
+
+The base @TeX{} program has been extended in many ways.  Here's a
+partial list.
+
+ at table @asis
+ at item e- at TeX{}
+ at cindex e- at TeX{}
+ at cindex primitives, new
+Adds many new primitives, including right-to-left typesetting and more
+registers.  Now frozen.
+
+ at item Aleph
+ at cindex Aleph
+ at cindex Unicode
+This adds Unicode support, right-to-left typesetting, and more.  Omega
+was the original program.  Aleph is an updated version with a variety
+of bug fixes, and includes e- at TeX{}.  Aleph is not actively maintained.
+
+ at item pdf at TeX{}
+ at cindex pdf at TeX{}
+ at cindex PDF
+ at cindex micro-typography
+ at cindex hypertext
+Can produce PDF as well as DVI files.  It also incorporates the
+e- at TeX{} extensions, new primitives for hypertext and
+micro-typography, reading/writing from pipes, and much more.  Home
+page: @url{http://pdftex.org}.
+
+ at item lua at TeX{}
+ at cindex lua at TeX{}
+ at cindex Lua
+Based on pdf at TeX{}, this also embeds the Lua programming language
+(@url{http://lua.org}) and opens up the @TeX{} typesetting engine to
+control from Lua.  Home page: @url{http://luatex.org}.
+
+ at item Xe at TeX{}
+ at cindex Xe at TeX{}
+ at cindex Unicode
+Combines support for Unicode input and OpenType- and system fonts
+with the capabilities of pdf at TeX{}.
+Home page: @url{http://tug.org/xetex}.
+
+ at end table
+
+
+ at node Metafont
+ at chapter Metafont: Creating typeface families
+
+ at cindex Metafont
+ at cindex typeface families
+ at cindex geometric designs
+ at cindex shapes
+ at cindex font design
+
+Metafont is a system for producing shapes; it was designed for producing
+complete typeface families, but it can also produce geometric designs,
+dingbats, etc.  And it has considerable mathematical and
+equation-solving capabilities which can be useful entirely on their own.
+
+Metafont is a batch language, like C or Pascal: you compile a Metafont
+program into a corresponding font, rather than interactively drawing
+lines or curves.  This approach has both considerable disadvantages
+(people unfamiliar with conventional programming languages will be
+unlikely to find it usable) and considerable advantages (you can make
+your design intentions specific and parameterizable).  For a complete
+description of the Metafont language, see @cite{The METAFONTbook}
+(@pxref{References}).
+
+ at menu
+* mf invocation::               Invoking Metafont.
+* Initial Metafont::            Making bases.
+* Modes::                       Device definitions for Metafont.
+* Online Metafont graphics::    Seeing MF output online.
+* gftodvi invocation::          Making proofsheets for fonts.
+* mft invocation::              Prettyprinting Metafont sources.
+ at end menu
+
+
+ at node mf invocation
+ at section @code{mf} invocation
+
+ at pindex mf
+ at cindex Metafont invocation
+
+Metafont (usually invoked as @code{mf}) reads character definitions
+specified in the Metafont programming 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 @cite{The Metafontbook} (@pxref{References}).
+
+Metafont processes its command line and determines its memory dump
+(base) file in a way exactly analogous to MetaPost and @TeX{}
+(@pxref{tex invocation}, and @pxref{Memory dumps}).  Synopses:
+
+ at example
+mf [@var{option}]@dots{} [@var{mfname}[.mf]] [@var{mf-commands}]
+mf [@var{option}]@dots{} \@var{first-line}
+mf [@var{option}]@dots{} &@var{base} @var{args}
+ at end example
+
+Most commonly, a Metafont invocation looks like this:
+ at example
+mf '\mode:=@var{mode}; mag:=@var{magnification}; input @var{mfname}'
+ at end example
+ at noindent
+(The single quotes avoid unwanted interpretation by the shell.)
+
+ at flindex .mf
+ at cindex Metafont input files
+ at cindex EC fonts
+ at pindex mktexmf at r{, disabling}
+Metafont searches the usual places for the main input file @var{mfname}
+(@pxref{Supported file formats,,, kpathsea, Kpathsea}), extending
+ at var{mfname} with @file{.mf} if necessary.  To see all the relevant
+paths, set the environment variable @code{KPATHSEA_DEBUG} to @samp{-1}
+before running the program.  By default, Metafont runs an external
+program named @file{mktexmf} to create any nonexistent Metafont source
+files you input.  You can disable this at configure-time or runtime
+(@pxref{mktex configuration,,, kpathsea, Kpathsea}).  This is mostly
+for the sake of the EC fonts, which can be generated at any size.
+
+ at flindex . at var{nnn}gf @r{generic fonts}
+ at flindex mfput
+ at cindex GF output
+ at cindex GF files, output by Metafont
+ at cindex PK files, not output by Metafont
+Metafont writes the main GF output to the file
+ at file{@var{basemfname}. at var{nnn}gf}, where @var{nnn} is the font
+resolution in pixels per inch, and @var{basemfname} is the basename of
+ at var{mfname}, or @samp{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 (@pxref{gftopk
+invocation}), since PK files contain equivalent information, but are
+more compact.  (Metafont output in GF format rather than PK for only
+historical reasons.)
+
+ at flindex .tfm @r{output}
+ at cindex TFM files, output by Metafont
+Metafont also usually writes a metric file in TFM format to
+ at file{@var{basemfname}.tfm}.  A TFM file contains character dimensions,
+kerns, and ligatures, and spacing parameters.  @TeX{} reads only this
+ at t{.tfm} file, not the GF file.
+
+ at cindex mode needed to run Metafont
+ at findex proof @r{mode}
+ at flindex 2602gf
+ at flindex .2602gf
+The @var{mode} in the example command above is a name referring to a
+device definition (@pxref{Modes}); for example, @code{localfont} or
+ at code{ljfour}.  These device definitions must generally be precompiled
+into the base file.  If you leave this out, the default is @code{proof}
+mode, as stated in @cite{The Metafontbook}, in which Metafont outputs at
+a resolution of 2602 at dmn{dpi}; this is usually not what you want.  The
+remedy is simply to assign a different mode--- at code{localfont}, for
+example.
+
+The @var{magnification} assignment in the example command above is a
+magnification factor; for example, if the device is 600 at dmn{dpi} and you
+specify @code{mag:=2}, Metafont will produce output at 1200 at dmn{dpi}.
+Very often, the @var{magnification} is an expression such as
+ at code{magstep(.5)}, corresponding to a @TeX{} ``magstep'', which are
+factors of
+ at tex
+1.2$\sqrt{2}$.
+ at end tex
+ at ifinfo
+1.2 * sqrt(2).
+ at end ifinfo
+
+After running Metafont, you can use the font in a @TeX{} document as
+usual.  For example:
+ at example
+\font\myfont = newfont
+\myfont Now I am typesetting in my new font (minimum hamburgers).
+ at end example
+
+The program accepts the following options, as well as the standard
+ at samp{-help} and @samp{-version} (@pxref{Common options}):
+ at table @samp
+ at item -[no]-file-line-error
+ at itemx -fmt=@var{fmtname}
+ at itemx -halt-on-error
+ at itemx -ini
+ at itemx -interaction=@var{string}
+ at itemx -jobname=@var{string}
+ at itemx -kpathsea-debug=@var{number}
+ at itemx -[no]parse-first-line
+ at itemx -output-directory
+ at itemx -progname=@var{string}
+ at itemx -recorder
+ at itemx -translate-file=@var{tcxfile}
+ at itemx -8bit
+These options are common to @TeX{}, Metafont, and MetaPost.
+ at xref{Common options}.
+
+ at item -mktex=@var{filetype}
+ at itemx -no-mktex=@var{filetype}
+ at opindex -mktex=@var{filetype}
+ at opindex -no-mktex=@var{filetype}
+Turn on or off the @samp{mktex} script associated with @var{filetype}.
+The only value that makes sense for @var{filetype} is @samp{mf}.
+ at end table
+
+
+ at node Initial Metafont
+ at section Initial Metafont
+
+ at cindex initial Metafont
+ at cindex Metafont, initial
+
+ at flindex .base
+ at cindex base files
+ at code{inimf} is the ``initial'' form of Metafont, which does lengthy
+initializations avoided by the ``virgin'' (@code{vir}) form, so as to
+be capable of dumping @samp{.base} files (@pxref{Memory dumps}).  For
+a detailed comparison of virgin and initial forms, see @ref{Initial
+and virgin}.
+
+For a list of options and other information, see @ref{mf invocation}.
+
+ at flindex plain.base
+ at flindex mf.base
+The only memory dump file commonly used with Metafont is the default
+ at samp{plain.base}, also known as @samp{mf.base} (again, @pxref{Memory
+dumps}).  It is created by default during installation, but you can also
+do so by hand if necessary (e.g., if a Metafont update is issued):
+ at example
+mf -ini '\input plain; input modes; dump'
+ at end example
+ at noindent
+(The quotes prevent interpretation of the backslashes from the shell.)
+Then install the resulting @file{plain.base} in @samp{$(basedir)}
+(@file{/usr/local/share/texmf/web2c} by default), and link
+ at file{mf.base} to it.
+
+For an explanation of the additional @file{modes.mf} file,
+see @ref{Modes}.  This file has no counterpart in @TeX{} or MetaPost.
+
+ at flindex cmmf.base @r{not recommended}
+ at flindex cm.base
+ at flindex cmbase.mf
+ at cindex Computer Modern macros
+ at cindex base files, plain only
+In the past, it was sometimes useful to create a base file
+ at file{cmmf.base} (a.k.a.@: @file{cm.base}), with the Computer Modern
+macros also included in the base file.  Nowadays, however, the
+additional time required to read @file{cmbase.mf} is exceedingly small,
+usually not enough to be worth the administrative hassle of updating the
+ at file{cmmf.base} file when you install a new version of @file{modes.mf}.
+ at cindex type design, personal
+People actually working on a typeface may still find it worthwhile to
+create their own base file, of course.
+
+
+ at node Modes
+ at section Modes: Device definitions for Metafont
+
+ at cindex modes file needed for Metafont
+ at cindex base files, need mode definitions
+ at cindex device definitions, for Metafont
+ at cindex printer characteristics, for Metafont
+Running Metafont and creating Metafont base files requires information
+that @TeX{} and MetaPost do not: @dfn{mode} definitions which specify
+device characteristics, so Metafont can properly rasterize the shapes.
+
+ at flindex modes.mf @r{recommended modes file}
+When making a base file, a file containing modes for locally-available
+devices should be input after @file{plain.mf}.  One commonly used file
+is @url{ftp://ftp.tug.org/tex/modes.mf}; it includes all known
+definitions.
+
+ at cindex small Metafont memory and modes
+ at findex mode_def
+ at findex mode_setup
+If, however, for some reason you have decreased the memory available in
+your Metafont, you may need to copy @file{modes.mf} and remove the
+definitions irrelevant to you (probably most of them) instead of using
+it directly.  (Or, if you're a Metafont hacker, maybe you can suggest a
+way to redefine @code{mode_def} and/or @code{mode_setup}; right now, the
+amount of memory used is approximately four times the total length of
+the @code{mode_def} names, and that's a lot.)
+
+If you have a device not included in @file{modes.mf}, please see
+comments in that file for how to create the new definition, and please
+send the definition to @email{tex-fonts@@math.utah.edu} to get it included
+in the next release of @file{modes.mf}.
+
+ at findex smode @r{and dynamic Metafont mode definition}
+ at cindex dynamic Metafont mode definitions with @code{smode}
+Usually, when you run Metafont you must supply the name of a mode that
+was dumped in the base file.  But you can also define the mode
+characteristics dynamically, by invoking Metafont with an assignment to
+ at code{smode} instead of @code{mode}, like this:
+ at example
+mf '\smode:="newmode.mf"; mag:=@var{magnification}; input @var{mfname}'
+ at end example
+ at noindent
+This is most useful when you are working on the definition of a new
+mode.
+
+The @var{magnification} and @var{mfname} arguments are explained in
+ at ref{mf invocation}.  In the file @file{newmode.mf}, you should have the
+following (with no @code{mode_def} or @code{enddef}), if you are using
+ at file{modes.mf} conventions:
+ at example
+mode_param (pixels_per_inch, @var{dpi});
+mode_param (blacker, @var{b});
+mode_param (fillin, @var{f});
+mode_param (o_correction, @var{o});
+mode_common_setup_;
+ at end example
+ at noindent
+(Of course, you should use real numbers for @var{dpi}, @var{b}, @var{f},
+and @var{o}.)
+
+For more information on the use of @code{smode}, or if you are not using
+ at file{modes.mf}, see page 269 of @cite{The Metafontbook}.
+
+
+ at node Online Metafont graphics
+ at section Online Metafont graphics
+
+ at cindex online Metafont graphics
+ at cindex Metafont graphics
+
+The Web2c implementation of Metafont can do online graphics with a
+number of devices. (See the Metafont manual for more information about
+how to draw on your screen.)  By default, no graphics support is
+enabled.
+
+ at vindex MFTERM
+ at vindex TERM
+Metafont examines the @code{MFTERM} environment variable or config file
+value at runtime, or the @code{TERM} environment variable if
+ at code{MFTERM} is not set, to determine the device support to use.
+Naturally, only the devices for which support has been compiled in can
+be selected.
+
+Here is a table of the possibilities, showing the @code{MFTERM} value
+and the corresponding @code{configure} option(s) in parentheses.
+
+ at vtable @code
+ at item epsf
+ at cindex Herberts, Mathias
+ at opindex --enable-epsfwin
+(@samp{--enable-epsfwin}) Pseudo-window server for Encapsulated
+PostScript (see @file{web2c/window/epsf.c}). This device produces an
+EPS file containing the graphics which would be displayed online on
+other devices. The name of the EPS file defaults to metafont.eps but
+can be changed by setting the MFEPSF environment variable to the new
+filename.  Contributed by Mathias Herberts.
+
+ at item hp2627
+ at opindex --enable-hp2627win
+(@samp{--enable-hp2627win}) HP2627a color graphics terminals.
+
+ at item mftalk
+ at opindex --enable-mftalkwin
+(@samp{--enable-mftalkwin}) Generic window server (see
+ at file{web2c/window/mftalk.c}).
+
+ at item next
+ at pindex DrawingServant
+ at opindex --enable-next
+(@samp{--enable-next}) NeXT window system. This requires a separate
+program, called @code{DrawingServant}, available separately. See the
+ at file{web2c/window/next.c}.
+
+ at item regis
+ at opindex --enable-regiswin
+ at cindex Regis graphics support
+(@samp{--enable-regiswin}) Regis terminals.
+
+ at item sun
+ at cindex SunView
+ at cindex Suntools
+ at opindex --enable-suntoolswin
+ at flindex sun-gfx.c
+(@samp{--enable-suntoolswin}) The old Suntools (not any flavor of X)
+window system. (You can get the even older SunWindows @code{gfx} system
+by using @file{sun-gfx.c}.)
+
+ at item tek
+ at cindex Tektronix
+ at opindex --enable-tektronixwin
+(@samp{--enable-tektronixwin}) Tektronix terminals.
+
+ at cindex Poole, Simon
+ at item uniterm
+ at cindex Tektronix 4014
+ at opindex --enable-unitermwin
+(@samp{--enable-unitermwin}) Uniterm, Simon Poole's emulator of a smart
+Tektronix 4014 terminal.  This may work with regular Tektronix terminals
+as well; it's faster than the driver @samp{--enable-tektronixwin} selects.
+
+ at vindex NO_X11WIN
+ at pindex Xt
+ at pindex Xlib
+ at item xterm
+ at opindex --with-x
+ at samp{--with-x} The X window system (version 11).
+
+ at opindex --with-mf-x-toolkit=@var{kit}
+ at cindex toolkits, X
+ at cindex X toolkits and Metafont
+ at cindex Xt support
+ at cindex Xlib support
+There are two variants of the X11 support, one that works with the Xt
+toolkit, and another that works directly with Xlib. The Xt support is
+more efficient and has more functionality, so it is the default. If you
+must use the Xlib support, use @samp{configure --with-x
+--with-kf-x-toolkit=no}.
+
+ at opindex --disable-mf-nowin
+ at cindex non-windows-capable Metafont
+Specify @samp{--disable-mf-nowin} in order not to build a separate
+non-windows-capable Metafont executable @code{mf-nowin} (or
+ at code{mf-nowin.exe}).
+
+ at cindex X resources
+ at cindex X class name for Metafont
+ at cindex class name for Metafont
+ at cindex geometry for Metafont
+ at cindex Metafont geometry
+ at flindex .Xdefaults
+ at flindex .Xresources
+ at opindex -geometry at r{, supported with Xt}
+You cannot specify any of the usual X options (e.g., @samp{-geometry})
+on the Metafont command line, but you can specify X resources in your
+ at file{~/.Xdefaults} or @file{~/.Xresources} file. The class name is
+ at code{Metafont}. If you're using the Xt support, all the usual X toolkit
+resources are supported.  If you're using the Xlib support, only the
+ at code{geometry} resource is supported.
+
+ at vindex DISPLAY
+You specify the X display to which Metafont connects in the
+ at code{DISPLAY} environment variable, as usual.
+
+ at end vtable
+
+ at cindex Metafont online support, new devices
+ at cindex new graphics support for Metafont
+ at flindex texmfmp.c
+Writing support for a new device is straightforward. Aside from defining
+the basic drawing routines that Metafont uses (see @file{mf.web}), you
+only have to add another entry to the tables on the last page of
+ at file{web2c/lib/texmfmp.c}.  Or you can write an independent program and
+use MFtalk (see @file{web2c/window/mftalk.c}).
+
+
+ at node gftodvi invocation
+ at section GFtoDVI: Character proofs of fonts
+
+ at pindex gftodvi
+ at cindex character proofs of fonts
+ at cindex font proofs
+ at cindex proof sheets, of fonts
+
+GFtoDVI makes @dfn{proof sheets} from a GF bitmap file as output by, for
+example, Metafont (@pxref{Metafont}).  This is an indispensable aid for
+font designers or Metafont hackers.  Synopsis:
+
+ at example
+gftodvi [@var{option}]@dots{} @var{gfname}[gf]
+ at end example
+
+The font @var{gfname} is searched for in the usual places (@pxref{Glyph
+lookup,,, kpathsea, Kpathsea}).  To see all the relevant paths, set the
+environment variable @code{KPATHSEA_DEBUG} to @samp{-1} before running
+the program.
+
+The suffix @samp{gf} is supplied if not already present.  This suffix is
+not an extension, no @samp{.} precedes it; for instance, @file{cmr10.600gf}.
+
+The output filename is the basename of @var{gfname} extended with
+ at file{.dvi}, e.g., @samp{gftodvi /wherever/foo.600gf} creates
+ at file{./foo.dvi}.
+
+The characters from @var{gfname} appear one per page in the DVI output,
+with labels, titles, and annotations, as specified in Appendix H
+(Hardcopy Proofs) of @cite{The Metafontbook}.
+
+GFtoDVI uses several fonts besides @var{gfname} itself:
+
+ at itemize @bullet
+ at item
+ at cindex gray font
+ at dfn{gray font} (default @file{gray}): for the pixels that actually make
+up the character.  Simply using black is not right, since then labels,
+key points, and other information could not be shown.
+
+ at item
+ at cindex title font
+ at dfn{title font} (default @file{cmr8}): for the header information at
+the top of each output page.
+
+ at item
+ at cindex label font
+ at dfn{label font} (default @file{cmtt10}): for the labels on key points
+of the figure.
+
+ at item
+ at cindex slant font
+ at dfn{slant font} (no default): for diagonal lines, which are otherwise
+simulated using horizontal and vertical rules.
+ at end itemize
+
+To change the default fonts, you must use @code{special} commands in
+your Metafont source file, typically via commands like @code{slantfont
+slantlj4}.  There is no default slant font since no one printer is
+suitable as a default.  You can make your own by copying one of the
+existing files, such as
+ at file{.../fonts/source/public/misc/slantlj4.mf} and then running
+ at command{mf} on it.
+
+For testing purposes, you may it useful to run @code{mf-nowin rtest}
+(hit RETURN when it stops) to get a @file{gf} file of a thorn glyph.
+Or use @command{mf} instead of @command{mf-nowin} to have the glyph(s)
+displayed on the screen.  After that, @code{gftodvi rtest.2602gf}
+should produce @file{rtest.dvi}, which you process as usual.
+
+The program accepts the following option, as well as the standard
+ at samp{-verbose}, @samp{-help}, and @samp{-version} (@pxref{Common
+options}):
+
+ at table @samp
+ at item -overflow-label-offset=@var{points}
+ at opindex -overflow-label-offset=@var{points}
+ at cindex overflow label offset
+ at cindex offset for overflow labels
+Typeset the so-called overflow labels, if any, @var{points} @TeX{}
+points from the right edge of the character bounding box.  The default
+is a little over two inches (ten million scaled points, to be precise).
+Overflow equations are used to locate coordinates when their actual
+position is too crowded with other information.
+ at end table
+
+
+ at node mft invocation
+ at section MFT: Prettyprinting Metafont source
+
+ at pindex mft
+ at cindex Metafont source, prettyprinting
+ at cindex prettyprinting Metafont source
+ at cindex @TeX{}, creating from Metafont
+
+ at flindex mftmac.tex
+MFT translates a Metafont program into a @TeX{} document suitable for
+typesetting, with the aid of @TeX{} macros defined in the file
+ at file{mftmac.tex}.  Synopsis:
+
+ at example
+mft [@var{option}]@dots{} @var{mfname}[.mf]
+ at end example
+
+MFT searches the usual places for @var{mfname} (@pxref{Supported file
+formats,,, kpathsea, Kpathsea}).  To see all the relevant paths, set the
+environment variable @code{KPATHSEA_DEBUG} to @samp{-1} before running
+the program.  The output goes to the basename of @var{mfname} extended
+with @file{.tex}, e.g., @samp{mft /wherever/foo.mf} creates
+ at file{./foo.tex}.
+
+Line breaks in the input are carried over into the output; moreover,
+blank spaces at the beginning of a line are converted to quads of
+indentation in the output. Thus, you have full control over the
+indentation and line breaks. Each line of input is translated
+independently of the others.
+
+Further control is allowed via Metafont comments:
+ at cindex comments, MFT control
+ at itemize @bullet
+ at item
+Metafont comments following a single @samp{%} should be valid @TeX{}
+input.  But Metafont material can be included within vertical bars in a
+comment; this will be translated by MFT as if it were regular Metafont
+code.  For example, a comment like @samp{% |x2r| is the tip of the bowl}
+will be translated into the @TeX{} @samp{% $x_@{2r@}$ is the @dots{}},
+i.e., the @samp{x2r} is treated as an identifier.
+
+ at item 
+ at samp{%%} indicates that the remainder of an input line should be copied
+verbatim to the output.  This is typically used to introduce additional
+ at TeX{} material at the beginning or an MFT job, e.g. code to modify the
+standard layout or the formatting macros defined in @file{mftmac.tex},
+or to add a line saying @samp{%%\bye} at the end of the job.  (MFT
+doesn't add this automatically in order to allow processing several
+files produces by MFT in the same @TeX{} job.)
+
+ at item
+ at samp{%%% @var{token1} @var{other-tokens}}
+introduces a change in MFT's formatting rules; all the @var{other-tokens}
+will henceforth be translated according to the current conventions for
+ at var{token1}. The tokens must be symbolic (i.e., not
+numeric or string tokens). For example, the input line
+ at example
+%%% addto fill draw filldraw
+ at end example
+ at noindent
+says to format the @samp{fill}, @samp{draw}, and @samp{filldraw}
+operations of plain Metafont just like the primitive token @samp{addto},
+i.e., in boldface type.  Without such reformatting commands, MFT would
+treat @samp{fill} like an ordinary tag or variable name.  In fact, you
+need a @samp{%%%} command even to get parentheses to act like
+delimiters.
+
+ at item
+ at samp{%%%%} introduces an MFT comment, i.e., MFT ignores the remainder
+of such a line.
+
+ at item
+Five or more @samp{%} signs should not be used.
+ at end itemize
+
+ at cindex Knuth, Donald E.
+(The above description was edited from @file{mft.web}, written by
+ at w{D.E. Knuth}.)
+
+The program accepts the following options, as well as the standard
+ at samp{-help} and @samp{-version} (@pxref{Common options}):
+ at table @samp
+ at item -change=@var{chfile}[.ch]
+ at opindex -change=@var{chfile}
+ at cindex change files, and MFT
+Apply the change file @var{chfile} as with Tangle and Weave
+(@pxref{WEB}).
+
+ at item -style=@var{mftfile}[.mft]
+ at opindex -style=@var{mftfile}
+ at cindex style files
+ at flindex plain.mft
+Read @var{mftfile} before anything else; a MFT style file typically
+contains only MFT directives as described above.  The default style file
+is named @file{plain.mft}, which defines this properly for programs
+using plain Metafont.  The MFT files is searched along the
+ at code{MFTINPUTS} path; see @ref{Supported file formats,,, kpathsea, Kpathsea}.
+
+ at flindex cmbase.mft
+ at flindex e.mft
+ at cindex @cite{Computer Modern Typefaces}, production of
+Other examples of MFT style files are @file{cmbase.mft}, which defines
+formatting rules for the macros defined in @file{cm.base}, and
+ at file{e.mft}, which was used in the production of Knuth's Volume at w{ }E,
+ at cite{Computer Modern Typefaces}.
+
+ at cindex MetaPost source, prettyprinting
+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.
+ at end table
+
+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.
+
+
+ at node MetaPost 
+ at chapter MetaPost: Creating technical illustrations
+
+ at cindex MetaPost
+ at cindex PostScript meets Metafont
+ at cindex Metafont meets PostScript
+MetaPost is a picture-drawing language similar to Metafont
+(@pxref{Metafont}), but instead of outputting bitmaps in a ``font'', it
+outputs PostScript commands.  It's primarily intended for creating
+technical illustrations.
+
+MetaPost also provides for arbitrary integration of text and graphics in
+a natural way, using any typesetter (@TeX{} and Troff are both
+supported) and a number of other subsidiary programs, described below.
+
+ at menu
+* mpost invocation::            Invoking MetaPost.
+* Initial MetaPost::            Making mems.
+* dvitomp invocation::          DVI-to-MPX translation.
+ at end menu
+
+
+ at node mpost invocation
+ at section @code{mpost} invocation
+
+ at pindex mpost
+ at cindex MetaPost invocation
+
+ at flindex mpman.ps
+MetaPost (installed as @code{mpost}) reads a series of pictures
+specified in the MetaPost programming language, and outputs
+corresponding PostScript code.  This section merely describes the
+options available in the Web2c implementation.  For a complete
+description of the MetaPost language, see AT&T technical report
+CSTR-162, generally available in @file{@var{texmf}/doc/metapost/},
+where @var{texmf} is the root of @TeX{} directory structure.  See
+also:
+ at itemize @bullet
+ at item @url{http://cm.bell-labs.com/who/hobby/MetaPost.html} (the
+      MetaPost author's home page);
+ at item @url{http://tug.org/metapost} (papers, packages, and
+      related information).
+ at end itemize
+
+ at flindex mpgraph.ps
+Also, a standard MetaPost package for drawing graphs is documented in
+AT&T technical report CSTR-164, available as the file @file{mpgraph.ps},
+generally stored alongside @file{mpman.ps}.
+
+MetaPost processes its command line and determines its memory dump (mem)
+file in a way exactly analogous to Metafont and @TeX{} (@pxref{tex
+invocation,, at code{tex} invocation}, and @pxref{Memory dumps}).
+Synopses:
+
+ at example
+mpost [@var{option}]@dots{} [@var{mpname}[.mp]] [@var{mp-commands}]
+mpost [@var{option}]@dots{} \@var{first-line}
+mpost [@var{option}]@dots{} &@var{mem} @var{args}
+ at end example
+
+ at flindex .mp
+ at cindex MetaPost input files
+MetaPost searches the usual places for the main input file @var{mpname}
+(@pxref{Supported file formats,,, kpathsea, Kpathsea}), extending
+ at var{mpname} with @file{.mp} if necessary.  To see all the relevant
+paths, set the environment variable @code{KPATHSEA_DEBUG} to @samp{-1}
+before running the program.
+
+ at findex beginfig
+ at flindex . at var{nnn} @r{PostScript figures}
+ at flindex .tfm @r{output}
+ at flindex mpout
+ at cindex TFM files, output by MetaPost
+ at cindex PostScript output
+MetaPost writes its PostScript output to a series of files
+ at file{@var{basempname}. at var{nnn}} (or perhaps
+ at file{@var{basempname}.ps}, very occasionally
+ at file{@var{basempname}.tfm}), where @var{nnn} are the figure numbers
+specified in the input, typically to the @code{beginfig} macro, and
+ at var{basempname} is the basename of @var{mpname}, or @samp{mpout} if no
+input file was specified.  MetaPost uses the @samp{.ps} extension when
+the figure number is out of range, e.g., if you say @code{beginfig(-1)}.
+
+You can use the output files as figures in a @TeX{} document just as
+with any other PostScript figures. For example, with this @TeX{} command:
+ at example
+\special@{psfile="@var{filename}"@}
+ at end example
+ at noindent
+or by using @file{epsf.tex} (@pxref{EPSF macros,,, dvips, Dvips}).
+
+ at findex btex @r{for MetaPost labels}
+ at findex etex @r{for MetaPost labels}
+The MetaPost construct
+ at example
+btex @dots{} @var{tex-input} @dots{} etex
+ at end example
+ at noindent
+generates a MetaPost picture expression corresponding to
+ at var{tex-input}.
+
+The construct
+ at example
+verbatimtex @dots{} @var{tex-input} @dots{} etex
+ at end example
+ at noindent
+simply passes the @var{tex-input} through to
+ at TeX{}. For example, if you are using @LaTeX{}, your MetaPost input file
+must start with a @code{verbatimtex} block that gives the necessary
+ at code{\documentclass} (or @code{\documentstyle})
+ at code{\begin@{document@}} command.  You will also need to set the
+enviroment variable @code{TEX} to @samp{latex}.
+
+ at var{tex-input} need not be specifically @TeX{} input; it could also be
+Troff.  In that case, you will need the @samp{-m pictures} Troff macro
+package (unfortunately absent from many Troff implementations), or an
+equivalent such as the @samp{-m pspic} macros from GNU groff described
+in grops(1).
+
+ at cindex PostScript fonts, and Troff
+ at cindex Troff, and MetaPost
+ at cindex Computer Modern fonts, and Troff
+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.
+
+ at flindex mproof.tex
+ at cindex downloading of fonts for MetaPost labels
+ at cindex font downloading for MetaPost labels
+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 (@pxref{Fonts
+in figures,,, dvips, Dvips}).  To help with this, the MetaPost
+distribution provides a small @TeX{} file @file{mproof.tex} which is
+typically called as:
+ at example
+tex mproof @var{mp-output-files}... ; dvips mproof -o
+ at end example
+ at noindent
+The resulting file @file{mproof.ps} can then be printed or previewed.
+
+ at vindex prologues at r{, and EPSF output}
+ at flindex psfonts.map at r{, read by MetaPost}
+To generate EPSF files, set the internal MetaPost variable
+ at code{prologues} positive.  To make the output files self-contained, use
+only standard PostScript fonts.  MetaPost reads the same
+ at file{psfonts.map} file as Dvips, to determine PostScript fonts that
+need to be downloaded (@pxref{psfonts.map,,, dvips, Dvips}).
+
+ at cindex PDF, and @code{.mps} files
+ at cindex @code{.mps} files and PDF
+It is posible for pdf at TeX{} 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 @code{.mps} extension.  Then the @LaTeX{}
+ at code{\includegraphics} command, for example, will be able to read
+them, even when outputting PDF.
+
+ at cindex security, and @code{write}
+MetaPost can write output files, via the @code{write} primitive; this
+opens a security hole.  @xref{tex invocation}.
+
+The program accepts the following options, as well as the standard
+ at samp{-help} and @samp{-version} (@pxref{Common options}):
+ at table @samp
+ at item -[no]-file-line-error
+ at itemx -fmt=@var{fmtname}
+ at itemx -halt-on-error
+ at itemx -ini
+ at itemx -interaction=@var{string}
+ at itemx -jobname=@var{string}
+ at itemx -kpathsea-debug=@var{number}
+ at itemx -[no]parse-first-line
+ at itemx -output-directory
+ at itemx -progname=@var{string}
+ at itemx -recorder
+ at itemx -translate-file=@var{tcxfile}
+ at itemx -8bit
+These options are common to @TeX{}, Metafont, and MetaPost.
+ at xref{Common options}.
+
+ at item -T
+ at itemx -troff
+ at opindex -T
+ at opindex -troff
+ at vindex prologues
+Set the @code{prologues} internal variable to @code{1}.
+
+ at item -tex=@var{texprogram}
+ at opindex -tex=@var{texprogram}
+When this option is given, the program @var{texprogram} is used to
+typeset the labels.
+
+ at end table
+
+
+ at node Initial MetaPost
+ at section Initial MetaPost
+
+ at cindex initial MetaPost
+ at cindex MetaPost, initial
+
+As of MetaPost 1.504 (@TeX{} Live 2011), MetaPost no longer dumps
+ at file{.mem} files (@pxref{Memory dumps}) and does not distinguish
+virgin and initial forms (@pxref{Initial and virgin}).  Instead, the
+``initial'' file name is read in its source form---that is,
+ at file{mpost.mp} when the program is invoked as @command{mpost}.
+
+For a list of options and other information, see @ref{mpost invocation}.
+
+ at cindex Metafont, compatibility in MetaPost
+ at cindex plain Metafont, compatibility in MetaPost
+ at cindex MetaPost and plain Metafont compatibility
+ at flindex mfplain
+MetaPost provides a format with all the features of plain Metafont,
+called @file{mfplain}.  You can use that in the same way; just run
+ at command{mfplain} instead of @command{mpost}.  This lets you directly
+process Metafont source files with MetaPost, producing character
+proofs (one file for each character) similar to those produced with
+Metafont in proof mode and GFtoDVI (@pxref{gftodvi invocation}).
+
+
+ at node dvitomp invocation
+ at section DVItoMP: DVI to MPX conversion
+
+ at pindex dvitomp
+ at cindex DVI files, converting to MPX
+ at cindex MPX files, converting from DVI files
+
+DVItoMP converts DVI files into low-level MetaPost commands in a
+so-called MPX file.  Synopsis:
+
+ at example
+dvitomp @var{dvifile}[.dvi] [@var{mpxfile}[.mpx]]
+ at end example
+
+ at noindent
+If @var{mpxfile} is not specified, the output goes to the basename of
+ at var{dvifile} extended with @file{.mpx}, e.g., @samp{dvitomp
+/wherever/foo.dvi} creates @file{./foo.mpx}.
+
+ at cindex color, in DVItoMP
+DVItoMP supports Dvips-style color specials, such as @samp{color push
+ at var{name}} and @samp{color pop}, outputting them as @code{withcolor}
+MetaPost commands.
+
+The only options are @samp{-help} and @samp{-version} (@pxref{Common
+options}).
+
+
+ at node BibTeX
+ at chapter Bib at TeX{}: Bibliographies
+
+ at cindex bibliographies, creating
+ at cindex Bib at TeX{}
+
+Bib at TeX{} automates much of the job of typesetting bibliographies, and
+makes bibliography entries reusable in many different contexts.
+
+ at menu
+* bibtex invocation::
+* Basic BibTeX style files::    The standard and semi-standard styles.
+ at end menu
+
+
+ at node bibtex invocation
+ at section Bib at TeX{} invocation
+
+ at pindex bibtex
+
+ at flindex .bbl @r{bibliography files}
+ at flindex .aux @r{cross-reference files}
+ at flindex .bib @r{bibliography databases}
+Bib at TeX{} creates a printable bibliography (@file{.bbl}) file from
+references in a @file{.aux} file, generally written by @TeX{} or
+ at LaTeX{}.  The @file{.bbl} file is then incorporated on a subsequent
+run.  The basic bibliographic information comes from @file{.bib} files,
+and a Bib at TeX{} style (@file{.bst}) file controls the precise contents
+of the @file{.bbl} file.  Synopsis:
+
+ at example
+bibtex [@var{option}]@dots{} @var{auxfile}[.aux]
+ at end example
+
+ at flindex .blg @r{Bib at TeX{} log file}
+ at cindex log file, Bib at TeX{}
+ at noindent
+The output goes to the basename of @var{auxfile} extended with
+ at file{.bbl}; for example, @samp{bibtex /wherever/foo.aux} creates
+ at file{./foo.bbl}.  Bib at TeX{} also writes a log file to the basename of
+ at var{auxfile} extended with @samp{.blg}.
+
+ at findex \bibliography
+ at findex \bibliographystyle
+ at vindex TEXBIB at r{, search path for bib files}
+ at vindex BIBINPUTS at r{, search path for bib files}
+ at vindex BSTINPUTS at r{, search path for bst files}
+The names of the @file{.bib} and @file{.bst} files are specified in the
+ at file{.aux} file as well, via the @file{\bibliography} and
+ at file{\bibliographystyle} (La)@TeX{} macros.  Bib at TeX{} searches for
+ at file{.bib} files using the @code{BIBINPUTS} and @code{TEXBIB} paths,
+and for @file{.bst} files using @code{BSTINPUTS} (@pxref{Supported file
+formats,,,kpathsea,Kpathsea}).  It does no path searching for
+ at file{.aux} files.
+
+The program accepts the following options, as well as the standard
+ at samp{-help} and @samp{-version} (@pxref{Common options}):
+ at table @samp
+ at item -terse
+ at opindex -terse
+ at cindex terse output
+ at cindex verbose Bib at TeX{} output, suppressing
+Suppress the program banner and progress reports normally output.
+
+ at item -min-crossrefs=@var{n}
+ at opindex -min-crossrefs=@var{n}
+ at cindex cross-referenced bibliography items
+ at cindex bibliography items, cross-referenced
+If at least @var{n} (2 by default) bibliography entries refer to another
+entry @var{e} via their @code{crossref} field, include @var{e} in the
+ at t{.bbl} file, even if it was not explicitly referenced in the @t{.aux}
+file. For example, @var{e} might be a conference proceedings as a whole,
+with the cross-referencing entries being individual articles published
+in the proceedings.  In some circumstances, you may want to avoid these
+automatic inclusions altogether; to do this, make @var{n} a sufficiently
+large number.
+ at end table
+
+See also:
+ at table @file
+ at item btxdoc.tex
+ at flindex btxdoc.tex
+Basic @LaTeX{}able documentation for general Bib at TeX{} users.
+
+ at item btxhak.tex
+ at flindex btxhak.tex
+ at cindex style design, for Bib at TeX{}
+ at LaTeX{}able documentation for style designers.
+
+ at item btxdoc.bib
+ at flindex btxdoc.bib
+Bib at TeX{} database file for the two above documents.
+
+ at item xampl.bib
+ at flindex xampl.bib
+Example database file with all the standard entry types.
+
+ at item @url{ftp://ftp.math.utah.edu/pub/tex/bib/}
+ at flindex ftp.math.utah.edu
+ at cindex Bib at TeX{} collection
+ at cindex TUGboat bibliography
+ at cindex @TeX{}, bibliographies for
+A very large @file{.bib} and @file{.bst} collection, including
+references for all the standard @TeX{} books and a complete bibliography
+for TUGboat.
+ at end table
+
+
+ at node Basic BibTeX style files
+ at section Basic Bib at TeX{} style files
+
+ at cindex basic Bib at TeX{} style files
+ at cindex Bib at TeX{} style files
+
+Here are descriptions of the four standard and four semi-standard basic
+Bib at TeX{} styles.  @file{@var{CTAN:}/biblio/bibtex} contains these and
+many more (for CTAN info, @pxref{unixtex.ftp,,, kpathsea, Kpathsea}).
+
+ at table @code
+ at item plain
+ at flindex plain.bst
+Sorts entries alphabetically, with numeric labels.  Generally formatted
+according to van Leunen's @cite{A Handbook for Scholars}.  The other
+style files listed here are based on @code{plain}.
+
+ at item abbrv
+ at flindex abbrv.bst
+First names, month names, and journal names are abbreviated.
+
+ at item acm
+ at flindex acm.bst
+Names are printed in small caps.
+
+ at item alpha
+ at flindex alpha.bst
+Alphanumeric labels, e.g., @samp{Knu66}.
+
+ at item apalike
+ at flindex apalike.bst
+No labels at all; instead, the year appears in parentheses after the author.
+Use this in conjunction with @file{apalike.tex} (plain @TeX{}) or
+ at file{apalike.sty} (@LaTeX{}), which also changes the citations in the
+text to be @samp{(@var{author}, @var{year})}.
+
+ at item ieeetr
+ at flindex ieeetr.bst
+Numeric labels, entries in citation order, @sc{ieee} abbreviations,
+article titles in quotes.
+
+ at item siam
+ at flindex siam.bst
+Numeric labels, alphabetic order, @cite{Math.@: Reviews}
+abbreviations, names in small caps.
+
+ at item unsrt
+ at flindex unsrt.bst
+Lists entries in citation order, i.e., unsorted.
+
+ at item btxbst.doc
+The template file and documentation for the standard styles.
+
+ at end table
+
+
+ at node WEB
+ at chapter WEB: Literate programming
+
+ at cindex WEB
+ at cindex literate programming
+
+ at dfn{WEB} languages allow you to write a single source file that can
+produce both a compilable program and a well-formatted document
+describing the program in as much detail as you wish to prepare.
+Writing in this kind of dual-purpose language is called @dfn{literate
+programming}.  (The Usenet newsgroup @file{comp.programming.literate}
+is devoted to this subject.)
+
+ at flindex webman.tex
+ at cindex Spiderweb
+ at cindex Cweb
+ at cindex CWEB
+ at cindex Awk, WEB for
+ at cindex Ada, WEB for
+ at cindex Troff, WEB for
+WEB-like languages have been implemented with many pairs of base
+languages: Cweb provides C and Troff (@pxref{References}); CWEB provides
+C and @TeX{} (@file{@var{CTAN:}/web/c_cpp/cweb}); Spiderweb provides C,
+C++, Awk, Ada, many others, and @TeX{}
+(@file{@var{CTAN:}/web/spiderweb}); and, of course, the original WEB
+provides Pascal and @TeX{}, the implementation languages for the
+original @TeX{}, Metafont, MetaPost, and related programs to come from
+the @TeX{} project at Stanford.
+
+The original WEB language is documented in the file @file{webman.tex},
+which is included in the @url{ftp://ftp.tug.org/tex/lib.tar.gz} archive
+(and available in many other places, of course).
+
+ at menu
+* tangle invocation::           
+* weave invocation::            
+* pooltype invocation::         
+ at end menu
+
+
+ at node tangle invocation
+ at section Tangle: Translate WEB to Pascal
+
+ at pindex tangle
+ at cindex Pascal, creating from WEB
+ at cindex WEB programs, compiling
+
+Tangle creates a compilable Pascal program from a WEB source file
+(@pxref{WEB}).  Synopsis:
+
+ at example
+tangle [@var{option}]@dots{} @var{webfile}[.web] [@var{changefile}[.ch]]
+ at end example
+
+ at cindex change files, and Tangle
+ at noindent
+The Pascal output is written to the basename of @var{webfile} extended
+with @samp{.p}; for example, @samp{tangle /wherever/foo.web} creates
+ at file{./foo.p}.  Tangle applies @var{changefile} to @var{webfile} before
+writing the output; by default, there is no change file.
+
+ at cindex pool file, writing
+ at cindex string pool, writing
+If the program makes use of the WEB string facility, Tangle writes the
+string pool to the basename of @var{webfile} extended with @samp{.pool}.
+
+The Pascal output is packed into lines of 72 characters or less, with
+the only concession to readability being the termination of lines at
+semicolons when this can be done conveniently.
+
+The program accepts the following options, as well as the standard
+ at samp{--help} and @samp{--version} (@pxref{Common options}):
+
+ at table @samp
+ at item -length=@var{number}
+ at opindex -length=@var{number}
+ at cindex identifier length
+The number of characters that are considered significant in an
+identifier.  Whether underline characters are counted depends on the
+ at samp{-underline} option.  The default value is 32, the original tangle
+used 7, but this proved too restrictive for use by Web2c.
+
+ at item -lowercase
+ at itemx -mixedcase
+ at itemx -uppercase
+ at opindex -lowercase
+ at opindex -mixedcase
+ at opindex -uppercase
+ at cindex identifier case
+These options specify the case of identifiers in the output of tangle.
+If @samp{-uppercase} (@samp{-lowercase}) is specified, tangle will
+convert all identfiers to uppercase (lowercase).  The default is
+ at samp{-mixedcase}, which specifies that the case will not be changed.
+
+ at item -underline
+ at opindex -underline
+ at cindex identifiers with underlines
+When this option is given, tangle does not strip underline characters
+from identifiers.
+
+ at item -loose
+ at itemx -strict
+ at opindex -loose
+ at opindex -strict
+ at cindex identifier collisions
+These options specify how strict tangle must be when checking
+identifiers for equality.  The default is @samp{-loose}, which means
+that tangle will follow the rules set by the case-smashing and underline
+options above.  If @samp{-strict} is set, then identifiers will always
+be stripped of underlines and converted to uppercase before checking
+whether they collide.
+
+ at end table
+
+ at node weave invocation
+ at section Weave: Translate WEB to @TeX{}
+
+ at pindex weave
+ at cindex @TeX{}, creating from WEB
+ at cindex WEB programs, typesetting
+ at cindex prettyprinting WEB programs
+
+Weave creates a @TeX{} document from a WEB source file (@pxref{WEB}),
+assuming various macros defined in @file{webmac.tex}.   It takes care of
+typographic details such as page layout, indentation, and italicizing
+identifiers.  It also automatically gathers and outputs extensive
+cross-reference information.  Synopsis:
+
+ at example
+weave [@var{option}]@dots{} @var{webfile}[.web] [@var{changefile}[.ch]]
+ at end example
+
+ at cindex change files, and Weave
+ at noindent
+The output is to the basename of @var{webfile} extended with
+ at samp{.tex}; for example, @samp{weave /wherever/foo.web} creates
+ at file{./foo.tex}.  Weave applies @var{changefile} to @var{webfile}
+before writing the output; by default, there is no change file.
+
+The program accepts the following option, as well as the standard
+ at samp{-verbose}, @samp{-help} and @samp{-version} (@pxref{Common
+options}):
+ at table @samp
+ at item -x
+ at opindex -x
+ at cindex cross-references, omitting
+ at flindex CONTENTS.tex
+ at flindex webmac.tex
+Omit the cross-reference information: the index, the list of WEB module
+names, and the table of contents (an empty @file{CONTENTS.tex} file will
+still be written when the Weave output file is processed by @TeX{} using
+the default @file{webmac.tex}, though).
+ at end table
+
+Conventionally, WEB programmers should define the @TeX{} @code{\title}
+macro at the beginning of the source file.  Also, to get output of only
+changed modules, one can say @code{\let\maybe=\iffalse} (usually as the
+first change in the change file).
+
+
+ at node pooltype invocation
+ at section Pooltype: Display WEB pool files
+
+ at pindex pooltype
+ at cindex type programs, pool
+ at cindex string numbers, displaying
+ at cindex WEB pool files, displaying
+
+Pooltype shows the so-called @dfn{string number} of each string in a WEB
+pool file (@pxref{WEB}), as output by Tangle (@pxref{tangle
+invocation}), including the first 256 strings corresponding to the
+possible input characters.  Pooltype primarily serves as an example of
+WEB conventions to implementors of the @TeX{} system.  Synopsis:
+
+ at example
+pooltype [@var{option}]@dots{} @var{poolfile}[.pool]
+ at end example
+
+ at noindent
+No path searching is done for @var{poolfile}.  Output is to standard
+output.
+
+The only options are @samp{--help} and @samp{--version} (@pxref{Common
+options}).
+
+As an example of the output, here is the (edited) output for @file{tex.pool}:
+ at example
+0: "^^@@"
+1: "^^A"
+ at dots{}
+255: "^^ff"
+256: "pool size"
+ at dots{}
+1314: "Using character substitution: "
+(23617 characters in all.)
+ at end example
+
+ at cindex representation of strings
+ at cindex string representation
+In Metafont and MetaPost, the first 256 characters are actually
+represented as single bytes (i.e., themselves), not in the @samp{^^}
+notation.  Consider Pooltype as showing the results after conversion for
+output.
+
+
+ at node DVI utilities
+ at chapter DVI utilities
+
+ at cindex DVI utilities
+
+ at TeX{} outputs a file in @dfn{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 (@pxref{Top,, Introduction, dvips, Dvips}), PCL
+printers (see dvilj(1)), and X displays (see xdvi(1)).  In fact, DVI
+translators are available for virtually all common devices: see
+ at file{@var{CTAN:}/dviware} (for CTAN info, @pxref{unixtex.ftp,,,
+kpathsea, Kpathsea}).
+
+ at flindex dvitype.web
+ at cindex DVI format definition
+For the precise definition of the DVI file format, see (for example) the
+source file @file{web2c/dvitype.web}.
+
+The DVI-processing programs in the Web2c distribution are not device
+drivers; they perform generic utility functions.
+
+ at menu
+* dvicopy invocation::          Expand virtual fonts.
+* dvitype invocation::          DVI to human-readable text.
+ at end menu
+
+ at node dvicopy invocation
+ at section DVIcopy: Canonicalize virtual font references
+
+ at pindex dvicopy
+ at cindex virtual fonts, expanding
+
+DVIcopy reads a DVI file, expands any references to virtual fonts
+(@pxref{Virtual fonts,,, dvips, Dvips}) to base fonts, and writes the
+resulting DVI file.  Thus you can use virtual fonts even if your DVI
+processor does not support them, by passing the documents through
+DVIcopy first.  Synopsis:
+
+ at example
+dvicopy [@var{option}]@dots{} [@var{indvi}[.dvi] [@var{outdvi}[.dvi]]]
+ at end example
+
+DVIcopy reads standard input if @var{indvi} is not specified, and writes
+standard output if @var{outdvi} is not specified.
+
+The program accepts the following options, as well as the standard
+ at samp{-help} and @samp{-version} (@pxref{Common options}):
+ at table @samp
+ at item -magnification=@var{integer}
+ at opindex -magnification=@var{integer}
+ at cindex magnification
+ at findex \mag
+Override existing magnification in @var{indvi} with @var{integer}; 1000
+specifies no magnification.  This is equivalent to setting @TeX{}'s
+ at code{\mag} parameter.
+
+ at item -max-pages=@var{n}
+ at opindex -max-pages=@var{n}
+Process @var{n} pages; default is one million.
+
+ at item -page-start=@var{page-spec}
+ at opindex -page-start=@var{page-spec}
+ at cindex starting page
+ at cindex page, starting
+ at findex \count at var{n}
+Start at the first page matching @var{page-spec}, which is one or more
+(signed) integers separated by periods, corresponding to @TeX{}'s
+ at code{\count0 at dots{}9} parameters at @code{\shipout} time; @samp{*}
+matches anything.  Examples: @samp{3}, @samp{1.*.-4}.
+ at end table
+
+
+ at node dvitype invocation
+ at section DVItype: Plain text transliteration of DVI files
+
+ at pindex dvitype @r{DVI validation}
+ at cindex conversion, DVI to plain text
+ at cindex plain text, converting DVI to
+ at cindex human-readable text, converting DVI to
+ at cindex type programs, DVI
+ at cindex validation, of DVI files
+
+DVItype translates a DeVice Independent (DVI) file (as output by @TeX{},
+for example) to a plain text file that humans can read.  It also serves
+as a DVI-validating program, i.e., if DVItype can read a file, it's
+correct.  Synopsis:
+
+ at example
+dvitype [@var{option}]@dots{} @var{dvifile}[.dvi]
+ at end example
+
+ at noindent
+DVItype does not read any bitmap files, but it does read TFM files for
+fonts referenced in @var{dvifile}.  The usual places are searched
+(@pxref{Supported file formats,,, kpathsea, Kpathsea}).  To see all the
+relevant paths, set the environment variable @code{KPATHSEA_DEBUG} to
+ at samp{-1} before running the program.
+
+Output goes to standard output.
+
+The program accepts the following options, as well as the standard
+ at samp{-help} and @samp{-version} (@pxref{Common options}):
+ at table @samp
+ at item -dpi=@var{real}
+ at opindex -dpi=@var{real}
+Do pixel movement calculations at @var{real} pixels per inch; default
+300.0.
+
+ at item -magnification=@var{integer}
+ at opindex -magnification=@var{integer}
+ at cindex magnification
+ at findex \mag
+Override existing magnification in @var{indvi} with @var{integer}; 1000
+specifies no magnification.  This is equivalent to setting @TeX{}'s
+ at code{\mag} parameter.
+
+ at item -max-pages=@var{n}
+ at opindex -max-pages=@var{n}
+Process @var{n} pages; default is one million.
+
+ at item -output-level=@var{n}
+ at opindex -output-level=@var{n}
+Verbosity level of output, from 0 to 4 (default 4):
+ at itemize @bullet
+ at item 0: Global document information only.
+ at item 1: Most DVI commands included, and typeset characters summarized.
+ at item 2: Character and movement commands explicitly included.
+ at item 3: DVI stack and current position calculations included.
+ at item 4: Same information as level 3, but DVItype does random positioning
+in the file, reading the DVI postamble first.
+ at end itemize
+
+ at item -page-start=@var{page-spec}
+ at opindex -page-start=@var{page-spec}
+ at cindex starting page
+ at cindex page, starting
+ at findex \count at var{n}
+Start at the first page matching @var{page-spec}, which is one or more
+(signed) integers separated by periods, corresponding to @TeX{}'s
+ at code{\count0 at dots{}9} parameters at @code{\shipout} time; @samp{*}
+matches anything.  Examples: @samp{1}, @samp{5.*.-9}.
+
+ at item -show-opcodes
+ at opindex -show-opcodes
+ at cindex opcodes, showing DVI
+ at cindex DVI opcodes, showing
+ at cindex debugging DVI utilities
+Show numeric opcode values (in decimal) for DVI commands, in braces
+after the command name. This can help in debugging DVI utilities.  We
+use decimal because in the DVI format documentation (in
+ at file{dvitype.web}, among others) the opcodes are shown in decimal.
+ at end table
+
+ at menu
+* dvitype output example::      
+ at end menu
+
+
+ at node dvitype output example
+ at subsection DVItype output example
+
+ at cindex dvitype output example
+As an example of the output from DVItype (see section above), here is
+its (abridged) translation of the @file{story.dvi} resulting from
+running the example in @cite{The @TeX{}book}, with
+ at samp{-output-level=4} and @samp{-show-opcodes} on.
+
+ at example
+ at dots{}
+Options selected:
+  Starting page = * 
+  Maximum number of pages = 1000000
+  Output level = 4 (the works)
+  Resolution = 300.00000000 pixels per inch
+numerator/denominator=25400000/473628672
+magnification=1000;       0.00006334 pixels per DVI unit
+' TeX output 1992.05.17:0844'
+Postamble starts at byte 564.
+maxv=43725786, maxh=30785863, maxstackdepth=3, totalpages=1
+Font 33: cmsl10---loaded at size 655360 DVI units 
+Font 23: cmbx10---loaded at size 655360 DVI units 
+Font 0: cmr10---loaded at size 655360 DVI units 
+ 
+42: beginning of page 1 
+87: push @{141@} 
+level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) 
+88: down3 -917504 @{159@} v:=0-917504=-917504, vv:=-58 
+92: pop @{142@} 
+ at dots{}
+104: putrule @{137@} height 26214, width 30785863 (2x1950 pixels) 
+113: down3 5185936 @{159@} v:=655360+5185936=5841296, vv:=370 
+117: push @{141@} 
+level 1:(h=0,v=5841296,w=0,x=0,y=0,z=0,hh=0,vv=370) 
+118: right4 12265425 @{146@} h:=0+12265425=12265425, hh:=777 
+[ ]
+123: fntdef1 23 @{243@}: cmbx10 
+145: fntnum23 @{194@} current font is cmbx10 
+146: setchar65 h:=12265425+569796=12835221, hh:=813 
+147: w3 251220 @{150@} h:=12835221+251220=13086441, hh:=829 
+151: setchar83 h:=13086441+418700=13505141, hh:=856 
+ at dots{}
+164: setchar82 h:=17448202+565245=18013447, hh:=1142 
+165: x0 -62805 @{152@} h:=18013447-62805=17950642, hh:=1138 
+166: setchar89 h:=17950642+569796=18520438, hh:=1174 
+[A SHORT STORY]
+167: pop @{142@} 
+level 1:(h=0,v=5841296,w=0,x=0,y=0,z=0,hh=0,vv=370) 
+ at dots{}
+550: pop @{142@} 
+level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) 
+551: down3 1572864 @{159@} v:=42152922+1572864=43725786, vv:=2770 
+555: push @{141@} 
+level 0:(h=0,v=43725786,w=0,x=0,y=0,z=0,hh=0,vv=2770) 
+556: right4 15229091 @{146@} h:=0+15229091=15229091, hh:=965 
+561: setchar49 h:=15229091+327681=15556772, hh:=986 
+[ 1]
+562: pop @{142@} 
+level 0:(h=0,v=43725786,w=0,x=0,y=0,z=0,hh=0,vv=2770) 
+563: eop @{140@} 
+ at end example
+
+Explanation:
+
+ at itemize @bullet
+ at item
+The DVItype options are recorded at the beginning, followed by
+global information about the document, including fonts used.
+
+ at item
+Each DVI command is preceded by its byte position in the file
+(@samp{42:}, @samp{87:}, @dots{}), and (because of the
+ at samp{-show-opcodes}) followed by its decimal opcode value in braces
+(@samp{@{141@}}, @samp{@{142@}}, @dots{}).
+
+ at item
+The @samp{level} lines record information about the DVI stack; @samp{h}
+and @samp{v} define the current position in DVI units, while @samp{hh}
+and @samp{vv} are the same in pixels.
+
+ at item
+Text sequences are summarized in brackets, as in @samp{[A SHORT
+STORY]} and the @samp{[ 1]}.
+ at end itemize
+
+
+ at node Font utilities
+ at chapter Font utilities
+
+ at cindex 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.
+
+ at flindex pktype.web
+ at flindex gftype.web
+ at cindex PK format definition
+ at cindex GF format definition
+The precise definitions of the PK, GF, TFM, PL, VF, and VPL formats
+mentioned below are in the source files that read them;
+ at file{pktype.web}, @file{gftype.web}, @file{tftopl.web}, etc.
+
+ at menu
+* Font file formats::       Explanations of GF, PK, TFM, VF, ...
+* gftopk invocation::       GF -> PK (compact)
+* pktogf invocation::       PK -> GF (expand).
+* pktype invocation::       PK -> human-readable text.
+* gftype invocation::       GF -> human-readable text.
+* tftopl invocation::       TFM -> PL (for editing TFM).
+* pltotf invocation::       PL -> TFM (make editing results usable).
+* vftovp invocation::       VF -> VPL (tftopl for virtual fonts).
+* vptovf invocation::       VPL -> VF (pltotf for virtual fonts).
+* Font utilities available elsewhere:: Type 1, BDF, editors, etc.
+ at end menu
+
+
+ at node Font file formats
+ at section Font file formats
+
+ at cindex font file formats
+ at cindex file formats for fonts
+
+(For another perspective on this, @pxref{Font concepts,,, dvips,
+Dvips}).
+
+Font files come in several varieties, with suffixes like:
+ at example
+.tfm  .*pk  .*gf  .*pxl at r{ (obsolete)}  .pl  .mf  .vf  .vpl
+ at end example
+ at noindent
+Each represents a file format.
+
+ at cindex TFM files, explained
+A TFM (@TeX{} font metric) file is a compact binary file that contains
+information about each character in a font, about combinations of
+characters within that font, and about the font as a whole.  The font
+metric information contained in TFM files is device-independent units is
+used by @TeX{} to do typesetting.  Unlike the bitmap (raster) fonts
+described below, TFM font files contain no information about the shapes
+of characters.  They describe rectangular areas and combinations
+thereof, but not what will eventually be printed in those areas.
+
+ at cindex scaling of fonts
+ at cindex optical font scaling
+ at cindex geometric font scaling
+ at cindex PostScript, and font scaling
+Since @TeX{} does scaling calculations, one TFM file serves for all
+magnifications of a given typeface.  On the other hand, the best printed
+results are obtained when magnified (or reduced fonts) are not produced
+geometrically (as done by PostScript, for example) but rather optically,
+with each size a separate design (as done with Computer Modern and the
+EC fonts, for example); then a separate TFM file is needed for each
+size.
+
+ at cindex DVI files, explained
+At any rate, @TeX{} produces a DVI (DeVice Independent) file from your
+source document.  In order to print DVI files on real devices, you need
+font files defining digitized character shapes and other data.  Then
+previewers and printer-driver programs can translate your DVI files into
+something usable by your monitor or printer.  Bitmap fonts come with
+suffixes such as @samp{.600pk} or @samp{.600gf} or @samp{.3000pxl}, where
+the @samp{600} is the horizontal dots-per-inch resolution at which the
+font was produced, and the @samp{pk} or @samp{gf} or @samp{pxl}
+indicates the font format.  Outline fonts in PostScript Type 1 format
+have suffixes such as @samp{.pfa} or @samp{.pfb}.
+
+ at cindex PXL files, explained
+ at cindex PK files, explained
+ at cindex GF files, explained
+Fonts in pk (packed) format are in the tightly packed raster format that
+is pretty much the standard today.  They take up less space than fonts
+in the gf (generic font) format that Metafont generates, and far less
+space than fonts in pxl format.  Fonts in pxl format take up gross
+amounts of disk space and permit only 128 characters.  They are
+obsolete.
+
+ at cindex PL files, explained
+Font files with the @samp{.pl} (property list) suffix are the plain text
+(human-readable) analog of the binary @samp{.tfm} files.  
+The TFtoPL and PLtoTF programs convert between the two formats
+(@pxref{tftopl invocation} and @ref{pltotf invocation}).
+
+Font files with the @samp{.mf} suffix are in Metafont source format.
+These are the files used by Metafont to generate rastered fonts for
+specific typefaces at specific magnifications for the specific
+resolution and type of mapping used by your device.
+
+ at flindex virtual-fonts.knuth
+ at flindex virtualfonts.txt
+The suffix @samp{.vf} identifies ``virtual font'' files, for which
+ at samp{.vpl} is the human-readable analog.  See @xref{vftovp invocation},
+and @ref{vptovf invocation}.  For further discussion of virtual fonts,
+see @file{@var{CTAN:}/doc/virtual-fonts.knuth},
+ at file{@var{CTAN:}/help/virtualfonts.txt}, and @ref{Virtual fonts,,,
+dvips, Dvips}.
+
+ at cindex MacKay, Pierre
+ at cindex Tachikawa, Elizabeth
+(This section is based on documentation in the original Unix @TeX{}
+distribution by Pierre MacKay and Elizabeth Tachikawa.)
+
+
+ at node gftopk invocation
+ at section GFtoPK: Generic to packed font conversion
+
+ at pindex gftopk
+ at cindex conversion, GF to PK
+ at cindex PK, converting GF to
+ at cindex GF, converting to PK
+
+GFtoPK converts a generic font (GF) file output by, for example,
+Metafont (@pxref{mf invocation}) to a packed font (PK) file.  PK files
+are considerably smaller than the corresponding gf files, so they are
+generally the bitmap font format of choice.  Some DVI-processing
+programs, notably Dvips, only support PK files and not GF files.
+Synopsis:
+
+ at example
+gftopk [@var{option}]@dots{} @var{gfname}. at var{dpi}[gf] [@var{pkfile}]
+ at end example
+
+ at noindent
+The font @var{gfname} is searched for in the usual places (@pxref{Glyph
+lookup,,, kpathsea, Kpathsea}).  To see all the relevant paths, set the
+environment variable @code{KPATHSEA_DEBUG} to @samp{-1} before running
+the program.
+
+The suffix @samp{gf} is supplied if not already present.  This suffix is
+not an extension; no @samp{.} precedes it: for instance,
+ at file{cmr10.600gf}.
+
+If @var{pkfile} is not specified, the output is written to the basename
+of @samp{@var{gfname}. at var{dpi}pk}, e.g., @samp{gftopk
+/wherever/cmr10.600gf} creates @file{./cmr10.600pk}.
+
+The only options are @samp{--verbose}, @samp{--help}, and
+ at samp{--version} (@pxref{Common options}).
+
+
+ at node pktogf invocation
+ at section PKtoGF: Packed to generic font conversion
+
+ at pindex pktogf
+ at cindex conversion, PK to GF
+ at cindex GF, converting PK to
+ at cindex PK, converting to GF
+
+PKtoGF converts a packed font (PK) file to a generic font (GF) file.
+Since PK format is much more compact than GF format, the most likely
+reason to do this is to run GFtype (@pxref{gftype invocation}) on the
+result, so you can see the bitmap images.  Also, a few old utility
+programs do not support PK format.  Synopsis:
+
+ at example
+pktogf [@var{option}]@dots{} @var{pkname}. at var{dpi}[pk] [@var{gffile}]
+ at end example
+
+ at noindent
+The font @var{pkname} is searched for in the usual places (@pxref{Glyph
+lookup,,, kpathsea, Kpathsea}).  To see all the relevant paths, set the
+environment variable @code{KPATHSEA_DEBUG} to @samp{-1} before running
+the program.
+
+The suffix @samp{pk} is supplied if not already present.  This suffix is
+not an extension; no @samp{.} precedes it: for instance,
+ at file{cmr10.600pk}.
+
+If @var{gffile} is not specified, the output is written to the basename
+of @samp{@var{pkname}. at var{dpi}gf}, e.g., @samp{pktogf
+/wherever/cmr10.600pk} creates @file{./cmr10.600gf}.
+
+The only options are @samp{--verbose}, @samp{--help}, and
+ at samp{--version} (@pxref{Common options}).
+
+
+ at node pktype invocation
+ at section PKtype: Plain text transliteration of packed fonts
+
+ at pindex pktype @r{PK validation}
+ at cindex conversion, PK to plain text
+ at cindex plain text, converting PK to
+ at cindex human-readable text, converting PK to
+ at cindex type programs, PK
+ at cindex validation, of PK files
+
+PKtype translates a packed font (PK) bitmap file (as output by GFtoPK,
+for example) to a plain text file that humans can read.  It also serves
+as a PK-validating program, i.e., if PKtype can read a file, it's
+correct.  Synopsis:
+
+ at example
+pktype @var{pkname}. at var{dpi}[pk]
+ at end example
+
+The font @var{pkname} is searched for in the usual places (@pxref{Glyph
+lookup,,, kpathsea, Kpathsea}).  To see all the relevant paths, set the
+environment variable @code{KPATHSEA_DEBUG} to @samp{-1} before running
+the program.
+
+The suffix @samp{pk} is supplied if not already present.  This suffix is
+not an extension; no @samp{.} precedes it: for instance, @file{cmr10.600pk}.
+
+The translation is written to standard output.
+
+The only options are @samp{-help} and @samp{-version}
+(@pxref{Common options}).
+
+As an example of the output, here is the (abridged) translation of the
+letter `K' in @samp{cmr10}, as rendered at 600 at dmn{dpi} with the mode
+ at samp{ljfour} from @url{modes.mf} (available from
+ at file{ftp://ftp.tug.org/tex/modes.mf}).
+
+ at smallexample
+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)@dots{}
+  @dots{}
+  (14)9(24)12(5)[2]23(13)21 
+ at end smallexample
+
+ at noindent
+Explanation:
+
+ at table @samp
+ at item 955
+ at cindex byte position
+The byte position in the file where this character starts.
+
+ at item Flag byte
+ at itemx Dynamic packing variable
+ at cindex flag byte
+ at cindex dynamic packing variable
+Related to the packing for this character; see the source code.
+
+ at item Character
+ at cindex character codes, in PKtype output
+The character code, in decimal.
+
+ at item Packet length
+ at cindex packet length
+The total length of this character definition, in bytes.
+
+ at item TFM width
+ at cindex TFM width of characters
+ at cindex device-independent width
+ at cindex width, device-independent
+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.
+
+ at item dx
+ at cindex horizontal escapement
+ at cindex escapement, horizontal
+ at cindex scaled pixels
+ at cindex dx @r{horizontal escapement}
+The device-dependent width, in @dfn{scaled pixels}, i.e., units of
+horizontal pixels times 2^16.
+
+ at item Height
+ at itemx Width
+ at cindex height, in pixels
+ at cindex pixel height
+ at cindex pixel width
+ at cindex width, in pixels
+The bitmap height and width, in pixels.
+
+ at item X-offset
+ at itemx Y-offset
+ at cindex x offset
+ at cindex y offset
+ at cindex origin
+ at cindex reference pixel
+ at cindex side bearings
+ at cindex left side bearing
+ at cindex right side bearing
+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 @dfn{reference pixel} is the pixel that occupies the
+unit square in Metafont; the Metafont reference 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.
+
+ at item [2]23(16)@dots{}
+ at cindex run length encoded bitmaps
+ at cindex repeated rows
+Finally, run lengths of black pixels alternate with parenthesized run
+lengths of white pixels, and brackets indicate a repeated row.
+ at end table
+
+
+ at node gftype invocation
+ at section GFtype: Plain text transliteration of generic fonts
+
+ at pindex gftype @r{GF validation}
+ at cindex conversion, GF to plain text
+ at cindex plain text, converting GF to
+ at cindex human-readable text, converting GF to
+ at cindex type programs, GF
+ at cindex validation, of GF files
+
+GFtype translates a generic font (GF) bitmap file (as output by
+Metafont, for example) to a plain text file that humans can read.  It
+also serves as a GF-validating program, i.e., if GFtype can read a file,
+it's correct.  Synopsis:
+
+ at example
+gftype [@var{option}]@dots{} @var{gfname}. at var{dpi}[gf]
+ at end example
+
+The font @var{gfname} is searched for in the usual places (@pxref{Glyph
+lookup,,, kpathsea, Kpathsea}).  To see all the relevant paths, set the
+environment variable @code{KPATHSEA_DEBUG} to @samp{-1} before running
+the program.
+
+The suffix @samp{gf} is supplied if not already present.  This suffix is
+not an extension; no @samp{.} precedes it: for instance, @file{cmr10.600gf}.
+
+The translation is written to standard output.
+
+The program accepts the following options, as well as the standard
+ at samp{-help} and @samp{-version} (@pxref{Common options}):
+ at table @samp
+ at item -images
+ at opindex -images
+Show the characters' bitmaps using asterisks and spaces.
+
+ at item -mnemonics
+ at opindex -mnemonics
+Translate all commands in the GF file.
+ at end table
+
+As an example of the output, here is the (abrdiged) translation of the
+letter `K' in @samp{cmr10}, as rendered at 600 at dmn{dpi} with the mode
+ at samp{ljfour} from @file{modes.mf} (available from
+ at url{ftp://ftp.tug.org/tex/modes.mf}), with both @samp{-mnemonics} and
+ at samp{-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:
+
+ at example
+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
+ at dots{}
+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
+ at group
+.<--This pixel's lower left corner is at (3,57) in METAFONT coordinates
+************************            ********************
+************************            ********************
+************************            ********************
+************************            ********************
+       **********                     *************
+        ********                       *********
+ at dots{}
+        ********                       ***********
+       **********                      ************
+************************           **********************
+************************           **********************
+************************           **********************
+************************           **********************
+.<--This pixel's upper left corner is at (3,0) in METAFONT coordinates
+ at end group
+ at end example
+
+ at noindent
+Explanation:
+
+ at table @samp
+ at item 2033
+ at itemx 2043
+ at itemx @dots{}
+ at cindex byte position
+The byte position in the file where each GF command starts.
+
+ at item beginning of char 75
+ at cindex character codes, in GFtype output
+The character code, in decimal.
+
+ at item 3<=m<=60 0<=n<=56
+ at cindex left side bearing
+ at cindex right side bearing
+ at cindex side bearings
+The character's bitmap lies between 3 and 60 (inclusive) horizontally,
+and between 0 and 56 (inclusive) vertically. (@math{m} is a column
+position and @math{n} is a row position.)  Thus, 3 is the left side
+bearing.  The right side bearing is the horizontal escapement (given
+below) minus the maximum @math{m}.
+
+ at item (initially n=56) paint (0)24(12)20
+ at cindex run length encoded bitmaps
+The first row of pixels: 0 white pixels, 24 black pixels, 12 white
+pixels, etc.
+
+ at item newrow 0 (n=55) paint 24(12)20
+ at findex newrow @r{GF command}
+The second row of pixels, with zero leading white pixels on the row.
+
+ at item eoc
+ at findex eoc @r{GF command}
+The end of the main character definition.
+
+ at end table
+
+Here is the GF postamble information that GFtype outputs at the end:
+
+ at example
+Character 75: dx 4259840 (65), width 815562 (64.57289), loc 2033
+ at end example
+
+Explanation:
+
+ at table @samp
+ at item dx
+ at cindex horizontal escapement
+ at cindex escapement, horizontal
+ at cindex vertical escapement
+ at cindex escapement, vertical
+ at cindex scaled pixels
+ at cindex dx @r{horizontal escapement}
+ at cindex dy @r{vertical escapement}
+The device-dependent width, in @dfn{scaled pixels}, i.e., units of
+horizontal pixels times 2^16.  The @samp{(65)} is simply the same number
+rounded.  If the vertical escapement is nonzero, it would appear here as
+a @samp{dy} value.
+
+ at item width
+ at cindex TFM width of characters
+ at cindex device-independent width
+ at cindex width, device-independent
+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.  The
+ at samp{64.57289} is the same number converted to pixels.
+
+ at item loc
+The byte position in the file where this character starts.
+
+ at end table
+
+
+ at node tftopl invocation
+ at section TFtoPL: @TeX{} font metric to property list conversion
+
+ at pindex tftopl
+ at cindex conversion, TFM to property list
+ at cindex validation, of TFM files
+ at cindex property list, converting TFM to
+ at cindex human-readable text, converting TFM to
+ at cindex plain text, converting TFM to
+
+TFtoPL translates a @TeX{} font metric (TFM, @pxref{Metric
+files,,,dvips,Dvips}) file (as output by Metafont, for example) to
+ at dfn{property list format} (a list of parenthesized items describing the
+font) that humans can edit or read.  This program is mostly used by
+people debugging @TeX{} implementations, writing font utilities, etc.
+Synopsis:
+
+ at example
+tftopl [@var{option}]@dots{} @var{tfmname}[.tfm] [@var{plfile}[.pl]]
+ at end example
+
+The font @var{tfmname} (extended with @samp{.tfm} if necessary) is
+searched for in the usual places (@pxref{Supported file formats,,,
+kpathsea, Kpathsea}).  To see all the relevant paths, set the
+environment variable @code{KPATHSEA_DEBUG} to @samp{-1} before running
+the program.
+
+If @var{plfile} (which is extended with @samp{.pl} if necessary) is not
+specified, the property list file is written to standard output.  The
+property list file can be converted back to TFM format by the companion
+program TFtoPL (see the next section).
+
+The program accepts the following option, as well as the standard
+ at samp{-verbose}, @samp{-help} and @samp{-version} (@pxref{Common
+options}):
+ at table @samp
+ at item -charcode-format=@var{type}
+ at opindex -charcode-format=@var{type}
+Output character codes in the PL file according to @var{type}: either
+ at samp{octal} or @samp{ascii}.  Default is @samp{ascii} for letters and
+digits, octal for all other characters.  Exception: if the font's coding
+scheme starts with @samp{TeX math sy} or @samp{TeX math ex}, all
+character codes are output in octal.
+
+In @samp{ascii} format, character codes that correspond to graphic
+characters, except for left and right parentheses, are output as a
+ at samp{C} followed by the single character: @samp{C K}, for example.  In
+octal format, character codes are output as the letter @samp{O} followed
+by octal digits, as in @samp{O 113} for @samp{K}.
+
+ at samp{octal} format is useful for symbol and other non-alphabetic fonts,
+where using ASCII characters for the character codes is merely
+confusing.
+ at end table
+
+ at cindex property list format
+As an example of the output, here is the (abridged) property list
+translation of @file{cmr10.tfm}:
+
+ at example
+(FAMILY CMR)
+(FACE O 352)
+(CODINGSCHEME TEX TEXT)
+(DESIGNSIZE R 10.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(CHECKSUM O 11374260171)
+(FONTDIMEN
+   (SLANT R 0.0)
+   (SPACE R 0.333334)
+   (STRETCH R 0.166667)
+   (SHRINK R 0.111112)
+   (XHEIGHT R 0.430555)
+   (QUAD R 1.000003)
+   (EXTRASPACE R 0.111112)
+   )
+(LIGTABLE
+   @dots{}
+   (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)
+   @dots{}
+   )
+ at dots{}
+(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)
+      @dots{}
+      )
+   )
+ at dots{}
+ at end example
+
+As you can see, the general format is a list of parenthesized
+ at dfn{properties}, nested where necessary.
+
+ at itemize @bullet
+ at item
+ at findex FAMILY @r{property}
+ at findex FACE @r{property}
+ at findex headerbyte @r{information}
+The first few items (@code{FAMILY}, @code{FACE}, and so on) are
+the so-called @dfn{headerbyte} information from Metafont, giving general
+information about the font.
+
+ at item
+ at findex FAMILY @r{property}
+ at findex \fontdimen
+The @code{FONTDIMEN} property defines the @TeX{} @code{\fontdimen}
+values.
+
+ at item
+ at findex LIGTABLE @r{property}
+ at findex LABEL @r{property}
+ at findex LIG @r{property}
+ at findex KRN @r{property}
+ at cindex ligature table, in TFM files
+ at cindex kerning table, in TFM files
+ at cindex design-size units
+The @code{LIGTABLE} property defines the ligature and kerning table.
+ at code{LIG} properties define ligatures: in the example above, an
+ at samp{f} (in the @samp{LABEL}) followed by an @samp{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.  @code{KRN} properties define
+kerns: if an @samp{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).
+
+ at item
+ at findex CHARACTER @r{property}
+ at findex CHARWD @r{property}
+ at findex CHARHT @r{property}
+ at findex CHARDP @r{property}
+ at findex CHARIC @r{property}
+The @code{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.
+
+ at end itemize
+
+
+ at node pltotf invocation
+ at section PLtoTF: Property list to @TeX{} font metric conversion
+
+ at pindex pltotf
+ at cindex conversion, property list to TFM
+ at cindex TFM files, converting property lists to
+ at cindex machine-readable, converting property lists to
+
+PLtoTF translates a property list file (as output by TFtoPL, for
+example) to @TeX{} font metric (TFM, @pxref{Metric files,,,dvips,Dvips})
+format.  It's much easier for both programs and humans to create the
+(plain text) property list files and let PLtoTF take care of creating
+the binary TFM equivalent than to output TFM files directly.  Synopsis:
+
+ at example
+pltotf [@var{option}]@dots{} @var{plfile}[.pl] [@var{tfmfile}[.tfm]]
+ at end example
+
+If @var{tfmfile} (extended with @samp{.tfm} if necessary) is
+not specified, the TFM file is written to the basename of
+ at samp{@var{plfile}.tfm}, e.g., @samp{pltotf /wherever/cmr10.pl} creates
+ at file{./cmr10.tfm}.  (Since TFM files are binary, writing to standard
+output by default is undesirable.)
+
+The only options are @samp{-verbose}, @samp{-help}, and
+ at samp{-version} (@pxref{Common options}).
+
+For an example of property list format, see the previous section.
+
+
+ at node vftovp invocation
+ at section VFtoVP: Virtual font to virtual property lists
+
+ at pindex vftovp
+ at cindex conversion, VF to VPL
+ at cindex validation, of VF files
+ at cindex property list, converting VF to virtual
+ at cindex human-readable text, converting VF to
+ at cindex plain text, converting VF to
+
+VFtoVP translates a virtual font metric (VF, @pxref{Virtual
+fonts,,,dvips,Dvips}) file and its accompanying @TeX{} font metric (TFM,
+ at pxref{Metric files,,,dvips,Dvips}) file (as output by VPtoVF, for
+example) to @dfn{virtual property list format} (a list of parenthesized
+items describing the virtual font) that humans can edit or read.  This
+program is mostly used by people debugging virtual font utilities.
+Synopsis:
+
+ at example
+vftovp [@var{option}]@dots{} @var{vfname}[.vf] [@var{tfmname}[.tfm] @c
+[@var{vplfile}[.vpl]]]
+ at end example
+
+The fonts @var{vfname} and @var{tfmname} (extended with @samp{.vf} and
+ at samp{.tfm} if necessary) are searched for in the usual places
+(@pxref{Supported file formats,,, kpathsea, Kpathsea}).  To see all the
+relevant paths, set the environment variable @code{KPATHSEA_DEBUG} to
+ at samp{-1} before running the program.  If @var{tfmname} is not
+specified, @var{vfname} (without a trailing @samp{.vf}) is used.
+
+If @var{vplfile} (extended with @samp{.vpl} if necessary) is
+not specified, the property list file is written to standard output.
+The property list file can be converted back to VF and TFM format by the
+companion program VFtoVP (see the next section).
+
+The program accepts the following option, as well as the standard
+ at samp{-verbose}, @samp{-help} and @samp{-version} (@pxref{Common
+options}):
+ at table @samp
+ at item -charcode-format=@var{type}
+ at opindex -charcode-format=@var{type}
+Output character codes in the PL file according to @var{type}: either
+ at samp{octal} or @samp{ascii}.  Default is @samp{ascii} for letters and
+digits, octal for all other characters.  Exception: if the font's coding
+scheme starts with @samp{TeX math sy} or @samp{TeX math ex}, all
+character codes are output in octal.
+
+In @samp{ascii} format, character codes that correspond to graphic
+characters, except for left and right parentheses, are output as a
+ at samp{C} followed by the single character: @samp{C K}, for example.  In
+octal format, character codes are output as the letter @samp{O} followed
+by octal digits, as in @samp{O 113} for @samp{K}.
+
+ at samp{octal} format is useful for symbol and other non-alphabetic fonts,
+where using ASCII characters for the character codes is merely
+confusing.
+ at end table
+
+
+ at node vptovf invocation
+ at section VPtoVF: Virtual property lists to virtual font
+
+ at pindex vptovf
+ at cindex conversion, property list to VF
+ at cindex VF files, converting property lists to
+ at cindex machine-readable, converting property lists to
+
+VPtoVF translates a virtual property list file (as output by VFtoVP, for
+example) to virtual font (VF, @pxref{Virtual fonts,,,dvips,Dvips}) and
+ at TeX{} font metric (TFM, @pxref{Metric files,,,dvips,Dvips}) files.
+It's much easier for both programs and humans to create the (plain text)
+property list files and let VPtoVF take care of creating the binary VF
+and TFM equivalents than to output them directly.  Synopsis:
+
+ at example
+vptovf [@var{option}]@dots{} @var{vplfile}[.vpl] [@var{vffile}[.vf] @c
+[@var{tfmfile}[.tfm]]]
+ at end example
+
+If @var{vffile} (extended with @samp{.vf} if necessary) is not
+specified, the VF output is written to the basename of
+ at samp{@var{vplfile}.vf}; similarly for @var{tfmfile}.  For example,
+ at samp{vptovf /wherever/ptmr.vpl} creates @file{./ptmr.vf} and
+ at file{./ptmr.tfm}.
+
+The only options are @samp{-verbose}, @samp{-help}, and @samp{-version}
+(@pxref{Common options}).
+
+
+ at node Font utilities available elsewhere
+ at section Font utilities available elsewhere
+
+ at cindex font utilities, non-Web2c
+
+The Web2c complement of font utilities merely implements a few basic
+conversions.  Many other more sophisticated font utilities exist; most
+are in @file{@var{CTAN:}/fonts/utilities} (for CTAN info,
+ at pxref{unixtex.ftp,,, kpathsea, Kpathsea}).  Here are some of the most
+commonly-requested items:
+
+ at itemize @bullet
+ at item
+ at cindex AFM to TFM conversion
+ at pindex afm2tfm
+ at pindex afmtopl
+AFM (Adobe font metric) to TFM conversion: @pxref{Invoking afm2tfm,,,
+dvips, Dvips}, and @file{@var{CTAN:}/fonts/utilities/afmtopl}.
+
+ at item
+ at cindex X bitmap fonts
+ at cindex BDF and GF conversion
+BDF (the X bitmap format) conversion:
+ at url{ftp://ftp.tug.org/tex/bdf.tar.gz}.
+
+ at item
+ at pindex metatype1
+ at cindex Latin Modern
+Creating fonts using MetaPost: MetaType1.
+ at url{ftp://bop.eps.gda.pl/pub/metatype1}.  This is used to create
+the excellent Latin Modern font family (@file{@var{CTAN:}/fonts/lm}),
+which extends Computer Modern to a vast repertoire of scripts.
+
+ at item
+ at cindex editing of bitmap fonts
+ at pindex xbfe at r{, bitmap font editor}
+ at pindex xfed at r{, bitmap font editor}
+ at pindex xfedor at r{, bitmap font editor}
+ at pindex gftopxl
+ at pindex chtopx
+ at pindex pxtoch
+Editing of bitmap fonts: Xbfe from the GNU font utilities mentioned
+below; the X BDF-editing programs available from
+ at url{ftp://ftp.x.org/R5contrib/xfed.tar.Z} and
+ at url{ftp://ftp.x.org/R5contrib/xfedor.tar.Z}; and finally, if your
+fonts have only 128 characters, you can use the old @code{gftopxl},
+ at code{pxtoch}, and @code{chtopx} programs from
+ at url{ftp://ftp.tug.org/tex/web}.
+
+ at item
+ at pindex fontforge
+ at pindex pfaedit
+Editing of outline fonts: FontForge, @url{fontforge.sourceforge.net}.
+This is a very elaborate program with support for many outline formats
+(Type at tie{}1, OpenType, TrueType, @dots{}), and many advanced font
+editing features.
+
+ at item
+ at cindex PK bitmaps from PostScript
+ at cindex PostScript to PK bitmaps
+ at pindex gsftopk
+ at pindex ps2pk
+PK bitmaps from PostScript outline fonts: gsftopk from the @samp{xdvi}
+distribution.  Alternatively, @code{ps2pk}, from
+ at file{@var{CTAN:}/fonts/utilities/ps2pk}.
+
+ at item
+ at cindex Type 1 conversion
+ at cindex PFA and PFB conversion
+ at cindex PostScript Type 1 font conversion
+PostScript Type 1 font format conversion (i.e., between PFA and PFB
+formats): @url{http://www.lcdf.org/type}.
+
+ at item
+ at cindex scanned images of fonts
+ at cindex typeface specimen sheets
+ at pindex fontutils
+Scanned image conversion: the (aging) GNU font utilities convert type
+specimen images to Metafont, PostScript, etc.:
+ at url{http://www.gnu.org/software/fontutils/}.
+
+ at item
+ at pindex autotrace
+ at pindex potrace
+Tracing bitmaps to fitted outlines: Autotrace
+(@url{http://autotrace.sourceforge.net}), Potrace
+(@url{http://potrace.sourceforge.net}).  For Metafont fonts, either of
+the two programs @code{mftrace}
+(@url{http://www.xs4all.nl/~hanwen/mftrace}) or @code{textrace}
+(@url{http://textrace.sourceforge.net}) make the job easier.
+
+ at item
+ at cindex virtual font creation
+ at pindex fontinst at r{, for creating virtual fonts}
+Virtual font creation: @file{@var{CTAN:}/fonts/utilities/fontinst}.
+ at end itemize
+
+
+ at node Legalisms
+ at appendix Legalisms
+
+ at cindex legalisms
+ at cindex copyright notices
+ at cindex permissions, legal
+
+In general, each file has its own copyright notice stating the copying
+permissions for that file.  Following is a summary.
+
+The Web2c system itself and most of the original WEB source files are
+public domain.
+
+ at file{tex.web}, the ML at TeX{} code, @file{mf.web}, and @file{bibtex.web},
+are copyrighted by their authors.  They may be copied verbatim, but may
+be modified only through a @file{.ch} file.
+
+MetaPost-related files, including @file{mp.web} itself, are copyrighted
+under X-like terms; the precise notice is included below.
+
+Finally, the Kpathsea library is covered by the GNU Lesser General
+Public License (@pxref{Introduction,,, kpathsea, Kpathsea}).  Therefore,
+the @emph{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 the file @file{LGPL} for complete details on the LGPL.
+
+The following notice must be included by the terms of the MetaPost
+copyright.
+
+ at quotation
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that the copyright notice and this permission notice and warranty
+disclaimer appear in supporting documentation, and that the names of
+AT&T Bell Laboratories or any of its entities not be used in advertising
+or publicity pertaining to distribution of the software without
+specific, written prior permission.
+
+AT&T disclaims all warranties with regard to this software, including
+all implied warranties of merchantability and fitness.  In no event
+shall AT&T be liable for any special, indirect or consequential damages
+or any damages whatsoever resulting from loss of use, data or profits,
+whether in an action of contract, negligence or other tortious action,
+arising out of or in connection with the use or performance of this
+software.
+ at end quotation
+
+
+ at node References
+ at appendix References
+
+ at cindex references
+ at cindex bibliography
+
+ at enumerate
+ at item
+Kpathsea: @xref{Top, Introduction,, kpathsea, Kpathsea}.
+
+ at item
+Dvips and Afm2tfm: @xref{Top, Introduction,, dvips, Dvips}.
+
+ at item 
+The @TeX{} Users Group: @url{http://www.tug.org}.  For an introduction
+to the @TeX{} system, see @url{http://tug.org/begin.html}.
+
+ at item
+TUGboat: @url{http://tug.org/TUGboat}.
+
+ at item
+ at TeX{} and computer typesetting in general:@*
+ at url{ftp://ftp.math.utah.edu/pub/tex/bib/texbook1.bib}.
+
+ at item
+For a bibliography of formal articles and technical reports on the
+ at TeX{} project, see the books @cite{@TeX{}: The Program} or
+ at cite{Metafont: The Program} cited below.
+
+ at include ref.txi
+
+ at end enumerate
+
+
+ at node Index
+ at unnumbered Index
+
+ at printindex cp
+
+ at bye


Property changes on: branches/stable/source/src/texk/web2c/doc/web2c.texi
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: branches/stable/source/src/texk/web2c/web2c
===================================================================
--- branches/stable/source/src/texk/web2c/web2c	2017-03-07 18:21:57 UTC (rev 768)
+++ branches/stable/source/src/texk/web2c/web2c	2017-03-07 19:07:21 UTC (rev 769)

Property changes on: branches/stable/source/src/texk/web2c/web2c
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+autom4te.cache
Modified: branches/stable/source/sync-pdftex.sh
===================================================================
--- branches/stable/source/sync-pdftex.sh	2017-03-07 18:21:57 UTC (rev 768)
+++ branches/stable/source/sync-pdftex.sh	2017-03-07 19:07:21 UTC (rev 769)
@@ -66,7 +66,6 @@
     # If we erroneously specify a directory here that no longer exists
     # in TL, rsync will complain about not being able to change_dir there.
     elif test $f = texk/web2c \
-         || test $f = texk/web2c/doc \
          || test $f = texk/web2c/luatexdir \
          || test $f = texk/web2c/luatexdir/luafontloader \
          || test $f = texk/web2c/man \



More information about the pdftex-commits mailing list