summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/plain
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-07-17 21:49:00 +0000
committerKarl Berry <karl@freefriends.org>2020-07-17 21:49:00 +0000
commit561ef7b2d217276bf876a1b3fb4443dcd6372865 (patch)
tree5a3a863f871a8b504ba47749928832806a34079e /Master/texmf-dist/doc/plain
parentc1dc4e84bda67085800d01c72a163f059a896c0b (diff)
zztex (17jul20)
git-svn-id: svn://tug.org/texlive/trunk@55862 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/plain')
-rw-r--r--Master/texmf-dist/doc/plain/zztex/README17
-rw-r--r--Master/texmf-dist/doc/plain/zztex/zzbuiltin.dat325
-rw-r--r--Master/texmf-dist/doc/plain/zztex/zzdetails.dat1597
-rw-r--r--Master/texmf-dist/doc/plain/zztex/zzphrase.dat3085
-rw-r--r--Master/texmf-dist/doc/plain/zztex/zzplain.dat1315
5 files changed, 6339 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/plain/zztex/README b/Master/texmf-dist/doc/plain/zztex/README
new file mode 100644
index 00000000000..dedbd028967
--- /dev/null
+++ b/Master/texmf-dist/doc/plain/zztex/README
@@ -0,0 +1,17 @@
+ZzTeX Macro Package, version 17.7
+
+The ZzTeX macro package is a full-featured TeX macro package specially
+designed for producing books, journals, and manuals. Development of the
+package began in 1989. Since then, about 500 textbooks and journals have
+been produced with it for a variety of publishers. Numerous authors have
+used the package to produce subsequent editions of their books.
+
+I provide the TeX files for ZzTeX under The MIT License. You may use any or
+all of the code for whatever purpose you desire. ZzTeX runs under Plain TeX.
+The only documentation available for the package is contained in the zz*.dat
+files that accompany the TeX files.
+
+I hope you find some of the code useful for your TeX projects.
+
+Copyright 1989--2020 by Paul C. Anagnostopoulos
+under The MIT License (opensource.org/licenses/MIT)
diff --git a/Master/texmf-dist/doc/plain/zztex/zzbuiltin.dat b/Master/texmf-dist/doc/plain/zztex/zzbuiltin.dat
new file mode 100644
index 00000000000..09599a8a483
--- /dev/null
+++ b/Master/texmf-dist/doc/plain/zztex/zzbuiltin.dat
@@ -0,0 +1,325 @@
+\@catcodes %~ Establish INITEX catcode defaults.
+\@markdef \botmark %~ Last mark on the current page.
+\@markdef \firstmark %~ First mark on the current page.
+\@markdef \splitbotmark %~ Last mark in material split off by |\vsplit.|
+\@markdef \splitfirstmark %~ First mark in material split off by |\vsplit.|
+\@markdef \topmark %~ Last mark from previous page.
+\@prefix \global %~ Establishes a global definition.
+\@prefix \immediate %~ Performs the I/O operation immediately.
+\@prefix \long %~ Allows command arguments to be multiple paragraphs.
+\@prefix \outer %~ Restricts command to appear at top level.
+\@suffix \displaylimits %~ Limits are set above/below in display style, as scripts otherwise.
+\@suffix \limits %~ Limits are set above and below symbols.
+\@suffix \nolimits %~ Limits are set next to symbol like scripts.
+\countdef \adjdemerits = 0 %~ Demerits for adjacent incompatible lines.
+\countdef \badness = 0
+\countdef \binoppenalty = 0 %~ Penalty for line break after binary operator.
+\countdef \brokenpenalty = 0
+\countdef \clubpenalty = 0
+\countdef \day = 0
+\countdef \deadcycles = 0
+\countdef \defaulthyphenchar = 0
+\countdef \defaultskewchar = 0
+\countdef \delimiterfactor = 0
+\countdef \displaywidowpenalty = 0
+\countdef \doublehyphendemerits = 0
+\countdef \endlinechar = 0
+\countdef \errorcontextlines = 0
+\countdef \escapechar = 0
+\countdef \exhyphenpenalty = 0
+\countdef \fam = 0
+\countdef \finalhyphendemerits = 0
+\countdef \floatingpenalty = 0
+\countdef \globaldefs = 0
+\countdef \hangafter = 0
+\countdef \hbadness = 0
+\countdef \holdinginserts = 0
+\countdef \hypenchar = 0
+\countdef \hyphenpenalty = 0
+\countdef \insertpenalties = 0
+\countdef \interlinepenalty = 0
+\countdef \language = 0
+\countdef \lastpenalty = 0
+\countdef \lefthyphenmin = 0
+\countdef \linepenalty = 0
+\countdef \looseness = 0
+\countdef \mag = 0
+\countdef \maxdeadcycles = 0
+\countdef \month = 0
+\countdef \newlinechar = 0
+\countdef \outputpenalty = 0
+\countdef \pausing = 0
+\countdef \postdisplaypenalty = 0
+\countdef \predisplaypenalty = 0
+\countdef \pretolerance = 0
+\countdef \pretolerand = 0
+\countdef \prevgraf = 0
+\countdef \relpenalty = 0
+\countdef \righthyphenmin = 0
+\countdef \showboxbreadth = 0
+\countdef \showboxdepth = 0
+\countdef \skewchar = 0
+\countdef \spacefactor = 0
+\countdef \time = 0
+\countdef \tolerance = 0
+\countdef \tracingcommands = 0
+\countdef \tracinglostchars = 0
+\countdef \tracinglostchars = 0
+\countdef \tracingmacros = 0
+\countdef \tracingonline = 0
+\countdef \tracingoutput = 0
+\countdef \tracingpages = 0
+\countdef \tracingparagraphs = 0
+\countdef \tracingrestores = 0
+\countdef \tracingstats = 0
+\countdef \uchyph = 0
+\countdef \vbadness = 0
+\countdef \widowpenalty = 0
+\countdef \year = 0
+\def \ { %~ Command space.
+\def \"{ % {char} %~ Umlaut accent %^accent
+\def \'{ % {char} %~ Accute accent %^accent
+\def \-{
+\def \.{ % {char} %~ Dot accent %^accent
+\def \/{
+\def \={ % {char} %~ Macron accent %^accent
+\def \AA { %~ Scandinavian A with circle
+\def \aa { %~ Scandinavian a with circle
+\def \above { % dimen
+\def \abovewithdelims { % delim delim dimen
+\def \accent { % nnn
+\def \advance { % \name by value
+\def \AE { %~ Scandinavian ligature OE
+\def \ae { %~ Scandinavian ligature oe
+\def \afterassignment { % token
+\def \aftergroup { % token
+\def \atop
+\def \atopwithdelims { % delim delim
+\def \batchmode
+\def \begingroup
+\def \bgroup
+\def \box { % nnn
+\def \b{ % {char} %~ Bar-under accent %^accent
+\def \catcode { % char = nn
+\def \char
+\def \chardef { % \name = nn
+\def \cleaders
+\def \closein { % nn
+\def \closeout { % nn
+\def \copy { % nnn
+\def \count { % nnn = integer
+\def \countdef { % \name
+\def \cr
+\def \crcr
+\def \c{ % {char} %~ Cedilla accent %^accent
+\def \dag { %~ Dagger
+\def \ddag { %~ Double dagger
+\def \def
+\def \delcode
+\def \delimiter
+\def \dimendef { % \name
+\def \diment { % nnn
+\def \discretionary{text}{text}{text}
+\def \displaystyle
+\def \divide { % \name by number
+\def \dp
+\def \dump
+\def \d{ % {char} %~ Dot-under accent %^accent
+\def \edef
+\def \egroup
+\def \end
+\def \endgroup
+\def \errmessage{text}
+\def \errorstopmode
+\def \font { % \name = file-name [at size]
+\def \fontdiment { % nn \font = dimen
+\def \futurelet { % \name token token
+\def \gdef
+\def \halign{material}
+\def \hbox { % [to dimen] {text}
+\def \hfil
+\def \hfill
+\def \hfilneg
+\def \hrule { % width dimen height dimen depth dimen
+\def \hskip { % skip
+\def \hss
+\def \ht
+\def \hyphenation{text}
+\def \hyphenchar { % \font = nn
+\def \H{ % {char} %~ Long Hungarian umlaut accent %^accent
+\def \ignorespaces
+\def \indent
+\def \insert { % nnn {text}
+\def \kern { % dimen
+\def \L { %~ Polish suppressed L
+\def \l { %~ Polish suppressed l
+\def \lastbox
+\def \lccode { % char = char
+\def \leaders
+\def \left { % delim math \right delim
+\def \let { % \name = token
+\def \lower { % dimen box
+\def \lowercase { % {text}
+\def \mark { % {text}
+\def \mathaccent { % nnnnn math
+\def \mathbin { % {expression} %~ Binary operator class (2) %^math_class
+\def \mathchar { % "cfnn
+\def \mathchardef { % \name = nnnnn
+\def \mathchoice{text}{text}{text}{text}
+\def \mathclose { % {expression} %~ Closing fence class (5) %^math_class
+\def \mathcode
+\def \mathinner { % {expression} %~ Inner subexpression
+\def \mathop { % {expression} %~Large operator class (1) %^math_class
+\def \mathopen { % {expression} %~ Opening fence class (4) %^math_class
+\def \mathord { % {expression} %~ Ordinary symbol class (0) %^math_class
+\def \mathpunct { % {expression} %~ Punctuation class (6) %^math_class
+\def \mathrel { % {expression} %~ Relation class (3) %^math_class
+\def \message { % {text}
+\def \moveleft { % dimen box
+\def \moveright { % dimen box
+\def \mukern { % mudimen
+\def \multiply { % \name by number
+\def \muskip { % nnn = mu-glue
+\def \muskipdef { % \name
+\def \noalign { % {text}
+\def \noboundary
+\def \noboundary
+\def \noindent
+\def \nonscript
+\def \nonstopmode
+\def \number { % {number} %~ This command formats an integer as Arabic numerals.
+\def \O { %~ Scandinavian O with slash
+\def \o { %~ Scandinavian o with slash
+\def \OE { %~ French ligature OE
+\def \oe { %~ French ligature oe
+\def \omit
+\def \openin { % nn = file-name
+\def \openout { % nn = file-name
+\def \over
+\def \overline{text}
+\def \overwithdelims { % delim delim
+\def \P { %~ Paragraph sign (pilcrow)
+\def \par
+\def \parshape { % = nn dimen ...
+\def \patterns{text}
+\def \penalty { % nnnnn
+\def \radical { % nnnnn math
+\def \raise { % dimen box
+\def \read { % n to \name
+\def \relax
+\def \romannumeral { % {number} %~ This command formats an integer as uppercase Roman numerals.
+\def \S { %~ Section sign
+\def \scriptfont
+\def \scriptscriptfont
+\def \scriptscriptstyle
+\def \scriptstyle
+\def \scrollmode
+\def \setbox { % nnn = box
+\def \setlanguage { % nnn
+\def \sfcode
+\def \shipout { % box
+\def \show { % token
+\def \showbox { % nnn
+\def \showlists
+\def \showthe { % internal-quantity
+\def \skewchar { % \font = nn
+\def \skip { % nnn = glue
+\def \skipdef { % \name
+\def \span
+\def \special { % {text}
+\def \ss { %~ German es-zet
+\def \t { % {char} %~ Tie-after accent %^accent
+\def \textfont
+\def \textstylestyle
+\def \toks { % nnn
+\def \toksdef { % \name
+\def \uccode { % char = char
+\def \underline{text}
+\def \unhbox { % nnn
+\def \unhcopy { % nnn
+\def \unkern
+\def \unpenalty
+\def \unskip
+\def \unvbox { % nnn
+\def \unvcopy { % nnn
+\def \uppercase { % {text}
+\def \u{ % {char} %~ Breve accent %^accent
+\def \vadjust{text}
+\def \valign{text}
+\def \vbox { % [to dimen] {text}
+\def \vcenter{text}
+\def \vfil
+\def \vfill
+\def \vfilneg
+\def \vrule { % width dimen height dimen depth dimen
+\def \vskip { % dimen
+\def \vsplit { % nnn to dimen
+\def \vss
+\def \vtop { % [to dimen] {text}
+\def \v{ % {char} %~ Hacek accent %^accent
+\def \wd
+\def \write { % nn {text}
+\def \xdef
+\def \xleaders
+\def \^{ % {char} %~ Circumflex accent %^accent
+\def \`{ % {char} %~ Grave accent %^accent
+\def \~{ % {char} %~ Tilde accent %^accent
+\dimendef \boxmaxdepth = 0
+\dimendef \delimitershortfall = 0
+\dimendef \displayindent = 0
+\dimendef \displaywidth = 0
+\dimendef \emergencystretch = 0
+\dimendef \hangindent = 0
+\dimendef \hfuzz = 0
+\dimendef \hoffset = 0
+\dimendef \hsize = 0
+\dimendef \lastkern = 0
+\dimendef \lineskiplimit = 0
+\dimendef \mathsurround = 0
+\dimendef \maxdepth = 0
+\dimendef \nulldelimiterspace = 0
+\dimendef \overfullrule = 0
+\dimendef \pagedepth = 0
+\dimendef \pagefilllstretch = 0
+\dimendef \pagefillstretch = 0
+\dimendef \pagefilstretch = 0
+\dimendef \pagegoal = 0
+\dimendef \pageshrink = 0
+\dimendef \pagestretch = 0
+\dimendef \pagetotal = 0
+\dimendef \parindent = 0
+\dimendef \predisplaysize = 0
+\dimendef \prevdepth = 0
+\dimendef \scriptspace = 0
+\dimendef \splitmaxdepth = 0
+\dimendef \vfuzz = 0
+\dimendef \voffset = 0
+\dimendef \vsize = 0
+\muskipdef \medmuskip = 0
+\muskipdef \thickmuskip = 0
+\muskipdef \thinmuskip = 0
+\skipdef \abovedisplayshortskip = 0
+\skipdef \abovedisplayskip = 0
+\skipdef \baselineskip = 0
+\skipdef \belowdisplayshortskip = 0
+\skipdef \belowdisplayskip = 0
+\skipdef \lastskip = 0
+\skipdef \leftskip = 0
+\skipdef \lineskip = 0
+\skipdef \parfillskip = 0
+\skipdef \parskip = 0
+\skipdef \rightskip = 0
+\skipdef \spaceskip = 0
+\skipdef \splittopskip = 0
+\skipdef \tabskip = 0
+\skipdef \topskip = 0
+\skipdef \xspaceskip = 0
+\toksdef \errhelp = 0
+\toksdef \everycr = 0
+\toksdef \everydisplay = 0
+\toksdef \everyhbox = 0
+\toksdef \everyjob = 0
+\toksdef \everymath = 0
+\toksdef \everypar = 0
+\toksdef \everyvbox = 0
+\toksdef \output = 0
diff --git a/Master/texmf-dist/doc/plain/zztex/zzdetails.dat b/Master/texmf-dist/doc/plain/zztex/zzdetails.dat
new file mode 100644
index 00000000000..c1ef6d0b8f6
--- /dev/null
+++ b/Master/texmf-dist/doc/plain/zztex/zzdetails.dat
@@ -0,0 +1,1597 @@
+//---------------------------------------------------------------------------
+//
+// Copyright (c) 2012--2018 by Paul C. Anagnostopoulos
+//
+// This software may be used on your own computer systems and may
+// be distributed freely to other people. It may not be sold or
+// incorporated into any commercial products.
+//
+// Paul C. Anagnostopoulos
+// Windfall Software
+// 978 371-2316
+// paul@windfall.com
+//
+//---------------------------------------------------------------------------
+//
+// ZzExplore: Describe built-in TeX, Plain TeX, ZzTeX, and design
+// file entities for compositors.
+//
+// This is the details phrase file.
+//
+// Created: 7 May 2016
+
+// \art Block
+// ---- -----
+
+.details art_details \art
+.template art_details
+== The |\art| Block
+
+This tutorial describes the ZzTeX |\art| block, which is used to place
+Encapsulated PostScript (EPS) files on the page. EPS files can be created
+with many different applications, the most common being Adobe Illustrator
+and PhotoShop.
+
+=== The |\art| Command
+
+The format of the |\art| command is:
+
+| \art{*type*}{*file*,*width*,*height*,*scale*[,*gutter*,*file*,*width*,*height*,*scale*,...]}
+
+The *type* argument specifies the type of the code block and thus its
+design. Common examples are |figure| for art in floating figures and
+|text| for art in text.
+
+A single piece of art is described by four values in the second argument:
+
+& *file*& The name of the EPS file. See below.
+& *width*& The width of the art, usually specified in picas.
+& *height*& The height of the art.
+& *scale*& The scale factor for the art. See below.
+&.
+
+You can place multiple pieces of art, or panels, side-by-side by including
+additional values in the second argument. The *gutter* specifies the
+horizontal distance between the adjacent panels. The next four arguments specify
+the second art file, in the same manner as the first. This sequence can be
+continued to place three or four panels side-by-side.
+
+=== File Name
+
+The file name specified in the |\art| command is the name of an EPS file to be
+placed on the page. There is no need to specify the extension |.eps|. The
+file is assumed to reside in the directory specifed by the |\setartroot|
+command in the book's root file. If the name is preceded by an exclamation
+point (|!|), then the file is located in the main project directory (this
+feature is used for design art).
+
+Occasionally, a piece of art will include spurious whitespace on the edges
+of the art, but within its bounding box. This whitespace is called *slop*,
+and will result in the art appearing out of position. ZzTeX can compensate
+for the slops if you specify them with the file name, as follows:
+
+ \art{figure}{{smi01f01,0pt,5pt,0pt,3pt},...}
+
+Note the extra set of braces around the file name and slops. All four slops
+must be specified, in this order: left side, right side, top, bottom. If all
+the slops are less than 1.5 points or so, there is no need to include them.
+We haven't used slops much in the past decade or so; we simply ask the
+illustrator to eliminate the whitespace.
+
+=== Width and Height
+
+If both the width and height are specified as zero (i.e., |0pc,0pc|), then the
+art will be dynamically sized when the file is processed. ZzTeX inspects the
+EPS file to determine the art size. If it cannot find the |%%BoundingBox|
+comment that specifies the size, an error results. We use this feature
+only for design art.
+
+The ZzSizeArt utility can automatically size the art in a chapter file.
+Try |~.facility; sizing art| for more details.
+
+=== Scale Factor
+
+The scale factor specifies the scale at which the piece of art should be
+placed, relative to its natural size. The scale factor must always be
+specified, even if it is 100. There are three ways to specify it:
+
+* *percentage*&_A number that specifes the percentage of scaling.
+The number may include decimal places.
+
+* |=|&_An equal sign specifies that the art should be scaled
+to fit in the prevailing width. The width is usually the
+text measure or the type area width.
+
+* |=*width*|&_An equal sign and a width specifies that the art should
+be scaled to the specified width.
+*.
+
+=== Aligning Side-by-Side Panels
+
+The |\art| command aligns side-by-side panels along their top edges. Sometimes
+you want them aligned differently. To shift a panel vertically, specify a
+top slop that is positive to shift the panel up or negative to shift the panel
+down.
+
+Note that the slops are scaled by the scale factor, so the exact slop
+required to shift the panel correctly may not be obvious.
+
+// Art Sizing
+// --- ------
+
+
+.phrase art_sizing art sizing : text
+.synonym sizing art
+.synonym zzsizeart
+.template
+= ZzSizeArt Art Sizing Utility
+
+The ZzSizeArt utility allows you to manipulate the art sizes specified in
+|\art| commands in ZzTeX source files. Its two primary capabilities are to set
+the sizes of art files by inspecting the Encapsulated PostScript (EPS) files
+and to replace existing EPS files with new versions.
+
+The ZzSizeArt facility relies on the following conventions for art files:
+
+* The bulk of the art files for a book are stored in the art/
+subdirectory under the primary project directory.
+
+* Replacement art files are loaded into the new/ subdirectory under
+the art/ directory before eventually being hoisted into the
+art/ directory.
+
+* Before an art file in an |\art| command is sized, its width and height are
+coded as |20pc,10pc|. This special combination signals that the art has not
+been sized.
+
+* ZzTeX supports dynamic sizing by setting the |\art| size
+to |0pc,0pc|. In this case, the size is determined by inspecting the
+EPS file every time the chapter is processed, rather than being set
+statically. Most ZzSizeArt commands ignore dynamically sized files.
+*.
+
+== zzsizeart Command
+
+The zzsizeart command has the following syntax:
+
+| zzsizeart *root* *command* *additional-items*
+
+The *root* parameter specifies the root name of the book. It is usually
+specified as a period (|.|), which causes ZzSizeArt to figure out the root
+name. The command parameter is a keyword that determines which function
+ZzSizeArt performs. Its functions are described in alphabetical order
+in the following paragraphs.
+
+* |zzsizeart *root* reset *source-file*|
+
+This command resets all the art sizes in the specified ZzTeX source file to
+|20pc,10pc|. Dynamically sized art files are ignored unless the |-all| option is
+included, in which case they are reset also.
+
+If the |-scale| option is specified, then ZzSizeArt also resets the scale of
+the art files to 100.
+
+* |zzsizeart *root* replace *optional-file-spec*|
+
+This command analyzes the replacement art files in the art/new/ subdirectory
+to determine whether they are the same size as the existing art files and
+can safely replace them. If a *file-spec* parameter is provided, only the
+replacement files that match the file spec are analyzed. The command
+generates a report about the replacement art files and displays it on the
+screen. This reports tells you whether the replacement art files are the
+same size or a different size.
+
+If the |-hoist| option is included, then any replacement art files that are the
+same size as the existing files are hoisted from the new/ subdirectory up to
+the art/ directory, replacing the old art files of the same names. The rest of
+the replacement art files are left in the new/ subdirectory. You can use the
+PrintEPS utility to generate a proof of the remaining art files, from which
+you can read the sizes of those files. Also see the |tell| command below.
+
+If the |-all| option is also specified, then all replacement art files are
+hoisted, including those that are a different size from the existing art
+files.
+
+The |-epsilon=*w*,*h*| option specifies the epsilon values for the width (*w*) and
+height (*h*). If the difference in size is within these epsilons, the
+replacement file is considered the same size as the existing file. The
+default width and heigh epsilons are both 1.5 points.
+
+* |zzsizeart *root* size *source-file*|
+
+This command sizes the |\art| commands in the specified ZzTeX source file by
+analyzing the EPS files named in those |\art| commands. Every art file must have
+the size |20pc,10pc|, except for dynamically-sized art files, which are
+ignored. Every named art file must exist in the art/ subdirectory. The
+source file is modified so that the art files have their actual sizes.
+
+If the |-ifexists| option is specified, then ZzSizeArt will size those art
+files that exist in the art/ subdirectory and ignore any other files named
+in |\art| commands. *All* art files must still have the size |20pc,10pc|, but any
+files that do not exist will not be set to their actual sizes.
+
+If the |-partial| option is specified, then ZzSizeArt will size those art
+files whose sizes are |20pc,10pc| and ignore any other art files named in |\art|
+commands. This allows you to size art files that were not sized previously
+for whatever reason, possibly due to a prior use of the |-ifexists| option.
+
+If both |-ifexists| and |-partial| are specified, then ZzTeX will size any
+art file who size is |20pc,10pc| and that exists in the art/ subdirectory.
+
+* |zzsizeart *root* tell *eps-file* ...|
+
+This command analyzes the specified EPS files and displays a report giving
+their sizes. This is useful when you need to know the sizes of a few EPS
+files in order to update their |\art| commands by hand.
+*.
+----
+For more details on the |\art| command, try |~.facility; \art|.
+
+// Cleanup Report
+// ------- ------
+
+
+.phrase cleanup_report cleanup report
+.synonym clean-up report
+.synonym clean up report
+.template
+= Cleanup Report for ~.project;
+
+This report describes the chapter cleanup activities for books
+in general and ~.project; in particular.
+
+Before reading this report, it's a good idea to read the design
+report for ~.project;. Try |~.facility; design report|.
+
+== General Cleanup
+
+=== Clean Up Headings
+
+The heads in sectioning commands (e.g., |\chapter|, |\section|) and
+tables, along with the titles in captions, must be formatted according
+to the design. This involves
+
+* Captitalizing them correctly
+
+* Adding or removing trailing punctuation
+
+* Ensuring that run-in heads have no blank lines after them
+
+* Adding |\noindent| commands where they might be missing
+
+* Once the chapter is processed, turning multi-line heads with
+|\titlenl;| or |\titletl;|
+*.
+
+Here are the styles of the various heads and titles.
+
+&= Command& Style
+----
+~foreach cmd, style_table;
+& ~.cmd;& ~.style_table[cmd];
+~end;
+&.
+
+=== Clean Up Floats
+
+The cleanup for floats involves
+
+* Making sure there is a blank line on either side
+
+* Determining whether the author embedded floats in the middle of
+paragraphs and merging the broken paragraph segments
+
+* Moving floats after the first paragraph of reference (this may be
+easier during page make-up)
+
+* Placing the correct file names in |\art| commands.
+
+* Checking captions to see if they need a |\legend| marker.
+*.
+
+// \code Block
+// ----- -----
+
+.details code_details \code
+.template code_details subclass_set command code
+== Code Facilities
+
+This tutorial describes the ZzTeX code facilities. These facilities are
+used to produce computer program code examples.
+
+=== The |\code| Block
+
+The |\code| command has the following syntax:
+
+| \code{*type*}
+| *line of code*
+| ...
+| *line of code*
+| \endcode
+
+The *type* argument specifies the type of the code block and thus its
+design. Each line of code is set more or less verbatim and line breaks
+are preserved as they are. Code blocks are almost always set in a monospaced
+font so that indentation can be accomplished with spaces at the beginnings
+of lines.
+
+=== Verbatim Lines
+
+The degree to which the code lines are taken verbatim is determined
+by certain block design parameters. To investigate the design
+parameters for a code block, try |~.facility; \code*type* details|.
+
+* |\allowTeXcommands|&_If this flag is on, ZzTeX commands can be
+included in the code, as long as they use only backslash and
+braces (|\|, |{|, |}|). This flag is on in most code blocks.
+To include those characters in the code itself, you must use:
+|\\|, |\{|, |\}|.
+
+* |\allowTeXmath|&_If this flag is on, math expressions can be
+included in the code, using dollar sign, underscore, and hat (|$|,
+|_|, |^|). This flag is off in most code blocks. To include those
+character in the code itself, you must use: |\$|, |\_|, |\hat|.
+(See |\codemath| for another way to include math in code.)
+
+* |\allowatsigncommands|&_If this flag is on, at-sign commands
+can be included in the code and would probably be provided by
+the code design. This flag is off in most code blocks. To include an
+at-sign in the code itself, you must use: |\@|.
+
+=== |\code| Tools
+
+The following list includes all the tools that can be used within a |\code|
+block. You can explore these various commands to learn what they do.
+
+~foreach name, name_set;
+* |~.name;|
+~end;
+*.
+
+// \enunciation Block
+// ------------ -----
+
+.details enunciation_details \enunciation
+.template enunciation_details
+== The |\enunciation| Block
+
+This tutorial describes the ZzTeX |\enunciation| block, which produces
+mathematical "enunciations" such as theorems, corollaries, and proofs.
+Using the |\enunciation| command is reasonably straightforward,
+but defining the various types of enunciations is a bit trickier.
+
+The format is the |\enunciation| command is:
+
+| \enunciation{*type*}{*optional-attribution*}
+
+The *type* argument specifies the type of the code block and thus its
+design. The *optional-attribution* argument can have one of three
+formats. Note that the second set of braces is required in *all* cases.
+
+# |{}|&_If empty, there is no attribution for the enunciation.
+& Theorem 1.1.&_There exist irrational numbers ...
+&.
+
+# |{Smith's Conjecture}|&_The specified text is the attribution for the
+enunciation.
+& Conjecture 1.2 (Smith's Conjecture).&_Let *K* be the *n*th cyclotomic field ...
+&.
+
+# |{\title Kleene's Theorem}|&_The text specified after the |\title| marker
+is the complete title for the enunciation.
+& Kleene's Theorem.&_Every language definable with a regular expression ...
+&.
+#.
+
+=== Defining an Enunciation Type
+
+Prior to ZzTeX v5.8, each enunciation type had to be defined by
+writing a complete design macro, as with other block types. There
+are some subtle issues that make this difficult. In v5.8, the
+|\definenunciation| command was added.
+
+| \defineenunciation{*type*}{*association*}{*design*}
+
+The first argument is the enunciation's type. The second argument
+can be empty or specify the type of another enunciation whose
+number counter is to be shared. Both types of enunciation will be
+numbered sequentially with the same counter.
+
+The third argument specifies a design macro for the base design
+that is to be used for this new enunciation type. Multiple enunciations
+can share the same base design. For example,
+
+ \defineenunciation{conjecture}{}{\enunciationtheoremlikedesign{Conjecture}}
+ \defineenunciation{corollary}{}{\enunciationtheoremlikedesign{Corollary}}
+ \defineenunciation{definition}{}{\enunciationtheoremlikedesign{Definition}}
+ \defineenunciation{lemma}{}{\enunciationtheoremlikedesign{Lemma}}
+ \defineenunciation{proof}{}{\enunciationprooflikedesign{Proof}}
+ \defineenunciation{proposition}{}{\enunciationtheoremlikedesign{Proposition}}
+
+There are two base designs for these enunciations: |\enunciationtheoremlikedesign|
+for enunciations formatted like theorems, and |\enunciationprooflikedesign|
+for enunciations formatted like proofs. Note that the two design macros expect
+an argument that is the word to appear in the title of the enunciation (e.g.,
+"Conjecture", "Proof").
+
+So defining a set of related enunciations boils down to writing one
+base design macro.
+
+=== Base Enunciation Design
+
+Most of the details about enunciation design macros are the same
+as other design macros. There are two interesting additions.
+
+ \def \enunciationtheoremlikedesign #1{%
+ \aboveskip = \standardskip
+ ...
+ \def \labelformat ##1{%
+ \noindent
+ \attributiontypecase
+ {\llap{\colortext{darkblue}{\enunnumbersize\dbf #1 \the\enunciationcomptext}%
+ \hspace{10pt}}}% no attribution
+ {\llap{\colortext{darkblue}{\enunnumbersize\dbf #1 \the\enunciationcomptext}%
+ \hspace{10pt}}##1.\quad}% normal attribution
+ {\llap{\colortext{darkblue}{\enunnumbersize\dbf ##1}%
+ \hspace{10pt}}}% title override
+ \ignorespaces}%
+
+The first addition is that the design macro accepts an argument that is
+the word to be set in the title. The |#1| in the first line represents
+that argument.
+
+The second addition is the |\attributiontypecase| command in the
+label formatter. It takes three arguments, each of which formats the
+title (label) of the enunciation. The three arguments correspond to the
+three title argument formats described above.
+
+# The attribution argument is empty.
+# The attribution argument specifies an attribution.
+# The attribution argument includes the |\title| marker.
+#.
+
+=== The |\defineeoedingbat| Command
+
+The |\enunciation| block includes a design parameter named |\autoqed|.
+This parameter can specify the name of an "end-of-enunciation dingbat"
+that should appear at the end of the enunciation.
+
+ \def \enunciationprooflikedesign #1{%
+ ...
+ \autoqed = {\qed}%
+
+The |\qed| command, which typesets a dingbat, is automatically performed
+at the end of enunciations based on the |\enunciationprooflikedesign|
+design. To override the position of the resulting dingbat, you can
+specify the |\qed| command explicitly in the text of the enunciation.
+
+An end-of-enunciation dingbat is defined with
+
+| \defineeoedingbat{*name*}{*text*}{*space*}
+
+The first argument is the name of the dingbat command. The second argument
+is the text of the dingbat. The third argument specifies how to
+separate the dingbat from the final word of the enunciation.
+
+* |{10pt}|&_The dingbat is set 10 points from the final word.
+
+* |{\flushright 8pt}|&_The dingbat is set flush right, but a minimum
+of 8 points must separate it from the final word.
+*.
+
+So the |\qed| dingbat used above could be defined with
+
+ \defineeoedingbat{\qed}{\colortext{darkblue}{\slug{5pt}{5pt}}}{\flushright 8pt}
+
+// Environments
+// ------------
+
+
+.phrase environments environments : text
+.synonym LaTeX environments
+.template
+= LaTeX Environments
+
+A LaTeX *environment* is the equivalent of a ZzTeX *block*.
+The term environment is not used in ZzTeX.
+
+// \eqno Marker
+// ----- ------
+
+.details eqno_details \eqno
+.template eqno_details
+== Equation Numbers
+
+This tutorial describes the ZzTeX facilities for setting equation numbers on
+math displays. An equation number is set with the |\eqno| marker, which can
+appear in three places:
+
+# At the end of a single-line math display, before the closing |$$|.
+
+# At the end of an aligned math display, *after* the close brace of the
+|\eqaligned| and before the closing |$$|. In this case, the number pertains
+to the entire display.
+
+# At the end of a row of an aligned display, just *before* the |\cr| or
+close brace of the |\eqaligned|. In this case, the number pertains to
+the row in which it appears.
+#.
+
+Almost all book designs call for one of two formats of equation number. In
+most cases, the number consists of the chapter composite text and a sequence
+number within the chapter, as in "3.17". In a few cases, only a sequence
+number is used, as in "17". In the descriptions below, *chap* stands for the
+chapter composite text, while *num* stands for the equation sequence number. The
+sequence number is derived from the math display counter, in the same manner
+as section numbers are derived from the section counter.
+
+You can code an equation number in one of four ways:
+
+| \eqno
+| \eqno \tag{*xyz*}
+| \eqno *override*
+| \eqno *override* \tag{*xyz*}
+
+The optional *override* text is used to override the normal numbering sequence.
+A space or line break can be placed before and/or after the |\tag| command to
+aid readability. The |\tag| command must appear immediately following its
+paired |\eqno| in order to associate the tag with the correct equation
+number.
+
+The following paragraphs present the various forms of the *override* text for
+overriding the numbering sequence. Each case includes two examples, the
+first where the equations are numbered in the common (*chap*.*num*) format, and
+the second where the equations are numbered with only a sequence number, as
+in (*num*). The examples assume that the chapter number is 2 and the
+math display counter is at 4 prior to the display
+and also show the counter *after* the equation number is typeset.
+
+* |\eqno|&_&_&_Next sequence number
+
+The math display counter is incremented and its arabic form is used as
+the *num* text. This is the common case.
+
+&= Result when& Result when
+&= (*chap*.*num*) style& (*num*) style& Counter After
+----
+& (2.5)& (5)& 5
+&.
+
+* |\eqno +a|&_&_&_Next sequence number; use with suffix
+
+The math display counter is incremented and its arabic form is joined
+with the suffix following the plus sign to make up the *num* text.
+
+&= Result when& Result when
+&= (*chap*.*num*) style& (*num*) style& Counter After
+----
+& (2.6a)& (6a)& 5
+&.
+
+* |\eqno ,b|&_&_&_Same sequence number with suffix
+
+The math display counter is *not* incremented. Its arabic form is joined
+with the suffix following the comma to make up the *num* text.
+
+&= Result when& Result when
+&= (*chap*.*num*) style& (*num*) style& Counter After
+----
+& (2.4b)& (4b)& 4
+&.
+
+* |\eqno ,$'$|&_&_&_Same sequence number with suffix
+
+This is another example of the preceding case, showing the common use
+of a prime after the *num* text.
+
+&= Result when& Result when
+&= (*chap*.*num*) style& (*num*) style& Counter After
+----
+& (2.4&prime;)& (4&prime;)& 4
+&.
+
+* |\eqno A1|&_&_&_Ignore sequence number; use specified *num*
+
+The math display counter is ignored. The specified text is used as the
+complete *num* text.
+
+&= Result when& Result when
+&= (*chap*.*num*) style& (*num*) style& Counter After
+----
+& (2.A1)& (A1)& 4
+&.
+
+* |\eqno :A1|&_&_&_Next sequence number; use specified *num*
+
+The math display counter is incremented *but then ignored*. The specified
+text is used as the complete *num* text.
+
+&= Result when& Result when
+&= (*chap*.*num*) style& (*num*) style& Counter After
+----
+& (2.A1)& (A1)& 5
+&.
+
+* |\eqno =12;a|&_&_&_Set sequence number; use with suffix
+
+The math display counter is set to 12 and its arabic form is joined
+with the suffix following the semicolon to make up the *num* text. Note that
+the suffix (|a| here) is optional but the semicolon is required.
+
+&= Result when& Result when
+&= (*chap*.*num*) style& (*num*) style& Counter After
+----
+& (2.12a)& (12a)& 12
+&.
+
+* |\eqno !2B.1|&_&_&_Use specified text for number
+
+The chapter composite text and math display counter are ignored. The text
+following the exclamation point is the complete equation number. This
+feature is useful when you need to set an out-of-sequence equation number
+in something like a sidebar or a chapter appendix.
+
+&= Result when& Result when
+&= (*chap*.*num*) style& (*num*) style& Counter After
+----
+& (2B.1)& (2B.1)& 4
+&.
+
+* |\eqno >{*tag*}|&_&_&_Use equation number associated with tag
+
+The chapter composite text and math display counter are ignored. The equation
+number associated with the tag is duplicated for the equation number
+of this display.
+*.
+
+If you ever need to reset the math display counter, the following command
+will do it:
+
+| \setmathdisplaynumber{*num*}
+
+// Indexing
+// --------
+
+.phrase indexing indexing : text
+.template
+= Indexing Facilities, version 2
+
+This tutorial describes the second generation ZzTeX indexing facilities.
+These facilities are used to index a document with embedded indexing commands and
+then generate one or more indexes for typesetting.
+
+First, some definitions.
+
+* Locator.&_An item followng a heading that refers the reader to related
+information in the book. This is usually a page number or range,
+but sometimes a "See" or "See also." The term *locator* is also used
+for the commands that are inserted in the text to create index entries.
+
+* Main heading.&_The heading of a top-level entry in an index.
+
+* Raw index entry.&_A locator command such as |\xpage| generates
+a raw index entry in the raw index entry files. The entry contains
+unformatted information about the locator.
+
+* Sort override.&_An alternate heading used in place of a regular heading
+to specify how it should be sorted, For example, the heading "3-D"
+might have a sort heading of "three D".
+
+* Subheading.&_The heading of a second- or third-level entry in an index,
+subordinate to a main heading.
+*.
+
+== Indexing Locators
+
+Indexing locators are commands that are inserted in the text to produce raw index
+entries that ultimately make up the index. This section describes typical
+indexing locators. For another overview of locators, try |~.facility;
+locators|.
+
+Most locator commands produce a raw index entry that identifies a page or range of
+pages relevant to the headings.
+
+ \xpage{Automobiles}
+ \xpage{Automobiles|muscle cars}
+
+Locator commands begin with an |x| and include a type word that identifies
+the type of locator produced. The argument specifies one to three
+headings, separated by vertical bars (|&||). The first heading is the main heading
+and any remaining headings are subheadings.
+
+If the locator allows a page range, then the commands |\x*type*begin| and
+|\x*type*end| identify the beginning and ending positions of the range.
+
+ \xpagebegin{Automobiles}
+ ...
+ \xpageend{Automobiles}
+
+Some locators require an additional argument called the "text." This provides
+more information about the locator.
+
+ \xsee{Cars}{Automobiles}
+ \xseealso{Automobiles|muscle cars}{Automobiles|pony cars}
+
+Such locator commands produce locators that do not include a page number
+but rather text that refers the reader to other entries. The additional
+text argument is always the first argument of the locator command.
+
+=== Sort Overrides
+
+(To be supplied.)
+
+== Design File
+
+This section describes the commands that appear in the design file to define
+locators and their formatting and specify the design of the indexes in the
+book. The commands are described in the order in which they must appear in
+the design file.
+
+ \indexversion{2}
+
+This command must appear at the beginning of the Index section of the design
+file. It specifies that version 2 of the indexing facility is being used.
+
+=== Generating Indexes
+
+Multiple indexes can be generated from the raw index entries of a book. Each
+index is assigned a name and declared using the following command.
+
+| \generateindex{*name*}
+
+Typical names are |subject|, |author|, and |symbol|. For each generated
+index, ZzTeX produces an "index parameter file" with the same name as the
+index and the extension |zzp|. A parameter file contains information about
+the defined locators and information taken from the design definition for
+the named index. This information is used by the index generator to build
+the final index file. (See below for a description of index parameter files.)
+
+=== Defining Locators
+
+| \definelocator{*type*}{*attributes*}{*optional-format*}
+
+This command defines an index locator and establishes the indexing commands
+used to include the locator in the index. The first argument is the type word that
+identifies the type of locator. Typical examples are |page|, |figure|, and
+|see|.
+
+The second argument gives the attributes of the locator. It is a series
+of keywords:
+
+* |\page|, |\nopage|&_Indicates whether the locator includes a page number.
+
+* |\range|, |\norange|&_Indicates whether the locator may be used to specify
+a range of pages in addition to a single page.
+
+* |\text|, |\notext|&_Indicates whether the locator includes additional text.
+*.
+
+Assume that the type is |thing|. In all cases, the following locator command
+is defined:
+
+| \xthing{*headings*}
+
+If a range is allowed, then two additional commands are defined:
+
+| \xthingbegin{*headings*}
+| \xthingend{*headings*}
+
+If the locator includes additional text, then all commands take a first
+argument specifying the text:
+
+| \xthing{*text*}{*headings*}
+| \xthingbegin{*text*}{*headings*}
+| \xthingend{*text*}{*headings*}
+
+The third argument to |\definelocator| is optional and specifies the format
+of the locator in the final index. If the braces are empty, then the
+separetely defined format with the same name as the locator is used. To
+provide the format, use three sets of braces to specify the second, third,
+and fourth arguments for the |\definelocatorformat| command (below). The new
+format will be given the same name as the locator.
+
+=== Defining Formats
+
+| \definelocatorformat{*name*}{*rank*.*order*}{*level-1-items*}{*level-2-items*}
+
+This command defines a locator format with the given name for the final index.
+The third and fourth arguments specify items that are needed to format
+the locator. The level-1-items are used for locators associated with main
+headings, while the level-2-items include overrides that pertain to
+subheadings (both second- and third-level).
+
+The second argument specifies the rank and order of this locator. The *rank*
+determines this locator's position in the overall sequence of locators for a
+heading. Typically, the page locators appear first, then the "see" locator,
+then any "see also" locators.
+
+The *order* determines the order of the locator within a series of locators
+all with the same page number. Typically, plain page numbers appear first,
+then pages with suffix 'f' for figure, then pages with suffix 't' for table,
+etc.
+
+& Mustang, 13, 44--49, 45*f*, 45*t*
+&.
+
+Each item list argument is in the following format:
+
+| {*item*:*text*&|*item*:*text*&|...}
+
+There is a sequence of items separated by bars (|&||). Each item consists of
+an item tag, a colon (|:|), and some text. The following item tags are
+available.
+
+* |prefix1|&_Text to precede all locators of this rank, when this is
+the first locator after the heading. Defaults to empty.
+
+* |prefix2|&_Text to precede all locators of this rank, when this is
+not the first locator after the heading. Defaults to |prefix1|.
+
+* |tmplt|&_Template for this locator when there is a single page
+or no page (only text). No default.
+
+* |rtmplt|&_Template for this locator when there is a range of pages.
+No default.
+
+* |sep|&_Separator between locators of this rank. Defaults to empty.
+
+* |suffix|&_Text to follow all locators of this rank. Defaults to empty.
+
+* |term|&_Text to terminate the entire sequence of locators. Defaults to empty.
+*.
+
+The templates |tmplt| and |rtmplt| may include the following substitutors.
+
+&= Substitutor& What is substituted
+----
+& |?P|& Single page or first page of range.
+& |?Q|& Second page of range.
+& |?T|& Text (e.g., for |see| or |seealso| locators).
+& |??|& Single question mark (|?|).
+&.
+
+The builtin locators can be found in the ZzTeX file zzindexv2.tex. They
+are good examples of how locator formats are defined.
+
+== Index Design
+
+Each index of a book is typeset inside an index block whose design is
+specified, as usual, with a design macro. The parameters of the design macro
+include many common ones, but also a few that are special for index designs.
+The following paragraphs describe the special parameters.
+
+* |\def \alphaformat ##1{*text*}|
+
+This parameter specifies how to format the break between letters produced by
+the |\alphbreak{...}| command. The macro is passed the argument text from the
+|\alphabreak|.
+
+* |\divisions = {*div1*,*div2*,...}|
+
+This parameter specifies the book divisions to be included in the index.
+The value can be |\all|; a list of division names; or |\allbut| followed by a
+list of division names.
+
+* |\locators = {*loc1*,*loc2*,...}|
+
+This parameter specifies the locators to be included in the index. The value
+can be |\all|; a list of locators; or |\allbut| followed by a list of locators.
+Each locator consists of the locator type followed by an optional colon and
+format name. If a format name is not included, then the locator is formatted
+according to the format with the same name as the locator.
+
+* |\indexparams = {...}|
+
+This parameter specifies index parameter statements to be included in the
+index parameter file. See below for a description of the parameter
+statements.
+
+* |\position = {*options*}|
+
+This parameter specifies the overall format of the index. It consists of a
+sequence of the following options:
+
+&= Option& Meaning
+----
+& |\oneup|& Run index in one column.
+& |\outline|& Format entries in outline style.
+& |\runin|& Format entries in run-in (paragraph) style.
+& |\threeup|& Run index in three columns.
+& |\twoup|& Run index in two columns.
+& |\usetextmeasure|& Use the text measure for the columns.
+& |\usetextwidth|& Synonym for |\usetextmeasure|.
+& |\usetypewidth|& Use the type area width for the columns.
+&.
+*.
+
+=== Entry Formatters
+
+(To be supplied.)
+
+== Raw Index Entry Files
+
+ZzTeX populates raw index entry files as it encounters indexing locator
+commands in the book files. Each indexing locator generates one raw entry
+record in the file whose name is the same as the division with an extension
+of |.zzi|. A raw entry record has the following format. The semicolon (|;|)
+represents the field separator character hex B8, chosen because it cannot
+appear in an index heading.
+
+| *type*;*code*;*folio*;*main-head*;*subhead*;*sub-subhead*;*text*
+
+The *code* is |S| for a single page entry, |B| for a begin page range entry,
+or |E| for an end range entry.
+
+== Index Parameter Files
+
+(This material is highly technical and incomplete.)
+
+An index parameter file contains a series of statements that specify
+parameters for the index generator (zzindex2.exe). Each time an index is
+generated, at least two parameter files are read:
+
+* *index-name*.zzp&_The parameter file generated by the |\generateindex|
+command for the specific index being generated.
+
+* zzindex2.zzp&_A generic parameter file included with ZzTeX.
+*.
+
+Each statement in a parameter file has the following format:
+
+| [*mode*] *keyword* *item* ... ;
+
+The optional mode is enclosed in brackets and specifies the mode to which
+the statement pertains. If the mode is not specified, the statement is used
+in all modes. The items are separated by spaces. The statement ends with a
+semicolon.
+
+A parameter file may also contain blank lines and comment lines beginning
+with |//|. Comment lines are ignored.
+
+Statements that specify actions for tokens in headings include the token for
+which the action is to be performed. A token can be one of the following:
+
+&= Token& Meaning
+----
+& |SP|& space
+& |\SP|& TeX \<space> command
+& |\*name*|& TeX |\*name*| command
+& |\*c*|& TeX |\*c*| character command
+& *x*& any other character
+&.
+
+The following statements can appear in an index parameter file.
+
+* |begin-group *token* ;|
+
+The token begins a group and is discarded. The mode stack is pushed with the
+current mode.
+
+* |define-format *format-text* ;|
+
+(To be supplied.)
+
+* |define-locator *definition-text* ;|
+
+(To be supplied.)
+
+* |[mode] discard *token* ;|
+
+The token is discarded and does not appear in the canonicalized heading.
+
+* |[mode] discard/u *token* ;|
+
+The token is removed from the heading but suffixed to the canonicalized
+heading.
+
+* |divisions *divisions-text* ;|
+
+This statement specifies the required divisions from the |\divisions| parameter
+of the index design.
+
+* |end-group *token* ;|
+
+The token ends a group and is discarded. The mode stack is popped.
+
+* |include-param *file* ;|
+
+This statement requests that the named index parameter file be loaded.
+
+* |include-raw *file* ;|
+
+This statement requests that the named raw index entry file be included in
+the set of raw index entry files.
+
+* |index "*name*" ;|
+
+This statement specifies the name of the index to be generated.
+
+* |[mode] invalid *token* ;|
+
+The token is invalid and an error message is produced.
+
+* |[mode] keep *token* ;|
+
+The token is preserved as is on the canonicalized heading.
+
+* |locators *locators-text* ;|
+
+This statement specifies the required locators from the |\locators| parameter
+of the index design.
+
+* |math/u *token* ;|
+
+The token begins or ends math mode. The mode stack is pushed or popped as
+appropriate. The token is suffixed to the canonicalized heading.
+
+* |noise/u "*word*" ;|
+
+If the word appears at the beginning of a subheading or sub-subheading, it
+is removed but suffixed to the canonicalized heading.
+
+* |[mode] replace *token* "*text*" ;|
+
+The token is discarded and replaced with the specified text, which is not
+rescanned.
+
+* |[mode] replace/u *token* "*text*" ;|
+
+The token is discarded and replaced with the specified text, which is not
+rescanned. The token is, however, suffixed to the canonicalized heading.
+
+* |root "*name*" ;|
+
+This statement specifies the name of the book's root file.
+
+* |sort *mode* ;|
+
+(To be supplied.)
+
+* |[mode] synonym *token* "*text*" ;|
+
+The token is discarded and replaced with the specified text, which is then
+rescanned.
+*.
+
+// Letterspacing
+// -------------
+
+.details letterspace_details \letterspace
+.template letterspace_details
+== Letterspacing
+
+This tutorial describes the letterspacing facility in ZzTeX. All letterspacing
+is accomplished with the \letterspace command, which comes in two flavors:
+
+| \letterspace{*amount*}{*text*}
+
+This command letterspaces the specified text. The amount of letterspace is
+specified by the first argument, usually in ems.
+
+| \letterspace{*amount*,*space*}{*text*}
+
+This command operates like the first variant, except that the width of a
+space is specified explicitly after the letterspace amount.
+
+Note that |\letterspace| commands are usually embedded in design macros in
+the design file. Rarely does one appear directly in book files. However, to
+code titles that will be letterspaced, the compositor needs to understand
+the behavior of the |\letterspace| command.
+
+=== What Happens Automatically
+
+What a title or other text is letterspaced, the |\letterspace| command does
+the following things automatically:
+
+* Inserts the letterspace amount between adjacent pairs of keyboarded
+characters (e.g, |AB|, |01|, |l.|). A "keyboarded character" is one that
+is typed on the keyboard, not coded like |\copyright| or |\alpha|.
+
+* Replaces explicit spaces and tie characters (|~~|) with the space width
+derived from the first argument to the |\letterspace| command.
+
+* Recognizes en dashes (|--|), em dashes (|---|), and double quotes (|``...''|)
+and does not break them apart with letterspace.
+
+* Does *not* letterspace before or after ZzTeX commands, open braces (|{|), or
+close braces (|}|). This means that there will be no letterspacing around
+|\copyright|, |\ellipsis|, |\alpha|, |\times|, etc.
+*.
+
+=== Explicit Control of Letterspacing
+
+The automatic rules take care of many letterspacing problems. However,
+sometimes you need explicit control over letterspacing, so the following
+commands can be used within a title that is letterspaced. If the same
+title is carried elsewhere (such as into a running head)
+but is not letterspaced there, these commands have no effect.
+
+& |\lsp|& Insert a letterspace amount here.
+& |\lspspace|& Insert a letterspaced space here.
+& |\lspoff|& Turn off letterspacing completely.
+& |\lspon|& Restore letterspacing.
+&.
+
+=== An Example
+
+The following diabolical example shows the power of the letterspacing
+facility. Here is a chapter title that is letterspaced:
+
+ \chapter{Text Access\titlenl; ``Methods''\titlenl;
+ \lspoff$a-b'\times c$\lspon\lsp---Why~~Isn't It?}
+
+This produces the following title, where the vertical bar represents a
+letterspace and the underscore represents a space:
+
+& T&|e&|x&|t_A&|c&|c&|e&|s&|s
+& "&|M&|e&|t&|h&|o&|d&|s&|"
+& *a*&thinsp;-&thinsp;*b*&prime;&thinsp;&times;&thinsp;*c*&|---&|W&|h&|y_I&|s&|n&|'&|t_I&|t&|?
+&.
+
+If this title is used in a running head or table of contents, the control
+commands |\lspoff|, |\lspon|, and |\lsp| are ignored (as well as |\titlenl|,
+of course). Note that the |\lsp| command is necessary to produce a
+letterspace before the em-dash, since letterspacing is automatically
+supressed after the |\lspon| command.
+
+// Runners
+// -------
+
+.phrase runners runners
+.synonym running heads
+.synonym running feet
+.template
+= Running Heads and Feet
+
+Running heads and feet are collectively called *runners*. A design file can
+make use of multiple styles of runners. One is built into ZzTeX:
+
+* |blind|&_A style with empty running heads and feet.
+*.
+
+ZzTeX assumes the existence of two styles that must be defined in the
+design file:
+
+* |normal|&_The style for normal body pages.
+* |chapter|&_the style for chapter opener pages.
+*.
+
+Specific designs may use additional styles defined in the design file,
+for example:
+
+* |part|&_The style for part opener pages.
+*.
+
+For each style (except |blind|), the design file contains two definitions,
+one for the running head and one for the foot. These macros are responsible
+for formatting the header and footer, often using mark information to
+obtain chapter numbers, section titles, etc., and using |\folio| to obtain
+the page number:
+
+ \def \headernormalformat {...}
+
+ \def \footernormalformat {...}
+
+ \def \headerchapterformat {...}
+
+ \def \footerchapterformat {...}
+
+== Runner Commands
+
+The following commands are used to establish the runner styles
+for subsequent pages in the book.
+
+~foreach cmd, command_set;
+* |~.cmd;|
+~end;
+*.
+
+Those commands are lovely but rarely used explicitly, except in
+the front matter. Instead, runners are established using the |\runners|
+parameter of certain blocks.
+
+== |\runners| Parameter
+
+The |\runners| parameter is a design parameter for certain blocks in ZzTeX.
+It is usually specified in the design macros for those blocks in the design
+file, but you can override the normal styles by using the |\with| modifier on
+such blocks.
+
+The following list specifies the blocks that use the |\runner| parameter to
+perform an implicit |\setrunners| command. Each entry shows the standard
+value of the parameter:
+
+& |\part|& | \runners={blind,normal}|
+& |\quasipart|& |\runners={blind,normal}|
+& |\chapter|& |\runners={chapter,normal}|
+& |\quasichapter|& |\runners={chapter,normal}|
+& |\appendix|& |\runners={chapter,normal}|
+& |\float|& |\runners={normal}|
+&.
+
+Imagine you had a quasichapter and you wanted to suppress the drop folio
+normally set by the chapter runners. You simply do the following:
+
+ \with{\runners={blind,normal}}
+ \quasichapter{Weird Back Matter}
+
+You must remember to specify a second style of |normal| for the remaining
+pages of the quasichapter or they will all have blind runners.
+
+You can accomplish the same goal as follows:
+
+ \quasichapter{Weird Back Matter}
+ \overriderunners{blind}
+
+The |\float| block uses the |\runner| parameter to perform an implicit
+|\overriderunners| command.
+The float mechanism arranges to perform an |\overriderunners| with the
+style specified by the |\runner| parameter when it is about set a page
+containing *only floats*. If you want to suppress the running head on such a
+page:
+
+ \with{\runners={blind}}
+ \float{figure}
+
+However, see the |\userharea| block modifier for the best way to
+accomplish this.
+
+== Some Examples
+
+A book with a two-page-spread chapter opener could use the |\runners|
+parameter in the chapter design to set the correct runners for both
+opener pages:
+
+ \def \chapterdesign {%
+ ...
+ \def \paging {\freshpage{\short\floats\even}}%
+ ...
+ \runners = {blind,chapter,normal}%
+ ...}
+
+Some books have part pages but Chapter 1 occurs before Part I. If the
+running heads include the part number and title, that will probably fail in
+Chapter 1 because no part has been established. If the design file provides
+a special runners style |normalnopart| for such "part-less" chapters, you
+can use it quite easily:
+
+ \with{\runners={chapter,normalnopart}}
+ \chapter{The First Chapter}
+
+// \tabbing Block
+// -------- -----
+
+.details tabbing_details \tabbing
+.template tabbing_details
+== Tabbing Facilities
+
+This tutorial describes the ZzTeX tabbing facilities. The primary
+tabbing feature is the |\tabbing| block, which replaced the tabbing
+capability of the |\text| block in ZzTeX v17.2.
+
+=== The |\tabbing| Block
+
+The |\tabbing| command has the following syntax:
+
+| \tabbing{*type*}
+| *line of text*\nl
+| *another line*
+| &_*of text*\nl
+| ...
+| *last line of text*\nl
+| \endtabbing
+
+The *type* argument specifies the type of the tabbing block and thus its
+design. A line in the typeset block can occupy multiple lines in the
+TeX file but must end with an |\nl| command. Line breaks in the file are
+not taken verbatim. The |\nl| after the final line is optional.
+
+=== Setting Tab Stops
+
+There are two ways to set tab stops for the lines in a tabbing block.
+The first is to set uniform tab stops across the line. The distance
+between tab stops is specified by the |\defaulttabwidth| design
+parameter. If this parameter is a positive dimension, say, |14pt|,
+then tab stops are set every 14 points across the line.
+
+The second method of setting tab stops is to include a *template line*
+at the beginning of the tabbing block. For example,
+
+ \tabbing{algorithm}
+ @Cxxxxx@.xxxxx@.xxxxx@.xxxxxxxxxxxxxxx@.@D
+
+The |@C| command clears any existing tab stops. Each |@.| command
+sets a tab stop at the current width of the line. In this example,
+there will be a tab stop at the width of 5 |x| letters, 10 letters,
+15 letters, and 30 letters. The |@D| command discards the line
+so it doesn't show up on the page. The line exists only for the
+purpose of setting the stops.
+
+=== Tabbing
+
+The |@>| command is used to tab from one tab stop to the next. In this
+example, assume that tab stops are set every 14 points.
+
+ \tabbing{algorithm}
+ $\mvar{scores} = \{\}$\qquad // score accumulator maps doc IDs to scores\nl
+ \For $w\in q$ \Do\nl
+ @>\For $d, \mvar{count}\in \mvar{Idx}.\mvar{fetch}\_\mvar{docs}(w)$ \Do\nl
+ @>@>$\mvar{scores}[d] = \mvar{scores}[d] + \mvar{score}\_\mvar{term}(\mvar{count})$
+ @>\EndFor\nl
+ \EndFor\nl
+ \Return top $k$ documents from $\mvar{scores}$\nl
+ \endtabbing
+
+The third line is indented 14 points, the fourth line is indented 28 points, etc.
+
+Note that each |@>| command tabs to the next tab stop in the sequence of stops,
+regardless of whether the width of the text is beyond that stop. If the width
+of the text is beyond the next stop, the text following that stop will overprint
+the preceding text.
+
+=== Vertical Adjustments
+
+The are two ways to make vertical adjustments between lines of text.
+The first is to code a blank line:
+
+ \tabbing{algorithm}
+ $\mvar{scores} = \{\}$\qquad // score accumulator maps doc IDs to scores\nl
+ \nl
+ \For $w\in q$ \Do\nl
+
+A blank line produces the amount of vertical space specified by the
+|\tabbinggapskip| design parameter. This vertical space is usually
+less than a full line.
+
+The second method of performaing a vertical adjustment is to use the
+|\adjusttabbing| command in between two lines. Try |~.facility; \adjusttabbing|
+for more information.
+
+=== Line Numbers
+
+[To be supplied.]
+
+// \tabular Block
+// -------- -----
+
+.details tabular_details \tabular
+.template tabular_details subclass_set command tabular
+== Tabular Facilities, version 3
+
+This tutorial describes the third generation of the ZzTeX tabular
+facilities. These facilities are used to produce tabular material in
+text or in a floating table.
+
+First, some definitions:
+
+* Cell.&_The intersection of each row and column is called a cell.
+The cell contains the text at that row/column intersection.
+
+* Column.&_Tabular material is organized into vertical columns.
+Each column has a particular format, specified in the template.
+
+* Gutter.&_The gutter is the horizontal space between columns. It is
+typically 1 pica and can stretch or shrink if tables are
+to be forced to a particular width. The gutter between two
+columns can be changed on a case-by-case basis.
+
+* Interrow space.&_An extra amount of vertical space that is placed between
+rows of tabular material.
+
+* Picture.&_A sequence of characters used to determine the alignment
+of decimal-aligned numeric columns.
+
+* Row.&_Tabular material is organized into horizontal rows, with
+
+* Ruled table.&_Tabular material that includes vertical rules.
+
+* Template.&_An argument to the \tabular command that specifies the
+number of columns and the format for each column.
+*.
+
+=== The |\tabular| Command
+
+The |\tabular| command has the following syntax:
+
+| \tabular{*type*}{*template*}
+| *row* ... \cr
+| *row* ... \cr
+| ...
+| *row* ... \cr
+| \endtabular
+
+The *type* argument specifies the type of the tabular block and thus its
+design. The *template* argument specifies the number of columns and their
+associated formats (see below).
+
+Each row consists of a series of cells and is terminated by the |\cr| command
+("carriage return" or "complete row"). The cells are specified as follows:
+
+| *cell-1*&& *cell-2*&&&& *cell-4*&& ...&& *cell-n*\cr
+
+There is one cell for each column and they are separated by ampersands
+(|&&|). It is important to eliminate any spaces *preceding* the ampersands,
+although spaces following them are fine. An empty cell is allowed, as with
+the third cell above.
+
+In a ruled table, every cell in a row must be specified, although some may
+be empty (the cells corresponding to rule columns usually are). In a table
+that is not ruled, rightmost cells that are empty need not be specified.
+
+=== How ZzTeX Formats Tabular Material
+
+ZzTeX goes through the following steps to format tabular material.
+
+# The template is analyzed to check it, count the columns, and prepare the
+individual column formats.
+
+# All rows are read and each cell is formatted in its own box.
+
+# The maximum width of the cells in each column is determined, and all the
+cell boxes in that column are set to the maximum width. (See |\hidewidth| for
+an exception.)
+
+# All the boxes in each row are set side by side, with the column gutter
+between them. The widths of the rows are forced to the specified overall
+table width, if required by the design. The extra space is placed in the
+gutters.
+
+# The rows are butted together vertically, with no extra space between
+them.
+#.
+
+There are some interesting implications of this scheme:
+
+* Because every cell box in a column, except the widest, will not be filled
+with text, the template for each column must include at least one |\hfil|
+command to take up the slack. These |\hfil| commands are included in the
+builtin templates described below.
+
+* Because there is no extra space between the rows, each row must occupy the
+full height and depth of the tabular body font, plus any interrow space.
+Otherwise the rows will not be spaced uniformly. It is this requirement that
+makes ruled tables tricky.
+*.
+
+=== The Template
+
+The template argument to the |\tabular| command is coded as a sequence of
+format specifications, one for each column, in the desired order.
+
+| \tabular{*type*}{@*x* @*y* ... @*z*}
+
+The available column formats are specified as follows. Spaces and line
+breaks may appear in the template for readability.
+
+* |@l|&_Single line; text flush left.
+
+* |@c|&_Single line; text centered.
+
+* |@r|&_Single line; text flush right.
+
+* |@L{*picture*}|&_Decimal-aligned number; text flush left. See below.
+
+* |@C{*picture*}|&_Decimal-aligned number; text centered.
+
+* |@R{*picture*}|&_Decimal-aligned number; text flush right.
+
+* |@p{*width*}|&_Text set in multiple lines as one or more
+paragraphs. The width of the line is specified.
+The raggedness, hang, and paragraph skip is
+determined by the design.
+
+* |@e{*width*}|&_Empty column of the specified width.
+
+* |@s{*sequence*}|&_Special custom column. See below.
+
+* |@&||&_Column contains a vertical rule whose color and
+width are determined by the design. This is a real
+column that must be included in each row, but is
+normally empty.
+
+* |@!{*color*}{*width*}|&_Column contains a vertical rule whose color and
+width are specified.
+
+* |@>{*width*}|&_This template may appear following any of the
+above templates. It specifies the exact width of
+the gutter between the current column and the next,
+in place of the standard gutter determined by the
+design. Rule columns are surrounded by gutters half
+as wide as the standard, unless overridden with |@>|.
+If the width is follow by an asterisk (|&*|), then
+the gutter can vary in width according to the
+|\columngutter| parameter of the design.
+*.
+
+=== Decimal-Aligned Columns
+
+Decimal-aligned column templates include a picture that determines how the
+cells are aligned. The picture is composed of the following characters:
+
+& |0|& Represents a digit.
+& |.|& Specifies the position of the decimal point.
+& |,|& Indicates a comma in the number.
+& |$-$|& Indicates that the number may be preceded by a negative sign.
+& |(...)|& Indicates that the number may be surrounded by parentheses.
+&.
+
+If there is no decimal point in the picture, the cells are aligned on the
+right. If there is a decimal point, they are aligned on the point. The
+difference between left-, center-, and right-aligned number columns is
+irrelevant unless a nonnumeric cell in the column is wider than the widest
+numeric cell. In this case the numeric cells are set flush left, center, or
+right on those wider cells. This happens when the column heads are wider
+than the numbers.
+
+Because ZzTeX splits decimal-aligned numbers at their decimal points, it is
+necessary that both halves of the picture and of all the cell numbers
+be balanced with respect to braces and dollar signs.
+
+=== Special Custom Columns
+
+A special custom column can be used to construct a complex column that
+contains boilerplate material. For example, imagine a left column in which
+all entries should be in italic and enclosed in parentheses. This column
+could be specified as follows:
+
+| \tabular{table}{... @s{\emph{(#)}\hfil} ...}
+| ...& special& ...\cr
+| ...& critical& ...\cr
+
+The two cells would appear in italic in this format:
+
+| ... *(special)* ...
+| ... *(critical)* ...
+
+Each cell is formatted by replacing the template sequence's sharp sign (|#|)
+with the text specified in the row cell, then using the resulting sequence as
+the final text of the cell. In the first row above, the final text would be
+|\emph{(special)}\hfil|. Note that the template includes an |\hfil| command to
+take up the slack and left-align the text. Don't forget the sharp sign and
+at least one |\hfil|.
+
+=== |\tabular| Tools
+
+The following list includes all the tools that can be used with a |\tabular|
+block. You can explore these various commands to learn what they do.
+
+~foreach name, name_set;
+* |~.name;|
+~end;
+*.
+
+// \todo Block
+// ----- -----
+
+.details todo_details \todo
+.template todo_details
+== To-Do Facility
+
+The to-do facility allows you to place a
+reminder in a book file and optionally to typeset '???' to represent text
+that is still to come.
+
+The \todo command has three forms. The first form is used most frequently.
+
+| \todo{This math display needs to be cleaned up later.}
+
+This command displays the message on your console and includes it in the log
+file. Processing continues without interruption. A summary of the number of
+to-do reminders is displayed at the end of the run.
+
+| \todo{!Cannot continue until this table is formatted correctly.}
+
+This variant includes the message in the log file, but then generates a
+warning message and halts execution. You can continue processing by
+pressing Enter. Use this variant to force a halt when the division is
+processed.
+
+| \todo{?cover image credit}
+
+This command is similar to the first variant, but also typesets a triple
+question mark (|???|) where the |\todo| appears. You can use this variant to set
+the standard triple question mark where text will be supplied later.
+
+To obtain a list of all the outstanding to-dos, try |~.facility; to-dos|.
+
+.end
diff --git a/Master/texmf-dist/doc/plain/zztex/zzphrase.dat b/Master/texmf-dist/doc/plain/zztex/zzphrase.dat
new file mode 100644
index 00000000000..5265a533721
--- /dev/null
+++ b/Master/texmf-dist/doc/plain/zztex/zzphrase.dat
@@ -0,0 +1,3085 @@
+//---------------------------------------------------------------------------
+//
+// Copyright (c) 2012--2018 by Paul C. Anagnostopoulos
+//
+// This software may be used on your own computer systems and may
+// be distributed freely to other people. It may not be sold or
+// incorporated into any commercial products.
+//
+// Paul C. Anagnostopoulos
+// Windfall Software
+// 978 371-2316
+// paul@windfall.com
+//
+//---------------------------------------------------------------------------
+//
+// ZzExplore: Describe built-in TeX, Plain TeX, ZzTeX, and design
+// file entities for compositors.
+//
+// This is the main phrase file.
+//
+// Created: 3 March 2016
+
+
+// The following three templates are used to produce helpful explanations
+// for phrases that do not match.
+
+// No match to phrase
+
+.template no_match
+= No Match
+Your request: ~.phrase;
+
+There is no match for "~.word;".
+
+~if not empty? choice;
+Some possibilities are:
+~foreach ph, choice;
+* ~.ph;
+~end;
+*.
+~fi;
+----
+If you think your request is reasonable, please inform Paul.
+
+// Ambiguous match to phrase
+
+.template ambiguous_match
+= Ambiguous Match
+Your request: ~.phrase;
+
+The word "~.word;" is ambiguous.
+
+Some possibilities are:
+~foreach ph, choice;
+* ~.ph;
+~end;
+*.
+----
+If you think your request is unambiguous, please inform Paul.
+
+// Partial phrase
+
+.template partial_phrase
+= Partial Phrase
+Your request: ~.phrase;
+
+These words match the beginning of a phrase, but additional
+words are needed.
+
+~if not empty? choice;
+Some possibilities are:
+~foreach ph, choice;
+* ~.ph;
+~end;
+*.
+~fi;
+
+If you are looking for a concept instead of specific examples,
+it might help to try the plural of the word.
+----
+If you think your request is complete enough to produce
+a description, please inform Paul.
+
+// Help Text
+// ---- ----
+
+
+// Help
+
+.phrase help help : text
+.template
+= ~.facility; v~.version;
+
+~.facility; allows you to view descriptions of characters, commands,
+block designs, and other entities that are defined by built-in TeX,
+Plain TeX, ZzTeX, and book design files. It can also present more
+detailed reports on concepts such as tags and tabular material.
+
+Invoke ~.facility; as follows:
+
+| > ~.facility; *word* *word* ...
+
+The *word* parameters form a phrase that ~.facility; uses to determine
+which information you want to see. If you don't include any words, this
+help text is displayed. Do *not* include question words and verbs in your
+request (e.g., "what is").
+
+~include command_line_chars;
+
+Without any options, the description is displayed on your terminal. If you
+want to view a more stylish description in your browser, enter
+
+| > ~.facility; -browser *word* *word* ...
+
+The browser starts up in an independent window, allowing you to work and
+read the description at the same time. Remember that you can close the
+browser window with Alt+F4.
+
+It is recommended that you add the following
+alias to your 4NT/Take Command alias file:
+
+ exp*lore=~.facility; -browser %$
+
+For a list of interesting examples of ~.facility;, enter
+
+| > ~.facility; examples
+
+For a list of what's new in version ~.version; and earlier versions, enter
+
+| > ~.facility; what's new
+
+.phrase examples examples : text
+.template
+= Examples
+
+Here are some examples of things you can do with ~.facility;.
+
+* To see an overview of the current project:
+
+ ~.facility; overview
+
+* To learn about a particular command:
+
+ ~.facility; \overrideparlength
+
+* To find out whether a command is available for the current book:
+
+ ~.facility; \separatefloat
+
+* To get information about a particular math character:
+
+ ~.facility; \beta
+
+* To find out which types of enunciations or lists are available:
+
+ ~.facility; enunciations
+ ~.facility; lists
+
+* To see some details about a particular enunciation:
+
+ ~.facility; \enunciation theorem
+
+* To learn the names of the zzd design macros for enunciations:
+
+ ~.facility; enunciation designs
+
+* To see all the details about the design of a particular enunciation:
+
+ ~.facility; \enunciationtheoremdesign details
+
+* To learn what a count register is:
+
+ ~.facility; counts
+
+* To get a list of all count registers or learn about a particular one:
+
+ ~.facility; all counts
+ ~.facility; \sectionnumber
+
+* To see which type styles are available in the current book:
+
+ ~.facility; type styles
+
+* To find out which type relationship commands are available
+for a particular style:
+
+ ~.facility; \tt
+
+* To find out which styles are established for a particular type
+size and whether they can be used in math:
+
+ ~.facility; \footnotesize
+
+.phrase whats_new what's new : text
+.synonym what is new
+.template
+= What's New in ~.facility; v~.version;
+
+* Complete description of the |\enunciation| block.
+* Complete description of the indexing facility.
+* Report of all bibliography entries for the project.
+* Report of missing art files.
+* List of commands for bibliography citations.
+* Improved word matching for design elements that are not blocks.
+* Improved report on at-sign commands.
+* Complete documentation on the ZzSizeArt utility.
+* Complete documentation on the new |\tabbing| block.
+*.
+
+== What's New in ~.facility; v1.1
+
+* This "what's new" report.
+* Improved report on math classes.
+* Improved report on individual characters.
+* Improved report on Greek letter commands.
+* Report on the new |\immediatemathdisplay| modifier.
+* Improved report on the |\immediatesublist| modifier.
+* Reports on the new |\breakabove| and |\breakbelow| modifiers.
+* Improved reports on the |\bottomfloat| et al. modifiers.
+* New page make-up report.
+* Complete documentation on the |\tabular| block and related commands.
+* Lists of commands for horizontal spacing and vertical spacing.
+* Report on penalties.
+* Complete documentation on the |\todo| command.
+* Complete documentation on the title adjustment commands.
+* Report on block modifiers.
+* Complete documentation on the |\code| block and related commands.
+* Improved documentation on tags.
+* Complete documentation on the various forms of |\eqno|.
+* Complete documentation on the |\letterspace| command.
+* Complete documentation on the |\art| block.
+* Complete documentation on running heads and feet (runners).
+*.
+
+// ZzTeX et al Phrases
+// ----- -- -- -------
+
+
+// Accents
+
+.phrase accents accents
+.synonym text accents
+.template
+= Accent Commands
+
+An accent command produces an accent over a character.
+For example,
+
+ Ha\v{c}ek na\"{\i}vet\'e, anyone?
+
+produces
+
+& Ha&ccaron;ek na&iuml;vet&eacute;, anyone?
+&.
+
+Here is a list of all the accent commands.
+
+&= Command& Description
+----
+~foreach acc, accent_table;
+& |~.acc;|& ~.accent_table[acc];
+~end;
+&.
+----
+For information on a specific accent, try |~.facility; \*name*|.
+
+// (Assumes that the 'one_command' group will also be populated.)
+.phrase one_accent <name> accent
+.synonym accent <name>
+.synonym <name> text accent
+.synonym text accent <name>
+.template
+= |~.name;| Accent Command
+
+~include common_info;
+
+~.comment;
+
+An accent command produces an accent over a character.
+----
+For a list of all accents, try |~.facility; accents|.
+
+// Attributes
+
+.phrase attributes attributes : text
+.synonym command attributes
+.template
+= Attributes
+
+When ~.facility; reports information about commands, math characters, and
+other entities, it includes an item called *attributes*. An attribute
+specifies special behavior of the command or character. Here is a list
+of all the attributes.
+
+* internal: The command is internal to Plain TeX or ZzTeX and is never
+used directly in design or book files.
+* long: The argument to the command can include multiple paragraphs.
+* outer: The command can only be used directly in a book file; it cannot
+be used by another command.
+* limits: The large operator (e.g., |\sum|) sets its limits above and below.
+* no limits: The large operator sets its limit as sub- and
+superscripts.
+* display limits: The large operator set its limits above and below when
+used in a math display; as scripts when used in text.
+*.
+
+// Blocks
+
+.phrase blocks blocks : text
+.synonym elements
+.template
+= Blocks
+
+The block is the primary design element provided by ZzTeX design
+files. A block generally spans a large amount of text that must
+be formatted in a special way. Examples are lists, footnotes,
+and framed text.
+
+Most blocks are started and ended with specific commands:
+
+ \list{bullet}
+ \item ...
+ ...
+ \endlist
+
+A few blocks, however, are started and ended with the same command:
+
+ \footnote{This is a footnote that will appear at the bottom.}
+
+A footnote has only one design style, or *type*. However, there can be an
+arbitrary number of different types of lists, such as bullet, number,
+label, and dialog. If a block requires a type, the type name is the first
+argument to the block command, as with |\list{bullet}| above.
+
+Two blocks, |\text| and |\list|, can also be nested to produce, say,
+multi-level lists. ZzTeX maintains the level counter automatically.
+
+Each block type and level has its own design. The designs are
+embodied in design macros in the design file. For example,
+the name of the design macro for a second-level bullet list is
+|\listbulletiidesign|. A design macro is essentially a list of
+assignments to *parameters* that control the formatting of the
+block's text.
+
+There are two ways to modify the design of a specific block.
+The first is to use a variant modifier, which produces predetermined
+changes to the design. Try |~.facility; variants| for more information.
+The second method is the |\with| modifier, which alters specified
+design parameters for the block. Try |~.facility; \with| for
+more information.
+----
+For a list of all the available blocks, try |~.facility; all blocks|.&/
+For details on a specific block, try |~.facility; \*name*|.
+
+.phrase all_blocks all blocks
+.template
+= List of Blocks
+
+This is the list of all the block elements available in ZzTeX.
+
+&= & Multiple& Can be& Used in
+&= Block command& types?& nested?& ~.project; design?
+----
+~foreach blk, type_table;
+& |~.blk;|& ~.type_table[blk];& ~.nest_table[blk];& ~.used_table[blk];
+~end;
+&.
+----
+For more information, try |~.facility; blocks|&/
+For information on a particular block, try |~.facility; \*name*|
+
+// (Assumes that the 'one_command' group will also be populated.)
+.phrase one_block <name> block
+.synonym block <name>
+.synonym <name> element
+.synonym element <name>
+.synonym <name> types
+.synonym <nb-name>
+.synonym <nb-name> blocks
+.synonym <nb-name> elements
+.synonym <nb-name> types
+.synonym <nb-name-s>
+.template
+= |~.name;| Block
+
+~include common_info;
+
+~.comment;
+
+The ~.name; block is one of the primary elements supported
+by ZzTeX.
+
+~if not used?;
+This block is not used in the ~.project; book.
+~elsif empty? level_table;
+This block is used in the ~.project; book.
+A ~.name; does not have multiple design types. Its single
+design is defined in ~.design_where;.
+~else;
+This table presents all the different
+types of |~.name;| blocks available in the ~.project; design.
+
+&= Type& Levels& Defined
+----
+~foreach type, level_table;
+& |~.type;|& ~.level_table[type];& ~.where_table[type];
+~end;
+&.
+~fi;
+----
+To see a description of this block's design parameters,
+try |~.facility; ~.name; parameters|.&/
+~if used?;~
+To see some details about the |~.name;| design~* not empty? level_table; for the ~.project;
+book, try |~.facility; ~.name; design|.&/~
+~fi;
+For more information about blocks in general, try |~.facility; blocks|.&/
+For a list of all available blocks, try |~.facility; all blocks|.&/
+
+.phrase block_params <name> parameters
+.synonym <name>=\mathdisplay:$$ parameters
+.synonym <name> design parameters
+.synonym <name>=\mathdisplay:$$ design parameters
+.template
+= |~.name;| Block Design Parameters
+
+Here is a list of all the design parameters for the |~.name;|
+block.
+
+&= Parameter& Type& Description
+----
+~foreach param, type_table;
+& |~.param;|& ~.type_table[param];& ~.desc_table[param];
+~end;
+&.
+
+// Block variants
+
+.phrase block_variants block variants : text
+.synonym variants
+.synonym design variants
+.template
+= Block Variants
+
+A block variant is a modifier that can be applied to a block
+command to alter the design of the block. Variants may only
+be applied to block commands.
+
+For example, the |\widefigure| variant might be applicable
+to a |\float| command to select a wider style for the figure.
+
+ \widefigure \float{figure}
+
+Often there is a group of variants that all vary the design
+of a block is related ways. For example, in addition to
+|\widefigure| we might have
+
+* |\sidebysidefigure|
+* |\widefigure|
+* |\broadsidefigure|
+*.
+
+Each of these modifiers applies to a figure float and vary its
+design in specific ways. The three variants are mutually exclusive:
+only one may be specified on any given |\float| command.
+----
+For more information about a specific variant, try |~.facility; \*name*|.&/
+To see a list of variants for a specific block, try |~.facility; \*block*|.
+
+.phrase one_block_variant <name>
+.synonym <name> variant
+.synonym variant <name>
+.synonym <name> block variant
+.synonym block variant <name>
+.synonym <name> design variant
+.synonym design variant <name>
+.template
+= |~.name;| Block Variant
+
+~include common_info;
+
+~.comment;
+
+A block variant is a modifier that can be applied to a block
+command to alter the design of the block. This variant
+applies to the |~.block;| block. It is a member of a group
+of variants:
+
+~foreach i, variant_list;
+* |~.variant_list[i];|
+~end;
+*.
+
+----
+For more information on block variants, try |~.facility; variants|.
+
+// Block modifiers
+
+.phrase block_modifiers block modifiers
+.synonym modifiers
+.template
+= Block Modifiers
+
+A block modifier is a command that can be applied to a block
+to alter the design of the block. Modifiers may only
+be applied to block commands.
+
+For example, the |\bottomfloat| modifier can be applied to
+a |\float| command to place the float at the bottom of the page.
+
+ \bottomfloat \float{figure}
+
+Note that block variants are another type of block modifier.
+
+Here is a list of all the block modifiers provided by ZzTeX and
+the ~.project; design. It does not include block variants.
+
+&= Modifier& Where defined
+----
+~foreach mod, where_table;
+& |~.mod;|& ~.where_table[mod];
+~end;
+&.
+----
+For more information about a specific modifier, try |~.facility; \*name*|.&/
+For more information on block variants, a type of modifier,
+try |~.facility; variants|.
+
+.phrase one_block_modifier <name>
+.synonym <name> modifier
+.synonym modifier <name>
+.synonym <name> block modifier
+.synonym block modifier <name>
+.template
+= |~.name;| Block Modifier
+
+~include common_info;
+
+~.comment;
+
+A block modifier is a command that can be applied to a block
+to alter the design of the block.
+----
+For more information on block modifiers, try |~.facility; modifiers|.
+
+// Box registers
+
+.phrase boxes box registers : text
+.synonym boxes
+.template
+= Box Registers
+
+A box register contains a box that has horizontal or vertical material
+in it. A box can contain a paragraph, a vertical sequence of paragraphs,
+a short text fragment for measuring, etc.
+
+A box register is accessed and set as follows:
+
+| \box \*name*
+| \setbox \*name* = \hbox {*horizontal material*}
+| \setbox \*name* = \vbox {*vertical material*}
+| \setbox \*name* = \vtop {*vertical material*}
+
+Boxes are never used directly in book files.
+----
+For a list of all boxes, try |~.facility; all boxes|.&/
+For information on a particular box, try |~.facility; \*name*|
+
+.phrase all_boxes all box registers
+.synonym all boxes
+.template
+= List of Box Registers
+
+This is the list of all box registers available in ZzTeX.
+
+&= Register& Description
+----
+~foreach reg, reg_table;
+& |~.reg;|& ~.reg_table[reg];
+~end;
+&.
+~include internal_note;
+----
+For more information, try |~.facility; boxes|
+
+.phrase one_box <name>
+.synonym <name> box
+.synonym box <name>
+.synonym <name> register
+.synonym register <name>
+.synonym <name> box register
+.synonym box register <name>
+.template
+= |~.name;| Box Register
+
+~include common_info;
+
+~.comment;
+
+Default: |~.default;|
+
+A box register contains a box that has horizontal or vertical material
+in it. A box can contain a paragraph, a vertical sequence of paragraphs,
+a short text fragment for measuring, etc.
+----
+For more information, try |~.facility; boxes|
+
+// Catcodes
+
+.phrase catcodes catcodes
+.synonym category codes
+.synonym character categories
+.synonym character category codes
+.template
+= Catcodes (Category Codes)
+
+A category code is assigned to every character read by TeX as it
+processes files. A character's category code determines how TeX handles
+that character.
+
+Here is a list of all the category codes.
+
+&= Number& Name& Meaning (example)
+----
+~foreach i, name_table;
+& ~.i;& |~.name_table[i];|& ~.meaning_table[i];
+~end;
+&.
+
+.phrase one_catcode <name>
+.synonym <name> catcode
+.synonym catcode <name>
+.synonym <name> category code
+.synonym category code <name>
+.template
+= |~.name;| Category Code
+
+~include common_info;
+
+~.comment;
+
+Value: ~.value;
+
+A category code is assigned to every character read by TeX as it
+processes files. A character's category code determines how TeX handles
+that character.
+----
+For more information and list of all catcodes, try |~.facility; catcodes|
+
+// Characters
+
+.phrase characters characters
+
+.phrase one_character <name>
+.synonym <name>=`T:tab
+.synonym <name>=`F:formfeed
+.synonym <name>=`R:newline
+.synonym <name>=`_:space
+.synonym <name>=":quote
+.synonym <name>=%:percent
+.synonym <name>=&:ampersand
+.synonym <name>=':apostrophe
+.synonym <name>=(:lparen
+.synonym <name>=,:comma
+.synonym <name>=<:less
+.synonym <name>=>:greater
+.synonym <name>=^:hat
+.synonym <name>=`=:equal
+.synonym <name>=``:backquote
+.synonym <name>=|:bar
+.template
+= ~.name; Character
+
+~include common_info;
+
+~.comment;
+
+& Catcode:& |~.catcode;|
+& Font position:& |~.position;|
+& Math class:& |~.math_class;|
+& Math family:& |~.math_family;|
+&.
+----
+For information on catcodes, try |~.facility; catcodes|.&/
+For information on math classes, try |~.facility; classes|.&/
+For information on math families, try |~.facility; families|.
+
+// Citation commands
+
+.phrase citations citations
+.synonym citation commands
+.template
+= Citation Commands
+
+A citation command is a command that accepts a bibliography item tag and produces
+a citation (reference) to that item. For example
+
+ As \citenoun{smith16} describes, the widget ...
+
+might produce
+
+& As Smith [2016] describes, the widget ...
+&.
+
+The following table lists all the citation commands available
+for the ~.project; book. Be careful to read about the commands
+defined in the design file (~.project;.zzd) first; some of
+them might specify that certain other citation commands should
+not be used.
+
+&= Command& Defined
+----
+~foreach cmd, where_table;
+& |~.cmd;|& ~.where_table[cmd];
+~end;
+&.
+
+// Command line
+
+.phrase command_line command line : text
+.template
+= Command Line
+
+Some characters are difficult or impossible to specify on the
+4NT/Take Command command line. The following table shows how to
+specify such characters by themselves or as the second
+character of a character command.
+
+& & How to Specify& How to Specify
+& Character& Character& Character Command
+----
+& <newline>& |newline|& |\.newline|
+& <formfeed>& |formfeed|& |\.formfeed|
+& <space>& |space|& |\.space|
+& |"|& |quote|& |\.quote|
+& |%|& |percent|& |\.percent|
+& |&&|& |ampersand|& |\.ampersand|
+& |'|& |apostrophe|& |\.apostrophe|
+& |(|& |lparen|& |\.lparen|
+& |,|& |comma|& |\.comma|
+& |<|& |less|& |\.less|
+& |&=|& |equal|& |\.equal|
+& |>|& |greater|& |\.greater|
+& |^|& |hat|& |\.hat|
+& |`|& |backquote|& |\.backquote|
+& |&||& |bar|& |\.bar|
+&.
+
+// Commands
+
+.phrase commands commands
+.synonym macros
+.template
+= Commands
+
+Commands are the primary entity with which TeX files are coded
+to produce beautiful text. A command name consists of a backslash
+(|\|) followed by
+
+* A sequence of upper- and lowercase letters (e.g., |\sin|), or
+* A single non-letter character (e.g., |\,|)
+*.
+
+Command names are *case-sensitive;* that is, an uppercase letter
+is different from the same lowercase letter. So |\big| and |\Big|
+are two different commands.
+
+A command name can operate by itself or it can require *arguments,*
+which are pieces of text that the command uses to perform its
+function. Arguments are usually enclosing in braces (|{|...|}|).
+However, if there is a single argument composed of a single Roman
+or Greek letter, then no braces are necessary.
+
+ For example, you can set an acute accent on a character using
+ braces, as in \'{a}, but the braces aren't necessary: \'a.
+
+When scanning a command, TeX has one rule that can cause trouble.
+Spaces and a single line break following a letter command are ignored.
+So the text
+
+ Don't you love the text that \TeX can produce?
+
+will result in the following:
+
+& Don't you love the text that TeXcan produce?
+&.
+
+There are two solutions, the first of which is preferred.
+
+ Don't you love the text that \TeX\ can produce?
+ Don't you love the text that \TeX{} can produce?
+
+Command names containing an at-sign (|@|) or beginning with '|z|'
+are internal to TeX and ZzTeX.
+----
+For information on a specific command, try |~.facility; \*name*|.&/
+For information on the attributes item included with individual
+command descriptions, try |~.facility; attributes|.&/
+~include command_line_chars;
+
+== Command Counts
+
+For your edification, this table presents the number of commands
+defined by TeX and ZzTeX.
+
+&= Count& Origin of command
+----
+& ~.builtin_count;& Built-in TeX
+& ~.plain_count;& Plain TeX macro package (many superceded by ZzTeX)
+& ~.zztex_count;& ZzTeX macro package
+& ~.zzd_count;& Design file(s)
+&.
+
+.phrase one_command <name>
+.synonym <name>=\`R:\.newline
+.synonym <name>=\`_:\.space
+.synonym <name>=\":\.quote
+.synonym <name>=\':\.apostrophe
+.synonym <name>=\,:\.comma
+.synonym <name>=\^:\.hat
+.synonym <name>=\`=:\.equal
+.synonym <name>=\``:\.backquote
+.synonym <name>=\mathdisplay:$$
+.synonym <name> command
+.synonym <name>=\`R:\.newline command
+.synonym <name>=\`_:\.space command
+.synonym <name>=\":\.quote command
+.synonym <name>=\':\.apostrophe command
+.synonym <name>=\,:\.comma command
+.synonym <name>=\^:\.hat command
+.synonym <name>=\`=:\.equal command
+.synonym <name>=\``:\.backquote command
+.synonym command <name>
+.synonym <name> macro
+.synonym macro <name>
+.template
+= |~.name;| Command
+
+~include common_info;
+
+~.comment;
+----
+~include command_info;
+
+// Count registers
+
+.phrase counts count registers : text
+.synonym counts
+.template
+= Count Registers
+
+A count register contains an integer that can be used as a counter,
+to number elements, to hold an integer parameter value, etc.
+
+A count register is accessed and set as follows:
+
+| \*name*
+| \*name* = *integer*
+
+Counts are rarely used directly in book files.
+----
+For a list of all count registers, try |~.facility; all counts|.&/
+For information on a particular count register, try |~.facility; \*name*|.
+
+.phrase all_counts all count registers
+.synonym all counts
+.template
+= List of Count Registers
+
+This is the list of all count registers available in ZzTeX.
+
+&= Register& Description
+----
+~foreach reg, reg_table;
+& |~.reg;|& ~.reg_table[reg];
+~end;
+&.
+~include internal_note;
+----
+For more information, try |~.facility; count registers|
+
+.phrase one_count <name>
+.synonym <name> count
+.synonym count <name>
+.synonym <name> register
+.synonym register <name>
+.synonym <name> count register
+.synonym count register <name>
+.template
+= |~.name;| Count Register
+
+~include common_info;
+
+~.comment;
+
+Default: |~.default;|
+
+A count register contains an integer that can be used as a counter,
+to number elements, to hold an integer parameter value, etc.
+----
+For more information, try |~.facility; counts|
+
+// Declarations
+
+.phrase declarations declarations : text
+.template
+= Declarations
+
+A TeX declaration has a name like a command, but it does not
+take any arguments. Instead, it pertains to the following text in
+the current brace group.
+
+Example: |{\it *text*}|
+
+The *text* is set in italic style, but text following the close brace
+is not. The braces limit the scope of the declaration.
+
+Declarations are used in design files but rarely in book files.
+There is almost always a command that should be used instead.
+
+Example: |\emph{*text*}|
+----
+For information on commands, try |~.facility; commands|
+
+.phrase one_declaration <name>
+.synonym <name> declaration
+.synonym declaration <name>
+
+// Designs
+
+.phrase designs designs : text
+.synonym block designs
+.template
+= Block Designs
+
+A block design is embodied in a macro usually located in a
+book's design file. There are a few block designs built into
+ZzTeX. The block design macro contains a list of block
+parameter assignments that together specify the features
+and format of the block.
+
+The block design macro name comes in three flavors.
+
+& |\def \footnotedesign|& The block does not have multiple types
+& |\def \floatfiguredesign|& The block has multiple types
+& |\def \listbulletidesign|& The block has multiple types and levels
+&.
+
+Within the design macro definition is a sequence of parameter
+assignments and other TeX coding to establish the design for
+that particular block, block type, or block type/level. Each
+time ZzTeX encounters a block in a book file, it executes the
+design macro to establish the design, then processes the contents
+of the block.
+----
+To see details about a design, try things like:
+
+| ~.facility; \listbulletidesign
+| ~.facility; \float{figure}
+| ~.facility; list bullet i
+
+// The phrases for a block with no type; e.g., \footnotedesign.
+
+.phrase one_design_notype <name>
+.synonym <name> macro
+.synonym <block> design
+.synonym <block>=\mathdisplay:$$ design
+.synonym <block> design macro
+.synonym <nb-block> design
+.synonym <nb-block> design macro
+.template
+= |~.name;| Design Macro
+
+~include common_info;
+
+~include design_info;
+
+~.comment;
+----
+~include gory_details;
+
+// The phrases for a block with a type, but no type specified.
+
+.phrase-dups one_design_type_general <block> designs
+.synonym <block> design macros
+.synonym <nb-block> designs
+.synonym <nb-block> design macros
+.template
+= |~.block;| Design Macros
+
+The following table shows a list of all the design macros
+available in the ~.project; book for the various types of |~.block;|.
+
+&= Design Macro& Element
+----
+~foreach des, design_table;
+& |~.des;|& ~.design_table[des];
+~end;
+&.
+----
+For information on a specific type, try |~.facility; ~.block; *type*|.
+
+// The phrases for a block with a specified type.
+
+.phrase one_design_type_specific <name>
+.synonym <name> macro
+.synonym <block> <type>
+.synonym <block> <type> design
+.synonym <block> <type> design macro
+.synonym <nb-block> <type>
+.synonym <nb-block> <type> design
+.synonym <nb-block> <type> design macro
+.synonym <type> <nb-block-s>
+.synonym <type> <nb-block> designs
+.synonym <type> <nb-block> design macros
+.template
+= |~.name;| Design Macro
+
+~include common_info;
+
+~include design_info;
+
+~.comment;
+----
+~include gory_details;
+
+// The phrases for a block with a type and level, but no type or level specified.
+
+.phrase-dups one_design_level_general <block> designs
+.synonym <block> design macros
+.synonym <nb-block> designs
+.synonym <nb-block> design macros
+.synonym <block> <type> designs
+.synonym <block> <type> design macros
+.synonym <nb-block> <type> designs
+.synonym <nb-block> <type> design macros
+.synonym <type> <nb-block-s>
+.synonym <type> <nb-block> designs
+.synonym <type> <nb-block> design macros
+.template
+= |~.block;| Design Macros
+
+The following table shows a list of all the design macros
+available in the ~.project; book for the various types of |~.block;|.
+
+&= Design Macro& Element
+----
+~foreach des, design_table;
+& |~.des;|& ~.design_table[des];
+~end;
+&.
+----
+For information on a specific type and level,
+try |~.facility; ~.block; *type* *level*|.
+
+// The phrases for a block with a specified type and level.
+
+.phrase one_design_level_specific <name>
+.synonym <name> macro
+.synonym <block> <type> <level>
+.synonym <block> <type> <level> design
+.synonym <block> <type> <level> design macro
+.synonym <nb-block> <type> <level>
+.synonym <nb-block> <type> <level> design
+.synonym <nb-block> <type> <level> design macro
+.template
+= |~.name;| Design Macro
+
+~include common_info;
+
+~include design_info;
+
+~.comment;
+----
+~include gory_details;
+
+.phrase design_details <name> details
+.template
+= ~.name; Design Details
+
+~include common_info;
+
+~include design_info;
+
+~if not empty? inblock_set;
+The design is modified when the block appears inside these surrounding blocks:
+~foreach blk,inblock_set,iter;~,blk,iter /= 1;~end;
+~fi;
+
+Here is a table of all the parameter values set by this design macro.
+
+&= Parameter& Type& Value& Note
+----
+~foreach param, type_table;
+& |~.param;|& ~.type_table[param];& |~.value_table[param];|& ~.note_table[param];
+~end;
+&.
+
+~if affected?;
+(Some parameters may be missing due to design changes caused by variants
+or nesting inside outer blocks.)
+~fi;
+----
+For the complete story on this design, see ~.where;.
+
+// Dimen registers
+
+.phrase dimens dimension registers : text
+.synonym dimensions
+.template
+= Dimen(sion) Registers
+
+A dimen register contains a dimension that can be used as the width,
+height, or depth of a box, an indentation amount, a page dimension, etc.
+
+A dimen register is accessed and set as follows:
+
+| \*name*
+| \*name* = *dimension*
+
+Dimensions are rarely used directly in book files.
+----
+For a list of all dimen registers, try |~.facility; all dimens|.&/
+For information on a particular dimen register, try |~.facility; \*name*|.
+
+.phrase all_dimens all dimension registers
+.synonym all dimensions
+.template
+= List of Dimen(sion) Registers
+
+This is the list of all dimen registers available in ZzTeX.
+
+&= Register& Description
+----
+~foreach reg, reg_table;
+& |~.reg;|& ~.reg_table[reg];
+~end;
+&.
+~include internal_note;
+----
+For more information, try |~.facility; dimen registers|
+
+.phrase one_dimen <name>
+.synonym <name> dimension
+.synonym dimension <name>
+.synonym <name> register
+.synonym register <name>
+.synonym <name> dimension register
+.synonym dimension register <name>
+.template
+= |~.name;| Dimen(sion) Register
+
+~include common_info;
+
+~.comment;
+
+Default: |~.default;|
+
+A dimen(sion) register contains a dimension that can be used as the width,
+height, or depth of a box, an indentation amount, a page dimension, etc.
+----
+For more information, try |~.facility; dimens|
+
+// Encodings
+
+.phrase encodings style encodings
+.synonym encodings
+.synonym font encodings
+.template
+= Style Encodings
+
+A style encoding is an integer value that specifies the overall organization
+of the fonts associated with that style. For example:
+
+* \encoderoman is the encoding for typical Roman text fonts.
+* \encodeitalic is the encoding for typical italic text fonts.
+* \encodemathitalic is the encoding for math fonts containing
+italic letters for use as variables.
+*.
+
+The encoding for a type style is specified in the |\definetypestyle|
+command for that style.
+
+Here are all the style encodings supported by ZzTeX.
+
+&= Encoding& Value& Meaning
+----
+~foreach val, value_set;
+& ~.encoding_table[val];& ~.val;& ~.meaning_table[val];
+~end;
+&.
+----
+For a list of type styles and their encodings, try |~.facility; type styles|.
+
+.phrase one_encoding <name>
+.synonym <name> encoding
+.synonym encoding <name>
+.synonym <name> style encoding
+.synonym style encoding <name>
+.synonym <name> font encoding
+.synonym font encoding <name>
+.template
+= |~.name;| Style Encoding
+
+~include common_info;
+
+~.comment;
+
+Value: ~.value;
+
+A style encoding is an integer value that specifies the overall organization
+of the fonts associated with that style.
+----
+For more information and list of all encodings, try |~.facility; style encodings|
+
+// End-of-enunciation dingbats
+
+.phrase eoe_dingbats end-of-enunciation dingbats : text
+.synonym dingbats
+.synonym eoe dingbats
+.synonym enunciation dingbats
+.template
+= End-of-Enunciation Dingbats
+
+An end-of-enunciation dingbat (eoe dingbat) is an icon that is set
+at the end of an enunciation. A mathemtical proof, for example, almost
+always has a dingbat at the end. The command for the dingbat would be
+|\qed|.
+
+The dingbat is set automatically at the end of the enunciation, or you
+can specify it explicitly using its command name.
+----
+For information on a specific dingbat, try |~.facility; \*name*|
+
+// (Assumes that the 'one_command' group will also be populated.)
+.phrase one_eoe_dingbat <name> dingbat
+.synonym dingbat <name>
+.synonym <name> eoe dingbat
+.synonym eoe dingbat <name>
+.synonym <name> enunciation dingbat
+.synonym enunciation dingbat <name>
+.synonym <name> end-of-enunciation dingbat
+.synonym end-of-enunciation dingbat <name>
+.template
+= |~.name;| End-of-Enunciation Dingbat Command
+
+~include common_info;
+
+~.comment;
+
+& Text of dingbat:& |~.text;|
+& Position:& |~.position;|
+&.
+
+An end-of-enunciation dingbat (eoe dingbat) is an icon that is set
+at the end of an enunciation.
+----
+For information on dingbats in general, try |~.facility; dingbats|
+
+// Enumerated Names
+
+.phrase one_chardef_enum <name>
+.template
+= ~.name; Symbolic Number
+
+~include common_info;
+
+~.comment;
+
+Value: ~.value;
+
+A symbolic number is a name assigned to a number to make it easier
+to refer to the number without having to remember its value. A symbolic
+number is often referred to as an *enumerated value.*
+
+~include internal_note;
+
+// Flags
+
+.phrase flags flags : text
+.synonym booleans
+.template
+= Flags
+
+A flag is a true/false (boolean) value stored in a TeX macro
+(not a register). It can be used to specify a yes/no option,
+the state of some binary choice, the result of a test, etc.
+
+A flag is accessed and set as follows:
+
+| \*name*
+| \setflag \*name* = \true
+| \setflag \*name* = \false
+
+Flags are rarely used directly in book files.
+----
+For a list of all flags, try |~.facility; all flags|.&/
+For information on a particular flag, try |~.facility; \*name*|.
+
+.phrase all_flags all flags
+.synonym all booleans
+.template
+= List of Flags
+
+This is the list of all flags available in ZzTeX.
+
+&= Name& Description
+----
+~foreach flag, flag_table;
+& |~.flag;|& ~.flag_table[flag];
+~end;
+&.
+~include internal_note;
+----
+For more information, try |~.facility; flags|
+
+.phrase one_flag <name>
+.synonym <name> flag
+.synonym flag <name>
+.synonym <name> boolean
+.synonym boolean <name>
+.template
+= |~.name;| Flag
+
+~include common_info;
+
+~.comment;
+
+Default: |~.default;|
+
+A flag is a true/false (boolean) value stored in a TeX macro
+(not a register). It can be used to specify a yes/no option,
+the state of some binary choice, the result of a test, etc.
+----
+For more information, try |~.facility; flags|
+
+// Fonts
+
+.phrase fonts fonts : text
+.synonym type fonts
+.template
+= Font Declarations
+
+A font declaration establishes the type font for the current brace
+group. In TeX, a font is a specific type family and style set at a
+particular size. Some common examples:
+
+&= Font Declaration& Family, Style, Size
+----
+& |\tenhalfrm|& morg at 10.5pt& (|morg| is Minion-Regular)
+& |\tenhalfmit|& mtmiz at 10.5pt& (|mtmiz| is MathTime Math Italic)
+& |\tenhalfit|& moi at 10.5pt& (|moi| is Minion-Italic)
+& |\twelvedbf|& Flama-Bold at 12pt
+&.
+
+Font declarations are never used directly in design or book files, instead
+operating behind the scenes when font sizes and styles are selected.
+----
+For a list of all fonts in the ~.project; book, try |~.facility; all fonts|.&/
+For information about a particular font, try |~.facility; \*name*|.&/
+For information on type sizes or styles, try |~.facility; sizes| or
+|~.facility; styles|.
+
+.phrase all_fonts all fonts
+.template
+= List of Fonts
+
+This is the list of all the fonts used in the ~.project; book.
+
+&= Fonts& Family, style, size
+----
+~foreach font, font_table;
+& |~.font;|& ~.font_table[font];
+~end;
+&.
+----
+For more information, try |~.facility; fonts|.
+
+// (Assumes that the 'one_declaration' group will also be populated.)
+.phrase one_font <name> font
+.synonym font <name>
+.synonym <name> type font
+.synonym type font <name>
+.template
+= |~.name;| Font Declaration
+
+~include common_info;
+
+Font: ~.font_size;.
+
+A font declaration establishes the type font for the current brace group.
+Font declarations are never used directly in design or book files, instead
+operating behind the scenes when font sizes or styles are selected.
+----
+For more information on fonts, try |~.facility; fonts|.&/
+~include declaration_info;
+
+// Glyphs
+
+.phrase glyphs glyphs
+
+// (Assumes that the 'one_command' group will also be populated.)
+.phrase one_glyph <name> glyph
+.synonym glyph <name>
+.template
+= |~.name;| Glyph Command
+
+~include common_info;
+
+~.comment;
+
+Art spec: ~.art_spec;
+
+A glyph is a command that sets a small graphic used as an icon
+or attention indicator. The glyph scales with the surrounding font.
+
+// Ifs
+
+.phrase ifs ifs : text
+.synonym if flags
+.template
+= If Flags
+
+An if flag is similar to ZzTeX's flags but is only used by Plain
+TeX. Because all the if flags are internal to Plain TeX and
+never used in design or book files, no more information will
+be provided.
+
+// Inserts
+
+.phrase inserts inserts : text
+.template
+= Inserts
+
+An insert is one or more chunks of text that are to be inserted on
+the page at the top or bottom. Examples are floating figures,
+floating tables, and footnotes.
+
+ZzTeX defines an insert for floats at the top of the page,
+floats at the bottom, and footnotes. Each insert consist of
+three registers needed to manage the text: a count, a dimen,
+and a skip.
+
+Since the operation of inserts is entirely internal, there is no
+additional information about them.
+
+// Lets
+
+.phrase one_let <name>
+.synonym <name>=\%:\.percent
+.synonym <name>=\&:\.ampersand
+.synonym <name>=\<:\.less
+.synonym <name>=\>:\.greater
+.synonym <name> synonym
+.synonym <name>=\&:\.ampersand synonym
+.synonym <name>=\%:\.percent synonym
+.synonym <name>=\<:\.less synonym
+.synonym <name>=\>:\.greater synonym
+.synonym synonym <name>
+.template
+= |~.name;| Synonym
+
+~include common_info;
+
+Synonym for: |~.parent;|
+
+~.comment;
+
+A synonym is a name established with the |\let| command and is
+equivalent to its "parent" command. To see information on this name's
+parent command, try |~.facility; ~.parent;|.
+
+// Locators
+
+.phrase locators locators
+.synonym indexing commands
+.synonym indexing locators
+.template
+= Index Locators
+
+An index locator is a command that creates an entry in the
+book's index. It takes an argument with one, two, or three headings
+separated by bars:
+
+ \xpage{Main|subhead}
+
+Some locators can specify a page range, in which case there are
+two additional commands:
+
+ \xpagebegin{Main|subhead}
+ \xpageend{Main|subhead}
+
+If it is a command like |\xsee| and |\xseealso|, it takes an additional
+first argument with the heading to consult. In this example, the heading
+|Synonym| will refer to the heading |Primary|:
+
+ \xsee{Primary}{Synonym}
+
+The following locators are available for the ~.project; book:
+
+&= & Begin/end& See-like
+&= Command& commands?& reference?
+----
+~foreach i, command_list;
+& |~.command_list[i];|& ~.range_list[i];& ~.refers_list[i];
+~end;
+&.
+----
+~include indexing_info;
+
+// (Assumes that the 'one_command' group will also be populated.)
+.phrase one_locator <name> locator
+.synonym locator <name>
+.synonym <name> indexer
+.synonym indexer <name>
+.synonym <name> indexing command
+.synonym indexing command <name>
+.synonym <name> locator command
+.synonym locator command <name>
+.template
+= |~.name;| Index Locator Command
+
+~include common_info;
+
+~.comment;
+
+An index locator is a command that creates an entry in the book's index.
+The format of this locator command is shown above. There is one command
+if this kind of locator can only specify a single page. There are three
+commands if it can specify a single page or a page range. The commands for
+this locator are:
+
+~foreach cmd, command_list;
+* ~.command_list[cmd];
+~end;
+*.
+----
+For more information on locators, try |~.facility; locators|.
+
+// Marks
+
+.phrase marks marks
+.synonym page marks
+.template
+= Mark Pseudo-Commands
+
+A mark is a chunk of text inserted into the current page using the
+|\mark| command. The purpose of a mark is to hold information
+for running heads and feet. This information can be extracted from
+the page using pseudo-commands such as |\topmark| in the header
+and footer formatting macros.
+
+The |\mark| command and the extracting pseudo-commands are not used
+directly in ZzTeX design or book files. Instead, |\setmarkinfo| and
+|\markinfo| are used.
+
+Here is a list of all the mark pseudo-commands.
+
+&= Command& Description
+----
+~foreach mark, desc_table;
+& |~.mark;|& ~.desc_table[mark];
+~end;
+&.
+
+(Do not confuse marks with markers.)
+----
+For information on a specific mark, try |~.facility; \*name*|.
+
+.phrase one_mark <name>
+.synonym <name> mark
+.synonym mark <name>
+.synonym <name> page mark
+.synonym page mark <name>
+.template
+= |~.name;| Mark Pseudo-Command
+
+~include common_info;
+
+~.comment;
+
+A mark is a chunk of text inserted into the current page using the
+|\mark| command. The purpose of a mark is to hold information
+for running heads and feet.
+----
+For more information on marks, try |~.facility; marks|.
+
+// Markers
+
+.phrase markers markers
+.synonym argument markers
+.synonym command markers
+.template
+= Markers
+
+A marker indicates a point in a command argument where the following
+text is interpreted differently from the preceding text. For example,
+
+ $$
+ a = b \eqno
+ $$
+
+The |\eqno| marker indicates that the following text (empty in this
+example) should be interpreted as the equation number.
+
+Here is a list of all the markers provided by ZzTeX.
+
+&= Marker& Meaning
+----
+~foreach marker, comment_table;
+& |~.marker;|& ~.comment_table[marker];
+~end;
+&.
+
+(Do not confuse markers with marks.)
+----
+For information on a specific marker, try |~.facility; \*name*|.
+
+.phrase one_marker <name>
+.synonym <name> marker
+.synonym marker <name>
+.template
+= |~.name;| Marker
+
+~include common_info;
+
+~.comment;
+
+A marker indicates a point in a command argument where the following
+text is interpreted differently from the preceding text.
+----
+For more information on markers, try |~.facility; markers|.
+
+// Math accents
+
+.phrase math_accents math accents
+.template
+= Math Accent Commands
+
+A math accent command produces an accent over a math character.
+For example,
+
+ x = y \times \hat{a}
+
+produces
+
+& *x* = *y* &times; *&acirc;*
+&.
+
+Here is a list of all the math accent commands.
+
+&= Command& Description
+----
+~foreach acc, accent_table;
+& |~.acc;|& ~.accent_table[acc];
+~end;
+&.
+~include internal_note;
+----
+For information on a specific accent, try |~.facility; \*name*|.
+
+// (Assumes that the 'one_command' group will also be populated.)
+.phrase one_math_accent <name> accent
+.synonym accent <name>
+.synonym <name> math accent
+.synonym math accent <name>
+.template
+= |~.name;| Math Accent Command
+
+~include common_info;
+
+~.comment;
+
+A math accent command produces an accent over a math character.
+----
+For a list of all math accents, try |~.facility; math accents|.
+
+// Math characters
+
+// (Assumes that the 'one_command' group will also be populated.)
+.phrase one_math_char <name> character
+.synonym character <name>
+.synonym <name> symbol
+.synonym symbol <name>
+.synonym <name> math character
+.synonym math character <name>
+.synonym <name> math symbol
+.synonym math symbol <name>
+.template
+= |~.name;| Math Character
+
+~include common_info;
+
+~.comment;
+
+This command sets a math character or symbol with the following properties.
+
+& Math class:& |~.math_class;|
+& Math family:& |~.math_family;|
+& Font position:& ~.position;
+&.
+
+// Math character constants
+
+.phrase one_math_char_constant <name>
+
+// Math classes
+
+.phrase math_classes math classes
+.synonym classes
+.template
+= Math Classes
+
+Each math character and subexpression is assigned to one of the
+math classes shown below. The class determines how the character or
+subexpression is formatted. In particular, it determines the amount
+of space on each side of it. Each class is assigned a number, although
+you never need to worry about them.
+
+You can force a math expression into a particular class using the
+commands in the following table. Each takes an argument that is
+the expression to be classified. For example:
+
+ x \mathbin{.} y
+
+This forces the period to act like a binary operator, thus being set
+with a thin space on either side of it.
+
+&= Class& Number& Class Command& Description
+----
+~foreach i, class_list;
+& |~.class_list[i];|& ~.i;& |~.command_list[i];|& ~.desc_list[i];
+~end;
+&.
+
+.phrase one_chardef_math_class <name>
+.synonym <name> math class
+.synonym math class <name>
+.synonym <name> class
+.synonym class <name>
+.template
+= |~.name;| Math Class
+
+~include common_info;
+
+~.comment;
+
+Value: ~.value;
+
+Each math character and subexpression is assigned to a math class.
+The class determines how the character or subexpression is formatted.
+----
+For more information and list of all math classes, try |~.facility; math classes|.
+
+// (Assumes that the 'one_command' group will also be populated.)
+.phrase one_command_math_class <name> math class
+.synonym math class <name>
+.synonym <name> class
+.synonym class <name>
+.template
+= |~.name;| Math Class Command
+
+~include common_info;
+
+~.comment;
+
+A math class command forces its argument to be interpreted
+according to a particular math class (specified above) rather than its standard
+math class.
+----
+For more information on math classes, try |~.facility; math classes|.&/
+~include command_info;
+
+// Math families
+
+.phrase math_families math families : text
+.synonym family
+.synonym families
+.synonym type family
+.synonym type families
+.template
+= Math Families
+
+A math family is a number that is assigned to a type style so the
+style can be used in math expressions. Associated with the family
+are three fonts, one each for text size, script size, and scriptscript
+size. A type style cannot be used in math without a family number.
+This is occasionally a problem because there is a limit of 15 families.
+----
+For information about a particular family, try |~.facility; \*xx*fam|;
+for example, |~.facility; \rmfam|&/
+For a list of type styles and their associated families,
+try |~.facility; type styles|.
+
+.phrase one_math_family <name>
+.synonym family <name>
+.synonym <name> family
+.synonym <name> math family
+.synonym <name> type family
+.synonym math family <name>
+.synonym type family <name>
+.template
+= |~.name;| Math Family
+
+~include common_info;
+
+~.comment;
+
+& Type style:& |~.style;|
+& Family number:& ~.number;
+&.
+
+A math family is a number assigned to a type style so the style
+can be used in math expressions. Only families 0--14 are usable
+in math.
+----
+For more information on math families, try |~.facility; math families|
+
+// Math functions
+
+.phrase math_functions math functions : text
+.synonym functions
+.template
+= Math Functions
+
+Math functions are commands that set the names of mathematical functions
+such as sin and max. If the command is followed by a fence, the fence
+abuts the name. Otherwise a thin space follows the name. For example,
+
+ ... the $\sin x$ and the $\sin(x)$ are both ways of writing ...
+
+produces
+
+& ... the sin&thinsp;*x* and the sin(*x*) are both ways of writing ...
+&.
+----
+For information on a specific function, try |~.facility; \*name*|
+
+// (Assumes that the 'one_command' group will also be populated.)
+.phrase one_math_function <name> function
+.synonym function <name>
+.synonym <name> math function
+.synonym math function <name>
+.template
+= |~.name;| Math Function
+
+~include common_info;
+
+~.comment;
+
+& Sets:& ~.function;
+& Limits:& ~.limits;
+&.
+
+A math function is a command that sets a math function name,
+usually in roman.
+----
+For more information, try |~.facility; math functions|
+
+// Math joined symbols
+
+// (Assumes that the 'one_command' group will also be populated.)
+.phrase one_math_joined <name> joined math symbol
+.synonym joined math symbol <name>
+.synonym <name> joined symbol
+.synonym joined symbol <name>
+.synonym <name> math symbol
+.synonym math symbol <name>
+.template
+= |~.name;| Joined Math Symbol
+
+~include common_info;
+
+~.comment;
+
+A joined math symbol is constructed by adjoining one symbol
+with another. In this case, the symbol is built as:
+
+ ~.left; ~.right;
+----
+~include math_class_info;
+
+// Math stacked symbols
+
+// (Assumes that the 'one_command' group will also be populated.)
+.phrase one_math_stacked <name> stacked math symbol
+.synonym stacked math symbol <name>
+.synonym <name> stacked symbol
+.synonym stacked symbol <name>
+.synonym <name> math symbol
+.synonym math symbol <name>
+.template
+= |~.name;| Stacked Math Symbol
+
+~include common_info;
+
+~.comment;
+
+A stacked math symbol is constructed by stacking one symbol
+on top of another. In this case, the symbol is built as:
+
+ ~.above;
+ ~.below;
+----
+~include math_class_info;
+
+// Muskip registers
+
+.phrase muskips muskip registers : text
+.synonym muskips
+.template
+= Muskip Registers
+
+A muskip register contains a glue value (nominal, stretch, shrink)
+measured in math mu units (1/18 em). It can specify a horizontal space
+to be used in math. Muskip registers are only used in math.
+
+A muskip register is accessed and set as follows:
+
+| \*name*
+| \*name* = *mu-glue*
+
+Muskip registers are never used directly in book files.
+----
+For a list of all muskip registers, try |~.facility; all muskips|.&/
+For information on a particular muskip register, try |~.facility; \*name*|.
+
+.phrase all_muskips all muskip registers
+.synonym all muskips
+.template
+= List of Muskip Registers
+
+This is the list of all muskip registers available in ZzTeX.
+
+&= Register& Description
+----
+~foreach reg, reg_table;
+& |~.reg;|& ~.reg_table[reg];
+~end;
+&.
+~include internal_note;
+----
+For more information, try |~.facility; muskip registers|
+
+.phrase one_muskip <name>
+.synonym <name> muskip
+.synonym muskip <name>
+.synonym <name> register
+.synonym register <name>
+.synonym <name> muskip register
+.synonym muskip register <name>
+.template
+= |~.name;| Muskip Register
+
+~include common_info;
+
+~.comment;
+
+Default: |~.default;|
+
+A muskip register contains a glue value (nominal, stretch, shrink)
+measured in math mu units (1/18 em). It can specify a horizontal space
+to be used in math.
+----
+For more information, try |~.facility; muskips|
+
+// Math \text command
+
+.phrase math_text math \text : text
+.template
+= Math |\text| Command
+
+There is a |\text| command that can be used in math expressions
+to typeset its argument in text mode.
+
+Usage: |\text{*text*}|
+
+For example,
+
+ $$
+ x = 0.999\ldots = 1\quad \text{(see limits description)}
+ $$
+
+This math display would be set as follows.
+
+& *x*&thinsp;=&thinsp;0.999...&thinsp;=&thinsp;1&_(see limits description)
+&.
+
+Note that this |\text| command is only defined in math mode.
+
+// Named Characters
+
+.phrase one_named_char <name>
+.synonym <name>=\|:\.bar
+.synonym <name> character
+.synonym <name>=\|:\.bar character
+.synonym character <name>
+.template
+= ~.name; Named Character
+
+~include common_info;
+
+~.comment;
+
+Font position: |~.position;|
+
+A named character is a single character that is not on the keyboard but is
+assigned a name so that it can be easily typed. Some named characters also
+have a character command synonym (e.g., |\@| = |\atsign|).
+
+// Page make-up
+
+.phrase page_makeup page make-up
+.synonym page makeup
+.synonym paging
+.template
+= Page Make-Up
+
+Page make-up is the process of formatting the text on each
+page of a book. In particular, it involves deciding what
+text should appear on each page and on each spread.
+
+The following ZzTeX commands can help with page make-up.
+
+~foreach name, makeup_set;
+* |~.name;|
+~end;
+*.
+
+// Penalties
+
+.phrase penalties penalties
+.synonym penalty
+.template
+= Penalties
+
+A penalty is a number that specifies how much TeX should favor or
+disfavor a line break or page break. Positive penalties cause TeX
+to disfavor breaks, while negative penalties cause it to favor breaks.
+Penalties range from -10,000 (meaning always break) to +10,000 (meaning
+never break).
+
+Penalties are used in commands such as |\vpenalty|, |\linebreak|, and
+|\columnbreak|. These commands are rarely used in book files.
+
+Here is a table of all the available penalties.
+
+&= Penalty& Meaning
+----
+~foreach name, comment_table;
+& |~.name;|& ~.comment_table[name];
+~end;
+&.
+
+.phrase one_penalty <name>
+.synonym <name> penalty
+.synonym penalty <name>
+.template
+= |~.name;| Penalty
+
+~include common_info;
+
+~.comment;
+----
+For more information, try |~.facility; penalties|.
+
+// Prefixes
+
+.phrase prefixes prefixes
+.synonym command prefixes
+.template
+= Prefixes
+
+A prefix specifies an attribute of the name being defined
+using |\def| and related commands. It also specifies an
+attribute of I/O operations.
+
+Here is a list of all the prefixes.
+
+&= Prefix& Description
+----
+~foreach pre, prefix_table;
+& |~.pre;|& ~.prefix_table[pre];
+~end;
+&.
+
+.phrase one_prefix <name>
+.synonym <name> prefix
+.synonym prefix <name>
+.synonym <name> command prefix
+.synonym command prefix <name>
+.template
+= |~.name;| Prefix
+
+~include common_info;
+
+~.comment;
+
+A prefix specifies an attribute of the name being defined
+using |\def| and related commands. It also specifies an
+attribute of I/O operations.
+----
+For more information, try |~.facility; prefixes|.
+
+// Skip (Glue) registers
+
+.phrase skips skip registers : text
+.synonym skips
+.synonym glue registers
+.synonym glues
+.template
+= Skip Registers
+
+A skip register contains a glue value (nominal, stretch, shrink)
+that can specify a horizontal or vertical space, a left or right
+indentation, a gutter, etc.
+
+A skip register is accessed and set as follows:
+
+| \*name*
+| \*name* = *glue*
+
+Skip registers are never used directly in book files.
+----
+For a list of all skip registers, try |~.facility; all skips|.&/
+For information on a particular skip register, try |~.facility; \*name*|.
+
+.phrase all_skips all skip registers
+.synonym all skips
+.synonym all glue registers
+.template
+= List of Skip (Glue) Registers
+
+This is the list of all skip registers available in ZzTeX.
+
+&= Register& Description
+----
+~foreach reg, reg_table;
+& |~.reg;|& ~.reg_table[reg];
+~end;
+&.
+~include internal_note;
+----
+For more information, try |~.facility; skip registers|
+
+.phrase one_skip <name>
+.synonym <name> skip
+.synonym skip <name>
+.synonym <name> register
+.synonym register <name>
+.synonym <name> skip register
+.synonym skip register <name>
+
+.synonym <name> glue
+.synonym glue <name>
+.synonym <name> glue register
+.synonym glue register <name>
+.template
+= |~.name;| Skip (Glue) Register
+
+~include common_info;
+
+~.comment;
+
+Default: |~.default;|
+
+A skip register contains a glue value (nominal, stretch, shrink)
+that can specify a horizontal or vertical space, a left or right
+indentation, a gutter, etc.
+----
+For more information, try |~.facility; skips|
+
+// Spacing
+
+.phrase spacing spacing : text
+.template
+= Spacing Commands
+
+To see a list of commands for horizontal spacing,
+try |~.facility; horizontal spacing|.
+
+To see a list of commands for vertical spacing,
+try |~.facility; vertical spacing|.
+
+.phrase horizontal_spacing horizontal spacing
+.template
+= Horizontal Spacing
+
+This table presents a list of all the horizontal spacing commands
+available in ZzTeX.
+
+A command described as *breakable* allows a preceding line break, and the
+space is discarded. A command described as *unbreakable* does not allow a
+preceding line break.
+
+~foreach cmd, comment_table;
+& |~.cmd;|& ~.comment_table[cmd];
+~end;
+&.
+----
+For more information on any of these commands, try |~.facility; \*name*|.
+
+.phrase vertical_spacing vertical spacing
+.template
+= Vertical Spacing
+
+Here is a list of all the vertical spacing commands available in ZzTeX.
+
+~foreach name, name_set;
+* |~.name;|
+~end;
+*.
+----
+For more information on any of these commands, try |~.facility; \*name*|.
+
+// Suffixes
+
+.phrase suffixes suffixes
+.synonym command suffixes
+.template
+= Suffixes
+
+A suffix can be affixed to certain math commands to specify
+how limits are to be set.
+
+Here is a list of all the suffixes.
+
+&= Suffix& Description
+----
+~foreach suf, suffix_table;
+& |~.suf;|& ~.suffix_table[suf];
+~end;
+&.
+
+.phrase one_suffix <name>
+.synonym <name> suffix
+.synonym suffix <name>
+.synonym <name> command suffix
+.synonym command suffix <name>
+.template
+= |~.name;| Suffix
+
+~include common_info;
+
+~.comment;
+
+A suffix can be affixed to certain math commands to specify
+how limits are to be set.
+----
+For more information, try |~.facility; suffixes|.
+
+// Titles
+
+.phrase titles titles
+.synonym heads
+.synonym adjustments
+.synonym head adjustments
+.synonym title adjustments
+.template
+= Titles and Their Adjustment
+
+A *title* or *head* appears in various ZzTeX commands, including
+hierarchy commands such as |\chapter| and |\section|, captions,
+enunciations, etc. Each of these commands takes an argument that
+specifies the text of the title.
+
+| \chapter{*title-text*}
+
+The title text can appear in various places:
+
+* In the body of the text at the position of the |\chapter| command.
+* In the running heads or feet of multiple pages.
+* In the main table of contents or a "mini-ToC" such as might
+appear at the beginning of each chapter.
+*.
+
+Sometimes it is necessary to modify the title slightly when it appears in
+these various places. For example, if a title has a footnote, that footnote
+does not want to appear in the running head or table of contents. ZzTeX
+provides the following commands that can be used within the text of a title
+to make such adjustments.
+
+~foreach cmd, command_set;
+* |~.cmd;|
+~end;
+*.
+
+// Toks registers
+
+.phrase toks toks registers : text
+.synonym toks
+.synonym tokens
+.synonym token registers
+.template
+= Toks (Token) Registers
+
+A toks (token) register contains a sequence of TeX tokens (characters, commands,
+spaces, etc.) that can specify a text fragment, file name, tag, options
+list, etc.
+
+A toks register is accessed and set as follows:
+
+| \*name*
+| \*name* = {*tokens*}
+
+Toks registers are never used directly in book files.
+----
+For a list of all toks registers, try |~.facility; all toks|.&/
+For information on a particular toks register, try |~.facility; \*name*|.
+
+.phrase all_toks all toks registers
+.synonym all toks
+.synonym all token registers
+.synonym all tokens
+.template
+= List of Toks (Token) Registers
+
+This is the list of all toks registers available in ZzTeX.
+
+&= Register& Description
+----
+~foreach reg, reg_table;
+& |~.reg;|& ~.reg_table[reg];
+~end;
+&.
+~include internal_note;
+----
+For more information, try |~.facility; toks registers|
+
+.phrase one_toks <name>
+.synonym <name> toks
+.synonym toks <name>
+.synonym <name> register
+.synonym register <name>
+.synonym <name> toks register
+.synonym toks register <name>
+
+.synonym <name> token
+.synonym token <name>
+.synonym <name> token register
+.synonym token register <name>
+.template
+= |~.name;| Toks (Token) Register
+
+~include common_info;
+
+~.comment;
+
+Default: |~.default;|
+
+A toks register contains a sequence of TeX tokens (characters, commands,
+spaces, etc.) that can specify a text fragment, file name, tag, options
+list, etc.
+----
+For more information, try |~.facility; toks|
+
+// Style relations
+
+.phrase style_relations style relations
+.synonym relations
+.synonym font relations
+.synonym type relations
+.template
+= Style Relation Commands
+
+A style relation is a command that selects a new type style for
+its argument text based on the prevailing type style. The argument text
+is set in the new style and then the prevailing style continues.
+For example,
+
+| *...* a set of \emph{dependencies} on parent structures *...*
+
+might typeset the text as
+
+& *...* a set of *dependencies* on parent structures *...*
+&.
+
+Style relation commands are used instead of the underlying type
+style declarations (e.g., |\it|) for various reasons, the most
+important one being that the style change is restricted to the
+argument text.
+
+Here is a list of the relation commands available for the ~.project;
+book. For more details about a particular relation, try |~.facility;
+\*name*|.
+
+&= Relation& Where defined
+----
+~foreach rel, relation_table;
+& |~.rel;|& ~.relation_table[rel];
+~end;
+&.
+
+*Note:* The |\mono| command is used like a relation, but it is
+actually just a normal command.
+----
+~include command_info;
+
+// (Assumes that the 'one_command' group will also be populated.)
+.phrase one_style_relation relation <name>
+.synonym <name> relation
+.synonym <name> font relation
+.synonym <name> style relation
+.synonym <name> type relation
+.synonym font relation <name>
+.synonym style relation <name>
+.synonym type relation <name>
+.template
+= |~.name;| Style Relation Command
+
+~include common_info;
+
+~.comment;
+
+A style relation is a command that selects a new type style for
+its argument based on the prevailing type style. The argument text
+is set in the new style and then the prevailing style continues.
+
+Here is a table of all the relationships established by this command.
+
+&= Prevailing& & New
+&= style& & style
+----
+~foreach sty, style_map;
+& ~.sty;& &rArr;& ~.style_map[sty];
+~end;
+&.
+----
+For more information on style relations and a list of all available
+relations, try |~.facility; style relations|.&/
+~include command_info;
+
+// Tags
+
+.phrase tags tags : text
+.template
+= Tags
+
+A tag is a TeX name that is used to store information about a particular
+spot in a book. You can tag a spot using the |\tag| command.
+
+ \section{All About Tags}
+ \tag{S:about-tags}
+
+The following information is associated with the tag |S:about-tags|:
+
+* The page number on which the tag is defined.
+
+* The composite number text of the enclosing element (in the above example,
+the section number).
+
+* The title or caption of the enclosing element.
+*.
+
+The following cross-referencing commands can be used to typeset the
+information asociated with a tag:
+
+& |\ref{*tag*}|& Set the composite number text.
+& |\refpage{*tag*}|& Set the page number.
+& |\reftitle{*tag*}|& Set the title (rarely used).
+&.
+
+If the |\tag| command is used at a point in the text where there is
+no surrounding taggable element, an error message is produced. In this
+situation, if you only want to reference the page number, use the |\tagpageonly|
+command instead.
+
+== Tag Names
+
+If you need to add a tag to a book, please follow the naming conventions
+chosen by the author. If the author was haphazard, use the following
+prefixes on tags of various kinds:
+
+&= Prefix& Meaning
+----
+& |A:|& appendix
+& |C:|& chapter or quasichapter
+& |E:|& equation
+& |F:|& figure
+& |I:|& list item
+& |P:|& page number of arbitrary text (with |\tagpageonly|)
+& |S:|& section, subsection, etc.
+& |T:|& table
+& |X:|& exercise
+&.
+
+Tags names beginning with |z*X*:|, where *X* is a capital letter, are
+internal to ZzTeX. For a description of these internal tags,
+try |~.facility; internal tags|.
+----
+To obtain a list of all the tags in the ~.project; book, try
+|~.facility; all tags|.
+
+.phrase internal_tags internal tags : text
+.template
+= Internal Tags
+
+Here is a list of all the internal tags used by ZzTeX.
+
+&= Tag prefix& Usage
+----
+& |zB:|& Bibliographic entry information.
+& |zE:|& Page number of frame element.
+& |zF:|& Page number of float element.
+& |zH:|& Error message help text.
+& |zM:|& Page number of marginnote element.
+& |zP:|& Page number of proofnote element.
+& |zR:|& Page number of marginrule element.
+& |zS:|& Composite cross-reference snapshot information.
+&.
+----
+For a description of tags in general, try |~.facility; tags|.
+
+// Type styles
+
+.phrase type_styles type styles
+.synonym styles
+.synonym font styles
+.template
+= Type Styles
+
+A type style is a declaration that establishes the current style for
+text (e.g., roman, italic). As with all declarations, it pertains only
+to the following text in the current brace group.
+
+Type styles are rarely used directly in book files. Instead, the current
+style is established using a style relation command such as |\emph| or
+|\bold|. To see a list of all the relation commands, try |~.facility;
+type relations|. To see a list for a particular style, along with
+information about that style, try |~.facility; \*style*|.
+
+Here are all the type styles available for the ~.project; book.
+&= & & Family& Family& Usable
+&= Style& Encoding& number& name& in math?
+----
+~foreach fam, family_list;
+& |~.style_list[fam];|& |~.encoding_list[fam];|& ~.fam;& |~.family_list[fam];|&
+~.math_list[fam];
+~end;
+&.
+----
+For information on encodings, try |~.facility; encodings|.&/
+~include declaration_info;
+
+// (Assumes that the 'one_declaration' group will also be populated.)
+.phrase one_type_style type style <name>
+.synonym <name> style
+.synonym style <name>
+.synonym <name> font style
+.synonym font style <name>
+.template
+= |~.name;| Type Style Declaration
+
+~include common_info;
+
+~.comment;
+
+A type style is a declaration that establishes the current style for
+text (e.g., roman, italic). Instead of using the style declaration,
+you should use a style relation command. Here are the style relations
+pertinent to this style.
+
+&= Current style& Relation& New style
+----
+~foreach rel, new_style;
+& |~.name;|& |~.rel;|& |~.new_style[rel];|
+~end;
+&.
+----
+For more information on type styles, try |~.facility; type styles|&/
+For more information on type relations, try |~.facility; type relations|
+
+// Type sizes
+
+.phrase type_sizes type sizes : text
+.synonym sizes
+.synonym font sizes
+.template
+= Type Sizes
+
+A type size is a declaration that establishes the current size
+for text. As with all declarations, it pertains only
+to the following text in the current brace group.
+
+When a type size is established, there is no current style
+for the subsequent text. You must also establish a style
+after establishing a size.
+
+ {\footnotesize\it That '\it' command was necessary
+ to establish the style.}
+
+Type sizes are rarely used directly in book files. Instead, the
+surrounding element (typically a block) establishes the size
+for the text in that element. The main text size is always called
+|\textsize|.
+----
+To see a list of all the available type sizes, try |~.facility; all sizes|.&/
+To see the details of a particular size, try |~.facility; \*name*|.
+
+.phrase all_type_sizes all type sizes
+.synonym all sizes
+.synonym all font sizes
+.template
+= List of Type Sizes
+
+This is the list of all type sizes available in the ~.project; book.
+
+&= Size declaration& Available styles
+----
+~foreach size, style_table;
+& |~.size;|& |~.style_table[size];|
+~end;
+&.
+----
+For more information, try |~.facility; type sizes|.&/
+To see the details of a particular size, try |~.facility; \*name*|.
+
+// (Assumes that the 'one_declaration' group will also be populated.)
+.phrase one_type_size size <name>
+.synonym <name> size
+.synonym <name> type size
+.synonym type size <name>
+.synonym <name> font size
+.synonym font size <name>
+.template
+= |~.name;| Type Size Declaration
+
+~include common_info;
+
+~.comment;
+
+A type size is a declaration that establishes the current size
+for text. As with all declarations, it pertains only
+to the following text in the current brace group.
+
+Here is a list of all the type styles available in |~.name;|.
+
+&= & Can use& Can use
+&= Style& in math?& in scripts?& Family, style, size
+----
+~foreach i, style_list;
+& |~.style_list[i];|& ~.math_list[i];& ~.script_list[i];& ~.font_list[i];
+~end;
+&.
+----
+For more information on type sizes, try |~.facility; type sizes|.&/
+To see a list of all the available type sizes, try |~.facility; all sizes|.
+
+// Composite Cross-Reference Phrases
+// --------- --------------- -------
+
+
+.phrase all_art_files all art files
+.synonym art files
+.template
+= List of All Art Files for ~.project;
+
+This is a list of all the art files used in ~.project;, in order
+by file name.
+
+Count: ~.*div_table;
+
+&= Division& Page& File& Size at scale& Reused?
+----
+~foreach file, div_table;
+& ~.div_table[file];& ~.page_table[file];& ~.file;& ~.size_table[file];& ~.reused_table[file];
+~end;
+&.
+----
+For a list of just the missing art files, try |~.facility; missing art files|.
+
+.phrase all_biblio_entries all bibliography entries
+.synonym all bibliography tags
+.synonym bibliography entry list
+.synonym bibliography entries
+.template
+= List of All Bibliography Entries for ~.project;
+
+This is a list of all the bibliography entries in the ~.project;
+bibliography, in order by tag.
+
+Count: ~.*page_table;
+
+&= Page& Tag& Author& Year
+----
+~foreach tag, page_table;
+& ~.page_table[tag];& |~.tag;|& ~.author_table[tag];& ~.year_table[tag];
+~end;
+&.
+
+.phrase all_tags all tags
+.synonym tag list
+.template
+= List of All Tags for ~.project;
+
+This is a list of all the tags used in ~.project;,
+in order by tag name.
+(This list does not include bibliography entry tags.)
+
+Count: ~.*comp_table;
+
+&= Tag& Comp. Text& Division& Page
+----
+~foreach tag, comp_table;
+& |~.tag;|& ~.comp_table[tag];& ~.div_table[tag];& ~.page_table[tag];
+~end;
+&.
+
+Tags beginning with |\z*X*:| are internal to ZzTeX. For a description
+of those tags, try |~.facility; internal tags|.&/
+----
+For a list of all the bibliography entry tags, try |~.facility;
+all biblio tags|.
+
+.phrase book_info book information : text
+.template
+= Book Information
+
+~.facility; can show you all kinds of information about the
+~.project; project.
+
+& |~.facility;| command words& Report produced
+----
+& |overview|& Overview of the book and its design.
+& |all art files|& List of all art files.
+& |all biblio entries|& List of all bibliography entries.
+& |all tags|& List of all tags.
+& |cleanup report|& Report about cleanup of files.
+& |contents|& High-level table of contents.
+& |design report|& Report of elements with explanatory comments.
+& |duplicate tags|& List of duplicate tags.
+& |library|& List of documentation files in ZzTeX directory.
+& |missing art files|& List of missing art files.
+& |printer report|& Report to accompany final printer PDF.
+& |proofnote list|& List of outstanding proofnotes.
+& |to-do list|& List of outstanding to-dos.
+& |undefined tags|& List of undefined tags.
+&.
+
+.phrase contents contents
+.synonym table of contents
+.template
+= Table of Contents for ~.project;
+
+~foreach i, page_list;
+& ~.page_list[i];& ~.comp_list[i];& ~.title_list[i];
+~end;
+&.
+
+.phrase design_report design report
+.synonym compositor's design report
+.template
+= Design Report for ~.project;
+
+~include title_author_publisher_isbn;
+&.
+
+== Summary of Design
+
+~include design_summary;
+
+Every project starts with a cleanup of the text files.
+Try |~.facility; cleanup report| for a description of
+the cleanup of ~.project;.
+
+== Documented Elements
+
+The following sections present the book design elements that
+have specific documentation in the main design file ~.zzd_file;.
+It is a good idea to review these elements at the start of a project.
+
+~foreach i, head_list;
+~if not empty? head_list[i];
+=== ~.head_list[i];
+~fi;
+
+&starf;&_~.usage_list[i];
+
+~if value? style_list[i];
+& Style: ~.style_list[i];
+&.
+~fi;
+
+~.comment_list[i];
+~end;
+
+.phrase duplicate_tags duplicate tags
+.synonym duplicate tags list
+.template
+= List of Duplicate Tags for ~.project;
+
+This is a list of all the duplicate tags in the ~.project; book.
+
+Count: ~.*comp_table;
+
+&= Tag& Comp. Texts& Divisions& Pages
+----
+~foreach tag, comp_table;
+& |~.tag;|& ~.comp_table[tag];& ~.div_table[tag];& ~.page_table[tag];
+~end;
+&.
+----
+To see a list of all the tags, try |~.facility; all tags|.
+
+.phrase library library
+.synonym documentation
+.template
+= ZzTeX Documentation library
+
+The following text documents are available in the ZzTeX directory.
+They present details about various facilities in ZzTeX.
+
+&= Document& Topic
+----
+~foreach file, title_table;
+& ~.file;& ~.title_table[file];
+~end;
+&.
+
+.phrase missing_art_files missing art files
+.synonym missing art
+.template
+= List of Missing Art Files for ~.project;
+
+This is a list of the missing art files used in ~.project;, in order
+by file name. An art file is missing if there is an |\art| command
+for it but it does not exist in the art directory.
+
+Count: ~.*div_table;
+
+&= Division& Page& File& Size at scale& Reused?
+----
+~foreach file, div_table;
+& ~.div_table[file];& ~.page_table[file];& ~.file;& ~.size_table[file];& ~.reused_table[file];
+~end;
+&.
+----
+For a list of all the art files, try |~.facility; all art files|.
+
+.phrase printer_report printer report
+.template
+= Printer Report for ~.project;
+
+~include title_author_publisher_isbn;
+& &`
+& Trim:& ~.trimwidth; &times; ~.trimheight;
+& Head&`margin:& ~.headmargin;
+& Gutter:& ~.eveninnermargin;
+& &`
+& Fonts:& All embedded and subsetted at 100%
+& Art:& All embedded
+&.
+
+&`
+
+----
+Black: For 2-color books, please set Overprint Black as the default.
+----
+
+&`
+
+Paul C. Anagnostopoulos&/
+Windfall Software&/
+978 371-2316&/
+paul@windfall.com
+
+&`
+
+= Pagination
+
+~foreach i, page_list;
+& ~.page_list[i];& ~.comp_list[i];& ~.title_list[i];
+~end;
+&.
+
+.phrase-dups project_overview <project>
+.synonym book
+.synonym overview
+.synonym project
+.synonym book overview
+.synonym project overview
+.template
+= ~.project; Overview
+
+~include title_author_publisher_isbn;
+& &`
+& Processed:& ~.date; ~.time;
+& ZzTeX&`version:& v~.zztex_version;
+& &`
+& Art&`root:& ~.art_root;
+& Placing&`art?& ~.place_art;
+& PDF&`hyperlinks?& ~.hyperlinks;
+& &`
+& Proof&`ident:& ~.proof;
+& Compositor:& ~.compositor;
+& Company:& ~.company;
+&.
+
+== Summary of Design
+
+~include design_summary;
+----
+~.facility; can present all sorts of information about this project.
+Try |~.facility; book info|.
+
+.phrase proofnote_list proofnote list
+.synonym all proofnotes
+.template
+= List of All Proofnotes for ~.project;
+
+This is a list of all the outstanding proofnotes in the ~.project;
+files.
+
+Count: ~.*div_list;
+
+&= Division& Page& Note
+----
+~foreach i, div_list;
+& ~.div_list[i];& ~.page_list[i];& ~.note_list[i];
+~end;
+&.
+
+.phrase todo_list to-dos
+.synonym todos
+.synonym to-do list
+.synonym todo list
+.synonym all to-dos
+.synonym all todos
+.template
+= List of All To-Dos for ~.project;
+
+This is a list of all the outstanding to-do notes in the ~.project;
+files.
+
+Count: ~.*div_list;
+
+&= Division& Page& Note
+----
+~foreach i, div_list;
+& ~.div_list[i];& ~.page_list[i];& ~.note_list[i];
+~end;
+&.
+----
+
+.phrase undefined_tags undefined tags
+.synonym undefined tags list
+.template
+= List of Undefined Tags for ~.project;
+
+This is a list of all the undefined tags in the ~.project; files.
+
+Count: ~.*div_table;
+
+&= & First& First
+&= Tag& Division& Page& References
+----
+~foreach tag, div_table;
+& |~.tag;|& ~.div_table[tag];& ~.page_table[tag];& ~.refs_table[tag];
+~end;
+&.
+----
+To see a list of all the tags, try |~.facility; all tags|.
+
+// Footnotes
+// ---------
+
+
+.footnote defineenunciation_enunciation \defineenunciation one_command
+.footnote defineenunciation_enunciation \title one_marker
+.footnote defineenunciation_enunciation \attributiontypecase one_command
+.footnote defineenunciation_enunciation \defineeoedingbat one_command
+.template defineenunciation_enunciation
+For a complete description of this item, try |~.facility; \enunciation|.
+
+.footnote definelocator_locators \definelocator one_command
+.footnote definelocator_locators \definelocatorformat one_command
+.footnote definelocator_locators \generateindex one_command
+.footnote definelocator_locators \indexentry one_command
+.footnote definelocator_locators \alphabreak one_command
+.template definelocator_locators
+~include indexing_info;
+
+.footnote hat_zmhat \hat one_named_char
+.template hat_zmhat
+*Note:* When used in math mode, |\hat| is a synonym for |\zmhat|
+and produces a hat accent over its argument.
+
+.footnote space_spacing space one_character
+.template space_spacing
+If you are looking for information on spacing commands,
+try |~.facility; spacing|.
+
+.footnote proofnote_note_list \proofnote one_block
+.template proofnote_note_list
+If you are looking for a list of the outstanding proofnotes
+for the ~.project; project, try |~.facility; proofnote list|.
+
+.footnote text_math_text \text one_block
+.template text_math_text
+If you are looking for information on the \text command that
+is used in math, try |~.facility; math \text|.
+
+.footnote tilde_zmtilde \tilde one_named_char
+.template tilde_zmtilde
+*Note:* When used in math mode, |\tilde| is a synonym for |\zmtilde|
+and produces a tilde accent over its argument.
+
+.footnote toc_contents \toc one_block
+.template toc_contents
+If you are looking for a table of contents for ~.project;,
+try |~.facility; contents|.
+
+.footnote zmhat_hat \zmhat one_math_accent
+.template zmhat_hat
+*Note:* This is the internal accent command. Use |\hat| in book files.
+
+.footnote zmtilde_tilde \zmtilde one_math_accent
+.template zmtilde_tilde
+*Note:* This is the internal accent command. Use |\tilde| in book files.
+
+// Included Templates
+// -------- ---------
+
+
+.template command_line_chars
+Some characters are difficult or impossible to type on the 4NT/Take
+Command command line. For an explanation of how to enter them,
+try |~.facility; command line|.
+
+.template common_info
+& What it is:& ~.class;
+& Where it is:& ~.where;
+& Attributes:& ~.attributes;
+~if value? overridden;& Supercedes:& ~.overridden;~fi;
+&.
+
+~if value? usage;Usage: |~.usage;|~fi;
+
+.template command_info
+For information on commands in general, try |~.facility; commands|.
+
+.template declaration_info
+For information on declarations in general, try |~.facility; declarations|.
+
+.template design_info
+& Design macro for:& ~.design;
+~if value? derived;& Derived from:& |~.derived;|~fi;
+~if value? style;& Element style:& |~.style;|~fi;
+~if not empty? variant_list;& Affecting variants:& ~
+ |~foreach i,variant_list,iter;~,variant_list[i],iter /= 1;~end;|~fi;
+&.
+
+.template design_summary
+& Trim:& ~.trimwidth; &times; ~.trimheight;
+& Text measure:& ~.textmeasure;
+& Lines per page:& ~.linesperpage;
+& For make-up:& ~.linesshort; short, ~.lineslong; long
+& Even text margins:& left = ~.evenlefttextmargin;, right = ~.evenrighttextmargin;
+& Odd text margins:& left = ~.oddlefttextmargin;, right = ~.oddrighttextmargin;
+& Paragraph indent:& ~.parindent;
+&.
+
+.template gory_details
+To see more details about the design, try |~.facility; ~.name; details|.
+
+.template indexing_info
+For a complete description of the ZzTeX indexing facility,
+try |~.facility; indexing|.
+
+.template internal_note
+(Note that names containing at-signs or beginning with 'z' are internal.)
+
+.template math_class_info
+For more information on math classes, try |~.facility; math classes|.
+
+.template title_author_publisher_isbn
+& Title:& *~.title;*
+~foreach i,author,iter;
+& ~if iter = 1;Author:~fi;& ~.author[i];
+~end;
+& Publisher:& ~.publisher;
+& ISBN:& ~.isbn;
+
+.include zzdetails.dat
+.end
diff --git a/Master/texmf-dist/doc/plain/zztex/zzplain.dat b/Master/texmf-dist/doc/plain/zztex/zzplain.dat
new file mode 100644
index 00000000000..5aebd853cd7
--- /dev/null
+++ b/Master/texmf-dist/doc/plain/zztex/zzplain.dat
@@ -0,0 +1,1315 @@
+% This is the plain TeX format that's described in The TeXbook.
+% N.B.: A version number is defined at the very end of this file;
+% please change that number whenever the file is modified!
+% And don't modify the file under any circumstances.
+
+\catcode`\{=1 % left brace is begin-group character
+\catcode`\}=2 % right brace is end-group character
+\catcode`\$=3 % dollar sign is math shift
+\catcode`\&=4 % ampersand is alignment tab
+\catcode`\#=6 % hash mark is macro parameter character
+\catcode`\^=7
+\catcode`\^^K=7 % circumflex and uparrow are for superscripts
+\catcode`\_=8
+\catcode`\^^A=8 % underline and downarrow are for subscripts
+\catcode`\^^I=10 % ascii tab is a blank space
+\chardef\active=13
+\catcode`\~=\active % tilde is active
+\catcode`\^^L=\active
+\outer\def^^L{\par} % ASCII formfeed is |\outer\par|
+
+\message{Preloading the plain format: codes,}
+
+% We had to define the \catcodes right away, before the message line,
+% since \message uses the { and } characters.
+% When INITEX (the TeX initializer) starts up,
+% it has defined the following \catcode values:
+% \catcode`\^^@=9 % ascii null is ignored
+% \catcode`\^^M=5 % ascii return is end-line
+% \catcode`\\=0 % backslash is TeX escape character
+% \catcode`\%=14 % percent sign is comment character
+% \catcode`\ =10 % ascii space is blank space
+% \catcode`\^^?=15 % ascii delete is invalid
+% \catcode`\A=11 ... \catcode`\Z=11 % uppercase letters
+% \catcode`\a=11 ... \catcode`\z=11 % lowercase letters
+% all others are type 12 (other)
+
+% Here is a list of the characters that have been specially catcoded:
+\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
+ \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~}
+% (not counting ascii null, tab, linefeed, formfeed, return, delete)
+% Each symbol in the list is preceded by \do, which can be defined
+% if you want to do something to every item in the list.
+
+% We make @ signs act like letters, temporarily, to avoid conflict
+% between user names and internal control sequences of plain format.
+\catcode`@=11
+
+% INITEX sets up \mathcode x=x, for x=0..255, except that
+% \mathcode x=x+"7100, for x = `A to `Z and `a to `z;
+% \mathcode x=x+"7000, for x = `0 to `9.
+% The following changes define internal codes as recommended
+% in Appendix C of The TeXbook:
+\mathcode`\^^@="2201 % \cdot
+\mathcode`\^^A="3223 % \downarrow
+\mathcode`\^^B="010B % \alpha
+\mathcode`\^^C="010C % \beta
+\mathcode`\^^D="225E % \land
+\mathcode`\^^E="023A % \lnot
+\mathcode`\^^F="3232 % \in
+\mathcode`\^^G="0119 % \pi
+\mathcode`\^^H="0115 % \lambda
+\mathcode`\^^I="010D % \gamma
+\mathcode`\^^J="010E % \delta
+\mathcode`\^^K="3222 % \uparrow
+\mathcode`\^^L="2206 % \pm
+\mathcode`\^^M="2208 % \oplus
+\mathcode`\^^N="0231 % \infty
+\mathcode`\^^O="0140 % \partial
+\mathcode`\^^P="321A % \subset
+\mathcode`\^^Q="321B % \supset
+\mathcode`\^^R="225C % \cap
+\mathcode`\^^S="225B % \cup
+\mathcode`\^^T="0238 % \forall
+\mathcode`\^^U="0239 % \exists
+\mathcode`\^^V="220A % \otimes
+\mathcode`\^^W="3224 % \leftrightarrow
+\mathcode`\^^X="3220 % \leftarrow
+\mathcode`\^^Y="3221 % \rightarrow
+\mathcode`\^^Z="8000 % \ne
+\mathcode`\^^[="2205 % \diamond
+\mathcode`\^^\="3214 % \le
+\mathcode`\^^]="3215 % \ge
+\mathcode`\^^^="3211 % \equiv
+\mathcode`\^^_="225F % \lor
+\mathcode`\ ="8000 % \space
+\mathcode`\!="5021
+\mathcode`\'="8000 % ^\prime
+\mathcode`\(="4028
+\mathcode`\)="5029
+\mathcode`\*="2203 % \ast
+\mathcode`\+="202B
+\mathcode`\,="613B
+\mathcode`\-="2200
+\mathcode`\.="013A
+\mathcode`\/="013D
+\mathcode`\:="303A
+\mathcode`\;="603B
+\mathcode`\<="313C
+\mathcode`\=="303D
+\mathcode`\>="313E
+\mathcode`\?="503F
+\mathcode`\[="405B
+\mathcode`\\="026E % \backslash
+\mathcode`\]="505D
+\mathcode`\_="8000 % \_
+\mathcode`\{="4266
+\mathcode`\|="026A
+\mathcode`\}="5267
+\mathcode`\^^?="1273 % \smallint
+
+% INITEX sets \uccode`x=`X and \uccode `X=`X for all letters x,
+% and \lccode`x=`x, \lccode`X=`x; all other values are zero.
+% No changes to those tables are needed in plain TeX format.
+
+% INITEX sets \sfcode x=1000 for all x, except that \sfcode`X=999
+% for uppercase letters. The following changes are needed:
+\sfcode`\)=0
+\sfcode`\'=0
+\sfcode`\]=0
+% The \nonfrenchspacing macro will make further changes to \sfcode values.
+
+% Finally, INITEX sets all \delcode values to -1, except \delcode`.=0
+\delcode`\(="028300
+\delcode`\)="029301
+\delcode`\[="05B302
+\delcode`\]="05D303
+\delcode`\<="26830A
+\delcode`\>="26930B
+\delcode`\/="02F30E
+\delcode`\|="26A30C
+\delcode`\\="26E30F
+% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails!
+
+% To make the plain macros more efficient in time and space,
+% several constant values are declared here as control sequences.
+% If they were changed, anything could happen; so they are private symbols.
+\chardef\@ne=1
+\chardef\tw@=2
+\chardef\thr@@=3
+\chardef\sixt@@n=16
+\chardef\@cclv=255
+\mathchardef\@cclvi=256
+\mathchardef\@m=1000
+\mathchardef\@M=10000
+\mathchardef\@MM=20000
+
+% Allocation of registers
+
+% Here are macros for the automatic allocation of \count, \box, \dimen,
+% \skip, \muskip, and \toks registers, as well as \read and \write
+% stream numbers, \fam codes, \language codes, and \insert numbers.
+
+\message{registers,}
+
+% When a register is used only temporarily, it need not be allocated;
+% grouping can be used, making the value previously in the register return
+% after the close of the group. The main use of these macros is for
+% registers that are defined by one macro and used by others, possibly at
+% different nesting levels. All such registers should be defined through
+% these macros; otherwise conflicts may occur, especially when two or more
+% macro packages are being used at once.
+
+% The following counters are reserved:
+% 0 to 9 page numbering
+% 10 count allocation
+% 11 dimen allocation
+% 12 skip allocation
+% 13 muskip allocation
+% 14 box allocation
+% 15 toks allocation
+% 16 read file allocation
+% 17 write file allocation
+% 18 math family allocation
+% 19 language allocation
+% 20 insert allocation
+% 21 the most recently allocated number
+% 22 constant -1
+% New counters are allocated starting with 23, 24, etc. Other registers are
+% allocated starting with 10. This leaves 0 through 9 for the user to play
+% with safely, except that counts 0 to 9 are considered to be the page and
+% subpage numbers (since they are displayed during output). In this scheme,
+% \count 10 always contains the number of the highest-numbered counter that
+% has been allocated, \count 14 the highest-numbered box, etc.
+% Inserts are given numbers 254, 253, etc., since they require a \count,
+% \dimen, \skip, and \box all with the same number; \count 20 contains the
+% lowest-numbered insert that has been allocated. Of course, \box255 is
+% reserved for \output; \count255, \dimen255, and \skip255 can be used freely.
+
+% It is recommended that macro designers always use
+% \global assignments with respect to registers numbered 1, 3, 5, 7, 9, and
+% always non-\global assignments with respect to registers 0, 2, 4, 6, 8, 255.
+% This will prevent ``save stack buildup'' that might otherwise occur.
+
+\count10=22 % allocates \count registers 23, 24, ...
+\count11=9 % allocates \dimen registers 10, 11, ...
+\count12=9 % allocates \skip registers 10, 11, ...
+\count13=9 % allocates \muskip registers 10, 11, ...
+\count14=9 % allocates \box registers 10, 11, ...
+\count15=9 % allocates \toks registers 10, 11, ...
+\count16=-1 % allocates input streams 0, 1, ...
+\count17=-1 % allocates output streams 0, 1, ...
+\count18=3 % allocates math families 4, 5, ...
+\count19=0 % allocates \language codes 1, 2, ...
+\count20=255 % allocates insertions 254, 253, ...
+\countdef\insc@unt=20 % the insertion counter
+\countdef\allocationnumber=21 % the most recent allocation
+\countdef\m@ne=22
+\m@ne=-1 % a handy constant
+\def\wlog{\immediate\write\m@ne} % write on log file (only)
+
+% Here are abbreviations for the names of scratch registers
+% that don't need to be allocated.
+
+\countdef\count@=255
+\dimendef\dimen@=0
+\dimendef\dimen@i=1 % global only
+\dimendef\dimen@ii=2
+\skipdef\skip@=0
+\toksdef\toks@=0
+
+% Now, we define \newcount, \newbox, etc. so that you can say \newcount\foo
+% and \foo will be defined (with \countdef) to be the next counter.
+% To find out which counter \foo is, you can look at \allocationnumber.
+% Since there's no \boxdef command, \chardef is used to define a \newbox,
+% \newinsert, \newfam, and so on.
+
+\outer\def\newcount{\alloc@0\count\countdef\insc@unt}
+\outer\def\newdimen{\alloc@1\dimen\dimendef\insc@unt}
+\outer\def\newskip{\alloc@2\skip\skipdef\insc@unt}
+\outer\def\newmuskip{\alloc@3\muskip\muskipdef\@cclvi}
+\outer\def\newbox{\alloc@4\box\chardef\insc@unt}
+\let\newtoks=\relax % we do this to allow plain.tex to be read in twice
+\outer\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}}
+\outer\def\newtoks{\alloc@5\toks\toksdef\@cclvi}
+\outer\def\newread{\alloc@6\read\chardef\sixt@@n}
+\outer\def\newwrite{\alloc@7\write\chardef\sixt@@n}
+\outer\def\newfam{\alloc@8\fam\chardef\sixt@@n}
+\outer\def\newlanguage{\alloc@9\language\chardef\@cclvi}
+\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne
+ \ch@ck#1#4#2% make sure there's still room
+ \allocationnumber=\count1#1%
+ \global#3#5=\allocationnumber
+ \wlog{\string#5=\string#2\the\allocationnumber}}
+\outer\def\newinsert#1{\global\advance\insc@unt by\m@ne
+ \ch@ck0\insc@unt\count
+ \ch@ck1\insc@unt\dimen
+ \ch@ck2\insc@unt\skip
+ \ch@ck4\insc@unt\box
+ \allocationnumber=\insc@unt
+ \global\chardef#1=\allocationnumber
+ \wlog{\string#1=\string\insert\the\allocationnumber}}
+\def\ch@ck#1#2#3{\ifnum\count1#1<#2%
+ \else\errmessage{No room for a new #3}\fi}
+
+% Here are some examples of allocation.
+\newdimen\maxdimen
+\maxdimen=16383.99999pt % the largest legal <dimen>
+\newskip\hideskip
+\hideskip=-1000pt plus 1fill % negative but can grow
+\newskip\centering
+\centering=0pt plus 1000pt minus 1000pt
+\newdimen\p@
+\p@=1pt % this saves macro space and time
+\newdimen\z@
+\z@=0pt % can be used both for 0pt and 0
+\newskip\z@skip
+\z@skip=0pt plus0pt minus0pt
+\newbox\voidb@x % permanently void box register
+
+% And here's a different sort of allocation:
+% For example, \newif\iffoo creates \footrue, \foofalse to go with \iffoo.
+\outer\def\newif#1{\count@\escapechar \escapechar\m@ne
+ \expandafter\expandafter\expandafter
+ \def\@if#1{true}{\let#1=\iftrue}%
+ \expandafter\expandafter\expandafter
+ \def\@if#1{false}{\let#1=\iffalse}%
+ \@if#1{false}\escapechar\count@} % the condition starts out false
+\def\@if#1#2{\csname\expandafter\if@\string#1#2\endcsname}
+{\uccode`1=`i \uccode`2=`f \uppercase{\gdef\if@12{}}} % `if' is required
+
+% Assign initial values to TeX's parameters
+
+\message{parameters,}
+
+% All of TeX's numeric parameters are listed here,
+% but the code is commented out if no special value needs to be set.
+% INITEX makes all parameters zero except where noted.
+
+\pretolerance=100
+\tolerance=200 % INITEX sets this to 10000
+\hbadness=1000
+\vbadness=1000
+\linepenalty=10
+\hyphenpenalty=50
+\exhyphenpenalty=50
+\binoppenalty=700
+\relpenalty=500
+\clubpenalty=150
+\widowpenalty=150
+\displaywidowpenalty=50
+\brokenpenalty=100
+\predisplaypenalty=10000
+% \postdisplaypenalty=0
+% \interlinepenalty=0
+% \floatingpenalty=0, set during \insert
+% \outputpenalty=0, set before TeX enters \output
+\doublehyphendemerits=10000
+\finalhyphendemerits=5000
+\adjdemerits=10000
+% \looseness=0, cleared by TeX after each paragraph
+% \pausing=0
+% \holdinginserts=0
+% \tracingonline=0
+% \tracingmacros=0
+% \tracingstats=0
+% \tracingparagraphs=0
+% \tracingpages=0
+% \tracingoutput=0
+\tracinglostchars=1
+% \tracingcommands=0
+% \tracingrestores=0
+% \language=0
+\uchyph=1
+% \lefthyphenmin=2 \righthyphenmin=3 set below
+% \globaldefs=0
+% \maxdeadcycles=25 % INITEX does this
+% \hangafter=1 % INITEX does this, also TeX after each paragraph
+% \fam=0
+% \mag=1000 % INITEX does this
+% \escapechar=`\\ % INITEX does this
+\defaulthyphenchar=`\-
+\defaultskewchar=-1
+% \endlinechar=`\^^M % INITEX does this
+\newlinechar=-1
+\delimiterfactor=901
+% \time=now % TeX does this at beginning of job
+% \day=now % TeX does this at beginning of job
+% \month=now % TeX does this at beginning of job
+% \year=now % TeX does this at beginning of job
+\showboxbreadth=5
+\showboxdepth=3
+\errorcontextlines=5
+
+\hfuzz=0.1pt
+\vfuzz=0.1pt
+\overfullrule=5pt
+\hsize=6.5in
+\vsize=8.9in
+\maxdepth=4pt
+\splitmaxdepth=\maxdimen
+\boxmaxdepth=\maxdimen
+% \lineskiplimit=0pt, changed by \normalbaselines
+\delimitershortfall=5pt
+\nulldelimiterspace=1.2pt
+\scriptspace=0.5pt
+% \mathsurround=0pt
+% \predisplaysize=0pt, set before TeX enters $$
+% \displaywidth=0pt, set before TeX enters $$
+% \displayindent=0pt, set before TeX enters $$
+\parindent=20pt
+% \hangindent=0pt, zeroed by TeX after each paragraph
+% \hoffset=0pt
+% \voffset=0pt
+
+% \baselineskip=0pt, changed by \normalbaselines
+% \lineskip=0pt, changed by \normalbaselines
+\parskip=0pt plus 1pt
+\abovedisplayskip=12pt plus 3pt minus 9pt
+\abovedisplayshortskip=0pt plus 3pt
+\belowdisplayskip=12pt plus 3pt minus 9pt
+\belowdisplayshortskip=7pt plus 3pt minus 4pt
+% \leftskip=0pt
+% \rightskip=0pt
+\topskip=10pt
+\splittopskip=10pt
+% \tabskip=0pt
+% \spaceskip=0pt
+% \xspaceskip=0pt
+\parfillskip=0pt plus 1fil
+
+\thinmuskip=3mu
+\medmuskip=4mu plus 2mu minus 4mu
+\thickmuskip=5mu plus 5mu
+
+% We also define special registers that function like parameters:
+\newskip\smallskipamount
+\smallskipamount=3pt plus 1pt minus 1pt
+\newskip\medskipamount
+\medskipamount=6pt plus 2pt minus 2pt
+\newskip\bigskipamount
+\bigskipamount=12pt plus 4pt minus 4pt
+\newskip\normalbaselineskip
+\normalbaselineskip=12pt
+\newskip\normallineskip
+\normallineskip=1pt
+\newdimen\normallineskiplimit
+\normallineskiplimit=0pt
+\newdimen\jot
+\jot=3pt
+\newcount\interdisplaylinepenalty
+\interdisplaylinepenalty=100
+\newcount\interfootnotelinepenalty
+\interfootnotelinepenalty=100
+
+% Definitions for preloaded fonts
+
+\def\magstephalf{1095 }
+\def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or 2074\or 2488\fi\relax}
+
+% Fonts assigned to \preloaded are not part of "plain TeX",
+% but they are preloaded so that other format packages can use them.
+% For example, if another set of macros says "\font\ninerm=cmr9",
+% TeX will not have to reload the font metric information for cmr9.
+
+\message{fonts,}
+
+\font\tenrm=cmr10 % roman text
+% \font\preloaded=cmr9
+% \font\preloaded=cmr8
+\font\sevenrm=cmr7
+% \font\preloaded=cmr6
+\font\fiverm=cmr5
+
+\font\teni=cmmi10 % math italic
+% \font\preloaded=cmmi9
+% \font\preloaded=cmmi8
+\font\seveni=cmmi7
+% \font\preloaded=cmmi6
+\font\fivei=cmmi5
+
+\font\tensy=cmsy10 % math symbols
+% \font\preloaded=cmsy9
+% \font\preloaded=cmsy8
+\font\sevensy=cmsy7
+% \font\preloaded=cmsy6
+\font\fivesy=cmsy5
+
+\font\tenex=cmex10 % math extension
+
+% \font\preloaded=cmss10 % sans serif
+% \font\preloaded=cmssq8
+
+% \font\preloaded=cmssi10 % sans serif italic
+% \font\preloaded=cmssqi8
+
+\font\tenbf=cmbx10 % boldface extended
+% \font\preloaded=cmbx9
+% \font\preloaded=cmbx8
+\font\sevenbf=cmbx7
+% \font\preloaded=cmbx6
+\font\fivebf=cmbx5
+
+\font\tentt=cmtt10 % typewriter
+% \font\preloaded=cmtt9
+% \font\preloaded=cmtt8
+
+% \font\preloaded=cmsltt10 % slanted typewriter
+
+\font\tensl=cmsl10 % slanted roman
+% \font\preloaded=cmsl9
+% \font\preloaded=cmsl8
+
+\font\tenit=cmti10 % text italic
+% \font\preloaded=cmti9
+% \font\preloaded=cmti8
+% \font\preloaded=cmti7
+
+\message{more fonts,}
+% \font\preloaded=cmu10 % unslanted text italic
+
+% \font\preloaded=cmmib10 % bold math italic
+% \font\preloaded=cmbsy10 % bold math symbols
+
+% \font\preloaded=cmcsc10 % caps and small caps
+
+% \font\preloaded=cmssbx10 % sans serif bold extended
+
+% \font\preloaded=cmdunh10 % Dunhill style
+
+% \font\preloaded=cmr7 scaled \magstep4 % for titles
+% \font\preloaded=cmtt10 scaled \magstep2
+% \font\preloaded=cmssbx10 scaled \magstep2
+
+% \font\preloaded=manfnt % METAFONT logo and dragon curve and special symbols
+
+% Additional \preloaded fonts can be specified here.
+% (And those that were \preloaded above can be eliminated.)
+
+\let\preloaded=\undefined % preloaded fonts must be declared anew later.
+
+\skewchar\teni='177
+\skewchar\seveni='177
+\skewchar\fivei='177
+\skewchar\tensy='60
+\skewchar\sevensy='60
+\skewchar\fivesy='60
+
+\textfont0=\tenrm
+\scriptfont0=\sevenrm
+\scriptscriptfont0=\fiverm
+\def\rm{\fam\z@\tenrm}
+\textfont1=\teni
+\scriptfont1=\seveni
+\scriptscriptfont1=\fivei
+\def\mit{\fam\@ne}
+\def\oldstyle{\fam\@ne\teni}
+\textfont2=\tensy
+\scriptfont2=\sevensy
+\scriptscriptfont2=\fivesy
+\def\cal{\fam\tw@}
+\textfont3=\tenex
+\scriptfont3=\tenex
+\scriptscriptfont3=\tenex
+\newfam\itfam
+\def\it{\fam\itfam\tenit} % \it is family 4
+\textfont\itfam=\tenit
+\newfam\slfam
+\def\sl{\fam\slfam\tensl} % \sl is family 5
+\textfont\slfam=\tensl
+\newfam\bffam
+\def\bf{\fam\bffam\tenbf} % \bf is family 6
+\textfont\bffam=\tenbf
+\scriptfont\bffam=\sevenbf
+\scriptscriptfont\bffam=\fivebf
+\newfam\ttfam
+\def\tt{\fam\ttfam\tentt} % \tt is family 7
+\textfont\ttfam=\tentt
+
+% Macros for setting ordinary text
+\message{macros,}
+
+\def\frenchspacing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m
+ \sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m}
+\def\nonfrenchspacing{\sfcode`\.3000\sfcode`\?3000\sfcode`\!3000%
+ \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 }
+
+\def\normalbaselines{\lineskip\normallineskip
+ \baselineskip\normalbaselineskip \lineskiplimit\normallineskiplimit}
+
+\def\^^M{\ } % \<return> = \<space>
+\def\^^I{\ } % \<tab> = \<space>
+
+\def\lq{`}
+\def\rq{'}
+\def\lbrack{[}
+\def\rbrack{]}
+
+\let\endgraf=\par
+\let\endline=\cr
+
+\def\space{ }
+\def\empty{}
+\def\null{\hbox{}}
+
+\let\bgroup={
+\let\egroup=}
+
+% In \obeylines, we say `\let^^M=\par' instead of `\def^^M{\par}'
+% since this allows, for example, `\let\par=\cr \obeylines \halign{...'
+{\catcode`\^^M=\active % these lines must end with %
+\gdef\obeylines{\catcode`\^^M\active \let^^M\par}%
+\global\let^^M=\par} % this is in case ^^M appears in a \write
+\def\obeyspaces{\catcode`\ \active}
+{\obeyspaces\global\let =\space}
+
+\def\loop#1\repeat{\def\body{#1}\iterate}
+\def\iterate{\body \let\next\iterate \else\let\next\relax\fi \next}
+\let\repeat=\fi % this makes \loop...\if...\repeat skippable
+
+\def\thinspace{\kern .16667em }
+\def\negthinspace{\kern-.16667em }
+\def\enspace{\kern.5em }
+
+\def\enskip{\hskip.5em\relax}
+\def\quad{\hskip1em\relax}
+\def\qquad{\hskip2em\relax}
+
+\def\smallskip{\vskip\smallskipamount}
+\def\medskip{\vskip\medskipamount}
+\def\bigskip{\vskip\bigskipamount}
+
+\def\nointerlineskip{\prevdepth-1000\p@}
+\def\offinterlineskip{\baselineskip-1000\p@
+ \lineskip\z@ \lineskiplimit\maxdimen}
+
+\def\topglue{\nointerlineskip\vglue-\topskip\vglue} % for top of page
+\def\vglue{\afterassignment\vgl@\skip@=}
+\def\vgl@{\par \dimen@\prevdepth \hrule height\z@
+ \nobreak\vskip\skip@ \prevdepth\dimen@}
+\def\hglue{\afterassignment\hgl@\skip@=}
+\def\hgl@{\leavevmode \count@\spacefactor \vrule width\z@
+ \nobreak\hskip\skip@ \spacefactor\count@}
+
+\def~{\penalty\@M \ }
+\def\slash{/\penalty\exhyphenpenalty} % a `/' that acts like a `-'
+
+\def\break{\penalty-\@M}
+\def\nobreak{\penalty \@M}
+\def\allowbreak{\penalty \z@}
+
+\def\filbreak{\par\vfil\penalty-200\vfilneg}
+\def\goodbreak{\par\penalty-500 }
+\def\eject{\par\break}
+\def\supereject{\par\penalty-\@MM}
+
+\def\removelastskip{\ifdim\lastskip=\z@\else\vskip-\lastskip\fi}
+\def\smallbreak{\par\ifdim\lastskip<\smallskipamount
+ \removelastskip\penalty-50\smallskip\fi}
+\def\medbreak{\par\ifdim\lastskip<\medskipamount
+ \removelastskip\penalty-100\medskip\fi}
+\def\bigbreak{\par\ifdim\lastskip<\bigskipamount
+ \removelastskip\penalty-200\bigskip\fi}
+
+\def\line{\hbox to\hsize}
+\def\leftline#1{\line{#1\hss}}
+\def\rightline#1{\line{\hss#1}}
+\def\centerline#1{\line{\hss#1\hss}}
+
+\def\rlap#1{\hbox to\z@{#1\hss}}
+\def\llap#1{\hbox to\z@{\hss#1}}
+
+\def\m@th{\mathsurround\z@}
+\def\underbar#1{$\setbox\z@\hbox{#1}\dp\z@\z@
+ \m@th \underline{\box\z@}$}
+
+\newbox\strutbox
+\setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width\z@}
+\def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
+
+\def\hidewidth{\hskip\hideskip} % for alignment entries that can stick out
+\def\ialign{\everycr{}\tabskip\z@skip\halign} % initialized \halign
+\newcount\mscount
+\def\multispan#1{\omit \mscount#1\relax
+ \loop\ifnum\mscount>\@ne \sp@n\repeat}
+\def\sp@n{\span\omit\advance\mscount\m@ne}
+
+\newif\ifus@
+\newif\if@cr
+\newbox\tabs
+\newbox\tabsyet
+\newbox\tabsdone
+
+\def\cleartabs{\global\setbox\tabsyet\null \setbox\tabs\null}
+\def\settabs{\setbox\tabs\null \futurelet\next\sett@b}
+\let\+=\relax % in case this file is being read in twice
+\def\sett@b{\ifx\next\+\def\nxt{\afterassignment\s@tt@b\let\nxt}%
+ \else\let\nxt\s@tcols\fi \let\next\relax \nxt}
+\def\s@tt@b{\let\nxt\relax \us@false\m@ketabbox}
+\def\tabalign{\us@true\m@ketabbox} % non-\outer version of \+
+\outer\def\+{\tabalign}
+\def\s@tcols#1\columns{\count@#1\dimen@\hsize
+ \loop\ifnum\count@>\z@ \@nother \repeat}
+\def\@nother{\dimen@ii\dimen@ \divide\dimen@ii\count@
+ \setbox\tabs\hbox{\hbox to\dimen@ii{}\unhbox\tabs}%
+ \advance\dimen@-\dimen@ii \advance\count@\m@ne}
+
+\def\m@ketabbox{\begingroup
+ \global\setbox\tabsyet\copy\tabs
+ \global\setbox\tabsdone\null
+ \def\cr{\@crtrue\crcr\egroup\egroup
+ \ifus@\unvbox\z@\lastbox\fi\endgroup
+ \setbox\tabs\hbox{\unhbox\tabsyet\unhbox\tabsdone}}%
+ \setbox\z@\vbox\bgroup\@crfalse
+ \ialign\bgroup&\t@bbox##\t@bb@x\crcr}
+
+\def\t@bbox{\setbox\z@\hbox\bgroup}
+\def\t@bb@x{\if@cr\egroup % now \box\z@ holds the column
+ \else\hss\egroup \global\setbox\tabsyet\hbox{\unhbox\tabsyet
+ \global\setbox\@ne\lastbox}% now \box\@ne holds its size
+ \ifvoid\@ne\global\setbox\@ne\hbox to\wd\z@{}%
+ \else\setbox\z@\hbox to\wd\@ne{\unhbox\z@}\fi
+ \global\setbox\tabsdone\hbox{\box\@ne\unhbox\tabsdone}\fi
+ \box\z@}
+
+\def\hang{\hangindent\parindent}
+\def\textindent#1{\indent\llap{#1\enspace}\ignorespaces}
+\def\item{\par\hang\textindent}
+\def\itemitem{\par\indent \hangindent2\parindent \textindent}
+\def\narrower{\advance\leftskip\parindent
+ \advance\rightskip\parindent}
+
+\outer\def\beginsection#1\par{\vskip\z@ plus.3\vsize\penalty-250
+ \vskip\z@ plus-.3\vsize\bigskip\vskip\parskip
+ \message{#1}\leftline{\bf#1}\nobreak\smallskip\noindent}
+\outer\def\proclaim #1. #2\par{\medbreak
+ \noindent{\bf#1.\enspace}{\sl#2\par}%
+ \ifdim\lastskip<\medskipamount \removelastskip\penalty55\medskip\fi}
+
+\def\raggedright{\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax}
+\def\ttraggedright{\tt\rightskip\z@ plus2em\relax} % for use with \tt only
+
+\chardef\%=`\%
+\chardef\&=`\&
+\chardef\#=`\#
+\chardef\$=`\$
+\chardef\ss="19
+\chardef\ae="1A
+\chardef\oe="1B
+\chardef\o="1C
+\chardef\AE="1D
+\chardef\OE="1E
+\chardef\O="1F
+\chardef\i="10 % dotless i
+\chardef\j="11 % dotless j
+\def\aa{\accent23a} %^accent
+\def\l{\char32l}
+\def\L{\leavevmode\setbox0\hbox{L}\hbox to\wd0{\hss\char32L}}
+
+\def\leavevmode{\unhbox\voidb@x} % begins a paragraph, if necessary
+\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}}
+\def\AA{\leavevmode\setbox0\hbox{!}\dimen@\ht0\advance\dimen@-1ex%
+ \rlap{\raise.67\dimen@\hbox{\char'27}}A}
+
+\def\mathhexbox#1#2#3{\leavevmode
+ \hbox{$\m@th \mathchar"#1#2#3$}}
+\def\dag{\mathhexbox279}
+\def\ddag{\mathhexbox27A}
+\def\S{\mathhexbox278}
+\def\P{\mathhexbox27B}
+\def\Orb{\mathhexbox20D}
+
+\def\oalign#1{\leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex%
+ \ialign{##\crcr#1\crcr}}} \def\o@lign{\lineskiplimit\z@ \oalign}
+\def\ooalign{\lineskiplimit-\maxdimen \oalign} % chars over each other
+{\catcode`p=12 \catcode`t=12 \gdef\\#1pt{#1}} \let\getf@ctor=\\
+\def\sh@ft#1{\dimen@#1\kern\expandafter\getf@ctor\the\fontdimen1\font
+ \dimen@} % kern by #1 times the current slant
+\def\d#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{-1ex}.\hidewidth}}}
+\def\b#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{-3ex}%
+ \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}}
+\def\c#1{{\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent24 #1% %^accent
+ \else\ooalign{\unhbox\z@\crcr\hidewidth\char24\hidewidth}\fi}}
+\def\copyright{{\ooalign{\hfil\raise.07ex\hbox{c}\hfil\crcr\Orb}}}
+
+\def\dots{\relax\ifmmode\ldots\else$\m@th\ldots\,$\fi}
+\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX}
+
+\def\`#1{{\accent18 #1}} %^accent
+\def\'#1{{\accent19 #1}} %^accent
+\def\v#1{{\accent20 #1}} %^accent
+\let\^^_=\v
+\def\u#1{{\accent21 #1}} %^accent
+\let\^^S=\u
+\def\=#1{{\accent22 #1}} %^accent
+\def\^#1{{\accent94 #1}} %^accent
+\let\^^D=\^
+\def\.#1{{\accent95 #1}} %^accent
+\def\H#1{{\accent"7D #1}} %^accent
+\def\~#1{{\accent"7E #1}} %^accent
+\def\"#1{{\accent"7F #1}} %^accent
+\def\t#1{{\edef\next{\the\font}\the\textfont1\accent"7F\next#1}} %^accent
+
+\def\hrulefill{\leaders\hrule\hfill}
+\def\dotfill{\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfill}
+\def\rightarrowfill{$\m@th\smash-\mkern-7mu%
+ \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill
+ \mkern-7mu\mathord\rightarrow$}
+\def\leftarrowfill{$\m@th\mathord\leftarrow\mkern-7mu%
+ \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill
+ \mkern-7mu\smash-$}
+\mathchardef\braceld="037A
+\mathchardef\bracerd="037B
+\mathchardef\bracelu="037C
+\mathchardef\braceru="037D
+\def\downbracefill{$\m@th \setbox\z@\hbox{$\braceld$}%
+ \braceld\leaders\vrule height\ht\z@ depth\z@\hfill\braceru
+ \bracelu\leaders\vrule height\ht\z@ depth\z@\hfill\bracerd$}
+\def\upbracefill{$\m@th \setbox\z@\hbox{$\braceld$}%
+ \bracelu\leaders\vrule height\ht\z@ depth\z@\hfill\bracerd
+ \braceld\leaders\vrule height\ht\z@ depth\z@\hfill\braceru$}
+
+\outer\def\bye{\par\vfill\supereject\end}
+
+% Macros for math setting
+\message{math definitions,}
+
+\let\sp=^
+\let\sb=_
+\def\,{\mskip\thinmuskip}
+\def\>{\mskip\medmuskip}
+\def\;{\mskip\thickmuskip}
+\def\!{\mskip-\thinmuskip}
+\def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}}
+{\catcode`\'=\active \gdef'{^\bgroup\prim@s}}
+\def\prim@s{\prime\futurelet\next\pr@m@s}
+\def\pr@m@s{\ifx'\next\let\nxt\pr@@@s \else\ifx^\next\let\nxt\pr@@@t
+ \else\let\nxt\egroup\fi\fi \nxt}
+\def\pr@@@s#1{\prim@s}
+\def\pr@@@t#1#2{#2\egroup}
+{\catcode`\^^Z=\active \gdef^^Z{\not=}} % ^^Z is like \ne in math
+
+{\catcode`\_=\active \global\let_=\_} % _ in math is either subscript or \_
+
+\mathchardef\alpha="010B
+\mathchardef\beta="010C
+\mathchardef\gamma="010D
+\mathchardef\delta="010E
+\mathchardef\epsilon="010F
+\mathchardef\zeta="0110
+\mathchardef\eta="0111
+\mathchardef\theta="0112
+\mathchardef\iota="0113
+\mathchardef\kappa="0114
+\mathchardef\lambda="0115
+\mathchardef\mu="0116
+\mathchardef\nu="0117
+\mathchardef\xi="0118
+\mathchardef\pi="0119
+\mathchardef\rho="011A
+\mathchardef\sigma="011B
+\mathchardef\tau="011C
+\mathchardef\upsilon="011D
+\mathchardef\phi="011E
+\mathchardef\chi="011F
+\mathchardef\psi="0120
+\mathchardef\omega="0121
+\mathchardef\varepsilon="0122
+\mathchardef\vartheta="0123
+\mathchardef\varpi="0124
+\mathchardef\varrho="0125
+\mathchardef\varsigma="0126
+\mathchardef\varphi="0127
+\mathchardef\Gamma="7000
+\mathchardef\Delta="7001
+\mathchardef\Theta="7002
+\mathchardef\Lambda="7003
+\mathchardef\Xi="7004
+\mathchardef\Pi="7005
+\mathchardef\Sigma="7006
+\mathchardef\Upsilon="7007
+\mathchardef\Phi="7008
+\mathchardef\Psi="7009
+\mathchardef\Omega="700A
+
+\mathchardef\aleph="0240
+\def\hbar{{\mathchar'26\mkern-9muh}}
+\mathchardef\imath="017B
+\mathchardef\jmath="017C
+\mathchardef\ell="0160
+\mathchardef\wp="017D
+\mathchardef\Re="023C
+\mathchardef\Im="023D
+\mathchardef\partial="0140
+\mathchardef\infty="0231
+\mathchardef\prime="0230
+\mathchardef\emptyset="023B
+\mathchardef\nabla="0272
+\def\surd{{\mathchar"1270}}
+\mathchardef\top="023E
+\mathchardef\bot="023F
+\def\angle{{\vbox{\ialign{$\m@th\scriptstyle##$\crcr
+ \not\mathrel{\mkern14mu}\crcr
+ \noalign{\nointerlineskip}
+ \mkern2.5mu\leaders\hrule height.34pt\hfill\mkern2.5mu\crcr}}}}
+\mathchardef\triangle="0234
+\mathchardef\forall="0238
+\mathchardef\exists="0239
+\mathchardef\neg="023A
+\let\lnot=\neg
+\mathchardef\flat="015B
+\mathchardef\natural="015C
+\mathchardef\sharp="015D
+\mathchardef\clubsuit="027C
+\mathchardef\diamondsuit="027D
+\mathchardef\heartsuit="027E
+\mathchardef\spadesuit="027F
+
+\mathchardef\coprod="1360
+\mathchardef\bigvee="1357
+\mathchardef\bigwedge="1356
+\mathchardef\biguplus="1355
+\mathchardef\bigcap="1354
+\mathchardef\bigcup="1353
+\mathchardef\intop="1352
+\def\int{\intop\nolimits}
+\mathchardef\prod="1351
+\mathchardef\sum="1350
+\mathchardef\bigotimes="134E
+\mathchardef\bigoplus="134C
+\mathchardef\bigodot="134A
+\mathchardef\ointop="1348
+\def\oint{\ointop\nolimits}
+\mathchardef\bigsqcup="1346
+\mathchardef\smallint="1273
+
+\mathchardef\triangleleft="212F
+\mathchardef\triangleright="212E
+\mathchardef\bigtriangleup="2234
+\mathchardef\bigtriangledown="2235
+\mathchardef\wedge="225E
+\let\land=\wedge
+\mathchardef\vee="225F
+\let\lor=\vee
+\mathchardef\cap="225C
+\mathchardef\cup="225B
+\mathchardef\ddagger="227A
+\mathchardef\dagger="2279
+\mathchardef\sqcap="2275
+\mathchardef\sqcup="2274
+\mathchardef\uplus="225D
+\mathchardef\amalg="2271
+\mathchardef\diamond="2205
+\mathchardef\bullet="220F
+\mathchardef\wr="226F
+\mathchardef\div="2204
+\mathchardef\odot="220C
+\mathchardef\oslash="220B
+\mathchardef\otimes="220A
+\mathchardef\ominus="2209
+\mathchardef\oplus="2208
+\mathchardef\mp="2207
+\mathchardef\pm="2206
+\mathchardef\circ="220E
+\mathchardef\bigcirc="220D
+\mathchardef\setminus="226E % for set difference A\setminus B
+\mathchardef\cdot="2201
+\mathchardef\ast="2203
+\mathchardef\times="2202
+\mathchardef\star="213F
+
+\mathchardef\propto="322F
+\mathchardef\sqsubseteq="3276
+\mathchardef\sqsupseteq="3277
+\mathchardef\parallel="326B
+\mathchardef\mid="326A
+\mathchardef\dashv="3261
+\mathchardef\vdash="3260
+\mathchardef\nearrow="3225
+\mathchardef\searrow="3226
+\mathchardef\nwarrow="322D
+\mathchardef\swarrow="322E
+\mathchardef\Leftrightarrow="322C
+\mathchardef\Leftarrow="3228
+\mathchardef\Rightarrow="3229
+\def\neq{\not=}
+\let\ne=\neq
+\mathchardef\leq="3214
+\let\le=\leq
+\mathchardef\geq="3215
+\let\ge=\geq
+\mathchardef\succ="321F
+\mathchardef\prec="321E
+\mathchardef\approx="3219
+\mathchardef\succeq="3217
+\mathchardef\preceq="3216
+\mathchardef\supset="321B
+\mathchardef\subset="321A
+\mathchardef\supseteq="3213
+\mathchardef\subseteq="3212
+\mathchardef\in="3232
+\mathchardef\ni="3233
+\let\owns=\ni
+\mathchardef\gg="321D
+\mathchardef\ll="321C
+\mathchardef\not="3236
+\mathchardef\leftrightarrow="3224
+\mathchardef\leftarrow="3220
+\let\gets=\leftarrow
+\mathchardef\rightarrow="3221
+\let\to=\rightarrow
+\mathchardef\mapstochar="3237
+\def\mapsto{\mapstochar\rightarrow}
+\mathchardef\sim="3218
+\mathchardef\simeq="3227
+\mathchardef\perp="323F
+\mathchardef\equiv="3211
+\mathchardef\asymp="3210
+\mathchardef\smile="315E
+\mathchardef\frown="315F
+\mathchardef\leftharpoonup="3128
+\mathchardef\leftharpoondown="3129
+\mathchardef\rightharpoonup="312A
+\mathchardef\rightharpoondown="312B
+
+\def\joinrel{\mathrel{\mkern-3mu}}
+\def\relbar{\mathrel{\smash-}} % \smash, because - has the same height as +
+\def\Relbar{\mathrel=}
+\mathchardef\lhook="312C
+\def\hookrightarrow{\lhook\joinrel\rightarrow}
+\mathchardef\rhook="312D
+\def\hookleftarrow{\leftarrow\joinrel\rhook}
+\def\bowtie{\mathrel\triangleright\joinrel\mathrel\triangleleft}
+\def\models{\mathrel|\joinrel=}
+\def\Longrightarrow{\Relbar\joinrel\Rightarrow}
+\def\longrightarrow{\relbar\joinrel\rightarrow}
+\def\longleftarrow{\leftarrow\joinrel\relbar}
+\def\Longleftarrow{\Leftarrow\joinrel\Relbar}
+\def\longmapsto{\mapstochar\longrightarrow}
+\def\longleftrightarrow{\leftarrow\joinrel\rightarrow}
+\def\Longleftrightarrow{\Leftarrow\joinrel\Rightarrow}
+\def\iff{\;\Longleftrightarrow\;}
+
+\mathchardef\ldotp="613A % ldot as a punctuation mark
+\mathchardef\cdotp="6201 % cdot as a punctuation mark
+\mathchardef\colon="603A % colon as a punctuation mark
+\def\ldots{\mathinner{\ldotp\ldotp\ldotp}}
+\def\cdots{\mathinner{\cdotp\cdotp\cdotp}}
+\def\vdots{\vbox{\baselineskip4\p@ \lineskiplimit\z@
+ \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
+\def\ddots{\mathinner{\mkern1mu\raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern2mu
+ \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu}}
+
+\def\acute{\mathaccent"7013 } %^math_accent
+\def\grave{\mathaccent"7012 } %^math_accent
+\def\ddot{\mathaccent"707F } %^math_accent
+\def\tilde{\mathaccent"707E } %^math_accent
+\def\bar{\mathaccent"7016 } %^math_accent
+\def\breve{\mathaccent"7015 } %^math_accent
+\def\check{\mathaccent"7014 } %^math_accent
+\def\hat{\mathaccent"705E } %^math_accent
+\def\vec{\mathaccent"017E } %^math_accent
+\def\dot{\mathaccent"705F } %^math_accent
+\def\widetilde{\mathaccent"0365 } %^math_accent
+\def\widehat{\mathaccent"0362 } %^math_accent
+\def\overrightarrow#1{\vbox{\m@th\ialign{##\crcr
+ \rightarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}
+ $\hfil\displaystyle{#1}\hfil$\crcr}}}
+\def\overleftarrow#1{\vbox{\m@th\ialign{##\crcr
+ \leftarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}
+ $\hfil\displaystyle{#1}\hfil$\crcr}}}
+\def\overbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3\p@}
+ \downbracefill\crcr\noalign{\kern3\p@\nointerlineskip}
+ $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
+\def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr
+ $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern3\p@\nointerlineskip}
+ \upbracefill\crcr\noalign{\kern3\p@}}}}\limits}
+\def\skew#1#2#3{{\muskip\z@#1mu\divide\muskip\z@\tw@ \mkern\muskip\z@
+ #2{\mkern-\muskip\z@{#3}\mkern\muskip\z@}\mkern-\muskip\z@}{}}
+
+\def\lmoustache{\delimiter"437A340 } % top from (, bottom from )
+\def\rmoustache{\delimiter"537B341 } % top from ), bottom from (
+\def\lgroup{\delimiter"462833A } % extensible ( with sharper tips
+\def\rgroup{\delimiter"562933B } % extensible ) with sharper tips
+\def\arrowvert{\delimiter"26A33C } % arrow without arrowheads
+\def\Arrowvert{\delimiter"26B33D } % double arrow without arrowheads
+\def\bracevert{\delimiter"77C33E } % the vertical bar that extends braces
+\def\Vert{\delimiter"26B30D }
+\let\|=\Vert
+\def\vert{\delimiter"26A30C }
+\def\uparrow{\delimiter"3222378 }
+\def\downarrow{\delimiter"3223379 }
+\def\updownarrow{\delimiter"326C33F }
+\def\Uparrow{\delimiter"322A37E }
+\def\Downarrow{\delimiter"322B37F }
+\def\Updownarrow{\delimiter"326D377 }
+\def\backslash{\delimiter"26E30F } % for double coset G\backslash H
+\def\rangle{\delimiter"526930B }
+\def\langle{\delimiter"426830A }
+\def\rbrace{\delimiter"5267309 }
+\let\}=\rbrace
+\def\lbrace{\delimiter"4266308 }
+\let\{=\lbrace
+\def\rceil{\delimiter"5265307 }
+\def\lceil{\delimiter"4264306 }
+\def\rfloor{\delimiter"5263305 }
+\def\lfloor{\delimiter"4262304 }
+
+\def\bigl{\mathopen\big}
+\def\bigm{\mathrel\big}
+\def\bigr{\mathclose\big}
+\def\Bigl{\mathopen\Big}
+\def\Bigm{\mathrel\Big}
+\def\Bigr{\mathclose\Big}
+\def\biggl{\mathopen\bigg}
+\def\biggm{\mathrel\bigg}
+\def\biggr{\mathclose\bigg}
+\def\Biggl{\mathopen\Bigg}
+\def\Biggm{\mathrel\Bigg}
+\def\Biggr{\mathclose\Bigg}
+\def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}}
+\def\Big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}}
+\def\bigg#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}}
+\def\Bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}}
+\def\n@space{\nulldelimiterspace\z@ \m@th}
+
+\def\choose{\atopwithdelims()}
+\def\brack{\atopwithdelims[]}
+\def\brace{\atopwithdelims\{\}}
+
+\def\sqrt{\radical"270370 }
+
+\def\mathpalette#1#2{\mathchoice{#1\displaystyle{#2}}%
+ {#1\textstyle{#2}}{#1\scriptstyle{#2}}{#1\scriptscriptstyle{#2}}}
+\newbox\rootbox % Box to hold radicand for nth root commands.
+\def\root#1\of{\setbox\rootbox
+ \hbox{$\m@th\scriptscriptstyle{#1}$}\mathpalette\r@@t}
+\def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\sqrt{#2}$}\dimen@\ht\z@
+ \advance\dimen@-\dp\z@
+ \mkern5mu\raise.6\dimen@\copy\rootbox \mkern-10mu\box\z@}
+\newif\ifv@
+\newif\ifh@
+\def\vphantom{\v@true\h@false\ph@nt}
+\def\hphantom{\v@false\h@true\ph@nt}
+\def\phantom{\v@true\h@true\ph@nt}
+\def\ph@nt{\ifmmode\def\next{\mathpalette\mathph@nt}%
+ \else\let\next\makeph@nt\fi\next}
+\def\makeph@nt#1{\setbox\z@\hbox{#1}\finph@nt}
+\def\mathph@nt#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finph@nt}
+\def\finph@nt{\setbox\tw@\null
+ \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi
+ \ifh@ \wd\tw@\wd\z@\fi \box\tw@}
+\def\mathstrut{\vphantom(}
+\def\smash{\relax % \relax, in case this comes first in \halign
+ \ifmmode\def\next{\mathpalette\mathsm@sh}\else\let\next\makesm@sh
+ \fi\next}
+\def\makesm@sh#1{\setbox\z@\hbox{#1}\finsm@sh}
+\def\mathsm@sh#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finsm@sh}
+\def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \box\z@}
+
+\def\cong{\mathrel{\mathpalette\@vereq\sim}} % congruence sign
+\def\@vereq#1#2{\lower.5\p@\vbox{\lineskiplimit\maxdimen\lineskip-.5\p@
+ \ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr=\crcr}}}
+\def\notin{\mathrel{\mathpalette\c@ncel\in}}
+\def\c@ncel#1#2{\m@th\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}}
+\def\rightleftharpoons{\mathrel{\mathpalette\rlh@{}}}
+\def\rlh@#1{\vcenter{\m@th\hbox{\ooalign{\raise2pt
+ \hbox{$#1\rightharpoonup$}\crcr
+ $#1\leftharpoondown$}}}}
+\def\buildrel#1\over#2{\mathrel{\mathop{\kern\z@#2}\limits^{#1}}}
+\def\doteq{\buildrel\textstyle.\over=}
+
+\def\log{\mathop{\rm log}\nolimits}
+\def\lg{\mathop{\rm lg}\nolimits}
+\def\ln{\mathop{\rm ln}\nolimits}
+\def\lim{\mathop{\rm lim}}
+\def\limsup{\mathop{\rm lim\,sup}}
+\def\liminf{\mathop{\rm lim\,inf}}
+\def\sin{\mathop{\rm sin}\nolimits}
+\def\arcsin{\mathop{\rm arcsin}\nolimits}
+\def\sinh{\mathop{\rm sinh}\nolimits}
+\def\cos{\mathop{\rm cos}\nolimits}
+\def\arccos{\mathop{\rm arccos}\nolimits}
+\def\cosh{\mathop{\rm cosh}\nolimits}
+\def\tan{\mathop{\rm tan}\nolimits}
+\def\arctan{\mathop{\rm arctan}\nolimits}
+\def\tanh{\mathop{\rm tanh}\nolimits}
+\def\cot{\mathop{\rm cot}\nolimits}
+\def\coth{\mathop{\rm coth}\nolimits}
+\def\sec{\mathop{\rm sec}\nolimits}
+\def\csc{\mathop{\rm csc}\nolimits}
+\def\max{\mathop{\rm max}}
+\def\min{\mathop{\rm min}}
+\def\sup{\mathop{\rm sup}}
+\def\inf{\mathop{\rm inf}}
+\def\arg{\mathop{\rm arg}\nolimits}
+\def\ker{\mathop{\rm ker}\nolimits}
+\def\dim{\mathop{\rm dim}\nolimits}
+\def\hom{\mathop{\rm hom}\nolimits}
+\def\det{\mathop{\rm det}}
+\def\exp{\mathop{\rm exp}\nolimits}
+\def\Pr{\mathop{\rm Pr}}
+\def\gcd{\mathop{\rm gcd}}
+\def\deg{\mathop{\rm deg}\nolimits}
+
+\def\bmod{\nonscript\mskip-\medmuskip\mkern5mu
+ \mathbin{\rm mod}\penalty900\mkern5mu\nonscript\mskip-\medmuskip}
+\def\pmod#1{\allowbreak\mkern18mu({\rm mod}\,\,#1)}
+
+\def\cases#1{\left\{\,\vcenter{\normalbaselines\m@th
+ \ialign{$##\hfil$&\quad##\hfil\crcr#1\crcr}}\right.}
+\def\matrix#1{\null\,\vcenter{\normalbaselines\m@th
+ \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr
+ \mathstrut\crcr\noalign{\kern-\baselineskip}
+ #1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}\,}
+\def\pmatrix#1{\left(\matrix{#1}\right)}
+\newdimen\p@renwd
+\setbox0=\hbox{\tenex B}
+\p@renwd=\wd0 % width of the big left (
+\def\bordermatrix#1{\begingroup \m@th
+ \setbox\z@\vbox{\def\cr{\crcr\noalign{\kern2\p@\global\let\cr\endline}}%
+ \ialign{$##$\hfil\kern2\p@\kern\p@renwd&\thinspace\hfil$##$\hfil
+ &&\quad\hfil$##$\hfil\crcr
+ \omit\strut\hfil\crcr\noalign{\kern-\baselineskip}%
+ #1\crcr\omit\strut\cr}}%
+ \setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}%
+ \setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}%
+ \setbox\tw@\hbox{$\kern\wd\@ne\kern-\p@renwd\left(\kern-\wd\@ne
+ \global\setbox\@ne\vbox{\box\@ne\kern2\p@}%
+ \vcenter{\kern-\ht\@ne\unvbox\z@\kern-\baselineskip}\,\right)$}%
+ \null\;\vbox{\kern\ht\@ne\box\tw@}\endgroup}
+
+\def\openup{\afterassignment\@penup\dimen@=}
+\def\@penup{\advance\lineskip\dimen@
+ \advance\baselineskip\dimen@
+ \advance\lineskiplimit\dimen@}
+\def\eqalign#1{\null\,\vcenter{\openup\jot\m@th
+ \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil
+ \crcr#1\crcr}}\,}
+\newif\ifdt@p
+\def\displ@y{\global\dt@ptrue\openup\jot\m@th
+ \everycr{\noalign{\ifdt@p \global\dt@pfalse \ifdim\prevdepth>-1000\p@
+ \vskip-\lineskiplimit \vskip\normallineskiplimit \fi
+ \else \penalty\interdisplaylinepenalty \fi}}}
+\def\@lign{\tabskip\z@skip\everycr{}} % restore inside \displ@y
+\def\displaylines#1{\displ@y \tabskip\z@skip
+ \halign{\hbox to\displaywidth{$\@lign\hfil\displaystyle##\hfil$}\crcr
+ #1\crcr}}
+\def\eqalignno#1{\displ@y \tabskip\centering
+ \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip
+ &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering
+ &\llap{$\@lign##$}\tabskip\z@skip\crcr
+ #1\crcr}}
+\def\leqalignno#1{\displ@y \tabskip\centering
+ \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip
+ &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering
+ &\kern-\displaywidth\rlap{$\@lign##$}\tabskip\displaywidth\crcr
+ #1\crcr}}
+
+% Definitions related to output
+
+\message{output routines,}
+
+\countdef\pageno=0
+\pageno=1 % first page is number 1
+\newtoks\headline
+\headline={\hfil} % headline is normally blank
+\newtoks\footline
+\footline={\hss\tenrm\folio\hss}
+ % footline is normally a centered page number in font \tenrm
+\newif\ifr@ggedbottom
+\def\raggedbottom{\topskip 10\p@ plus60\p@ \r@ggedbottomtrue}
+\def\normalbottom{\topskip 10\p@ \r@ggedbottomfalse} % undoes \raggedbottom
+\def\folio{\ifnum\pageno<\z@ \romannumeral-\pageno \else\number\pageno \fi}
+\def\nopagenumbers{\footline{\hfil}} % blank out the footline
+\def\advancepageno{\ifnum\pageno<\z@ \global\advance\pageno\m@ne
+ \else\global\advance\pageno\@ne \fi} % increase |pageno|
+
+\newinsert\footins
+\def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later
+ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
+ #1\@sf\vfootnote{#1}}
+\def\vfootnote#1{\insert\footins\bgroup
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\ht\strutbox % top baseline for broken footnotes
+ \splitmaxdepth\dp\strutbox \floatingpenalty\@MM
+ \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip
+ \textindent{#1}\footstrut\futurelet\next\fo@t}
+\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t
+ \else\let\next\f@t\fi \next}
+\def\f@@t{\bgroup\aftergroup\@foot\let\next}
+\def\f@t#1{#1\@foot}
+\def\@foot{\strut\egroup}
+\def\footstrut{\vbox to\splittopskip{}}
+\skip\footins=\bigskipamount % space added when footnote is present
+\count\footins=1000 % footnote magnification factor (1 to 1)
+\dimen\footins=8in % maximum footnotes per page
+
+\newinsert\topins
+\newif\ifp@ge
+\newif\if@mid
+\def\topinsert{\@midfalse\p@gefalse\@ins}
+\def\midinsert{\@midtrue\@ins}
+\def\pageinsert{\@midfalse\p@getrue\@ins}
+\skip\topins=\z@skip % no space added when a topinsert is present
+\count\topins=1000 % magnification factor (1 to 1)
+\dimen\topins=\maxdimen % no limit per page
+\def\@ins{\par\begingroup\setbox\z@\vbox\bgroup} % start a \vbox
+\def\endinsert{\egroup % finish the \vbox
+ \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ \advance\dimen@12\p@
+ \advance\dimen@\pagetotal \advance\dimen@-\pageshrink
+ \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi
+ \if@mid \bigskip\box\z@\bigbreak
+ \else\insert\topins{\penalty100 % floating insertion
+ \splittopskip\z@skip
+ \splitmaxdepth\maxdimen \floatingpenalty\z@
+ \ifp@ge \dimen@\dp\z@
+ \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero
+ \else \box\z@\nobreak\bigskip\fi}\fi\endgroup}
+
+\output{\plainoutput}
+\def\plainoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}%
+ \advancepageno
+ \ifnum\outputpenalty>-\@MM \else\dosupereject\fi}
+\def\pagebody{\vbox to\vsize{\boxmaxdepth\maxdepth \pagecontents}}
+\def\makeheadline{\vbox to\z@{\vskip-22.5\p@
+ \line{\vbox to8.5\p@{}\the\headline}\vss}\nointerlineskip}
+\def\makefootline{\baselineskip24\p@\lineskiplimit\z@\line{\the\footline}}
+\def\dosupereject{\ifnum\insertpenalties>\z@ % something is being held over
+ \line{}\kern-\topskip\nobreak\vfill\supereject\fi}
+
+\def\pagecontents{\ifvoid\topins\else\unvbox\topins\fi
+ \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255
+ \ifvoid\footins\else % footnote info is present
+ \vskip\skip\footins
+ \footnoterule
+ \unvbox\footins\fi
+ \ifr@ggedbottom \kern-\dimen@ \vfil \fi}
+\def\footnoterule{\kern-3\p@
+ \hrule width 2truein \kern 2.6\p@} % the \hrule is .4pt high
+
+% Hyphenation, miscellaneous macros, and initial values for standard layout
+\message{hyphenation}
+
+\lefthyphenmin=2
+\righthyphenmin=3 % disallow x- or -xx breaks
+\input hyphen
+
+\def\magnification{\afterassignment\m@g\count@}
+\def\m@g{\mag\count@
+ \hsize6.5truein\vsize8.9truein\dimen\footins8truein}
+
+\def\tracingall{\tracingonline\@ne\tracingcommands\tw@\tracingstats\tw@
+ \tracingpages\@ne\tracingoutput\@ne\tracinglostchars\@ne
+ \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne
+ \showboxbreadth\maxdimen\showboxdepth\maxdimen\errorstopmode}
+
+\def\showhyphens#1{\setbox0\vbox{\parfillskip\z@skip\hsize\maxdimen\tenrm
+ \pretolerance\m@ne\tolerance\m@ne\hbadness0\showboxdepth0\ #1}}
+
+\normalbaselines\rm % select roman font
+\nonfrenchspacing % punctuation affects the spacing
+\catcode`@=12 % at signs are no longer letters
+
+\def\fmtname{plain}
+\def\fmtversion{3.1415926} % identifies the current format