summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/etex/base/NTS-FAQ1015
-rw-r--r--Master/texmf-dist/doc/generic/knuth/etc/virtual-fonts.knuth633
-rw-r--r--Master/texmf-dist/doc/plain/plain-doc/csname.txt1892
-rw-r--r--Master/texmf-dist/doc/support/asciichart/ascii.tex189
-rw-r--r--Master/texmf-dist/doc/support/patgen/patgen2.tutorial331
5 files changed, 4060 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/etex/base/NTS-FAQ b/Master/texmf-dist/doc/etex/base/NTS-FAQ
new file mode 100644
index 00000000000..1dd051f1e83
--- /dev/null
+++ b/Master/texmf-dist/doc/etex/base/NTS-FAQ
@@ -0,0 +1,1015 @@
+Date: Tue, 31 Jan 1995 21:15:16 +0100
+Sender: NTS-L Distribution list <NTS-L@DHDURZ1.EARN>
+From: "J%org Knappen, Mainz" <KNAPPEN@VKPMZD.KPH.UNI-MAINZ.DE>
+Subject: Frequently asked questions of NTS-L, 5th edition
+X-To: nts-l <nts-l@dhdurz1.bitnet>
+To: Multiple recipients of list NTS-L <NTS-L@DHDURZ1.EARN>
+
+ Frequently Asked Questions of NTS-L
+
+Fifth edition
+Date: 31-JAN-1995
+Archive name: nts-l-faq
+Currently maintained by: knappen@vkpmzd.kph.uni-mainz.de (J%org Knappen)
+
+Remark about the format:
+
+This faq is divided into several sections and subsections. Each section
+contains a subsection general with some ideas which have not yet been
+discussed. I added a date to some subsections to allow you to retrieve
+fuller discussions from the archives. The transactions of this group are
+archived on
+
+ ftp.th-darmstadt.de [130.83.55.75] *)
+ directory pub/tex/documentation/nts-l
+
+Each file in this directory is named yymm, where (guess :-) yy is the
+year and mm is the month when the mail arrived. (I.e., all postings
+of one month are bundled in one file.)
+*) Avoid using the number above ... it is subject to changes.
+
+Related stuff which is very worth reading you can find on the CTAN archives
+under tex/info/tex-implementors. In addition, I recommend reading the list
+of TeX bugs (tex-archive/systems/knuth/errata/tex82.bug).
+
+-1. Contents
+
+0. About NTS
+1. Proposed features of a New Typesetting system
+1.1. Improvement of Quality
+1.2. Internationality
+1.3. New Look and Feel
+1.4. Changing the ligaturing algorithm
+1.5. Writing more than one dvi-file
+1.6. Anchors
+1.7. dump/restore mechanism
+2. Proposed additions to TeX (concrete new primitives)
+2.1. \lastmark etc.
+2.2. \system
+2.3. \skylineskiplimit, \skylinehorizontallimit
+2.4. \directioncode
+2.5. \textcode
+2.6. \afterfi
+2.7. \interactionmode
+2.8. \mathspacing
+2.9. \inputescapechar
+2.10. \middle
+2.11. \outputunit
+2.12. \protected
+2.13. \scantokens
+2.14. \deferred
+2.15. \everyeof
+2.16. \readline
+2.17. \evaluate
+2.18. \ifevaluate
+2.19. \everyeof
+2.20. \fancyprompt
+3. Metaremarks
+3.1. TeX is not perfect
+3.2. In which language shall NTS be written
+3.3. The TeX language
+3.4. The TeX engine
+3.5. Extensions and Enhancements
+4. Deviations
+4.1. Automated Kerning
+4.2. About Lout
+5. Proposed changes to METAFONT
+5.1. Writing to auxiliary files
+6. Proposed changes to the tfm file format
+6.1. Vertical kerning
+6.2. Cross-font ligatures
+7. Proposed changes to the dvi file format
+7.1. Horizontal and Vertical Mirroring
+7.2. Rotation of a glphy by 180 degrees
+8. Additions to the TeX kit
+8.1. dvicopy
+8.2. dv2dp and dp2dv
+8.3. gftotxt
+8.4. qdtexvpl
+8.5. fontinst
+8.6. afmtotfm
+8.7. dvipaste
+8.8. METAPOST
+8.9. Tie
+8.10. dvi2dvi
+9. Existing extensions to TeX
+9.1. TeX-XeT
+9.2. TeX--XeT
+9.3. MLTeX
+9.4. SiSiSi
+9.5. Japanese TeX
+
+0. About NTS (Mar 93, see also Jul 92)
+
+ At DANTE '93, held at the Technical University Chemnitz last week, Joachim
+ Lammarsch, President of Dante, announced that the NTS project which had been
+ started under the aegis of DANTE, was to be re-formed under a new
+ co-ordinator, Philip Taylor. The old core group, announced at the previous
+ annual DANTE meeting, was to be dissolved, and a new core group established.
+ Membership of the new core group will not be restricted to DANTE members,
+ but will instead be offered to various well-known names (and some
+ lesser-known!) in the international TeX community.
+
+ see also:
+ F. Mittelbach: E-TeX Guidelines for future TeX, TUGboat v11n3 (1990)
+ P. Taylor: The future of TeX, EuroTeX'92 Prag (Proceedings); reprinted
+ in TUGboat v13n4, 433 (1992)
+
+ As of September 1994, there are two activities going on, the ETeX group
+ is working on a extension of TeX and is going to produce a first ETeX soon.
+ The NTS group takes the path to reimplement TeX in common LISP to get
+ a deeper understanding of how the modules of TeX are cooperating which
+ eachother.
+
+ Independently, the Omega project was launched to produce a typesetting system
+ which uses unicode as internal code and can handle arbitrarily encoded input
+ via filters.
+
+ The beforementioned projects were presented at the 1994 TUG meeting at Santa
+ Barbara and at the EuroTeX'94 conference at Gdansk. For more information,
+ consult the respective proceedings. For the Omega project exists a mailing
+ list, omega@ens.fr. To subscribe, send an e-mail to LISTSERV@ens.fr.
+
+ Omega is now announced to be presented at March 16, 1995 at CERN (Geneva).
+
+1. Proposed features of a New Typesetting system
+
+1.1. Improvement of Quality
+
+1.1.0 General:
+ Optimised page breaking, avoiding ``rivers'', letterspacing (see also 4.1),
+ Hyphenation (Haupt- und Nebentrennstellen), grid typesetting
+
+1.1.1 Skyline approach to line breaking (Mar 93)
+
+You can break paragraphs as usual with the current model, where all
+lines are simple rectangular boxes. If there's no necessity to insert
+\lineskip, then you don't have to look at the skyline. Only if two
+lines are too near (e.g. distance<\lineskiplimit), you have to look
+into the two rectangular boxes and to check if the boxes inside
+overlap at one or more places.
+For the worst case (i.e., you have to look at the skyline for all
+pairs of lines) processing the skyline model consumes a lot of process
+time, but this shouldn't hinder us to test this idea and look at the
+results.
+
+Btw, the skyline model seems to be easy to implement in the current
+TeX, because we need only some changes when the finally broken lines
+of the paragraph are put on the vertical list. There are more changes
+needed in the code, if the line break should be changed for the cases
+where it is possible to avoid an overlap with other break points, but
+IMHO it's nonetheless a relatively small change.
+
+Additionally you have to introduce some new parameters. I think of
+something like:
+ \skylineskiplimit (b)
+ minimum vertical distance between two boxes
+ \skylinehorizontallimit (a)
+ minimum horizontal distance
+
+
+line 1: ------------
+ % %
+ % % ----------
+ ------- <== (a) ==> % %
+ ~ % %
+ (b) % -------
+ v %
+ ----------------------
+line 2:
+
+and other parameters, but the necessary parameter set, realization,
+etc. for "skylines" are subject of discussion.
+
+
+1.2. Internationality
+
+1.2.0 General:
+ Typesetting in arbitrary directions, unicode support (16bits), ISO10646
+ support (32bits), ligatures pointing to other fonts, vertical kerning,
+ better accent handling (\topaccent and \botaccent)
+
+ Remark: UTF-8 (UNICODE) can be handled with `TeX classic', LaTeX2e
+ support is provided by the CJK package written by Werner Lemberg.
+
+1.2.1 Supporting TeX--XeT primitives for right to left typesetting
+ TeX--XeT is an existing extension to TeX supporting right-to-left
+ typesetting an producing a usual dvi-file. TeX--XeT is written by
+ P. Breitenlohner and freely available. It is different from TeX-XeT
+ (one hyphen only). Allthough TeX will be frozen at version $\pi$,
+ this is not true for TeX--XeT. (see also 9.2)
+
+1.3. New Look and Feel
+
+1.3.0 General
+ Windows support, wysiwyg-like features
+
+1.3.1 Interaction with the operating system and other programmes
+ see 2.2. \system
+
+1.4. Changing the ligaturing algorithm
+ Replace the (IMHO over-)optimized ligature builder/kerning routines in
+ TeX by routines which separate between the building of ligatures and
+ the insertion of kerns between the characters/ligatures.
+
+ This can be realized in a simple way by using two passes: in the
+ first pass the ligatures are built and in the second pass the
+ resulting ligatures and remaining single characters are used to
+ determine the necessary kerns.
+
+ To ensure compatibility between e-TeX and TeX, it will be possible to
+ switch between the new and the current behaviour.
+
+ Additionally a flag in the TFM file of each font can be used to
+ specify which behaviour is to be used for the font. This ensures that
+ "old" fonts with some tricky ligature/kerning programs depending on
+ the old behaviour can still be used with e-TeX. (I don't know if this
+ font dependent switching is really necessary. Comments, please!!)
+
+ Example:
+
+ A font contains the following ligatures and kerns:
+
+ o " => ligature (o") (= \"{o})
+ V o => kern(-smallkern)
+ V lig(o") => nothing
+
+ Input: V o "
+ Output of current TeX: V kern(-smallkern) ligature(o")
+ Output with change: V ligature(o")
+
+ Status:
+
+ Bernd Raichle has written a simple, but running reimplementation of TeX's
+ ligature/kerning routine (in CommonLisp), which still waits to be
+ rewritten as a TeX.web change file.
+ The ligature builder/kerning routine is realized in one pass; kerns
+ are introduced in a delayed manner, i.e., after we are sure that
+ there's no possibility for a ligature.
+ Additionally there's a switch between the current TeX and the new
+ behaviour. (The TRIP test fails with the new behaviour.)
+
+PS: IMHO the ligature/kerning routines should be further changed to
+ remove the `shelf{}ful' anomaly (see TeXbook, exercise 5.1), i.e.,
+ reinserting ligatures when words are hyphenated.
+ The change should allow ligatures for inputs like `f{}f' or
+ `f\relax f', which will simplify the macros in `german.sty',
+ Babel and changed macros for \", \', ... which are used to select
+ characters from DC fonts or other fonts with national characters.
+
+1.5. Writing more than one dvi-file (Nov 94)
+ I want to have TeX ready in the memory and avoid loading it anew and anew
+ for each run again which costs lots of startup time, if you have to load
+ every file via NFSS.
+ The idea I am toying with is to have something like
+ \level
+ which clones the current state of TeX and allows to start a new dvi-file.
+ Then you do anything you want (start even another \level) and at last you say
+ \exit
+ which performes like \end, except that it restores exactly the state before
+ the last cloning.
+ To communicate some information to the waiting lion, there may be one
+ exeption. You say
+ \exit{some_integer_number}
+ and this number can be read by using
+ \exitstatus.
+ Applications are many. If you have a format which usually requires several
+ runs, you can do all the runs within one job, and automatically decide,
+ whether a further run is necessary. Of course, you should device your format
+ to have a counter maxruns to avoid endless looping...
+
+1.6. Anchors (Nov 94)
+ Proposed by Jiri, an ``anchor point'' would be in some senses
+ be analogous to a mark, but rather than recording textual information it
+ would instead record the co-ordinates of itself, relative to the reference
+ point of the smallest surrounding box. Additional new primitives would
+ be required to return the co-ordinates of a specified anchor point.
+
+1.7. dump/restore mechanism
+ I'd suggest something much simpler, but also more general: Include \dump in
+ all versions of TeX. The initex/virtex distinction is simply not worth the
+ bother of retaining any more - the memory differences are trivial in modern
+ terms. \dump should ideally also be extended to allow dumping from inside of
+ a group.
+ Once you do this, it becomes possible to write programs to analyze format
+ files. Since the analysis programs would not be part of TeX proper, they can
+ be as elaborate as anyone might want to make them. Sorting would be no
+ problem, for example.
+ None of this would cost anything in TeX itself, and except for the ability
+ to \dump inside a group, if added, would not even have an effect on whether
+ the resulting E-TeX is properly "TeX", since it would be invisible to any
+ possible trip test.
+
+2. Proposed additions to TeX (concrete new primitives)
+
+2.0. General (Jun 92, Jul 92, Aug 93, Nov 94)
+ A rather long list of proposed primitives (more or less worked out) was
+ posted by Karl Berry on 10-Jun-1992. It contains suggestions like:
+ \elseif (selfexplaining), \format{foo} (allow the author to select a format),
+ \host{name} \host{os} \host{type} \getenv to extract host information
+ \TeXversion, \usertime, \everyeof, and others.
+
+ It is currently not possible to get some information about the current
+ mode of TeX and make conditionals dependent on it and/or restore it after
+ some action (see 2.7. \interactionmode). More of this kind are a
+ conditional or primitive to signal, when TeX is in "expand only" mode
+ (\edef, \mark, \write, ...), when TeX is scanning numbers (here I'm
+ thinking---and hating---german.sty's active doublequote, which can also
+ be used as a marker for hexadecimal numbers), when TeX is peeking for
+ some special tokens (first column in an \halign), etc...
+
+ A list of new primitives, enhancements and extensions has been prepared
+ on the NTS meeting at Lindau in October 1994. It was posted to this list in
+ November 1994 and provoked plenty of discussions and additional suggestions.
+ Under the discussed primitves were \bind, \contents<box#>, \futuredef,
+ \ifdefined, \ifcsname ... \endcsname, \unless, \OSname, \defaultextension.
+
+2.1. \lastmark etc. (Jun 92, Jul 92)
+ Currently you cannot remove a \write or \mark or
+ \insert or rule from any list at all. If we allow them to removed, how
+ will the commands appear to the user? If we have \lastmark like
+ \lastbox, then perhaps we need a mark data type so that we can say something
+ like \setmark0=\lastmark. It will probably be difficult
+ in the case of \insert's to think of a good command syntax.
+
+ Perhaps \lastpenalty, \lastkern, \lastskip should
+ remove the penalty, kern, skip, ... so that they are consistent with
+ \lastbox. Then \unpenalty, \unkern, and \unskip would be unnecessary.
+ (Of course most macro packages would probably want to reimplement them,
+ as macros: \def\unpenalty{\count@\lastpenalty},
+ \def\unkern{\dimen@\lastkern}, \def\unskip{\skip@\lastskip}.)
+
+2.2. \system (Mar 93)
+
+2.2.0 General
+ Oops, this got rather longish, but this topic has caused plenty of traffic.
+ I decided to quote directly the positions of both sides. The subpoints are
+ 1. Pro 2. Contra 3. Syntax
+
+2.2.1 Pro
+ First comes the proposal as formulated by Phil Taylor:
+
+ There has been much discussion on how a \system primitive might interact
+ with different operating systems, each with different functionality and a
+ different syntax. My idea was to extend the concept of a `TeX
+ implementation', which at the moment implies the creation and application
+ of a change-file to the master TeX source, to include an implementation-
+ specific macro library. Thus each implementor, as well as creating and
+ applying a change file, would also be responsible for mapping a well-defined
+ set of macros, through the \system primitive, to the syntax and
+ functionality of the operating system for which he or she has assumed
+ responsibility. To cite a specific example:
+
+ Assume that in e-Lib (a hypothetical macro library to accompany e-TeX),
+ a macro \sys$delete_file {<parameters>} is partially defined; then each
+ implementor would be responsible for mapping \sys$delete_file {<parameters}>
+ to his or her own implementation of \system. e-Lib would define the effect
+ and the result(s), \system would provide the interface, and the implementor
+ would be responsible for providing the mapping.
+
+ The question has been asked: ``Why via \system and macros? Why not via
+ explicit primitives to carry out the various functions that are envisaged?''
+
+ To which I would suggest that the answer is ``Because `the various functions
+ which are envisaged' is both enormous (requiring many new primitives), and
+ yet not large enough (because no matter what functionality we posit, someone
+ will come up with an idea that has not been considered).'' By implementing
+ just one \system primitive, and an extensible e-Lib macro library, one can
+ create a robust and well-tested e-TeX whilst allowing new system interactions
+ to be added at the simplest points: through the implementation-independent
+ and implementation-specific components of e-Lib.
+
+2.2.2 Contra
+ And here's from the ``Minority Report'' (Tim Murphy and J"org Knappen)
+
+ May I recall the immortal words of Ken Thompson,
+ "A program should do one thing, and do it well." (TM)
+
+ I don't like the hackers to decide, making eTeX yet another programme from
+ which I can send e-mail and read news :-) Maybe people will tell me eTeX is
+ a fine operating system, but TeX version $\pi$ is the better typesetter :-)
+
+ But there is another side of \system, I want to call it the monstrosity
+ side. Many people are thinking now, that TeX is a monster and difficult to
+ tame. \system will add to this monstrosity. It will create a new paradise
+ for hackers creating system hacks. And it will make people turn away from
+ eTeX and use other products, even if they are far less secure. (JK)
+
+2.2.3 Syntax
+ If a \system command is required, should it not have a similar syntax
+ and semantics to the a similar TeX command. I can't think of anything
+ else in TeX (prepares to be shown wrong) that expands in the mouth and
+ has side-effects. Should it not be like \read, \write etc. that is it
+ generates a whatsit that is obeyed at shipout, unless preceded by an
+ \immediate, in which case it is done immediately by the stomach.
+ There seem to be two obvious syntaxes, one like \write:
+ \system{foo} or \immediate\system{foo}
+ and one like \read:
+ \system{foo} to \baz or \immediate\system{foo} to \baz
+ The latter one would produce the exit code into \baz. Should this be
+ done with catcode 12 characters, or should it be done like \read, with
+ the current catcodes?
+
+2.3. \skylineskiplimit, \skylinehorizontallimit
+ see section 1.1.1
+
+2.4. \directioncode (May 1993)
+ A \directioncode (with syntax analogous to \uccode, \lccode, sfcode) to be
+ assigned to each input character. The basic ones are
+ 0 -- transparent (space, full stop...)
+ 1 -- left-to-right (latin letters, digits...)
+ 2 -- right-to-left (hebrew letters, arab letters...),
+ a truly international NTS will also have codes for vertical typesetting
+ and some special cases.
+
+ The question is how to use this idea consistently. One could extend the
+ notion of TeX's modes. Horizontal mode is in fact left-to-right mode, a
+ right-to-left mode is missing. To be complete, this mode will be equipped
+ with boxen and all the stuff TeX's left-to-right (aka horizontal) mode has.
+
+ At the beginning of a paragraph NTS decides which mode to choose by the
+ \directioncode of the first input character. Sometimes the first character
+ will have the wrong code, in this case the insertion of an explicit
+ control sequence (like \lrbox{}) is necessary. If a character with another
+ directioncode occurs, NTS starts a \rlbox and finishes it as soon as a
+ character with the original \directioncode appears or at the end of the
+ paragraph.
+
+ For the building of right-to-left tables a \rlalign is needed.
+
+2.5. \textcode (Sep 93, Nov 93)
+ Some of the character coding discussions in the Technical Working
+ Group on Multiple Language Coordination and some experiences I've made
+ with `german.sty' (specially the problems with an active doublequote
+ and hex integer constants!) lead to this _incomplete_ proposal/idea
+ for the following addition:
+ Introduce something like
+ \textcode (and \textchar & \textchardef)
+ which are the text (hmode) equivalent of TeX's \mathcode (and
+ \mathchar/\mathchardef) primitives.
+
+ With an equivalent and appropriate implemented \textcode primitive
+ (with the choice to define a character as "pseudo-active"), it would
+ be possible to
+ * relate characters to different fonts
+ (using a generalized `fam' of \mathcode)
+
+ * suppress expansion of active characters (it will only be
+ expanded, if it is read to form the hlist)
+ (using an equivalent \mathcode="8000 value)
+ [This point allows the use of e.g. a pseudo-active "
+ which expands to non-expandable tokens and it removes
+ the special construct \relax\ifmmode... for active
+ characters, too.]
+
+2.6. \afterfi (August 1993)
+ In the answer to an exercise of the ``Around the Bend'' series, Michael Downes
+ realised the non-existence of an \afterfi primitive (Note: He did not
+ demand it nor really miss it). Perhaps an \afterfi can
+ simplify some obscure mouth-only macros with nested conditionals???
+ \afterfi should be expandable, because \if...\fi is expandable.
+
+2.7. \interactionmode (Nov 93, was: \currentinteractionmode)
+ Add a new count register \interactionmode, which reflects the user
+ interaction level with the following values:
+ <= 0 batch_mode
+ = 1 nonstop_mode
+ = 2 scroll_mode
+ >= 3 error_stop_mode
+
+ The commands \batchmode...\errorstopmode, the "options" 'Q', 'R', 'S'
+ in the interactive error routine and all other TeX internal
+ interaction level changes (e.g. after an interruption) access this new
+ register. The level changes in the interactive error routine and the
+ old commands should always work, even if the symbol \interactionmode is
+ redefined (this means that the user can redefine \interactionmode, but the
+ commands \batchmode...\errorstopmode still work).
+
+ Examples:
+
+ \ifnum\interactionmode<1 \AskUser \else \UseDefault \fi
+
+ {\interactionmode=0 % switch to \batchmode
+ \global\font\test=xyz10 % try to load font
+ }% % restore former interaction level
+ % ... now test if font has been loaded
+ % without error (i.e. != nullfont)
+
+2.8. \mathspacing (Nov 93)
+ Add a new count register array \mathspacing with 64 entries (we really
+ need only 64-8=56 entries, because some of them are never used, but to
+ simplify things 64 are used) with the following syntax:
+
+ \mathspacing <num1>=<num2> % 0 <= <num1> <= 63
+
+ The spacing specified in number <num2> is inserted between the two
+ math atom types specified in number <num1>. The two numbers are coded
+ as
+
+ <num1> = <left_atom_type> * 8 + <right_atom_type>
+ <num2> = ( (<display_spacing> * 256 + <text_spacing>) * 256
+ + <script_spacing> ) * 256 + <scriptscript_spacing>
+
+ This means that <num1> is easily expressed in octal and <num2> in
+ hexadecimal notation.
+
+ <..._atom_type> is one of the following seven types:
+
+ 0 ordinary 1 large operator
+ 2 binary operation 3 relation
+ 4 opening 5 closing
+ 6 punctuation 7 delimited subformula
+
+ <..._spacing> can be specified separately for each of the four math
+ styles (display, text, script and scriptscript) with the following
+ values:
+
+ 0 no space
+ 1 thin space (specified by \thinmuskip)
+ 2 medium space ( -- " -- \medmuskip)
+ 3 thick space ( -- " -- \thickmuskip)
+
+ 4-255 reserved for other things
+ (e.g. other spacings and/or additional penalties,
+ like \relpenalty, \binoppenalty, ...)
+
+ For more information see TeXbook, pp. 170f & Appendix G and TeX--The
+ Program, \S 764ff.
+
+ Examples: (using TeX's standard spacing)
+
+ Between an `ordinary' (= 0) and a `relation' (= 3) atom a thick
+ space (= 3) is inserted, but not in script or scriptscript style.
+
+ \mathspacing '03 = "0033
+
+ Between a large operator (= 1) and an ordinary (= 0) atom a thin
+ space (= 1) is inserted:
+
+ \mathspacing '10 = "1111
+
+ Necessary changes for the sketched proposal are very simple to
+ implement.
+ The syntax of \mathspacing is awful, but this is true for \mathcode,
+ \delimitercode, etc.etc., too.
+
+2.9. \inputescapechar (Nov 93, alternative names were proposed during
+ discussion)
+ Use two new internal count registers \inputescapechar and
+ \outputescapechar to specify the "escape" character to be used for
+ unprintable characters.
+ If \inputescapechar is not in [0..255], TeX's behaviour is used,
+ i.e., two equal characters with category 7 are used as a prefix for a
+ ~~x notated character, otherwise two characters with code
+ \inputescapechar are used for this prefix.
+ If \outputescapechar is not in [0..255], the character `~' is used
+ when an unprintable character has to be written.
+
+ The default values of these two registers are
+ \inputescapechar = -1
+ \outputescapechar = `~
+ to be compatible with TeX's standard behaviour.
+
+2.10. \middle (Jan 94)
+ Generalize the syntax of \left<delimiter> <formula> \right<delimiter>
+ to allow one or more optional \middle delimiters,
+ \left<delimiter> <formula> \middle<delimiter> <formula> \right<delimiter>.
+
+ The middle delimiter grows to the same height as the left and right ones.
+ Constructions of this kind are used throughout quantum mechanics (Dirac
+ notation), e.g.
+ $$
+ \left\langle A \middle% \hat{O} \middle% B \right\rangle
+ $$
+ By default, the \middle element is \mathrel, you can make it
+ \mathord by embracing it {\middle %}.
+
+
+2.11. \outputunit (Dec 93)
+ \outputunit unit to be used when e-TeX shows some dimen or glue
+ value
+ Usage: \outputunit=<unit of measure> (s. TeXbook p. 270)
+ Rationale:
+
+ Currently TeX forces the user to think in points when it outputs any
+ dimen or glue value (e.g. when issueing an overfull hbox warning).
+ But a program should adapt to the conventions of the user instead the
+ other way round. The addition of \outputunit whould make TeX much
+ more user-friendly, since only a few people are thinking in points.
+
+2.12. \protected (new prefix for macro definitions) (Nov 94)
+ Analogous to \long, \outer, etc., causes the associated macro to be
+ non-expanding in contexts where such behaviour is likely to be undesirable
+ (in particular in \writes and \edefs); an explicit \expandafter \empty
+ may be used to force expansion in these circumstances.
+
+2.13. \scantokens (Nov 94)
+ Allows an existing token-list to be re-input under a different catcode regime
+ from that under which it was created; as it uses all of TeX's present \input
+ mechanism, even %%ff notation will be interpreted as if \input. Causes an
+ `empty filename' to be input, resulting in `( )' appearing in the log file
+ if \tracingscantokens (q.v.) is strictly greater than zero. If the token
+ list represents more than one line of input, and if an error occurs, then
+ \inputlinenumber will reflect the logical input line from the token list
+ rather than the current input line number from the current file.
+
+2.14. \deferred (Nov 94)
+ At the moment, only \writes are deferred; there are cases when it would
+ be desirable for other things, too, to be expanded only during \shipout,
+ and \specials are one of these. (See also 2.2.3)
+
+2.15. \everyeof {<balanced text>}
+ Provides a hook whereby the contents of a token list register may be
+ inserted into TeX's reading orifice when end-of-file is encountered
+ during file reading. Would not be invoked of the file indicated
+ logical e-o-f through the medium of \endinput. Proposed by Phil
+ to allow clean processing of file-handling code which requires
+ a (sequence of characters yielding) \else or fi to be found in a
+ file, where no such sequence can be guaranteed.
+
+2.16. \readline <integer> to <cs> (Nov 94)
+ Allows a single line to be read from an input file as if each character
+ therein had catcode 12. Intended to be used for verbatim copying
+ operations, in conjunction with \scantokens, or to allow error-free parsing
+ of `foreign' (non-TeX) files.
+
+2.17. \evaluate {<arithmetic expression>} (Nov 94)
+ Intended for use on the r-h-s of \count, \dimen and \skip assignments,
+ it would allow the use of infix arithmetic operators such as +, -, * and /;
+ the type of the result would, in general, be the type of the simplest operand
+ forming a part of the expression, and the normal semantics of TeX would allow
+ this to be further coerced where necessary. Parenthesised sub-expressions
+ would be allowed.
+
+ Additional operations were proposed: trigonometric functions, square
+ root, pythagorean addition (METAFONT's `++'), angle{<delta_x, delta_y>}.
+
+2.18. \ifevaluate{<boolean expression>}....\else....\fi (Nov 94)
+ The boolean expression should allow for the usual operators like
+ .not., .and., .or., .xor., =, >, <, <=, etc., if feasable it should also
+ allow the evaluation of arithmetic expressions. Some functions are needed
+ to get information old TeX \if's know now, I propose the name
+ \query<whatever> to these functions.
+
+ At the moment I see need for the following \query<whatever> functions:
+ \queryeof returns `1' if eof, `0' else
+ \querymode returns `0' in the infamous `no mode' (do we need to
+ differentiate finer here?
+ `1' in vertical mode
+ `2' in restricted vertical mode
+ `3' in horizontal mode
+ `4' in restricted horizontal mode
+ `5' in math mode
+ `6' in restricted math mode
+ With \querymode \ifmmode, \ifhmode, \ifvmode, and \ifinner can be emulated.
+ \querydefined{\cs} `1' if defined, `0' else
+ \querycsname...\endcsname (ditto)
+
+2.19. \everyeof {<balanced text>}
+ Provides a hook whereby the contents of a token list register may be
+ inserted into TeX's reading orifice when end-of-file is encountered
+ during file reading. Would not be invoked of the file indicated
+ logical e-o-f through the medium of \endinput. Proposed by Phil
+ to allow clean processing of file-handling code which requires
+ a (sequence of characters yielding) \else or fi to be found in a
+ file, where no such sequence can be guaranteed.
+
+2.20. \fancyprompt
+ allow configuration of the TeX prompt (default `*'), e.g.
+ *\fancyprompt{eTeX>}
+ eTeX>
+
+3. Metaremarks
+
+3.0. General
+ Remarks about group efforts vs. one person creating software (Mar 93),
+ ALGOL 68 as a warning example
+
+3.1. TeX is not perfect (Jun 92, Jul 92)
+ The discussion has taken place in June and July 1992. Several details were
+ worked out, where TeX could be improved. Another point of criticism was
+ the programming language of TeX in general, several participants prefer a
+ procedural language over a macro language.
+
+3.2. In which language shall NTS be written (Mar 93)
+ In 1992, there was much discussion, in which language an NTS should be
+ implemented (candidates were LISP, C, and WEB). This has settled in March
+ 1993 (to PASCAL-WEB), because of the acceptance of the
+ idea that rather than wait for an ``all-singing, all dancing'' NTS, the
+ group should develop, in a stepwise manner, small but significant
+ enhancements to TeX. This implies that the enhancements are implemented as
+ change files in WEB.
+
+3.3. The TeX language (Oct/Nov 93)
+ The TeX language is a simple language in the sense, that it contains only
+ few concepts. It belongs to the Lisp family. In particular, it's a
+ list-based macro language with late binding. Actually, that's all one
+ needs to say to characterize it.
+ Its data constructs are simpler than in Common Lisp: `token list' is the
+ only first order type. Glue, boxes, numbers, etc., are engine
+ concepts; instances of them are described by token lists.
+ Its lexical analzsis is simpler than CL: One cannot program
+ it. One can only configure it.
+ Its control constructs are simpler than in CL: Only macros, no
+ functions. And the macros are only simple ones, one can't compute
+ in them.
+
+3.4. The TeX engine (Oct/Nov 93)
+ The TeX engine lies below the TeX language. Glue, boxes, numbers, etc.
+ belong to the TeX engine. The registers of the engine can be changed
+ by TeX's primitives. However, the latter seem to be quite unregular and
+ baroque.
+
+3.5. Extensions and Enhancements (Nov 94)
+ `Extensions' are basically new primitives which have no effect on the
+ semantics of existing TeX documents, except insofaras any document which
+ tests whether such a primitive is, in fact, undefined, will clearly obtain
+ opposite results under TeX and e-TeX; `enhancements' are more fundamental
+ changes to the TeX kernel which may affect the semantics of existing TeX
+ documents even if no new primitive is used or even tested. Such changes
+ may be, for example, differences in the construction of TeX's internal
+ lists, or perhaps different hyphenation or ligaturing behaviour.
+
+4. Deviations
+
+4.0. General
+ (empty)
+
+4.1. Automated Kerning (Oct 92)
+ Kindersley's "optical kerning": for the purposes of
+ kerning, each character is replaced by a circle centred on the centre of
+ gravity of that character; the radius of the circle is determined by the
+ fourth moment of the character (that is, the fourth root of the sum over
+ all black pixels of the fourth power of their distance from the centre). On
+ the UKTUG trip to Kindersley's studio, I tried to extract the reason why
+ the fourth, as opposed to third or fifth or whatever, moment is used; the
+ reason is apparently that it "looks right".
+
+ We can construct elaborate schemes for kerning (Kindersley's fourth
+ moments, FontStudio's (convex?) envelopes, Calamus' eight widths, etc), but
+ the proof of the typographical pudding is in the eating of the resulting
+ words, so to speak.
+
+4.2 About Lout (June 1993)
+ In June 1993, the new system Basser Lout caused several questions and
+ suggestions on this list. The following is taken from a short review
+ of Lout by Bernd Raichle:
+
+ `Lout' is a (yet another) document formatting system, released under
+ the terms of the GNU General Public License and available on some ftp
+ servers.
+
+ IMHO it's more like a `troff' (with a better input language and some
+ newer concepts) than a `TeX'.
+
+ A few citations from the documentation of lout:
+
+ Lout is a high-level language for document formatting, designed and
+ implemented by the author. The implementation, known as Basser
+ Lout, is a fully operational production version written in C for the
+ Unix operating system, which translates Lout source code into
+ PostScript, a device-independent graphics rendering language
+ accepted by many high-resolution output devices, including most
+ laser printers.
+ [...]
+ When expert users can implement such applications quickly,
+ non-experts benefit. Although Lout itself provides only a small
+ kernel of carefully chosen primitives,
+
+ Lout has 23 primitive operators... missing, for example, the simplest
+ arithmetical operators (there is only the operator "@Next" which
+ increases a number by one).
+
+ packages written in Lout and distributed with Basser Lout provide an
+ unprecedented array of advanced features in a form accessible to
+ non-expert users. The features include rotation and scaling, fonts,
+
+ These features are mostly based on the output language... Postscript
+ (if you are looking inside a Lout package, you find large portions of
+ embedded Postscript code).
+
+ paragraph and page breaking,
+
+ TeX does a better job for these two items, because Lout is missing
+ most of TeX's paragraph/page breaking parameters. (Note: Lout uses
+ TeX's hyphenation algorithm and the hyphenation patterns.)
+
+ displays and lists, floating figures and tables, footnotes, chapters
+ and sections (automatically numbered), running page headers and
+ footers, odd-even page layouts, automatically generated tables of
+ contents, sorted indexes and reference lists, bibliographic and
+ other databases (including databases of formats for printing
+ references), equations, tables, diagrams, formatting of Pascal
+ programs, and automatically maintained cross references.
+
+ TeX's math setting abilities are better. Lout uses a package named
+ `eq' derived from the `eqn' preprocessor used with `troff'. And there
+ are other packages named `tab' (for tabulars) and `fig' (drawing
+ figures).
+
+ [...]
+ Lout is organized around four key concepts -- objects, definitions,
+ galleys, and cross references -- [...]
+
+ The concept of `galleys' and the "expansion" of recursive defintions
+ are IMHO the only new concept in Lout:
+
+ `galleys' are a way to describe a page, dividing it in certain regions
+ which can be filled from different sources (e.g. a footnote galley is
+ filled with footnote text, etc.).
+
+ Recursive definitions are very simple, e.g.
+ def @Leaders { .. @Leaders }
+ defines the command (Lout calls it `object') to "expand" to a `..' and
+ if there is place for another "expansion" it is called again.
+
+ For example
+ \hbox to 4in{Chapter 7 \dotfill 53}
+ is in Lout
+ 4i @Wide { Chapter 7 @Leaders 53 }
+
+ With this recursive definitions, a whole document is defined as a
+ @PageList consisting of a @Page and a @PageList with an incremented
+ @PageNum. A @Page is defined as a set of `galleys' (header, text
+ body, footnotes, footer), which are also defined as a list of
+ text/footnotes/... and so on.
+
+ Perhaps others can add more impressions, mine are based on the
+ documentation coming with the Lout package and some tests done in
+ 1-2 hours.
+
+5. Proposed changes to METAFONT
+
+5.O. General
+ Most of the General points in the discussion of TeX also apply to METAFONT.
+
+5.1. Writing to auxiliary files
+ METAFONT should be able to write to auxiliary files. Desparately needed
+ for packages which allow to draw figures in METAFONT and label them in TeX
+ (BoF session at EuroTeX '92, Prague).
+
+
+6. Proposed changes to the tfm file format
+
+6.1. Vertical kerning (Jun 92)
+ This may sound exotic to you, but the AFM format can do
+ it. And I desperately need it for non-Latin alphabets (everytime I need
+ a character in a ligature raised or lowered, I have to reserve a position
+ in the font for it).
+
+6.2. Cross-font ligatures (Jun 92)
+ Ligatures pointing to other fonts!! Yes, imagine for example that your
+ 256 chars are full, you could still access characters by ligatures...but
+ they have to be in the same font.
+
+7. Proposed changes to the dvi file format
+
+7.0. General
+ A longer discussion about colour inclusion into the dvi-file occured in
+ Oct/Nov 93. The outcome was, that high-quality colour handling is a difficult
+ and device dependent task, better left to the printer driver. Colour can be
+ handled by the \special command which is sent directly to the driver.
+
+ On comp.text.tex I saw a remark, that specials may occur on places in the
+ dvi-file, where TeX can't put them. Maybe eTeX should take care of this
+ point.
+
+7.1. Horizontal and Vertical Mirroring (Nov 94)
+ Allow a glyph to be mirrored in a vertical axis, placed centrally;
+ mirrored in a horizontal axis, placed at half the x(?)-height.
+
+ It was noted, that the specification of the axes might cause problems.
+ It was also noted, that several drivers understand specials for the
+ requested action.
+
+7.2. Rotation of a glphy by 180 degrees (Nov 94)
+ This would greatly increase the power of vpl files (e.g. define schwa by
+ rotating e), and I hope that it would be possible for drivers to implement.
+
+ It was noted, that this is fine, but rotation by 90 degrees cannot be
+ device independent, because there are printers with rectangular (non-square)
+ pixels.
+
+8. Additions to the TeX kit
+
+8.0. General
+ The TeX kit, meaning the bundle of programmes building up a complete TeX
+ installation, contains besides the major programmes TeX and METAFONT
+ additional programmes, traditionally divided into several groups:
+
+ a) TeXware: dvitype, tftopl, pltotf, pooltype, pktype, patgen, vftovp,
+ vptovf, (outdated: pxtopk, pktopx)
+ b) MFware: mft, gftodvi, gftopk, gftype, (outdated: gftopxl)
+ c) webware: weave, tangle
+
+ And, of course, drivers for the screens and printers.
+
+ Other utility programmes more loosely associated with TeX are indexers
+ (makeindex, idxtex, glotex, ...) and bibliography tools (bibtex,
+ bibclean, ...). Makeindex and Bibtex are standard tools, because they
+ are described in the LaTeX manuals.
+
+ Another group includes drawing programmes (TeXCAD, xfig, gnuplot, ...) to
+ create graphics to be imported to TeX documents and graphics converters
+ (ghostscript, xv, bmt2font, ...).
+
+8.1. dvicopy
+ Written in WEB by Peter Breitenlohner
+ Available from CTAN
+ Resolves all references to virtual fonts in a dvi file. Can be used to
+ create a dvi file without virtual fonts (e.g. for drivers which cannot
+ handle vf's).
+
+8.2. dv2dp and dp2dv
+ Written in C by Geoffrey Tobin
+ Available on request from the author
+ dv2dp makes a human readable file from a dvi file. The companion
+ programme dp2dv makes a dvi file frome a dvi property list file.
+ It allows you to change dvi files with a text editor.
+
+8.3. gftotxt
+ Written in C by Yannis Haralambous
+ Available ?
+ Extracts a certain kind of specials from the gf file into a text file.
+ Workaround for the famous non-ability of METAFONT to write auxiliary
+ files.
+
+8.4. qdtexvpl
+ Written by Eberhard Mattes
+ Available from the CTAN archives
+ Generates a virtual font from TeX macros. qd = quick and dirty.
+
+8.5. fontinst
+ Written in TeX by Alan Jeffrey
+ Available form CTAN
+ Makes virtual fonts from afm files (PostScript fonts). Used by the LaTeX
+ team to create virtual fonts and fd files for LaTeX2e.
+
+8.6. afmtotfm
+ Written in C by Thomas Rokicki
+ Available from CTAN (part of dvips distribution)
+ Makes tfm files from afm files.
+
+8.7. dvipaste
+ Part of LAMSTeX (Michael Spivak)
+ Allows to paste a dvi-file into another one.
+
+8.8. METAPOST
+ Written in Web by John Hobby
+ Now freely available from the CTAN
+ A tool to build graphics to be included in TeX documents, uses a METAFONT
+ style language.
+
+8.9. Tie
+ Written by Klaus Gunthermann
+ Available from CTAN
+ Allows to process multiple change files to a given Web source. A tool
+ of this kind is needed to build any eTeX distribution, since one has
+ tex.web, etex.ch, tex.ch-system, and etex.ch-system files to deal with.
+
+8.10. dvi2dvi
+ Available from CTAN
+ Postprocessor for dvi files, allowing e.g. 2-up or 4-up layout of full
+ pages.
+
+9. Existing extensions to TeX
+
+9.0 General
+ Here I include short description of existing extensions to TeX. This section
+ does not include commercial TeX implementations because of lack of solid
+ enough information on them. It also does not yet include ETeX, NTS, nor
+ Omega.
+
+9.1. TeX-XeT (Don Knuth and Pierre MacKay)
+ CTAN: tex-archive/systems/knuth
+ Adds new primitives \beginR, \endR, \beginL, and \endL for right to left
+ typesetting. Despite their names, the new primitives are insensitive to
+ TeX's grouping mechanism. Outputs a special file in dvi-ivd format, which
+ need be resolved by another programme or requires special drivers.
+
+9.2. TeX--XeT (Peter Breitenlohner)
+ Available from CTAN tex-archive/systems/knuth/tex--xet
+ Implements the same primitives as TeX-XeT, but outputs a normal dvi file.
+ Passes the trip test (as far as I know).
+
+9.3. MLTeX (Michael Ferguson)
+ Available from aldebaran.ee.mcgill.ca in pub/mltex
+ Adds a primitive \charsubdef, which allows the following: input of 8-bit
+ characters, participation of accented characters not present in the output
+ encoding in hyphenation, ligatures and kerning with accented letters.
+ Especially popular in francophone countries.
+ emTeX supports MLTeX via the /ml option.
+
+9.4. SiSiSi (Wilhelm Barth, Heinrich Nirschl, Heini Hofstaedter und Harald
+ Mueller)
+ Available from CTAN: tex-archive/systems/vms (sic!)
+ Implements another hyphenation algorithm (the name means SIchere
+ SInnentsprechende SIlbentrennung, which is translated `secure sensitive
+ hyphenation') specific to the german language (with Haupt- und
+ Nebentrennstellen). Fails the trip test, therefore not a legitimate TeX.
+ In use at TU Wien (Austria).
+
+9.5. Japanese TeX
+ [in preparation]
+
+The End.
diff --git a/Master/texmf-dist/doc/generic/knuth/etc/virtual-fonts.knuth b/Master/texmf-dist/doc/generic/knuth/etc/virtual-fonts.knuth
new file mode 100644
index 00000000000..1bc3a2bc405
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/knuth/etc/virtual-fonts.knuth
@@ -0,0 +1,633 @@
+Date: 08 Jan 90 1727 PST
+From: Don Knuth <DEK@SAIL.Stanford.EDU>
+Subject: Virtual fonts: More fun for Grand Wizards
+Keywords: fonts
+
+Many writers to TeXhax during the past year or so have been struggling with
+interfaces between differing font conventions. For example, there's been a
+brisk correspondence about mixing oldstyle digits with a caps-and-small-caps
+alphabet. Other people despair of working with fonts supplied by manufacturers
+like Autologic, Compugraphic, Monotype, etc.; still others are afraid to leave
+the limited accent capabilities of Computer Modern for fonts containing letters
+that are individually accented as they should be, because such fonts are not
+readily available in a form that existing TeX software understands.
+
+There is a much better way to solve such problems than the remedies
+that have been proposed in TeXhax. This better way was first realized
+by David Fuchs in 1983, when he installed it in our DVI-to-APS
+software at Stanford (which he also developed for commercial
+distribution by ArborText). We used it, for example, to typeset my
+article on Literate Programming for The Computer Journal, using native
+Autologic fonts to match the typography of that journal.
+
+I was expecting David's strategy to become widely known and adopted.
+But alas --- and this has really been the only significant
+disappointment I've had with respect to the way TeX has been
+propagating around the world --- nobody else's DVI-to-X drivers have
+incorporated anything resembling David's ideas, and TeXhax
+contributors have spilled gallons of electronic ink searching for
+answers in the wrong direction.
+
+The right direction is obvious once you've seen it (although it wasn't
+obvious in 1983): All we need is a good way to specify a mapping from
+TeX's notion of a font character to a device's capabilities for
+printing. Such a mapping was called a "virtual font" by the AMS
+speakers at the TUG meetings this past August. At that meeting I spoke
+briefly about the issue and voiced my hope that all DVI drivers be
+upgraded within a year to add a virtual font capability. Dave Rodgers
+of ArborText announced that his company would make their WEB routines
+for virtual font design freely available, and I promised to edit them
+into a form that would match the other programs in the standard
+TeXware distribution.
+
+The preparation of TeX Version 3 and MF Version 2 has taken me much longer
+than expected, but at last I've been able to look closely at the concept of
+virtual fonts. (The need for such fonts is indeed much greater now than it
+was before, because TeX's new multilingual capabilities are significantly
+more powerful only when suitable fonts are available. Virtual fonts can
+easily be created to meet these needs.)
+
+After looking closely at David Fuchs's original design, I decided to design
+a completely new file format that would carry his ideas further, making the
+virtual font mechanism completely device-independent; David's original code
+was very APS-specific. Furthermore I decided to extend his notions so that
+arbitrary DVI commands (including rules and even specials) could be
+part of a virtual font. The new file format I've just designed is called
+VF; it's easy for DVI drivers to read VF files, because VF format is similar
+to the PK and DVI formats they already deal with.
+
+The result is two new system routines called VFtoVP and VPtoVF. These
+routines are extensions of the old ones called TFtoPL and PLtoTF;
+there's a property-list language called VPL that extends the ordinary
+PL format so that virtual fonts can be created easily.
+
+In addition to implementing these routines, I've also tested the ideas by
+verifying that virtual fonts could be incorporated into Tom Rokicki's dvips
+system without difficulty. I wrote a C program (available from Tom) that
+converts Adobe AFM files into virtual fonts for TeX; these virtual fonts
+include almost all the characteristics of Computer Modern text fonts
+(lacking only the uppercase Greek and the dotless j) and they include all
+the additional Adobe characters as well. These virtual fonts even include
+all the "composite characters" listed in the AFM file, from `Aacute' to
+`zcaron'; such characters are available as ligatures. For example, to get
+`Aacute' you type first `acute' (which is character 19 = ~S in Computer Modern
+font layout, it could also be character 194 = Meta-B if you're using an
+8-bit keyboard with the new TeX) followed by `A'. Using such fonts, it's
+now easier for me to typeset European language texts in Times-Roman and
+Helvetica and Palatino than in Computer Modern! [But with less than an hour's
+work I could make a virtual font for Computer Modern that would do the same
+things; I just haven't gotten around to it yet.]
+
+[A nice ligature scheme for dozens of European languages was just published
+by Haralambous in the November TUGboat. He uses only ASCII characters, getting
+Aacute with the combination <A. I could readily add his scheme to mine, by
+adding a few lines to my VPL files. Indeed, multiple conventions can be
+supported simultaneously (although I don't recommend that really).]
+
+Virtual fonts make it easy to go from DVI files to the font layouts of
+any manufacturer or font supplier. They also (I'm sorry to say) make
+"track kerning" easy, for people who have to resort to that oft-abused
+feature of lead-free type.
+
+Furthermore, virtual fonts solve the problem of proofreading with screen
+fonts or with lowres laserprinter fonts, because you can have several
+virtual fonts sharing a common TFM file. Suppose, for example, that you
+want to typeset camera copy on an APS machine using Univers as the
+ultimate font, but you want to do proofreading with a screen previewer and
+with a laserprinter. Suppose further that you don't have Univers for your
+laserprinter; the closest you have is Helvetica. And suppose that you
+haven't even got Helvetica for your screen, but you do have cmss10. Here's
+what you can do: First make a virtual property list (VPL) file
+univers-aps.vpl that describes the high-quality font of your ultimate
+output. Then edit that file into univers-laser.vpl, which has identical
+font metric info but maps the characters into Helvetica; similarly, make
+univers-screen.vpl, which maps them into cmss10. Now run VPtoVF on each of
+the three VPL files. This will produce three identical TFM files
+univers.tfm, one of which you should put on the directory read by TeX.
+You'll also get three distinct VF files called univers.vf, which you
+should put on three different directories --- one directory for your
+DVI-to-APS software, another for your DVI-to-laserwriter software, and the
+third for the DVI-to-screen previewer. Voil~~Ra.
+
+So virtual fonts are evidently quite virtuous. But what exactly are
+virtual fonts, detail-wise? Appended to this message are excerpts from
+VFtoVP.WEB and VPtoVF.WEB, which give a complete definition of the
+VF and VPL file formats.
+
+I fully expect that all people who have implemented DVI drivers will
+immediately see the great potential of virtual fonts, and that they will
+be unable to resist installing a VF capability into their own software
+during the first few months of 1990. (The idea is this: For each font
+specified in a DVI file, the software looks first in a special table to
+see if the font is device-resident (in which case the TFM file is loaded,
+to get the character widths); failing that, it looks for a suitable GF or
+PK file; failing that, it looks for a VF file, which may in turn lead to
+other actual or virtual files. The latter files should not be loaded
+immediately, but only on demand, because the process is recursive.
+Incidentally, if no resident or GF or PK or VF file is found, a TFM file
+should be loaded as a last resort, so that the characters can be left
+blank with appropriate widths.)
+
+%--- an excerpt from VFtoVP.web -----------------------------------------------
+
+@* Virtual fonts. The idea behind \.{VF} files is that a general
+interface mechanism is needed to switch between the myriad font
+layouts provided by different suppliers of typesetting equipment.
+Without such a mechanism, people must go to great lengths writing
+inscrutable macros whenever they want to use typesetting conventions
+based on one font layout in connection with actual fonts that have
+another layout. This puts an extra burden on the typesetting system,
+interfering with the other things it needs to do (like kerning,
+hyphenation, and ligature formation).
+
+These difficulties go away when we have a ``virtual font,''
+i.e., a font that exists in a logical sense but not a physical sense.
+A typesetting system like \TeX\ can do its job without knowing where the
+actual characters come from; a device driver can then do its job by
+letting a \.{VF} file tell what actual characters correspond to the
+characters \TeX\ imagined were present. The actual characters
+can be shifted and/or magnified and/or combined with other characters
+from many different fonts. A virtual font can even make use of characters
+from virtual fonts, including itself.
+
+Virtual fonts also allow convenient character substitutions for proofreading
+purposes, when fonts designed for one output device are unavailable on another.
+
+@ A \.{VF} file is organized as a stream of 8-bit bytes, using conventions
+borrowed from \.{DVI} and \.{PK} files. Thus, a device driver that knows
+about \.{DVI} and \.{PK} format will already
+contain most of the mechanisms necessary to process \.{VF} files.
+We shall assume that \.{DVI} format is understood; the conventions in the
+\.{DVI} documentation (see, for example, {\sl \TeX: The Program}, part 31)
+are adopted here to define \.{VF} format.
+
+A preamble
+appears at the beginning, followed by a sequence of character definitions,
+followed by a postamble. More precisely, the first byte of every \.{VF} file
+must be the first byte of the following ``preamble command'':
+
+\yskip\hang|pre| 247 |i[1]| |k[1]| |x[k]| |cs[4]| |ds[4]|.
+Here |i| is the identification byte of \.{VF}, currently 202. The string
+|x| is merely a comment, usually indicating the source of the \.{VF} file.
+Parameters |cs| and |ds| are respectively the check sum and the design size
+of the virtual font; they should match the first two words in the header of
+the \.{TFM} file, as described below.
+
+\yskip
+After the |pre| command, the preamble continues with font definitions;
+every font needed to specify ``actual'' characters in later
+\\{set\_char} commands is defined here. The font definitions are
+exactly the same in \.{VF} files as they are in \.{DVI} files, except
+that the scaled size |s| is relative and the design size |d| is absolute:
+
+\yskip\hang|fnt_def1| 243 |k[1]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|.
+Define font |k|, where |0<=k<256|.
+
+\yskip\hang|@!fnt_def2| 244 |k[2]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|.
+Define font |k|, where |0<=k<65536|.
+
+\yskip\hang|@!fnt_def3| 245 |k[3]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|.
+Define font |k|, where |0<=k<@t$2~{24}$@>|.
+
+\yskip\hang|@!fnt_def4| 246 |k[4]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|.
+Define font |k|, where |@t$-2~{31}$@><=k<@t$2~{31}$@>|.
+
+\yskip\noindent
+These font numbers |k| are ``local''; they have no relation to font numbers
+defined in the \.{DVI} file that uses this virtual font. The dimension%|s|,
+which represents the scaled size of the local font being defined,
+is a |fix_word| relative to the design size of the virtual font.
+Thus if the local font is to be used at the same size
+as the design size of the virtual font itself, |s| will be the
+integer value $2~{20}$. The value of |s| must be positive and less than
+$2~{24}$ (thus less than 16 when considered as a |fix_word|).
+The dimension%|d| is a |fix_word| in units of printer's points; hence it
+is identical to the design size found in the corresponding \.{TFM} file.
+
+@d id_byte=202
+
+@<Glob...@>=
+@!vf_file:packed file of 0..255;
+
+@ The preamble is followed by zero or more character packets, where each
+character packet begins with a byte that is $<243$. Character packets have
+two formats, one long and one short:
+
+\yskip\hang|long_char| 242 |pl[4]| |cc[4]| |tfm[4]| |dvi[pl]|. This long form
+specifies a virtual character in the general case.
+
+\yskip\hang|short_char0..short_char241|
+|pl[1]| |cc[1]| |tfm[3]| |dvi[pl]|. This short form specifies a
+virtual character in the common case
+when |0<=pl<242| and |0<=cc<256| and $0\le|tfm|<2~{24}$.
+
+
+\yskip\noindent
+Here |pl| denotes the packet length following the |tfm| value; |cc| is
+the character code; and |tfm| is the character width copied from the
+\.{TFM} file for this virtual font. There should be at most one character
+packet having any given |cc| code.
+
+The |dvi| bytes are a sequence of complete \.{DVI} commands, properly
+nested with respect to |push| and |pop|. All \.{DVI} operations are
+permitted except |bop|, |eop|, and commands with opcodes |>=243|.
+Font selection commands (|fnt_num0| through |fnt4|) must refer to fonts
+defined in the preamble.
+
+Dimensions that appear in the \.{DVI} instructions are analogous to
+|fix_word| quantities; i.e., they are integer multiples of $2~{-20}$ times
+the design size of the virtual font. For example, if the virtual font
+has design size $10\,$pt, the \.{DVI} command to move down $5\,$pt
+would be a \\{down} instruction with parameter $2~{19}$. The virtual font
+itself might be used at a different size, say $12\,$pt; then that
+\\{down} instruction would move down $6\,$pt instead. Each dimension
+must be less than $2~{24}$ in absolute value.
+
+Device drivers processing \.{VF} files treat the sequences of |dvi| bytes
+as subroutines or macros, implicitly enclosing them with |push| and |pop|.
+Each subroutine begins with |w=x=y=z=0|, and with current font%|f| the
+number of the first-defined in the preamble (undefined if there's no
+such font). After the |dvi| commands have been
+performed, the |h| and%|v| position registers of \.{DVI} format are restored
+to their former values, and then |h| is increased by the \.{TFM} width
+(properly scaled)---just as if a simple character had been typeset.
+
+@d long_char=242 {\.{VF} command for general character packet}
+@d set_char_0=0 {\.{DVI} command to typeset character 0 and move right}
+@d set1=128 {typeset a character and move right}
+@d set_rule=132 {typeset a rule and move right}
+@d put1=133 {typeset a character}
+@d put_rule=137 {typeset a rule}
+@d nop=138 {no operation}
+@d push=141 {save the current positions}
+@d pop=142 {restore previous positions}
+@d right1=143 {move right}
+@d w0=147 {move right by |w|}
+@d w1=148 {move right and set |w|}
+@d x0=152 {move right by |x|}
+@d x1=153 {move right and set |x|}
+@d down1=157 {move down}
+@d y0=161 {move down by |y|}
+@d y1=162 {move down and set |y|}
+@d z0=166 {move down by |z|}
+@d z1=167 {move down and set |z|}
+@d fnt_num_0=171 {set current font to 0}
+@d fnt1=235 {set current font}
+@d xxx1=239 {extension to \.{DVI} primitives}
+@d xxx4=242 {potentially long extension to \.{DVI} primitives}
+@d fnt_def1=243 {define the meaning of a font number}
+@d pre=247 {preamble}
+@d post=248 {postamble beginning}
+@d improper_DVI_for_VF==139,140,243,244,245,246,247,248,249,250,251,252,
+ 253,254,255
+
+@ The character packets are followed by a trivial postamble, consisting of
+one or more bytes all equal to |post| (248). The total number of bytes
+in the file should be a multiple of%4.
+
+%------------- and here's an extract from VPtoVF.web --------------------------
+
+@* Property list description of font metric data.
+The idea behind \.{VPL} files is that precise details about fonts, i.e., the
+facts that are needed by typesetting routines like \TeX, sometimes have to
+be supplied by hand. The nested property-list format provides a reasonably
+convenient way to do this.
+
+A good deal of computation is necessary to parse and process a
+\.{VPL} file, so it would be inappropriate for \TeX\ itself to do this
+every time it loads a font. \TeX\ deals only with the compact descriptions
+of font metric data that appear in \.{TFM} files. Such data is so compact,
+however, it is almost impossible for anybody but a computer to read it.
+
+Device drivers also need a compact way to describe mappings from \TeX's idea
+of a font to the actual characters a device can produce. They can do this
+conveniently when given a packed sequence of bytes called a \.{VF} file.
+
+The purpose of \.{VPtoVF} is to convert from a human-oriented file of text
+to computer-oriented files of binary numbers. There's a companion program,
+\.{VFtoVP}, which goes the other way.
+
+@<Glob...@>=
+@!vpl_file:text;
+
+@ @<Set init...@>=
+reset(vpl_file);
+
+@ A \.{VPL} file is like a \.{PL} file with a few extra features, so we
+can begin to define it by reviewing the definition of \.{PL} files. The
+material in the next few sections is copied from the program \.{PLtoTF}.
+
+A \.{PL} file is a list of entries of the form
+$$\.{(PROPERTYNAME VALUE)}$$
+where the property name is one of a finite set of names understood by
+this program, and the value may itself in turn be a property list.
+The idea is best understood by looking at an example, so let's consider
+a fragment of the \.{PL} file for a hypothetical font.
+$$\vbox{\halign{\.{#}\hfil\cr
+(FAMILY NOVA)\cr
+(FACE F MIE)\cr
+(CODINGSCHEME ASCII)\cr
+(DESIGNSIZE D 10)\cr
+(DESIGNUNITS D 18)\cr
+(COMMENT A COMMENT IS IGNORED)\cr
+(COMMENT (EXCEPT THIS ONE ISN'T))\cr
+(COMMENT (ACTUALLY IT IS, EVEN THOUGH\cr
+\qquad\qquad IT SAYS IT ISN'T))\cr
+(FONTDIMEN\cr
+\qquad (SLANT R -.25)\cr
+\qquad (SPACE D 6)\cr
+\qquad (SHRINK D 2)\cr
+\qquad (STRETCH D 3)\cr
+\qquad (XHEIGHT R 10.55)\cr
+\qquad (QUAD D 18)\cr
+\qquad )\cr
+(LIGTABLE\cr
+\qquad (LABEL C f)\cr
+\qquad (LIG C f O 200)\cr
+\qquad (SKIP D 1)\cr
+\qquad (LABEL O 200)\cr
+\qquad (LIG C i O 201)\cr
+\qquad (KRN O 51 R 1.5)\cr
+\qquad (/LIG C ? C f)\cr
+\qquad (STOP)\cr
+\qquad )\cr
+(CHARACTER C f\cr
+\qquad (CHARWD D 6)\cr
+\qquad (CHARHT R 13.5)\cr
+\qquad (CHARIC R 1.5)\cr
+\qquad )\cr}}$$
+This example says that the font whose metric information is being described
+belongs to the hypothetical
+\.{NOVA} family; its face code is medium italic extended;
+and the characters appear in ASCII code positions. The design size is 10
+points, and all other sizes in this \.{PL} file are given in units such that
+18 units
+equals the design size. The font is slanted with a slope of $-.25$ (hence the
+letters actually slant backward---perhaps that is why the family name is
+\.{NOVA}). The normal space between words is 6 units (i.e., one third of
+the 18-unit design size), with glue that shrinks by 2 units or stretches by 3.
+The letters for which accents don't need to be raised or lowered are 10.55
+units high, and one em equals 18 units.
+
+The example ligature table is a bit trickier. It specifies that the
+letter \.f followed by another \.f is changed to code @'200, while
+code @'200 followed by \.i is changed to @'201; presumably codes @'200
+and @'201 represent the ligatures `ff' and `ffi'. Moreover, in both cases
+\.f and @'200, if the following character is the code @'51 (which is a
+right parenthesis), an additional 1.5 units of space should be inserted
+before the @'51. (The `\.{SKIP}~\.D~\.1' skips over one \.{LIG} or
+\.{KRN} command, which in this case is the second \.{LIG}; in this way
+two different ligature/kern programs can come together.)
+Finally, if either \.f or @'200 is followed by a question mark,
+the question mark is replaced by \.f and the ligature program is
+started over. (Thus, the character pair `\.{f?}' would actually become
+the ligature `ff', and `\.{ff?}' or `\.{f?f}' would become `fff'. To
+avoid this restart procedure, the \.{/LIG} command could be replaced
+by \.{/LIG>}; then `\.{f?} would become `f\kern0ptf' and `\.{f?f}'
+would become `f\kern0ptff'.)
+
+Character \.f itself is 6 units wide and 13.5 units tall, in this example.
+Its depth is zero (since \.{CHARDP} is not given), and its italic correction
+is 1.5 units.
+
+@ The example above illustrates most of the features found in \.{PL} files.
+Note that some property names, like \.{FAMILY} or \.{COMMENT}, take a
+string as their value; this string continues until the first unmatched
+right parenthesis. But most property names, like \.{DESIGNSIZE} and \.{SLANT}
+and \.{LABEL}, take a number as their value. This number can be expressed in
+a variety of ways, indicated by a prefixed code; \.D stands for decimal,
+\.H for hexadecimal, \.O for octal, \.R for real, \.C for character, and
+\.F for ``face.'' Other property names, like \.{LIG}, take two numbers as
+their value. And still other names, like \.{FONTDIMEN} and \.{LIGTABLE} and
+\.{CHARACTER}, have more complicated values that involve property lists.
+
+A property name is supposed to be used only in an appropriate property
+list. For example, \.{CHARWD} shouldn't occur on the outer level or
+within \.{FONTDIMEN}.
+
+The individual property-and-value pairs in a property list can appear in
+any order. For instance, `\.{SHRINK}' precedes `\.{STRETCH}' in the above
+example, although the \.{TFM} file always puts the stretch parameter first.
+One could even give the information about characters like `\.f' before
+specifying the number of units in the design size, or before specifying the
+ligature and kerning table. However, the \.{LIGTABLE} itself is an exception
+to this rule; the individual elements of the \.{LIGTABLE} property list
+can be reordered only to a certain extent without changing the meaning
+of that table.
+
+If property-and-value pairs are omitted, a default value is used. For example,
+we have already noted that the default for \.{CHARDP} is zero. The default
+for {\sl every\/} numeric value is, in fact, zero, unless otherwise stated
+below.
+
+If the same property name is used more than once, \.{VPtoVF} will not notice
+the discrepancy; it simply uses the final value given. Once again, however, the
+\.{LIGTABLE} is an exception to this rule; \.{VPtoVF} will complain if there
+is more than one label for some character. And of course many of the
+entries in the \.{LIGTABLE} property list have the same property name.
+
+@ A \.{VPL} file also includes information about how to create each character,
+by typesetting characters from other fonts and/or by drawing lines, etc.
+Such information is the value of the `\.{MAP}' property, which can be
+illustrated as follows:
+$$\vbox{\halign{\.{#}\hfil\cr
+(MAPFONT D 0 (FONTNAME Times-Roman))\cr
+(MAPFONT D 1 (FONTNAME Symbol))\cr
+(MAPFONT D 2 (FONTNAME cmr10)(FONTAT D 20))\cr
+(CHARACTER O 0 (MAP (SELECTFONT D 1)(SETCHAR C G)))\cr
+(CHARACTER O 76 (MAP (SETCHAR O 277)))\cr
+(CHARACTER D 197 (MAP\cr
+\qquad(PUSH)(SETCHAR C A)(POP)\cr
+\qquad(MOVEUP R 0.937)(MOVERIGHT R 1.5)(SETCHAR O 312)))\cr
+(CHARACTER O 200 (MAP (MOVEDOWN R 2.1)(SETRULE R 1 R 8)))\cr
+(CHARACTER O 201 (MAP\cr
+\qquad (SPECIAL ps: /SaveGray currentgray def .5 setgray)\cr
+\qquad (SELECTFONT D 2)(SETCHAR C A)\cr
+\qquad (SPECIAL SaveGray setgray)))\cr
+}}$$
+(These specifications appear in addition to the conventional \.{PL}
+information. The \.{MAP} attribute can be mixed in with other attributes
+like \.{CHARWD} or it can be given separately.)
+
+In this example, the virtual font is composed of characters that can be
+fabricated from three actual fonts, `\.{Times-Roman}',
+`\.{Symbol}', and `\.{cmr10} \.{at} \.{20\\u}' (where \.{\\u}
+is the unit size in this \.{VPL} file). Character |@'0| is typeset as
+a `G' from the symbol font. Character |@'76| is typeset as character |@'277|
+from the ordinary Times font. (If no other font is selected, font
+number~0 is the default. If no \.{MAP} attribute is given, the default map
+is a character of the same number in the default font.)
+
+Character 197 (decimal) is more interesting: First an A is typeset (in the
+default font Times), and this is enclosed by \.{PUSH} and \.{POP} so that
+the original position is restored. Then the accent character |@'312| is
+typeset, after moving up .937 units and right 1.5 units.
+
+To typeset character |@'200| in this virtual font, we move down 2.1 units,
+then typeset a rule that is 1 unit high and 8 units wide.
+
+Finally, to typeset character |@'201|, we do something that requires a
+special ability to interpret PostScript commands; this example
+sets the PostScript ``color'' to 50\char`\%\ gray and typesets an `A'
+from \.{cmr10} in that color.
+
+In general, the \.{MAP} attribute of a virtual character can be any sequence
+of typesetting commands that might appear in a page of a \.{DVI} file.
+A single character might map into an entire page.
+
+@ But instead of relying on a hypothetical example, let's consider a complete
+grammar for \.{VPL} files, beginning with the (unchanged) grammatical rules
+for \.{PL} files. At the outer level, the following property names
+are valid in any \.{PL} file:
+
+\yskip\hang\.{CHECKSUM} (four-byte value). The value, which should be a
+nonnegative integer less than $2^{32}$, is used to identify a particular
+version of a font; it should match the check sum value stored with the font
+itself. An explicit check sum of zero is used to bypass
+check sum testing. If no checksum is specified in the \.{VPL} file,
+\.{VPtoVF} will compute the checksum that \MF\ would compute from the
+same data.
+
+
+\yskip\hang\.{DESIGNSIZE} (numeric value, default is 10). The value, which
+should be a real number in the range |1.0<=x<2048|, represents the default
+amount by which all quantities will be scaled if the font is not loaded
+with an `\.{at}' specification. For example, if one says
+`\.{\\font\\A=cmr10 at 15pt}' in \TeX\ language, the design size in the \.{TFM}
+file is ignored and effectively replaced by 15 points; but if one simply
+says `\.{\\font\\A=cmr10}' the stated design size is used. This quantity is
+always in units of printer's points.
+
+\yskip\hang\.{DESIGNUNITS} (numeric value, default is 1). The value
+should be a positive real number; it says how many units equals the design
+size (or the eventual `\.{at}' size, if the font is being scaled). For
+example, suppose you have a font that has been digitized with 600 pixels per
+em, and the design size is one em; then you could say `\.{(DESIGNUNITS R 600)}'
+if you wanted to give all of your measurements in units of pixels.
+
+\yskip\hang\.{CODINGSCHEME} (string value, default is `\.{UNSPECIFIED}').
+The string should not contain parentheses, and its length must be less than 40.
+It identifies the correspondence between the numeric codes and font characters.
+(\TeX\ ignores this information, but other software programs make use of it.)
+
+\yskip\hang\.{FAMILY} (string value, default is `\.{UNSPECIFIED}').
+The string should not contain parentheses, and its length must be less than 20.
+It identifies the name of the family to which this font belongs, e.g.,
+`\.{HELVETICA}'. (\TeX\ ignores this information; but it is needed, for
+example, when converting \.{DVI} files to \.{PRESS} files for Xerox
+equipment.)
+
+\yskip\hang\.{FACE} (one-byte value). This number, which must lie
+between 0 and 255 inclusive, is a subsidiary ident\-ifi\-ca\-tion of
+the font within its family. For example, bold italic condensed fonts
+might have the same family name as light roman extended fonts,
+differing only in their face byte. (\TeX\ ignores this information;
+but it is needed, for example, when converting \.{DVI} files to
+\.{PRESS} files for Xerox equipment.)
+
+\yskip\hang\.{SEVENBITSAFEFLAG} (string value, default is
+`\.{FALSE}'). The value should start with either `\.T' (true) or `\.F'
+(false). If true, character codes less than 128 cannot lead to codes
+of 128 or more via ligatures or charlists or extensible characters.
+(\TeX82 ignores this flag, but older versions of \TeX\ would only
+accept \.{TFM} files that were seven-bit safe.) \.{VPtoVF} computes
+the correct value of this flag and gives an error message only if a
+claimed ``true'' value is incorrect.
+
+\yskip\hang\.{HEADER} (a one-byte value followed by a four-byte value).
+The one-byte value should be between 18 and a maximum limit that can be
+raised or lowered depending on the compile-time setting of |max_header_bytes|.
+The four-byte value goes into the header word whose index is the one-byte
+value; for example, to set |header[18]:=1|, one may write
+`\.{(HEADER D 18 O 1)}'. This notation is used for header information that
+is presently unnamed. (\TeX\ ignores it.)
+
+\yskip\hang\.{FONTDIMEN} (property list value). See below for the names
+allowed in this property list.
+
+\yskip\hang\.{LIGTABLE} (property list value). See below for the rules
+about this special kind of property list.
+
+\yskip\hang\.{BOUNDARYCHAR} (one-byte value). If this character appears in
+a \.{LIGTABLE} command, it matches ``end of word'' as well as itself.
+If no boundary character is given and no \.{LABEL} \.{BOUNDARYCHAR} occurs
+within \.{LIGTABLE}, word boundaries will not affect ligatures or kerning.
+
+\yskip\hang\.{CHARACTER}. The value is a one-byte integer followed by
+a property list. The integer represents the number of a character that is
+present in the font; the property list of a character is defined below.
+The default is an empty property list.
+
+@ Numeric property list values can be given in various forms identified by
+a prefixed letter.
+
+\yskip\hang\.C denotes an ASCII character, which should be a standard visible
+character that is not a parenthesis. The numeric value will therefore be
+between @'41 and @'176 but not @'50 or @'51.
+
+\yskip\hang\.D denotes an unsigned decimal integer, which must be
+less than $2^{32}$, i.e., at most `\.{D 4294967295}'.
+
+\yskip\hang\.F denotes a three-letter Xerox face code; the admissible codes
+are \.{MRR}, \.{MIR}, \.{BRR}, \.{BIR}, \.{LRR}, \.{LIR}, \.{MRC}, \.{MIC},
+\.{BRC}, \.{BIC}, \.{LRC}, \.{LIC}, \.{MRE}, \.{MIE}, \.{BRE}, \.{BIE},
+\.{LRE}, and \.{LIE}, denoting the integers 0 to 17, respectively.
+
+\yskip\hang\.O denotes an unsigned octal integer, which must be less than
+$2^{32}$, i.e., at most `\.{O 37777777777}'.
+
+\yskip\hang\.H denotes an unsigned hexadecimal integer, which must be less than
+$2^{32}$, i.e., at most `\.{H FFFFFFFF}'.
+
+\yskip\hang\.R denotes a real number in decimal notation, optionally preceded
+by a `\.+' or `\.-' sign, and optionally including a decimal point. The
+absolute value must be less than 2048.
+
+@ The property names allowed in a \.{FONTDIMEN} property list correspond to
+various \TeX\ parameters, each of which has a (real) numeric value. All
+of the parameters except \.{SLANT} are in design units. The admissible
+names are \.{SLANT}, \.{SPACE}, \.{STRETCH}, \.{SHRINK}, \.{XHEIGHT},
+\.{QUAD}, \.{EXTRASPACE}, \.{NUM1}, \.{NUM2}, \.{NUM3}, \.{DENOM1},
+\.{DENOM2}, \.{SUP1}, \.{SUP2}, \.{SUP3}, \.{SUB1}, \.{SUB2}, \.{SUPDROP},
+\.{SUBDROP}, \.{DELIM1}, \.{DELIM2}, and \.{AXISHEIGHT}, for parameters
+1~to~22. The alternate names \.{DEFAULTRULETHICKNESS},
+\.{BIGOPSPACING1}, \.{BIGOPSPACING2}, \.{BIGOPSPACING3},
+\.{BIGOPSPACING4}, and \.{BIGOPSPACING5}, may also be used for parameters
+8 to 13.
+
+The notation `\.{PARAMETER} $n$' provides another way to specify the
+$n$th parameter; for example, `\.{(PARAMETER} \.{D 1 R -.25)}' is another way
+to specify that the \.{SLANT} is $-0.25$. The value of $n$ must be positive
+and less than |max_param_words|.
+
+@ The elements of a \.{CHARACTER} property list can be of six different types.
+
+\yskip\hang\.{CHARWD} (real value) denotes the character's width in
+design units.
+
+\yskip\hang\.{CHARHT} (real value) denotes the character's height in
+design units.
+
+\yskip\hang\.{CHARDP} (real value) denotes the character's depth in
+design units.
+
+\yskip\hang\.{CHARIC} (real value) denotes the character's italic correction in
+design units.
+
+\yskip\hang\.{NEXTLARGER} (one-byte value), specifies the character that
+follows the present one in a ``charlist.'' The value must be the number of a
+character in the font, and there must be no infinite cycles of supposedly
+larger and larger characters.
+
+\yskip\hang\.{VARCHAR} (property list value), specifies an extensible
+character. This option and \.{NEXTLARGER} are mutually exclusive;
+i.e., they cannot both be used within the same \.{CHARACTER} list.
+
+\yskip\noindent
+The elements of a \.{VARCHAR} property list are either \.{TOP}, \.{MID},
+\.{BOT} or \.{REP}; the values are integers, which must be zero or the number
+or a character in the font. A zero value for \.{TOP}, \.{MID}, or \.{BOT} means
+that the corresponding piece of the extensible character is absent. A nonzero
+value, or a \.{REP} value of zero, denotes the character code used to make
+up the top, middle, bottom, or replicated piece of an extensible character.
+
diff --git a/Master/texmf-dist/doc/plain/plain-doc/csname.txt b/Master/texmf-dist/doc/plain/plain-doc/csname.txt
new file mode 100644
index 00000000000..2016f64bd50
--- /dev/null
+++ b/Master/texmf-dist/doc/plain/plain-doc/csname.txt
@@ -0,0 +1,1892 @@
+ CSNAME.TXT
+
+This file contains all unique control sequences used by TeX and the
+pricipal macro packages in use at AMS:
+ Plain: primitives; plain.tex
+ AMS-TeX: amstex.tex, amsppt.sty
+ LaTeX: (not yet installed)
+
+
+\ *primitive (control space)
+\! plain.tex
+\" plain.tex
+\# plain.tex
+\$ plain.tex
+\% plain.tex
+\& plain.tex
+\' plain.tex
+\( plain.tex
+\) plain.tex
+\* plain.tex
+\+ plain.tex
+\, plain.tex
+\- *primitive (discretionary hyphen)
+\. plain.tex
+\/ *primitive (italic correction)
+\/ plain.tex
+\: plain.tex (redefined in amstex.tex)
+\; plain.tex (redefined in amstex.tex)
+\< plain.tex
+\= plain.tex (undefined in amstex.tex)
+\> plain.tex (undefined in amstex.tex)
+\? plain.tex
+\*@@at(csname) amstex.tex (* will be replaced by some string)
+\*@at(csname) amstex.tex (* will be replaced by some string)
+\*@box(csname) amstex.tex (* will be replaced by some string)
+\*@true(csname) amsppt.sty (* will be replaced by some string)
+\*box@(csname) amsppt.sty (* will be replaced by some string)
+\*Zat(csname) amstex.tex (* will be replaced by some string)
+\*ZZat(csname) amstex.tex (* will be replaced by some string)
+\@ amstex.tex
+\@cclv plain.tex
+\@cclvi plain.tex
+\@crfalse plain.tex
+\@crtrue plain.tex
+\@foot plain.tex
+\@if plain.tex
+\@ins plain.tex
+\@lign plain.tex
+\@m plain.tex
+\@M plain.tex
+\@midfalse plain.tex
+\@midtrue plain.tex
+\@MM plain.tex
+\@ne plain.tex
+\@nother plain.tex
+\@penup plain.tex
+\@sf plain.tex
+\@vereq plain.tex
+\aa plain.tex
+\AA plain.tex
+\above *primitive
+\abovedisplayshortskip *primitive
+\abovedisplayskip *primitive
+\abovewithdelims *primitive
+\abstract amsppt.sty
+\abstract@ amsppt.sty
+\abstract@true amsppt.sty
+\accent *primitive
+\accentdimen@ amstex.tex
+\accentedsymbol amstex.tex
+\accentfam@ amstex.tex
+\accentmu@ amstex.tex
+\active plain.tex
+\acute plain.tex
+\Acute amstex.tex
+\acuteaccent amstex.tex
+\address amsppt.sty
+\addresscount@ amsppt.sty
+\address* amsppt.sty (expands to *i, *ii, etc.)
+\addressnum@ amsppt.sty
+\adjdemerits *primitive
+\adjustfootnotemark amsppt.sty
+\advance *primitive
+\advancepageno plain.tex
+\ae plain.tex
+\AE plain.tex
+\affil amsppt.sty
+\affil@true amsppt.sty
+\affilbox@ amsppt.sty
+\after amstex.tex
+\afterassignment *primitive
+\afterbook@false amsppt.sty
+\afterbook@true amsppt.sty
+\aftergroup *primitive
+\aleph plain.tex
+\align amstex.tex
+\align@ amstex.tex
+\alignat amstex.tex
+\alignat@ amstex.tex
+\aligned amstex.tex
+\aligned@ amstex.tex
+\alignedat amstex.tex
+\alloc@ plain.tex (redefined in amstex.tex)
+\alloc@true amstex.tex
+\allocationnumber plain.tex
+\alloclist@ amstex.tex
+\allowbreak plain.tex
+\allowdisplaybreak@ amstex.tex
+\allowlinebreak amstex.tex
+\allowmathbreak amstex.tex
+\alpha plain.tex
+\amalg plain.tex
+\ampersand@ amstex.tex
+\amspptloaded@AmS amsppt.sty
+\AmSTeX amstex.tex
+\amstexloaded@ amstex.tex
+\and amstex.tex
+\and@ amstex.tex
+\angle plain.tex
+\ans@ amstex.tex
+\Ans@ amstex.tex
+\appendit@ amstex.tex
+\approx plain.tex
+\arccos plain.tex
+\arcsin plain.tex
+\arctan plain.tex
+\arg plain.tex
+\arrowvert plain.tex
+\Arrowvert plain.tex
+\ast plain.tex
+\asymp plain.tex
+\at@ amstex.tex
+\atcount@ amstex.tex
+\atdef@ amstex.tex
+\athelp@ amstex.tex
+\athelpZ(csname) amstex.tex
+\atop *primitive
+\atopwithdelims *primitive
+\attag@ amstex.tex
+\atZ(csname) amstex.tex
+\atZZ(csname) amstex.tex
+\atZZZ(csname) amstex.tex
+\atZZZZ(csname) amstex.tex
+\author amsppt.sty
+\author@true amsppt.sty
+\authorbox@ amsppt.sty
+\b plain.tex
+\B amstex.tex
+\backslash plain.tex
+\badans@false amstex.tex
+\badans@true amstex.tex
+\bar plain.tex
+\Bar amstex.tex
+\baselineskip *primitive
+\batchmode *primitive
+\Bbb amstex.tex
+\Bbb@ amstex.tex
+\Bbb@@ amstex.tex
+\begingroup *primitive
+\beginsection *primitive
+\belowdisplayshortskip *primitive
+\belowdisplayskip *primitive
+\beta plain.tex
+\bf plain.tex
+\bffam plain.tex
+\bffam@ amstex.tex
+\bgroup plain.tex
+\big plain.tex
+\Big plain.tex
+\bigaw@ amstex.tex
+\bigbreak plain.tex
+\bigcap plain.tex
+\bigcap@ amstex.tex
+\bigcirc plain.tex
+\bigcup plain.tex
+\bigcup@ amstex.tex
+\bigg plain.tex
+\Bigg plain.tex
+\biggl plain.tex
+\Biggl plain.tex
+\biggm plain.tex
+\Biggm plain.tex
+\biggr plain.tex
+\Biggr plain.tex
+\bigl plain.tex
+\Bigl plain.tex
+\bigm plain.tex
+\Bigm plain.tex
+\bigodot plain.tex
+\bigodot@ amstex.tex
+\bigoplus plain.tex
+\bigoplus@ amstex.tex
+\bigotimes plain.tex
+\bigotimes@ amstex.tex
+\bigpagebreak amstex.tex
+\bigr plain.tex
+\Bigr plain.tex
+\bigskip plain.tex
+\bigskipamount plain.tex
+\bigsqcup plain.tex
+\bigsqcup@ amstex.tex
+\bigtriangledown plain.tex
+\bigtriangleup plain.tex
+\biguplus plain.tex
+\biguplus@ amstex.tex
+\bigvee plain.tex
+\bigvee@ amstex.tex
+\bigvspace amstex.tex
+\bigwedge plain.tex
+\bigwedge@ amstex.tex
+\binom amstex.tex
+\binoppenalty *primitive
+\binrel@ amstex.tex
+\binrel@@ amstex.tex
+\black@ amstex.tex
+\BlackBoxes amstex.tex
+\bmatrix amstex.tex
+\bmod plain.tex
+\body plain.tex
+\bold amstex.tex
+\bold@ amstex.tex
+\bold@@ amstex.tex
+\boldDelta amstex.tex
+\boldGamma amstex.tex
+\boldLambda amstex.tex
+\boldOmega amstex.tex
+\boldPhi amstex.tex
+\boldPi amstex.tex
+\boldPsi amstex.tex
+\boldSigma amstex.tex
+\boldTheta amstex.tex
+\boldUpsilon amstex.tex
+\boldXi amstex.tex
+\book amsppt.sty
+\book@false amsppt.sty
+\book@true amsppt.sty
+\bookbox@ amsppt.sty
+\bookinfo amsppt.sty
+\bookinfo@false amsppt.sty
+\bookinfobox@ amsppt.sty
+\bordermatrix plain.tex
+\bot plain.tex
+\bot@false amstex.tex
+\bot@true amstex.tex
+\botaligned amstex.tex
+\botfolded@false amstex.tex
+\botfolded@true amstex.tex
+\botfoldedtext amstex.tex
+\botmark *primitive
+\botshave amstex.tex
+\botsmash amstex.tex
+\bowtie plain.tex
+\box *primitive
+\box255 *primitive (page contents)
+\boxed amstex.tex
+\boxmaxdepth *primitive
+\brace plain.tex
+\braceld plain.tex
+\bracelu plain.tex
+\bracerd plain.tex
+\braceru plain.tex
+\bracevert plain.tex
+\brack plain.tex
+\break plain.tex
+\breve plain.tex
+\Breve amstex.tex
+\brokenpenalty *primitive
+\buffer amstex.tex
+\buffer@ amstex.tex
+\buildrel plain.tex
+\bullet plain.tex
+\bunch amstex.tex
+\bunchtag amstex.tex
+\by amsppt.sty
+\by@false amsppt.sty
+\by@true amsppt.sty
+\bybox@ amsppt.sty
+\bye plain.tex
+\bysame amsppt.sty
+\bysame@false amsppt.sty
+\bysame@true amsppt.sty
+\bysamebox@ amsppt.sty
+\c amstex.tex (center, in \matrix)
+\c plain.tex
+\c@ncel plain.tex
+\cal plain.tex (undefined in amstex.tex)
+\Cal amstex.tex
+\Cal@ amstex.tex
+\Cal@@ amstex.tex
+\cap plain.tex
+\caption amstex.tex
+\captionwidth amstex.tex
+\captionwidth@ amstex.tex
+\cases plain.tex (redefined in amstex.tex)
+\catcode *primitive
+\CD amstex.tex
+\CD@true amstex.tex
+\cdot plain.tex
+\cdotp plain.tex
+\cdots plain.tex
+\CenteredTagsOnSplits amstex.tex
+\centering plain.tex
+\centering@ amstex.tex
+\centerline plain.tex
+\cfrac amstex.tex
+\cfraccount@ amstex.tex
+\ch@ck plain.tex
+\ChangeBuffer amstex.tex
+\char *primitive
+\chardef *primitive
+\check plain.tex
+\Check amstex.tex
+\chi plain.tex
+\choose plain.tex
+\circ plain.tex
+\cite amsppt.sty
+\classnum@ amstex.tex
+\cleaders *primitive
+\cleartabs plain.tex
+\closein *primitive
+\closeout *primitive
+\clubpenalty *primitive
+\clubsuit plain.tex
+\colon plain.tex
+\columns plain.tex
+\comment amstex.tex
+\comment@ amstex.tex
+\comment@@ amstex.tex
+\comment@@@ amstex.tex
+\cong plain.tex
+\coprod plain.tex
+\coprod@ amstex.tex
+\copy plain.tex
+\copyright plain.tex
+\cos plain.tex
+\cosh plain.tex
+\cot plain.tex
+\coth plain.tex
+\count *primitive
+\count@ plain.tex
+\count0 plain.tex (page number, \pageno)
+\countdef *primitive
+\countxviii@ amstex.tex
+\cr *primitive
+\CR@ amstex.tex
+\crcr *primitive
+\csc plain.tex
+\csname *primitive
+\ctagsplit@false amstex.tex
+\ctagsplit@true amstex.tex
+\cup plain.tex
+\d plain.tex
+\D amstex.tex
+\dag plain.tex
+\dagger plain.tex
+\dashv plain.tex
+\date amsppt.sty
+\date@ amsppt.sty
+\date@true amsppt.sty
+\day *primitive
+\dbinom amstex.tex
+\ddag plain.tex
+\ddagger plain.tex
+\ddddot amstex.tex
+\dddot amstex.tex
+\ddot plain.tex
+\Ddot amstex.tex
+\ddots plain.tex
+\deadcycles *primitive
+\def *primitive (use discouraged by amstex.tex; see \define)
+\defahelp@ amstex.tex
+\defaulthelp@ amstex.tex
+\defaulthyphenchar *primitive
+\defaultskewchar *primitive
+\defbhelp@ amstex.tex
+\define amstex.tex
+\define@ amstex.tex
+\define@@ amstex.tex
+\deg plain.tex
+\delcode *primitive
+\delimiter *primitive
+\delimiterfactor *primitive
+\delimitershortfall *primitive
+\delta plain.tex
+\Delta plain.tex
+\demo amsppt.sty
+\demo@ amsppt.sty
+\demonp % amsppt.sty
+\det plain.tex
+\dfrac amstex.tex
+\diamond plain.tex
+\diamondsuit plain.tex
+\dim plain.tex
+\dimen *primitive
+\dimen@ plain.tex
+\dimen@i plain.tex
+\dimen@ii plain.tex
+\dimendef *primitive
+\dimentomu@ amstex.tex
+\disabletabs amstex.tex
+\DisableTabs amstex.tex
+\discretionary *primitive
+\displ@y plain.tex
+\displ@y@ amstex.tex
+\displaybreak amstex.tex
+\displaybreak@ amstex.tex
+\displayindent *primitive
+\displaylimits *primitive
+\displaylines plain.tex
+\displaystyle *primitive
+\displaywidowpenalty *primitive
+\displaywidth *primitive
+\displaywidth@ amstex.tex
+\div plain.tex
+\divide *primitive
+\dlsl@ amstex.tex
+\dmatherr@ amstex.tex
+\do plain.tex
+\doat@ amstex.tex
+\document amstex.tex % amsppt.sty
+\documentstyle amstex.tex
+\dodummy@ amstex.tex
+\dospecials plain.tex
+\dosupereject plain.tex
+\dot plain.tex
+\Dot amstex.tex
+\doteq plain.tex
+\dotfill plain.tex
+\dots plain.tex
+\DOTS@ amstex.tex
+\DOTS@@ amstex.tex
+\DOTS@false amstex.tex
+\DOTS@true amstex.tex
+\dotsb amstex.tex
+\DOTSB amstex.tex
+\dotsb@ amstex.tex
+\dotsc amstex.tex
+\DOTSCASE@ amstex.tex
+\dotsi amstex.tex
+\DOTSI amstex.tex
+\dotsm amstex.tex
+\dotso@ amstex.tex
+\dotsspace@ amstex.tex
+\DOTSX amstex.tex
+\doublehyphendemerits *primitive
+\downarrow plain.tex
+\Downarrow plain.tex
+\downbracefill plain.tex
+\dp *primitive
+\drsr@ amstex.tex
+\dsize amstex.tex
+\dt@pfalse plain.tex
+\dt@ptrue plain.tex
+\dummyft@ amstex.tex
+\dump *primitive
+\eat@ amstex.tex
+\edef *primitive
+\egroup plain.tex
+\eightbf amsppt.sty
+\eightbig@ amsppt.sty
+\eighti amsppt.sty
+\eightit amsppt.sty
+\eightpoint amsppt.sty
+\eightrm amsppt.sty
+\eightsl amsppt.sty
+\eightsy amsppt.sty
+\eject plain.tex
+\ell plain.tex
+\else *primitive
+\empty plain.tex
+\emptyset plain.tex
+\enabletabs amstex.tex
+\EnableTabs amstex.tex
+\enabletabs@ amstex.tex
+\end *primitive
+\endalign amstex.tex
+\endalignat amstex.tex
+\endaligned amstex.tex
+\endalignedat amstex.tex
+\endauthor amsppt.sty
+\endbmatrix amstex.tex
+\endbotaligned amstex.tex
+\endcases amstex.tex
+\endCD amstex.tex
+\endcfrac amstex.tex
+\endcomment amstex.tex
+\endcsname *primitive
+\enddemo amsppt.sty
+\enddocument amstex.tex
+\endgather amstex.tex
+\endgathered amstex.tex
+\endgraf plain.tex
+\endgroup *primitive
+\endheading amsppt.sty
+\endinput *primitive
+\endinsert plain.tex
+\endline plain.tex
+\endlinechar *primitive
+\endmatrix amstex.tex
+\endmultline amstex.tex
+\endpmatrix amstex.tex
+\endproclaim amsppt.sty
+\endref amsppt.sty
+\endref@ amsppt.sty
+\endroster amsppt.sty
+\endSb amstex.tex
+\endsmallmatrix amstex.tex
+\endSp amstex.tex
+\endsplit amstex.tex
+\endtitle amsppt.sty
+\endtopaligned amstex.tex
+\endtopmatter amsppt.sty
+\endvmatrix amstex.tex
+\endVmatrix amstex.tex
+\endxalignat amstex.tex
+\endxxalignat amstex.tex
+\enskip plain.tex
+\enspace plain.tex
+\epsilon plain.tex
+\eqalign plain.tex
+\eqalignno plain.tex
+\eqno *primitive
+\equiv plain.tex
+\err@ amstex.tex
+\Err@ amstex.tex
+\errhelp *primitive
+\errmessage *primitive
+\errorstopmode *primitive
+\errZ(csname) amstex.tex
+\escapechar *primitive
+\eta plain.tex
+\everycr *primitive
+\everydisplay *primitive
+\everyhbox *primitive
+\everyjob *primitive
+\everymath *primitive
+\everypar *primitive
+\everypartoks@ amsppt.sty
+\everyvbox *primitive
+\ex@ amstex.tex
+\exhyphenpenalty *primitive
+\exists plain.tex
+\exp plain.tex
+\expandafter *primitive
+\extra@ amstex.tex
+\extra@false amstex.tex
+\extra@true amstex.tex
+\extrap@ amstex.tex
+\f@@t plain.tex
+\f@t plain.tex
+\fam *primitive
+\familycount@ amstex.tex
+\fi *primitive
+\filbreak *primitive
+\filhss@ amsppt.sty
+\finalhyphendemerits *primitive
+\finalinfo amsppt.sty
+\finalinfo@false amsppt.sty
+\finalinfobox@ amsppt.sty
+\findlimits@ amstex.tex
+\finph@nt plain.tex
+\finsm@sh plain.tex (redefined in amstex.tex)
+\firstitem@false amsppt.sty
+\firstitem@true amsppt.sty
+\firstmark *primitive
+\firstref@false amsppt.sty
+\firstref@true amsppt.sty
+\fivebf plain.tex
+\fivei plain.tex
+\fivemsx amstex.tex (depends on font availability)
+\fivemsy amstex.tex (depends on font availability)
+\fiverm plain.tex
+\fivesy plain.tex
+\flat plain.tex
+\floatingpenalty *primitive
+\flushpar amstex.tex
+\fmtname plain.tex
+\Fmtname amstex.tex
+\fmtversion plain.tex
+\Fmtversion amstex.tex
+\fo@t plain.tex
+\foldedtext amstex.tex
+\foldedtext@ amstex.tex
+\foldedwidth amstex.tex
+\folio plain.tex
+\font *primitive
+\font@ amsppt.sty
+\fontdimen *primitive
+\fontlist@ amstex.tex
+\fontname *primitive
+\footins plain.tex
+\footline plain.tex
+\footmarkcount@ amstex.tex
+\footmarkcount@@ amstex.tex
+\footmarkform@ amsppt.sty
+\footnote plain.tex (undefined in amstex.tex)
+\footnote (redefined in amsppt.sty)
+\footnotemark amsppt.sty
+\footnoterule plain.tex (redefined in amsppt.sty)
+\footnotetext amsppt.sty
+\footstrut plain.tex
+\for amstex.tex
+\forall plain.tex
+\format amstex.tex
+\format@ amstex.tex
+\frac amstex.tex
+\fracwithdelims amstex.tex
+\frenchspacing plain.tex
+\frown plain.tex
+\futurelet *primitive
+\futureletnextat@ amstex.tex
+\futureletnextatZ(csname) amstex.tex
+\G@ amstex.tex
+\galign@ amstex.tex
+\galleys amstex.tex
+\galleys@true amstex.tex
+\gamma plain.tex
+\Gamma plain.tex
+\garbage@ amstex.tex
+\gather amstex.tex
+\gathered amstex.tex
+\gcd plain.tex
+\gdef *primitive
+\gdef@ amstex.tex
+\gdisplaywidth@ amstex.tex
+\ge plain.tex
+\geq plain.tex
+\getmathch@ amstex.tex
+\getpoints@ amstex.tex
+\gets plain.tex
+\gg plain.tex
+\glineht@ amstex.tex
+\global *primitive
+\globaldefs *primitive
+\gloop@ amstex.tex
+\gmaxwidth@ amstex.tex
+\gmeasure@ amstex.tex
+\goodbreak plain.tex
+\grave plain.tex
+\Grave amstex.tex
+\graveaccent amstex.tex
+\gwidth@ amstex.tex
+\H plain.tex
+\h@false plain.tex
+\h@true plain.tex
+\halign *primitive
+\hang plain.tex
+\hangafter *primitive
+\hangindent *primitive
+\hashtoks@ amstex.tex
+\haswidth amstex.tex
+\hat plain.tex
+\Hat amstex.tex
+\hataccent amstex.tex
+\hbadness *primitive
+\hbar plain.tex
+\hbox *primitive
+\hcorrection amstex.tex
+\hdots amstex.tex
+\hdotsfor amstex.tex
+\heading amsppt.sty
+\headingbox@ amsppt.sty
+\headline plain.tex
+\heartsuit plain.tex
+\hexnumber@ amstex.tex
+\hfil *primitive
+\hfill *primitive
+\hfilneg *primitive
+\hfuzz *primitive
+\hgl@ plain.tex
+\hglue plain.tex
+\hideskip plain.tex
+\hidewidth plain.tex
+\hoffset *primitive
+\hom plain.tex
+\hookleftarrow plain.tex
+\hookrightarrow plain.tex
+\hphantom plain.tex
+\hrule *primitive
+\hrulefill plain.tex
+\hsize *primitive
+\hskip *primitive
+\hss *primitive
+\ht *primitive
+\hyphenation *primitive
+\hyphenchar *primitive
+\hyphenpenalty *primitive
+\i plain.tex
+\ialign plain.tex
+\ic@ amstex.tex
+\idotsint amstex.tex
+\if *primitive
+\if@ plain.tex
+\if@cr plain.tex
+\if@mid plain.tex
+\ifabstract@ amsppt.sty
+\ifaffil@ amsppt.sty
+\ifafterbook@ amsppt.sty
+\ifalloc@ amstex.tex
+\ifauthor@ amsppt.sty
+\ifbadans@ amstex.tex
+\ifbook@ amsppt.sty
+\ifbookinfo@ amsppt.sty
+\ifbot@ amstex.tex
+\ifbotfolded@ amstex.tex
+\ifby@ amsppt.sty
+\ifbysame@ amsppt.sty
+\ifcase *primitive
+\ifcat *primitive
+\ifCD@ amstex.tex
+\ifctagsplit@ amstex.tex
+\ifdate@ amsppt.sty
+\ifdim *primitive
+\ifDOTS@ amstex.tex
+\ifdt@p plain.tex
+\ifeof *primitive
+\ifextra@ amstex.tex
+\iff plain.tex
+\iffalse *primitive
+\iffinalinfo@ amsppt.sty
+\iffirstitem@ amsppt.sty
+\iffirstref@ amsppt.sty
+\ifgalleys@ amstex.tex
+\ifh@ plain.tex
+\ifhbox *primitive
+\ifhmode *primitive
+\ifin@ amstex.tex
+\ifinalign@ amstex.tex
+\ifinany@ amstex.tex
+\ifinbook@ amsppt.sty
+\ifingather@ amstex.tex
+\ifinner *primitive
+\ifissue@ amsppt.sty
+\ifjour@ amsppt.sty
+\ifkey@ amsppt.sty
+\ifkeybin@ amstex.tex
+\iflastref@ amsppt.sty
+\iflimits@ amstex.tex
+\iflimtoken@ amstex.tex
+\iflogo@ amsppt.sty
+\ifmacro@ amstex.tex
+\ifmanyby@ amsppt.sty
+\ifmath@ amstex.tex
+\ifmathbin@ amstex.tex
+\ifmathch@ amstex.tex
+\ifmathrel@ amstex.tex
+\ifmathtags@ amstex.tex
+\ifmeasuring@ amstex.tex
+\ifmid@ amstex.tex
+\ifmmode *primitive
+\ifnextRunin@ amsppt.sty
+\ifno@ amsppt.sty
+\ifnofrills@ amsppt.sty
+\ifnojourinfo@ amsppt.sty
+\ifnot@ amstex.tex
+\ifnum *primitive
+\ifodd *primitive
+\ifonecr@ amstex.tex
+\ifp@ge plain.tex
+\ifpage@ amsppt.sty
+\ifpages@ amsppt.sty
+\ifpaper@ amsppt.sty
+\ifpaperinfo@ amsppt.sty
+\ifprevbook@ amsppt.sty
+\ifprevinbook@ amsppt.sty
+\ifprevjour@ amsppt.sty
+\ifproclaim@ amsppt.sty
+\ifpubl@ amsppt.sty
+\ifpubladdr@ amsppt.sty
+\ifr@ggedbottom plain.tex
+\ifrightdelim@ amstex.tex
+\ifsyntax@ amstex.tex
+\iftagin@ amstex.tex
+\iftagsleft@ amstex.tex
+\ifthanks@ amsppt.sty
+\iftoappear@ amsppt.sty
+\iftop@ amstex.tex
+\iftopfolded@ amstex.tex
+\iftrue *primitive
+\ifus@ plain.tex
+\ifv@ plain.tex
+\ifvbox *primitive
+\ifvmode *primitive
+\ifvoid *primitive
+\ifvol@ amsppt.sty
+\ifx *primitive
+\ifxat@ amstex.tex
+\ifyr@ amsppt.sty
+\ifzerocr@ amstex.tex
+\ignorespaces *primitive
+\iiiint amstex.tex
+\iiint amstex.tex
+\iint amstex.tex
+\ilimits@ amstex.tex
+\Im plain.tex
+\imath plain.tex
+\immediate *primitive
+\impliedby amstex.tex
+\implies amstex.tex
+\in plain.tex
+\in@ amstex.tex
+\in@@ amstex.tex
+\in@false amstex.tex
+\in@true amstex.tex
+\inaccessible not a defined \cs; occurs only in error messages
+\inalign@true amstex.tex
+\inany@true amstex.tex
+\inbook amsppt.sty
+\inbook@false amsppt.sty
+\inbook@true amsppt.sty
+\indent *primitive
+\inf plain.tex
+\infty plain.tex
+\ingather@true amstex.tex
+\injlim amstex.tex
+\innerendproclaim@ amsppt.sty
+\innerhdotsfor amstex.tex
+\innerproclaim@ amsppt.sty
+\input *primitive
+\ins@ amstex.tex
+\insc@unt plain.tex
+\insert *primitive
+\insertpenalties *primitive
+\insplit@ amstex.tex
+\int plain.tex
+\intdots@ amstex.tex
+\interdisplaylinepenalty plain.tex
+\interfootnotelinepenalty plain.tex
+\interlinepenalty *primitive
+\intertext amstex.tex
+\intertext@ amstex.tex
+\intic@ amstex.tex
+\intii amstex.tex
+\intiii amstex.tex
+\intiv amstex.tex
+\intkern@ amstex.tex
+\intno@ amstex.tex
+\intop plain.tex
+\ints@ amstex.tex
+\ints@@ amstex.tex
+\ints@@@ amstex.tex
+\Invalid@ amstex.tex
+\iota plain.tex
+\issue amsppt.sty
+\issue@false amsppt.sty
+\issuebox@ amsppt.sty
+\it plain.tex
+\italic amstex.tex
+\italic@ amstex.tex
+\italic@@ amstex.tex
+\item plain.tex
+\item@ amsppt.sty
+\itemitem plain.tex
+\iterate plain.tex
+\itfam plain.tex
+\j plain.tex
+\jmath plain.tex
+\jobname *primitive
+\joinrel plain.tex
+\jot plain.tex
+\jour amsppt.sty
+\jour@false amsppt.sty
+\jour@true amsppt.sty
+\jourbox@ amsppt.sty
+\kappa plain.tex
+\ker plain.tex
+\kern *primitive
+\key amsppt.sty
+\key@false amsppt.sty
+\keybin@ amstex.tex
+\keybin@false amstex.tex
+\keybin@true amstex.tex
+\keybox@ amsppt.sty
+\keywords amsppt.sty
+\keywords@ amsppt.sty
+\l amstex.tex (left, in \matrix)
+\l plain.tex
+\L plain.tex
+\lalign@ amstex.tex
+\lambda plain.tex
+\Lambda plain.tex
+\land plain.tex
+\langle plain.tex
+\lastbox *primitive
+\lastkern *primitive
+\lastpenalty *primitive
+\lastref@false amsppt.sty
+\lastref@true amsppt.sty
+\lastskip *primitive
+\lbrace plain.tex
+\lbrace@ amstex.tex
+\lbrack plain.tex
+\lccode *primitive
+\lceil plain.tex
+\lcfrac amstex.tex
+\ldelim@ amstex.tex
+\ldotp plain.tex
+\ldots plain.tex
+\le plain.tex
+\leaders *primitive
+\leavevmode plain.tex
+\left *primitive
+\leftarrow plain.tex
+\Leftarrow plain.tex
+\leftarrowfill plain.tex
+\leftharpoondown plain.tex
+\leftharpoonup plain.tex
+\leftline plain.tex
+\leftrightarrow plain.tex
+\Leftrightarrow plain.tex
+\leftroot amstex.tex
+\leftroot@ amstex.tex
+\leftskip *primitive
+\leftskip@ amsppt.sty
+\lendmultline@ amstex.tex
+\lendsplit@ amstex.tex
+\leq plain.tex
+\leqalignno plain.tex
+\leqno *primitive
+\less amstex.tex
+\let *primitive
+\Let@ amstex.tex
+\lfloor plain.tex
+\lg plain.tex
+\lgather@ amstex.tex
+\lgroup plain.tex
+\lhook plain.tex
+\lim plain.tex
+\liminf plain.tex
+\limits *primitive
+\limits@false amstex.tex
+\limits@true amstex.tex
+\LimitsOnInts amstex.tex
+\LimitsOnNames amstex.tex
+\LimitsOnSums amstex.tex
+\limsup plain.tex
+\limtoken@false amstex.tex
+\limtoken@true amstex.tex
+\line plain.tex
+\linebreak amstex.tex
+\lineht@ amstex.tex
+\linepenalty *primitive
+\lineskip *primitive
+\lineskiplimit *primitive
+\ll plain.tex
+\llap plain.tex
+\llap@ amstex.tex
+\lmmeasure@ amstex.tex
+\lmoustache plain.tex
+\lmultline@ amstex.tex
+\lmultline@@ amstex.tex
+\lmultline@@@ amstex.tex
+\ln plain.tex
+\lnot plain.tex
+\log plain.tex
+\logo@false amsppt.sty
+\logo@true amsppt.sty
+\long *primitive
+\longleftarrow plain.tex
+\Longleftarrow plain.tex
+\longleftrightarrow plain.tex
+\Longleftrightarrow plain.tex
+\longmapsto plain.tex
+\Longrightarrow plain.tex
+\longrightarrow plain.tex
+\loop plain.tex
+\looseness *primitive
+\lor plain.tex
+\lower *primitive
+\lowercase *primitive
+\lq plain.tex
+\ltwidth@ amstex.tex
+\lwidth@ amstex.tex
+\m@g plain.tex
+\m@ketabbox plain.tex
+\m@ne plain.tex
+\m@th plain.tex
+\macro@ amstex.tex
+\macro@@ amstex.tex
+\macro@false amstex.tex
+\macro@true amstex.tex
+\mag *primitive
+\magnification plain.tex
+\magstep plain.tex
+\magstephalf plain.tex
+\makeacc@ amstex.tex
+\Makeacc@ amstex.tex
+\makefootline plain.tex
+\makefootnote@ amsppt.sty
+\makeheadline plain.tex
+\makeph@nt plain.tex
+\makesm@sh plain.tex (redefined in amstex.tex)
+\maketag@ amstex.tex
+\Maketag@ amstex.tex
+\manyby amsppt.sty
+\manyby@false amsppt.sty
+\manyby@true amsppt.sty
+\mapsto plain.tex
+\mapstochar plain.tex
+\mark *primitive
+\math@ amstex.tex
+\math@false amstex.tex
+\math@true amstex.tex
+\mathaccent *primitive
+\mathaccent@ amstex.tex
+\mathbin *primitive
+\mathbin@ amstex.tex
+\mathbin@false amstex.tex
+\mathbin@true amstex.tex
+\mathbreak amstex.tex
+\mathch@ amstex.tex
+\mathch@false amstex.tex
+\mathch@true amstex.tex
+\mathchar *primitive
+\mathchardef *primitive
+\mathchoice *primitive
+\mathclose *primitive
+\mathcode *primitive
+\mathhexbox plain.tex
+\mathinner *primitive
+\mathmodeerr@ amstex.tex
+\mathop *primitive
+\mathopen *primitive
+\mathord *primitive
+\mathpalette plain.tex
+\mathph@nt plain.tex
+\mathpunct *primitive
+\mathrel *primitive
+\mathrel@ amstex.tex
+\mathrel@false amstex.tex
+\mathrel@true amstex.tex
+\mathsm@sh plain.tex (redefined in amstex.tex)
+\mathstrut plain.tex
+\Mathstrut@ amstex.tex
+\Mathstrut@noalign amstex.tex
+\mathsurround *primitive
+\mathtags@false amstex.tex
+\mathtags@true amstex.tex
+\matrix plain.tex (redefined in amstex.tex)
+\max plain.tex
+\maxbysamerule@ amsppt.sty
+\maxdeadcycles *primitive
+\maxdepth *primitive
+\maxdimen plain.tex
+\maxlwidth@ amstex.tex
+\maxrwidth@ amstex.tex
+\mdots@ amstex.tex
+\mdots@@ amstex.tex
+\meaning *primitive
+\meaning@ amstex.tex
+\meaning@@ amstex.tex
+\measure@ amstex.tex
+\measuring@false amstex.tex
+\measuring@true amstex.tex
+\medbreak plain.tex
+\medmuskip *primitive
+\medpagebreak amstex.tex
+\medskip plain.tex
+\medskipamount plain.tex
+\medspace amstex.tex
+\message *primitive
+\mid plain.tex (symbol)
+\mid@false amstex.tex
+\mid@true amstex.tex
+\midinsert plain.tex
+\midspace amstex.tex
+\min plain.tex
+\minaw@ amstex.tex
+\minCDarrowwidth amstex.tex
+\minCDaw@ amstex.tex
+\mit plain.tex (undefined in amstex.tex)
+\mkern *primitive
+\mlineht@ amstex.tex
+\mltagbox@ amstex.tex
+\mlwidth@ amstex.tex
+\mod amstex.tex
+\models plain.tex
+\month *primitive
+\moreref amsppt.sty
+\moveleft *primitive
+\moveright *primitive
+\mp plain.tex
+\mrwidth@ amstex.tex
+\mscount plain.tex
+\mskip *primitive
+\msx@ amstex.tex
+\msxfam amstex.tex
+\msy@ amstex.tex
+\msyfam amstex.tex
+\mtagbox@ amstex.tex
+\mu plain.tex
+\MultC@ltrue multcol.out
+\multilimits@ amstex.tex
+\multint@ amstex.tex
+\multintlimits@ amstex.tex
+\multiply *primitive
+\multispan plain.tex
+\multispan@ amstex.tex
+\multline amstex.tex
+\multline@ amstex.tex
+\multlinegap amstex.tex
+\MultlineGap amstex.tex
+\multlinegap@ amstex.tex
+\multlinetaggap@ amstex.tex
+\muskip *primitive
+\muskipdef *primitive
+\mwidth@ amstex.tex
+\n@space plain.tex
+\nabla plain.tex
+\narrower plain.tex
+\natural plain.tex
+\ne plain.tex
+\nearrow plain.tex
+\neg plain.tex
+\negintic@ amstex.tex
+\negmedspace amstex.tex
+\negthickspace amstex.tex
+\negthinspace plain.tex
+\neq plain.tex
+\newbox plain.tex
+\newbox@ amstex.tex
+\newcodes@ amstex.tex
+\newcount plain.tex
+\newdimen plain.tex
+\newfam plain.tex
+\newhelp plain.tex
+\newif plain.tex
+\newinsert plain.tex
+\newline amstex.tex
+\newlinechar *primitive
+\newmuskip plain.tex
+\newread plain.tex
+\newskip plain.tex
+\newtoks plain.tex
+\newtoks@ amstex.tex
+\newwrite plain.tex
+\next plain.tex
+\next@ amstex.tex
+\nextii@ amstex.tex
+\nextiii@ amstex.tex
+\nextiv@ amstex.tex
+\nextix@ amstex.tex
+\nextRunin@ amsppt.sty
+\nextRunin@false amsppt.sty
+\nextv@ amstex.tex
+\nextvi@ amstex.tex
+\nextvii@ amstex.tex
+\nextviii@ amstex.tex
+\ni plain.tex
+\ninebf amsppt.sty
+\ninei amsppt.sty
+\nineit amsppt.sty
+\ninerm amsppt.sty
+\ninesl amsppt.sty
+\ninesy amsppt.sty
+\nlimits@ amstex.tex
+\no amsppt.sty
+\no@false amsppt.sty
+\noaccents@ amstex.tex
+\noalign *primitive
+\NoBlackBoxes amstex.tex
+\nobox@ amsppt.sty
+\nobreak plain.tex
+\noexpand *primitive
+\nofrills amsppt.sty
+\nofrills@ amsppt.sty
+\nofrills@false amsppt.sty
+\nofrills@true amsppt.sty
+\noguidelines amsppt.sty
+\noindent *primitive
+\nointerlineskip plain.tex
+\nojourinfo@false amsppt.sty
+\nojourinfo@true amsppt.sty
+\nolimits *primitive
+\NoLimitsOnInts amstex.tex
+\NoLimitsOnNames amstex.tex
+\NoLimitsOnSums amstex.tex
+\nolinebreak amstex.tex
+\nologo amsppt.sty
+\nomathbreak amstex.tex
+\nomultlinegap amstex.tex
+\nondmatherr@ amstex.tex
+\nonfrenchspacing plain.tex
+\nonmatherr@ amstex.tex
+\nonscript *primitive
+\nonstopmode *primitive
+\nonvmodeerr@ amstex.tex
+\nopagebreak amstex.tex
+\nopagenumbers plain.tex
+\nopages@ amstex.tex
+\normalbaselines plain.tex
+\normalbaselineskip plain.tex
+\normalbottom plain.tex
+\normallineskip plain.tex
+\normallineskiplimit plain.tex
+\not plain.tex
+\not@ amstex.tex
+\not@false amstex.tex
+\not@true amstex.tex
+\notin plain.tex
+\nu plain.tex
+\null plain.tex
+\nulldelimiterspace *primitive
+\number *primitive
+\nwarrow plain.tex
+\o plain.tex
+\O plain.tex
+\oalign plain.tex
+\obeylines plain.tex
+\obeyspaces plain.tex
+\odot plain.tex
+\oe plain.tex
+\OE plain.tex
+\of plain.tex
+\offinterlineskip plain.tex
+\oint plain.tex
+\ointop plain.tex
+\oldcodes@ amstex.tex
+\oldnos amstex.tex
+\oldstyle plain.tex (undefined in amstex.tex)
+\omega plain.tex
+\Omega plain.tex
+\ominus plain.tex
+\omit *primitive
+\onecr@false amstex.tex
+\onecr@true amstex.tex
+\onlydmatherr@ amstex.tex
+\ooalign plain.tex
+\openin *primitive
+\openout *primitive
+\openup plain.tex
+\operatorname amstex.tex
+\operatornamewithlimits amstex.tex
+\oplus plain.tex
+\or *primitive
+\oslash plain.tex
+\otimes plain.tex
+\outer *primitive
+\output *primitive
+\output@ amsppt.sty
+\outputpenalty *primitive
+\outsplit@ amstex.tex
+\over *primitive
+\overarrow amstex.tex
+\overbrace plain.tex
+\overfullrule *primitive
+\overleftarrow plain.tex
+\overleftarrow@ amstex.tex
+\overleftrightarrow amstex.tex
+\overleftrightarrow@ amstex.tex
+\overline *primitive
+\overline@ amstex.tex
+\overlong amsppt.sty
+\overlong@ amsppt.sty
+\overrightarrow plain.tex
+\overrightarrow@ amstex.tex
+\overset amstex.tex
+\oversetbrace amstex.tex
+\overwithdelims *primitive
+\owns plain.tex
+\P plain.tex
+\p@ plain.tex
+\P@ amstex.tex
+\p@gefalse plain.tex
+\p@getrue plain.tex
+\p@renwd plain.tex
+\page amsppt.sty
+\page@false amsppt.sty
+\page@true amsppt.sty
+\pagebody plain.tex
+\pagebreak amstex.tex
+\pagecontents plain.tex
+\pagedepth *primitive
+\pagefilllstretch *primitive
+\pagefillstretch *primitive
+\pagefilstretch *primitive
+\pagegoal *primitive
+\pageheight amstex.tex
+\pageinsert plain.tex
+\pageno plain.tex
+\pages amsppt.sty
+\pages@false amsppt.sty
+\pagesbox@ amsppt.sty
+\pageshrink *primitive
+\pagestretch *primitive
+\pagetotal *primitive
+\pagewidth amstex.tex
+\paper amsppt.sty
+\paper@false amsppt.sty
+\paperbox@ amsppt.sty
+\paperinfo amsppt.sty
+\paperinfo@false amsppt.sty
+\paperinfobox@ amsppt.sty
+\par *primitive
+\par@ amsppt.sty
+\parallel plain.tex
+\parfillskip *primitive
+\parindent *primitive
+\parshape *primitive
+\parskip *primitive
+\partial plain.tex
+\patterns *primitive
+\pausing *primitive
+\penalty *primitive
+\penalty@ amsppt.sty
+\perp plain.tex
+\ph@nt plain.tex
+\phantom plain.tex
+\phi plain.tex
+\Phi plain.tex
+\pi plain.tex
+\Pi plain.tex
+\plaincdots@ amstex.tex
+\plainfootnote amstex.tex (undefined)
+\plainitem@ amsppt.sty
+\plainldots@ amstex.tex
+\plainoutput plain.tex
+\plainproclaim amstex.tex
+\plainroot@ amstex.tex
+\pm plain.tex
+\pmatrix plain.tex
+\pmb amstex.tex
+\pmb@ amstex.tex
+\pmb@@ amstex.tex
+\pmbraise@ amstex.tex
+\pmod plain.tex
+\pod amstex.tex
+\pointcount@ amstex.tex
+\pointsize@ amsppt.sty
+\postdisplaypenalty *primitive
+\ppunbox@ amsppt.sty
+\Pr plain.tex
+\pr@@@s plain.tex
+\pr@@@t plain.tex
+\pr@m@s plain.tex
+\preabstract amsppt.sty
+\preaffil amsppt.sty
+\preamble@ amstex.tex
+\Preamble@ amstex.tex
+\preamble@@ amstex.tex
+\preauthor amsppt.sty
+\prec plain.tex
+\preceq plain.tex
+\predate amsppt.sty
+\predefine amstex.tex
+\predisplaypenalty *primitive
+\predisplaysize *primitive
+\preloaded plain.tex
+\preloaded@ amstex.tex
+\prepaper amsppt.sty
+\prepunct@ amsppt.sty
+\pretend amstex.tex
+\pretitle amsppt.sty
+\pretolerance *primitive
+\prevdepth *primitive
+\prevgraf *primitive
+\previnbook@false amsppt.sty
+\previnbook@true amsppt.sty
+\prevjour@false amsppt.sty
+\prevjour@true amsppt.sty
+\prim@s plain.tex
+\prime plain.tex
+\prime@ amstex.tex
+\printoptions amstex.tex
+\proclaim plain.tex (undefined in amstex.tex)
+\proclaim (redefined in amsppt.sty)
+\proclaim@ amsppt.sty
+\proclaim@false amsppt.sty
+\proclaim@true amsppt.sty
+\prod plain.tex
+\prod@ amstex.tex
+\projlim amstex.tex
+\propto plain.tex
+\psi plain.tex
+\Psi plain.tex
+\publ amsppt.sty
+\publ@false amsppt.sty
+\publaddr amsppt.sty
+\publaddr@false amsppt.sty
+\publaddrbox@ amsppt.sty
+\publbox@ amsppt.sty
+\qed amsppt.sty
+\qopname@ amstex.tex
+\qopnamewl@ amstex.tex
+\qquad plain.tex
+\quad plain.tex
+\r amstex.tex
+\r@@t plain.tex (modified by amstex.tex)
+\r@ggedbottomfalse plain.tex
+\r@ggedbottomtrue plain.tex
+\radical *primitive
+\raggedbottom plain.tex
+\raggedright plain.tex
+\raise *primitive
+\ralign@ amstex.tex
+\rangle plain.tex
+\rbrace plain.tex
+\rbrace@ amstex.tex
+\rbrack plain.tex
+\rceil plain.tex
+\rcfrac amstex.tex
+\rdelim@ amstex.tex
+\Re plain.tex
+\read *primitive
+\redefine amstex.tex
+\ref amsppt.sty
+\ref@ amsppt.sty
+\refdef@ amsppt.sty
+\Refs amsppt.sty
+\refskip@ amstex.tex
+\relax *primitive
+\relaxnext@ amstex.tex
+\relbar plain.tex
+\Relbar plain.tex
+\relpenalty *primitive
+\removelastskip plain.tex
+\rendmultline@ amstex.tex
+\rendsplit@ amstex.tex
+\repeat plain.tex
+\ResetBuffer amstex.tex
+\retry@AmSfalse amstex.tex
+\retry@AmStrue amstex.tex
+\rfloor plain.tex
+\rgather@ amstex.tex
+\rgroup plain.tex
+\rho plain.tex
+\rhook plain.tex
+\right *primitive
+\rightappend@ amstex.tex
+\rightarrow plain.tex
+\Rightarrow plain.tex
+\rightarrowfill plain.tex
+\rightdelim@ amstex.tex
+\rightdelim@false amstex.tex
+\rightdelim@true amstex.tex
+\rightharpoondown plain.tex
+\rightharpoonup plain.tex
+\rightleftharpoons plain.tex
+\rightline plain.tex
+\rightskip *primitive
+\rlap plain.tex
+\rlap@ amstex.tex
+\rlh@ plain.tex
+\rm plain.tex
+\rmfam amstex.tex
+\rmmeasure@ amstex.tex
+\rmoustache plain.tex
+\rmultline@ amstex.tex
+\rmultline@@ amstex.tex
+\rmultline@@@ amstex.tex
+\rom@ amstex.tex
+\rom@@ amstex.tex
+\roman amstex.tex
+\roman@ amstex.tex
+\roman@@ amstex.tex
+\romannumeral *primitive
+\root plain.tex
+\rootbox plain.tex
+\roster amsppt.sty
+\rostercount@ amsppt.sty
+\rosterhangafter@ amsppt.sty
+\rosteritem@ amsppt.sty
+\rq plain.tex
+\rtwidth@ amstex.tex
+\runinitem amsppt.sty
+\Runinitem amsppt.sty
+\runinitem@ amsppt.sty
+\rwidth@ amstex.tex
+\S plain.tex
+\S@ amstex.tex
+\s@tcols plain.tex
+\s@tt@b plain.tex
+\savealignat@ amstex.tex
+\saveskip@ amstex.tex
+\sb plain.tex
+\Sb amstex.tex
+\scriptfont *primitive
+\scriptscriptfont *primitive
+\scriptscriptstyle *primitive
+\scriptspace *primitive
+\scriptstyle *primitive
+\scrollmode *primitive
+\searrow plain.tex
+\sec plain.tex
+\setbox *primitive
+\setminus plain.tex
+\setpunct@ amsppt.sty
+\sett@b plain.tex
+\settabs plain.tex
+\sevenbf plain.tex
+\seveni plain.tex
+\sevenmsx amstex.tex (depends on font availability)
+\sevenmsy amstex.tex (depends on font availability)
+\sevenrm plain.tex
+\sevensy plain.tex
+\sfcode *primitive
+\sharp plain.tex
+\shave amstex.tex
+\shipout *primitive
+\shoveleft amstex.tex
+\shoveright amstex.tex
+\show *primitive
+\showallocations amstex.tex
+\showbox *primitive
+\showboxbreadth *primitive
+\showboxdepth *primitive
+\showhyphens plain.tex
+\showlists *primitive
+\showthe *primitive
+\sideset amstex.tex
+\sigma plain.tex
+\Sigma plain.tex
+\sim plain.tex
+\simeq plain.tex
+\sin plain.tex
+\sinh plain.tex
+\sixbf amsppt.sty
+\sixi amsppt.sty
+\sixrm amsppt.sty
+\sixsy amsppt.sty
+\sixt@@n plain.tex
+\skew plain.tex
+\skewchar *primitive
+\skewcharcount@ amstex.tex
+\skip *primitive
+\skip@ plain.tex
+\skipdef *primitive
+\sl plain.tex
+\slanted amstex.tex
+\slanted@ amstex.tex
+\slanted@@ amstex.tex
+\slash plain.tex
+\sldl@ amstex.tex
+\slfam plain.tex
+\slimits@ amstex.tex
+\smallbreak plain.tex
+\smallcaptionwidth@ amstex.tex
+\smallint plain.tex
+\smallmatrix amstex.tex
+\smallpagebreak amstex.tex
+\smallskip plain.tex
+\smallskipamount plain.tex
+\smash plain.tex (redefined in amstex.tex)
+\smash@ amstex.tex
+\smc amstex.tex % amsppt.sty
+\smile plain.tex
+\snug amstex.tex
+\sp plain.tex
+\Sp amstex.tex
+\sp@n plain.tex
+\space plain.tex
+\space@ amstex.tex
+\spacefactor *primitive
+\spacehdots amstex.tex
+\spaceinnerdots amstex.tex
+\spaces@ amstex.tex
+\spaces@@ amstex.tex
+\spaceskip *primitive
+\spacute amstex.tex
+\spadesuit plain.tex
+\span *primitive
+\spbar amstex.tex
+\spbreve amstex.tex
+\spcheck amstex.tex
+\spddddot amstex.tex
+\spdddot amstex.tex
+\spddot amstex.tex
+\spdot amstex.tex
+\special *primitive
+\spgrave amstex.tex
+\sphat amstex.tex
+\split amstex.tex
+\split@ amstex.tex
+\splitbotmark *primitive
+\splitfirstmark *primitive
+\splitmaxdepth *primitive
+\splittopskip *primitive
+\spreadlines amstex.tex
+\spreadmatrixlines amstex.tex
+\spreadmlines@ amstex.tex
+\sptilde amstex.tex
+\spvec amstex.tex
+\sqcap plain.tex
+\sqcup plain.tex
+\sqrt plain.tex
+\sqsupseteq plain.tex
+\srdr@ amstex.tex
+\ss plain.tex
+\ssize amstex.tex
+\sssize amstex.tex
+\star plain.tex
+\string *primitive
+\string@ amstex.tex
+\strip@ amstex.tex
+\strut plain.tex
+\strut@ amstex.tex
+\strutbox plain.tex
+\strutbox@ amstex.tex
+\styname amsppt.sty
+\styversion amsppt.sty
+\subheading amsppt.sty
+\subheading@ amsppt.sty
+\subjclass amsppt.sty
+\subjclass@ amsppt.sty
+\subset plain.tex
+\subseteq plain.tex
+\succ plain.tex
+\succeq plain.tex
+\sum plain.tex
+\sum@ amstex.tex
+\sup plain.tex
+\supereject plain.tex
+\supset plain.tex
+\supseteq plain.tex
+\surd plain.tex
+\swarrow plain.tex
+\syntax amstex.tex
+\syntax@true amstex.tex
+\t plain.tex
+\t@bb@x plain.tex
+\t@bbox plain.tex
+\tabalign plain.tex
+\tabs plain.tex
+\tabsdone plain.tex
+\tabskip *primitive
+\tabsyet plain.tex
+\tag amstex.tex
+\tagform@ amstex.tex
+\tagin@ amstex.tex
+\tagin@false amstex.tex
+\tagin@true amstex.tex
+\TagsAsMath amstex.tex
+\TagsAsText amstex.tex
+\tagsleft@false amstex.tex
+\tagsleft@true amstex.tex
+\TagsOnLeft amstex.tex
+\TagsOnRight amstex.tex
+\tan plain.tex
+\tanh plain.tex
+\tau plain.tex
+\tbinom amstex.tex
+\tdots@ amstex.tex
+\tenbf plain.tex
+\tenbig@ amsppt.sty
+\tenex plain.tex
+\teni plain.tex
+\tenit plain.tex
+\tenmsx amstex.tex (depends on font availability)
+\tenmsy amstex.tex (depends on font availability)
+\tenpoint amsppt.sty
+\tenrm plain.tex
+\tensl plain.tex
+\tensmc amsppt.sty
+\tensy plain.tex
+\tentt plain.tex
+\TeX plain.tex
+\text amstex.tex
+\text@ amstex.tex
+\text@@ amstex.tex
+\textdef@ amstex.tex
+\textdef@@ amstex.tex
+\textfont *primitive
+\textfont@ amstex.tex
+\textfonti amstex.tex
+\textfontii amstex.tex
+\textindent plain.tex
+\textstyle *primitive
+\tfrac amstex.tex
+\thanks amsppt.sty
+\thanks@ amsppt.sty
+\thanks@true amsppt.sty
+\the *primitive
+\theabstract@ amsppt.sty
+\thecaption@ amstex.tex
+\thedots@ amstex.tex
+\thefam@ amstex.tex
+\thefootnotemark amsppt.sty
+\thekeywords@ amsppt.sty
+\therosteritem amsppt.sty
+\theskewchar@ amstex.tex
+\thespace@ amstex.tex
+\thesubjclass@ amsppt.sty
+\theta plain.tex
+\Theta plain.tex
+\thetag amstex.tex
+\thickfrac amstex.tex
+\thickfracwithdelims amstex.tex
+\thickmuskip *primitive
+\thickness amstex.tex
+\thickspace amstex.tex
+\thinmuskip *primitive
+\thinspace plain.tex
+\thr@@ plain.tex
+\tie amstex.tex
+\tilde plain.tex
+\Tilde amstex.tex
+\tildeaccent amstex.tex
+\time *primitive
+\times plain.tex
+\title amsppt.sty
+\titlebox@ amsppt.sty
+\to plain.tex
+\toappear amsppt.sty
+\toappear@false amsppt.sty
+\toappear@true amsppt.sty
+\toks *primitive
+\toks@ plain.tex
+\toks@@ amstex.tex
+\toksdef *primitive
+\tolerance *primitive
+\top plain.tex
+\top@false amstex.tex
+\top@true amstex.tex
+\topaligned amstex.tex
+\topfolded@false amstex.tex
+\topfolded@true amstex.tex
+\topfoldedtext amstex.tex
+\topins plain.tex
+\topinsert plain.tex
+\topmark *primitive
+\topmatter amsppt.sty
+\TopOrBottomTagsOnSplits amstex.tex
+\topshave amstex.tex
+\topskip *primitive
+\topsmash amstex.tex
+\topspace amstex.tex
+\totwidth@ amstex.tex
+\tracingall plain.tex
+\tracingcommands *primitive
+\tracinglostchars *primitive
+\tracingmacros *primitive
+\tracingonline *primitive
+\tracingoutput *primitive
+\tracingpages *primitive
+\tracingparagraphs *primitive
+\tracingrestores *primitive
+\tracingstats *primitive
+\triangle plain.tex
+\triangleleft plain.tex
+\triangleright plain.tex
+\tsize amstex.tex
+\tt plain.tex
+\ttfam plain.tex
+\ttraggedright plain.tex
+\tw@ plain.tex
+\u plain.tex
+\uccode *primitive
+\uchyph *primitive
+\unbracefonts@ amstex.tex
+\undefined plain.tex
+\undefined@ amstex.tex
+\underarrow amstex.tex
+\underbar plain.tex
+\underbrace plain.tex
+\underleftarrow amstex.tex
+\underleftarrow@ amstex.tex
+\underleftrightarrow amstex.tex
+\underleftrightarrow@ amstex.tex
+\underline *primitive
+\underline@ amstex.tex
+\underrightarrow amstex.tex
+\underrightarrow@ amstex.tex
+\underscore amstex.tex
+\underset amstex.tex
+\undersetbrace amstex.tex
+\unhbox *primitive
+\unhcopy *primitive
+\unkern *primitive
+\unpenalty *primitive
+\unskip *primitive
+\unvbox *primitive
+\unvcopy *primitive
+\uparrow plain.tex
+\Uparrow plain.tex
+\upbracefill plain.tex
+\updownarrow plain.tex
+\Updownarrow plain.tex
+\uplus plain.tex
+\uppercase *primitive
+\uproot amstex.tex
+\uproot@ amstex.tex
+\upsilon plain.tex
+\Upsilon plain.tex
+\us@false plain.tex
+\us@true plain.tex
+\usualspace amsppt.sty
+\usualspace@ amsppt.sty
+\v plain.tex
+\v@false plain.tex
+\v@true plain.tex
+\vadjust *primitive
+\valign *primitive
+\varDelta amstex.tex
+\varepsilon plain.tex
+\varGamma amstex.tex
+\varinjlim amstex.tex
+\varLambda amstex.tex
+\varliminf amstex.tex
+\varlimsup amstex.tex
+\varOmega amstex.tex
+\varphi plain.tex
+\varPhi amstex.tex
+\varpi plain.tex
+\varPi amstex.tex
+\varprojlim amstex.tex
+\varPsi amstex.tex
+\varrho plain.tex
+\varsigma plain.tex
+\varSigma amstex.tex
+\vartheta plain.tex
+\varTheta amstex.tex
+\varUpsilon amstex.tex
+\varXi amstex.tex
+\vbadness *primitive
+\vbox *primitive
+\vcenter *primitive
+\vcorrection amstex.tex
+\vdash plain.tex
+\vdots plain.tex
+\vec plain.tex
+\Vec amstex.tex
+\vee plain.tex
+\Vert plain.tex
+\vert plain.tex
+\vfil *primitive
+\vfill *primitive
+\vfilneg *primitive
+\vfootnote plain.tex
+\vfuzz *primitive
+\vgl@ plain.tex
+\vglue plain.tex
+\vmatrix amstex.tex
+\Vmatrix amstex.tex
+\vmodeerr@ amstex.tex
+\vnonvmode@ amstex.tex
+\voffset *primitive
+\voidb@x plain.tex
+\vol amsppt.sty
+\vol@false amsppt.sty
+\volbox@ amsppt.sty
+\vphantom plain.tex
+\vrule *primitive
+\vsize *primitive
+\vskip *primitive
+\vspace amstex.tex
+\vspace@ amstex.tex
+\vsplit *primitive
+\vss *primitive
+\vtop *primitive
+\W@ amstex.tex
+\wd *primitive
+\wedge plain.tex
+\widehat plain.tex
+\widetilde plain.tex
+\widowpenalty *primitive
+\wlog plain.tex
+\wp plain.tex
+\wr plain.tex
+\write *primitive
+\xalignat amstex.tex
+\xalignat@ amstex.tex
+\xat@false amstex.tex
+\xat@true amstex.tex
+\xdef *primitive
+\xi plain.tex
+\Xi plain.tex
+\xleaders *primitive
+\xspaceskip *primitive
+\xxalignat amstex.tex
+\xxalignat@ amstex.tex
+\xxattag@ amstex.tex
+\year *primitive
+\yr amsppt.sty
+\yr@false amsppt.sty
+\yrbox@ amsppt.sty
+\z@ plain.tex
+\z@skip plain.tex
+\zerocr@false amstex.tex
+\zerocr@true amstex.tex
+\zeta plain.tex
+\[ plain.tex
+\] plain.tex
+\^ plain.tex
+\^^I plain.tex
+\^^J amstex.tex
+\^^M plain.tex
+\_ plain.tex
+\` plain.tex
+\{ plain.tex
+\| plain.tex
+\} plain.tex
+\~ plain.tex
diff --git a/Master/texmf-dist/doc/support/asciichart/ascii.tex b/Master/texmf-dist/doc/support/asciichart/ascii.tex
new file mode 100644
index 00000000000..c2f95e7da33
--- /dev/null
+++ b/Master/texmf-dist/doc/support/asciichart/ascii.tex
@@ -0,0 +1,189 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% %%
+%% A S C I I wall chart %%
+%% %%
+%% by Victor Eijkhout %%
+%% eijkhout@cs.utk.edu %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%% Choose your favourite format:
+%
+\nopagenumbers %% 2 lines
+\vsize=28cm %% for PLAIN TeX
+%\documentstyle{article} %% 4 lines for LaTeX
+%\begin{document} %% not that it matters anything,
+%\pagestyle{empty} %% rest of the document
+%\setlength{\textheight}{28cm} %% is 'pure' TeX.
+%%%%%% and don't forget the \bye / \end{document} at the end!! %%%%%%%
+%% fonts
+\font\bitfont=cmr7 \fontdimen3\bitfont=3mm
+\font\codefont=cmr5
+\font\namefont=cmss10 scaled 1200
+\font\titlefont=cmss10 scaled 1440
+\font\commentfont=cmss10
+%% counts and dimens
+\newdimen\thinlinewidth \thinlinewidth=.25mm
+\newdimen\fatlinewidth \fatlinewidth=.5mm
+\newdimen\rowheight \rowheight=1cm
+\newdimen\colwidth \colwidth=1.6cm
+\newdimen\Colwidth \Colwidth=2\colwidth
+ \advance\Colwidth by \thinlinewidth
+\newdimen\topwhite \topwhite=2pt
+\newdimen\botwhite \botwhite=3pt
+\newdimen\leftwhite \leftwhite=2pt
+\newdimen\rightwhite \rightwhite=2pt
+\newcount\rowcount \rowcount=-1 %% note!
+\newcount\colcount \colcount=0
+\newcount\thenumber
+%% tidbits
+\def\\{$\backslash$}
+\def\thinline{\vrule width \thinlinewidth}
+\def\fatline{\vrule width \fatlinewidth}
+\tolerance=10000
+\vbadness=10000
+%% code conversion
+\def\calcnumber{{\multiply\colcount by 16
+ \advance\colcount by \rowcount
+ \global\thenumber=\colcount}}
+\def\deccode{\number\thenumber}
+\def\octcode{{\ifnum\thenumber>63
+ \advance\thenumber by -64
+ \count0=\thenumber \divide\count0 by 8
+ 1\number\count0
+ \else \count0=\thenumber \divide\count0 by 8
+ \ifnum\count0>0 \number\count0 \fi\fi
+ \multiply\count0 by 8
+ \advance\thenumber by -\count0
+ \number\thenumber}}
+\def\hexdigit#1{\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or
+ 8\or 9\or A\or B\or C\or D\or E\or F\or
+ \edef\tmp{\message{illegal hex digit
+ \number#1}}\tmp
+ \fi}
+\def\hexcode{{\count0=\thenumber \divide\count0 by 16
+ \ifnum\count0>0 \hexdigit{\count0}\fi
+ \multiply\count0 by 16
+ \advance\thenumber by -\count0 \count0=\thenumber
+ \hexdigit{\count0}}}
+%% the heading
+\def\threebit#1#2#3{\vbox to 1.2\rowheight{\bitfont
+ \vskip\topwhite
+ \hbox to \colwidth{\hskip\leftwhite#1\hfil}
+ \vfil
+ \hbox to \colwidth{\hfil#2\hfil}
+ \vfil
+ \hbox to \colwidth{\hfil#3\hskip\rightwhite}
+ \vskip\botwhite}}
+\def\comment#1{\vbox to \colwidth{\hrule height 0mm depth .25mm
+ \vfil
+ \hbox to \Colwidth{\commentfont\hfil#1\hfil}
+ \vfil}}
+\def\dcomment#1#2{\vbox to \colwidth{\hrule height 0mm depth .25mm
+ \vfil
+ \hbox to \Colwidth{\commentfont\hfil#1\hfil}
+ \vskip \botwhite
+ \hbox to \Colwidth{\commentfont\hfil#2\hfil}
+ \vfil}}
+\def\bithead{\vbox to \colwidth{\hsize=1.5\colwidth
+ \vskip\topwhite
+ \hbox to \hsize{\commentfont\hfil BITS\hfil}
+ \vfil
+ \hbox to \hsize{\bitfont\ b4 b3 b2 b1 }
+ \vskip\botwhite}}
+%% routines for single chars
+\def\fourbit#1\fb{\vbox to \rowheight{
+ \vfil
+ \hbox to 1.5\colwidth{\bitfont #1\ }
+ \vfil}%
+ \global\advance\rowcount by 1
+ \global\colcount=0}
+\def\asc#1\ii{\calcnumber
+ \vbox to \rowheight{\offinterlineskip
+ \vskip\topwhite
+ \hbox to \colwidth{\codefont
+ \hskip\leftwhite
+ \deccode\hfil}
+ \vfil
+ \hbox to \colwidth{\vrule width 0cm
+ height 10pt depth 2pt
+ \namefont
+ \hfil#1\hfil}
+ \vfil
+ \hbox to \colwidth{\codefont
+ \hskip\leftwhite
+ \hexcode\hfil\octcode
+ \hskip\rightwhite}
+ \vskip\botwhite}%
+ \global\advance\colcount by 1}
+%%%%%%%%%%%%%%%%% and now the table itself %%%%%%%%%%%%%%%%%%%%%%%%%
+\vbox{
+\halign{\fourbit#\fb&\fatline\asc#\ii&\thinline\asc#\ii&
+ \fatline\asc#\ii&\thinline\asc#\ii&
+ \fatline\asc#\ii&\thinline\asc#\ii&
+ \fatline\asc#\ii&\thinline\asc#\ii\fatline\cr
+ \omit&\multispan8 \hskip\thinlinewidth
+ \titlefont ASCII CONTROL CODE CHART\hfil\cr
+ \noalign{\vskip3mm \hrule}
+ \omit\hfil\threebit{b7}{b6}{b5}
+ &\omit\fatline\threebit000&\omit\thinline\threebit001%
+ &\omit\fatline\threebit010&\omit\thinline\threebit011%
+ &\omit\fatline\threebit100&\omit\thinline\threebit101%
+ &\omit\fatline\threebit110&\omit\thinline\threebit111%
+ \fatline\cr
+ \noalign{\vskip-.5mm} %brute force
+ \omit\bithead
+ &\omit\fatline\comment{CONTROL}\span\omit
+ &\omit\fatline\dcomment{SYMBOLS}{NUMBERS}\span\omit
+ &\omit\fatline\comment{UPPER CASE}\span\omit
+ &\omit\fatline\comment{LOWER CASE}\span\omit\hfil\fatline\cr
+ \noalign{\hrule}
+ {} 0 0 0 0&NUL&DLE&SP &0 &@ &P &` &p \cr\noalign{\hrule}
+ {} 0 0 0 1&SOH&DC1&! &1 &A &Q &a &q \cr\noalign{\hrule}
+ {} 0 0 1 0&STX&DC2&" &2 &B &R &b &r \cr\noalign{\hrule}
+ {} 0 0 1 1&ETX&DC3&\# &3 &C &S &c &s \cr\noalign{\hrule}
+ {} 0 1 0 0&EOT&DC4&\$ &4 &D &T &d &t \cr\noalign{\hrule}
+ {} 0 1 0 1&ENQ&NAK&\% &5 &E &U &e &u \cr\noalign{\hrule}
+ {} 0 1 1 0&ACK&SYN&\& &6 &F &V &f &v \cr\noalign{\hrule}
+ {} 0 1 1 1&BEL&ETB&' &7 &G &W &g &w \cr\noalign{\hrule}
+ {} 1 0 0 0&BS &CAN&( &8 &H &X &h &x \cr\noalign{\hrule}
+ {} 1 0 0 1&HT &EM &) &9 &I &Y &i &y \cr\noalign{\hrule}
+ {} 1 0 1 0&LF &SUB&* &: &J &Z &j &z \cr\noalign{\hrule}
+ {} 1 0 1 1&VT &ESC&+ &; &K &[ &k &$\{$\cr \noalign{\hrule}
+ {} 1 1 0 0&FF &FS &, &$<$&L &\\ &l &$|$ \cr \noalign{\hrule}
+ {} 1 1 0 1&CR &GS &$-$ &= &M &] &m &$\}$\cr \noalign{\hrule}
+ {} 1 1 1 0&SO &RS &. &$>$&N &\char94 &n &\char126\cr
+ \noalign{\hrule}
+ {} 1 1 1 1&SI &US &/ &? &O &\_$\!$\_&o &DEL\cr\noalign{\hrule}
+ \noalign{\vskip2mm}
+ \omit&\omit\namefont \hfil LEGEND:\hfil \span\omit
+ &\multispan4\hskip\fatlinewidth
+ \vtop{\vskip-10pt\hbox{\vrule
+ \vbox to \rowheight{
+ \offinterlineskip
+ \hrule\vskip \topwhite
+ \hbox to \colwidth{\codefont\hskip\leftwhite
+ dec\hfil}
+ \vfil
+ \hbox to \colwidth{\namefont\hfil CHAR\hfil}
+ \vfil
+ \hbox to \colwidth{\codefont\hskip\leftwhite
+ hex\hfil oct
+ \hskip\rightwhite}
+ \vskip\botwhite
+ \hrule }%
+ \vrule}}
+ \hfil
+ &\multispan2\bitfont \hskip\fatlinewidth
+ \vtop{\vskip-8pt\baselineskip=8.5pt
+ \hbox{Victor Eijkhout}
+ \rlap{Dept. of Comp. Sci.}
+ \rlap{University of Tennessee}
+ \rlap{Knoxville TN 37996, USA}
+ }\hfil\cr
+ }
+}
+%%%%%%%%%%%%%%%%%%%%%%% and that's it folks! %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\bye %% PLAIN TeX
+%\end{document} %% LaTeX
diff --git a/Master/texmf-dist/doc/support/patgen/patgen2.tutorial b/Master/texmf-dist/doc/support/patgen/patgen2.tutorial
new file mode 100644
index 00000000000..5194083aa2c
--- /dev/null
+++ b/Master/texmf-dist/doc/support/patgen/patgen2.tutorial
@@ -0,0 +1,331 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% A SMALL TUTORIAL ON THE MULTILINGUAL FEATURES OF PATGEN2 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\documentstyle{article}
+\title{A small tutorial on the multilingual features of PatGen2}
+\author{Yannis Haralambous}
+\date{}
+\begin{document}
+\maketitle
+
+\def\XeT{X\kern-.1667em\lower.5ex\hbox{E}\kern-.125emT}
+
+I will very briefly discuss and illustrate by an example the features
+of PatGen2\footnote{the extension to PatGen by Peter Breitenlohner,
+author of many beautiful and extremely useful \TeX ware, such as
+\TeX--\XeT, {\tt DVIcopy} etc.}, related to the {\em translation}
+file.
+
+\section{Syntax of the translation file}
+\subsection{What is the problem}
+The problem is that in our (non-English, non-Latin,
+non-Indonesian\footnote{As far as I know, English, Latin and
+Indonesian are the only languages without diacritics or special
+characters...}) languages, we have more characters than just the~26
+letters of the Latin alphabet. Not to mention that alphabetical orders
+can be quite different (remember: in Spanish, cucaracha comes before
+chacal), and that there can be many ways to express these additional
+characters: for example the French \oe{} (like in << Histoire de l'\oe
+il >> by Georges Bataille) can be given to \TeX\ as an 8-bit
+character, or as \verb*=\oe =, or as \verb=\oe{}=, or as \verb=^^f7=
+(since we are {\em all} now working with DC fonts) and so forth.
+
+Now let's make (or enhance the) hyphenation patterns for our language(s).
+Fred Liang has not provided PatGen with the extensibility feature: before
+PatGen2, if your language had less than~26 letters you could hack patterns by
+substituting letters, if it had more\ldots then the odds were against you.
+
+So the problem is to express additional characters in the patterns, in some
+understandable way (and if possible to get the results in the appropriate
+alphabetical order).
+
+\subsection{The solution}
+PatGen2 allows you to include more characters than the~26 letters of
+the alphabet. You can specify arbitrary many {\em input forms} for
+each of them (these forms will be identified internally), and you can
+specify the alphabetical order of your language. The latter feature is
+only interesting when you want to study the patterns file to correct
+bugs, it doesn't affect the result.
+
+These informations are transmitted to PatGen2 by means of a {\em
+translation} file (usually with the extension \verb=.tra=). The syntax
+of this file is not very user-friendly, but if you deal with PatGen
+you are supposed to be a hacker anyway, and hackers just {\bf love}
+weird-but-efficient-syntaxes [the proof: we all like
+\TeX!\footnote{\ldots just joking}].
+
+On the first line you specify the \verb=\lefthyphenmin= and
+\verb=\righthyphenmin= values. The seven first positions of this line
+are used as follows: two positions for \verb=\lefthyphenmin=, two
+positions for \verb=\righthyphenmin=, and one position for substitute
+symbols of each of \verb=.=, \verb=-=, \verb=*= in the output file.
+This can be useful if you are going to use the dot the asterisk or the
+hyphen to describe your additional characters (for example one may use
+the dot to specify the dot accent on a letter).
+
+The next lines concern letters of the alphabet of our language. The
+first position of each line is the delimiter of our fields. You know
+from languages like C or {\tt awk} that it is very useful to define
+our own delimiter (instead of the blank space) if for any reason we
+want to {\em include} a blank space into our fields. This will be the
+case in the example: one usually leaves a blank space after a \TeX\
+macro without argument.
+
+Otherwise just leave the first position blank. Next comes the
+standard representation of our character (preferably lowercase). This
+is how the character will appear in the patterns and in the hyphenated
+output file.
+
+Follows again a delimiter, and all the {\em equivalent}
+representations of your character: its uppercase form, and as many
+other input forms we wish, always followed by a delimiter.
+
+The order of lines specifies the alphabetical order of your characters.
+
+When PatGen sees two consecutive delimiters,
+it stops reading; so we can include
+comments after that.
+
+\section{An example}
+To illustrate this I have taken some
+Greek words (people who know $X\acute\alpha%
+\rho\rho\upsilon$ $K\lambda\acute\upsilon\nu\nu$
+and his album $\Pi\alpha\tau%
+\acute\alpha\tau\epsilon\varsigma$ will recognize some of these
+words\ldots) and included an $\alpha$ with accent, and a variant
+representation of $\pi$, in form of a macro \verb*=\varpi =. Also I
+followed the Greek alphabetical order in the translation file.
+
+Here is my list of words:
+
+\begin{verbatim}
+A-NU-PO-TA-QTOS
+A-KA-TA-M'A-QH-TOS
+A-EI-MNH-STOS
+MA-NA
+TOUR-KO-GU-FTIS-SA
+NU-QO-KO-PTHS
+LI-ME-NO-FU-LA-KAS
+MPRE-LOK
+A-GA-\varpi A-EI
+PEI-RAI-'AS
+\end{verbatim}
+
+(file {\tt greek.dic}); and here is my translation file ({\tt greek.tra}):
+
+\begin{verbatim}
+ 1 1
+ a A
+ 'a 'A
+ b B
+ g G
+ d D
+ e E
+ z Z
+ h H
+ j J
+ i I
+ k K
+ l L
+ m M
+ n N
+ o O
+#p#P#\varpi ##
+ r R
+ s S
+ t T
+ u U
+ f F
+ q Q
+ y Y
+ w W
+\end{verbatim}
+
+(yes, yes, that's not a joke; Greek really uses values~1
+and~1 for minimal right
+and left hyphenations!). As you see, I have chosen \verb=#= as delimiter
+in the case of $\pi$, because \verb=\varpi= is supposed to be followed
+by a blank space. And then I wrote two delimiters (\verb=##=) to show PatGen2
+that I finished talking about $\pi$.
+
+Here is what I got on my console:
+
+\begin{verbatim}
+PatGen -t greek.tra -o greek.out greek.dic
+This is PatGen, C Version 2.1 / Macintosh Version 2.0
+Copyright (c) 1991-93 by Wilfried Ricken. All rights reserved.
+left_hyphen_min = 1, right_hyphen_min = 1, 24 letters
+0 patterns read in
+pattern trie has 266 nodes, trie_max = 290, 0 outputs
+hyph_start: 1
+hyph_finish: 2
+pat_start: 2
+pat_finish: 4
+good weight: 1
+bad weight: 1
+threshold: 1
+processing dictionary with pat_len = 2, pat_dot = 1
+
+0 good, 0 bad, 31 missed
+0.00 %, 0.00 %, 100.00 %
+69 patterns, 325 nodes in count trie, triec_max = 440
+25 good and 42 bad patterns added (more to come)
+finding 29 good and 0 bad hyphens, efficiency = 1.16
+pattern trie has 333 nodes, trie_max = 349, 2 outputs
+processing dictionary with pat_len = 2, pat_dot = 0
+
+29 good, 0 bad, 2 missed
+93.55 %, 0.00 %, 6.45 %
+45 patterns, 301 nodes in count trie, triec_max = 378
+2 good and 43 bad patterns added
+finding 2 good and 0 bad hyphens, efficiency = 1.00
+pattern trie has 339 nodes, trie_max = 386, 6 outputs
+processing dictionary with pat_len = 2, pat_dot = 2
+
+31 good, 0 bad, 0 missed
+100.00 %, 0.00 %, 0.00 %
+47 patterns, 303 nodes in count trie, triec_max = 369
+0 good and 47 bad patterns added
+finding 0 good and 0 bad hyphens
+pattern trie has 344 nodes, trie_max = 386, 13 outputs
+51 nodes and 11 outputs deleted
+total of 27 patterns at hyph_level 1
+
+pat_start: 2
+pat_finish: 4
+good weight: 1
+bad weight: 1
+threshold: 1
+processing dictionary with pat_len = 2, pat_dot = 1
+
+31 good, 0 bad, 0 missed
+100.00 %, 0.00 %, 0.00 %
+27 patterns, 283 nodes in count trie, triec_max = 315
+0 good and 27 bad patterns added
+finding 0 good and 0 bad hyphens
+pattern trie has 295 nodes, trie_max = 386, 4 outputs
+processing dictionary with pat_len = 2, pat_dot = 0
+
+31 good, 0 bad, 0 missed
+100.00 %, 0.00 %, 0.00 %
+27 patterns, 283 nodes in count trie, triec_max = 303
+0 good and 27 bad patterns added
+finding 0 good and 0 bad hyphens
+pattern trie has 320 nodes, trie_max = 386, 6 outputs
+processing dictionary with pat_len = 2, pat_dot = 2
+
+31 good, 0 bad, 0 missed
+100.00 %, 0.00 %, 0.00 %
+24 patterns, 280 nodes in count trie, triec_max = 286
+0 good and 24 bad patterns added
+finding 0 good and 0 bad hyphens
+pattern trie has 328 nodes, trie_max = 386, 9 outputs
+35 nodes and 7 outputs deleted
+total of 0 patterns at hyph_level 2
+hyphenate word list? y
+writing PatTmp.2
+
+31 good, 0 bad, 0 missed
+100.00 %, 0.00 %, 0.00 %
+Time elapsed: 0:37:70 minutes.
+\end{verbatim}
+
+and here are the results: first of all the patterns
+(file {\tt greek.out})
+
+\begin{verbatim}
+a1g
+a1e
+a1k
+a1m
+a1n
+a1p
+a1t
+a1q
+'a1q
+e1l
+e1n
+h1t
+i1'a
+i1m
+i1r
+1ko
+o1g
+o1p
+o1t
+o1f
+r1k
+s1s
+1st
+u1l
+u1p
+u1f
+u1q
+\end{verbatim}
+
+As you see, {\tt o1t} comes before {\tt o1f}: (smile) simply
+because we are talking about $o1\tau$ and $o1\phi$. So the
+alphabetical order is well respected. Also you see that PatGen2
+has read the word \verb*=A-GA-\varpi A-EI= exactly as if it
+were \verb*=A-GA-PA-EI= and has made out of it the pattern
+{\tt a1p} (if you look in the input words there is no other
+reason for this pattern to exist).
+
+And here is our result (file {\tt PatTmp.2}):
+
+\begin{verbatim}
+a*nu*po*ta*qtos
+a*ka*ta*m'a*qh*tos
+a*ei*mnh*stos
+ma*na
+tour*ko*gu*ftis*sa
+nu*qo*ko*pths
+li*me*no*fu*la*kas
+mpre*lok
+a*ga*pa*ei
+pei*rai*'as
+\end{verbatim}
+
+(Of course, it is correct; you think I would have shown it if it
+weren't correct?) As you see there is no \verb*=\varpi = anymore:
+PatGen2 has really replaced it by \verb=p=, and so
+\verb*=A-GA-\varpi A-EI= has become \verb=a*ga*pa*ei=.
+
+\section{Where do I find more information?}
+I voluntarily didn't discussed the various parameters used for
+pattern generation. For these there is very good litterature:
+\begin{itemize}
+\item the \TeX book, by the Grand Wizard of \TeX\ arcana,
+appendix H;
+\item \LaTeX\ Erweiterungsm\"oglichkeiten, by Helmut Kopka,
+Addison-Wesley, Pages 482--489;
+\item Swedish Hyphenation for \TeX, by Jan Michael Rynning,
+[sorry, I don't know where this paper is published];
+\item Word Hy-phen-a-tion by Com-put-er, Stanford University
+Report {\tt STAN-CS-83-977};
+\item forthcoming paper by Dominik Wujastyk, on British
+hyphenation;
+\item Hyphenation Patterns for Ancient Greek and Latin,
+TUGboat~13 (4), pages 457--469.
+\item and many others\ldots
+\end{itemize}
+
+Where to get PatGen2? probably everywhere, but certainly in
+Stuttgart ({\tt IP 129.69.1.12}),
+\verb=soft/tex/systems/pc/utilities/patgen.zip= (take a look also at
+\verb=soft/tex/systems/knuth/texware/patgen.version2.1/patgen.README=).
+
+\section{Go forth, etc etc}
+OK, once again {\sc Go Forth} and make masterpieces of hyphenation
+patterns\ldots
+{\bf but} please get in touch with the TWGMLC (Technical Working
+Group on Multiple Language Coordination) first, since people there
+are working on many languages: maybe they have already done what
+you need and are still testing it; or maybe they haven't and in
+that case you could help us a lot.
+
+
+\end{document}
+