summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/eplain/AUTHORS (renamed from Master/texmf-dist/doc/eplain/base/AUTHORS)2
-rw-r--r--Master/texmf-dist/doc/eplain/COPYING (renamed from Master/texmf-dist/doc/eplain/base/COPYING)0
-rw-r--r--Master/texmf-dist/doc/eplain/ChangeLog (renamed from Master/texmf-dist/doc/eplain/base/ChangeLog)542
-rw-r--r--Master/texmf-dist/doc/eplain/INSTALL46
-rw-r--r--Master/texmf-dist/doc/eplain/NEWS (renamed from Master/texmf-dist/doc/eplain/base/NEWS)54
-rw-r--r--Master/texmf-dist/doc/eplain/PROJECTS (renamed from Master/texmf-dist/doc/eplain/base/PROJECTS)0
-rw-r--r--Master/texmf-dist/doc/eplain/README (renamed from Master/texmf-dist/doc/eplain/base/README)0
-rw-r--r--Master/texmf-dist/doc/eplain/base/INSTALL51
-rw-r--r--Master/texmf-dist/doc/eplain/base/Makefile97
-rw-r--r--Master/texmf-dist/doc/eplain/base/arrow.texi781
-rw-r--r--Master/texmf-dist/doc/eplain/base/btxdoc.bib90
-rw-r--r--Master/texmf-dist/doc/eplain/base/btxdoc.tex1117
-rw-r--r--Master/texmf-dist/doc/eplain/base/csindex.texi6
-rw-r--r--Master/texmf-dist/doc/eplain/base/eplain.pdfbin670226 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/eplain/base/eplain.texi228
-rw-r--r--Master/texmf-dist/doc/eplain/base/hlink.texi1860
-rw-r--r--Master/texmf-dist/doc/eplain/base/index.texi7
-rw-r--r--Master/texmf-dist/doc/eplain/base/install.texi65
-rw-r--r--Master/texmf-dist/doc/eplain/base/intro.texi71
-rw-r--r--Master/texmf-dist/doc/eplain/base/invoke.texi144
-rw-r--r--Master/texmf-dist/doc/eplain/base/progdef.texi768
-rw-r--r--Master/texmf-dist/doc/eplain/base/userdef.texi2538
-rw-r--r--Master/texmf-dist/doc/eplain/demo/Makefile41
-rw-r--r--Master/texmf-dist/doc/eplain/demo/lscommnt.tex47
-rw-r--r--Master/texmf-dist/doc/eplain/demo/xhyper.tex190
-rw-r--r--Master/texmf-dist/doc/eplain/doc/eplain.html (renamed from Master/texmf-dist/doc/eplain/base/eplain.html)5300
-rw-r--r--Master/texmf-dist/doc/eplain/doc/eplain.info7863
-rw-r--r--Master/texmf-dist/doc/eplain/doc/eplain.pdfbin0 -> 895977 bytes
-rw-r--r--Master/texmf-dist/doc/eplain/doc/lscommnt.jpgbin0 -> 68549 bytes
-rw-r--r--Master/texmf-dist/doc/eplain/doc/xhyper.jpgbin0 -> 14118 bytes
-rw-r--r--Master/texmf-dist/doc/eplain/util/idxuniq (renamed from Master/texmf-dist/source/eplain/base/util/idxuniq)0
-rw-r--r--Master/texmf-dist/doc/eplain/util/trimsee (renamed from Master/texmf-dist/source/eplain/base/util/trimsee)0
-rw-r--r--Master/texmf-dist/source/eplain/base/add-date28
-rw-r--r--Master/texmf-dist/source/eplain/base/add-version24
-rw-r--r--Master/texmf-dist/source/eplain/base/etex.tex5
-rw-r--r--Master/texmf-dist/source/eplain/base/fix-checksum20
-rw-r--r--Master/texmf-dist/source/eplain/base/merge84
-rw-r--r--Master/texmf-dist/source/eplain/base/packages.zipbin11374 -> 0 bytes
-rw-r--r--Master/texmf-dist/source/eplain/base/test/allref.tex15
-rw-r--r--Master/texmf-dist/source/eplain/base/test/boxes.tex11
-rw-r--r--Master/texmf-dist/source/eplain/base/test/boxit.tex24
-rw-r--r--Master/texmf-dist/source/eplain/base/test/catcode.tex8
-rw-r--r--Master/texmf-dist/source/eplain/base/test/center.tex12
-rw-r--r--Master/texmf-dist/source/eplain/base/test/cite.bib25
-rw-r--r--Master/texmf-dist/source/eplain/base/test/cite.tex35
-rw-r--r--Master/texmf-dist/source/eplain/base/test/citeall.tex12
-rw-r--r--Master/texmf-dist/source/eplain/base/test/citealph.tex26
-rw-r--r--Master/texmf-dist/source/eplain/base/test/citeapa.tex26
-rw-r--r--Master/texmf-dist/source/eplain/base/test/citebegin.tex20
-rw-r--r--Master/texmf-dist/source/eplain/base/test/citecust.tex38
-rw-r--r--Master/texmf-dist/source/eplain/base/test/citenote.tex13
-rw-r--r--Master/texmf-dist/source/eplain/base/test/citex.tex8
-rw-r--r--Master/texmf-dist/source/eplain/base/test/colfootn.tex18
-rw-r--r--Master/texmf-dist/source/eplain/base/test/colrule.tex33
-rw-r--r--Master/texmf-dist/source/eplain/base/test/column.tex228
-rw-r--r--Master/texmf-dist/source/eplain/base/test/column2.tex51
-rw-r--r--Master/texmf-dist/source/eplain/base/test/column3.tex23
-rw-r--r--Master/texmf-dist/source/eplain/base/test/commdiags.tex111
-rw-r--r--Master/texmf-dist/source/eplain/base/test/contents.tex30
-rw-r--r--Master/texmf-dist/source/eplain/base/test/displine.tex36
-rw-r--r--Master/texmf-dist/source/eplain/base/test/double.tex24
-rw-r--r--Master/texmf-dist/source/eplain/base/test/double2.tex163
-rw-r--r--Master/texmf-dist/source/eplain/base/test/dvipdfm.tex111
-rw-r--r--Master/texmf-dist/source/eplain/base/test/ecommdiag.tex15
-rw-r--r--Master/texmf-dist/source/eplain/base/test/emergncy.tex19
-rw-r--r--Master/texmf-dist/source/eplain/base/test/env.tex42
-rw-r--r--Master/texmf-dist/source/eplain/base/test/eqdef.tex15
-rw-r--r--Master/texmf-dist/source/eplain/base/test/eqref.tex141
-rw-r--r--Master/texmf-dist/source/eplain/base/test/example.eps389
-rw-r--r--Master/texmf-dist/source/eplain/base/test/filexist.tex22
-rw-r--r--Master/texmf-dist/source/eplain/base/test/flynn.tex7
-rw-r--r--Master/texmf-dist/source/eplain/base/test/footnote.tex88
-rw-r--r--Master/texmf-dist/source/eplain/base/test/frac.tex24
-rw-r--r--Master/texmf-dist/source/eplain/base/test/gcol.tex218
-rw-r--r--Master/texmf-dist/source/eplain/base/test/hlcite.tex55
-rw-r--r--Master/texmf-dist/source/eplain/base/test/hlfoot.tex47
-rw-r--r--Master/texmf-dist/source/eplain/base/test/hlidx.mst2
-rw-r--r--Master/texmf-dist/source/eplain/base/test/hlidx.tex138
-rw-r--r--Master/texmf-dist/source/eplain/base/test/hlink.tex144
-rw-r--r--Master/texmf-dist/source/eplain/base/test/ian.tex28
-rw-r--r--Master/texmf-dist/source/eplain/base/test/index.tex36
-rw-r--r--Master/texmf-dist/source/eplain/base/test/jan.tex15
-rw-r--r--Master/texmf-dist/source/eplain/base/test/justify.tex106
-rw-r--r--Master/texmf-dist/source/eplain/base/test/knuth.bib17
-rw-r--r--Master/texmf-dist/source/eplain/base/test/label.tex8
-rw-r--r--Master/texmf-dist/source/eplain/base/test/latexcite.tex9
-rw-r--r--Master/texmf-dist/source/eplain/base/test/liang.tex300
-rw-r--r--Master/texmf-dist/source/eplain/base/test/list.tex90
-rw-r--r--Master/texmf-dist/source/eplain/base/test/listing.tex10
-rw-r--r--Master/texmf-dist/source/eplain/base/test/logo.tex20
-rw-r--r--Master/texmf-dist/source/eplain/base/test/loop.tex20
-rw-r--r--Master/texmf-dist/source/eplain/base/test/loopnext.tex21
-rw-r--r--Master/texmf-dist/source/eplain/base/test/mag.tex14
-rw-r--r--Master/texmf-dist/source/eplain/base/test/makecol.tex17
-rw-r--r--Master/texmf-dist/source/eplain/base/test/margin.tex68
-rw-r--r--Master/texmf-dist/source/eplain/base/test/matrix.tex18
-rw-r--r--Master/texmf-dist/source/eplain/base/test/mdisplay.tex215
-rw-r--r--Master/texmf-dist/source/eplain/base/test/names.tex21
-rw-r--r--Master/texmf-dist/source/eplain/base/test/noarrow.tex8
-rw-r--r--Master/texmf-dist/source/eplain/base/test/nobib.tex10
-rw-r--r--Master/texmf-dist/source/eplain/base/test/nonouter.tex11
-rw-r--r--Master/texmf-dist/source/eplain/base/test/optional.tex30
-rw-r--r--Master/texmf-dist/source/eplain/base/test/outer.tex26
-rw-r--r--Master/texmf-dist/source/eplain/base/test/page.tex8
-rw-r--r--Master/texmf-dist/source/eplain/base/test/path.tex25
-rw-r--r--Master/texmf-dist/source/eplain/base/test/pcol.tex183
-rw-r--r--Master/texmf-dist/source/eplain/base/test/pdftex.tex112
-rw-r--r--Master/texmf-dist/source/eplain/base/test/psfont.map78
-rw-r--r--Master/texmf-dist/source/eplain/base/test/rex.tex277
-rw-r--r--Master/texmf-dist/source/eplain/base/test/rule.tex23
-rw-r--r--Master/texmf-dist/source/eplain/base/test/sidx.tex5
-rw-r--r--Master/texmf-dist/source/eplain/base/test/subdef.tex24
-rw-r--r--Master/texmf-dist/source/eplain/base/test/tenenb.tex48
-rw-r--r--Master/texmf-dist/source/eplain/base/test/tenenb2.tex23
-rw-r--r--Master/texmf-dist/source/eplain/base/test/test.tex14
-rw-r--r--Master/texmf-dist/source/eplain/base/test/time.tex10
-rw-r--r--Master/texmf-dist/source/eplain/base/test/truemarg.tex36
-rw-r--r--Master/texmf-dist/source/eplain/base/test/uscore.bib5
-rw-r--r--Master/texmf-dist/source/eplain/base/test/uscore.tex14
-rw-r--r--Master/texmf-dist/source/eplain/base/test/usepackage.tex146
-rw-r--r--Master/texmf-dist/source/eplain/base/test/verb2.tex61
-rw-r--r--Master/texmf-dist/source/eplain/base/test/verbatim.tex65
-rw-r--r--Master/texmf-dist/source/eplain/base/test/vlach.tex258
-rw-r--r--Master/texmf-dist/source/eplain/base/test/whitespc.tex51
-rw-r--r--Master/texmf-dist/source/eplain/base/test/xampl.tex13
-rw-r--r--Master/texmf-dist/source/eplain/base/test/xref.tex39
-rw-r--r--Master/texmf-dist/source/eplain/base/xeplain.tex4783
-rw-r--r--Master/texmf-dist/source/eplain/eplain-source-3.1.zipbin0 -> 375590 bytes
-rw-r--r--Master/texmf-dist/tex/eplain/arrow.tex (renamed from Master/texmf-dist/tex/eplain/base/arrow.tex)0
-rw-r--r--Master/texmf-dist/tex/eplain/btxmac.tex (renamed from Master/texmf-dist/tex/eplain/base/btxmac.tex)0
-rw-r--r--Master/texmf-dist/tex/eplain/config/xeplain.ini39
-rw-r--r--Master/texmf-dist/tex/eplain/eplain.aux0
-rw-r--r--Master/texmf-dist/tex/eplain/eplain.ini (renamed from Master/texmf-dist/tex/eplain/config/eplain.ini)0
-rw-r--r--Master/texmf-dist/tex/eplain/eplain.tex (renamed from Master/texmf-dist/tex/eplain/base/eplain.tex)537
-rw-r--r--Master/texmf-dist/tpm/eplain.tpm134
135 files changed, 12575 insertions, 20090 deletions
diff --git a/Master/texmf-dist/doc/eplain/base/AUTHORS b/Master/texmf-dist/doc/eplain/AUTHORS
index b44969727ac..391c66f94a3 100644
--- a/Master/texmf-dist/doc/eplain/base/AUTHORS
+++ b/Master/texmf-dist/doc/eplain/AUTHORS
@@ -6,7 +6,7 @@ David Guichard and Adam Lewenberg improved the multicolumn macros.
Stepan Kasal has contributed several patches.
Oleg Katsitadze added the hyperlink capabilities to Eplain.
Oren Patashnik has worked tirelessly on improving the BibTeX macros.
-Heiko Oberdiek wrote ifpdf.sty.
+Heiko Oberdiek wrote ifpdf.sty and pdfcrop.pl.
Steven Smith wrote the commutative diagram macros.
Philip Taylor wrote path.sty starting from an initial macro by Nelson Beebe.
Nelson also collected the texnames.sty which Eplain incorporates.
diff --git a/Master/texmf-dist/doc/eplain/base/COPYING b/Master/texmf-dist/doc/eplain/COPYING
index 3912109b5cd..3912109b5cd 100644
--- a/Master/texmf-dist/doc/eplain/base/COPYING
+++ b/Master/texmf-dist/doc/eplain/COPYING
diff --git a/Master/texmf-dist/doc/eplain/base/ChangeLog b/Master/texmf-dist/doc/eplain/ChangeLog
index 8b875392f07..d11f45da276 100644
--- a/Master/texmf-dist/doc/eplain/base/ChangeLog
+++ b/Master/texmf-dist/doc/eplain/ChangeLog
@@ -1,5 +1,520 @@
+2006-12-03 Oleg Katsitadze <olegkat@gmail.com>
+
+ * Makefile, doc/eplain.info, doc/eplain.pdf, doc/eplain.texi, eplain.tex:
+ Version 3.1.
+
+ * doc/intro.texi: Added link to the TUGboat article.
+
+ * NEWS: Reduced news for 3.1 a bit (it was way too long).
+
+ * doc/hlink.texi, doc/invoke.texi, doc/progdef.texi, doc/userdef.texi:
+ Formatting (mostly empty lines around @example's, @noindent's
+ afterwards).
+
+2006-12-01 Oleg Katsitadze <olegkat@gmail.com>
+
+ * Makefile, README.TDS:
+ Removed texmf/ prefix from the TDS dirs in the distro.
+
+ * doc/eplain.texi, doc/progdef.texi (Iteration): Updated node comment.
+
+ * Makefile: Put scripts in the doc/ within the distro.
+
+ * doc/userdef.texi (Customizing indexing):
+ trimsee is in util/, not test/.
+
+ * NEWS: News for the upcoming Eplain 3.1.
+
+2006-11-29 Oleg Katsitadze <olegkat@gmail.com>
+
+ * xeplain.tex (idxargopen, idxargclose): Removed obsolete comment.
+
+ * doc/userdef.texi: Added index terms for verbatim text in TOC
+ and index. (Writing the .toc file): Better rationale for
+ \writenumberedtocline.
+
+ * doc/progdef.texi (Iteration):
+ Documented \loop (with the \else extension).
+
+ * doc/userdef.texi (Packages known to work): Added soul.sty.
+
+2006-11-28 Oleg Katsitadze <olegkat@gmail.com>
+
+ * doc/userdef.texi (Packages known not to work): Added hyperref.sty.
+
+ * doc/demo.texi, doc/hlink.texi, doc/install.texi, doc/intro.texi, doc/userdef.texi, doc/invoke.texi:
+ Added breaks (@/) to @url's.
+
+ * doc/eplain.texi, doc/userdef.texi (Index entries with special characters):
+ New node.
+
+ * test/for.tex: New file.
+
+ * doc/progdef.texi (Iteration): Documented \For. Correction
+ about expanding the first token of item list, not the entire
+ list.
+
+ * xeplain.tex (For): Modified to ignore _all_ leading spaces of
+ the items, not just the first space.
+
+ * test/href.tex: Added a "weird chars" test.
+
+ * doc/hlink.texi, doc/invoke.texi, doc/userdef.texi:
+ Added a bunch of @acronym's.
+
+ * doc/hlink.texi (Explicit hyperlinks): Note on special chars in
+ the label argument.
+
+ * doc/eplain.texi, doc/hlink.texi (General hyperlinks): New node.
+
+ * doc/progdef.texi (\ifinteger and \isinteger): Minor correction.
+
+2006-11-09 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2006-10-05 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2006-10-04 Oleg Katsitadze <olegkat@gmail.com>
+
+ * doc/hlink.texi (Link types for hypertex, Link types for pdftex
+ and dvipdfm): Moved url link types toward beginnings of the
+ subsections.
+
+ * doc/progdef.texi: Minor correction.
+
+ * test/usepackage.tex: Test for LaTeX package reloading.
+
+ * eplain.tex, xeplain.tex (\usepkg@load@pkg): When reloading
+ LaTeX packages, warn and skip reloading, instead of giving an
+ error.
+
+ * test/href.tex: New file.
+
+ * doc/invoke.texi: Removed the note on touch'ing the .aux file
+ before running texi2dvi, texi2dvi can deal with this since
+ revision 1.90. (BTW, the problem was not with cross-references
+ but with citations.)
+
+2006-09-30 Oleg Katsitadze <olegkat@gmail.com>
+
+ * doc/eplain.texi: Updated the master menu.
+
+ * doc/invoke.texi: Note on touch'ing the .aux file before running
+ texi2dvi.
+
+ * doc/userdef.texi (Contents): Split into subsections. Documented
+ \writenumberedtocline. Documented integer @var{part} arguments.
+
+ * doc/progdef.texi (\ifinteger and \isinteger): New subsection.
+
+2006-09-27 Oleg Katsitadze <olegkat@gmail.com>
+
+ * doc/eplain.texi: Added nodes for "Loading LaTeX packages" to
+ the master menu.
+
+ * doc/userdef.texi (Verbatim listing): Documented
+ \nolastlinelisting and C-l (form feed).
+
+2006-09-25 Oleg Katsitadze <olegkat@gmail.com>
+
+ * eplain.tex, xeplain.tex (xrdef): Bug fix--\ignorespaces from
+ \definexref was masked off by \endgroup's.
+
+ * test/xkvtest.tex: New file.
+
+2006-08-27 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2006-08-08 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2006-07-15 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2006-06-19 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2006-06-02 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2006-05-29 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2006-05-07 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2006-05-07 Oleg Katsitadze <olegkat@gmail.com>
+
+ * eplain.tex, test/contents.tex, xeplain.tex (writenumberedcontentsline):
+ New macro.
+
+2006-05-05 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2006-05-02 Oleg Katsitadze <olegkat@gmail.com>
+
+ * eplain.tex, test/indexvrb.tex, xeplain.tex: Simplified
+ embedding `{' and `}' into index terms by managing catcodes of
+ \idxargopen and \idxargclose internally. Allow \verbatim inside
+ arguments of \indexsee and \indexseealso by reading their
+ arguments verbatim and then \scantokens'ing.
+
+ * doc/demo.texi, doc/eplain.info, doc/eplain.pdf, doc/eplain.texi, doc/hlink.texi, doc/userdef.texi:
+ Added the lscommnt.tex demo, tweaked some index terms.
+
+ * doc/progdef.texi (Category codes): \makeactive`\\ -> \makeactive\\.
+
+ * doc/userdef.texi (Packages known to work): Added warnings about
+ supp-mis.tex and \pagecolor (pdftex.def).
+
+2006-05-01 Oleg Katsitadze <olegkat@gmail.com>
+
+ * eplain.ini: New file (used by TeX Live to generate .fmt file).
+
+ * Makefile: Generate TDS-compliant distro. Added PDF and HTML to
+ the distro.
+ (eplain.tex): Updated location of mkdist-merge.
+
+ * doc/Makefile: Updated location of pdfcrop.pl. Use `-quality
+ 75' option to convert to reduce image sizes. Added lscommnt demo.
+ (eplain/index.html): Copy images to eplain/ instead of symlinking.
+ (clean, mostlyclean): Don't delete JPEG images, they are in the
+ distro.
+ (distclean): Don't delete PDF and HTML, they are in the distro.
+
+ * README.TDS: New file (README at the top of the distro tarball).
+
+ * add-date, add-version, fix-checksum, merge, pdfcrop.pl, util/mkdist-add-date, util/mkdist-add-version, util/mkdist-fix-checksum, util/mkdist-merge, util/pdfcrop.pl:
+ Moved the support scripts to util/.
+
+ * demo/Makefile, demo/lscommnt.pdf, demo/lscommnt.tex:
+ New demo (listings with highlighted comments).
+
+ * test/dvipdfm.tex, test/epstopdf.tex, test/hlcite.tex, test/hlfoot.tex, test/hlidx.mst, test/hlidx.tex, test/hlink.tex, test/hypertex.tex, test/indexvrb.tex, test/pdftex.tex, test/soultest.tex, test/xrefwarn.tex:
+ Added `public domain' header.
+
+2006-04-30 Oleg Katsitadze <olegkat@gmail.com>
+
+ * test/listing.tex: Added test for the \nolastlinelisting hook.
+ * xeplain.tex (nolastlinelisting): New listing hook to omit the
+ last (empty) line of the file.
+
+ * xeplain.tex (@removebox): Preserve \box0 and use it instead of
+ the constructed \box2, since the latter does not preserve the
+ effect of a possible \hbox to 0pt (produced by, e.g., \llap).
+
+ * test/contents.tex: Test for integer PARTs (\tocentry).
+ * xeplain.tex (ifinteger,isinteger): New macros.
+ (writenumberedcontentsentry): When PART argument is an integer,
+ write \tocentry{PART}... to the .toc file.
+
+ * test/indexvrb.tex: New file.
+ * xeplain.tex: Indexing macros now read TERM and SUBTERM
+ arguments verbatim, to allow catcode changes within the
+ arguments.
+
+2006-04-23 Oleg Katsitadze <olegkat@gmail.com>
+
+ * xeplain.tex (hlidx, hlidxpage): Do not rely on a CS with the
+ empty name to be undefined, instead check PAGEENCAP parameter
+ explicitly.
+
+2006-04-19 Oleg Katsitadze <olegkat@gmail.com>
+
+ * xeplain.tex (@@href): Got rid of \@hrefhash, made \hlhash
+ equivalent to \@hrefhash.
+
+2006-04-17 Oleg Katsitadze <olegkat@gmail.com>
+
+ * xeplain.tex (hldriver@pdftex, hldriver@dvipdfm):
+ Removed spurious spaces in \special's.
+
+2006-04-13 Oleg Katsitadze <olegkat@gmail.com>
+
+ * eplain.tex, xeplain.tex (href): New macro.
+
+2006-04-12 Oleg Katsitadze <olegkat@gmail.com>
+
+ * xeplain.tex (hl@getparam): Allow special chars (like # and ~)
+ in the LABEL argument (for URLs).
+
+ * doc/hlink.texi: Wrapped some long option lists.
+
+ * xeplain.tex: New \For loop, use it in hyperlink macros instead
+ of \for.
+
+2006-04-09 Oleg Katsitadze <olegkat@gmail.com>
+
+ * doc/hlink.texi: Index terms.
+
+2006-04-09 Karl Berry <karl@gnu.org>
+
+ * doc/hlink.texi: xref for \hldest.
+
+2006-03-30 Oleg Katsitadze <olegkat@gmail.com>
+
+ * doc/hlink.texi (URL hyperlinks: url): Note on automatic link
+ coloring.
+
+2006-03-26 Oleg Katsitadze <olegkat@gmail.com>
+
+ * test/hlidx.tex: Minor formatting.
+
+ * xeplain.tex: Don't use xrefs for defining index page anchors,
+ to avoid messages about redefined xref labels.
+
+ * test/hlfoot.tex: Select `pdftex' driver by default.
+ * test/dvipdfm.tex: Update: `dvipdfm' now is not the default driver.
+
+ * xeplain.tex: Made all user-visible \hl* macros report errors
+ until hyperlinks are enabled.
+
+ * eplain.tex, xeplain.tex (@fineqrefn):
+ Bugfix: \hlend -> \hlend@impl{eq}.
+
+ * test/xrefwarn.tex: New file.
+ * xeplain.tex: Added warnings about multiply defined xref labels
+ (from Tomas Penicka <tom.penicka@centrum.cz>).
+
+2006-03-25 Oleg Katsitadze <olegkat@gmail.com>
+
+ * doc/userdef.texi (Environment for loading packages):
+ More details on \eplaininput.
+ * doc/userdef.texi (Packages known to work): \ttfamily.
+ * xeplain.tex: Correct definition of \ttfamily.
+
+ * doc/userdef.texi (Packages known to work): epstopdf.sty.
+ * test/epstopdf.tex: New file.
+
+ * demo/Makefile (xhyper.pdf): Added prerequisites.
+ (maintainer-clean): New rule.
+ * demo/xhyper.tex: graphics.sty -> graphicx.sty.
+
+ * doc/hlink.texi, doc/userdef.texi:
+ References to the `Demo files' section.
+
+ * doc/hlink.texi, test/hlfoot.tex, xeplain.tex:
+ Footnote hyperlinks are now off by default.
+
+ * doc/hlink.texi (URL hyperlinks: url): Older url.sty's do not work.
+
+ * doc/userdef.texi (Environment for loading packages):
+ \eplaininput, \packageinput
+ * xeplain.tex (\beginpackages): \eplain@input -> \eplaininput.
+
+ * doc/userdef.texi (Packages known to work):
+ Older versions of url.sty not working in plain TeX.
+
+2006-03-22 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2006-03-15 Oleg Katsitadze <olegkat@gmail.com>
+
+ * doc/userdef.texi: Parenthesized the @pxref refs.
+
+ * doc/userdef.texi: Punctuation.
+
+ * doc/eplain.texi, doc/hlink.texi: Added doc on the hypertex driver.
+
+ * test/hypertex.tex: New file.
+
+ * xeplain.tex:
+ More defs for LaTeX: the `draft' option to graphic{s,x}.sty; and
+ warnings from epstopdf.sty when graphics.sty is not loaded.
+
+ * xeplain.tex:
+ Bugfix: the `nolinks' driver now redefines \hl@setparam so that
+ the macros \hldesttype, \hldestopts, \hltype and \hlopts avoid
+ error messages about "unknown" options and types.
+
+ * xeplain.tex: Added hypertex driver.
+
+2006-03-14 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2006-02-24 Oleg Katsitadze <olegkat@gmail.com>
+
+ * test/soultest.tex: New file.
+
+2006-02-14 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2006-01-27 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2006-01-13 Karl Berry <karl@gnu.org>
+
+ * doc/.cvsignore: .
+
+ * doc/eplain.texi, ChangeLog, doc/Makefile, doc/eplain.info, doc/eplain.pdf:
+ move contents
+
+2006-01-12 Karl Berry <karl@gnu.org>
+
+ * doc/eplain.texi: move @contents to front; also include
+ @shortcontents.
+ * doc/Makefile (eplain/index.html): don't try to create links if
+ they already exist.
+ * doc/.cvsignore: ignore links, etc.
+ And upload to lulu ...
+
+2006-01-06 Oleg Katsitadze <olegkat@gmail.com>
+
+ * doc/progdef.texi (\ifempty): New subsection.
+
+2006-01-05 Oleg Katsitadze <olegkat@gmail.com>
+
+ * doc/intro.texi: Reference to David Walden's article.
+
+ * INSTALL, doc/install.texi: Removed info on etex.fmt and emtex.
+ Updated recommended installation locations.
+
+ * doc/eplain.texi: Added variable index (for environment vars in
+ install.texi) and redirected program and variable indices into
+ concept index.
+
+ * Makefile: Removed etex.tex.
+ * etex.tex: Removed.
+
+ * xeplain.tex: Improved hyperlink messages.
+
+ * doc/Makefile: Use texi2dvi --pdf instead of texi2pdf.
+
+ * xeplain.tex (beginpackages): Save and restore \input to avoid
+ redefinition by miniltx.tex and packages (\packageinput stores the
+ redefinition).
+
+ * test/usepackage.tex: Added \enablehyperlinks (this test depends
+ on hyperlinks being enabled). Added test for \urldef from
+ url.sty.
+
+ * xeplain.tex: Added \protected@edef for \urldef from url.sty.
+ (hldriver@nolinks): The label argument to \hlstart and \hldest
+ must be passed to \write-1 _fully expanded_, otherwise macros that
+ the label uses may become redefined/undefined by the time the page
+ is shipped out and the \write is executed (this resulted in URLs
+ defined with \urldef to fail under the nolinks driver).
+ (@generalref): Use \@generalref@class instead of \temp, since
+ \@generalrefoptarg can possibly trash \temp.
+
+2005-12-26 Karl Berry <karl@freefriends.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2005-12-23 Oleg Katsitadze <olegkat@gmail.com>
+
+ * doc/userdef.texi: Changed location of ltpictur.pdf.
+
+2005-12-21 Oleg Katsitadze <olegkat@gmail.com>
+
+ * demo/.cvsignore, demo/ctan_lion_350x350.png, demo/xhyper.pdf:
+ Image for the xhyper.tex demo and the output.
+
+ * doc/Makefile:
+ Added rules for creating JPG images from the demos (for the html
+ docs).
+
+2005-12-20 Oleg Katsitadze <olegkat@gmail.com>
+
+ * doc/userdef.texi (Contents): Tell that \writetocentry reads
+ \tocfilebasename only once.
+ (Tables): Corrected stale link to lifshitz.ph.utexas.edu.
+ (Packages known to work): Added link to Klaus Hoeppner's article
+ on LaTeX graphics.
+
+ * demo/xhyper.tex:
+ Input ../eplain instead of eplain, in case Eplain is not (yet)
+ properly installed.
+
+ * doc/Makefile:
+ Added _FLAG variables for each program used. Split targets like
+ `pdf eplain.pdf' and made pdf depend on eplain.pdf, etc. (otherwise
+ `make pdf' always rebuilds eplain.pdf). Added rules and dependencies
+ for the demo file images.
+ (ps): New target.
+
+ * Makefile:
+ Added demo subdir. Changed all calls to Make to use $(MAKE).
+ (ps): New target.
+
+ * pdfcrop.pl, demo/Makefile, doc/demo.texi: New files.
+
+ * AUTHORS: Added pdfcrop.pl.
+
+ * demo/xhyper.tex (Top comment):
+ \, only works in math mode in plain TeX (unlike in tugboat
+ format).
+
+ * doc/hlink.texi (URL hyperlinks):
+ Showed how to have colored links instead of boxed links.
+ (Footnote hyperlinks): Showed how to turn off footnote hyperlinks.
+ (Hyperlink driver nolinks): Showed the proper way to
+ \enablehyperlinks for the dual links/nolinks output.
+ (Setting default types and options): Example of how to turn off
+ boxes for the links.
+
+ * doc/eplain.texi: Changed the title. Included demo.texi.
+
+2005-12-14 Oleg Katsitadze <olegkat@gmail.com>
+
+ * demo/xhyper.tex: New file.
+
+2005-10-11 Karl Berry <karl@freefriends.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2005-10-09 Karl Berry <karl@freefriends.org>
+
+ * doc/texinfo.tex: update from texinfo
+
+2005-09-25 Oleg Katsitadze <geolsoft@mail.ru>
+
+ * Makefile, doc/Makefile: Remove intermediate files from the
+ tarball. NOTE: It was agreed not to include aux, toc, and index
+ files into the tarball, because if the user compiles the manual
+ with the command `tex eplain.texi' for a different paper size
+ (specified, e.g., in texinfo.cnf), then the references, TOC and
+ indexes will be off without the user knowing about it.
+
+2005-09-23 Oleg Katsitadze <geolsoft@mail.ru>
+
+ * Makefile:
+ Added intermediate files (aux, toc, ??, ??s) to MANUALS so that
+ they are included in the tarball (later reverted, see above).
+
+ * doc/Makefile:
+ (clean): Leave intermediate files (aux, toc, ??, ??s) in tarballs
+ so users can easily compile docs (later reverted, see above).
+ (distclean): Remove eplain.html.
+ (maintainer-clean): Remove the intermediate files.
+ (html): Build also --no-split doc.
+
+ * Version 3.0 (released 2005-09-20)
+
+ * Makefile: Added test/*.eps to the list of test files.
+
2005-09-20 Oleg Katsitadze <geolsoft@mail.ru>
+ * eplain.tex, Makefile, NEWS, doc/eplain.info, doc/eplain.pdf, doc/eplain.texi:
+ Version number update.
+
+ * doc/Makefile (info): Added --no-split option.
+
* doc/eplain.texi, doc/hlink.texi: New documentation for hyperlinks.
* doc/userdef.texi:
@@ -65,8 +580,8 @@
* doc/arrow.texi: Changed La@TeX{} to @LaTeX{}.
* doc/eplain.texi, doc/userdef.texi (Equation references):
- Added doc on referring to empty labels. (Loading LaTeX packages):
- New section.
+ Added doc on referring to empty labels.
+ (Loading LaTeX packages): New section.
* test/usepackage.tex: New file.
@@ -89,15 +604,16 @@
2005-08-23 Oleg Katsitadze <geolsoft@mail.ru>
* doc/eplain.info, doc/eplain.pdf, doc/progdef.texi (Auxiliary files):
- Added doc on optional arg to \testfileexistence. (User-defined
- environments): Removed spurious indentation.
+ Added doc on optional arg to \testfileexistence.
+ (User-defined environments): Removed spurious indentation.
2005-08-21 Oleg Katsitadze <geolsoft@mail.ru>
* README: Added description of util dir.
* doc/eplain.info, doc/eplain.pdf, doc/userdef.texi (Page
- references): Updated. (Modifying index entries): Updated.
+ references): Updated.
+ (Modifying index entries): Updated.
(Customizing indexing): Added docs on customizing see entries and
on trimsee.
@@ -120,7 +636,8 @@
2005-08-18 Oleg Katsitadze <geolsoft@mail.ru>
* doc/eplain.pdf, doc/eplain.info, doc/eplain.texi, doc/userdef.texi (Equation references):
- Made into section. (Checking for pdfTeX...): New section (documents ifpdf.sty).
+ Made into section.
+ (Checking for pdfTeX...): New section (documents ifpdf.sty).
2005-08-17 Oleg Katsitadze <geolsoft@mail.ru>
@@ -149,7 +666,8 @@
2005-08-15 Oleg Katsitadze <geolsoft@mail.ru>
* doc/Makefile (distclean): Do not delete eplain.pdf (it is now
- part of distro). (maintainer-clean): Delete eplain.pdf.
+ part of distro).
+ (maintainer-clean): Delete eplain.pdf.
* doc/eplain.kys, doc/eplain.pgs, doc/eplain.tps, doc/eplain.vrs:
Removed.
@@ -191,13 +709,13 @@
2005-08-13 Oleg Katsitadze <geolsoft@mail.ru>
- * doc/eplain.texi Removed pagesize specifications. (@menu):
- Corrected nodes, added detailed node listing for Indexing.
+ * doc/eplain.texi Removed pagesize specifications.
+ (@menu): Corrected nodes, added detailed node listing for Indexing.
* doc/userdef.texi (Indexing): Updated stale link to MakeIndex on
- ftp.math.utah.edu (@menu): Changed tabs to spaces in Indexing
- node. (Indexing): changed references to MakeIndex from @xref to
- @url
+ ftp.math.utah.edu
+ (@menu): Changed tabs to spaces in Indexing node.
+ (Indexing): changed references to MakeIndex from @xref to @url
* doc/Makefile (../INSTALL): Adjusted sed command to the new
output from makeinfo (old one resulted in empty ../INSTALL).
diff --git a/Master/texmf-dist/doc/eplain/INSTALL b/Master/texmf-dist/doc/eplain/INSTALL
new file mode 100644
index 00000000000..dcd705281b6
--- /dev/null
+++ b/Master/texmf-dist/doc/eplain/INSTALL
@@ -0,0 +1,46 @@
+Installation
+************
+
+Your TeX installation should already contain a version of Eplain
+(`eplain.tex') in its main `texmf' tree (usually under
+`/usr/share/texmf/tex/eplain/' on Unix systems). To install a newer
+version of Eplain, put the new `eplain.tex' (included in Eplain
+distributions) in the `tex/eplain/' subdirectory of your local `texmf'
+tree. The newer version you install in the local tree should override
+the older one in the main tree.
+
+ The location of the local `texmf' tree obviously depends on your
+operating system and TeX installation. On Unix systems the usual
+location is `/usr/local/share/texmf/'. If you don't have write
+permissions for `/usr/local/share/texmf/', many installations read the
+`texmf' tree in the user's home directory; `eplain.tex' then should go
+under `~/texmf/tex/eplain/'. For more information about TeX directory
+structure, please see
+`http://www.tex.ac.uk/cgi-bin/texfaq2html?label=tds'.
+
+ If you prefer to install `eplain.tex' in a non-standard place, set
+an environment variable (`TEXINPUTS' for the Web2C port of TeX to Unix)
+to tell TeX how to find it.
+
+ If you want, you can also create a format (`.fmt') file for Eplain,
+which will eliminate the time spent reading the macro source file with
+`\input'. You do this by issuing a sequence of Unix commands something
+like this:
+
+ prompt$ touch eplain.aux
+ prompt$ initex
+ This is TeX, ...
+ **&plain eplain
+ (eplain.tex)
+ *\dump
+ ... MESSAGES ...
+
+You must make sure that `eplain.aux' exists _before_ you run `initex';
+otherwise, warning messages about undefined labels will never be issued.
+
+ You then have to install the resulting `eplain.fmt' in your local
+`texmf' tree or set an environment variable to tell TeX how to find it.
+For the Web2C port of TeX to Unix, format files are usually installed
+under `/usr/local/share/texmf/web2c/' or `/var/lib/texmf/web2c/'; the
+environment variable is `TEXFORMATS'.
+
diff --git a/Master/texmf-dist/doc/eplain/base/NEWS b/Master/texmf-dist/doc/eplain/NEWS
index 2b7f9364d7c..ac08de2a900 100644
--- a/Master/texmf-dist/doc/eplain/base/NEWS
+++ b/Master/texmf-dist/doc/eplain/NEWS
@@ -1,5 +1,59 @@
This file records noteworthy changes. This file is public domain.
+3.1 (3 December 2006)
+
+General:
+* Rearranged the distro to comply with TDS.
+* Distro now includes PDF, HTML and INFO versions of the manual.
+* Removed etex.tex.
+
+LaTeX packages under Eplain:
+* When reloading LaTeX packages, warn and skip reloading, instead of
+ giving an error. Suggested by Dan Luecking.
+* The primitive \input is now restored after loading LaTeX packages.
+* Added more "LaTeX" defs needed by: the `draft' option to
+ graphic{s,x}.sty; warnings from epstopdf.sty when graphics.sty is
+ not loaded.
+
+Hyperlinks:
+* Added the `hypertex' driver, and made it the default driver.
+* Made footnote hyperlinks off by default.
+* Added the \href macro. Suggested by Dorai Sitaram.
+* LABEL argument of the hyperlink macros now allow special characters
+ like # and ~ (useful for URLs). Suggested by Dorai Sitaram.
+* Fixed a hyperlink-related bug in equation macros.
+* Fixed a bug in the `nolinks' driver.
+* Added \writenumberedtocline macro, which is \writenumberedtocentry
+ with permuted parameters. Suggested by Dorai Sitaram.
+* Hyperlink macros now ignore leading spaces in option lists.
+* All hyperlink macros now report errors until links are enabled.
+
+Cross-references, TOC and indexing:
+* Added warnings about multiply defined xref labels. Suggested by
+ Tomas Penicka.
+* Fixed \definexref to (once again) ignore following spaces.
+* Indexing macros now read TERM, SUBTERM and SEE... arguments
+ verbatim, to allow special characters and catcode changes.
+ Suggested by Dorai Sitaram.
+* Extended the TOC macros: when given an integer for the type of a
+ TOC entry, they write \tocentry{NUM}... to the .toc file. Suggested
+ by Dorai Sitaram.
+
+Programming defs:
+* Added \ifinteger and \isinteger macros.
+* Added \For loop which strips off leading spaces from items.
+
+Manual:
+* Added demo subdir with demo files, and added new chapter `Demo
+ files' to the manual.
+* Documented \ifempty, the extended \loop macro, and the new macros.
+* Many small improvements and additions to the manual.
+
+Other:
+* Added new \nolastlinelisting listing hook which omits the last
+ (empty) line of the file.
+
+
3.0 (20 September 2005)
* Eplain now hosted at Sarovar: http://sarovar.org/projects/eplain/
* Support for hyperlinks!
diff --git a/Master/texmf-dist/doc/eplain/base/PROJECTS b/Master/texmf-dist/doc/eplain/PROJECTS
index d24baf64c58..d24baf64c58 100644
--- a/Master/texmf-dist/doc/eplain/base/PROJECTS
+++ b/Master/texmf-dist/doc/eplain/PROJECTS
diff --git a/Master/texmf-dist/doc/eplain/base/README b/Master/texmf-dist/doc/eplain/README
index 9ec64791292..9ec64791292 100644
--- a/Master/texmf-dist/doc/eplain/base/README
+++ b/Master/texmf-dist/doc/eplain/README
diff --git a/Master/texmf-dist/doc/eplain/base/INSTALL b/Master/texmf-dist/doc/eplain/base/INSTALL
deleted file mode 100644
index 3a514ae606b..00000000000
--- a/Master/texmf-dist/doc/eplain/base/INSTALL
+++ /dev/null
@@ -1,51 +0,0 @@
-Installation
-************
-
-The simplest way to install Eplain is simply to install the file
-`eplain.tex' in a directory where TeX will find it. What that
-directory is obviously depends on your operating system and TeX
-installation. I personally install `eplain.tex' in a directory
-`/usr/local/lib/texmf/tex/plain'.
-
- If you want, you can also create a format (`.fmt') file for Eplain,
-which will eliminate the time spent reading the macro source file with
-`\input'. You do this by issuing a sequence of Unix commands something
-like this:
-
- prompt$ touch eplain.aux
- prompt$ initex
- This is TeX, ...
- **&plain eplain
- (eplain.tex)
- *\dump
- ... MESSAGES ...
-
-You must make sure that `eplain.aux' exists _before_ you run `initex';
-otherwise, warning messages about undefined labels will never be issued.
-
- You then have to install the resulting `eplain.fmt' in some system
-directory or set an environment variable to tell TeX how to find it. I
-install the format files in `/usr/local/lib/texmf/ini'; the environment
-variable for the Web2C port of TeX to Unix is `TEXFORMATS'.
-
- Some implementations of TeX (including Web2C) use the name by which
-TeX is invoked to determine what format to read. For them, you should
-make a link to the `virtex' program named `etex', and then install the
-format file with the name `etex.fmt'. This lets users invoke TeX as
-`etex' and get the format file read automatically, without having to
-say `&eplain'.
-
- For convenience, the file `etex.tex' in the distribution directory
-does `\input eplain' and then `\dump', so that if you replace `eplain'
-with `etex' in the example above, the format file will end up with the
-right name.
-
- The `install' target in the `Makefile' does all this properly for
-Unix systems and Web2C. You may have to change the pathnames.
-
- Under emtex, `eaj@acpub.duke.edu' says that
-
- tex386 -i ^&plain eplain \dump
-
-produces a format file.
-
diff --git a/Master/texmf-dist/doc/eplain/base/Makefile b/Master/texmf-dist/doc/eplain/base/Makefile
deleted file mode 100644
index 6ff999f6a73..00000000000
--- a/Master/texmf-dist/doc/eplain/base/Makefile
+++ /dev/null
@@ -1,97 +0,0 @@
-# Makefile for Eplain. This file is public domain.
-
-VERSION = 3.0
-SOURCES = arrow.tex btxmac.tex ifpdf.sty path.sty texnames.sty xeplain.tex
-SUPPORT = add-date add-version AUTHORS ChangeLog COPYING etex.tex fix-checksum \
- INSTALL Makefile merge NEWS PROJECTS README
-MANUALS = $(patsubst %,doc/%,Makefile *.texi btxdoc.bib btxdoc.tex texinfo.tex)
-TESTS = $(patsubst %,test/%,*.tex *.bib *.map *.mst *.eps)
-UTILS = util/idxuniq util/trimsee
-
-DIST_FILES = eplain.tex doc/eplain.info $(SOURCES) $(SUPPORT) $(MANUALS) \
- $(TESTS) $(UTILS)
-DIST_NAME = eplain-$(VERSION)
-
-TAR_FLAGS =
-GZIP_FLAGS =
-
-
-.PHONY: default alldoc doc dvi pdf html info btxdoc dist
-.PHONY: clean mostlyclean distclean maintainer-clean
-.DELETE_ON_ERROR:
-
-
-default: eplain.tex
-
-eplain.tex: merge $(SOURCES)
- version=$(VERSION) ./merge
-
-etex.fmt: eplain.tex
- rm -f etex.aux
- cp /dev/null etex.aux
- initex \&plain etex | grep -v '^\\font'
-
-
-alldoc:
- cd doc && make
-
-doc:
- cd doc && make doc
-
-dvi:
- cd doc && make dvi
-
-pdf:
- cd doc && make pdf
-
-html:
- cd doc && make html
-
-info doc/eplain.info:
- cd doc && make info
-
-btxdoc:
- cd doc && make btxdoc
-
-INSTALL:
- cd doc && make ../INSTALL
-
-
-dist: $(DIST_FILES)
- @rm -rf $(DIST_NAME)
- @echo D $(DIST_NAME)
- @mkdir $(DIST_NAME)
- @for file in $(DIST_FILES); do \
- echo A $(DIST_NAME)/$$file; \
- cp --parents $$file $(DIST_NAME); \
- done
- @echo C $(DIST_NAME).tar.gz
- @tar -c $(TAR_FLAGS) $(DIST_NAME) | gzip $(GZIP_FLAGS) > $(DIST_NAME).tar.gz
- @rm -rf $(DIST_NAME)
-
-
-define clean-cmds
-rm -rf $(DIST_NAME) etex.aux etex.log
-endef
-
-define distclean-cmds
-$(clean-cmds)
-rm -f etex.fmt $(DIST_NAME).tar.gz
-endef
-
-define maintainer-clean-cmds
-$(distclean-cmds)
-rm -f eplain.tex
-endef
-
-clean mostlyclean:
- $(clean-cmds)
- cd doc && make $@
-
-distclean:
- $(distclean-cmds)
- cd doc && make distclean
-
-maintainer-clean:
- $(maintainer-clean-cmds)
- cd doc && make maintainer-clean
diff --git a/Master/texmf-dist/doc/eplain/base/arrow.texi b/Master/texmf-dist/doc/eplain/base/arrow.texi
deleted file mode 100644
index c5d4786cef3..00000000000
--- a/Master/texmf-dist/doc/eplain/base/arrow.texi
+++ /dev/null
@@ -1,781 +0,0 @@
-@c arrow.texi - documentation for Eplain's commutative diagrams.
-@c Copyright (C) 1991, 1992 Steven Smith.
-@c This is part of the Eplain manual.
-@c
-@c This file is free software; you can redistribute it and/or modify
-@c it under the terms of the GNU General Public License as published by
-@c the Free Software Foundation; either version 2, or (at your option)
-@c any later version.
-@c
-@c This file is distributed in the hope that it will be useful,
-@c but WITHOUT ANY WARRANTY; without even the implied warranty of
-@c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-@c GNU General Public License for more details.
-@c
-@c You should have received a copy of the GNU General Public License
-@c along with this file; if not, write to the Free Software
-@c Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-@c 02110-1301, USA.
-
-@comment \input texinfo
-@comment setfilename arrow.info
-@comment settitle Arrow Theoretic Diagrams
-
-@c Input arrow macros without altering texinfo's \catcodes.
-@c Use the arrow macros in an `@iftex @tex ... @end iftex' environment.
-
-@iftex
-@catcode`@$=3 @catcode`@%=14 @catcode`@&=4 @catcode`@#=6
-@catcode`@^=7 @catcode`@_=8
-@catcode`@"=@other @catcode`@<=@other @catcode`@>=@other
-@catcode`@\=0
-\catcode`\@=\other
-\input arrow
-\catcode`\@=0
-@catcode`@\=@active
-@catcode`@$=@other @catcode`@%=@other @catcode`@&=@other @catcode`@#=@other
-@catcode`@^=@active @catcode`@_=@active
-@catcode`@"=@active @catcode`@<=@active @catcode`@>=@active
-@end iftex
-
-
-@node Arrow theoretic diagrams
-@chapter Arrow theoretic diagrams
-
-This chapter describes definitions for producing commutative diagrams.
-
-Steven Smith wrote this documentation (and the macros).
-
-@menu
-* Slanted lines and vectors::
-* Commutative diagrams::
-@end menu
-
-@node Slanted lines and vectors
-@section Slanted lines and vectors
-
-The macros @code{\drawline}
-@findex drawline
-and @code{\drawvector}
-@findex drawvector
-provide the capability found in @LaTeX{}'s
-@cindex @LaTeX{}
-@cindex picture mode
-picture mode to draw slanted lines and vectors of certain directions.
-Both of these macros take three arguments: two integer arguments to
-specify the direction of the line or vector, and one argument to specify
-its length. For example, @samp{\drawvector(-4,1)@{60pt@}} produces the
-vector
-@iftex
-@tex
-$$\vbox{\hbox{\drawvector(-4,1){60pt}}\smallskip
- \hbox{$\mathop{\hbox to60pt{\leftarrowfill\hskip-5pt\rightarrowfill}}
- \limits_{{\fam0 60\,pt}}$}}$$
-@end tex
-@end iftex
-@ifinfo
-
-@center (A vector in the 2d quadrant of length 60 pt appears here.)
-
-@end ifinfo
-@cindex lines
-@cindex vectors
-which lies in the 2d quadrant, has a slope of minus 1/4, and a width of
-60 pt.
-
-Note that if an @code{\hbox} is placed around @code{\drawline} or
-@code{\drawvector}, then the width of the @code{\hbox} will be the
-positive dimension specified in the third argument, except when a
-vertical line or vector is specified, e.g.,
-@code{\drawline(0,1)@{1in@}}, which has zero width. If the specified
-direction lies in the 1st or 2d quadrant (e.g., @code{(1,1)} or
-@code{(-2,3)}), then the @code{\hbox} will have positive height and zero
-depth. Conversely, if the specified direction lies in the 3d or 4th
-quadrant (e.g., @code{(-1,-1)} or @code{(2,-3)}), then the @code{\hbox}
-will have positive depth and zero height.
-
-There are a finite number of directions that can be specified. For
-@code{\drawline}, the absolute value of each integer defining the
-direction must be less than or equal to six, i.e., @code{(7,-1)} is
-incorrect, but @code{(6,-1)} is acceptable. For @code{\drawvector}, the
-absolute value of each integer must be less than or equal to four.
-Furthermore, the two integers cannot have common divisors; therefore, if
-a line with slope 2 is desired, say @code{(2,1)} instead of
-@code{(4,2)}. Also, specify @code{(1,0)} instead of, say, @code{(3,0)}
-for horizontal lines and likewise for vertical lines.
-
-Finally, these macros depend upon the @LaTeX{} font @code{line10}. If
-your site doesn't have this font, ask your system administrator to get
-it. Future enhancements will include macros to draw dotted lines and
-dotted vectors of various directions.
-
-
-@node Commutative diagrams
-@section Commutative diagrams
-
-@cindex commutative diagrams
-
-The primitive commands @code{\drawline} and @code{\drawvector} can be
-used to typeset arrow theoretic diagrams. This section describes (1)
-macros to facilitate typesetting arrows and morphisms, and (2) macros to
-facilitate the construction of commutative diagrams. All macros
-described in this section must be used in math mode.
-
-@menu
-* Arrows and morphisms::
-* Construction of commutative diagrams::
-* Commutative diagram parameters::
-@end menu
-
-@node Arrows and morphisms
-@subsection Arrows and morphisms
-@cindex arrows
-@cindex morphisms
-
-The macros @code{\mapright} and @code{\mapleft} produce right and left
-@findex mapright
-@findex mapleft
-pointing arrows, respectively. Use superscript (@code{^}) to place a
-morphism above the arrow, e.g., @samp{\mapright^\alpha}; use subscript
-(@code{_}) to place a morphism below the arrow, e.g.,
-@samp{\mapright_@{\tilde l@}}. Superscripts and subscripts may be used
-simulataneously, e.g., @samp{\mapright^\pi_@{\rm epimor.@}}.
-
-Similarly, the macros @code{\mapup} and @code{\mapdown} produce up and
-@findex mapup
-@findex mapdown
-down pointing arrows, respectively. Use @code{\rt}
-@findex rt
-to place a morphism to the right of the arrow, e.g., @samp{\mapup\rt@{\rm
-id@}}; use @code{\lft}
-@findex lft
-to place a morphism to the left of the arrow, e.g., @samp{\mapup\lft\omega}.
-@code{\lft} and @code{\rt} may be used simultaneously, e.g.,
-@samp{\mapdown\lft\pi\rt@{\rm monomor.@}}.
-
-Slanted arrows are produced by the macro @code{\arrow}, which takes
-@findex arrow
-a direction argument (e.g., @samp{\arrow(3,-4)}). Use @code{\rt} and
-@code{\lft} to place morphisms to the right and left, respectively, of
-the arrow. A slanted line (no arrowhead) is produced with the macro
-@code{\sline},
-@findex sline
-whose syntax is identical to that of @code{\arrow}.
-
-The length of these macros is predefined by the default @TeX{}
-dimensions @code{\harrowlength},
-@findex harrowlength
-for horizontal arrows (or lines),
-@code{\varrowlength},
-@findex varrowlength
-for vertical arrows (or lines), and
-@code{\sarrowlength},
-@findex sarrowlength
-for slanted arrows (or lines). To change any of these dimensions, say,
-e.g., @samp{\harrowlength=40pt}. As with all other @TeX{} dimensions,
-the change may be as global or as local as you like. Furthermore, the
-placement of morphisms on the arrows is controlled by the dimensions
-@code{\hmorphposn},
-@findex hmorphposn
-@code{\vmorphposn},
-@findex vmorphposn
-and @code{\morphdist}.
-@findex morphdist
-The first two dimensions control the horizontal and vertical position of
-the morphism from its default position; the latter dimension controls
-the distance of the morphism from the arrow. If you have more than one
-morphism per arrow (i.e., a @code{^}/@code{_} or @code{\lft}/@code{\rt}
-construction), use the parameters
-@code{\hmorphposnup},
-@findex hmorphposnup
-@code{\hmorphposndn},
-@findex hmorphposndn
-@code{\vmorphposnup},
-@findex vmorphposnup
-@code{\vmorphposndn},
-@findex vmorphposndn
-@code{\hmorphposnrt},
-@findex hmorphposnrt
-@code{\hmorphposnlft},
-@findex hmorphposnlft
-@code{\vmorphposnrt},
-@findex vmorphposnrt
-and @code{\vmorphposnlft}.
-@findex vmorphposnlft
-The default values of all these dimensions are provided in the section
-on parameters that follows below.
-
-There is a family of macros to produce horizontal lines, arrows, and
-adjoint arrows. The following macros produce horizontal maps and have
-the same syntax as @code{\mapright}:
-
-@table @code
-
-@item \mapright
-@findex mapright
-@code{$X\mapright Y$}
-@iftex
-@tex
-$\equiv$ $\harrowlength=20ptX\mapright Y$.
-@end tex
-@end iftex
-@ifinfo
-= (a right arrow).
-@end ifinfo
-
-@item \mapleft
-@findex mapleft
-@code{$X\mapleft Y$}
-@iftex
-@tex
-$\equiv$ $\harrowlength=20ptX\mapleft Y$.
-@end tex
-@end iftex
-@ifinfo
-= (a left arrow).
-@end ifinfo
-
-@item \hline
-@findex hline
-@code{$X\hline Y$}
-@iftex
-@tex
-$\equiv$ $\harrowlength=20ptX\hline Y$.
-@end tex
-@end iftex
-@ifinfo
-= (horizontal line)
-@end ifinfo
-
-@ignore
-@item \dothline
-@findex dothline
-(dotted horizontal line) {@bf Unimplemented.}
-@end ignore
-
-@item \bimapright
-@findex bimapright
-@code{$X\bimapright Y$}
-@iftex
-@tex
-$\equiv$ $\harrowlength=20ptX\bimapright Y$.
-@end tex
-@end iftex
-@ifinfo
-= (two right arrows).
-@end ifinfo
-
-@item \bimapleft
-@findex bimapleft
-@code{$X\bimapleft Y$}
-@iftex
-@tex
-$\equiv$ $\harrowlength=20ptX\bimapleft Y$.
-@end tex
-@end iftex
-@ifinfo
-= (two left arrows)
-@end ifinfo
-
-@item \adjmapright
-@findex adjmapright
-@code{$X\adjmapright Y$}
-@iftex
-@tex
-$\equiv$ $\harrowlength=20ptX\adjmapright Y$.
-@end tex
-@end iftex
-@ifinfo
-= (two adjoint arrows; left over right)
-@end ifinfo
-
-@item \adjmapleft
-@findex adjmapleft
-@code{$X\adjmapleft Y$}
-@iftex
-@tex
-$\equiv$ $\harrowlength=20ptX\adjmapleft Y$.
-@end tex
-@end iftex
-@ifinfo
-= (two adjoint arrows; right over left)
-@end ifinfo
-
-@item \bihline
-@findex bihline
-@code{$X\bihline Y$}
-@iftex
-@tex
-$\equiv$ $\harrowlength=20ptX\bihline Y$.
-@end tex
-@end iftex
-@ifinfo
-= (two horizontal lines)
-@end ifinfo
-@end table
-
-There is also a family of macros to produce vertical lines, arrows, and
-adjoint arrows. The following macros produce vertical maps and have
-the same syntax as @code{\mapdown}:
-
-@table @code
-
-@item \mapdown
-@findex mapdown
-(a down arrow)
-
-@item \mapup
-@findex mapup
-(an up arrow)
-
-@item \vline
-@findex vline
-(vertical line)
-
-@ignore
-@item \dotvline
-@findex dotvline
-(dotted vertical line) {@bf Unimplemented.}
-@end ignore
-
-@item \bimapdown
-@findex bimapdown
-(two down arrows)
-
-@item \bimapup
-@findex bimapup
-(two up arrows)
-
-@item \adjmapdown
-@findex adjmapdown
-(two adjoint arrows; down then up)
-
-@item \adjmapup
-@findex adjmapup
-(two adjoint arrows; up then down)
-
-@item \bivline
-@findex bivline
-(two vertical lines)
-@end table
-
-Finally, there is a family of macros to produce slanted lines, arrows,
-and adjoint arrows. The following macros produce slanted maps and have
-the same syntax as @code{\arrow}:
-
-@table @code
-
-@item \arrow
-@findex arrow
-(a slanted arrow)
-
-@item \sline
-@findex sline
-(a slanted line)
-
-@item \biarrow
-@findex biarrow
-(two straight arrows)
-
-@item \adjarrow
-@findex adjarrow
-(two adjoint arrows)
-
-@item \bisline
-@findex bisline
-(two straight lines)
-
-@end table
-
-The width between double arrows is controlled by the parameter
-@code{\channelwidth}.
-@findex channelwidth
-The parameters @code{\hchannel} and @code{\vchannel}, if nonzero,
-override @code{\channelwidth} by controlling the horizontal and vertical
-shifting from the first arrow to the second.
-
-There are no adornments on these arrows to distinguish inclusions from
-epimorphisms from monomorphisms. Many texts, such as Lang's book
-@cite{Algebra}, use as a tasteful alternative the symbol `inc' (in roman) next
-to an arrow to denote inclusion.
-@cindex Lang, Serge
-
-Future enhancements will include a mechanism to draw curved arrows
-found in, e.g., the Snake Lemma, by employing a version of the
-@code{\path} macros of Appendix D of @cite{The @TeX{}book}.
-@cindex Snake Lemma
-
-
-@node Construction of commutative diagrams
-@subsection Construction of commutative diagrams
-
-There are two approaches to the construction of commutative diagrams
-described here. The first approach, and the simplest, treats
-commutative diagrams like fancy matrices, as Knuth does in Exercise
-18.46 of @cite{The @TeX{}book}. This case is covered by the macro
-@code{\commdiag},
-@findex commdiag
-which is an altered version of the Plain @TeX{} macro @code{\matrix}.
-@findex matrix
-An example suffices to demonstrate this macro. The following
-commutative diagram (illustrating the covering homotopy property; Bott
-and Tu, @cite{Differential Forms in Algebraic Topology})
-@cindex Bott, Raoul
-@cindex Tu, Loring W.
-@cindex covering homotopy property
-@iftex
-@tex
-$$\commdiag{Y&\mapright^f&E\cr \mapdown&\arrow(3,2)\lft{f_t}&\mapdown\cr
-Y\times I&\mapright^{\bar f_t}&X}$$
-@end tex
-@end iftex
-@ifinfo
-
-@center (A commutative diagram appears here in the printed output.)
-
-@end ifinfo
-is produced with the code
-
-@example
-$$\commdiag@{Y&\mapright^f&E\cr \mapdown&\arrow(3,2)\lft@{f_t@}&\mapdown\cr
-Y\times I&\mapright^@{\bar f_t@}&X@}$$
-@end example
-
-Of course, the parameters may be changed to produce a different effect.
-The following commutative diagram (illustrating the universal mapping
-property; Warner, @cite{Foundations of Differentiable Manifolds and Lie
-Groups})
-@cindex Warner, Frank W.
-@cindex universal mapping property
-@iftex
-@tex
-$$\varrowlength=20pt
-\commdiag{V\otimes W\cr \mapup\lft\phi&\arrow(3,-1)\rt{\tilde l}\cr
-V\times W&\mapright^l&U\cr}$$
-@end tex
-@end iftex
-@ifinfo
-
-@center (A commutative diagram appears here in the printed output.)
-
-@end ifinfo
-is produced with the code
-
-@example
-$$\varrowlength=20pt
-\commdiag@{V\otimes W\cr \mapup\lft\phi&\arrow(3,-1)\rt@{\tilde l@}\cr
-V\times W&\mapright^l&U\cr@}$$
-@end example
-
-A diagram containing isosceles triangles is achieved by placing the apex
-of the triangle in the center column, as shown in the example
-(illustrating all constant minimal realizations of a linear system;
-Brockett, @cite{Finite Dimensional Linear Systems})
-@cindex Brockett, Roger W.
-@cindex minimal realizations
-@cindex linear systems theory
-@iftex
-@tex
-$$\sarrowlength=.42\harrowlength
-\commdiag{&R^m\cr &\arrow(-1,-1)\lft{\fam6 B}\quad \arrow(1,-1)\rt{\fam6 G}\cr
-R^n&\mapright^{\fam6 P}&R^n\cr
-\mapdown\lft{e^{{\fam6 A}t}}&&\mapdown\rt{e^{{\fam6 F}t}}\cr
-R^n&\mapright^{\fam6 P}&R^n\cr
-&\arrow(1,-1)\lft{\fam6 C}\quad \arrow(-1,-1)\rt{\fam6 H}\cr
-&R^q\cr}$$
-@end tex
-@end iftex
-@ifinfo
-
-@center (A commutative diagram appears here in the printed output.)
-
-@end ifinfo
-which is produced with the code
-
-@example
-$$\sarrowlength=.42\harrowlength
-\commdiag@{&R^m\cr &\arrow(-1,-1)\lft@{\bf B@}\quad \arrow(1,-1)\rt@{\bf G@}\cr
-R^n&\mapright^@{\bf P@}&R^n\cr
-\mapdown\lft@{e^@{@{\bf A@}t@}@}&&\mapdown\rt@{e^@{@{\bf F@}t@}@}\cr
-R^n&\mapright^@{\bf P@}&R^n\cr
-&\arrow(1,-1)\lft@{\bf C@}\quad \arrow(-1,-1)\rt@{\bf H@}\cr
-&R^q\cr@}$$
-@end example
-
-Other commutative diagram examples appear in the file
-@code{commdiags.tex}, which is distributed with this package.
-
-In these examples the arrow lengths and line slopes were carefully
-chosen to blend with each other. In the first example, the default
-settings for the arrow lengths are used, but a direction for the arrow
-must be chosen. The ratio of the default horizontal and vertical arrow
-lengths is approximately the golden mean
-@cindex golden mean
-@iftex
-@tex
-$\gamma=1.618\ldots$;
-@end tex
-@end iftex
-@ifinfo
-gamma=1.618...;
-@end ifinfo
-@cindex golden mean
-the arrow direction closest to this mean is @code{(3,2)}. In the second
-example, a slope of
-@iftex
-@tex
-$-1/3$
-@end tex
-@end iftex
-@ifinfo
--1/3
-@end ifinfo
-is desired and the default horizontal arrow length is 60 pt; therefore,
-choose a vertical arrow length of 20 pt. You may affect the interline
-glue settings of @code{\commdiag} by redefining the macro
-@code{\commdiagbaselines}.
-@findex commdiagbaselines
-(cf@. Exercise 18.46 of @cite{The @TeX{}book} and the section on
-parameters below.)
-
-The width, height, and depth of all morphisms are hidden so that the
-morphisms' size do not affect arrow positions. This can cause a large
-morphism at the top or bottom of a diagram to impinge upon the text
-surrounding the diagram. To overcome this problem, use @TeX{}'s
-@code{\noalign} primitive to insert a @code{\vskip} immediately above or
-below the offending line, e.g.,
-@samp{$$\commdiag@{\noalign@{\vskip6pt@}X&\mapright^\int&Y\cr ...@}}.
-
-The macro @code{\commdiag} is too simple to be used for more complicated
-diagrams, which may have intersecting or overlapping arrows. A second
-approach, borrowed from Francis Borceux's @cite{Diagram} macros for
-@LaTeX{}, treats the commutative diagram like a grid of identically
-shaped boxes. To compose the commutative diagram, first draw an equally
-spaced grid, e.g.,
-@cindex grid
-@cindex Borceux, Francis
-@cindex Diagram, macros for LaTeX
-@iftex
-@tex
-$$\def\grid{\cdot&\cdot&\cdot&\cdot&\cdot&\cdot\cr}
-\matrix{\grid\grid\grid\grid}$$
-@end tex
-@end iftex
-@ifinfo
-
-@center . . . . . .
-@center . . . . . .
-@center . . . . . .
-@center . . . . . .
-
-@end ifinfo
-on a piece of scratch paper. Then draw each element (vertices and
-arrows) of the commutative diagram on this grid, centered at each
-grid point. Finally, use the macro @code{\gridcommdiag}
-@findex gridcommdiag
-to implement your design as a @TeX{} alignment. For example, the cubic
-diagram
-@cindex cube
-@iftex
-@tex
-$$\harrowlength=48pt \varrowlength=48pt \sarrowlength=20pt
-\def\cross#1#2{\setbox0=\hbox{$#1$}%
- \hbox to\wd0{\hss\hbox{$#2$}\hss}\llap{\unhbox0}}
-\gridcommdiag{&&B&&\mapright^b&&D\cr
-&\arrow(1,1)\lft a&&&&\arrow(1,1)\lft d\cr
-A&&\cross{\hmorphposn=12pt\mapright^c}{\vmorphposn=-12pt\mapdown\lft f}
-&&C&&\mapdown\rt h\cr\cr
-\mapdown\lft e&&F&&\cross{\hmorphposn=-12pt\mapright_j}
-{\vmorphposn=12pt\mapdown\rt g}&&H\cr
-&\arrow(1,1)\lft i&&&&\arrow(1,1)\rt l\cr
-E&&\mapright_k&&G\cr}$$
-@end tex
-@end iftex
-@ifinfo
-
-@center (A commutative diagram appears here.)
-
-@end ifinfo
-that appears in Francis Borceux's documentation can be implemented on
-a 7 by 7 grid, and is achieved with the code
-
-@example
-$$\harrowlength=48pt \varrowlength=48pt \sarrowlength=20pt
-\def\cross#1#2@{\setbox0=\hbox@{$#1$@}%
- \hbox to\wd0@{\hss\hbox@{$#2$@}\hss@}\llap@{\unhbox0@}@}
-\gridcommdiag@{&&B&&\mapright^b&&D\cr
-&\arrow(1,1)\lft a&&&&\arrow(1,1)\lft d\cr
-A&&\cross@{\hmorphposn=12pt\mapright^c@}@{\vmorphposn=-12pt\mapdown\lft f@}
-&&C&&\mapdown\rt h\cr\cr
-\mapdown\lft e&&F&&\cross@{\hmorphposn=-12pt\mapright_j@}
-@{\vmorphposn=12pt\mapdown\rt g@}&&H\cr
-&\arrow(1,1)\lft i&&&&\arrow(1,1)\rt l\cr
-E&&\mapright_k&&G\cr@}$$
-@end example
-
-The dimensions @code{\hgrid} and @code{\vgrid}
-@findex hgrid
-@findex vgrid
-control the horizontal and vertical spacing of the grid used by
-@code{\gridcommdiag}. The default setting for both of these dimensions
-is 15 pt. Note that in the example of the cube the arrow lengths must
-be adjusted so that the arrows overlap into neighboring boxes by the
-desired amount. Hence, the @code{\gridcommdiag} method, albeit more
-powerful, is less automatic than the simpler @code{\commdiag} method.
-Furthermore, the ad hoc macro @code{\cross} is introduced to allow the
-effect of overlapping arrows. Finally, note that the positions of four
-of the morphisms are adjusted by setting @code{\hmorphposn} and
-@code{\vmorphposn}.
-
-One is not restricted to a square grid. For example, the proof of
-Zassenhaus's Butterfly Lemma can be illustrated by the diagram (appearing
-in Lang's book @cite{Algebra})
-@cindex Zassenhaus, Hans
-@cindex Lang, Serge
-@cindex Butterfly Lemma
-@iftex
-@tex
-$$\hgrid=16pt \vgrid=8pt \sarrowlength=32pt
-\def\cross#1#2{\setbox0=\hbox{$#1$}%
- \hbox to\wd0{\hss\hbox{$#2$}\hss}\llap{\unhbox0}}
-\def\l#1{\llap{$#1$\hskip.5em}}
-\def\r#1{\rlap{\hskip.5em$#1$}}
-\gridcommdiag{&&U&&&&V\cr &&\bullet&&&&\bullet\cr
-&&\sarrowlength=16pt\sline(0,1)&&&&\sarrowlength=16pt\sline(0,1)\cr
-&&\l{u(U\cap V)}\bullet&&&&\bullet\r{(U\cap V)v}\cr
-&&&\sline(2,-1)&&\sline(2,1)\cr
-&&\cross{=}{\sline(0,1)}&&\bullet&&\cross{=}{\sline(0,1)}\cr\cr
-&&\l{^{\textstyle u(U\cap v)}}\bullet&&\cross{=}{\sline(0,1)}&&
- \bullet\r{^{\textstyle(u\cap V)v}}\cr
-&\sline(2,1)&&\sline(2,-1)&&\sline(2,1)&&\sline(2,-1)\cr
-\l{u}\bullet&&&&\bullet&&&&\bullet\r{v}\cr
-&\sline(2,-1)&&\sline(2,1)&&\sline(2,-1)&&\sline(2,1)\cr
-&&\bullet&&&&\bullet\cr &&u\cap V&&&&U\cap v\cr}$$
-@end tex
-@end iftex
-@ifinfo
-
-@center (A commutative diagram appears here.)
-
-@end ifinfo
-This diagram may be implemented on a 9 by 12 grid with an aspect ratio
-of 1/2, and is set with the code
-
-@example
-$$\hgrid=16pt \vgrid=8pt \sarrowlength=32pt
-\def\cross#1#2@{\setbox0=\hbox@{$#1$@}%
- \hbox to\wd0@{\hss\hbox@{$#2$@}\hss@}\llap@{\unhbox0@}@}
-\def\l#1@{\llap@{$#1$\hskip.5em@}@}
-\def\r#1@{\rlap@{\hskip.5em$#1$@}@}
-\gridcommdiag@{&&U&&&&V\cr &&\bullet&&&&\bullet\cr
-&&\sarrowlength=16pt\sline(0,1)&&&&\sarrowlength=16pt\sline(0,1)\cr
-&&\l@{u(U\cap V)@}\bullet&&&&\bullet\r@{(U\cap V)v@}\cr
-&&&\sline(2,-1)&&\sline(2,1)\cr
-&&\cross@{=@}@{\sline(0,1)@}&&\bullet&&\cross@{=@}@{\sline(0,1)@}\cr\cr
-&&\l@{^@{\textstyle u(U\cap v)@}@}\bullet&&\cross@{=@}@{\sline(0,1)@}&&
- \bullet\r@{^@{\textstyle(u\cap V)v@}@}\cr
-&\sline(2,1)&&\sline(2,-1)&&\sline(2,1)&&\sline(2,-1)\cr
-\l@{u@}\bullet&&&&\bullet&&&&\bullet\r@{v@}\cr
-&\sline(2,-1)&&\sline(2,1)&&\sline(2,-1)&&\sline(2,1)\cr
-&&\bullet&&&&\bullet\cr &&u\cap V&&&&U\cap v\cr@}$$
-@end example
-
-Again, the construction of this diagram requires careful choices for the
-arrow lengths and is facilitated by the introduction of the ad hoc
-macros @code{\cross}, @code{\r}, and @code{\l}. Note also that
-superscripts were used to adjust the position of the vertices
-@iftex
-@tex
-$u(U\cap v)$ and $(u\cap V)v$.
-@end tex
-@end iftex
-@ifinfo
-u(U intersection v) and (u intersection V)v.
-@end ifinfo
-Many diagrams may be typeset with the predefined macros that appear
-here; however, ingenuity is often required to handle special cases.
-
-@node Commutative diagram parameters
-@subsection Commutative diagram parameters
-
-The following is a list describing the parameters used in the
-commutative diagram macros. These dimensions may be changed globally or
-locally.
-
-@table @code
-@item \harrowlength
-@findex harrowlength
-(Default: 60 pt) The length of right or left arrows.
-
-@item \varrowlength
-@findex varrowlength
-(Default: 0.618@code{\harrowlength}) The length of up or down
-arrows.
-
-@item \sarrowlength
-@findex sarrowlength
-(Default: 60 pt) The horizontal length of slanted arrows.
-
-@item \hmorphposn
-@findex hmorphposn
-(Default: 0 pt) The horizontal position of the morphism with
-respect to its default position. There are also the dimensions
-@code{\hmorphposnup},
-@findex hmorphposnup
-@code{\hmorphposndn},
-@findex hmorphposndn
-@code{\hmorphposnrt},
-@findex hmorphposnrt
-and @code{\hmorphposnlft}
-@findex hmorphposnlft
-for @code{^}/@code{_} or @code{\lft}/@code{\rt} constructions.
-
-@item \vmorphposn
-@findex vmorphposn
-(Default: 0 pt) The vertical position of the morphism with
-respect to its default position. There are also the dimensions
-@code{\vmorphposnup},
-@findex vmorphposnup
-@code{\vmorphposndn},
-@findex vmorphposndn
-@code{\vmorphposnrt},
-@findex vmorphposnrt
-and @code{\vmorphposnlft}
-@findex vmorphposnlft
-for @code{^}/@code{_} or @code{\lft}/@code{\rt} constructions.
-
-@item \morphdist
-@findex morphdist
-(Default: 4 pt) The distance of morphisms from slanted lines
-or arrows.
-
-@item \channelwidth
-@findex channelwidth
-(Default: 3 pt) The distance between double lines or arrows.
-
-@item \hchannel, \vchannel
-@findex hchannel
-@findex vchannel
-(Defaults: 0 pt) Overrides @code{\channelwidth}. The
-horizontal and vertical shifts between double lines or arrows.
-
-@item \commdiagbaselines
-@findex commdiagbaselines
-(Default: @code{\baselineskip=15pt
-\lineskip=3pt
-\lineskiplimit=3pt })
-The parameters used by @code{\commdiag} for setting interline glue.
-
-@item \hgrid
-@findex hgrid
-(Default: 15 pt) The horizontal spacing of the grid used by
-@code{\gridcommdiag}.
-
-@item \vgrid
-@findex vgrid
-(Default: 15 pt) The vertical spacing of the grid used by
-@code{\gridcommdiag}.
-
-@end table
-
-@comment bye
diff --git a/Master/texmf-dist/doc/eplain/base/btxdoc.bib b/Master/texmf-dist/doc/eplain/base/btxdoc.bib
deleted file mode 100644
index 4eaf3eddc56..00000000000
--- a/Master/texmf-dist/doc/eplain/base/btxdoc.bib
+++ /dev/null
@@ -1,90 +0,0 @@
-Copyright (C) 1988, all rights reserved.
-
-@COMMENT(You may put a comment in a `comment' command,
- the way you would with SCRIBE.)
-
-Or you may dispense with the command and simply give the comment,
-as long as it's not within an entry.
-
-If you really want to put a comment inside an entry, simply
-make up a never-to-be-used field.
-
-@FAKE-ENTRY
- {fake-database-key,
- never-to-be-used-field = "Even if this were a real entry,
- I could still have a comment inside an entry
- by making up a fake field"
- }
-
-@string (SCRIBE-NOTE = {Chapter twelve and appendices E8 through E10 deal
- with bibliographies})
-
-The next entry shows some of the syntactically legal things that
-those with the inclination may use.@
-
-MaNuAl (scribe,
- TITLE="Scribe Document Production System
-
-
- User Manual",
- ORGANIZATION = {Unilogic,}#" Ltd"# {.
- },
- ADDRESS = "Pittsburgh",
- MONTH
-=aPR
- ,YEAR=1984,
- note = scribe-note,
-) May the inclination not be with you.
-
-
-@MISC{prime-number-theorem,
- author = "Charles Louis Xavier Joseph de la Vall{\'e}e Poussin",
- note = "A strong form of the prime number theorem, 19th century" }
-
-@INBOOK{chicago,
- title = "The Chicago Manual of Style",
- publisher = "University of Chicago Press",
- edition = "Thirteenth",
- year = 1982,
- pages = "400--401",
- key = "Chicago" }
-
-@BOOK{texbook,
- author = "Donald E. Knuth",
- title= "The {{\TeX}book}",
- publisher = "Addison-Wesley",
- year = 1984 }
-
-@BOOK{latex,
- author = "Leslie Lamport",
- title = "{\LaTeX \rm:} {A} Document Preparation System",
- publisher = "Addison-Wesley",
- year = 1986 }
-
-@UNPUBLISHED{btxdoc,
- author = "Oren Patashnik",
- title = "{{\BibTeX ing}}",
- note = "Documentation for general {\BibTeX} users",
- month = "8~" # feb,
- year = 1988 }
-
-@UNPUBLISHED{btxhak,
- author = "Oren Patashnik",
- title = "Designing {\BibTeX} Styles",
- note = "The part of \BibTeX's documentation
- that's not meant for general users",
- month = "8~" # feb,
- year = 1988 }
-
-@BOOK{strunk-and-white,
- author = "Strunk, Jr., William and E. B. White",
- title = "The Elements of Style",
- publisher = "Macmillan",
- edition = "Third",
- year = 1979 }
-
-@BOOK{van-leunen,
- title = "A Handbook for Scholars",
- author = "Mary-Claire van Leunen",
- publisher = "Knopf",
- year = 1979 }
diff --git a/Master/texmf-dist/doc/eplain/base/btxdoc.tex b/Master/texmf-dist/doc/eplain/base/btxdoc.tex
deleted file mode 100644
index 52723e08b69..00000000000
--- a/Master/texmf-dist/doc/eplain/base/btxdoc.tex
+++ /dev/null
@@ -1,1117 +0,0 @@
-% Copyright (C) 1988, all rights reserved.
-
-\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
- T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
-
-\title{B\kern-.05em{\large I}\kern-.025em{\large B}\kern-.08em\TeX ing}
-\author{Oren Patashnik}
-\date{February 8, 1988}
-
-\documentstyle{article}
-\begin{document}
-
-\maketitle
-
-\section{Overview}
-
-[This document will be expanded when \BibTeX\ version 1.00 comes out.
-Please report typos, omissions, inaccuracies,
-and especially unclear explanations
-to me ({\tt patashnik@SCORE.STANFORD.EDU}).
-Suggestions for improvements are wanted and welcome.]
-
-This documentation, for \BibTeX\ version 0.99b,
-is meant for general \BibTeX\ users;
-bibliography-style designers should read this document
-and then read ``Designing \BibTeX\ Styles''~\cite{btxhak},
-which is meant for just them.
-
-This document has three parts:
-Section~\ref{differences}
-describes the differences between versions 0.98i and 0.99b
-of \BibTeX\ and between the corresponding versions of the standard styles;
-Section~\ref{latex-appendix}
-updates Appendix~B.2 of the \LaTeX\ book~\cite{latex};
-and Section~\ref{odds-and-ends}
-gives some general and specific tips
-that aren't documented elsewhere.
-It's assumed throughout that you're familiar with
-the relevant sections of the \LaTeX\ book.
-
-This documentation also serves as sample input to help
-\BibTeX\ implementors get it running.
-For most documents, this one included, you produce the reference list by:
-running \LaTeX\ on the document (to produce the {\tt aux} file(s)),
-then running \BibTeX\ (to produce the {\tt bbl} file),
-then \LaTeX\ twice more (first to find the information in the {\tt bbl} file
-and then to get the forward references correct).
-In very rare circumstances you may need an extra \BibTeX/\LaTeX\ run.
-
-\BibTeX\ version 0.99b should be used with \LaTeX\ version 2.09,
-for which the closed bibliography format is the default;
-to get the open format, use the optional document style {\tt openbib}
-(in an open format there's a line break between major blocks of a
-reference-list entry; in a closed format the blocks run together).]
-
-Note: \BibTeX\ 0.99b is not compatible with the old style files;
-nor is \BibTeX\ 0.98i compatible with the new ones
-(the new \BibTeX, however, is compatible with old database files).
-
-Note for implementors: \BibTeX\ provides logical-area names
-\hbox{\tt TEXINPUTS:} for bibliography-style files and
-\hbox{\tt TEXBIB:} for database files it can't otherwise find.
-
-
-\section{Changes}
-\label{differences}
-
-This section describes the differences between
-\BibTeX\ versions 0.98i and 0.99b, and also between
-the corresponding standard styles.
-There were a lot of differences;
-there will be a lot fewer between 0.99 and 1.00.
-
-
-\subsection{New \BibTeX\ features}
-\label{features}
-
-The following list explains \BibTeX's new features and how to use them.
-\begin{enumerate}
-
-\item
-With the single command `\hbox{\verb|\nocite{*}|}'
-you can now include in the reference list
-every entry in the database files, without having to explicitly
-\verb|\cite| or \hbox{\verb|\nocite|} each entry.
-Giving this command, in essence,
-\hbox{\verb|\nocite|}s
-all the enties in the database, in database order,
-at the very spot in your document
-where you give the command.
-
-\item
-\label{concat}
-You can now have as a field value (or an {\tt @STRING} definition)
-the concatenation of several strings.
-For example if you've defined
-\begin{verbatim}
- @STRING( WGA = " World Gnus Almanac" )
-\end{verbatim}
-then it's easy to produce nearly-identical
-{\tt title} fields for different entries:
-\begin{verbatim}
- @BOOK(almanac-66,
- title = 1966 # WGA,
- . . .
- @BOOK(almanac-67,
- title = 1967 # WGA,
-\end{verbatim}
-and so on. Or, you could have a field like
-\begin{verbatim}
- month = "1~" # jan,
-\end{verbatim}
-which would come out something like
-`\hbox{\verb|1~January|}' or `\hbox{\verb|1~Jan.|}' in the {\tt bbl} file,
-depending on how your bibliography style defines
-the {\tt jan} abbreviation.
-You may concatenate as many strings as you like
-(except that there's a limit to the overall length
-of the resulting field);
-just be sure to put the concatenation character `{\tt\#}'$\!$,
-surrounded by optional spaces or newlines,
-between each successive pair of strings.
-
-\item
-\BibTeX\ has a new cross-referencing feature,
-explained by an example.
-Suppose you say \hbox{\verb|\cite{no-gnats}|} in your document,
-and suppose you have these two entries in your database file:
-\begin{verbatim}
- @INPROCEEDINGS(no-gnats,
- crossref = "gg-proceedings",
- author = "Rocky Gneisser",
- title = "No Gnats Are Taken for Granite",
- pages = "133-139")
- . . .
- @PROCEEDINGS(gg-proceedings,
- editor = "Gerald Ford and Jimmy Carter",
- title = "The Gnats and Gnus 1988 Proceedings",
- booktitle = "The Gnats and Gnus 1988 Proceedings")
-\end{verbatim}
-Two things happen.
-First, the special \hbox{\tt crossref} field tells \BibTeX\
-that the \hbox{\tt no-gnats} entry should inherit
-any fields it's missing from
-the entry it cross references, \hbox{\tt gg-proceedings}.
-In this case it in inherits the two fields
-\hbox{\tt editor} and \hbox{\tt booktitle}.
-Note that, in the standard styles at least,
-the \hbox{\tt booktitle} field is irrelevant
-for the \hbox{\tt PROCEEDINGS} entry type.
-The \hbox{\tt booktitle} field appears here
-in the \hbox{\tt gg-proceedings} entry
-only so that the entries that cross reference it
-may inherit the field.
-No matter how many papers from this meeting exist in the database,
-this \hbox{\tt booktitle} field need only appear once.
-
-The second thing that happens:
-\BibTeX\ automatically puts the entry \hbox{\tt gg-proceedings}
-into the reference list if it's cross
-referenced by two or more entries that you
-\verb|\cite| or \hbox{\verb|\nocite|},
-even if you don't \verb|\cite| or \hbox{\verb|\nocite|}
-the \hbox{\tt gg-proceedings} entry itself.
-So \hbox{\tt gg-proceedings} will automatically appear
-on the reference list if one other entry
-besides \hbox{\tt no-gnats} cross references it.
-
-To guarantee that this scheme works, however,
-a cross-referenced entry must occur later in the database files
-than every entry that cross-references it.
-Thus, putting all cross-referenced entries at the end makes sense.
-(Moreover, you may not reliably nest cross references;
-that is, a cross-referenced entry may
-not itself reliably cross reference an entry.
-This is almost certainly not something you'd
-want to do, though.)
-
-One final note:
-This cross-referencing feature is completely unrelated
-to the old \BibTeX's cross referencing,
-which is still allowed.
-Thus, having a field like
-\begin{verbatim}
- note = "Jones \cite{jones-proof} improves the result"
-\end{verbatim}
-is not affected by the new feature.
-
-\item
-\BibTeX\ now handles accented characters.
-For example if you have an entry with the two fields
-\begin{verbatim}
- author = "Kurt G{\"o}del",
- year = 1931,
-\end{verbatim}
-and if you're using the \hbox{\tt alpha} bibliography style,
-then \BibTeX\ will construct the label
-\hbox{[G{\"o}d31]} for this entry, which is what you'd want.
-To get this feature to work you must place the entire accented
-character in braces;
-in this case either \hbox{\verb|{\"o}|}
-or \hbox{\verb|{\"{o}}|} will do.
-Furthermore these braces must not themselves be
-enclosed in braces (other than the ones that might delimit
-the entire field or the entire entry);
-and there must be a backslash
-as the very first character inside the braces.
-Thus neither \hbox{\verb|{G{\"{o}}del}|}
-nor \hbox{\verb|{G\"{o}del}|} will work for this example.
-
-This feature handles all the accented characters and
-all but the nonbackslashed foreign symbols found in Tables
-3.1 and~3.2 of the \LaTeX\ book.
-This feature behaves similarly for ``accents'' you might define;
-we'll see an example shortly.
-For the purposes of counting letters in labels,
-\BibTeX\ considers everything contained inside the braces
-as a single letter.
-
-\item
-\BibTeX\ also handles hyphenated names.
-For example if you have an entry with
-\begin{verbatim}
- author = "Jean-Paul Sartre",
-\end{verbatim}
-and if you're using the \hbox{\tt abbrv} style,
-then the result is `J.-P. Sartre'$\!$.
-
-\item
-\label{preamble}
-There's now an \hbox{\verb|@PREAMBLE|} command
-for the database files.
-This command's syntax is just like \hbox{\verb|@STRING|}'s,
-except that there is no name or equals-sign, just the string.
-Here's an example:
-\begin{verbatim}
- @PREAMBLE{ "\newcommand{\noopsort}[1]{} "
- # "\newcommand{\singleletter}[1]{#1} " }
-\end{verbatim}
-(note the use of concatenation here, too).
-The standard styles output whatever information you give this command
-(\LaTeX\ macros most likely) directly to the {\tt bbl} file.
-We'll look at one possible use of this command,
-based on the \hbox{\verb|\noopsort|} command just defined.
-
-The issue here is sorting (alphabetizing).
-\BibTeX\ does a pretty good job,
-but occasionally weird circumstances conspire to confuse \BibTeX:
-Suppose that you have entries in your database for
-the two books in a two-volume set by the same author,
-and that you'd like volume~1 to appear
-just before volume~2 in your reference list.
-Further suppose that there's now a second edition of volume~1,
-which came out in 1973, say,
-but that there's still just one edition of volume~2,
-which came out in 1971.
-Since the {\tt plain} standard style
-sorts by author and then year,
-it will place volume~2 first
-(because its edition came out two years earlier)
-unless you help \BibTeX.
-You can do this by using the {\tt year} fields below
-for the two volumes:
-\begin{verbatim}
- year = "{\noopsort{a}}1973"
- . . .
- year = "{\noopsort{b}}1971"
-\end{verbatim}
-According to the definition of \hbox{\verb|\noopsort|},
-\LaTeX\ will print nothing but the true year for these fields.
-But \BibTeX\ will be perfectly happy pretending that
-\hbox{\verb|\noopsort|} specifies some fancy accent
-that's supposed to adorn the `a' and the~`b';
-thus when \BibTeX\ sorts it will pretend that
-`a1973' and `b1971' are the real years,
-and since `a' comes before~`b'$\!$, it will place volume~1 before volume~2,
-just what you wanted.
-By the way, if this author has any other works included
-in your database, you'd probably want to use instead something like
-\hbox{\verb|{\noopsort{1968a}}1973|} and
-\hbox{\verb|{\noopsort{1968b}}1971|},
-so that these two books would come out in a reasonable spot
-relative to the author's other works
-(this assumes that 1968 results in a reasonable spot,
-say because that's when the first edition of volume~1 appeared).
-
-There is a limit to the number of \hbox{\verb|@PREAMBLE|} commands
-you may use, but you'll never exceed this limit if
-you restrict yourself to one per database file;
-this is not a serious restriction,
-given the concatenation feature (item~\ref{concat}).
-
-\item
-\BibTeX's sorting algorithm is now stable.
-This means that if two entries have identical sort keys,
-those two entries will appear in citation order.
-(The bibliography styles construct these sort keys---%
-usually the author information followed by the year and the title.)
-
-\item
-\BibTeX\ no longer does case conversion for file names;
-this will make \BibTeX\ easier to install on Unix systems, for example.
-
-\item
-It's now easier to add code for processing a
-command-line {\tt aux}-file name.
-
-\end{enumerate}
-
-
-\subsection{Changes to the standard styles}
-
-This section describes changes to the standard styles
-({\tt plain}, {\tt unsrt}, {\tt alpha}, {\tt abbrv})
-that affect ordinary users.
-Changes that affect style designers appear in
-the document ``Designing \BibTeX\ Styles''~\cite{btxhak}.
-\begin{enumerate}
-
-\item
-In general, sorting is now by ``author''$\!$, then year, then title---%
-the old versions didn't use the year field.
-(The {\tt alpha} style, however, sorts first by label,
-then ``author''$\!$, year, and title.)
-The quotes around author mean that some entry types
-might use something besides the author, like the editor or organization.
-
-\item
-Many unnecessary ties (\verb|~|) have been removed.
-\LaTeX\ thus will produce slightly fewer
-`\hbox{\tt Underfull} \verb|\hbox|' messages
-when it's formatting the reference list.
-
-\item
-Emphasizing (\hbox{\verb|{\em ...}|})
-has replaced italicizing (\hbox{\verb|{\it ...}|}).
-This will almost never result in a difference
-between the old output and the new.
-
-\item
-The {\tt alpha} style now uses a superscripted~`$^{+}$' instead of a~`*'
-to represent names omitted in constructing the label.
-If you really liked it the way it was, however,
-or if you want to omit the character entirely,
-you don't have to modify the style file---%
-you can override the~`$^{+}$' by
-redefining the \hbox{\verb|\etalchar|} command
-that the {\tt alpha} style writes onto the {\tt bbl} file
-(just preceding the \hbox{\verb|\thebibliography|} environment);
-use \LaTeX's \hbox{\verb|\renewcommand|} inside
-a database \hbox{\tt @PREAMBLE} command,
-described in the previous subsection's item~\ref{preamble}.
-
-\item
-The {\tt abbrv} style now uses `Mar.' and `Sept.'\
-for those months rather than `March' and `Sep.'
-
-\item
-The standard styles use \BibTeX's new cross-referencing feature
-by giving a \verb|\cite| of the cross-referenced entry and by
-omitting from the cross-referencing entry
-(most of the) information that appears
-in the cross-referenced entry.
-These styles do this when
-a titled thing (the cross-referencing entry)
-is part of a larger titled thing (the cross-referenced entry).
-There are five such situations:
-when (1)~an \hbox{\tt INPROCEEDINGS}
-(or \hbox{\tt CONFERENCE}, which is the same)
-cross references a \hbox{\tt PROCEEDINGS};
-when (2)~a {\tt BOOK}, (3)~an \hbox{\tt INBOOK},
-or (4)~an \hbox{\tt INCOLLECTION}
-cross references a {\tt BOOK}
-(in these cases, the cross-referencing entry is a single
-volume in a multi-volume work);
-and when (5)~an \hbox{\tt ARTICLE}
-cross references an \hbox{\tt ARTICLE}
-(in this case, the cross-referenced entry is really a journal,
-but there's no \hbox{\tt JOURNAL} entry type;
-this will result in warning messages about
-an empty \hbox{\tt author} and \hbox{\tt title} for the journal---%
-you should just ignore these warnings).
-
-\item
-The \hbox{\tt MASTERSTHESIS} and \hbox{\tt PHDTHESIS}
-entry types now take an optional {\tt type} field.
-For example you can get the standard styles to
-call your reference a `Ph.D.\ dissertation'
-instead of the default `PhD thesis' by including a
-\begin{verbatim}
- type = "{Ph.D.} dissertation"
-\end{verbatim}
-in your database entry.
-
-\item
-Similarly, the \hbox{\tt INBOOK} and \hbox{\tt INCOLLECTION}
-entry types now take an optional {\tt type} field,
-allowing `section~1.2' instead of the default `chapter~1.2'$\!$.
-You get this by putting
-\begin{verbatim}
- chapter = "1.2",
- type = "Section"
-\end{verbatim}
-in your database entry.
-
-\item
-The \hbox{\tt BOOKLET}, \hbox{\tt MASTERSTHESIS},
-and \hbox{\tt TECHREPORT} entry types now format
-their \hbox{\tt title} fields as if they were
-\hbox{\tt ARTICLE} \hbox{\tt title}s
-rather than \hbox{\tt BOOK} \hbox{\tt title}s.
-
-\item
-The \hbox{\tt PROCEEDINGS} and \hbox{\tt INPROCEEDINGS}
-entry types now use the \hbox{\tt address} field
-to tell where a conference was held,
-rather than to give the address
-of the publisher or organization.
-If you want to include the
-publisher's or organization's address,
-put it in the \hbox{\tt publisher}
-or \hbox{\tt organization} field.
-
-\item
-The \hbox{\tt BOOK}, \hbox{\tt INBOOK}, \hbox{\tt INCOLLECTION},
-and \hbox{\tt PROCEEDINGS} entry types now allow either
-\hbox{\tt volume} or \hbox{\tt number} (but not both),
-rather than just \hbox{\tt volume}.
-
-\item
-The \hbox{\tt INCOLLECTION} entry type now allows
-a \hbox{\tt series} and an \hbox{\tt edition} field.
-
-\item
-The \hbox{\tt INPROCEEDINGS} and \hbox{\tt PROCEEDINGS}
-entry types now allow either a \hbox{\tt volume} or \hbox{\tt number},
-and also a \hbox{\tt series} field.
-
-\item
-The \hbox{\tt UNPUBLISHED} entry type now outputs,
-in one block, the \hbox{\tt note} field
-followed by the date information.
-
-\item
-The \hbox{\tt MANUAL} entry type now prints out
-the \hbox{\tt organization} in the first block
-if the \hbox{\tt author} field is empty.
-
-\item
-The {\tt MISC} entry type now issues a warning
-if all the optional fields are empty
-(that is, if the entire entry is empty).
-
-\end{enumerate}
-
-
-\section{The Entries}
-\label{latex-appendix}
-
-This section is simply a corrected version of
-Appendix~B.2 of the \LaTeX\ book~\cite{latex},
-\copyright~1986, by Addison-Wesley.
-The basic scheme is the same, only a few details have changed.
-
-
-\subsection{Entry Types}
-
-When entering a reference in the database, the first thing to decide
-is what type of entry it is. No fixed classification scheme can be
-complete, but \BibTeX\ provides enough entry types to handle almost
-any reference reasonably well.
-
-References to different types of publications contain different
-information; a reference to a journal article might include the volume
-and number of the journal, which is usually not meaningful for a book.
-Therefore, database entries of different types have different fields.
-For each entry type, the fields are divided into three classes:
-\begin{description}
-
-\item[required]
-Omitting the field will produce a warning message
-and, rarely, a badly formatted bibliography entry.
-If the required information is not meaningful,
-you are using the wrong entry type.
-However, if the required information is meaningful
-but, say, already included is some other field,
-simply ignore the warning.
-
-\item[optional]
-The field's information will be used if present,
-but can be omitted without causing any formatting problems.
-You should include the optional field if it will help the reader.
-
-\item[ignored]
-The field is ignored.
-\BibTeX\ ignores any field that is not required or optional, so you can include
-any fields you want in a \hbox{\tt bib} file entry. It's a good idea
-to put all relevant information about
-a reference in its \hbox{\tt bib} file entry---even information that
-may never appear in the bibliography. For example, if you want to
-keep an abstract of a paper in a computer file, put it in an \hbox{\tt
-abstract} field in the paper's \hbox{\tt bib} file entry. The
-\hbox{\tt bib} file is likely to be as good a place as any for the
-abstract, and it is possible to design a bibliography style for
-printing selected abstracts.
-Note: Misspelling a field name will
-result in its being ignored,
-so watch out for typos
-(especially for optional fields,
-since \BibTeX\ won't warn you when those are missing).
-
-\end{description}
-
-The following are the standard entry types, along with their required
-and optional fields, that are used by the standard bibliography styles.
-The fields within each class (required or optional)
-are listed in order of occurrence in the output,
-except that a few entry types may perturb the order slightly,
-depending on what fields are missing.
-These entry types are similar to those adapted by Brian Reid
-from the classification scheme of van~Leunen~\cite{van-leunen}
-for use in the {\em Scribe\/} system.
-The meanings of the individual fields are explained in the next section.
-Some nonstandard bibliography styles may ignore some optional fields
-in creating the reference.
-Remember that, when used in the \hbox{\tt bib}
-file, the entry-type name is preceded by an \hbox{\tt @} character.
-
-\begin{description}
-\sloppy
-
-\item[article\hfill] An article from a journal or magazine.
-Required fields: \hbox{\tt author}, \hbox{\tt title}, \hbox{\tt journal},
-\hbox{\tt year}.
-Optional fields: \hbox{\tt volume}, \hbox{\tt number},
-\hbox{\tt pages}, \hbox{\tt month}, \hbox{\tt note}.
-
-\item[book\hfill] A book with an explicit publisher.
-Required fields: \hbox{\tt author} or \hbox{\tt editor},
-\hbox{\tt title}, \hbox{\tt publisher}, \hbox{\tt year}.
-Optional fields: \hbox{\tt volume} or \hbox{\tt number}, \hbox{\tt series},
-\hbox{\tt address}, \hbox{\tt edition}, \hbox{\tt month},
-\hbox{\tt note}.
-
-\item[booklet\hfill] A work that is printed and bound,
-but without a named publisher or sponsoring institution.
-Required field: \hbox{\tt title}.
-Optional fields: \hbox{\tt author}, \hbox{\tt howpublished},
-\hbox{\tt address}, \hbox{\tt month}, \hbox{\tt year}, \hbox{\tt note}.
-
-\item[conference\hfill] The same as {\tt INPROCEEDINGS},
-included for {\em Scribe\/} compatibility.
-
-\item[inbook\hfill] A part of a book,
-which may be a chapter (or section or whatever) and/or a range of pages.
-Required fields: \hbox{\tt author} or \hbox{\tt editor}, \hbox{\tt title},
-\hbox{\tt chapter} and/or \hbox{\tt pages}, \hbox{\tt publisher},
-\hbox{\tt year}.
-Optional fields: \hbox{\tt volume} or \hbox{\tt number}, \hbox{\tt series},
-\hbox{\tt type}, \hbox{\tt address},
-\hbox{\tt edition}, \hbox{\tt month}, \hbox{\tt note}.
-
-\item[incollection\hfill] A part of a book having its own title.
-Required fields: \hbox{\tt author}, \hbox{\tt title}, \hbox{\tt booktitle},
-\hbox{\tt publisher}, \hbox{\tt year}.
-Optional fields: \hbox{\tt editor}, \hbox{\tt volume} or \hbox{\tt number},
-\hbox{\tt series}, \hbox{\tt type}, \hbox{\tt chapter}, \hbox{\tt pages},
-\hbox{\tt address}, \hbox{\tt edition}, \hbox{\tt month}, \hbox{\tt note}.
-
-\item[inproceedings\hfill] An article in a conference proceedings.
-Required fields: \hbox{\tt author}, \hbox{\tt title}, \hbox{\tt booktitle},
-\hbox{\tt year}.
-Optional fields: \hbox{\tt editor}, \hbox{\tt volume} or \hbox{\tt number},
-\hbox{\tt series}, \hbox{\tt pages}, \hbox{\tt address}, \hbox{\tt month},
-\hbox{\tt organization}, \hbox{\tt publisher}, \hbox{\tt note}.
-
-\item[manual\hfill] Technical documentation. Required field: \hbox{\tt title}.
-Optional fields: \hbox{\tt author}, \hbox{\tt organization},
-\hbox{\tt address}, \hbox{\tt edition}, \hbox{\tt month}, \hbox{\tt year},
-\hbox{\tt note}.
-
-\item[mastersthesis\hfill] A Master's thesis.
-Required fields: \hbox{\tt author}, \hbox{\tt title}, \hbox{\tt school},
-\hbox{\tt year}.
-Optional fields: \hbox{\tt type}, \hbox{\tt address}, \hbox{\tt month},
-\hbox{\tt note}.
-
-\item[misc\hfill] Use this type when nothing else fits.
-Required fields: none.
-Optional fields: \hbox{\tt author}, \hbox{\tt title}, \hbox{\tt howpublished},
-\hbox{\tt month}, \hbox{\tt year}, \hbox{\tt note}.
-
-\item[phdthesis\hfill] A PhD thesis.
-Required fields: \hbox{\tt author}, \hbox{\tt title}, \hbox{\tt school},
-\hbox{\tt year}.
-Optional fields: \hbox{\tt type}, \hbox{\tt address}, \hbox{\tt month},
-\hbox{\tt note}.
-
-\item[proceedings\hfill] The proceedings of a conference.
-Required fields: \hbox{\tt title}, \hbox{\tt year}.
-Optional fields: \hbox{\tt editor}, \hbox{\tt volume} or \hbox{\tt number},
-\hbox{\tt series}, \hbox{\tt address}, \hbox{\tt month},
-\hbox{\tt organization}, \hbox{\tt publisher}, \hbox{\tt note}.
-
-
-\item[techreport\hfill] A report published by a school or other institution,
-usually numbered within a series.
-Required fields: \hbox{\tt author},
-\hbox{\tt title}, \hbox{\tt institution}, \hbox{\tt year}.
-Optional fields: \hbox{\tt type}, \hbox{\tt number}, \hbox{\tt address},
-\hbox{\tt month}, \hbox{\tt note}.
-
-\item[unpublished\hfill] A document having an author and title,
-but not formally published.
-Required fields: \hbox{\tt author}, \hbox{\tt title}, \hbox{\tt note}.
-Optional fields: \hbox{\tt month}, \hbox{\tt year}.
-
-\end{description}
-
-In addition to the fields listed above, each entry type also has an
-optional \hbox{\tt key} field, used in some styles
-for alphabetizing, for cross referencing,
-or for forming a \hbox{\verb|\bibitem|} label.
-You should include a \hbox{\tt key} field for any entry whose
-``author'' information is missing;
-the ``author'' information is usually the \hbox{\tt author} field,
-but for some entry types it can be the \hbox{\tt editor}
-or even the \hbox{\tt organization} field
-(Section~\ref{odds-and-ends} describes this in more detail).
-Do not confuse the \hbox{\tt key} field with the key that appears in the
-\hbox{\verb|\cite|} command and at the beginning of the database entry;
-this field is named ``key'' only for compatibility with {\it Scribe}.
-
-
-\subsection{Fields}
-
-Below is a description of all fields
-recognized by the standard bibliography styles.
-An entry can also contain other fields, which are ignored by those styles.
-\begin{description}
-
-\item[address\hfill]
-Usually the address of the \hbox{\tt publisher} or other type
-of institution.
-For major publishing houses,
-van~Leunen recommends omitting the information entirely.
-For small publishers, on the other hand, you can help the
-reader by giving the complete address.
-
-\item[annote\hfill]
-An annotation.
-It is not used by the standard bibliography styles,
-but may be used by others that produce an annotated bibliography.
-
-\item[author\hfill]
-The name(s) of the author(s),
-in the format described in the \LaTeX\ book.
-
-\item[booktitle\hfill]
-Title of a book, part of which is being cited.
-See the \LaTeX\ book for how to type titles.
-For book entries, use the \hbox{\tt title} field instead.
-
-\item[chapter\hfill]
-A chapter (or section or whatever) number.
-
-\item[crossref\hfill]
-The database key of the entry being cross referenced.
-
-\item[edition\hfill]
-The edition of a book---for example, ``Second''$\!$.
-This should be an ordinal, and
-should have the first letter capitalized, as shown here;
-the standard styles convert to lower case when necessary.
-
-\item[editor\hfill]
-Name(s) of editor(s), typed as indicated in the \LaTeX\ book.
-If there is also an \hbox{\tt author} field, then
-the \hbox{\tt editor} field gives the editor of the book or collection
-in which the reference appears.
-
-\item[howpublished\hfill]
-How something strange has been published.
-The first word should be capitalized.
-
-\item[institution\hfill]
-The sponsoring institution of a technical report.
-
-\item[journal\hfill]
-A journal name.
-Abbreviations are provided for many journals; see the {\it Local Guide}.
-
-\item[key\hfill]
-Used for alphabetizing, cross referencing, and creating a label when
-the ``author'' information
-(described in Section~\ref{odds-and-ends}) is missing.
-This field should not be confused with the key that appears in the
-\hbox{\verb|\cite|} command and at the beginning of the database entry.
-
-\item[month\hfill]
-The month in which the work was
-published or, for an unpublished work, in which it was written.
-You should use the standard three-letter abbreviation,
-as described in Appendix B.1.3 of the \LaTeX\ book.
-
-\item[note\hfill]
-Any additional information that can help the reader.
-The first word should be capitalized.
-
-\item[number\hfill]
-The number of a journal, magazine, technical report,
-or of a work in a series.
-An issue of a journal or magazine is usually
-identified by its volume and number;
-the organization that issues a
-technical report usually gives it a number;
-and sometimes books are given numbers in a named series.
-
-\item[organization\hfill]
-The organization that sponsors a conference or that publishes a \hbox{manual}.
-
-\item[pages\hfill]
-One or more page numbers or range of numbers,
-such as \hbox{\tt 42--111} or \hbox{\tt 7,41,73--97} or \hbox{\tt 43+}
-(the `{\tt +}' in this last example indicates pages following
-that don't form a simple range).
-To make it easier to maintain {\em Scribe\/}-compatible databases,
-the standard styles convert a single dash (as in \hbox{\tt 7-33})
-to the double dash used in \TeX\ to denote number ranges
-(as in \hbox{\tt 7--33}).
-
-\item[publisher\hfill]
-The publisher's name.
-
-\item[school\hfill]
-The name of the school where a thesis was written.
-
-\item[series\hfill]
-The name of a series or set of books.
-When citing an entire book, the the \hbox{\tt title} field
-gives its title and an optional \hbox{\tt series} field gives the
-name of a series or multi-volume set
-in which the book is published.
-
-\item[title\hfill]
-The work's title, typed as explained in the \LaTeX\ book.
-
-\item[type\hfill]
-The type of a technical report---for example,
-``Research Note''$\!$.
-
-\item[volume\hfill]
-The volume of a journal or multivolume book.
-
-\item[year\hfill]
-The year of publication or, for
-an unpublished work, the year it was written.
-Generally it should consist of four numerals, such as {\tt 1984},
-although the standard styles can handle any {\tt year} whose
-last four nonpunctuation characters are numerals,
-such as `\hbox{(about 1984)}'$\!$.
-
-\end{description}
-
-
-\section{Helpful Hints}
-\label{odds-and-ends}
-
-This section gives some random tips
-that aren't documented elsewhere,
-at least not in this detail.
-They are, roughly, in order
-of least esoteric to most.
-First, however, a brief spiel.
-
-I understand that there's often little choice in choosing
-a bibliography style---journal~$X$ says you must use style~$Y$
-and that's that.
-If you have a choice, however, I strongly recommend that you
-choose something like the {\tt plain} standard style.
-Such a style, van~Leunen~\cite{van-leunen} argues convincingly,
-encourages better writing than the alternatives---%
-more concrete, more vivid.
-
-{\em The Chicago Manual of Style\/}~\cite{chicago},
-on the other hand,
-espouse the author-date system,
-in which the citation might appear in the text as `(Jones, 1986)'$\!$.
-I argue that this system,
-besides cluttering up the
-text with information that may or may not be relevant,
-encourages the passive voice and vague writing.
-Furthermore the strongest arguments for
-using the author-date system---like ``it's the most practical''---%
-fall flat on their face with the advent
-of computer-typesetting technology.
-For instance the {\em Chicago Manual\/} contains,
-right in the middle of page~401, this anachronism:
-``The chief disadvantage of [a style like {\tt plain}] is that additions
-or deletions cannot be made after the manuscript is typed without changing
-numbers in both text references and list.''
-\LaTeX, obviously, sidesteps the disadvantage.
-
-Finally, the logical deficiencies of the author-date style
-are quite evident once you've written a program to implement it.
-For example, in a large bibliography,
-using the standard alphabetizing scheme,
-the entry for `(Aho et~al., 1983b)'
-might be half a page later than the one for `(Aho et~al., 1983a)'$\!$.
-Fixing this problem results in even worse ones.
-What a mess.
-(I have, unfortunately, programmed such a style,
-and if you're saddled with an unenlightened publisher
-or if you don't buy my propaganda,
-it's available from the Rochester style collection.)
-
-Ok, so the spiel wasn't very brief;
-but it made me feel better,
-and now my blood pressure is back to normal.
-Here are the tips for using \BibTeX\
-with the standard styles
-(although many of them hold for nonstandard styles, too).
-\begin{enumerate}
-
-\item
-With \BibTeX's style-designing language
-you can program general database manipulations,
-in addition to bibliography styles.
-For example it's a fairly easy task for someone familiar with the language
-to produce a database-key/author index of all the entries in a database.
-Consult the {\em Local Guide\/} to see
-what tools are available on your system.
-
-\item
-The standard style's thirteen entry types
-do reasonably well at formatting most entries,
-but no scheme with just thirteen formats
-can do everything perfectly.
-Thus, you should feel free to be creative
-in how you use these entry types
-(but if you have to be too creative,
-there's a good chance you're using the wrong entry type).
-
-\item
-Don't take the field names too seriously.
-Sometimes, for instance, you might have to include
-the publisher's address along with the publisher's name
-in the \hbox{\tt publisher} field,
-rather than putting it in the \hbox{\tt address} field.
-Or sometimes, difficult entries work best when you
-make judicious use of the {\tt note} field.
-
-\item
-Don't take the warning messages too seriously.
-Sometimes, for instance, the year appears in the title,
-as in {\em The 1966 World Gnus Almanac}.
-In this case it's best to omit the {\tt year} field
-and to ignore \BibTeX's warning message.
-
-\item
-If you have too many names to list in an
-\hbox{\tt author} or \hbox{\tt editor} field,
-you can end the list with ``and others'';
-the standard styles appropriately append an ``et~al.''
-
-\item
-In general, if you want to keep \BibTeX\ from changing
-something to lower case, you enclose it in braces.
-You might not get the effect you want, however,
-if the very first character after the left brace is a backslash.
-The ``special characters'' item later in this section explains.
-
-\item
-For {\em Scribe\/} compatibility, the database files
-allow an \hbox{\tt @COMMENT} command; it's not really
-needed because \BibTeX\ allows in the database files
-any comment that's not within an entry.
-If you want to comment out an entry,
-simply remove the `{\tt @}' character preceding the entry type.
-
-\item
-The standard styles have journal abbreviations that are
-computer-science oriented;
-these are in the style files primarily for the example.
-If you have a different set of journal abbreviations,
-it's sensible to put them in \hbox{\tt @STRING} commands
-in their own database file and to list this database file
-as an argument to \LaTeX's \hbox{\verb|\bibliography|} command
-(but you should list this argument before the ones that
-specify real database entries).
-
-\item
-It's best to use the three-letter abbreviations for the month,
-rather than spelling out the month yourself.
-This lets the bibliography style be consistent.
-And if you want to include information for the day of the month,
-the {\tt month} field is usually the best place.
-For example
-\begin{verbatim}
- month = jul # "~4,"
-\end{verbatim}
-will probably produce just what you want.
-
-\item
-If you're using the \hbox{\tt unsrt} style
-(references are listed in order of citation)
-along with the \hbox{\verb|\nocite{*}|} feature
-(all entries in the database are included),
-the placement of the \hbox{\verb|\nocite{*}|} command
-within your document file will determine the reference order.
-According to the rule given in Section~\ref{features}:
-If the command is placed at the beginning of the document,
-the entries will be listed in exactly the order
-they occur in the database;
-if it's placed at the end,
-the entries that you explicitly
-\hbox{\verb|\cite|} or \hbox{\verb|\nocite|}
-will occur in citation order,
-and the remaining database entries will be in database order.
-
-\item
-For theses, van Leunen recommends not giving
-the school's department after the name of the degree,
-since schools, not departments, issue degrees.
-If you really think that giving the department information
-will help the reader find the thesis,
-put that information in the \hbox{\tt address} field.
-
-\item
-The \hbox{\tt MASTERSTHESIS} and \hbox{\tt PHDTHESIS} entry types
-are so named for {\em Scribe\/} compatibility;
-\hbox{\tt MINORTHESIS} and \hbox{\tt MAJORTHESIS}
-probably would have been better names.
-Keep this in mind when trying to classify
-a non-U.S.\ thesis.
-
-\item
-Here's yet another suggestion for what to do when an author's
-name appears slightly differently in two publications.
-Suppose, for example, two journals articles use these fields.
-\begin{verbatim}
- author = "Donald E. Knuth"
- . . .
- author = "D. E. Knuth"
-\end{verbatim}
-There are two possibilities.
-You could (1)~simply leave them as is,
-or (2)~assuming you know for sure that
-these authors are one and the same person,
-you could list both in the form that the author prefers
-(say, `Donald~E.\ Knuth').
-In the first case, the entries might be alphabetized incorrectly,
-and in the second, the slightly altered name might
-foul up somebody's electronic library search.
-But there's a third possibility, which is the one I prefer.
-You could convert the second journal's field to
-\begin{verbatim}
- author = "D[onald] E. Knuth"
-\end{verbatim}
-This avoids the pitfalls of the previous two solutions,
-since \BibTeX\ alphabetizes this as if the brackets weren't there,
-and since the brackets clue the reader in that a full first name
-was missing from the original.
-Of course it introduces another pitfall---`D[onald]~E.\ Knuth' looks ugly---%
-but in this case I think the increase in accuracy outweighs
-the loss in aesthetics.
-
-\item
-\LaTeX's comment character `{\tt\%}' is not a comment character
-in the database files.
-
-\item
-Here's a more complete description of
-the ``author'' information referred to in previous sections.
-For most entry types the ``author'' information
-is simply the \hbox{\tt author} field.
-However:
-For the \hbox{\tt BOOK} and \hbox{\tt INBOOK} entry types
-it's the \hbox{\tt author} field, but if there's no author
-then it's the \hbox{\tt editor} field;
-for the \hbox{\tt MANUAL} entry type
-it's the \hbox{\tt author} field, but if there's no author
-then it's the \hbox{\tt organization} field;
-and for the \hbox{\tt PROCEEDINGS} entry type
-it's the \hbox{\tt editor} field, but if there's no editor
-then it's the \hbox{\tt organization} field.
-
-\item
-When creating a label,
-the \hbox{\tt alpha} style uses the ``author'' information described above,
-but with a slight change---%
-for the \hbox{\tt MANUAL} and \hbox{\tt PROCEEDINGS} entry types,
-the {\tt key} field takes precedence over the \hbox{\tt organization} field.
-Here's a situation where this is useful.
-\begin{verbatim}
- organization = "The Association for Computing Machinery",
- key = "ACM"
-\end{verbatim}
-Without the {\tt key} field, the \hbox{\tt alpha} style
-would make a label from the first three letters of information
-in the \hbox{\tt organization} field;
-\hbox{\tt alpha} knows to strip off the `\hbox{\tt The }'$\!$,
-but it would still form a label like `\hbox{[Ass86]}'$\!$,
-which, however intriguing, is uninformative.
-Including the {\tt key} field, as above,
-would yield the better label `\hbox{[ACM86]}'$\!$.
-
-You won't always need the {\tt key} field to override the
-\hbox{\tt organization}, though:
-With
-\begin{verbatim}
- organization = "Unilogic, Ltd.",
-\end{verbatim}
-for instance, the \hbox{\tt alpha} style would
-form the perfectly reasonable label `\hbox{[Uni86]}'$\!$.
-
-\item
-Section~\ref{features} discusses accented characters.
-To \BibTeX, an accented character is really a special case
-of a ``special character''$\!$,
-which consists of everything from a left brace at the top-most level,
-immediately followed by a backslash,
-up through the matching right brace.
-For example in the field
-\begin{verbatim}
- author = "\AA{ke} {Jos{\'{e}} {\'{E}douard} G{\"o}del"
-\end{verbatim}
-there are just two special characters,
-`\hbox{\verb|{\'{E}douard}|}' and `\hbox{\verb|{\"o}|}'
-(the same would be true if the pair of double quotes
-delimiting the field were braces instead).
-In general, \BibTeX\ will not do any processing
-of a \TeX\ or \LaTeX\ control sequence inside a special character,
-but it {\em will\/} process other characters.
-Thus a style that converts all titles to lower case
-would convert
-\begin{verbatim}
- The {\TeX BOOK\NOOP} Experience
-\end{verbatim}
-to
-\begin{verbatim}
- The {\TeX book\NOOP} experience
-\end{verbatim}
-(the `{\tt The}' is still capitalized
-because it's the first word of the title).
-
-This special-character scheme is useful for handling accented characters,
-for getting \BibTeX's alphabetizing to do what you want,
-and, since \BibTeX\ counts an entire special character as just one letter,
-for stuffing extra characters inside labels.
-The file \hbox{\tt XAMPL.BIB} distributed with \BibTeX\
-gives examples of all three uses.
-
-\item
-This final item of the section describes \BibTeX's names
-(which appear in the \hbox{\tt author} or \hbox{\tt editor} field)
-in slightly more detail than what
-appears in Appendix~B of the \LaTeX\ book.
-In what follows, a ``name'' corresponds to a person.
-(Recall that you separate multiple names in a single field
-with the word ``and''$\!$, surrounded by spaces,
-and not enclosed in braces.
-This item concerns itself with the structure of a single name.)
-
-Each name consists of four parts: First, von, Last, and~Jr;
-each part consists of a (possibly empty) list of name-tokens.
-The Last part will be nonempty if any part is,
-so if there's just one token, it's always a Last token.
-
-Recall that Per Brinch~Hansen's name should be typed
-\begin{verbatim}
- "Brinch Hansen, Per"
-\end{verbatim}
-The First part of his name has the single token ``Per'';
-the Last part has two tokens, ``Brinch'' and ``Hansen'';
-and the von and Jr parts are empty.
-If you had typed
-\begin{verbatim}
- "Per Brinch Hansen"
-\end{verbatim}
-instead, \BibTeX\ would (erroneously) think ``Brinch'' were a First-part token,
-just as ``Paul'' is a First-part token in ``John~Paul Jones''$\!$,
-so this erroneous form would have two First tokens and one Last token.
-
-Here's another example:
-\begin{verbatim}
- "Charles Louis Xavier Joseph de la Vall{\'e}e Poussin"
-\end{verbatim}
-This name has four tokens in the First part, two in the von, and
-two in the Last.
-Here \BibTeX\ knows where one part ends and the other begins because
-the tokens in the von part begin with lower-case letters.
-
-In general, it's a von token if the first letter at brace-level~0
-is in lower case.
-Since technically everything
-in a ``special character'' is at brace-level~0,
-you can trick \BibTeX\ into thinking that
-a token is or is not a von token by prepending a dummy
-special character whose first letter past the \TeX\ control sequence
-is in the desired case, upper or lower.
-
-To summarize, \BibTeX\ allows three possible forms for the name:
-\begin{verbatim}
- "First von Last"
- "von Last, First"
- "von Last, Jr, First"
-\end{verbatim}
-You may almost always use the first form;
-you shouldn't if either there's a Jr part,
-or the Last part has multiple tokens but there's no von part.
-
-\end{enumerate}
-
-\bibliography{btxdoc}
-\bibliographystyle{plain}
-\end{document}
diff --git a/Master/texmf-dist/doc/eplain/base/csindex.texi b/Master/texmf-dist/doc/eplain/base/csindex.texi
deleted file mode 100644
index f80b7058979..00000000000
--- a/Master/texmf-dist/doc/eplain/base/csindex.texi
+++ /dev/null
@@ -1,6 +0,0 @@
-@c Public domain.
-
-@node Macro index
-@unnumbered Macro index
-
-@printindex fn
diff --git a/Master/texmf-dist/doc/eplain/base/eplain.pdf b/Master/texmf-dist/doc/eplain/base/eplain.pdf
deleted file mode 100644
index 099777a3115..00000000000
--- a/Master/texmf-dist/doc/eplain/base/eplain.pdf
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/eplain/base/eplain.texi b/Master/texmf-dist/doc/eplain/base/eplain.texi
deleted file mode 100644
index 4b54e8160ea..00000000000
--- a/Master/texmf-dist/doc/eplain/base/eplain.texi
+++ /dev/null
@@ -1,228 +0,0 @@
-\input texinfo
-@setfilename eplain.info
-@settitle Expanded Plain @TeX{}
-
-@set UPDATED September 2005
-@set VERSION 3.0
-
-@copying
-This manual documents the Eplain macros, version @value{VERSION},
-@value{UPDATED}. Eplain provides functionality for plain @TeX{} that
-is intended to be useful regardless of how your document is actually
-formatted.
-
-Most of this manual is in the public domain, like most of the Eplain
-code. It was mostly written by Karl Berry, starting in 1989. Steven
-Smith wrote the documentation for the commutative diagram macros; this
-chapter is under the GNU General Public License. Oleg Katsitadze and
-Adam Lewenberg have made additions and corrections.
-@end copying
-
-@dircategory Texinfo documentation system
-@direntry
-* Eplain: (eplain). Expanding on plain Tex.
-@end direntry
-
-@titlepage
-@title Expanded Plain @TeX{}
-@subtitle @value{UPDATED}
-@subtitle @value{VERSION}
-@author Karl Berry
-@author Steven Smith
-@page
-@vskip 0pt plus 1filll
-@insertcopying
-@end titlepage
-
-@headings double
-
-@c We use the program index for file extensions. (We want them to come out
-@c in typewriter, but saying `@cindex @t{.aux} file', say, doesn't work.)
-@synindex pg fn
-
-
-@ifnottex
-@node Top
-@top Eplain
-
-@insertcopying
-@end ifnottex
-
-@menu
-* Introduction:: Eplain's purpose and philosophy.
-* Installation:: Installing Eplain.
-* Invoking Eplain:: Using Eplain from a TeX file.
-* User definitions:: Macros to be used in a document.
-* Hyperlinks:: Producing documents with hyperlinks.
-* Arrow theoretic diagrams:: Macros for commutative diagrams.
-* Programming definitions:: Macros to be used in writing other macros.
-* Macro index:: Entries for TeX and Eplain control sequences.
-* Concept index:: General index.
-
- --- The Detailed Node Listing ---
-
-User definitions
-
-* Diagnostics:: Tracing information.
-* Rules:: Changing the default rule dimensions.
-* Citations:: Using BibTeX and Eplain to make bibliographies.
-* Displays:: Changing the formatting of math displays.
-* Time of day:: Producing the time of day.
-* Lists:: Producing numbered and unordered lists.
-* Verbatim listing:: Producing text just as it appears.
-* Contents:: Making a table of contents.
-* Cross-references:: Symbolically referring to pages or equations.
-* Page references:: Symbolic references to page numbers.
-* Equation references:: Symbolic references to equation numbers.
-* Indexing:: Creating and typesetting indexes.
-* Justification:: Left- or right-justification, or centering.
-* Tables:: Producing ordered tables.
-* Margins:: Changing the margins directly.
-* Multiple columns:: Getting output in two columns.
-* Footnotes:: Autonumbered footnotes; changing formatting.
-* Fractions:: A better way to produce fractions in text.
-* Paths:: Allowing line breaks in pathnames.
-* Logos:: Various logos.
-* Boxes:: Producing filled or open rectangles.
-* Checking for PDF output:: Checking for pdfTeX in PDF mode.
-
-Citations
-
-* Formatting citations:: Changing the way citations are printed.
-* Formatting bibliographies:: Changing the way bibliographies are printed.
-
-Displays
-
-* Formatting displays:: General formatting of displays.
-
-Lists
-
-* Formatting lists:: Changing how the lists look.
-
-Cross-references
-
-* Defining generic references::
-* Using generic references::
-
-Equation references
-
-* Formatting equation references::
-* Subequation references::
-
-Indexing
-
-* Indexing terms:: Specifying what to index.
-* Typesetting an index:: Printing the sorted output.
-* Customizing indexing:: Creating commands and specifying extra actions.
-
-Indexing terms
-
-* Indexing commands:: Making index entries.
-* Modifying index entries:: Ranges, see/see also, page number typesetting.
-* Proofing index terms:: Noting index entries in the margins.
-
-Hyperlinks
-
-* Introduction to hyperlinks::
-* Explicit hyperlinks::
-* Implicit hyperlinks::
-* Hyperlink drivers::
-* Setting hyperlink types and options::
-* Turning hyperlinks on/off::
-
-Implicit hyperlinks
-
-* URL hyperlinks:: url
-* Citation hyperlinks:: cite, bib
-* List hyperlinks:: li
-* Cross-reference hyperlinks:: definexref, ref
-* Page reference hyperlinks:: xrdef, xref
-* Equation reference hyperlinks:: eq
-* Index hyperlinks:: idx
-* Footnote hyperlinks:: foot, footback
-* Contents hyperlinks::
-
-Index hyperlinks
-
-* Exact destinations for index terms::
-* Page destinations for index terms::
-* Choosing destination placement::
-* Index page list and page range parsers::
-* Hyperlinks in see and see also entries::
-
-Hyperlink drivers
-
-* Options supported by all drivers::
-* Hyperlink drivers pdftex and dvipdfm::
-* Hyperlink driver nolinks::
-
-Hyperlink drivers pdftex and dvipdfm::
-
-* Destination types for pdftex and dvipdfm::
-* Destination options for pdftex and dvipdfm::
-* Link types for pdftex and dvipdfm::
-* Link options for pdftex and dvipdfm::
-
-Setting hyperlink types and options
-
-* Setting default types and options::
-* Setting group types::
-* Setting group options::
-
-Turning hyperlinks on/off
-
-* Turning low-level commands on/off::
-* Turning hyperlinks on/off for a group::
-
-Arrow theoretic diagrams
-
-* Slanted lines and vectors::
-* Commutative diagrams::
-
-Commutative diagrams
-
-* Arrows and morphisms::
-* Construction of commutative diagrams::
-* Commutative diagram parameters::
-
-Programming definitions
-
-* Category codes:: Changing category codes.
-* Allocation macros:: Non-outer versions of \newcount et al.
-* Iteration:: Doing `for' loops in TeX.
-* Macro arguments:: Reading and ignoring them.
-* Converting to characters:: Normalizing control sequences and spaces.
-* Expansion:: Controlling expansion.
-* Obeying spaces:: Making whitespace count anywhere.
-* Writing out numbers:: Making `1' into `one'.
-* Mode-specific penalties::
-* Auxiliary files:: Testing for their existence.
-* User-defined environments:: User-defined environments.
-* Page list and page range parsers::
-
-Expansion
-
-* \csn and \ece::
-* \edefappend::
-* Hooks:: Manipulating and executing named actions.
-* Properties:: Associating information with a csname.
-* \expandonce::
-* \ifundefined::
-* \futurenonspacelet::
-
-@end menu
-
-@include intro.texi
-@include install.texi
-@include invoke.texi
-@include userdef.texi
-@include hlink.texi
-@include arrow.texi
-@include progdef.texi
-@include csindex.texi
-@include index.texi
-
-
-@contents
-
-@bye
diff --git a/Master/texmf-dist/doc/eplain/base/hlink.texi b/Master/texmf-dist/doc/eplain/base/hlink.texi
deleted file mode 100644
index 083bfa99fac..00000000000
--- a/Master/texmf-dist/doc/eplain/base/hlink.texi
+++ /dev/null
@@ -1,1860 +0,0 @@
-@c This is part of the Eplain manual. Public domain.
-
-@node Hyperlinks
-@chapter Hyperlinks
-
-@cindex links, hypertext
-@cindex hypertext links
-This chapter describes the support which Eplain provides for hypertext
-links (@dfn{hyperlinks} for short). Hyperlinks can be created
-implicitly by the cross-reference, indexing and other macros in
-Eplain. Macros for constructing explicit hyperlinks are also
-provided.
-
-@menu
-* Introduction to hyperlinks::
-* Explicit hyperlinks::
-* Implicit hyperlinks::
-* Hyperlink drivers::
-* Setting hyperlink types and options::
-* Turning hyperlinks on/off::
-@end menu
-
-
-@node Introduction to hyperlinks
-@section Introduction to hyperlinks
-
-@cindex hyperlink drivers
-@cindex drivers, hyperlink
-The original @TeX{} engine has no built-in support for hyperlinks.
-Many of the present-day file formats with hyperlinking capabilities
-did not even exist at the time @TeX{} was written. However, @TeX{}'s
-@findex special
-@code{\special} primitive can be used to instruct @TeX{} to write
-special directives into its @file{.dvi} output file. These directives
-are not interpreted by @TeX{} in any way; they are intended for programs
-which process the @file{.dvi} files produced by @TeX{}, be it printing
-or converting to other formats, such as
-@pindex .ps @r{files}
-@pindex .pdf @r{files}
-@file{.ps} or @file{.pdf}.
-
-Another approach is to extend the original @TeX{} engine with the
-ability to generate one of the hyperlinking formats; @TeX{}'s set of
-primitives can be extended to include hyperlink commands. This is the
-approach used by the pdf@TeX{} engine, which is capable of producing
-@file{.pdf} files directly from the @TeX{} source, skipping the
-@file{.dvi} generation and processing step.
-
-It turns out that the sets of commands for different formats are mostly
-not interchangeable, as each of the file formats has its own quirks and
-capabilities. And this is where Eplain @dfn{hyperlink drivers} come
-into play.
-
-In order for Eplain to generate proper commands, Eplain has to know
-two things: which engine or @file{.dvi} processor you are using, and
-the set of commands it understands.
-
-The knowledge about the commands that the various processors
-understand is programmed into Eplain's hyperlink drivers. Eplain
-provides two drivers, @code{pdftex} and @code{dvipdfm}, named after
-the programs which process the hyperlink commands,
-@pindex pdftex
-pdf@TeX{} and
-@pindex dvipdfm
-dvipdfm. Therefore, Eplain can only produce hyperlink commands for one
-of these two programs---except that the extended @code{dvipdfmx} program
-can be used as well as the original @code{dvipdfm}, since they are
-compatible.
-
-To tell Eplain which @file{.dvi} processor or extended @TeX{} engine you
-are using, use the command
-@findex enablehyperlinks
-@code{\enablehyperlinks}.
-
-For example:
-
-@example
-\enablehyperlinks
-@end example
-
-@noindent instructs Eplain to attempt to automatically detect which
-driver to use, as follows: if it detects pdf@TeX{} in PDF mode, it
-loads the @code{pdftex} driver. If it does not detect pdf@TeX{} in
-PDF mode, the @code{dvipdfm} driver is loaded. The detection is based
-on the
-@findex ifpdf
-@code{\ifpdf} switch (@pxref{Checking for PDF output}).
-
-If necessary, you can explicitly specify the driver name:
-
-@example
-\enablehyperlinks[pdftex]
-@end example
-
-@noindent will start producing hyperlinks under the assumption that
-you are using pdf@TeX{}.
-
-Eplain does not produce any hyperlinks until you explicitly enable
-them with @code{\enablehyperlinks}. For one thing, this keeps Eplain
-backward-compatible with previous releases without hyperlink support.
-For another, you may be using a program other than pdf@TeX{} or
-@code{dvipdfm}, which does not understand their hyperlink commands.
-
-@subheading Concepts and Terminology
-
-In general, hyperlinks work as follows. You mark some place in your
-document as a hyperlink destination, associating a @dfn{hyperlink
-label} with that destination. Next, somewhere within your document,
-you create a hyperlink, using a label to identify the destination you
-want this link to point to. A hyperlink is a region in the document
-(which can take many forms, for example, text or a picture); when a
-user clicks on that region, they will be taken to a place in the
-document marked by the corresponding destination. The following two
-sections (@ref{Explicit hyperlinks}, and @ref{Implicit hyperlinks})
-describe the macros you can use to define destinations and create
-links pointing to those destinations.
-
-In the rest of this chapter, we will often need to refer to links and
-destinations jointly, in which case we will use the term
-@dfn{hyperlinks}. We will use the terms @dfn{links} and
-@dfn{destinations} in cases when we need to refer specifically to
-links or destinations.
-
-@cindex link type
-@cindex destination type
-@cindex type, link and destination
-Hyperlink drivers provide several kinds of links and destinations. We
-will refer to them as @dfn{link types} and @dfn{destination types}.
-
-For example, one of the destination types that the @code{pdftex}
-driver provides is the @samp{xyz} type; when the user follows a link
-pointing to an @samp{xyz} destination, the exact location marked by
-that destination is displayed. Another destination type provided by
-the @code{pdftex} driver is the @samp{fit} type; when the user follows
-a link pointing to a @samp{fit} destination, the page containing that
-destination is zoomed to fit into the window in which the document is
-displayed.
-
-Similarly, drivers support various link types. For example, with the
-@code{pdftex} driver, the usual link type used to refer to
-destinations in the current document is called @samp{name}. You can
-also create a link pointing to another local document (by using the
-@samp{filename} link type) or to a URL (by using the @samp{url} link
-type).
-
-@cindex link options
-@cindex destination options
-@cindex options, link and destination
-In addition, each hyperlink driver supports a number of destination and
-link @dfn{options}. By setting these options you can customize
-hyperlink parameters (e.g., the thickness of the border drawn around a
-hyperlink) or pass information to hyperlinks (for example, file name of
-a document, for a link pointing to a destination in another document).
-
-@xref{Hyperlink drivers}, for the description of hyperlink types and
-options supported by the drivers. @xref{Setting hyperlink types and
-options}, for the information on how to set hyperlink options.
-
-
-@node Explicit hyperlinks
-@section Explicit hyperlinks
-
-@cindex explicit hyperlinks
-@cindex hyperlinks, explicit
-@findex hldest
-Explicit hyperlinks are created by you, in the source of your
-document. The simplest command is @code{\hldest}, which marks the
-current position in your document as a destination:
-
-@example
-\hldest@{@var{type}@}@{@var{options}@}@{@var{label}@}
-@end example
-
-@noindent Here @var{type} is one of the destination types supported by
-the hyperlink driver (@pxref{Hyperlink drivers}), @var{options} is a
-comma-separated list of option assignments, and @var{label} is the
-hyperlink label to associate with this destination. This label will
-identify the destination when creating links pointing to this
-destination. For example, with the @code{pdftex} driver, the command
-
-@example
-\hldest@{xyz@}@{zoom=2000@}@{index@}
-@end example
-
-@noindent creates a destination of type @samp{xyz} (``the current
-position''), sets the magnification ratio for this destination to be
-200%, and associates the label @code{index} with the destination.
-
-@findex hlstart
-@findex hlend
-Another command, @code{\hlstart}, paired with @code{\hlend}, turns all
-intervening material into a link:
-
-@example
-\hlstart@{@var{type}@}@{@var{options}@}@{@var{label}@} @dots{} \hlend
-@end example
-
-@noindent Here @var{type}, @var{options} and @var{label} have the same
-meaning as for @code{\hldest}. Continuing the previous example,
-
-@example
-\hlstart@{name@}@{bstyle=U,bwidth=2@}@{index@} Index\hlend
-@end example
-
-@noindent typesets the word `Index' as a link with underline border of
-width@tie{}2@tie{}PostScript points, pointing to the named destination
-@code{index} defined in the previous example. (The other options, like
-highlight mode and border color, are determined by the defaults,
-@pxref{Setting default types and options}).
-
-Both @code{\hldest} and @code{\hlstart} ignore following spaces.
-
-Both @code{\hldest} and @code{\hlstart} expand the first token of
-@var{options} once, so you can save a list of options in a macro and
-pass it for the @var{options}. For example:
-
-@example
-\def\linkopts@{bstyle=U,bwidth=2@}
-\hlstart@{name@}@{\linkopts@}@{index@}Index\hlend
-@end example
-
-@noindent is functionally equivalent to the previous example.
-
-
-@node Implicit hyperlinks
-@section Implicit hyperlinks
-
-@cindex implicit hyperlinks
-@cindex hyperlinks, implicit
-@dfn{Implicit hyperlinks} are hyperlinks created implicitly by various
-Eplain macros, such as the macros for citations, cross-references,
-indexing, etc.
-
-@cindex link group
-@cindex linkgroup
-@cindex group, link
-@cindex destination group
-@cindex destgroup
-@cindex group, destination
-All such macros are divided into @dfn{link groups} and
-@dfn{destination groups} (or @dfn{linkgroups} and @dfn{destgroups} for
-short) so that parameters can be set individually for each group. For
-example, all equation macros which define a destination are assigned
-to the `eq' destgroup; equation macros which create a link are
-assigned to the `eq' linkgroup. By setting parameters for the `eq'
-linkgroup (destgroup), you can uniformly customize all links
-(destinations) related to equation references, without interfering
-with settings for the other groups.
-
-@xref{Setting hyperlink types and options}, for information on how to
-set parameters for a group.
-
-Here is the list of the linkgroups:
-
-@display
-cite, ref, xref, eq, idx, foot, footback, url.
-@end display
-
-And here are the destgroups:
-
-@display
-bib, li, definexref, xrdef, eq, idx, foot, footback.
-@end display
-
-The following subsections describe each of the linkgroups and destgroups
-and the hyperlink support provided.
-
-@menu
-* URL hyperlinks:: url
-* Citation hyperlinks:: cite, bib
-* List hyperlinks:: li
-* Cross-reference hyperlinks:: definexref, ref
-* Page reference hyperlinks:: xrdef, xref
-* Equation reference hyperlinks:: eq
-* Index hyperlinks:: idx
-* Footnote hyperlinks:: foot, footback
-* Contents hyperlinks::
-@end menu
-
-
-@node URL hyperlinks
-@subsection URL hyperlinks: url
-
-@cindex URL hyperlink
-@cindex hyperlinks, URL
-@cindex group `url'
-@cindex linkgroup `url'
-The `url' linkgroup covers the
-@findex url @r{(hyperlinks)}
-@code{\url} command from the @LaTeX{} package
-@pindex url.sty
-@file{url} (@pxref{Packages known to work}), as well as any new
-@code{\url}-like commands you define. The type for this linkgroup is
-set to @samp{url} by the drivers which support this link type.
-@samp{url} links use the parameter to the @code{\url} command as the URL
-to point to.
-
-You may be using the @code{\url} command to typeset something other than
-a URL, e.g., a path, for which you do not want a link to be created; in
-that case, you can disable the `url' linkgroup with the command
-@code{\hloff[url]} (@pxref{Turning hyperlinks on/off for a group}).
-
-
-@node Citation hyperlinks
-@subsection Citation hyperlinks: cite, bib
-
-@cindex citations, hyperlinks
-@cindex hyperlinks, citations
-@cindex group `cite'
-@cindex linkgroup `cite'
-@findex cite @r{(hyperlinks)}
-The `cite' linkgroup includes only the @code{\cite} command
-(@pxref{Citations}). @code{\cite} turns each of the references in the
-list into a link pointing to the respective bibliography entry
-produced by the @code{\bibliography} command.
-
-@cindex bibliography, hyperlinks
-@cindex hyperlinks, bibliography
-@cindex group `bib'
-@cindex destgroup `bib'
-@findex bibliography @r{(hyperlinks)}
-The `bib' destgroup includes the macros related to the
-@code{\bibliography} command (@pxref{Citations}). @code{\bibliography}
-inputs a @file{.bbl} file, which contains a list of bibliography
-entries. For each of the entries, a destination is defined.
-
-Both commands use the citation label as the hyperlink label.
-
-
-@node List hyperlinks
-@subsection List hyperlinks: li
-
-@cindex lists, hyperlinks
-@cindex hyperlinks, lists
-@findex li @r{(hyperlinks)}
-@cindex group `li'
-@cindex destgroup `li'
-The `li' destgroup consists of the @code{\li} command (@pxref{Lists}),
-which defines a destination if you supply the optional argument
-(cross-reference label). This label is also used as the hyperlink
-label.
-
-
-@node Cross-reference hyperlinks
-@subsection Cross-reference hyperlinks: definexref, ref
-
-@findex definexref @r{(hyperlinks)}
-@cindex cross-references, hyperlinks
-@cindex hyperlinks, cross-references
-@cindex group `definexref'
-@cindex destgroup `definexref'
-The `definexref' destgroup is for the @code{\definexref} command
-(@pxref{Defining generic references}). @code{\definexref} defines a
-destination using the cross-reference label (the first argument) as the
-hyperlink label.
-
-@cindex group `ref'
-@cindex linkgroup `ref'
-The `ref' linkgroup includes @code{\refn} and @code{\xrefn} (they are
-synonyms), @code{\ref}, and @code{\refs} (@pxref{Using generic
-references}).
-
-@findex refn @r{(hyperlinks)}
-@findex xrefn @r{(hyperlinks)}
-@code{\refn} turns the cross-reference it produces into a link, using
-the cross-reference label as the hyperlink label. If an optional
-argument is present, it is tied by
-@findex reftie
-@code{\reftie} to the reference and become part of the link.
-
-@findex ref @r{(hyperlinks)}
-@code{\ref} works similarly to @code{\refn}. It takes an optional
-argument, which is treated the same way as the optional argument to
-@code{\refn}. In addition, @code{\ref} can produce a ``class word''.
-Both the optional argument and the class word become part of the link,
-when present. The cross-reference is tied by
-@findex reftie
-@code{\reftie} to the preceding word. The optional argument is
-separated from the class word by
-@findex refspace
-@code{\refspace}.
-
-@findex refs @r{(hyperlinks)}
-Unlike @code{\ref}, @code{\refs} does not take an optional argument and
-does not make the class word part of the link, which is appropriate for
-its intended use.
-
-
-@node Page reference hyperlinks
-@subsection Page reference hyperlinks: xrdef, xref
-
-@findex xrdef @r{(hyperlinks)}
-@cindex page reference hyperlink
-@cindex hyperlinks, page references
-@cindex group `xrdef'
-@cindex destgroup `xrdef'
-The `xrdef' destgroup is for @code{\xrdef} (@pxref{Page references}).
-@code{\xrdef} defines a destination using cross-reference label as the
-hyperlink label.
-
-@findex xref @r{(hyperlinks)}
-@findex refspace
-@findex xrefpageword
-@cindex group `xref'
-@cindex linkgroup `xref'
-The `xref' linkgroup includes the @code{\xref} command (@pxref{Page
-references}). @code{\xref} turns its optional argument (followed by
-@code{\refspace}), @code{\xrefpageword} and the cross-reference (page
-number) into a link, using the cross-reference label as the hyperlink
-label.
-
-
-@node Equation reference hyperlinks
-@subsection Equation reference hyperlinks: eq
-
-@findex eqdef @r{(hyperlinks)}
-@findex eqdefn @r{(hyperlinks)}
-@findex eqsubdef @r{(hyperlinks)}
-@findex eqsubdefn @r{(hyperlinks)}
-@cindex equations, hyperlinks
-@cindex hyperlinks, equations
-@cindex group `eq'
-@cindex destgroup `eq'
-All commands that define equation labels are part of the `eq' destgroup.
-These are @code{\eqdef}, @code{\eqdefn}, @code{\eqsubdef} and
-@code{\eqsubdefn} (@pxref{Equation references}). All these commands use
-the equation label as the hyperlink label. However, if the equation
-label is empty, they make up a (hopefully) unique hyperlink label for
-the destination. This label will be used for the link when you refer to
-this empty-labeled equation with one of the equation reference macros.
-
-@findex phantomeqlabel
-@findex phantomeqnumber
-The command @code{\phantomeqlabel} is called to generate hyperlink
-labels for the empty-labeled equations. By default, it produces the
-labels in the format @samp{PHEQ@var{number}}, where @var{number} comes
-from the count register @code{\phantomeqnumber}; this count register is
-incremented at every empty-labeled equation definition.
-
-@findex eqref
-@findex eqrefn
-@findex reftie
-@cindex group `eq'
-@cindex linkgroup `eq'
-The commands @code{\eqref} and @code{\eqrefn} (@pxref{Equation
-references}) form the `eq' linkgroup. These commands take an optional
-argument, which, when present, is tied with @code{\reftie} to the
-equation reference and becomes part of the link. The equation label is
-used for the hyperlink label; if the label is empty, the link is for the
-label generated for the last empty-labeled equation.
-
-
-@node Index hyperlinks
-@subsection Index hyperlinks: idx
-
-@findex idx @r{(hyperlinks)}
-@findex idxname @r{(hyperlinks)}
-@findex idxmarked @r{(hyperlinks)}
-@findex idxsubmarked @r{(hyperlinks)}
-@cindex index hyperlink
-@cindex hyperlinks, index
-@cindex group `idx'
-@cindex linkgroup `idx'
-@cindex destgroup `idx'
-All indexing commands (@code{\idx}, @code{\idxname}, @code{\idxmarked},
-@code{\idxsubmarked} and their silent equivalents, @pxref{Indexing
-commands}) form the `idx' destgroup. The `idx' linkgroup consists of
-the macros which are used to typeset the index when you say
-@findex readindexfile @r{(hyperlinks)}
-@code{\readindexfile@{@var{index-letter}@}} (@pxref{Typesetting an
-index}).
-
-@pindex makeindex
-To create the links in index entries, Eplain uses MakeIndex's
-``encapsulation'' feature. When you use an indexing macro to mark an
-index term, Eplain writes out a line to the
-@pindex .idx @r{files}
-@file{.idx} file of the following general form:
-
-@example
-\indexentry@{@var{entry}|@var{pagemarkup}@}@{@var{pageno}@}
-@end example
-
-@noindent where @var{entry} is the index entry (converted into the
-internal format that MakeIndex understands), @var{cs} is the markup
-command you specified with the @code{pagemarkup=@var{cs}} optional
-argument to the indexing commands (@pxref{Modifying index entries}),
-and @var{pageno} is the page number on which the term appeared. When
-processing the @file{.idx} file, MakeIndex makes the page number an
-argument to the page markup command (``encapsulates'' the page
-number), so the page number in the
-@pindex .ind @r{files}
-@file{.ind} file appears as @code{\@var{cs}@{@var{pageno}@}}. Eplain
-internally replaces the @var{cs} command name with its own command,
-which, in addition to calling the original @code{\@var{cs}}
-encapsulator, turns the page number into a link.
-
-Eplain provides two approaches to linking page numbers in the index to
-locations of index terms in the text.
-
-@menu
-* Exact destinations for index terms::
-* Page destinations for index terms::
-* Choosing destination placement::
-* Index page list and page range parsers::
-* Hyperlinks in see and see also entries::
-@end menu
-
-
-@node Exact destinations for index terms
-@subsubsection Exact destinations for index terms
-
-In this approach, each command that marks an index term defines a unique
-destination and passes its label on to the @file{.idx} file as part of
-the @code{\indexentry} command. The @code{\indexentry} line that Eplain
-writes to the @file{.idx} file becomes
-
-@example
-\indexentry@{@var{entry}|hlidx@{@var{label}@}@{@var{cs}@}@}@{@var{pageno@}}
-@end example
-
-@findex hlidx
-@noindent where @code{\hlidx} is the command that is defined by Eplain
-to take three arguments: a hyperlink label (@var{label}), a name of
-page number encapsulator (@var{cs}) and a page number (@var{pageno}).
-In the @file{.ind} file that MakeIndex will generate, the page number
-will now appear as
-
-@example
-\hlidx@{@var{label}@}@{@var{cs}@}@{@var{pageno}@}
-@end example
-
-@noindent The result of this command is
-@code{\@var{cs}@{@var{pageno}@}}, wrapped up into a link pointing to
-@var{label} destination.
-
-The hyperlink labels for the index terms are generated by the
-@findex hlidxlabel
-@code{\hlidxlabel} command, by default in the format
-@samp{IDX@var{number}}, where @var{number} is the value of the count
-register
-@findex hlidxlabelnumber
-@code{\hlidxlabelnumber}. This count register is incremented at each
-index term.
-
-@cindex exact index hyperlinks
-@cindex index, exact hyperlinks
-@cindex hyperlinks, index, exact
-The advantage of this approach, as compared to the second approach
-described below, is that links in the index point to exact locations of
-the indexed terms on the page. The disadvantage of this approach is
-that MakeIndex will regard @emph{all} index entries as distinct, because
-each one contains a (unique) hyperlink label. This disadvantage can be
-partially overcome by the script
-@pindex idxuniq
-@cindex filtering index entries with hyperlinks
-@cindex hyperlinks, filtering index entries
-@file{idxuniq} distributed with Eplain in the @file{util} directory.
-This script filters out @code{\indexentry} lines differing only in the
-hyperlink label but identical otherwise. You should process the
-@file{.idx} with this script before passing it on to MakeIndex. For
-example:
-
-@example
-prompt$ ./idxuniq file.idx | makeindex > file.ind
-@end example
-
-@noindent Still, this solution is not ideal, as the page-range formation
-ability of MakeIndex will not work, and there will be problems of
-apparently identical index entries clashing (e.g., when a range-end
-entry appears on the same page as another entry with the same
-definition; @file{idxuniq} will not filter out the second entry).
-
-
-@node Page destinations for index terms
-@subsubsection Page destinations for index terms
-
-In the second approach, Eplain does not write out any destination labels
-for the index terms. Instead, Eplain writes out a wrapper for page
-number encapsulator which can parse the page number and generate a link
-pointing to the @emph{page} on which the term appeared. On top of each
-page containing an index term, Eplain defines a destination with label
-produced by
-@findex hlidxpagelabel
-@code{\hlidxpagelabel}. The @code{\hlidxpagelabel} command takes a
-single argument (page number @var{number}) and by default produces the
-label in the format @samp{IDXPG@var{number}}.
-
-With this approach, the @code{\indexentry} line which Eplain writes to
-the @code{.idx} file looks like this:
-
-@example
-\indexentry@{@var{entry}|hlidxpage@{@var{cs}@}@}@{@var{pageno@}}
-@end example
-
-@findex hlidxpage
-@noindent where @code{\hlidxpage} is the command that is defined by Eplain
-to take two arguments: a name of page number encapsulator (@var{cs})
-and a page number (@var{pageno}). In the @file{.ind} file that
-MakeIndex will generate, the page number will appear as
-
-@example
-\hlidxpage@{@var{cs}@}@{@var{pageno}@}
-@end example
-
-The advantage of this approach is that all features of MakeIndex are
-intact. The drawback is that links in the index do not point to exact
-locations of indexed terms on a page, but to the top of a page on
-which the term appears.
-
-@cindex index, parsing page numbers
-@cindex page range, parsing
-@cindex page list, parsing
-@cindex parsing page numbers
-Another disadvantage is that this approach depends on the page range and
-page list separators which MakeIndex was configured to output.
-@code{\hlidxpage} must be able to parse the first page number in a page
-range like @samp{1--4}. In addition, page list parsing is needed
-because MakeIndex combines two consecutive page numbers in one call to
-the page number encapsulator, so @code{\hlidxpage} can be passed, e.g.,
-@samp{1, 2} for the @var{pageno}. In this last case, @code{\hlidxpage}
-splits the two page numbers, applies @code{\@var{cs}} to each of them,
-and makes each of the page numbers a link to the appropriate page. Note
-that this will alter typesetting slightly, because now the page list
-separator (a comma followed by a space, by default) is not typeset using
-the page number encapsulator (@code{\@var{cs}}).
-
-Eplain's defaults for the page list and page number delimiters are the
-same as those in MakeIndex, a comma followed by a space (@samp{, }) and
-two dashes (@samp{--}), respectively. If you customize MakeIndex to use
-different delimiters, you must not forget to let Eplain know about them
-with the commands
-
-@example
-\setidxpagelistdelimiter@{@var{list-delim}@}
-\setidxpagerangedelimiter@{@var{page-delim}@}
-@end example
-
-@noindent (@pxref{Page list and page range parsers}).
-
-
-@node Choosing destination placement
-@subsubsection Choosing destination placement
-
-@cindex index, placement of destinations
-@cindex index, destination placement
-@cindex index, selecting destination placement
-@cindex index, choosing destination placement
-@cindex hyperlinks, index destination placement
-The approach that Eplain should use for the index terms can be
-selected in the
-@findex enablehyperlinks
-@code{\enablehyperlinks} command. The optional argument it accepts is
-a comma-separated list of options. The
-@findex idxexact
-@code{idxexact} option selects the first approach,
-@findex idxpage
-@code{idxpage} the second, and
-@findex idxnone
-@code{idxnone} disables hyperlink support for the index terms
-altogether, in case you want to stop Eplain from writing its link
-wrappers into the @file{.idx} file. The default is @code{idxpage}.
-
-For example:
-
-@example
-\enablehyperlinks[idxexact]
-@end example
-
-@noindent selects the first approach (``exact index links'').
-
-
-@node Index page list and page range parsers
-@subsubsection Index page list and page range parsers
-
-The macros that Eplain uses to parse page lists and page ranges,
-@code{\idxparselist} and @code{\idxparserange}, can sometimes be useful
-when defining page number encapsulators. @xref{Page list and page range
-parsers}, for the description of these commands and an example of their
-usage.
-
-
-@node Hyperlinks in see and see also entries
-@subsubsection Hyperlinks in see and see also entries
-
-@cindex hyperlinks, see and see also index entries
-@cindex index, hyperlinks in see and see also entries
-@cindex see also index entries and hyperlinks
-@cindex see, and index entries, hyperlinks
-There is no automatic support for hyperlinks with ``see'' and ``see
-also'' index entries, as there is not enough information to trace the
-parameters of
-@findex indexsee
-@code{\indexsee} and
-@findex indexseealso
-@code{\indexseealso} to corresponding index entries. But if desired,
-this can be implemented with @code{\hldest} and @code{\hlstart}
-(@pxref{Explicit hyperlinks}); for example:
-
-@example
-\sidx@{semantic theory of truth@@%
- \leavevmode\hldest@{@}@{@}@{idx:theo truth@}semantic theory of truth@}
-@dots{}
-\sidx[seealso]@{truth@}[definition of]%
- @{\hlstart@{@}@{@}@{idx:theo truth@}semantic theory of truth\hlend@}
-@end example
-
-
-@node Footnote hyperlinks
-@subsection Footnote hyperlinks: foot, footback
-
-@cindex footnotes, hyperlinks
-@cindex hyperlinks, footnotes
-@cindex group `foot'
-@cindex group `footback'
-@cindex linkgroup `foot'
-@cindex linkgroup `footback'
-@cindex destgroup `foot'
-@cindex destgroup `footback'
-The `foot' link and destination groups include the
-@findex numberedfootnote @r{(hyperlinks)}
-@code{\numberedfootnote} and
-@findex footnote @r{(hyperlinks)}
-@code{\footnote} macros (@pxref{Footnotes}). The `footback' groups
-include the same macros, but control parameters for links and
-destinations created inside the footnote to point back to the footnote
-mark within the text body.
-
-The macros use hyperlink labels generated by
-@findex hlfootlabel
-@code{\hlfootlabel} and
-@findex hlfootbacklabel
-@code{\hlfootbacklabel}. The default formats for the labels are
-@samp{FOOT@var{number}} and @samp{FOOTB@var{number}}, respectively,
-where @var{number} is the value of the count register
-@findex hlfootlabelnumber
-@code{\hlfootlabelnumber}. This register is incremented at every
-footnote.
-
-
-@node Contents hyperlinks
-@subsection Contents hyperlinks
-
-@cindex table of contents, hyperlinks
-@cindex contents, hyperlinks
-@cindex hyperlinks, table of contents
-There is currently no special support for hyperlinks in the table of
-contents (@pxref{Contents}), but implementing them with the
-@code{\hldest} and @code{\hlstart @dots{} \hlend} commands
-(@pxref{Explicit hyperlinks}) should be possible.
-
-
-@node Hyperlink drivers
-@section Hyperlink drivers
-
-This section describes the hyperlink drivers: the types of hyperlinks
-they support, and the options they accept. During the first reading,
-you may only want to skim through this section.
-
-Some of the descriptions below come from @cite{Portable Document Format
-Reference Manual Version@tie{}1.3}, March@tie{}11, 1999.
-
-@menu
-* Options supported by all drivers::
-* Hyperlink drivers pdftex and dvipdfm::
-* Hyperlink driver nolinks::
-@end menu
-
-
-@node Options supported by all drivers
-@subsection Options supported by all drivers
-
-@cindex hyperlink options, common
-This subsection describes the destination and link options which are
-supported by all hyperlink drivers.
-
-
-@subsubheading Destination options supported by all drivers
-
-@cindex destination options, common
-@cindex options, destination, common
-@table @code
-@item raise
-@findex raise @r{(hyperlink option)}
-@cindex raising hyperlink destinations
-@cindex hyperlink destination, raising
-@cindex destinations, raising
-Specifies how much to raise destinations above the baseline. When set
-to zero or empty, destinations are placed at the baseline.
-
-It is usually convenient to set this option to some variable parameter,
-so that the height to which destinations are raised is automatically
-adjusted according to the current context. For example, setting it to
-@findex normalbaselineskip
-@code{\normalbaselineskip} (or some fraction of it, like
-@code{1.7\normalbaselineskip}) makes the setting appropriate for
-different point sizes, in case your document uses more than one.
-
-The default setting is @code{\normalbaselineskip}. Initially, the
-destgroups do not define this option, so they fall back on the default,
-except for the `eq' destgroup, for which this option is set to
-@code{1.7\normalbaselineskip},
-@cindex mathematics displays, hyperlinks
-@cindex displayed math and hyperlinks
-@cindex large operators and hyperlinks
-@cindex hyperlinks, large operators
-@cindex destinations, large operators
-to accommodate the usual cases of large operators in displayed math.
-
-Example: @code{\hldestopts[eq]@{raise=2.5\normalbaselineskip@}}
-@end table
-
-
-@subsubheading Link options supported by all drivers
-@cindex link options, common
-@cindex options, link, common
-
-@table @code
-@item colormodel
-@itemx color
-@findex colormodel @r{(hyperlink option)}
-@findex color @r{(hyperlink option)}
-@cindex color, hyperlinks
-These two options define the color to be used for rendering the link
-text. The colors are used only when a @code{\color} command is defined,
-e.g., by loading the @LaTeX{} `color' package (@pxref{Packages known to
-work}). The @code{\color} command is called as
-@code{\color[@var{colormodel}]@{@var{color}@}}, where @var{colormodel}
-and @var{color} are the definitions of the @code{colormodel} and
-@code{color} options, respectively. However, if @var{colormodel} is
-empty, the optional argument to @code{\color} is omitted; and if
-@var{color} is empty, the @code{\color} command is omitted altogether.
-The default setting is @code{@var{colormodel}=cmyk} and
-@code{@var{color}=0.28,1,1,0.35}.
-
-When specifying colors with several components delimited by commas
-(e.g., RGB and CMYK colors in the @LaTeX{} `color' package), it is not
-possible to specify the components directly in the option list of
-@code{\hlopts}, because comma is the option list delimiter. With the
-`color' package, it is possible to specify such colors by defining a
-custom color with @code{\definecolor} and using the new color name with
-an empty @var{colormodel} (see examples below).
-
-Examples:
-@example
-\hlopts@{colormodel=,color=blue@}% predefined color
-\definecolor@{mycolor@}@{rgb@}@{.3,.8,.95@}
-\hlopts@{colormodel=,color=mycolor@}% custom color
-\hlopts@{colormodel=gray,color=.4@}
-@end example
-@end table
-
-
-@node Hyperlink drivers pdftex and dvipdfm
-@subsection Hyperlink drivers @code{pdftex} and @code{dvipdfm}
-
-@cindex @code{pdftex}, hyperlink driver
-@cindex @code{dvipdfm}, hyperlink driver
-@cindex driver @code{pdftex}
-@cindex driver @code{dvipdfm}
-@cindex hyperlink driver @code{pdftex}
-@cindex hyperlink driver @code{dvipdfm}
-This subsection describes link and destination types and options
-supported by the @code{pdftex} and @code{dvipdfm} drivers. Many of the
-hyperlink types and options are common to both drivers, so we describe
-them together.
-
-@menu
-* Destination types for pdftex and dvipdfm::
-* Destination options for pdftex and dvipdfm::
-* Link types for pdftex and dvipdfm::
-* Link options for pdftex and dvipdfm::
-@end menu
-
-
-@node Destination types for pdftex and dvipdfm
-@subsubsection Destination types for @code{pdftex} and @code{dvipdfm}
-
-@cindex destination types, @code{pdftex}
-@cindex destination types, @code{dvipdfm}
-@cindex types, destination, @code{pdftex}
-@cindex types, destination, @code{dvipdfm}
-@cindex @code{pdftex}, destination types
-@cindex @code{dvipdfm}, destination types
-@table @code
-@item xyz
-@findex xyz @r{(destination type)}
-``Current position''. The option
-@findex zoom @r{(destination option)}
-@code{zoom} specifies magnification to use (zero or empty means leave
-magnification unchanged, which is the default). This is the default
-type.
-
-For @code{dvipdfm}: the options
-@findex left @r{(destination option)}
-@code{left} and
-@findex top @r{(destination option)}
-@code{top} specify position coordinates to use (empty options mean
-current position coordinate, which is the default).
-
-Example: @code{\hldest@{xyz@}@{zoom=2000@}@{dest123@}}
-
-@item fit
-@findex fit @r{(destination type)}
-Fit the page to the window.
-
-Example: @code{\hldest@{fit@}@{@}@{dest123@}}
-
-@item fith
-@findex fith @r{(destination type)}
-Fit the width of the page to the window.
-
-For @code{dvipdfm}: the
-@findex top @r{(destination option)}
-@code{top} option specifies vertical position (default is empty, meaning
-current position).
-
-Example: @code{\hldest@{fith@}@{@}@{dest123@}}
-
-@item fitv
-@findex fitv @r{(destination type)}
-Fit the height of the page to the window.
-
-For @code{dvipdfm}: The option
-@findex left @r{(destination option)}
-@code{left} specifies horizontal position (default is empty, meaning
-current position).
-
-Example: @code{\hldest@{fitv@}@{@}@{dest123@}}
-
-@item fitb
-@findex fitb @r{(destination type)}
-Fit the page's bounding box to the window.
-
-Example: @code{\hldest@{fitb@}@{@}@{dest123@}}
-
-@item fitbh
-@findex fitbh @r{(destination type)}
-Fit the width of the page's bounding box to the window.
-
-For @code{dvipdfm}: the option
-@findex top @r{(destination option)}
-@code{top} specifies vertical position (default is empty, meaning
-current position).
-
-Example: @code{\hldest@{fitbh@}@{@}@{dest123@}}
-
-@item fitbv
-@findex fitbv @r{(destination type)}
-Fit the height of the page's bounding box to the window.
-
-For @code{dvipdfm}: the option
-@findex left @r{(destination option)}
-@code{left} specifies horizontal position (default is empty, meaning
-current position).
-
-Example: @code{\hldest@{fitbv@}@{@}@{dest123@}}
-
-@item fitr
-@findex fitr @r{(destination type)}
-For @code{pdftex}: fit the rectangle specified by the options
-@findex width @r{(destination option)}
-@code{width},
-@findex height @r{(destination option)}
-@code{height} and
-@findex depth @r{(destination option)}
-@code{depth} (as a @TeX{} rule specification) in the window. For
-dimensions set to empty, the corresponding value of the parent box is
-used (these are the defaults).
-
-For @code{dvipdfm}: fit the rectangle specified by the options
-@findex left @r{(destination option)}
-@code{left},
-@findex bottom @r{(destination option)}
-@code{bottom},
-@findex right @r{(destination option)}
-@code{right} and
-@findex top @r{(destination option)}
-@code{top} (in
-@cindex PostScript point
-PostScript points, 72@tie{}points per inch) in the window. For
-dimensions set to empty, current position coordinate is substituted
-(these are the defaults).
-
-Example for @code{pdftex}:
-
-@example
-\hldest@{fitr@}@{width=\hsize,height=.5\vsize,depth=0pt@}@{dest123@}
-@end example
-
-Example for @code{dvipdfm}:
-
-@example
-\hldest@{fitr@}@{left=72,bottom=72,right=720,top=360@}@{dest123@}
-@end example
-
-@item raw
-@findex raw @r{(destination type)}
-The destination specification (in the form of a pdf@TeX{} command or a
-dvipdfm @code{\special}) is taken from the command sequence
-@code{\@var{cs}}, where @var{cs} is the value of the
-@findex cmd @r{(destination option)}
-@code{cmd} option. In the definition of @code{\@var{cs}}, use
-@findex @@hllabel
-@code{\@@hllabel} to refer to the hyperlink label. This option is
-intended to be used with destgroups (@pxref{Setting hyperlink types and
-options}), as it does not make sense to use it in a direct call to
-@findex hldest
-@code{\hldest}---you can just call the raw command.
-
-Example for @code{pdftex}:
-
-@example
-\makeatletter
-\def\mydest@{\pdfdest name@{\@@hllabel@} xyz@}
-\hldesttype@{raw@}
-\hldestopts@{cmd=mydest@}
-\resetatcatcode
-@end example
-
-Example for @code{dvipdfm}:
-
-@example
-\makeatletter
-\def\mydest@{\special@{pdf: dest (\@@hllabel)
- [@@thispage /XYZ @@xpos @@ypos 0]@}@}
-\hldesttype@{raw@}
-\hldestopts@{cmd=mydest@}
-\resetatcatcode
-@end example
-@end table
-
-
-@node Destination options for pdftex and dvipdfm
-@subsubsection Destination options for @code{pdftex} and @code{dvipdfm}
-
-@cindex destination options, @code{pdftex}
-@cindex destination options, @code{dvipdfm}
-@cindex options, destination, @code{pdftex}
-@cindex options, destination, @code{dvipdfm}
-@cindex @code{pdftex}, destination options
-@cindex @code{dvipdfm}, destination options
-With respect to the destination options, the @code{pdftex} and
-@code{dvipdfm} differ in the way the fit rectangle is specified
-(relative coordinates for @code{pdftex}, absolute coordinates for
-@code{dvipdfm}).
-
-
-@subsubheading Common destination options
-
-@table @code
-@item cmd
-@findex cmd @r{(destination option)}
-Name of the macro (without the leading @samp{\}) containing a
-pdf@TeX{} command or a dvipdfm @code{\special} for the @code{raw}
-destination.
-
-For an example of usage, @pxref{Destination types for pdftex and
-dvipdfm}, description of the @code{raw} destination.
-
-@item zoom
-@findex zoom @r{(destination option)}
-@cindex destinations, magnification
-@cindex hyperlink destination, magnification
-@cindex magnification, hyperlink destination
-@cindex zooming, hyperlink destination
-Magnification ratio times 1000 (like @TeX{}'s scale factor).
-Zero or empty means leave magnification unchanged, which is the
-default.
-
-Example: @code{\hldest@{xyz@}@{zoom=2000@}@{dest123@}}
-@end table
-
-
-@subsubheading @code{pdftex}-specific destination options
-
-The dimension options below must be specified as a @TeX{} rule
-specification. When set to empty, the corresponding value
-of the parent box is used (this is the default for all dimension
-options).
-
-@table @code
-@item depth
-@findex depth @r{(destination option)}
-@cindex destinations, dimensions
-@cindex hyperlink destination, dimensions
-@cindex dimensions, hyperlink destination
-Depth of the fit rectangle for the @code{fitr} destination.
-
-@item height
-@findex height @r{(destination option)}
-@cindex destinations, dimensions
-@cindex hyperlink destination, dimensions
-@cindex dimensions, hyperlink destination
-Height of the fit rectangle for the @code{fitr} destination.
-
-@item width
-@findex width @r{(destination option)}
-@cindex destinations, dimensions
-@cindex hyperlink destination, dimensions
-@cindex dimensions, hyperlink destination
-Width of the fit rectangle for the @code{fitr} destination.
-
-Example:
-
-@example
-\hldest@{fitr@}@{width=\hsize,height=.5\vsize,depth=0pt@}@{dest123@}
-@end example
-@end table
-
-
-@subsubheading @code{dvipdfm}-specific destination options
-
-The dimension options below must be specified in
-@cindex PostScript point
-PostScript points (72@tie{}points per inch), as a number without the
-@samp{bp} unit name. When set to empty, the current position
-coordinate is used (this is the default for all dimension options).
-
-@table @code
-@item bottom
-@findex bottom @r{(destination option)}
-@cindex destinations, dimensions
-@cindex hyperlink destination, dimensions
-@cindex dimensions, hyperlink destination
-Bottom position coordinate of a box specification for the various
-destination types.
-
-@item left
-@findex left @r{(destination option)}
-@cindex destinations, dimensions
-@cindex hyperlink destination, dimensions
-@cindex dimensions, hyperlink destination
-Left position coordinate of a box specification for the various
-destination types.
-
-@item right
-@findex right @r{(destination option)}
-@cindex destinations, dimensions
-@cindex hyperlink destination, dimensions
-@cindex dimensions, hyperlink destination
-Right position coordinate of a box specification for the various
-destination types.
-
-@item top
-@findex top @r{(destination option)}
-@cindex destinations, dimensions
-@cindex hyperlink destination, dimensions
-@cindex dimensions, hyperlink destination
-Top position coordinate of a box specification for the various
-destination types.
-
-Example:
-
-@example
-\hldest@{fitr@}@{left=72,bottom=72,right=720,top=360@}@{dest123@}
-@end example
-@end table
-
-
-@node Link types for pdftex and dvipdfm
-@subsubsection Link types for @code{pdftex} and @code{dvipdfm}
-
-@cindex link types, @code{pdftex}
-@cindex link types, @code{dvipdfm}
-@cindex types, link, @code{pdftex}
-@cindex types, link, @code{dvipdfm}
-@cindex @code{pdftex}, link types
-@cindex @code{dvipdfm}, link types
-Link types are the same for the @code{pdftex} and @code{dvipdfm}
-drivers, except that the @code{pdftex} driver provides one additional
-link type @code{num} (link to a numbered destination). dvipdfm does not
-support numbered destinations, therefore it does not have this link
-type. Note that all destinations created by Eplain hyperlink macros are
-named destinations; to define a numbered destination, you have to use
-low-level pdf@TeX{} commands.
-
-
-@subsubheading Common link types
-
-@table @code
-@item name
-@findex name @r{(hyperlink type)}
-@cindex named destination
-@cindex destinations, named
-@cindex hyperlink destination, named
-Go to a ``named destination''. The label is the destination name.
-All destinations created with @code{\hldest} are named destinations.
-This is the default type.
-
-Example: @code{\hlstart@{name@}@{@}@{dest123@}Link to dest123\hlend}
-
-@item page
-@findex page @r{(hyperlink type)}
-@cindex page destination
-@cindex destinations, page
-@cindex hyperlink destination, page
-Go to a page. The label is the page number (counting from@tie{}1).
-Page fitting is specified by the
-@findex pagefit @r{(hyperlink option)}
-@code{pagefit} option.
-
-Example:
-
-@example
-\hlstart@{page@}@{pagefit=/FitH 600@}@{123@}Link to page~123\hlend
-@end example
-
-@item filename
-@findex filename @r{(hyperlink type)}
-@cindex file, hyperlink to
-@cindex destinations, in another file
-@cindex hyperlinks, to another file
-Go to a named destination in another file. The label is the
-destination name. The file name is specified by the
-@findex file @r{(hyperlink option)}
-@code{file} option. Page fitting is specified by the
-@findex pagefit @r{(hyperlink option)}
-@code{pagefit} option. The
-@findex newwin @r{(hyperlink option)}
-@code{newwin} option specifies whether the destination document is
-opened in the same window or in a new window.
-
-Example:
-@example
-\hlstart@{filename@}@{file=book.pdf,newwin=1@}@{dest123@}
- Link to dest123 in file `book.pdf'\hlend
-@end example
-
-@item filepage
-@findex filepage @r{(hyperlink type)}
-@cindex file, hyperlink to
-@cindex destinations, in another file
-@cindex hyperlinks, to another file
-Go to a page in another file. The label is the page number (counting
-from@tie{}1). The file name is specified by the
-@findex file @r{(hyperlink option)}
-@code{file} option. Page fitting is specified by the
-@findex pagefit @r{(hyperlink option)}
-@code{pagefit} option. The
-@findex newwin @r{(hyperlink option)}
-@code{newwin} option specifies whether the destination document is
-opened in the same window or in a new window.
-
-Example:
-@example
-\hlstart@{filepage@}@{file=book.pdf,newwin=,%
- pagefit=/FitR 50 100 300 500@}@{1@}
- Link to page~1 in file `book.pdf'\hlend
-@end example
-
-@item url
-@findex url @r{(hyperlink type)}
-@cindex URL hyperlink
-@cindex destinations, URL
-@cindex hyperlinks, URL
-Go to a URL. The label is the URL.
-
-Example: @code{\hlstart@{url@}@{@}@{http://tug.org/eplain/@}Eplain home\hlend}
-
-@item raw
-@findex raw @r{(hyperlink type)}
-The link specification (in the form of a pdf@TeX{} command or a dvipdfm
-@code{\special} primitive) is taken from the command sequence
-@code{\@var{cs}}, where @var{cs} is the value of the
-@findex cmd @r{(hyperlink option)}
-@code{cmd} option. This option is intended to be used with linkgroups
-(@pxref{Setting hyperlink types and options}), as it does not make sense
-to use it in a direct call to
-@findex hlstart
-@code{\hlstart}---you can just call the raw command.
-
-Example for @code{pdftex}:
-
-@example
-% Redirect all \url links to the first page
-\def\mycmd@{\pdfstartlink goto page 1 @{/Fit@}@}
-\hltype[url]@{raw@}
-\hlopts[url]@{cmd=mycmd@}
-@end example
-
-Example for @code{dvipdfm}:
-
-@example
-% Redirect all \url links to the first page
-\def\mycmd@{\special@{pdf: beginann <</Type/Annot /Subtype/Link
- /Dest[0 /Fit]>>@}@}
-\hltype[url]@{raw@}
-\hlopts[url]@{cmd=mycmd@}
-@end example
-@end table
-
-@subsubheading @code{pdftex}-specific link types
-
-@table @code
-@item num
-@findex num @r{(hyperlink type)}
-@cindex numbered destination
-@cindex destinations, numbered
-@cindex hyperlink destination, numbered
-Go to a ``numbered destination''. The label is the destination
-number.
-
-Example: @code{\hlstart@{num@}@{@}@{123@}Link to 123\hlend}
-@end table
-
-
-@node Link options for pdftex and dvipdfm
-@subsubsection Link options for @code{pdftex} and @code{dvipdfm}
-
-@cindex link options, @code{pdftex}
-@cindex link options, @code{dvipdfm}
-@cindex options, link, @code{pdftex}
-@cindex options, link, @code{dvipdfm}
-@cindex @code{pdftex}, link options
-@cindex @code{dvipdfm}, link options
-Link options are mostly the same for the @code{pdftex} and
-@code{dvipdfm} drivers. The @code{pdftex} driver has additional
-options to specify link dimensions.
-
-
-@subsubheading Common link options
-
-@table @code
-@item bcolor
-@findex bcolor @r{(hyperlink option)}
-@cindex hyperlink border color
-@cindex border color, hyperlink
-@cindex color, hyperlink border
-Border color. An array of three numbers in the range 0 to 1,
-representing a color in DeviceRGB@.
-
-Example: @code{\hlstart@{name@}@{bcolor=.1 .5 1@}@{dest123@}Link\hlend}
-
-@item bdash
-@findex bdash @r{(hyperlink option)}
-@cindex dashed hyperlink border
-@cindex hyperlinks, border style
-@cindex border style, hyperlink
-Array of numbers representing on and off stroke lengths for drawing
-dashes.
-
-Example: @code{\hlstart@{name@}@{bstyle=D,bdash=2 4@}@{dest123@}Link\hlend}
-
-@item bstyle
-@findex bstyle @r{(hyperlink option)}
-@cindex solid hyperlink border
-@cindex dashed hyperlink border
-@cindex beveled hyperlink border
-@cindex inset hyperlink border
-@cindex underline hyperlink border
-@cindex hyperlinks, border style
-@cindex style, hyperlink border
-@cindex border style, hyperlink
-Link border style:
-
-@table @code
-@item S
-The border is drawn as a solid line.
-
-@item D
-The border is drawn with a dashed line (the dash pattern is specified
-by the
-@findex bdash @r{(hyperlink option)}
-@code{bdash} option).
-
-@item B
-The border is drawn in a beveled style.
-
-@item I
-The border is drawn in an inset style.
-
-@item U
-The border is drawn as a line on the bottom of the link rectangle.
-@end table
-
-The default is @samp{S}.
-
-Example: @code{\hlstart@{name@}@{bstyle=D,bdash=2 4@}@{dest123@}Link\hlend}
-
-@item bwidth
-@findex bwidth @r{(hyperlink option)}
-@cindex width, hyperlink border
-@cindex hyperlinks, border width
-@cindex border width, hyperlink
-Border width in
-@cindex PostScript point
-PostScript points (72@tie{}points per inch). The default is@tie{}1.
-
-Example: @code{\hlstart@{name@}@{bwidth=2@}@{dest123@}Link\hlend}
-
-@item cmd
-@findex cmd @r{(hyperlink option)}
-Name of the macro (without the leading @samp{\}) containing a
-pdf@TeX{} command or a dvipdfm @code{\special} for the @code{raw} link.
-
-For an example of usage, @pxref{Link types for pdftex and dvipdfm},
-description of the @code{raw} link.
-
-@item file
-@findex file @r{(hyperlink option)}
-File name for the @code{filename} and @code{filepage} link types.
-
-For an example of usage, @pxref{Link types for pdftex and dvipdfm},
-description of the @code{filename} and @code{filepage} links.
-
-@item hlight
-@findex hlight @r{(hyperlink option)}
-@cindex hyperlinks, highlight mode
-@cindex highlight modes, hyperlink
-Link border highlight modes:
-
-@table @code
-@item I
-The rectangle specified by the bounding box of the link is inverted.
-
-@item N
-No highlighting is done.
-
-@item O
-The border of the link is inverted.
-
-@item P
-The region underneath the bounding box of the link is drawn inset into
-the page.
-@end table
-
-The default is @samp{I}.
-
-Example: @code{\hlstart@{name@}@{bstyle=S,hlight=O@}@{dest123@}Link\hlend}
-
-@item newwin
-@findex newwin @r{(hyperlink option)}
-@cindex hyperlinks, opening in a new window
-@cindex new window, opening hyperlink in
-For the @code{filename} and @code{filepage} links, specifies whether the destination document is
-opened in the same window or in a new window. The settings are:
-
-@table @code
-@item 0
-Open in the same window.
-@item @r{non-}0
-Open in a new window.
-@item @r{empty}
-Behavior according to the viewer settings.
-@end table
-
-The default is empty.
-
-For an example of usage, @pxref{Link types for pdftex and dvipdfm},
-description of the @code{filename} and @code{filepage} links.
-
-@item pagefit
-@findex pagefit @r{(hyperlink option)}
-For the @code{page} and @code{filepage links}, specifies how the page
-must be fitted to the window. @code{pagefit} specification is written
-to the PDF file as is, so it must conform to the PDF standard.
-
-For an example of usage, @pxref{Link types for pdftex and dvipdfm},
-description of the @code{page} and @code{filepage} links.
-@end table
-
-
-@subsubheading @code{pdftex}-specific link options
-
-The dimension options below must be specified as a @TeX{} rule
-specification. When set to empty, the corresponding value
-of the parent box is used (this is the default for all dimension
-options).
-
-@table @code
-@item depth
-@findex depth @r{(hyperlink option)}
-@cindex hyperlink dimensions
-@cindex dimensions, hyperlink
-Depth of the link.
-
-@item height
-@findex height @r{(hyperlink option)}
-@cindex hyperlink dimensions
-@cindex dimensions, hyperlink
-Height of the link.
-
-@item width
-@findex width @r{(hyperlink option)}
-@cindex hyperlink dimensions
-@cindex dimensions, hyperlink
-Width of the link.
-
-Example:
-
-@example
-\hlstart@{name@}@{width=5in,height=20pc,depth=0pt@}@{dest123@}
- Link\hlend
-@end example
-@end table
-
-
-@node Hyperlink driver nolinks
-@subsection Hyperlink driver @code{nolinks}
-
-@cindex @code{nolinks}, hyperlink driver
-@cindex driver @code{nolinks}
-@cindex hyperlink driver @code{nolinks}
-@cindex omitting hyperlinks
-@cindex disabling hyperlinks
-@cindex hyperlinks, disabling
-@cindex destinations, disabling
-@cindex spacing, preserving with hyperlinks
-@cindex hyperlinks, preserving spacing
-@cindex page-breaking, preserving with hyperlinks
-@cindex hyperlinks, preserving page-breaking
-Select this driver to suppress all hyperlinks in your document.
-
-Selecting this driver is quite different from not selecting any driver
-at all, or from selecting some driver and then turning hyperlinks off
-for the entire document with
-@findex hloff
-@code{\hloff} and
-@findex hldestoff
-@code{\hldestoff} (@pxref{Turning hyperlinks on/off}).
-
-The purpose of @code{\hldestoff} and @code{\hloff} is to mark (parts) of
-your document where hyperlinks should never appear. (Imagine you want
-to prevent a cross-referencing macro from generating a link at a certain
-spot in your document.)
-
-If instead you have prepared a document with hyperlinks and just want to
-compile a version without them, it is better to select the driver
-@code{nolinks}. This ensures that spacing and page-breaking are the
-same as what you were getting with hyperlinks enabled.
-
-The reason for this is that hyperlinks are produced by the
-@code{\special} primitives or low-level hyperlink commands. Each such
-command is placed inside a
-@cindex whatsits, made by hyperlinks
-@dfn{whatsit} (an internal @TeX{} object), which may introduce
-legitimate breakpoints at places where none would exist without the
-whatsits. The macros @code{\hldestoff} and @code{\hloff} disable the
-hyperlink macros completely, so that no whatsits are produced.
-
-In contrast, the @code{nolinks} driver does not completely disable
-hyperlink macros. Instead, it defines them to merely write to the log
-file (what gets written is unimportant). This also produces
-whatsits, thus imitating the whatsits from the hyperlink commands.
-(This trick was borrowed from the
-@pindex color.sty
-@cindex graphics collection, @LaTeX{}
-@cindex @LaTeX{} graphics collection
-@LaTeX{} `color' package.)
-
-Another reason for using @code{nolinks} is that in horizontal mode
-@code{\hldest} places destinations inside boxes of zero width, height,
-and depth. When you say @code{\hldestoff}, @code{\hldest} will omit
-both destination definitions and these boxes. The missing boxes can
-again cause the typesetting to be inconsistent with that with
-destinations enabled. Here again, the @code{nolinks} driver helps by
-defining @code{\hldest} to produce the empty boxes.
-
-
-@node Setting hyperlink types and options
-@section Setting hyperlink types and options
-
-@cindex default hyperlink type
-@cindex default hyperlink options
-@cindex hyperlinks, default type
-@cindex hyperlinks, default options
-@cindex destinations, default type
-@cindex destinations, default options
-You can define default types for links and destinations, which will be
-used when you do not specify a type in
-@findex hlstart
-@code{\hlstart} or
-@findex hldest
-@code{\hldest}. Similarly, you can define default values for the
-options; the default value for an option is used when you do not set the
-option in the argument to @code{\hlstart} or @code{\hldest}.
-
-@cindex group, type hyperlink
-@cindex group, options hyperlink
-@cindex hyperlinks, group type
-@cindex hyperlinks, group options
-@cindex link, group type
-@cindex link, group options
-@cindex linkgroup, type
-@cindex linkgroup, options
-@cindex destinations, group type
-@cindex destinations, group options
-@cindex destgroup, type
-@cindex destgroup, options
-The parameters for implicit links and destinations can be customized by
-setting the ``group'' types and options. When not set, the defaults are
-used.
-
-All these settings are local to the current (@TeX{}) group, so if
-you want to set an option temporarily, you can do so inside a
-@code{\begingroup@dots{}\endgroup} block; when the group ends, the
-previous settings are restored.
-
-@menu
-* Setting default types and options::
-* Setting group types::
-* Setting group options::
-@end menu
-
-
-@node Setting default types and options
-@subsection Setting default types and options
-
-@findex hltype
-@findex hldesttype
-The default types for links and destinations can be set with the
-following commands:
-
-@example
-\hltype@{@var{type}@}
-\hldesttype@{@var{type}@}
-@end example
-
-@noindent where @var{type} is one of the
-link/destination types supported by the selected hyperlink driver
-(@pxref{Hyperlink drivers}).
-
-@findex hlopts
-@findex hldestopts
-Default values for the options can be set with the following commands:
-
-@example
-\hlopts@{@var{options}@}
-\hldestopts@{@var{options}@}
-@end example
-
-@noindent where @var{options} is a comma-separated list of option
-assignments in the format @samp{@var{option}=@var{value}}. Again, what options
-are allowed depends on the selected hyperlink driver.
-
-
-@node Setting group types
-@subsection Setting group types
-
-@findex hltype
-@findex hldesttype
-@cindex group, type hyperlink
-@cindex hyperlinks, group type
-@cindex link, group type
-@cindex linkgroup, type
-@cindex destinations, group type
-@cindex destgroup, type
-When called with an optional argument, as in
-
-@example
-\hltype[@var{groups}]@{@var{type}@}
-\hldesttype[@var{groups}]@{@var{type}@}
-@end example
-
-@noindent where @var{groups} is a comma-separated list of groups,
-@code{\hltype} and @code{\hldesttype} set the type for each group from
-@var{groups} to @var{type}. The default type is used for all groups
-with an empty type (this is the initial setting for all groups, except
-that the type for the `url' linkgroup is set to @samp{url} by the
-drivers which support this link type).
-
-@cindex group `' (empty)
-@cindex default hyperlink type
-@cindex default hyperlink options
-@cindex hyperlinks, default type
-@cindex hyperlinks, default options
-@cindex destinations, default type
-@cindex destinations, default options
-There are two special ``groups'' which can be used inside the
-@var{groups} list. An empty group sets the default type. This allows
-to set the default type and group types in one command, for example:
-
-@example
-\hltype[eq,]@{@var{type}@}
-@end example
-
-@noindent sets the link type for the `eq' linkgroup and the
-default link type to @var{type}.
-
-@cindex group `*'
-@cindex groups, specifying all
-@cindex all groups, specifying
-Another special group is a star (@samp{*}) group, which signifies all
-defined groups. For example, the command
-
-@example
-\hldesttype[*,]@{@var{type}@}
-@end example
-
-@noindent sets the destination type to @var{type} for each group,
-as well as the default destination type.
-
-
-@node Setting group options
-@subsection Setting group options
-
-@cindex group, options hyperlink
-@cindex hyperlinks, group options
-@cindex link, group options
-@cindex linkgroup, options
-@cindex destinations, group options
-@cindex destgroup, options
-Option values for each group are stored as a list of option
-assignments. This list does not have to contain every supported
-option. Values for options missing from this list are taken from the
-default option values.
-
-@findex hlopts
-@findex hldestopts
-To manipulate the list of option values for the groups, you use the
-@code{\hlopts} and @code{\hldestopts} commands with an optional
-argument:
-
-@example
-\hlopts[@var{groups}]@{@var{options}@}
-\hldestopts[@var{groups}]@{@var{options}@}
-\hlopts![@var{groups}]@{@var{options}@}
-\hldestopts![@var{groups}]@{@var{options}@}
-@end example
-
-@noindent where @var{groups} is a comma-separated list of groups and
-@var{options} is a comma-separated list of option assignments. The
-two special ``groups'', the empty group and the star (@samp{*})
-group, have the same meaning as for @code{\hltype} and
-@code{\hldesttype}.
-@cindex group, preserving option list
-@cindex hyperlink group, preserving option list
-@cindex option list, preserving for group
-When used without the exclamation mark, @code{\hlopts} and
-@code{\hldestopts} preserve the current list of options for the groups,
-and only update the options listed in @var{options}. If you add the
-exclamation mark, the current list of options for each group in
-@var{groups} is discarded and the new list is set to @var{options}.
-
-The ``overriding'' nature of the @samp{!} is appropriate when you give
-a complete specification of the options for a group, e.g., at the
-beginning of your document. On the other hand, when you want to
-adjust some option(s) and leave others intact, you should use the
-macros without the @samp{!}.
-
-@findex raise @r{(hyperlink option)}
-@cindex mathematics displays, hyperlinks
-@cindex displayed math and hyperlinks
-@cindex large operators and hyperlinks
-@cindex hyperlinks, large operators
-@cindex destinations, large operators
-@cindex raising hyperlink destinations
-For example, with displayed mathematical formulas, you often need to
-adjust the @samp{raise} option for the
-@cindex group `eq'
-@cindex linkgroup `eq'
-`eq' destgroup, because the formulas often contain large parentheses and
-brackets. But when doing so, you want to leave the other settings
-unchanged. To achieve this, call @code{\hldestopts} without the
-@samp{!}, for example:
-
-@example
-$$\hldestopts[eq]@{raise=2.5\normalbaselineskip@}
-@dots{}
-$$
-@end example
-
-@noindent The display commands (@samp{$$}) implicitly put the entire
-formula inside a (@TeX{}) group (@code{\begingroup@dots{}\endgroup}), so
-you do not need to isolate the setting of the @samp{raise} option---it
-will be restored after the closing @samp{$$}.
-
-@cindex option list, group
-@cindex group option list
-@cindex hyperlinks, group option list
-Initially, Eplain sets the option lists for almost all groups to empty,
-so that the groups fall back on the default values for all options. The
-one exception to this rule is the `eq' destgroup, whose initial option
-list contains one setting:
-
-@example
-raise=1.7\normalbaselineskip
-@end example
-
-@noindent This setting usually accommodates the large operators, which often
-appear in displayed math.
-
-
-@node Turning hyperlinks on/off
-@section Turning hyperlinks on/off
-
-@cindex omitting hyperlinks
-@cindex disabling hyperlinks
-@cindex hyperlinks, disabling
-@cindex destinations, disabling
-Links and/or destinations can be turned on or off globally by disabling
-the low-level commands, or for each group individually.
-
-All these settings are local to the current (@TeX{}) group, so if you
-want to enable or disable links/destinations temporarily, you can do so
-inside a @code{\begingroup@dots{}\endgroup} block; when the group ends, the
-previous settings are restored.
-
-@menu
-* Turning low-level commands on/off::
-* Turning hyperlinks on/off for a group::
-@end menu
-
-
-@node Turning low-level commands on/off
-@subsection Turning low-level commands on/off
-
-@findex hldeston
-@findex hldestoff
-@findex hlon
-@findex hloff
-The low-level commands @code{\hlstart}, @code{\hlend} and
-@code{\hldest} can be turned on/off with the following commands:
-
-@example
-\hldeston
-\hldestoff
-\hlon
-\hloff
-@end example
-
-@noindent @xref{Hyperlink driver nolinks}, for the implications of using
-these commands to disable hyperlinks for the entire document.
-
-
-@node Turning hyperlinks on/off for a group
-@subsection Turning hyperlinks on/off for a group
-
-@cindex group, disabling hyperlinks
-@cindex hyperlink group, disabling hyperlinks
-If you want to disable links/destinations produced by certain groups,
-you can give a list of the groups as an optional argument to these
-commands:
-
-@example
-\hldeston[@var{groups}]
-\hldestoff[@var{groups}]
-\hlon[@var{groups}]
-\hloff[@var{groups}]
-@end example
-
-@noindent where @var{groups} is the list of linkgroups/destgroups. This
-list can contain two special groups. The empty group switches the
-low-level commands (@pxref{Turning low-level commands on/off}), and the
-star (@samp{*}) group operates on all defined groups.
-
-Note that turning off the low-level commands disables all hyperlinks
-globally, including groups which have them enabled. Turning off certain
-linkgroups/destgroups records the fact that the macros in the group
-should not produce links/destinations. To illustrate the distinction,
-assume that all links are on; after the following sequence of commands:
-
-@example
-\hloff
-\hloff[eq]
-\hlon
-@end example
-
-@noindent all links are on except for the `eq' linkgroup.
diff --git a/Master/texmf-dist/doc/eplain/base/index.texi b/Master/texmf-dist/doc/eplain/base/index.texi
deleted file mode 100644
index 7543633094d..00000000000
--- a/Master/texmf-dist/doc/eplain/base/index.texi
+++ /dev/null
@@ -1,7 +0,0 @@
-@c Public domain.
-
-@c makeinfo complains about bad links if we make them implicit. Strange.
-@node Concept index, , Macro index, Top
-@unnumbered Concept index
-
-@printindex cp
diff --git a/Master/texmf-dist/doc/eplain/base/install.texi b/Master/texmf-dist/doc/eplain/base/install.texi
deleted file mode 100644
index 10cc42057ef..00000000000
--- a/Master/texmf-dist/doc/eplain/base/install.texi
+++ /dev/null
@@ -1,65 +0,0 @@
-@c This is part of the Eplain manual. Public domain.
-
-@node Installation
-@chapter Installation
-
-@cindex Eplain, installing
-@ @cindex installation
-The simplest way to install Eplain is simply to install the file
-@file{eplain.tex} in a directory where @TeX{} will find it. What that
-directory is obviously depends on your operating system and @TeX{}
-installation. I personally install @file{eplain.tex} in
-a directory @file{/usr/local/lib/texmf/tex/plain}.
-
-If you want, you can also create a format (@file{.fmt})
-@pindex .fmt @r{file}
-@cindex format file
-file for Eplain, which will eliminate the time spent reading the macro
-source file with @code{\input}. You do this by issuing a sequence of
-Unix commands something like this:
-
-@example
-prompt$ touch eplain.aux
-prompt$ initex
-This is TeX, ...
-**&plain eplain
-(eplain.tex)
-*\dump
-... @var{messages} ...
-@end example
-
-@pindex eplain.aux
-@cindex undefined labels, warnings about
-@noindent You must make sure that @file{eplain.aux} exists @emph{before} you
-run @file{initex}; otherwise, warning messages about undefined labels
-will never be issued.
-
-You then have to install the resulting @file{eplain.fmt} in some system
-directory or set an environment variable to tell @TeX{} how to find it.
-I install the format files in @file{/usr/local/lib/texmf/ini}; the
-environment variable for the Web2C port of @TeX{} to Unix is
-@code{TEXFORMATS}.
-
-Some implementations of @TeX{} (including Web2C) use the name by which
-@TeX{} is invoked to determine what format to read. For them, you
-should make a link to the @file{virtex} program named @file{etex}, and
-then install the format file with the name @file{etex.fmt}. This lets
-users invoke @TeX{} as @file{etex} and get the format file read
-automatically, without having to say @samp{&eplain}.
-
-For convenience, the file @file{etex.tex} in the distribution directory
-does @code{\input eplain} and then @code{\dump}, so that if you replace
-@samp{eplain} with @samp{etex} in the example above, the format file
-will end up with the right name.
-
-The @code{install} target in the @file{Makefile} does all this properly
-for Unix systems and Web2C. You may have to change the pathnames.
-
-@cindex emtex, installation under
-Under emtex, @samp{eaj@@acpub.duke.edu} says that
-
-@example
-tex386 -i ^&plain eplain \dump
-@end example
-
-@noindent produces a format file.
diff --git a/Master/texmf-dist/doc/eplain/base/intro.texi b/Master/texmf-dist/doc/eplain/base/intro.texi
deleted file mode 100644
index 00ccc5ad313..00000000000
--- a/Master/texmf-dist/doc/eplain/base/intro.texi
+++ /dev/null
@@ -1,71 +0,0 @@
-@c This is part of the Eplain manual. Public domain.
-
-@node Introduction
-@chapter Introduction
-
-@cindex Eplain, purpose of
-
-@pindex xeplain.tex
-The @dfn{Eplain} macro package expands on and extends the definitions in
-plain @TeX{}. This manual describes the definitions that you, as either
-an author or a macro writer, might like to use. It doesn't discuss the
-implementation; see comments in the source code (@file{xeplain.tex}) for
-that.
-
-Eplain is not intended to provide ``generic'' typesetting capabilities, as
-do @LaTeX{} (written by Leslie Lamport)
-@cindex @LaTeX{}
-@cindex Lamport, Leslie
-or Texinfo
-@cindex Texinfo
-(written by Richard Stallman and others).
-@cindex Stallman, Richard
-@cindex rms
-Instead, it provides definitions that are intended to be useful
-regardless of the high-level commands that you use when you actually
-prepare your manuscript.
-
-For example, Eplain does not have a command @code{\section}, which
-would format section headings in an ``appropriate'' way, such as
-@LaTeX{}'s @code{\section}. The philosophy of Eplain is
-that some people will always need or want to go beyond the macro
-designer's idea of ``appropriate''. Such canned macros are
-fine---as long as you are willing to accept the resulting output. If
-you don't like the results, or if you are trying to match a different
-format, you are out of luck.
-
-On the other hand, almost everyone would like capabilities such as
-cross-referencing by labels, so that you don't have to put actual page
-numbers in the manuscript. The author of Eplain
-@cindex Berry, Karl
-is not aware of any generally available macro packages that (1)@tie{}do
-not force their typographic style on an author, and yet (2)@tie{}provide
-such capabilities.
-
-Besides such generic macros as cross-referencing, Eplain
-contains another set of definitions: ones that change the conventions of
-plain @TeX{}'s output. For example, math displays in @TeX{} are, by
-default, centered. If you want your displays to come out
-left-justified, you have to plow through @cite{The @TeX{}book} to find
-some way to do it, and then adapt the code to your own needs. Eplain
-tries to take care of the messy details of such things, while still
-leaving the detailed appearance of the output up to you.
-
-Finally, numerous definitions turned out to be useful as Eplain was
-developed. They are also documented in this manual, on the chance that
-people writing other macros will be able to use them.
-
-You can send bug reports or suggestions to
-@email{tex-eplain@@tug.org}. The current version number of Eplain is
-defined as the macro @code{\fmtversion}
-@cindex version number
-@findex fmtversion
-at the end of the source file @file{eplain.tex}. When corresponding,
-please refer to it.
-
-To get on this mailing list yourself, email
-@email{tex-eplain-request@@tug.org} with a message whose body contains
-a line
-@example
-subscribe @var{you@@your.preferred.address}
-@end example
diff --git a/Master/texmf-dist/doc/eplain/base/invoke.texi b/Master/texmf-dist/doc/eplain/base/invoke.texi
deleted file mode 100644
index b412c64a57b..00000000000
--- a/Master/texmf-dist/doc/eplain/base/invoke.texi
+++ /dev/null
@@ -1,144 +0,0 @@
-@c This is part of the Eplain manual. Public domain.
-
-@node Invoking Eplain
-@chapter Invoking Eplain
-
-@cindex Eplain, invoking
-The simplest way to use Eplain is simply to put:
-
-@example
-\input eplain
-@end example
-
-@noindent at the beginning of your input file. The macro file is small
-enough that reading it does not take an unbearably long time---at least on
-contemporary machines.
-
-In addition, if a format (@file{.fmt})
-@pindex .fmt @r{file}
-file has been created for Eplain (see the previous section), you can
-eliminate the time spent reading the macro source file. You do this
-by responding @code{&eplain} to @TeX{}'s @samp{**} prompt. For
-example:
-
-@example
-initex
-This is TeX, ...
-**&eplain myfile
-@end example
-
-Depending on the implementation of @TeX{} which you are using, you might
-also be able to invoke @TeX{} as @file{eplain} and have the format file
-automatically read.
-
-If you write something which you will be distributing to others, you
-won't know if the Eplain format will be loaded already. If it is, then
-doing @code{\input eplain} will waste time; if it isn't, then you must
-load it. To solve this, Eplain defines the control sequence
-@code{\eplain}
-@findex eplain
-to be the letter @code{t} (a convention borrowed from Lisp; it doesn't
-actually matter what the definition is, only that the definition
-exists). Therefore, you can do the following:
-@example
-\ifx\eplain\undefined \input eplain \fi
-@end example
-@noindent where @code{\undefined} must never acquire a definition.
-
-Eplain consists of several source files:
-@table @file
-@item xeplain.tex
-most of the macros;
-
-@item arrow.tex
-commutative diagram macros (@pxref{Arrow theoretic diagrams}), written by
-Steven Smith;
-
-@item btxmac.tex
-bibliography-related macros (@pxref{Citations});
-
-@item ifpdf.sty
-sets the switch @code{\ifpdf}, which can be used to
-detect pdf@TeX{} in PDF mode (@pxref{Checking for PDF output}), written
-by Heiko Oberdiek;
-
-@item path.sty
-macro for allowing line breaks at punctuation characters within long
-pathnames, electronic mail addresses, etc., (@pxref{Paths}), written
-by Philip Taylor;
-
-@item texnames.sty
-abbreviations for various @TeX{}-related names (@pxref{Logos}), edited
-by Nelson Beebe.
-
-@end table
-
-@noindent The file @file{eplain.tex} is all of these files merged
-together, with comments removed.
-
-All of these files except @file{xeplain.tex} can be input individually,
-if all you want are the definitions in that file.
-
-Also, since the bibliography macros are fairly extensive, you might not
-want to load them, to conserve @TeX{}'s memory. Therefore, if the
-control sequence @code{\nobibtex}
-@findex nobibtex
-is defined, then the bibliography definitions are skipped. You must set
-@code{\nobibtex} before @file{eplain.tex} is read, naturally. For
-example, you could start your input file like this:
-
-@example
-\let\nobibtex = t
-\input eplain
-@end example
-
-By default, @code{\nobibtex} is undefined, and so the bibliography
-definitions @emph{are} made.
-
-@findex noarrow
-Likewise, define @code{\noarrow} if you don't want to include the
-commutative diagram macros from @file{arrow.tex}, perhaps because you
-already have conflicting ones.
-
-If you don't want to read or write an @file{aux} file at all, for any
-kind of cross-referencing, define @code{\noauxfile}
-@findex noauxfile
-before reading @file{eplain.tex}. This also turns off all warnings
-about undefined labels.
-
-@pindex amsppt.sty
-@cindex AMS@TeX{} conflicts
-Eplain conflicts with AMS@TeX{} (to be precise, with @file{amsppt.sty}):
-the macros @code{\cite} and @code{\ref} are defined by both.
-
-If you want to use AMS@TeX{}'s @code{\cite}, the solution is to define
-@code{\nobibtex} before reading Eplain, as described above.
-
-If you have @file{amsppt.sty} loaded and use @code{\ref}, Eplain writes
-a warning on your terminal. If you want to use the AMS@TeX{}
-@code{\ref}, do @code{\let\ref = \amsref} after reading Eplain.
-To avoid the warning, do @code{\let\ref = \eplainref} after reading
-Eplain and before using @code{\ref}.
-
-@pindex texi2dvi
-@pindex bibtex
-@pindex makeindex
-Sometimes you may need to run @TeX{} more then once on your
-@file{.tex} file in order to produce and typeset indexes, resolve
-undefined cross-references and/or citations. The shell script
-@command{texi2dvi} from the Texinfo documentation system (see
-@url{http://www.gnu.org/software/texinfo/}) can automate this process:
-it runs Bib@TeX{}, MakeIndex and @TeX{} as many times as needed to
-complete the compilation process. You will need to set the
-@env{LATEX} environment variable to @samp{tex}. For example, in a
-Bourne-compatible shell, the following command will do all the work:
-
-@example
-prompt$ LATEX=tex texi2dvi file.tex
-@end example
-
-@pindex pdftex
-@noindent (Despite the name, @command{texi2dvi} can also produce
-@file{.pdf} files; just set @samp{LATEX=pdftex}.) See the output from
-the command @command{texi2dvi --help} for invoking information and a
-full list of options.
diff --git a/Master/texmf-dist/doc/eplain/base/progdef.texi b/Master/texmf-dist/doc/eplain/base/progdef.texi
deleted file mode 100644
index 4169f151730..00000000000
--- a/Master/texmf-dist/doc/eplain/base/progdef.texi
+++ /dev/null
@@ -1,768 +0,0 @@
-@c This is part of the Eplain manual. Public domain.
-
-@node Programming definitions
-@chapter Programming definitions
-
-The definitions in this section are only likely to be useful when you
-are writing nontrivial macros, not when writing a document.
-
-@menu
-* Category codes:: Changing category codes.
-* Allocation macros:: Non-outer versions of \newcount et al.
-* Iteration:: Doing `for' loops in TeX.
-* Macro arguments:: Reading and ignoring them.
-* Converting to characters:: Normalizing control sequences and spaces.
-* Expansion:: Controlling expansion.
-* Obeying spaces:: Making whitespace count anywhere.
-* Writing out numbers:: Making `1' into `one'.
-* Mode-specific penalties::
-* Auxiliary files:: Testing for their existence.
-* User-defined environments:: User-defined environments.
-* Page list and page range parsers::
-@end menu
-
-
-@node Category codes
-@section Category codes
-
-@cindex category codes
-
-Plain @TeX{} defines @code{\active} (as the number 13) for use in
-changing category codes. Although the author of @cite{The @TeX{}book}
-@cindex Knuth, Donald Ervin
-has ``intentionally kept the category codes numeric'', two other
-categories are commonly used: letters (category code 11) and others
-(12). Therefore, Eplain defines @code{\letter} and
-@code{\other}.
-@findex letter
-@findex other
-
-Sometimes it is cleaner to make a character active without actually
-@cindex active characters
-writing a @code{\catcode} command. The @code{\makeactive} command takes
-@findex catcode
-@findex makeactive
-a character as an argument to make active (and ignores following
-spaces). For example, here are two commands which both make @kbd{\}
-active:
-@cindex backslash character
-
-@example
-\makeactive`\\ \makeactive92
-@end example
-
-@cindex user-inaccessible macros
-@cindex inaccessible macros
-Sometimes you might want to temporarily change the category code of
-the `@@' character to @code{\letter}, so that you can use or define
-macros which are normally inaccessible to the user. For such
-situations, Eplain provides the @code{\makeatletter}
-@findex makeatletter
-command. It sets the category code of `@@' to @code{\letter} (11) and
-defines
-@code{\resetatcatcode}
-@findex resetatcatcode
-to restore the category code to whatever it was before the call to
-@code{\makeatletter}. For example:
-
-@example
-\makeatletter
-\def\@@hidden@@macro@{This macro cannot normally be
- called / redefined by the user@}
-\resetatcatcode
-@end example
-
-@noindent There is also @code{\makeatother}
-@findex makeatother
-which works similarly but sets the category code of `@@' to
-@code{\other} (12).
-
-Usually, when you give a definition to an active character, you have
-to do so inside a group where you temporarily make the character active,
-and then give it a global definition (cf.@: the definition of
-@code{\obeyspaces} in @cite{The @TeX{}book}).
-@cindex definitions, global
-This is inconvenient if you are writing a long macro, or if the
-character already has a global definition you do not wish to transcend.
-Eplain provides @code{\letreturn}, which defines the usual end-of-line
-@findex letreturn
-@cindex return character
-character to be the argument. For example:
-
-@example
-\def\mymacro@{@dots{} \letreturn\myreturn @dots{} @}
-\mymacro hello
-there
-@end example
-
-@noindent The end-of-line between @samp{hello} and @samp{there} causes
-@code{\myreturn} to be expanded.
-
-@cite{The @TeX{}book} describes @code{\uncatcodespecials},
-@findex uncatcodespecials
-which makes all characters which are normally ``special'' into ``other''
-characters, but the definition never made it into plain @TeX{}.
-Eplain therefore defines it.
-
-Finally, @code{\percentchar}
-@findex percentchar
-expands into a literal `%' character. This is useful when you
-@code{\write} @TeX{} output to a file, and want to avoid spurious
-spaces. For example, Eplain writes a @code{\percentchar} after the
-definition of cross-references. The macros @code{\lbracechar}
-@findex lbracechar
-and @code{\rbracechar}
-@findex rbracechar
-expand similarly.
-
-
-@node Allocation macros
-@section Allocation macros
-
-@cindex allocation macros
-@cindex register allocation
-
-Plain @TeX{} provides macros that allocate registers of each primitive
-type in @TeX{}, to prevent different sets of macros from using the same
-register for two different things. The macros are all named starting
-with @samp{new},
-@findex new@dots{}
-e.g., @code{\newcount} allocates a new ``count''
-(integer) register. Such allocations are usually needed only at the top
-level of some macro definition file; therefore, plain @TeX{} makes the
-allocation registers @code{\outer},
-@findex outer
-to help find errors. (The error this helps to find is a missing right
-brace in some macro definition.)
-
-Sometimes, however, it is useful to allocate a register as part of
-some macro. An outer control sequence cannot be used as part of a macro
-definition (or in a few other contexts: the parameter text of a
-definition, an argument to a definition, the preamble of an alignment,
-or in conditional text that is being skipped). Therefore, Eplain
-defines ``inner'' versions of all the allocation macros, named with the
-prefix @samp{inner}:
-@code{\innernewbox},
-@findex innernewbox
-@code{\innernewcount},
-@findex innernewcount
-@code{\innernewdimen},
-@findex innernewdimen
-@code{\innernewfam},
-@findex innernewfam
-@code{\innernewhelp},
-@findex innernewhelp
-@code{\innernewif},
-@findex innernewif
-@code{\innernewinsert},
-@findex innernewinsert
-@code{\innernewlanguage},
-@findex innernewlanguage
-@code{\innernewread},@*
-@findex innernewread
-@code{\innernewskip},
-@findex innernewskip
-@code{\innernewtoks},
-@findex innernewtoks
-@code{\innernewwrite}.
-@findex innernewwrite
-
-You can also define non-outer versions of other macros in the same way
-that Eplain defines the above. The basic macro is called
-@code{\innerdef}:
-@findex innerdef
-
-@example
-\innerdef @var{\innername} @{@var{outername}@}
-@end example
-
-The first argument (@var{\innername}) to @code{\innerdef} is the
-control sequence that you want to define. Any previous definition of
-@var{\innername} is replaced. The second argument
-(@var{outername}) is the @emph{characters} in the name of the outer
-control sequence. (You can't use the actual control sequence name,
-since it's outer!)
-
-If the outer control sequence is named @var{\cs}, and you want to
-define @code{inner@var{cs}} as the inner one, you can use
-@code{\innerinnerdef},
-@findex innerinnerdef
-which is just an abbreviation for a call to @code{\innerdef}. For
-example, these two calls are equivalent:
-
-@example
-\innerdef\innerproclaim@{proclaim@}
-\innerinnerdef@{proclaim@}
-@end example
-
-
-@node Iteration
-@section Iteration
-
-@cindex iteration
-@cindex for loops
-
-You can iterate through a comma-separated list of items with
-@code{\for}.
-@findex for
-Here is an example:
-
-@example
-\for\name:=karl,kathy\do@{%
- \message@{\name@}%
-@}%
-@end example
-
-This writes @samp{karl} and @samp{kathy} to the terminal. Spaces
-before or after the commas in the list, or after the @code{:=}, are
-@emph{not} ignored.
-
-@code{\for} expands the iterated values fully (with @code{\edef}), so
-this is equivalent to the above:
-
-@example
-\def\namelist@{karl,kathy@}%
-\for\name:=\namelist\do @dots{}
-@end example
-
-
-@node Macro arguments
-@section Macro arguments
-
-@cindex arguments, ignoring
-@cindex ignoring arguments
-@cindex gobbling arguments
-It is occasionally useful to redefine a macro that takes arguments to
-do nothing. Eplain defines @code{\gobble},
-@findex gobble
-@code{\gobbletwo},
-@findex gobbletwo
-and @code{\gobblethree} to swallow one, two, and three arguments,
-respectively.
-
-For example, if you want to produce a ``short'' table of
-@cindex table of contents, short
-contents---one that includes only chapters, say---the easiest thing to
-do is read the entire @code{.toc} file (@pxref{Contents}), and just
-ignore the commands that produce section or subsection entries. To be
-specific:
-
-@example
-\let\tocchapterentry = \shorttocchapter
-\let\tocsectionentry = \gobbletwo
-\let\tocsubsectionentry = \gobbletwo
-\readtocfile
-@end example
-@noindent (Of course, this assumes you only have chapters, sections, and
-subsections in your document.)
-
-In addition, Eplain defines @code{\eattoken}
-@findex eattoken
-to swallow the single following token, using @code{\let}. Thus,
-@code{\gobble} followed by @samp{@{@dots{}@}} ignores the entire
-brace-enclosed text. @code{\eattoken} followed by the same ignores only
-the opening left brace.
-
-Eplain defines a macro @code{\identity}
-@findex identity
-which takes one argument and expands to that argument. This may be
-useful if you want to provide a function for the user to redefine, but
-don't need to do anything by default. (For example, the default
-definition of @code{\eqconstruct} (@pxref{Formatting equation
-references}) is @code{\identity}.)
-
-You may also want to read an optional argument. The established
-convention is that optional arguments are put in square brackets, so
-that is the syntax Eplain recognizes. Eplain ignores space tokens
-before an optional argument, via @code{\futurenonspacelet}.
-
-You test for an optional argument by using @code{\@@getoptionalarg}.
-@c this confuses texinfo.tex: findex @@getoptionalarg
-It takes one argument, a control sequence to expand after reading the
-argument, if present. If an optional argument is present, the control
-sequence @code{\@@optionalarg} expands to it; otherwise,
-@code{\@@optionalarg} is @code{\empty}. You must therefore have the
-category code of @kbd{@@} set to 11 (letter). Here is an example:
-
-@example
-\catcode`@@=\letter
-\def\cmd@{\@@getoptionalarg\finishcmd@}
-\def\finishcmd@{%
- \ifx\@@optionalarg\empty
- % @r{No optional argument present.}
- \else
- % @r{One was present.}
- \fi
-@}
-@end example
-
-If an optional argument contains another optional argument, the inner
-one will need to be enclosed in braces, so @TeX{} does not mistake the
-end of the first for the end of the second.
-
-
-@node Converting to characters
-@section Converting to characters
-
-@cindex characters, converting to
-Eplain defines @code{\xrlabel}
-@findex xrlabel
-to produce control sequence names for cross-reference labels, et al.
-This macro expands to its argument with an @samp{_} appended. (It does
-this because the usual use of @code{\xrlabel} is to generate a control
-sequence name, and we naturally want to avoid conflicts between control
-sequence names.)
-
-Because @code{\xrlabel} is fully expandable, to make a control
-sequence name out of the result you need only do
-@example
-@code{\csname \xrlabel@{@var{label}@}\endcsname}
-@end example
-
-@noindent The @code{\csname} primitive makes a control sequence name out
-of any sequence of character tokens, regardless of category code.
-Labels can therefore include any characters except for @samp{\},
-@samp{@{}, @samp{@}}, and @samp{#}, all of which are used in macro
-definitions themselves.
-
-@findex sanitize
-@code{\sanitize} takes a control sequence as an argument and converts
-the expansion of the control sequence into a list of character tokens.
-This is the behavior you want when writing information like chapter
-titles to an output file. For example, here is part of the definition
-of @code{\writenumberedtocentry}; @code{#2} is the title that the user
-has given.
-
-@example
-@dots{}
-\def\temp@{#2@}%
-@dots{}
- \write\tocfile@{%
- @dots{}
- \sanitize\temp
- @dots{}
- @}%
-@end example
-
-
-@node Expansion
-@section Expansion
-
-This section describes some miscellanous macros for expansion, etc.
-
-@menu
-* \csn and \ece:: Abbreviations for \csname expansions.
-* \edefappend::
-* Hooks:: Manipulating and executing named actions.
-* Properties:: Associating information with a csname.
-* \expandonce::
-* \ifundefined::
-* \futurenonspacelet::
-@end menu
-
-
-@node \csn and \ece
-@subsection @code{\csn} and @code{\ece}
-
-@findex csn
-@code{\csn}@{@var{name}@} simply abbreviates @code{\csname} @var{name}
-@code{\endcsname}, thus saving some typing. The extra level of expansion
-does take some time, though, so I don't recommend it for an inner loop.
-
-@findex ece
-@code{\ece}@{@var{token}@}@{@var{name}@} abbreviates
-
-@example
-\expandafter @var{token} \csname @var{name} \endcsname
-@end example
-
-@noindent For example,
-
-@example
-\def\fontabbrevdef#1#2@{\ece\def@{@@#1font@}@{#2@}@}
-\fontabbrevdef@{normal@}@{ptmr@}
-@end example
-
-@noindent defines a control sequence @code{\@@normalfont} to expand to
-@code{ptmr}.
-
-
-@node \edefappend
-@subsection @code{\edefappend}
-
-@findex edefappend
-@code{\edefappend} is a way of adding on to an existing definition. It
-takes two arguments: the first is the control sequence name, the second
-the new tokens to append to the definition. The second argument is
-fully expanded (in the @code{\edef} that redefines the control sequence).
-
-For example:
-
-@example
-\def\foo@{abc@}
-\def\bar@{xyz@}
-\edefappend\foo@{\bar karl@}
-@end example
-
-@noindent results in @code{\foo} being defined as @samp{abcxyzkarl}.
-
-
-@node Hooks
-@subsection Hooks
-
-@cindex hooks
-A @dfn{hook} is simply a name for a group of actions which is executed
-in certain places---presumably when it is most useful to allow
-customization or modification. @TeX{} already provides many builtin
-hooks; for example, the @code{\every @dots{}} token lists are all
-examples of hooks.
-
-Eplain provides several macros for adding actions to hooks. They all
-take two arguments: the name of the hook and the new actions.
-
-@table @code
-
-@findex hookaction
-@itemx hookaction @var{name} @var{actions}
-@findex hookappend
-@itemx hookappend @var{name} @var{actions}
-@findex hookprepend
-@item hookprepend @var{name} @var{actions}
-Each of these adds @var{actions} to the hook @var{name}. (Any
-previously-defined actions are retained.) @var{name} is not a control
-sequence, but rather the characters of the name.
-
-@findex hookactiononce
-@item hookactiononce @var{name} @code{\@var{cs}}
-@code{\hookactiononce} adds @var{cs} to @var{name}, like the macros
-above, but first it adds
-
-@example
-\global\let @var{\cs} \relax
-@end example
-
-@noindent to the definition of @var{\cs}. (This implies @var{\cs} must
-be a true expandable macro, not a control sequence @code{\let} to a
-primitive or some other such thing.) Thus, @var{\cs} is expanded the
-next time the hook @var{name} is run, but it will disappear after that.
-
-The @code{\global} is useful because @code{\hookactiononce} is most
-useful when the grouping structure of the @TeX{} code could be anything.
-Neither this nor the other hook macros do global assignments to the hook
-variable itself, so @TeX{}'s usual grouping rules apply.
-@end table
-
-@findex hookrun
-The companion macro to defining hook actions is @code{\hookrun}, for
-running them. This takes a single argument, the name of the hook. If
-no actions for the hook are defined, no error ensues.
-
-Here is a skeleton of general @code{\begin} and @code{\end} macros that
-run hooks, and a couple of calls to define actions. The use of
-@code{\hookprepend} for the begin action and @code{\hookappend} for the
-end action ensures that the actions are executed in proper sequence with
-other actions (as long as the other actions use @code{\hookprepend} and
-@code{\hookappend} also).
-
-@example
-\def\begin#1@{ @dots{} \hookrun@{begin@} @dots{} @}
-\def\end#1@{ @dots{} \hookrun@{end@} @dots{} @}
-\hookprepend@{begin@}\start_underline
-\hookappend@{end@}\finish_underline
-@end example
-
-
-@node Properties
-@subsection Properties
-
-@cindex properties
-@cindex atom
-A @dfn{property} is a name/value pair associated with another symbol,
-traditionally called an @dfn{atom}. Both atom and property names are
-control sequence names.
-
-Eplain provides two macros for dealing with property lists:
-@code{\setproperty} and @code{\getproperty}.
-
-@table @code
-
-@findex setproperty
-@item \setproperty @var{atom} @var{propname} @var{value}
-@code{\setproperty} defines the property @var{property} on the atom
-@var{atom} to be @var{value}. @var{atom} and @var{propname} can be
-anything acceptable to @code{\csname}. @var{value} can be anything.
-
-@findex getproperty
-@item \getproperty @var{atom} @var{propname}
-@code{\getproperty} expands to the value stored for @var{propname} on
-@var{atom}. If @var{propname} is undefined, it expands to nothing
-(i.e., @code{\empty}).
-
-@end table
-
-The idea of properties originated in Lisp (I believe). There, the
-implementation truly does associate properties with atoms. In @TeX{},
-where we have no builtin support for properties, the association is only
-conceptual.
-
-The following example typesets @samp{xyz}.
-
-@example
-\setproperty@{a@}@{pr@}@{xyz@}
-\getproperty@{a@}@{pr@}
-@end example
-
-
-@node \expandonce
-@subsection @code{\expandonce}
-
-@cindex expansion, one-level
-@findex expandonce
-@code{\expandonce} is defined as @code{\expandafter\noexpand}. Thus,
-@code{\expandonce @var{token}} expands @var{token} once, instead of to
-@TeX{} primitives. This is most useful in an @code{\edef}.
-
-For example, the following defines @code{\temp} to be @code{\foo}, not
-@samp{abc}.
-
-@example
-\def\foo@{abc@}
-\def\bar@{\foo@}
-\edef\temp@{\expandonce\bar@}
-@end example
-
-
-@node \ifundefined
-@subsection @code{\ifundefined}
-
-@findex ifundefined
-@code{\ifundefined@{@var{cs}@} @var{t} \else @var{f} \fi} expands the
-@var{t} text if the control sequence @code{\@var{cs}} is undefined or
-has been @code{\let} to @code{\relax}, and the @var{f} text otherwise.
-
-@cindex skipping tokens
-@cindex undefined control sequence, checking for
-Since @code{\ifundefined} is not a primitive conditional, it cannot be
-used in places where @TeX{} might skip tokens ``at high speed'', e.g.,
-within another conditional---@TeX{} can't match up the @code{\if}'s and
-@code{\fi}'s.
-
-This macro was taken directly from @cite{The @TeX{}book}, page 308.
-
-
-@node \futurenonspacelet
-@subsection @code{\futurenonspacelet}
-
-@cindex lookahead without spaces
-@cindex spaces, ignoring
-@findex futurenonspacelet
-The @code{\futurelet} primitive allows you to look at the next token
-from the input. Sometimes, though, you want to look ahead ignoring any
-spaces. This is what @code{\futurenonspacelet} does. It is otherwise
-the same as @code{\futurelet}: you give it two control sequences as
-arguments, and it assigns the next nonspace token to the first, and then
-expands the second. For example:
-
-@example
-\futurenonspacelet\temp\finishup
-\def\finishup@{\ifx\temp @dots{}@}
-@end example
-
-
-@node Obeying spaces
-@section Obeying spaces
-
-@cindex whitespace
-@cindex spaces, obeying
-@cindex newlines, obeying
-@findex obeywhitespace
-
-@code{\obeywhitespace} makes both end-of-lines and space characters in
-the input be respected in the output. Unlike plain @TeX{}'s
-@code{\obeyspaces}, even spaces at the beginnings of lines turn into
-blank space.
-
-By default, the size of the space that is produced by a space
-character is the natural space of the current font, i.e.,
-what @code{\ } produces.
-
-Ordinarily, a blank line in the input produces as much blank vertical
-space as a line of text would occupy. You can adjust this by assigning
-to the parameter @code{\blanklineskipamount}:
-@findex blanklineskipamount @r{in obeyed text}
-if you set this negative, the space produced by a blank line will be
-smaller; if positive, larger.
-
-Tabs are not affected by this routine. In particular, if tabs occur
-at the beginning of a line, they will disappear. (If you are trying to
-make @TeX{} do the ``right thing'' with tabs, don't. Use a utility
-program like @i{expand} instead.)
-@cindex tabs
-
-
-@node Writing out numbers
-@section Writing out numbers
-
-@cindex numbers, written form of
- @code{\numbername}
-@findex numbername
-produces the written-out form of its argument, i.e., `zero' through
-`ten' for the numbers 0--10, and numerals for all others.
-
-
-@node Mode-specific penalties
-@section Mode-specific penalties
-
-@TeX{}'s built-in @code{\penalty} command simply appends to the
-current list, no matter what kind of list it is. You might intend a
-particular penalty to always be a ``vertical'' penalty, however, i.e.,
-appended to a vertical list. Therefore, Eplain provides
-@code{\vpenalty}
-@findex vpenalty
-and @code{\hpenalty}
-which first leave the other mode and then do @code{\penalty}.
-
-More precisely, @code{\vpenalty} inserts @code{\par} if the current
-mode is horizontal, and @code{\hpenalty} inserts @code{\leavevmode} if
-the current mode is vertical. (Thus, @code{\vpenalty} cannot be used in
-math mode.)
-
-
-@node Auxiliary files
-@section Auxiliary files
-
-@cindex axuiliary files, existence of
-It is common to write some information out to a file to be used on a
-subsequent run. But when it is time to read the file again, you only
-want to do so if the file actually exists. @code{\testfileexistence}
-@findex testfileexistence
-is given an argument which is appended to @code{\jobname},
-@findex jobname
-and sets the conditional @code{\iffileexists}
-@findex iffileexists
-@findex fileexists @r{(conditional)}
-appropriately. For example:
-
-@example
-\testfileexistence@{toc@}%
-\iffileexists
- \input \jobname.toc
-\fi
-@end example
-
-@code{\testfileexistence} takes an optional parameter; when
-given, it will override @code{\jobname} for the root part of the file
-name. For example, if you want to test for the file
-@file{answers.aux}, you can do this with the following:
-
-@example
-\testfileexistence[answers]@{aux@}%
-\iffileexists
- \input answers.aux
-\fi
-@end example
-
-
-@node User-defined environments
-@section User-defined environments
-
-@cindex environments, user-defined
-Plain @TeX{} does not provide ``named'' block structures, only the anonymous
-@code{\begingroup} and @code{\endgroup} pair. The disadvantage of this
-is that when there are several such groups and one is mismatched, it can
-be difficult to find the error. Eplain provides a named block structure
-so that if you forget an @code{\environment} or an
-@code{\endenvironment}, you will (probably) get an error message about
-it.
-
-For example:
-
-@example
-\def\itpar@{
- \environment@{@@italicpar@}
- \it\par
-@}
-\def\enditpar@{
- \par
- \endenvironment@{@@italicpar@}%
-@}
-@end example
-@noindent which could then be used to set italicized paragraphs:
-@example
-\itpar
-If I reprehend anything in this world, it is the use of my oracular
-tongue, and a nice derangement of epitaphs!
-\enditpar
-@end example
-
-The above sort of environment allows nesting. But environments
-shouldn't always be allowed to nest. Put the control sequence
-@code{\checkenv} at the beginning of a macro that is going to define an
-environment that should not be nested.
-
-
-@node Page list and page range parsers
-@section Page list and page range parsers
-
-@findex idxparselist
-@findex idxparserange
-@findex idxpagei
-@findex idxpageii
-The macros which Eplain uses to parse the page lists and ranges in the
-index, @code{\idxparselist} and @code{\idxparserange} (@pxref{Page
-destinations for index terms}), are sometimes useful when defining page
-number encapsulators. They take one argument, text to parse. When a
-page list (range) is not present, they set @code{\idxpagei} to be
-@code{\empty}; when a list (range) is detected, they set
-@code{\idxpagei} and @code{\idxpageii} to the first and the second page
-numbers, respectively.
-
-@findex setidxpagelistdelimiter
-@findex setidxpagerangedelimiter
-Eplain's defaults for the page list and page range delimiters are the
-same as those in MakeIndex, a comma followed by a space (@samp{, }) and
-two dashes (@samp{--}), respectively. If you customize MakeIndex to use
-different delimiters, you must not forget to let Eplain know about them
-with the commands
-
-@example
-\setidxpagelistdelimiter@{@var{list-delim}@}
-\setidxpagerangedelimiter@{@var{page-delim}@}
-@end example
-
-@noindent These commands save the @var{list-delim} and
-@var{page-delim} delimiters in
-@findex idxpagelistdelimiter
-@findex idxpagerangedelimiter
-@code{\idxpagelistdelimiter} and @code{\idxpagerangedelimiter},
-respectively.
-
-@cindex underlining page numbers in index
-@cindex index, underlining page numbers
-@findex ituline
-For example, you may want to define a page number markup command which
-italicizes and properly underlines page ranges by underlining only the
-page numbers and not the delimiter:
-
-@findex idxpagerangedelimiter
-@example
-\def\ituline#1@{%
- @{\it
- \idxparserange@{#1@}%
- \ifx\idxpagei\empty
- % The argument is a single page number.
- \underbar@{#1@}%
- \else
- % The argument is a page range.
- \underbar@{\idxpagei@}\idxpagerangedelimiter\underbar@{\idxpageii@}%
- \fi@}%
-@}
-@end example
-
-@noindent Note that the @code{\ituline} macro is not aware of page
-lists. This is not needed if you use hyperlinks in the index, because
-@code{\hlidx} and @code{\hlidxpage} will break up the page lists before
-calling the user's page encapsulator (@pxref{Page destinations for index
-terms}), so @code{\ituline} will never see the lists. If, however, you
-need to design a macro which also takes care of the lists, you can
-extend @code{\ituline} with an additional call to @code{\idxparselist}.
diff --git a/Master/texmf-dist/doc/eplain/base/userdef.texi b/Master/texmf-dist/doc/eplain/base/userdef.texi
deleted file mode 100644
index dfc5fcc4497..00000000000
--- a/Master/texmf-dist/doc/eplain/base/userdef.texi
+++ /dev/null
@@ -1,2538 +0,0 @@
-@c This is part of the Eplain manual. Public domain.
-
-@node User definitions
-@chapter User definitions
-
-This chapter describes definitions that are meant to be used directly
-in a document. When appropriate, ways to change the default
-formatting are described in subsections.
-
-@menu
-* Diagnostics:: Tracing information.
-* Rules:: Changing the default rule dimensions.
-* Citations:: Using BibTeX and Eplain to make bibliographies.
-* Displays:: Changing the formatting of math displays.
-* Time of day:: Producing the time of day.
-* Lists:: Producing numbered and unordered lists.
-* Verbatim listing:: Producing text just as it appears.
-* Contents:: Making a table of contents.
-* Cross-references:: Symbolic references to equations, figures, etc.
-* Page references:: Symbolic references to page numbers.
-* Equation references:: Symbolic references to equation numbers.
-* Indexing:: Creating and typesetting indexes.
-* Justification:: Ragged left, ragged right, centered.
-* Tables:: Producing ordered tables.
-* Margins:: Changing the margins directly.
-* Multiple columns:: Getting output in two columns.
-* Footnotes:: Autonumbered footnotes; changing formatting.
-* Fractions:: A better way to produce fractions in text.
-* Paths:: Allowing line breaks in pathnames.
-* Logos:: Various logos.
-* Boxes:: Producing filled or open rectangles.
-* Checking for PDF output:: Checking for pdfTeX in PDF mode.
-* Loading LaTeX packages:: Support for LaTeX packages under plain TeX.
-@end menu
-
-
-@node Diagnostics
-@section Diagnostics
-
-@cindex diagnostics
-@cindex tracing
-Plain @TeX{} provides the @code{\tracingall} command, to turn on the
-maximum amount of tracing possible in @TeX{}. The (usually voluminous)
-output from @code{\tracingall} goes both on the terminal and into the
-transcript file.
-@findex tracingall
-It is sometimes easier to have the output go only to the transcript
-file, so you can peruse it at your leisure and not obscure other output
-to the terminal. So, Eplain provides the command @code{\loggingall}.
-@findex loggingall
-(For some reason, this command is available in Metafont, but not in
-@TeX{}.)
-
-It is also sometimes useful to see the complete contents of boxes.
-@code{\tracingboxes} does this. (It doesn't affect whether or not the
-contents
-@findex tracingboxes
-are shown on the terminal.)
-
-You can turn off all tracing with @code{\tracingoff}.
-@findex tracingoff
-
-You can also turn logging on and off globally, so you don't have to
-worry about whether or not you're inside a group at the time of command.
-These variants are named @code{\gloggingall}
-@findex gloggingall
-and @code{\gtracingall}.
-@findex gtracingall
-
-Finally, if you write your own help messages (see @code{\newhelp}
-@cindex help messages
-@cindex error messages
-in @cite{The @TeX{}book}), you want a convenient way to break lines in
-them. This is what @TeX{}'s @code{\newlinechar} parameter is for;
-@cindex newlinechar
-however, plain @TeX{} doesn't set @code{\newlinechar}. Therefore,
-Eplain defines it to be the character @code{^^J}.
-
-For example, one of Eplain's own error messages is defined as follows:
-@example
-\newhelp\envhelp@{Perhaps you forgot to end the previous^^J%
- environment? I'm finishing off the current group,^^J%
- hoping that will fix it.@}%
-@end example
-
-
-@node Rules
-@section Rules
-
-The default dimensions of rules are defined in chapter@tie{}21 of the
-@cite{The @TeX{}book}. To sum up what is given there, the ``thickness''
-of rules is
-@cindex rule thickness
-0.4pt by default. Eplain defines three parameters that let you change
-this dimension: @code{\hruledefaultheight}, @code{\hruledefaultdepth},
-@findex hruledefaultheight
-@findex hruledefaultdepth
-and @code{\vruledefaultwidth}. By default, they are defined as
-@findex vruledefaultwidth
-@cite{The @TeX{}book} describes.
-
-But it would be wrong to redefine @code{\hrule} and @code{\vrule}. For
-one thing, some macros in plain @TeX{} depend on the default dimensions
-being used; for another, rules are used quite heavily, and the
-performance impact of making it a macro can be noticeable. Therefore,
-to take advantage of the default rule parameters, you must use
-@code{\ehrule}
-@findex ehrule
-and @code{\evrule}.
-@findex evrule
-
-
-@node Citations
-@section Citations
-
-@cindex citations
-@cindex bibliographies
-Bibliographies are part of almost every technical document. To handle
-them easily, you need two things: a program to do the tedious
-formatting, and a way to cite references by labels, rather than by
-numbers. The Bib@TeX{} program, written by Oren Patashnik, takes care
-@cindex Bib@TeX{}
-@cindex Patashnik, Oren
-of the first item; the citation commands in @LaTeX{}, written to be used
-@cindex @LaTeX{}
-with Bib@TeX{}, take care of the second. Therefore,
-Eplain adopts the use of Bib@TeX{}, and virtually the same interface as
-@LaTeX{}.
-
-The general idea is that you put citation commands in the text of your
-document, and commands saying where the bibliography data is. When you
-run @TeX{}, these commands produce output on the file with the same root
-name as your document (by default) and the extension @file{.aux}.
-@pindex .aux @r{file}
-@findex jobname
-Bib@TeX{} reads this file. You should put the bibliography data in a
-file or files with the extension @file{.bib}. Bib@TeX{} writes out a
-file with the same root
-@pindex .bib @r{file}
-name as your document and extension @file{.bbl}. Eplain reads this file
-@pindex .bbl @r{file}
-the next time you run your document through @TeX{}. (It takes
-multiple passes to get everything straight, because usually after seeing
-your bibliography typeset, you want to make changes in the @file{.bib}
-file, which means you have to run Bib@TeX{} again, which means you have
-to run @TeX{} again@dots{}) An annotated example of the whole process is
-given below.
-
-If your document has more than one bibliography---for example, if it
-is a collection of papers---you can tell Eplain to use a different root
-name for the @file{.bbl} file by defining the control sequence
-@code{\bblfilebasename}.
-@findex bblfilebasename
-The default definition is simply @code{\jobname}.
-
-See the document @cite{Bib@TeX{}ing} (whose text is in the file
-@file{btxdoc.tex}, which should be in the Eplain distribution you got)
-for information on how to write your @t{.bib} files. Both the
-Bib@TeX{} and the Eplain distributions contain several examples, also.
-
-The @code{\cite}
-@findex cite
-command produces a citation in the text of your document. The exact
-printed form the citation will take is under your control;
-@pxref{Formatting citations}. @code{\cite} takes one
-required argument, a comma-separated list of cross-reference labels
-(@pxref{Cross-references}, for exactly what characters are allowed in
-such labels). Warning: spaces in this list are taken as part of the
-following label name, which is probably not what you expect.
-@cindex citations, undefined
-The @code{\cite} command also produces a command
-in the @t{.aux} file that tells Bib@TeX{} to retrieve the given reference(s)
-from the @t{.bib} file. @code{\cite} also takes one optional argument,
-which you specify within square brackets, as in @LaTeX{}. This text is
-simply typeset after the citations. (See the example below.)
-
-Eplain can create hypertext links for citations pointing to the relevant
-bibliography entries; @pxref{Citation hyperlinks}.
-
-Another command, @code{\nocite},
-@findex nocite
-puts the given reference(s) into the bibliography, but produces nothing
-in the text.
-
-The @code{\bibliography}
-@findex bibliography
-command is next. It serves two purposes: producing the typeset
-bibliography, and telling Bib@TeX{} the root names of the @t{.bib}
-files. Therefore, the argument to @code{\bibliography} is a comma
-separated list of the @t{.bib} files (without the @samp{.bib}). Again,
-spaces in this list are significant.
-
-You tell Bib@TeX{} the particular style in which you want your
-bibliography typeset with one more command:
-@code{\bibliographystyle}.
-@findex bibliographystyle
-The argument to this is a single filename @var{style}, which tells
-Bib@TeX{} to look for a file @var{style}@t{.bst}.
-@pindex .bst @r{files}
-See the document @cite{Designing Bib@TeX{} styles} (whose text is in the
-@file{btxhak.tex}) for information on how to write your own styles.
-
-Eplain automatically reads the citations from the @t{.aux} file when
-your job starts.
-
-If you don't want to see the messages about undefined citations, you
-can say @code{\xrefwarningfalse} before making any citations.
-@findex xrefwarningfalse
-Eplain automatically does this if the @t{.aux} file does not exist.
-You can restore the default by saying @code{\xrefwarningtrue}.
-
-Here is a @TeX{} input file that illustrates the various commands.
-
-@example
-\input eplain % Reads the .aux file.
-Two citations to Knuthian works:
- \cite[note]@{surreal,concrete-math@}.
-\beginsection@{References.@}\par % Title for the bibliography.
-\bibliography@{knuth@} % Use knuth.bib for the labels.
-\bibliographystyle@{plain@} % Number the references.
-\end % End of the document.
-@end example
-@cindex Knuth, Donald Ervin
-@cindex Graham, Ronald L.
-@cindex numbered references
-@cindex references, numbered
-
-If we suppose that this file was named @file{citex.tex} and that the
-bibliography data is in @file{knuth.bib} (as the @code{\bibliography}
-command says), the following commands do what's required. (@samp{$ }
-represents the shell prompt.)
-
-@example
-$ tex citex (produces undefined citation messages)
-$ bibtex citex (read knuth.bib and citex.aux, write citex.bbl)
-$ tex citex (read citex.bbl, still have undefined citations)
-$ tex citex (one more time, to resolve the references)
-@end example
-
-@pindex texi2dvi
-@noindent (The @command{texi2dvi} program can help you automate this
-process, @pxref{Invoking Eplain}.)
-
-The output looks something like (because we used the @t{plain}
-bibliography style):
-
-@quotation
-Two citations to Knuthian works: [2,1 note].
-
-@b{References}
-@tex
-@frenchspacing
-@end tex
-
-[1] Ronald L. Graham, Donald E. Knuth, and Oren Patashnik. @i{Concrete
-Mathematics}. Addison-Wesley, Reading, Massachusetts, 1989.
-
-[2] Donald E. Knuth. @i{Surreal Numbers}. Addison-Wesley, Reading,
-Massachusetts, 1974.
-@end quotation
-
-See the Bib@TeX{} documentation for information on how to write the
-bibliography databases, and the bibliography styles that are available.
-(If you want your references printed with names, as in [Knu74], instead
-of numbered, the bibliography style is @code{alpha}.)
-@cindex alphanumeric references
-@cindex references, alphanumeric
-
-@menu
-* Formatting citations:: Changing the way citations are printed.
-* Formatting bibliographies:: Changing the way bibliographies are printed.
-@end menu
-
-
-@node Formatting citations
-@subsection Formatting citations
-
-@cindex citations, formatting
-
-You may wish to change Eplain's formatting of citations; i.e., the
-result of your @code{\cite} commands. By default, the citation labels
-are printed one after another, separated by commas and enclosed in
-brackets, using the main text font. Some formats require other styles,
-such as superscripted labels. You can accomodate such formats by
-redefining the following macros.
-
-@table @code
-@itemx \printcitestart
-@item \printcitefinish
-@findex printcitestart
-@findex printcitefinish
-Eplain expands these macros at the begining and end of the list of
-citations for each @code{\cite} command. By default, they produce a
-@samp{[} and @samp{]}, respectively.
-
-@item \printbetweencitations
-@findex printbetweencitations
-If a @code{\cite} command has multiple citations, as in
-@code{\cite@{acp,texbook@}}, Eplain expands this macro in between each
-pair of citations. By default, it produces a comma followed by a space.
-
-@item \printcitenote
-@findex printcitenote
-This macro takes one argument, which is the optional note to the
-@code{\cite} command. If the @code{\cite} command had no note, this
-macro isn't used. Otherwise, it should print the note. By default, the
-note is preceded with a comma and a space.
-@end table
-
-
-Here is an example, showing you could produce citations as
-superscripted labels, with the optional notes in parentheses.
-
-@example
-\def\printcitestart@{\unskip $^\bgroup@}
-\def\printbetweencitations@{,@}
-\def\printcitefinish@{\egroup$@}
-\def\printcitenote#1@{\hbox@{\sevenrm\space (#1)@}@}
-@end example
-
-
-@node Formatting bibliographies
-@subsection Formatting bibliographies
-
-@cindex bibliography, formatting the
-
-You may wish to change Eplain's formatting of the bibliography,
-especially with respect to the fonts that are used. Therefore, Eplain
-provides the following control sequences:
-
-@table @code
-
-@item \biblabelwidth
-@findex biblabelwidth
-This control sequence represents a @code{\dimen} register, and its value
-is the width of the widest label in the bibliography. Although it is
-unlikely you will ever want to redefine it, you might want
-to use it if you redefine @code{\biblabelprint}, below.
-
-@item \biblabelprint
-@findex biblabelprint
-This macro takes one argument, the label to print. By default, the
-label is put in a box of width @code{\biblabelwidth}, and is followed by
-an enspace. When you want to change the spacing around the labels, this
-is the right macro to redefine.
-
-@item \biblabelcontents
-@findex biblabelcontents
-This macro also takes one argument, the label to print. By default, the
-label is printed using the font @code{\bblrm} (below), and enclosed in
-brackets. When you want to change the appearance of the label, but not
-the spacing around it, this is the right macro to redefine.
-
-@item \bblrm
-@findex bblrm
-@cindex bibliography fonts
-The default font used for printing the bibliography.
-
-@item \bblem
-@findex bblem
-The font used for printing the titles and other ``emphasized'' material.
-
-@item \bblsc
-@findex bblsc
-In some styles, authors' names are printed in a caps-and-small-caps
-font. In those cases, this font is used.
-
-@item \bblnewblock
-@findex bblnewblock
-This is invoked between each of the parts of a bibliography entry. The
-default is to leave some extra space between the parts; you could
-redefine it to start each part on a new line (for example). A part is
-simply a main element of the entry; for example, the author is a part.
-(It was @LaTeX{} that introduced the (misleading, as far as I am
-concerned) term `block' for this.)
-
-@item \biblabelextraspace
-@findex biblabelextraspace
-Bibliography entries are typeset with a hanging indentation of
-@code{\biblabelwidth} plus this. The default is @code{.5em}, where the
-em width is taken from the @code{\bblrm} font. If you want to change
-this, you should do it inside @code{\bblhook}.
-
-@item \bblhook
-@findex bblhook
-@cindex bibliography items, extra space between
-This is expanded before reading the @t{.bbl} file. By
-default, it does nothing. You could, for example, define it to set the
-bibliography fonts, or produce the heading for the references. Two
-spacing parameters must be changed inside @code{\bblhook}:
-@code{\parskip}, which produces extra space between the items; and
-@code{\biblabelextraspace}, which is described above.
-(By the way, @code{\hookappend} won't work with @code{\bblhook}, despite
-the names. Just use @code{\def}.)
-
-@end table
-
-If you are really desperate, you can also hand-edit the @t{.bbl} file
-that Bib@TeX{} produces to do anything you wish.
-
-
-@node Displays
-@section Displays
-
-@cindex displays, left-justifying
-@cindex mathematics displays, formatting
-@cindex left-justification of displays
-
-By default, @TeX{} centers displayed material. (Displayed material is
-just whatever you put between @code{$$}'s---it's not necessarily
-mathematics.) Many layouts would be better served if the displayed
-material was left-justified. Therefore, Eplain provides the command
-@code{\leftdisplays},
-@findex leftdisplays
-which indents displayed material by @code{\parindent} plus
-@code{\leftskip}, plus @code{\leftdisplayindent}.
-@findex leftdisplayindent
-
-You can go back to centering displays with @code{\centereddisplays}.
-@findex centereddisplays
-(It is usually poor typography to have both centered and left-justified
-displays in a single publication, though.)
-
-@code{\leftdisplays} also changes the plain @TeX{} commands that deal
-with alignments inside math displays,
-@code{\displaylines},
-@findex displaylines
-@code{\eqalignno},
-@findex eqalignno
-and @code{\leqalignno},
-@findex leqalignno
-to produce left-justified text. You can still override this formatting
-by inserting @code{\hfill} glue, as explained in @cite{The @TeX{}book}.
-
-@menu
-* Formatting displays:: General formatting of displays.
-@end menu
-
-
-@node Formatting displays
-@subsection Formatting displays
-
-If you want some other kind of formatting, you can write a definition
-of your own, analogous to @code{\leftdisplays}. You need only make sure
-that @code{\leftdisplaysetup}
-@findex leftdisplaysetup
-is called at the beginning of every display (presumably by invoking it
-in @TeX{}'s @code{\everydisplay} parameter), and to define
-@code{\generaldisplay}.
-@findex generaldisplay
-
-@code{\leftdisplays} expands the old value of @code{\everydisplay}
-before calling @code{\leftdisplaysetup}, so that any changes you have made
-to it won't be lost. That old token list as available as the value of
-the token register @code{\previouseverydisplay}.
-@findex previouseverydisplay
-
-
-@node Time of day
-@section Time of day
-
-@cindex time of day
-@cindex date
-
-@TeX{} provides the day, month, and year as numeric quantities (unless
-your @TeX{} implementation is woefully deficient). Eplain provides some
-control sequences to make them a little more friendly to humans.
-
-@code{\monthname}
-@findex monthname
-produces the name of the current month, abbreviated to three letters.
-
-@code{\fullmonthname}
-@findex fullmonthname
-produces the name of the current month, unabbreviated (in English).
-
-@code{\timestring}
-@findex timestring
-produces the current time, as in `1:14 p.m.'
-
-@code{\timestamp}
-@findex timestamp
-produces the current date and time, as in `23 Apr 64 1:14 p.m.'.
-(Except the spacing is slightly different.)
-
-@code{\today}
-@findex today
-produces the current date, as in `23 April 1964'.
-
-
-@node Lists
-@section Lists
-
-@cindex lists
-@cindex numbered lists
-@cindex ordered list
-@cindex unordered lists
-
-Many documents require lists of items, either numbered or simply
-enumerated. Plain @TeX{} defines one macro to help with creating lists,
-@code{\item}, but that is insufficient in many cases. Therefore,
-Eplain provides two pairs of commands:
-
-@table @code
-
-@itemx \numberedlist @dots{} \endnumberedlist
-@item \orderedlist @dots{} \endorderedlist
-@findex numberedlist
-@findex endnumberedlist
-@findex orderedlist
-@findex endorderedlist
-These commands (they are synonyms) produce a list with the items
-numbered sequentially, starting from one. A nested @code{\numberedlist}
-labels the items with lowercase letters, starting with `a'. Another
-nested @code{\numberedlist} labels the items with roman numerals. Yet
-more deeply nested numbered lists label items with @samp{*}.
-
-@item \unorderedlist @dots{} \endunorderedlist
-@findex unorderedlist
-@findex endunorderedlist
-This produces a list with the items labelled with small black boxes
-(``square bullets''). A nested @code{\unorderedlist} labels items with
-em-dashes. Doubly (and deeper) nested unordered lists label items with
-`*'s.
-
-@end table
-
-The two kinds of lists can be nested within each other, as well.
-
-In both kinds of lists, you begin an item with @code{\li}.
-@findex li
-An item may continue for several paragraphs. Each item starts a
-paragraph.
-
-You can give @code{\li} an optional argument, a cross-reference label.
-It's defined to be the ``marker'' for the current item. This is useful
-if the list items are numbered. You can produce the value of the label
-with @code{\xrefn}. @xref{Cross-references}.
-
-Eplain can create hypertext links for the markers produced by
-@code{\xrefn} pointing to the relevant list item; @pxref{List
-hyperlinks}.
-
-You can also say @code{\listcompact}
-@findex listcompact
-right after @code{\numberedlist} or @code{\unorderedlist}. The items in
-the list will then not have any extra space between them
-(@pxref{Formatting lists}). You might want to do this if the items in
-this particular list are short.
-
-Here is an example:
-@example
-\numberedlist\listcompact
-\li The first item.
-\li The second item.
-
-The second paragraph of the second item.
-\endnumberedlist
-@end example
-
-@menu
-* Formatting lists:: Changing how the lists look.
-@end menu
-
-
-@node Formatting lists
-@subsection Formatting lists
-
-@cindex lists, formatting
-
-Several registers define the spacing associated with lists. It is
-likely that their default values won't suit your particular layout.
-
-@table @code
-@item \abovelistskipamount, \belowlistskipamount
-@findex abovelistskipamount
-@findex belowlistskipamount
-The vertical glue inserted before and after every list, respectively.
-
-@item \interitemskipamount
-@findex interitemskipamount
-The vertical glue inserted before each item except the first.
-@code{\listcompact} resets this to zero, as mentioned above.
-
-@item \listleftindent, \listrightindent
-@findex listleftindent
-@findex listrightindent
-@code{\listrightindent} is the amount of space by which the list is
-indented on the right; i.e., it is added to @code{\rightskip}.
-@code{\listleftindent} is the amount of space, @emph{relative to}
-@code{\parindent}, by which the list is indented on the left. Why treat
-the two parameters differently? Because (a)@tie{}it is more useful to
-make the list indentation depend on the paragraph indentation;
-(b)@tie{}footnotes aren't formatted right if @code{\parindent} is reset
-to zero.
-
-@end table
-
-The three vertical glues are inserted by macros, and preceded by
-penalties: @code{\abovelistskip}
-@findex abovelistskip
-does @code{\vpenalty\abovelistpenalty}
-@findex abovelistpenalty
-and then @code{\vskip\abovelistskip}. @code{\belowlistskip}
-@findex belowlistskip
-and @code{\interitemskip}
-@findex interitemskip
-are analogous.
-
-In addition, the macro @code{\listmarkerspace}
-@findex listmarkerspace
-is called to separate the item label from the item text. This is set to
-@code{\enspace} by default.
-
-If you want to change the labels on the items, you can redefine these
-macros:
-@code{\numberedmarker}
-@findex numberedmarker
-or @code{\unorderedmarker}.
-@findex unorderedmarker
-The following registers might be useful if you do:
-
-@table @code
-@item \numberedlistdepth, \unorderedlistdepth
-@findex numberedlistdepth
-@findex unorderedlistdepth
-These keep track of the depth of nesting of the two kinds of lists.
-
-@item \itemnumber, \itemletter
-@findex itemnumber
-@findex itemletter
-These keep track of the number of items that have been seen in the current
-numbered list. They are both integer registers. The difference is that
-@code{\itemnumber} starts at one, and @code{\itemletter} starts at 97,
-i.e., lowercase `a'.
-
-@end table
-
-You can also redefine the control sequences that are used internally,
-if you want to do something radically different: @code{\beginlist}
-@findex beginlist
-is invoked to begin both kinds of lists; @code{\printitem}
-@findex printitem
-is invoked to print the label (and space following the label) for each
-item; and @code{\endlist}
-@findex endlist
-is invoked to end both kinds of
-lists.
-@cindex item labels, changing
-@cindex labels on items, changing
-
-
-@node Verbatim listing
-@section Verbatim listing
-
-@cindex verbatim listing
-@cindex listing files
-@cindex files, verbatim listing of
-It is sometimes useful to include a file verbatim in your document;
-for example, part of a computer program. The @code{\listing}
-@findex listing
-command is given one argument, a filename, and produces the contents of
-that file in your document. @code{\listing} expands @code{\listingfont}
-to set the current font. The default value of @code{\listingfont}
-@findex listingfont
-is @code{\tt}.
-
-You can take arbitrary actions before reading the file by defining the macro
-@code{\setuplistinghook}.
-@findex setuplistinghook
-This is expanded just before the file is input.
-
-If you want to have line numbers on the output, you can say
-@code{\let\setuplistinghook = \linenumberedlisting}.
-@findex linenumberedlisting
-The line numbers are stored in the count register @code{\lineno} while
-the file is being read. You can redefine the macro
-@code{\printlistinglineno} to change how they are printed.
-
-You can produce in-line verbatim text in your document with @code{\verbatim}.
-@findex verbatim
-End the text with @code{|endverbatim}. If you need a @samp{|} in the text,
-double it. If the first character of the verbatim text is a space, use
-@code{| }. (@code{| } will work elsewhere in the argument, too, but
-isn't necessary.)
-
-For example:
-
-@example
-\verbatim| ||\#%&!|endverbatim
-@end example
-
-@noindent produces @code{ |\#%&!}.
-
-Line breaks and spaces in the verbatim text are preserved.
-
-@findex verbatimescapechar
-@cindex escape character, changing verbatim
-You can change the verbatim escape character from the default @samp{|}
-with @code{\verbatimescapechar @var{char}}; for example, this changes
-it to @samp{@@}.
-
-@example
-\verbatimescapechar \@@
-@end example
-
-@noindent The backslash is not necessary in some cases, but is in
-others, depending on the catcode of the character. The argument to
-@code{\verbatimescapechar} is used as @code{\catcode `@var{char}}, so
-the exact rules follow that for @code{\catcode}.
-
-Because @code{\verbatim} must change the category code of special
-characters, calling inside a macro definition of your own does not work
-properly. For example:
-
-@example
-\def\mymacro@{\verbatim &#%|endverbatim@}% Doesn't work!
-@end example
-
-To accomplish this, you must change the category codes yourself before
-making the macro definition. Perhaps @code{\uncatcodespecials} will
-help you (@pxref{Category codes}).
-
-
-@node Contents
-@section Contents
-
-@cindex table of contents
-@cindex contents
-
-Producing a table of contents that is both useful and aesthetic is one
-of the most difficult design problems in any work. Naturally, Eplain
-does not pretend to solve the design problem. Collecting the raw data
-for a table of contents, however, is much the same across documents.
-Eplain uses an auxiliary file with extension @file{.toc}
-@pindex .toc @r{file}
-(and the same root name as your document) to save the information.
-
-To write an entry for the table of contents, you say
-@code{\writetocentry@{@var{part}@}@{@var{text}@}},
-@findex writetocentry
-where @var{part} is the type of part this entry is, e.g.,
-@samp{chapter}, and @var{text} is the text of the title.
-@code{\writetocentry} puts an entry into the @t{.toc} file that looks
-@findex toc@dots{}entry
-like @code{\toc@var{part}entry@{@var{text}@}@{@var{page number}@}}. The
-@var{text} is written unexpanded.
-
-@findex writenumberedtocentry
-A related command, @code{\writenumberedtocentry}, takes one additional
-argument, the first token of which is expanded at the point of the
-@code{\writenumberedtocentry}, but the rest of the argument is not
-expanded. The usual application is when the parts of the document are
-numbered. On the other hand, the one-level expansion allows you to use
-the argument for other things as well (author's names in a proceedings,
-say), and not have accents or other control sequences expanded. The
-downside is that if you @emph{want} full expansion of the third
-argument, you don't get it---you must expand it yourself, before you
-call @code{\writenumberedtocentry}.
-
-For example:
-
-@example
-\writenumberedtocentry@{chapter@}@{A $\sin$ wave@}@{\the\chapno@}
-\writetocentry@{section@}@{A section title@}
-@end example
-
-@noindent Supposing @code{\the\chapno} expanded to @samp{3} and that the
-@code{\write}'s occurred on pages eight and nine, respectively, the
-above writes the following to the @t{.toc} file:
-
-@example
-\tocchapterentry@{A $\sin$ wave@}@{3@}@{8@}
-\tocsectionentry@{A section title@}@{9@}
-@end example
-
-@findex readtocfile
-You read the @t{.toc} file with the command @code{\readtocfile}.
-Naturally, whatever @code{\toc@dots{} entry} commands that were written
-to the file must be defined when @code{\readtocfile} is invoked. Eplain
-has minimal definitions for @code{\tocchapterentry},
-@code{\tocsectionentry}, and @code{\tocsubsectionentry}, just to prevent
-undefined control sequence errors in common cases. They aren't suitable
-for anything but preliminary proofs.
-
-Each of @code{\writetocentry} and @code{\writenumberedtocentry} opens
-the @t{.toc} file for writing, thereby deleting the information from the
-previous run. You should therefore arrange that @code{\readtocfile} be
-called @emph{before} the first call to a @code{\writetoc@dots{}} macro.
-@code{\readtocfile} does not itself delete the information
-from the @t{.toc} file, so that you can call it several times,
-e.g., to create both a short
-@cindex table of contents, short
-and normal table of contents. (To produce this in particular, define
-@code{\tocsectionentry} to produce nothing while you are reading
-@t{.toc} file for a short table of contents (@pxref{Macro arguments}).)
-
-On the other hand, if you don't want to rewrite the @t{.toc} file at
-all, perhaps because you are only running @TeX{} on part of your
-manuscript, you can set @code{\rewritetocfilefalse}.
-@findex ifrewritetocfile
-@findex rewritetocfile @r{(conditional)}
-
-By default, the @file{.toc} file has the root @code{\jobname}. If your
-document has more than one contents---for example, if it is a collection
-of papers, some of which have their own contents---you can tell Eplain
-to use a different root name by defining the control sequence
-@code{\tocfilebasename}.
-@findex tocfilebasename
-
-@cindex list of figures
-@cindex list of tables
-@findex definecontentsfile
-In addition to the usual table of contents, you may want to have a list
-of figures, list of tables, or other such contents-like list. You can do
-this with @code{\definecontentsfile@{@var{abbrev}@}}. All of the
-above commands are actually a special case that Eplain predefines with
-
-@example
-\definecontentsfile@{toc@}
-@end example
-
-@noindent The @var{abbrev} is used both for the file extension and in
-the control sequence names.
-
-
-
-@node Cross-references
-@section Cross-references
-
-@cindex cross-references
-It is often useful to refer the reader to other parts of your document;
-but putting literal page, section, equation, or whatever numbers in the
-text is certainly a bad thing.
-
-Eplain therefore provides commands for symbolic cross-references. It
-uses an auxiliary file with extension @t{.aux}
-@pindex .aux @r{file}
-(and the same root name as your document) to keep track of the
-information. Therefore, it takes two passes to get the cross-references
-right---one to write them out, and one to read them in. Eplain
-automatically reads the @t{.aux} file at the first reference; after
-reading it, Eplain reopens it for writing.
-
-You can control whether or not Eplain warns you about undefined
-labels. @xref{Citations}.
-
-@cindex labels, characters valid in
-Labels in Eplain's cross-reference commands can use characters of
-category code eleven (letter), twelve (other), ten (space), three (math
-shift), four (alignment tab), seven (superscript), or eight (subscript).
-For example, @samp{(a1 $&^_} is a valid label (assuming the category
-codes of plain @TeX{}), but @samp{%#\@{} has no valid characters.
-
-You can also do symbolic cross-references for bibliographic citations
-and list items. @xref{Citations}, and @ref{Lists}.
-
-Eplain can create hypertext links for the cross-references;
-@pxref{Cross-reference hyperlinks}.
-
-@menu
-* Defining generic references::
-* Using generic references::
-@end menu
-
-
-@node Defining generic references
-@subsection Defining generic references
-
-@cindex defining general references
-@cindex references, defining general
-@cindex cross-references, defining general
-
-@findex definexref
-Eplain provides the command @code{\definexref} for general
-cross-references. It takes three arguments: the name of the label (see
-section above for valid label names), the value of the label (which can
-be anything), and the ``class'' of the reference---whether it's a
-section, or theorem, or what. For example:
-
-@example
-\definexref@{sec-intro@}@{3.1@}@{section@}
-@end example
-
-@noindent Of course, the label value is usually generated by another
-macro using @TeX{} count registers or some such.
-
-@code{\definexref} doesn't actually define @var{label}; instead, it
-writes out the definition to the @t{.aux} file, where Eplain will read
-it on the next @TeX{} run.
-
-The @var{class} argument is used by the @code{\ref} and @code{\refs}
-commands. See the next section.
-
-
-@node Using generic references
-@subsection Using generic references
-
-@cindex defining general references
-@cindex references, defining general
-@cindex cross-references, defining general
-
-To retrieve the value of the label defined via @code{\definexref} (see
-the previous section), Eplain provides the following macros:
-
-@table @code
-
-@findex refn
-@itemx \refn@{@var{label}@}
-@findex xrefn
-@item \xrefn@{@var{label}@}
-@code{\refn} and @code{\xrefn} (they are synonyms) produce the bare
-definition of @var{label}. If @var{label} isn't defined, issue a
-warning, and produce @var{label} itself instead, in typewriter. (The
-warning isn't given if @code{\xrefwarningfalse}.)
-@findex xrefwarning @r{conditional}
-
-@findex ref
-@item \ref@{@var{label}@}
-Given the class @var{c} for @var{label} (see the description of
-@code{\definexref} in the previous section), expand the control sequence
-@code{\@var{c} word} (if it's defined) followed by a tie. Then call
-@code{\refn} on @var{label}. (Example below.)
-
-@findex refs
-@item \refs@{@var{label}@}
-Like @code{\ref}, but append the letter @samp{s} to the
-@code{\@dots{}word}.
-
-@end table
-
-The purpose of the @code{\@dots{}word} macro is to produce the word
-`Section' or `Figure' or whatever that usually precedes the actual
-reference number.
-
-Here is an example:
-
-@example
-\def\sectionword@{Section@}
-\definexref@{sec-intro@}@{3.1@}@{section@}
-\definexref@{sec-next@}@{3.2@}@{section@}
-See \refs@{sec-intro@} and \refn@{sec-next@} @dots{}
-@end example
-
-@noindent This produces `See Sections 3.1 and 3.2 @dots{}'
-
-
-@node Page references
-@section Page references
-
-Eplain provides two commands for handling references to page numbers,
-one for definition and one for use.
-
-@table @code
-
-@item \xrdef@{@var{label}@}
-@findex xrdef
-Define @var{label} to be the current page number. This produces no
-printed output, and ignores following spaces.
-
-@item \xref@{@var{label}@}
-@findex xref
-Produce the text `p.@tie{}@var{pageno}', which is the usual form for
-cross-references. The @var{pageno} is actually @var{label}'s
-definition; if @var{label} isn't defined, the text of the label itself
-is printed. The `p.@tie{}' prefix is defined by @code{\xrefpageword}.
-@findex xrefpageword
-Its default definition is @code{p.\thinspace}.
-
-@end table
-
-Eplain can create hypertext links for the page references; @pxref{Page
-reference hyperlinks}.
-
-
-@node Equation references
-@section Equation references
-
-@cindex equations, references to
-@cindex equations, numbering
-Instead of referring to pages, it's most useful if equation labels
-refer to equation numbers. Therefore, Eplain reserves a @code{\count}
-register, @code{\eqnumber},
-@findex eqnumber
-for the current equation number, and increments it at each
-numbered equation.
-
-Here are the commands to define equation labels and then refer to them:
-
-@table @code
-
-@item \eqdef@{@var{label}@}
-@findex eqdef
-This defines @var{label} to be the current value of @code{\eqnumber},
-and, if the current context is not inner, then produces a @code{\eqno}
-command. (The condition makes it possible to use @code{\eqdef} in an
-@code{\eqalignno} construction, for example.) The text of the equation
-number is produced using @code{\eqprint}. @xref{Formatting equation
-references}.
-
-@cindex empty equation labels
-@cindex labels, empty equation
-@cindex equations, giving numbers to all
-If @var{label} is empty, you still get an equation number (although
-naturally you can't reliably refer to it). This is useful if you want
-to put numbers on all equations in your document, and you don't want to
-think up unique labels.
-
-@cindex empty equation labels, referring to
-@cindex labels, empty equation, referring to
-To refer to the last equation with the empty label, you just use the
-empty label in one of the equation reference macros (see below). This
-can be handy when you want to refer to an equation shortly after its
-definition, say, in the sentence following the displayed equation, and
-do not intend to refer to the equation later. But use this trick with
-extreme caution: if later you change the text and insert another
-empty definition between the original definition and the reference,
-the reference will start to refer to the new empty-labeled equation.
-
-@item \eqdefn@{@var{label}@}
-@findex eqdefn
-This is like @code{\eqdef}, except it always omits the @code{\eqno}
-command. It can therefore be used in places where @code{\eqdef} can't;
-for example, in a non-displayed equation. The text of the equation
-number is not produced, so you can also use it in the (admittedly
-unusual) circumstance when you want to define an equation label but not
-print that label.
-
-@item \eqref@{@var{label}@}
-@findex eqref
-This produces a formatted reference to @var{label}. If @var{label} is
-undefined (perhaps because it is a forward reference), it just produces
-the text of the label itself. Otherwise, it calls @code{\eqprint}.
-
-@item \eqrefn@{@var{label}@}
-@findex eqrefn
-This produces the cross-reference text for @var{label}. That is, it
-is like @code{\eqref}, except it doesn't call @code{\eqprint}.
-
-@end table
-
-@cindex equation labels, characters valid in
-Equation labels can contain the same characters that are valid in
-general cross-references.
-
-Eplain can create hypertext links for the equation references;
-@pxref{Equation reference hyperlinks}.
-
-
-@menu
-* Formatting equation references::
-* Subequation references::
-@end menu
-
-
-@node Formatting equation references
-@subsection Formatting equation references
-
-@cindex equation numbers, formatting of
-Both defining an equation label and referring to it should usually
-produce output. This output is produced with the @code{\eqprint} macro,
-which takes one argument, the equation number being defined or referred
-to. By default, this just produces @samp{(@var{number})}, where
-@var{number} is the equation number. To produce the equation number in
-a different font, or with different surrounding symbols, or whatever,
-you can redefine @code{\eqprint}.
-@findex eqprint
-For example, the following definition would print all equation numbers
-in italics. (The extra braces define a group, to keep the font change
-from affecting surrounding text.)
-
-@example
-\def\eqprint#1@{@{\it (#1)@}@}
-@end example
-
-In addition to changing the formatting of equation numbers, you might
-to add more structure to the equation number; for example, you might
-want to include the chapter number, to get equation numbers like
-`(1.2)'. To achieve this, you redefine @code{\eqconstruct}.
-@findex eqconstruct
-For example:
-
-@example
-\def\eqconstruct#1@{\the\chapternumber.#1@}
-@end example
-
-@noindent
-(If you are keeping the chapter number in a count register named
-@code{\chapternumber}, naturally.)
-
-The reason for having both @code{\eqconstruct} and @code{\eqprint} may
-not be immediately apparent. The difference is that @code{\eqconstruct}
-affects the text that cross-reference label is defined to be, while
-@code{\eqprint} affects only what is typeset on the page. The example
-just below might help.
-
-Usually, you want equation labels to refer to equation numbers. But
-sometimes you might want a more complicated text. For example, you
-might have an equation `(1)', and then have a variation several pages
-later which you want to refer to as `(1*)'.
-
-Therefore, Eplain allows you to give an optional argument (i.e.,
-arbitrary text in square brackets) before the cross-reference label to
-\eqdef. Then, when you refer to the equation, that text is produced.
-Here's how to get the example just mentioned:
-
-@example
-$$@dots{}\eqdef@{a-eq@}$$
-@dots{}
-$$@dots{}\eqdef[\eqrefn@{a-eq@}*]@{a-eq-var@}$$
-In \eqref@{a-eq-var@}, we expand on \eqref@{a-eq@}, @dots{}
-@end example
-
-We use @code{\eqrefn} in the cross-reference text, not
-@code{\eqref}, so that @code{\eqprint} is called only once.
-
-
-@node Subequation references
-@subsection Subequation references
-
-@cindex equations, groups of
-@cindex subequations, referring to
-Eplain also provides for one level of substructure for equations. That
-is, you might want to define a related group of equations with numbers
-like `2.1' and `2.2', and then be able to refer to the group as a whole:
-``@dots{} in the system of equations (2)@dots{}''.
-
-The commands to do this are @code{\eqsubdef} and
-@findex eqsubdef
-@code{\eqsubdefn}.
-@findex eqsubdefn
-They take one @var{label} argument like their counterparts above,
-and generally behave in the same way. The difference is in how they
-construct the equation number: instead of using just @code{\eqnumber},
-they also use another counter, @code{\subeqnumber}.
-@findex subeqnumber
-This counter is advanced by one at every @code{\eqsubdef} or
-@code{\eqsubdefn}, and reset to zero at every @code{\eqdef} or
-@code{\eqdefn}.
-
-You use @code{\eqref} to refer to subequations as well as main
-equations.
-
-To put the two together to construct the text that the label will
-produce, they use a macro @code{\eqsubreftext}.
-@findex eqsubreftext
-This macros takes two arguments, the ``main'' equation number (which,
-because the equation label can be defined as arbitrary text, as
-described in the previous section, might be anything at all) and the
-``sub'' equation number (which is always just a number). Eplain's
-default definition just puts a period between them:
-@example
-\def\eqsubreftext#1#2@{#1.#2@}%
-@end example
-
-@noindent You can redefine @code{\eqsubreftext} to print however you
-like. For example, this definition makes the labels print as `2a',
-`2b', and so on.
-@example
-\newcount\subref
-\def\eqsubreftext#1#2@{%
- \subref = #2 % The space stops a <number>.
- \advance\subref by 96 % `a' is character code 97.
- #1\char\subref
-@}
-@end example
-
-@noindent Sadly, we must define a new count register, @code{\subref},
-instead of using the scratch count register @code{\count255}, because
-@samp{#1} might include other macro calls which use @code{\count255}.
-
-
-@node Indexing
-@section Indexing
-
-@cindex indexing
-@cindex sorting an index
-
-Eplain provides support for generating raw material for an index, and
-for typesetting a sorted index. A separate program must do the actual
-collection and sorting of terms, because @TeX{} itself has no support
-for sorting.
-
-Eplain can create hypertext links pointing from the index to the index
-terms; @pxref{Index hyperlinks}.
-
-@cindex URL for MakeIndex
-@pindex makeindex
-Eplain's indexing commands were designed to work with the program
-MakeIndex, available from CTAN hosts in
-@file{tex-archive/indexing/makeindex}; MakeIndex is also commonly
-included in prepackaged @TeX{} distributions. It is beyond the scope of
-this manual to explain how to run MakeIndex, and all of its many
-options. See @url{http://www.ctan.org/tex-archive/indexing/makeindex/}
-
-The basic strategy for indexing works like this:
-
-@enumerate
-
-@pindex .idx @r{files}
-@item For a document @file{foo.tex}, Eplain's indexing commands (e.g.,
-@code{\idx}; see the section `Indexing terms' below) write the raw index
-material to @file{foo.idx}.
-
-@pindex .ind @r{files}
-@item MakeIndex reads @file{foo.idx}, collects and sorts the index, and
-writes the result to @file{foo.ind}.
-
-@item Eplain reads and typesets @file{foo.ind} on a subsequent run of
-@TeX{}. See the section `Typesetting an index' below.
-
-@end enumerate
-
-@pindex texi2dvi
-@noindent The @command{texi2dvi} program can help you automate this
-process, @pxref{Invoking Eplain}.
-
-@cindex multiple indexes
-@cindex indexes, multiple
-@findex defineindex
-If your document needs more than one index, each must have its own
-file. Therefore, Eplain provides the command @code{\defineindex}, which
-takes an argument that is a single letter, which replaces @samp{i} in
-the filenames and in the indexing command names described below. For
-example,
-
-@example
-\defineindex@{m@}
-@end example
-
-@noindent defines the command @code{\mdx} to write to the file
-@file{foo.mdx}. Eplain simply does @code{\defineindex@{i@}} to define
-the default commands.
-
-@menu
-* Indexing terms:: Specifying what to index.
-* Typesetting an index:: Printing the sorted output.
-* Customizing indexing:: Creating commands and specifying extra actions.
-@end menu
-
-
-@node Indexing terms
-@subsection Indexing terms
-
-@cindex indexing terms
-@cindex silent indexing
-
-Indexing commands in Eplain come in pairs: one command that only
-writes the index entry to the @samp{.idx} file (see above section), and
-one that also typesets the term being indexed. The former always starts
-with @samp{s} (for ``silent''). In either case, the name always includes
-@samp{@var{I}dx}, where @var{I} is the index letter, also described
-above. Eplain defines the index @samp{i} itself, so that's what we'll
-use in the names below.
-
-@cindex subterm in indexing
-The silent form of the commands take a subterm as a trailing optional
-argument. For example, @code{\sidx@{truth@}[definition of]} on page 75
-makes an index entry that will eventually be typeset (by default) as
-
-@display
-truth
- definition of, 75
-@end display
-
-@cindex trailing spaces and indexing commands
-@cindex spaces, trailing and indexing commands
-@cindex indexing and trailing spaces
-Also, the silent commands ignore trailing spaces. The non-silent ones do not.
-
-@menu
-* Indexing commands:: Making index entries.
-* Modifying index entries:: Ranges, see/see also, page number typesetting.
-* Proofing index terms:: Noting index entries in the margins.
-@end menu
-
-
-@node Indexing commands
-@subsubsection Indexing commands
-
-@cindex indexing commands
-Here are the commands.
-
-@itemize @bullet
-
-@item
-@findex sidx
-@findex idx
-@code{\sidx@{@var{term}@}[@var{subterm}]} makes an index entry for
-@var{term}, optionally with subterm @var{subterm}.
-@code{\idx@{@var{term}@}} also produces @var{term} as output. Example:
-
-@example
-\sidx@{truth@}[beauty of]
-The beauty of truth is \idx@{death@}.
-@end example
-
-Subterms at the second and further levels can also be
-specified in @var{subterm}, using the
-@code{\idxsubentryseparator} character to separate
-them. This character is by default @samp{!}.
-
-@item
-@findex sidxname
-@findex idxnameseparator
-@findex idxname
-@code{\sidxname@{@var{First M.}@}@{@var{von Last}@}[@var{subterm}]}
-makes an index
-entry for @samp{@var{von Last}, @var{First M.}}. You can change the
-@samp{, } by redefining @code{\idxnameseparator}.
-@code{\idxname@{@var{First M.}@}@{@var{von Last}@}} also produces @var{First M. von
-Last} as output. (These commands are useful special cases of @code{\idx}
-and @code{\sidx}.) Example:
-
-@example
-\sidxname@{Richard@}@{Stark@}
-\idxname@{Donald@}@{Westlake@} has written many kinds of novels, under
-almost as many names.
-@end example
-
-@item
-@findex sidxmarked
-@findex idxmarked
-@code{\sidxmarked\@var{cs}@{@var{term}@}[@var{subterm}]} makes an index
-entry for @code{@var{term}[@var{subterm}]}, but @var{term} will be put
-in the index as @code{\@var{cs}@{term@}}, but still sorted as just
-@var{term}. @code{\idxmarked\@var{cs}@{@var{term}@}} also typesets
-@code{\@var{cs}@{term@}}. This provides for the usual ways of changing
-the typesetting of index entries. Example:
-
-@example
-\def\article#1@{``#1''@}
-\sidxmarked\article@{Miss Elsa and Aunt Sophie@}
-Peter Drucker's \idxmarked\article@{The Polanyis@} is a remarkable
-essay about a remarkable family.
-@end example
-
-@item
-@findex idxsubmarked
-@findex sidxsubmarked
-@code{\sidxsubmarked@{@var{term}@}\@var{cs}@{subterm@}} makes an index
-entry for @var{term}, @var{subterm} as usual, but also puts @var{subterm} in
-the index as @code{\@var{cs}@{term@}}.
-@code{\idxsubmarked@{@var{term}@}\@var{cs}@{subterm@}} also typesets
-@code{@var{term} \@var{cs}@{subterm@}}, in the unlikely event that your
-syntax is convoluted enough to make this useful. Example:
-
-@example
-\def\title#1@{@{\sl #1@}@}
-\sidxsubmarked@{Anderson, Laurie@}\title@{Strange Angels@}
-The \idxsubmarked@{Anderson@}\title@{Carmen@} is a strange twist.
-@end example
-
-@end itemize
-
-@cindex index entry general sorting
-@cindex sorting of index entries
-The commands above rely on MakeIndex's feature for separating sorting of
-an index entry's from its typesetting. You can use this directly by
-specifying an index entry as @code{@var{sort}@@@var{typeset}}. For
-example:
-
-@example
-\sidx@{Ap-weight@@$A_\pi$-weight@}
-@end example
-
-@noindent will sort as @code{Ap-weight}, but print with the proper math.
-The @code{@@} here is MakeIndex's default character for this purpose.
-See @url{http://www.ctan.org/tex-archive/indexing/makeindex/}. To make an index
-entry with an @code{@@} in it, you have to escape it with a backslash;
-Eplain provides no macros for doing this.
-
-@findex afterindexterm @r{hook}
-@cindex whatsits made by index entries
-After any index command, Eplain runs
-@code{\hookaction@{afterindexterm@}}. Because the index commands always
-add a whatsit item to the current list, you may wish to preserve a
-penalty or space past the new item. For example, given a conditional
-@code{\if@@aftersctnhead} set true when you're at a section heading, you
-could do:
-
-@example
-\hookaction@{afterindexterm@}@{\if@@aftersctnhead \nobreak \fi@}
-@end example
-
-
-@node Modifying index entries
-@subsubsection Modifying index entries
-
-@cindex modifying index entries' page numbers
-@cindex index entries' page numbers, modifying
-
-All the index commands described in the previous section take an initial
-optional argument before the index term, which modify the index entry's
-meaning in various ways. You can specify only one of the following in
-any given command, except that @code{begin} and @code{end} can be
-specified together with @code{pagemarkup=@var{cs}} (separate them with
-a comma without a following space, like this:
-@code{[begin,pagemarkup=defn]}).
-
-These work via MakeIndex's ``encapsulation'' feature. @xref{Customizing
-indexing}, if you're not using the default characters for the
-MakeIndex operators. The other optional argument (specifying a subterm)
-is independent of these.
-
-Here are the possibilities:
-
-@table @code
-
-@item begin
-@itemx end
-@findex begin @r{for index entries}
-@findex end @r{for index entries}
-@cindex index entries and ranges
-@cindex ranges and index entry
-These mark an index entry as the beginning or end of a range. The index
-entries must match exactly for MakeIndex to recognize them.
-Example:
-
-@example
-\sidx[begin]@{future@}[Cohen, Leonard]
-@dots{}
-\sidx[end]@{future@}[Cohen, Leonard]
-@end example
-
-@noindent will typeset as something like
-
-@display
-future,
- Cohen, Leonard, 65--94
-@end display
-
-@item see
-@findex see @r{for index entries}
-@cindex see, and index entries
-@cindex cross-referencing index entries
-@cindex index entries, and cross-referencing
-This marks an index entry as pointing to another; the real index term is
-an additional (non-optional) argument to the command. Thus you can
-anticipate a term readers may wish to look up, yet which you have
-decided not to index. Example:
-
-@example
-\sidx[see]@{analysis@}[archetypal]@{archetypal criticism@}
-@end example
-
-@noindent becomes
-
-@display
-analysis,
- archetypal, @i{see} archetypal criticism
-@end display
-
-@item seealso
-@findex seealso @r{for index entries}
-Similar to @code{see} (the previous item), but also allows for normal
-index entries of the referencing term. Example:
-
-@example
-\sidx[seealso]@{archetypal criticism@}[elements of]@{dichotomies@}
-@end example
-
-@noindent becomes
-
-@display
-archetypal criticism,
- elements of, 75, 97, 114, @i{see also} dichotomies
-@end display
-
-(Aside for the academically curious: The archetypally critical book I
-took these dichotomous examples from is Laurence Berman's @cite{The
-Musical Image}, which I happened to co-design and typeset.)
-
-@item pagemarkup=@var{cs}
-This puts @code{\@var{cs}} before the page number in the typeset index,
-thus allowing you to underline definitive entries, italicize examples,
-and the like. You do @emph{not} precede the control sequence @var{cs}
-with a backslash. (That just leads to expansive difficulties.) Naturally
-it is up to you to define the control sequences you want to use. Example:
-
-@example
-\def\defn#1@{@{\sl #1@}@}
-\sidx[pagemarkeup=defn]@{indexing@}
-@end example
-
-@noindent becomes something like
-
-@example
-indexing, @code{\defn@{75@}}
-@end example
-
-@end table
-
-
-@node Proofing index terms
-@subsubsection Proofing index terms
-
-@cindex proofing index terms
-@cindex index terms, proofing
-@cindex margins, index terms in
-
-As you are reading through a manuscript, it is helpful to see what terms
-have been indexed, so you can add others, catch miscellaneous errors,
-etc. (Speaking from bitter experience, I can say it is extremely
-error-prone to leave all indexing to the end of the writing, since it
-involves adding many @TeX{} commands to the source files.)
-
-@findex indexproofterm
-@findex indexprooffont
-@pindex cmtt8
-So Eplain puts index terms in the margin of each page, if you
-set @code{\indexproofingtrue}. It is @code{false} by default. The terms
-are typeset by the macro @code{\indexproofterm}, which takes a single
-argument, the term to be typeset. Eplain's definition of
-@code{\indexproofterm} just puts it into an @code{\hbox}, first doing
-@code{\indexprooffont}, which Eplain defines to select the font
-@code{cmtt8}. With this definition long terms run off the page, but
-since this is just for proofreading anyway, it seems acceptable.
-
-@findex pageno
-@findex insidemargin
-@findex hoffset
-@findex outsidemargin
-@findex indexsetmargins
-On the other hand, we certainly don't want the index term to run into
-the text of the page, so Eplain uses the right-hand side of the page
-rather than the left-hand page (assuming a language read left to right
-here). So @code{\ifodd\pageno}, Eplain kerns by @code{\outsidemargin},
-otherwise by @code{\insidemargin}. If those macros are undefined,
-@code{\indexsetmargins} defines them to be one inch plus @code{\hoffset}.
-
-@findex @@indexproof @r{insertion class}
-@findex indexproofunbox
-@findex makeheadline
-@cindex output routine and index proofing
-To get the proofing index entries on the proper page, Eplain defines a new
-insertion class @code{\@@indexproof}. To unbox any index proofing
-material, Eplain redefines @code{\makeheadline} to call
-@code{\indexproofunbox} before the original @code{\makeheadline}. Thus,
-if you have your own output routine, that redefines or doesn't use
-@code{\makeheadline}, it's up to you to call @code{\indexproofunbox} at
-the appropriate time.
-
-
-@node Typesetting an index
-@subsection Typesetting an index
-
-@cindex typesetting an index
-@cindex index typesetting
-@findex readindexfile
-
-The command @code{\readindexfile@{i@}} reads and typesets the
-@file{.ind} file that MakeIndex outputs (from the @file{.idx} file which
-the indexing commands in the previous sections write). Eplain defines a
-number of commands that support the default MakeIndex output.
-
-@findex indexfilebasename
-@findex jobname
-More precisely, @code{\readindexfile} reads
-@code{\indexfilebasename.@var{index-letter}nd}, where the
-@var{index-letter} is the argument. @code{\indexfilebasename} is
-@code{\jobname} by default, but if you have different indexes in
-different parts of a book, you may wish to change it, just as with
-bibliographies (@pxref{Citations}).
-
-@findex begin@{theindex@}
-@findex end@{theindex@}
-MakeIndex was designed to work with @LaTeX{}; therefore, by default the
-@file{.ind} file starts with @code{\begin@{theindex@}} and ends with
-@code{\end@{theindex@}}. If no @code{\begin} has been defined, Eplain
-defines one to ignore its argument and set up for typesetting the index
-(see below), and also defines a @code{\end} to ignore its argument. (In
-a group, naturally, since there is a primitive @code{\end}).
-
-@findex parindent @r{in indexes}
-@cindex index fonts
-@findex indexfonts
-@cindex double columns in indexes
-Eplain calls @code{\indexfonts}, sets @code{\parindent = 0pt}, and does
-@code{\doublecolumns} (@pxref{Multiple columns}) at the
-@code{\begin@{theindex@}}. @code{\indexfonts} does nothing by default;
-it's just there for you to override. (Indexes are usually typeset in
-smaller type than the main text.)
-
-@findex beginindex @r{hook}
-It ends the setup with @code{\hookrun@{beginindex@}}, so you can
-override anything you like in that hook (@pxref{Hooks}). For example:
-
-@example
-\hookaction@{beginindex@}@{\triplecolumns@}
-@end example
-
-@findex item @r{in indexes}
-@findex subitem @r{in indexes}
-@findex subsubitem @r{in indexes}
-@cindex index entry formatting
-@cindex formatting index entries
-@cindex space above index entries
-@cindex continued index entries
-@cindex index entry continuations
-MakeIndex turns each main index entry into an @code{\item}, subentries
-into @code{\subitem}, and subsubentries into @code{\subsubitem}. By
-default, the first line of main entries are not indented, and subentries
-are indented 1em per level. Main entries are preceded by a @code{\vskip}
-of @code{\aboveitemskipamount}, @code{0pt plus2pt} by default. Page
-breaks are encouraged before main entries (@code{\penalty -100}), but
-prohibited afterwards---Eplain has no provision for ``continued''
-index entries.
-
-All levels do the following:
-
-@findex hangindent @r{for index entries}
-@findex raggedright @r{for index entries}
-@findex hyphenpenalty @r{for index entries}
-@example
-\hangindent = 1em
-\raggedright
-\hyphenpenalty = 10000
-@end example
-
-@findex indexitem @r{hook}
-Each entry ends with @code{\hookrun@{indexitem@}}, so you can change any
-of this. For example, to increase the allowable rag:
-
-@example
-\hookaction@{indexitem@}@{\advance\rightskip by 2em@}
-@end example
-
-@findex indexspace
-@cindex index groupings
-Finally, MakeIndex outputs @code{\indexspace} between each group of
-entries in the @file{.ind} file. Eplain makes this equivalent to
-@code{\bigbreak}.
-
-
-@node Customizing indexing
-@subsection Customizing indexing
-
-@cindex customizing indexing
-
-@findex afterindexterm
-@cindex commas after index terms
-@cindex after index terms
-By default, MakeIndex outputs @samp{, } after each term in the index. To
-change this, you can add the following to your MakeIndex style
-(@file{.ist}) file:
-
-@example
-delim_0 "\\afterindexterm "
-delim_1 "\\afterindexterm "
-delim_2 "\\afterindexterm "
-@end example
-
-@noindent Eplain makes @code{\afterindexterm} equivalent to
-@code{\quad}.
-
-You can also change the keywords Eplain recognizes (@pxref{Modifying
-index entries}):
-
-@table @code
-
-@item \idxrangebeginword
-@findex idxrangebeginword
-`begin'
-
-@item \idxrangeendword
-@findex idxrangeendword
-`end'
-
-@item \idxseecmdword
-@findex idxseecmdword
-`see'
-
-@item \idxseealsocmdword
-@findex idxseealsocmdword
-`seealso'
-
-@end table
-
-You can also change the magic characters Eplain puts into the
-@file{.idx} file, in case you've changed them in the @code{.ist} file:
-
-@table @code
-
-@item \idxsubentryseparator
-@findex idxsubentryseparator
-@samp{!}
-
-@item \idxencapoperator
-@findex idxencapoperator
-@samp{|}
-
-@item \idxbeginrangemark
-@findex idxbeginrangemark
-@samp{(}
-
-@item \idxendrangemark
-@findex idxendrangemark
-@samp{)}
-
-@end table
-
-There is no macro for the @code{actual} (@samp{@@} by default)
-character, because it's impossible to make it expand properly.
-
-@findex idxpagenum
-@cindex see also index entries and sorting
-You can change the (imaginary) page number that ``see also''
-entries sort as by redefining @code{\idxmaxpagenum}. This is 99999 by
-default, which is one digit too many for old versions of MakeIndex.
-
-@findex indexseeword
-@findex indexseealsowords
-@findex seevariant
-@findex indexsee
-@findex indexseealso
-The words output by Eplain for ``see'' and ``see also'' index entries
-are defined by @code{\indexseeword} and @code{\indexseealsowords}
-respectively. You can change the typeface used for these words by
-redefining @code{\seevariant}. And finally, the macros
-@code{\indexsee} and @code{\indexseealso} actually produce the ``see
-@dots{}'' entries, so you can redefine them if you want something
-entirely different. If you do redefine them, make them take two
-parameters, the term being referenced and the @code{\idxmaxpagenum}
-(the latter should normally be ignored). See the example below.
-
-@findex see @r{for index entries}
-@cindex see, and index entries
-@cindex cross-referencing index entries
-@cindex index entries, and cross-referencing
-@cindex commas in cross-referencing index entries
-Unfortunately, it is impossible to reliably control the commas
-produced by MakeIndex in front of ``see @dots{}'' entries in the
-@file{.ind} file, either at MakeIndex level or at Eplain level.
-However, the
-@pindex sed
-@command{sed} script named @command{trimsee}
-@pindex trimsee
-distributed with Eplain in the @file{test} directory can be used to
-filter out these commas from the output of MakeIndex. For example,
-suppose you want the following style for your ``see @dots{}'' entries:
-
-@display
-analysis,
- archetypal (@i{see} archetypal criticism)
-archetypal criticism,
- elements of, 75, 97, 114 (@i{see also} dichotomies)
-@end display
-
-@noindent You would need to redefine these macros in your @TeX{}
-file:
-
-@example
-\def\indexsee#1#2@{(@{\seevariant \indexseeword\/ @}#1)@}
-\def\indexseealso#1#2@{(@{\seevariant \indexseealsowords\/ @}#1)@}
-@end example
-
-@noindent and then filter out the commas in front of the ``see @dots{}''
-entries by running the following command to produce the @file{.ind}
-file (assuming the name of the @file{.idx} file is @file{myfile.idx}
-and the @file{trimsee} script is placed in the current directory):
-
-@example
-prompt$ cat myfile.idx | makeindex | ./trimsee > myfile.ind
-@end example
-
-By default, @file{trimsee} uses default page list separators and
-default ``see @dots{}'' command names. If you set up MakeIndex to use
-different page list separator or change the names of @code{\indexsee}
-and @code{\indexseealso} commands, it is possible to adjust the
-@file{trimsee} script through its command line options, which are the
-following:
-
-@table @option
-@item -i @var{is}
-Use @var{is} as a regular expression matching separator before ``see
-@dots{}'' commands in the input (default: @samp{, \+}).
-
-@item -o @var{os}
-Use @var{os} as a separator to replace @var{is} before ``see @dots{}''
-commands (default: @samp{ }).
-
-@item -s @var{see}
-Use @var{see} as a regular expression matching ``see @dots{}''
-commands (default: @samp{\\indexsee}).
-
-@item -h
-@itemx --help
-Print a usage message.
-
-@item -v
-@itemx --version
-Print version.
-@end table
-
-@file{trimsee} reads input from the standard input, and directs its
-output to the standard output.
-
-
-@node Justification
-@section Justification
-
-@cindex centering
-@cindex left-justification
-@cindex right-justification
-@cindex justification
-Eplain defines three commands to conveniently justify multiple
-lines of text: @code{\flushright}, @code{\flushleft}, and
-@code{\center}.
-@findex flushright
-@findex flushleft
-@findex center
-
-They all work in the same way; let's take @code{\center} as the
-example. To start centering lines, you say @code{\center} inside a
-group; to stop, you end the group. Between the two commands, each
-end-of-line in the input file also starts a new line in the output file.
-
-The entire block of text is broken into paragraphs at blank lines,
-so all the @TeX{} paragraph-shaping parameters apply in the usual way.
-This is convenient, but it implies something else that isn't so
-convenient: changes to any linespacing parameters, such as
-@code{\baselineskip}, will have @emph{no effect} on the paragraph in
-which they are changed. @TeX{} does not handle linespacing changes
-within a paragraph (because it doesn't know where the line breaks are
-until the end of the paragraph).
-
-The space between paragraphs is by default one blank line's worth.
-You can adjust this space by assigning to @code{\blanklineskipamount};
-@findex blanklineskipamount @r{in justified text}
-this (vertical) glue is inserted after each blank line.
-
-Here is an example:
-@example
-@{\center First line.
-
- Second line, with a blank line before.
-@}
-@end example
-
-This produces:
-
-@center First line.
-@center
-@center Second line, with a blank line before.
-
-You may wish to use the justification macros inside of your own
-macros. Just be sure to put them in a group. For example, here is how
-a title macro might be defined:
-
-@example
-\def\title@{\begingroup\titlefont\center@}
-\def\endtitle@{\endgroup@}
-@end example
-
-
-@node Tables
-@section Tables
-
-@cindex tables
-@cindex alignments
-Eplain provides a single command, @code{\makecolumns},
-@findex makecolumns
-to make generating one particular kind of table easier. More ambitious
-macro packages might be helpful to you for more difficult applications.
-The files @file{ruled.tex} and @file{TXSruled.tex}, available from
-@samp{lifshitz.ph.utexas.edu} in @file{texis/tables}, is the only one I
-know of.
-
-Many tables are homogenous, i.e., all the entries are semantically the
-same. The arrangement into columns is to save space on the page, not
-to encode different meanings. In this kind of the table, it is useful to
-have the column breaks chosen automatically, so that you can add or
-delete entries without worrying about the column breaks.
-
-@code{\makecolumns} takes two arguments: the number of entries in the
-table, and the number of columns to break them into. As you can see
-from the example below, the first argument is delimited by a slash, and
-the second by a colon and a space (or end-of-line). The entries for the
-table then follow, one per line (not including the line with the
-@code{\makecolumns} command itself).
-
-@code{\parindent} defines the space to the left of the
-table. @code{\hsize} defines the width of the table.
-So you can adjust the position of the table on the page by assignments
-to these parameters, probably inside a group.
-
-You can also control the penalty at a page break before the
-@code{\makecolumns} by setting the parameter
-@code{\abovecolumnspenalty}.
-@findex abovecolumnspenalty
-Usually, the table is preceded by some explanatory text. You wouldn't
-want a page break to occur after the text and before the table, so
-Eplain sets it to @code{10000}. But if the table produced by
-@code{\makecolumns} is standing on its own, @code{\abovecolumnspenalty}
-should be decreased.
-
-If you happen to give @code{\makecolumns} a smaller number of entries
-than you really have, some text beyond the (intended) end of the table
-will be incorporated into the table, probably producing an error
-message, or at least some strange looking entries. And if you give
-@code{\makecolumns} a larger number of entries than you really have,
-some of the entries will be typeset as straight text, probably also
-looking somewhat out of place.
-
-Here is an example:
-@example
-% Arrange 6 entries into 2 columns:
-\makecolumns 6/2: % This line doesn't have an entry.
-one
-two
-three
-four
-five
-six
-Text after the table.
-@end example
-
-This produces `one', `two', and `three' in the first column, and
-`four', `five', and `six' in the second.
-
-
-@node Margins
-@section Margins
-
-@cindex margins, changing
-@TeX{}'s primitives describe the type area in terms of an offset from
-the upper left corner, and the width and height of the type. Some
-people prefer to think in terms of the @dfn{margins} at the top, bottom,
-left, and right of the page, and most composition systems other than
-@TeX{} conceive of the page laid out in this way. Therefore, Eplain
-provides commands to directly assign and increment the margins.
-
-@table @code
-@itemx \topmargin = @var{dimen}
-@itemx \bottommargin = @var{dimen}
-@itemx \leftmargin = @var{dimen}
-@item \rightmargin = @var{dimen}
-@findex topmargin
-@findex bottommargin
-@findex leftmargin
-@findex rightmargin
-These commands set the specified margin to the @var{dimen} given.
-The @code{=} and the spaces around it are optional. The control
-sequences here are not @TeX{} registers, despite appearances;
-therefore, commands like @code{\showthe\topmargin} will not do what you
-expect.
-
-@itemx \advancetopmargin by @var{dimen}
-@itemx \advancebottommargin by @var{dimen}
-@itemx \advanceleftmargin by @var{dimen}
-@item \advancerightmargin by @var{dimen}
-@findex advancetopmargin
-@findex advancebottommargin
-@findex advanceleftmargin
-@findex advancerightmargin
-These commands change the specified margin by the @var{dimen} given.
-@end table
-
-Regardless of whether you use the assignment or the advance commands,
-Eplain always changes the type area in response, not the other margins.
-For example, when @TeX{} starts, the left and right margins are both one
-inch. If you then say @code{\leftmargin = 2in}, the right margin will
-remain at one inch, and the width of the lines (i.e., @code{\hsize})
-@findex hsize
-will decrease by one inch.
-
-When you use any of these commands, Eplain computes the old value of
-the particular margin, by how much you want to change it, and then
-resets the values of @TeX{}'s primitive parameters to correspond.
-Unfortunately, Eplain cannot compute the right or bottom margin without
-help: you must tell it the full width and height of the final output
-page. It defines two new parameters for this:
-
-@table @code
-@item \paperheight
-@findex paperheight
-The height of the output page; default is 11truein.
-
-@item \paperwidth
-@findex paperwidth
-The width of the output page; default is 8.5truein.
-@end table
-
-If your output page has different dimensions than this, you must
-reassign to these parameters, as in
-
-@example
-\paperheight = 11truein
-\paperwidth = 17truein
-@end example
-
-
-@node Multiple columns
-@section Multiple columns
-
-@cindex double column output
-@cindex triple column output
-@cindex quadruple column output
-@cindex multiple column output
-Eplain provides for double, triple, and quadruple column output: say
-@code{\doublecolumns},
-@findex doublecolumns
-@code{\triplecolumns},
-@findex triplecolumns
-or @code{\quadcolumns},
-@findex quadcolumns
-and from that point on, the manuscript will be
-set in columns. To go back to one column, say
-@code{\singlecolumn}.
-@findex singlecolumn
-
-@cindex column balancing with @code{\singlecolumn}
-@cindex balancing of columns with @code{\singlecolumn}
-You may need to invoke @code{\singlecolumn} to balance the columns
-on the last page of output.
-
-@findex columnfill
-@cindex column eject
-@cindex eject in multicolumns
-@findex pagetotal
-To do a ``column eject'', i.e., move to the top of the next column, do
-@code{\columnfill}. This does not actually force an eject, however: it
-merely inserts a kern of size @code{\@@normalvsize} minus
-@code{\pagetotal} (@code{\@@normalvsize} being the usual height of the
-page; to implement multicolumns, Eplain multiplies @code{\vsize} itself
-by the number of columns). In most circumstances, a column break will be
-forced after this kern (during the column splitting operation when the
-whole page is output), as desired.
-
-@findex gutter
-The columns are separated by the value of the dimen parameter
-@code{\gutter}. Default value is two picas.
-@findex gutterbox
-If you want to add vertical material between the columns, use
-@code{\gutterbox}. For example, to put a vertical line between columns,
-define
-@code{\gutterbox} as
-@example
-\def\gutterbox@{\vbox to \dimen0@{\vfil\hbox@{\vrule height\dimen0@}\vfil@}@}%
-@end example
-The dimension counter
-@code{\dimen0}
-contains the height of the column.
-
-All the @code{\@dots{}columns} macros insert the value of the glue parameter
-@code{\abovecolumnskip}
-@findex abovecolumnskip
-before the multicolumn text, and the value of the glue parameter
-@code{\belowcolumnskip}
-@findex belowcolumnskip
-after it. The default value for both of these parameters is
-@code{\bigskipamount}, i.e., one linespace in plain @TeX{}.
-
-The macros take into account only the insertion classes
-@cindex insertion classes
-defined by plain @TeX{}; namely, footnotes and @code{\topinsert}s. If
-you have additional insertion classes, you will need to change
-the implementation.
-
-Also, Eplain makes insertions the full page width. There is no
-provision for column-width insertions.
-
-
-@node Footnotes
-@section Footnotes
-
-@cindex footnotes, numbered
-The most common reference mark for footnotes is a raised number,
-incremented on each footnote. The @code{\numberedfootnote}
-@findex numberedfootnote
-macro provides this. It takes one argument, the footnote text.
-
-If your document uses only numbered footnotes, you could make typing
-@code{\numberedfootnote} more convenient with a command such as:
-
-@example
-\let\footnote = \numberedfootnote
-@end example
-
-After doing this, you can type your footnotes as
-@code{\footnote@{@var{footnote text}@}}, instead of as
-@code{\numberedfootnote@{@var{footnote text}@}}.
-
-Eplain keeps the current footnote number in the count register
-@code{\footnotenumber}. So, to reset the footnote number to zero,
-as you might want to do at, for example, the beginning of a chapter, you
-could say @code{\footnotenumber=0}.
-
-Plain @TeX{} separates the footnote marker from the footnote text by
-an en space (it uses the @code{\textindent} macro). In Eplain, you can
-change this space by setting the dimension register
-@code{\footnotemarkseparation}.
-@findex footnotemarkseparation
-The default is still an en.
-
-You can produce a space between footenotes by setting the glue
-register @code{\interfootnoteskip}.
-@findex interfootnoteskip
-The default is zero.
-
-@code{\parskip} is also set to zero by default before the beginning of
-each footnote (but not for the text of the footnote).
-
-You can also control footnote formatting in a more general way:
-Eplain expands the token register @code{\everyfootnote}
-@findex everyfootnote
-before a footnote is typeset, but after the default values for all the
-parameters have been established. For example, if you want your
-footnotes to be printed in seven-point type, indented by one inch, you
-could say:
-@example
-\everyfootnote = @{\sevenrm \leftskip = 1in@}
-@end example
-
-By default, an @code{\hrule} is typeset above each group of footnotes
-on a page. You can control the dimensions of this rule by setting
-the dimension registers @code{\footnoterulewidth}
-@findex footnoterulewidth
-and @code{\footnoteruleheight}.
-@findex footnoteruleheight
-The space between the rule and the first footnote on the page is
-determined by the dimension register @code{\belowfootnoterulespace}.
-@findex belowfootnoterulespace
-If you don't want any rule at all, set @code{\footenoteruleheight=0pt},
-and, most likely, @code{\belowfootnoterulespace=0pt}. The defaults for
-these parameters typeset the rule in the same way as plain @TeX{}: the
-rule is 0.4 points high, 2 true inches wide, with 2.6 points below it.
-
-The space above the rule and below the text on the page is controlled
-by the glue register @code{\skip\footins}. The default is a plain @TeX{}
-@code{\bigskip}.
-
-Eplain can create hypertext links for the footnote marks; @pxref{Footnote
-hyperlinks}.
-
-
-
-@node Fractions
-@section Fractions
-
-@cindex fractions
-Exercise 11.6 of @cite{The @TeX{}book} describes a macro @code{\frac}
-@findex frac
-for setting fractions, but @code{\frac} never made it into plain @TeX{}.
-So Eplain includes it.
-
-@code{\frac} typesets the numerator and denominator in
-@code{\scriptfont0}, slightly raised and lowered. The numerator and
-denominator are separated by a slash. The denominator must be enclosed
-in braces if it's more than one token long, but the numerator need not
-be. (This is a consequence of @code{\frac} taking delimited arguments;
-see page@tie{}203 of @cite{The @TeX{}book} for an explanation of
-delimited macro arguments.)
-
-For example, @code{\frac 23/@{64@}} turns `23/64' into
-@tex
-\leavevmode
- \kern-.1em \raise .5ex \hbox{\the\scriptfont0 23}@comment
- \kern-.1em $/$@comment
- \kern-.15em \lower .25ex \hbox{\the\scriptfont0 64}@comment
-@end tex
-@ifinfo
-23/64 (you can't see the difference in the Info file)@comment
-@end ifinfo
-.
-
-
-@node Paths
-@section Paths
-
-@cindex pathnames, breaking
-@cindex filenames, breaking
-@cindex electronic mail addresses, breaking
-
-When you typeset long pathnames, electronic mail addresses, or other
-such ``computer'' names, you would like @TeX{} to break lines at
-punctuation characters within the name, rather than trying to find
-hyphenation points within the words. For example, it would be better to
-break the email address @code{letters@@alpha.gnu.ai.mit.edu} at the
-@samp{@@} or a @samp{.}, rather than at the hyphenation points in
-@samp{letters} and @samp{alpha}.
-
-@findex path
-If you use the @code{\path} macro to typeset the names, @TeX{} will find
-these good breakpoints. The argument to @code{\path} is delimited by
-any character other other than @samp{\} which does not appear in the
-name itself.
-@samp{|} is often a good choice, as in:
-@example
-\path|letters@@alpha.gnu.ai.mit.edu|
-@end example
-
-@findex discretionaries
-You can control the exact set of characters at which breakpoints will be
-allowed by calling @code{\discretionaries}. This takes the same sort of
-delimited argument; any character in the argument will henceforth be a valid
-breakpoint within @code{\path}. The default set is essentially all the
-punctuation characters:
-@example
-\discretionaries |~!@@$%^&*()_+`-=#@{@}[]:";'<>,.?\/|
-@end example
-
-@findex specialpathdelimiters @r{(conditional)}
-If for some reason you absolutely must use @code{\} as the delimiter
-character for @code{\path}, you can set
-@code{\specialpathdelimiterstrue}. (Other delimiter characters can
-still be used.) @TeX{} then processes the @code{\path} argument
-about four times more slowly.
-
-@cindex URL for @file{path.sty}
-The @code{\path} macro comes from @file{path.sty}, written by Nelson
-Beebe and Philip Taylor and available at
-@url{http://www.ctan.org/tex-archive/macros/latex/contrib/misc/path.sty}.
-
-
-@node Logos
-@section Logos
-
-@cindex logos
-@cindex names, of @TeX{} variants
-
-Eplain redefines the @code{\TeX}
-@findex TeX
-macro of plain @TeX{} to end with @code{\null}, so that the proper
-spacing is produced when @code{\TeX} is used at the end of a sentence.
-The other @dots{}@TeX{} macros listed here do this, also.
-
-Eplain defines
-@code{\AMSTeX},
-@cindex AMS@TeX{}
-@findex AMSTeX
-@code{\BibTeX}
-@cindex Bib@TeX{}
-@findex BibTeX
-@code{\AMSLaTeX},
-@cindex AMS@LaTeX{}
-@findex AMSLaTeX
-@code{\LAMSTeX},
-@cindex LAMS@TeX{}
-@findex LAMSTeX
-@code{\LaTeX}
-@cindex @LaTeX{}
-@findex LaTeX
-@code{\MF},
-@cindex Metafont
-@findex MF
-and @code{\SLiTeX}
-@cindex SLi@TeX{}
-@findex SLiTeX
-to produce their respective logos. (Sorry, the logos are not shown
-here.) Some spelling variants of these are also supported.
-
-@cindex URL for @file{texnames.sty}
-All these macros come from @file{texnames.sty}, compiled by Nelson
-Beebe and available at
-@url{http://www.ctan.org/tex-archive/info/biblio/texnames.sty}.
-
-
-@node Boxes
-@section Boxes
-
-@cindex black boxes
-@cindex rectangles
-The solid rectangle that Eplain uses as a marker in unordered lists
-(@pxref{Lists}) is available by itself: just say @code{\blackbox}.
-@findex blackbox
-
-You can create black boxes of arbitrary size with @code{\hrule} or
-@code{\vrule}.
-
-@cindex open boxes
-@cindex boxes, open
-You can also get unfilled rectangles with @code{\makeblankbox}.
-@findex makeblankbox
-This takes two explicit arguments: the height and depth of the rules that
-define the top and bottom of the rectangle. (The two arguments are
-added to get the width of the left and right borders, so that the
-thickness of the border is the same on all four sides.) It also uses,
-as implicit arguments, the dimensions of @code{\box0} to define the
-dimensions of the rectangle it produces. (The contents of @code{\box0}
-are ignored.)
-
-Here is an example. This small raised open box is suitable for
-putting next to numbers in, e.g., a table of contents.
-
-@example
-\def\openbox@{%
- \ht0 = 1.75pt \dp0 = 1.75pt \wd0 = 3.5pt
- \raise 2.75pt \makeblankbox@{.2pt@}@{.2pt@}
-@}
-@end example
-
-Finally, you can put a box around arbitrary text with @code{\boxit}.
-@findex boxit
-This takes one argument, which must itself be a (@TeX{}) box, and puts a
-printed box around it, separated by @code{\boxitspace}
-@findex boxitspace
-white space (3 points by default) on all four sides. For example:
-
-@example
-\boxit@{\hbox@{This text is boxed.@}@}
-@end example
-
-The reason that the argument must be a box is that when the text is
-more than one line long, @TeX{} cannot figure out the line length for
-itself. Eplain does set @code{\parindent} to zero inside @code{\boxit},
-since it is very unlikely you would want indentation there. (If you do,
-you can always reset it yourself.)
-
-@code{\boxit} uses @code{\ehrule} and @code{\evrule} so that you can
-easily adjust the thicknesses of the box rules. @xref{Rules}.
-
-
-@node Checking for PDF output
-@section Checking for PDF output
-
-@cindex URL for pdf@TeX{}
-@cindex PDF output
-@pindex pdftex
-@pindex .pdf @r{files}
-pdf@TeX{} is a @TeX{} variant that can output both @file{.dvi} and
-@file{.pdf} (Adobe's Portable Document Format) files (see
-@url{http://www.ctan.org/tex-archive/systems/pdftex/}). You might
-sometimes want to know whether the target format is @file{.pdf} or
-@file{.dvi}. The @code{\ifpdf}
-@findex ifpdf
-switch can be used to detect pdf@TeX{} in PDF mode:
-
-@example
-\ifpdf
- This text is produced when pdfTeX is in PDF mode.
-\else
- This text is produced when pdfTeX is in DVI mode,
- or when some program other than pdfTeX is used.
-\fi
-@end example
-
-Keep in mind that @code{\ifpdf} is set based on the value of the
-@code{\pdfoutput}
-@findex pdfoutput
-primitive of pdf@TeX{} at the time Eplain is loaded. If you change
-the value of @code{\pdfoutput} after you load Eplain, @code{\ifpdf}
-will not reflect the change.
-
-@cindex URL for @file{ifpdf.sty}
-@cindex Oberdiek, Heiko
-Eplain defines @code{\ifpdf} by incorporating Heiko Oberdiek's
-@file{ifpdf.sty}, which is available at
-@url{http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/ifpdf.sty}.
-
-
-@node Loading LaTeX packages
-@section Loading @LaTeX{} packages
-
-@cindex @LaTeX{} packages
-@cindex packages, @LaTeX{}
-@pindex .sty @r{files}
-@pindex .cls @r{files}
-Eplain provides a limited support for loading @LaTeX{} packages
-(@file{.sty} files---not @file{.cls}). This will mostly work for
-packages which were designed with plain @TeX{} compatibility in mind,
-which means that most @LaTeX{} packages cannot be loaded. The
-packages which are known to work are listed below (@pxref{Packages
-known to work}). If you discover a working package which is not in
-the list, please report it to the Eplain mailing list
-(@pxref{Introduction}).
-
-@cindex graphics collection, @LaTeX{}
-@cindex @LaTeX{} graphics collection
-@pindex miniltx.tex
-@cindex Carlisle, David
-@cindex Rahtz, Sebastian
-To set up a pseudo-@LaTeX{} environment for the packages, Eplain uses
-@file{miniltx.tex}
-(@url{http://www.ctan.org/tex-archive/macros/plain/graphics/miniltx.tex})
-from the @LaTeX{} graphics collection, written by David Carlisle and
-Sebastian Rahtz (the collection is available at
-@url{http://www.ctan.org/tex-archive/macros/latex/required/graphics/}).
-Eplain extends @file{miniltx.tex} to provide some additional features,
-e.g., support for package options.
-
-
-@menu
-* The \usepackage command:: Command to load packages.
-* Environment for loading packages:: Environment for the \usepackage commands.
-* Packages known to work:: Supported packages.
-* Packages known not to work:: Packages known not to work with Eplain.
-@end menu
-
-@node The \usepackage command
-@subsection The @code{\usepackage} command
-
-@findex usepackage
-@code{\usepackage} loads a @LaTeX{} package. Its syntax is similar to
-that of @LaTeX{}'s @code{\usepackage} command:
-
-@example
-\usepackage[@var{options}]@{@var{packages}@}[@var{version}]
-@end example
-
-@noindent where @var{options} is a comma-separated list of package
-options, @var{packages} is a comma-separated list of packages to load
-(without the @file{.sty} suffix), and @var{version} is a package
-version number given as a date in the format @samp{YYYY/MM/DD}. If an
-older version of the package is found, a warning is issued. If
-several packages are loaded within a single @code{\usepackage}
-command, the @var{options} will be applied to each of the packages.
-As usual, parameters in square brackets are optional and can be
-omitted (together with the square brackets).
-
-For example:
-
-@example
-\usepackage[foo,bar]@{pack1,pack2@}[2005/08/29]
-@end example
-
-@noindent will load packages @samp{pack1} and @samp{pack2}, each with
-the options @samp{foo} and @samp{bar}, and will check that each of the
-packages are dated 2005/08/29 or newer.
-
-
-@node Environment for loading packages
-@subsection Environment for loading packages
-
-@findex beginpackages
-@findex endpackages
-Some packages request that certain commands are executed after all
-packages have been loaded. In @LaTeX{}, this means that the commands
-are executed at the beginning of the document, after the so-called
-@dfn{preamble}. Neither plain @TeX{} nor Eplain have any kind of
-preamble; therefore, Eplain requires that all packages be loaded inside
-a @code{\beginpackages...\endpackages} block, for example:
-
-@example
-\beginpackages
- \usepackage[foo,bar]@{pack1@}
- \usepackage@{pack2@}
-\endpackages
-@end example
-
-@noindent This requirement enables Eplain to execute the ``delayed''
-commands at the end of the @code{\beginpackages...\endpackages} block.
-
-For the same reason, it is advisable to specify only one such block
-per document, just like there is only one preamble in @LaTeX{}.
-
-
-@node Packages known to work
-@subsection Packages known to work
-
-@cindex @LaTeX{} packages
-@cindex packages, @LaTeX{}
-The following table lists packages that had been tested and are known
-to work with Eplain, and locations where you can find manuals for
-these packages. Some of the short descriptions of the packages were
-taken from the documentation for those packages.
-
-@table @asis
-@item autopict (@samp{2001/06/04 v1.1j Picture mode autoload file})
-@pindex autopict.sty
-@url{http://tug.org/eplain/ltpictur.pdf}
-
-@cindex picture mode
-@findex begin@{picture@}
-@findex end@{picture@}
-This is the @LaTeX{} ``picture mode'', started by
-@code{\begin@{picture@}} and ended by @code{\end@{picture@}} (in
-@LaTeX{}, this package is not explicitly loaded since it is part of
-the @LaTeX{} kernel). It provides commands to draw simple figures
-inside your document without resorting to any external tools.
-
-@item color (@samp{1999/02/16 v1.0i Standard LaTeX Color (DPC)})
-@pindex color.sty
-@itemx graphics (@samp{2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR)})
-@pindex graphics.sty
-@itemx graphicx (@samp{1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)})
-@pindex graphicx.sty
-@url{http://www.ctan.org/tex-archive/macros/latex/required/graphics/grfguide.pdf}
-
-@cindex graphics collection, @LaTeX{}
-@cindex @LaTeX{} graphics collection
-@cindex color
-@cindex rotation
-@cindex scaling
-These packages are from the @LaTeX{} graphics collection. They
-provide commands for changing text/page colors, text rotation and
-scaling, and much more.
-
-@item psfrag (@samp{1998/04/11 v3.04 PSfrag (MCG)})
-@pindex psfrag.sty
-@url{http://www.ctan.org/tex-archive/macros/latex/contrib/psfrag/pfgguide.pdf}
-
-@cindex Encapsulated PostScript
-@cindex EPS
-@pindex .eps @r{files}
-PSfrag allows the user to precisely overlay Encapsulated PostScript
-(EPS) files with arbitrary (La)@TeX{} constructions. In order to
-accomplish this, the user places a simple text ``tag'' in the graphics
-file, as a ``position marker'' of sorts. Then, using simple
-(La)@TeX{} commands, the user instructs PSfrag to remove that tag from
-the figure, and replace it with a properly sized, aligned, and rotated
-(La)@TeX{} equation.
-
-@item url (@samp{2005/06/27 ver 3.2 Verb mode for urls, etc.})
-@pindex url.sty
-@url{http://www.ctan.org/tex-archive/macros/latex/contrib/misc/url.sty}
-
-@cindex pathnames, breaking
-@cindex filenames, breaking
-@cindex electronic mail addresses, breaking
-This package provides a form of @code{\verbatim} that allows
-line breaks at certain characters or combinations of characters,
-accepts reconfiguration, and can usually be used in the argument to
-another command. It is intended for email addresses, hypertext links,
-directories/paths, etc., which normally have no spaces.
-
-Eplain can create hypertext links with the @code{\url} command;
-@pxref{URL hyperlinks}.
-@end table
-
-
-@node Packages known not to work
-@subsection Packages known not to work
-
-@cindex @LaTeX{} packages
-@cindex packages, @LaTeX{}
-The following packages are known not to work with Eplain:
-
-@table @asis
-@item pict2e (@samp{2005/07/15 v0.2r Improved picture commands (HjG,RN)})
-@pindex pict2e.sty
-@url{http://www.ctan.org/tex-archive/macros/latex/contrib/pict2e/}
-
-@item xcolor (@samp{2005/06/06 v2.03 LaTeX color extensions (UK)})
-@pindex xcolor.sty
-@url{http://www.ctan.org/tex-archive/macros/latex/contrib/xcolor/}
-@end table
diff --git a/Master/texmf-dist/doc/eplain/demo/Makefile b/Master/texmf-dist/doc/eplain/demo/Makefile
new file mode 100644
index 00000000000..45ba215c7aa
--- /dev/null
+++ b/Master/texmf-dist/doc/eplain/demo/Makefile
@@ -0,0 +1,41 @@
+# Makefile for the Eplain demos. This file is public domain.
+
+PDFTEX = pdftex
+DVIPDFM = dvipdfmx
+TEXI2PDF = texi2dvi --pdf
+
+
+.PHONY: all pdftex dvipdfm dvips mostlyclean clean distclean maintainer-clean
+
+
+all: pdftex dvipdfm dvips
+
+#
+# Documents which have to be processed with pdfTeX.
+#
+pdftex: xhyper.pdf lscommnt.pdf
+
+xhyper.pdf: xhyper.tex ctan_lion_350x350.png
+ PDFLATEX=$(PDFTEX) $(TEXI2PDF) xhyper.tex
+
+lscommnt.pdf: lscommnt.tex
+ PDFLATEX=$(PDFTEX) $(TEXI2PDF) lscommnt.tex
+
+#
+# Documents which have to be processed with dvipdfm(x).
+#
+dvipdfm:
+
+#
+# Documents which have to be processed with dvips.
+#
+dvips:
+
+
+clean mostlyclean:
+ rm -f xhyper.{aux,log} lscommnt.log
+
+distclean: clean
+ rm -f xhyper.pdf lscommnt.pdf
+
+maintainer-clean: distclean
diff --git a/Master/texmf-dist/doc/eplain/demo/lscommnt.tex b/Master/texmf-dist/doc/eplain/demo/lscommnt.tex
new file mode 100644
index 00000000000..26d3ec76164
--- /dev/null
+++ b/Master/texmf-dist/doc/eplain/demo/lscommnt.tex
@@ -0,0 +1,47 @@
+% (This file is public domain.)
+% Demonstrate how Eplain can be used to include a TeX source file
+% verbatim, typesetting comments in colored italic typewriter type.
+
+% Load Eplain and LaTeX's color.sty package.
+\input eplain
+\beginpackages \usepackage{color} \endpackages
+\nopagenumbers % Disable page numbers.
+\font\commentfont = cmitt10 % Font for the comments (italic \tt).
+% We'll define some `protected' macros with `@' in their names.
+\makeatletter
+% Define an equivalent of Eplain's \letreturn, to be able to assign
+% various actions to the (active) percent character.
+\begingroup \makeactive\%
+ \gdef\letpercent{\let%}
+\endgroup
+% The listing hook to be called in \setuplistinghook, see below. It
+% makes `%' active and assigns it a `start comment' action.
+\def\hlightcommentslisting{\makeactive\% \letpercent\start@comment}%
+% This is what `%' is aliased to before a comment is started.
+\def\start@comment{%
+ \leavevmode % Needed in the very first line of the input to process
+ % the new par (possibly inserting line number) before we
+ % kick in with the color and stuff.
+ \begingroup % Isolate color and font changes and the redefinitions.
+ \commentfont
+ \color[cmyk]{0.28,1,1,0.35}%
+ \percentchar % Produce the actual `%' and
+ \letpercent\percentchar % make all following `%'s do the same.
+ \letreturn\end@comment % Call \end@comment at end-of-line.
+}
+% \end@comment (alias for ^^M inside a comment) will end the comment
+% started by \start@comment. We make ^^M active temporarily so that
+% the active version of ^^M gets "frozen" into \end@comment.
+\begingroup \makeactive\^^M % Avoid ^^M's from here on.
+ \gdef\end@comment{\endgroup ^^M}%
+\endgroup
+\resetatcatcode % Make `@' again inaccessible for use in macro names.
+
+% Define \setuplistinghook to setup comments highlighting, line
+% numbering and omitting the last (empty) line of input.
+\def\setuplistinghook{\hlightcommentslisting \linenumberedlisting
+ \nolastlinelisting}
+% Isn't this fun? This file typesets itself, with the extra bonus of
+% the pretty-printed comments and numbered source lines!
+\listing{lscommnt}
+\bye
diff --git a/Master/texmf-dist/doc/eplain/demo/xhyper.tex b/Master/texmf-dist/doc/eplain/demo/xhyper.tex
new file mode 100644
index 00000000000..54742cb50b5
--- /dev/null
+++ b/Master/texmf-dist/doc/eplain/demo/xhyper.tex
@@ -0,0 +1,190 @@
+% (This file is public domain.)
+%
+% This file demonstrates the following features of Eplain:
+%
+% - explicit and implicit hyperlinks;
+% - symbolic cross-references;
+% - inserting external graphics using |\includegraphics| from
+% the \LaTeX\ package |graphicx.sty|.
+% - rotating text using |\rotatebox| from |graphicx.sty|.
+%
+% The compiled demo can be downloaded from
+%
+% http://tug.org/eplain/demo
+%
+% In order to compile this file yourself, you will need the CTAN lion
+% drawing by Duane Bibby from
+%
+% ftp://tug.ctan.org/ftpmaint/CTAN_lion/ctan_lion_350x350.png
+%
+% (thanks, |www.ctan.org|). Place the image file in the same
+% directory with this file, and change to that directory. Now, to
+% produce a PDF, run twice the command
+%
+% pdftex xhyper.tex
+%
+% During the first run, Eplain will write the information about the
+% cross-references into |xhyper.aux|, and during the second run this
+% information will be read by Eplain to typeset the references.
+%
+% Demo case:
+%
+% Suppose you are using pdf\TeX, have a figure you want to insert
+% scaled to $200\,pt$ horizontally, and you want this figure to
+% completely fill the PDF viewer's window whenever the reader
+% selects a link pointing to this figure. Additionally, you want to
+% typeset some text as live hyperlinks, clicking on which will start
+% a Web browser and open a URL.
+
+\input eplain
+
+% Load \LaTeX\ packages.
+\beginpackages
+ % |url.sty| provides the |\url| command which we will use to typeset
+ % a URL. We request that |url.sty| be the version from June~27,
+ % 2005, or later, because earlier versions had problems interacting
+ % with plain \TeX.
+ \usepackage{url}[2005/06/27]
+ % |color.sty| provides support for colored text; all hyperlinks are
+ % automatically colored by Eplain when this package is loaded. We give
+ % the |dvipsnames| option because we want to use named colors from the
+ % |dvips| graphics driver.
+ \usepackage[dvipsnames]{color}
+ % Finally, we load |graphicx.sty|, for the macros |\includegraphics|
+ % and |\rotatebox|.
+ \usepackage{graphicx}
+\endpackages
+
+% Remember that hyperlinks are off by default. Therefore, we need to
+% enable them.
+\enablehyperlinks
+
+% Customize some hyperlink options. First, we set border width to~$0$
+% for all links to get rid of the default boxes around links (we
+% prefer colored links over the boxed links). Next, we say that all
+% links created by the |url| hyperlink group (which means the |\url|
+% command from |url.sty|) must be colored using the named color
+% |BlueViolet|.
+\hlopts{bwidth=0}
+\hlopts[url]{colormodel=named,color=BlueViolet}
+
+% Inhibit page numbering (we have only one page).
+\nopagenumbers
+
+% Define a class word for the cross-reference class |figure|. This
+% word, when defined, will be automatically prepended by Eplain to the
+% reference created by |\ref| (read on to see its use).
+\def\figureword{fig.}
+
+% Allocate a count register for the figure's number, and a box
+% register which we'll use to measure dimensions of the image.
+\newcount\fignumber
+\newbox\imgbox
+
+% Now comes the fun part--constructing the figure for the image of the
+% \CTAN\ lion. We define a macro
+%
+% \fig{LABEL}{FILENAME}{CAPTION}{WIDTH}
+%
+% which creates a figure using LABEL for the cross-reference and
+% hyperlink label, reading the image from file FILENAME, using CAPTION
+% to name the figure, and WIDTH to scale the image horizontally.
+\def\fig#1#2#3#4{%
+ % Leave some space above the figure. This will also ensure that we
+ % are in the vertical mode before we produce a |\vbox|.
+ \medskip
+ % Advance the figure number. |\global| ensures that the change to
+ % the count register is global, even when |\fig| is buried inside a
+ % group.
+ \global\advance\fignumber by 1
+ % We use |\includegraphics| (from |graphicx.sty|) to load the image,
+ % scaled to the specified width, into our ``measuring'' box
+ % |\imgbox|.
+ \setbox\imgbox = \hbox{\includegraphics[width=#4]{#2}}%
+ % To make the demo even more exciting, let's put the figure's
+ % caption to the left of the image into the |\indent| space of the
+ % new paragraph, and rotate the caption~$90^\circ$.
+ \textindent{%
+ \rotatebox{90}{F{\sc IGURE}~\the\fignumber. #3}%
+ }%
+ % Continue the paragraph by constructing a |\vbox| with the image of
+ % the lion. We use |\definexref| to define the cross-reference
+ % label.
+ \vbox{%
+ % In addition to the cross-reference label, |\definexref| will
+ % create a hyperlink destination with the same label. Therefore,
+ % we customize this destination to do what we need. We say that
+ % destination type for the hyperlink group |definexref| (to which
+ % |\definexref| belongs) should be |fitr|. This destination type
+ % will magnify the rectangle specified by the options |width|,
+ % |height| and |depth| to the PDF viewer's window. Therefore, we
+ % set those options accordingly with |\hldestopts| (notice the use
+ % of |depth| instead of |height|---we will want the rectangle to
+ % extend {\it downward}, to cover the image which will come
+ % next). Notice that these settings will be isolated within the
+ % current group (i.e., the |\vbox| we're constructing).
+ \hldesttype[definexref]{fitr}%
+ \hldestopts[definexref]{width=\wd\imgbox,height=0pt,depth=\ht\imgbox}%
+ % We define a symbolic label so that we can later refer
+ % to the figure with |\ref|. The command |\definexref| does
+ % exactly that. The last argument to |\definexref| specifies
+ % class of the label, which determines the word used by |\ref| in
+ % front of the reference text (remember that we've defined
+ % |\figureword| above).
+ \definexref{#1}{\the\fignumber}{figure}%
+ % Finally, produce the image which we've been stashing in the box
+ % register |\imgbox|.
+ \box\imgbox
+ }%
+ \medskip
+}
+
+% Create the figure.
+\fig{CTANlion}{ctan_lion_350x350}{Lion in the archives}{200pt}
+
+% Finished with the fun part, we can relax and typeset some
+% hyperlinks. The easiest way to do that is to use the |\ref|
+% cross-reference command. We can even pass an optional argument
+% (|the lion in|), which will be placed before the class word (|fig.|)
+% and become part of the link (to make sure the reader does not have
+% to aim too hard).
+Show me \ref[the lion in]{CTANlion}.
+
+% If you are the restless kind, here's another way to create a
+% hyperlink to the image: we create a link explicitly by using
+% |\hlstart ... \hlend|. We don't specify the link type, therefore
+% the default type |name| will be used (these are ``named links'',
+% i.e., links pointing to destinations identified by labels). In the
+% options argument, we specify that the border of the link should be
+% inverted when the user clicks the link (|hlight=O|), and also set
+% special color for this link, overriding the default dark-red. The
+% label for the destination is the same as the cross-reference label,
+% |CTANlion|.
+Show me
+\hlstart{}{hlight=O,colormodel=named,color=OliveGreen}{CTANlion}
+ the CTAN lion\hlend.
+
+% Let's now point somewhere outside our document. Eplain homepage is
+% a good target. In the similar spirit, let's consider two
+% approaches. The easy one is to use the |\url| command from
+% |url.sty|. Remember that we have customized the color of |url|
+% hyperlinks, so this one will show up with a different color than the
+% default dark-red.
+Take me to \url{http://tug.org/eplain}.
+
+% The second approach is to create an explicit URL link. We specify
+% yet another border highlighting mode, |P|, which means that the
+% region underneath the bounding box of the link will be drawn inset
+% into the page. Also, let's set the color of the hyperlink to an RGB
+% color |0.4,0.1,0.4|. Since we cannot use commas to separate the
+% color elements inside the options parameter to |\hlstart| (commas
+% there separate options), we have to first create a user-defined
+% color with |\definecolor| from |color.sty|, and use that in
+% |\hlstart|.
+\definecolor{mycolor}{rgb}{0.4,0.1,0.4}
+
+Take me to
+\hlstart{url}{hlight=P,colormodel=,color=mycolor}{http://tug.org/eplain}
+ Eplain homepage\hlend.
+
+\bye
diff --git a/Master/texmf-dist/doc/eplain/base/eplain.html b/Master/texmf-dist/doc/eplain/doc/eplain.html
index 638a3492141..968582fd698 100644
--- a/Master/texmf-dist/doc/eplain/base/eplain.html
+++ b/Master/texmf-dist/doc/eplain/doc/eplain.html
@@ -1,22 +1,23 @@
<html lang="en">
<head>
-<title>Expanded Plain TeX</title>
+<title>Eplain: Expanded Plain TeX</title>
<meta http-equiv="Content-Type" content="text/html">
-<meta name="description" content="Expanded Plain TeX">
+<meta name="description" content="Eplain: Expanded Plain TeX">
<meta name="generator" content="makeinfo 4.8">
<link title="Top" rel="top" href="#Top">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
-This manual documents the Eplain macros, version 3.0,
-September 2005. Eplain provides functionality for plain TeX that
+This manual documents the Eplain macros, version 3.1,
+December 2006. Eplain provides functionality for plain TeX that
is intended to be useful regardless of how your document is actually
formatted.
Most of this manual is in the public domain, like most of the Eplain
code. It was mostly written by Karl Berry, starting in 1989. Steven
Smith wrote the documentation for the commutative diagram macros; this
-chapter is under the GNU General Public License. Oleg Katsitadze and
-Adam Lewenberg have made additions and corrections.-->
+chapter is under the GNU General Public License. Adam Lewenberg has
+made additions and corrections. Oleg Katsitadze has helped with writing
+the section on LaTeX packages and the chapter on hyperlinks.-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
@@ -31,7 +32,201 @@ Adam Lewenberg have made additions and corrections.-->
--></style>
</head>
<body>
-<h1 class="settitle">Expanded Plain TeX</h1>
+<h1 class="settitle">Eplain: Expanded Plain TeX</h1>
+<div class="shortcontents">
+<h2>Short Contents</h2>
+<ul>
+<li><a href="#toc_Top">Eplain</a></li>
+<li><a href="#toc_Introduction">1 Introduction</a></li>
+<li><a href="#toc_Installation">2 Installation</a></li>
+<li><a href="#toc_Invoking-Eplain">3 Invoking Eplain</a></li>
+<li><a href="#toc_User-definitions">4 User definitions</a></li>
+<li><a href="#toc_Hyperlinks">5 Hyperlinks</a></li>
+<li><a href="#toc_Arrow-theoretic-diagrams">6 Arrow theoretic diagrams</a></li>
+<li><a href="#toc_Programming-definitions">7 Programming definitions</a></li>
+<li><a href="#toc_Demo-files">8 Demo files</a></li>
+<li><a href="#toc_Macro-index">Macro index</a></li>
+<li><a href="#toc_Concept-index">Concept index</a></li>
+</ul>
+</div>
+
+
+
+ <div class="contents">
+<h2>Table of Contents</h2>
+<ul>
+<li><a name="toc_Top" href="#Top">Eplain</a>
+<li><a name="toc_Introduction" href="#Introduction">1 Introduction</a>
+<li><a name="toc_Installation" href="#Installation">2 Installation</a>
+<li><a name="toc_Invoking-Eplain" href="#Invoking-Eplain">3 Invoking Eplain</a>
+<li><a name="toc_User-definitions" href="#User-definitions">4 User definitions</a>
+<ul>
+<li><a href="#Diagnostics">4.1 Diagnostics</a>
+<li><a href="#Rules">4.2 Rules</a>
+<li><a href="#Citations">4.3 Citations</a>
+<ul>
+<li><a href="#Formatting-citations">4.3.1 Formatting citations</a>
+<li><a href="#Formatting-bibliographies">4.3.2 Formatting bibliographies</a>
+</li></ul>
+<li><a href="#Displays">4.4 Displays</a>
+<ul>
+<li><a href="#Formatting-displays">4.4.1 Formatting displays</a>
+</li></ul>
+<li><a href="#Time-of-day">4.5 Time of day</a>
+<li><a href="#Lists">4.6 Lists</a>
+<ul>
+<li><a href="#Formatting-lists">4.6.1 Formatting lists</a>
+</li></ul>
+<li><a href="#Verbatim-listing">4.7 Verbatim listing</a>
+<li><a href="#Contents">4.8 Contents</a>
+<ul>
+<li><a href="#Writing-the-_002etoc-file">4.8.1 Writing the <tt>.toc</tt> file</a>
+<li><a href="#Reading-the-_002etoc-file">4.8.2 Reading the <tt>.toc</tt> file</a>
+<li><a href="#Changing-the-_002etoc-file_0027s-root-name">4.8.3 Changing the <tt>.toc</tt> file's root name</a>
+<li><a href="#Alternative-contents-files">4.8.4 Alternative contents files</a>
+</li></ul>
+<li><a href="#Cross_002dreferences">4.9 Cross-references</a>
+<ul>
+<li><a href="#Defining-generic-references">4.9.1 Defining generic references</a>
+<li><a href="#Using-generic-references">4.9.2 Using generic references</a>
+</li></ul>
+<li><a href="#Page-references">4.10 Page references</a>
+<li><a href="#Equation-references">4.11 Equation references</a>
+<ul>
+<li><a href="#Formatting-equation-references">4.11.1 Formatting equation references</a>
+<li><a href="#Subequation-references">4.11.2 Subequation references</a>
+</li></ul>
+<li><a href="#Indexing">4.12 Indexing</a>
+<ul>
+<li><a href="#Indexing-terms">4.12.1 Indexing terms</a>
+<ul>
+<li><a href="#Indexing-commands">4.12.1.1 Indexing commands</a>
+<li><a href="#Modifying-index-entries">4.12.1.2 Modifying index entries</a>
+<li><a href="#Index-entries-with-special-characters">4.12.1.3 Index entries with special characters</a>
+<li><a href="#Proofing-index-terms">4.12.1.4 Proofing index terms</a>
+</li></ul>
+<li><a href="#Typesetting-an-index">4.12.2 Typesetting an index</a>
+<li><a href="#Customizing-indexing">4.12.3 Customizing indexing</a>
+</li></ul>
+<li><a href="#Justification">4.13 Justification</a>
+<li><a href="#Tables">4.14 Tables</a>
+<li><a href="#Margins">4.15 Margins</a>
+<li><a href="#Multiple-columns">4.16 Multiple columns</a>
+<li><a href="#Footnotes">4.17 Footnotes</a>
+<li><a href="#Fractions">4.18 Fractions</a>
+<li><a href="#Paths">4.19 Paths</a>
+<li><a href="#Logos">4.20 Logos</a>
+<li><a href="#Boxes">4.21 Boxes</a>
+<li><a href="#Checking-for-PDF-output">4.22 Checking for PDF output</a>
+<li><a href="#Loading-LaTeX-packages">4.23 Loading LaTeX packages</a>
+<ul>
+<li><a href="#The-_005cusepackage-command">4.23.1 The <code>\usepackage</code> command</a>
+<li><a href="#Environment-for-loading-packages">4.23.2 Environment for loading packages</a>
+<li><a href="#Packages-known-to-work">4.23.3 Packages known to work</a>
+<li><a href="#Packages-known-not-to-work">4.23.4 Packages known not to work</a>
+</li></ul>
+</li></ul>
+<li><a name="toc_Hyperlinks" href="#Hyperlinks">5 Hyperlinks</a>
+<ul>
+<li><a href="#Introduction-to-hyperlinks">5.1 Introduction to hyperlinks</a>
+<li><a href="#Explicit-hyperlinks">5.2 Explicit hyperlinks</a>
+<li><a href="#Implicit-hyperlinks">5.3 Implicit hyperlinks</a>
+<ul>
+<li><a href="#General-hyperlinks">5.3.1 General hyperlinks: hrefint, hrefext</a>
+<li><a href="#URL-hyperlinks">5.3.2 URL hyperlinks: url</a>
+<li><a href="#Citation-hyperlinks">5.3.3 Citation hyperlinks: cite, bib</a>
+<li><a href="#List-hyperlinks">5.3.4 List hyperlinks: li</a>
+<li><a href="#Cross_002dreference-hyperlinks">5.3.5 Cross-reference hyperlinks: definexref, ref</a>
+<li><a href="#Page-reference-hyperlinks">5.3.6 Page reference hyperlinks: xrdef, xref</a>
+<li><a href="#Equation-reference-hyperlinks">5.3.7 Equation reference hyperlinks: eq</a>
+<li><a href="#Index-hyperlinks">5.3.8 Index hyperlinks: idx</a>
+<ul>
+<li><a href="#Exact-destinations-for-index-terms">5.3.8.1 Exact destinations for index terms</a>
+<li><a href="#Page-destinations-for-index-terms">5.3.8.2 Page destinations for index terms</a>
+<li><a href="#Choosing-destination-placement">5.3.8.3 Choosing destination placement</a>
+<li><a href="#Index-page-list-and-page-range-parsers">5.3.8.4 Index page list and page range parsers</a>
+<li><a href="#Hyperlinks-in-see-and-see-also-entries">5.3.8.5 Hyperlinks in see and see also entries</a>
+</li></ul>
+<li><a href="#Footnote-hyperlinks">5.3.9 Footnote hyperlinks: foot, footback</a>
+<li><a href="#Contents-hyperlinks">5.3.10 Contents hyperlinks</a>
+</li></ul>
+<li><a href="#Hyperlink-drivers">5.4 Hyperlink drivers</a>
+<ul>
+<li><a href="#Options-supported-by-all-drivers">5.4.1 Options supported by all drivers</a>
+<li><a href="#Hyperlink-driver-hypertex">5.4.2 Hyperlink driver <code>hypertex</code></a>
+<ul>
+<li><a href="#Destination-types-for-hypertex">5.4.2.1 Destination types for <code>hypertex</code></a>
+<li><a href="#Destination-options-for-hypertex">5.4.2.2 Destination options for <code>hypertex</code></a>
+<li><a href="#Link-types-for-hypertex">5.4.2.3 Link types for <code>hypertex</code></a>
+<li><a href="#Link-options-for-hypertex">5.4.2.4 Link options for <code>hypertex</code></a>
+</li></ul>
+<li><a href="#Hyperlink-drivers-pdftex-and-dvipdfm">5.4.3 Hyperlink drivers <code>pdftex</code> and <code>dvipdfm</code></a>
+<ul>
+<li><a href="#Destination-types-for-pdftex-and-dvipdfm">5.4.3.1 Destination types for <code>pdftex</code> and <code>dvipdfm</code></a>
+<li><a href="#Destination-options-for-pdftex-and-dvipdfm">5.4.3.2 Destination options for <code>pdftex</code> and <code>dvipdfm</code></a>
+<li><a href="#Link-types-for-pdftex-and-dvipdfm">5.4.3.3 Link types for <code>pdftex</code> and <code>dvipdfm</code></a>
+<li><a href="#Link-options-for-pdftex-and-dvipdfm">5.4.3.4 Link options for <code>pdftex</code> and <code>dvipdfm</code></a>
+</li></ul>
+<li><a href="#Hyperlink-driver-nolinks">5.4.4 Hyperlink driver <code>nolinks</code></a>
+</li></ul>
+<li><a href="#Setting-hyperlink-types-and-options">5.5 Setting hyperlink types and options</a>
+<ul>
+<li><a href="#Setting-default-types-and-options">5.5.1 Setting default types and options</a>
+<li><a href="#Setting-group-types">5.5.2 Setting group types</a>
+<li><a href="#Setting-group-options">5.5.3 Setting group options</a>
+</li></ul>
+<li><a href="#Turning-hyperlinks-on_002foff">5.6 Turning hyperlinks on/off</a>
+<ul>
+<li><a href="#Turning-low_002dlevel-commands-on_002foff">5.6.1 Turning low-level commands on/off</a>
+<li><a href="#Turning-hyperlinks-on_002foff-for-a-group">5.6.2 Turning hyperlinks on/off for a group</a>
+</li></ul>
+</li></ul>
+<li><a name="toc_Arrow-theoretic-diagrams" href="#Arrow-theoretic-diagrams">6 Arrow theoretic diagrams</a>
+<ul>
+<li><a href="#Slanted-lines-and-vectors">6.1 Slanted lines and vectors</a>
+<li><a href="#Commutative-diagrams">6.2 Commutative diagrams</a>
+<ul>
+<li><a href="#Arrows-and-morphisms">6.2.1 Arrows and morphisms</a>
+<li><a href="#Construction-of-commutative-diagrams">6.2.2 Construction of commutative diagrams</a>
+<li><a href="#Commutative-diagram-parameters">6.2.3 Commutative diagram parameters</a>
+</li></ul>
+</li></ul>
+<li><a name="toc_Programming-definitions" href="#Programming-definitions">7 Programming definitions</a>
+<ul>
+<li><a href="#Category-codes">7.1 Category codes</a>
+<li><a href="#Allocation-macros">7.2 Allocation macros</a>
+<li><a href="#Iteration">7.3 Iteration</a>
+<li><a href="#Macro-arguments">7.4 Macro arguments</a>
+<li><a href="#Converting-to-characters">7.5 Converting to characters</a>
+<li><a href="#Expansion">7.6 Expansion</a>
+<ul>
+<li><a href="#_005ccsn-and-_005cece">7.6.1 <code>\csn</code> and <code>\ece</code></a>
+<li><a href="#_005cedefappend">7.6.2 <code>\edefappend</code></a>
+<li><a href="#Hooks">7.6.3 Hooks</a>
+<li><a href="#Properties">7.6.4 Properties</a>
+<li><a href="#_005cexpandonce">7.6.5 <code>\expandonce</code></a>
+<li><a href="#_005cifundefined">7.6.6 <code>\ifundefined</code></a>
+<li><a href="#_005cifempty">7.6.7 <code>\ifempty</code></a>
+<li><a href="#_005cifinteger-and-_005cisinteger">7.6.8 <code>\ifinteger</code> and <code>\isinteger</code></a>
+<li><a href="#_005cfuturenonspacelet">7.6.9 <code>\futurenonspacelet</code></a>
+</li></ul>
+<li><a href="#Obeying-spaces">7.7 Obeying spaces</a>
+<li><a href="#Writing-out-numbers">7.8 Writing out numbers</a>
+<li><a href="#Mode_002dspecific-penalties">7.9 Mode-specific penalties</a>
+<li><a href="#Auxiliary-files">7.10 Auxiliary files</a>
+<li><a href="#User_002ddefined-environments">7.11 User-defined environments</a>
+<li><a href="#Page-list-and-page-range-parsers">7.12 Page list and page range parsers</a>
+</li></ul>
+<li><a name="toc_Demo-files" href="#Demo-files">8 Demo files</a>
+<ul>
+<li><a href="#Hyperlinks-_0028xhyper_002etex_0029">8.1 Hyperlinks (<code>xhyper.tex</code>)</a>
+<li><a href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">8.2 Highlighting TeX comments in listings (<code>lscommnt.tex</code>)</a>
+</li></ul>
+<li><a name="toc_Macro-index" href="#Macro-index">Macro index</a>
+<li><a name="toc_Concept-index" href="#Concept-index">Concept index</a>
+</li></ul>
+</div>
+
<div class="node">
<p><hr>
<a name="Top"></a>
@@ -42,16 +237,17 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#dir">(dir)</a>
<h2 class="unnumbered">Eplain</h2>
-<p>This manual documents the Eplain macros, version 3.0,
-September 2005. Eplain provides functionality for plain TeX that
+<p>This manual documents the Eplain macros, version 3.1,
+December 2006. Eplain provides functionality for plain TeX that
is intended to be useful regardless of how your document is actually
formatted.
<p>Most of this manual is in the public domain, like most of the Eplain
code. It was mostly written by Karl Berry, starting in 1989. Steven
Smith wrote the documentation for the commutative diagram macros; this
-chapter is under the GNU General Public License. Oleg Katsitadze and
-Adam Lewenberg have made additions and corrections.
+chapter is under the GNU General Public License. Adam Lewenberg has
+made additions and corrections. Oleg Katsitadze has helped with writing
+the section on LaTeX packages and the chapter on hyperlinks.
<ul class="menu">
<li><a accesskey="1" href="#Introduction">Introduction</a>: Eplain's purpose and philosophy.
@@ -61,8 +257,9 @@ Adam Lewenberg have made additions and corrections.
<li><a accesskey="5" href="#Hyperlinks">Hyperlinks</a>: Producing documents with hyperlinks.
<li><a accesskey="6" href="#Arrow-theoretic-diagrams">Arrow theoretic diagrams</a>: Macros for commutative diagrams.
<li><a accesskey="7" href="#Programming-definitions">Programming definitions</a>: Macros to be used in writing other macros.
-<li><a accesskey="8" href="#Macro-index">Macro index</a>: Entries for TeX and Eplain control sequences.
-<li><a accesskey="9" href="#Concept-index">Concept index</a>: General index.
+<li><a accesskey="8" href="#Demo-files">Demo files</a>: Sample documents demonstrating Eplain.
+<li><a accesskey="9" href="#Macro-index">Macro index</a>: Entries for TeX and Eplain control sequences.
+<li><a href="#Concept-index">Concept index</a>: General index.
</li></ul>
<p>--- The Detailed Node Listing ---
@@ -92,7 +289,8 @@ Adam Lewenberg have made additions and corrections.
<li><a href="#Paths">Paths</a>: Allowing line breaks in pathnames.
<li><a href="#Logos">Logos</a>: Various logos.
<li><a href="#Boxes">Boxes</a>: Producing filled or open rectangles.
-<li><a href="#Checking-for-PDF-output">Checking for PDF output</a>: Checking for pdfTeX in PDF mode.
+<li><a href="#Checking-for-PDF-output">Checking for PDF output</a>: Checking for pdfTeX in PDF mode.
+<li><a href="#Loading-LaTeX-packages">Loading LaTeX packages</a>: Support for LaTeX packages under plain TeX.
</li></ul>
<p>Citations
@@ -117,6 +315,16 @@ Adam Lewenberg have made additions and corrections.
<li><a href="#Formatting-lists">Formatting lists</a>: Changing how the lists look.
</li></ul>
+<p>Contents
+
+</p>
+<ul class="menu">
+<li><a href="#Writing-the-_002etoc-file">Writing the .toc file</a>
+<li><a href="#Reading-the-_002etoc-file">Reading the .toc file</a>
+<li><a href="#Changing-the-_002etoc-file_0027s-root-name">Changing the .toc file's root name</a>
+<li><a href="#Alternative-contents-files">Alternative contents files</a>
+
+</li></ul>
<p>Cross-references
</p>
@@ -148,9 +356,20 @@ Adam Lewenberg have made additions and corrections.
<ul class="menu">
<li><a href="#Indexing-commands">Indexing commands</a>: Making index entries.
<li><a href="#Modifying-index-entries">Modifying index entries</a>: Ranges, see/see also, page number typesetting.
+<li><a href="#Index-entries-with-special-characters">Index entries with special characters</a>
<li><a href="#Proofing-index-terms">Proofing index terms</a>: Noting index entries in the margins.
</li></ul>
+<p>Loading LaTeX packages
+
+</p>
+<ul class="menu">
+<li><a href="#The-_005cusepackage-command">The \usepackage command</a>: Command to load packages.
+<li><a href="#Environment-for-loading-packages">Environment for loading packages</a>: Environment for the \usepackage commands.
+<li><a href="#Packages-known-to-work">Packages known to work</a>: Supported packages.
+<li><a href="#Packages-known-not-to-work">Packages known not to work</a>: Packages known not to work with Eplain.
+
+</li></ul>
<p>Hyperlinks
</p>
@@ -167,6 +386,7 @@ Adam Lewenberg have made additions and corrections.
</p>
<ul class="menu">
+<li><a href="#General-hyperlinks">General hyperlinks</a>: hrefint, hrefext
<li><a href="#URL-hyperlinks">URL hyperlinks</a>: url
<li><a href="#Citation-hyperlinks">Citation hyperlinks</a>: cite, bib
<li><a href="#List-hyperlinks">List hyperlinks</a>: li
@@ -194,10 +414,21 @@ Adam Lewenberg have made additions and corrections.
</p>
<ul class="menu">
<li><a href="#Options-supported-by-all-drivers">Options supported by all drivers</a>
+<li><a href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a>
<li><a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a>
<li><a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a>
</li></ul>
+<p>Hyperlink driver hypertex::
+
+</p>
+<ul class="menu">
+<li><a href="#Destination-types-for-hypertex">Destination types for hypertex</a>
+<li><a href="#Destination-options-for-hypertex">Destination options for hypertex</a>
+<li><a href="#Link-types-for-hypertex">Link types for hypertex</a>
+<li><a href="#Link-options-for-hypertex">Link options for hypertex</a>
+
+</li></ul>
<p>Hyperlink drivers pdftex and dvipdfm::
</p>
@@ -248,7 +479,7 @@ Adam Lewenberg have made additions and corrections.
<ul class="menu">
<li><a href="#Category-codes">Category codes</a>: Changing category codes.
<li><a href="#Allocation-macros">Allocation macros</a>: Non-outer versions of \newcount et al.
-<li><a href="#Iteration">Iteration</a>: Doing `for' loops in TeX.
+<li><a href="#Iteration">Iteration</a>: Doing `for' and `while' loops in TeX.
<li><a href="#Macro-arguments">Macro arguments</a>: Reading and ignoring them.
<li><a href="#Converting-to-characters">Converting to characters</a>: Normalizing control sequences and spaces.
<li><a href="#Expansion">Expansion</a>: Controlling expansion.
@@ -270,8 +501,18 @@ Adam Lewenberg have made additions and corrections.
<li><a href="#Properties">Properties</a>: Associating information with a csname.
<li><a href="#g_t_005cexpandonce">\expandonce</a>
<li><a href="#g_t_005cifundefined">\ifundefined</a>
+<li><a href="#g_t_005cifempty">\ifempty</a>
+<li><a href="#g_t_005cifinteger-and-_005cisinteger">\ifinteger and \isinteger</a>
<li><a href="#g_t_005cfuturenonspacelet">\futurenonspacelet</a>
+</li></ul>
+<p>Demo files
+
+</p>
+<ul class="menu">
+<li><a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a>
+<li><a href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">Highlighting TeX comments in listings (lscommnt.tex)</a>
+
</ul>
<!-- This is part of the Eplain manual. Public domain. -->
@@ -339,9 +580,19 @@ please refer to it.
<p>To get on this mailing list yourself, email
<a href="mailto:tex-eplain-request@tug.org">tex-eplain-request@tug.org</a> with a message whose body contains
a line
+
<pre class="example"> subscribe <var>you@your.preferred.address</var>
</pre>
- <!-- This is part of the Eplain manual. Public domain. -->
+ <p class="noindent">or visit <a href="http://tug.org/mailman/listinfo/tex-eplain">http://tug.org/mailman/listinfo/tex-eplain</a>.
+
+ <p><a name="index-Walden_002c-David-11"></a>David Walden had reported his experience with Eplain as a new user.
+The article is available online at
+<a href="http://tug.org/pracjourn/2005-4/walden">http://tug.org/pracjourn/2005-4/walden</a>. An introductory
+article (written for
+<a name="index-g_t_0040i_007bTUGboat_007d-12"></a><i>TUGboat</i>) is also available online at
+<a href="http://tug.org/eplain/misc/tb84katsi.pdf">http://tug.org/eplain/misc/tb84katsi.pdf</a>.
+
+<!-- This is part of the Eplain manual. Public domain. -->
<div class="node">
<p><hr>
<a name="Installation"></a>
@@ -353,14 +604,29 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
<h2 class="chapter">2 Installation</h2>
-<p><a name="index-Eplain_002c-installing-11"></a> <a name="index-installation-12"></a>The simplest way to install Eplain is simply to install the file
-<samp><span class="file">eplain.tex</span></samp> in a directory where TeX will find it. What that
-directory is obviously depends on your operating system and TeX
-installation. I personally install <samp><span class="file">eplain.tex</span></samp> in
-a directory <samp><span class="file">/usr/local/lib/texmf/tex/plain</span></samp>.
+<p><a name="index-Eplain_002c-installing-13"></a><a name="index-installation-14"></a><a name="index-Eplain_002c-upgrading-15"></a><a name="index-upgrading-16"></a>Your TeX installation should already contain a version of Eplain
+(<samp><span class="file">eplain.tex</span></samp>) in its main <samp><span class="file">texmf</span></samp> tree (usually under
+<samp><span class="file">/usr/share/texmf/tex/eplain/</span></samp> on Unix systems). To install a
+newer version of Eplain, put the new <samp><span class="file">eplain.tex</span></samp> (included in
+Eplain distributions) in the <samp><span class="file">tex/eplain/</span></samp> subdirectory of your
+local <samp><span class="file">texmf</span></samp> tree. The newer version you install in the local
+tree should override the older one in the main tree.
+
+ <p>The location of the local <samp><span class="file">texmf</span></samp> tree obviously depends on your
+operating system and TeX installation. On Unix systems the usual
+location is <samp><span class="file">/usr/local/share/texmf/</span></samp>. If you don't have write
+permissions for <samp><span class="file">/usr/local/share/texmf/</span></samp>, many installations read
+the <samp><span class="file">texmf</span></samp> tree in the user's home directory; <samp><span class="file">eplain.tex</span></samp>
+then should go under <samp><span class="file">~/texmf/tex/eplain/</span></samp>. For more information
+about TeX directory structure, please see
+<a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=tds">http://www.tex.ac.uk/cgi-bin/texfaq2html?label=tds</a>.
+
+ <p><a name="index-TEXINPUTS-17"></a>If you prefer to install <samp><span class="file">eplain.tex</span></samp> in a non-standard place, set
+an environment variable (<code>TEXINPUTS</code> for the Web2C port of TeX
+to Unix) to tell TeX how to find it.
<p>If you want, you can also create a format (<samp><span class="file">.fmt</span></samp>)
-<a name="index-g_t_002efmt-_0040r_007bfile_007d-13"></a><a name="index-format-file-14"></a>file for Eplain, which will eliminate the time spent reading the macro
+<a name="index-g_t_002efmt-_0040r_007bfile_007d-18"></a><a name="index-format-file-19"></a><a name="index-eplain_002efmt-20"></a>file for Eplain, which will eliminate the time spent reading the macro
source file with <code>\input</code>. You do this by issuing a sequence of
Unix commands something like this:
@@ -372,37 +638,17 @@ Unix commands something like this:
*\dump
... <var>messages</var> ...
</pre>
- <p><a name="index-eplain_002eaux-15"></a><a name="index-undefined-labels_002c-warnings-about-16"></a>You must make sure that <samp><span class="file">eplain.aux</span></samp> exists <em>before</em> you
+ <p><a name="index-eplain_002eaux-21"></a><a name="index-undefined-labels_002c-warnings-about-22"></a>You must make sure that <samp><span class="file">eplain.aux</span></samp> exists <em>before</em> you
run <samp><span class="file">initex</span></samp>; otherwise, warning messages about undefined labels
will never be issued.
- <p>You then have to install the resulting <samp><span class="file">eplain.fmt</span></samp> in some system
-directory or set an environment variable to tell TeX how to find it.
-I install the format files in <samp><span class="file">/usr/local/lib/texmf/ini</span></samp>; the
-environment variable for the Web2C port of TeX to Unix is
+ <p><a name="index-TEXFORMATS-23"></a>You then have to install the resulting <samp><span class="file">eplain.fmt</span></samp> in your local
+<samp><span class="file">texmf</span></samp> tree or set an environment variable to tell TeX how to
+find it. For the Web2C port of TeX to Unix, format files are usually
+installed under <samp><span class="file">/usr/local/share/texmf/web2c/</span></samp> or
+<samp><span class="file">/var/lib/texmf/web2c/</span></samp>; the environment variable is
<code>TEXFORMATS</code>.
- <p>Some implementations of TeX (including Web2C) use the name by which
-TeX is invoked to determine what format to read. For them, you
-should make a link to the <samp><span class="file">virtex</span></samp> program named <samp><span class="file">etex</span></samp>, and
-then install the format file with the name <samp><span class="file">etex.fmt</span></samp>. This lets
-users invoke TeX as <samp><span class="file">etex</span></samp> and get the format file read
-automatically, without having to say `<samp><span class="samp">&amp;eplain</span></samp>'.
-
- <p>For convenience, the file <samp><span class="file">etex.tex</span></samp> in the distribution directory
-does <code>\input eplain</code> and then <code>\dump</code>, so that if you replace
-`<samp><span class="samp">eplain</span></samp>' with `<samp><span class="samp">etex</span></samp>' in the example above, the format file
-will end up with the right name.
-
- <p>The <code>install</code> target in the <samp><span class="file">Makefile</span></samp> does all this properly
-for Unix systems and Web2C. You may have to change the pathnames.
-
- <p><a name="index-emtex_002c-installation-under-17"></a>Under emtex, `<samp><span class="samp">eaj@acpub.duke.edu</span></samp>' says that
-
-<pre class="example"> tex386 -i ^&amp;plain eplain \dump
-</pre>
- <p class="noindent">produces a format file.
-
<!-- This is part of the Eplain manual. Public domain. -->
<div class="node">
<p><hr>
@@ -415,7 +661,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
<h2 class="chapter">3 Invoking Eplain</h2>
-<p><a name="index-Eplain_002c-invoking-18"></a>The simplest way to use Eplain is simply to put:
+<p><a name="index-Eplain_002c-invoking-24"></a>The simplest way to use Eplain is simply to put:
<pre class="example"> \input eplain
</pre>
@@ -424,7 +670,7 @@ enough that reading it does not take an unbearably long time&mdash;at least on
contemporary machines.
<p>In addition, if a format (<samp><span class="file">.fmt</span></samp>)
-<a name="index-g_t_002efmt-_0040r_007bfile_007d-19"></a>file has been created for Eplain (see the previous section), you can
+<a name="index-g_t_002efmt-_0040r_007bfile_007d-25"></a>file has been created for Eplain (see the previous section), you can
eliminate the time spent reading the macro source file. You do this
by responding <code>&amp;eplain</code> to TeX's `<samp><span class="samp">**</span></samp>' prompt. For
example:
@@ -442,9 +688,10 @@ won't know if the Eplain format will be loaded already. If it is, then
doing <code>\input eplain</code> will waste time; if it isn't, then you must
load it. To solve this, Eplain defines the control sequence
<code>\eplain</code>
-<a name="index-eplain-20"></a>to be the letter <code>t</code> (a convention borrowed from Lisp; it doesn't
+<a name="index-eplain-26"></a>to be the letter <code>t</code> (a convention borrowed from Lisp; it doesn't
actually matter what the definition is, only that the definition
exists). Therefore, you can do the following:
+
<pre class="example"> \ifx\eplain\undefined \input eplain \fi
</pre>
<p class="noindent">where <code>\undefined</code> must never acquire a definition.
@@ -459,8 +706,7 @@ Steven Smith;
<br><dt><samp><span class="file">btxmac.tex</span></samp><dd>bibliography-related macros (see <a href="#Citations">Citations</a>);
<br><dt><samp><span class="file">ifpdf.sty</span></samp><dd>sets the switch <code>\ifpdf</code>, which can be used to
-detect pdfTeX in PDF mode (see <a href="#Checking-for-PDF-output">Checking for PDF output</a>), written
-by Heiko Oberdiek;
+detect pdfTeX in <acronym>PDF</acronym> mode (see <a href="#Checking-for-PDF-output">Checking for PDF output</a>), written by Heiko Oberdiek;
<br><dt><samp><span class="file">path.sty</span></samp><dd>macro for allowing line breaks at punctuation characters within long
pathnames, electronic mail addresses, etc., (see <a href="#Paths">Paths</a>), written
@@ -480,26 +726,26 @@ if all you want are the definitions in that file.
<p>Also, since the bibliography macros are fairly extensive, you might not
want to load them, to conserve TeX's memory. Therefore, if the
control sequence <code>\nobibtex</code>
-<a name="index-nobibtex-21"></a>is defined, then the bibliography definitions are skipped. You must set
+<a name="index-nobibtex-27"></a>is defined, then the bibliography definitions are skipped. You must set
<code>\nobibtex</code> before <samp><span class="file">eplain.tex</span></samp> is read, naturally. For
example, you could start your input file like this:
<pre class="example"> \let\nobibtex = t
\input eplain
</pre>
- <p>By default, <code>\nobibtex</code> is undefined, and so the bibliography
-definitions <em>are</em> made.
+ <p class="noindent">By default, <code>\nobibtex</code> is undefined, and so the
+bibliography definitions <em>are</em> made.
- <p><a name="index-noarrow-22"></a>Likewise, define <code>\noarrow</code> if you don't want to include the
+ <p><a name="index-noarrow-28"></a>Likewise, define <code>\noarrow</code> if you don't want to include the
commutative diagram macros from <samp><span class="file">arrow.tex</span></samp>, perhaps because you
already have conflicting ones.
<p>If you don't want to read or write an <samp><span class="file">aux</span></samp> file at all, for any
kind of cross-referencing, define <code>\noauxfile</code>
-<a name="index-noauxfile-23"></a>before reading <samp><span class="file">eplain.tex</span></samp>. This also turns off all warnings
+<a name="index-noauxfile-29"></a>before reading <samp><span class="file">eplain.tex</span></samp>. This also turns off all warnings
about undefined labels.
- <p><a name="index-amsppt_002esty-24"></a><a name="index-AMS_0040TeX_007b_007d-conflicts-25"></a>Eplain conflicts with AMSTeX (to be precise, with <samp><span class="file">amsppt.sty</span></samp>):
+ <p><a name="index-amsppt_002esty-30"></a><a name="index-AMS_0040TeX_007b_007d-conflicts-31"></a>Eplain conflicts with AMSTeX (to be precise, with <samp><span class="file">amsppt.sty</span></samp>):
the macros <code>\cite</code> and <code>\ref</code> are defined by both.
<p>If you want to use AMSTeX's <code>\cite</code>, the solution is to define
@@ -511,11 +757,11 @@ a warning on your terminal. If you want to use the AMSTeX
To avoid the warning, do <code>\let\ref = \eplainref</code> after reading
Eplain and before using <code>\ref</code>.
- <p><a name="index-texi2dvi-26"></a><a name="index-bibtex-27"></a><a name="index-makeindex-28"></a>Sometimes you may need to run TeX more then once on your
+ <p><a name="index-texi2dvi-32"></a><a name="index-bibtex-33"></a><a name="index-makeindex-34"></a>Sometimes you may need to run TeX more then once on your
<samp><span class="file">.tex</span></samp> file in order to produce and typeset indexes, resolve
undefined cross-references and/or citations. The shell script
<samp><span class="command">texi2dvi</span></samp> from the Texinfo documentation system (see
-<a href="http://www.gnu.org/software/texinfo/">http://www.gnu.org/software/texinfo/</a>) can automate this process:
+<a href="http://www.gnu.org/software/texinfo">http://www.gnu.org/software/texinfo</a>) can automate this process:
it runs BibTeX, MakeIndex and TeX as many times as needed to
complete the compilation process. You will need to set the
<samp><span class="env">LATEX</span></samp> environment variable to `<samp><span class="samp">tex</span></samp>'. For example, in a
@@ -523,7 +769,7 @@ Bourne-compatible shell, the following command will do all the work:
<pre class="example"> prompt$ LATEX=tex texi2dvi file.tex
</pre>
- <p><a name="index-pdftex-29"></a>(Despite the name, <samp><span class="command">texi2dvi</span></samp> can also produce
+ <p><a name="index-pdftex-35"></a>(Despite the name, <samp><span class="command">texi2dvi</span></samp> can also produce
<samp><span class="file">.pdf</span></samp> files; just set `<samp><span class="samp">LATEX=pdftex</span></samp>'.) See the output from
the command <samp><span class="command">texi2dvi --help</span></samp> for invoking information and a
full list of options.
@@ -580,35 +826,36 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.1 Diagnostics</h3>
-<p><a name="index-diagnostics-30"></a><a name="index-tracing-31"></a>Plain TeX provides the <code>\tracingall</code> command, to turn on the
+<p><a name="index-diagnostics-36"></a><a name="index-tracing-37"></a>Plain TeX provides the <code>\tracingall</code> command, to turn on the
maximum amount of tracing possible in TeX. The (usually voluminous)
output from <code>\tracingall</code> goes both on the terminal and into the
transcript file.
-<a name="index-tracingall-32"></a>It is sometimes easier to have the output go only to the transcript
+<a name="index-tracingall-38"></a>It is sometimes easier to have the output go only to the transcript
file, so you can peruse it at your leisure and not obscure other output
to the terminal. So, Eplain provides the command <code>\loggingall</code>.
-<a name="index-loggingall-33"></a>(For some reason, this command is available in Metafont, but not in
+<a name="index-loggingall-39"></a>(For some reason, this command is available in Metafont, but not in
TeX.)
<p>It is also sometimes useful to see the complete contents of boxes.
<code>\tracingboxes</code> does this. (It doesn't affect whether or not the
contents
-<a name="index-tracingboxes-34"></a>are shown on the terminal.)
+<a name="index-tracingboxes-40"></a>are shown on the terminal.)
<p>You can turn off all tracing with <code>\tracingoff</code>.
-<a name="index-tracingoff-35"></a>
+<a name="index-tracingoff-41"></a>
You can also turn logging on and off globally, so you don't have to
worry about whether or not you're inside a group at the time of command.
These variants are named <code>\gloggingall</code>
-<a name="index-gloggingall-36"></a>and <code>\gtracingall</code>.
-<a name="index-gtracingall-37"></a>
+<a name="index-gloggingall-42"></a>and <code>\gtracingall</code>.
+<a name="index-gtracingall-43"></a>
Finally, if you write your own help messages (see <code>\newhelp</code>
-<a name="index-help-messages-38"></a><a name="index-error-messages-39"></a>in <cite>The TeXbook</cite>), you want a convenient way to break lines in
+<a name="index-help-messages-44"></a><a name="index-error-messages-45"></a>in <cite>The TeXbook</cite>), you want a convenient way to break lines in
them. This is what TeX's <code>\newlinechar</code> parameter is for;
-<a name="index-newlinechar-40"></a>however, plain TeX doesn't set <code>\newlinechar</code>. Therefore,
+<a name="index-newlinechar-46"></a>however, plain TeX doesn't set <code>\newlinechar</code>. Therefore,
Eplain defines it to be the character <code>^^J</code>.
<p>For example, one of Eplain's own error messages is defined as follows:
+
<pre class="example"> \newhelp\envhelp{Perhaps you forgot to end the previous^^J%
environment? I'm finishing off the current group,^^J%
hoping that will fix it.}%
@@ -627,10 +874,10 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<p>The default dimensions of rules are defined in chapter&nbsp;<!-- /@w -->21 of the
<cite>The TeXbook</cite>. To sum up what is given there, the &ldquo;thickness&rdquo;
of rules is
-<a name="index-rule-thickness-41"></a>0.4pt by default. Eplain defines three parameters that let you change
+<a name="index-rule-thickness-47"></a>0.4pt by default. Eplain defines three parameters that let you change
this dimension: <code>\hruledefaultheight</code>, <code>\hruledefaultdepth</code>,
-<a name="index-hruledefaultheight-42"></a><a name="index-hruledefaultdepth-43"></a>and <code>\vruledefaultwidth</code>. By default, they are defined as
-<a name="index-vruledefaultwidth-44"></a><cite>The TeXbook</cite> describes.
+<a name="index-hruledefaultheight-48"></a><a name="index-hruledefaultdepth-49"></a>and <code>\vruledefaultwidth</code>. By default, they are defined as
+<a name="index-vruledefaultwidth-50"></a><cite>The TeXbook</cite> describes.
<p>But it would be wrong to redefine <code>\hrule</code> and <code>\vrule</code>. For
one thing, some macros in plain TeX depend on the default dimensions
@@ -638,8 +885,8 @@ being used; for another, rules are used quite heavily, and the
performance impact of making it a macro can be noticeable. Therefore,
to take advantage of the default rule parameters, you must use
<code>\ehrule</code>
-<a name="index-ehrule-45"></a>and <code>\evrule</code>.
-<a name="index-evrule-46"></a>
+<a name="index-ehrule-51"></a>and <code>\evrule</code>.
+<a name="index-evrule-52"></a>
<div class="node">
<p><hr>
@@ -652,12 +899,12 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.3 Citations</h3>
-<p><a name="index-citations-47"></a><a name="index-bibliographies-48"></a>Bibliographies are part of almost every technical document. To handle
+<p><a name="index-citations-53"></a><a name="index-bibliographies-54"></a>Bibliographies are part of almost every technical document. To handle
them easily, you need two things: a program to do the tedious
formatting, and a way to cite references by labels, rather than by
numbers. The BibTeX program, written by Oren Patashnik, takes care
-<a name="index-Bib_0040TeX_007b_007d-49"></a><a name="index-Patashnik_002c-Oren-50"></a>of the first item; the citation commands in LaTeX, written to be used
-<a name="index-g_t_0040LaTeX_007b_007d-51"></a>with BibTeX, take care of the second. Therefore,
+<a name="index-Bib_0040TeX_007b_007d-55"></a><a name="index-Patashnik_002c-Oren-56"></a>of the first item; the citation commands in LaTeX, written to be used
+<a name="index-g_t_0040LaTeX_007b_007d-57"></a>with BibTeX, take care of the second. Therefore,
Eplain adopts the use of BibTeX, and virtually the same interface as
LaTeX.
@@ -665,11 +912,11 @@ LaTeX.
document, and commands saying where the bibliography data is. When you
run TeX, these commands produce output on the file with the same root
name as your document (by default) and the extension <samp><span class="file">.aux</span></samp>.
-<a name="index-g_t_002eaux-_0040r_007bfile_007d-52"></a><a name="index-jobname-53"></a>BibTeX reads this file. You should put the bibliography data in a
+<a name="index-g_t_002eaux-_0040r_007bfile_007d-58"></a><a name="index-jobname-59"></a>BibTeX reads this file. You should put the bibliography data in a
file or files with the extension <samp><span class="file">.bib</span></samp>. BibTeX writes out a
file with the same root
-<a name="index-g_t_002ebib-_0040r_007bfile_007d-54"></a>name as your document and extension <samp><span class="file">.bbl</span></samp>. Eplain reads this file
-<a name="index-g_t_002ebbl-_0040r_007bfile_007d-55"></a>the next time you run your document through TeX. (It takes
+<a name="index-g_t_002ebib-_0040r_007bfile_007d-60"></a>name as your document and extension <samp><span class="file">.bbl</span></samp>. Eplain reads this file
+<a name="index-g_t_002ebbl-_0040r_007bfile_007d-61"></a>the next time you run your document through TeX. (It takes
multiple passes to get everything straight, because usually after seeing
your bibliography typeset, you want to make changes in the <samp><span class="file">.bib</span></samp>
file, which means you have to run BibTeX again, which means you have
@@ -680,7 +927,7 @@ given below.
is a collection of papers&mdash;you can tell Eplain to use a different root
name for the <samp><span class="file">.bbl</span></samp> file by defining the control sequence
<code>\bblfilebasename</code>.
-<a name="index-bblfilebasename-56"></a>The default definition is simply <code>\jobname</code>.
+<a name="index-bblfilebasename-62"></a>The default definition is simply <code>\jobname</code>.
<p>See the document <cite>BibTeXing</cite> (whose text is in the file
<samp><span class="file">btxdoc.tex</span></samp>, which should be in the Eplain distribution you got)
@@ -688,28 +935,28 @@ for information on how to write your <tt>.bib</tt> files. Both the
BibTeX and the Eplain distributions contain several examples, also.
<p>The <code>\cite</code>
-<a name="index-cite-57"></a>command produces a citation in the text of your document. The exact
-printed form the citation will take is under your control;
-see <a href="#Formatting-citations">Formatting citations</a>. <code>\cite</code> takes one
+<a name="index-cite-63"></a>command produces a citation in the text of your document. The exact
+printed form the citation will take is under your control
+(see <a href="#Formatting-citations">Formatting citations</a>). <code>\cite</code> takes one
required argument, a comma-separated list of cross-reference labels
(see <a href="#Cross_002dreferences">Cross-references</a>, for exactly what characters are allowed in
such labels). Warning: spaces in this list are taken as part of the
following label name, which is probably not what you expect.
-<a name="index-citations_002c-undefined-58"></a>The <code>\cite</code> command also produces a command
+<a name="index-citations_002c-undefined-64"></a>The <code>\cite</code> command also produces a command
in the <tt>.aux</tt> file that tells BibTeX to retrieve the given reference(s)
from the <tt>.bib</tt> file. <code>\cite</code> also takes one optional argument,
which you specify within square brackets, as in LaTeX. This text is
simply typeset after the citations. (See the example below.)
<p>Eplain can create hypertext links for citations pointing to the relevant
-bibliography entries; see <a href="#Citation-hyperlinks">Citation hyperlinks</a>.
+bibliography entries (see <a href="#Citation-hyperlinks">Citation hyperlinks</a>).
<p>Another command, <code>\nocite</code>,
-<a name="index-nocite-59"></a>puts the given reference(s) into the bibliography, but produces nothing
+<a name="index-nocite-65"></a>puts the given reference(s) into the bibliography, but produces nothing
in the text.
<p>The <code>\bibliography</code>
-<a name="index-bibliography-60"></a>command is next. It serves two purposes: producing the typeset
+<a name="index-bibliography-66"></a>command is next. It serves two purposes: producing the typeset
bibliography, and telling BibTeX the root names of the <tt>.bib</tt>
files. Therefore, the argument to <code>\bibliography</code> is a comma
separated list of the <tt>.bib</tt> files (without the `<samp><span class="samp">.bib</span></samp>'). Again,
@@ -718,9 +965,9 @@ spaces in this list are significant.
<p>You tell BibTeX the particular style in which you want your
bibliography typeset with one more command:
<code>\bibliographystyle</code>.
-<a name="index-bibliographystyle-61"></a>The argument to this is a single filename <var>style</var>, which tells
+<a name="index-bibliographystyle-67"></a>The argument to this is a single filename <var>style</var>, which tells
BibTeX to look for a file <var>style</var><tt>.bst</tt>.
-<a name="index-g_t_002ebst-_0040r_007bfiles_007d-62"></a>See the document <cite>Designing BibTeX styles</cite> (whose text is in the
+<a name="index-g_t_002ebst-_0040r_007bfiles_007d-68"></a>See the document <cite>Designing BibTeX styles</cite> (whose text is in the
<samp><span class="file">btxhak.tex</span></samp>) for information on how to write your own styles.
<p>Eplain automatically reads the citations from the <tt>.aux</tt> file when
@@ -728,7 +975,7 @@ your job starts.
<p>If you don't want to see the messages about undefined citations, you
can say <code>\xrefwarningfalse</code> before making any citations.
-<a name="index-xrefwarningfalse-63"></a>Eplain automatically does this if the <tt>.aux</tt> file does not exist.
+<a name="index-xrefwarningfalse-69"></a>Eplain automatically does this if the <tt>.aux</tt> file does not exist.
You can restore the default by saying <code>\xrefwarningtrue</code>.
<p>Here is a TeX input file that illustrates the various commands.
@@ -741,7 +988,7 @@ You can restore the default by saying <code>\xrefwarningtrue</code>.
\bibliographystyle{plain} % Number the references.
\end % End of the document.
</pre>
- <p><a name="index-Knuth_002c-Donald-Ervin-64"></a><a name="index-Graham_002c-Ronald-L_002e-65"></a><a name="index-numbered-references-66"></a><a name="index-references_002c-numbered-67"></a>
+ <p><a name="index-Knuth_002c-Donald-Ervin-70"></a><a name="index-Graham_002c-Ronald-L_002e-71"></a><a name="index-numbered-references-72"></a><a name="index-references_002c-numbered-73"></a>
If we suppose that this file was named <samp><span class="file">citex.tex</span></samp> and that the
bibliography data is in <samp><span class="file">knuth.bib</span></samp> (as the <code>\bibliography</code>
command says), the following commands do what's required. (`<samp><span class="samp">$ </span></samp>'
@@ -752,8 +999,8 @@ represents the shell prompt.)
$ tex citex (read citex.bbl, still have undefined citations)
$ tex citex (one more time, to resolve the references)
</pre>
- <p><a name="index-texi2dvi-68"></a>(The <samp><span class="command">texi2dvi</span></samp> program can help you automate this
-process, see <a href="#Invoking-Eplain">Invoking Eplain</a>.)
+ <p><a name="index-texi2dvi-74"></a>The <samp><span class="command">texi2dvi</span></samp> program can help you automate this
+process (see <a href="#Invoking-Eplain">Invoking Eplain</a>).
<p>The output looks something like (because we used the <tt>plain</tt>
bibliography style):
@@ -774,7 +1021,7 @@ Massachusetts, 1974.
bibliography databases, and the bibliography styles that are available.
(If you want your references printed with names, as in [Knu74], instead
of numbered, the bibliography style is <code>alpha</code>.)
-<a name="index-alphanumeric-references-69"></a><a name="index-references_002c-alphanumeric-70"></a>
+<a name="index-alphanumeric-references-75"></a><a name="index-references_002c-alphanumeric-76"></a>
<ul class="menu">
<li><a accesskey="1" href="#Formatting-citations">Formatting citations</a>: Changing the way citations are printed.
@@ -791,7 +1038,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Citations">Citations</a>
<h4 class="subsection">4.3.1 Formatting citations</h4>
-<p><a name="index-citations_002c-formatting-71"></a>
+<p><a name="index-citations_002c-formatting-77"></a>
You may wish to change Eplain's formatting of citations; i.e., the
result of your <code>\cite</code> commands. By default, the citation labels
are printed one after another, separated by commas and enclosed in
@@ -800,15 +1047,15 @@ such as superscripted labels. You can accomodate such formats by
redefining the following macros.
<dl>
-<dt><code>\printcitestart</code><br><dt><code>\printcitefinish</code><dd><a name="index-printcitestart-72"></a><a name="index-printcitefinish-73"></a>Eplain expands these macros at the begining and end of the list of
+<dt><code>\printcitestart</code><br><dt><code>\printcitefinish</code><dd><a name="index-printcitestart-78"></a><a name="index-printcitefinish-79"></a>Eplain expands these macros at the begining and end of the list of
citations for each <code>\cite</code> command. By default, they produce a
`<samp><span class="samp">[</span></samp>' and `<samp><span class="samp">]</span></samp>', respectively.
- <br><dt><code>\printbetweencitations</code><dd><a name="index-printbetweencitations-74"></a>If a <code>\cite</code> command has multiple citations, as in
+ <br><dt><code>\printbetweencitations</code><dd><a name="index-printbetweencitations-80"></a>If a <code>\cite</code> command has multiple citations, as in
<code>\cite{acp,texbook}</code>, Eplain expands this macro in between each
pair of citations. By default, it produces a comma followed by a space.
- <br><dt><code>\printcitenote</code><dd><a name="index-printcitenote-75"></a>This macro takes one argument, which is the optional note to the
+ <br><dt><code>\printcitenote</code><dd><a name="index-printcitenote-81"></a>This macro takes one argument, which is the optional note to the
<code>\cite</code> command. If the <code>\cite</code> command had no note, this
macro isn't used. Otherwise, it should print the note. By default, the
note is preceded with a comma and a space.
@@ -832,47 +1079,47 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Citations">Citations</a>
<h4 class="subsection">4.3.2 Formatting bibliographies</h4>
-<p><a name="index-bibliography_002c-formatting-the-76"></a>
+<p><a name="index-bibliography_002c-formatting-the-82"></a>
You may wish to change Eplain's formatting of the bibliography,
especially with respect to the fonts that are used. Therefore, Eplain
provides the following control sequences:
<dl>
-<dt><code>\biblabelwidth</code><dd><a name="index-biblabelwidth-77"></a>This control sequence represents a <code>\dimen</code> register, and its value
+<dt><code>\biblabelwidth</code><dd><a name="index-biblabelwidth-83"></a>This control sequence represents a <code>\dimen</code> register, and its value
is the width of the widest label in the bibliography. Although it is
unlikely you will ever want to redefine it, you might want
to use it if you redefine <code>\biblabelprint</code>, below.
- <br><dt><code>\biblabelprint</code><dd><a name="index-biblabelprint-78"></a>This macro takes one argument, the label to print. By default, the
+ <br><dt><code>\biblabelprint</code><dd><a name="index-biblabelprint-84"></a>This macro takes one argument, the label to print. By default, the
label is put in a box of width <code>\biblabelwidth</code>, and is followed by
an enspace. When you want to change the spacing around the labels, this
is the right macro to redefine.
- <br><dt><code>\biblabelcontents</code><dd><a name="index-biblabelcontents-79"></a>This macro also takes one argument, the label to print. By default, the
+ <br><dt><code>\biblabelcontents</code><dd><a name="index-biblabelcontents-85"></a>This macro also takes one argument, the label to print. By default, the
label is printed using the font <code>\bblrm</code> (below), and enclosed in
brackets. When you want to change the appearance of the label, but not
the spacing around it, this is the right macro to redefine.
- <br><dt><code>\bblrm</code><dd><a name="index-bblrm-80"></a><a name="index-bibliography-fonts-81"></a>The default font used for printing the bibliography.
+ <br><dt><code>\bblrm</code><dd><a name="index-bblrm-86"></a><a name="index-bibliography-fonts-87"></a>The default font used for printing the bibliography.
- <br><dt><code>\bblem</code><dd><a name="index-bblem-82"></a>The font used for printing the titles and other &ldquo;emphasized&rdquo; material.
+ <br><dt><code>\bblem</code><dd><a name="index-bblem-88"></a>The font used for printing the titles and other &ldquo;emphasized&rdquo; material.
- <br><dt><code>\bblsc</code><dd><a name="index-bblsc-83"></a>In some styles, authors' names are printed in a caps-and-small-caps
+ <br><dt><code>\bblsc</code><dd><a name="index-bblsc-89"></a>In some styles, authors' names are printed in a caps-and-small-caps
font. In those cases, this font is used.
- <br><dt><code>\bblnewblock</code><dd><a name="index-bblnewblock-84"></a>This is invoked between each of the parts of a bibliography entry. The
+ <br><dt><code>\bblnewblock</code><dd><a name="index-bblnewblock-90"></a>This is invoked between each of the parts of a bibliography entry. The
default is to leave some extra space between the parts; you could
redefine it to start each part on a new line (for example). A part is
simply a main element of the entry; for example, the author is a part.
(It was LaTeX that introduced the (misleading, as far as I am
concerned) term `block' for this.)
- <br><dt><code>\biblabelextraspace</code><dd><a name="index-biblabelextraspace-85"></a>Bibliography entries are typeset with a hanging indentation of
+ <br><dt><code>\biblabelextraspace</code><dd><a name="index-biblabelextraspace-91"></a>Bibliography entries are typeset with a hanging indentation of
<code>\biblabelwidth</code> plus this. The default is <code>.5em</code>, where the
em width is taken from the <code>\bblrm</code> font. If you want to change
this, you should do it inside <code>\bblhook</code>.
- <br><dt><code>\bblhook</code><dd><a name="index-bblhook-86"></a><a name="index-bibliography-items_002c-extra-space-between-87"></a>This is expanded before reading the <tt>.bbl</tt> file. By
+ <br><dt><code>\bblhook</code><dd><a name="index-bblhook-92"></a><a name="index-bibliography-items_002c-extra-space-between-93"></a>This is expanded before reading the <tt>.bbl</tt> file. By
default, it does nothing. You could, for example, define it to set the
bibliography fonts, or produce the heading for the references. Two
spacing parameters must be changed inside <code>\bblhook</code>:
@@ -897,25 +1144,25 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.4 Displays</h3>
-<p><a name="index-displays_002c-left_002djustifying-88"></a><a name="index-mathematics-displays_002c-formatting-89"></a><a name="index-left_002djustification-of-displays-90"></a>
+<p><a name="index-displays_002c-left_002djustifying-94"></a><a name="index-mathematics-displays_002c-formatting-95"></a><a name="index-left_002djustification-of-displays-96"></a>
By default, TeX centers displayed material. (Displayed material is
just whatever you put between <code>$$</code>'s&mdash;it's not necessarily
mathematics.) Many layouts would be better served if the displayed
material was left-justified. Therefore, Eplain provides the command
<code>\leftdisplays</code>,
-<a name="index-leftdisplays-91"></a>which indents displayed material by <code>\parindent</code> plus
+<a name="index-leftdisplays-97"></a>which indents displayed material by <code>\parindent</code> plus
<code>\leftskip</code>, plus <code>\leftdisplayindent</code>.
-<a name="index-leftdisplayindent-92"></a>
+<a name="index-leftdisplayindent-98"></a>
You can go back to centering displays with <code>\centereddisplays</code>.
-<a name="index-centereddisplays-93"></a>(It is usually poor typography to have both centered and left-justified
+<a name="index-centereddisplays-99"></a>(It is usually poor typography to have both centered and left-justified
displays in a single publication, though.)
<p><code>\leftdisplays</code> also changes the plain TeX commands that deal
with alignments inside math displays,
<code>\displaylines</code>,
-<a name="index-displaylines-94"></a><code>\eqalignno</code>,
-<a name="index-eqalignno-95"></a>and <code>\leqalignno</code>,
-<a name="index-leqalignno-96"></a>to produce left-justified text. You can still override this formatting
+<a name="index-displaylines-100"></a><code>\eqalignno</code>,
+<a name="index-eqalignno-101"></a>and <code>\leqalignno</code>,
+<a name="index-leqalignno-102"></a>to produce left-justified text. You can still override this formatting
by inserting <code>\hfill</code> glue, as explained in <cite>The TeXbook</cite>.
<ul class="menu">
@@ -934,15 +1181,15 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Displays">Displays</a>
<p>If you want some other kind of formatting, you can write a definition
of your own, analogous to <code>\leftdisplays</code>. You need only make sure
that <code>\leftdisplaysetup</code>
-<a name="index-leftdisplaysetup-97"></a>is called at the beginning of every display (presumably by invoking it
+<a name="index-leftdisplaysetup-103"></a>is called at the beginning of every display (presumably by invoking it
in TeX's <code>\everydisplay</code> parameter), and to define
<code>\generaldisplay</code>.
-<a name="index-generaldisplay-98"></a>
+<a name="index-generaldisplay-104"></a>
<code>\leftdisplays</code> expands the old value of <code>\everydisplay</code>
before calling <code>\leftdisplaysetup</code>, so that any changes you have made
to it won't be lost. That old token list as available as the value of
the token register <code>\previouseverydisplay</code>.
-<a name="index-previouseverydisplay-99"></a>
+<a name="index-previouseverydisplay-105"></a>
<div class="node">
<p><hr>
@@ -955,26 +1202,26 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.5 Time of day</h3>
-<p><a name="index-time-of-day-100"></a><a name="index-date-101"></a>
+<p><a name="index-time-of-day-106"></a><a name="index-date-107"></a>
TeX provides the day, month, and year as numeric quantities (unless
your TeX implementation is woefully deficient). Eplain provides some
control sequences to make them a little more friendly to humans.
<p><code>\monthname</code>
-<a name="index-monthname-102"></a>produces the name of the current month, abbreviated to three letters.
+<a name="index-monthname-108"></a>produces the name of the current month, abbreviated to three letters.
<p><code>\fullmonthname</code>
-<a name="index-fullmonthname-103"></a>produces the name of the current month, unabbreviated (in English).
+<a name="index-fullmonthname-109"></a>produces the name of the current month, unabbreviated (in English).
<p><code>\timestring</code>
-<a name="index-timestring-104"></a>produces the current time, as in `1:14 p.m.'
+<a name="index-timestring-110"></a>produces the current time, as in `1:14 p.m.'
<p><code>\timestamp</code>
-<a name="index-timestamp-105"></a>produces the current date and time, as in `23 Apr 64 1:14 p.m.'.
+<a name="index-timestamp-111"></a>produces the current date and time, as in `23 Apr 64 1:14 p.m.'.
(Except the spacing is slightly different.)
<p><code>\today</code>
-<a name="index-today-106"></a>produces the current date, as in `23 April 1964'.
+<a name="index-today-112"></a>produces the current date, as in `23 April 1964'.
<div class="node">
<p><hr>
@@ -987,20 +1234,20 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.6 Lists</h3>
-<p><a name="index-lists-107"></a><a name="index-numbered-lists-108"></a><a name="index-ordered-list-109"></a><a name="index-unordered-lists-110"></a>
+<p><a name="index-lists-113"></a><a name="index-numbered-lists-114"></a><a name="index-ordered-list-115"></a><a name="index-unordered-lists-116"></a>
Many documents require lists of items, either numbered or simply
enumerated. Plain TeX defines one macro to help with creating lists,
<code>\item</code>, but that is insufficient in many cases. Therefore,
Eplain provides two pairs of commands:
<dl>
-<dt><code>\numberedlist ... \endnumberedlist</code><br><dt><code>\orderedlist ... \endorderedlist</code><dd><a name="index-numberedlist-111"></a><a name="index-endnumberedlist-112"></a><a name="index-orderedlist-113"></a><a name="index-endorderedlist-114"></a>These commands (they are synonyms) produce a list with the items
+<dt><code>\numberedlist ... \endnumberedlist</code><br><dt><code>\orderedlist ... \endorderedlist</code><dd><a name="index-numberedlist-117"></a><a name="index-endnumberedlist-118"></a><a name="index-orderedlist-119"></a><a name="index-endorderedlist-120"></a>These commands (they are synonyms) produce a list with the items
numbered sequentially, starting from one. A nested <code>\numberedlist</code>
labels the items with lowercase letters, starting with `a'. Another
nested <code>\numberedlist</code> labels the items with roman numerals. Yet
more deeply nested numbered lists label items with `<samp><span class="samp">*</span></samp>'.
- <br><dt><code>\unorderedlist ... \endunorderedlist</code><dd><a name="index-unorderedlist-115"></a><a name="index-endunorderedlist-116"></a>This produces a list with the items labelled with small black boxes
+ <br><dt><code>\unorderedlist ... \endunorderedlist</code><dd><a name="index-unorderedlist-121"></a><a name="index-endunorderedlist-122"></a>This produces a list with the items labelled with small black boxes
(&ldquo;square bullets&rdquo;). A nested <code>\unorderedlist</code> labels items with
em-dashes. Doubly (and deeper) nested unordered lists label items with
`*'s.
@@ -1010,7 +1257,7 @@ em-dashes. Doubly (and deeper) nested unordered lists label items with
<p>The two kinds of lists can be nested within each other, as well.
<p>In both kinds of lists, you begin an item with <code>\li</code>.
-<a name="index-li-117"></a>An item may continue for several paragraphs. Each item starts a
+<a name="index-li-123"></a>An item may continue for several paragraphs. Each item starts a
paragraph.
<p>You can give <code>\li</code> an optional argument, a cross-reference label.
@@ -1019,15 +1266,16 @@ if the list items are numbered. You can produce the value of the label
with <code>\xrefn</code>. See <a href="#Cross_002dreferences">Cross-references</a>.
<p>Eplain can create hypertext links for the markers produced by
-<code>\xrefn</code> pointing to the relevant list item; see <a href="#List-hyperlinks">List hyperlinks</a>.
+<code>\xrefn</code> pointing to the relevant list item (see <a href="#List-hyperlinks">List hyperlinks</a>).
<p>You can also say <code>\listcompact</code>
-<a name="index-listcompact-118"></a>right after <code>\numberedlist</code> or <code>\unorderedlist</code>. The items in
+<a name="index-listcompact-124"></a>right after <code>\numberedlist</code> or <code>\unorderedlist</code>. The items in
the list will then not have any extra space between them
(see <a href="#Formatting-lists">Formatting lists</a>). You might want to do this if the items in
this particular list are short.
<p>Here is an example:
+
<pre class="example"> \numberedlist\listcompact
\li The first item.
\li The second item.
@@ -1048,17 +1296,17 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Lists">Lists</a>
<h4 class="subsection">4.6.1 Formatting lists</h4>
-<p><a name="index-lists_002c-formatting-119"></a>
+<p><a name="index-lists_002c-formatting-125"></a>
Several registers define the spacing associated with lists. It is
likely that their default values won't suit your particular layout.
<dl>
-<dt><code>\abovelistskipamount, \belowlistskipamount</code><dd><a name="index-abovelistskipamount-120"></a><a name="index-belowlistskipamount-121"></a>The vertical glue inserted before and after every list, respectively.
+<dt><code>\abovelistskipamount, \belowlistskipamount</code><dd><a name="index-abovelistskipamount-126"></a><a name="index-belowlistskipamount-127"></a>The vertical glue inserted before and after every list, respectively.
- <br><dt><code>\interitemskipamount</code><dd><a name="index-interitemskipamount-122"></a>The vertical glue inserted before each item except the first.
+ <br><dt><code>\interitemskipamount</code><dd><a name="index-interitemskipamount-128"></a>The vertical glue inserted before each item except the first.
<code>\listcompact</code> resets this to zero, as mentioned above.
- <br><dt><code>\listleftindent, \listrightindent</code><dd><a name="index-listleftindent-123"></a><a name="index-listrightindent-124"></a><code>\listrightindent</code> is the amount of space by which the list is
+ <br><dt><code>\listleftindent, \listrightindent</code><dd><a name="index-listleftindent-129"></a><a name="index-listrightindent-130"></a><code>\listrightindent</code> is the amount of space by which the list is
indented on the right; i.e., it is added to <code>\rightskip</code>.
<code>\listleftindent</code> is the amount of space, <em>relative to</em>
<code>\parindent</code>, by which the list is indented on the left. Why treat
@@ -1071,25 +1319,25 @@ to zero.
<p>The three vertical glues are inserted by macros, and preceded by
penalties: <code>\abovelistskip</code>
-<a name="index-abovelistskip-125"></a>does <code>\vpenalty\abovelistpenalty</code>
-<a name="index-abovelistpenalty-126"></a>and then <code>\vskip\abovelistskip</code>. <code>\belowlistskip</code>
-<a name="index-belowlistskip-127"></a>and <code>\interitemskip</code>
-<a name="index-interitemskip-128"></a>are analogous.
+<a name="index-abovelistskip-131"></a>does <code>\vpenalty\abovelistpenalty</code>
+<a name="index-abovelistpenalty-132"></a>and then <code>\vskip\abovelistskip</code>. <code>\belowlistskip</code>
+<a name="index-belowlistskip-133"></a>and <code>\interitemskip</code>
+<a name="index-interitemskip-134"></a>are analogous.
<p>In addition, the macro <code>\listmarkerspace</code>
-<a name="index-listmarkerspace-129"></a>is called to separate the item label from the item text. This is set to
+<a name="index-listmarkerspace-135"></a>is called to separate the item label from the item text. This is set to
<code>\enspace</code> by default.
<p>If you want to change the labels on the items, you can redefine these
macros:
<code>\numberedmarker</code>
-<a name="index-numberedmarker-130"></a>or <code>\unorderedmarker</code>.
-<a name="index-unorderedmarker-131"></a>The following registers might be useful if you do:
+<a name="index-numberedmarker-136"></a>or <code>\unorderedmarker</code>.
+<a name="index-unorderedmarker-137"></a>The following registers might be useful if you do:
<dl>
-<dt><code>\numberedlistdepth, \unorderedlistdepth</code><dd><a name="index-numberedlistdepth-132"></a><a name="index-unorderedlistdepth-133"></a>These keep track of the depth of nesting of the two kinds of lists.
+<dt><code>\numberedlistdepth, \unorderedlistdepth</code><dd><a name="index-numberedlistdepth-138"></a><a name="index-unorderedlistdepth-139"></a>These keep track of the depth of nesting of the two kinds of lists.
- <br><dt><code>\itemnumber, \itemletter</code><dd><a name="index-itemnumber-134"></a><a name="index-itemletter-135"></a>These keep track of the number of items that have been seen in the current
+ <br><dt><code>\itemnumber, \itemletter</code><dd><a name="index-itemnumber-140"></a><a name="index-itemletter-141"></a>These keep track of the number of items that have been seen in the current
numbered list. They are both integer registers. The difference is that
<code>\itemnumber</code> starts at one, and <code>\itemletter</code> starts at 97,
i.e., lowercase `a'.
@@ -1098,12 +1346,12 @@ i.e., lowercase `a'.
<p>You can also redefine the control sequences that are used internally,
if you want to do something radically different: <code>\beginlist</code>
-<a name="index-beginlist-136"></a>is invoked to begin both kinds of lists; <code>\printitem</code>
-<a name="index-printitem-137"></a>is invoked to print the label (and space following the label) for each
+<a name="index-beginlist-142"></a>is invoked to begin both kinds of lists; <code>\printitem</code>
+<a name="index-printitem-143"></a>is invoked to print the label (and space following the label) for each
item; and <code>\endlist</code>
-<a name="index-endlist-138"></a>is invoked to end both kinds of
+<a name="index-endlist-144"></a>is invoked to end both kinds of
lists.
-<a name="index-item-labels_002c-changing-139"></a><a name="index-labels-on-items_002c-changing-140"></a>
+<a name="index-item-labels_002c-changing-145"></a><a name="index-labels-on-items_002c-changing-146"></a>
<div class="node">
<p><hr>
@@ -1116,25 +1364,40 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.7 Verbatim listing</h3>
-<p><a name="index-verbatim-listing-141"></a><a name="index-listing-files-142"></a><a name="index-files_002c-verbatim-listing-of-143"></a>It is sometimes useful to include a file verbatim in your document;
+<p><a name="index-verbatim-listing-147"></a><a name="index-listing-files-148"></a><a name="index-files_002c-verbatim-listing-of-149"></a>It is sometimes useful to include a file verbatim in your document;
for example, part of a computer program. The <code>\listing</code>
-<a name="index-listing-144"></a>command is given one argument, a filename, and produces the contents of
+<a name="index-listing-150"></a>command is given one argument, a filename, and produces the contents of
that file in your document. <code>\listing</code> expands <code>\listingfont</code>
to set the current font. The default value of <code>\listingfont</code>
-<a name="index-listingfont-145"></a>is <code>\tt</code>.
+<a name="index-listingfont-151"></a>is <code>\tt</code>.
<p>You can take arbitrary actions before reading the file by defining the macro
<code>\setuplistinghook</code>.
-<a name="index-setuplistinghook-146"></a>This is expanded just before the file is input.
+<a name="index-setuplistinghook-152"></a>This is expanded just before the file is input.
<p>If you want to have line numbers on the output, you can say
<code>\let\setuplistinghook = \linenumberedlisting</code>.
-<a name="index-linenumberedlisting-147"></a>The line numbers are stored in the count register <code>\lineno</code> while
+<a name="index-linenumberedlisting-153"></a>The line numbers are stored in the count register <code>\lineno</code> while
the file is being read. You can redefine the macro
-<code>\printlistinglineno</code> to change how they are printed.
+<code>\printlistinglineno</code>
+<a name="index-printlistinglineno-154"></a>to change how they are printed.
+
+ <p>Normally, the <code>\listing</code> command will add a final empty line at
+the end of the output, even if the file does not end in a newline. To
+suppress this final line, you can say
+<code>\let\setuplistinghook = \nolastlinelisting</code>.
+<a name="index-nolastlinelisting-155"></a>This also works with line numbers (say
+<code>\def\setuplistinghook{\linenumberedlisting \nolastlinelisting}</code>),
+but only if <code>\printlistinglineno</code>
+<a name="index-printlistinglineno-156"></a>consists exclusively of boxes at the top level (i.e., any
+<code>\kern</code>s or glue should be wrapped up in a box).
+
+ <p><a name="index-form-feed-character_002c-and-verbatim-listing-157"></a><a name="index-g_t_0040kbd_007bCTRL_002dL_007d_002c-and-verbatim-listing-158"></a>You can use the form feed control character (<acronym>ASCII</acronym>
+code&nbsp;<!-- /@w -->12, typed as <kbd>CTRL-L</kbd>) in the file to force a page break
+in the output.
<p>You can produce in-line verbatim text in your document with <code>\verbatim</code>.
-<a name="index-verbatim-148"></a>End the text with <code>|endverbatim</code>. If you need a `<samp><span class="samp">|</span></samp>' in the text,
+<a name="index-verbatim-159"></a>End the text with <code>|endverbatim</code>. If you need a `<samp><span class="samp">|</span></samp>' in the text,
double it. If the first character of the verbatim text is a space, use
<code>| </code>. (<code>| </code> will work elsewhere in the argument, too, but
isn't necessary.)
@@ -1147,7 +1410,7 @@ isn't necessary.)
<p>Line breaks and spaces in the verbatim text are preserved.
- <p><a name="index-verbatimescapechar-149"></a><a name="index-escape-character_002c-changing-verbatim-150"></a>You can change the verbatim escape character from the default `<samp><span class="samp">|</span></samp>'
+ <p><a name="index-verbatimescapechar-160"></a><a name="index-escape-character_002c-changing-verbatim-161"></a>You can change the verbatim escape character from the default `<samp><span class="samp">|</span></samp>'
with <code>\verbatimescapechar </code><var>char</var>; for example, this changes
it to `<samp><span class="samp">@</span></samp>'.
@@ -1164,7 +1427,7 @@ properly. For example:
<pre class="example"> \def\mymacro{\verbatim &amp;#%|endverbatim}% Doesn't work!
</pre>
- <p>To accomplish this, you must change the category codes yourself before
+ <p class="noindent">To accomplish this, you must change the category codes yourself before
making the macro definition. Perhaps <code>\uncatcodespecials</code> will
help you (see <a href="#Category-codes">Category codes</a>).
@@ -1179,23 +1442,41 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.8 Contents</h3>
-<p><a name="index-table-of-contents-151"></a><a name="index-contents-152"></a>
-Producing a table of contents that is both useful and aesthetic is one
+<p><a name="index-table-of-contents-162"></a><a name="index-contents-163"></a>Producing a table of contents that is both useful and aesthetic is one
of the most difficult design problems in any work. Naturally, Eplain
does not pretend to solve the design problem. Collecting the raw data
for a table of contents, however, is much the same across documents.
Eplain uses an auxiliary file with extension <samp><span class="file">.toc</span></samp>
-<a name="index-g_t_002etoc-_0040r_007bfile_007d-153"></a>(and the same root name as your document) to save the information.
+<a name="index-g_t_002etoc-_0040r_007bfile_007d-164"></a>(and the same root name as your document) to save the information.
- <p>To write an entry for the table of contents, you say
+<ul class="menu">
+<li><a accesskey="1" href="#Writing-the-_002etoc-file">Writing the .toc file</a>
+<li><a accesskey="2" href="#Reading-the-_002etoc-file">Reading the .toc file</a>
+<li><a accesskey="3" href="#Changing-the-_002etoc-file_0027s-root-name">Changing the .toc file's root name</a>
+<li><a accesskey="4" href="#Alternative-contents-files">Alternative contents files</a>
+</ul>
+
+<div class="node">
+<p><hr>
+<a name="Writing-the-.toc-file"></a>
+<a name="Writing-the-_002etoc-file"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Reading-the-_002etoc-file">Reading the .toc file</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Contents">Contents</a>
+
+</div>
+
+<h4 class="subsection">4.8.1 Writing the <tt>.toc</tt> file</h4>
+
+<p>To write an entry for the table of contents, you say
<code>\writetocentry{</code><var>part</var><code>}{</code><var>text</var><code>}</code>,
-<a name="index-writetocentry-154"></a>where <var>part</var> is the type of part this entry is, e.g.,
+<a name="index-writetocentry-165"></a>where <var>part</var> is the type of part this entry is, e.g.,
`<samp><span class="samp">chapter</span></samp>', and <var>text</var> is the text of the title.
<code>\writetocentry</code> puts an entry into the <tt>.toc</tt> file that looks
-<a name="index-toc_0040dots_007b_007dentry-155"></a>like <code>\toc</code><var>part</var><code>entry{</code><var>text</var><code>}{</code><var>page number</var><code>}</code>. The
-<var>text</var> is written unexpanded.
+<a name="index-toc_0040dots_007b_007dentry-166"></a>like <code>\toc</code><var>part</var><code>entry{</code><var>text</var><code>}{</code><var>page number</var><code>}</code>
+(unless <var>part</var> is an integer, see below). The <var>text</var> is
+written unexpanded.
- <p><a name="index-writenumberedtocentry-156"></a>A related command, <code>\writenumberedtocentry</code>, takes one additional
+ <p><a name="index-writenumberedtocentry-167"></a>A related command, <code>\writenumberedtocentry</code>, takes one additional
argument, the first token of which is expanded at the point of the
<code>\writenumberedtocentry</code>, but the rest of the argument is not
expanded. The usual application is when the parts of the document are
@@ -1218,7 +1499,54 @@ above writes the following to the <tt>.toc</tt> file:
<pre class="example"> \tocchapterentry{A $\sin$ wave}{3}{8}
\tocsectionentry{A section title}{9}
</pre>
- <p><a name="index-readtocfile-157"></a>You read the <tt>.toc</tt> file with the command <code>\readtocfile</code>.
+ <p><a name="index-writenumberedtocline-168"></a>A variation on <code>\writenumberedtocentry</code> is
+<code>\writenumberedtocline</code>, differing only in the order of the
+parameters it takes and writes for the <code>\toc</code><var>part</var><code>entry</code>
+control sequences. To continue the previous example:
+
+<pre class="example"> \writenumberedtocline{chapter}{\the\chapno}{A $\sin$ wave}
+</pre>
+ <p class="noindent">writes the following to the <tt>.toc</tt> file:
+
+<pre class="example"> \tocchapterentry{3}{A $\sin$ wave}{8}
+</pre>
+ <p class="noindent">Such ordering of the parameters allows the
+<code>\toc</code><var>part</var><code>entry</code> macros to typeset the text of the entry
+without actually reading it as an argument. This is required for
+entries which need to change character catcodes, e.g., to produce
+<a name="index-table-of-contents_002c-and-verbatim-text-169"></a><a name="index-contents_002c-and-verbatim-text-170"></a><a name="index-verbatim-text_002c-in-table-of-contents-171"></a><a name="index-special-characters_002c-in-table-of-contents-172"></a>verbatim text (see <a href="#Verbatim-listing">Verbatim listing</a>).
+
+ <p>Each of <code>\writetocentry</code>, <code>\writenumberedtocentry</code> and
+<code>\writenumberedtocline</code> processes a numeric <var>part</var> argument
+specially. If you pass <var>part</var> expanding to an integer, these
+macros write into the <tt>.toc</tt> file an entry that starts with
+<a name="index-toc_0040dots_007b_007dentry-173"></a><code>\tocentry{</code><var>part</var><code>}</code>. Thus, you can define a single
+<code>\tocentry</code> macro which formats all entries for a table of
+contents. To continue the previous examples:
+
+<pre class="example"> \writenumberedtocentry{1}{A $\sin$ wave}{\the\chapno}
+ \writenumberedtocline{1}{\the\chapno}{A $\sin$ wave}
+ \writetocentry{2}{A section title}
+</pre>
+ <p class="noindent">writes the following to the .toc file:
+
+<pre class="example"> \tocentry{1}{A $\sin$ wave}{3}{8}
+ \tocentry{1}{3}{A $\sin$ wave}{8}
+ \tocentry{2}{A section title}{9}
+</pre>
+ <div class="node">
+<p><hr>
+<a name="Reading-the-.toc-file"></a>
+<a name="Reading-the-_002etoc-file"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Changing-the-_002etoc-file_0027s-root-name">Changing the .toc file's root name</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Writing-the-_002etoc-file">Writing the .toc file</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Contents">Contents</a>
+
+</div>
+
+<h4 class="subsection">4.8.2 Reading the <tt>.toc</tt> file</h4>
+
+<p><a name="index-readtocfile-174"></a>You read the <tt>.toc</tt> file with the command <code>\readtocfile</code>.
Naturally, whatever <code>\toc... entry</code> commands that were written
to the file must be defined when <code>\readtocfile</code> is invoked. Eplain
has minimal definitions for <code>\tocchapterentry</code>,
@@ -1226,28 +1554,62 @@ has minimal definitions for <code>\tocchapterentry</code>,
undefined control sequence errors in common cases. They aren't suitable
for anything but preliminary proofs.
- <p>Each of <code>\writetocentry</code> and <code>\writenumberedtocentry</code> opens
+ <p>Each of <code>\writetocentry</code>, <code>\writenumberedtocentry</code> and
+<code>\writenumberedtocline</code> opens
the <tt>.toc</tt> file for writing, thereby deleting the information from the
previous run. You should therefore arrange that <code>\readtocfile</code> be
called <em>before</em> the first call to a <code>\writetoc...</code> macro.
<code>\readtocfile</code> does not itself delete the information
from the <tt>.toc</tt> file, so that you can call it several times,
e.g., to create both a short
-<a name="index-table-of-contents_002c-short-158"></a>and normal table of contents. (To produce this in particular, define
+<a name="index-table-of-contents_002c-short-175"></a>and normal table of contents. (To produce this in particular, define
<code>\tocsectionentry</code> to produce nothing while you are reading
<tt>.toc</tt> file for a short table of contents (see <a href="#Macro-arguments">Macro arguments</a>).)
<p>On the other hand, if you don't want to rewrite the <tt>.toc</tt> file at
all, perhaps because you are only running TeX on part of your
manuscript, you can set <code>\rewritetocfilefalse</code>.
-<a name="index-ifrewritetocfile-159"></a><a name="index-rewritetocfile-_0040r_007b_0028conditional_0029_007d-160"></a>
-By default, the <samp><span class="file">.toc</span></samp> file has the root <code>\jobname</code>. If your
+<a name="index-ifrewritetocfile-176"></a><a name="index-rewritetocfile-_0040r_007b_0028conditional_0029_007d-177"></a>
+
+<div class="node">
+<p><hr>
+<a name="Changing-the-.toc-file's-root-name"></a>
+<a name="Changing-the-_002etoc-file_0027s-root-name"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Alternative-contents-files">Alternative contents files</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Reading-the-_002etoc-file">Reading the .toc file</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Contents">Contents</a>
+
+</div>
+
+<h4 class="subsection">4.8.3 Changing the <tt>.toc</tt> file's root name</h4>
+
+<p>By default, the <samp><span class="file">.toc</span></samp> file has the root <code>\jobname</code>. If your
document has more than one contents&mdash;for example, if it is a collection
of papers, some of which have their own contents&mdash;you can tell Eplain
to use a different root name by defining the control sequence
<code>\tocfilebasename</code>.
-<a name="index-tocfilebasename-161"></a>
-<a name="index-list-of-figures-162"></a><a name="index-list-of-tables-163"></a><a name="index-definecontentsfile-164"></a>In addition to the usual table of contents, you may want to have a list
+<a name="index-tocfilebasename-178"></a>
+<a name="index-writing-several-_0040code_007btoc_007d-files-179"></a><a name="index-g_t_0040code_007btoc_007d-files_002c-writing-several-180"></a>Note that <code>\writetocentry</code>, <code>\writenumberedtocentry</code> and
+<code>\writenumberedtocline</code> will
+open the contents file for writing only at the first call, using the
+value of <code>\tocfilebasename</code> at that time. Changing the value of
+<code>\tocfilebasename</code> afterwards will not affect which file gets
+<em>written</em>, although it will affect which file gets <em>read</em> by
+<code>\readcontentsfile</code>. In case you need to write several contents
+files from a single TeX job, use <code>\definecontentsfile</code>
+(see <a href="#Alternative-contents-files">Alternative contents files</a>).
+
+<div class="node">
+<p><hr>
+<a name="Alternative-contents-files"></a>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Changing-the-_002etoc-file_0027s-root-name">Changing the .toc file's root name</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Contents">Contents</a>
+
+</div>
+
+<h4 class="subsection">4.8.4 Alternative contents files</h4>
+
+<p><a name="index-list-of-figures-181"></a><a name="index-list-of-tables-182"></a><a name="index-definecontentsfile-183"></a>In addition to the usual table of contents, you may want to have a list
of figures, list of tables, or other such contents-like list. You can do
this with <code>\definecontentsfile{</code><var>abbrev</var><code>}</code>. All of the
above commands are actually a special case that Eplain predefines with
@@ -1269,13 +1631,13 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.9 Cross-references</h3>
-<p><a name="index-cross_002dreferences-165"></a>It is often useful to refer the reader to other parts of your document;
+<p><a name="index-cross_002dreferences-184"></a>It is often useful to refer the reader to other parts of your document;
but putting literal page, section, equation, or whatever numbers in the
text is certainly a bad thing.
<p>Eplain therefore provides commands for symbolic cross-references. It
uses an auxiliary file with extension <tt>.aux</tt>
-<a name="index-g_t_002eaux-_0040r_007bfile_007d-166"></a>(and the same root name as your document) to keep track of the
+<a name="index-g_t_002eaux-_0040r_007bfile_007d-185"></a>(and the same root name as your document) to keep track of the
information. Therefore, it takes two passes to get the cross-references
right&mdash;one to write them out, and one to read them in. Eplain
automatically reads the <tt>.aux</tt> file at the first reference; after
@@ -1284,7 +1646,7 @@ reading it, Eplain reopens it for writing.
<p>You can control whether or not Eplain warns you about undefined
labels. See <a href="#Citations">Citations</a>.
- <p><a name="index-labels_002c-characters-valid-in-167"></a>Labels in Eplain's cross-reference commands can use characters of
+ <p><a name="index-labels_002c-characters-valid-in-186"></a>Labels in Eplain's cross-reference commands can use characters of
category code eleven (letter), twelve (other), ten (space), three (math
shift), four (alignment tab), seven (superscript), or eight (subscript).
For example, `<samp><span class="samp">(a1 $&amp;^_</span></samp>' is a valid label (assuming the category
@@ -1293,8 +1655,8 @@ codes of plain TeX), but `<samp><span class="samp">%#\{</span></samp>' has no va
<p>You can also do symbolic cross-references for bibliographic citations
and list items. See <a href="#Citations">Citations</a>, and <a href="#Lists">Lists</a>.
- <p>Eplain can create hypertext links for the cross-references;
-see <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a>.
+ <p>Eplain can create hypertext links for the cross-references
+(see <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a>).
<ul class="menu">
<li><a accesskey="1" href="#Defining-generic-references">Defining generic references</a>
@@ -1311,8 +1673,8 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Cross_002dreferences">Cross-references
<h4 class="subsection">4.9.1 Defining generic references</h4>
-<p><a name="index-defining-general-references-168"></a><a name="index-references_002c-defining-general-169"></a><a name="index-cross_002dreferences_002c-defining-general-170"></a>
-<a name="index-definexref-171"></a>Eplain provides the command <code>\definexref</code> for general
+<p><a name="index-defining-general-references-187"></a><a name="index-references_002c-defining-general-188"></a><a name="index-cross_002dreferences_002c-defining-general-189"></a>
+<a name="index-definexref-190"></a>Eplain provides the command <code>\definexref</code> for general
cross-references. It takes three arguments: the name of the label (see
section above for valid label names), the value of the label (which can
be anything), and the &ldquo;class&rdquo; of the reference&mdash;whether it's a
@@ -1340,23 +1702,23 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Cross_002dreferences">Cross-references
<h4 class="subsection">4.9.2 Using generic references</h4>
-<p><a name="index-defining-general-references-172"></a><a name="index-references_002c-defining-general-173"></a><a name="index-cross_002dreferences_002c-defining-general-174"></a>
+<p><a name="index-defining-general-references-191"></a><a name="index-references_002c-defining-general-192"></a><a name="index-cross_002dreferences_002c-defining-general-193"></a>
To retrieve the value of the label defined via <code>\definexref</code> (see
the previous section), Eplain provides the following macros:
-<a name="index-refn-175"></a>
-<dl><dt><code>\refn{</code><var>label</var><code>}</code><dd><a name="index-xrefn-176"></a><br><dt><code>\xrefn{</code><var>label</var><code>}</code><dd><code>\refn</code> and <code>\xrefn</code> (they are synonyms) produce the bare
+<a name="index-refn-194"></a>
+<dl><dt><code>\refn{</code><var>label</var><code>}</code><dd><a name="index-xrefn-195"></a><br><dt><code>\xrefn{</code><var>label</var><code>}</code><dd><code>\refn</code> and <code>\xrefn</code> (they are synonyms) produce the bare
definition of <var>label</var>. If <var>label</var> isn't defined, issue a
warning, and produce <var>label</var> itself instead, in typewriter. (The
warning isn't given if <code>\xrefwarningfalse</code>.)
-<a name="index-xrefwarning-_0040r_007bconditional_007d-177"></a>
-<a name="index-ref-178"></a><br><dt><code>\ref{</code><var>label</var><code>}</code><dd>Given the class <var>c</var> for <var>label</var> (see the description of
+<a name="index-xrefwarning-_0040r_007bconditional_007d-196"></a>
+<a name="index-ref-197"></a><br><dt><code>\ref{</code><var>label</var><code>}</code><dd>Given the class <var>c</var> for <var>label</var> (see the description of
<code>\definexref</code> in the previous section), expand the control sequence
<code>\</code><var>c</var><code> word</code> (if it's defined) followed by a tie. Then call
<code>\refn</code> on <var>label</var>. (Example below.)
- <p><a name="index-refs-179"></a><br><dt><code>\refs{</code><var>label</var><code>}</code><dd>Like <code>\ref</code>, but append the letter `<samp><span class="samp">s</span></samp>' to the
+ <p><a name="index-refs-198"></a><br><dt><code>\refs{</code><var>label</var><code>}</code><dd>Like <code>\ref</code>, but append the letter `<samp><span class="samp">s</span></samp>' to the
<code>\...word</code>.
</dl>
@@ -1389,18 +1751,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
one for definition and one for use.
<dl>
-<dt><code>\xrdef{</code><var>label</var><code>}</code><dd><a name="index-xrdef-180"></a>Define <var>label</var> to be the current page number. This produces no
+<dt><code>\xrdef{</code><var>label</var><code>}</code><dd><a name="index-xrdef-199"></a>Define <var>label</var> to be the current page number. This produces no
printed output, and ignores following spaces.
- <br><dt><code>\xref{</code><var>label</var><code>}</code><dd><a name="index-xref-181"></a>Produce the text `p.&nbsp;<!-- /@w --><var>pageno</var>', which is the usual form for
+ <br><dt><code>\xref{</code><var>label</var><code>}</code><dd><a name="index-xref-200"></a>Produce the text `p.&nbsp;<!-- /@w --><var>pageno</var>', which is the usual form for
cross-references. The <var>pageno</var> is actually <var>label</var>'s
definition; if <var>label</var> isn't defined, the text of the label itself
is printed. The `p.&nbsp;<!-- /@w -->' prefix is defined by <code>\xrefpageword</code>.
-<a name="index-xrefpageword-182"></a>Its default definition is <code>p.\thinspace</code>.
+<a name="index-xrefpageword-201"></a>Its default definition is <code>p.\thinspace</code>.
</dl>
- <p>Eplain can create hypertext links for the page references; see <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a>.
+ <p>Eplain can create hypertext links for the page references (see <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a>).
<div class="node">
<p><hr>
@@ -1413,27 +1775,27 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.11 Equation references</h3>
-<p><a name="index-equations_002c-references-to-183"></a><a name="index-equations_002c-numbering-184"></a>Instead of referring to pages, it's most useful if equation labels
+<p><a name="index-equations_002c-references-to-202"></a><a name="index-equations_002c-numbering-203"></a>Instead of referring to pages, it's most useful if equation labels
refer to equation numbers. Therefore, Eplain reserves a <code>\count</code>
register, <code>\eqnumber</code>,
-<a name="index-eqnumber-185"></a>for the current equation number, and increments it at each
+<a name="index-eqnumber-204"></a>for the current equation number, and increments it at each
numbered equation.
<p>Here are the commands to define equation labels and then refer to them:
<dl>
-<dt><code>\eqdef{</code><var>label</var><code>}</code><dd><a name="index-eqdef-186"></a>This defines <var>label</var> to be the current value of <code>\eqnumber</code>,
+<dt><code>\eqdef{</code><var>label</var><code>}</code><dd><a name="index-eqdef-205"></a>This defines <var>label</var> to be the current value of <code>\eqnumber</code>,
and, if the current context is not inner, then produces a <code>\eqno</code>
command. (The condition makes it possible to use <code>\eqdef</code> in an
<code>\eqalignno</code> construction, for example.) The text of the equation
number is produced using <code>\eqprint</code>. See <a href="#Formatting-equation-references">Formatting equation references</a>.
- <p><a name="index-empty-equation-labels-187"></a><a name="index-labels_002c-empty-equation-188"></a><a name="index-equations_002c-giving-numbers-to-all-189"></a>If <var>label</var> is empty, you still get an equation number (although
+ <p><a name="index-empty-equation-labels-206"></a><a name="index-labels_002c-empty-equation-207"></a><a name="index-equations_002c-giving-numbers-to-all-208"></a>If <var>label</var> is empty, you still get an equation number (although
naturally you can't reliably refer to it). This is useful if you want
to put numbers on all equations in your document, and you don't want to
think up unique labels.
- <p><a name="index-empty-equation-labels_002c-referring-to-190"></a><a name="index-labels_002c-empty-equation_002c-referring-to-191"></a>To refer to the last equation with the empty label, you just use the
+ <p><a name="index-empty-equation-labels_002c-referring-to-209"></a><a name="index-labels_002c-empty-equation_002c-referring-to-210"></a>To refer to the last equation with the empty label, you just use the
empty label in one of the equation reference macros (see below). This
can be handy when you want to refer to an equation shortly after its
definition, say, in the sentence following the displayed equation, and
@@ -1442,27 +1804,27 @@ extreme caution: if later you change the text and insert another
empty definition between the original definition and the reference,
the reference will start to refer to the new empty-labeled equation.
- <br><dt><code>\eqdefn{</code><var>label</var><code>}</code><dd><a name="index-eqdefn-192"></a>This is like <code>\eqdef</code>, except it always omits the <code>\eqno</code>
+ <br><dt><code>\eqdefn{</code><var>label</var><code>}</code><dd><a name="index-eqdefn-211"></a>This is like <code>\eqdef</code>, except it always omits the <code>\eqno</code>
command. It can therefore be used in places where <code>\eqdef</code> can't;
for example, in a non-displayed equation. The text of the equation
number is not produced, so you can also use it in the (admittedly
unusual) circumstance when you want to define an equation label but not
print that label.
- <br><dt><code>\eqref{</code><var>label</var><code>}</code><dd><a name="index-eqref-193"></a>This produces a formatted reference to <var>label</var>. If <var>label</var> is
+ <br><dt><code>\eqref{</code><var>label</var><code>}</code><dd><a name="index-eqref-212"></a>This produces a formatted reference to <var>label</var>. If <var>label</var> is
undefined (perhaps because it is a forward reference), it just produces
the text of the label itself. Otherwise, it calls <code>\eqprint</code>.
- <br><dt><code>\eqrefn{</code><var>label</var><code>}</code><dd><a name="index-eqrefn-194"></a>This produces the cross-reference text for <var>label</var>. That is, it
+ <br><dt><code>\eqrefn{</code><var>label</var><code>}</code><dd><a name="index-eqrefn-213"></a>This produces the cross-reference text for <var>label</var>. That is, it
is like <code>\eqref</code>, except it doesn't call <code>\eqprint</code>.
</dl>
- <p><a name="index-equation-labels_002c-characters-valid-in-195"></a>Equation labels can contain the same characters that are valid in
+ <p><a name="index-equation-labels_002c-characters-valid-in-214"></a>Equation labels can contain the same characters that are valid in
general cross-references.
- <p>Eplain can create hypertext links for the equation references;
-see <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a>.
+ <p>Eplain can create hypertext links for the equation references
+(see <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a>).
<ul class="menu">
<li><a accesskey="1" href="#Formatting-equation-references">Formatting equation references</a>
@@ -1479,24 +1841,24 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Equation-references">Equation referenc
<h4 class="subsection">4.11.1 Formatting equation references</h4>
-<p><a name="index-equation-numbers_002c-formatting-of-196"></a>Both defining an equation label and referring to it should usually
+<p><a name="index-equation-numbers_002c-formatting-of-215"></a>Both defining an equation label and referring to it should usually
produce output. This output is produced with the <code>\eqprint</code> macro,
which takes one argument, the equation number being defined or referred
to. By default, this just produces `<samp><span class="samp">(</span><var>number</var><span class="samp">)</span></samp>', where
<var>number</var> is the equation number. To produce the equation number in
a different font, or with different surrounding symbols, or whatever,
you can redefine <code>\eqprint</code>.
-<a name="index-eqprint-197"></a>For example, the following definition would print all equation numbers
+<a name="index-eqprint-216"></a>For example, the following definition would print all equation numbers
in italics. (The extra braces define a group, to keep the font change
from affecting surrounding text.)
<pre class="example"> \def\eqprint#1{{\it (#1)}}
</pre>
- <p>In addition to changing the formatting of equation numbers, you might
+ <p>In addition to changing the formatting of equation numbers, you might want
to add more structure to the equation number; for example, you might
want to include the chapter number, to get equation numbers like
`(1.2)'. To achieve this, you redefine <code>\eqconstruct</code>.
-<a name="index-eqconstruct-198"></a>For example:
+<a name="index-eqconstruct-217"></a>For example:
<pre class="example"> \def\eqconstruct#1{\the\chapternumber.#1}
</pre>
@@ -1537,18 +1899,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Equation-references">Equation referenc
<h4 class="subsection">4.11.2 Subequation references</h4>
-<p><a name="index-equations_002c-groups-of-199"></a><a name="index-subequations_002c-referring-to-200"></a>Eplain also provides for one level of substructure for equations. That
+<p><a name="index-equations_002c-groups-of-218"></a><a name="index-subequations_002c-referring-to-219"></a>Eplain also provides for one level of substructure for equations. That
is, you might want to define a related group of equations with numbers
like `2.1' and `2.2', and then be able to refer to the group as a whole:
&ldquo;<small class="dots">...</small> in the system of equations (2)<small class="dots">...</small>&rdquo;.
<p>The commands to do this are <code>\eqsubdef</code> and
-<a name="index-eqsubdef-201"></a><code>\eqsubdefn</code>.
-<a name="index-eqsubdefn-202"></a>They take one <var>label</var> argument like their counterparts above,
+<a name="index-eqsubdef-220"></a><code>\eqsubdefn</code>.
+<a name="index-eqsubdefn-221"></a>They take one <var>label</var> argument like their counterparts above,
and generally behave in the same way. The difference is in how they
construct the equation number: instead of using just <code>\eqnumber</code>,
they also use another counter, <code>\subeqnumber</code>.
-<a name="index-subeqnumber-203"></a>This counter is advanced by one at every <code>\eqsubdef</code> or
+<a name="index-subeqnumber-222"></a>This counter is advanced by one at every <code>\eqsubdef</code> or
<code>\eqsubdefn</code>, and reset to zero at every <code>\eqdef</code> or
<code>\eqdefn</code>.
@@ -1557,16 +1919,18 @@ equations.
<p>To put the two together to construct the text that the label will
produce, they use a macro <code>\eqsubreftext</code>.
-<a name="index-eqsubreftext-204"></a>This macros takes two arguments, the &ldquo;main&rdquo; equation number (which,
+<a name="index-eqsubreftext-223"></a>This macros takes two arguments, the &ldquo;main&rdquo; equation number (which,
because the equation label can be defined as arbitrary text, as
described in the previous section, might be anything at all) and the
&ldquo;sub&rdquo; equation number (which is always just a number). Eplain's
default definition just puts a period between them:
+
<pre class="example"> \def\eqsubreftext#1#2{#1.#2}%
</pre>
<p class="noindent">You can redefine <code>\eqsubreftext</code> to print however you
like. For example, this definition makes the labels print as `2a',
`2b', and so on.
+
<pre class="example"> \newcount\subref
\def\eqsubreftext#1#2{%
\subref = #2 % The space stops a &lt;number&gt;.
@@ -1589,31 +1953,31 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.12 Indexing</h3>
-<p><a name="index-indexing-205"></a><a name="index-sorting-an-index-206"></a>
+<p><a name="index-indexing-224"></a><a name="index-sorting-an-index-225"></a>
Eplain provides support for generating raw material for an index, and
for typesetting a sorted index. A separate program must do the actual
collection and sorting of terms, because TeX itself has no support
for sorting.
<p>Eplain can create hypertext links pointing from the index to the index
-terms; see <a href="#Index-hyperlinks">Index hyperlinks</a>.
+terms (see <a href="#Index-hyperlinks">Index hyperlinks</a>).
- <p><a name="index-URL-for-MakeIndex-207"></a><a name="index-makeindex-208"></a>Eplain's indexing commands were designed to work with the program
+ <p><a name="index-g_t_0040acronym_007bURL_007d-for-MakeIndex-226"></a><a name="index-makeindex-227"></a>Eplain's indexing commands were designed to work with the program
MakeIndex, available from CTAN hosts in
<samp><span class="file">tex-archive/indexing/makeindex</span></samp>; MakeIndex is also commonly
included in prepackaged TeX distributions. It is beyond the scope of
this manual to explain how to run MakeIndex, and all of its many
-options. See <a href="http://www.ctan.org/tex-archive/indexing/makeindex/">http://www.ctan.org/tex-archive/indexing/makeindex/</a>
+options. See <a href="http://www.ctan.org/tex-archive/indexing/makeindex">http://www.ctan.org/tex-archive/indexing/makeindex</a>.
<p>The basic strategy for indexing works like this:
<ol type=1 start=1>
- <p><a name="index-g_t_002eidx-_0040r_007bfiles_007d-209"></a><li>For a document <samp><span class="file">foo.tex</span></samp>, Eplain's indexing commands (e.g.,
+ <p><a name="index-g_t_002eidx-_0040r_007bfiles_007d-228"></a><li>For a document <samp><span class="file">foo.tex</span></samp>, Eplain's indexing commands (e.g.,
<code>\idx</code>; see the section `Indexing terms' below) write the raw index
material to <samp><span class="file">foo.idx</span></samp>.
- <p><a name="index-g_t_002eind-_0040r_007bfiles_007d-210"></a><li>MakeIndex reads <samp><span class="file">foo.idx</span></samp>, collects and sorts the index, and
+ <p><a name="index-g_t_002eind-_0040r_007bfiles_007d-229"></a><li>MakeIndex reads <samp><span class="file">foo.idx</span></samp>, collects and sorts the index, and
writes the result to <samp><span class="file">foo.ind</span></samp>.
<li>Eplain reads and typesets <samp><span class="file">foo.ind</span></samp> on a subsequent run of
@@ -1621,10 +1985,10 @@ TeX. See the section `Typesetting an index' below.
</ol>
- <p><a name="index-texi2dvi-211"></a>The <samp><span class="command">texi2dvi</span></samp> program can help you automate this
-process, see <a href="#Invoking-Eplain">Invoking Eplain</a>.
+ <p><a name="index-texi2dvi-230"></a>The <samp><span class="command">texi2dvi</span></samp> program can help you automate this
+process (see <a href="#Invoking-Eplain">Invoking Eplain</a>).
- <p><a name="index-multiple-indexes-212"></a><a name="index-indexes_002c-multiple-213"></a><a name="index-defineindex-214"></a>If your document needs more than one index, each must have its own
+ <p><a name="index-multiple-indexes-231"></a><a name="index-indexes_002c-multiple-232"></a><a name="index-defineindex-233"></a>If your document needs more than one index, each must have its own
file. Therefore, Eplain provides the command <code>\defineindex</code>, which
takes an argument that is a single letter, which replaces `<samp><span class="samp">i</span></samp>' in
the filenames and in the indexing command names described below. For
@@ -1652,7 +2016,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Indexing">Indexing</a>
<h4 class="subsection">4.12.1 Indexing terms</h4>
-<p><a name="index-indexing-terms-215"></a><a name="index-silent-indexing-216"></a>
+<p><a name="index-indexing-terms-234"></a><a name="index-silent-indexing-235"></a>
Indexing commands in Eplain come in pairs: one command that only
writes the index entry to the `<samp><span class="samp">.idx</span></samp>' file (see above section), and
one that also typesets the term being indexed. The former always starts
@@ -1661,19 +2025,20 @@ with `<samp><span class="samp">s</span></samp>' (for &ldquo;silent&rdquo;). In e
above. Eplain defines the index `<samp><span class="samp">i</span></samp>' itself, so that's what we'll
use in the names below.
- <p><a name="index-subterm-in-indexing-217"></a>The silent form of the commands take a subterm as a trailing optional
+ <p><a name="index-subterm-in-indexing-236"></a>The silent form of the commands take a subterm as a trailing optional
argument. For example, <code>\sidx{truth}[definition of]</code> on page 75
makes an index entry that will eventually be typeset (by default) as
<pre class="display"> truth
definition of, 75
</pre>
- <p><a name="index-trailing-spaces-and-indexing-commands-218"></a><a name="index-spaces_002c-trailing-and-indexing-commands-219"></a><a name="index-indexing-and-trailing-spaces-220"></a>Also, the silent commands ignore trailing spaces. The non-silent ones do not.
+ <p><a name="index-trailing-spaces-and-indexing-commands-237"></a><a name="index-spaces_002c-trailing-and-indexing-commands-238"></a><a name="index-indexing-and-trailing-spaces-239"></a>Also, the silent commands ignore trailing spaces. The non-silent ones do not.
<ul class="menu">
<li><a accesskey="1" href="#Indexing-commands">Indexing commands</a>: Making index entries.
<li><a accesskey="2" href="#Modifying-index-entries">Modifying index entries</a>: Ranges, see/see also, page number typesetting.
-<li><a accesskey="3" href="#Proofing-index-terms">Proofing index terms</a>: Noting index entries in the margins.
+<li><a accesskey="3" href="#Index-entries-with-special-characters">Index entries with special characters</a>
+<li><a accesskey="4" href="#Proofing-index-terms">Proofing index terms</a>: Noting index entries in the margins.
</ul>
<div class="node">
@@ -1686,10 +2051,10 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Indexing-terms">Indexing terms</a>
<h5 class="subsubsection">4.12.1.1 Indexing commands</h5>
-<p><a name="index-indexing-commands-221"></a>Here are the commands.
+<p><a name="index-indexing-commands-240"></a>Here are the commands.
<ul>
-<li><a name="index-sidx-222"></a><a name="index-idx-223"></a><code>\sidx{</code><var>term</var><code>}[</code><var>subterm</var><code>]</code> makes an index entry for
+<li><a name="index-sidx-241"></a><a name="index-idx-242"></a><code>\sidx{</code><var>term</var><code>}[</code><var>subterm</var><code>]</code> makes an index entry for
<var>term</var>, optionally with subterm <var>subterm</var>.
<code>\idx{</code><var>term</var><code>}</code> also produces <var>term</var> as output. Example:
@@ -1701,7 +2066,7 @@ specified in <var>subterm</var>, using the
<code>\idxsubentryseparator</code> character to separate
them. This character is by default `<samp><span class="samp">!</span></samp>'.
- <li><a name="index-sidxname-224"></a><a name="index-idxnameseparator-225"></a><a name="index-idxname-226"></a><code>\sidxname{</code><var>First M.</var><code>}{</code><var>von Last</var><code>}[</code><var>subterm</var><code>]</code>
+ <li><a name="index-sidxname-243"></a><a name="index-idxnameseparator-244"></a><a name="index-idxname-245"></a><code>\sidxname{</code><var>First M.</var><code>}{</code><var>von Last</var><code>}[</code><var>subterm</var><code>]</code>
makes an index
entry for `<samp><var>von Last</var><span class="samp">, </span><var>First M.</var></samp>'. You can change the
`<samp><span class="samp">, </span></samp>' by redefining <code>\idxnameseparator</code>.
@@ -1713,7 +2078,7 @@ and <code>\sidx</code>.) Example:
\idxname{Donald}{Westlake} has written many kinds of novels, under
almost as many names.
</pre>
- <li><a name="index-sidxmarked-227"></a><a name="index-idxmarked-228"></a><code>\sidxmarked\</code><var>cs</var><code>{</code><var>term</var><code>}[</code><var>subterm</var><code>]</code> makes an index
+ <li><a name="index-sidxmarked-246"></a><a name="index-idxmarked-247"></a><code>\sidxmarked\</code><var>cs</var><code>{</code><var>term</var><code>}[</code><var>subterm</var><code>]</code> makes an index
entry for <var>term</var><code>[</code><var>subterm</var><code>]</code>, but <var>term</var> will be put
in the index as <code>\</code><var>cs</var><code>{term}</code>, but still sorted as just
<var>term</var>. <code>\idxmarked\</code><var>cs</var><code>{</code><var>term</var><code>}</code> also typesets
@@ -1725,7 +2090,7 @@ the typesetting of index entries. Example:
Peter Drucker's \idxmarked\article{The Polanyis} is a remarkable
essay about a remarkable family.
</pre>
- <li><a name="index-idxsubmarked-229"></a><a name="index-sidxsubmarked-230"></a><code>\sidxsubmarked{</code><var>term</var><code>}\</code><var>cs</var><code>{subterm}</code> makes an index
+ <li><a name="index-idxsubmarked-248"></a><a name="index-sidxsubmarked-249"></a><code>\sidxsubmarked{</code><var>term</var><code>}\</code><var>cs</var><code>{subterm}</code> makes an index
entry for <var>term</var>, <var>subterm</var> as usual, but also puts <var>subterm</var> in
the index as <code>\</code><var>cs</var><code>{term}</code>.
<code>\idxsubmarked{</code><var>term</var><code>}\</code><var>cs</var><code>{subterm}</code> also typesets
@@ -1738,7 +2103,7 @@ syntax is convoluted enough to make this useful. Example:
</pre>
</ul>
- <p><a name="index-index-entry-general-sorting-231"></a><a name="index-sorting-of-index-entries-232"></a>The commands above rely on MakeIndex's feature for separating sorting of
+ <p><a name="index-index-entry-general-sorting-250"></a><a name="index-sorting-of-index-entries-251"></a>The commands above rely on MakeIndex's feature for separating sorting of
an index entry's from its typesetting. You can use this directly by
specifying an index entry as <var>sort</var><code>@</code><var>typeset</var>. For
example:
@@ -1747,11 +2112,11 @@ example:
</pre>
<p class="noindent">will sort as <code>Ap-weight</code>, but print with the proper math.
The <code>@</code> here is MakeIndex's default character for this purpose.
-See <a href="http://www.ctan.org/tex-archive/indexing/makeindex/">http://www.ctan.org/tex-archive/indexing/makeindex/</a>. To make an index
+See <a href="http://www.ctan.org/tex-archive/indexing/makeindex">http://www.ctan.org/tex-archive/indexing/makeindex</a>. To make an index
entry with an <code>@</code> in it, you have to escape it with a backslash;
Eplain provides no macros for doing this.
- <p><a name="index-afterindexterm-_0040r_007bhook_007d-233"></a><a name="index-whatsits-made-by-index-entries-234"></a>After any index command, Eplain runs
+ <p><a name="index-afterindexterm-_0040r_007bhook_007d-252"></a><a name="index-whatsits-made-by-index-entries-253"></a>After any index command, Eplain runs
<code>\hookaction{afterindexterm}</code>. Because the index commands always
add a whatsit item to the current list, you may wish to preserve a
penalty or space past the new item. For example, given a conditional
@@ -1763,7 +2128,7 @@ could do:
<div class="node">
<p><hr>
<a name="Modifying-index-entries"></a>
-Next:&nbsp;<a rel="next" accesskey="n" href="#Proofing-index-terms">Proofing index terms</a>,
+Next:&nbsp;<a rel="next" accesskey="n" href="#Index-entries-with-special-characters">Index entries with special characters</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Indexing-commands">Indexing commands</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="#Indexing-terms">Indexing terms</a>
@@ -1771,7 +2136,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Indexing-terms">Indexing terms</a>
<h5 class="subsubsection">4.12.1.2 Modifying index entries</h5>
-<p><a name="index-modifying-index-entries_0027-page-numbers-235"></a><a name="index-index-entries_0027-page-numbers_002c-modifying-236"></a>
+<p><a name="index-modifying-index-entries_0027-page-numbers-254"></a><a name="index-index-entries_0027-page-numbers_002c-modifying-255"></a>
All the index commands described in the previous section take an initial
optional argument before the index term, which modify the index entry's
meaning in various ways. You can specify only one of the following in
@@ -1787,7 +2152,7 @@ is independent of these.
<p>Here are the possibilities:
<dl>
-<dt><code>begin</code><dt><code>end</code><dd><a name="index-begin-_0040r_007bfor-index-entries_007d-237"></a><a name="index-end-_0040r_007bfor-index-entries_007d-238"></a><a name="index-index-entries-and-ranges-239"></a><a name="index-ranges-and-index-entry-240"></a>These mark an index entry as the beginning or end of a range. The index
+<dt><code>begin</code><dt><code>end</code><dd><a name="index-begin-_0040r_007bfor-index-entries_007d-256"></a><a name="index-end-_0040r_007bfor-index-entries_007d-257"></a><a name="index-index-entries-and-ranges-258"></a><a name="index-ranges-and-index-entry-259"></a>These mark an index entry as the beginning or end of a range. The index
entries must match exactly for MakeIndex to recognize them.
Example:
@@ -1800,7 +2165,7 @@ Example:
<pre class="display"> future,
Cohen, Leonard, 65&ndash;94
</pre>
- <br><dt><code>see</code><dd><a name="index-see-_0040r_007bfor-index-entries_007d-241"></a><a name="index-see_002c-and-index-entries-242"></a><a name="index-cross_002dreferencing-index-entries-243"></a><a name="index-index-entries_002c-and-cross_002dreferencing-244"></a>This marks an index entry as pointing to another; the real index term is
+ <br><dt><code>see</code><dd><a name="index-see-_0040r_007bfor-index-entries_007d-260"></a><a name="index-see_002c-and-index-entries-261"></a><a name="index-cross_002dreferencing-index-entries-262"></a><a name="index-index-entries_002c-and-cross_002dreferencing-263"></a>This marks an index entry as pointing to another; the real index term is
an additional (non-optional) argument to the command. Thus you can
anticipate a term readers may wish to look up, yet which you have
decided not to index. Example:
@@ -1812,7 +2177,7 @@ decided not to index. Example:
<pre class="display"> analysis,
archetypal, <i>see</i> archetypal criticism
</pre>
- <br><dt><code>seealso</code><dd><a name="index-seealso-_0040r_007bfor-index-entries_007d-245"></a>Similar to <code>see</code> (the previous item), but also allows for normal
+ <br><dt><code>seealso</code><dd><a name="index-seealso-_0040r_007bfor-index-entries_007d-264"></a>Similar to <code>see</code> (the previous item), but also allows for normal
index entries of the referencing term. Example:
<pre class="example"> \sidx[seealso]{archetypal criticism}[elements of]{dichotomies}
@@ -1843,22 +2208,126 @@ it is up to you to define the control sequences you want to use. Example:
<div class="node">
<p><hr>
-<a name="Proofing-index-terms"></a>
+<a name="Index-entries-with-special-characters"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Proofing-index-terms">Proofing index terms</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Modifying-index-entries">Modifying index entries</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="#Indexing-terms">Indexing terms</a>
</div>
-<h5 class="subsubsection">4.12.1.3 Proofing index terms</h5>
+<h5 class="subsubsection">4.12.1.3 Index entries with special characters</h5>
+
+<p><a name="index-special-characters_002c-in-index-entries-265"></a><a name="index-index-entries-with-special-characters-266"></a>
+Indexing terms with special characters can become quite cumbersome
+because you have to keep both TeX and MakeIndex happy at the same
+time. For example, while `<samp><span class="samp">!</span></samp>' has no special meaning for TeX,
+it is a subentry separator for MakeIndex, therefore you'd have to
+escape occurrences of literal `<samp><span class="samp">!</span></samp>' in index terms. Things get
+even more interesting with characters which are special in both TeX
+and MakeIndex.
+
+ <p>This in turn has some implications for the non-silent forms of the
+indexing commands (see <a href="#Indexing-terms">Indexing terms</a>), since TeX and MakeIndex
+use different conventions for escaping characters. For example, this
+will not typeset the exclamation point correctly within the text,
+while it will come out right inside the index, after MakeIndex strips
+the quoting character (`<samp><span class="samp">"</span></samp>'):
+
+<pre class="example"> \idx{"!}
+</pre>
+ <p class="noindent">This would have to be rewritten using the silent command:
+
+<pre class="example"> !\sidx{"!}
+</pre>
+ <p class="noindent">In general, it is a good idea to eschew the non-silent
+commands whenever index term contains anything unusual.
+
+ <p>To understand this keep in mind that indexing commands read the terms
+verbatim so that the terms can embed almost any character, and that's
+what gets written into the <samp><span class="file">.idx</span></samp> file. The non-silent forms
+then typeset the term by rescanning the verbatim copy, therefore for
+the non-silent commands the term, besides being a valid MakeIndex
+input, must also represent a valid TeX input. The silent commands
+don't have this restriction&mdash;their terms only need to become valid
+TeX input <em>after</em> MakeIndex processes the <samp><span class="file">.idx</span></samp> file and
+writes the <samp><span class="file">.ind</span></samp> file. This is what makes the non-silent
+commands less powerful and more troublesome when dealing with special
+characters.
+
+ <p><a name="index-index-entries_002c-with-verbatim-text-267"></a><a name="index-index_002c-and-verbatim-text-268"></a><a name="index-verbatim-text_002c-in-index-269"></a>Here's an example showing that terms for the silent commands can
+contain almost any character:
+
+<pre class="example"> \sidx[see]{comments}[with %@with \verbatim %"|endverbatim]
+ {commenting with \verbatim %"|endverbatim}
+</pre>
+ <p class="noindent">We didn't have to escape `<samp><span class="samp">%</span></samp>' in the sort string for
+MakeIndex, while we had to put it inside the verbatim environment
+(see <a href="#Verbatim-listing">Verbatim listing</a>) in the part which MakeIndex will pass back
+to TeX. Also, we had to escape the `<samp><span class="samp">|</span></samp>' character because it
+is special for MakeIndex. If you have trouble understanding the
+reasons for the different types of escaping used, it is best to
+examine the <samp><span class="file">.idx</span></samp> and <samp><span class="file">.ind</span></samp> files resulting from
+processing the above input.
+
+ <p>As was mentioned, index terms can embed &ldquo;almost any character&rdquo;, so
+now we'll describe the exceptions.
+
+ <p>The following characters are reset to their usual meanings because
+they are not useful verbatim: multiple consequent spaces are
+converted into a single space; <acronym>ASCII</acronym> tab characters are
+treated as spaces; <acronym>ASCII</acronym> return is treated as end-of-line
+(this means, among other things, that long terms can be broken across
+several lines).
+
+ <p><a name="index-braces_002c-inside-index-entries-270"></a><a name="index-index-entries-containing-braces-271"></a>You have to be careful with the begin- and end-group characters
+(`<samp><span class="samp">{</span></samp>' and `<samp><span class="samp">}</span></samp>' by default). If they are matched, you don't
+have to do anything special. For example:
+
+<pre class="example"> \sidx {braces {, }@braces
+ \verbatim {"|endverbatim, \verbatim }"|endverbatim}
+</pre>
+ <p class="noindent">However, if they are not matched you have two problems on
+hand. The first one is TeX&mdash;you have to instruct TeX to use
+something else as begin- and/or end-group characters. Eplain provides
+an easy way to do this: just define
+<a name="index-idxargopen-272"></a><code>\idxargopen</code> and/or
+<a name="index-idxargclose-273"></a><code>\idxargclose</code> to the begin- and end-group characters you are
+going to use with indexing macros, and use braces inside index terms
+without any restrictions. Here's an example:
+
+<pre class="example"> \def\idxargopen{`\&lt;}
+ \def\idxargclose{`\&gt;}
+ \sidx &lt;left brace "{@left brace \verbatim "{"|endverbatim&gt;
+</pre>
+ <p class="noindent">In this example we've also dealt with the second
+problem&mdash;braces are MakeIndex's grouping characters as well (by
+default), so we have escaped unmatched braces with `<samp><span class="samp">"</span></samp>'.
+
+ <p><a name="index-brackets_002c-inside-index-entries-274"></a><a name="index-index-entries-containing-brackets-275"></a>And the final note: if you need a subentry containing brackets
+(`<samp><span class="samp">[</span></samp>' and `<samp><span class="samp">]</span></samp>'), avoid the optional argument of <code>\sidx</code>
+and friends, and use instead MakeIndex's subentry separator to create
+the subentry with the brackets in it:
+
+<pre class="example"> \sidx{entry!subentry with a bracket [}
+</pre>
+ <div class="node">
+<p><hr>
+<a name="Proofing-index-terms"></a>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Index-entries-with-special-characters">Index entries with special characters</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Indexing-terms">Indexing terms</a>
+
+</div>
+
+<h5 class="subsubsection">4.12.1.4 Proofing index terms</h5>
-<p><a name="index-proofing-index-terms-246"></a><a name="index-index-terms_002c-proofing-247"></a><a name="index-margins_002c-index-terms-in-248"></a>
+<p><a name="index-proofing-index-terms-276"></a><a name="index-index-entries_002c-proofing-277"></a><a name="index-margins_002c-index-terms-in-278"></a>
As you are reading through a manuscript, it is helpful to see what terms
have been indexed, so you can add others, catch miscellaneous errors,
etc. (Speaking from bitter experience, I can say it is extremely
error-prone to leave all indexing to the end of the writing, since it
involves adding many TeX commands to the source files.)
- <p><a name="index-indexproofterm-249"></a><a name="index-indexprooffont-250"></a><a name="index-cmtt8-251"></a>So Eplain puts index terms in the margin of each page, if you
+ <p><a name="index-indexproofterm-279"></a><a name="index-indexprooffont-280"></a><a name="index-cmtt8-281"></a>So Eplain puts index terms in the margin of each page, if you
set <code>\indexproofingtrue</code>. It is <code>false</code> by default. The terms
are typeset by the macro <code>\indexproofterm</code>, which takes a single
argument, the term to be typeset. Eplain's definition of
@@ -1867,14 +2336,14 @@ argument, the term to be typeset. Eplain's definition of
<code>cmtt8</code>. With this definition long terms run off the page, but
since this is just for proofreading anyway, it seems acceptable.
- <p><a name="index-pageno-252"></a><a name="index-insidemargin-253"></a><a name="index-hoffset-254"></a><a name="index-outsidemargin-255"></a><a name="index-indexsetmargins-256"></a>On the other hand, we certainly don't want the index term to run into
+ <p><a name="index-pageno-282"></a><a name="index-insidemargin-283"></a><a name="index-hoffset-284"></a><a name="index-outsidemargin-285"></a><a name="index-indexsetmargins-286"></a>On the other hand, we certainly don't want the index term to run into
the text of the page, so Eplain uses the right-hand side of the page
rather than the left-hand page (assuming a language read left to right
here). So <code>\ifodd\pageno</code>, Eplain kerns by <code>\outsidemargin</code>,
otherwise by <code>\insidemargin</code>. If those macros are undefined,
<code>\indexsetmargins</code> defines them to be one inch plus <code>\hoffset</code>.
- <p><a name="index-g_t_0040_0040indexproof-_0040r_007binsertion-class_007d-257"></a><a name="index-indexproofunbox-258"></a><a name="index-makeheadline-259"></a><a name="index-output-routine-and-index-proofing-260"></a>To get the proofing index entries on the proper page, Eplain defines a new
+ <p><a name="index-g_t_0040_0040indexproof-_0040r_007binsertion-class_007d-287"></a><a name="index-indexproofunbox-288"></a><a name="index-makeheadline-289"></a><a name="index-output-routine-and-index-proofing-290"></a>To get the proofing index entries on the proper page, Eplain defines a new
insertion class <code>\@indexproof</code>. To unbox any index proofing
material, Eplain redefines <code>\makeheadline</code> to call
<code>\indexproofunbox</code> before the original <code>\makeheadline</code>. Thus,
@@ -1893,38 +2362,38 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Indexing">Indexing</a>
<h4 class="subsection">4.12.2 Typesetting an index</h4>
-<p><a name="index-typesetting-an-index-261"></a><a name="index-index-typesetting-262"></a><a name="index-readindexfile-263"></a>
+<p><a name="index-typesetting-an-index-291"></a><a name="index-index-typesetting-292"></a><a name="index-readindexfile-293"></a>
The command <code>\readindexfile{i}</code> reads and typesets the
<samp><span class="file">.ind</span></samp> file that MakeIndex outputs (from the <samp><span class="file">.idx</span></samp> file which
the indexing commands in the previous sections write). Eplain defines a
number of commands that support the default MakeIndex output.
- <p><a name="index-indexfilebasename-264"></a><a name="index-jobname-265"></a>More precisely, <code>\readindexfile</code> reads
+ <p><a name="index-indexfilebasename-294"></a><a name="index-jobname-295"></a>More precisely, <code>\readindexfile</code> reads
<code>\indexfilebasename.</code><var>index-letter</var><code>nd</code>, where the
<var>index-letter</var> is the argument. <code>\indexfilebasename</code> is
<code>\jobname</code> by default, but if you have different indexes in
different parts of a book, you may wish to change it, just as with
bibliographies (see <a href="#Citations">Citations</a>).
- <p><a name="index-begin_0040_007btheindex_0040_007d-266"></a><a name="index-end_0040_007btheindex_0040_007d-267"></a>MakeIndex was designed to work with LaTeX; therefore, by default the
+ <p><a name="index-begin_0040_007btheindex_0040_007d-296"></a><a name="index-end_0040_007btheindex_0040_007d-297"></a>MakeIndex was designed to work with LaTeX; therefore, by default the
<samp><span class="file">.ind</span></samp> file starts with <code>\begin{theindex}</code> and ends with
<code>\end{theindex}</code>. If no <code>\begin</code> has been defined, Eplain
defines one to ignore its argument and set up for typesetting the index
(see below), and also defines a <code>\end</code> to ignore its argument. (In
a group, naturally, since there is a primitive <code>\end</code>).
- <p><a name="index-parindent-_0040r_007bin-indexes_007d-268"></a><a name="index-index-fonts-269"></a><a name="index-indexfonts-270"></a><a name="index-double-columns-in-indexes-271"></a>Eplain calls <code>\indexfonts</code>, sets <code>\parindent = 0pt</code>, and does
+ <p><a name="index-parindent-_0040r_007bin-indexes_007d-298"></a><a name="index-index-fonts-299"></a><a name="index-indexfonts-300"></a><a name="index-double-columns-in-indexes-301"></a>Eplain calls <code>\indexfonts</code>, sets <code>\parindent = 0pt</code>, and does
<code>\doublecolumns</code> (see <a href="#Multiple-columns">Multiple columns</a>) at the
<code>\begin{theindex}</code>. <code>\indexfonts</code> does nothing by default;
it's just there for you to override. (Indexes are usually typeset in
smaller type than the main text.)
- <p><a name="index-beginindex-_0040r_007bhook_007d-272"></a>It ends the setup with <code>\hookrun{beginindex}</code>, so you can
+ <p><a name="index-beginindex-_0040r_007bhook_007d-302"></a>It ends the setup with <code>\hookrun{beginindex}</code>, so you can
override anything you like in that hook (see <a href="#Hooks">Hooks</a>). For example:
<pre class="example"> \hookaction{beginindex}{\triplecolumns}
</pre>
- <p><a name="index-item-_0040r_007bin-indexes_007d-273"></a><a name="index-subitem-_0040r_007bin-indexes_007d-274"></a><a name="index-subsubitem-_0040r_007bin-indexes_007d-275"></a><a name="index-index-entry-formatting-276"></a><a name="index-formatting-index-entries-277"></a><a name="index-space-above-index-entries-278"></a><a name="index-continued-index-entries-279"></a><a name="index-index-entry-continuations-280"></a>MakeIndex turns each main index entry into an <code>\item</code>, subentries
+ <p><a name="index-item-_0040r_007bin-indexes_007d-303"></a><a name="index-subitem-_0040r_007bin-indexes_007d-304"></a><a name="index-subsubitem-_0040r_007bin-indexes_007d-305"></a><a name="index-index-entry-formatting-306"></a><a name="index-formatting-index-entries-307"></a><a name="index-space-above-index-entries-308"></a><a name="index-continued-index-entries-309"></a><a name="index-index-entry-continuations-310"></a>MakeIndex turns each main index entry into an <code>\item</code>, subentries
into <code>\subitem</code>, and subsubentries into <code>\subsubitem</code>. By
default, the first line of main entries are not indented, and subentries
are indented 1em per level. Main entries are preceded by a <code>\vskip</code>
@@ -1935,17 +2404,17 @@ index entries.
<p>All levels do the following:
- <p><a name="index-hangindent-_0040r_007bfor-index-entries_007d-281"></a><a name="index-raggedright-_0040r_007bfor-index-entries_007d-282"></a><a name="index-hyphenpenalty-_0040r_007bfor-index-entries_007d-283"></a>
+ <p><a name="index-hangindent-_0040r_007bfor-index-entries_007d-311"></a><a name="index-raggedright-_0040r_007bfor-index-entries_007d-312"></a><a name="index-hyphenpenalty-_0040r_007bfor-index-entries_007d-313"></a>
<pre class="example"> \hangindent = 1em
\raggedright
\hyphenpenalty = 10000
</pre>
- <p><a name="index-indexitem-_0040r_007bhook_007d-284"></a>Each entry ends with <code>\hookrun{indexitem}</code>, so you can change any
+ <p><a name="index-indexitem-_0040r_007bhook_007d-314"></a>Each entry ends with <code>\hookrun{indexitem}</code>, so you can change any
of this. For example, to increase the allowable rag:
<pre class="example"> \hookaction{indexitem}{\advance\rightskip by 2em}
</pre>
- <p><a name="index-indexspace-285"></a><a name="index-index-groupings-286"></a>Finally, MakeIndex outputs <code>\indexspace</code> between each group of
+ <p><a name="index-indexspace-315"></a><a name="index-index-groupings-316"></a>Finally, MakeIndex outputs <code>\indexspace</code> between each group of
entries in the <samp><span class="file">.ind</span></samp> file. Eplain makes this equivalent to
<code>\bigbreak</code>.
@@ -1959,8 +2428,8 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Indexing">Indexing</a>
<h4 class="subsection">4.12.3 Customizing indexing</h4>
-<p><a name="index-customizing-indexing-287"></a>
-<a name="index-afterindexterm-288"></a><a name="index-commas-after-index-terms-289"></a><a name="index-after-index-terms-290"></a>By default, MakeIndex outputs `<samp><span class="samp">, </span></samp>' after each term in the index. To
+<p><a name="index-customizing-indexing-317"></a>
+<a name="index-afterindexterm-318"></a><a name="index-commas-after-index-terms-319"></a><a name="index-after-index-terms-320"></a>By default, MakeIndex outputs `<samp><span class="samp">, </span></samp>' after each term in the index. To
change this, you can add the following to your MakeIndex style
(<samp><span class="file">.ist</span></samp>) file:
@@ -1974,13 +2443,13 @@ change this, you can add the following to your MakeIndex style
<p>You can also change the keywords Eplain recognizes (see <a href="#Modifying-index-entries">Modifying index entries</a>):
<dl>
-<dt><code>\idxrangebeginword</code><dd><a name="index-idxrangebeginword-291"></a>`begin'
+<dt><code>\idxrangebeginword</code><dd><a name="index-idxrangebeginword-321"></a>`begin'
- <br><dt><code>\idxrangeendword</code><dd><a name="index-idxrangeendword-292"></a>`end'
+ <br><dt><code>\idxrangeendword</code><dd><a name="index-idxrangeendword-322"></a>`end'
- <br><dt><code>\idxseecmdword</code><dd><a name="index-idxseecmdword-293"></a>`see'
+ <br><dt><code>\idxseecmdword</code><dd><a name="index-idxseecmdword-323"></a>`see'
- <br><dt><code>\idxseealsocmdword</code><dd><a name="index-idxseealsocmdword-294"></a>`seealso'
+ <br><dt><code>\idxseealsocmdword</code><dd><a name="index-idxseealsocmdword-324"></a>`seealso'
</dl>
@@ -1988,24 +2457,24 @@ change this, you can add the following to your MakeIndex style
<samp><span class="file">.idx</span></samp> file, in case you've changed them in the <code>.ist</code> file:
<dl>
-<dt><code>\idxsubentryseparator</code><dd><a name="index-idxsubentryseparator-295"></a>`<samp><span class="samp">!</span></samp>'
+<dt><code>\idxsubentryseparator</code><dd><a name="index-idxsubentryseparator-325"></a>`<samp><span class="samp">!</span></samp>'
- <br><dt><code>\idxencapoperator</code><dd><a name="index-idxencapoperator-296"></a>`<samp><span class="samp">|</span></samp>'
+ <br><dt><code>\idxencapoperator</code><dd><a name="index-idxencapoperator-326"></a>`<samp><span class="samp">|</span></samp>'
- <br><dt><code>\idxbeginrangemark</code><dd><a name="index-idxbeginrangemark-297"></a>`<samp><span class="samp">(</span></samp>'
+ <br><dt><code>\idxbeginrangemark</code><dd><a name="index-idxbeginrangemark-327"></a>`<samp><span class="samp">(</span></samp>'
- <br><dt><code>\idxendrangemark</code><dd><a name="index-idxendrangemark-298"></a>`<samp><span class="samp">)</span></samp>'
+ <br><dt><code>\idxendrangemark</code><dd><a name="index-idxendrangemark-328"></a>`<samp><span class="samp">)</span></samp>'
</dl>
<p>There is no macro for the <code>actual</code> (`<samp><span class="samp">@</span></samp>' by default)
character, because it's impossible to make it expand properly.
- <p><a name="index-idxpagenum-299"></a><a name="index-see-also-index-entries-and-sorting-300"></a>You can change the (imaginary) page number that &ldquo;see also&rdquo;
+ <p><a name="index-idxpagenum-329"></a><a name="index-see-also-index-entries-and-sorting-330"></a>You can change the (imaginary) page number that &ldquo;see also&rdquo;
entries sort as by redefining <code>\idxmaxpagenum</code>. This is 99999 by
default, which is one digit too many for old versions of MakeIndex.
- <p><a name="index-indexseeword-301"></a><a name="index-indexseealsowords-302"></a><a name="index-seevariant-303"></a><a name="index-indexsee-304"></a><a name="index-indexseealso-305"></a>The words output by Eplain for &ldquo;see&rdquo; and &ldquo;see also&rdquo; index entries
+ <p><a name="index-indexseeword-331"></a><a name="index-indexseealsowords-332"></a><a name="index-seevariant-333"></a><a name="index-indexsee-334"></a><a name="index-indexseealso-335"></a>The words output by Eplain for &ldquo;see&rdquo; and &ldquo;see also&rdquo; index entries
are defined by <code>\indexseeword</code> and <code>\indexseealsowords</code>
respectively. You can change the typeface used for these words by
redefining <code>\seevariant</code>. And finally, the macros
@@ -2015,12 +2484,12 @@ entirely different. If you do redefine them, make them take two
parameters, the term being referenced and the <code>\idxmaxpagenum</code>
(the latter should normally be ignored). See the example below.
- <p><a name="index-see-_0040r_007bfor-index-entries_007d-306"></a><a name="index-see_002c-and-index-entries-307"></a><a name="index-cross_002dreferencing-index-entries-308"></a><a name="index-index-entries_002c-and-cross_002dreferencing-309"></a><a name="index-commas-in-cross_002dreferencing-index-entries-310"></a>Unfortunately, it is impossible to reliably control the commas
+ <p><a name="index-see-_0040r_007bfor-index-entries_007d-336"></a><a name="index-see_002c-and-index-entries-337"></a><a name="index-cross_002dreferencing-index-entries-338"></a><a name="index-index-entries_002c-and-cross_002dreferencing-339"></a><a name="index-commas-in-cross_002dreferencing-index-entries-340"></a>Unfortunately, it is impossible to reliably control the commas
produced by MakeIndex in front of &ldquo;see <small class="dots">...</small>&rdquo; entries in the
<samp><span class="file">.ind</span></samp> file, either at MakeIndex level or at Eplain level.
However, the
-<a name="index-sed-311"></a><samp><span class="command">sed</span></samp> script named <samp><span class="command">trimsee</span></samp>
-<a name="index-trimsee-312"></a>distributed with Eplain in the <samp><span class="file">test</span></samp> directory can be used to
+<a name="index-sed-341"></a><samp><span class="command">sed</span></samp> script contained in <samp><span class="command">trimsee</span></samp>
+<a name="index-trimsee-342"></a>distributed with Eplain in the <samp><span class="file">util</span></samp> directory can be used to
filter out these commas from the output of MakeIndex. For example,
suppose you want the following style for your &ldquo;see <small class="dots">...</small>&rdquo; entries:
@@ -2078,10 +2547,10 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.13 Justification</h3>
-<p><a name="index-centering-313"></a><a name="index-left_002djustification-314"></a><a name="index-right_002djustification-315"></a><a name="index-justification-316"></a>Eplain defines three commands to conveniently justify multiple
+<p><a name="index-centering-343"></a><a name="index-left_002djustification-344"></a><a name="index-right_002djustification-345"></a><a name="index-justification-346"></a>Eplain defines three commands to conveniently justify multiple
lines of text: <code>\flushright</code>, <code>\flushleft</code>, and
<code>\center</code>.
-<a name="index-flushright-317"></a><a name="index-flushleft-318"></a><a name="index-center-319"></a>
+<a name="index-flushright-347"></a><a name="index-flushleft-348"></a><a name="index-center-349"></a>
They all work in the same way; let's take <code>\center</code> as the
example. To start centering lines, you say <code>\center</code> inside a
group; to stop, you end the group. Between the two commands, each
@@ -2098,15 +2567,16 @@ until the end of the paragraph).
<p>The space between paragraphs is by default one blank line's worth.
You can adjust this space by assigning to <code>\blanklineskipamount</code>;
-<a name="index-blanklineskipamount-_0040r_007bin-justified-text_007d-320"></a>this (vertical) glue is inserted after each blank line.
+<a name="index-blanklineskipamount-_0040r_007bin-justified-text_007d-350"></a>this (vertical) glue is inserted after each blank line.
<p>Here is an example:
+
<pre class="example"> {\center First line.
Second line, with a blank line before.
}
</pre>
- <p>This produces:
+ <p class="noindent">This produces:
<div align="center">First line.</div>
<div align="center"></div>
@@ -2130,12 +2600,12 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.14 Tables</h3>
-<p><a name="index-tables-321"></a><a name="index-alignments-322"></a>Eplain provides a single command, <code>\makecolumns</code>,
-<a name="index-makecolumns-323"></a>to make generating one particular kind of table easier. More ambitious
+<p><a name="index-tables-351"></a><a name="index-alignments-352"></a>Eplain provides a single command, <code>\makecolumns</code>,
+<a name="index-makecolumns-353"></a>to make generating one particular kind of table easier. More ambitious
macro packages might be helpful to you for more difficult applications.
The files <samp><span class="file">ruled.tex</span></samp> and <samp><span class="file">TXSruled.tex</span></samp>, available from
-`<samp><span class="samp">lifshitz.ph.utexas.edu</span></samp>' in <samp><span class="file">texis/tables</span></samp>, is the only one I
-know of.
+<a href="http://www.ctan.org/tex-archive/macros/texsis">http://www.ctan.org/tex-archive/macros/texsis</a>, is the only
+one I know of.
<p>Many tables are homogenous, i.e., all the entries are semantically the
same. The arrangement into columns is to save space on the page, not
@@ -2158,7 +2628,7 @@ to these parameters, probably inside a group.
<p>You can also control the penalty at a page break before the
<code>\makecolumns</code> by setting the parameter
<code>\abovecolumnspenalty</code>.
-<a name="index-abovecolumnspenalty-324"></a>Usually, the table is preceded by some explanatory text. You wouldn't
+<a name="index-abovecolumnspenalty-354"></a>Usually, the table is preceded by some explanatory text. You wouldn't
want a page break to occur after the text and before the table, so
Eplain sets it to <code>10000</code>. But if the table produced by
<code>\makecolumns</code> is standing on its own, <code>\abovecolumnspenalty</code>
@@ -2173,6 +2643,7 @@ some of the entries will be typeset as straight text, probably also
looking somewhat out of place.
<p>Here is an example:
+
<pre class="example"> % Arrange 6 entries into 2 columns:
\makecolumns 6/2: % This line doesn't have an entry.
one
@@ -2183,7 +2654,7 @@ looking somewhat out of place.
six
Text after the table.
</pre>
- <p>This produces `one', `two', and `three' in the first column, and
+ <p class="noindent">This produces `one', `two', and `three' in the first column, and
`four', `five', and `six' in the second.
<div class="node">
@@ -2197,7 +2668,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.15 Margins</h3>
-<p><a name="index-margins_002c-changing-325"></a>TeX's primitives describe the type area in terms of an offset from
+<p><a name="index-margins_002c-changing-355"></a>TeX's primitives describe the type area in terms of an offset from
the upper left corner, and the width and height of the type. Some
people prefer to think in terms of the <dfn>margins</dfn> at the top, bottom,
left, and right of the page, and most composition systems other than
@@ -2205,13 +2676,13 @@ TeX conceive of the page laid out in this way. Therefore, Eplain
provides commands to directly assign and increment the margins.
<dl>
-<dt><code>\topmargin = </code><var>dimen</var><dt><code>\bottommargin = </code><var>dimen</var><dt><code>\leftmargin = </code><var>dimen</var><br><dt><code>\rightmargin = </code><var>dimen</var><dd><a name="index-topmargin-326"></a><a name="index-bottommargin-327"></a><a name="index-leftmargin-328"></a><a name="index-rightmargin-329"></a>These commands set the specified margin to the <var>dimen</var> given.
+<dt><code>\topmargin = </code><var>dimen</var><dt><code>\bottommargin = </code><var>dimen</var><dt><code>\leftmargin = </code><var>dimen</var><br><dt><code>\rightmargin = </code><var>dimen</var><dd><a name="index-topmargin-356"></a><a name="index-bottommargin-357"></a><a name="index-leftmargin-358"></a><a name="index-rightmargin-359"></a>These commands set the specified margin to the <var>dimen</var> given.
The <code>=</code> and the spaces around it are optional. The control
sequences here are not TeX registers, despite appearances;
therefore, commands like <code>\showthe\topmargin</code> will not do what you
expect.
- <dt><code>\advancetopmargin by </code><var>dimen</var><dt><code>\advancebottommargin by </code><var>dimen</var><dt><code>\advanceleftmargin by </code><var>dimen</var><br><dt><code>\advancerightmargin by </code><var>dimen</var><dd><a name="index-advancetopmargin-330"></a><a name="index-advancebottommargin-331"></a><a name="index-advanceleftmargin-332"></a><a name="index-advancerightmargin-333"></a>These commands change the specified margin by the <var>dimen</var> given.
+ <dt><code>\advancetopmargin by </code><var>dimen</var><dt><code>\advancebottommargin by </code><var>dimen</var><dt><code>\advanceleftmargin by </code><var>dimen</var><br><dt><code>\advancerightmargin by </code><var>dimen</var><dd><a name="index-advancetopmargin-360"></a><a name="index-advancebottommargin-361"></a><a name="index-advanceleftmargin-362"></a><a name="index-advancerightmargin-363"></a>These commands change the specified margin by the <var>dimen</var> given.
</dl>
<p>Regardless of whether you use the assignment or the advance commands,
@@ -2219,7 +2690,7 @@ Eplain always changes the type area in response, not the other margins.
For example, when TeX starts, the left and right margins are both one
inch. If you then say <code>\leftmargin = 2in</code>, the right margin will
remain at one inch, and the width of the lines (i.e., <code>\hsize</code>)
-<a name="index-hsize-334"></a>will decrease by one inch.
+<a name="index-hsize-364"></a>will decrease by one inch.
<p>When you use any of these commands, Eplain computes the old value of
the particular margin, by how much you want to change it, and then
@@ -2229,9 +2700,9 @@ help: you must tell it the full width and height of the final output
page. It defines two new parameters for this:
<dl>
-<dt><code>\paperheight</code><dd><a name="index-paperheight-335"></a>The height of the output page; default is 11truein.
+<dt><code>\paperheight</code><dd><a name="index-paperheight-365"></a>The height of the output page; default is 11truein.
- <br><dt><code>\paperwidth</code><dd><a name="index-paperwidth-336"></a>The width of the output page; default is 8.5truein.
+ <br><dt><code>\paperwidth</code><dd><a name="index-paperwidth-366"></a>The width of the output page; default is 8.5truein.
</dl>
<p>If your output page has different dimensions than this, you must
@@ -2251,18 +2722,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.16 Multiple columns</h3>
-<p><a name="index-double-column-output-337"></a><a name="index-triple-column-output-338"></a><a name="index-quadruple-column-output-339"></a><a name="index-multiple-column-output-340"></a>Eplain provides for double, triple, and quadruple column output: say
+<p><a name="index-double-column-output-367"></a><a name="index-triple-column-output-368"></a><a name="index-quadruple-column-output-369"></a><a name="index-multiple-column-output-370"></a>Eplain provides for double, triple, and quadruple column output: say
<code>\doublecolumns</code>,
-<a name="index-doublecolumns-341"></a><code>\triplecolumns</code>,
-<a name="index-triplecolumns-342"></a>or <code>\quadcolumns</code>,
-<a name="index-quadcolumns-343"></a>and from that point on, the manuscript will be
+<a name="index-doublecolumns-371"></a><code>\triplecolumns</code>,
+<a name="index-triplecolumns-372"></a>or <code>\quadcolumns</code>,
+<a name="index-quadcolumns-373"></a>and from that point on, the manuscript will be
set in columns. To go back to one column, say
<code>\singlecolumn</code>.
-<a name="index-singlecolumn-344"></a>
-<a name="index-column-balancing-with-_0040code_007b_005csinglecolumn_007d-345"></a><a name="index-balancing-of-columns-with-_0040code_007b_005csinglecolumn_007d-346"></a>You may need to invoke <code>\singlecolumn</code> to balance the columns
+<a name="index-singlecolumn-374"></a>
+<a name="index-column-balancing-with-_0040code_007b_005csinglecolumn_007d-375"></a><a name="index-balancing-of-columns-with-_0040code_007b_005csinglecolumn_007d-376"></a>You may need to invoke <code>\singlecolumn</code> to balance the columns
on the last page of output.
- <p><a name="index-columnfill-347"></a><a name="index-column-eject-348"></a><a name="index-eject-in-multicolumns-349"></a><a name="index-pagetotal-350"></a>To do a &ldquo;column eject&rdquo;, i.e., move to the top of the next column, do
+ <p><a name="index-columnfill-377"></a><a name="index-column-eject-378"></a><a name="index-eject-in-multicolumns-379"></a><a name="index-pagetotal-380"></a>To do a &ldquo;column eject&rdquo;, i.e., move to the top of the next column, do
<code>\columnfill</code>. This does not actually force an eject, however: it
merely inserts a kern of size <code>\@normalvsize</code> minus
<code>\pagetotal</code> (<code>\@normalvsize</code> being the usual height of the
@@ -2271,27 +2742,28 @@ by the number of columns). In most circumstances, a column break will be
forced after this kern (during the column splitting operation when the
whole page is output), as desired.
- <p><a name="index-gutter-351"></a>The columns are separated by the value of the dimen parameter
+ <p><a name="index-gutter-381"></a>The columns are separated by the value of the dimen parameter
<code>\gutter</code>. Default value is two picas.
-<a name="index-gutterbox-352"></a>If you want to add vertical material between the columns, use
+<a name="index-gutterbox-382"></a>If you want to add vertical material between the columns, use
<code>\gutterbox</code>. For example, to put a vertical line between columns,
define
<code>\gutterbox</code> as
+
<pre class="example"> \def\gutterbox{\vbox to \dimen0{\vfil\hbox{\vrule height\dimen0}\vfil}}%
</pre>
- <p>The dimension counter
+ <p class="noindent">The dimension counter
<code>\dimen0</code>
contains the height of the column.
<p>All the <code>\...columns</code> macros insert the value of the glue parameter
<code>\abovecolumnskip</code>
-<a name="index-abovecolumnskip-353"></a>before the multicolumn text, and the value of the glue parameter
+<a name="index-abovecolumnskip-383"></a>before the multicolumn text, and the value of the glue parameter
<code>\belowcolumnskip</code>
-<a name="index-belowcolumnskip-354"></a>after it. The default value for both of these parameters is
+<a name="index-belowcolumnskip-384"></a>after it. The default value for both of these parameters is
<code>\bigskipamount</code>, i.e., one linespace in plain TeX.
<p>The macros take into account only the insertion classes
-<a name="index-insertion-classes-355"></a>defined by plain TeX; namely, footnotes and <code>\topinsert</code>s. If
+<a name="index-insertion-classes-385"></a>defined by plain TeX; namely, footnotes and <code>\topinsert</code>s. If
you have additional insertion classes, you will need to change
the implementation.
@@ -2309,16 +2781,16 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.17 Footnotes</h3>
-<p><a name="index-footnotes_002c-numbered-356"></a>The most common reference mark for footnotes is a raised number,
+<p><a name="index-footnotes_002c-numbered-386"></a>The most common reference mark for footnotes is a raised number,
incremented on each footnote. The <code>\numberedfootnote</code>
-<a name="index-numberedfootnote-357"></a>macro provides this. It takes one argument, the footnote text.
+<a name="index-numberedfootnote-387"></a>macro provides this. It takes one argument, the footnote text.
<p>If your document uses only numbered footnotes, you could make typing
<code>\numberedfootnote</code> more convenient with a command such as:
<pre class="example"> \let\footnote = \numberedfootnote
</pre>
- <p>After doing this, you can type your footnotes as
+ <p class="noindent">After doing this, you can type your footnotes as
<code>\footnote{</code><var>footnote text</var><code>}</code>, instead of as
<code>\numberedfootnote{</code><var>footnote text</var><code>}</code>.
@@ -2331,30 +2803,31 @@ could say <code>\footnotenumber=0</code>.
an en space (it uses the <code>\textindent</code> macro). In Eplain, you can
change this space by setting the dimension register
<code>\footnotemarkseparation</code>.
-<a name="index-footnotemarkseparation-358"></a>The default is still an en.
+<a name="index-footnotemarkseparation-388"></a>The default is still an en.
<p>You can produce a space between footenotes by setting the glue
register <code>\interfootnoteskip</code>.
-<a name="index-interfootnoteskip-359"></a>The default is zero.
+<a name="index-interfootnoteskip-389"></a>The default is zero.
<p><code>\parskip</code> is also set to zero by default before the beginning of
each footnote (but not for the text of the footnote).
<p>You can also control footnote formatting in a more general way:
Eplain expands the token register <code>\everyfootnote</code>
-<a name="index-everyfootnote-360"></a>before a footnote is typeset, but after the default values for all the
+<a name="index-everyfootnote-390"></a>before a footnote is typeset, but after the default values for all the
parameters have been established. For example, if you want your
footnotes to be printed in seven-point type, indented by one inch, you
could say:
+
<pre class="example"> \everyfootnote = {\sevenrm \leftskip = 1in}
</pre>
<p>By default, an <code>\hrule</code> is typeset above each group of footnotes
on a page. You can control the dimensions of this rule by setting
the dimension registers <code>\footnoterulewidth</code>
-<a name="index-footnoterulewidth-361"></a>and <code>\footnoteruleheight</code>.
-<a name="index-footnoteruleheight-362"></a>The space between the rule and the first footnote on the page is
+<a name="index-footnoterulewidth-391"></a>and <code>\footnoteruleheight</code>.
+<a name="index-footnoteruleheight-392"></a>The space between the rule and the first footnote on the page is
determined by the dimension register <code>\belowfootnoterulespace</code>.
-<a name="index-belowfootnoterulespace-363"></a>If you don't want any rule at all, set <code>\footenoteruleheight=0pt</code>,
+<a name="index-belowfootnoterulespace-393"></a>If you don't want any rule at all, set <code>\footenoteruleheight=0pt</code>,
and, most likely, <code>\belowfootnoterulespace=0pt</code>. The defaults for
these parameters typeset the rule in the same way as plain TeX: the
rule is 0.4 points high, 2 true inches wide, with 2.6 points below it.
@@ -2363,7 +2836,7 @@ rule is 0.4 points high, 2 true inches wide, with 2.6 points below it.
by the glue register <code>\skip\footins</code>. The default is a plain TeX
<code>\bigskip</code>.
- <p>Eplain can create hypertext links for the footnote marks; see <a href="#Footnote-hyperlinks">Footnote hyperlinks</a>.
+ <p>Eplain can create hypertext links for the footnote marks (see <a href="#Footnote-hyperlinks">Footnote hyperlinks</a>).
<div class="node">
<p><hr>
@@ -2376,8 +2849,8 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.18 Fractions</h3>
-<p><a name="index-fractions-364"></a>Exercise 11.6 of <cite>The TeXbook</cite> describes a macro <code>\frac</code>
-<a name="index-frac-365"></a>for setting fractions, but <code>\frac</code> never made it into plain TeX.
+<p><a name="index-fractions-394"></a>Exercise 11.6 of <cite>The TeXbook</cite> describes a macro <code>\frac</code>
+<a name="index-frac-395"></a>for setting fractions, but <code>\frac</code> never made it into plain TeX.
So Eplain includes it.
<p><code>\frac</code> typesets the numerator and denominator in
@@ -2402,7 +2875,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.19 Paths</h3>
-<p><a name="index-pathnames_002c-breaking-366"></a><a name="index-filenames_002c-breaking-367"></a><a name="index-electronic-mail-addresses_002c-breaking-368"></a>
+<p><a name="index-pathnames_002c-breaking-396"></a><a name="index-filenames_002c-breaking-397"></a><a name="index-electronic-mail-addresses_002c-breaking-398"></a>
When you typeset long pathnames, electronic mail addresses, or other
such &ldquo;computer&rdquo; names, you would like TeX to break lines at
punctuation characters within the name, rather than trying to find
@@ -2411,27 +2884,29 @@ break the email address <code>letters@alpha.gnu.ai.mit.edu</code> at the
`<samp><span class="samp">@</span></samp>' or a `<samp><span class="samp">.</span></samp>', rather than at the hyphenation points in
`<samp><span class="samp">letters</span></samp>' and `<samp><span class="samp">alpha</span></samp>'.
- <p><a name="index-path-369"></a>If you use the <code>\path</code> macro to typeset the names, TeX will find
+ <p><a name="index-path-399"></a>If you use the <code>\path</code> macro to typeset the names, TeX will find
these good breakpoints. The argument to <code>\path</code> is delimited by
any character other other than `<samp><span class="samp">\</span></samp>' which does not appear in the
name itself.
`<samp><span class="samp">|</span></samp>' is often a good choice, as in:
+
<pre class="example"> \path|letters@alpha.gnu.ai.mit.edu|
</pre>
- <p><a name="index-discretionaries-370"></a>You can control the exact set of characters at which breakpoints will be
+ <p><a name="index-discretionaries-400"></a>You can control the exact set of characters at which breakpoints will be
allowed by calling <code>\discretionaries</code>. This takes the same sort of
delimited argument; any character in the argument will henceforth be a valid
breakpoint within <code>\path</code>. The default set is essentially all the
punctuation characters:
+
<pre class="example"> \discretionaries |~!@$%^&amp;*()_+`-=#{}[]:";'&lt;&gt;,.?\/|
</pre>
- <p><a name="index-specialpathdelimiters-_0040r_007b_0028conditional_0029_007d-371"></a>If for some reason you absolutely must use <code>\</code> as the delimiter
+ <p><a name="index-specialpathdelimiters-_0040r_007b_0028conditional_0029_007d-401"></a>If for some reason you absolutely must use <code>\</code> as the delimiter
character for <code>\path</code>, you can set
<code>\specialpathdelimiterstrue</code>. (Other delimiter characters can
still be used.) TeX then processes the <code>\path</code> argument
about four times more slowly.
- <p><a name="index-URL-for-_0040file_007bpath_002esty_007d-372"></a>The <code>\path</code> macro comes from <samp><span class="file">path.sty</span></samp>, written by Nelson
+ <p><a name="index-g_t_0040acronym_007bURL_007d-for-_0040file_007bpath_002esty_007d-402"></a>The <code>\path</code> macro comes from <samp><span class="file">path.sty</span></samp>, written by Nelson
Beebe and Philip Taylor and available at
<a href="http://www.ctan.org/tex-archive/macros/latex/contrib/misc/path.sty">http://www.ctan.org/tex-archive/macros/latex/contrib/misc/path.sty</a>.
@@ -2446,24 +2921,24 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.20 Logos</h3>
-<p><a name="index-logos-373"></a><a name="index-names_002c-of-_0040TeX_007b_007d-variants-374"></a>
+<p><a name="index-logos-403"></a><a name="index-names_002c-of-_0040TeX_007b_007d-variants-404"></a>
Eplain redefines the <code>\TeX</code>
-<a name="index-TeX-375"></a>macro of plain TeX to end with <code>\null</code>, so that the proper
+<a name="index-TeX-405"></a>macro of plain TeX to end with <code>\null</code>, so that the proper
spacing is produced when <code>\TeX</code> is used at the end of a sentence.
The other <small class="dots">...</small>TeX macros listed here do this, also.
<p>Eplain defines
<code>\AMSTeX</code>,
-<a name="index-AMS_0040TeX_007b_007d-376"></a><a name="index-AMSTeX-377"></a><code>\BibTeX</code>
-<a name="index-Bib_0040TeX_007b_007d-378"></a><a name="index-BibTeX-379"></a><code>\AMSLaTeX</code>,
-<a name="index-AMS_0040LaTeX_007b_007d-380"></a><a name="index-AMSLaTeX-381"></a><code>\LAMSTeX</code>,
-<a name="index-LAMS_0040TeX_007b_007d-382"></a><a name="index-LAMSTeX-383"></a><code>\LaTeX</code>
-<a name="index-g_t_0040LaTeX_007b_007d-384"></a><a name="index-LaTeX-385"></a><code>\MF</code>,
-<a name="index-Metafont-386"></a><a name="index-MF-387"></a>and <code>\SLiTeX</code>
-<a name="index-SLi_0040TeX_007b_007d-388"></a><a name="index-SLiTeX-389"></a>to produce their respective logos. (Sorry, the logos are not shown
+<a name="index-AMS_0040TeX_007b_007d-406"></a><a name="index-AMSTeX-407"></a><code>\BibTeX</code>
+<a name="index-Bib_0040TeX_007b_007d-408"></a><a name="index-BibTeX-409"></a><code>\AMSLaTeX</code>,
+<a name="index-AMS_0040LaTeX_007b_007d-410"></a><a name="index-AMSLaTeX-411"></a><code>\LAMSTeX</code>,
+<a name="index-LAMS_0040TeX_007b_007d-412"></a><a name="index-LAMSTeX-413"></a><code>\LaTeX</code>
+<a name="index-g_t_0040LaTeX_007b_007d-414"></a><a name="index-LaTeX-415"></a><code>\MF</code>,
+<a name="index-Metafont-416"></a><a name="index-MF-417"></a>and <code>\SLiTeX</code>
+<a name="index-SLi_0040TeX_007b_007d-418"></a><a name="index-SLiTeX-419"></a>to produce their respective logos. (Sorry, the logos are not shown
here.) Some spelling variants of these are also supported.
- <p><a name="index-URL-for-_0040file_007btexnames_002esty_007d-390"></a>All these macros come from <samp><span class="file">texnames.sty</span></samp>, compiled by Nelson
+ <p><a name="index-g_t_0040acronym_007bURL_007d-for-_0040file_007btexnames_002esty_007d-420"></a>All these macros come from <samp><span class="file">texnames.sty</span></samp>, compiled by Nelson
Beebe and available at
<a href="http://www.ctan.org/tex-archive/info/biblio/texnames.sty">http://www.ctan.org/tex-archive/info/biblio/texnames.sty</a>.
@@ -2478,14 +2953,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.21 Boxes</h3>
-<p><a name="index-black-boxes-391"></a><a name="index-rectangles-392"></a>The solid rectangle that Eplain uses as a marker in unordered lists
+<p><a name="index-black-boxes-421"></a><a name="index-rectangles-422"></a>The solid rectangle that Eplain uses as a marker in unordered lists
(see <a href="#Lists">Lists</a>) is available by itself: just say <code>\blackbox</code>.
-<a name="index-blackbox-393"></a>
+<a name="index-blackbox-423"></a>
You can create black boxes of arbitrary size with <code>\hrule</code> or
<code>\vrule</code>.
- <p><a name="index-open-boxes-394"></a><a name="index-boxes_002c-open-395"></a>You can also get unfilled rectangles with <code>\makeblankbox</code>.
-<a name="index-makeblankbox-396"></a>This takes two explicit arguments: the height and depth of the rules that
+ <p><a name="index-open-boxes-424"></a><a name="index-boxes_002c-open-425"></a>You can also get unfilled rectangles with <code>\makeblankbox</code>.
+<a name="index-makeblankbox-426"></a>This takes two explicit arguments: the height and depth of the rules that
define the top and bottom of the rectangle. (The two arguments are
added to get the width of the left and right borders, so that the
thickness of the border is the same on all four sides.) It also uses,
@@ -2502,9 +2977,9 @@ putting next to numbers in, e.g., a table of contents.
}
</pre>
<p>Finally, you can put a box around arbitrary text with <code>\boxit</code>.
-<a name="index-boxit-397"></a>This takes one argument, which must itself be a (TeX) box, and puts a
+<a name="index-boxit-427"></a>This takes one argument, which must itself be a (TeX) box, and puts a
printed box around it, separated by <code>\boxitspace</code>
-<a name="index-boxitspace-398"></a>white space (3 points by default) on all four sides. For example:
+<a name="index-boxitspace-428"></a>white space (3 points by default) on all four sides. For example:
<pre class="example"> \boxit{\hbox{This text is boxed.}}
</pre>
@@ -2528,12 +3003,12 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.22 Checking for PDF output</h3>
-<p><a name="index-URL-for-pdf_0040TeX_007b_007d-399"></a><a name="index-PDF-output-400"></a><a name="index-pdftex-401"></a><a name="index-g_t_002epdf-_0040r_007bfiles_007d-402"></a>pdfTeX is a TeX variant that can output both <samp><span class="file">.dvi</span></samp> and
+<p><a name="index-g_t_0040acronym_007bURL_007d-for-pdf_0040TeX_007b_007d-429"></a><a name="index-g_t_0040acronym_007bPDF_007d-output-430"></a><a name="index-pdftex-431"></a><a name="index-g_t_002epdf-_0040r_007bfiles_007d-432"></a>pdfTeX is a TeX variant that can output both <samp><span class="file">.dvi</span></samp> and
<samp><span class="file">.pdf</span></samp> (Adobe's Portable Document Format) files (see
-<a href="http://www.ctan.org/tex-archive/systems/pdftex/">http://www.ctan.org/tex-archive/systems/pdftex/</a>). You might
+<a href="http://www.ctan.org/tex-archive/systems/pdftex">http://www.ctan.org/tex-archive/systems/pdftex</a>). You might
sometimes want to know whether the target format is <samp><span class="file">.pdf</span></samp> or
<samp><span class="file">.dvi</span></samp>. The <code>\ifpdf</code>
-<a name="index-ifpdf-403"></a>switch can be used to detect pdfTeX in PDF mode:
+<a name="index-ifpdf-433"></a>switch can be used to detect pdfTeX in <acronym>PDF</acronym> mode:
<pre class="example"> \ifpdf
This text is produced when pdfTeX is in PDF mode.
@@ -2544,11 +3019,11 @@ sometimes want to know whether the target format is <samp><span class="file">.pd
</pre>
<p>Keep in mind that <code>\ifpdf</code> is set based on the value of the
<code>\pdfoutput</code>
-<a name="index-pdfoutput-404"></a>primitive of pdfTeX at the time Eplain is loaded. If you change
+<a name="index-pdfoutput-434"></a>primitive of pdfTeX at the time Eplain is loaded. If you change
the value of <code>\pdfoutput</code> after you load Eplain, <code>\ifpdf</code>
will not reflect the change.
- <p><a name="index-URL-for-_0040file_007bifpdf_002esty_007d-405"></a><a name="index-Oberdiek_002c-Heiko-406"></a>Eplain defines <code>\ifpdf</code> by incorporating Heiko Oberdiek's
+ <p><a name="index-g_t_0040acronym_007bURL_007d-for-_0040file_007bifpdf_002esty_007d-435"></a><a name="index-Oberdiek_002c-Heiko-436"></a>Eplain defines <code>\ifpdf</code> by incorporating Heiko Oberdiek's
<samp><span class="file">ifpdf.sty</span></samp>, which is available at
<a href="http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/ifpdf.sty">http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/ifpdf.sty</a>.
@@ -2562,7 +3037,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#User-definitions">User definitions</a>
<h3 class="section">4.23 Loading LaTeX packages</h3>
-<p><a name="index-g_t_0040LaTeX_007b_007d-packages-407"></a><a name="index-packages_002c-_0040LaTeX_007b_007d-408"></a><a name="index-g_t_002esty-_0040r_007bfiles_007d-409"></a><a name="index-g_t_002ecls-_0040r_007bfiles_007d-410"></a>Eplain provides a limited support for loading LaTeX packages
+<p><a name="index-g_t_0040LaTeX_007b_007d-packages-437"></a><a name="index-packages_002c-_0040LaTeX_007b_007d-438"></a><a name="index-g_t_002esty-_0040r_007bfiles_007d-439"></a><a name="index-g_t_002ecls-_0040r_007bfiles_007d-440"></a>Eplain provides a limited support for loading LaTeX packages
(<samp><span class="file">.sty</span></samp> files&mdash;not <samp><span class="file">.cls</span></samp>). This will mostly work for
packages which were designed with plain TeX compatibility in mind,
which means that most LaTeX packages cannot be loaded. The
@@ -2570,12 +3045,12 @@ packages which are known to work are listed below (see <a href="#Packages-known-
the list, please report it to the Eplain mailing list
(see <a href="#Introduction">Introduction</a>).
- <p><a name="index-graphics-collection_002c-_0040LaTeX_007b_007d-411"></a><a name="index-g_t_0040LaTeX_007b_007d-graphics-collection-412"></a><a name="index-miniltx_002etex-413"></a><a name="index-Carlisle_002c-David-414"></a><a name="index-Rahtz_002c-Sebastian-415"></a>To set up a pseudo-LaTeX environment for the packages, Eplain uses
+ <p><a name="index-graphics-collection_002c-_0040LaTeX_007b_007d-441"></a><a name="index-g_t_0040LaTeX_007b_007d-graphics-collection-442"></a><a name="index-miniltx_002etex-443"></a><a name="index-Carlisle_002c-David-444"></a><a name="index-Rahtz_002c-Sebastian-445"></a>To set up a pseudo-LaTeX environment for the packages, Eplain uses
<samp><span class="file">miniltx.tex</span></samp>
(<a href="http://www.ctan.org/tex-archive/macros/plain/graphics/miniltx.tex">http://www.ctan.org/tex-archive/macros/plain/graphics/miniltx.tex</a>)
from the LaTeX graphics collection, written by David Carlisle and
Sebastian Rahtz (the collection is available at
-<a href="http://www.ctan.org/tex-archive/macros/latex/required/graphics/">http://www.ctan.org/tex-archive/macros/latex/required/graphics/</a>).
+<a href="http://www.ctan.org/tex-archive/macros/latex/required/graphics">http://www.ctan.org/tex-archive/macros/latex/required/graphics</a>).
Eplain extends <samp><span class="file">miniltx.tex</span></samp> to provide some additional features,
e.g., support for package options.
@@ -2597,7 +3072,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Loading-LaTeX-packages">Loading LaTeX
<h4 class="subsection">4.23.1 The <code>\usepackage</code> command</h4>
-<p><a name="index-usepackage-416"></a><code>\usepackage</code> loads a LaTeX package. Its syntax is similar to
+<p><a name="index-usepackage-446"></a><code>\usepackage</code> loads a LaTeX package. Its syntax is similar to
that of LaTeX's <code>\usepackage</code> command:
<pre class="example"> \usepackage[<var>options</var>]{<var>packages</var>}[<var>version</var>]
@@ -2631,7 +3106,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Loading-LaTeX-packages">Loading LaTeX
<h4 class="subsection">4.23.2 Environment for loading packages</h4>
-<p><a name="index-beginpackages-417"></a><a name="index-endpackages-418"></a>Some packages request that certain commands are executed after all
+<p><a name="index-beginpackages-447"></a><a name="index-endpackages-448"></a>Some packages request that certain commands are executed after all
packages have been loaded. In LaTeX, this means that the commands
are executed at the beginning of the document, after the so-called
<dfn>preamble</dfn>. Neither plain TeX nor Eplain have any kind of
@@ -2649,7 +3124,32 @@ commands at the end of the <code>\beginpackages...\endpackages</code> block.
<p>For the same reason, it is advisable to specify only one such block
per document, just like there is only one preamble in LaTeX.
-<div class="node">
+ <p><a name="index-input-449"></a><a name="index-g_t_0040LaTeX_007b_007d-packages_002c-restoring-_0040code_007b_005cinput_007d-450"></a><a name="index-restoring-_0040code_007b_005cinput_007d_002c-_0040LaTeX_007b_007d-packages-451"></a>Some packages (and the pseudo-LaTeX environment, <samp><span class="file">miniltx.tex</span></samp>)
+redefine TeX's primitive <code>\input</code> to be a macro. Non-primitive
+<code>\input</code> is probably not what the user expects under
+plain&nbsp;<!-- /@w -->TeX. Therefore, at the beginning of the
+<code>\beginpackages...\endpackages</code> block Eplain saves the meaning of
+<code>\input</code> as
+<a name="index-eplaininput-452"></a><code>\eplaininput</code> and restores the original <code>\input</code> at the end
+of the block. This usually means that the primitive <code>\input</code> is
+restored, unless you (or some other macro package you've loaded
+directly) have redefined it before calling <code>\beginpackages</code>. In
+case you need to access the package-provided <code>\input</code>, Eplain saves
+it as <code>\packageinput</code>.
+
+ <p><a name="index-hanging-on-_0040code_007b_005cinput_007d-453"></a><a name="index-error-on-_0040code_007b_005cinput_007d-454"></a>Sometimes you may encounter packages which make conflicting
+redefinitions of <code>\input</code>. Common symptoms are TeX spewing
+incomprehensible error messages or hanging in a loop at a call to
+<code>\input</code>. This sometimes can be cured by restoring <code>\input</code>
+to <code>\eplaininput</code> before loading each package. For example:
+
+<pre class="example"> \beginpackages
+ \usepackage{pack1}
+ \let\input\eplaininput
+ \usepackage{pack2}
+ \endpackages
+</pre>
+ <div class="node">
<p><hr>
<a name="Packages-known-to-work"></a>
Next:&nbsp;<a rel="next" accesskey="n" href="#Packages-known-not-to-work">Packages known not to work</a>,
@@ -2660,46 +3160,125 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Loading-LaTeX-packages">Loading LaTeX
<h4 class="subsection">4.23.3 Packages known to work</h4>
-<p><a name="index-g_t_0040LaTeX_007b_007d-packages-419"></a><a name="index-packages_002c-_0040LaTeX_007b_007d-420"></a>The following table lists packages that had been tested and are known
+<p><a name="index-g_t_0040LaTeX_007b_007d-packages-455"></a><a name="index-packages_002c-_0040LaTeX_007b_007d-456"></a>The following table lists packages that had been tested and are known
to work with Eplain, and locations where you can find manuals for
these packages. Some of the short descriptions of the packages were
taken from the documentation for those packages.
<dl>
-<dt>autopict (`<samp><span class="samp">2001/06/04 v1.1j Picture mode autoload file</span></samp>')<dd><a name="index-autopict_002esty-421"></a><a href="http://tug.org/eplain/ltpictur.pdf">http://tug.org/eplain/ltpictur.pdf</a>
+<dt>autopict (`<samp><span class="samp">2001/06/04 v1.1j Picture mode autoload file</span></samp>')<dd><a name="index-autopict_002esty-457"></a><a href="http://tug.org/eplain/misc/ltpictur.pdf">http://tug.org/eplain/misc/ltpictur.pdf</a>
- <p><a name="index-picture-mode-422"></a><a name="index-begin_0040_007bpicture_0040_007d-423"></a><a name="index-end_0040_007bpicture_0040_007d-424"></a>This is the LaTeX &ldquo;picture mode&rdquo;, started by
+ <p><a name="index-picture-mode-458"></a><a name="index-begin_0040_007bpicture_0040_007d-459"></a><a name="index-end_0040_007bpicture_0040_007d-460"></a>This is the LaTeX &ldquo;picture mode&rdquo;, started by
<code>\begin{picture}</code> and ended by <code>\end{picture}</code> (in
LaTeX, this package is not explicitly loaded since it is part of
the LaTeX kernel). It provides commands to draw simple figures
inside your document without resorting to any external tools.
- <br><dt>color (`<samp><span class="samp">1999/02/16 v1.0i Standard LaTeX Color (DPC)</span></samp>')<dd><a name="index-color_002esty-425"></a><dt>graphics (`<samp><span class="samp">2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR)</span></samp>')<dd><a name="index-graphics_002esty-426"></a><dt>graphicx (`<samp><span class="samp">1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)</span></samp>')<dd><a name="index-graphicx_002esty-427"></a><a href="http://www.ctan.org/tex-archive/macros/latex/required/graphics/grfguide.pdf">http://www.ctan.org/tex-archive/macros/latex/required/graphics/grfguide.pdf</a>
+ <br><dt>color (`<samp><span class="samp">1999/02/16 v1.0i Standard LaTeX Color (DPC)</span></samp>')<dd><a name="index-color_002esty-461"></a><dt>graphics (`<samp><span class="samp">2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR)</span></samp>')<dd><a name="index-graphics_002esty-462"></a><dt>graphicx (`<samp><span class="samp">1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)</span></samp>')<dd><a name="index-graphicx_002esty-463"></a><a href="http://www.ctan.org/tex-archive/macros/latex/required/graphics/grfguide.pdf">http://www.ctan.org/tex-archive/macros/latex/required/graphics/grfguide.pdf</a>
- <p><a name="index-graphics-collection_002c-_0040LaTeX_007b_007d-428"></a><a name="index-g_t_0040LaTeX_007b_007d-graphics-collection-429"></a><a name="index-color-430"></a><a name="index-rotation-431"></a><a name="index-scaling-432"></a>These packages are from the LaTeX graphics collection. They
+ <p><a name="index-graphics-collection_002c-_0040LaTeX_007b_007d-464"></a><a name="index-g_t_0040LaTeX_007b_007d-graphics-collection-465"></a><a name="index-color-466"></a><a name="index-rotation-467"></a><a name="index-scaling-468"></a>These packages are from the LaTeX graphics collection. They
provide commands for changing text/page colors, text rotation and
scaling, and much more.
- <br><dt>psfrag (`<samp><span class="samp">1998/04/11 v3.04 PSfrag (MCG)</span></samp>')<dd><a name="index-psfrag_002esty-433"></a><a href="http://www.ctan.org/tex-archive/macros/latex/contrib/psfrag/pfgguide.pdf">http://www.ctan.org/tex-archive/macros/latex/contrib/psfrag/pfgguide.pdf</a>
+ <p><a name="index-color_002c-problems-with-pdf_0040TeX_007b_007d-469"></a><a name="index-graphics_002c-problems-with-pdf_0040TeX_007b_007d-470"></a><a name="index-pdf_0040TeX_007b_007d_002c-problems-using-color-and-graphics-471"></a><a name="index-pdf_0040TeX_007b_007d_002c-problems-with-_0040file_007bsupp_002dmis_002etex_007d-472"></a><a name="index-Con_0040TeX_007b_007dt-473"></a><a name="index-supp_002dmis_002etex_0040r_007b_002c-problems-with-pdf_0040TeX_007b_007d_007d-474"></a><a name="index-supp_002dpdf_002etex-475"></a><strong>Warning&nbsp;<!-- /@w -->1:</strong> If you encounter problems loading one of
+these packages under pdfTeX (more specifically, when pdfTeX
+reads <samp><span class="file">supp-mis.tex</span></samp>), the cause may be an outdated
+<samp><span class="file">supp-mis.tex</span></samp> (part of ConTeXt, a typesetting system for
+TeX) installed on your system. The problem was fixed in
+<samp><span class="file">supp-mis.tex</span></samp> version&nbsp;<!-- /@w -->2004.10.26. You can obtain
+up-to-date versions of <samp><span class="file">supp-mis.tex</span></samp> and the accompanying
+<samp><span class="file">supp-pdf.tex</span></samp> from
+<a href="http://www.ctan.org/tex-archive/macros/pdftex/graphics">http://www.ctan.org/tex-archive/macros/pdftex/graphics</a>.
+To convince TeX to use the new files, you have the following
+options in the decreasing order of preference:
+
+ <ol type=1 start=1>
+<li>put the new files in the same directory with your document;
+
+ <li>overwrite the outdated files installed by your TeX distribution;
+
+ <li>install the new <samp><span class="file">supp-mis.tex</span></samp> and <samp><span class="file">supp-pdf.tex</span></samp> files in
+the relevant subdirectory of your local <samp><span class="file">texmf</span></samp> tree (for info on
+TeX directory structure see
+<a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=tds">http://www.tex.ac.uk/cgi-bin/texfaq2html?label=tds</a>);
+
+ <li>upgrade your ConTeXt installation.
+ </ol>
+
+ <p class="noindent">Note that option&nbsp;<!-- /@w -->1 is the safest but provides the fix
+only for your current document. Options&nbsp;<!-- /@w -->2 and&nbsp;<!-- /@w -->3 will
+usually suffice for Eplain but may break ConTeXt. Option&nbsp;<!-- /@w -->4 is
+the most general but is more complicated than the first three. Be
+sure to backup any files you overwrite. Also keep in mind that
+upgrading your TeX distribution may overwrite files you install in
+the system <samp><span class="file">texmf</span></samp> tree.<br> <strong>End of warning&nbsp;<!-- /@w -->1.</strong>
+
+ <p><strong>Warning&nbsp;<!-- /@w -->2:</strong> If you encounter problems using the
+<code>\pagecolor</code> command from the <samp><span class="file">color.sty</span></samp> package under
+pdfTeX, the cause may be an outdated pdfTeX color and graphics
+driver <samp><span class="file">pdftex.def</span></samp>. The problem was fixed in <samp><span class="file">pdftex.def</span></samp>
+version&nbsp;<!-- /@w -->0.03p. You can obtain an up-to-date version from
+<a href="http://www.ctan.org/tex-archive/graphics/pdftex/pdftex.def">http://www.ctan.org/tex-archive/graphics/pdftex/pdftex.def</a>.<br>
+<strong>End of warning&nbsp;<!-- /@w -->2.</strong>
+
+ <p><a name="index-omitting-typesetting-of-graphics-476"></a><a name="index-graphics_002c-omitting-typesetting-of-477"></a>The <samp><span class="file">graphics</span></samp>/<samp><span class="file">graphicx</span></samp> packages have the option
+<a name="index-g_t_0040code_007bdraft_007d_002c-option-for-_0040file_007bgraphics_002esty_007d-478"></a><code>draft</code> which instructs <code>\includegraphics</code> not to include the
+graphics but instead typeset a box with the dimensions of the graphics
+and the name of the graphics file in typewriter type at the center of
+the box. These packages expect the LaTeX-provided command
+<a name="index-ttfamily-479"></a><code>\ttfamily</code> to switch to the typewrite type. This command is not
+defined by <samp><span class="file">miniltx.tex</span></samp>, therefore Eplain defines it and makes it
+equivalent to plain&nbsp;<!-- /@w -->TeX's
+<a name="index-tt-480"></a><code>\tt</code>.
+
+ <p>See <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a>, for the demonstration of text rotation and
+graphics inclusion using the <samp><span class="file">graphicx</span></samp> package, and using the
+<samp><span class="file">color</span></samp> package to colorize hypertext links.
+
+ <p><a name="index-H_0040_0022oppner_002c-Klaus-481"></a>Klaus H&ouml;ppner has written a nice introduction to the LaTeX graphics
+packages and different graphics formats. You can download it from
+ <pre class="display"> <a href="http://www.tug.org/pracjourn/2005-3/hoeppner">http://www.tug.org/pracjourn/2005-3/hoeppner</a>
+ </pre>
+ <br><dt>epstopdf (`<samp><span class="samp">2001/02/04 v1.1 Conversion with epstopdf on the fly (HO)</span></samp>')<dd><a name="index-epstopdf_002esty-482"></a><a href="http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek">http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek</a>
+
+ <p><a name="index-Encapsulated-PostScript-483"></a><a name="index-g_t_0040acronym_007bEPS_007d-484"></a><a name="index-g_t_002eeps-_0040r_007bfiles_007d-485"></a><a name="index-Portable-Document-Format-486"></a><a name="index-g_t_0040acronym_007bPDF_007d-487"></a><a name="index-g_t_002epdf-_0040r_007bfiles_007d-488"></a><a name="index-epstopdf-489"></a>This package does on-the-fly conversion of Encapsulated PostScript
+(<acronym>EPS</acronym>) graphics into Portable Document Format (<acronym>PDF</acronym>)
+graphics for inclusion with the <code>\includegraphics</code> command from
+the <samp><span class="file">graphics</span></samp>/<samp><span class="file">graphicx</span></samp> packages, so that you do not have
+to explicitly call the <samp><span class="file">epstopdf</span></samp> script.
- <p><a name="index-Encapsulated-PostScript-434"></a><a name="index-EPS-435"></a><a name="index-g_t_002eeps-_0040r_007bfiles_007d-436"></a>PSfrag allows the user to precisely overlay Encapsulated PostScript
-(EPS) files with arbitrary (La)TeX constructions. In order to
+ <br><dt>psfrag (`<samp><span class="samp">1998/04/11 v3.04 PSfrag (MCG)</span></samp>')<dd><a name="index-psfrag_002esty-490"></a><a href="http://www.ctan.org/tex-archive/macros/latex/contrib/psfrag/pfgguide.pdf">http://www.ctan.org/tex-archive/macros/latex/contrib/psfrag/pfgguide.pdf</a>
+
+ <p><a name="index-Encapsulated-PostScript-491"></a><a name="index-g_t_0040acronym_007bEPS_007d-492"></a><a name="index-g_t_002eeps-_0040r_007bfiles_007d-493"></a>PSfrag allows the user to precisely overlay Encapsulated PostScript
+(<acronym>EPS</acronym>) files with arbitrary (La)TeX constructions. In order to
accomplish this, the user places a simple text &ldquo;tag&rdquo; in the graphics
file, as a &ldquo;position marker&rdquo; of sorts. Then, using simple
(La)TeX commands, the user instructs PSfrag to remove that tag from
the figure, and replace it with a properly sized, aligned, and rotated
(La)TeX equation.
- <br><dt>url (`<samp><span class="samp">2005/06/27 ver 3.2 Verb mode for urls, etc.</span></samp>')<dd><a name="index-url_002esty-437"></a><a href="http://www.ctan.org/tex-archive/macros/latex/contrib/misc/url.sty">http://www.ctan.org/tex-archive/macros/latex/contrib/misc/url.sty</a>
+ <br><dt>soul (`<samp><span class="samp">2003/11/17 v2.4 letterspacing/underlining (mf)</span></samp>')<dd><a name="index-soul_002esty-494"></a><a href="http://www.ctan.org/tex-archive/macros/latex/contrib/soul">http://www.ctan.org/tex-archive/macros/latex/contrib/soul</a>
+
+ <p><a name="index-letterspacing-495"></a><a name="index-spacing-out-496"></a><a name="index-underlining-497"></a><a name="index-striking-out-498"></a><a name="index-overstriking-499"></a><a name="index-highlighting-500"></a>This package provides hyphenatable letterspacing (spacing out),
+underlining, and some derivatives. The package is optimized for
+LaTeX, but works with plain TeX&mdash;you don't actually need to
+load it with the <code>\usepackage</code> command, just say <code>\input
+soul.sty</code>. If you intend to use the highlighting macros of
+<samp><span class="file">soul</span></samp>, don't forget to load the <samp><span class="file">color</span></samp> package.
+
+ <br><dt>url (`<samp><span class="samp">2005/06/27 ver 3.2 Verb mode for urls, etc.</span></samp>')<dd><a name="index-url_002esty-501"></a><a href="http://www.ctan.org/tex-archive/macros/latex/contrib/misc/url.sty">http://www.ctan.org/tex-archive/macros/latex/contrib/misc/url.sty</a>
- <p><a name="index-pathnames_002c-breaking-438"></a><a name="index-filenames_002c-breaking-439"></a><a name="index-electronic-mail-addresses_002c-breaking-440"></a>This package provides a form of <code>\verbatim</code> that allows
+ <p><a name="index-pathnames_002c-breaking-502"></a><a name="index-filenames_002c-breaking-503"></a><a name="index-electronic-mail-addresses_002c-breaking-504"></a>This package provides a form of <code>\verbatim</code> that allows
line breaks at certain characters or combinations of characters,
accepts reconfiguration, and can usually be used in the argument to
another command. It is intended for email addresses, hypertext links,
directories/paths, etc., which normally have no spaces.
- <p>Eplain can create hypertext links with the <code>\url</code> command;
-see <a href="#URL-hyperlinks">URL hyperlinks</a>.
+ <p>Eplain can create hypertext links with the <code>\url</code> command
+(see <a href="#URL-hyperlinks">URL hyperlinks</a>).
+
+ <p>Be sure to get a version dated at least 2005/06/27, as older versions
+have problems in plain&nbsp;<!-- /@w -->TeX.
</dl>
<div class="node">
@@ -2712,12 +3291,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Loading-LaTeX-packages">Loading LaTeX
<h4 class="subsection">4.23.4 Packages known not to work</h4>
-<p><a name="index-g_t_0040LaTeX_007b_007d-packages-441"></a><a name="index-packages_002c-_0040LaTeX_007b_007d-442"></a>The following packages are known not to work with Eplain:
+<p><a name="index-g_t_0040LaTeX_007b_007d-packages-505"></a><a name="index-packages_002c-_0040LaTeX_007b_007d-506"></a>The following packages are known not to work with Eplain:
<dl>
-<dt>pict2e (`<samp><span class="samp">2005/07/15 v0.2r Improved picture commands (HjG,RN)</span></samp>')<dd><a name="index-pict2e_002esty-443"></a><a href="http://www.ctan.org/tex-archive/macros/latex/contrib/pict2e/">http://www.ctan.org/tex-archive/macros/latex/contrib/pict2e/</a>
+<dt>hyperref<dd><a name="index-hyperref_002esty-507"></a><a href="http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref">http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref</a>
+
+ <p>This package depends heavily on LaTeX, so that it is mostly
+unusable outside of LaTeX. Eplain provides its own macros for
+creating hyperlinks, see <a href="#Hyperlinks">Hyperlinks</a>.
- <br><dt>xcolor (`<samp><span class="samp">2005/06/06 v2.03 LaTeX color extensions (UK)</span></samp>')<dd><a name="index-xcolor_002esty-444"></a><a href="http://www.ctan.org/tex-archive/macros/latex/contrib/xcolor/">http://www.ctan.org/tex-archive/macros/latex/contrib/xcolor/</a>
+ <br><dt>pict2e (`<samp><span class="samp">2005/07/15 v0.2r Improved picture commands (HjG,RN)</span></samp>')<dd><a name="index-pict2e_002esty-508"></a><a href="http://www.ctan.org/tex-archive/macros/latex/contrib/pict2e">http://www.ctan.org/tex-archive/macros/latex/contrib/pict2e</a>
+
+ <br><dt>xcolor (`<samp><span class="samp">2005/06/06 v2.03 LaTeX color extensions (UK)</span></samp>')<dd><a name="index-xcolor_002esty-509"></a><a href="http://www.ctan.org/tex-archive/macros/latex/contrib/xcolor">http://www.ctan.org/tex-archive/macros/latex/contrib/xcolor</a>
</dl>
<!-- This is part of the Eplain manual. Public domain. -->
@@ -2732,7 +3317,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
<h2 class="chapter">5 Hyperlinks</h2>
-<p><a name="index-links_002c-hypertext-445"></a><a name="index-hypertext-links-446"></a>This chapter describes the support which Eplain provides for hypertext
+<p><a name="index-links_002c-hypertext-510"></a><a name="index-hypertext-links-511"></a>This chapter describes the support which Eplain provides for hypertext
links (<dfn>hyperlinks</dfn> for short). Hyperlinks can be created
implicitly by the cross-reference, indexing and other macros in
Eplain. Macros for constructing explicit hyperlinks are also
@@ -2757,15 +3342,16 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlinks">Hyperlinks</a>
<h3 class="section">5.1 Introduction to hyperlinks</h3>
-<p><a name="index-hyperlink-drivers-447"></a><a name="index-drivers_002c-hyperlink-448"></a>The original TeX engine has no built-in support for hyperlinks.
+<p><a name="index-hyperlink-drivers-512"></a><a name="index-drivers_002c-hyperlink-513"></a>The original TeX engine has no built-in support for hyperlinks
+(a.k.a. hypertext links).
Many of the present-day file formats with hyperlinking capabilities
did not even exist at the time TeX was written. However, TeX's
-<a name="index-special-449"></a><code>\special</code> primitive can be used to instruct TeX to write
+<a name="index-special-514"></a><code>\special</code> primitive can be used to instruct TeX to write
special directives into its <samp><span class="file">.dvi</span></samp> output file. These directives
are not interpreted by TeX in any way; they are intended for programs
which process the <samp><span class="file">.dvi</span></samp> files produced by TeX, be it printing
or converting to other formats, such as
-<a name="index-g_t_002eps-_0040r_007bfiles_007d-450"></a><a name="index-g_t_002epdf-_0040r_007bfiles_007d-451"></a><samp><span class="file">.ps</span></samp> or <samp><span class="file">.pdf</span></samp>.
+<a name="index-g_t_002eps-_0040r_007bfiles_007d-515"></a><a name="index-g_t_002epdf-_0040r_007bfiles_007d-516"></a><samp><span class="file">.ps</span></samp> or <samp><span class="file">.pdf</span></samp>.
<p>Another approach is to extend the original TeX engine with the
ability to generate one of the hyperlinking formats; TeX's set of
@@ -2785,28 +3371,30 @@ the set of commands it understands.
<p>The knowledge about the commands that the various processors
understand is programmed into Eplain's hyperlink drivers. Eplain
-provides two drivers, <code>pdftex</code> and <code>dvipdfm</code>, named after
-the programs which process the hyperlink commands,
-<a name="index-pdftex-452"></a>pdfTeX and
-<a name="index-dvipdfm-453"></a>dvipdfm. Therefore, Eplain can only produce hyperlink commands for one
-of these two programs&mdash;except that the extended <code>dvipdfmx</code> program
-can be used as well as the original <code>dvipdfm</code>, since they are
-compatible.
+provides three drivers: <code>hypertex</code> (implementation of the
+HyperTeX standard, see <a href="http://arxiv.org/hypertex">http://arxiv.org/hypertex</a>), and
+<code>pdftex</code> and <code>dvipdfm</code> (named after the programs which
+process the hyperlink commands,
+<a name="index-pdftex-517"></a>pdfTeX and
+<a name="index-dvipdfm-518"></a>dvipdfm). Therefore, Eplain can only produce HyperTeX commands and
+hyperlink commands for one of these two programs&mdash;except that the
+extended <code>dvipdfmx</code> program can be used as well as the original
+<code>dvipdfm</code>, since they are compatible.
<p>To tell Eplain which <samp><span class="file">.dvi</span></samp> processor or extended TeX engine you
are using, use the command
-<a name="index-enablehyperlinks-454"></a><code>\enablehyperlinks</code>.
+<a name="index-enablehyperlinks-519"></a><code>\enablehyperlinks</code>.
<p>For example:
<pre class="example"> \enablehyperlinks
</pre>
<p class="noindent">instructs Eplain to attempt to automatically detect which
-driver to use, as follows: if it detects pdfTeX in PDF mode, it
-loads the <code>pdftex</code> driver. If it does not detect pdfTeX in
-PDF mode, the <code>dvipdfm</code> driver is loaded. The detection is based
-on the
-<a name="index-ifpdf-455"></a><code>\ifpdf</code> switch (see <a href="#Checking-for-PDF-output">Checking for PDF output</a>).
+driver to use, as follows: if it detects pdfTeX in <acronym>PDF</acronym>
+mode, it loads the <code>pdftex</code> driver. If it does not detect
+pdfTeX in <acronym>PDF</acronym> mode, the <code>hypertex</code> driver is loaded.
+The detection is based on the
+<a name="index-ifpdf-520"></a><code>\ifpdf</code> switch (see <a href="#Checking-for-PDF-output">Checking for PDF output</a>).
<p>If necessary, you can explicitly specify the driver name:
@@ -2819,7 +3407,8 @@ you are using pdfTeX.
them with <code>\enablehyperlinks</code>. For one thing, this keeps Eplain
backward-compatible with previous releases without hyperlink support.
For another, you may be using a program other than pdfTeX or
-<code>dvipdfm</code>, which does not understand their hyperlink commands.
+<code>dvipdfm</code>, which does not understand their hyperlink commands or
+the HyperTeX commands.
<h4 class="subheading">Concepts and Terminology</h4>
@@ -2841,7 +3430,7 @@ destinations jointly, in which case we will use the term
<dfn>destinations</dfn> in cases when we need to refer specifically to
links or destinations.
- <p><a name="index-link-type-456"></a><a name="index-destination-type-457"></a><a name="index-type_002c-link-and-destination-458"></a>Hyperlink drivers provide several kinds of links and destinations. We
+ <p><a name="index-link-type-521"></a><a name="index-destination-type-522"></a><a name="index-type_002c-link-and-destination-523"></a>Hyperlink drivers provide several kinds of links and destinations. We
will refer to them as <dfn>link types</dfn> and <dfn>destination types</dfn>.
<p>For example, one of the destination types that the <code>pdftex</code>
@@ -2857,10 +3446,10 @@ displayed.
<code>pdftex</code> driver, the usual link type used to refer to
destinations in the current document is called `<samp><span class="samp">name</span></samp>'. You can
also create a link pointing to another local document (by using the
-`<samp><span class="samp">filename</span></samp>' link type) or to a URL (by using the `<samp><span class="samp">url</span></samp>' link
-type).
+`<samp><span class="samp">filename</span></samp>' link type) or to a <acronym>URL</acronym> (by using the
+`<samp><span class="samp">url</span></samp>' link type).
- <p><a name="index-link-options-459"></a><a name="index-destination-options-460"></a><a name="index-options_002c-link-and-destination-461"></a>In addition, each hyperlink driver supports a number of destination and
+ <p><a name="index-link-options-524"></a><a name="index-destination-options-525"></a><a name="index-options_002c-link-and-destination-526"></a>In addition, each hyperlink driver supports a number of destination and
link <dfn>options</dfn>. By setting these options you can customize
hyperlink parameters (e.g., the thickness of the border drawn around a
hyperlink) or pass information to hyperlinks (for example, file name of
@@ -2880,7 +3469,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlinks">Hyperlinks</a>
<h3 class="section">5.2 Explicit hyperlinks</h3>
-<p><a name="index-explicit-hyperlinks-462"></a><a name="index-hyperlinks_002c-explicit-463"></a><a name="index-hldest-464"></a>Explicit hyperlinks are created by you, in the source of your
+<p><a name="index-explicit-hyperlinks-527"></a><a name="index-hyperlinks_002c-explicit-528"></a><a name="index-hldest-529"></a>Explicit hyperlinks are created by you, in the source of your
document. The simplest command is <code>\hldest</code>, which marks the
current position in your document as a destination:
@@ -2899,7 +3488,7 @@ destination. For example, with the <code>pdftex</code> driver, the command
position&rdquo;), sets the magnification ratio for this destination to be
200%, and associates the label <code>index</code> with the destination.
- <p><a name="index-hlstart-465"></a><a name="index-hlend-466"></a>Another command, <code>\hlstart</code>, paired with <code>\hlend</code>, turns all
+ <p><a name="index-hlstart-530"></a><a name="index-hlend-531"></a>Another command, <code>\hlstart</code>, paired with <code>\hlend</code>, turns all
intervening material into a link:
<pre class="example"> \hlstart{<var>type</var>}{<var>options</var>}{<var>label</var>} ... \hlend
@@ -2915,6 +3504,11 @@ width&nbsp;<!-- /@w -->2&nbsp;<!-- /@w -->PostScript points, pointing to the nam
highlight mode and border color, are determined by the defaults,
see <a href="#Setting-default-types-and-options">Setting default types and options</a>).
+ <p>The <var>label</var> argument of both <code>\hldest</code> and <code>\hlstart</code>
+can contain special characters (such as `<samp><span class="samp">#</span></samp>', `<samp><span class="samp">%</span></samp>', `<samp><span class="samp">&amp;</span></samp>',
+`<samp><span class="samp">~</span></samp>', etc.) without any escaping. This is especially important
+for <acronym>URL</acronym> links supported by some drivers (see <a href="#Hyperlink-drivers">Hyperlink drivers</a>).
+
<p>Both <code>\hldest</code> and <code>\hlstart</code> ignore following spaces.
<p>Both <code>\hldest</code> and <code>\hlstart</code> expand the first token of
@@ -2926,6 +3520,9 @@ pass it for the <var>options</var>. For example:
</pre>
<p class="noindent">is functionally equivalent to the previous example.
+ <p>See <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a>, for a demonstration of the usage of
+explicit hyperlinks.
+
<div class="node">
<p><hr>
<a name="Implicit-hyperlinks"></a>
@@ -2937,11 +3534,11 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlinks">Hyperlinks</a>
<h3 class="section">5.3 Implicit hyperlinks</h3>
-<p><a name="index-implicit-hyperlinks-467"></a><a name="index-hyperlinks_002c-implicit-468"></a><dfn>Implicit hyperlinks</dfn> are hyperlinks created implicitly by various
+<p><a name="index-implicit-hyperlinks-532"></a><a name="index-hyperlinks_002c-implicit-533"></a><dfn>Implicit hyperlinks</dfn> are hyperlinks created implicitly by various
Eplain macros, such as the macros for citations, cross-references,
indexing, etc.
- <p><a name="index-link-group-469"></a><a name="index-linkgroup-470"></a><a name="index-group_002c-link-471"></a><a name="index-destination-group-472"></a><a name="index-destgroup-473"></a><a name="index-group_002c-destination-474"></a>All such macros are divided into <dfn>link groups</dfn> and
+ <p><a name="index-link-group-534"></a><a name="index-linkgroup-535"></a><a name="index-group_002c-link-536"></a><a name="index-destination-group-537"></a><a name="index-destgroup-538"></a><a name="index-group_002c-destination-539"></a>All such macros are divided into <dfn>link groups</dfn> and
<dfn>destination groups</dfn> (or <dfn>linkgroups</dfn> and <dfn>destgroups</dfn> for
short) so that parameters can be set individually for each group. For
example, all equation macros which define a destination are assigned
@@ -2956,49 +3553,140 @@ set parameters for a group.
<p>Here is the list of the linkgroups:
-<pre class="display"> cite, ref, xref, eq, idx, foot, footback, url.
+<pre class="display"> hrefint, hrefext, url, cite, ref, xref, eq, idx, foot, footback.
</pre>
<p>And here are the destgroups:
<pre class="display"> bib, li, definexref, xrdef, eq, idx, foot, footback.
</pre>
+ <p>See <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a>, for a demonstration of the usage of
+implicit hyperlinks.
+
<p>The following subsections describe each of the linkgroups and destgroups
and the hyperlink support provided.
<ul class="menu">
-<li><a accesskey="1" href="#URL-hyperlinks">URL hyperlinks</a>: url
-<li><a accesskey="2" href="#Citation-hyperlinks">Citation hyperlinks</a>: cite, bib
-<li><a accesskey="3" href="#List-hyperlinks">List hyperlinks</a>: li
-<li><a accesskey="4" href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a>: definexref, ref
-<li><a accesskey="5" href="#Page-reference-hyperlinks">Page reference hyperlinks</a>: xrdef, xref
-<li><a accesskey="6" href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a>: eq
-<li><a accesskey="7" href="#Index-hyperlinks">Index hyperlinks</a>: idx
-<li><a accesskey="8" href="#Footnote-hyperlinks">Footnote hyperlinks</a>: foot, footback
-<li><a accesskey="9" href="#Contents-hyperlinks">Contents hyperlinks</a>
+<li><a accesskey="1" href="#General-hyperlinks">General hyperlinks</a>: hrefint, hrefext
+<li><a accesskey="2" href="#URL-hyperlinks">URL hyperlinks</a>: url
+<li><a accesskey="3" href="#Citation-hyperlinks">Citation hyperlinks</a>: cite, bib
+<li><a accesskey="4" href="#List-hyperlinks">List hyperlinks</a>: li
+<li><a accesskey="5" href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a>: definexref, ref
+<li><a accesskey="6" href="#Page-reference-hyperlinks">Page reference hyperlinks</a>: xrdef, xref
+<li><a accesskey="7" href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a>: eq
+<li><a accesskey="8" href="#Index-hyperlinks">Index hyperlinks</a>: idx
+<li><a accesskey="9" href="#Footnote-hyperlinks">Footnote hyperlinks</a>: foot, footback
+<li><a href="#Contents-hyperlinks">Contents hyperlinks</a>
</ul>
<div class="node">
<p><hr>
+<a name="General-hyperlinks"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="#URL-hyperlinks">URL hyperlinks</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlinks</a>
+
+</div>
+
+<h4 class="subsection">5.3.1 General hyperlinks: hrefint, hrefext</h4>
+
+<p><a name="index-href-540"></a><code>\href{</code><var>url</var><code>}{</code><var>text</var><code>}</code> typesets <var>text</var> as a link
+to <var>url</var>. It basically does what the explicit hyperlink macros do
+(see <a href="#Explicit-hyperlinks">Explicit hyperlinks</a>), but is more convenient (at the expense
+of flexibility).
+
+ <p>If <var>url</var> starts with `<samp><span class="samp">#</span></samp>', the rest of <var>url</var> is assumed to
+be a local hyperlink destination name (destination within the same
+document). Parameters for these links can be set by customizing the
+<a name="index-group-_0060hrefint_0027-541"></a><a name="index-linkgroup-_0060hrefint_0027-542"></a>`hrefint' linkgroup. For example:
+
+<pre class="example"> See \href{#intro}{Introduction}
+</pre>
+ <p class="noindent">will make `Introduction' into an internal link, which might
+have been created, e.g., with <code>\xrdef{intro}</code>.
+
+ <p><a name="index-g_t_0040acronym_007bURL_007d-hyperlink-543"></a><a name="index-hyperlinks_002c-_0040acronym_007bURL_007d-544"></a>If <var>url</var> does not start with `<samp><span class="samp">#</span></samp>', it is assumed to be a
+<acronym>URL</acronym> link. Parameters for these links can be set by
+customizing the
+<a name="index-group-_0060hrefext_0027-545"></a><a name="index-linkgroup-_0060hrefext_0027-546"></a>`hrefext' linkgroup. The special characters (such as `<samp><span class="samp">#</span></samp>' and
+`<samp><span class="samp">~</span></samp>') in the <acronym>URL</acronym> don't need to be escaped. For example:
+
+<pre class="example"> \href{http://tug.org/eplain/doc/eplain.html#Hyperlinks}{Hyperlinks
+ in Eplain}
+</pre>
+ <p class="noindent">See <a href="#URL-hyperlinks">URL hyperlinks</a>, for another way to create
+<acronym>URL</acronym> hyperlinks.
+
+ <p>The <var>text</var> argument of <code>\href</code> can contain verbatim text
+(see <a href="#Verbatim-listing">Verbatim listing</a>) or other macros which manipulate character
+catcodes. For example:
+
+<pre class="example"> \href{#WeirdChars}{The weird chars \verbatim #&amp;%$~|endverbatim}
+</pre>
+ <p><code>\href</code> does not currently handle other link types, such as
+<a name="index-g_t_0040samp_007bfile_003a_007d-links-547"></a>`<samp><span class="samp">file:</span></samp>' and
+<a name="index-g_t_0040samp_007brun_003a_007d-links-548"></a>`<samp><span class="samp">run:</span></samp>' links.
+
+<div class="node">
+<p><hr>
<a name="URL-hyperlinks"></a>
Next:&nbsp;<a rel="next" accesskey="n" href="#Citation-hyperlinks">Citation hyperlinks</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#General-hyperlinks">General hyperlinks</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlinks</a>
</div>
-<h4 class="subsection">5.3.1 URL hyperlinks: url</h4>
+<h4 class="subsection">5.3.2 URL hyperlinks: url</h4>
-<p><a name="index-URL-hyperlink-475"></a><a name="index-hyperlinks_002c-URL-476"></a><a name="index-group-_0060url_0027-477"></a><a name="index-linkgroup-_0060url_0027-478"></a>The `url' linkgroup covers the
-<a name="index-url-_0040r_007b_0028hyperlinks_0029_007d-479"></a><code>\url</code> command from the LaTeX package
-<a name="index-url_002esty-480"></a><samp><span class="file">url</span></samp> (see <a href="#Packages-known-to-work">Packages known to work</a>), as well as any new
+<p><a name="index-g_t_0040acronym_007bURL_007d-hyperlink-549"></a><a name="index-hyperlinks_002c-_0040acronym_007bURL_007d-550"></a><a name="index-group-_0060url_0027-551"></a><a name="index-linkgroup-_0060url_0027-552"></a>The `url' linkgroup covers the
+<a name="index-url-_0040r_007b_0028hyperlinks_0029_007d-553"></a><code>\url</code> command from the LaTeX package
+<a name="index-url_002esty-554"></a><samp><span class="file">url</span></samp> (see <a href="#Packages-known-to-work">Packages known to work</a>), as well as any new
<code>\url</code>-like commands you define. The type for this linkgroup is
set to `<samp><span class="samp">url</span></samp>' by the drivers which support this link type.
-`<samp><span class="samp">url</span></samp>' links use the parameter to the <code>\url</code> command as the URL
-to point to.
+`<samp><span class="samp">url</span></samp>' links use the parameter to the <code>\url</code> command as the
+<acronym>URL</acronym> to point to.
<p>You may be using the <code>\url</code> command to typeset something other than
-a URL, e.g., a path, for which you do not want a link to be created; in
-that case, you can disable the `url' linkgroup with the command
-<code>\hloff[url]</code> (see <a href="#Turning-hyperlinks-on_002foff-for-a-group">Turning hyperlinks on/off for a group</a>).
+a <acronym>URL</acronym>, e.g., a path, for which you do not want a link to be
+created; in that case, you can disable the `url' linkgroup with the
+command <code>\hloff[url]</code> (see <a href="#Turning-hyperlinks-on_002foff-for-a-group">Turning hyperlinks on/off for a group</a>).
+
+ <p><a name="index-boxed-links_002c-avoiding-555"></a><a name="index-avoiding-boxed-links-556"></a><a name="index-color_002c-hyperlinks-557"></a><a name="index-colored-links-558"></a><a name="index-hyperlink-color-559"></a>By default, <acronym>URL</acronym> (and other types of) links are boxed, so
+that they are visually marked even if you do not load the LaTeX
+<a name="index-color_002esty-560"></a>`color' package (see <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a>) and therefore link text
+is not colored. You can see the effect by compiling the following code
+snippet (be sure to get a modern <samp><span class="file">url.sty</span></samp>, older versions do not
+work in plain&nbsp;<!-- /@w -->TeX; see <a href="#Packages-known-to-work">Packages known to work</a>):
+
+<pre class="example"> \input eplain
+ \beginpackages
+ \usepackage{url}
+ \endpackages
+
+ \enablehyperlinks
+
+ \url{http://foo/bar}
+ \bye
+</pre>
+ <p>If the hyperlink driver you use supports the link option <code>bwidth</code>
+(see <a href="#Hyperlink-drivers">Hyperlink drivers</a>), you can produce colored links with no
+border around them. Try this:
+
+<pre class="example"> \input eplain
+ \beginpackages
+ \usepackage{url}
+ \usepackage{color}
+ \endpackages
+
+ \enablehyperlinks
+ \hlopts{bwidth=0}
+
+ \url{http://foo/bar}
+ \bye
+</pre>
+ <p class="noindent">The command <code>\hlopts{bwidth=0}</code> sets border width to
+zero as the default for all links, and loading the <samp><span class="file">color</span></samp> package
+automatically colors links using the default color (see <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a>). If you want the border width setting to
+apply to <acronym>URL</acronym> links only, say <code>\hlopts[url]{bwidth=0}</code>
+(see <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a>).
<div class="node">
<p><hr>
@@ -3009,14 +3697,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlin
</div>
-<h4 class="subsection">5.3.2 Citation hyperlinks: cite, bib</h4>
+<h4 class="subsection">5.3.3 Citation hyperlinks: cite, bib</h4>
-<p><a name="index-citations_002c-hyperlinks-481"></a><a name="index-hyperlinks_002c-citations-482"></a><a name="index-group-_0060cite_0027-483"></a><a name="index-linkgroup-_0060cite_0027-484"></a><a name="index-cite-_0040r_007b_0028hyperlinks_0029_007d-485"></a>The `cite' linkgroup includes only the <code>\cite</code> command
+<p><a name="index-citations_002c-hyperlinks-561"></a><a name="index-hyperlinks_002c-citations-562"></a><a name="index-group-_0060cite_0027-563"></a><a name="index-linkgroup-_0060cite_0027-564"></a><a name="index-cite-_0040r_007b_0028hyperlinks_0029_007d-565"></a>The `cite' linkgroup includes only the <code>\cite</code> command
(see <a href="#Citations">Citations</a>). <code>\cite</code> turns each of the references in the
list into a link pointing to the respective bibliography entry
produced by the <code>\bibliography</code> command.
- <p><a name="index-bibliography_002c-hyperlinks-486"></a><a name="index-hyperlinks_002c-bibliography-487"></a><a name="index-group-_0060bib_0027-488"></a><a name="index-destgroup-_0060bib_0027-489"></a><a name="index-bibliography-_0040r_007b_0028hyperlinks_0029_007d-490"></a>The `bib' destgroup includes the macros related to the
+ <p><a name="index-bibliography_002c-hyperlinks-566"></a><a name="index-hyperlinks_002c-bibliography-567"></a><a name="index-group-_0060bib_0027-568"></a><a name="index-destgroup-_0060bib_0027-569"></a><a name="index-bibliography-_0040r_007b_0028hyperlinks_0029_007d-570"></a>The `bib' destgroup includes the macros related to the
<code>\bibliography</code> command (see <a href="#Citations">Citations</a>). <code>\bibliography</code>
inputs a <samp><span class="file">.bbl</span></samp> file, which contains a list of bibliography
entries. For each of the entries, a destination is defined.
@@ -3032,9 +3720,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlin
</div>
-<h4 class="subsection">5.3.3 List hyperlinks: li</h4>
+<h4 class="subsection">5.3.4 List hyperlinks: li</h4>
-<p><a name="index-lists_002c-hyperlinks-491"></a><a name="index-hyperlinks_002c-lists-492"></a><a name="index-li-_0040r_007b_0028hyperlinks_0029_007d-493"></a><a name="index-group-_0060li_0027-494"></a><a name="index-destgroup-_0060li_0027-495"></a>The `li' destgroup consists of the <code>\li</code> command (see <a href="#Lists">Lists</a>),
+<p><a name="index-lists_002c-hyperlinks-571"></a><a name="index-hyperlinks_002c-lists-572"></a><a name="index-li-_0040r_007b_0028hyperlinks_0029_007d-573"></a><a name="index-group-_0060li_0027-574"></a><a name="index-destgroup-_0060li_0027-575"></a>The `li' destgroup consists of the <code>\li</code> command (see <a href="#Lists">Lists</a>),
which defines a destination if you supply the optional argument
(cross-reference label). This label is also used as the hyperlink
label.
@@ -3049,31 +3737,31 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlin
</div>
-<h4 class="subsection">5.3.4 Cross-reference hyperlinks: definexref, ref</h4>
+<h4 class="subsection">5.3.5 Cross-reference hyperlinks: definexref, ref</h4>
-<p><a name="index-definexref-_0040r_007b_0028hyperlinks_0029_007d-496"></a><a name="index-cross_002dreferences_002c-hyperlinks-497"></a><a name="index-hyperlinks_002c-cross_002dreferences-498"></a><a name="index-group-_0060definexref_0027-499"></a><a name="index-destgroup-_0060definexref_0027-500"></a>The `definexref' destgroup is for the <code>\definexref</code> command
+<p><a name="index-definexref-_0040r_007b_0028hyperlinks_0029_007d-576"></a><a name="index-cross_002dreferences_002c-hyperlinks-577"></a><a name="index-hyperlinks_002c-cross_002dreferences-578"></a><a name="index-group-_0060definexref_0027-579"></a><a name="index-destgroup-_0060definexref_0027-580"></a>The `definexref' destgroup is for the <code>\definexref</code> command
(see <a href="#Defining-generic-references">Defining generic references</a>). <code>\definexref</code> defines a
destination using the cross-reference label (the first argument) as the
hyperlink label.
- <p><a name="index-group-_0060ref_0027-501"></a><a name="index-linkgroup-_0060ref_0027-502"></a>The `ref' linkgroup includes <code>\refn</code> and <code>\xrefn</code> (they are
+ <p><a name="index-group-_0060ref_0027-581"></a><a name="index-linkgroup-_0060ref_0027-582"></a>The `ref' linkgroup includes <code>\refn</code> and <code>\xrefn</code> (they are
synonyms), <code>\ref</code>, and <code>\refs</code> (see <a href="#Using-generic-references">Using generic references</a>).
- <p><a name="index-refn-_0040r_007b_0028hyperlinks_0029_007d-503"></a><a name="index-xrefn-_0040r_007b_0028hyperlinks_0029_007d-504"></a><code>\refn</code> turns the cross-reference it produces into a link, using
+ <p><a name="index-refn-_0040r_007b_0028hyperlinks_0029_007d-583"></a><a name="index-xrefn-_0040r_007b_0028hyperlinks_0029_007d-584"></a><code>\refn</code> turns the cross-reference it produces into a link, using
the cross-reference label as the hyperlink label. If an optional
argument is present, it is tied by
-<a name="index-reftie-505"></a><code>\reftie</code> to the reference and become part of the link.
+<a name="index-reftie-585"></a><code>\reftie</code> to the reference and become part of the link.
- <p><a name="index-ref-_0040r_007b_0028hyperlinks_0029_007d-506"></a><code>\ref</code> works similarly to <code>\refn</code>. It takes an optional
+ <p><a name="index-ref-_0040r_007b_0028hyperlinks_0029_007d-586"></a><code>\ref</code> works similarly to <code>\refn</code>. It takes an optional
argument, which is treated the same way as the optional argument to
<code>\refn</code>. In addition, <code>\ref</code> can produce a &ldquo;class word&rdquo;.
Both the optional argument and the class word become part of the link,
when present. The cross-reference is tied by
-<a name="index-reftie-507"></a><code>\reftie</code> to the preceding word. The optional argument is
+<a name="index-reftie-587"></a><code>\reftie</code> to the preceding word. The optional argument is
separated from the class word by
-<a name="index-refspace-508"></a><code>\refspace</code>.
+<a name="index-refspace-588"></a><code>\refspace</code>.
- <p><a name="index-refs-_0040r_007b_0028hyperlinks_0029_007d-509"></a>Unlike <code>\ref</code>, <code>\refs</code> does not take an optional argument and
+ <p><a name="index-refs-_0040r_007b_0028hyperlinks_0029_007d-589"></a>Unlike <code>\ref</code>, <code>\refs</code> does not take an optional argument and
does not make the class word part of the link, which is appropriate for
its intended use.
@@ -3086,13 +3774,13 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlin
</div>
-<h4 class="subsection">5.3.5 Page reference hyperlinks: xrdef, xref</h4>
+<h4 class="subsection">5.3.6 Page reference hyperlinks: xrdef, xref</h4>
-<p><a name="index-xrdef-_0040r_007b_0028hyperlinks_0029_007d-510"></a><a name="index-page-reference-hyperlink-511"></a><a name="index-hyperlinks_002c-page-references-512"></a><a name="index-group-_0060xrdef_0027-513"></a><a name="index-destgroup-_0060xrdef_0027-514"></a>The `xrdef' destgroup is for <code>\xrdef</code> (see <a href="#Page-references">Page references</a>).
+<p><a name="index-xrdef-_0040r_007b_0028hyperlinks_0029_007d-590"></a><a name="index-page-reference-hyperlink-591"></a><a name="index-hyperlinks_002c-page-references-592"></a><a name="index-group-_0060xrdef_0027-593"></a><a name="index-destgroup-_0060xrdef_0027-594"></a>The `xrdef' destgroup is for <code>\xrdef</code> (see <a href="#Page-references">Page references</a>).
<code>\xrdef</code> defines a destination using cross-reference label as the
hyperlink label.
- <p><a name="index-xref-_0040r_007b_0028hyperlinks_0029_007d-515"></a><a name="index-refspace-516"></a><a name="index-xrefpageword-517"></a><a name="index-group-_0060xref_0027-518"></a><a name="index-linkgroup-_0060xref_0027-519"></a>The `xref' linkgroup includes the <code>\xref</code> command (see <a href="#Page-references">Page references</a>). <code>\xref</code> turns its optional argument (followed by
+ <p><a name="index-xref-_0040r_007b_0028hyperlinks_0029_007d-595"></a><a name="index-refspace-596"></a><a name="index-xrefpageword-597"></a><a name="index-group-_0060xref_0027-598"></a><a name="index-linkgroup-_0060xref_0027-599"></a>The `xref' linkgroup includes the <code>\xref</code> command (see <a href="#Page-references">Page references</a>). <code>\xref</code> turns its optional argument (followed by
<code>\refspace</code>), <code>\xrefpageword</code> and the cross-reference (page
number) into a link, using the cross-reference label as the hyperlink
label.
@@ -3106,9 +3794,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlin
</div>
-<h4 class="subsection">5.3.6 Equation reference hyperlinks: eq</h4>
+<h4 class="subsection">5.3.7 Equation reference hyperlinks: eq</h4>
-<p><a name="index-eqdef-_0040r_007b_0028hyperlinks_0029_007d-520"></a><a name="index-eqdefn-_0040r_007b_0028hyperlinks_0029_007d-521"></a><a name="index-eqsubdef-_0040r_007b_0028hyperlinks_0029_007d-522"></a><a name="index-eqsubdefn-_0040r_007b_0028hyperlinks_0029_007d-523"></a><a name="index-equations_002c-hyperlinks-524"></a><a name="index-hyperlinks_002c-equations-525"></a><a name="index-group-_0060eq_0027-526"></a><a name="index-destgroup-_0060eq_0027-527"></a>All commands that define equation labels are part of the `eq' destgroup.
+<p><a name="index-eqdef-_0040r_007b_0028hyperlinks_0029_007d-600"></a><a name="index-eqdefn-_0040r_007b_0028hyperlinks_0029_007d-601"></a><a name="index-eqsubdef-_0040r_007b_0028hyperlinks_0029_007d-602"></a><a name="index-eqsubdefn-_0040r_007b_0028hyperlinks_0029_007d-603"></a><a name="index-equations_002c-hyperlinks-604"></a><a name="index-hyperlinks_002c-equations-605"></a><a name="index-group-_0060eq_0027-606"></a><a name="index-destgroup-_0060eq_0027-607"></a>All commands that define equation labels are part of the `eq' destgroup.
These are <code>\eqdef</code>, <code>\eqdefn</code>, <code>\eqsubdef</code> and
<code>\eqsubdefn</code> (see <a href="#Equation-references">Equation references</a>). All these commands use
the equation label as the hyperlink label. However, if the equation
@@ -3116,13 +3804,13 @@ label is empty, they make up a (hopefully) unique hyperlink label for
the destination. This label will be used for the link when you refer to
this empty-labeled equation with one of the equation reference macros.
- <p><a name="index-phantomeqlabel-528"></a><a name="index-phantomeqnumber-529"></a>The command <code>\phantomeqlabel</code> is called to generate hyperlink
+ <p><a name="index-phantomeqlabel-608"></a><a name="index-phantomeqnumber-609"></a>The command <code>\phantomeqlabel</code> is called to generate hyperlink
labels for the empty-labeled equations. By default, it produces the
labels in the format `<samp><span class="samp">PHEQ</span><var>number</var></samp>', where <var>number</var> comes
from the count register <code>\phantomeqnumber</code>; this count register is
incremented at every empty-labeled equation definition.
- <p><a name="index-eqref-530"></a><a name="index-eqrefn-531"></a><a name="index-reftie-532"></a><a name="index-group-_0060eq_0027-533"></a><a name="index-linkgroup-_0060eq_0027-534"></a>The commands <code>\eqref</code> and <code>\eqrefn</code> (see <a href="#Equation-references">Equation references</a>) form the `eq' linkgroup. These commands take an optional
+ <p><a name="index-eqref-610"></a><a name="index-eqrefn-611"></a><a name="index-reftie-612"></a><a name="index-group-_0060eq_0027-613"></a><a name="index-linkgroup-_0060eq_0027-614"></a>The commands <code>\eqref</code> and <code>\eqrefn</code> (see <a href="#Equation-references">Equation references</a>) form the `eq' linkgroup. These commands take an optional
argument, which, when present, is tied with <code>\reftie</code> to the
equation reference and becomes part of the link. The equation label is
used for the hyperlink label; if the label is empty, the link is for the
@@ -3137,17 +3825,17 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlin
</div>
-<h4 class="subsection">5.3.7 Index hyperlinks: idx</h4>
+<h4 class="subsection">5.3.8 Index hyperlinks: idx</h4>
-<p><a name="index-idx-_0040r_007b_0028hyperlinks_0029_007d-535"></a><a name="index-idxname-_0040r_007b_0028hyperlinks_0029_007d-536"></a><a name="index-idxmarked-_0040r_007b_0028hyperlinks_0029_007d-537"></a><a name="index-idxsubmarked-_0040r_007b_0028hyperlinks_0029_007d-538"></a><a name="index-index-hyperlink-539"></a><a name="index-hyperlinks_002c-index-540"></a><a name="index-group-_0060idx_0027-541"></a><a name="index-linkgroup-_0060idx_0027-542"></a><a name="index-destgroup-_0060idx_0027-543"></a>All indexing commands (<code>\idx</code>, <code>\idxname</code>, <code>\idxmarked</code>,
+<p><a name="index-idx-_0040r_007b_0028hyperlinks_0029_007d-615"></a><a name="index-idxname-_0040r_007b_0028hyperlinks_0029_007d-616"></a><a name="index-idxmarked-_0040r_007b_0028hyperlinks_0029_007d-617"></a><a name="index-idxsubmarked-_0040r_007b_0028hyperlinks_0029_007d-618"></a><a name="index-index-hyperlink-619"></a><a name="index-hyperlinks_002c-index-620"></a><a name="index-group-_0060idx_0027-621"></a><a name="index-linkgroup-_0060idx_0027-622"></a><a name="index-destgroup-_0060idx_0027-623"></a>All indexing commands (<code>\idx</code>, <code>\idxname</code>, <code>\idxmarked</code>,
<code>\idxsubmarked</code> and their silent equivalents, see <a href="#Indexing-commands">Indexing commands</a>) form the `idx' destgroup. The `idx' linkgroup consists of
the macros which are used to typeset the index when you say
-<a name="index-readindexfile-_0040r_007b_0028hyperlinks_0029_007d-544"></a><code>\readindexfile{</code><var>index-letter</var><code>}</code> (see <a href="#Typesetting-an-index">Typesetting an index</a>).
+<a name="index-readindexfile-_0040r_007b_0028hyperlinks_0029_007d-624"></a><code>\readindexfile{</code><var>index-letter</var><code>}</code> (see <a href="#Typesetting-an-index">Typesetting an index</a>).
- <p><a name="index-makeindex-545"></a>To create the links in index entries, Eplain uses MakeIndex's
+ <p><a name="index-makeindex-625"></a>To create the links in index entries, Eplain uses MakeIndex's
&ldquo;encapsulation&rdquo; feature. When you use an indexing macro to mark an
index term, Eplain writes out a line to the
-<a name="index-g_t_002eidx-_0040r_007bfiles_007d-546"></a><samp><span class="file">.idx</span></samp> file of the following general form:
+<a name="index-g_t_002eidx-_0040r_007bfiles_007d-626"></a><samp><span class="file">.idx</span></samp> file of the following general form:
<pre class="example"> \indexentry{<var>entry</var>|<var>pagemarkup</var>}{<var>pageno</var>}
</pre>
@@ -3159,7 +3847,7 @@ and <var>pageno</var> is the page number on which the term appeared. When
processing the <samp><span class="file">.idx</span></samp> file, MakeIndex makes the page number an
argument to the page markup command (&ldquo;encapsulates&rdquo; the page
number), so the page number in the
-<a name="index-g_t_002eind-_0040r_007bfiles_007d-547"></a><samp><span class="file">.ind</span></samp> file appears as <code>\</code><var>cs</var><code>{</code><var>pageno</var><code>}</code>. Eplain
+<a name="index-g_t_002eind-_0040r_007bfiles_007d-627"></a><samp><span class="file">.ind</span></samp> file appears as <code>\</code><var>cs</var><code>{</code><var>pageno</var><code>}</code>. Eplain
internally replaces the <var>cs</var> command name with its own command,
which, in addition to calling the original <code>\</code><var>cs</var>
encapsulator, turns the page number into a link.
@@ -3183,7 +3871,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Index-hyperlinks">Index hyperlinks</a>
</div>
-<h5 class="subsubsection">5.3.7.1 Exact destinations for index terms</h5>
+<h5 class="subsubsection">5.3.8.1 Exact destinations for index terms</h5>
<p>In this approach, each command that marks an index term defines a unique
destination and passes its label on to the <samp><span class="file">.idx</span></samp> file as part of
@@ -3192,7 +3880,7 @@ writes to the <samp><span class="file">.idx</span></samp> file becomes
<pre class="example"> \indexentry{<var>entry</var>|hlidx{<var>label</var>}{<var>cs</var>}}{<var>pageno}</var>
</pre>
- <p><a name="index-hlidx-548"></a>where <code>\hlidx</code> is the command that is defined by Eplain
+ <p><a name="index-hlidx-628"></a>where <code>\hlidx</code> is the command that is defined by Eplain
to take three arguments: a hyperlink label (<var>label</var>), a name of
page number encapsulator (<var>cs</var>) and a page number (<var>pageno</var>).
In the <samp><span class="file">.ind</span></samp> file that MakeIndex will generate, the page number
@@ -3205,19 +3893,19 @@ will now appear as
<var>label</var> destination.
<p>The hyperlink labels for the index terms are generated by the
-<a name="index-hlidxlabel-549"></a><code>\hlidxlabel</code> command, by default in the format
+<a name="index-hlidxlabel-629"></a><code>\hlidxlabel</code> command, by default in the format
`<samp><span class="samp">IDX</span><var>number</var></samp>', where <var>number</var> is the value of the count
register
-<a name="index-hlidxlabelnumber-550"></a><code>\hlidxlabelnumber</code>. This count register is incremented at each
+<a name="index-hlidxlabelnumber-630"></a><code>\hlidxlabelnumber</code>. This count register is incremented at each
index term.
- <p><a name="index-exact-index-hyperlinks-551"></a><a name="index-index_002c-exact-hyperlinks-552"></a><a name="index-hyperlinks_002c-index_002c-exact-553"></a>The advantage of this approach, as compared to the second approach
+ <p><a name="index-exact-index-hyperlinks-631"></a><a name="index-index_002c-exact-hyperlinks-632"></a><a name="index-hyperlinks_002c-index_002c-exact-633"></a>The advantage of this approach, as compared to the second approach
described below, is that links in the index point to exact locations of
the indexed terms on the page. The disadvantage of this approach is
that MakeIndex will regard <em>all</em> index entries as distinct, because
each one contains a (unique) hyperlink label. This disadvantage can be
partially overcome by the script
-<a name="index-idxuniq-554"></a><a name="index-filtering-index-entries-with-hyperlinks-555"></a><a name="index-hyperlinks_002c-filtering-index-entries-556"></a><samp><span class="file">idxuniq</span></samp> distributed with Eplain in the <samp><span class="file">util</span></samp> directory.
+<a name="index-idxuniq-634"></a><a name="index-filtering-index-entries-with-hyperlinks-635"></a><a name="index-hyperlinks_002c-filtering-index-entries-636"></a><samp><span class="file">idxuniq</span></samp> distributed with Eplain in the <samp><span class="file">util</span></samp> directory.
This script filters out <code>\indexentry</code> lines differing only in the
hyperlink label but identical otherwise. You should process the
<samp><span class="file">.idx</span></samp> with this script before passing it on to MakeIndex. For
@@ -3240,7 +3928,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Index-hyperlinks">Index hyperlinks</a>
</div>
-<h5 class="subsubsection">5.3.7.2 Page destinations for index terms</h5>
+<h5 class="subsubsection">5.3.8.2 Page destinations for index terms</h5>
<p>In the second approach, Eplain does not write out any destination labels
for the index terms. Instead, Eplain writes out a wrapper for page
@@ -3248,7 +3936,7 @@ number encapsulator which can parse the page number and generate a link
pointing to the <em>page</em> on which the term appeared. On top of each
page containing an index term, Eplain defines a destination with label
produced by
-<a name="index-hlidxpagelabel-557"></a><code>\hlidxpagelabel</code>. The <code>\hlidxpagelabel</code> command takes a
+<a name="index-hlidxpagelabel-637"></a><code>\hlidxpagelabel</code>. The <code>\hlidxpagelabel</code> command takes a
single argument (page number <var>number</var>) and by default produces the
label in the format `<samp><span class="samp">IDXPG</span><var>number</var></samp>'.
@@ -3257,7 +3945,7 @@ the <code>.idx</code> file looks like this:
<pre class="example"> \indexentry{<var>entry</var>|hlidxpage{<var>cs</var>}}{<var>pageno}</var>
</pre>
- <p><a name="index-hlidxpage-558"></a>where <code>\hlidxpage</code> is the command that is defined by Eplain
+ <p><a name="index-hlidxpage-638"></a>where <code>\hlidxpage</code> is the command that is defined by Eplain
to take two arguments: a name of page number encapsulator (<var>cs</var>)
and a page number (<var>pageno</var>). In the <samp><span class="file">.ind</span></samp> file that
MakeIndex will generate, the page number will appear as
@@ -3269,7 +3957,7 @@ intact. The drawback is that links in the index do not point to exact
locations of indexed terms on a page, but to the top of a page on
which the term appears.
- <p><a name="index-index_002c-parsing-page-numbers-559"></a><a name="index-page-range_002c-parsing-560"></a><a name="index-page-list_002c-parsing-561"></a><a name="index-parsing-page-numbers-562"></a>Another disadvantage is that this approach depends on the page range and
+ <p><a name="index-index_002c-parsing-page-numbers-639"></a><a name="index-page-range_002c-parsing-640"></a><a name="index-page-list_002c-parsing-641"></a><a name="index-parsing-page-numbers-642"></a>Another disadvantage is that this approach depends on the page range and
page list separators which MakeIndex was configured to output.
<code>\hlidxpage</code> must be able to parse the first page number in a page
range like `<samp><span class="samp">1--4</span></samp>'. In addition, page list parsing is needed
@@ -3302,15 +3990,15 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Index-hyperlinks">Index hyperlinks</a>
</div>
-<h5 class="subsubsection">5.3.7.3 Choosing destination placement</h5>
+<h5 class="subsubsection">5.3.8.3 Choosing destination placement</h5>
-<p><a name="index-index_002c-placement-of-destinations-563"></a><a name="index-index_002c-destination-placement-564"></a><a name="index-index_002c-selecting-destination-placement-565"></a><a name="index-index_002c-choosing-destination-placement-566"></a><a name="index-hyperlinks_002c-index-destination-placement-567"></a>The approach that Eplain should use for the index terms can be
+<p><a name="index-index_002c-placement-of-destinations-643"></a><a name="index-index_002c-destination-placement-644"></a><a name="index-index_002c-selecting-destination-placement-645"></a><a name="index-index_002c-choosing-destination-placement-646"></a><a name="index-hyperlinks_002c-index-destination-placement-647"></a>The approach that Eplain should use for the index terms can be
selected in the
-<a name="index-enablehyperlinks-568"></a><code>\enablehyperlinks</code> command. The optional argument it accepts is
+<a name="index-enablehyperlinks-648"></a><code>\enablehyperlinks</code> command. The optional argument it accepts is
a comma-separated list of options. The
-<a name="index-idxexact-569"></a><code>idxexact</code> option selects the first approach,
-<a name="index-idxpage-570"></a><code>idxpage</code> the second, and
-<a name="index-idxnone-571"></a><code>idxnone</code> disables hyperlink support for the index terms
+<a name="index-idxexact-649"></a><code>idxexact</code> option selects the first approach,
+<a name="index-idxpage-650"></a><code>idxpage</code> the second, and
+<a name="index-idxnone-651"></a><code>idxnone</code> disables hyperlink support for the index terms
altogether, in case you want to stop Eplain from writing its link
wrappers into the <samp><span class="file">.idx</span></samp> file. The default is <code>idxpage</code>.
@@ -3329,7 +4017,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Index-hyperlinks">Index hyperlinks</a>
</div>
-<h5 class="subsubsection">5.3.7.4 Index page list and page range parsers</h5>
+<h5 class="subsubsection">5.3.8.4 Index page list and page range parsers</h5>
<p>The macros that Eplain uses to parse page lists and page ranges,
<code>\idxparselist</code> and <code>\idxparserange</code>, can sometimes be useful
@@ -3344,13 +4032,13 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Index-hyperlinks">Index hyperlinks</a>
</div>
-<h5 class="subsubsection">5.3.7.5 Hyperlinks in see and see also entries</h5>
+<h5 class="subsubsection">5.3.8.5 Hyperlinks in see and see also entries</h5>
-<p><a name="index-hyperlinks_002c-see-and-see-also-index-entries-572"></a><a name="index-index_002c-hyperlinks-in-see-and-see-also-entries-573"></a><a name="index-see-also-index-entries-and-hyperlinks-574"></a><a name="index-see_002c-and-index-entries_002c-hyperlinks-575"></a>There is no automatic support for hyperlinks with &ldquo;see&rdquo; and &ldquo;see
+<p><a name="index-hyperlinks_002c-see-and-see-also-index-entries-652"></a><a name="index-index_002c-hyperlinks-in-see-and-see-also-entries-653"></a><a name="index-see-also-index-entries-and-hyperlinks-654"></a><a name="index-see_002c-and-index-entries_002c-hyperlinks-655"></a>There is no automatic support for hyperlinks with &ldquo;see&rdquo; and &ldquo;see
also&rdquo; index entries, as there is not enough information to trace the
parameters of
-<a name="index-indexsee-576"></a><code>\indexsee</code> and
-<a name="index-indexseealso-577"></a><code>\indexseealso</code> to corresponding index entries. But if desired,
+<a name="index-indexsee-656"></a><code>\indexsee</code> and
+<a name="index-indexseealso-657"></a><code>\indexseealso</code> to corresponding index entries. But if desired,
this can be implemented with <code>\hldest</code> and <code>\hlstart</code>
(see <a href="#Explicit-hyperlinks">Explicit hyperlinks</a>); for example:
@@ -3369,24 +4057,33 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlin
</div>
-<h4 class="subsection">5.3.8 Footnote hyperlinks: foot, footback</h4>
+<h4 class="subsection">5.3.9 Footnote hyperlinks: foot, footback</h4>
-<p><a name="index-footnotes_002c-hyperlinks-578"></a><a name="index-hyperlinks_002c-footnotes-579"></a><a name="index-group-_0060foot_0027-580"></a><a name="index-group-_0060footback_0027-581"></a><a name="index-linkgroup-_0060foot_0027-582"></a><a name="index-linkgroup-_0060footback_0027-583"></a><a name="index-destgroup-_0060foot_0027-584"></a><a name="index-destgroup-_0060footback_0027-585"></a>The `foot' link and destination groups include the
-<a name="index-numberedfootnote-_0040r_007b_0028hyperlinks_0029_007d-586"></a><code>\numberedfootnote</code> and
-<a name="index-footnote-_0040r_007b_0028hyperlinks_0029_007d-587"></a><code>\footnote</code> macros (see <a href="#Footnotes">Footnotes</a>). The `footback' groups
+<p><a name="index-footnotes_002c-hyperlinks-658"></a><a name="index-hyperlinks_002c-footnotes-659"></a><a name="index-group-_0060foot_0027-660"></a><a name="index-group-_0060footback_0027-661"></a><a name="index-linkgroup-_0060foot_0027-662"></a><a name="index-linkgroup-_0060footback_0027-663"></a><a name="index-destgroup-_0060foot_0027-664"></a><a name="index-destgroup-_0060footback_0027-665"></a>The `foot' link and destination groups include the
+<a name="index-numberedfootnote-_0040r_007b_0028hyperlinks_0029_007d-666"></a><code>\numberedfootnote</code> and
+<a name="index-footnote-_0040r_007b_0028hyperlinks_0029_007d-667"></a><code>\footnote</code> macros (see <a href="#Footnotes">Footnotes</a>). The `footback' groups
include the same macros, but control parameters for links and
destinations created inside the footnote to point back to the footnote
mark within the text body.
<p>The macros use hyperlink labels generated by
-<a name="index-hlfootlabel-588"></a><code>\hlfootlabel</code> and
-<a name="index-hlfootbacklabel-589"></a><code>\hlfootbacklabel</code>. The default formats for the labels are
+<a name="index-hlfootlabel-668"></a><code>\hlfootlabel</code> and
+<a name="index-hlfootbacklabel-669"></a><code>\hlfootbacklabel</code>. The default formats for the labels are
`<samp><span class="samp">FOOT</span><var>number</var></samp>' and `<samp><span class="samp">FOOTB</span><var>number</var></samp>', respectively,
where <var>number</var> is the value of the count register
-<a name="index-hlfootlabelnumber-590"></a><code>\hlfootlabelnumber</code>. This register is incremented at every
+<a name="index-hlfootlabelnumber-670"></a><code>\hlfootlabelnumber</code>. This register is incremented at every
footnote.
-<div class="node">
+ <p>Generally, footnote hyperlinks are not of much use, because the
+footnotes are usually placed on the same page as the footnote mark.
+Therefore, footnote hyperlinks are disabled by default. Here is how you
+can turn them on selectively, without affecting the other kinds of
+hyperlinks (see <a href="#Turning-hyperlinks-on_002foff-for-a-group">Turning hyperlinks on/off for a group</a>):
+
+<pre class="example"> \hldeston[foot,footback]
+ \hlon[foot,footback]
+</pre>
+ <div class="node">
<p><hr>
<a name="Contents-hyperlinks"></a>
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Footnote-hyperlinks">Footnote hyperlinks</a>,
@@ -3394,9 +4091,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlin
</div>
-<h4 class="subsection">5.3.9 Contents hyperlinks</h4>
+<h4 class="subsection">5.3.10 Contents hyperlinks</h4>
-<p><a name="index-table-of-contents_002c-hyperlinks-591"></a><a name="index-contents_002c-hyperlinks-592"></a><a name="index-hyperlinks_002c-table-of-contents-593"></a>There is currently no special support for hyperlinks in the table of
+<p><a name="index-table-of-contents_002c-hyperlinks-671"></a><a name="index-contents_002c-hyperlinks-672"></a><a name="index-hyperlinks_002c-table-of-contents-673"></a>There is currently no special support for hyperlinks in the table of
contents (see <a href="#Contents">Contents</a>), but implementing them with the
<code>\hldest</code> and <code>\hlstart ... \hlend</code> commands
(see <a href="#Explicit-hyperlinks">Explicit hyperlinks</a>) should be possible.
@@ -3421,34 +4118,35 @@ Reference Manual Version&nbsp;<!-- /@w -->1.3</cite>, March&nbsp;<!-- /@w -->11,
<ul class="menu">
<li><a accesskey="1" href="#Options-supported-by-all-drivers">Options supported by all drivers</a>
-<li><a accesskey="2" href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a>
-<li><a accesskey="3" href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a>
+<li><a accesskey="2" href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a>
+<li><a accesskey="3" href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a>
+<li><a accesskey="4" href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a>
</ul>
<div class="node">
<p><hr>
<a name="Options-supported-by-all-drivers"></a>
-Next:&nbsp;<a rel="next" accesskey="n" href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a>,
+Next:&nbsp;<a rel="next" accesskey="n" href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlink-drivers">Hyperlink drivers</a>
</div>
<h4 class="subsection">5.4.1 Options supported by all drivers</h4>
-<p><a name="index-hyperlink-options_002c-common-594"></a>This subsection describes the destination and link options which are
+<p><a name="index-hyperlink-options_002c-common-674"></a>This subsection describes the destination and link options which are
supported by all hyperlink drivers.
<h5 class="subsubheading">Destination options supported by all drivers</h5>
-<p><a name="index-destination-options_002c-common-595"></a><a name="index-options_002c-destination_002c-common-596"></a>
+<p><a name="index-destination-options_002c-common-675"></a><a name="index-options_002c-destination_002c-common-676"></a>
<dl>
-<dt><code>raise</code><dd><a name="index-raise-_0040r_007b_0028hyperlink-option_0029_007d-597"></a><a name="index-raising-hyperlink-destinations-598"></a><a name="index-hyperlink-destination_002c-raising-599"></a><a name="index-destinations_002c-raising-600"></a>Specifies how much to raise destinations above the baseline. When set
+<dt><code>raise</code><dd><a name="index-raise-_0040r_007b_0028hyperlink-option_0029_007d-677"></a><a name="index-raising-hyperlink-destinations-678"></a><a name="index-hyperlink-destination_002c-raising-679"></a><a name="index-destinations_002c-raising-680"></a>Specifies how much to raise destinations above the baseline. When set
to zero or empty, destinations are placed at the baseline.
<p>It is usually convenient to set this option to some variable parameter,
so that the height to which destinations are raised is automatically
adjusted according to the current context. For example, setting it to
-<a name="index-normalbaselineskip-601"></a><code>\normalbaselineskip</code> (or some fraction of it, like
+<a name="index-normalbaselineskip-681"></a><code>\normalbaselineskip</code> (or some fraction of it, like
<code>1.7\normalbaselineskip</code>) makes the setting appropriate for
different point sizes, in case your document uses more than one.
@@ -3456,16 +4154,16 @@ different point sizes, in case your document uses more than one.
destgroups do not define this option, so they fall back on the default,
except for the `eq' destgroup, for which this option is set to
<code>1.7\normalbaselineskip</code>,
-<a name="index-mathematics-displays_002c-hyperlinks-602"></a><a name="index-displayed-math-and-hyperlinks-603"></a><a name="index-large-operators-and-hyperlinks-604"></a><a name="index-hyperlinks_002c-large-operators-605"></a><a name="index-destinations_002c-large-operators-606"></a>to accommodate the usual cases of large operators in displayed math.
+<a name="index-mathematics-displays_002c-hyperlinks-682"></a><a name="index-displayed-math-and-hyperlinks-683"></a><a name="index-large-operators-and-hyperlinks-684"></a><a name="index-hyperlinks_002c-large-operators-685"></a><a name="index-destinations_002c-large-operators-686"></a>to accommodate the usual cases of large operators in displayed math.
<p>Example: <code>\hldestopts[eq]{raise=2.5\normalbaselineskip}</code>
</dl>
<h5 class="subsubheading">Link options supported by all drivers</h5>
-<p><a name="index-link-options_002c-common-607"></a><a name="index-options_002c-link_002c-common-608"></a>
+<p><a name="index-link-options_002c-common-687"></a><a name="index-options_002c-link_002c-common-688"></a>
<dl>
-<dt><code>colormodel</code><dt><code>color</code><dd><a name="index-colormodel-_0040r_007b_0028hyperlink-option_0029_007d-609"></a><a name="index-color-_0040r_007b_0028hyperlink-option_0029_007d-610"></a><a name="index-color_002c-hyperlinks-611"></a>These two options define the color to be used for rendering the link
+<dt><code>colormodel</code><dt><code>color</code><dd><a name="index-colormodel-_0040r_007b_0028hyperlink-option_0029_007d-689"></a><a name="index-color-_0040r_007b_0028hyperlink-option_0029_007d-690"></a><a name="index-color_002c-hyperlinks-691"></a><a name="index-colored-links-692"></a><a name="index-hyperlink-color-693"></a>These two options define the color to be used for rendering the link
text. The colors are used only when a <code>\color</code> command is defined,
e.g., by loading the LaTeX `color' package (see <a href="#Packages-known-to-work">Packages known to work</a>). The <code>\color</code> command is called as
<code>\color[</code><var>colormodel</var><code>]{</code><var>color</var><code>}</code>, where <var>colormodel</var>
@@ -3485,6 +4183,7 @@ custom color with <code>\definecolor</code> and using the new color name with
an empty <var>colormodel</var> (see examples below).
<p>Examples:
+
<pre class="example"> \hlopts{colormodel=,color=blue}% predefined color
\definecolor{mycolor}{rgb}{.3,.8,.95}
\hlopts{colormodel=,color=mycolor}% custom color
@@ -3494,16 +4193,246 @@ an empty <var>colormodel</var> (see examples below).
<div class="node">
<p><hr>
+<a name="Hyperlink-driver-hypertex"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Options-supported-by-all-drivers">Options supported by all drivers</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlink-drivers">Hyperlink drivers</a>
+
+</div>
+
+<h4 class="subsection">5.4.2 Hyperlink driver <code>hypertex</code></h4>
+
+<p><a name="index-hypertex-_0040r_007b_0028hyperlink-driver_0029_007d-694"></a><a name="index-g_t_0040code_007bhypertex_007d_002c-hyperlink-driver-695"></a><a name="index-driver-_0040code_007bhypertex_007d-696"></a><a name="index-hyperlink-driver-_0040code_007bhypertex_007d-697"></a>HyperTeX is a standard for inclusion of hyperlink information in
+TeX (and LaTeX) documents (see <a href="http://arxiv.org/hypertex">http://arxiv.org/hypertex</a>).
+This standard defines a set of hyperlink tags implemented as
+<code>\special</code> commands written into the <acronym>DVI</acronym> file. The
+major advantage of such standard is that a single <samp><span class="file">.dvi</span></samp> file
+containing HyperTeX commands can be viewed by any
+HyperTeX-enabled viewer (e.g., any more or less modern version of
+<a name="index-xdvi-698"></a><code>xdvi</code>) or converted to other file formats (e.g., <acronym>PDF</acronym>)
+by any HyperTeX-enabled <acronym>DVI</acronym> converter (e.g.,
+<a name="index-dvipdfm-699"></a><code>dvipdfmx</code> or
+<a name="index-dvips-700"></a><code>dvips</code> with
+<a name="index-g_t_0040r_007bGhostscript_007d-701"></a>Ghostscript's
+<a name="index-ps2pdf-702"></a><code>ps2pdf</code> script).
+
+ <p>The downside to the standard is that it is by design &ldquo;the common
+factor&rdquo; of other formats supporting hyperlinks, so many features of a
+particular file format cannot be supported by HyperTeX. Therefore,
+if you need to use special features of a particular format, HyperTeX
+is not a good choice. For the <acronym>PDF</acronym> file format, Eplain
+provides the <code>pdftex</code> and <code>dvipdfm</code> drivers which provide
+fine control over the <acronym>PDF</acronym> options (see <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a>).
+
+ <p>For more information on programs which support the HyperTeX standard,
+please see
+
+<pre class="display"> <a href="http://arxiv.org/hypertex">http://arxiv.org/hypertex</a>
+ <a href="http://www.tug.org/tex-archive/support/hypertex/hypertex">http://www.tug.org/tex-archive/support/hypertex/hypertex</a>
+</pre>
+ <p class="noindent">For convenience, we list a few HyperTeX-enabled converters:
+
+
+<a name="index-dvips-703"></a>
+<dl><dt><code>dvips</code><dd>Note that you need to pass the <samp><span class="option">-z</span></samp> option to <code>dvips</code> to
+tell it to preserve the information about the hyperlinks. To generate a
+<samp><span class="file">.pdf</span></samp> file with hyperlinks, you can use the
+<a name="index-ps2pdf-704"></a><samp><span class="file">ps2pdf</span></samp> script of
+<a name="index-g_t_0040r_007bGhostscript_007d-705"></a>Ghostscript. For example, if <samp><span class="file">foo.tex</span></samp> is a TeX file using
+HyperTeX commands, then
+
+ <pre class="example"> prompt$ tex foo.tex
+ prompt$ dvips -z foo.dvi -o
+ prompt$ ps2pdf foo.ps
+ </pre>
+ <p class="noindent">will produce <samp><span class="file">foo.pdf</span></samp> with hyperlinks.
+
+ <br><dt><code>dvipdfm</code><dt><code>dvipdfmx</code><dd><a name="index-dvipdfm-706"></a>No special command line arguments are required, these programs
+automatically detect the HyperTeX commands.
+
+ </dl>
+
+ <p>One more note is in place: support for the HyperTeX commands varies
+from one previewer/converter to another, so you might need to experiment
+to see if what you need is supported by the program(s) you intend to
+use. For example, dvips(k) as of version&nbsp;<!-- /@w -->5.92b converts all
+internal hyperlinks into page links pointing to a page containing the
+destination, so that &ldquo;exact&rdquo; linking to destinations is not possible
+(this was confirmed to be a bug and most probably has already been fixed
+in later versions of dvips(k)); dvipdfm as of version&nbsp;<!-- /@w -->0.13.2c and
+dvipdfmx as of version&nbsp;<!-- /@w -->20040411 do not correctly parse links to
+external local files, and produce a <acronym>URL</acronym> link instead of a
+file link.
+
+<ul class="menu">
+<li><a accesskey="1" href="#Destination-types-for-hypertex">Destination types for hypertex</a>
+<li><a accesskey="2" href="#Destination-options-for-hypertex">Destination options for hypertex</a>
+<li><a accesskey="3" href="#Link-types-for-hypertex">Link types for hypertex</a>
+<li><a accesskey="4" href="#Link-options-for-hypertex">Link options for hypertex</a>
+</ul>
+
+<div class="node">
+<p><hr>
+<a name="Destination-types-for-hypertex"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Destination-options-for-hypertex">Destination options for hypertex</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a>
+
+</div>
+
+<h5 class="subsubsection">5.4.2.1 Destination types for <code>hypertex</code></h5>
+
+<p><a name="index-destination-types_002c-_0040code_007bhypertex_007d-707"></a><a name="index-types_002c-destination_002c-_0040code_007bhypertex_007d-708"></a><a name="index-g_t_0040code_007bhypertex_007d_002c-destination-types-709"></a>
+ <dl>
+<dt><code>xyz</code><dd><a name="index-xyz-_0040r_007b_0028destination-type_0029_007d-710"></a>&ldquo;Current position&rdquo;. This is the default type.
+
+ <p>Example: <code>\hldest{xyz}{}{dest123}</code>
+
+ <br><dt><code>raw</code><dd><a name="index-raw-_0040r_007b_0028destination-type_0029_007d-711"></a>The destination specification (in the form of a HyperTeX
+<code>\special</code>) is taken from the command sequence <code>\</code><var>cs</var>,
+where <var>cs</var> is the value of the
+<a name="index-cmd-_0040r_007b_0028destination-option_0029_007d-712"></a><code>cmd</code> option. In the definition of <code>\</code><var>cs</var>, use
+<a name="index-g_t_0040_0040hllabel-713"></a><code>\@hllabel</code> to refer to the hyperlink label. This option is
+intended to be used with destgroups (see <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a>), as it does not make sense in a direct call to
+<a name="index-hldest-714"></a><code>\hldest</code>&mdash;you can just call the raw command.
+
+ <p>Example:
+
+ <pre class="example"> \makeatletter
+ \def\mydest{\special{html:&lt;a name="\@hllabel"&gt;}%
+ \special{html:&lt;/a&gt;}}
+ \resetatcatcode
+ \indent\hldest{raw}{cmd=mydest}{SpecialDest}
+ Special destination.
+ </pre>
+ </dl>
+
+<div class="node">
+<p><hr>
+<a name="Destination-options-for-hypertex"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Link-types-for-hypertex">Link types for hypertex</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Destination-types-for-hypertex">Destination types for hypertex</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a>
+
+</div>
+
+<h5 class="subsubsection">5.4.2.2 Destination options for <code>hypertex</code></h5>
+
+<p><a name="index-destination-options_002c-_0040code_007bhypertex_007d-715"></a><a name="index-options_002c-destination_002c-_0040code_007bhypertex_007d-716"></a><a name="index-g_t_0040code_007bhypertex_007d_002c-destination-options-717"></a>
+ <dl>
+<dt><code>cmd</code><dd><a name="index-cmd-_0040r_007b_0028destination-option_0029_007d-718"></a>Name of the macro (without the leading `<samp><span class="samp">\</span></samp>') containing a
+HyperTeX <code>\special</code> for the <code>raw</code> destination.
+
+ <p>See <a href="#Destination-types-for-hypertex">Destination types for hypertex</a>, the description of the <code>raw</code>
+destination, for an example.
+</dl>
+
+<div class="node">
+<p><hr>
+<a name="Link-types-for-hypertex"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Link-options-for-hypertex">Link options for hypertex</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Destination-options-for-hypertex">Destination options for hypertex</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a>
+
+</div>
+
+<h5 class="subsubsection">5.4.2.3 Link types for <code>hypertex</code></h5>
+
+<p><a name="index-link-types_002c-_0040code_007bhypertex_007d-719"></a><a name="index-types_002c-link_002c-_0040code_007bhypertex_007d-720"></a><a name="index-g_t_0040code_007bhypertex_007d_002c-link-types-721"></a>
+ <dl>
+<dt><code>name</code><dd><a name="index-name-_0040r_007b_0028hyperlink-type_0029_007d-722"></a><a name="index-named-destination-723"></a><a name="index-destinations_002c-named-724"></a><a name="index-hyperlink-destination_002c-named-725"></a>Go to a &ldquo;named destination&rdquo;. The label is the destination name. All
+destinations in HyperTeX are named destinations. This is the default
+type.
+
+ <p>Example: <code>\hlstart{name}{}{dest123}Link to dest123\hlend</code>
+
+ <br><dt><code>url</code><dd><a name="index-url-_0040r_007b_0028hyperlink-type_0029_007d-726"></a><a name="index-g_t_0040acronym_007bURL_007d-hyperlink-727"></a><a name="index-destinations_002c-_0040acronym_007bURL_007d-728"></a><a name="index-hyperlinks_002c-_0040acronym_007bURL_007d-729"></a>Go to a <acronym>URL</acronym>. The label is the <acronym>URL</acronym>.
+
+ <p>Example:
+
+ <pre class="example"> <code>\hlstart{url}{}{http://tug.org/eplain/}Eplain home\hlend</code>
+ </pre>
+ <br><dt><code>filename</code><dd><a name="index-filename-_0040r_007b_0028hyperlink-type_0029_007d-730"></a><a name="index-file_002c-hyperlink-to-731"></a><a name="index-destinations_002c-in-another-file-732"></a><a name="index-hyperlinks_002c-to-another-file-733"></a>Go to a named destination in another file. The label is the
+destination name. The file name is specified by the
+<a name="index-file-_0040r_007b_0028hyperlink-option_0029_007d-734"></a><code>file</code> option. The file name extension can be specified separately
+by the
+<a name="index-ext-_0040r_007b_0028hyperlink-option_0029_007d-735"></a><code>ext</code> option. The idea is to set the <code>ext</code> option globally at
+the beginning of the document to avoid hard-coding the extension
+together with the file name within each link&mdash;HyperTeX is not
+restricted to any single output format, it can be <acronym>DVI</acronym>,
+<acronym>PDF</acronym>, possibly other formats.
+
+ <p>Example:
+
+ <pre class="example"> \hlopts{ext=.pdf}
+ \hlstart{filename}{file=book}{dest123}
+ Link to dest123 in file `book.pdf'\hlend
+ </pre>
+ <br><dt><code>raw</code><dd><a name="index-raw-_0040r_007b_0028hyperlink-type_0029_007d-736"></a>The link specification (in the form of a HyperTeX <code>\special</code>) is
+taken from the command sequence <code>\</code><var>cs</var>, where <var>cs</var> is the
+value of the
+<a name="index-cmd-_0040r_007b_0028hyperlink-option_0029_007d-737"></a><code>cmd</code> option. In the definition of <code>\</code><var>cs</var>, use
+<a name="index-g_t_0040_0040hllabel-738"></a><code>\@hllabel</code> to refer to the hyperlink label. Use the predefined
+command
+<a name="index-hlhash-739"></a><code>\hlhash</code> to insert the <code>#</code> characters. This option is
+intended to be used with linkgroups (see <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a>), as it does not make sense in a direct call to
+<a name="index-hlstart-740"></a><code>\hlstart</code>&mdash;you can just call the raw command.
+
+ <p>Example:
+
+ <pre class="example"> \makeatletter
+ \def\mylink{\special{html:&lt;a href="\hlhash\@hllabel"&gt;}}
+ \resetatcatcode
+ \hlstart{raw}{cmd=mylink}{SpecialDest}
+ Link to the special destination.\hlend
+ </pre>
+ </dl>
+
+<div class="node">
+<p><hr>
+<a name="Link-options-for-hypertex"></a>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Link-types-for-hypertex">Link types for hypertex</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a>
+
+</div>
+
+<h5 class="subsubsection">5.4.2.4 Link options for <code>hypertex</code></h5>
+
+<p><a name="index-link-options_002c-_0040code_007bhypertex_007d-741"></a><a name="index-options_002c-link_002c-_0040code_007bhypertex_007d-742"></a><a name="index-g_t_0040code_007bhypertex_007d_002c-link-options-743"></a>
+ <dl>
+<dt><code>cmd</code><dd><a name="index-cmd-_0040r_007b_0028hyperlink-option_0029_007d-744"></a>Name of the macro (without the leading `<samp><span class="samp">\</span></samp>') containing a
+HyperTeX <code>\special</code> for the <code>raw</code> link.
+
+ <p>See <a href="#Link-types-for-hypertex">Link types for hypertex</a>, the description of the <code>raw</code> link,
+for an example.
+
+ <br><dt><code>file</code><dd><a name="index-file-_0040r_007b_0028hyperlink-option_0029_007d-745"></a>File name for the <code>filename</code> link type. See also the <code>ext</code>
+option.
+
+ <p>See <a href="#Link-types-for-hypertex">Link types for hypertex</a>, the description of the <code>filename</code>
+link, for an example.
+
+ <br><dt><code>ext</code><dd><a name="index-ext-_0040r_007b_0028hyperlink-option_0029_007d-746"></a>File name extension for the <code>filename</code> link type. The idea is to
+set the <code>ext</code> option globally at the beginning of the document to
+avoid hard-coding the extension together with the file name within each
+link&mdash;HyperTeX is not restricted to any single output format, it can
+be <acronym>DVI</acronym>, <acronym>PDF</acronym>, possibly other formats.
+
+ <p>See <a href="#Link-types-for-hypertex">Link types for hypertex</a>, the description of the <code>filename</code>
+link, for an example.
+</dl>
+
+<div class="node">
+<p><hr>
<a name="Hyperlink-drivers-pdftex-and-dvipdfm"></a>
Next:&nbsp;<a rel="next" accesskey="n" href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#Options-supported-by-all-drivers">Options supported by all drivers</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlink-drivers">Hyperlink drivers</a>
</div>
-<h4 class="subsection">5.4.2 Hyperlink drivers <code>pdftex</code> and <code>dvipdfm</code></h4>
+<h4 class="subsection">5.4.3 Hyperlink drivers <code>pdftex</code> and <code>dvipdfm</code></h4>
-<p><a name="index-g_t_0040code_007bpdftex_007d_002c-hyperlink-driver-612"></a><a name="index-g_t_0040code_007bdvipdfm_007d_002c-hyperlink-driver-613"></a><a name="index-driver-_0040code_007bpdftex_007d-614"></a><a name="index-driver-_0040code_007bdvipdfm_007d-615"></a><a name="index-hyperlink-driver-_0040code_007bpdftex_007d-616"></a><a name="index-hyperlink-driver-_0040code_007bdvipdfm_007d-617"></a>This subsection describes link and destination types and options
+<p><a name="index-pdftex-_0040r_007b_0028hyperlink-driver_0029_007d-747"></a><a name="index-dvipdfm-_0040r_007b_0028hyperlink-driver_0029_007d-748"></a><a name="index-g_t_0040code_007bpdftex_007d_002c-hyperlink-driver-749"></a><a name="index-g_t_0040code_007bdvipdfm_007d_002c-hyperlink-driver-750"></a><a name="index-driver-_0040code_007bpdftex_007d-751"></a><a name="index-driver-_0040code_007bdvipdfm_007d-752"></a><a name="index-hyperlink-driver-_0040code_007bpdftex_007d-753"></a><a name="index-hyperlink-driver-_0040code_007bdvipdfm_007d-754"></a>This subsection describes link and destination types and options
supported by the <code>pdftex</code> and <code>dvipdfm</code> drivers. Many of the
hyperlink types and options are common to both drivers, so we describe
them together.
@@ -3523,110 +4452,112 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlink-drivers-pdftex-and-dvipdfm">
</div>
-<h5 class="subsubsection">5.4.2.1 Destination types for <code>pdftex</code> and <code>dvipdfm</code></h5>
+<h5 class="subsubsection">5.4.3.1 Destination types for <code>pdftex</code> and <code>dvipdfm</code></h5>
-<p><a name="index-destination-types_002c-_0040code_007bpdftex_007d-618"></a><a name="index-destination-types_002c-_0040code_007bdvipdfm_007d-619"></a><a name="index-types_002c-destination_002c-_0040code_007bpdftex_007d-620"></a><a name="index-types_002c-destination_002c-_0040code_007bdvipdfm_007d-621"></a><a name="index-g_t_0040code_007bpdftex_007d_002c-destination-types-622"></a><a name="index-g_t_0040code_007bdvipdfm_007d_002c-destination-types-623"></a>
+<p><a name="index-destination-types_002c-_0040code_007bpdftex_007d-755"></a><a name="index-destination-types_002c-_0040code_007bdvipdfm_007d-756"></a><a name="index-types_002c-destination_002c-_0040code_007bpdftex_007d-757"></a><a name="index-types_002c-destination_002c-_0040code_007bdvipdfm_007d-758"></a><a name="index-g_t_0040code_007bpdftex_007d_002c-destination-types-759"></a><a name="index-g_t_0040code_007bdvipdfm_007d_002c-destination-types-760"></a>
<dl>
-<dt><code>xyz</code><dd><a name="index-xyz-_0040r_007b_0028destination-type_0029_007d-624"></a>&ldquo;Current position&rdquo;. The option
-<a name="index-zoom-_0040r_007b_0028destination-option_0029_007d-625"></a><code>zoom</code> specifies magnification to use (zero or empty means leave
+<dt><code>xyz</code><dd><a name="index-xyz-_0040r_007b_0028destination-type_0029_007d-761"></a>&ldquo;Current position&rdquo;. The option
+<a name="index-zoom-_0040r_007b_0028destination-option_0029_007d-762"></a><code>zoom</code> specifies magnification to use (zero or empty means leave
magnification unchanged, which is the default). This is the default
type.
<p>For <code>dvipdfm</code>: the options
-<a name="index-left-_0040r_007b_0028destination-option_0029_007d-626"></a><code>left</code> and
-<a name="index-top-_0040r_007b_0028destination-option_0029_007d-627"></a><code>top</code> specify position coordinates to use (empty options mean
+<a name="index-left-_0040r_007b_0028destination-option_0029_007d-763"></a><code>left</code> and
+<a name="index-top-_0040r_007b_0028destination-option_0029_007d-764"></a><code>top</code> specify position coordinates to use (empty options mean
current position coordinate, which is the default).
<p>Example: <code>\hldest{xyz}{zoom=2000}{dest123}</code>
- <br><dt><code>fit</code><dd><a name="index-fit-_0040r_007b_0028destination-type_0029_007d-628"></a>Fit the page to the window.
+ <br><dt><code>fit</code><dd><a name="index-fit-_0040r_007b_0028destination-type_0029_007d-765"></a>Fit the page to the window.
<p>Example: <code>\hldest{fit}{}{dest123}</code>
- <br><dt><code>fith</code><dd><a name="index-fith-_0040r_007b_0028destination-type_0029_007d-629"></a>Fit the width of the page to the window.
+ <br><dt><code>fith</code><dd><a name="index-fith-_0040r_007b_0028destination-type_0029_007d-766"></a>Fit the width of the page to the window.
<p>For <code>dvipdfm</code>: the
-<a name="index-top-_0040r_007b_0028destination-option_0029_007d-630"></a><code>top</code> option specifies vertical position (default is empty, meaning
+<a name="index-top-_0040r_007b_0028destination-option_0029_007d-767"></a><code>top</code> option specifies vertical position (default is empty, meaning
current position).
<p>Example: <code>\hldest{fith}{}{dest123}</code>
- <br><dt><code>fitv</code><dd><a name="index-fitv-_0040r_007b_0028destination-type_0029_007d-631"></a>Fit the height of the page to the window.
+ <br><dt><code>fitv</code><dd><a name="index-fitv-_0040r_007b_0028destination-type_0029_007d-768"></a>Fit the height of the page to the window.
<p>For <code>dvipdfm</code>: The option
-<a name="index-left-_0040r_007b_0028destination-option_0029_007d-632"></a><code>left</code> specifies horizontal position (default is empty, meaning
+<a name="index-left-_0040r_007b_0028destination-option_0029_007d-769"></a><code>left</code> specifies horizontal position (default is empty, meaning
current position).
<p>Example: <code>\hldest{fitv}{}{dest123}</code>
- <br><dt><code>fitb</code><dd><a name="index-fitb-_0040r_007b_0028destination-type_0029_007d-633"></a>Fit the page's bounding box to the window.
+ <br><dt><code>fitb</code><dd><a name="index-fitb-_0040r_007b_0028destination-type_0029_007d-770"></a>Fit the page's bounding box to the window.
<p>Example: <code>\hldest{fitb}{}{dest123}</code>
- <br><dt><code>fitbh</code><dd><a name="index-fitbh-_0040r_007b_0028destination-type_0029_007d-634"></a>Fit the width of the page's bounding box to the window.
+ <br><dt><code>fitbh</code><dd><a name="index-fitbh-_0040r_007b_0028destination-type_0029_007d-771"></a>Fit the width of the page's bounding box to the window.
<p>For <code>dvipdfm</code>: the option
-<a name="index-top-_0040r_007b_0028destination-option_0029_007d-635"></a><code>top</code> specifies vertical position (default is empty, meaning
+<a name="index-top-_0040r_007b_0028destination-option_0029_007d-772"></a><code>top</code> specifies vertical position (default is empty, meaning
current position).
<p>Example: <code>\hldest{fitbh}{}{dest123}</code>
- <br><dt><code>fitbv</code><dd><a name="index-fitbv-_0040r_007b_0028destination-type_0029_007d-636"></a>Fit the height of the page's bounding box to the window.
+ <br><dt><code>fitbv</code><dd><a name="index-fitbv-_0040r_007b_0028destination-type_0029_007d-773"></a>Fit the height of the page's bounding box to the window.
<p>For <code>dvipdfm</code>: the option
-<a name="index-left-_0040r_007b_0028destination-option_0029_007d-637"></a><code>left</code> specifies horizontal position (default is empty, meaning
+<a name="index-left-_0040r_007b_0028destination-option_0029_007d-774"></a><code>left</code> specifies horizontal position (default is empty, meaning
current position).
<p>Example: <code>\hldest{fitbv}{}{dest123}</code>
- <br><dt><code>fitr</code><dd><a name="index-fitr-_0040r_007b_0028destination-type_0029_007d-638"></a>For <code>pdftex</code>: fit the rectangle specified by the options
-<a name="index-width-_0040r_007b_0028destination-option_0029_007d-639"></a><code>width</code>,
-<a name="index-height-_0040r_007b_0028destination-option_0029_007d-640"></a><code>height</code> and
-<a name="index-depth-_0040r_007b_0028destination-option_0029_007d-641"></a><code>depth</code> (as a TeX rule specification) in the window. For
+ <br><dt><code>fitr</code><dd><a name="index-fitr-_0040r_007b_0028destination-type_0029_007d-775"></a>For <code>pdftex</code>: fit the rectangle specified by the options
+<a name="index-width-_0040r_007b_0028destination-option_0029_007d-776"></a><code>width</code>,
+<a name="index-height-_0040r_007b_0028destination-option_0029_007d-777"></a><code>height</code> and
+<a name="index-depth-_0040r_007b_0028destination-option_0029_007d-778"></a><code>depth</code> (as a TeX rule specification) in the window. For
dimensions set to empty, the corresponding value of the parent box is
used (these are the defaults).
<p>For <code>dvipdfm</code>: fit the rectangle specified by the options
-<a name="index-left-_0040r_007b_0028destination-option_0029_007d-642"></a><code>left</code>,
-<a name="index-bottom-_0040r_007b_0028destination-option_0029_007d-643"></a><code>bottom</code>,
-<a name="index-right-_0040r_007b_0028destination-option_0029_007d-644"></a><code>right</code> and
-<a name="index-top-_0040r_007b_0028destination-option_0029_007d-645"></a><code>top</code> (in
-<a name="index-PostScript-point-646"></a>PostScript points, 72&nbsp;<!-- /@w -->points per inch) in the window. For
+<a name="index-left-_0040r_007b_0028destination-option_0029_007d-779"></a><code>left</code>,
+<a name="index-bottom-_0040r_007b_0028destination-option_0029_007d-780"></a><code>bottom</code>,
+<a name="index-right-_0040r_007b_0028destination-option_0029_007d-781"></a><code>right</code> and
+<a name="index-top-_0040r_007b_0028destination-option_0029_007d-782"></a><code>top</code> (in
+<a name="index-PostScript-point-783"></a>PostScript points, 72&nbsp;<!-- /@w -->points per inch) in the window. For
dimensions set to empty, current position coordinate is substituted
(these are the defaults).
<p>Example for <code>pdftex</code>:
- <pre class="example"> \hldest{fitr}{width=\hsize,height=.5\vsize,depth=0pt}{dest123}
+ <pre class="example"> \hldest{fitr}{width=\hsize,
+ height=.5\vsize,depth=0pt}{dest123}
</pre>
<p>Example for <code>dvipdfm</code>:
- <pre class="example"> \hldest{fitr}{left=72,bottom=72,right=720,top=360}{dest123}
+ <pre class="example"> \hldest{fitr}{left=72,bottom=72,
+ right=720,top=360}{dest123}
</pre>
- <br><dt><code>raw</code><dd><a name="index-raw-_0040r_007b_0028destination-type_0029_007d-647"></a>The destination specification (in the form of a pdfTeX command or a
+ <br><dt><code>raw</code><dd><a name="index-raw-_0040r_007b_0028destination-type_0029_007d-784"></a>The destination specification (in the form of a pdfTeX command or a
dvipdfm <code>\special</code>) is taken from the command sequence
<code>\</code><var>cs</var>, where <var>cs</var> is the value of the
-<a name="index-cmd-_0040r_007b_0028destination-option_0029_007d-648"></a><code>cmd</code> option. In the definition of <code>\</code><var>cs</var>, use
-<a name="index-g_t_0040_0040hllabel-649"></a><code>\@hllabel</code> to refer to the hyperlink label. This option is
-intended to be used with destgroups (see <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a>), as it does not make sense to use it in a direct call to
-<a name="index-hldest-650"></a><code>\hldest</code>&mdash;you can just call the raw command.
+<a name="index-cmd-_0040r_007b_0028destination-option_0029_007d-785"></a><code>cmd</code> option. In the definition of <code>\</code><var>cs</var>, use
+<a name="index-g_t_0040_0040hllabel-786"></a><code>\@hllabel</code> to refer to the hyperlink label. This option is
+intended to be used with destgroups (see <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a>), as it does not make sense in a direct call to
+<a name="index-hldest-787"></a><code>\hldest</code>&mdash;you can just call the raw command.
<p>Example for <code>pdftex</code>:
<pre class="example"> \makeatletter
\def\mydest{\pdfdest name{\@hllabel} xyz}
+ \resetatcatcode
\hldesttype{raw}
\hldestopts{cmd=mydest}
- \resetatcatcode
</pre>
<p>Example for <code>dvipdfm</code>:
<pre class="example"> \makeatletter
\def\mydest{\special{pdf: dest (\@hllabel)
[@thispage /XYZ @xpos @ypos 0]}}
+ \resetatcatcode
\hldesttype{raw}
\hldestopts{cmd=mydest}
- \resetatcatcode
</pre>
</dl>
@@ -3639,9 +4570,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlink-drivers-pdftex-and-dvipdfm">
</div>
-<h5 class="subsubsection">5.4.2.2 Destination options for <code>pdftex</code> and <code>dvipdfm</code></h5>
+<h5 class="subsubsection">5.4.3.2 Destination options for <code>pdftex</code> and <code>dvipdfm</code></h5>
-<p><a name="index-destination-options_002c-_0040code_007bpdftex_007d-651"></a><a name="index-destination-options_002c-_0040code_007bdvipdfm_007d-652"></a><a name="index-options_002c-destination_002c-_0040code_007bpdftex_007d-653"></a><a name="index-options_002c-destination_002c-_0040code_007bdvipdfm_007d-654"></a><a name="index-g_t_0040code_007bpdftex_007d_002c-destination-options-655"></a><a name="index-g_t_0040code_007bdvipdfm_007d_002c-destination-options-656"></a>With respect to the destination options, the <code>pdftex</code> and
+<p><a name="index-destination-options_002c-_0040code_007bpdftex_007d-788"></a><a name="index-destination-options_002c-_0040code_007bdvipdfm_007d-789"></a><a name="index-options_002c-destination_002c-_0040code_007bpdftex_007d-790"></a><a name="index-options_002c-destination_002c-_0040code_007bdvipdfm_007d-791"></a><a name="index-g_t_0040code_007bpdftex_007d_002c-destination-options-792"></a><a name="index-g_t_0040code_007bdvipdfm_007d_002c-destination-options-793"></a>With respect to the destination options, the <code>pdftex</code> and
<code>dvipdfm</code> differ in the way the fit rectangle is specified
(relative coordinates for <code>pdftex</code>, absolute coordinates for
<code>dvipdfm</code>).
@@ -3649,13 +4580,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlink-drivers-pdftex-and-dvipdfm">
<h5 class="subsubheading">Common destination options</h5>
<dl>
-<dt><code>cmd</code><dd><a name="index-cmd-_0040r_007b_0028destination-option_0029_007d-657"></a>Name of the macro (without the leading `<samp><span class="samp">\</span></samp>') containing a
+<dt><code>cmd</code><dd><a name="index-cmd-_0040r_007b_0028destination-option_0029_007d-794"></a>Name of the macro (without the leading `<samp><span class="samp">\</span></samp>') containing a
pdfTeX command or a dvipdfm <code>\special</code> for the <code>raw</code>
destination.
- <p>For an example of usage, see <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a>, description of the <code>raw</code> destination.
+ <p>See <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a>, the description of the
+<code>raw</code> destination, for an example.
- <br><dt><code>zoom</code><dd><a name="index-zoom-_0040r_007b_0028destination-option_0029_007d-658"></a><a name="index-destinations_002c-magnification-659"></a><a name="index-hyperlink-destination_002c-magnification-660"></a><a name="index-magnification_002c-hyperlink-destination-661"></a><a name="index-zooming_002c-hyperlink-destination-662"></a>Magnification ratio times 1000 (like TeX's scale factor).
+ <br><dt><code>zoom</code><dd><a name="index-zoom-_0040r_007b_0028destination-option_0029_007d-795"></a><a name="index-destinations_002c-magnification-796"></a><a name="index-hyperlink-destination_002c-magnification-797"></a><a name="index-magnification_002c-hyperlink-destination-798"></a><a name="index-zooming_002c-hyperlink-destination-799"></a>Magnification ratio times 1000 (like TeX's scale factor).
Zero or empty means leave magnification unchanged, which is the
default.
@@ -3670,41 +4602,43 @@ of the parent box is used (this is the default for all dimension
options).
<dl>
-<dt><code>depth</code><dd><a name="index-depth-_0040r_007b_0028destination-option_0029_007d-663"></a><a name="index-destinations_002c-dimensions-664"></a><a name="index-hyperlink-destination_002c-dimensions-665"></a><a name="index-dimensions_002c-hyperlink-destination-666"></a>Depth of the fit rectangle for the <code>fitr</code> destination.
+<dt><code>depth</code><dd><a name="index-depth-_0040r_007b_0028destination-option_0029_007d-800"></a><a name="index-destinations_002c-dimensions-801"></a><a name="index-hyperlink-destination_002c-dimensions-802"></a><a name="index-dimensions_002c-hyperlink-destination-803"></a>Depth of the fit rectangle for the <code>fitr</code> destination.
- <br><dt><code>height</code><dd><a name="index-height-_0040r_007b_0028destination-option_0029_007d-667"></a><a name="index-destinations_002c-dimensions-668"></a><a name="index-hyperlink-destination_002c-dimensions-669"></a><a name="index-dimensions_002c-hyperlink-destination-670"></a>Height of the fit rectangle for the <code>fitr</code> destination.
+ <br><dt><code>height</code><dd><a name="index-height-_0040r_007b_0028destination-option_0029_007d-804"></a><a name="index-destinations_002c-dimensions-805"></a><a name="index-hyperlink-destination_002c-dimensions-806"></a><a name="index-dimensions_002c-hyperlink-destination-807"></a>Height of the fit rectangle for the <code>fitr</code> destination.
- <br><dt><code>width</code><dd><a name="index-width-_0040r_007b_0028destination-option_0029_007d-671"></a><a name="index-destinations_002c-dimensions-672"></a><a name="index-hyperlink-destination_002c-dimensions-673"></a><a name="index-dimensions_002c-hyperlink-destination-674"></a>Width of the fit rectangle for the <code>fitr</code> destination.
+ <br><dt><code>width</code><dd><a name="index-width-_0040r_007b_0028destination-option_0029_007d-808"></a><a name="index-destinations_002c-dimensions-809"></a><a name="index-hyperlink-destination_002c-dimensions-810"></a><a name="index-dimensions_002c-hyperlink-destination-811"></a>Width of the fit rectangle for the <code>fitr</code> destination.
<p>Example:
- <pre class="example"> \hldest{fitr}{width=\hsize,height=.5\vsize,depth=0pt}{dest123}
+ <pre class="example"> \hldest{fitr}{width=\hsize,
+ height=.5\vsize,depth=0pt}{dest123}
</pre>
</dl>
<h5 class="subsubheading"><code>dvipdfm</code>-specific destination options</h5>
<p>The dimension options below must be specified in
-<a name="index-PostScript-point-675"></a>PostScript points (72&nbsp;<!-- /@w -->points per inch), as a number without the
+<a name="index-PostScript-point-812"></a>PostScript points (72&nbsp;<!-- /@w -->points per inch), as a number without the
`<samp><span class="samp">bp</span></samp>' unit name. When set to empty, the current position
coordinate is used (this is the default for all dimension options).
<dl>
-<dt><code>bottom</code><dd><a name="index-bottom-_0040r_007b_0028destination-option_0029_007d-676"></a><a name="index-destinations_002c-dimensions-677"></a><a name="index-hyperlink-destination_002c-dimensions-678"></a><a name="index-dimensions_002c-hyperlink-destination-679"></a>Bottom position coordinate of a box specification for the various
+<dt><code>bottom</code><dd><a name="index-bottom-_0040r_007b_0028destination-option_0029_007d-813"></a><a name="index-destinations_002c-dimensions-814"></a><a name="index-hyperlink-destination_002c-dimensions-815"></a><a name="index-dimensions_002c-hyperlink-destination-816"></a>Bottom position coordinate of a box specification for the various
destination types.
- <br><dt><code>left</code><dd><a name="index-left-_0040r_007b_0028destination-option_0029_007d-680"></a><a name="index-destinations_002c-dimensions-681"></a><a name="index-hyperlink-destination_002c-dimensions-682"></a><a name="index-dimensions_002c-hyperlink-destination-683"></a>Left position coordinate of a box specification for the various
+ <br><dt><code>left</code><dd><a name="index-left-_0040r_007b_0028destination-option_0029_007d-817"></a><a name="index-destinations_002c-dimensions-818"></a><a name="index-hyperlink-destination_002c-dimensions-819"></a><a name="index-dimensions_002c-hyperlink-destination-820"></a>Left position coordinate of a box specification for the various
destination types.
- <br><dt><code>right</code><dd><a name="index-right-_0040r_007b_0028destination-option_0029_007d-684"></a><a name="index-destinations_002c-dimensions-685"></a><a name="index-hyperlink-destination_002c-dimensions-686"></a><a name="index-dimensions_002c-hyperlink-destination-687"></a>Right position coordinate of a box specification for the various
+ <br><dt><code>right</code><dd><a name="index-right-_0040r_007b_0028destination-option_0029_007d-821"></a><a name="index-destinations_002c-dimensions-822"></a><a name="index-hyperlink-destination_002c-dimensions-823"></a><a name="index-dimensions_002c-hyperlink-destination-824"></a>Right position coordinate of a box specification for the various
destination types.
- <br><dt><code>top</code><dd><a name="index-top-_0040r_007b_0028destination-option_0029_007d-688"></a><a name="index-destinations_002c-dimensions-689"></a><a name="index-hyperlink-destination_002c-dimensions-690"></a><a name="index-dimensions_002c-hyperlink-destination-691"></a>Top position coordinate of a box specification for the various
+ <br><dt><code>top</code><dd><a name="index-top-_0040r_007b_0028destination-option_0029_007d-825"></a><a name="index-destinations_002c-dimensions-826"></a><a name="index-hyperlink-destination_002c-dimensions-827"></a><a name="index-dimensions_002c-hyperlink-destination-828"></a>Top position coordinate of a box specification for the various
destination types.
<p>Example:
- <pre class="example"> \hldest{fitr}{left=72,bottom=72,right=720,top=360}{dest123}
+ <pre class="example"> \hldest{fitr}{left=72,bottom=72,
+ right=720,top=360}{dest123}
</pre>
</dl>
@@ -3717,9 +4651,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlink-drivers-pdftex-and-dvipdfm">
</div>
-<h5 class="subsubsection">5.4.2.3 Link types for <code>pdftex</code> and <code>dvipdfm</code></h5>
+<h5 class="subsubsection">5.4.3.3 Link types for <code>pdftex</code> and <code>dvipdfm</code></h5>
-<p><a name="index-link-types_002c-_0040code_007bpdftex_007d-692"></a><a name="index-link-types_002c-_0040code_007bdvipdfm_007d-693"></a><a name="index-types_002c-link_002c-_0040code_007bpdftex_007d-694"></a><a name="index-types_002c-link_002c-_0040code_007bdvipdfm_007d-695"></a><a name="index-g_t_0040code_007bpdftex_007d_002c-link-types-696"></a><a name="index-g_t_0040code_007bdvipdfm_007d_002c-link-types-697"></a>Link types are the same for the <code>pdftex</code> and <code>dvipdfm</code>
+<p><a name="index-link-types_002c-_0040code_007bpdftex_007d-829"></a><a name="index-link-types_002c-_0040code_007bdvipdfm_007d-830"></a><a name="index-types_002c-link_002c-_0040code_007bpdftex_007d-831"></a><a name="index-types_002c-link_002c-_0040code_007bdvipdfm_007d-832"></a><a name="index-g_t_0040code_007bpdftex_007d_002c-link-types-833"></a><a name="index-g_t_0040code_007bdvipdfm_007d_002c-link-types-834"></a>Link types are the same for the <code>pdftex</code> and <code>dvipdfm</code>
drivers, except that the <code>pdftex</code> driver provides one additional
link type <code>num</code> (link to a numbered destination). dvipdfm does not
support numbered destinations, therefore it does not have this link
@@ -3730,54 +4664,57 @@ low-level pdfTeX commands.
<h5 class="subsubheading">Common link types</h5>
<dl>
-<dt><code>name</code><dd><a name="index-name-_0040r_007b_0028hyperlink-type_0029_007d-698"></a><a name="index-named-destination-699"></a><a name="index-destinations_002c-named-700"></a><a name="index-hyperlink-destination_002c-named-701"></a>Go to a &ldquo;named destination&rdquo;. The label is the destination name.
-All destinations created with <code>\hldest</code> are named destinations.
-This is the default type.
+<dt><code>name</code><dd><a name="index-name-_0040r_007b_0028hyperlink-type_0029_007d-835"></a><a name="index-named-destination-836"></a><a name="index-destinations_002c-named-837"></a><a name="index-hyperlink-destination_002c-named-838"></a>Go to a &ldquo;named destination&rdquo;. The label is the destination name.
+All destinations created with <code>\hldest</code> are named destinations
+(see <a href="#Explicit-hyperlinks">Explicit hyperlinks</a>). This is the default type.
<p>Example: <code>\hlstart{name}{}{dest123}Link to dest123\hlend</code>
- <br><dt><code>page</code><dd><a name="index-page-_0040r_007b_0028hyperlink-type_0029_007d-702"></a><a name="index-page-destination-703"></a><a name="index-destinations_002c-page-704"></a><a name="index-hyperlink-destination_002c-page-705"></a>Go to a page. The label is the page number (counting from&nbsp;<!-- /@w -->1).
+ <br><dt><code>url</code><dd><a name="index-url-_0040r_007b_0028hyperlink-type_0029_007d-839"></a><a name="index-g_t_0040acronym_007bURL_007d-hyperlink-840"></a><a name="index-destinations_002c-_0040acronym_007bURL_007d-841"></a><a name="index-hyperlinks_002c-_0040acronym_007bURL_007d-842"></a>Go to a <acronym>URL</acronym>. The label is the <acronym>URL</acronym>.
+
+ <p>Example: <code>\hlstart{url}{}{http://tug.org/eplain/}Eplain home\hlend</code>
+
+ <br><dt><code>page</code><dd><a name="index-page-_0040r_007b_0028hyperlink-type_0029_007d-843"></a><a name="index-page-destination-844"></a><a name="index-destinations_002c-page-845"></a><a name="index-hyperlink-destination_002c-page-846"></a>Go to a page. The label is the page number (counting from&nbsp;<!-- /@w -->1).
Page fitting is specified by the
-<a name="index-pagefit-_0040r_007b_0028hyperlink-option_0029_007d-706"></a><code>pagefit</code> option.
+<a name="index-pagefit-_0040r_007b_0028hyperlink-option_0029_007d-847"></a><code>pagefit</code> option.
<p>Example:
- <pre class="example"> \hlstart{page}{pagefit=/FitH 600}{123}Link to page~123\hlend
+ <pre class="example"> \hlstart{page}{pagefit=/FitH 600}{123}
+ Link to page~123\hlend
</pre>
- <br><dt><code>filename</code><dd><a name="index-filename-_0040r_007b_0028hyperlink-type_0029_007d-707"></a><a name="index-file_002c-hyperlink-to-708"></a><a name="index-destinations_002c-in-another-file-709"></a><a name="index-hyperlinks_002c-to-another-file-710"></a>Go to a named destination in another file. The label is the
+ <br><dt><code>filename</code><dd><a name="index-filename-_0040r_007b_0028hyperlink-type_0029_007d-848"></a><a name="index-file_002c-hyperlink-to-849"></a><a name="index-destinations_002c-in-another-file-850"></a><a name="index-hyperlinks_002c-to-another-file-851"></a>Go to a named destination in another file. The label is the
destination name. The file name is specified by the
-<a name="index-file-_0040r_007b_0028hyperlink-option_0029_007d-711"></a><code>file</code> option. Page fitting is specified by the
-<a name="index-pagefit-_0040r_007b_0028hyperlink-option_0029_007d-712"></a><code>pagefit</code> option. The
-<a name="index-newwin-_0040r_007b_0028hyperlink-option_0029_007d-713"></a><code>newwin</code> option specifies whether the destination document is
+<a name="index-file-_0040r_007b_0028hyperlink-option_0029_007d-852"></a><code>file</code> option. Page fitting is specified by the
+<a name="index-pagefit-_0040r_007b_0028hyperlink-option_0029_007d-853"></a><code>pagefit</code> option. The
+<a name="index-newwin-_0040r_007b_0028hyperlink-option_0029_007d-854"></a><code>newwin</code> option specifies whether the destination document is
opened in the same window or in a new window.
<p>Example:
+
<pre class="example"> \hlstart{filename}{file=book.pdf,newwin=1}{dest123}
Link to dest123 in file `book.pdf'\hlend
</pre>
- <br><dt><code>filepage</code><dd><a name="index-filepage-_0040r_007b_0028hyperlink-type_0029_007d-714"></a><a name="index-file_002c-hyperlink-to-715"></a><a name="index-destinations_002c-in-another-file-716"></a><a name="index-hyperlinks_002c-to-another-file-717"></a>Go to a page in another file. The label is the page number (counting
+ <br><dt><code>filepage</code><dd><a name="index-filepage-_0040r_007b_0028hyperlink-type_0029_007d-855"></a><a name="index-file_002c-hyperlink-to-856"></a><a name="index-destinations_002c-in-another-file-857"></a><a name="index-hyperlinks_002c-to-another-file-858"></a>Go to a page in another file. The label is the page number (counting
from&nbsp;<!-- /@w -->1). The file name is specified by the
-<a name="index-file-_0040r_007b_0028hyperlink-option_0029_007d-718"></a><code>file</code> option. Page fitting is specified by the
-<a name="index-pagefit-_0040r_007b_0028hyperlink-option_0029_007d-719"></a><code>pagefit</code> option. The
-<a name="index-newwin-_0040r_007b_0028hyperlink-option_0029_007d-720"></a><code>newwin</code> option specifies whether the destination document is
+<a name="index-file-_0040r_007b_0028hyperlink-option_0029_007d-859"></a><code>file</code> option. Page fitting is specified by the
+<a name="index-pagefit-_0040r_007b_0028hyperlink-option_0029_007d-860"></a><code>pagefit</code> option. The
+<a name="index-newwin-_0040r_007b_0028hyperlink-option_0029_007d-861"></a><code>newwin</code> option specifies whether the destination document is
opened in the same window or in a new window.
<p>Example:
- <pre class="example"> \hlstart{filepage}{file=book.pdf,newwin=,%
+
+ <pre class="example"> \hlstart{filepage}{file=book.pdf,newwin=,
pagefit=/FitR 50 100 300 500}{1}
Link to page~1 in file `book.pdf'\hlend
</pre>
- <br><dt><code>url</code><dd><a name="index-url-_0040r_007b_0028hyperlink-type_0029_007d-721"></a><a name="index-URL-hyperlink-722"></a><a name="index-destinations_002c-URL-723"></a><a name="index-hyperlinks_002c-URL-724"></a>Go to a URL. The label is the URL.
-
- <p>Example: <code>\hlstart{url}{}{http://tug.org/eplain/}Eplain home\hlend</code>
-
- <br><dt><code>raw</code><dd><a name="index-raw-_0040r_007b_0028hyperlink-type_0029_007d-725"></a>The link specification (in the form of a pdfTeX command or a dvipdfm
+ <br><dt><code>raw</code><dd><a name="index-raw-_0040r_007b_0028hyperlink-type_0029_007d-862"></a>The link specification (in the form of a pdfTeX command or a dvipdfm
<code>\special</code> primitive) is taken from the command sequence
<code>\</code><var>cs</var>, where <var>cs</var> is the value of the
-<a name="index-cmd-_0040r_007b_0028hyperlink-option_0029_007d-726"></a><code>cmd</code> option. This option is intended to be used with linkgroups
-(see <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a>), as it does not make sense
-to use it in a direct call to
-<a name="index-hlstart-727"></a><code>\hlstart</code>&mdash;you can just call the raw command.
+<a name="index-cmd-_0040r_007b_0028hyperlink-option_0029_007d-863"></a><code>cmd</code> option. In the definition of <code>\</code><var>cs</var>, use
+<a name="index-g_t_0040_0040hllabel-864"></a><code>\@hllabel</code> to refer to the hyperlink label. This option is
+intended to be used with linkgroups (see <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a>), as it does not make sense in a direct call to
+<a name="index-hlstart-865"></a><code>\hlstart</code>&mdash;you can just call the raw command.
<p>Example for <code>pdftex</code>:
@@ -3799,7 +4736,7 @@ to use it in a direct call to
<h5 class="subsubheading"><code>pdftex</code>-specific link types</h5>
<dl>
-<dt><code>num</code><dd><a name="index-num-_0040r_007b_0028hyperlink-type_0029_007d-728"></a><a name="index-numbered-destination-729"></a><a name="index-destinations_002c-numbered-730"></a><a name="index-hyperlink-destination_002c-numbered-731"></a>Go to a &ldquo;numbered destination&rdquo;. The label is the destination
+<dt><code>num</code><dd><a name="index-num-_0040r_007b_0028hyperlink-type_0029_007d-866"></a><a name="index-numbered-destination-867"></a><a name="index-destinations_002c-numbered-868"></a><a name="index-hyperlink-destination_002c-numbered-869"></a>Go to a &ldquo;numbered destination&rdquo;. The label is the destination
number.
<p>Example: <code>\hlstart{num}{}{123}Link to 123\hlend</code>
@@ -3813,33 +4750,33 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlink-drivers-pdftex-and-dvipdfm">
</div>
-<h5 class="subsubsection">5.4.2.4 Link options for <code>pdftex</code> and <code>dvipdfm</code></h5>
+<h5 class="subsubsection">5.4.3.4 Link options for <code>pdftex</code> and <code>dvipdfm</code></h5>
-<p><a name="index-link-options_002c-_0040code_007bpdftex_007d-732"></a><a name="index-link-options_002c-_0040code_007bdvipdfm_007d-733"></a><a name="index-options_002c-link_002c-_0040code_007bpdftex_007d-734"></a><a name="index-options_002c-link_002c-_0040code_007bdvipdfm_007d-735"></a><a name="index-g_t_0040code_007bpdftex_007d_002c-link-options-736"></a><a name="index-g_t_0040code_007bdvipdfm_007d_002c-link-options-737"></a>Link options are mostly the same for the <code>pdftex</code> and
+<p><a name="index-link-options_002c-_0040code_007bpdftex_007d-870"></a><a name="index-link-options_002c-_0040code_007bdvipdfm_007d-871"></a><a name="index-options_002c-link_002c-_0040code_007bpdftex_007d-872"></a><a name="index-options_002c-link_002c-_0040code_007bdvipdfm_007d-873"></a><a name="index-g_t_0040code_007bpdftex_007d_002c-link-options-874"></a><a name="index-g_t_0040code_007bdvipdfm_007d_002c-link-options-875"></a>Link options are mostly the same for the <code>pdftex</code> and
<code>dvipdfm</code> drivers. The <code>pdftex</code> driver has additional
options to specify link dimensions.
<h5 class="subsubheading">Common link options</h5>
<dl>
-<dt><code>bcolor</code><dd><a name="index-bcolor-_0040r_007b_0028hyperlink-option_0029_007d-738"></a><a name="index-hyperlink-border-color-739"></a><a name="index-border-color_002c-hyperlink-740"></a><a name="index-color_002c-hyperlink-border-741"></a>Border color. An array of three numbers in the range 0 to 1,
+<dt><code>bcolor</code><dd><a name="index-bcolor-_0040r_007b_0028hyperlink-option_0029_007d-876"></a><a name="index-hyperlink-border-color-877"></a><a name="index-border-color_002c-hyperlink-878"></a><a name="index-color_002c-hyperlink-border-879"></a>Border color. An array of three numbers in the range 0 to 1,
representing a color in DeviceRGB.
<p>Example: <code>\hlstart{name}{bcolor=.1 .5 1}{dest123}Link\hlend</code>
- <br><dt><code>bdash</code><dd><a name="index-bdash-_0040r_007b_0028hyperlink-option_0029_007d-742"></a><a name="index-dashed-hyperlink-border-743"></a><a name="index-hyperlinks_002c-border-style-744"></a><a name="index-border-style_002c-hyperlink-745"></a>Array of numbers representing on and off stroke lengths for drawing
+ <br><dt><code>bdash</code><dd><a name="index-bdash-_0040r_007b_0028hyperlink-option_0029_007d-880"></a><a name="index-dashed-hyperlink-border-881"></a><a name="index-hyperlinks_002c-border-style-882"></a><a name="index-border-style_002c-hyperlink-883"></a>Array of numbers representing on and off stroke lengths for drawing
dashes.
<p>Example: <code>\hlstart{name}{bstyle=D,bdash=2 4}{dest123}Link\hlend</code>
- <br><dt><code>bstyle</code><dd><a name="index-bstyle-_0040r_007b_0028hyperlink-option_0029_007d-746"></a><a name="index-solid-hyperlink-border-747"></a><a name="index-dashed-hyperlink-border-748"></a><a name="index-beveled-hyperlink-border-749"></a><a name="index-inset-hyperlink-border-750"></a><a name="index-underline-hyperlink-border-751"></a><a name="index-hyperlinks_002c-border-style-752"></a><a name="index-style_002c-hyperlink-border-753"></a><a name="index-border-style_002c-hyperlink-754"></a>Link border style:
+ <br><dt><code>bstyle</code><dd><a name="index-bstyle-_0040r_007b_0028hyperlink-option_0029_007d-884"></a><a name="index-solid-hyperlink-border-885"></a><a name="index-dashed-hyperlink-border-886"></a><a name="index-beveled-hyperlink-border-887"></a><a name="index-inset-hyperlink-border-888"></a><a name="index-underline-hyperlink-border-889"></a><a name="index-hyperlinks_002c-border-style-890"></a><a name="index-style_002c-hyperlink-border-891"></a><a name="index-border-style_002c-hyperlink-892"></a>Link border style:
<dl>
<dt><code>S</code><dd>The border is drawn as a solid line.
<br><dt><code>D</code><dd>The border is drawn with a dashed line (the dash pattern is specified
by the
-<a name="index-bdash-_0040r_007b_0028hyperlink-option_0029_007d-755"></a><code>bdash</code> option).
+<a name="index-bdash-_0040r_007b_0028hyperlink-option_0029_007d-893"></a><code>bdash</code> option).
<br><dt><code>B</code><dd>The border is drawn in a beveled style.
@@ -3852,23 +4789,23 @@ by the
<p>Example: <code>\hlstart{name}{bstyle=D,bdash=2 4}{dest123}Link\hlend</code>
- <br><dt><code>bwidth</code><dd><a name="index-bwidth-_0040r_007b_0028hyperlink-option_0029_007d-756"></a><a name="index-width_002c-hyperlink-border-757"></a><a name="index-hyperlinks_002c-border-width-758"></a><a name="index-border-width_002c-hyperlink-759"></a>Border width in
-<a name="index-PostScript-point-760"></a>PostScript points (72&nbsp;<!-- /@w -->points per inch). The default is&nbsp;<!-- /@w -->1.
+ <br><dt><code>bwidth</code><dd><a name="index-bwidth-_0040r_007b_0028hyperlink-option_0029_007d-894"></a><a name="index-width_002c-hyperlink-border-895"></a><a name="index-hyperlinks_002c-border-width-896"></a><a name="index-border-width_002c-hyperlink-897"></a>Border width in
+<a name="index-PostScript-point-898"></a>PostScript points (72&nbsp;<!-- /@w -->points per inch). The default is&nbsp;<!-- /@w -->1.
<p>Example: <code>\hlstart{name}{bwidth=2}{dest123}Link\hlend</code>
- <br><dt><code>cmd</code><dd><a name="index-cmd-_0040r_007b_0028hyperlink-option_0029_007d-761"></a>Name of the macro (without the leading `<samp><span class="samp">\</span></samp>') containing a
+ <br><dt><code>cmd</code><dd><a name="index-cmd-_0040r_007b_0028hyperlink-option_0029_007d-899"></a>Name of the macro (without the leading `<samp><span class="samp">\</span></samp>') containing a
pdfTeX command or a dvipdfm <code>\special</code> for the <code>raw</code> link.
- <p>For an example of usage, see <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a>,
-description of the <code>raw</code> link.
+ <p>See <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a>, the description of the
+<code>raw</code> link, for an example.
- <br><dt><code>file</code><dd><a name="index-file-_0040r_007b_0028hyperlink-option_0029_007d-762"></a>File name for the <code>filename</code> and <code>filepage</code> link types.
+ <br><dt><code>file</code><dd><a name="index-file-_0040r_007b_0028hyperlink-option_0029_007d-900"></a>File name for the <code>filename</code> and <code>filepage</code> link types.
- <p>For an example of usage, see <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a>,
-description of the <code>filename</code> and <code>filepage</code> links.
+ <p>See <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a>, the descriptions of the
+<code>filename</code> and <code>filepage</code> links, for an example.
- <br><dt><code>hlight</code><dd><a name="index-hlight-_0040r_007b_0028hyperlink-option_0029_007d-763"></a><a name="index-hyperlinks_002c-highlight-mode-764"></a><a name="index-highlight-modes_002c-hyperlink-765"></a>Link border highlight modes:
+ <br><dt><code>hlight</code><dd><a name="index-hlight-_0040r_007b_0028hyperlink-option_0029_007d-901"></a><a name="index-hyperlinks_002c-highlight-mode-902"></a><a name="index-highlight-modes_002c-hyperlink-903"></a>Link border highlight modes:
<dl>
<dt><code>I</code><dd>The rectangle specified by the bounding box of the link is inverted.
@@ -3885,7 +4822,7 @@ the page.
<p>Example: <code>\hlstart{name}{bstyle=S,hlight=O}{dest123}Link\hlend</code>
- <br><dt><code>newwin</code><dd><a name="index-newwin-_0040r_007b_0028hyperlink-option_0029_007d-766"></a><a name="index-hyperlinks_002c-opening-in-a-new-window-767"></a><a name="index-new-window_002c-opening-hyperlink-in-768"></a>For the <code>filename</code> and <code>filepage</code> links, specifies whether the destination document is
+ <br><dt><code>newwin</code><dd><a name="index-newwin-_0040r_007b_0028hyperlink-option_0029_007d-904"></a><a name="index-hyperlinks_002c-opening-in-a-new-window-905"></a><a name="index-new-window_002c-opening-hyperlink-in-906"></a>For the <code>filename</code> and <code>filepage</code> links, specifies whether the destination document is
opened in the same window or in a new window. The settings are:
<dl>
@@ -3896,15 +4833,16 @@ opened in the same window or in a new window. The settings are:
<p>The default is empty.
- <p>For an example of usage, see <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a>,
-description of the <code>filename</code> and <code>filepage</code> links.
+ <p>See <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a>, the descriptions of the
+<code>filename</code> and <code>filepage</code> links, for an example.
- <br><dt><code>pagefit</code><dd><a name="index-pagefit-_0040r_007b_0028hyperlink-option_0029_007d-769"></a>For the <code>page</code> and <code>filepage links</code>, specifies how the page
+ <br><dt><code>pagefit</code><dd><a name="index-pagefit-_0040r_007b_0028hyperlink-option_0029_007d-907"></a>For the <code>page</code> and <code>filepage links</code>, specifies how the page
must be fitted to the window. <code>pagefit</code> specification is written
-to the PDF file as is, so it must conform to the PDF standard.
+to the <acronym>PDF</acronym> file as is, so it must conform to the
+<acronym>PDF</acronym> standard.
- <p>For an example of usage, see <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a>,
-description of the <code>page</code> and <code>filepage</code> links.
+ <p>See <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a>, the descriptions of the
+<code>page</code> and <code>filepage</code> links, for an example.
</dl>
<h5 class="subsubheading"><code>pdftex</code>-specific link options</h5>
@@ -3915,11 +4853,11 @@ of the parent box is used (this is the default for all dimension
options).
<dl>
-<dt><code>depth</code><dd><a name="index-depth-_0040r_007b_0028hyperlink-option_0029_007d-770"></a><a name="index-hyperlink-dimensions-771"></a><a name="index-dimensions_002c-hyperlink-772"></a>Depth of the link.
+<dt><code>depth</code><dd><a name="index-depth-_0040r_007b_0028hyperlink-option_0029_007d-908"></a><a name="index-hyperlink-dimensions-909"></a><a name="index-dimensions_002c-hyperlink-910"></a>Depth of the link.
- <br><dt><code>height</code><dd><a name="index-height-_0040r_007b_0028hyperlink-option_0029_007d-773"></a><a name="index-hyperlink-dimensions-774"></a><a name="index-dimensions_002c-hyperlink-775"></a>Height of the link.
+ <br><dt><code>height</code><dd><a name="index-height-_0040r_007b_0028hyperlink-option_0029_007d-911"></a><a name="index-hyperlink-dimensions-912"></a><a name="index-dimensions_002c-hyperlink-913"></a>Height of the link.
- <br><dt><code>width</code><dd><a name="index-width-_0040r_007b_0028hyperlink-option_0029_007d-776"></a><a name="index-hyperlink-dimensions-777"></a><a name="index-dimensions_002c-hyperlink-778"></a>Width of the link.
+ <br><dt><code>width</code><dd><a name="index-width-_0040r_007b_0028hyperlink-option_0029_007d-914"></a><a name="index-hyperlink-dimensions-915"></a><a name="index-dimensions_002c-hyperlink-916"></a>Width of the link.
<p>Example:
@@ -3936,15 +4874,15 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlink-drivers">Hyperlink drivers</
</div>
-<h4 class="subsection">5.4.3 Hyperlink driver <code>nolinks</code></h4>
+<h4 class="subsection">5.4.4 Hyperlink driver <code>nolinks</code></h4>
-<p><a name="index-g_t_0040code_007bnolinks_007d_002c-hyperlink-driver-779"></a><a name="index-driver-_0040code_007bnolinks_007d-780"></a><a name="index-hyperlink-driver-_0040code_007bnolinks_007d-781"></a><a name="index-omitting-hyperlinks-782"></a><a name="index-disabling-hyperlinks-783"></a><a name="index-hyperlinks_002c-disabling-784"></a><a name="index-destinations_002c-disabling-785"></a><a name="index-spacing_002c-preserving-with-hyperlinks-786"></a><a name="index-hyperlinks_002c-preserving-spacing-787"></a><a name="index-page_002dbreaking_002c-preserving-with-hyperlinks-788"></a><a name="index-hyperlinks_002c-preserving-page_002dbreaking-789"></a>Select this driver to suppress all hyperlinks in your document.
+<p><a name="index-nolinks-_0040r_007b_0028hyperlink-driver_0029_007d-917"></a><a name="index-g_t_0040code_007bnolinks_007d_002c-hyperlink-driver-918"></a><a name="index-driver-_0040code_007bnolinks_007d-919"></a><a name="index-hyperlink-driver-_0040code_007bnolinks_007d-920"></a><a name="index-omitting-hyperlinks-921"></a><a name="index-disabling-hyperlinks-922"></a><a name="index-hyperlinks_002c-disabling-923"></a><a name="index-destinations_002c-disabling-924"></a><a name="index-spacing_002c-preserving-with-hyperlinks-925"></a><a name="index-hyperlinks_002c-preserving-spacing-926"></a><a name="index-page_002dbreaking_002c-preserving-with-hyperlinks-927"></a><a name="index-hyperlinks_002c-preserving-page_002dbreaking-928"></a>Select this driver to suppress all hyperlinks in your document.
<p>Selecting this driver is quite different from not selecting any driver
at all, or from selecting some driver and then turning hyperlinks off
for the entire document with
-<a name="index-hloff-790"></a><code>\hloff</code> and
-<a name="index-hldestoff-791"></a><code>\hldestoff</code> (see <a href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a>).
+<a name="index-hloff-929"></a><code>\hloff</code> and
+<a name="index-hldestoff-930"></a><code>\hldestoff</code> (see <a href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a>).
<p>The purpose of <code>\hldestoff</code> and <code>\hloff</code> is to mark (parts) of
your document where hyperlinks should never appear. (Imagine you want
@@ -3959,7 +4897,7 @@ same as what you were getting with hyperlinks enabled.
<p>The reason for this is that hyperlinks are produced by the
<code>\special</code> primitives or low-level hyperlink commands. Each such
command is placed inside a
-<a name="index-whatsits_002c-made-by-hyperlinks-792"></a><dfn>whatsit</dfn> (an internal TeX object), which may introduce
+<a name="index-whatsits-made-by-hyperlinks-931"></a><dfn>whatsit</dfn> (an internal TeX object), which may introduce
legitimate breakpoints at places where none would exist without the
whatsits. The macros <code>\hldestoff</code> and <code>\hloff</code> disable the
hyperlink macros completely, so that no whatsits are produced.
@@ -3969,7 +4907,7 @@ hyperlink macros. Instead, it defines them to merely write to the log
file (what gets written is unimportant). This also produces
whatsits, thus imitating the whatsits from the hyperlink commands.
(This trick was borrowed from the
-<a name="index-color_002esty-793"></a><a name="index-graphics-collection_002c-_0040LaTeX_007b_007d-794"></a><a name="index-g_t_0040LaTeX_007b_007d-graphics-collection-795"></a>LaTeX `color' package.)
+<a name="index-color_002esty-932"></a><a name="index-graphics-collection_002c-_0040LaTeX_007b_007d-933"></a><a name="index-g_t_0040LaTeX_007b_007d-graphics-collection-934"></a>LaTeX `color' package.)
<p>Another reason for using <code>nolinks</code> is that in horizontal mode
<code>\hldest</code> places destinations inside boxes of zero width, height,
@@ -3979,7 +4917,18 @@ again cause the typesetting to be inconsistent with that with
destinations enabled. Here again, the <code>nolinks</code> driver helps by
defining <code>\hldest</code> to produce the empty boxes.
-<div class="node">
+ <p>So, if you are planning to produce versions of your <acronym>PDF</acronym>
+document both with and without hyperlinks, here is the recommended way
+to enable the hyperlinks under pdfTeX:
+
+ <p><a name="index-enablehyperlinks-935"></a>
+<pre class="example"> \ifpdf
+ \enablehyperlinks
+ \else
+ \enablehyperlinks[nolinks]%
+ \fi
+</pre>
+ <div class="node">
<p><hr>
<a name="Setting-hyperlink-types-and-options"></a>
Next:&nbsp;<a rel="next" accesskey="n" href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a>,
@@ -3990,14 +4939,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlinks">Hyperlinks</a>
<h3 class="section">5.5 Setting hyperlink types and options</h3>
-<p><a name="index-default-hyperlink-type-796"></a><a name="index-default-hyperlink-options-797"></a><a name="index-hyperlinks_002c-default-type-798"></a><a name="index-hyperlinks_002c-default-options-799"></a><a name="index-destinations_002c-default-type-800"></a><a name="index-destinations_002c-default-options-801"></a>You can define default types for links and destinations, which will be
+<p><a name="index-default-hyperlink-type-936"></a><a name="index-default-hyperlink-options-937"></a><a name="index-hyperlinks_002c-default-type-938"></a><a name="index-hyperlinks_002c-default-options-939"></a><a name="index-destinations_002c-default-type-940"></a><a name="index-destinations_002c-default-options-941"></a>You can define default types for links and destinations, which will be
used when you do not specify a type in
-<a name="index-hlstart-802"></a><code>\hlstart</code> or
-<a name="index-hldest-803"></a><code>\hldest</code>. Similarly, you can define default values for the
+<a name="index-hlstart-942"></a><code>\hlstart</code> or
+<a name="index-hldest-943"></a><code>\hldest</code>. Similarly, you can define default values for the
options; the default value for an option is used when you do not set the
option in the argument to <code>\hlstart</code> or <code>\hldest</code>.
- <p><a name="index-group_002c-type-hyperlink-804"></a><a name="index-group_002c-options-hyperlink-805"></a><a name="index-hyperlinks_002c-group-type-806"></a><a name="index-hyperlinks_002c-group-options-807"></a><a name="index-link_002c-group-type-808"></a><a name="index-link_002c-group-options-809"></a><a name="index-linkgroup_002c-type-810"></a><a name="index-linkgroup_002c-options-811"></a><a name="index-destinations_002c-group-type-812"></a><a name="index-destinations_002c-group-options-813"></a><a name="index-destgroup_002c-type-814"></a><a name="index-destgroup_002c-options-815"></a>The parameters for implicit links and destinations can be customized by
+ <p><a name="index-group-type_002c-hyperlink-944"></a><a name="index-group-options_002c-hyperlink-945"></a><a name="index-hyperlinks_002c-group-type-946"></a><a name="index-hyperlinks_002c-group-options-947"></a><a name="index-link_002c-group-type-948"></a><a name="index-link_002c-group-options-949"></a><a name="index-linkgroup-type-950"></a><a name="index-linkgroup-options-951"></a><a name="index-destinations_002c-group-type-952"></a><a name="index-destinations_002c-group-options-953"></a><a name="index-destgroup-type-954"></a><a name="index-destgroup-options-955"></a>The parameters for implicit links and destinations can be customized by
setting the &ldquo;group&rdquo; types and options. When not set, the defaults are
used.
@@ -4022,7 +4971,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Setting-hyperlink-types-and-options">S
<h4 class="subsection">5.5.1 Setting default types and options</h4>
-<p><a name="index-hltype-816"></a><a name="index-hldesttype-817"></a>The default types for links and destinations can be set with the
+<p><a name="index-hltype-956"></a><a name="index-hldesttype-957"></a>The default types for links and destinations can be set with the
following commands:
<pre class="example"> \hltype{<var>type</var>}
@@ -4032,7 +4981,7 @@ following commands:
link/destination types supported by the selected hyperlink driver
(see <a href="#Hyperlink-drivers">Hyperlink drivers</a>).
- <p><a name="index-hlopts-818"></a><a name="index-hldestopts-819"></a>Default values for the options can be set with the following commands:
+ <p><a name="index-hlopts-958"></a><a name="index-hldestopts-959"></a>Default values for the options can be set with the following commands:
<pre class="example"> \hlopts{<var>options</var>}
\hldestopts{<var>options</var>}
@@ -4041,7 +4990,20 @@ link/destination types supported by the selected hyperlink driver
assignments in the format `<samp><var>option</var><span class="samp">=</span><var>value</var></samp>'. Again, what options
are allowed depends on the selected hyperlink driver.
-<div class="node">
+ <p><a name="index-boxed-links_002c-avoiding-960"></a><a name="index-avoiding-boxed-links-961"></a><a name="index-color_002c-hyperlinks-962"></a><a name="index-colored-links-963"></a><a name="index-hyperlink-color-964"></a>Many people regard the default boxed links as not aesthetic and
+intruding on page layout. The reason why boxed links are the default is
+that the links are not colored until you load the LaTeX
+<a name="index-color_002esty-965"></a>`color' package (see <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a>) or use other means to
+define the <code>\color</code> command; therefore, not producing any kind of
+link border may result in the links not being marked in any way.
+However, when the links are actually colored, there is no need to
+produce the link boxes anymore; to avoid the boxes, you can set the
+default border width to zero (if the driver you use supports the link
+option <code>bwidth</code>; see <a href="#Hyperlink-drivers">Hyperlink drivers</a>):
+
+<pre class="example"> \hlopts{bwidth=0}
+</pre>
+ <div class="node">
<p><hr>
<a name="Setting-group-types"></a>
Next:&nbsp;<a rel="next" accesskey="n" href="#Setting-group-options">Setting group options</a>,
@@ -4052,7 +5014,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Setting-hyperlink-types-and-options">S
<h4 class="subsection">5.5.2 Setting group types</h4>
-<p><a name="index-hltype-820"></a><a name="index-hldesttype-821"></a><a name="index-group_002c-type-hyperlink-822"></a><a name="index-hyperlinks_002c-group-type-823"></a><a name="index-link_002c-group-type-824"></a><a name="index-linkgroup_002c-type-825"></a><a name="index-destinations_002c-group-type-826"></a><a name="index-destgroup_002c-type-827"></a>When called with an optional argument, as in
+<p><a name="index-hltype-966"></a><a name="index-hldesttype-967"></a><a name="index-group-type_002c-hyperlink-968"></a><a name="index-hyperlinks_002c-group-type-969"></a><a name="index-link_002c-group-type-970"></a><a name="index-linkgroup-type-971"></a><a name="index-destinations_002c-group-type-972"></a><a name="index-destgroup-type-973"></a>When called with an optional argument, as in
<pre class="example"> \hltype[<var>groups</var>]{<var>type</var>}
\hldesttype[<var>groups</var>]{<var>type</var>}
@@ -4064,7 +5026,7 @@ with an empty type (this is the initial setting for all groups, except
that the type for the `url' linkgroup is set to `<samp><span class="samp">url</span></samp>' by the
drivers which support this link type).
- <p><a name="index-group-_0060_0027-_0028empty_0029-828"></a><a name="index-default-hyperlink-type-829"></a><a name="index-default-hyperlink-options-830"></a><a name="index-hyperlinks_002c-default-type-831"></a><a name="index-hyperlinks_002c-default-options-832"></a><a name="index-destinations_002c-default-type-833"></a><a name="index-destinations_002c-default-options-834"></a>There are two special &ldquo;groups&rdquo; which can be used inside the
+ <p><a name="index-group-_0060_0027-_0028empty_0029-974"></a><a name="index-default-hyperlink-type-975"></a><a name="index-default-hyperlink-options-976"></a><a name="index-hyperlinks_002c-default-type-977"></a><a name="index-hyperlinks_002c-default-options-978"></a><a name="index-destinations_002c-default-type-979"></a><a name="index-destinations_002c-default-options-980"></a>There are two special &ldquo;groups&rdquo; which can be used inside the
<var>groups</var> list. An empty group sets the default type. This allows
to set the default type and group types in one command, for example:
@@ -4073,7 +5035,7 @@ to set the default type and group types in one command, for example:
<p class="noindent">sets the link type for the `eq' linkgroup and the
default link type to <var>type</var>.
- <p><a name="index-group-_0060_002a_0027-835"></a><a name="index-groups_002c-specifying-all-836"></a><a name="index-all-groups_002c-specifying-837"></a>Another special group is a star (`<samp><span class="samp">*</span></samp>') group, which signifies all
+ <p><a name="index-group-_0060_002a_0027-981"></a><a name="index-groups_002c-specifying-all-982"></a><a name="index-all-groups_002c-specifying-983"></a>Another special group is a star (`<samp><span class="samp">*</span></samp>') group, which signifies all
defined groups. For example, the command
<pre class="example"> \hldesttype[*,]{<var>type</var>}
@@ -4091,12 +5053,12 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Setting-hyperlink-types-and-options">S
<h4 class="subsection">5.5.3 Setting group options</h4>
-<p><a name="index-group_002c-options-hyperlink-838"></a><a name="index-hyperlinks_002c-group-options-839"></a><a name="index-link_002c-group-options-840"></a><a name="index-linkgroup_002c-options-841"></a><a name="index-destinations_002c-group-options-842"></a><a name="index-destgroup_002c-options-843"></a>Option values for each group are stored as a list of option
+<p><a name="index-group-options_002c-hyperlink-984"></a><a name="index-hyperlinks_002c-group-options-985"></a><a name="index-link_002c-group-options-986"></a><a name="index-linkgroup-options-987"></a><a name="index-destinations_002c-group-options-988"></a><a name="index-destgroup-options-989"></a>Option values for each group are stored as a list of option
assignments. This list does not have to contain every supported
option. Values for options missing from this list are taken from the
default option values.
- <p><a name="index-hlopts-844"></a><a name="index-hldestopts-845"></a>To manipulate the list of option values for the groups, you use the
+ <p><a name="index-hlopts-990"></a><a name="index-hldestopts-991"></a>To manipulate the list of option values for the groups, you use the
<code>\hlopts</code> and <code>\hldestopts</code> commands with an optional
argument:
@@ -4110,7 +5072,7 @@ argument:
two special &ldquo;groups&rdquo;, the empty group and the star (`<samp><span class="samp">*</span></samp>')
group, have the same meaning as for <code>\hltype</code> and
<code>\hldesttype</code>.
-<a name="index-group_002c-preserving-option-list-846"></a><a name="index-hyperlink-group_002c-preserving-option-list-847"></a><a name="index-option-list_002c-preserving-for-group-848"></a>When used without the exclamation mark, <code>\hlopts</code> and
+<a name="index-group_002c-preserving-option-list-992"></a><a name="index-hyperlink-group_002c-preserving-option-list-993"></a><a name="index-option-list_002c-preserving-for-group-994"></a>When used without the exclamation mark, <code>\hlopts</code> and
<code>\hldestopts</code> preserve the current list of options for the groups,
and only update the options listed in <var>options</var>. If you add the
exclamation mark, the current list of options for each group in
@@ -4122,9 +5084,9 @@ beginning of your document. On the other hand, when you want to
adjust some option(s) and leave others intact, you should use the
macros without the `<samp><span class="samp">!</span></samp>'.
- <p><a name="index-raise-_0040r_007b_0028hyperlink-option_0029_007d-849"></a><a name="index-mathematics-displays_002c-hyperlinks-850"></a><a name="index-displayed-math-and-hyperlinks-851"></a><a name="index-large-operators-and-hyperlinks-852"></a><a name="index-hyperlinks_002c-large-operators-853"></a><a name="index-destinations_002c-large-operators-854"></a><a name="index-raising-hyperlink-destinations-855"></a>For example, with displayed mathematical formulas, you often need to
+ <p><a name="index-raise-_0040r_007b_0028hyperlink-option_0029_007d-995"></a><a name="index-mathematics-displays_002c-hyperlinks-996"></a><a name="index-displayed-math-and-hyperlinks-997"></a><a name="index-large-operators-and-hyperlinks-998"></a><a name="index-hyperlinks_002c-large-operators-999"></a><a name="index-destinations_002c-large-operators-1000"></a><a name="index-raising-hyperlink-destinations-1001"></a>For example, with displayed mathematical formulas, you often need to
adjust the `<samp><span class="samp">raise</span></samp>' option for the
-<a name="index-group-_0060eq_0027-856"></a><a name="index-linkgroup-_0060eq_0027-857"></a>`eq' destgroup, because the formulas often contain large parentheses and
+<a name="index-group-_0060eq_0027-1002"></a><a name="index-linkgroup-_0060eq_0027-1003"></a>`eq' destgroup, because the formulas often contain large parentheses and
brackets. But when doing so, you want to leave the other settings
unchanged. To achieve this, call <code>\hldestopts</code> without the
`<samp><span class="samp">!</span></samp>', for example:
@@ -4138,7 +5100,7 @@ formula inside a (TeX) group (<code>\begingroup...\endgroup</code>), so
you do not need to isolate the setting of the `<samp><span class="samp">raise</span></samp>' option&mdash;it
will be restored after the closing `<samp><span class="samp">$$</span></samp>'.
- <p><a name="index-option-list_002c-group-858"></a><a name="index-group-option-list-859"></a><a name="index-hyperlinks_002c-group-option-list-860"></a>Initially, Eplain sets the option lists for almost all groups to empty,
+ <p><a name="index-option-list_002c-group-1004"></a><a name="index-group-option-list-1005"></a><a name="index-hyperlinks_002c-group-option-list-1006"></a>Initially, Eplain sets the option lists for almost all groups to empty,
so that the groups fall back on the default values for all options. The
one exception to this rule is the `eq' destgroup, whose initial option
list contains one setting:
@@ -4159,7 +5121,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Hyperlinks">Hyperlinks</a>
<h3 class="section">5.6 Turning hyperlinks on/off</h3>
-<p><a name="index-omitting-hyperlinks-861"></a><a name="index-disabling-hyperlinks-862"></a><a name="index-hyperlinks_002c-disabling-863"></a><a name="index-destinations_002c-disabling-864"></a>Links and/or destinations can be turned on or off globally by disabling
+<p><a name="index-omitting-hyperlinks-1007"></a><a name="index-disabling-hyperlinks-1008"></a><a name="index-hyperlinks_002c-disabling-1009"></a><a name="index-destinations_002c-disabling-1010"></a>Links and/or destinations can be turned on or off globally by disabling
the low-level commands, or for each group individually.
<p>All these settings are local to the current (TeX) group, so if you
@@ -4183,7 +5145,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Turning-hyperlinks-on_002foff">Turning
<h4 class="subsection">5.6.1 Turning low-level commands on/off</h4>
-<p><a name="index-hldeston-865"></a><a name="index-hldestoff-866"></a><a name="index-hlon-867"></a><a name="index-hloff-868"></a>The low-level commands <code>\hlstart</code>, <code>\hlend</code> and
+<p><a name="index-hldeston-1011"></a><a name="index-hldestoff-1012"></a><a name="index-hlon-1013"></a><a name="index-hloff-1014"></a>The low-level commands <code>\hlstart</code>, <code>\hlend</code> and
<code>\hldest</code> can be turned on/off with the following commands:
<pre class="example"> \hldeston
@@ -4205,7 +5167,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Turning-hyperlinks-on_002foff">Turning
<h4 class="subsection">5.6.2 Turning hyperlinks on/off for a group</h4>
-<p><a name="index-group_002c-disabling-hyperlinks-869"></a><a name="index-hyperlink-group_002c-disabling-hyperlinks-870"></a>If you want to disable links/destinations produced by certain groups,
+<p><a name="index-group_002c-disabling-hyperlinks-1015"></a><a name="index-hyperlink-group_002c-disabling-hyperlinks-1016"></a>If you want to disable links/destinations produced by certain groups,
you can give a list of the groups as an optional argument to these
commands:
@@ -4282,14 +5244,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Arrow-theoretic-diagrams">Arrow theore
<h3 class="section">6.1 Slanted lines and vectors</h3>
<p>The macros <code>\drawline</code>
-<a name="index-drawline-871"></a>and <code>\drawvector</code>
-<a name="index-drawvector-872"></a>provide the capability found in LaTeX's
-<a name="index-g_t_0040LaTeX_007b_007d-873"></a><a name="index-picture-mode-874"></a>picture mode to draw slanted lines and vectors of certain directions.
+<a name="index-drawline-1017"></a>and <code>\drawvector</code>
+<a name="index-drawvector-1018"></a>provide the capability found in LaTeX's
+<a name="index-g_t_0040LaTeX_007b_007d-1019"></a><a name="index-picture-mode-1020"></a>picture mode to draw slanted lines and vectors of certain directions.
Both of these macros take three arguments: two integer arguments to
specify the direction of the line or vector, and one argument to specify
its length. For example, `<samp><span class="samp">\drawvector(-4,1){60pt}</span></samp>' produces the
vector
-<a name="index-lines-875"></a><a name="index-vectors-876"></a>which lies in the 2d quadrant, has a slope of minus 1/4, and a width of
+<a name="index-lines-1021"></a><a name="index-vectors-1022"></a>which lies in the 2d quadrant, has a slope of minus 1/4, and a width of
60 pt.
<p>Note that if an <code>\hbox</code> is placed around <code>\drawline</code> or
@@ -4328,7 +5290,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Arrow-theoretic-diagrams">Arrow theore
<h3 class="section">6.2 Commutative diagrams</h3>
-<p><a name="index-commutative-diagrams-877"></a>
+<p><a name="index-commutative-diagrams-1023"></a>
The primitive commands <code>\drawline</code> and <code>\drawvector</code> can be
used to typeset arrow theoretic diagrams. This section describes (1)
macros to facilitate typesetting arrows and morphisms, and (2) macros to
@@ -4351,56 +5313,56 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Commutative-diagrams">Commutative diag
<h4 class="subsection">6.2.1 Arrows and morphisms</h4>
-<p><a name="index-arrows-878"></a><a name="index-morphisms-879"></a>
+<p><a name="index-arrows-1024"></a><a name="index-morphisms-1025"></a>
The macros <code>\mapright</code> and <code>\mapleft</code> produce right and left
-<a name="index-mapright-880"></a><a name="index-mapleft-881"></a>pointing arrows, respectively. Use superscript (<code>^</code>) to place a
+<a name="index-mapright-1026"></a><a name="index-mapleft-1027"></a>pointing arrows, respectively. Use superscript (<code>^</code>) to place a
morphism above the arrow, e.g., `<samp><span class="samp">\mapright^\alpha</span></samp>'; use subscript
(<code>_</code>) to place a morphism below the arrow, e.g.,
`<samp><span class="samp">\mapright_{\tilde l}</span></samp>'. Superscripts and subscripts may be used
simulataneously, e.g., `<samp><span class="samp">\mapright^\pi_{\rm epimor.}</span></samp>'.
<p>Similarly, the macros <code>\mapup</code> and <code>\mapdown</code> produce up and
-<a name="index-mapup-882"></a><a name="index-mapdown-883"></a>down pointing arrows, respectively. Use <code>\rt</code>
-<a name="index-rt-884"></a>to place a morphism to the right of the arrow, e.g., `<samp><span class="samp">\mapup\rt{\rm
+<a name="index-mapup-1028"></a><a name="index-mapdown-1029"></a>down pointing arrows, respectively. Use <code>\rt</code>
+<a name="index-rt-1030"></a>to place a morphism to the right of the arrow, e.g., `<samp><span class="samp">\mapup\rt{\rm
id}</span></samp>'; use <code>\lft</code>
-<a name="index-lft-885"></a>to place a morphism to the left of the arrow, e.g., `<samp><span class="samp">\mapup\lft\omega</span></samp>'.
+<a name="index-lft-1031"></a>to place a morphism to the left of the arrow, e.g., `<samp><span class="samp">\mapup\lft\omega</span></samp>'.
<code>\lft</code> and <code>\rt</code> may be used simultaneously, e.g.,
`<samp><span class="samp">\mapdown\lft\pi\rt{\rm monomor.}</span></samp>'.
<p>Slanted arrows are produced by the macro <code>\arrow</code>, which takes
-<a name="index-arrow-886"></a>a direction argument (e.g., `<samp><span class="samp">\arrow(3,-4)</span></samp>'). Use <code>\rt</code> and
+<a name="index-arrow-1032"></a>a direction argument (e.g., `<samp><span class="samp">\arrow(3,-4)</span></samp>'). Use <code>\rt</code> and
<code>\lft</code> to place morphisms to the right and left, respectively, of
the arrow. A slanted line (no arrowhead) is produced with the macro
<code>\sline</code>,
-<a name="index-sline-887"></a>whose syntax is identical to that of <code>\arrow</code>.
+<a name="index-sline-1033"></a>whose syntax is identical to that of <code>\arrow</code>.
<p>The length of these macros is predefined by the default TeX
dimensions <code>\harrowlength</code>,
-<a name="index-harrowlength-888"></a>for horizontal arrows (or lines),
+<a name="index-harrowlength-1034"></a>for horizontal arrows (or lines),
<code>\varrowlength</code>,
-<a name="index-varrowlength-889"></a>for vertical arrows (or lines), and
+<a name="index-varrowlength-1035"></a>for vertical arrows (or lines), and
<code>\sarrowlength</code>,
-<a name="index-sarrowlength-890"></a>for slanted arrows (or lines). To change any of these dimensions, say,
+<a name="index-sarrowlength-1036"></a>for slanted arrows (or lines). To change any of these dimensions, say,
e.g., `<samp><span class="samp">\harrowlength=40pt</span></samp>'. As with all other TeX dimensions,
the change may be as global or as local as you like. Furthermore, the
placement of morphisms on the arrows is controlled by the dimensions
<code>\hmorphposn</code>,
-<a name="index-hmorphposn-891"></a><code>\vmorphposn</code>,
-<a name="index-vmorphposn-892"></a>and <code>\morphdist</code>.
-<a name="index-morphdist-893"></a>The first two dimensions control the horizontal and vertical position of
+<a name="index-hmorphposn-1037"></a><code>\vmorphposn</code>,
+<a name="index-vmorphposn-1038"></a>and <code>\morphdist</code>.
+<a name="index-morphdist-1039"></a>The first two dimensions control the horizontal and vertical position of
the morphism from its default position; the latter dimension controls
the distance of the morphism from the arrow. If you have more than one
morphism per arrow (i.e., a <code>^</code>/<code>_</code> or <code>\lft</code>/<code>\rt</code>
construction), use the parameters
<code>\hmorphposnup</code>,
-<a name="index-hmorphposnup-894"></a><code>\hmorphposndn</code>,
-<a name="index-hmorphposndn-895"></a><code>\vmorphposnup</code>,
-<a name="index-vmorphposnup-896"></a><code>\vmorphposndn</code>,
-<a name="index-vmorphposndn-897"></a><code>\hmorphposnrt</code>,
-<a name="index-hmorphposnrt-898"></a><code>\hmorphposnlft</code>,
-<a name="index-hmorphposnlft-899"></a><code>\vmorphposnrt</code>,
-<a name="index-vmorphposnrt-900"></a>and <code>\vmorphposnlft</code>.
-<a name="index-vmorphposnlft-901"></a>The default values of all these dimensions are provided in the section
+<a name="index-hmorphposnup-1040"></a><code>\hmorphposndn</code>,
+<a name="index-hmorphposndn-1041"></a><code>\vmorphposnup</code>,
+<a name="index-vmorphposnup-1042"></a><code>\vmorphposndn</code>,
+<a name="index-vmorphposndn-1043"></a><code>\hmorphposnrt</code>,
+<a name="index-hmorphposnrt-1044"></a><code>\hmorphposnlft</code>,
+<a name="index-hmorphposnlft-1045"></a><code>\vmorphposnrt</code>,
+<a name="index-vmorphposnrt-1046"></a>and <code>\vmorphposnlft</code>.
+<a name="index-vmorphposnlft-1047"></a>The default values of all these dimensions are provided in the section
on parameters that follows below.
<p>There is a family of macros to produce horizontal lines, arrows, and
@@ -4408,21 +5370,21 @@ adjoint arrows. The following macros produce horizontal maps and have
the same syntax as <code>\mapright</code>:
<dl>
-<dt><code>\mapright</code><dd><a name="index-mapright-902"></a><code>$X\mapright Y$</code>
+<dt><code>\mapright</code><dd><a name="index-mapright-1048"></a><code>$X\mapright Y$</code>
- <br><dt><code>\mapleft</code><dd><a name="index-mapleft-903"></a><code>$X\mapleft Y$</code>
+ <br><dt><code>\mapleft</code><dd><a name="index-mapleft-1049"></a><code>$X\mapleft Y$</code>
- <br><dt><code>\hline</code><dd><a name="index-hline-904"></a><code>$X\hline Y$</code>
+ <br><dt><code>\hline</code><dd><a name="index-hline-1050"></a><code>$X\hline Y$</code>
- <br><dt><code>\bimapright</code><dd><a name="index-bimapright-905"></a><code>$X\bimapright Y$</code>
+ <br><dt><code>\bimapright</code><dd><a name="index-bimapright-1051"></a><code>$X\bimapright Y$</code>
- <br><dt><code>\bimapleft</code><dd><a name="index-bimapleft-906"></a><code>$X\bimapleft Y$</code>
+ <br><dt><code>\bimapleft</code><dd><a name="index-bimapleft-1052"></a><code>$X\bimapleft Y$</code>
- <br><dt><code>\adjmapright</code><dd><a name="index-adjmapright-907"></a><code>$X\adjmapright Y$</code>
+ <br><dt><code>\adjmapright</code><dd><a name="index-adjmapright-1053"></a><code>$X\adjmapright Y$</code>
- <br><dt><code>\adjmapleft</code><dd><a name="index-adjmapleft-908"></a><code>$X\adjmapleft Y$</code>
+ <br><dt><code>\adjmapleft</code><dd><a name="index-adjmapleft-1054"></a><code>$X\adjmapleft Y$</code>
- <br><dt><code>\bihline</code><dd><a name="index-bihline-909"></a><code>$X\bihline Y$</code>
+ <br><dt><code>\bihline</code><dd><a name="index-bihline-1055"></a><code>$X\bihline Y$</code>
</dl>
<p>There is also a family of macros to produce vertical lines, arrows, and
@@ -4430,21 +5392,21 @@ adjoint arrows. The following macros produce vertical maps and have
the same syntax as <code>\mapdown</code>:
<dl>
-<dt><code>\mapdown</code><dd><a name="index-mapdown-910"></a>(a down arrow)
+<dt><code>\mapdown</code><dd><a name="index-mapdown-1056"></a>(a down arrow)
- <br><dt><code>\mapup</code><dd><a name="index-mapup-911"></a>(an up arrow)
+ <br><dt><code>\mapup</code><dd><a name="index-mapup-1057"></a>(an up arrow)
- <br><dt><code>\vline</code><dd><a name="index-vline-912"></a>(vertical line)
+ <br><dt><code>\vline</code><dd><a name="index-vline-1058"></a>(vertical line)
- <br><dt><code>\bimapdown</code><dd><a name="index-bimapdown-913"></a>(two down arrows)
+ <br><dt><code>\bimapdown</code><dd><a name="index-bimapdown-1059"></a>(two down arrows)
- <br><dt><code>\bimapup</code><dd><a name="index-bimapup-914"></a>(two up arrows)
+ <br><dt><code>\bimapup</code><dd><a name="index-bimapup-1060"></a>(two up arrows)
- <br><dt><code>\adjmapdown</code><dd><a name="index-adjmapdown-915"></a>(two adjoint arrows; down then up)
+ <br><dt><code>\adjmapdown</code><dd><a name="index-adjmapdown-1061"></a>(two adjoint arrows; down then up)
- <br><dt><code>\adjmapup</code><dd><a name="index-adjmapup-916"></a>(two adjoint arrows; up then down)
+ <br><dt><code>\adjmapup</code><dd><a name="index-adjmapup-1062"></a>(two adjoint arrows; up then down)
- <br><dt><code>\bivline</code><dd><a name="index-bivline-917"></a>(two vertical lines)
+ <br><dt><code>\bivline</code><dd><a name="index-bivline-1063"></a>(two vertical lines)
</dl>
<p>Finally, there is a family of macros to produce slanted lines, arrows,
@@ -4452,21 +5414,21 @@ and adjoint arrows. The following macros produce slanted maps and have
the same syntax as <code>\arrow</code>:
<dl>
-<dt><code>\arrow</code><dd><a name="index-arrow-918"></a>(a slanted arrow)
+<dt><code>\arrow</code><dd><a name="index-arrow-1064"></a>(a slanted arrow)
- <br><dt><code>\sline</code><dd><a name="index-sline-919"></a>(a slanted line)
+ <br><dt><code>\sline</code><dd><a name="index-sline-1065"></a>(a slanted line)
- <br><dt><code>\biarrow</code><dd><a name="index-biarrow-920"></a>(two straight arrows)
+ <br><dt><code>\biarrow</code><dd><a name="index-biarrow-1066"></a>(two straight arrows)
- <br><dt><code>\adjarrow</code><dd><a name="index-adjarrow-921"></a>(two adjoint arrows)
+ <br><dt><code>\adjarrow</code><dd><a name="index-adjarrow-1067"></a>(two adjoint arrows)
- <br><dt><code>\bisline</code><dd><a name="index-bisline-922"></a>(two straight lines)
+ <br><dt><code>\bisline</code><dd><a name="index-bisline-1068"></a>(two straight lines)
</dl>
<p>The width between double arrows is controlled by the parameter
<code>\channelwidth</code>.
-<a name="index-channelwidth-923"></a>The parameters <code>\hchannel</code> and <code>\vchannel</code>, if nonzero,
+<a name="index-channelwidth-1069"></a>The parameters <code>\hchannel</code> and <code>\vchannel</code>, if nonzero,
override <code>\channelwidth</code> by controlling the horizontal and vertical
shifting from the first arrow to the second.
@@ -4474,11 +5436,11 @@ shifting from the first arrow to the second.
epimorphisms from monomorphisms. Many texts, such as Lang's book
<cite>Algebra</cite>, use as a tasteful alternative the symbol `inc' (in roman) next
to an arrow to denote inclusion.
-<a name="index-Lang_002c-Serge-924"></a>
+<a name="index-Lang_002c-Serge-1070"></a>
Future enhancements will include a mechanism to draw curved arrows
found in, e.g., the Snake Lemma, by employing a version of the
<code>\path</code> macros of Appendix D of <cite>The TeXbook</cite>.
-<a name="index-Snake-Lemma-925"></a>
+<a name="index-Snake-Lemma-1071"></a>
<div class="node">
<p><hr>
@@ -4496,11 +5458,11 @@ described here. The first approach, and the simplest, treats
commutative diagrams like fancy matrices, as Knuth does in Exercise
18.46 of <cite>The TeXbook</cite>. This case is covered by the macro
<code>\commdiag</code>,
-<a name="index-commdiag-926"></a>which is an altered version of the Plain TeX macro <code>\matrix</code>.
-<a name="index-matrix-927"></a>An example suffices to demonstrate this macro. The following
+<a name="index-commdiag-1072"></a>which is an altered version of the Plain TeX macro <code>\matrix</code>.
+<a name="index-matrix-1073"></a>An example suffices to demonstrate this macro. The following
commutative diagram (illustrating the covering homotopy property; Bott
and Tu, <cite>Differential Forms in Algebraic Topology</cite>)
-<a name="index-Bott_002c-Raoul-928"></a><a name="index-Tu_002c-Loring-W_002e-929"></a><a name="index-covering-homotopy-property-930"></a>is produced with the code
+<a name="index-Bott_002c-Raoul-1074"></a><a name="index-Tu_002c-Loring-W_002e-1075"></a><a name="index-covering-homotopy-property-1076"></a>is produced with the code
<pre class="example"> $$\commdiag{Y&amp;\mapright^f&amp;E\cr \mapdown&amp;\arrow(3,2)\lft{f_t}&amp;\mapdown\cr
Y\times I&amp;\mapright^{\bar f_t}&amp;X}$$
@@ -4509,7 +5471,7 @@ and Tu, <cite>Differential Forms in Algebraic Topology</cite>)
The following commutative diagram (illustrating the universal mapping
property; Warner, <cite>Foundations of Differentiable Manifolds and Lie
Groups</cite>)
-<a name="index-Warner_002c-Frank-W_002e-931"></a><a name="index-universal-mapping-property-932"></a>is produced with the code
+<a name="index-Warner_002c-Frank-W_002e-1077"></a><a name="index-universal-mapping-property-1078"></a>is produced with the code
<pre class="example"> $$\varrowlength=20pt
\commdiag{V\otimes W\cr \mapup\lft\phi&amp;\arrow(3,-1)\rt{\tilde l}\cr
@@ -4519,7 +5481,7 @@ Groups</cite>)
of the triangle in the center column, as shown in the example
(illustrating all constant minimal realizations of a linear system;
Brockett, <cite>Finite Dimensional Linear Systems</cite>)
-<a name="index-Brockett_002c-Roger-W_002e-933"></a><a name="index-minimal-realizations-934"></a><a name="index-linear-systems-theory-935"></a>which is produced with the code
+<a name="index-Brockett_002c-Roger-W_002e-1079"></a><a name="index-minimal-realizations-1080"></a><a name="index-linear-systems-theory-1081"></a>which is produced with the code
<pre class="example"> $$\sarrowlength=.42\harrowlength
\commdiag{&amp;R^m\cr &amp;\arrow(-1,-1)\lft{\bf B}\quad \arrow(1,-1)\rt{\bf G}\cr
@@ -4537,13 +5499,13 @@ chosen to blend with each other. In the first example, the default
settings for the arrow lengths are used, but a direction for the arrow
must be chosen. The ratio of the default horizontal and vertical arrow
lengths is approximately the golden mean
-<a name="index-golden-mean-936"></a><a name="index-golden-mean-937"></a>the arrow direction closest to this mean is <code>(3,2)</code>. In the second
+<a name="index-golden-mean-1082"></a><a name="index-golden-mean-1083"></a>the arrow direction closest to this mean is <code>(3,2)</code>. In the second
example, a slope of
is desired and the default horizontal arrow length is 60 pt; therefore,
choose a vertical arrow length of 20 pt. You may affect the interline
glue settings of <code>\commdiag</code> by redefining the macro
<code>\commdiagbaselines</code>.
-<a name="index-commdiagbaselines-938"></a>(cf. Exercise 18.46 of <cite>The TeXbook</cite> and the section on
+<a name="index-commdiagbaselines-1084"></a>(cf. Exercise 18.46 of <cite>The TeXbook</cite> and the section on
parameters below.)
<p>The width, height, and depth of all morphisms are hidden so that the
@@ -4560,12 +5522,12 @@ approach, borrowed from Francis Borceux's <cite>Diagram</cite> macros for
LaTeX, treats the commutative diagram like a grid of identically
shaped boxes. To compose the commutative diagram, first draw an equally
spaced grid, e.g.,
-<a name="index-grid-939"></a><a name="index-Borceux_002c-Francis-940"></a><a name="index-Diagram_002c-macros-for-LaTeX-941"></a>on a piece of scratch paper. Then draw each element (vertices and
+<a name="index-grid-1085"></a><a name="index-Borceux_002c-Francis-1086"></a><a name="index-Diagram_002c-macros-for-LaTeX-1087"></a>on a piece of scratch paper. Then draw each element (vertices and
arrows) of the commutative diagram on this grid, centered at each
grid point. Finally, use the macro <code>\gridcommdiag</code>
-<a name="index-gridcommdiag-942"></a>to implement your design as a TeX alignment. For example, the cubic
+<a name="index-gridcommdiag-1088"></a>to implement your design as a TeX alignment. For example, the cubic
diagram
-<a name="index-cube-943"></a>that appears in Francis Borceux's documentation can be implemented on
+<a name="index-cube-1089"></a>that appears in Francis Borceux's documentation can be implemented on
a 7 by 7 grid, and is achieved with the code
<pre class="example"> $$\harrowlength=48pt \varrowlength=48pt \sarrowlength=20pt
@@ -4581,7 +5543,7 @@ a 7 by 7 grid, and is achieved with the code
E&amp;&amp;\mapright_k&amp;&amp;G\cr}$$
</pre>
<p>The dimensions <code>\hgrid</code> and <code>\vgrid</code>
-<a name="index-hgrid-944"></a><a name="index-vgrid-945"></a>control the horizontal and vertical spacing of the grid used by
+<a name="index-hgrid-1090"></a><a name="index-vgrid-1091"></a>control the horizontal and vertical spacing of the grid used by
<code>\gridcommdiag</code>. The default setting for both of these dimensions
is 15 pt. Note that in the example of the cube the arrow lengths must
be adjusted so that the arrows overlap into neighboring boxes by the
@@ -4595,7 +5557,7 @@ of the morphisms are adjusted by setting <code>\hmorphposn</code> and
<p>One is not restricted to a square grid. For example, the proof of
Zassenhaus's Butterfly Lemma can be illustrated by the diagram (appearing
in Lang's book <cite>Algebra</cite>)
-<a name="index-Zassenhaus_002c-Hans-946"></a><a name="index-Lang_002c-Serge-947"></a><a name="index-Butterfly-Lemma-948"></a>This diagram may be implemented on a 9 by 12 grid with an aspect ratio
+<a name="index-Zassenhaus_002c-Hans-1092"></a><a name="index-Lang_002c-Serge-1093"></a><a name="index-Butterfly-Lemma-1094"></a>This diagram may be implemented on a 9 by 12 grid with an aspect ratio
of 1/2, and is set with the code
<pre class="example"> $$\hgrid=16pt \vgrid=8pt \sarrowlength=32pt
@@ -4637,46 +5599,46 @@ commutative diagram macros. These dimensions may be changed globally or
locally.
<dl>
-<dt><code>\harrowlength</code><dd><a name="index-harrowlength-949"></a>(Default: 60 pt) The length of right or left arrows.
+<dt><code>\harrowlength</code><dd><a name="index-harrowlength-1095"></a>(Default: 60 pt) The length of right or left arrows.
- <br><dt><code>\varrowlength</code><dd><a name="index-varrowlength-950"></a>(Default: 0.618<code>\harrowlength</code>) The length of up or down
+ <br><dt><code>\varrowlength</code><dd><a name="index-varrowlength-1096"></a>(Default: 0.618<code>\harrowlength</code>) The length of up or down
arrows.
- <br><dt><code>\sarrowlength</code><dd><a name="index-sarrowlength-951"></a>(Default: 60 pt) The horizontal length of slanted arrows.
+ <br><dt><code>\sarrowlength</code><dd><a name="index-sarrowlength-1097"></a>(Default: 60 pt) The horizontal length of slanted arrows.
- <br><dt><code>\hmorphposn</code><dd><a name="index-hmorphposn-952"></a>(Default: 0 pt) The horizontal position of the morphism with
+ <br><dt><code>\hmorphposn</code><dd><a name="index-hmorphposn-1098"></a>(Default: 0 pt) The horizontal position of the morphism with
respect to its default position. There are also the dimensions
<code>\hmorphposnup</code>,
-<a name="index-hmorphposnup-953"></a><code>\hmorphposndn</code>,
-<a name="index-hmorphposndn-954"></a><code>\hmorphposnrt</code>,
-<a name="index-hmorphposnrt-955"></a>and <code>\hmorphposnlft</code>
-<a name="index-hmorphposnlft-956"></a>for <code>^</code>/<code>_</code> or <code>\lft</code>/<code>\rt</code> constructions.
+<a name="index-hmorphposnup-1099"></a><code>\hmorphposndn</code>,
+<a name="index-hmorphposndn-1100"></a><code>\hmorphposnrt</code>,
+<a name="index-hmorphposnrt-1101"></a>and <code>\hmorphposnlft</code>
+<a name="index-hmorphposnlft-1102"></a>for <code>^</code>/<code>_</code> or <code>\lft</code>/<code>\rt</code> constructions.
- <br><dt><code>\vmorphposn</code><dd><a name="index-vmorphposn-957"></a>(Default: 0 pt) The vertical position of the morphism with
+ <br><dt><code>\vmorphposn</code><dd><a name="index-vmorphposn-1103"></a>(Default: 0 pt) The vertical position of the morphism with
respect to its default position. There are also the dimensions
<code>\vmorphposnup</code>,
-<a name="index-vmorphposnup-958"></a><code>\vmorphposndn</code>,
-<a name="index-vmorphposndn-959"></a><code>\vmorphposnrt</code>,
-<a name="index-vmorphposnrt-960"></a>and <code>\vmorphposnlft</code>
-<a name="index-vmorphposnlft-961"></a>for <code>^</code>/<code>_</code> or <code>\lft</code>/<code>\rt</code> constructions.
+<a name="index-vmorphposnup-1104"></a><code>\vmorphposndn</code>,
+<a name="index-vmorphposndn-1105"></a><code>\vmorphposnrt</code>,
+<a name="index-vmorphposnrt-1106"></a>and <code>\vmorphposnlft</code>
+<a name="index-vmorphposnlft-1107"></a>for <code>^</code>/<code>_</code> or <code>\lft</code>/<code>\rt</code> constructions.
- <br><dt><code>\morphdist</code><dd><a name="index-morphdist-962"></a>(Default: 4 pt) The distance of morphisms from slanted lines
+ <br><dt><code>\morphdist</code><dd><a name="index-morphdist-1108"></a>(Default: 4 pt) The distance of morphisms from slanted lines
or arrows.
- <br><dt><code>\channelwidth</code><dd><a name="index-channelwidth-963"></a>(Default: 3 pt) The distance between double lines or arrows.
+ <br><dt><code>\channelwidth</code><dd><a name="index-channelwidth-1109"></a>(Default: 3 pt) The distance between double lines or arrows.
- <br><dt><code>\hchannel, \vchannel</code><dd><a name="index-hchannel-964"></a><a name="index-vchannel-965"></a>(Defaults: 0 pt) Overrides <code>\channelwidth</code>. The
+ <br><dt><code>\hchannel, \vchannel</code><dd><a name="index-hchannel-1110"></a><a name="index-vchannel-1111"></a>(Defaults: 0 pt) Overrides <code>\channelwidth</code>. The
horizontal and vertical shifts between double lines or arrows.
- <br><dt><code>\commdiagbaselines</code><dd><a name="index-commdiagbaselines-966"></a>(Default: <code>\baselineskip=15pt
+ <br><dt><code>\commdiagbaselines</code><dd><a name="index-commdiagbaselines-1112"></a>(Default: <code>\baselineskip=15pt
\lineskip=3pt
\lineskiplimit=3pt </code>)
The parameters used by <code>\commdiag</code> for setting interline glue.
- <br><dt><code>\hgrid</code><dd><a name="index-hgrid-967"></a>(Default: 15 pt) The horizontal spacing of the grid used by
+ <br><dt><code>\hgrid</code><dd><a name="index-hgrid-1113"></a>(Default: 15 pt) The horizontal spacing of the grid used by
<code>\gridcommdiag</code>.
- <br><dt><code>\vgrid</code><dd><a name="index-vgrid-968"></a>(Default: 15 pt) The vertical spacing of the grid used by
+ <br><dt><code>\vgrid</code><dd><a name="index-vgrid-1114"></a>(Default: 15 pt) The vertical spacing of the grid used by
<code>\gridcommdiag</code>.
</dl>
@@ -4686,7 +5648,7 @@ The parameters used by <code>\commdiag</code> for setting interline glue.
<div class="node">
<p><hr>
<a name="Programming-definitions"></a>
-Next:&nbsp;<a rel="next" accesskey="n" href="#Macro-index">Macro index</a>,
+Next:&nbsp;<a rel="next" accesskey="n" href="#Demo-files">Demo files</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Arrow-theoretic-diagrams">Arrow theoretic diagrams</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
@@ -4700,7 +5662,7 @@ are writing nontrivial macros, not when writing a document.
<ul class="menu">
<li><a accesskey="1" href="#Category-codes">Category codes</a>: Changing category codes.
<li><a accesskey="2" href="#Allocation-macros">Allocation macros</a>: Non-outer versions of \newcount et al.
-<li><a accesskey="3" href="#Iteration">Iteration</a>: Doing `for' loops in TeX.
+<li><a accesskey="3" href="#Iteration">Iteration</a>: Doing `for' and `while' loops in TeX.
<li><a accesskey="4" href="#Macro-arguments">Macro arguments</a>: Reading and ignoring them.
<li><a accesskey="5" href="#Converting-to-characters">Converting to characters</a>: Normalizing control sequences and spaces.
<li><a accesskey="6" href="#Expansion">Expansion</a>: Controlling expansion.
@@ -4722,30 +5684,30 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Programming-definitions">Programming d
<h3 class="section">7.1 Category codes</h3>
-<p><a name="index-category-codes-969"></a>
+<p><a name="index-category-codes-1115"></a>
Plain TeX defines <code>\active</code> (as the number 13) for use in
changing category codes. Although the author of <cite>The TeXbook</cite>
-<a name="index-Knuth_002c-Donald-Ervin-970"></a>has &ldquo;intentionally kept the category codes numeric&rdquo;, two other
+<a name="index-Knuth_002c-Donald-Ervin-1116"></a>has &ldquo;intentionally kept the category codes numeric&rdquo;, two other
categories are commonly used: letters (category code 11) and others
(12). Therefore, Eplain defines <code>\letter</code> and
<code>\other</code>.
-<a name="index-letter-971"></a><a name="index-other-972"></a>
+<a name="index-letter-1117"></a><a name="index-other-1118"></a>
Sometimes it is cleaner to make a character active without actually
-<a name="index-active-characters-973"></a>writing a <code>\catcode</code> command. The <code>\makeactive</code> command takes
-<a name="index-catcode-974"></a><a name="index-makeactive-975"></a>a character as an argument to make active (and ignores following
+<a name="index-active-characters-1119"></a>writing a <code>\catcode</code> command. The <code>\makeactive</code> command takes
+<a name="index-catcode-1120"></a><a name="index-makeactive-1121"></a>a character as an argument to make active (and ignores following
spaces). For example, here are two commands which both make <kbd>\</kbd>
active:
-<a name="index-backslash-character-976"></a>
-<pre class="example"> \makeactive`\\ \makeactive92
+<a name="index-backslash-character-1122"></a>
+<pre class="example"> \makeactive\\ \makeactive92
</pre>
- <p><a name="index-user_002dinaccessible-macros-977"></a><a name="index-inaccessible-macros-978"></a>Sometimes you might want to temporarily change the category code of
+ <p><a name="index-user_002dinaccessible-macros-1123"></a><a name="index-inaccessible-macros-1124"></a>Sometimes you might want to temporarily change the category code of
the `@' character to <code>\letter</code>, so that you can use or define
macros which are normally inaccessible to the user. For such
situations, Eplain provides the <code>\makeatletter</code>
-<a name="index-makeatletter-979"></a>command. It sets the category code of `@' to <code>\letter</code> (11) and
+<a name="index-makeatletter-1125"></a>command. It sets the category code of `@' to <code>\letter</code> (11) and
defines
<code>\resetatcatcode</code>
-<a name="index-resetatcatcode-980"></a>to restore the category code to whatever it was before the call to
+<a name="index-resetatcatcode-1126"></a>to restore the category code to whatever it was before the call to
<code>\makeatletter</code>. For example:
<pre class="example"> \makeatletter
@@ -4754,17 +5716,17 @@ defines
\resetatcatcode
</pre>
<p class="noindent">There is also <code>\makeatother</code>
-<a name="index-makeatother-981"></a>which works similarly but sets the category code of `@' to
+<a name="index-makeatother-1127"></a>which works similarly but sets the category code of `@' to
<code>\other</code> (12).
<p>Usually, when you give a definition to an active character, you have
to do so inside a group where you temporarily make the character active,
and then give it a global definition (cf. the definition of
<code>\obeyspaces</code> in <cite>The TeXbook</cite>).
-<a name="index-definitions_002c-global-982"></a>This is inconvenient if you are writing a long macro, or if the
+<a name="index-definitions_002c-global-1128"></a>This is inconvenient if you are writing a long macro, or if the
character already has a global definition you do not wish to transcend.
Eplain provides <code>\letreturn</code>, which defines the usual end-of-line
-<a name="index-letreturn-983"></a><a name="index-return-character-984"></a>character to be the argument. For example:
+<a name="index-letreturn-1129"></a><a name="index-return-character-1130"></a>character to be the argument. For example:
<pre class="example"> \def\mymacro{... \letreturn\myreturn ... }
\mymacro hello
@@ -4774,17 +5736,17 @@ Eplain provides <code>\letreturn</code>, which defines the usual end-of-line
<code>\myreturn</code> to be expanded.
<p><cite>The TeXbook</cite> describes <code>\uncatcodespecials</code>,
-<a name="index-uncatcodespecials-985"></a>which makes all characters which are normally &ldquo;special&rdquo; into &ldquo;other&rdquo;
+<a name="index-uncatcodespecials-1131"></a>which makes all characters which are normally &ldquo;special&rdquo; into &ldquo;other&rdquo;
characters, but the definition never made it into plain TeX.
Eplain therefore defines it.
<p>Finally, <code>\percentchar</code>
-<a name="index-percentchar-986"></a>expands into a literal `%' character. This is useful when you
+<a name="index-percentchar-1132"></a>expands into a literal `%' character. This is useful when you
<code>\write</code> TeX output to a file, and want to avoid spurious
spaces. For example, Eplain writes a <code>\percentchar</code> after the
definition of cross-references. The macros <code>\lbracechar</code>
-<a name="index-lbracechar-987"></a>and <code>\rbracechar</code>
-<a name="index-rbracechar-988"></a>expand similarly.
+<a name="index-lbracechar-1133"></a>and <code>\rbracechar</code>
+<a name="index-rbracechar-1134"></a>expand similarly.
<div class="node">
<p><hr>
@@ -4797,16 +5759,16 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Programming-definitions">Programming d
<h3 class="section">7.2 Allocation macros</h3>
-<p><a name="index-allocation-macros-989"></a><a name="index-register-allocation-990"></a>
+<p><a name="index-allocation-macros-1135"></a><a name="index-register-allocation-1136"></a>
Plain TeX provides macros that allocate registers of each primitive
type in TeX, to prevent different sets of macros from using the same
register for two different things. The macros are all named starting
with `<samp><span class="samp">new</span></samp>',
-<a name="index-new_0040dots_007b_007d-991"></a>e.g., <code>\newcount</code> allocates a new &ldquo;count&rdquo;
+<a name="index-new_0040dots_007b_007d-1137"></a>e.g., <code>\newcount</code> allocates a new &ldquo;count&rdquo;
(integer) register. Such allocations are usually needed only at the top
level of some macro definition file; therefore, plain TeX makes the
allocation registers <code>\outer</code>,
-<a name="index-outer-992"></a>to help find errors. (The error this helps to find is a missing right
+<a name="index-outer-1138"></a>to help find errors. (The error this helps to find is a missing right
brace in some macro definition.)
<p>Sometimes, however, it is useful to allocate a register as part of
@@ -4817,22 +5779,22 @@ or in conditional text that is being skipped). Therefore, Eplain
defines &ldquo;inner&rdquo; versions of all the allocation macros, named with the
prefix `<samp><span class="samp">inner</span></samp>':
<code>\innernewbox</code>,
-<a name="index-innernewbox-993"></a><code>\innernewcount</code>,
-<a name="index-innernewcount-994"></a><code>\innernewdimen</code>,
-<a name="index-innernewdimen-995"></a><code>\innernewfam</code>,
-<a name="index-innernewfam-996"></a><code>\innernewhelp</code>,
-<a name="index-innernewhelp-997"></a><code>\innernewif</code>,
-<a name="index-innernewif-998"></a><code>\innernewinsert</code>,
-<a name="index-innernewinsert-999"></a><code>\innernewlanguage</code>,
-<a name="index-innernewlanguage-1000"></a><code>\innernewread</code>,<br>
-<a name="index-innernewread-1001"></a><code>\innernewskip</code>,
-<a name="index-innernewskip-1002"></a><code>\innernewtoks</code>,
-<a name="index-innernewtoks-1003"></a><code>\innernewwrite</code>.
-<a name="index-innernewwrite-1004"></a>
+<a name="index-innernewbox-1139"></a><code>\innernewcount</code>,
+<a name="index-innernewcount-1140"></a><code>\innernewdimen</code>,
+<a name="index-innernewdimen-1141"></a><code>\innernewfam</code>,
+<a name="index-innernewfam-1142"></a><code>\innernewhelp</code>,
+<a name="index-innernewhelp-1143"></a><code>\innernewif</code>,
+<a name="index-innernewif-1144"></a><code>\innernewinsert</code>,
+<a name="index-innernewinsert-1145"></a><code>\innernewlanguage</code>,
+<a name="index-innernewlanguage-1146"></a><code>\innernewread</code>,<br>
+<a name="index-innernewread-1147"></a><code>\innernewskip</code>,
+<a name="index-innernewskip-1148"></a><code>\innernewtoks</code>,
+<a name="index-innernewtoks-1149"></a><code>\innernewwrite</code>.
+<a name="index-innernewwrite-1150"></a>
You can also define non-outer versions of other macros in the same way
that Eplain defines the above. The basic macro is called
<code>\innerdef</code>:
-<a name="index-innerdef-1005"></a>
+<a name="index-innerdef-1151"></a>
<pre class="example"> \innerdef <var>\innername</var> {<var>outername</var>}
</pre>
<p>The first argument (<var>\innername</var>) to <code>\innerdef</code> is the
@@ -4845,7 +5807,7 @@ since it's outer!)
<p>If the outer control sequence is named <var>\cs</var>, and you want to
define <code>inner</code><var>cs</var> as the inner one, you can use
<code>\innerinnerdef</code>,
-<a name="index-innerinnerdef-1006"></a>which is just an abbreviation for a call to <code>\innerdef</code>. For
+<a name="index-innerinnerdef-1152"></a>which is just an abbreviation for a call to <code>\innerdef</code>. For
example, these two calls are equivalent:
<pre class="example"> \innerdef\innerproclaim{proclaim}
@@ -4862,26 +5824,73 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Programming-definitions">Programming d
<h3 class="section">7.3 Iteration</h3>
-<p><a name="index-iteration-1007"></a><a name="index-for-loops-1008"></a>
+<p><a name="index-iteration-1153"></a><a name="index-loops-1154"></a><a name="index-for-loops-1155"></a><a name="index-while-loops-1156"></a><a name="index-do_0040dots_007b_007dwhile-loops-1157"></a>
You can iterate through a comma-separated list of items with
<code>\for</code>.
-<a name="index-for-1009"></a>Here is an example:
+<a name="index-for-1158"></a>Here is an example:
<pre class="example"> \for\name:=karl,kathy\do{%
\message{\name}%
}%
</pre>
- <p>This writes `<samp><span class="samp">karl</span></samp>' and `<samp><span class="samp">kathy</span></samp>' to the terminal. Spaces
+ <p class="noindent">This writes `<samp><span class="samp">karl</span></samp>' and `<samp><span class="samp">kathy</span></samp>' to the terminal. Spaces
before or after the commas in the list, or after the <code>:=</code>, are
-<em>not</em> ignored.
+<em>not</em> ignored. To strip leading spaces off the items, use
+<code>\For</code>:
+<a name="index-For-1159"></a>
+<pre class="example"> \For\name:=
+ karl,
+ kathy\do{%
+ \message{\name}%
+ }%
+</pre>
+ <p class="noindent">Note that trailing spaces are still <em>not</em> ignored.
- <p><code>\for</code> expands the iterated values fully (with <code>\edef</code>), so
-this is equivalent to the above:
+ <p>Both <code>\for</code> and <code>\For</code> expand the first token of the item
+list fully, so this is equivalent to the above:
<pre class="example"> \def\namelist{karl,kathy}%
\for\name:=\namelist\do ...
</pre>
- <div class="node">
+ <p class="noindent">However, this won't work, either with <code>\for</code> or with
+<code>\For</code>:
+
+<pre class="example"> \def\namelist{karl,kathy}%
+ \For\name:= \namelist\do ...
+</pre>
+ <p class="noindent">because <code>\for</code> and <code>\For</code> expand the first
+token after <code>:=</code> which is space, not <code>\namelist</code>.
+
+ <p>Eplain provides another kind of loops, which is an extension of plain
+TeX's
+<a name="index-loop-1160"></a><code>\loop</code>. If you say:
+
+ <p><a name="index-repeat-1161"></a>
+<pre class="example"> \loop
+ <var>loop-text</var>
+ \if <var>condition</var>
+ <var>if-text</var>
+ \repeat
+</pre>
+ <p class="noindent">then <var>loop-text</var> will be repeated as long as <var>condition</var>
+is satisfied (<code>\if</code> can be any of the TeX's conditional
+commands, without the matching <code>\fi</code>). Eplain extends this with
+the optional else clause:
+
+<pre class="example"> \loop
+ <var>loop-text</var>
+ \if <var>condition</var>
+ <var>if-text</var>
+ \else
+ <var>else-text</var>
+ \repeat
+</pre>
+ <p class="noindent">Here, <var>loop-text</var> will be repeated as long as
+<var>condition</var> is <em>not</em> satisfied. This extension is from
+<a name="index-Eijkhout_002c-Victor-1162"></a>Victor Eijkhout's
+<a name="index-g_t_0040i_007b_0040TeX_007b_007d-by-Topic_007d-1163"></a><i>TeX by Topic</i> (page&nbsp;<!-- /@w -->104).
+
+<div class="node">
<p><hr>
<a name="Macro-arguments"></a>
Next:&nbsp;<a rel="next" accesskey="n" href="#Converting-to-characters">Converting to characters</a>,
@@ -4892,14 +5901,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Programming-definitions">Programming d
<h3 class="section">7.4 Macro arguments</h3>
-<p><a name="index-arguments_002c-ignoring-1010"></a><a name="index-ignoring-arguments-1011"></a><a name="index-gobbling-arguments-1012"></a>It is occasionally useful to redefine a macro that takes arguments to
+<p><a name="index-arguments_002c-ignoring-1164"></a><a name="index-ignoring-arguments-1165"></a><a name="index-gobbling-arguments-1166"></a>It is occasionally useful to redefine a macro that takes arguments to
do nothing. Eplain defines <code>\gobble</code>,
-<a name="index-gobble-1013"></a><code>\gobbletwo</code>,
-<a name="index-gobbletwo-1014"></a>and <code>\gobblethree</code> to swallow one, two, and three arguments,
+<a name="index-gobble-1167"></a><code>\gobbletwo</code>,
+<a name="index-gobbletwo-1168"></a>and <code>\gobblethree</code> to swallow one, two, and three arguments,
respectively.
<p>For example, if you want to produce a &ldquo;short&rdquo; table of
-<a name="index-table-of-contents_002c-short-1015"></a>contents&mdash;one that includes only chapters, say&mdash;the easiest thing to
+<a name="index-table-of-contents_002c-short-1169"></a>contents&mdash;one that includes only chapters, say&mdash;the easiest thing to
do is read the entire <code>.toc</code> file (see <a href="#Contents">Contents</a>), and just
ignore the commands that produce section or subsection entries. To be
specific:
@@ -4913,13 +5922,13 @@ specific:
subsections in your document.)
<p>In addition, Eplain defines <code>\eattoken</code>
-<a name="index-eattoken-1016"></a>to swallow the single following token, using <code>\let</code>. Thus,
+<a name="index-eattoken-1170"></a>to swallow the single following token, using <code>\let</code>. Thus,
<code>\gobble</code> followed by `<samp><span class="samp">{...}</span></samp>' ignores the entire
brace-enclosed text. <code>\eattoken</code> followed by the same ignores only
the opening left brace.
<p>Eplain defines a macro <code>\identity</code>
-<a name="index-identity-1017"></a>which takes one argument and expands to that argument. This may be
+<a name="index-identity-1171"></a>which takes one argument and expands to that argument. This may be
useful if you want to provide a function for the user to redefine, but
don't need to do anything by default. (For example, the default
definition of <code>\eqconstruct</code> (see <a href="#Formatting-equation-references">Formatting equation references</a>) is <code>\identity</code>.)
@@ -4962,8 +5971,8 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Programming-definitions">Programming d
<h3 class="section">7.5 Converting to characters</h3>
-<p><a name="index-characters_002c-converting-to-1018"></a>Eplain defines <code>\xrlabel</code>
-<a name="index-xrlabel-1019"></a>to produce control sequence names for cross-reference labels, et al.
+<p><a name="index-characters_002c-converting-to-1172"></a>Eplain defines <code>\xrlabel</code>
+<a name="index-xrlabel-1173"></a>to produce control sequence names for cross-reference labels, et al.
This macro expands to its argument with an `<samp><span class="samp">_</span></samp>' appended. (It does
this because the usual use of <code>\xrlabel</code> is to generate a control
sequence name, and we naturally want to avoid conflicts between control
@@ -4971,6 +5980,7 @@ sequence names.)
<p>Because <code>\xrlabel</code> is fully expandable, to make a control
sequence name out of the result you need only do
+
<pre class="example"> <code>\csname \xrlabel{</code><var>label</var><code>}\endcsname</code>
</pre>
<p class="noindent">The <code>\csname</code> primitive makes a control sequence name out
@@ -4979,7 +5989,7 @@ Labels can therefore include any characters except for `<samp><span class="samp"
`<samp><span class="samp">{</span></samp>', `<samp><span class="samp">}</span></samp>', and `<samp><span class="samp">#</span></samp>', all of which are used in macro
definitions themselves.
- <p><a name="index-sanitize-1020"></a><code>\sanitize</code> takes a control sequence as an argument and converts
+ <p><a name="index-sanitize-1174"></a><code>\sanitize</code> takes a control sequence as an argument and converts
the expansion of the control sequence into a list of character tokens.
This is the behavior you want when writing information like chapter
titles to an output file. For example, here is part of the definition
@@ -5015,7 +6025,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Programming-definitions">Programming d
<li><a accesskey="4" href="#Properties">Properties</a>: Associating information with a csname.
<li><a accesskey="5" href="#g_t_005cexpandonce">\expandonce</a>
<li><a accesskey="6" href="#g_t_005cifundefined">\ifundefined</a>
-<li><a accesskey="7" href="#g_t_005cfuturenonspacelet">\futurenonspacelet</a>
+<li><a accesskey="7" href="#g_t_005cifempty">\ifempty</a>
+<li><a accesskey="8" href="#g_t_005cifinteger-and-_005cisinteger">\ifinteger and \isinteger</a>
+<li><a accesskey="9" href="#g_t_005cfuturenonspacelet">\futurenonspacelet</a>
</ul>
<div class="node">
@@ -5029,11 +6041,11 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Expansion">Expansion</a>
<h4 class="subsection">7.6.1 <code>\csn</code> and <code>\ece</code></h4>
-<p><a name="index-csn-1021"></a><code>\csn</code>{<var>name</var>} simply abbreviates <code>\csname</code> <var>name</var>
+<p><a name="index-csn-1175"></a><code>\csn</code>{<var>name</var>} simply abbreviates <code>\csname</code> <var>name</var>
<code>\endcsname</code>, thus saving some typing. The extra level of expansion
does take some time, though, so I don't recommend it for an inner loop.
- <p><a name="index-ece-1022"></a><code>\ece</code>{<var>token</var>}{<var>name</var>} abbreviates
+ <p><a name="index-ece-1176"></a><code>\ece</code>{<var>token</var>}{<var>name</var>} abbreviates
<pre class="example"> \expandafter <var>token</var> \csname <var>name</var> \endcsname
</pre>
@@ -5057,7 +6069,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Expansion">Expansion</a>
<h4 class="subsection">7.6.2 <code>\edefappend</code></h4>
-<p><a name="index-edefappend-1023"></a><code>\edefappend</code> is a way of adding on to an existing definition. It
+<p><a name="index-edefappend-1177"></a><code>\edefappend</code> is a way of adding on to an existing definition. It
takes two arguments: the first is the control sequence name, the second
the new tokens to append to the definition. The second argument is
fully expanded (in the <code>\edef</code> that redefines the control sequence).
@@ -5081,7 +6093,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Expansion">Expansion</a>
<h4 class="subsection">7.6.3 Hooks</h4>
-<p><a name="index-hooks-1024"></a>A <dfn>hook</dfn> is simply a name for a group of actions which is executed
+<p><a name="index-hooks-1178"></a>A <dfn>hook</dfn> is simply a name for a group of actions which is executed
in certain places&mdash;presumably when it is most useful to allow
customization or modification. TeX already provides many builtin
hooks; for example, the <code>\every ...</code> token lists are all
@@ -5091,12 +6103,12 @@ examples of hooks.
take two arguments: the name of the hook and the new actions.
-<a name="index-hookaction-1025"></a>
-<dl><dt><code>hookaction </code><var>name</var> <var>actions</var><dd><a name="index-hookappend-1026"></a><dt><code>hookappend </code><var>name</var> <var>actions</var><dd><a name="index-hookprepend-1027"></a><br><dt><code>hookprepend </code><var>name</var> <var>actions</var><dd>Each of these adds <var>actions</var> to the hook <var>name</var>. (Any
+<a name="index-hookaction-1179"></a>
+<dl><dt><code>hookaction </code><var>name</var> <var>actions</var><dd><a name="index-hookappend-1180"></a><dt><code>hookappend </code><var>name</var> <var>actions</var><dd><a name="index-hookprepend-1181"></a><br><dt><code>hookprepend </code><var>name</var> <var>actions</var><dd>Each of these adds <var>actions</var> to the hook <var>name</var>. (Any
previously-defined actions are retained.) <var>name</var> is not a control
sequence, but rather the characters of the name.
- <p><a name="index-hookactiononce-1028"></a><br><dt><code>hookactiononce </code><var>name</var><code> \</code><var>cs</var><dd><code>\hookactiononce</code> adds <var>cs</var> to <var>name</var>, like the macros
+ <p><a name="index-hookactiononce-1182"></a><br><dt><code>hookactiononce </code><var>name</var><code> \</code><var>cs</var><dd><code>\hookactiononce</code> adds <var>cs</var> to <var>name</var>, like the macros
above, but first it adds
<pre class="example"> \global\let <var>\cs</var> \relax
@@ -5112,7 +6124,7 @@ Neither this nor the other hook macros do global assignments to the hook
variable itself, so TeX's usual grouping rules apply.
</dl>
- <p><a name="index-hookrun-1029"></a>The companion macro to defining hook actions is <code>\hookrun</code>, for
+ <p><a name="index-hookrun-1183"></a>The companion macro to defining hook actions is <code>\hookrun</code>, for
running them. This takes a single argument, the name of the hook. If
no actions for the hook are defined, no error ensues.
@@ -5139,7 +6151,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Expansion">Expansion</a>
<h4 class="subsection">7.6.4 Properties</h4>
-<p><a name="index-properties-1030"></a><a name="index-atom-1031"></a>A <dfn>property</dfn> is a name/value pair associated with another symbol,
+<p><a name="index-properties-1184"></a><a name="index-atom-1185"></a>A <dfn>property</dfn> is a name/value pair associated with another symbol,
traditionally called an <dfn>atom</dfn>. Both atom and property names are
control sequence names.
@@ -5147,12 +6159,12 @@ control sequence names.
<code>\setproperty</code> and <code>\getproperty</code>.
-<a name="index-setproperty-1032"></a>
+<a name="index-setproperty-1186"></a>
<dl><dt><code>\setproperty </code><var>atom</var> <var>propname</var> <var>value</var><dd><code>\setproperty</code> defines the property <var>property</var> on the atom
<var>atom</var> to be <var>value</var>. <var>atom</var> and <var>propname</var> can be
anything acceptable to <code>\csname</code>. <var>value</var> can be anything.
- <p><a name="index-getproperty-1033"></a><br><dt><code>\getproperty </code><var>atom</var> <var>propname</var><dd><code>\getproperty</code> expands to the value stored for <var>propname</var> on
+ <p><a name="index-getproperty-1187"></a><br><dt><code>\getproperty </code><var>atom</var> <var>propname</var><dd><code>\getproperty</code> expands to the value stored for <var>propname</var> on
<var>atom</var>. If <var>propname</var> is undefined, it expands to nothing
(i.e., <code>\empty</code>).
@@ -5180,7 +6192,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Expansion">Expansion</a>
<h4 class="subsection">7.6.5 <code>\expandonce</code></h4>
-<p><a name="index-expansion_002c-one_002dlevel-1034"></a><a name="index-expandonce-1035"></a><code>\expandonce</code> is defined as <code>\expandafter\noexpand</code>. Thus,
+<p><a name="index-expansion_002c-one_002dlevel-1188"></a><a name="index-expandonce-1189"></a><code>\expandonce</code> is defined as <code>\expandafter\noexpand</code>. Thus,
<code>\expandonce </code><var>token</var> expands <var>token</var> once, instead of to
TeX primitives. This is most useful in an <code>\edef</code>.
@@ -5195,7 +6207,7 @@ TeX primitives. This is most useful in an <code>\edef</code>.
<p><hr>
<a name="%5cifundefined"></a>
<a name="g_t_005cifundefined"></a>
-Next:&nbsp;<a rel="next" accesskey="n" href="#g_t_005cfuturenonspacelet">\futurenonspacelet</a>,
+Next:&nbsp;<a rel="next" accesskey="n" href="#g_t_005cifempty">\ifempty</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="#g_t_005cexpandonce">\expandonce</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="#Expansion">Expansion</a>
@@ -5203,11 +6215,11 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Expansion">Expansion</a>
<h4 class="subsection">7.6.6 <code>\ifundefined</code></h4>
-<p><a name="index-ifundefined-1036"></a><code>\ifundefined{</code><var>cs</var><code>} </code><var>t</var><code> \else </code><var>f</var><code> \fi</code> expands the
+<p><a name="index-ifundefined-1190"></a><code>\ifundefined{</code><var>cs</var><code>} </code><var>t</var><code> \else </code><var>f</var><code> \fi</code> expands the
<var>t</var> text if the control sequence <code>\</code><var>cs</var> is undefined or
has been <code>\let</code> to <code>\relax</code>, and the <var>f</var> text otherwise.
- <p><a name="index-skipping-tokens-1037"></a><a name="index-undefined-control-sequence_002c-checking-for-1038"></a>Since <code>\ifundefined</code> is not a primitive conditional, it cannot be
+ <p><a name="index-skipping-tokens-1191"></a><a name="index-undefined-control-sequence_002c-checking-for-1192"></a>Since <code>\ifundefined</code> is not a primitive conditional, it cannot be
used in places where TeX might skip tokens &ldquo;at high speed&rdquo;, e.g.,
within another conditional&mdash;TeX can't match up the <code>\if</code>'s and
<code>\fi</code>'s.
@@ -5216,16 +6228,83 @@ within another conditional&mdash;TeX can't match up the <code>\if</code>'s and
<div class="node">
<p><hr>
+<a name="%5cifempty"></a>
+<a name="g_t_005cifempty"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="#g_t_005cifinteger-and-_005cisinteger">\ifinteger and \isinteger</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#g_t_005cifundefined">\ifundefined</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Expansion">Expansion</a>
+
+</div>
+
+<h4 class="subsection">7.6.7 <code>\ifempty</code></h4>
+
+<p><a name="index-ifempty-1193"></a><a name="index-empty-string_002c-checking-for-1194"></a><a name="index-empty-argument_002c-checking-for-1195"></a><code>\ifempty{</code><var>arg</var><code>} </code><var>t</var><code> \else </code><var>f</var><code> \fi</code> expands the
+<var>t</var> text if <var>arg</var> is the empty string, and the <var>f</var> text
+otherwise. This macro is useful when you need to test for empty
+arguments to your macros, for example:
+
+<pre class="example"> \def\foo#1{\ifempty{#1} <var>t</var> \else <var>f</var> \fi}
+</pre>
+ <p><a name="index-skipping-tokens-1196"></a>Since <code>\ifempty</code> is not a primitive conditional, it cannot be
+used in places where TeX might skip tokens &ldquo;at high speed&rdquo;, e.g.,
+within another conditional&mdash;TeX can't match up the <code>\if</code>'s and
+<code>\fi</code>'s.
+
+ <p>Note that the following code
+
+<pre class="example"> \def\empty{}
+ \ifempty\empty\message{empty}\else\message{not empty}\fi
+</pre>
+ <p class="noindent">will produce the message `<samp><span class="samp">not empty</span></samp>'.
+
+<div class="node">
+<p><hr>
+<a name="%5cifinteger-and-%5cisinteger"></a>
+<a name="g_t_005cifinteger-and-_005cisinteger"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="#g_t_005cfuturenonspacelet">\futurenonspacelet</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#g_t_005cifempty">\ifempty</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Expansion">Expansion</a>
+
+</div>
+
+<h4 class="subsection">7.6.8 <code>\ifinteger</code> and <code>\isinteger</code></h4>
+
+<p><a name="index-ifinteger-1197"></a><a name="index-integers_002c-detecting-1198"></a><a name="index-numbers_002c-detecting-1199"></a><a name="index-detecting-numbers-1200"></a><a name="index-identifying-numbers-1201"></a><a name="index-recognizing-numbers-1202"></a><code>\ifinteger{</code><var>arg</var><code>} </code><var>t</var><code> \else </code><var>f</var><code> \fi</code> expands the
+<var>t</var> text if <var>arg</var> is an integer, and the <var>f</var> text
+otherwise. This macro can detect positive and negative integers.
+
+ <p>Since <code>\ifinteger</code> is not a primitive conditional, it cannot be
+used in places where TeX might skip tokens &ldquo;at high speed&rdquo;, e.g.,
+within another conditional&mdash;TeX can't match up the <code>\if</code>'s
+and <code>\fi</code>'s. For such situations Eplain provides
+<a name="index-isinteger-1203"></a><code>\isinteger</code>, which can be used as follows:
+
+<pre class="example"> \if\isinteger{<var>arg</var>} <var>t</var> \else <var>f</var> \fi
+</pre>
+ <p>Although <code>\ifinteger</code> and <code>\isinteger</code> work well
+with regular input, they are not bullet-proof. For example, the
+following code
+
+<pre class="example"> \ifinteger{12_ab}integer\else not integer\fi
+</pre>
+ <p class="noindent">will expand to `<samp><span class="samp">ab_integer</span></samp>' (and thus would not
+even compile outside math mode).
+
+ <p><a name="index-g_t_0040TeX_007b_007d-Frequently-Asked-Question-1204"></a>These macros come from TeX Frequently Asked Question
+(<a href="http://www.tex.ac.uk/cgi-bin/texfaq2html">http://www.tex.ac.uk/cgi-bin/texfaq2html</a>).
+
+<div class="node">
+<p><hr>
<a name="%5cfuturenonspacelet"></a>
<a name="g_t_005cfuturenonspacelet"></a>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#g_t_005cifundefined">\ifundefined</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#g_t_005cifinteger-and-_005cisinteger">\ifinteger and \isinteger</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="#Expansion">Expansion</a>
</div>
-<h4 class="subsection">7.6.7 <code>\futurenonspacelet</code></h4>
+<h4 class="subsection">7.6.9 <code>\futurenonspacelet</code></h4>
-<p><a name="index-lookahead-without-spaces-1039"></a><a name="index-spaces_002c-ignoring-1040"></a><a name="index-futurenonspacelet-1041"></a>The <code>\futurelet</code> primitive allows you to look at the next token
+<p><a name="index-lookahead-without-spaces-1205"></a><a name="index-spaces_002c-ignoring-1206"></a><a name="index-futurenonspacelet-1207"></a>The <code>\futurelet</code> primitive allows you to look at the next token
from the input. Sometimes, though, you want to look ahead ignoring any
spaces. This is what <code>\futurenonspacelet</code> does. It is otherwise
the same as <code>\futurelet</code>: you give it two control sequences as
@@ -5246,7 +6325,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Programming-definitions">Programming d
<h3 class="section">7.7 Obeying spaces</h3>
-<p><a name="index-whitespace-1042"></a><a name="index-spaces_002c-obeying-1043"></a><a name="index-newlines_002c-obeying-1044"></a><a name="index-obeywhitespace-1045"></a>
+<p><a name="index-whitespace-1208"></a><a name="index-spaces_002c-obeying-1209"></a><a name="index-newlines_002c-obeying-1210"></a><a name="index-obeywhitespace-1211"></a>
<code>\obeywhitespace</code> makes both end-of-lines and space characters in
the input be respected in the output. Unlike plain TeX's
<code>\obeyspaces</code>, even spaces at the beginnings of lines turn into
@@ -5259,14 +6338,14 @@ what <code>\ </code> produces.
<p>Ordinarily, a blank line in the input produces as much blank vertical
space as a line of text would occupy. You can adjust this by assigning
to the parameter <code>\blanklineskipamount</code>:
-<a name="index-blanklineskipamount-_0040r_007bin-obeyed-text_007d-1046"></a>if you set this negative, the space produced by a blank line will be
+<a name="index-blanklineskipamount-_0040r_007bin-obeyed-text_007d-1212"></a>if you set this negative, the space produced by a blank line will be
smaller; if positive, larger.
<p>Tabs are not affected by this routine. In particular, if tabs occur
at the beginning of a line, they will disappear. (If you are trying to
make TeX do the &ldquo;right thing&rdquo; with tabs, don't. Use a utility
program like <i>expand</i> instead.)
-<a name="index-tabs-1047"></a>
+<a name="index-tabs-1213"></a>
<div class="node">
<p><hr>
@@ -5279,8 +6358,8 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Programming-definitions">Programming d
<h3 class="section">7.8 Writing out numbers</h3>
-<p><a name="index-numbers_002c-written-form-of-1048"></a> <code>\numbername</code>
-<a name="index-numbername-1049"></a>produces the written-out form of its argument, i.e., `zero' through
+<p><a name="index-numbers_002c-written-form-of-1214"></a> <code>\numbername</code>
+<a name="index-numbername-1215"></a>produces the written-out form of its argument, i.e., `zero' through
`ten' for the numbers 0&ndash;10, and numerals for all others.
<div class="node">
@@ -5300,7 +6379,7 @@ current list, no matter what kind of list it is. You might intend a
particular penalty to always be a &ldquo;vertical&rdquo; penalty, however, i.e.,
appended to a vertical list. Therefore, Eplain provides
<code>\vpenalty</code>
-<a name="index-vpenalty-1050"></a>and <code>\hpenalty</code>
+<a name="index-vpenalty-1216"></a>and <code>\hpenalty</code>
which first leave the other mode and then do <code>\penalty</code>.
<p>More precisely, <code>\vpenalty</code> inserts <code>\par</code> if the current
@@ -5319,12 +6398,12 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Programming-definitions">Programming d
<h3 class="section">7.10 Auxiliary files</h3>
-<p><a name="index-axuiliary-files_002c-existence-of-1051"></a>It is common to write some information out to a file to be used on a
+<p><a name="index-axuiliary-files_002c-existence-of-1217"></a>It is common to write some information out to a file to be used on a
subsequent run. But when it is time to read the file again, you only
want to do so if the file actually exists. <code>\testfileexistence</code>
-<a name="index-testfileexistence-1052"></a>is given an argument which is appended to <code>\jobname</code>,
-<a name="index-jobname-1053"></a>and sets the conditional <code>\iffileexists</code>
-<a name="index-iffileexists-1054"></a><a name="index-fileexists-_0040r_007b_0028conditional_0029_007d-1055"></a>appropriately. For example:
+<a name="index-testfileexistence-1218"></a>is given an argument which is appended to <code>\jobname</code>,
+<a name="index-jobname-1219"></a>and sets the conditional <code>\iffileexists</code>
+<a name="index-iffileexists-1220"></a><a name="index-fileexists-_0040r_007b_0028conditional_0029_007d-1221"></a>appropriately. For example:
<pre class="example"> \testfileexistence{toc}%
\iffileexists
@@ -5353,7 +6432,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Programming-definitions">Programming d
<h3 class="section">7.11 User-defined environments</h3>
-<p><a name="index-environments_002c-user_002ddefined-1056"></a>Plain TeX does not provide &ldquo;named&rdquo; block structures, only the anonymous
+<p><a name="index-environments_002c-user_002ddefined-1222"></a>Plain TeX does not provide &ldquo;named&rdquo; block structures, only the anonymous
<code>\begingroup</code> and <code>\endgroup</code> pair. The disadvantage of this
is that when there are several such groups and one is mismatched, it can
be difficult to find the error. Eplain provides a named block structure
@@ -5373,6 +6452,7 @@ it.
}
</pre>
<p class="noindent">which could then be used to set italicized paragraphs:
+
<pre class="example"> \itpar
If I reprehend anything in this world, it is the use of my oracular
tongue, and a nice derangement of epitaphs!
@@ -5393,7 +6473,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Programming-definitions">Programming d
<h3 class="section">7.12 Page list and page range parsers</h3>
-<p><a name="index-idxparselist-1057"></a><a name="index-idxparserange-1058"></a><a name="index-idxpagei-1059"></a><a name="index-idxpageii-1060"></a>The macros which Eplain uses to parse the page lists and ranges in the
+<p><a name="index-idxparselist-1223"></a><a name="index-idxparserange-1224"></a><a name="index-idxpagei-1225"></a><a name="index-idxpageii-1226"></a>The macros which Eplain uses to parse the page lists and ranges in the
index, <code>\idxparselist</code> and <code>\idxparserange</code> (see <a href="#Page-destinations-for-index-terms">Page destinations for index terms</a>), are sometimes useful when defining page
number encapsulators. They take one argument, text to parse. When a
page list (range) is not present, they set <code>\idxpagei</code> to be
@@ -5401,7 +6481,7 @@ page list (range) is not present, they set <code>\idxpagei</code> to be
<code>\idxpagei</code> and <code>\idxpageii</code> to the first and the second page
numbers, respectively.
- <p><a name="index-setidxpagelistdelimiter-1061"></a><a name="index-setidxpagerangedelimiter-1062"></a>Eplain's defaults for the page list and page range delimiters are the
+ <p><a name="index-setidxpagelistdelimiter-1227"></a><a name="index-setidxpagerangedelimiter-1228"></a>Eplain's defaults for the page list and page range delimiters are the
same as those in MakeIndex, a comma followed by a space (`<samp><span class="samp">, </span></samp>') and
two dashes (`<samp><span class="samp">--</span></samp>'), respectively. If you customize MakeIndex to use
different delimiters, you must not forget to let Eplain know about them
@@ -5412,14 +6492,14 @@ with the commands
</pre>
<p class="noindent">These commands save the <var>list-delim</var> and
<var>page-delim</var> delimiters in
-<a name="index-idxpagelistdelimiter-1063"></a><a name="index-idxpagerangedelimiter-1064"></a><code>\idxpagelistdelimiter</code> and <code>\idxpagerangedelimiter</code>,
+<a name="index-idxpagelistdelimiter-1229"></a><a name="index-idxpagerangedelimiter-1230"></a><code>\idxpagelistdelimiter</code> and <code>\idxpagerangedelimiter</code>,
respectively.
- <p><a name="index-underlining-page-numbers-in-index-1065"></a><a name="index-index_002c-underlining-page-numbers-1066"></a><a name="index-ituline-1067"></a>For example, you may want to define a page number markup command which
+ <p><a name="index-underlining-page-numbers-in-index-1231"></a><a name="index-index_002c-underlining-page-numbers-1232"></a><a name="index-ituline-1233"></a>For example, you may want to define a page number markup command which
italicizes and properly underlines page ranges by underlining only the
page numbers and not the delimiter:
- <p><a name="index-idxpagerangedelimiter-1068"></a>
+ <p><a name="index-idxpagerangedelimiter-1234"></a>
<pre class="example"> \def\ituline#1{%
{\it
\idxparserange{#1}%
@@ -5439,12 +6519,316 @@ calling the user's page encapsulator (see <a href="#Page-destinations-for-index-
need to design a macro which also takes care of the lists, you can
extend <code>\ituline</code> with an additional call to <code>\idxparselist</code>.
+<!-- This is part of the Eplain manual. Public domain. -->
+<div class="node">
+<p><hr>
+<a name="Demo-files"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Macro-index">Macro index</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Programming-definitions">Programming definitions</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">8 Demo files</h2>
+
+<p><a name="index-demo-files-1235"></a>This chapter contains listings of source files, along with the output
+they produce (where appropriate), which illustrate various aspects of
+Eplain. The files can be found in the <samp><span class="command">demo</span></samp> subdirectory of
+Eplain distribution. These demos, both the sources and the compiled PDF
+and PS files, are also available from <a href="http://tug.org/eplain/demo">http://tug.org/eplain/demo</a>.
+
+<ul class="menu">
+<li><a accesskey="1" href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a>
+<li><a accesskey="2" href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">Highlighting TeX comments in listings (lscommnt.tex)</a>
+</ul>
+
+<div class="node">
+<p><hr>
+<a name="Hyperlinks-(xhyper.tex)"></a>
+<a name="Hyperlinks-_0028xhyper_002etex_0029"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">Highlighting TeX comments in listings (lscommnt.tex)</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Demo-files">Demo files</a>
+
+</div>
+
+<h3 class="section">8.1 Hyperlinks (<code>xhyper.tex</code>)</h3>
+
+<div class="block-image"><img src="xhyper.jpg" alt="xhyper.jpg"></div>
+
+ <p><a name="index-xhyper_002etex-1236"></a>
+<a name="index-hyperlinks_002c-demo-1237"></a><a name="index-explicit-hyperlinks_002c-demo-1238"></a><a name="index-hyperlinks_002c-explicit_002c-demo-1239"></a><a name="index-implicit-hyperlinks_002c-demo-1240"></a><a name="index-hyperlinks_002c-implicit_002c-demo-1241"></a>
+<a name="index-hlstart-1242"></a><a name="index-hlend-1243"></a>
+<a name="index-group-options_002c-hyperlink_002c-demo-1244"></a><a name="index-hyperlinks_002c-group-options_002c-demo-1245"></a><a name="index-link_002c-group-options_002c-demo-1246"></a><a name="index-linkgroup-options_002c-demo-1247"></a><a name="index-destinations_002c-group-options_002c-demo-1248"></a><a name="index-destgroup-options_002c-demo-1249"></a>
+<a name="index-group-type_002c-hyperlink_002c-demo-1250"></a><a name="index-destinations_002c-group-type_002c-demo-1251"></a><a name="index-destgroup-type_002c-demo-1252"></a>
+<a name="index-hlopts-1253"></a><a name="index-hldesttype-1254"></a><a name="index-hldestopts-1255"></a>
+<a name="index-cross_002dreferences_002c-demo-1256"></a><a name="index-definexref-1257"></a><a name="index-ref-1258"></a>
+<a name="index-graphics-collection_002c-_0040LaTeX_007b_007d_002c-demo-1259"></a><a name="index-g_t_0040LaTeX_007b_007d-graphics-collection_002c-demo-1260"></a><a name="index-color_002c-demo-1261"></a><a name="index-rotation_002c-demo-1262"></a><a name="index-scaling_002c-demo-1263"></a><a name="index-color_002esty-1264"></a><a name="index-graphicx_002esty-1265"></a><a name="index-url_002esty-1266"></a>
+<a name="index-includegraphics-1267"></a><a name="index-rotatebox-1268"></a><a name="index-definecolor-1269"></a><a name="index-url-1270"></a>
+
+<pre class="verbatim">% (This file is public domain.)
+%
+% This file demonstrates the following features of Eplain:
+%
+% - explicit and implicit hyperlinks;
+% - symbolic cross-references;
+% - inserting external graphics using |\includegraphics| from
+% the \LaTeX\ package |graphicx.sty|.
+% - rotating text using |\rotatebox| from |graphicx.sty|.
+%
+% The compiled demo can be downloaded from
+%
+% http://tug.org/eplain/demo
+%
+% In order to compile this file yourself, you will need the CTAN lion
+% drawing by Duane Bibby from
+%
+% ftp://tug.ctan.org/ftpmaint/CTAN_lion/ctan_lion_350x350.png
+%
+% (thanks, |www.ctan.org|). Place the image file in the same
+% directory with this file, and change to that directory. Now, to
+% produce a PDF, run twice the command
+%
+% pdftex xhyper.tex
+%
+% During the first run, Eplain will write the information about the
+% cross-references into |xhyper.aux|, and during the second run this
+% information will be read by Eplain to typeset the references.
+%
+% Demo case:
+%
+% Suppose you are using pdf\TeX, have a figure you want to insert
+% scaled to $200\,pt$ horizontally, and you want this figure to
+% completely fill the PDF viewer's window whenever the reader
+% selects a link pointing to this figure. Additionally, you want to
+% typeset some text as live hyperlinks, clicking on which will start
+% a Web browser and open a URL.
+
+\input eplain
+
+% Load \LaTeX\ packages.
+\beginpackages
+ % |url.sty| provides the |\url| command which we will use to typeset
+ % a URL. We request that |url.sty| be the version from June~27,
+ % 2005, or later, because earlier versions had problems interacting
+ % with plain \TeX.
+ \usepackage{url}[2005/06/27]
+ % |color.sty| provides support for colored text; all hyperlinks are
+ % automatically colored by Eplain when this package is loaded. We give
+ % the |dvipsnames| option because we want to use named colors from the
+ % |dvips| graphics driver.
+ \usepackage[dvipsnames]{color}
+ % Finally, we load |graphicx.sty|, for the macros |\includegraphics|
+ % and |\rotatebox|.
+ \usepackage{graphicx}
+\endpackages
+
+% Remember that hyperlinks are off by default. Therefore, we need to
+% enable them.
+\enablehyperlinks
+
+% Customize some hyperlink options. First, we set border width to~$0$
+% for all links to get rid of the default boxes around links (we
+% prefer colored links over the boxed links). Next, we say that all
+% links created by the |url| hyperlink group (which means the |\url|
+% command from |url.sty|) must be colored using the named color
+% |BlueViolet|.
+\hlopts{bwidth=0}
+\hlopts[url]{colormodel=named,color=BlueViolet}
+
+% Inhibit page numbering (we have only one page).
+\nopagenumbers
+
+% Define a class word for the cross-reference class |figure|. This
+% word, when defined, will be automatically prepended by Eplain to the
+% reference created by |\ref| (read on to see its use).
+\def\figureword{fig.}
+
+% Allocate a count register for the figure's number, and a box
+% register which we'll use to measure dimensions of the image.
+\newcount\fignumber
+\newbox\imgbox
+
+% Now comes the fun part--constructing the figure for the image of the
+% \CTAN\ lion. We define a macro
+%
+% \fig{LABEL}{FILENAME}{CAPTION}{WIDTH}
+%
+% which creates a figure using LABEL for the cross-reference and
+% hyperlink label, reading the image from file FILENAME, using CAPTION
+% to name the figure, and WIDTH to scale the image horizontally.
+\def\fig#1#2#3#4{%
+ % Leave some space above the figure. This will also ensure that we
+ % are in the vertical mode before we produce a |\vbox|.
+ \medskip
+ % Advance the figure number. |\global| ensures that the change to
+ % the count register is global, even when |\fig| is buried inside a
+ % group.
+ \global\advance\fignumber by 1
+ % We use |\includegraphics| (from |graphicx.sty|) to load the image,
+ % scaled to the specified width, into our ``measuring'' box
+ % |\imgbox|.
+ \setbox\imgbox = \hbox{\includegraphics[width=#4]{#2}}%
+ % To make the demo even more exciting, let's put the figure's
+ % caption to the left of the image into the |\indent| space of the
+ % new paragraph, and rotate the caption~$90^\circ$.
+ \textindent{%
+ \rotatebox{90}{F{\sc IGURE}~\the\fignumber. #3}%
+ }%
+ % Continue the paragraph by constructing a |\vbox| with the image of
+ % the lion. We use |\definexref| to define the cross-reference
+ % label.
+ \vbox{%
+ % In addition to the cross-reference label, |\definexref| will
+ % create a hyperlink destination with the same label. Therefore,
+ % we customize this destination to do what we need. We say that
+ % destination type for the hyperlink group |definexref| (to which
+ % |\definexref| belongs) should be |fitr|. This destination type
+ % will magnify the rectangle specified by the options |width|,
+ % |height| and |depth| to the PDF viewer's window. Therefore, we
+ % set those options accordingly with |\hldestopts| (notice the use
+ % of |depth| instead of |height|---we will want the rectangle to
+ % extend {\it downward}, to cover the image which will come
+ % next). Notice that these settings will be isolated within the
+ % current group (i.e., the |\vbox| we're constructing).
+ \hldesttype[definexref]{fitr}%
+ \hldestopts[definexref]{width=\wd\imgbox,height=0pt,depth=\ht\imgbox}%
+ % We define a symbolic label so that we can later refer
+ % to the figure with |\ref|. The command |\definexref| does
+ % exactly that. The last argument to |\definexref| specifies
+ % class of the label, which determines the word used by |\ref| in
+ % front of the reference text (remember that we've defined
+ % |\figureword| above).
+ \definexref{#1}{\the\fignumber}{figure}%
+ % Finally, produce the image which we've been stashing in the box
+ % register |\imgbox|.
+ \box\imgbox
+ }%
+ \medskip
+}
+
+% Create the figure.
+\fig{CTANlion}{ctan_lion_350x350}{Lion in the archives}{200pt}
+
+% Finished with the fun part, we can relax and typeset some
+% hyperlinks. The easiest way to do that is to use the |\ref|
+% cross-reference command. We can even pass an optional argument
+% (|the lion in|), which will be placed before the class word (|fig.|)
+% and become part of the link (to make sure the reader does not have
+% to aim too hard).
+Show me \ref[the lion in]{CTANlion}.
+
+% If you are the restless kind, here's another way to create a
+% hyperlink to the image: we create a link explicitly by using
+% |\hlstart ... \hlend|. We don't specify the link type, therefore
+% the default type |name| will be used (these are ``named links'',
+% i.e., links pointing to destinations identified by labels). In the
+% options argument, we specify that the border of the link should be
+% inverted when the user clicks the link (|hlight=O|), and also set
+% special color for this link, overriding the default dark-red. The
+% label for the destination is the same as the cross-reference label,
+% |CTANlion|.
+Show me
+\hlstart{}{hlight=O,colormodel=named,color=OliveGreen}{CTANlion}
+ the CTAN lion\hlend.
+
+% Let's now point somewhere outside our document. Eplain homepage is
+% a good target. In the similar spirit, let's consider two
+% approaches. The easy one is to use the |\url| command from
+% |url.sty|. Remember that we have customized the color of |url|
+% hyperlinks, so this one will show up with a different color than the
+% default dark-red.
+Take me to \url{http://tug.org/eplain}.
+
+% The second approach is to create an explicit URL link. We specify
+% yet another border highlighting mode, |P|, which means that the
+% region underneath the bounding box of the link will be drawn inset
+% into the page. Also, let's set the color of the hyperlink to an RGB
+% color |0.4,0.1,0.4|. Since we cannot use commas to separate the
+% color elements inside the options parameter to |\hlstart| (commas
+% there separate options), we have to first create a user-defined
+% color with |\definecolor| from |color.sty|, and use that in
+% |\hlstart|.
+\definecolor{mycolor}{rgb}{0.4,0.1,0.4}
+
+Take me to
+\hlstart{url}{hlight=P,colormodel=,color=mycolor}{http://tug.org/eplain}
+ Eplain homepage\hlend.
+
+\bye
+</pre>
+
+<div class="node">
+<p><hr>
+<a name="Highlighting-TeX-comments-in-listings-(lscommnt.tex)"></a>
+<a name="Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029"></a>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Demo-files">Demo files</a>
+
+</div>
+
+<h3 class="section">8.2 Highlighting TeX comments in listings (<code>lscommnt.tex</code>)</h3>
+
+<div class="block-image"><img src="lscommnt.jpg" alt="lscommnt.jpg"></div>
+
+ <p><a name="index-lscommnt_002etex-1271"></a>
+<a name="index-verbatim-listing_002c-demo-1272"></a><a name="index-listing-files_002c-demo-1273"></a><a name="index-files_002c-verbatim-listing-of_002c-demo-1274"></a><a name="index-comments_002c-highlighting-in-listings-1275"></a><a name="index-highlighting_002c-in-listings-1276"></a>
+<a name="index-listing-1277"></a><a name="index-setuplistinghook-1278"></a><a name="index-linenumberedlisting-1279"></a><a name="index-nolastlinelisting-1280"></a><a name="index-hlightcommentslisting-1281"></a>
+
+<pre class="verbatim">% (This file is public domain.)
+% Demonstrate how Eplain can be used to include a TeX source file
+% verbatim, typesetting comments in colored italic typewriter type.
+
+% Load Eplain and LaTeX's color.sty package.
+\input eplain
+\beginpackages \usepackage{color} \endpackages
+\nopagenumbers % Disable page numbers.
+\font\commentfont = cmitt10 % Font for the comments (italic \tt).
+% We'll define some `protected' macros with `@' in their names.
+\makeatletter
+% Define an equivalent of Eplain's \letreturn, to be able to assign
+% various actions to the (active) percent character.
+\begingroup \makeactive\%
+ \gdef\letpercent{\let%}
+\endgroup
+% The listing hook to be called in \setuplistinghook, see below. It
+% makes `%' active and assigns it a `start comment' action.
+\def\hlightcommentslisting{\makeactive\% \letpercent\start@comment}%
+% This is what `%' is aliased to before a comment is started.
+\def\start@comment{%
+ \leavevmode % Needed in the very first line of the input to process
+ % the new par (possibly inserting line number) before we
+ % kick in with the color and stuff.
+ \begingroup % Isolate color and font changes and the redefinitions.
+ \commentfont
+ \color[cmyk]{0.28,1,1,0.35}%
+ \percentchar % Produce the actual `%' and
+ \letpercent\percentchar % make all following `%'s do the same.
+ \letreturn\end@comment % Call \end@comment at end-of-line.
+}
+% \end@comment (alias for ^^M inside a comment) will end the comment
+% started by \start@comment. We make ^^M active temporarily so that
+% the active version of ^^M gets "frozen" into \end@comment.
+\begingroup \makeactive\^^M % Avoid ^^M's from here on.
+ \gdef\end@comment{\endgroup ^^M}%
+\endgroup
+\resetatcatcode % Make `@' again inaccessible for use in macro names.
+
+% Define \setuplistinghook to setup comments highlighting, line
+% numbering and omitting the last (empty) line of input.
+\def\setuplistinghook{\hlightcommentslisting \linenumberedlisting
+ \nolastlinelisting}
+% Isn't this fun? This file typesets itself, with the extra bonus of
+% the pretty-printed comments and numbered source lines!
+\listing{lscommnt}
+\bye
+</pre>
+
<!-- Public domain. -->
<div class="node">
<p><hr>
<a name="Macro-index"></a>
Next:&nbsp;<a rel="next" accesskey="n" href="#Concept-index">Concept index</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#Programming-definitions">Programming definitions</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Demo-files">Demo files</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
</div>
@@ -5452,535 +6836,545 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
<h2 class="unnumbered">Macro index</h2>
<ul class="index-fn" compact>
-<li><a href="#index-g_t_002eaux-_0040r_007bfile_007d-166"><code>.aux </code><span class="roman">file</span></a>: <a href="#Cross_002dreferences">Cross-references</a></li>
-<li><a href="#index-g_t_002eaux-_0040r_007bfile_007d-52"><code>.aux </code><span class="roman">file</span></a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-g_t_002ebbl-_0040r_007bfile_007d-55"><code>.bbl </code><span class="roman">file</span></a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-g_t_002ebib-_0040r_007bfile_007d-54"><code>.bib </code><span class="roman">file</span></a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-g_t_002ebst-_0040r_007bfiles_007d-62"><code>.bst </code><span class="roman">files</span></a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-g_t_002ecls-_0040r_007bfiles_007d-410"><code>.cls </code><span class="roman">files</span></a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
-<li><a href="#index-g_t_002eeps-_0040r_007bfiles_007d-436"><code>.eps </code><span class="roman">files</span></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-g_t_002efmt-_0040r_007bfile_007d-19"><code>.fmt </code><span class="roman">file</span></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
-<li><a href="#index-g_t_002efmt-_0040r_007bfile_007d-13"><code>.fmt </code><span class="roman">file</span></a>: <a href="#Installation">Installation</a></li>
-<li><a href="#index-g_t_002eidx-_0040r_007bfiles_007d-546"><code>.idx </code><span class="roman">files</span></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
-<li><a href="#index-g_t_002eidx-_0040r_007bfiles_007d-209"><code>.idx </code><span class="roman">files</span></a>: <a href="#Indexing">Indexing</a></li>
-<li><a href="#index-g_t_002eind-_0040r_007bfiles_007d-547"><code>.ind </code><span class="roman">files</span></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
-<li><a href="#index-g_t_002eind-_0040r_007bfiles_007d-210"><code>.ind </code><span class="roman">files</span></a>: <a href="#Indexing">Indexing</a></li>
-<li><a href="#index-g_t_002epdf-_0040r_007bfiles_007d-451"><code>.pdf </code><span class="roman">files</span></a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-g_t_002epdf-_0040r_007bfiles_007d-402"><code>.pdf </code><span class="roman">files</span></a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
-<li><a href="#index-g_t_002eps-_0040r_007bfiles_007d-450"><code>.ps </code><span class="roman">files</span></a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-g_t_002esty-_0040r_007bfiles_007d-409"><code>.sty </code><span class="roman">files</span></a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
-<li><a href="#index-g_t_002etoc-_0040r_007bfile_007d-153"><code>.toc </code><span class="roman">file</span></a>: <a href="#Contents">Contents</a></li>
-<li><a href="#index-g_t_0040_0040hllabel-649"><code>@hllabel</code></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-g_t_0040_0040indexproof-_0040r_007binsertion-class_007d-257"><code>@indexproof </code><span class="roman">insertion class</span></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-abovecolumnskip-353"><code>abovecolumnskip</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-abovecolumnspenalty-324"><code>abovecolumnspenalty</code></a>: <a href="#Tables">Tables</a></li>
-<li><a href="#index-abovelistpenalty-126"><code>abovelistpenalty</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-abovelistskip-125"><code>abovelistskip</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-abovelistskipamount-120"><code>abovelistskipamount</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-adjarrow-921"><code>adjarrow</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-adjmapdown-915"><code>adjmapdown</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-adjmapleft-908"><code>adjmapleft</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-adjmapright-907"><code>adjmapright</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-adjmapup-916"><code>adjmapup</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-advancebottommargin-331"><code>advancebottommargin</code></a>: <a href="#Margins">Margins</a></li>
-<li><a href="#index-advanceleftmargin-332"><code>advanceleftmargin</code></a>: <a href="#Margins">Margins</a></li>
-<li><a href="#index-advancerightmargin-333"><code>advancerightmargin</code></a>: <a href="#Margins">Margins</a></li>
-<li><a href="#index-advancetopmargin-330"><code>advancetopmargin</code></a>: <a href="#Margins">Margins</a></li>
-<li><a href="#index-afterindexterm-288"><code>afterindexterm</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-afterindexterm-_0040r_007bhook_007d-233"><code>afterindexterm </code><span class="roman">hook</span></a>: <a href="#Indexing-commands">Indexing commands</a></li>
-<li><a href="#index-AMSLaTeX-381"><code>AMSLaTeX</code></a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-amsppt_002esty-24"><code>amsppt.sty</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
-<li><a href="#index-AMSTeX-377"><code>AMSTeX</code></a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-arrow-886"><code>arrow</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-autopict_002esty-421"><code>autopict.sty</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-bblem-82"><code>bblem</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
-<li><a href="#index-bblfilebasename-56"><code>bblfilebasename</code></a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-bblhook-86"><code>bblhook</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
-<li><a href="#index-bblnewblock-84"><code>bblnewblock</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
-<li><a href="#index-bblrm-80"><code>bblrm</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
-<li><a href="#index-bblsc-83"><code>bblsc</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
-<li><a href="#index-bcolor-_0040r_007b_0028hyperlink-option_0029_007d-738"><code>bcolor </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-bdash-_0040r_007b_0028hyperlink-option_0029_007d-742"><code>bdash </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-begin-_0040r_007bfor-index-entries_007d-237"><code>begin </code><span class="roman">for index entries</span></a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
-<li><a href="#index-beginindex-_0040r_007bhook_007d-272"><code>beginindex </code><span class="roman">hook</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-beginlist-136"><code>beginlist</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-beginpackages-417"><code>beginpackages</code></a>: <a href="#Environment-for-loading-packages">Environment for loading packages</a></li>
-<li><a href="#index-begin_0040_007bpicture_0040_007d-423"><code>begin{picture}</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-begin_0040_007btheindex_0040_007d-266"><code>begin{theindex}</code></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-belowcolumnskip-354"><code>belowcolumnskip</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-belowfootnoterulespace-363"><code>belowfootnoterulespace</code></a>: <a href="#Footnotes">Footnotes</a></li>
-<li><a href="#index-belowlistskip-127"><code>belowlistskip</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-belowlistskipamount-121"><code>belowlistskipamount</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-biarrow-920"><code>biarrow</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-biblabelcontents-79"><code>biblabelcontents</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
-<li><a href="#index-biblabelextraspace-85"><code>biblabelextraspace</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
-<li><a href="#index-biblabelprint-78"><code>biblabelprint</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
-<li><a href="#index-biblabelwidth-77"><code>biblabelwidth</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
-<li><a href="#index-bibliography-60"><code>bibliography</code></a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-bibliography-_0040r_007b_0028hyperlinks_0029_007d-490"><code>bibliography </code><span class="roman">(hyperlinks)</span></a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
-<li><a href="#index-bibliographystyle-61"><code>bibliographystyle</code></a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-BibTeX-379"><code>BibTeX</code></a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-bibtex-27"><code>bibtex</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
-<li><a href="#index-bihline-909"><code>bihline</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-bimapdown-913"><code>bimapdown</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-bimapleft-906"><code>bimapleft</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-bimapright-905"><code>bimapright</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-bimapup-914"><code>bimapup</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-bisline-922"><code>bisline</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-bivline-917"><code>bivline</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-blackbox-393"><code>blackbox</code></a>: <a href="#Boxes">Boxes</a></li>
-<li><a href="#index-blanklineskipamount-_0040r_007bin-justified-text_007d-320"><code>blanklineskipamount </code><span class="roman">in justified text</span></a>: <a href="#Justification">Justification</a></li>
-<li><a href="#index-blanklineskipamount-_0040r_007bin-obeyed-text_007d-1046"><code>blanklineskipamount </code><span class="roman">in obeyed text</span></a>: <a href="#Obeying-spaces">Obeying spaces</a></li>
-<li><a href="#index-bottom-_0040r_007b_0028destination-option_0029_007d-676"><code>bottom </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-bottom-_0040r_007b_0028destination-option_0029_007d-643"><code>bottom </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-bottommargin-327"><code>bottommargin</code></a>: <a href="#Margins">Margins</a></li>
-<li><a href="#index-boxit-397"><code>boxit</code></a>: <a href="#Boxes">Boxes</a></li>
-<li><a href="#index-boxitspace-398"><code>boxitspace</code></a>: <a href="#Boxes">Boxes</a></li>
-<li><a href="#index-bstyle-_0040r_007b_0028hyperlink-option_0029_007d-746"><code>bstyle </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-bwidth-_0040r_007b_0028hyperlink-option_0029_007d-756"><code>bwidth </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-catcode-974"><code>catcode</code></a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-center-319"><code>center</code></a>: <a href="#Justification">Justification</a></li>
-<li><a href="#index-centereddisplays-93"><code>centereddisplays</code></a>: <a href="#Displays">Displays</a></li>
-<li><a href="#index-channelwidth-963"><code>channelwidth</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-channelwidth-923"><code>channelwidth</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-cite-57"><code>cite</code></a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-cite-_0040r_007b_0028hyperlinks_0029_007d-485"><code>cite </code><span class="roman">(hyperlinks)</span></a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
-<li><a href="#index-cmd-_0040r_007b_0028destination-option_0029_007d-657"><code>cmd </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-cmd-_0040r_007b_0028destination-option_0029_007d-648"><code>cmd </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-cmd-_0040r_007b_0028hyperlink-option_0029_007d-761"><code>cmd </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-cmd-_0040r_007b_0028hyperlink-option_0029_007d-726"><code>cmd </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-cmtt8-251"><code>cmtt8</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-color-_0040r_007b_0028hyperlink-option_0029_007d-610"><code>color </code><span class="roman">(hyperlink option)</span></a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-color_002esty-793"><code>color.sty</code></a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-color_002esty-425"><code>color.sty</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-colormodel-_0040r_007b_0028hyperlink-option_0029_007d-609"><code>colormodel </code><span class="roman">(hyperlink option)</span></a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-columnfill-347"><code>columnfill</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-commdiag-926"><code>commdiag</code></a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-commdiagbaselines-966"><code>commdiagbaselines</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-commdiagbaselines-938"><code>commdiagbaselines</code></a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-csn-1021"><code>csn</code></a>: <a href="#g_t_005ccsn-and-_005cece">\csn and \ece</a></li>
-<li><a href="#index-definecontentsfile-164"><code>definecontentsfile</code></a>: <a href="#Contents">Contents</a></li>
-<li><a href="#index-defineindex-214"><code>defineindex</code></a>: <a href="#Indexing">Indexing</a></li>
-<li><a href="#index-definexref-171"><code>definexref</code></a>: <a href="#Defining-generic-references">Defining generic references</a></li>
-<li><a href="#index-definexref-_0040r_007b_0028hyperlinks_0029_007d-496"><code>definexref </code><span class="roman">(hyperlinks)</span></a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
-<li><a href="#index-depth-_0040r_007b_0028destination-option_0029_007d-663"><code>depth </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-depth-_0040r_007b_0028destination-option_0029_007d-641"><code>depth </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-depth-_0040r_007b_0028hyperlink-option_0029_007d-770"><code>depth </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-discretionaries-370"><code>discretionaries</code></a>: <a href="#Paths">Paths</a></li>
-<li><a href="#index-displaylines-94"><code>displaylines</code></a>: <a href="#Displays">Displays</a></li>
-<li><a href="#index-doublecolumns-341"><code>doublecolumns</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-drawline-871"><code>drawline</code></a>: <a href="#Slanted-lines-and-vectors">Slanted lines and vectors</a></li>
-<li><a href="#index-drawvector-872"><code>drawvector</code></a>: <a href="#Slanted-lines-and-vectors">Slanted lines and vectors</a></li>
-<li><a href="#index-dvipdfm-453"><code>dvipdfm</code></a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-eattoken-1016"><code>eattoken</code></a>: <a href="#Macro-arguments">Macro arguments</a></li>
-<li><a href="#index-ece-1022"><code>ece</code></a>: <a href="#g_t_005ccsn-and-_005cece">\csn and \ece</a></li>
-<li><a href="#index-edefappend-1023"><code>edefappend</code></a>: <a href="#g_t_005cedefappend">\edefappend</a></li>
-<li><a href="#index-ehrule-45"><code>ehrule</code></a>: <a href="#Rules">Rules</a></li>
-<li><a href="#index-enablehyperlinks-568"><code>enablehyperlinks</code></a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
-<li><a href="#index-enablehyperlinks-454"><code>enablehyperlinks</code></a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-end-_0040r_007bfor-index-entries_007d-238"><code>end </code><span class="roman">for index entries</span></a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
-<li><a href="#index-endlist-138"><code>endlist</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-endnumberedlist-112"><code>endnumberedlist</code></a>: <a href="#Lists">Lists</a></li>
-<li><a href="#index-endorderedlist-114"><code>endorderedlist</code></a>: <a href="#Lists">Lists</a></li>
-<li><a href="#index-endpackages-418"><code>endpackages</code></a>: <a href="#Environment-for-loading-packages">Environment for loading packages</a></li>
-<li><a href="#index-endunorderedlist-116"><code>endunorderedlist</code></a>: <a href="#Lists">Lists</a></li>
-<li><a href="#index-end_0040_007bpicture_0040_007d-424"><code>end{picture}</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-end_0040_007btheindex_0040_007d-267"><code>end{theindex}</code></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-eplain-20"><code>eplain</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
-<li><a href="#index-eplain_002eaux-15"><code>eplain.aux</code></a>: <a href="#Installation">Installation</a></li>
-<li><a href="#index-eqalignno-95"><code>eqalignno</code></a>: <a href="#Displays">Displays</a></li>
-<li><a href="#index-eqconstruct-198"><code>eqconstruct</code></a>: <a href="#Formatting-equation-references">Formatting equation references</a></li>
-<li><a href="#index-eqdef-186"><code>eqdef</code></a>: <a href="#Equation-references">Equation references</a></li>
-<li><a href="#index-eqdef-_0040r_007b_0028hyperlinks_0029_007d-520"><code>eqdef </code><span class="roman">(hyperlinks)</span></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
-<li><a href="#index-eqdefn-192"><code>eqdefn</code></a>: <a href="#Equation-references">Equation references</a></li>
-<li><a href="#index-eqdefn-_0040r_007b_0028hyperlinks_0029_007d-521"><code>eqdefn </code><span class="roman">(hyperlinks)</span></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
-<li><a href="#index-eqnumber-185"><code>eqnumber</code></a>: <a href="#Equation-references">Equation references</a></li>
-<li><a href="#index-eqprint-197"><code>eqprint</code></a>: <a href="#Formatting-equation-references">Formatting equation references</a></li>
-<li><a href="#index-eqref-530"><code>eqref</code></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
-<li><a href="#index-eqref-193"><code>eqref</code></a>: <a href="#Equation-references">Equation references</a></li>
-<li><a href="#index-eqrefn-531"><code>eqrefn</code></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
-<li><a href="#index-eqrefn-194"><code>eqrefn</code></a>: <a href="#Equation-references">Equation references</a></li>
-<li><a href="#index-eqsubdef-201"><code>eqsubdef</code></a>: <a href="#Subequation-references">Subequation references</a></li>
-<li><a href="#index-eqsubdef-_0040r_007b_0028hyperlinks_0029_007d-522"><code>eqsubdef </code><span class="roman">(hyperlinks)</span></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
-<li><a href="#index-eqsubdefn-202"><code>eqsubdefn</code></a>: <a href="#Subequation-references">Subequation references</a></li>
-<li><a href="#index-eqsubdefn-_0040r_007b_0028hyperlinks_0029_007d-523"><code>eqsubdefn </code><span class="roman">(hyperlinks)</span></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
-<li><a href="#index-eqsubreftext-204"><code>eqsubreftext</code></a>: <a href="#Subequation-references">Subequation references</a></li>
-<li><a href="#index-everyfootnote-360"><code>everyfootnote</code></a>: <a href="#Footnotes">Footnotes</a></li>
-<li><a href="#index-evrule-46"><code>evrule</code></a>: <a href="#Rules">Rules</a></li>
-<li><a href="#index-expandonce-1035"><code>expandonce</code></a>: <a href="#g_t_005cexpandonce">\expandonce</a></li>
-<li><a href="#index-file-_0040r_007b_0028hyperlink-option_0029_007d-762"><code>file </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-file-_0040r_007b_0028hyperlink-option_0029_007d-711"><code>file </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-fileexists-_0040r_007b_0028conditional_0029_007d-1055"><code>fileexists </code><span class="roman">(conditional)</span></a>: <a href="#Auxiliary-files">Auxiliary files</a></li>
-<li><a href="#index-filename-_0040r_007b_0028hyperlink-type_0029_007d-707"><code>filename </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-filepage-_0040r_007b_0028hyperlink-type_0029_007d-714"><code>filepage </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-fit-_0040r_007b_0028destination-type_0029_007d-628"><code>fit </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-fitb-_0040r_007b_0028destination-type_0029_007d-633"><code>fitb </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-fitbh-_0040r_007b_0028destination-type_0029_007d-634"><code>fitbh </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-fitbv-_0040r_007b_0028destination-type_0029_007d-636"><code>fitbv </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-fith-_0040r_007b_0028destination-type_0029_007d-629"><code>fith </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-fitr-_0040r_007b_0028destination-type_0029_007d-638"><code>fitr </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-fitv-_0040r_007b_0028destination-type_0029_007d-631"><code>fitv </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-flushleft-318"><code>flushleft</code></a>: <a href="#Justification">Justification</a></li>
-<li><a href="#index-flushright-317"><code>flushright</code></a>: <a href="#Justification">Justification</a></li>
+<li><a href="#index-g_t_0040_0040hllabel-864"><code>@hllabel</code></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-g_t_0040_0040hllabel-786"><code>@hllabel</code></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-g_t_0040_0040hllabel-738"><code>@hllabel</code></a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-g_t_0040_0040hllabel-713"><code>@hllabel</code></a>: <a href="#Destination-types-for-hypertex">Destination types for hypertex</a></li>
+<li><a href="#index-g_t_0040_0040indexproof-_0040r_007binsertion-class_007d-287"><code>@indexproof </code><span class="roman">insertion class</span></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-abovecolumnskip-383"><code>abovecolumnskip</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-abovecolumnspenalty-354"><code>abovecolumnspenalty</code></a>: <a href="#Tables">Tables</a></li>
+<li><a href="#index-abovelistpenalty-132"><code>abovelistpenalty</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-abovelistskip-131"><code>abovelistskip</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-abovelistskipamount-126"><code>abovelistskipamount</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-adjarrow-1067"><code>adjarrow</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-adjmapdown-1061"><code>adjmapdown</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-adjmapleft-1054"><code>adjmapleft</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-adjmapright-1053"><code>adjmapright</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-adjmapup-1062"><code>adjmapup</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-advancebottommargin-361"><code>advancebottommargin</code></a>: <a href="#Margins">Margins</a></li>
+<li><a href="#index-advanceleftmargin-362"><code>advanceleftmargin</code></a>: <a href="#Margins">Margins</a></li>
+<li><a href="#index-advancerightmargin-363"><code>advancerightmargin</code></a>: <a href="#Margins">Margins</a></li>
+<li><a href="#index-advancetopmargin-360"><code>advancetopmargin</code></a>: <a href="#Margins">Margins</a></li>
+<li><a href="#index-afterindexterm-318"><code>afterindexterm</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-afterindexterm-_0040r_007bhook_007d-252"><code>afterindexterm </code><span class="roman">hook</span></a>: <a href="#Indexing-commands">Indexing commands</a></li>
+<li><a href="#index-AMSLaTeX-411"><code>AMSLaTeX</code></a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-AMSTeX-407"><code>AMSTeX</code></a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-arrow-1032"><code>arrow</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-bblem-88"><code>bblem</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
+<li><a href="#index-bblfilebasename-62"><code>bblfilebasename</code></a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-bblhook-92"><code>bblhook</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
+<li><a href="#index-bblnewblock-90"><code>bblnewblock</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
+<li><a href="#index-bblrm-86"><code>bblrm</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
+<li><a href="#index-bblsc-89"><code>bblsc</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
+<li><a href="#index-bcolor-_0040r_007b_0028hyperlink-option_0029_007d-876"><code>bcolor </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-bdash-_0040r_007b_0028hyperlink-option_0029_007d-880"><code>bdash </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-begin-_0040r_007bfor-index-entries_007d-256"><code>begin </code><span class="roman">for index entries</span></a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
+<li><a href="#index-beginindex-_0040r_007bhook_007d-302"><code>beginindex </code><span class="roman">hook</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-beginlist-142"><code>beginlist</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-beginpackages-447"><code>beginpackages</code></a>: <a href="#Environment-for-loading-packages">Environment for loading packages</a></li>
+<li><a href="#index-begin_0040_007bpicture_0040_007d-459"><code>begin{picture}</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-begin_0040_007btheindex_0040_007d-296"><code>begin{theindex}</code></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-belowcolumnskip-384"><code>belowcolumnskip</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-belowfootnoterulespace-393"><code>belowfootnoterulespace</code></a>: <a href="#Footnotes">Footnotes</a></li>
+<li><a href="#index-belowlistskip-133"><code>belowlistskip</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-belowlistskipamount-127"><code>belowlistskipamount</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-biarrow-1066"><code>biarrow</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-biblabelcontents-85"><code>biblabelcontents</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
+<li><a href="#index-biblabelextraspace-91"><code>biblabelextraspace</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
+<li><a href="#index-biblabelprint-84"><code>biblabelprint</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
+<li><a href="#index-biblabelwidth-83"><code>biblabelwidth</code></a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
+<li><a href="#index-bibliography-66"><code>bibliography</code></a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-bibliography-_0040r_007b_0028hyperlinks_0029_007d-570"><code>bibliography </code><span class="roman">(hyperlinks)</span></a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
+<li><a href="#index-bibliographystyle-67"><code>bibliographystyle</code></a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-BibTeX-409"><code>BibTeX</code></a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-bihline-1055"><code>bihline</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-bimapdown-1059"><code>bimapdown</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-bimapleft-1052"><code>bimapleft</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-bimapright-1051"><code>bimapright</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-bimapup-1060"><code>bimapup</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-bisline-1068"><code>bisline</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-bivline-1063"><code>bivline</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-blackbox-423"><code>blackbox</code></a>: <a href="#Boxes">Boxes</a></li>
+<li><a href="#index-blanklineskipamount-_0040r_007bin-justified-text_007d-350"><code>blanklineskipamount </code><span class="roman">in justified text</span></a>: <a href="#Justification">Justification</a></li>
+<li><a href="#index-blanklineskipamount-_0040r_007bin-obeyed-text_007d-1212"><code>blanklineskipamount </code><span class="roman">in obeyed text</span></a>: <a href="#Obeying-spaces">Obeying spaces</a></li>
+<li><a href="#index-bottom-_0040r_007b_0028destination-option_0029_007d-813"><code>bottom </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-bottom-_0040r_007b_0028destination-option_0029_007d-780"><code>bottom </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-bottommargin-357"><code>bottommargin</code></a>: <a href="#Margins">Margins</a></li>
+<li><a href="#index-boxit-427"><code>boxit</code></a>: <a href="#Boxes">Boxes</a></li>
+<li><a href="#index-boxitspace-428"><code>boxitspace</code></a>: <a href="#Boxes">Boxes</a></li>
+<li><a href="#index-bstyle-_0040r_007b_0028hyperlink-option_0029_007d-884"><code>bstyle </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-bwidth-_0040r_007b_0028hyperlink-option_0029_007d-894"><code>bwidth </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-catcode-1120"><code>catcode</code></a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-center-349"><code>center</code></a>: <a href="#Justification">Justification</a></li>
+<li><a href="#index-centereddisplays-99"><code>centereddisplays</code></a>: <a href="#Displays">Displays</a></li>
+<li><a href="#index-channelwidth-1109"><code>channelwidth</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-channelwidth-1069"><code>channelwidth</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-cite-63"><code>cite</code></a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-cite-_0040r_007b_0028hyperlinks_0029_007d-565"><code>cite </code><span class="roman">(hyperlinks)</span></a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
+<li><a href="#index-cmd-_0040r_007b_0028destination-option_0029_007d-794"><code>cmd </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-cmd-_0040r_007b_0028destination-option_0029_007d-785"><code>cmd </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-cmd-_0040r_007b_0028destination-option_0029_007d-718"><code>cmd </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-hypertex">Destination options for hypertex</a></li>
+<li><a href="#index-cmd-_0040r_007b_0028destination-option_0029_007d-712"><code>cmd </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-hypertex">Destination types for hypertex</a></li>
+<li><a href="#index-cmd-_0040r_007b_0028hyperlink-option_0029_007d-899"><code>cmd </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-cmd-_0040r_007b_0028hyperlink-option_0029_007d-863"><code>cmd </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-cmd-_0040r_007b_0028hyperlink-option_0029_007d-744"><code>cmd </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-hypertex">Link options for hypertex</a></li>
+<li><a href="#index-cmd-_0040r_007b_0028hyperlink-option_0029_007d-737"><code>cmd </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-color-_0040r_007b_0028hyperlink-option_0029_007d-690"><code>color </code><span class="roman">(hyperlink option)</span></a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-colormodel-_0040r_007b_0028hyperlink-option_0029_007d-689"><code>colormodel </code><span class="roman">(hyperlink option)</span></a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-columnfill-377"><code>columnfill</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-commdiag-1072"><code>commdiag</code></a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-commdiagbaselines-1112"><code>commdiagbaselines</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-commdiagbaselines-1084"><code>commdiagbaselines</code></a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-csn-1175"><code>csn</code></a>: <a href="#g_t_005ccsn-and-_005cece">\csn and \ece</a></li>
+<li><a href="#index-definecolor-1269"><code>definecolor</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-definecontentsfile-183"><code>definecontentsfile</code></a>: <a href="#Alternative-contents-files">Alternative contents files</a></li>
+<li><a href="#index-defineindex-233"><code>defineindex</code></a>: <a href="#Indexing">Indexing</a></li>
+<li><a href="#index-definexref-1257"><code>definexref</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-definexref-190"><code>definexref</code></a>: <a href="#Defining-generic-references">Defining generic references</a></li>
+<li><a href="#index-definexref-_0040r_007b_0028hyperlinks_0029_007d-576"><code>definexref </code><span class="roman">(hyperlinks)</span></a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
+<li><a href="#index-depth-_0040r_007b_0028destination-option_0029_007d-800"><code>depth </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-depth-_0040r_007b_0028destination-option_0029_007d-778"><code>depth </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-depth-_0040r_007b_0028hyperlink-option_0029_007d-908"><code>depth </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-discretionaries-400"><code>discretionaries</code></a>: <a href="#Paths">Paths</a></li>
+<li><a href="#index-displaylines-100"><code>displaylines</code></a>: <a href="#Displays">Displays</a></li>
+<li><a href="#index-doublecolumns-371"><code>doublecolumns</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-drawline-1017"><code>drawline</code></a>: <a href="#Slanted-lines-and-vectors">Slanted lines and vectors</a></li>
+<li><a href="#index-drawvector-1018"><code>drawvector</code></a>: <a href="#Slanted-lines-and-vectors">Slanted lines and vectors</a></li>
+<li><a href="#index-dvipdfm-_0040r_007b_0028hyperlink-driver_0029_007d-748"><code>dvipdfm </code><span class="roman">(hyperlink driver)</span></a>: <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a></li>
+<li><a href="#index-eattoken-1170"><code>eattoken</code></a>: <a href="#Macro-arguments">Macro arguments</a></li>
+<li><a href="#index-ece-1176"><code>ece</code></a>: <a href="#g_t_005ccsn-and-_005cece">\csn and \ece</a></li>
+<li><a href="#index-edefappend-1177"><code>edefappend</code></a>: <a href="#g_t_005cedefappend">\edefappend</a></li>
+<li><a href="#index-ehrule-51"><code>ehrule</code></a>: <a href="#Rules">Rules</a></li>
+<li><a href="#index-enablehyperlinks-935"><code>enablehyperlinks</code></a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-enablehyperlinks-648"><code>enablehyperlinks</code></a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
+<li><a href="#index-enablehyperlinks-519"><code>enablehyperlinks</code></a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-end-_0040r_007bfor-index-entries_007d-257"><code>end </code><span class="roman">for index entries</span></a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
+<li><a href="#index-endlist-144"><code>endlist</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-endnumberedlist-118"><code>endnumberedlist</code></a>: <a href="#Lists">Lists</a></li>
+<li><a href="#index-endorderedlist-120"><code>endorderedlist</code></a>: <a href="#Lists">Lists</a></li>
+<li><a href="#index-endpackages-448"><code>endpackages</code></a>: <a href="#Environment-for-loading-packages">Environment for loading packages</a></li>
+<li><a href="#index-endunorderedlist-122"><code>endunorderedlist</code></a>: <a href="#Lists">Lists</a></li>
+<li><a href="#index-end_0040_007bpicture_0040_007d-460"><code>end{picture}</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-end_0040_007btheindex_0040_007d-297"><code>end{theindex}</code></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-eplain-26"><code>eplain</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
+<li><a href="#index-eplaininput-452"><code>eplaininput</code></a>: <a href="#Environment-for-loading-packages">Environment for loading packages</a></li>
+<li><a href="#index-eqalignno-101"><code>eqalignno</code></a>: <a href="#Displays">Displays</a></li>
+<li><a href="#index-eqconstruct-217"><code>eqconstruct</code></a>: <a href="#Formatting-equation-references">Formatting equation references</a></li>
+<li><a href="#index-eqdef-205"><code>eqdef</code></a>: <a href="#Equation-references">Equation references</a></li>
+<li><a href="#index-eqdef-_0040r_007b_0028hyperlinks_0029_007d-600"><code>eqdef </code><span class="roman">(hyperlinks)</span></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
+<li><a href="#index-eqdefn-211"><code>eqdefn</code></a>: <a href="#Equation-references">Equation references</a></li>
+<li><a href="#index-eqdefn-_0040r_007b_0028hyperlinks_0029_007d-601"><code>eqdefn </code><span class="roman">(hyperlinks)</span></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
+<li><a href="#index-eqnumber-204"><code>eqnumber</code></a>: <a href="#Equation-references">Equation references</a></li>
+<li><a href="#index-eqprint-216"><code>eqprint</code></a>: <a href="#Formatting-equation-references">Formatting equation references</a></li>
+<li><a href="#index-eqref-610"><code>eqref</code></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
+<li><a href="#index-eqref-212"><code>eqref</code></a>: <a href="#Equation-references">Equation references</a></li>
+<li><a href="#index-eqrefn-611"><code>eqrefn</code></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
+<li><a href="#index-eqrefn-213"><code>eqrefn</code></a>: <a href="#Equation-references">Equation references</a></li>
+<li><a href="#index-eqsubdef-220"><code>eqsubdef</code></a>: <a href="#Subequation-references">Subequation references</a></li>
+<li><a href="#index-eqsubdef-_0040r_007b_0028hyperlinks_0029_007d-602"><code>eqsubdef </code><span class="roman">(hyperlinks)</span></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
+<li><a href="#index-eqsubdefn-221"><code>eqsubdefn</code></a>: <a href="#Subequation-references">Subequation references</a></li>
+<li><a href="#index-eqsubdefn-_0040r_007b_0028hyperlinks_0029_007d-603"><code>eqsubdefn </code><span class="roman">(hyperlinks)</span></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
+<li><a href="#index-eqsubreftext-223"><code>eqsubreftext</code></a>: <a href="#Subequation-references">Subequation references</a></li>
+<li><a href="#index-everyfootnote-390"><code>everyfootnote</code></a>: <a href="#Footnotes">Footnotes</a></li>
+<li><a href="#index-evrule-52"><code>evrule</code></a>: <a href="#Rules">Rules</a></li>
+<li><a href="#index-expandonce-1189"><code>expandonce</code></a>: <a href="#g_t_005cexpandonce">\expandonce</a></li>
+<li><a href="#index-ext-_0040r_007b_0028hyperlink-option_0029_007d-746"><code>ext </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-hypertex">Link options for hypertex</a></li>
+<li><a href="#index-ext-_0040r_007b_0028hyperlink-option_0029_007d-735"><code>ext </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-file-_0040r_007b_0028hyperlink-option_0029_007d-900"><code>file </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-file-_0040r_007b_0028hyperlink-option_0029_007d-852"><code>file </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-file-_0040r_007b_0028hyperlink-option_0029_007d-745"><code>file </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-hypertex">Link options for hypertex</a></li>
+<li><a href="#index-file-_0040r_007b_0028hyperlink-option_0029_007d-734"><code>file </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-fileexists-_0040r_007b_0028conditional_0029_007d-1221"><code>fileexists </code><span class="roman">(conditional)</span></a>: <a href="#Auxiliary-files">Auxiliary files</a></li>
+<li><a href="#index-filename-_0040r_007b_0028hyperlink-type_0029_007d-848"><code>filename </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-filename-_0040r_007b_0028hyperlink-type_0029_007d-730"><code>filename </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-filepage-_0040r_007b_0028hyperlink-type_0029_007d-855"><code>filepage </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-fit-_0040r_007b_0028destination-type_0029_007d-765"><code>fit </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-fitb-_0040r_007b_0028destination-type_0029_007d-770"><code>fitb </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-fitbh-_0040r_007b_0028destination-type_0029_007d-771"><code>fitbh </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-fitbv-_0040r_007b_0028destination-type_0029_007d-773"><code>fitbv </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-fith-_0040r_007b_0028destination-type_0029_007d-766"><code>fith </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-fitr-_0040r_007b_0028destination-type_0029_007d-775"><code>fitr </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-fitv-_0040r_007b_0028destination-type_0029_007d-768"><code>fitv </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-flushleft-348"><code>flushleft</code></a>: <a href="#Justification">Justification</a></li>
+<li><a href="#index-flushright-347"><code>flushright</code></a>: <a href="#Justification">Justification</a></li>
<li><a href="#index-fmtversion-10"><code>fmtversion</code></a>: <a href="#Introduction">Introduction</a></li>
-<li><a href="#index-footnote-_0040r_007b_0028hyperlinks_0029_007d-587"><code>footnote </code><span class="roman">(hyperlinks)</span></a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
-<li><a href="#index-footnotemarkseparation-358"><code>footnotemarkseparation</code></a>: <a href="#Footnotes">Footnotes</a></li>
-<li><a href="#index-footnoteruleheight-362"><code>footnoteruleheight</code></a>: <a href="#Footnotes">Footnotes</a></li>
-<li><a href="#index-footnoterulewidth-361"><code>footnoterulewidth</code></a>: <a href="#Footnotes">Footnotes</a></li>
-<li><a href="#index-for-1009"><code>for</code></a>: <a href="#Iteration">Iteration</a></li>
-<li><a href="#index-frac-365"><code>frac</code></a>: <a href="#Fractions">Fractions</a></li>
-<li><a href="#index-fullmonthname-103"><code>fullmonthname</code></a>: <a href="#Time-of-day">Time of day</a></li>
-<li><a href="#index-futurenonspacelet-1041"><code>futurenonspacelet</code></a>: <a href="#g_t_005cfuturenonspacelet">\futurenonspacelet</a></li>
-<li><a href="#index-generaldisplay-98"><code>generaldisplay</code></a>: <a href="#Formatting-displays">Formatting displays</a></li>
-<li><a href="#index-getproperty-1033"><code>getproperty</code></a>: <a href="#Properties">Properties</a></li>
-<li><a href="#index-gloggingall-36"><code>gloggingall</code></a>: <a href="#Diagnostics">Diagnostics</a></li>
-<li><a href="#index-gobble-1013"><code>gobble</code></a>: <a href="#Macro-arguments">Macro arguments</a></li>
-<li><a href="#index-gobbletwo-1014"><code>gobbletwo</code></a>: <a href="#Macro-arguments">Macro arguments</a></li>
-<li><a href="#index-graphics_002esty-426"><code>graphics.sty</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-graphicx_002esty-427"><code>graphicx.sty</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-gridcommdiag-942"><code>gridcommdiag</code></a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-gtracingall-37"><code>gtracingall</code></a>: <a href="#Diagnostics">Diagnostics</a></li>
-<li><a href="#index-gutter-351"><code>gutter</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-gutterbox-352"><code>gutterbox</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-hangindent-_0040r_007bfor-index-entries_007d-281"><code>hangindent </code><span class="roman">for index entries</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-harrowlength-949"><code>harrowlength</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-harrowlength-888"><code>harrowlength</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-hchannel-964"><code>hchannel</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-height-_0040r_007b_0028destination-option_0029_007d-667"><code>height </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-height-_0040r_007b_0028destination-option_0029_007d-640"><code>height </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-height-_0040r_007b_0028hyperlink-option_0029_007d-773"><code>height </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-hgrid-967"><code>hgrid</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-hgrid-944"><code>hgrid</code></a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-hldest-803"><code>hldest</code></a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-hldest-650"><code>hldest</code></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-hldest-464"><code>hldest</code></a>: <a href="#Explicit-hyperlinks">Explicit hyperlinks</a></li>
-<li><a href="#index-hldestoff-866"><code>hldestoff</code></a>: <a href="#Turning-low_002dlevel-commands-on_002foff">Turning low-level commands on/off</a></li>
-<li><a href="#index-hldestoff-791"><code>hldestoff</code></a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-hldeston-865"><code>hldeston</code></a>: <a href="#Turning-low_002dlevel-commands-on_002foff">Turning low-level commands on/off</a></li>
-<li><a href="#index-hldestopts-845"><code>hldestopts</code></a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-hldestopts-819"><code>hldestopts</code></a>: <a href="#Setting-default-types-and-options">Setting default types and options</a></li>
-<li><a href="#index-hldesttype-821"><code>hldesttype</code></a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-hldesttype-817"><code>hldesttype</code></a>: <a href="#Setting-default-types-and-options">Setting default types and options</a></li>
-<li><a href="#index-hlend-466"><code>hlend</code></a>: <a href="#Explicit-hyperlinks">Explicit hyperlinks</a></li>
-<li><a href="#index-hlfootbacklabel-589"><code>hlfootbacklabel</code></a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
-<li><a href="#index-hlfootlabel-588"><code>hlfootlabel</code></a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
-<li><a href="#index-hlfootlabelnumber-590"><code>hlfootlabelnumber</code></a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
-<li><a href="#index-hlidx-548"><code>hlidx</code></a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
-<li><a href="#index-hlidxlabel-549"><code>hlidxlabel</code></a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
-<li><a href="#index-hlidxlabelnumber-550"><code>hlidxlabelnumber</code></a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
-<li><a href="#index-hlidxpage-558"><code>hlidxpage</code></a>: <a href="#Page-destinations-for-index-terms">Page destinations for index terms</a></li>
-<li><a href="#index-hlidxpagelabel-557"><code>hlidxpagelabel</code></a>: <a href="#Page-destinations-for-index-terms">Page destinations for index terms</a></li>
-<li><a href="#index-hlight-_0040r_007b_0028hyperlink-option_0029_007d-763"><code>hlight </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-hline-904"><code>hline</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-hloff-868"><code>hloff</code></a>: <a href="#Turning-low_002dlevel-commands-on_002foff">Turning low-level commands on/off</a></li>
-<li><a href="#index-hloff-790"><code>hloff</code></a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-hlon-867"><code>hlon</code></a>: <a href="#Turning-low_002dlevel-commands-on_002foff">Turning low-level commands on/off</a></li>
-<li><a href="#index-hlopts-844"><code>hlopts</code></a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-hlopts-818"><code>hlopts</code></a>: <a href="#Setting-default-types-and-options">Setting default types and options</a></li>
-<li><a href="#index-hlstart-802"><code>hlstart</code></a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-hlstart-727"><code>hlstart</code></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-hlstart-465"><code>hlstart</code></a>: <a href="#Explicit-hyperlinks">Explicit hyperlinks</a></li>
-<li><a href="#index-hltype-820"><code>hltype</code></a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-hltype-816"><code>hltype</code></a>: <a href="#Setting-default-types-and-options">Setting default types and options</a></li>
-<li><a href="#index-hmorphposn-952"><code>hmorphposn</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-hmorphposn-891"><code>hmorphposn</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-hmorphposndn-954"><code>hmorphposndn</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-hmorphposndn-895"><code>hmorphposndn</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-hmorphposnlft-956"><code>hmorphposnlft</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-hmorphposnlft-899"><code>hmorphposnlft</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-hmorphposnrt-955"><code>hmorphposnrt</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-hmorphposnrt-898"><code>hmorphposnrt</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-hmorphposnup-953"><code>hmorphposnup</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-hmorphposnup-894"><code>hmorphposnup</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-hoffset-254"><code>hoffset</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-hookaction-1025"><code>hookaction</code></a>: <a href="#Hooks">Hooks</a></li>
-<li><a href="#index-hookactiononce-1028"><code>hookactiononce</code></a>: <a href="#Hooks">Hooks</a></li>
-<li><a href="#index-hookappend-1026"><code>hookappend</code></a>: <a href="#Hooks">Hooks</a></li>
-<li><a href="#index-hookprepend-1027"><code>hookprepend</code></a>: <a href="#Hooks">Hooks</a></li>
-<li><a href="#index-hookrun-1029"><code>hookrun</code></a>: <a href="#Hooks">Hooks</a></li>
-<li><a href="#index-hruledefaultdepth-43"><code>hruledefaultdepth</code></a>: <a href="#Rules">Rules</a></li>
-<li><a href="#index-hruledefaultheight-42"><code>hruledefaultheight</code></a>: <a href="#Rules">Rules</a></li>
-<li><a href="#index-hsize-334"><code>hsize</code></a>: <a href="#Margins">Margins</a></li>
-<li><a href="#index-hyphenpenalty-_0040r_007bfor-index-entries_007d-283"><code>hyphenpenalty </code><span class="roman">for index entries</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-identity-1017"><code>identity</code></a>: <a href="#Macro-arguments">Macro arguments</a></li>
-<li><a href="#index-idx-223"><code>idx</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
-<li><a href="#index-idx-_0040r_007b_0028hyperlinks_0029_007d-535"><code>idx </code><span class="roman">(hyperlinks)</span></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
-<li><a href="#index-idxbeginrangemark-297"><code>idxbeginrangemark</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-idxencapoperator-296"><code>idxencapoperator</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-idxendrangemark-298"><code>idxendrangemark</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-idxexact-569"><code>idxexact</code></a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
-<li><a href="#index-idxmarked-228"><code>idxmarked</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
-<li><a href="#index-idxmarked-_0040r_007b_0028hyperlinks_0029_007d-537"><code>idxmarked </code><span class="roman">(hyperlinks)</span></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
-<li><a href="#index-idxname-226"><code>idxname</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
-<li><a href="#index-idxname-_0040r_007b_0028hyperlinks_0029_007d-536"><code>idxname </code><span class="roman">(hyperlinks)</span></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
-<li><a href="#index-idxnameseparator-225"><code>idxnameseparator</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
-<li><a href="#index-idxnone-571"><code>idxnone</code></a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
-<li><a href="#index-idxpage-570"><code>idxpage</code></a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
-<li><a href="#index-idxpagei-1059"><code>idxpagei</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
-<li><a href="#index-idxpageii-1060"><code>idxpageii</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
-<li><a href="#index-idxpagelistdelimiter-1063"><code>idxpagelistdelimiter</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
-<li><a href="#index-idxpagenum-299"><code>idxpagenum</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-idxpagerangedelimiter-1064"><code>idxpagerangedelimiter</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
-<li><a href="#index-idxparselist-1057"><code>idxparselist</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
-<li><a href="#index-idxparserange-1058"><code>idxparserange</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
-<li><a href="#index-idxrangebeginword-291"><code>idxrangebeginword</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-idxrangeendword-292"><code>idxrangeendword</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-idxseealsocmdword-294"><code>idxseealsocmdword</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-idxseecmdword-293"><code>idxseecmdword</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-idxsubentryseparator-295"><code>idxsubentryseparator</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-idxsubmarked-229"><code>idxsubmarked</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
-<li><a href="#index-idxsubmarked-_0040r_007b_0028hyperlinks_0029_007d-538"><code>idxsubmarked </code><span class="roman">(hyperlinks)</span></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
-<li><a href="#index-idxuniq-554"><code>idxuniq</code></a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
-<li><a href="#index-iffileexists-1054"><code>iffileexists</code></a>: <a href="#Auxiliary-files">Auxiliary files</a></li>
-<li><a href="#index-ifpdf-455"><code>ifpdf</code></a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-ifpdf-403"><code>ifpdf</code></a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
-<li><a href="#index-ifrewritetocfile-159"><code>ifrewritetocfile</code></a>: <a href="#Contents">Contents</a></li>
-<li><a href="#index-ifundefined-1036"><code>ifundefined</code></a>: <a href="#g_t_005cifundefined">\ifundefined</a></li>
-<li><a href="#index-indexfilebasename-264"><code>indexfilebasename</code></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-indexfonts-270"><code>indexfonts</code></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-indexitem-_0040r_007bhook_007d-284"><code>indexitem </code><span class="roman">hook</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-indexprooffont-250"><code>indexprooffont</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-indexproofterm-249"><code>indexproofterm</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-indexproofunbox-258"><code>indexproofunbox</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-indexsee-576"><code>indexsee</code></a>: <a href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a></li>
-<li><a href="#index-indexsee-304"><code>indexsee</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-indexseealso-577"><code>indexseealso</code></a>: <a href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a></li>
-<li><a href="#index-indexseealso-305"><code>indexseealso</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-indexseealsowords-302"><code>indexseealsowords</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-indexseeword-301"><code>indexseeword</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-indexsetmargins-256"><code>indexsetmargins</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-indexspace-285"><code>indexspace</code></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-innerdef-1005"><code>innerdef</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-innerinnerdef-1006"><code>innerinnerdef</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-innernewbox-993"><code>innernewbox</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-innernewcount-994"><code>innernewcount</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-innernewdimen-995"><code>innernewdimen</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-innernewfam-996"><code>innernewfam</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-innernewhelp-997"><code>innernewhelp</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-innernewif-998"><code>innernewif</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-innernewinsert-999"><code>innernewinsert</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-innernewlanguage-1000"><code>innernewlanguage</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-innernewread-1001"><code>innernewread</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-innernewskip-1002"><code>innernewskip</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-innernewtoks-1003"><code>innernewtoks</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-innernewwrite-1004"><code>innernewwrite</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-insidemargin-253"><code>insidemargin</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-interfootnoteskip-359"><code>interfootnoteskip</code></a>: <a href="#Footnotes">Footnotes</a></li>
-<li><a href="#index-interitemskip-128"><code>interitemskip</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-interitemskipamount-122"><code>interitemskipamount</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-item-_0040r_007bin-indexes_007d-273"><code>item </code><span class="roman">in indexes</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-itemletter-135"><code>itemletter</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-itemnumber-134"><code>itemnumber</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-ituline-1067"><code>ituline</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
-<li><a href="#index-jobname-1053"><code>jobname</code></a>: <a href="#Auxiliary-files">Auxiliary files</a></li>
-<li><a href="#index-jobname-265"><code>jobname</code></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-jobname-53"><code>jobname</code></a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-LAMSTeX-383"><code>LAMSTeX</code></a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-LaTeX-385"><code>LaTeX</code></a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-lbracechar-987"><code>lbracechar</code></a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-left-_0040r_007b_0028destination-option_0029_007d-680"><code>left </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-left-_0040r_007b_0028destination-option_0029_007d-626"><code>left </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-leftdisplayindent-92"><code>leftdisplayindent</code></a>: <a href="#Displays">Displays</a></li>
-<li><a href="#index-leftdisplays-91"><code>leftdisplays</code></a>: <a href="#Displays">Displays</a></li>
-<li><a href="#index-leftdisplaysetup-97"><code>leftdisplaysetup</code></a>: <a href="#Formatting-displays">Formatting displays</a></li>
-<li><a href="#index-leftmargin-328"><code>leftmargin</code></a>: <a href="#Margins">Margins</a></li>
-<li><a href="#index-leqalignno-96"><code>leqalignno</code></a>: <a href="#Displays">Displays</a></li>
-<li><a href="#index-letreturn-983"><code>letreturn</code></a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-letter-971"><code>letter</code></a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-lft-885"><code>lft</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-li-117"><code>li</code></a>: <a href="#Lists">Lists</a></li>
-<li><a href="#index-li-_0040r_007b_0028hyperlinks_0029_007d-493"><code>li </code><span class="roman">(hyperlinks)</span></a>: <a href="#List-hyperlinks">List hyperlinks</a></li>
-<li><a href="#index-linenumberedlisting-147"><code>linenumberedlisting</code></a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
-<li><a href="#index-listcompact-118"><code>listcompact</code></a>: <a href="#Lists">Lists</a></li>
-<li><a href="#index-listing-144"><code>listing</code></a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
-<li><a href="#index-listingfont-145"><code>listingfont</code></a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
-<li><a href="#index-listleftindent-123"><code>listleftindent</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-listmarkerspace-129"><code>listmarkerspace</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-listrightindent-124"><code>listrightindent</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-loggingall-33"><code>loggingall</code></a>: <a href="#Diagnostics">Diagnostics</a></li>
-<li><a href="#index-makeactive-975"><code>makeactive</code></a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-makeatletter-979"><code>makeatletter</code></a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-makeatother-981"><code>makeatother</code></a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-makeblankbox-396"><code>makeblankbox</code></a>: <a href="#Boxes">Boxes</a></li>
-<li><a href="#index-makecolumns-323"><code>makecolumns</code></a>: <a href="#Tables">Tables</a></li>
-<li><a href="#index-makeheadline-259"><code>makeheadline</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-makeindex-545"><code>makeindex</code></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
-<li><a href="#index-makeindex-208"><code>makeindex</code></a>: <a href="#Indexing">Indexing</a></li>
-<li><a href="#index-makeindex-28"><code>makeindex</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
-<li><a href="#index-mapdown-883"><code>mapdown</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-mapleft-881"><code>mapleft</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-mapright-880"><code>mapright</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-mapup-882"><code>mapup</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-matrix-927"><code>matrix</code></a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-MF-387"><code>MF</code></a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-miniltx_002etex-413"><code>miniltx.tex</code></a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
-<li><a href="#index-monthname-102"><code>monthname</code></a>: <a href="#Time-of-day">Time of day</a></li>
-<li><a href="#index-morphdist-962"><code>morphdist</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-morphdist-893"><code>morphdist</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-name-_0040r_007b_0028hyperlink-type_0029_007d-698"><code>name </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-new_0040dots_007b_007d-991"><code>new...</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-newwin-_0040r_007b_0028hyperlink-option_0029_007d-766"><code>newwin </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-newwin-_0040r_007b_0028hyperlink-option_0029_007d-713"><code>newwin </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-noarrow-22"><code>noarrow</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
-<li><a href="#index-noauxfile-23"><code>noauxfile</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
-<li><a href="#index-nobibtex-21"><code>nobibtex</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
-<li><a href="#index-nocite-59"><code>nocite</code></a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-normalbaselineskip-601"><code>normalbaselineskip</code></a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-num-_0040r_007b_0028hyperlink-type_0029_007d-728"><code>num </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-numberedfootnote-357"><code>numberedfootnote</code></a>: <a href="#Footnotes">Footnotes</a></li>
-<li><a href="#index-numberedfootnote-_0040r_007b_0028hyperlinks_0029_007d-586"><code>numberedfootnote </code><span class="roman">(hyperlinks)</span></a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
-<li><a href="#index-numberedlist-111"><code>numberedlist</code></a>: <a href="#Lists">Lists</a></li>
-<li><a href="#index-numberedlistdepth-132"><code>numberedlistdepth</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-numberedmarker-130"><code>numberedmarker</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-numbername-1049"><code>numbername</code></a>: <a href="#Writing-out-numbers">Writing out numbers</a></li>
-<li><a href="#index-obeywhitespace-1045"><code>obeywhitespace</code></a>: <a href="#Obeying-spaces">Obeying spaces</a></li>
-<li><a href="#index-orderedlist-113"><code>orderedlist</code></a>: <a href="#Lists">Lists</a></li>
-<li><a href="#index-other-972"><code>other</code></a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-outer-992"><code>outer</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-outsidemargin-255"><code>outsidemargin</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-page-_0040r_007b_0028hyperlink-type_0029_007d-702"><code>page </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-pagefit-_0040r_007b_0028hyperlink-option_0029_007d-769"><code>pagefit </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-pagefit-_0040r_007b_0028hyperlink-option_0029_007d-706"><code>pagefit </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-pageno-252"><code>pageno</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-pagetotal-350"><code>pagetotal</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-paperheight-335"><code>paperheight</code></a>: <a href="#Margins">Margins</a></li>
-<li><a href="#index-paperwidth-336"><code>paperwidth</code></a>: <a href="#Margins">Margins</a></li>
-<li><a href="#index-parindent-_0040r_007bin-indexes_007d-268"><code>parindent </code><span class="roman">in indexes</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-path-369"><code>path</code></a>: <a href="#Paths">Paths</a></li>
-<li><a href="#index-pdfoutput-404"><code>pdfoutput</code></a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
-<li><a href="#index-pdftex-452"><code>pdftex</code></a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-pdftex-401"><code>pdftex</code></a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
-<li><a href="#index-pdftex-29"><code>pdftex</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
-<li><a href="#index-percentchar-986"><code>percentchar</code></a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-phantomeqlabel-528"><code>phantomeqlabel</code></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
-<li><a href="#index-phantomeqnumber-529"><code>phantomeqnumber</code></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
-<li><a href="#index-pict2e_002esty-443"><code>pict2e.sty</code></a>: <a href="#Packages-known-not-to-work">Packages known not to work</a></li>
-<li><a href="#index-previouseverydisplay-99"><code>previouseverydisplay</code></a>: <a href="#Formatting-displays">Formatting displays</a></li>
-<li><a href="#index-printbetweencitations-74"><code>printbetweencitations</code></a>: <a href="#Formatting-citations">Formatting citations</a></li>
-<li><a href="#index-printcitefinish-73"><code>printcitefinish</code></a>: <a href="#Formatting-citations">Formatting citations</a></li>
-<li><a href="#index-printcitenote-75"><code>printcitenote</code></a>: <a href="#Formatting-citations">Formatting citations</a></li>
-<li><a href="#index-printcitestart-72"><code>printcitestart</code></a>: <a href="#Formatting-citations">Formatting citations</a></li>
-<li><a href="#index-printitem-137"><code>printitem</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-psfrag_002esty-433"><code>psfrag.sty</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-quadcolumns-343"><code>quadcolumns</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-raggedright-_0040r_007bfor-index-entries_007d-282"><code>raggedright </code><span class="roman">for index entries</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-raise-_0040r_007b_0028hyperlink-option_0029_007d-849"><code>raise </code><span class="roman">(hyperlink option)</span></a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-raise-_0040r_007b_0028hyperlink-option_0029_007d-597"><code>raise </code><span class="roman">(hyperlink option)</span></a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-raw-_0040r_007b_0028destination-type_0029_007d-647"><code>raw </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-raw-_0040r_007b_0028hyperlink-type_0029_007d-725"><code>raw </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-rbracechar-988"><code>rbracechar</code></a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-readindexfile-263"><code>readindexfile</code></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-readindexfile-_0040r_007b_0028hyperlinks_0029_007d-544"><code>readindexfile </code><span class="roman">(hyperlinks)</span></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
-<li><a href="#index-readtocfile-157"><code>readtocfile</code></a>: <a href="#Contents">Contents</a></li>
-<li><a href="#index-ref-178"><code>ref</code></a>: <a href="#Using-generic-references">Using generic references</a></li>
-<li><a href="#index-ref-_0040r_007b_0028hyperlinks_0029_007d-506"><code>ref </code><span class="roman">(hyperlinks)</span></a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
-<li><a href="#index-refn-175"><code>refn</code></a>: <a href="#Using-generic-references">Using generic references</a></li>
-<li><a href="#index-refn-_0040r_007b_0028hyperlinks_0029_007d-503"><code>refn </code><span class="roman">(hyperlinks)</span></a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
-<li><a href="#index-refs-179"><code>refs</code></a>: <a href="#Using-generic-references">Using generic references</a></li>
-<li><a href="#index-refs-_0040r_007b_0028hyperlinks_0029_007d-509"><code>refs </code><span class="roman">(hyperlinks)</span></a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
-<li><a href="#index-refspace-516"><code>refspace</code></a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
-<li><a href="#index-refspace-508"><code>refspace</code></a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
-<li><a href="#index-reftie-532"><code>reftie</code></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
-<li><a href="#index-reftie-505"><code>reftie</code></a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
-<li><a href="#index-resetatcatcode-980"><code>resetatcatcode</code></a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-rewritetocfile-_0040r_007b_0028conditional_0029_007d-160"><code>rewritetocfile </code><span class="roman">(conditional)</span></a>: <a href="#Contents">Contents</a></li>
-<li><a href="#index-right-_0040r_007b_0028destination-option_0029_007d-684"><code>right </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-right-_0040r_007b_0028destination-option_0029_007d-644"><code>right </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-rightmargin-329"><code>rightmargin</code></a>: <a href="#Margins">Margins</a></li>
-<li><a href="#index-rt-884"><code>rt</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-sanitize-1020"><code>sanitize</code></a>: <a href="#Converting-to-characters">Converting to characters</a></li>
-<li><a href="#index-sarrowlength-951"><code>sarrowlength</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-sarrowlength-890"><code>sarrowlength</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-sed-311"><code>sed</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-see-_0040r_007bfor-index-entries_007d-306"><code>see </code><span class="roman">for index entries</span></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-see-_0040r_007bfor-index-entries_007d-241"><code>see </code><span class="roman">for index entries</span></a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
-<li><a href="#index-seealso-_0040r_007bfor-index-entries_007d-245"><code>seealso </code><span class="roman">for index entries</span></a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
-<li><a href="#index-seevariant-303"><code>seevariant</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-setidxpagelistdelimiter-1061"><code>setidxpagelistdelimiter</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
-<li><a href="#index-setidxpagerangedelimiter-1062"><code>setidxpagerangedelimiter</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
-<li><a href="#index-setproperty-1032"><code>setproperty</code></a>: <a href="#Properties">Properties</a></li>
-<li><a href="#index-setuplistinghook-146"><code>setuplistinghook</code></a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
-<li><a href="#index-sidx-222"><code>sidx</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
-<li><a href="#index-sidxmarked-227"><code>sidxmarked</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
-<li><a href="#index-sidxname-224"><code>sidxname</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
-<li><a href="#index-sidxsubmarked-230"><code>sidxsubmarked</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
-<li><a href="#index-singlecolumn-344"><code>singlecolumn</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-sline-887"><code>sline</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-SLiTeX-389"><code>SLiTeX</code></a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-special-449"><code>special</code></a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-specialpathdelimiters-_0040r_007b_0028conditional_0029_007d-371"><code>specialpathdelimiters </code><span class="roman">(conditional)</span></a>: <a href="#Paths">Paths</a></li>
-<li><a href="#index-subeqnumber-203"><code>subeqnumber</code></a>: <a href="#Subequation-references">Subequation references</a></li>
-<li><a href="#index-subitem-_0040r_007bin-indexes_007d-274"><code>subitem </code><span class="roman">in indexes</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-subsubitem-_0040r_007bin-indexes_007d-275"><code>subsubitem </code><span class="roman">in indexes</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-testfileexistence-1052"><code>testfileexistence</code></a>: <a href="#Auxiliary-files">Auxiliary files</a></li>
-<li><a href="#index-TeX-375"><code>TeX</code></a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-texi2dvi-211"><code>texi2dvi</code></a>: <a href="#Indexing">Indexing</a></li>
-<li><a href="#index-texi2dvi-68"><code>texi2dvi</code></a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-texi2dvi-26"><code>texi2dvi</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
-<li><a href="#index-timestamp-105"><code>timestamp</code></a>: <a href="#Time-of-day">Time of day</a></li>
-<li><a href="#index-timestring-104"><code>timestring</code></a>: <a href="#Time-of-day">Time of day</a></li>
-<li><a href="#index-toc_0040dots_007b_007dentry-155"><code>toc...entry</code></a>: <a href="#Contents">Contents</a></li>
-<li><a href="#index-tocfilebasename-161"><code>tocfilebasename</code></a>: <a href="#Contents">Contents</a></li>
-<li><a href="#index-today-106"><code>today</code></a>: <a href="#Time-of-day">Time of day</a></li>
-<li><a href="#index-top-_0040r_007b_0028destination-option_0029_007d-688"><code>top </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-top-_0040r_007b_0028destination-option_0029_007d-627"><code>top </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-topmargin-326"><code>topmargin</code></a>: <a href="#Margins">Margins</a></li>
-<li><a href="#index-tracingall-32"><code>tracingall</code></a>: <a href="#Diagnostics">Diagnostics</a></li>
-<li><a href="#index-tracingboxes-34"><code>tracingboxes</code></a>: <a href="#Diagnostics">Diagnostics</a></li>
-<li><a href="#index-tracingoff-35"><code>tracingoff</code></a>: <a href="#Diagnostics">Diagnostics</a></li>
-<li><a href="#index-trimsee-312"><code>trimsee</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-triplecolumns-342"><code>triplecolumns</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-uncatcodespecials-985"><code>uncatcodespecials</code></a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-unorderedlist-115"><code>unorderedlist</code></a>: <a href="#Lists">Lists</a></li>
-<li><a href="#index-unorderedlistdepth-133"><code>unorderedlistdepth</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-unorderedmarker-131"><code>unorderedmarker</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-url-_0040r_007b_0028hyperlink-type_0029_007d-721"><code>url </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-url-_0040r_007b_0028hyperlinks_0029_007d-479"><code>url </code><span class="roman">(hyperlinks)</span></a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
-<li><a href="#index-url_002esty-480"><code>url.sty</code></a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
-<li><a href="#index-url_002esty-437"><code>url.sty</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-usepackage-416"><code>usepackage</code></a>: <a href="#The-_005cusepackage-command">The \usepackage command</a></li>
-<li><a href="#index-varrowlength-950"><code>varrowlength</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-varrowlength-889"><code>varrowlength</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-vchannel-965"><code>vchannel</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-verbatim-148"><code>verbatim</code></a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
-<li><a href="#index-verbatimescapechar-149"><code>verbatimescapechar</code></a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
-<li><a href="#index-vgrid-968"><code>vgrid</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-vgrid-945"><code>vgrid</code></a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-vline-912"><code>vline</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-vmorphposn-957"><code>vmorphposn</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-vmorphposn-892"><code>vmorphposn</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-vmorphposndn-959"><code>vmorphposndn</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-vmorphposndn-897"><code>vmorphposndn</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-vmorphposnlft-961"><code>vmorphposnlft</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-vmorphposnlft-901"><code>vmorphposnlft</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-vmorphposnrt-960"><code>vmorphposnrt</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-vmorphposnrt-900"><code>vmorphposnrt</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-vmorphposnup-958"><code>vmorphposnup</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
-<li><a href="#index-vmorphposnup-896"><code>vmorphposnup</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-vpenalty-1050"><code>vpenalty</code></a>: <a href="#Mode_002dspecific-penalties">Mode-specific penalties</a></li>
-<li><a href="#index-vruledefaultwidth-44"><code>vruledefaultwidth</code></a>: <a href="#Rules">Rules</a></li>
-<li><a href="#index-width-_0040r_007b_0028destination-option_0029_007d-671"><code>width </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-width-_0040r_007b_0028destination-option_0029_007d-639"><code>width </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-width-_0040r_007b_0028hyperlink-option_0029_007d-776"><code>width </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-writenumberedtocentry-156"><code>writenumberedtocentry</code></a>: <a href="#Contents">Contents</a></li>
-<li><a href="#index-writetocentry-154"><code>writetocentry</code></a>: <a href="#Contents">Contents</a></li>
-<li><a href="#index-xcolor_002esty-444"><code>xcolor.sty</code></a>: <a href="#Packages-known-not-to-work">Packages known not to work</a></li>
-<li><a href="#index-xeplain_002etex-2"><code>xeplain.tex</code></a>: <a href="#Introduction">Introduction</a></li>
-<li><a href="#index-xrdef-180"><code>xrdef</code></a>: <a href="#Page-references">Page references</a></li>
-<li><a href="#index-xrdef-_0040r_007b_0028hyperlinks_0029_007d-510"><code>xrdef </code><span class="roman">(hyperlinks)</span></a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
-<li><a href="#index-xref-181"><code>xref</code></a>: <a href="#Page-references">Page references</a></li>
-<li><a href="#index-xref-_0040r_007b_0028hyperlinks_0029_007d-515"><code>xref </code><span class="roman">(hyperlinks)</span></a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
-<li><a href="#index-xrefn-176"><code>xrefn</code></a>: <a href="#Using-generic-references">Using generic references</a></li>
-<li><a href="#index-xrefn-_0040r_007b_0028hyperlinks_0029_007d-504"><code>xrefn </code><span class="roman">(hyperlinks)</span></a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
-<li><a href="#index-xrefpageword-517"><code>xrefpageword</code></a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
-<li><a href="#index-xrefpageword-182"><code>xrefpageword</code></a>: <a href="#Page-references">Page references</a></li>
-<li><a href="#index-xrefwarning-_0040r_007bconditional_007d-177"><code>xrefwarning </code><span class="roman">conditional</span></a>: <a href="#Using-generic-references">Using generic references</a></li>
-<li><a href="#index-xrefwarningfalse-63"><code>xrefwarningfalse</code></a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-xrlabel-1019"><code>xrlabel</code></a>: <a href="#Converting-to-characters">Converting to characters</a></li>
-<li><a href="#index-xyz-_0040r_007b_0028destination-type_0029_007d-624"><code>xyz </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-zoom-_0040r_007b_0028destination-option_0029_007d-658"><code>zoom </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-zoom-_0040r_007b_0028destination-option_0029_007d-625"><code>zoom </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-</ul><!-- Public domain. -->
+<li><a href="#index-footnote-_0040r_007b_0028hyperlinks_0029_007d-667"><code>footnote </code><span class="roman">(hyperlinks)</span></a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
+<li><a href="#index-footnotemarkseparation-388"><code>footnotemarkseparation</code></a>: <a href="#Footnotes">Footnotes</a></li>
+<li><a href="#index-footnoteruleheight-392"><code>footnoteruleheight</code></a>: <a href="#Footnotes">Footnotes</a></li>
+<li><a href="#index-footnoterulewidth-391"><code>footnoterulewidth</code></a>: <a href="#Footnotes">Footnotes</a></li>
+<li><a href="#index-For-1159"><code>For</code></a>: <a href="#Iteration">Iteration</a></li>
+<li><a href="#index-for-1158"><code>for</code></a>: <a href="#Iteration">Iteration</a></li>
+<li><a href="#index-frac-395"><code>frac</code></a>: <a href="#Fractions">Fractions</a></li>
+<li><a href="#index-fullmonthname-109"><code>fullmonthname</code></a>: <a href="#Time-of-day">Time of day</a></li>
+<li><a href="#index-futurenonspacelet-1207"><code>futurenonspacelet</code></a>: <a href="#g_t_005cfuturenonspacelet">\futurenonspacelet</a></li>
+<li><a href="#index-generaldisplay-104"><code>generaldisplay</code></a>: <a href="#Formatting-displays">Formatting displays</a></li>
+<li><a href="#index-getproperty-1187"><code>getproperty</code></a>: <a href="#Properties">Properties</a></li>
+<li><a href="#index-gloggingall-42"><code>gloggingall</code></a>: <a href="#Diagnostics">Diagnostics</a></li>
+<li><a href="#index-gobble-1167"><code>gobble</code></a>: <a href="#Macro-arguments">Macro arguments</a></li>
+<li><a href="#index-gobbletwo-1168"><code>gobbletwo</code></a>: <a href="#Macro-arguments">Macro arguments</a></li>
+<li><a href="#index-gridcommdiag-1088"><code>gridcommdiag</code></a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-gtracingall-43"><code>gtracingall</code></a>: <a href="#Diagnostics">Diagnostics</a></li>
+<li><a href="#index-gutter-381"><code>gutter</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-gutterbox-382"><code>gutterbox</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-hangindent-_0040r_007bfor-index-entries_007d-311"><code>hangindent </code><span class="roman">for index entries</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-harrowlength-1095"><code>harrowlength</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-harrowlength-1034"><code>harrowlength</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-hchannel-1110"><code>hchannel</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-height-_0040r_007b_0028destination-option_0029_007d-804"><code>height </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-height-_0040r_007b_0028destination-option_0029_007d-777"><code>height </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-height-_0040r_007b_0028hyperlink-option_0029_007d-911"><code>height </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-hgrid-1113"><code>hgrid</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-hgrid-1090"><code>hgrid</code></a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-hldest-943"><code>hldest</code></a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-hldest-787"><code>hldest</code></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-hldest-714"><code>hldest</code></a>: <a href="#Destination-types-for-hypertex">Destination types for hypertex</a></li>
+<li><a href="#index-hldest-529"><code>hldest</code></a>: <a href="#Explicit-hyperlinks">Explicit hyperlinks</a></li>
+<li><a href="#index-hldestoff-1012"><code>hldestoff</code></a>: <a href="#Turning-low_002dlevel-commands-on_002foff">Turning low-level commands on/off</a></li>
+<li><a href="#index-hldestoff-930"><code>hldestoff</code></a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-hldeston-1011"><code>hldeston</code></a>: <a href="#Turning-low_002dlevel-commands-on_002foff">Turning low-level commands on/off</a></li>
+<li><a href="#index-hldestopts-1255"><code>hldestopts</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-hldestopts-991"><code>hldestopts</code></a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-hldestopts-959"><code>hldestopts</code></a>: <a href="#Setting-default-types-and-options">Setting default types and options</a></li>
+<li><a href="#index-hldesttype-1254"><code>hldesttype</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-hldesttype-967"><code>hldesttype</code></a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-hldesttype-957"><code>hldesttype</code></a>: <a href="#Setting-default-types-and-options">Setting default types and options</a></li>
+<li><a href="#index-hlend-1243"><code>hlend</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-hlend-531"><code>hlend</code></a>: <a href="#Explicit-hyperlinks">Explicit hyperlinks</a></li>
+<li><a href="#index-hlfootbacklabel-669"><code>hlfootbacklabel</code></a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
+<li><a href="#index-hlfootlabel-668"><code>hlfootlabel</code></a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
+<li><a href="#index-hlfootlabelnumber-670"><code>hlfootlabelnumber</code></a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
+<li><a href="#index-hlhash-739"><code>hlhash</code></a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-hlidx-628"><code>hlidx</code></a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
+<li><a href="#index-hlidxlabel-629"><code>hlidxlabel</code></a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
+<li><a href="#index-hlidxlabelnumber-630"><code>hlidxlabelnumber</code></a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
+<li><a href="#index-hlidxpage-638"><code>hlidxpage</code></a>: <a href="#Page-destinations-for-index-terms">Page destinations for index terms</a></li>
+<li><a href="#index-hlidxpagelabel-637"><code>hlidxpagelabel</code></a>: <a href="#Page-destinations-for-index-terms">Page destinations for index terms</a></li>
+<li><a href="#index-hlight-_0040r_007b_0028hyperlink-option_0029_007d-901"><code>hlight </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-hlightcommentslisting-1281"><code>hlightcommentslisting</code></a>: <a href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">Highlighting TeX comments in listings (lscommnt.tex)</a></li>
+<li><a href="#index-hline-1050"><code>hline</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-hloff-1014"><code>hloff</code></a>: <a href="#Turning-low_002dlevel-commands-on_002foff">Turning low-level commands on/off</a></li>
+<li><a href="#index-hloff-929"><code>hloff</code></a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-hlon-1013"><code>hlon</code></a>: <a href="#Turning-low_002dlevel-commands-on_002foff">Turning low-level commands on/off</a></li>
+<li><a href="#index-hlopts-1253"><code>hlopts</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-hlopts-990"><code>hlopts</code></a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-hlopts-958"><code>hlopts</code></a>: <a href="#Setting-default-types-and-options">Setting default types and options</a></li>
+<li><a href="#index-hlstart-1242"><code>hlstart</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-hlstart-942"><code>hlstart</code></a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-hlstart-865"><code>hlstart</code></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-hlstart-740"><code>hlstart</code></a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-hlstart-530"><code>hlstart</code></a>: <a href="#Explicit-hyperlinks">Explicit hyperlinks</a></li>
+<li><a href="#index-hltype-966"><code>hltype</code></a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-hltype-956"><code>hltype</code></a>: <a href="#Setting-default-types-and-options">Setting default types and options</a></li>
+<li><a href="#index-hmorphposn-1098"><code>hmorphposn</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-hmorphposn-1037"><code>hmorphposn</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-hmorphposndn-1100"><code>hmorphposndn</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-hmorphposndn-1041"><code>hmorphposndn</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-hmorphposnlft-1102"><code>hmorphposnlft</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-hmorphposnlft-1045"><code>hmorphposnlft</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-hmorphposnrt-1101"><code>hmorphposnrt</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-hmorphposnrt-1044"><code>hmorphposnrt</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-hmorphposnup-1099"><code>hmorphposnup</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-hmorphposnup-1040"><code>hmorphposnup</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-hoffset-284"><code>hoffset</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-hookaction-1179"><code>hookaction</code></a>: <a href="#Hooks">Hooks</a></li>
+<li><a href="#index-hookactiononce-1182"><code>hookactiononce</code></a>: <a href="#Hooks">Hooks</a></li>
+<li><a href="#index-hookappend-1180"><code>hookappend</code></a>: <a href="#Hooks">Hooks</a></li>
+<li><a href="#index-hookprepend-1181"><code>hookprepend</code></a>: <a href="#Hooks">Hooks</a></li>
+<li><a href="#index-hookrun-1183"><code>hookrun</code></a>: <a href="#Hooks">Hooks</a></li>
+<li><a href="#index-href-540"><code>href</code></a>: <a href="#General-hyperlinks">General hyperlinks</a></li>
+<li><a href="#index-hruledefaultdepth-49"><code>hruledefaultdepth</code></a>: <a href="#Rules">Rules</a></li>
+<li><a href="#index-hruledefaultheight-48"><code>hruledefaultheight</code></a>: <a href="#Rules">Rules</a></li>
+<li><a href="#index-hsize-364"><code>hsize</code></a>: <a href="#Margins">Margins</a></li>
+<li><a href="#index-hypertex-_0040r_007b_0028hyperlink-driver_0029_007d-694"><code>hypertex </code><span class="roman">(hyperlink driver)</span></a>: <a href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a></li>
+<li><a href="#index-hyphenpenalty-_0040r_007bfor-index-entries_007d-313"><code>hyphenpenalty </code><span class="roman">for index entries</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-identity-1171"><code>identity</code></a>: <a href="#Macro-arguments">Macro arguments</a></li>
+<li><a href="#index-idx-242"><code>idx</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
+<li><a href="#index-idx-_0040r_007b_0028hyperlinks_0029_007d-615"><code>idx </code><span class="roman">(hyperlinks)</span></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
+<li><a href="#index-idxargclose-273"><code>idxargclose</code></a>: <a href="#Index-entries-with-special-characters">Index entries with special characters</a></li>
+<li><a href="#index-idxargopen-272"><code>idxargopen</code></a>: <a href="#Index-entries-with-special-characters">Index entries with special characters</a></li>
+<li><a href="#index-idxbeginrangemark-327"><code>idxbeginrangemark</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-idxencapoperator-326"><code>idxencapoperator</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-idxendrangemark-328"><code>idxendrangemark</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-idxexact-649"><code>idxexact</code></a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
+<li><a href="#index-idxmarked-247"><code>idxmarked</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
+<li><a href="#index-idxmarked-_0040r_007b_0028hyperlinks_0029_007d-617"><code>idxmarked </code><span class="roman">(hyperlinks)</span></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
+<li><a href="#index-idxname-245"><code>idxname</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
+<li><a href="#index-idxname-_0040r_007b_0028hyperlinks_0029_007d-616"><code>idxname </code><span class="roman">(hyperlinks)</span></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
+<li><a href="#index-idxnameseparator-244"><code>idxnameseparator</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
+<li><a href="#index-idxnone-651"><code>idxnone</code></a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
+<li><a href="#index-idxpage-650"><code>idxpage</code></a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
+<li><a href="#index-idxpagei-1225"><code>idxpagei</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
+<li><a href="#index-idxpageii-1226"><code>idxpageii</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
+<li><a href="#index-idxpagelistdelimiter-1229"><code>idxpagelistdelimiter</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
+<li><a href="#index-idxpagenum-329"><code>idxpagenum</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-idxpagerangedelimiter-1230"><code>idxpagerangedelimiter</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
+<li><a href="#index-idxparselist-1223"><code>idxparselist</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
+<li><a href="#index-idxparserange-1224"><code>idxparserange</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
+<li><a href="#index-idxrangebeginword-321"><code>idxrangebeginword</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-idxrangeendword-322"><code>idxrangeendword</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-idxseealsocmdword-324"><code>idxseealsocmdword</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-idxseecmdword-323"><code>idxseecmdword</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-idxsubentryseparator-325"><code>idxsubentryseparator</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-idxsubmarked-248"><code>idxsubmarked</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
+<li><a href="#index-idxsubmarked-_0040r_007b_0028hyperlinks_0029_007d-618"><code>idxsubmarked </code><span class="roman">(hyperlinks)</span></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
+<li><a href="#index-ifempty-1193"><code>ifempty</code></a>: <a href="#g_t_005cifempty">\ifempty</a></li>
+<li><a href="#index-iffileexists-1220"><code>iffileexists</code></a>: <a href="#Auxiliary-files">Auxiliary files</a></li>
+<li><a href="#index-ifinteger-1197"><code>ifinteger</code></a>: <a href="#g_t_005cifinteger-and-_005cisinteger">\ifinteger and \isinteger</a></li>
+<li><a href="#index-ifpdf-520"><code>ifpdf</code></a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-ifpdf-433"><code>ifpdf</code></a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
+<li><a href="#index-ifrewritetocfile-176"><code>ifrewritetocfile</code></a>: <a href="#Reading-the-_002etoc-file">Reading the .toc file</a></li>
+<li><a href="#index-ifundefined-1190"><code>ifundefined</code></a>: <a href="#g_t_005cifundefined">\ifundefined</a></li>
+<li><a href="#index-includegraphics-1267"><code>includegraphics</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-indexfilebasename-294"><code>indexfilebasename</code></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-indexfonts-300"><code>indexfonts</code></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-indexitem-_0040r_007bhook_007d-314"><code>indexitem </code><span class="roman">hook</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-indexprooffont-280"><code>indexprooffont</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-indexproofterm-279"><code>indexproofterm</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-indexproofunbox-288"><code>indexproofunbox</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-indexsee-656"><code>indexsee</code></a>: <a href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a></li>
+<li><a href="#index-indexsee-334"><code>indexsee</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-indexseealso-657"><code>indexseealso</code></a>: <a href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a></li>
+<li><a href="#index-indexseealso-335"><code>indexseealso</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-indexseealsowords-332"><code>indexseealsowords</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-indexseeword-331"><code>indexseeword</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-indexsetmargins-286"><code>indexsetmargins</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-indexspace-315"><code>indexspace</code></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-innerdef-1151"><code>innerdef</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-innerinnerdef-1152"><code>innerinnerdef</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-innernewbox-1139"><code>innernewbox</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-innernewcount-1140"><code>innernewcount</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-innernewdimen-1141"><code>innernewdimen</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-innernewfam-1142"><code>innernewfam</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-innernewhelp-1143"><code>innernewhelp</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-innernewif-1144"><code>innernewif</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-innernewinsert-1145"><code>innernewinsert</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-innernewlanguage-1146"><code>innernewlanguage</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-innernewread-1147"><code>innernewread</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-innernewskip-1148"><code>innernewskip</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-innernewtoks-1149"><code>innernewtoks</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-innernewwrite-1150"><code>innernewwrite</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-input-449"><code>input</code></a>: <a href="#Environment-for-loading-packages">Environment for loading packages</a></li>
+<li><a href="#index-insidemargin-283"><code>insidemargin</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-interfootnoteskip-389"><code>interfootnoteskip</code></a>: <a href="#Footnotes">Footnotes</a></li>
+<li><a href="#index-interitemskip-134"><code>interitemskip</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-interitemskipamount-128"><code>interitemskipamount</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-isinteger-1203"><code>isinteger</code></a>: <a href="#g_t_005cifinteger-and-_005cisinteger">\ifinteger and \isinteger</a></li>
+<li><a href="#index-item-_0040r_007bin-indexes_007d-303"><code>item </code><span class="roman">in indexes</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-itemletter-141"><code>itemletter</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-itemnumber-140"><code>itemnumber</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-ituline-1233"><code>ituline</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
+<li><a href="#index-jobname-1219"><code>jobname</code></a>: <a href="#Auxiliary-files">Auxiliary files</a></li>
+<li><a href="#index-jobname-295"><code>jobname</code></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-jobname-59"><code>jobname</code></a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-LAMSTeX-413"><code>LAMSTeX</code></a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-LaTeX-415"><code>LaTeX</code></a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-lbracechar-1133"><code>lbracechar</code></a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-left-_0040r_007b_0028destination-option_0029_007d-817"><code>left </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-left-_0040r_007b_0028destination-option_0029_007d-763"><code>left </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-leftdisplayindent-98"><code>leftdisplayindent</code></a>: <a href="#Displays">Displays</a></li>
+<li><a href="#index-leftdisplays-97"><code>leftdisplays</code></a>: <a href="#Displays">Displays</a></li>
+<li><a href="#index-leftdisplaysetup-103"><code>leftdisplaysetup</code></a>: <a href="#Formatting-displays">Formatting displays</a></li>
+<li><a href="#index-leftmargin-358"><code>leftmargin</code></a>: <a href="#Margins">Margins</a></li>
+<li><a href="#index-leqalignno-102"><code>leqalignno</code></a>: <a href="#Displays">Displays</a></li>
+<li><a href="#index-letreturn-1129"><code>letreturn</code></a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-letter-1117"><code>letter</code></a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-lft-1031"><code>lft</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-li-123"><code>li</code></a>: <a href="#Lists">Lists</a></li>
+<li><a href="#index-li-_0040r_007b_0028hyperlinks_0029_007d-573"><code>li </code><span class="roman">(hyperlinks)</span></a>: <a href="#List-hyperlinks">List hyperlinks</a></li>
+<li><a href="#index-linenumberedlisting-1279"><code>linenumberedlisting</code></a>: <a href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">Highlighting TeX comments in listings (lscommnt.tex)</a></li>
+<li><a href="#index-linenumberedlisting-153"><code>linenumberedlisting</code></a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-listcompact-124"><code>listcompact</code></a>: <a href="#Lists">Lists</a></li>
+<li><a href="#index-listing-1277"><code>listing</code></a>: <a href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">Highlighting TeX comments in listings (lscommnt.tex)</a></li>
+<li><a href="#index-listing-150"><code>listing</code></a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-listingfont-151"><code>listingfont</code></a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-listleftindent-129"><code>listleftindent</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-listmarkerspace-135"><code>listmarkerspace</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-listrightindent-130"><code>listrightindent</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-loggingall-39"><code>loggingall</code></a>: <a href="#Diagnostics">Diagnostics</a></li>
+<li><a href="#index-loop-1160"><code>loop</code></a>: <a href="#Iteration">Iteration</a></li>
+<li><a href="#index-makeactive-1121"><code>makeactive</code></a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-makeatletter-1125"><code>makeatletter</code></a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-makeatother-1127"><code>makeatother</code></a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-makeblankbox-426"><code>makeblankbox</code></a>: <a href="#Boxes">Boxes</a></li>
+<li><a href="#index-makecolumns-353"><code>makecolumns</code></a>: <a href="#Tables">Tables</a></li>
+<li><a href="#index-makeheadline-289"><code>makeheadline</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-mapdown-1029"><code>mapdown</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-mapleft-1027"><code>mapleft</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-mapright-1026"><code>mapright</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-mapup-1028"><code>mapup</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-matrix-1073"><code>matrix</code></a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-MF-417"><code>MF</code></a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-monthname-108"><code>monthname</code></a>: <a href="#Time-of-day">Time of day</a></li>
+<li><a href="#index-morphdist-1108"><code>morphdist</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-morphdist-1039"><code>morphdist</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-name-_0040r_007b_0028hyperlink-type_0029_007d-835"><code>name </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-name-_0040r_007b_0028hyperlink-type_0029_007d-722"><code>name </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-new_0040dots_007b_007d-1137"><code>new...</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-newwin-_0040r_007b_0028hyperlink-option_0029_007d-904"><code>newwin </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-newwin-_0040r_007b_0028hyperlink-option_0029_007d-854"><code>newwin </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-noarrow-28"><code>noarrow</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
+<li><a href="#index-noauxfile-29"><code>noauxfile</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
+<li><a href="#index-nobibtex-27"><code>nobibtex</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
+<li><a href="#index-nocite-65"><code>nocite</code></a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-nolastlinelisting-1280"><code>nolastlinelisting</code></a>: <a href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">Highlighting TeX comments in listings (lscommnt.tex)</a></li>
+<li><a href="#index-nolastlinelisting-155"><code>nolastlinelisting</code></a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-nolinks-_0040r_007b_0028hyperlink-driver_0029_007d-917"><code>nolinks </code><span class="roman">(hyperlink driver)</span></a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-normalbaselineskip-681"><code>normalbaselineskip</code></a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-num-_0040r_007b_0028hyperlink-type_0029_007d-866"><code>num </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-numberedfootnote-387"><code>numberedfootnote</code></a>: <a href="#Footnotes">Footnotes</a></li>
+<li><a href="#index-numberedfootnote-_0040r_007b_0028hyperlinks_0029_007d-666"><code>numberedfootnote </code><span class="roman">(hyperlinks)</span></a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
+<li><a href="#index-numberedlist-117"><code>numberedlist</code></a>: <a href="#Lists">Lists</a></li>
+<li><a href="#index-numberedlistdepth-138"><code>numberedlistdepth</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-numberedmarker-136"><code>numberedmarker</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-numbername-1215"><code>numbername</code></a>: <a href="#Writing-out-numbers">Writing out numbers</a></li>
+<li><a href="#index-obeywhitespace-1211"><code>obeywhitespace</code></a>: <a href="#Obeying-spaces">Obeying spaces</a></li>
+<li><a href="#index-orderedlist-119"><code>orderedlist</code></a>: <a href="#Lists">Lists</a></li>
+<li><a href="#index-other-1118"><code>other</code></a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-outer-1138"><code>outer</code></a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-outsidemargin-285"><code>outsidemargin</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-page-_0040r_007b_0028hyperlink-type_0029_007d-843"><code>page </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-pagefit-_0040r_007b_0028hyperlink-option_0029_007d-907"><code>pagefit </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-pagefit-_0040r_007b_0028hyperlink-option_0029_007d-847"><code>pagefit </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-pageno-282"><code>pageno</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-pagetotal-380"><code>pagetotal</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-paperheight-365"><code>paperheight</code></a>: <a href="#Margins">Margins</a></li>
+<li><a href="#index-paperwidth-366"><code>paperwidth</code></a>: <a href="#Margins">Margins</a></li>
+<li><a href="#index-parindent-_0040r_007bin-indexes_007d-298"><code>parindent </code><span class="roman">in indexes</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-path-399"><code>path</code></a>: <a href="#Paths">Paths</a></li>
+<li><a href="#index-pdfoutput-434"><code>pdfoutput</code></a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
+<li><a href="#index-pdftex-_0040r_007b_0028hyperlink-driver_0029_007d-747"><code>pdftex </code><span class="roman">(hyperlink driver)</span></a>: <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a></li>
+<li><a href="#index-percentchar-1132"><code>percentchar</code></a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-phantomeqlabel-608"><code>phantomeqlabel</code></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
+<li><a href="#index-phantomeqnumber-609"><code>phantomeqnumber</code></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
+<li><a href="#index-previouseverydisplay-105"><code>previouseverydisplay</code></a>: <a href="#Formatting-displays">Formatting displays</a></li>
+<li><a href="#index-printbetweencitations-80"><code>printbetweencitations</code></a>: <a href="#Formatting-citations">Formatting citations</a></li>
+<li><a href="#index-printcitefinish-79"><code>printcitefinish</code></a>: <a href="#Formatting-citations">Formatting citations</a></li>
+<li><a href="#index-printcitenote-81"><code>printcitenote</code></a>: <a href="#Formatting-citations">Formatting citations</a></li>
+<li><a href="#index-printcitestart-78"><code>printcitestart</code></a>: <a href="#Formatting-citations">Formatting citations</a></li>
+<li><a href="#index-printitem-143"><code>printitem</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-printlistinglineno-154"><code>printlistinglineno</code></a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-quadcolumns-373"><code>quadcolumns</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-raggedright-_0040r_007bfor-index-entries_007d-312"><code>raggedright </code><span class="roman">for index entries</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-raise-_0040r_007b_0028hyperlink-option_0029_007d-995"><code>raise </code><span class="roman">(hyperlink option)</span></a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-raise-_0040r_007b_0028hyperlink-option_0029_007d-677"><code>raise </code><span class="roman">(hyperlink option)</span></a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-raw-_0040r_007b_0028destination-type_0029_007d-784"><code>raw </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-raw-_0040r_007b_0028destination-type_0029_007d-711"><code>raw </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-hypertex">Destination types for hypertex</a></li>
+<li><a href="#index-raw-_0040r_007b_0028hyperlink-type_0029_007d-862"><code>raw </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-raw-_0040r_007b_0028hyperlink-type_0029_007d-736"><code>raw </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-rbracechar-1134"><code>rbracechar</code></a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-readindexfile-293"><code>readindexfile</code></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-readindexfile-_0040r_007b_0028hyperlinks_0029_007d-624"><code>readindexfile </code><span class="roman">(hyperlinks)</span></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
+<li><a href="#index-readtocfile-174"><code>readtocfile</code></a>: <a href="#Reading-the-_002etoc-file">Reading the .toc file</a></li>
+<li><a href="#index-ref-1258"><code>ref</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-ref-197"><code>ref</code></a>: <a href="#Using-generic-references">Using generic references</a></li>
+<li><a href="#index-ref-_0040r_007b_0028hyperlinks_0029_007d-586"><code>ref </code><span class="roman">(hyperlinks)</span></a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
+<li><a href="#index-refn-194"><code>refn</code></a>: <a href="#Using-generic-references">Using generic references</a></li>
+<li><a href="#index-refn-_0040r_007b_0028hyperlinks_0029_007d-583"><code>refn </code><span class="roman">(hyperlinks)</span></a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
+<li><a href="#index-refs-198"><code>refs</code></a>: <a href="#Using-generic-references">Using generic references</a></li>
+<li><a href="#index-refs-_0040r_007b_0028hyperlinks_0029_007d-589"><code>refs </code><span class="roman">(hyperlinks)</span></a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
+<li><a href="#index-refspace-596"><code>refspace</code></a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
+<li><a href="#index-refspace-588"><code>refspace</code></a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
+<li><a href="#index-reftie-612"><code>reftie</code></a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
+<li><a href="#index-reftie-585"><code>reftie</code></a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
+<li><a href="#index-repeat-1161"><code>repeat</code></a>: <a href="#Iteration">Iteration</a></li>
+<li><a href="#index-resetatcatcode-1126"><code>resetatcatcode</code></a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-rewritetocfile-_0040r_007b_0028conditional_0029_007d-177"><code>rewritetocfile </code><span class="roman">(conditional)</span></a>: <a href="#Reading-the-_002etoc-file">Reading the .toc file</a></li>
+<li><a href="#index-right-_0040r_007b_0028destination-option_0029_007d-821"><code>right </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-right-_0040r_007b_0028destination-option_0029_007d-781"><code>right </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-rightmargin-359"><code>rightmargin</code></a>: <a href="#Margins">Margins</a></li>
+<li><a href="#index-rotatebox-1268"><code>rotatebox</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-rt-1030"><code>rt</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-sanitize-1174"><code>sanitize</code></a>: <a href="#Converting-to-characters">Converting to characters</a></li>
+<li><a href="#index-sarrowlength-1097"><code>sarrowlength</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-sarrowlength-1036"><code>sarrowlength</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-see-_0040r_007bfor-index-entries_007d-336"><code>see </code><span class="roman">for index entries</span></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-see-_0040r_007bfor-index-entries_007d-260"><code>see </code><span class="roman">for index entries</span></a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
+<li><a href="#index-seealso-_0040r_007bfor-index-entries_007d-264"><code>seealso </code><span class="roman">for index entries</span></a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
+<li><a href="#index-seevariant-333"><code>seevariant</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-setidxpagelistdelimiter-1227"><code>setidxpagelistdelimiter</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
+<li><a href="#index-setidxpagerangedelimiter-1228"><code>setidxpagerangedelimiter</code></a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
+<li><a href="#index-setproperty-1186"><code>setproperty</code></a>: <a href="#Properties">Properties</a></li>
+<li><a href="#index-setuplistinghook-1278"><code>setuplistinghook</code></a>: <a href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">Highlighting TeX comments in listings (lscommnt.tex)</a></li>
+<li><a href="#index-setuplistinghook-152"><code>setuplistinghook</code></a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-sidx-241"><code>sidx</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
+<li><a href="#index-sidxmarked-246"><code>sidxmarked</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
+<li><a href="#index-sidxname-243"><code>sidxname</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
+<li><a href="#index-sidxsubmarked-249"><code>sidxsubmarked</code></a>: <a href="#Indexing-commands">Indexing commands</a></li>
+<li><a href="#index-singlecolumn-374"><code>singlecolumn</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-sline-1033"><code>sline</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-SLiTeX-419"><code>SLiTeX</code></a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-special-514"><code>special</code></a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-specialpathdelimiters-_0040r_007b_0028conditional_0029_007d-401"><code>specialpathdelimiters </code><span class="roman">(conditional)</span></a>: <a href="#Paths">Paths</a></li>
+<li><a href="#index-subeqnumber-222"><code>subeqnumber</code></a>: <a href="#Subequation-references">Subequation references</a></li>
+<li><a href="#index-subitem-_0040r_007bin-indexes_007d-304"><code>subitem </code><span class="roman">in indexes</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-subsubitem-_0040r_007bin-indexes_007d-305"><code>subsubitem </code><span class="roman">in indexes</span></a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-testfileexistence-1218"><code>testfileexistence</code></a>: <a href="#Auxiliary-files">Auxiliary files</a></li>
+<li><a href="#index-TeX-405"><code>TeX</code></a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-timestamp-111"><code>timestamp</code></a>: <a href="#Time-of-day">Time of day</a></li>
+<li><a href="#index-timestring-110"><code>timestring</code></a>: <a href="#Time-of-day">Time of day</a></li>
+<li><a href="#index-toc_0040dots_007b_007dentry-166"><code>toc...entry</code></a>: <a href="#Writing-the-_002etoc-file">Writing the .toc file</a></li>
+<li><a href="#index-tocfilebasename-178"><code>tocfilebasename</code></a>: <a href="#Changing-the-_002etoc-file_0027s-root-name">Changing the .toc file's root name</a></li>
+<li><a href="#index-today-112"><code>today</code></a>: <a href="#Time-of-day">Time of day</a></li>
+<li><a href="#index-top-_0040r_007b_0028destination-option_0029_007d-825"><code>top </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-top-_0040r_007b_0028destination-option_0029_007d-764"><code>top </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-topmargin-356"><code>topmargin</code></a>: <a href="#Margins">Margins</a></li>
+<li><a href="#index-tracingall-38"><code>tracingall</code></a>: <a href="#Diagnostics">Diagnostics</a></li>
+<li><a href="#index-tracingboxes-40"><code>tracingboxes</code></a>: <a href="#Diagnostics">Diagnostics</a></li>
+<li><a href="#index-tracingoff-41"><code>tracingoff</code></a>: <a href="#Diagnostics">Diagnostics</a></li>
+<li><a href="#index-triplecolumns-372"><code>triplecolumns</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-tt-480"><code>tt</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-ttfamily-479"><code>ttfamily</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-uncatcodespecials-1131"><code>uncatcodespecials</code></a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-unorderedlist-121"><code>unorderedlist</code></a>: <a href="#Lists">Lists</a></li>
+<li><a href="#index-unorderedlistdepth-139"><code>unorderedlistdepth</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-unorderedmarker-137"><code>unorderedmarker</code></a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-url-1270"><code>url</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-url-_0040r_007b_0028hyperlink-type_0029_007d-839"><code>url </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-url-_0040r_007b_0028hyperlink-type_0029_007d-726"><code>url </code><span class="roman">(hyperlink type)</span></a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-url-_0040r_007b_0028hyperlinks_0029_007d-553"><code>url </code><span class="roman">(hyperlinks)</span></a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
+<li><a href="#index-usepackage-446"><code>usepackage</code></a>: <a href="#The-_005cusepackage-command">The \usepackage command</a></li>
+<li><a href="#index-varrowlength-1096"><code>varrowlength</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-varrowlength-1035"><code>varrowlength</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-vchannel-1111"><code>vchannel</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-verbatim-159"><code>verbatim</code></a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-verbatimescapechar-160"><code>verbatimescapechar</code></a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-vgrid-1114"><code>vgrid</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-vgrid-1091"><code>vgrid</code></a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-vline-1058"><code>vline</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-vmorphposn-1103"><code>vmorphposn</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-vmorphposn-1038"><code>vmorphposn</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-vmorphposndn-1105"><code>vmorphposndn</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-vmorphposndn-1043"><code>vmorphposndn</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-vmorphposnlft-1107"><code>vmorphposnlft</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-vmorphposnlft-1047"><code>vmorphposnlft</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-vmorphposnrt-1106"><code>vmorphposnrt</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-vmorphposnrt-1046"><code>vmorphposnrt</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-vmorphposnup-1104"><code>vmorphposnup</code></a>: <a href="#Commutative-diagram-parameters">Commutative diagram parameters</a></li>
+<li><a href="#index-vmorphposnup-1042"><code>vmorphposnup</code></a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-vpenalty-1216"><code>vpenalty</code></a>: <a href="#Mode_002dspecific-penalties">Mode-specific penalties</a></li>
+<li><a href="#index-vruledefaultwidth-50"><code>vruledefaultwidth</code></a>: <a href="#Rules">Rules</a></li>
+<li><a href="#index-width-_0040r_007b_0028destination-option_0029_007d-808"><code>width </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-width-_0040r_007b_0028destination-option_0029_007d-776"><code>width </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-width-_0040r_007b_0028hyperlink-option_0029_007d-914"><code>width </code><span class="roman">(hyperlink option)</span></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-writenumberedtocentry-167"><code>writenumberedtocentry</code></a>: <a href="#Writing-the-_002etoc-file">Writing the .toc file</a></li>
+<li><a href="#index-writenumberedtocline-168"><code>writenumberedtocline</code></a>: <a href="#Writing-the-_002etoc-file">Writing the .toc file</a></li>
+<li><a href="#index-writetocentry-165"><code>writetocentry</code></a>: <a href="#Writing-the-_002etoc-file">Writing the .toc file</a></li>
+<li><a href="#index-xrdef-199"><code>xrdef</code></a>: <a href="#Page-references">Page references</a></li>
+<li><a href="#index-xrdef-_0040r_007b_0028hyperlinks_0029_007d-590"><code>xrdef </code><span class="roman">(hyperlinks)</span></a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
+<li><a href="#index-xref-200"><code>xref</code></a>: <a href="#Page-references">Page references</a></li>
+<li><a href="#index-xref-_0040r_007b_0028hyperlinks_0029_007d-595"><code>xref </code><span class="roman">(hyperlinks)</span></a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
+<li><a href="#index-xrefn-195"><code>xrefn</code></a>: <a href="#Using-generic-references">Using generic references</a></li>
+<li><a href="#index-xrefn-_0040r_007b_0028hyperlinks_0029_007d-584"><code>xrefn </code><span class="roman">(hyperlinks)</span></a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
+<li><a href="#index-xrefpageword-597"><code>xrefpageword</code></a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
+<li><a href="#index-xrefpageword-201"><code>xrefpageword</code></a>: <a href="#Page-references">Page references</a></li>
+<li><a href="#index-xrefwarning-_0040r_007bconditional_007d-196"><code>xrefwarning </code><span class="roman">conditional</span></a>: <a href="#Using-generic-references">Using generic references</a></li>
+<li><a href="#index-xrefwarningfalse-69"><code>xrefwarningfalse</code></a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-xrlabel-1173"><code>xrlabel</code></a>: <a href="#Converting-to-characters">Converting to characters</a></li>
+<li><a href="#index-xyz-_0040r_007b_0028destination-type_0029_007d-761"><code>xyz </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-xyz-_0040r_007b_0028destination-type_0029_007d-710"><code>xyz </code><span class="roman">(destination type)</span></a>: <a href="#Destination-types-for-hypertex">Destination types for hypertex</a></li>
+<li><a href="#index-zoom-_0040r_007b_0028destination-option_0029_007d-795"><code>zoom </code><span class="roman">(destination option)</span></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-zoom-_0040r_007b_0028destination-option_0029_007d-762"><code>zoom </code><span class="roman">(destination option)</span></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+ </ul><!-- Public domain. -->
<!-- makeinfo complains about bad links if we make them implicit. Strange. -->
<div class="node">
<p><hr>
@@ -5995,650 +7389,690 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
<ul class="index-cp" compact>
-<li><a href="#index-active-characters-973">active characters</a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-after-index-terms-290">after index terms</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-alignments-322">alignments</a>: <a href="#Tables">Tables</a></li>
-<li><a href="#index-all-groups_002c-specifying-837">all groups, specifying</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-allocation-macros-989">allocation macros</a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-alphanumeric-references-69">alphanumeric references</a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-AMS_0040LaTeX_007b_007d-380">AMSLaTeX</a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-AMS_0040TeX_007b_007d-376">AMSTeX</a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-AMS_0040TeX_007b_007d-conflicts-25">AMSTeX conflicts</a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
-<li><a href="#index-arguments_002c-ignoring-1010">arguments, ignoring</a>: <a href="#Macro-arguments">Macro arguments</a></li>
-<li><a href="#index-arrows-878">arrows</a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-atom-1031">atom</a>: <a href="#Properties">Properties</a></li>
-<li><a href="#index-axuiliary-files_002c-existence-of-1051">axuiliary files, existence of</a>: <a href="#Auxiliary-files">Auxiliary files</a></li>
-<li><a href="#index-backslash-character-976">backslash character</a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-balancing-of-columns-with-_0040code_007b_005csinglecolumn_007d-346">balancing of columns with <code>\singlecolumn</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-g_t_002eaux-_0040r_007bfile_007d-185"><code>.aux </code><span class="roman">file</span></a>: <a href="#Cross_002dreferences">Cross-references</a></li>
+<li><a href="#index-g_t_002eaux-_0040r_007bfile_007d-58"><code>.aux </code><span class="roman">file</span></a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-g_t_002ebbl-_0040r_007bfile_007d-61"><code>.bbl </code><span class="roman">file</span></a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-g_t_002ebib-_0040r_007bfile_007d-60"><code>.bib </code><span class="roman">file</span></a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-g_t_002ebst-_0040r_007bfiles_007d-68"><code>.bst </code><span class="roman">files</span></a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-g_t_002ecls-_0040r_007bfiles_007d-440"><code>.cls </code><span class="roman">files</span></a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
+<li><a href="#index-g_t_002eeps-_0040r_007bfiles_007d-485"><code>.eps </code><span class="roman">files</span></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-g_t_002efmt-_0040r_007bfile_007d-25"><code>.fmt </code><span class="roman">file</span></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
+<li><a href="#index-g_t_002efmt-_0040r_007bfile_007d-18"><code>.fmt </code><span class="roman">file</span></a>: <a href="#Installation">Installation</a></li>
+<li><a href="#index-g_t_002eidx-_0040r_007bfiles_007d-626"><code>.idx </code><span class="roman">files</span></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
+<li><a href="#index-g_t_002eidx-_0040r_007bfiles_007d-228"><code>.idx </code><span class="roman">files</span></a>: <a href="#Indexing">Indexing</a></li>
+<li><a href="#index-g_t_002eind-_0040r_007bfiles_007d-627"><code>.ind </code><span class="roman">files</span></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
+<li><a href="#index-g_t_002eind-_0040r_007bfiles_007d-229"><code>.ind </code><span class="roman">files</span></a>: <a href="#Indexing">Indexing</a></li>
+<li><a href="#index-g_t_002epdf-_0040r_007bfiles_007d-516"><code>.pdf </code><span class="roman">files</span></a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-g_t_002epdf-_0040r_007bfiles_007d-488"><code>.pdf </code><span class="roman">files</span></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-g_t_002epdf-_0040r_007bfiles_007d-432"><code>.pdf </code><span class="roman">files</span></a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
+<li><a href="#index-g_t_002eps-_0040r_007bfiles_007d-515"><code>.ps </code><span class="roman">files</span></a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-g_t_002esty-_0040r_007bfiles_007d-439"><code>.sty </code><span class="roman">files</span></a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
+<li><a href="#index-g_t_002etoc-_0040r_007bfile_007d-164"><code>.toc </code><span class="roman">file</span></a>: <a href="#Contents">Contents</a></li>
+<li><a href="#index-active-characters-1119">active characters</a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-after-index-terms-320">after index terms</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-alignments-352">alignments</a>: <a href="#Tables">Tables</a></li>
+<li><a href="#index-all-groups_002c-specifying-983">all groups, specifying</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-allocation-macros-1135">allocation macros</a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-alphanumeric-references-75">alphanumeric references</a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-AMS_0040LaTeX_007b_007d-410">AMSLaTeX</a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-amsppt_002esty-30"><code>amsppt.sty</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
+<li><a href="#index-AMS_0040TeX_007b_007d-406">AMSTeX</a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-AMS_0040TeX_007b_007d-conflicts-31">AMSTeX conflicts</a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
+<li><a href="#index-arguments_002c-ignoring-1164">arguments, ignoring</a>: <a href="#Macro-arguments">Macro arguments</a></li>
+<li><a href="#index-arrows-1024">arrows</a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-atom-1185">atom</a>: <a href="#Properties">Properties</a></li>
+<li><a href="#index-autopict_002esty-457"><code>autopict.sty</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-avoiding-boxed-links-961">avoiding boxed links</a>: <a href="#Setting-default-types-and-options">Setting default types and options</a></li>
+<li><a href="#index-avoiding-boxed-links-556">avoiding boxed links</a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
+<li><a href="#index-axuiliary-files_002c-existence-of-1217">axuiliary files, existence of</a>: <a href="#Auxiliary-files">Auxiliary files</a></li>
+<li><a href="#index-backslash-character-1122">backslash character</a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-balancing-of-columns-with-_0040code_007b_005csinglecolumn_007d-376">balancing of columns with <code>\singlecolumn</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
<li><a href="#index-Berry_002c-Karl-8">Berry, Karl</a>: <a href="#Introduction">Introduction</a></li>
-<li><a href="#index-beveled-hyperlink-border-749">beveled hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-bibliographies-48">bibliographies</a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-bibliography-fonts-81">bibliography fonts</a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
-<li><a href="#index-bibliography-items_002c-extra-space-between-87">bibliography items, extra space between</a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
-<li><a href="#index-bibliography_002c-formatting-the-76">bibliography, formatting the</a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
-<li><a href="#index-bibliography_002c-hyperlinks-486">bibliography, hyperlinks</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
-<li><a href="#index-Bib_0040TeX_007b_007d-378">BibTeX</a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-Bib_0040TeX_007b_007d-49">BibTeX</a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-black-boxes-391">black boxes</a>: <a href="#Boxes">Boxes</a></li>
-<li><a href="#index-Borceux_002c-Francis-940">Borceux, Francis</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-border-color_002c-hyperlink-740">border color, hyperlink</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-border-style_002c-hyperlink-745">border style, hyperlink</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-border-width_002c-hyperlink-759">border width, hyperlink</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-Bott_002c-Raoul-928">Bott, Raoul</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-boxes_002c-open-395">boxes, open</a>: <a href="#Boxes">Boxes</a></li>
-<li><a href="#index-Brockett_002c-Roger-W_002e-933">Brockett, Roger W.</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-Butterfly-Lemma-948">Butterfly Lemma</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-Carlisle_002c-David-414">Carlisle, David</a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
-<li><a href="#index-category-codes-969">category codes</a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-centering-313">centering</a>: <a href="#Justification">Justification</a></li>
-<li><a href="#index-characters_002c-converting-to-1018">characters, converting to</a>: <a href="#Converting-to-characters">Converting to characters</a></li>
-<li><a href="#index-citations-47">citations</a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-citations_002c-formatting-71">citations, formatting</a>: <a href="#Formatting-citations">Formatting citations</a></li>
-<li><a href="#index-citations_002c-hyperlinks-481">citations, hyperlinks</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
-<li><a href="#index-citations_002c-undefined-58">citations, undefined</a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-color-430">color</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-color_002c-hyperlink-border-741">color, hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-color_002c-hyperlinks-611">color, hyperlinks</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-column-balancing-with-_0040code_007b_005csinglecolumn_007d-345">column balancing with <code>\singlecolumn</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-column-eject-348">column eject</a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-commas-after-index-terms-289">commas after index terms</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-commas-in-cross_002dreferencing-index-entries-310">commas in cross-referencing index entries</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-commutative-diagrams-877">commutative diagrams</a>: <a href="#Commutative-diagrams">Commutative diagrams</a></li>
-<li><a href="#index-contents-152">contents</a>: <a href="#Contents">Contents</a></li>
-<li><a href="#index-contents_002c-hyperlinks-592">contents, hyperlinks</a>: <a href="#Contents-hyperlinks">Contents hyperlinks</a></li>
-<li><a href="#index-continued-index-entries-279">continued index entries</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-covering-homotopy-property-930">covering homotopy property</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-cross_002dreferences-165">cross-references</a>: <a href="#Cross_002dreferences">Cross-references</a></li>
-<li><a href="#index-cross_002dreferences_002c-defining-general-174">cross-references, defining general</a>: <a href="#Using-generic-references">Using generic references</a></li>
-<li><a href="#index-cross_002dreferences_002c-defining-general-170">cross-references, defining general</a>: <a href="#Defining-generic-references">Defining generic references</a></li>
-<li><a href="#index-cross_002dreferences_002c-hyperlinks-497">cross-references, hyperlinks</a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
-<li><a href="#index-cross_002dreferencing-index-entries-308">cross-referencing index entries</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-cross_002dreferencing-index-entries-243">cross-referencing index entries</a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
-<li><a href="#index-cube-943">cube</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-customizing-indexing-287">customizing indexing</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-dashed-hyperlink-border-743">dashed hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-date-101">date</a>: <a href="#Time-of-day">Time of day</a></li>
-<li><a href="#index-default-hyperlink-options-830">default hyperlink options</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-default-hyperlink-options-797">default hyperlink options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-default-hyperlink-type-829">default hyperlink type</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-default-hyperlink-type-796">default hyperlink type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-defining-general-references-172">defining general references</a>: <a href="#Using-generic-references">Using generic references</a></li>
-<li><a href="#index-defining-general-references-168">defining general references</a>: <a href="#Defining-generic-references">Defining generic references</a></li>
-<li><a href="#index-definitions_002c-global-982">definitions, global</a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-destgroup-473">destgroup</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
-<li><a href="#index-destgroup-_0060bib_0027-489">destgroup `bib'</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
-<li><a href="#index-destgroup-_0060definexref_0027-500">destgroup `definexref'</a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
-<li><a href="#index-destgroup-_0060eq_0027-527">destgroup `eq'</a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
-<li><a href="#index-destgroup-_0060foot_0027-584">destgroup `foot'</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
-<li><a href="#index-destgroup-_0060footback_0027-585">destgroup `footback'</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
-<li><a href="#index-destgroup-_0060idx_0027-543">destgroup `idx'</a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
-<li><a href="#index-destgroup-_0060li_0027-495">destgroup `li'</a>: <a href="#List-hyperlinks">List hyperlinks</a></li>
-<li><a href="#index-destgroup-_0060xrdef_0027-514">destgroup `xrdef'</a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
-<li><a href="#index-destgroup_002c-options-843">destgroup, options</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-destgroup_002c-options-815">destgroup, options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-destgroup_002c-type-827">destgroup, type</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-destgroup_002c-type-814">destgroup, type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-destination-group-472">destination group</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
-<li><a href="#index-destination-options-460">destination options</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-destination-options_002c-common-595">destination options, common</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-destination-options_002c-_0040code_007bdvipdfm_007d-652">destination options, <code>dvipdfm</code></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-destination-options_002c-_0040code_007bpdftex_007d-651">destination options, <code>pdftex</code></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-destination-type-457">destination type</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-destination-types_002c-_0040code_007bdvipdfm_007d-619">destination types, <code>dvipdfm</code></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-destination-types_002c-_0040code_007bpdftex_007d-618">destination types, <code>pdftex</code></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-destinations_002c-default-options-834">destinations, default options</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-destinations_002c-default-options-801">destinations, default options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-destinations_002c-default-type-833">destinations, default type</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-destinations_002c-default-type-800">destinations, default type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-destinations_002c-dimensions-664">destinations, dimensions</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-destinations_002c-disabling-864">destinations, disabling</a>: <a href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a></li>
-<li><a href="#index-destinations_002c-disabling-785">destinations, disabling</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-destinations_002c-group-options-842">destinations, group options</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-destinations_002c-group-options-813">destinations, group options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-destinations_002c-group-type-826">destinations, group type</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-destinations_002c-group-type-812">destinations, group type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-destinations_002c-in-another-file-709">destinations, in another file</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-destinations_002c-large-operators-854">destinations, large operators</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-destinations_002c-large-operators-606">destinations, large operators</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-destinations_002c-magnification-659">destinations, magnification</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-destinations_002c-named-700">destinations, named</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-destinations_002c-numbered-730">destinations, numbered</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-destinations_002c-page-704">destinations, page</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-destinations_002c-raising-600">destinations, raising</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-destinations_002c-URL-723">destinations, URL</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-diagnostics-30">diagnostics</a>: <a href="#Diagnostics">Diagnostics</a></li>
-<li><a href="#index-Diagram_002c-macros-for-LaTeX-941">Diagram, macros for LaTeX</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-dimensions_002c-hyperlink-772">dimensions, hyperlink</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-dimensions_002c-hyperlink-destination-666">dimensions, hyperlink destination</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-disabling-hyperlinks-862">disabling hyperlinks</a>: <a href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a></li>
-<li><a href="#index-disabling-hyperlinks-783">disabling hyperlinks</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-displayed-math-and-hyperlinks-851">displayed math and hyperlinks</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-displayed-math-and-hyperlinks-603">displayed math and hyperlinks</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-displays_002c-left_002djustifying-88">displays, left-justifying</a>: <a href="#Displays">Displays</a></li>
-<li><a href="#index-double-column-output-337">double column output</a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-double-columns-in-indexes-271">double columns in indexes</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-driver-_0040code_007bdvipdfm_007d-615">driver <code>dvipdfm</code></a>: <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a></li>
-<li><a href="#index-driver-_0040code_007bnolinks_007d-780">driver <code>nolinks</code></a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-driver-_0040code_007bpdftex_007d-614">driver <code>pdftex</code></a>: <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a></li>
-<li><a href="#index-drivers_002c-hyperlink-448">drivers, hyperlink</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-g_t_0040code_007bdvipdfm_007d_002c-destination-options-656"><code>dvipdfm</code>, destination options</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-g_t_0040code_007bdvipdfm_007d_002c-destination-types-623"><code>dvipdfm</code>, destination types</a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-g_t_0040code_007bdvipdfm_007d_002c-hyperlink-driver-613"><code>dvipdfm</code>, hyperlink driver</a>: <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a></li>
-<li><a href="#index-g_t_0040code_007bdvipdfm_007d_002c-link-options-737"><code>dvipdfm</code>, link options</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-g_t_0040code_007bdvipdfm_007d_002c-link-types-697"><code>dvipdfm</code>, link types</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-eject-in-multicolumns-349">eject in multicolumns</a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-electronic-mail-addresses_002c-breaking-440">electronic mail addresses, breaking</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-electronic-mail-addresses_002c-breaking-368">electronic mail addresses, breaking</a>: <a href="#Paths">Paths</a></li>
-<li><a href="#index-empty-equation-labels-187">empty equation labels</a>: <a href="#Equation-references">Equation references</a></li>
-<li><a href="#index-empty-equation-labels_002c-referring-to-190">empty equation labels, referring to</a>: <a href="#Equation-references">Equation references</a></li>
-<li><a href="#index-emtex_002c-installation-under-17">emtex, installation under</a>: <a href="#Installation">Installation</a></li>
-<li><a href="#index-Encapsulated-PostScript-434">Encapsulated PostScript</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-environments_002c-user_002ddefined-1056">environments, user-defined</a>: <a href="#User_002ddefined-environments">User-defined environments</a></li>
-<li><a href="#index-Eplain_002c-installing-11">Eplain, installing</a>: <a href="#Installation">Installation</a></li>
-<li><a href="#index-Eplain_002c-invoking-18">Eplain, invoking</a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
+<li><a href="#index-beveled-hyperlink-border-887">beveled hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-bibliographies-54">bibliographies</a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-bibliography-fonts-87">bibliography fonts</a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
+<li><a href="#index-bibliography-items_002c-extra-space-between-93">bibliography items, extra space between</a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
+<li><a href="#index-bibliography_002c-formatting-the-82">bibliography, formatting the</a>: <a href="#Formatting-bibliographies">Formatting bibliographies</a></li>
+<li><a href="#index-bibliography_002c-hyperlinks-566">bibliography, hyperlinks</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
+<li><a href="#index-Bib_0040TeX_007b_007d-408">BibTeX</a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-Bib_0040TeX_007b_007d-55">BibTeX</a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-bibtex-33"><code>bibtex</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
+<li><a href="#index-black-boxes-421">black boxes</a>: <a href="#Boxes">Boxes</a></li>
+<li><a href="#index-Borceux_002c-Francis-1086">Borceux, Francis</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-border-color_002c-hyperlink-878">border color, hyperlink</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-border-style_002c-hyperlink-883">border style, hyperlink</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-border-width_002c-hyperlink-897">border width, hyperlink</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-Bott_002c-Raoul-1074">Bott, Raoul</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-boxed-links_002c-avoiding-960">boxed links, avoiding</a>: <a href="#Setting-default-types-and-options">Setting default types and options</a></li>
+<li><a href="#index-boxed-links_002c-avoiding-555">boxed links, avoiding</a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
+<li><a href="#index-boxes_002c-open-425">boxes, open</a>: <a href="#Boxes">Boxes</a></li>
+<li><a href="#index-braces_002c-inside-index-entries-270">braces, inside index entries</a>: <a href="#Index-entries-with-special-characters">Index entries with special characters</a></li>
+<li><a href="#index-brackets_002c-inside-index-entries-274">brackets, inside index entries</a>: <a href="#Index-entries-with-special-characters">Index entries with special characters</a></li>
+<li><a href="#index-Brockett_002c-Roger-W_002e-1079">Brockett, Roger W.</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-Butterfly-Lemma-1094">Butterfly Lemma</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-Carlisle_002c-David-444">Carlisle, David</a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
+<li><a href="#index-category-codes-1115">category codes</a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-centering-343">centering</a>: <a href="#Justification">Justification</a></li>
+<li><a href="#index-characters_002c-converting-to-1172">characters, converting to</a>: <a href="#Converting-to-characters">Converting to characters</a></li>
+<li><a href="#index-citations-53">citations</a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-citations_002c-formatting-77">citations, formatting</a>: <a href="#Formatting-citations">Formatting citations</a></li>
+<li><a href="#index-citations_002c-hyperlinks-561">citations, hyperlinks</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
+<li><a href="#index-citations_002c-undefined-64">citations, undefined</a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-cmtt8-281"><code>cmtt8</code></a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-color-466">color</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-color_002c-demo-1261">color, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-color_002c-hyperlink-border-879">color, hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-color_002c-hyperlinks-962">color, hyperlinks</a>: <a href="#Setting-default-types-and-options">Setting default types and options</a></li>
+<li><a href="#index-color_002c-hyperlinks-691">color, hyperlinks</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-color_002c-hyperlinks-557">color, hyperlinks</a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
+<li><a href="#index-color_002c-problems-with-pdf_0040TeX_007b_007d-469">color, problems with pdfTeX</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-color_002esty-1264"><code>color.sty</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-color_002esty-965"><code>color.sty</code></a>: <a href="#Setting-default-types-and-options">Setting default types and options</a></li>
+<li><a href="#index-color_002esty-932"><code>color.sty</code></a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-color_002esty-560"><code>color.sty</code></a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
+<li><a href="#index-color_002esty-461"><code>color.sty</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-colored-links-963">colored links</a>: <a href="#Setting-default-types-and-options">Setting default types and options</a></li>
+<li><a href="#index-colored-links-692">colored links</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-colored-links-558">colored links</a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
+<li><a href="#index-column-balancing-with-_0040code_007b_005csinglecolumn_007d-375">column balancing with <code>\singlecolumn</code></a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-column-eject-378">column eject</a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-commas-after-index-terms-319">commas after index terms</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-commas-in-cross_002dreferencing-index-entries-340">commas in cross-referencing index entries</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-comments_002c-highlighting-in-listings-1275">comments, highlighting in listings</a>: <a href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">Highlighting TeX comments in listings (lscommnt.tex)</a></li>
+<li><a href="#index-commutative-diagrams-1023">commutative diagrams</a>: <a href="#Commutative-diagrams">Commutative diagrams</a></li>
+<li><a href="#index-contents-163">contents</a>: <a href="#Contents">Contents</a></li>
+<li><a href="#index-contents_002c-and-verbatim-text-170">contents, and verbatim text</a>: <a href="#Writing-the-_002etoc-file">Writing the .toc file</a></li>
+<li><a href="#index-contents_002c-hyperlinks-672">contents, hyperlinks</a>: <a href="#Contents-hyperlinks">Contents hyperlinks</a></li>
+<li><a href="#index-Con_0040TeX_007b_007dt-473">ConTeXt</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-continued-index-entries-309">continued index entries</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-covering-homotopy-property-1076">covering homotopy property</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-cross_002dreferences-184">cross-references</a>: <a href="#Cross_002dreferences">Cross-references</a></li>
+<li><a href="#index-cross_002dreferences_002c-defining-general-193">cross-references, defining general</a>: <a href="#Using-generic-references">Using generic references</a></li>
+<li><a href="#index-cross_002dreferences_002c-defining-general-189">cross-references, defining general</a>: <a href="#Defining-generic-references">Defining generic references</a></li>
+<li><a href="#index-cross_002dreferences_002c-demo-1256">cross-references, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-cross_002dreferences_002c-hyperlinks-577">cross-references, hyperlinks</a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
+<li><a href="#index-cross_002dreferencing-index-entries-338">cross-referencing index entries</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-cross_002dreferencing-index-entries-262">cross-referencing index entries</a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
+<li><a href="#index-g_t_0040kbd_007bCTRL_002dL_007d_002c-and-verbatim-listing-158"><kbd>CTRL-L</kbd>, and verbatim listing</a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-cube-1089">cube</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-customizing-indexing-317">customizing indexing</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-dashed-hyperlink-border-881">dashed hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-date-107">date</a>: <a href="#Time-of-day">Time of day</a></li>
+<li><a href="#index-default-hyperlink-options-976">default hyperlink options</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-default-hyperlink-options-937">default hyperlink options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-default-hyperlink-type-975">default hyperlink type</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-default-hyperlink-type-936">default hyperlink type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-defining-general-references-191">defining general references</a>: <a href="#Using-generic-references">Using generic references</a></li>
+<li><a href="#index-defining-general-references-187">defining general references</a>: <a href="#Defining-generic-references">Defining generic references</a></li>
+<li><a href="#index-definitions_002c-global-1128">definitions, global</a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-demo-files-1235">demo files</a>: <a href="#Demo-files">Demo files</a></li>
+<li><a href="#index-destgroup-538">destgroup</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
+<li><a href="#index-destgroup-_0060bib_0027-569">destgroup `bib'</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
+<li><a href="#index-destgroup-_0060definexref_0027-580">destgroup `definexref'</a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
+<li><a href="#index-destgroup-_0060eq_0027-607">destgroup `eq'</a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
+<li><a href="#index-destgroup-_0060foot_0027-664">destgroup `foot'</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
+<li><a href="#index-destgroup-_0060footback_0027-665">destgroup `footback'</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
+<li><a href="#index-destgroup-_0060idx_0027-623">destgroup `idx'</a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
+<li><a href="#index-destgroup-_0060li_0027-575">destgroup `li'</a>: <a href="#List-hyperlinks">List hyperlinks</a></li>
+<li><a href="#index-destgroup-_0060xrdef_0027-594">destgroup `xrdef'</a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
+<li><a href="#index-destgroup-options-989">destgroup options</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-destgroup-options-955">destgroup options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-destgroup-options_002c-demo-1249">destgroup options, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-destgroup-type-973">destgroup type</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-destgroup-type-954">destgroup type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-destgroup-type_002c-demo-1252">destgroup type, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-destination-group-537">destination group</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
+<li><a href="#index-destination-options-525">destination options</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-destination-options_002c-common-675">destination options, common</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-destination-options_002c-_0040code_007bdvipdfm_007d-789">destination options, <code>dvipdfm</code></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-destination-options_002c-_0040code_007bhypertex_007d-715">destination options, <code>hypertex</code></a>: <a href="#Destination-options-for-hypertex">Destination options for hypertex</a></li>
+<li><a href="#index-destination-options_002c-_0040code_007bpdftex_007d-788">destination options, <code>pdftex</code></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-destination-type-522">destination type</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-destination-types_002c-_0040code_007bdvipdfm_007d-756">destination types, <code>dvipdfm</code></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-destination-types_002c-_0040code_007bhypertex_007d-707">destination types, <code>hypertex</code></a>: <a href="#Destination-types-for-hypertex">Destination types for hypertex</a></li>
+<li><a href="#index-destination-types_002c-_0040code_007bpdftex_007d-755">destination types, <code>pdftex</code></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-destinations_002c-default-options-980">destinations, default options</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-destinations_002c-default-options-941">destinations, default options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-destinations_002c-default-type-979">destinations, default type</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-destinations_002c-default-type-940">destinations, default type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-destinations_002c-dimensions-801">destinations, dimensions</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-destinations_002c-disabling-1010">destinations, disabling</a>: <a href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a></li>
+<li><a href="#index-destinations_002c-disabling-924">destinations, disabling</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-destinations_002c-group-options-988">destinations, group options</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-destinations_002c-group-options-953">destinations, group options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-destinations_002c-group-options_002c-demo-1248">destinations, group options, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-destinations_002c-group-type-972">destinations, group type</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-destinations_002c-group-type-952">destinations, group type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-destinations_002c-group-type_002c-demo-1251">destinations, group type, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-destinations_002c-in-another-file-850">destinations, in another file</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-destinations_002c-in-another-file-732">destinations, in another file</a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-destinations_002c-large-operators-1000">destinations, large operators</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-destinations_002c-large-operators-686">destinations, large operators</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-destinations_002c-magnification-796">destinations, magnification</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-destinations_002c-named-837">destinations, named</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-destinations_002c-named-724">destinations, named</a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-destinations_002c-numbered-868">destinations, numbered</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-destinations_002c-page-845">destinations, page</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-destinations_002c-raising-680">destinations, raising</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-destinations_002c-_0040acronym_007bURL_007d-841">destinations, <acronym>URL</acronym></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-destinations_002c-_0040acronym_007bURL_007d-728">destinations, <acronym>URL</acronym></a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-detecting-numbers-1200">detecting numbers</a>: <a href="#g_t_005cifinteger-and-_005cisinteger">\ifinteger and \isinteger</a></li>
+<li><a href="#index-diagnostics-36">diagnostics</a>: <a href="#Diagnostics">Diagnostics</a></li>
+<li><a href="#index-Diagram_002c-macros-for-LaTeX-1087">Diagram, macros for LaTeX</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-dimensions_002c-hyperlink-910">dimensions, hyperlink</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-dimensions_002c-hyperlink-destination-803">dimensions, hyperlink destination</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-disabling-hyperlinks-1008">disabling hyperlinks</a>: <a href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a></li>
+<li><a href="#index-disabling-hyperlinks-922">disabling hyperlinks</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-displayed-math-and-hyperlinks-997">displayed math and hyperlinks</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-displayed-math-and-hyperlinks-683">displayed math and hyperlinks</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-displays_002c-left_002djustifying-94">displays, left-justifying</a>: <a href="#Displays">Displays</a></li>
+<li><a href="#index-do_0040dots_007b_007dwhile-loops-1157">do<small class="dots">...</small>while loops</a>: <a href="#Iteration">Iteration</a></li>
+<li><a href="#index-double-column-output-367">double column output</a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-double-columns-in-indexes-301">double columns in indexes</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-g_t_0040code_007bdraft_007d_002c-option-for-_0040file_007bgraphics_002esty_007d-478"><code>draft</code>, option for <samp><span class="file">graphics.sty</span></samp></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-driver-_0040code_007bdvipdfm_007d-752">driver <code>dvipdfm</code></a>: <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a></li>
+<li><a href="#index-driver-_0040code_007bhypertex_007d-696">driver <code>hypertex</code></a>: <a href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a></li>
+<li><a href="#index-driver-_0040code_007bnolinks_007d-919">driver <code>nolinks</code></a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-driver-_0040code_007bpdftex_007d-751">driver <code>pdftex</code></a>: <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a></li>
+<li><a href="#index-drivers_002c-hyperlink-513">drivers, hyperlink</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-dvipdfm-699"><code>dvipdfm</code></a>: <a href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a></li>
+<li><a href="#index-dvipdfm-518"><code>dvipdfm</code></a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-g_t_0040code_007bdvipdfm_007d_002c-destination-options-793"><code>dvipdfm</code>, destination options</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-g_t_0040code_007bdvipdfm_007d_002c-destination-types-760"><code>dvipdfm</code>, destination types</a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-g_t_0040code_007bdvipdfm_007d_002c-hyperlink-driver-750"><code>dvipdfm</code>, hyperlink driver</a>: <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a></li>
+<li><a href="#index-g_t_0040code_007bdvipdfm_007d_002c-link-options-875"><code>dvipdfm</code>, link options</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-g_t_0040code_007bdvipdfm_007d_002c-link-types-834"><code>dvipdfm</code>, link types</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-dvips-700"><code>dvips</code></a>: <a href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a></li>
+<li><a href="#index-Eijkhout_002c-Victor-1162">Eijkhout, Victor</a>: <a href="#Iteration">Iteration</a></li>
+<li><a href="#index-eject-in-multicolumns-379">eject in multicolumns</a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-electronic-mail-addresses_002c-breaking-504">electronic mail addresses, breaking</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-electronic-mail-addresses_002c-breaking-398">electronic mail addresses, breaking</a>: <a href="#Paths">Paths</a></li>
+<li><a href="#index-empty-argument_002c-checking-for-1195">empty argument, checking for</a>: <a href="#g_t_005cifempty">\ifempty</a></li>
+<li><a href="#index-empty-equation-labels-206">empty equation labels</a>: <a href="#Equation-references">Equation references</a></li>
+<li><a href="#index-empty-equation-labels_002c-referring-to-209">empty equation labels, referring to</a>: <a href="#Equation-references">Equation references</a></li>
+<li><a href="#index-empty-string_002c-checking-for-1194">empty string, checking for</a>: <a href="#g_t_005cifempty">\ifempty</a></li>
+<li><a href="#index-Encapsulated-PostScript-483">Encapsulated PostScript</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-environments_002c-user_002ddefined-1222">environments, user-defined</a>: <a href="#User_002ddefined-environments">User-defined environments</a></li>
+<li><a href="#index-Eplain_002c-installing-13">Eplain, installing</a>: <a href="#Installation">Installation</a></li>
+<li><a href="#index-Eplain_002c-invoking-24">Eplain, invoking</a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
<li><a href="#index-Eplain_002c-purpose-of-1">Eplain, purpose of</a>: <a href="#Introduction">Introduction</a></li>
-<li><a href="#index-EPS-435">EPS</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-equation-labels_002c-characters-valid-in-195">equation labels, characters valid in</a>: <a href="#Equation-references">Equation references</a></li>
-<li><a href="#index-equation-numbers_002c-formatting-of-196">equation numbers, formatting of</a>: <a href="#Formatting-equation-references">Formatting equation references</a></li>
-<li><a href="#index-equations_002c-giving-numbers-to-all-189">equations, giving numbers to all</a>: <a href="#Equation-references">Equation references</a></li>
-<li><a href="#index-equations_002c-groups-of-199">equations, groups of</a>: <a href="#Subequation-references">Subequation references</a></li>
-<li><a href="#index-equations_002c-hyperlinks-524">equations, hyperlinks</a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
-<li><a href="#index-equations_002c-numbering-184">equations, numbering</a>: <a href="#Equation-references">Equation references</a></li>
-<li><a href="#index-equations_002c-references-to-183">equations, references to</a>: <a href="#Equation-references">Equation references</a></li>
-<li><a href="#index-error-messages-39">error messages</a>: <a href="#Diagnostics">Diagnostics</a></li>
-<li><a href="#index-escape-character_002c-changing-verbatim-150">escape character, changing verbatim</a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
-<li><a href="#index-exact-index-hyperlinks-551">exact index hyperlinks</a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
-<li><a href="#index-expansion_002c-one_002dlevel-1034">expansion, one-level</a>: <a href="#g_t_005cexpandonce">\expandonce</a></li>
-<li><a href="#index-explicit-hyperlinks-462">explicit hyperlinks</a>: <a href="#Explicit-hyperlinks">Explicit hyperlinks</a></li>
-<li><a href="#index-file_002c-hyperlink-to-708">file, hyperlink to</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-filenames_002c-breaking-439">filenames, breaking</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-filenames_002c-breaking-367">filenames, breaking</a>: <a href="#Paths">Paths</a></li>
-<li><a href="#index-files_002c-verbatim-listing-of-143">files, verbatim listing of</a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
-<li><a href="#index-filtering-index-entries-with-hyperlinks-555">filtering index entries with hyperlinks</a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
-<li><a href="#index-footnotes_002c-hyperlinks-578">footnotes, hyperlinks</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
-<li><a href="#index-footnotes_002c-numbered-356">footnotes, numbered</a>: <a href="#Footnotes">Footnotes</a></li>
-<li><a href="#index-for-loops-1008">for loops</a>: <a href="#Iteration">Iteration</a></li>
-<li><a href="#index-format-file-14">format file</a>: <a href="#Installation">Installation</a></li>
-<li><a href="#index-formatting-index-entries-277">formatting index entries</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-fractions-364">fractions</a>: <a href="#Fractions">Fractions</a></li>
-<li><a href="#index-gobbling-arguments-1012">gobbling arguments</a>: <a href="#Macro-arguments">Macro arguments</a></li>
-<li><a href="#index-golden-mean-936">golden mean</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-Graham_002c-Ronald-L_002e-65">Graham, Ronald L.</a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-graphics-collection_002c-_0040LaTeX_007b_007d-794">graphics collection, LaTeX</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-graphics-collection_002c-_0040LaTeX_007b_007d-428">graphics collection, LaTeX</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-graphics-collection_002c-_0040LaTeX_007b_007d-411">graphics collection, LaTeX</a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
-<li><a href="#index-grid-939">grid</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-group-_0060_0027-_0028empty_0029-828">group `' (empty)</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-group-_0060_002a_0027-835">group `*'</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-group-_0060bib_0027-488">group `bib'</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
-<li><a href="#index-group-_0060cite_0027-483">group `cite'</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
-<li><a href="#index-group-_0060definexref_0027-499">group `definexref'</a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
-<li><a href="#index-group-_0060eq_0027-856">group `eq'</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-group-_0060eq_0027-526">group `eq'</a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
-<li><a href="#index-group-_0060foot_0027-580">group `foot'</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
-<li><a href="#index-group-_0060footback_0027-581">group `footback'</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
-<li><a href="#index-group-_0060idx_0027-541">group `idx'</a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
-<li><a href="#index-group-_0060li_0027-494">group `li'</a>: <a href="#List-hyperlinks">List hyperlinks</a></li>
-<li><a href="#index-group-_0060ref_0027-501">group `ref'</a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
-<li><a href="#index-group-_0060url_0027-477">group `url'</a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
-<li><a href="#index-group-_0060xrdef_0027-513">group `xrdef'</a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
-<li><a href="#index-group-_0060xref_0027-518">group `xref'</a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
-<li><a href="#index-group-option-list-859">group option list</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-group_002c-destination-474">group, destination</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
-<li><a href="#index-group_002c-disabling-hyperlinks-869">group, disabling hyperlinks</a>: <a href="#Turning-hyperlinks-on_002foff-for-a-group">Turning hyperlinks on/off for a group</a></li>
-<li><a href="#index-group_002c-link-471">group, link</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
-<li><a href="#index-group_002c-options-hyperlink-838">group, options hyperlink</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-group_002c-options-hyperlink-805">group, options hyperlink</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-group_002c-preserving-option-list-846">group, preserving option list</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-group_002c-type-hyperlink-822">group, type hyperlink</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-group_002c-type-hyperlink-804">group, type hyperlink</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-groups_002c-specifying-all-836">groups, specifying all</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-help-messages-38">help messages</a>: <a href="#Diagnostics">Diagnostics</a></li>
-<li><a href="#index-highlight-modes_002c-hyperlink-765">highlight modes, hyperlink</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-hooks-1024">hooks</a>: <a href="#Hooks">Hooks</a></li>
-<li><a href="#index-hyperlink-border-color-739">hyperlink border color</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlink-destination_002c-dimensions-665">hyperlink destination, dimensions</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlink-destination_002c-magnification-660">hyperlink destination, magnification</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlink-destination_002c-named-701">hyperlink destination, named</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlink-destination_002c-numbered-731">hyperlink destination, numbered</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlink-destination_002c-page-705">hyperlink destination, page</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlink-destination_002c-raising-599">hyperlink destination, raising</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-hyperlink-dimensions-771">hyperlink dimensions</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlink-driver-_0040code_007bdvipdfm_007d-617">hyperlink driver <code>dvipdfm</code></a>: <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlink-driver-_0040code_007bnolinks_007d-781">hyperlink driver <code>nolinks</code></a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-hyperlink-driver-_0040code_007bpdftex_007d-616">hyperlink driver <code>pdftex</code></a>: <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlink-drivers-447">hyperlink drivers</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-hyperlink-group_002c-disabling-hyperlinks-870">hyperlink group, disabling hyperlinks</a>: <a href="#Turning-hyperlinks-on_002foff-for-a-group">Turning hyperlinks on/off for a group</a></li>
-<li><a href="#index-hyperlink-group_002c-preserving-option-list-847">hyperlink group, preserving option list</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-hyperlink-options_002c-common-594">hyperlink options, common</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-hyperlinks_002c-bibliography-487">hyperlinks, bibliography</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
-<li><a href="#index-hyperlinks_002c-border-style-744">hyperlinks, border style</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlinks_002c-border-width-758">hyperlinks, border width</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlinks_002c-citations-482">hyperlinks, citations</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
-<li><a href="#index-hyperlinks_002c-cross_002dreferences-498">hyperlinks, cross-references</a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
-<li><a href="#index-hyperlinks_002c-default-options-832">hyperlinks, default options</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-hyperlinks_002c-default-options-799">hyperlinks, default options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-hyperlinks_002c-default-type-831">hyperlinks, default type</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-hyperlinks_002c-default-type-798">hyperlinks, default type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-hyperlinks_002c-disabling-863">hyperlinks, disabling</a>: <a href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a></li>
-<li><a href="#index-hyperlinks_002c-disabling-784">hyperlinks, disabling</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-hyperlinks_002c-equations-525">hyperlinks, equations</a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
-<li><a href="#index-hyperlinks_002c-explicit-463">hyperlinks, explicit</a>: <a href="#Explicit-hyperlinks">Explicit hyperlinks</a></li>
-<li><a href="#index-hyperlinks_002c-filtering-index-entries-556">hyperlinks, filtering index entries</a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
-<li><a href="#index-hyperlinks_002c-footnotes-579">hyperlinks, footnotes</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
-<li><a href="#index-hyperlinks_002c-group-option-list-860">hyperlinks, group option list</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-hyperlinks_002c-group-options-839">hyperlinks, group options</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-hyperlinks_002c-group-options-807">hyperlinks, group options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-hyperlinks_002c-group-type-823">hyperlinks, group type</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-hyperlinks_002c-group-type-806">hyperlinks, group type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-hyperlinks_002c-highlight-mode-764">hyperlinks, highlight mode</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlinks_002c-implicit-468">hyperlinks, implicit</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
-<li><a href="#index-hyperlinks_002c-index-540">hyperlinks, index</a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
-<li><a href="#index-hyperlinks_002c-index-destination-placement-567">hyperlinks, index destination placement</a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
-<li><a href="#index-hyperlinks_002c-index_002c-exact-553">hyperlinks, index, exact</a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
-<li><a href="#index-hyperlinks_002c-large-operators-853">hyperlinks, large operators</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-hyperlinks_002c-large-operators-605">hyperlinks, large operators</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-hyperlinks_002c-lists-492">hyperlinks, lists</a>: <a href="#List-hyperlinks">List hyperlinks</a></li>
-<li><a href="#index-hyperlinks_002c-opening-in-a-new-window-767">hyperlinks, opening in a new window</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlinks_002c-page-references-512">hyperlinks, page references</a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
-<li><a href="#index-hyperlinks_002c-preserving-page_002dbreaking-789">hyperlinks, preserving page-breaking</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-hyperlinks_002c-preserving-spacing-787">hyperlinks, preserving spacing</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-hyperlinks_002c-see-and-see-also-index-entries-572">hyperlinks, see and see also index entries</a>: <a href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a></li>
-<li><a href="#index-hyperlinks_002c-table-of-contents-593">hyperlinks, table of contents</a>: <a href="#Contents-hyperlinks">Contents hyperlinks</a></li>
-<li><a href="#index-hyperlinks_002c-to-another-file-710">hyperlinks, to another file</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlinks_002c-URL-724">hyperlinks, URL</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-hyperlinks_002c-URL-476">hyperlinks, URL</a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
-<li><a href="#index-hypertext-links-446">hypertext links</a>: <a href="#Hyperlinks">Hyperlinks</a></li>
-<li><a href="#index-ignoring-arguments-1011">ignoring arguments</a>: <a href="#Macro-arguments">Macro arguments</a></li>
-<li><a href="#index-implicit-hyperlinks-467">implicit hyperlinks</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
-<li><a href="#index-inaccessible-macros-978">inaccessible macros</a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-index-entries-and-ranges-239">index entries and ranges</a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
-<li><a href="#index-index-entries_0027-page-numbers_002c-modifying-236">index entries' page numbers, modifying</a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
-<li><a href="#index-index-entries_002c-and-cross_002dreferencing-309">index entries, and cross-referencing</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-index-entries_002c-and-cross_002dreferencing-244">index entries, and cross-referencing</a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
-<li><a href="#index-index-entry-continuations-280">index entry continuations</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-index-entry-formatting-276">index entry formatting</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-index-entry-general-sorting-231">index entry general sorting</a>: <a href="#Indexing-commands">Indexing commands</a></li>
-<li><a href="#index-index-fonts-269">index fonts</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-index-groupings-286">index groupings</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-index-hyperlink-539">index hyperlink</a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
-<li><a href="#index-index-terms_002c-proofing-247">index terms, proofing</a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-index-typesetting-262">index typesetting</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-index_002c-choosing-destination-placement-566">index, choosing destination placement</a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
-<li><a href="#index-index_002c-destination-placement-564">index, destination placement</a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
-<li><a href="#index-index_002c-exact-hyperlinks-552">index, exact hyperlinks</a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
-<li><a href="#index-index_002c-hyperlinks-in-see-and-see-also-entries-573">index, hyperlinks in see and see also entries</a>: <a href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a></li>
-<li><a href="#index-index_002c-parsing-page-numbers-559">index, parsing page numbers</a>: <a href="#Page-destinations-for-index-terms">Page destinations for index terms</a></li>
-<li><a href="#index-index_002c-placement-of-destinations-563">index, placement of destinations</a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
-<li><a href="#index-index_002c-selecting-destination-placement-565">index, selecting destination placement</a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
-<li><a href="#index-index_002c-underlining-page-numbers-1066">index, underlining page numbers</a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
-<li><a href="#index-indexes_002c-multiple-213">indexes, multiple</a>: <a href="#Indexing">Indexing</a></li>
-<li><a href="#index-indexing-205">indexing</a>: <a href="#Indexing">Indexing</a></li>
-<li><a href="#index-indexing-and-trailing-spaces-220">indexing and trailing spaces</a>: <a href="#Indexing-terms">Indexing terms</a></li>
-<li><a href="#index-indexing-commands-221">indexing commands</a>: <a href="#Indexing-commands">Indexing commands</a></li>
-<li><a href="#index-indexing-terms-215">indexing terms</a>: <a href="#Indexing-terms">Indexing terms</a></li>
-<li><a href="#index-insertion-classes-355">insertion classes</a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-inset-hyperlink-border-750">inset hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-installation-12">installation</a>: <a href="#Installation">Installation</a></li>
-<li><a href="#index-item-labels_002c-changing-139">item labels, changing</a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-iteration-1007">iteration</a>: <a href="#Iteration">Iteration</a></li>
-<li><a href="#index-justification-316">justification</a>: <a href="#Justification">Justification</a></li>
-<li><a href="#index-Knuth_002c-Donald-Ervin-970">Knuth, Donald Ervin</a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-Knuth_002c-Donald-Ervin-64">Knuth, Donald Ervin</a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-labels-on-items_002c-changing-140">labels on items, changing</a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-labels_002c-characters-valid-in-167">labels, characters valid in</a>: <a href="#Cross_002dreferences">Cross-references</a></li>
-<li><a href="#index-labels_002c-empty-equation-188">labels, empty equation</a>: <a href="#Equation-references">Equation references</a></li>
-<li><a href="#index-labels_002c-empty-equation_002c-referring-to-191">labels, empty equation, referring to</a>: <a href="#Equation-references">Equation references</a></li>
+<li><a href="#index-Eplain_002c-upgrading-15">Eplain, upgrading</a>: <a href="#Installation">Installation</a></li>
+<li><a href="#index-eplain_002eaux-21"><code>eplain.aux</code></a>: <a href="#Installation">Installation</a></li>
+<li><a href="#index-eplain_002efmt-20"><code>eplain.fmt</code></a>: <a href="#Installation">Installation</a></li>
+<li><a href="#index-g_t_0040acronym_007bEPS_007d-484"><acronym>EPS</acronym></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-epstopdf-489"><code>epstopdf</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-epstopdf_002esty-482"><code>epstopdf.sty</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-equation-labels_002c-characters-valid-in-214">equation labels, characters valid in</a>: <a href="#Equation-references">Equation references</a></li>
+<li><a href="#index-equation-numbers_002c-formatting-of-215">equation numbers, formatting of</a>: <a href="#Formatting-equation-references">Formatting equation references</a></li>
+<li><a href="#index-equations_002c-giving-numbers-to-all-208">equations, giving numbers to all</a>: <a href="#Equation-references">Equation references</a></li>
+<li><a href="#index-equations_002c-groups-of-218">equations, groups of</a>: <a href="#Subequation-references">Subequation references</a></li>
+<li><a href="#index-equations_002c-hyperlinks-604">equations, hyperlinks</a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
+<li><a href="#index-equations_002c-numbering-203">equations, numbering</a>: <a href="#Equation-references">Equation references</a></li>
+<li><a href="#index-equations_002c-references-to-202">equations, references to</a>: <a href="#Equation-references">Equation references</a></li>
+<li><a href="#index-error-messages-45">error messages</a>: <a href="#Diagnostics">Diagnostics</a></li>
+<li><a href="#index-error-on-_0040code_007b_005cinput_007d-454">error on <code>\input</code></a>: <a href="#Environment-for-loading-packages">Environment for loading packages</a></li>
+<li><a href="#index-escape-character_002c-changing-verbatim-161">escape character, changing verbatim</a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-exact-index-hyperlinks-631">exact index hyperlinks</a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
+<li><a href="#index-expansion_002c-one_002dlevel-1188">expansion, one-level</a>: <a href="#g_t_005cexpandonce">\expandonce</a></li>
+<li><a href="#index-explicit-hyperlinks-527">explicit hyperlinks</a>: <a href="#Explicit-hyperlinks">Explicit hyperlinks</a></li>
+<li><a href="#index-explicit-hyperlinks_002c-demo-1238">explicit hyperlinks, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-file_002c-hyperlink-to-849">file, hyperlink to</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-file_002c-hyperlink-to-731">file, hyperlink to</a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-g_t_0040samp_007bfile_003a_007d-links-547">`<samp><span class="samp">file:</span></samp>' links</a>: <a href="#General-hyperlinks">General hyperlinks</a></li>
+<li><a href="#index-filenames_002c-breaking-503">filenames, breaking</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-filenames_002c-breaking-397">filenames, breaking</a>: <a href="#Paths">Paths</a></li>
+<li><a href="#index-files_002c-verbatim-listing-of-149">files, verbatim listing of</a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-files_002c-verbatim-listing-of_002c-demo-1274">files, verbatim listing of, demo</a>: <a href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">Highlighting TeX comments in listings (lscommnt.tex)</a></li>
+<li><a href="#index-filtering-index-entries-with-hyperlinks-635">filtering index entries with hyperlinks</a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
+<li><a href="#index-footnotes_002c-hyperlinks-658">footnotes, hyperlinks</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
+<li><a href="#index-footnotes_002c-numbered-386">footnotes, numbered</a>: <a href="#Footnotes">Footnotes</a></li>
+<li><a href="#index-for-loops-1155">for loops</a>: <a href="#Iteration">Iteration</a></li>
+<li><a href="#index-form-feed-character_002c-and-verbatim-listing-157">form feed character, and verbatim listing</a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-format-file-19">format file</a>: <a href="#Installation">Installation</a></li>
+<li><a href="#index-formatting-index-entries-307">formatting index entries</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-fractions-394">fractions</a>: <a href="#Fractions">Fractions</a></li>
+<li><a href="#index-g_t_0040r_007bGhostscript_007d-701"><span class="roman">Ghostscript</span></a>: <a href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a></li>
+<li><a href="#index-gobbling-arguments-1166">gobbling arguments</a>: <a href="#Macro-arguments">Macro arguments</a></li>
+<li><a href="#index-golden-mean-1082">golden mean</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-Graham_002c-Ronald-L_002e-71">Graham, Ronald L.</a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-graphics-collection_002c-_0040LaTeX_007b_007d-933">graphics collection, LaTeX</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-graphics-collection_002c-_0040LaTeX_007b_007d-464">graphics collection, LaTeX</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-graphics-collection_002c-_0040LaTeX_007b_007d-441">graphics collection, LaTeX</a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
+<li><a href="#index-graphics-collection_002c-_0040LaTeX_007b_007d_002c-demo-1259">graphics collection, LaTeX, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-graphics_002c-omitting-typesetting-of-477">graphics, omitting typesetting of</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-graphics_002c-problems-with-pdf_0040TeX_007b_007d-470">graphics, problems with pdfTeX</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-graphics_002esty-462"><code>graphics.sty</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-graphicx_002esty-1265"><code>graphicx.sty</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-graphicx_002esty-463"><code>graphicx.sty</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-grid-1085">grid</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-group-_0060_0027-_0028empty_0029-974">group `' (empty)</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-group-_0060_002a_0027-981">group `*'</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-group-_0060bib_0027-568">group `bib'</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
+<li><a href="#index-group-_0060cite_0027-563">group `cite'</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
+<li><a href="#index-group-_0060definexref_0027-579">group `definexref'</a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
+<li><a href="#index-group-_0060eq_0027-1002">group `eq'</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-group-_0060eq_0027-606">group `eq'</a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
+<li><a href="#index-group-_0060foot_0027-660">group `foot'</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
+<li><a href="#index-group-_0060footback_0027-661">group `footback'</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
+<li><a href="#index-group-_0060hrefext_0027-545">group `hrefext'</a>: <a href="#General-hyperlinks">General hyperlinks</a></li>
+<li><a href="#index-group-_0060hrefint_0027-541">group `hrefint'</a>: <a href="#General-hyperlinks">General hyperlinks</a></li>
+<li><a href="#index-group-_0060idx_0027-621">group `idx'</a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
+<li><a href="#index-group-_0060li_0027-574">group `li'</a>: <a href="#List-hyperlinks">List hyperlinks</a></li>
+<li><a href="#index-group-_0060ref_0027-581">group `ref'</a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
+<li><a href="#index-group-_0060url_0027-551">group `url'</a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
+<li><a href="#index-group-_0060xrdef_0027-593">group `xrdef'</a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
+<li><a href="#index-group-_0060xref_0027-598">group `xref'</a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
+<li><a href="#index-group-option-list-1005">group option list</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-group-options_002c-hyperlink-984">group options, hyperlink</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-group-options_002c-hyperlink-945">group options, hyperlink</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-group-options_002c-hyperlink_002c-demo-1244">group options, hyperlink, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-group-type_002c-hyperlink-968">group type, hyperlink</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-group-type_002c-hyperlink-944">group type, hyperlink</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-group-type_002c-hyperlink_002c-demo-1250">group type, hyperlink, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-group_002c-destination-539">group, destination</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
+<li><a href="#index-group_002c-disabling-hyperlinks-1015">group, disabling hyperlinks</a>: <a href="#Turning-hyperlinks-on_002foff-for-a-group">Turning hyperlinks on/off for a group</a></li>
+<li><a href="#index-group_002c-link-536">group, link</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
+<li><a href="#index-group_002c-preserving-option-list-992">group, preserving option list</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-groups_002c-specifying-all-982">groups, specifying all</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-hanging-on-_0040code_007b_005cinput_007d-453">hanging on <code>\input</code></a>: <a href="#Environment-for-loading-packages">Environment for loading packages</a></li>
+<li><a href="#index-help-messages-44">help messages</a>: <a href="#Diagnostics">Diagnostics</a></li>
+<li><a href="#index-highlight-modes_002c-hyperlink-903">highlight modes, hyperlink</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-highlighting-500">highlighting</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-highlighting_002c-in-listings-1276">highlighting, in listings</a>: <a href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">Highlighting TeX comments in listings (lscommnt.tex)</a></li>
+<li><a href="#index-H_0040_0022oppner_002c-Klaus-481">H&ouml;ppner, Klaus</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-hooks-1178">hooks</a>: <a href="#Hooks">Hooks</a></li>
+<li><a href="#index-hyperlink-border-color-877">hyperlink border color</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlink-color-964">hyperlink color</a>: <a href="#Setting-default-types-and-options">Setting default types and options</a></li>
+<li><a href="#index-hyperlink-color-693">hyperlink color</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-hyperlink-color-559">hyperlink color</a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
+<li><a href="#index-hyperlink-destination_002c-dimensions-802">hyperlink destination, dimensions</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlink-destination_002c-magnification-797">hyperlink destination, magnification</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlink-destination_002c-named-838">hyperlink destination, named</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlink-destination_002c-named-725">hyperlink destination, named</a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-hyperlink-destination_002c-numbered-869">hyperlink destination, numbered</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlink-destination_002c-page-846">hyperlink destination, page</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlink-destination_002c-raising-679">hyperlink destination, raising</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-hyperlink-dimensions-909">hyperlink dimensions</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlink-driver-_0040code_007bdvipdfm_007d-754">hyperlink driver <code>dvipdfm</code></a>: <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlink-driver-_0040code_007bhypertex_007d-697">hyperlink driver <code>hypertex</code></a>: <a href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a></li>
+<li><a href="#index-hyperlink-driver-_0040code_007bnolinks_007d-920">hyperlink driver <code>nolinks</code></a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-hyperlink-driver-_0040code_007bpdftex_007d-753">hyperlink driver <code>pdftex</code></a>: <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlink-drivers-512">hyperlink drivers</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-hyperlink-group_002c-disabling-hyperlinks-1016">hyperlink group, disabling hyperlinks</a>: <a href="#Turning-hyperlinks-on_002foff-for-a-group">Turning hyperlinks on/off for a group</a></li>
+<li><a href="#index-hyperlink-group_002c-preserving-option-list-993">hyperlink group, preserving option list</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-hyperlink-options_002c-common-674">hyperlink options, common</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-hyperlinks_002c-bibliography-567">hyperlinks, bibliography</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
+<li><a href="#index-hyperlinks_002c-border-style-882">hyperlinks, border style</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlinks_002c-border-width-896">hyperlinks, border width</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlinks_002c-citations-562">hyperlinks, citations</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
+<li><a href="#index-hyperlinks_002c-cross_002dreferences-578">hyperlinks, cross-references</a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
+<li><a href="#index-hyperlinks_002c-default-options-978">hyperlinks, default options</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-hyperlinks_002c-default-options-939">hyperlinks, default options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-hyperlinks_002c-default-type-977">hyperlinks, default type</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-hyperlinks_002c-default-type-938">hyperlinks, default type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-hyperlinks_002c-demo-1237">hyperlinks, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-hyperlinks_002c-disabling-1009">hyperlinks, disabling</a>: <a href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a></li>
+<li><a href="#index-hyperlinks_002c-disabling-923">hyperlinks, disabling</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-hyperlinks_002c-equations-605">hyperlinks, equations</a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
+<li><a href="#index-hyperlinks_002c-explicit-528">hyperlinks, explicit</a>: <a href="#Explicit-hyperlinks">Explicit hyperlinks</a></li>
+<li><a href="#index-hyperlinks_002c-explicit_002c-demo-1239">hyperlinks, explicit, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-hyperlinks_002c-filtering-index-entries-636">hyperlinks, filtering index entries</a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
+<li><a href="#index-hyperlinks_002c-footnotes-659">hyperlinks, footnotes</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
+<li><a href="#index-hyperlinks_002c-group-option-list-1006">hyperlinks, group option list</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-hyperlinks_002c-group-options-985">hyperlinks, group options</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-hyperlinks_002c-group-options-947">hyperlinks, group options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-hyperlinks_002c-group-options_002c-demo-1245">hyperlinks, group options, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-hyperlinks_002c-group-type-969">hyperlinks, group type</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-hyperlinks_002c-group-type-946">hyperlinks, group type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-hyperlinks_002c-highlight-mode-902">hyperlinks, highlight mode</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlinks_002c-implicit-533">hyperlinks, implicit</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
+<li><a href="#index-hyperlinks_002c-implicit_002c-demo-1241">hyperlinks, implicit, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-hyperlinks_002c-index-620">hyperlinks, index</a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
+<li><a href="#index-hyperlinks_002c-index-destination-placement-647">hyperlinks, index destination placement</a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
+<li><a href="#index-hyperlinks_002c-index_002c-exact-633">hyperlinks, index, exact</a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
+<li><a href="#index-hyperlinks_002c-large-operators-999">hyperlinks, large operators</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-hyperlinks_002c-large-operators-685">hyperlinks, large operators</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-hyperlinks_002c-lists-572">hyperlinks, lists</a>: <a href="#List-hyperlinks">List hyperlinks</a></li>
+<li><a href="#index-hyperlinks_002c-opening-in-a-new-window-905">hyperlinks, opening in a new window</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlinks_002c-page-references-592">hyperlinks, page references</a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
+<li><a href="#index-hyperlinks_002c-preserving-page_002dbreaking-928">hyperlinks, preserving page-breaking</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-hyperlinks_002c-preserving-spacing-926">hyperlinks, preserving spacing</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-hyperlinks_002c-see-and-see-also-index-entries-652">hyperlinks, see and see also index entries</a>: <a href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a></li>
+<li><a href="#index-hyperlinks_002c-table-of-contents-673">hyperlinks, table of contents</a>: <a href="#Contents-hyperlinks">Contents hyperlinks</a></li>
+<li><a href="#index-hyperlinks_002c-to-another-file-851">hyperlinks, to another file</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlinks_002c-to-another-file-733">hyperlinks, to another file</a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-hyperlinks_002c-_0040acronym_007bURL_007d-842">hyperlinks, <acronym>URL</acronym></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-hyperlinks_002c-_0040acronym_007bURL_007d-729">hyperlinks, <acronym>URL</acronym></a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-hyperlinks_002c-_0040acronym_007bURL_007d-550">hyperlinks, <acronym>URL</acronym></a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
+<li><a href="#index-hyperlinks_002c-_0040acronym_007bURL_007d-544">hyperlinks, <acronym>URL</acronym></a>: <a href="#General-hyperlinks">General hyperlinks</a></li>
+<li><a href="#index-hyperref_002esty-507"><code>hyperref.sty</code></a>: <a href="#Packages-known-not-to-work">Packages known not to work</a></li>
+<li><a href="#index-g_t_0040code_007bhypertex_007d_002c-destination-options-717"><code>hypertex</code>, destination options</a>: <a href="#Destination-options-for-hypertex">Destination options for hypertex</a></li>
+<li><a href="#index-g_t_0040code_007bhypertex_007d_002c-destination-types-709"><code>hypertex</code>, destination types</a>: <a href="#Destination-types-for-hypertex">Destination types for hypertex</a></li>
+<li><a href="#index-g_t_0040code_007bhypertex_007d_002c-hyperlink-driver-695"><code>hypertex</code>, hyperlink driver</a>: <a href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a></li>
+<li><a href="#index-g_t_0040code_007bhypertex_007d_002c-link-options-743"><code>hypertex</code>, link options</a>: <a href="#Link-options-for-hypertex">Link options for hypertex</a></li>
+<li><a href="#index-g_t_0040code_007bhypertex_007d_002c-link-types-721"><code>hypertex</code>, link types</a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-hypertext-links-511">hypertext links</a>: <a href="#Hyperlinks">Hyperlinks</a></li>
+<li><a href="#index-identifying-numbers-1201">identifying numbers</a>: <a href="#g_t_005cifinteger-and-_005cisinteger">\ifinteger and \isinteger</a></li>
+<li><a href="#index-idxuniq-634"><code>idxuniq</code></a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
+<li><a href="#index-ignoring-arguments-1165">ignoring arguments</a>: <a href="#Macro-arguments">Macro arguments</a></li>
+<li><a href="#index-implicit-hyperlinks-532">implicit hyperlinks</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
+<li><a href="#index-implicit-hyperlinks_002c-demo-1240">implicit hyperlinks, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-inaccessible-macros-1124">inaccessible macros</a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-index-entries-and-ranges-258">index entries and ranges</a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
+<li><a href="#index-index-entries-containing-braces-271">index entries containing braces</a>: <a href="#Index-entries-with-special-characters">Index entries with special characters</a></li>
+<li><a href="#index-index-entries-containing-brackets-275">index entries containing brackets</a>: <a href="#Index-entries-with-special-characters">Index entries with special characters</a></li>
+<li><a href="#index-index-entries-with-special-characters-266">index entries with special characters</a>: <a href="#Index-entries-with-special-characters">Index entries with special characters</a></li>
+<li><a href="#index-index-entries_0027-page-numbers_002c-modifying-255">index entries' page numbers, modifying</a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
+<li><a href="#index-index-entries_002c-and-cross_002dreferencing-339">index entries, and cross-referencing</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-index-entries_002c-and-cross_002dreferencing-263">index entries, and cross-referencing</a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
+<li><a href="#index-index-entries_002c-proofing-277">index entries, proofing</a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-index-entries_002c-with-verbatim-text-267">index entries, with verbatim text</a>: <a href="#Index-entries-with-special-characters">Index entries with special characters</a></li>
+<li><a href="#index-index-entry-continuations-310">index entry continuations</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-index-entry-formatting-306">index entry formatting</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-index-entry-general-sorting-250">index entry general sorting</a>: <a href="#Indexing-commands">Indexing commands</a></li>
+<li><a href="#index-index-fonts-299">index fonts</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-index-groupings-316">index groupings</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-index-hyperlink-619">index hyperlink</a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
+<li><a href="#index-index-typesetting-292">index typesetting</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-index_002c-and-verbatim-text-268">index, and verbatim text</a>: <a href="#Index-entries-with-special-characters">Index entries with special characters</a></li>
+<li><a href="#index-index_002c-choosing-destination-placement-646">index, choosing destination placement</a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
+<li><a href="#index-index_002c-destination-placement-644">index, destination placement</a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
+<li><a href="#index-index_002c-exact-hyperlinks-632">index, exact hyperlinks</a>: <a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a></li>
+<li><a href="#index-index_002c-hyperlinks-in-see-and-see-also-entries-653">index, hyperlinks in see and see also entries</a>: <a href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a></li>
+<li><a href="#index-index_002c-parsing-page-numbers-639">index, parsing page numbers</a>: <a href="#Page-destinations-for-index-terms">Page destinations for index terms</a></li>
+<li><a href="#index-index_002c-placement-of-destinations-643">index, placement of destinations</a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
+<li><a href="#index-index_002c-selecting-destination-placement-645">index, selecting destination placement</a>: <a href="#Choosing-destination-placement">Choosing destination placement</a></li>
+<li><a href="#index-index_002c-underlining-page-numbers-1232">index, underlining page numbers</a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
+<li><a href="#index-indexes_002c-multiple-232">indexes, multiple</a>: <a href="#Indexing">Indexing</a></li>
+<li><a href="#index-indexing-224">indexing</a>: <a href="#Indexing">Indexing</a></li>
+<li><a href="#index-indexing-and-trailing-spaces-239">indexing and trailing spaces</a>: <a href="#Indexing-terms">Indexing terms</a></li>
+<li><a href="#index-indexing-commands-240">indexing commands</a>: <a href="#Indexing-commands">Indexing commands</a></li>
+<li><a href="#index-indexing-terms-234">indexing terms</a>: <a href="#Indexing-terms">Indexing terms</a></li>
+<li><a href="#index-insertion-classes-385">insertion classes</a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-inset-hyperlink-border-888">inset hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-installation-14">installation</a>: <a href="#Installation">Installation</a></li>
+<li><a href="#index-integers_002c-detecting-1198">integers, detecting</a>: <a href="#g_t_005cifinteger-and-_005cisinteger">\ifinteger and \isinteger</a></li>
+<li><a href="#index-item-labels_002c-changing-145">item labels, changing</a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-iteration-1153">iteration</a>: <a href="#Iteration">Iteration</a></li>
+<li><a href="#index-justification-346">justification</a>: <a href="#Justification">Justification</a></li>
+<li><a href="#index-Knuth_002c-Donald-Ervin-1116">Knuth, Donald Ervin</a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-Knuth_002c-Donald-Ervin-70">Knuth, Donald Ervin</a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-labels-on-items_002c-changing-146">labels on items, changing</a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-labels_002c-characters-valid-in-186">labels, characters valid in</a>: <a href="#Cross_002dreferences">Cross-references</a></li>
+<li><a href="#index-labels_002c-empty-equation-207">labels, empty equation</a>: <a href="#Equation-references">Equation references</a></li>
+<li><a href="#index-labels_002c-empty-equation_002c-referring-to-210">labels, empty equation, referring to</a>: <a href="#Equation-references">Equation references</a></li>
<li><a href="#index-Lamport_002c-Leslie-4">Lamport, Leslie</a>: <a href="#Introduction">Introduction</a></li>
-<li><a href="#index-LAMS_0040TeX_007b_007d-382">LAMSTeX</a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-Lang_002c-Serge-947">Lang, Serge</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-Lang_002c-Serge-924">Lang, Serge</a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-large-operators-and-hyperlinks-852">large operators and hyperlinks</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-large-operators-and-hyperlinks-604">large operators and hyperlinks</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-g_t_0040LaTeX_007b_007d-873">LaTeX</a>: <a href="#Slanted-lines-and-vectors">Slanted lines and vectors</a></li>
-<li><a href="#index-g_t_0040LaTeX_007b_007d-384">LaTeX</a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-g_t_0040LaTeX_007b_007d-51">LaTeX</a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-LAMS_0040TeX_007b_007d-412">LAMSTeX</a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-Lang_002c-Serge-1093">Lang, Serge</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-Lang_002c-Serge-1070">Lang, Serge</a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-large-operators-and-hyperlinks-998">large operators and hyperlinks</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-large-operators-and-hyperlinks-684">large operators and hyperlinks</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-g_t_0040LaTeX_007b_007d-1019">LaTeX</a>: <a href="#Slanted-lines-and-vectors">Slanted lines and vectors</a></li>
+<li><a href="#index-g_t_0040LaTeX_007b_007d-414">LaTeX</a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-g_t_0040LaTeX_007b_007d-57">LaTeX</a>: <a href="#Citations">Citations</a></li>
<li><a href="#index-g_t_0040LaTeX_007b_007d-3">LaTeX</a>: <a href="#Introduction">Introduction</a></li>
-<li><a href="#index-g_t_0040LaTeX_007b_007d-graphics-collection-795">LaTeX graphics collection</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-g_t_0040LaTeX_007b_007d-graphics-collection-429">LaTeX graphics collection</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-g_t_0040LaTeX_007b_007d-graphics-collection-412">LaTeX graphics collection</a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
-<li><a href="#index-g_t_0040LaTeX_007b_007d-packages-441">LaTeX packages</a>: <a href="#Packages-known-not-to-work">Packages known not to work</a></li>
-<li><a href="#index-g_t_0040LaTeX_007b_007d-packages-419">LaTeX packages</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-g_t_0040LaTeX_007b_007d-packages-407">LaTeX packages</a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
-<li><a href="#index-left_002djustification-314">left-justification</a>: <a href="#Justification">Justification</a></li>
-<li><a href="#index-left_002djustification-of-displays-90">left-justification of displays</a>: <a href="#Displays">Displays</a></li>
-<li><a href="#index-linear-systems-theory-935">linear systems theory</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-lines-875">lines</a>: <a href="#Slanted-lines-and-vectors">Slanted lines and vectors</a></li>
-<li><a href="#index-link-group-469">link group</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
-<li><a href="#index-link-options-459">link options</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-link-options_002c-common-607">link options, common</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-link-options_002c-_0040code_007bdvipdfm_007d-733">link options, <code>dvipdfm</code></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-link-options_002c-_0040code_007bpdftex_007d-732">link options, <code>pdftex</code></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-link-type-456">link type</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-link-types_002c-_0040code_007bdvipdfm_007d-693">link types, <code>dvipdfm</code></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-link-types_002c-_0040code_007bpdftex_007d-692">link types, <code>pdftex</code></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-link_002c-group-options-840">link, group options</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-link_002c-group-options-809">link, group options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-link_002c-group-type-824">link, group type</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-link_002c-group-type-808">link, group type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-linkgroup-470">linkgroup</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
-<li><a href="#index-linkgroup-_0060cite_0027-484">linkgroup `cite'</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
-<li><a href="#index-linkgroup-_0060eq_0027-857">linkgroup `eq'</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-linkgroup-_0060eq_0027-534">linkgroup `eq'</a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
-<li><a href="#index-linkgroup-_0060foot_0027-582">linkgroup `foot'</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
-<li><a href="#index-linkgroup-_0060footback_0027-583">linkgroup `footback'</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
-<li><a href="#index-linkgroup-_0060idx_0027-542">linkgroup `idx'</a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
-<li><a href="#index-linkgroup-_0060ref_0027-502">linkgroup `ref'</a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
-<li><a href="#index-linkgroup-_0060url_0027-478">linkgroup `url'</a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
-<li><a href="#index-linkgroup-_0060xref_0027-519">linkgroup `xref'</a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
-<li><a href="#index-linkgroup_002c-options-841">linkgroup, options</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-linkgroup_002c-options-811">linkgroup, options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-linkgroup_002c-type-825">linkgroup, type</a>: <a href="#Setting-group-types">Setting group types</a></li>
-<li><a href="#index-linkgroup_002c-type-810">linkgroup, type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
-<li><a href="#index-links_002c-hypertext-445">links, hypertext</a>: <a href="#Hyperlinks">Hyperlinks</a></li>
-<li><a href="#index-list-of-figures-162">list of figures</a>: <a href="#Contents">Contents</a></li>
-<li><a href="#index-list-of-tables-163">list of tables</a>: <a href="#Contents">Contents</a></li>
-<li><a href="#index-listing-files-142">listing files</a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
-<li><a href="#index-lists-107">lists</a>: <a href="#Lists">Lists</a></li>
-<li><a href="#index-lists_002c-formatting-119">lists, formatting</a>: <a href="#Formatting-lists">Formatting lists</a></li>
-<li><a href="#index-lists_002c-hyperlinks-491">lists, hyperlinks</a>: <a href="#List-hyperlinks">List hyperlinks</a></li>
-<li><a href="#index-logos-373">logos</a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-lookahead-without-spaces-1039">lookahead without spaces</a>: <a href="#g_t_005cfuturenonspacelet">\futurenonspacelet</a></li>
-<li><a href="#index-magnification_002c-hyperlink-destination-661">magnification, hyperlink destination</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-margins_002c-changing-325">margins, changing</a>: <a href="#Margins">Margins</a></li>
-<li><a href="#index-margins_002c-index-terms-in-248">margins, index terms in</a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-mathematics-displays_002c-formatting-89">mathematics displays, formatting</a>: <a href="#Displays">Displays</a></li>
-<li><a href="#index-mathematics-displays_002c-hyperlinks-850">mathematics displays, hyperlinks</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-mathematics-displays_002c-hyperlinks-602">mathematics displays, hyperlinks</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-Metafont-386">Metafont</a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-minimal-realizations-934">minimal realizations</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-modifying-index-entries_0027-page-numbers-235">modifying index entries' page numbers</a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
-<li><a href="#index-morphisms-879">morphisms</a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-multiple-column-output-340">multiple column output</a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-multiple-indexes-212">multiple indexes</a>: <a href="#Indexing">Indexing</a></li>
-<li><a href="#index-named-destination-699">named destination</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-names_002c-of-_0040TeX_007b_007d-variants-374">names, of TeX variants</a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-new-window_002c-opening-hyperlink-in-768">new window, opening hyperlink in</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-newlinechar-40">newlinechar</a>: <a href="#Diagnostics">Diagnostics</a></li>
-<li><a href="#index-newlines_002c-obeying-1044">newlines, obeying</a>: <a href="#Obeying-spaces">Obeying spaces</a></li>
-<li><a href="#index-g_t_0040code_007bnolinks_007d_002c-hyperlink-driver-779"><code>nolinks</code>, hyperlink driver</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-numbered-destination-729">numbered destination</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-numbered-lists-108">numbered lists</a>: <a href="#Lists">Lists</a></li>
-<li><a href="#index-numbered-references-66">numbered references</a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-numbers_002c-written-form-of-1048">numbers, written form of</a>: <a href="#Writing-out-numbers">Writing out numbers</a></li>
-<li><a href="#index-Oberdiek_002c-Heiko-406">Oberdiek, Heiko</a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
-<li><a href="#index-omitting-hyperlinks-861">omitting hyperlinks</a>: <a href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a></li>
-<li><a href="#index-omitting-hyperlinks-782">omitting hyperlinks</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-open-boxes-394">open boxes</a>: <a href="#Boxes">Boxes</a></li>
-<li><a href="#index-option-list_002c-group-858">option list, group</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-option-list_002c-preserving-for-group-848">option list, preserving for group</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-options_002c-destination_002c-common-596">options, destination, common</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-options_002c-destination_002c-_0040code_007bdvipdfm_007d-654">options, destination, <code>dvipdfm</code></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-options_002c-destination_002c-_0040code_007bpdftex_007d-653">options, destination, <code>pdftex</code></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-options_002c-link-and-destination-461">options, link and destination</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-options_002c-link_002c-common-608">options, link, common</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-options_002c-link_002c-_0040code_007bdvipdfm_007d-735">options, link, <code>dvipdfm</code></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-options_002c-link_002c-_0040code_007bpdftex_007d-734">options, link, <code>pdftex</code></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-ordered-list-109">ordered list</a>: <a href="#Lists">Lists</a></li>
-<li><a href="#index-output-routine-and-index-proofing-260">output routine and index proofing</a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-packages_002c-_0040LaTeX_007b_007d-442">packages, LaTeX</a>: <a href="#Packages-known-not-to-work">Packages known not to work</a></li>
-<li><a href="#index-packages_002c-_0040LaTeX_007b_007d-420">packages, LaTeX</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-packages_002c-_0040LaTeX_007b_007d-408">packages, LaTeX</a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
-<li><a href="#index-page-destination-703">page destination</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-page-list_002c-parsing-561">page list, parsing</a>: <a href="#Page-destinations-for-index-terms">Page destinations for index terms</a></li>
-<li><a href="#index-page-range_002c-parsing-560">page range, parsing</a>: <a href="#Page-destinations-for-index-terms">Page destinations for index terms</a></li>
-<li><a href="#index-page-reference-hyperlink-511">page reference hyperlink</a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
-<li><a href="#index-page_002dbreaking_002c-preserving-with-hyperlinks-788">page-breaking, preserving with hyperlinks</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-parsing-page-numbers-562">parsing page numbers</a>: <a href="#Page-destinations-for-index-terms">Page destinations for index terms</a></li>
-<li><a href="#index-Patashnik_002c-Oren-50">Patashnik, Oren</a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-pathnames_002c-breaking-438">pathnames, breaking</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-pathnames_002c-breaking-366">pathnames, breaking</a>: <a href="#Paths">Paths</a></li>
-<li><a href="#index-PDF-output-400">PDF output</a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
-<li><a href="#index-g_t_0040code_007bpdftex_007d_002c-destination-options-655"><code>pdftex</code>, destination options</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-g_t_0040code_007bpdftex_007d_002c-destination-types-622"><code>pdftex</code>, destination types</a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-g_t_0040code_007bpdftex_007d_002c-hyperlink-driver-612"><code>pdftex</code>, hyperlink driver</a>: <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a></li>
-<li><a href="#index-g_t_0040code_007bpdftex_007d_002c-link-options-736"><code>pdftex</code>, link options</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-g_t_0040code_007bpdftex_007d_002c-link-types-696"><code>pdftex</code>, link types</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-picture-mode-874">picture mode</a>: <a href="#Slanted-lines-and-vectors">Slanted lines and vectors</a></li>
-<li><a href="#index-picture-mode-422">picture mode</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-PostScript-point-760">PostScript point</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-PostScript-point-675">PostScript point</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
-<li><a href="#index-PostScript-point-646">PostScript point</a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-proofing-index-terms-246">proofing index terms</a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
-<li><a href="#index-properties-1030">properties</a>: <a href="#Properties">Properties</a></li>
-<li><a href="#index-quadruple-column-output-339">quadruple column output</a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-Rahtz_002c-Sebastian-415">Rahtz, Sebastian</a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
-<li><a href="#index-raising-hyperlink-destinations-855">raising hyperlink destinations</a>: <a href="#Setting-group-options">Setting group options</a></li>
-<li><a href="#index-raising-hyperlink-destinations-598">raising hyperlink destinations</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
-<li><a href="#index-ranges-and-index-entry-240">ranges and index entry</a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
-<li><a href="#index-rectangles-392">rectangles</a>: <a href="#Boxes">Boxes</a></li>
-<li><a href="#index-references_002c-alphanumeric-70">references, alphanumeric</a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-references_002c-defining-general-173">references, defining general</a>: <a href="#Using-generic-references">Using generic references</a></li>
-<li><a href="#index-references_002c-defining-general-169">references, defining general</a>: <a href="#Defining-generic-references">Defining generic references</a></li>
-<li><a href="#index-references_002c-numbered-67">references, numbered</a>: <a href="#Citations">Citations</a></li>
-<li><a href="#index-register-allocation-990">register allocation</a>: <a href="#Allocation-macros">Allocation macros</a></li>
-<li><a href="#index-return-character-984">return character</a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-right_002djustification-315">right-justification</a>: <a href="#Justification">Justification</a></li>
+<li><a href="#index-g_t_0040LaTeX_007b_007d-graphics-collection-934">LaTeX graphics collection</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-g_t_0040LaTeX_007b_007d-graphics-collection-465">LaTeX graphics collection</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-g_t_0040LaTeX_007b_007d-graphics-collection-442">LaTeX graphics collection</a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
+<li><a href="#index-g_t_0040LaTeX_007b_007d-graphics-collection_002c-demo-1260">LaTeX graphics collection, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-g_t_0040LaTeX_007b_007d-packages-505">LaTeX packages</a>: <a href="#Packages-known-not-to-work">Packages known not to work</a></li>
+<li><a href="#index-g_t_0040LaTeX_007b_007d-packages-455">LaTeX packages</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-g_t_0040LaTeX_007b_007d-packages-437">LaTeX packages</a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
+<li><a href="#index-g_t_0040LaTeX_007b_007d-packages_002c-restoring-_0040code_007b_005cinput_007d-450">LaTeX packages, restoring <code>\input</code></a>: <a href="#Environment-for-loading-packages">Environment for loading packages</a></li>
+<li><a href="#index-left_002djustification-344">left-justification</a>: <a href="#Justification">Justification</a></li>
+<li><a href="#index-left_002djustification-of-displays-96">left-justification of displays</a>: <a href="#Displays">Displays</a></li>
+<li><a href="#index-letterspacing-495">letterspacing</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-linear-systems-theory-1081">linear systems theory</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-lines-1021">lines</a>: <a href="#Slanted-lines-and-vectors">Slanted lines and vectors</a></li>
+<li><a href="#index-link-group-534">link group</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
+<li><a href="#index-link-options-524">link options</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-link-options_002c-common-687">link options, common</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-link-options_002c-_0040code_007bdvipdfm_007d-871">link options, <code>dvipdfm</code></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-link-options_002c-_0040code_007bhypertex_007d-741">link options, <code>hypertex</code></a>: <a href="#Link-options-for-hypertex">Link options for hypertex</a></li>
+<li><a href="#index-link-options_002c-_0040code_007bpdftex_007d-870">link options, <code>pdftex</code></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-link-type-521">link type</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-link-types_002c-_0040code_007bdvipdfm_007d-830">link types, <code>dvipdfm</code></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-link-types_002c-_0040code_007bhypertex_007d-719">link types, <code>hypertex</code></a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-link-types_002c-_0040code_007bpdftex_007d-829">link types, <code>pdftex</code></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-link_002c-group-options-986">link, group options</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-link_002c-group-options-949">link, group options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-link_002c-group-options_002c-demo-1246">link, group options, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-link_002c-group-type-970">link, group type</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-link_002c-group-type-948">link, group type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-linkgroup-535">linkgroup</a>: <a href="#Implicit-hyperlinks">Implicit hyperlinks</a></li>
+<li><a href="#index-linkgroup-_0060cite_0027-564">linkgroup `cite'</a>: <a href="#Citation-hyperlinks">Citation hyperlinks</a></li>
+<li><a href="#index-linkgroup-_0060eq_0027-1003">linkgroup `eq'</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-linkgroup-_0060eq_0027-614">linkgroup `eq'</a>: <a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a></li>
+<li><a href="#index-linkgroup-_0060foot_0027-662">linkgroup `foot'</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
+<li><a href="#index-linkgroup-_0060footback_0027-663">linkgroup `footback'</a>: <a href="#Footnote-hyperlinks">Footnote hyperlinks</a></li>
+<li><a href="#index-linkgroup-_0060hrefext_0027-546">linkgroup `hrefext'</a>: <a href="#General-hyperlinks">General hyperlinks</a></li>
+<li><a href="#index-linkgroup-_0060hrefint_0027-542">linkgroup `hrefint'</a>: <a href="#General-hyperlinks">General hyperlinks</a></li>
+<li><a href="#index-linkgroup-_0060idx_0027-622">linkgroup `idx'</a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
+<li><a href="#index-linkgroup-_0060ref_0027-582">linkgroup `ref'</a>: <a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a></li>
+<li><a href="#index-linkgroup-_0060url_0027-552">linkgroup `url'</a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
+<li><a href="#index-linkgroup-_0060xref_0027-599">linkgroup `xref'</a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
+<li><a href="#index-linkgroup-options-987">linkgroup options</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-linkgroup-options-951">linkgroup options</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-linkgroup-options_002c-demo-1247">linkgroup options, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-linkgroup-type-971">linkgroup type</a>: <a href="#Setting-group-types">Setting group types</a></li>
+<li><a href="#index-linkgroup-type-950">linkgroup type</a>: <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a></li>
+<li><a href="#index-links_002c-hypertext-510">links, hypertext</a>: <a href="#Hyperlinks">Hyperlinks</a></li>
+<li><a href="#index-list-of-figures-181">list of figures</a>: <a href="#Alternative-contents-files">Alternative contents files</a></li>
+<li><a href="#index-list-of-tables-182">list of tables</a>: <a href="#Alternative-contents-files">Alternative contents files</a></li>
+<li><a href="#index-listing-files-148">listing files</a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-listing-files_002c-demo-1273">listing files, demo</a>: <a href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">Highlighting TeX comments in listings (lscommnt.tex)</a></li>
+<li><a href="#index-lists-113">lists</a>: <a href="#Lists">Lists</a></li>
+<li><a href="#index-lists_002c-formatting-125">lists, formatting</a>: <a href="#Formatting-lists">Formatting lists</a></li>
+<li><a href="#index-lists_002c-hyperlinks-571">lists, hyperlinks</a>: <a href="#List-hyperlinks">List hyperlinks</a></li>
+<li><a href="#index-logos-403">logos</a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-lookahead-without-spaces-1205">lookahead without spaces</a>: <a href="#g_t_005cfuturenonspacelet">\futurenonspacelet</a></li>
+<li><a href="#index-loops-1154">loops</a>: <a href="#Iteration">Iteration</a></li>
+<li><a href="#index-lscommnt_002etex-1271"><code>lscommnt.tex</code></a>: <a href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">Highlighting TeX comments in listings (lscommnt.tex)</a></li>
+<li><a href="#index-magnification_002c-hyperlink-destination-798">magnification, hyperlink destination</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-makeindex-625"><code>makeindex</code></a>: <a href="#Index-hyperlinks">Index hyperlinks</a></li>
+<li><a href="#index-makeindex-227"><code>makeindex</code></a>: <a href="#Indexing">Indexing</a></li>
+<li><a href="#index-makeindex-34"><code>makeindex</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
+<li><a href="#index-margins_002c-changing-355">margins, changing</a>: <a href="#Margins">Margins</a></li>
+<li><a href="#index-margins_002c-index-terms-in-278">margins, index terms in</a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-mathematics-displays_002c-formatting-95">mathematics displays, formatting</a>: <a href="#Displays">Displays</a></li>
+<li><a href="#index-mathematics-displays_002c-hyperlinks-996">mathematics displays, hyperlinks</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-mathematics-displays_002c-hyperlinks-682">mathematics displays, hyperlinks</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-Metafont-416">Metafont</a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-miniltx_002etex-443"><code>miniltx.tex</code></a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
+<li><a href="#index-minimal-realizations-1080">minimal realizations</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-modifying-index-entries_0027-page-numbers-254">modifying index entries' page numbers</a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
+<li><a href="#index-morphisms-1025">morphisms</a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-multiple-column-output-370">multiple column output</a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-multiple-indexes-231">multiple indexes</a>: <a href="#Indexing">Indexing</a></li>
+<li><a href="#index-named-destination-836">named destination</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-named-destination-723">named destination</a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-names_002c-of-_0040TeX_007b_007d-variants-404">names, of TeX variants</a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-new-window_002c-opening-hyperlink-in-906">new window, opening hyperlink in</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-newlinechar-46">newlinechar</a>: <a href="#Diagnostics">Diagnostics</a></li>
+<li><a href="#index-newlines_002c-obeying-1210">newlines, obeying</a>: <a href="#Obeying-spaces">Obeying spaces</a></li>
+<li><a href="#index-g_t_0040code_007bnolinks_007d_002c-hyperlink-driver-918"><code>nolinks</code>, hyperlink driver</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-numbered-destination-867">numbered destination</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-numbered-lists-114">numbered lists</a>: <a href="#Lists">Lists</a></li>
+<li><a href="#index-numbered-references-72">numbered references</a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-numbers_002c-detecting-1199">numbers, detecting</a>: <a href="#g_t_005cifinteger-and-_005cisinteger">\ifinteger and \isinteger</a></li>
+<li><a href="#index-numbers_002c-written-form-of-1214">numbers, written form of</a>: <a href="#Writing-out-numbers">Writing out numbers</a></li>
+<li><a href="#index-Oberdiek_002c-Heiko-436">Oberdiek, Heiko</a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
+<li><a href="#index-omitting-hyperlinks-1007">omitting hyperlinks</a>: <a href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a></li>
+<li><a href="#index-omitting-hyperlinks-921">omitting hyperlinks</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-omitting-typesetting-of-graphics-476">omitting typesetting of graphics</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-open-boxes-424">open boxes</a>: <a href="#Boxes">Boxes</a></li>
+<li><a href="#index-option-list_002c-group-1004">option list, group</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-option-list_002c-preserving-for-group-994">option list, preserving for group</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-options_002c-destination_002c-common-676">options, destination, common</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-options_002c-destination_002c-_0040code_007bdvipdfm_007d-791">options, destination, <code>dvipdfm</code></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-options_002c-destination_002c-_0040code_007bhypertex_007d-716">options, destination, <code>hypertex</code></a>: <a href="#Destination-options-for-hypertex">Destination options for hypertex</a></li>
+<li><a href="#index-options_002c-destination_002c-_0040code_007bpdftex_007d-790">options, destination, <code>pdftex</code></a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-options_002c-link-and-destination-526">options, link and destination</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-options_002c-link_002c-common-688">options, link, common</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-options_002c-link_002c-_0040code_007bdvipdfm_007d-873">options, link, <code>dvipdfm</code></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-options_002c-link_002c-_0040code_007bhypertex_007d-742">options, link, <code>hypertex</code></a>: <a href="#Link-options-for-hypertex">Link options for hypertex</a></li>
+<li><a href="#index-options_002c-link_002c-_0040code_007bpdftex_007d-872">options, link, <code>pdftex</code></a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-ordered-list-115">ordered list</a>: <a href="#Lists">Lists</a></li>
+<li><a href="#index-output-routine-and-index-proofing-290">output routine and index proofing</a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-overstriking-499">overstriking</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-packages_002c-_0040LaTeX_007b_007d-506">packages, LaTeX</a>: <a href="#Packages-known-not-to-work">Packages known not to work</a></li>
+<li><a href="#index-packages_002c-_0040LaTeX_007b_007d-456">packages, LaTeX</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-packages_002c-_0040LaTeX_007b_007d-438">packages, LaTeX</a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
+<li><a href="#index-page-destination-844">page destination</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-page-list_002c-parsing-641">page list, parsing</a>: <a href="#Page-destinations-for-index-terms">Page destinations for index terms</a></li>
+<li><a href="#index-page-range_002c-parsing-640">page range, parsing</a>: <a href="#Page-destinations-for-index-terms">Page destinations for index terms</a></li>
+<li><a href="#index-page-reference-hyperlink-591">page reference hyperlink</a>: <a href="#Page-reference-hyperlinks">Page reference hyperlinks</a></li>
+<li><a href="#index-page_002dbreaking_002c-preserving-with-hyperlinks-927">page-breaking, preserving with hyperlinks</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-parsing-page-numbers-642">parsing page numbers</a>: <a href="#Page-destinations-for-index-terms">Page destinations for index terms</a></li>
+<li><a href="#index-Patashnik_002c-Oren-56">Patashnik, Oren</a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-pathnames_002c-breaking-502">pathnames, breaking</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-pathnames_002c-breaking-396">pathnames, breaking</a>: <a href="#Paths">Paths</a></li>
+<li><a href="#index-g_t_0040acronym_007bPDF_007d-487"><acronym>PDF</acronym></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-g_t_0040acronym_007bPDF_007d-output-430"><acronym>PDF</acronym> output</a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
+<li><a href="#index-pdftex-517"><code>pdftex</code></a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-pdftex-431"><code>pdftex</code></a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
+<li><a href="#index-pdftex-35"><code>pdftex</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
+<li><a href="#index-g_t_0040code_007bpdftex_007d_002c-destination-options-792"><code>pdftex</code>, destination options</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-g_t_0040code_007bpdftex_007d_002c-destination-types-759"><code>pdftex</code>, destination types</a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-g_t_0040code_007bpdftex_007d_002c-hyperlink-driver-749"><code>pdftex</code>, hyperlink driver</a>: <a href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a></li>
+<li><a href="#index-g_t_0040code_007bpdftex_007d_002c-link-options-874"><code>pdftex</code>, link options</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-g_t_0040code_007bpdftex_007d_002c-link-types-833"><code>pdftex</code>, link types</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-pdf_0040TeX_007b_007d_002c-problems-using-color-and-graphics-471">pdfTeX, problems using color and graphics</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-pdf_0040TeX_007b_007d_002c-problems-with-_0040file_007bsupp_002dmis_002etex_007d-472">pdfTeX, problems with <samp><span class="file">supp-mis.tex</span></samp></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-pict2e_002esty-508"><code>pict2e.sty</code></a>: <a href="#Packages-known-not-to-work">Packages known not to work</a></li>
+<li><a href="#index-picture-mode-1020">picture mode</a>: <a href="#Slanted-lines-and-vectors">Slanted lines and vectors</a></li>
+<li><a href="#index-picture-mode-458">picture mode</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-Portable-Document-Format-486">Portable Document Format</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-PostScript-point-898">PostScript point</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-PostScript-point-812">PostScript point</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+<li><a href="#index-PostScript-point-783">PostScript point</a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-proofing-index-terms-276">proofing index terms</a>: <a href="#Proofing-index-terms">Proofing index terms</a></li>
+<li><a href="#index-properties-1184">properties</a>: <a href="#Properties">Properties</a></li>
+<li><a href="#index-ps2pdf-702"><code>ps2pdf</code></a>: <a href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a></li>
+<li><a href="#index-psfrag_002esty-490"><code>psfrag.sty</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-quadruple-column-output-369">quadruple column output</a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-Rahtz_002c-Sebastian-445">Rahtz, Sebastian</a>: <a href="#Loading-LaTeX-packages">Loading LaTeX packages</a></li>
+<li><a href="#index-raising-hyperlink-destinations-1001">raising hyperlink destinations</a>: <a href="#Setting-group-options">Setting group options</a></li>
+<li><a href="#index-raising-hyperlink-destinations-678">raising hyperlink destinations</a>: <a href="#Options-supported-by-all-drivers">Options supported by all drivers</a></li>
+<li><a href="#index-ranges-and-index-entry-259">ranges and index entry</a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
+<li><a href="#index-recognizing-numbers-1202">recognizing numbers</a>: <a href="#g_t_005cifinteger-and-_005cisinteger">\ifinteger and \isinteger</a></li>
+<li><a href="#index-rectangles-422">rectangles</a>: <a href="#Boxes">Boxes</a></li>
+<li><a href="#index-references_002c-alphanumeric-76">references, alphanumeric</a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-references_002c-defining-general-192">references, defining general</a>: <a href="#Using-generic-references">Using generic references</a></li>
+<li><a href="#index-references_002c-defining-general-188">references, defining general</a>: <a href="#Defining-generic-references">Defining generic references</a></li>
+<li><a href="#index-references_002c-numbered-73">references, numbered</a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-register-allocation-1136">register allocation</a>: <a href="#Allocation-macros">Allocation macros</a></li>
+<li><a href="#index-restoring-_0040code_007b_005cinput_007d_002c-_0040LaTeX_007b_007d-packages-451">restoring <code>\input</code>, LaTeX packages</a>: <a href="#Environment-for-loading-packages">Environment for loading packages</a></li>
+<li><a href="#index-return-character-1130">return character</a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-right_002djustification-345">right-justification</a>: <a href="#Justification">Justification</a></li>
<li><a href="#index-rms-7">rms</a>: <a href="#Introduction">Introduction</a></li>
-<li><a href="#index-rotation-431">rotation</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-rule-thickness-41">rule thickness</a>: <a href="#Rules">Rules</a></li>
-<li><a href="#index-scaling-432">scaling</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
-<li><a href="#index-see-also-index-entries-and-hyperlinks-574">see also index entries and hyperlinks</a>: <a href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a></li>
-<li><a href="#index-see-also-index-entries-and-sorting-300">see also index entries and sorting</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-see_002c-and-index-entries-307">see, and index entries</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
-<li><a href="#index-see_002c-and-index-entries-242">see, and index entries</a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
-<li><a href="#index-see_002c-and-index-entries_002c-hyperlinks-575">see, and index entries, hyperlinks</a>: <a href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a></li>
-<li><a href="#index-silent-indexing-216">silent indexing</a>: <a href="#Indexing-terms">Indexing terms</a></li>
-<li><a href="#index-skipping-tokens-1037">skipping tokens</a>: <a href="#g_t_005cifundefined">\ifundefined</a></li>
-<li><a href="#index-SLi_0040TeX_007b_007d-388">SLiTeX</a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-Snake-Lemma-925">Snake Lemma</a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
-<li><a href="#index-solid-hyperlink-border-747">solid hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-sorting-an-index-206">sorting an index</a>: <a href="#Indexing">Indexing</a></li>
-<li><a href="#index-sorting-of-index-entries-232">sorting of index entries</a>: <a href="#Indexing-commands">Indexing commands</a></li>
-<li><a href="#index-space-above-index-entries-278">space above index entries</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-spaces_002c-ignoring-1040">spaces, ignoring</a>: <a href="#g_t_005cfuturenonspacelet">\futurenonspacelet</a></li>
-<li><a href="#index-spaces_002c-obeying-1043">spaces, obeying</a>: <a href="#Obeying-spaces">Obeying spaces</a></li>
-<li><a href="#index-spaces_002c-trailing-and-indexing-commands-219">spaces, trailing and indexing commands</a>: <a href="#Indexing-terms">Indexing terms</a></li>
-<li><a href="#index-spacing_002c-preserving-with-hyperlinks-786">spacing, preserving with hyperlinks</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-rotation-467">rotation</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-rotation_002c-demo-1262">rotation, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-rule-thickness-47">rule thickness</a>: <a href="#Rules">Rules</a></li>
+<li><a href="#index-g_t_0040samp_007brun_003a_007d-links-548">`<samp><span class="samp">run:</span></samp>' links</a>: <a href="#General-hyperlinks">General hyperlinks</a></li>
+<li><a href="#index-scaling-468">scaling</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-scaling_002c-demo-1263">scaling, demo</a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-sed-341"><code>sed</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-see-also-index-entries-and-hyperlinks-654">see also index entries and hyperlinks</a>: <a href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a></li>
+<li><a href="#index-see-also-index-entries-and-sorting-330">see also index entries and sorting</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-see_002c-and-index-entries-337">see, and index entries</a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-see_002c-and-index-entries-261">see, and index entries</a>: <a href="#Modifying-index-entries">Modifying index entries</a></li>
+<li><a href="#index-see_002c-and-index-entries_002c-hyperlinks-655">see, and index entries, hyperlinks</a>: <a href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a></li>
+<li><a href="#index-silent-indexing-235">silent indexing</a>: <a href="#Indexing-terms">Indexing terms</a></li>
+<li><a href="#index-skipping-tokens-1196">skipping tokens</a>: <a href="#g_t_005cifempty">\ifempty</a></li>
+<li><a href="#index-skipping-tokens-1191">skipping tokens</a>: <a href="#g_t_005cifundefined">\ifundefined</a></li>
+<li><a href="#index-SLi_0040TeX_007b_007d-418">SLiTeX</a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-Snake-Lemma-1071">Snake Lemma</a>: <a href="#Arrows-and-morphisms">Arrows and morphisms</a></li>
+<li><a href="#index-solid-hyperlink-border-885">solid hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-sorting-an-index-225">sorting an index</a>: <a href="#Indexing">Indexing</a></li>
+<li><a href="#index-sorting-of-index-entries-251">sorting of index entries</a>: <a href="#Indexing-commands">Indexing commands</a></li>
+<li><a href="#index-soul_002esty-494"><code>soul.sty</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-space-above-index-entries-308">space above index entries</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-spaces_002c-ignoring-1206">spaces, ignoring</a>: <a href="#g_t_005cfuturenonspacelet">\futurenonspacelet</a></li>
+<li><a href="#index-spaces_002c-obeying-1209">spaces, obeying</a>: <a href="#Obeying-spaces">Obeying spaces</a></li>
+<li><a href="#index-spaces_002c-trailing-and-indexing-commands-238">spaces, trailing and indexing commands</a>: <a href="#Indexing-terms">Indexing terms</a></li>
+<li><a href="#index-spacing-out-496">spacing out</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-spacing_002c-preserving-with-hyperlinks-925">spacing, preserving with hyperlinks</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-special-characters_002c-in-index-entries-265">special characters, in index entries</a>: <a href="#Index-entries-with-special-characters">Index entries with special characters</a></li>
+<li><a href="#index-special-characters_002c-in-table-of-contents-172">special characters, in table of contents</a>: <a href="#Writing-the-_002etoc-file">Writing the .toc file</a></li>
<li><a href="#index-Stallman_002c-Richard-6">Stallman, Richard</a>: <a href="#Introduction">Introduction</a></li>
-<li><a href="#index-style_002c-hyperlink-border-753">style, hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-subequations_002c-referring-to-200">subequations, referring to</a>: <a href="#Subequation-references">Subequation references</a></li>
-<li><a href="#index-subterm-in-indexing-217">subterm in indexing</a>: <a href="#Indexing-terms">Indexing terms</a></li>
-<li><a href="#index-table-of-contents-151">table of contents</a>: <a href="#Contents">Contents</a></li>
-<li><a href="#index-table-of-contents_002c-hyperlinks-591">table of contents, hyperlinks</a>: <a href="#Contents-hyperlinks">Contents hyperlinks</a></li>
-<li><a href="#index-table-of-contents_002c-short-1015">table of contents, short</a>: <a href="#Macro-arguments">Macro arguments</a></li>
-<li><a href="#index-table-of-contents_002c-short-158">table of contents, short</a>: <a href="#Contents">Contents</a></li>
-<li><a href="#index-tables-321">tables</a>: <a href="#Tables">Tables</a></li>
-<li><a href="#index-tabs-1047">tabs</a>: <a href="#Obeying-spaces">Obeying spaces</a></li>
+<li><a href="#index-striking-out-498">striking out</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-style_002c-hyperlink-border-891">style, hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-subequations_002c-referring-to-219">subequations, referring to</a>: <a href="#Subequation-references">Subequation references</a></li>
+<li><a href="#index-subterm-in-indexing-236">subterm in indexing</a>: <a href="#Indexing-terms">Indexing terms</a></li>
+<li><a href="#index-supp_002dmis_002etex_0040r_007b_002c-problems-with-pdf_0040TeX_007b_007d_007d-474"><code>supp-mis.tex</code><span class="roman">, problems with pdfTeX</span></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-supp_002dpdf_002etex-475"><code>supp-pdf.tex</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-table-of-contents-162">table of contents</a>: <a href="#Contents">Contents</a></li>
+<li><a href="#index-table-of-contents_002c-and-verbatim-text-169">table of contents, and verbatim text</a>: <a href="#Writing-the-_002etoc-file">Writing the .toc file</a></li>
+<li><a href="#index-table-of-contents_002c-hyperlinks-671">table of contents, hyperlinks</a>: <a href="#Contents-hyperlinks">Contents hyperlinks</a></li>
+<li><a href="#index-table-of-contents_002c-short-1169">table of contents, short</a>: <a href="#Macro-arguments">Macro arguments</a></li>
+<li><a href="#index-table-of-contents_002c-short-175">table of contents, short</a>: <a href="#Reading-the-_002etoc-file">Reading the .toc file</a></li>
+<li><a href="#index-tables-351">tables</a>: <a href="#Tables">Tables</a></li>
+<li><a href="#index-tabs-1213">tabs</a>: <a href="#Obeying-spaces">Obeying spaces</a></li>
+<li><a href="#index-g_t_0040i_007b_0040TeX_007b_007d-by-Topic_007d-1163"><i>TeX by Topic</i></a>: <a href="#Iteration">Iteration</a></li>
+<li><a href="#index-g_t_0040TeX_007b_007d-Frequently-Asked-Question-1204">TeX Frequently Asked Question</a>: <a href="#g_t_005cifinteger-and-_005cisinteger">\ifinteger and \isinteger</a></li>
+<li><a href="#index-TEXFORMATS-23"><code>TEXFORMATS</code></a>: <a href="#Installation">Installation</a></li>
+<li><a href="#index-texi2dvi-230"><code>texi2dvi</code></a>: <a href="#Indexing">Indexing</a></li>
+<li><a href="#index-texi2dvi-74"><code>texi2dvi</code></a>: <a href="#Citations">Citations</a></li>
+<li><a href="#index-texi2dvi-32"><code>texi2dvi</code></a>: <a href="#Invoking-Eplain">Invoking Eplain</a></li>
<li><a href="#index-Texinfo-5">Texinfo</a>: <a href="#Introduction">Introduction</a></li>
-<li><a href="#index-time-of-day-100">time of day</a>: <a href="#Time-of-day">Time of day</a></li>
-<li><a href="#index-tracing-31">tracing</a>: <a href="#Diagnostics">Diagnostics</a></li>
-<li><a href="#index-trailing-spaces-and-indexing-commands-218">trailing spaces and indexing commands</a>: <a href="#Indexing-terms">Indexing terms</a></li>
-<li><a href="#index-triple-column-output-338">triple column output</a>: <a href="#Multiple-columns">Multiple columns</a></li>
-<li><a href="#index-Tu_002c-Loring-W_002e-929">Tu, Loring W.</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-type_002c-link-and-destination-458">type, link and destination</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
-<li><a href="#index-types_002c-destination_002c-_0040code_007bdvipdfm_007d-621">types, destination, <code>dvipdfm</code></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-types_002c-destination_002c-_0040code_007bpdftex_007d-620">types, destination, <code>pdftex</code></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
-<li><a href="#index-types_002c-link_002c-_0040code_007bdvipdfm_007d-695">types, link, <code>dvipdfm</code></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-types_002c-link_002c-_0040code_007bpdftex_007d-694">types, link, <code>pdftex</code></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-typesetting-an-index-261">typesetting an index</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
-<li><a href="#index-undefined-control-sequence_002c-checking-for-1038">undefined control sequence, checking for</a>: <a href="#g_t_005cifundefined">\ifundefined</a></li>
-<li><a href="#index-undefined-labels_002c-warnings-about-16">undefined labels, warnings about</a>: <a href="#Installation">Installation</a></li>
-<li><a href="#index-underline-hyperlink-border-751">underline hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-underlining-page-numbers-in-index-1065">underlining page numbers in index</a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
-<li><a href="#index-universal-mapping-property-932">universal mapping property</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-unordered-lists-110">unordered lists</a>: <a href="#Lists">Lists</a></li>
-<li><a href="#index-URL-for-_0040file_007bifpdf_002esty_007d-405">URL for <samp><span class="file">ifpdf.sty</span></samp></a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
-<li><a href="#index-URL-for-MakeIndex-207">URL for MakeIndex</a>: <a href="#Indexing">Indexing</a></li>
-<li><a href="#index-URL-for-_0040file_007bpath_002esty_007d-372">URL for <samp><span class="file">path.sty</span></samp></a>: <a href="#Paths">Paths</a></li>
-<li><a href="#index-URL-for-pdf_0040TeX_007b_007d-399">URL for pdfTeX</a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
-<li><a href="#index-URL-for-_0040file_007btexnames_002esty_007d-390">URL for <samp><span class="file">texnames.sty</span></samp></a>: <a href="#Logos">Logos</a></li>
-<li><a href="#index-URL-hyperlink-722">URL hyperlink</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
-<li><a href="#index-URL-hyperlink-475">URL hyperlink</a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
-<li><a href="#index-user_002dinaccessible-macros-977">user-inaccessible macros</a>: <a href="#Category-codes">Category codes</a></li>
-<li><a href="#index-vectors-876">vectors</a>: <a href="#Slanted-lines-and-vectors">Slanted lines and vectors</a></li>
-<li><a href="#index-verbatim-listing-141">verbatim listing</a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-TEXINPUTS-17"><code>TEXINPUTS</code></a>: <a href="#Installation">Installation</a></li>
+<li><a href="#index-time-of-day-106">time of day</a>: <a href="#Time-of-day">Time of day</a></li>
+<li><a href="#index-g_t_0040code_007btoc_007d-files_002c-writing-several-180"><code>toc</code> files, writing several</a>: <a href="#Changing-the-_002etoc-file_0027s-root-name">Changing the .toc file's root name</a></li>
+<li><a href="#index-tracing-37">tracing</a>: <a href="#Diagnostics">Diagnostics</a></li>
+<li><a href="#index-trailing-spaces-and-indexing-commands-237">trailing spaces and indexing commands</a>: <a href="#Indexing-terms">Indexing terms</a></li>
+<li><a href="#index-trimsee-342"><code>trimsee</code></a>: <a href="#Customizing-indexing">Customizing indexing</a></li>
+<li><a href="#index-triple-column-output-368">triple column output</a>: <a href="#Multiple-columns">Multiple columns</a></li>
+<li><a href="#index-Tu_002c-Loring-W_002e-1075">Tu, Loring W.</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-g_t_0040i_007bTUGboat_007d-12"><i>TUGboat</i></a>: <a href="#Introduction">Introduction</a></li>
+<li><a href="#index-type_002c-link-and-destination-523">type, link and destination</a>: <a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a></li>
+<li><a href="#index-types_002c-destination_002c-_0040code_007bdvipdfm_007d-758">types, destination, <code>dvipdfm</code></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-types_002c-destination_002c-_0040code_007bhypertex_007d-708">types, destination, <code>hypertex</code></a>: <a href="#Destination-types-for-hypertex">Destination types for hypertex</a></li>
+<li><a href="#index-types_002c-destination_002c-_0040code_007bpdftex_007d-757">types, destination, <code>pdftex</code></a>: <a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a></li>
+<li><a href="#index-types_002c-link_002c-_0040code_007bdvipdfm_007d-832">types, link, <code>dvipdfm</code></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-types_002c-link_002c-_0040code_007bhypertex_007d-720">types, link, <code>hypertex</code></a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-types_002c-link_002c-_0040code_007bpdftex_007d-831">types, link, <code>pdftex</code></a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-typesetting-an-index-291">typesetting an index</a>: <a href="#Typesetting-an-index">Typesetting an index</a></li>
+<li><a href="#index-undefined-control-sequence_002c-checking-for-1192">undefined control sequence, checking for</a>: <a href="#g_t_005cifundefined">\ifundefined</a></li>
+<li><a href="#index-undefined-labels_002c-warnings-about-22">undefined labels, warnings about</a>: <a href="#Installation">Installation</a></li>
+<li><a href="#index-underline-hyperlink-border-889">underline hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-underlining-497">underlining</a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-underlining-page-numbers-in-index-1231">underlining page numbers in index</a>: <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a></li>
+<li><a href="#index-universal-mapping-property-1078">universal mapping property</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-unordered-lists-116">unordered lists</a>: <a href="#Lists">Lists</a></li>
+<li><a href="#index-upgrading-16">upgrading</a>: <a href="#Installation">Installation</a></li>
+<li><a href="#index-g_t_0040acronym_007bURL_007d-for-_0040file_007bifpdf_002esty_007d-435"><acronym>URL</acronym> for <samp><span class="file">ifpdf.sty</span></samp></a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
+<li><a href="#index-g_t_0040acronym_007bURL_007d-for-MakeIndex-226"><acronym>URL</acronym> for MakeIndex</a>: <a href="#Indexing">Indexing</a></li>
+<li><a href="#index-g_t_0040acronym_007bURL_007d-for-_0040file_007bpath_002esty_007d-402"><acronym>URL</acronym> for <samp><span class="file">path.sty</span></samp></a>: <a href="#Paths">Paths</a></li>
+<li><a href="#index-g_t_0040acronym_007bURL_007d-for-pdf_0040TeX_007b_007d-429"><acronym>URL</acronym> for pdfTeX</a>: <a href="#Checking-for-PDF-output">Checking for PDF output</a></li>
+<li><a href="#index-g_t_0040acronym_007bURL_007d-for-_0040file_007btexnames_002esty_007d-420"><acronym>URL</acronym> for <samp><span class="file">texnames.sty</span></samp></a>: <a href="#Logos">Logos</a></li>
+<li><a href="#index-g_t_0040acronym_007bURL_007d-hyperlink-840"><acronym>URL</acronym> hyperlink</a>: <a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a></li>
+<li><a href="#index-g_t_0040acronym_007bURL_007d-hyperlink-727"><acronym>URL</acronym> hyperlink</a>: <a href="#Link-types-for-hypertex">Link types for hypertex</a></li>
+<li><a href="#index-g_t_0040acronym_007bURL_007d-hyperlink-549"><acronym>URL</acronym> hyperlink</a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
+<li><a href="#index-g_t_0040acronym_007bURL_007d-hyperlink-543"><acronym>URL</acronym> hyperlink</a>: <a href="#General-hyperlinks">General hyperlinks</a></li>
+<li><a href="#index-url_002esty-1266"><code>url.sty</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-url_002esty-554"><code>url.sty</code></a>: <a href="#URL-hyperlinks">URL hyperlinks</a></li>
+<li><a href="#index-url_002esty-501"><code>url.sty</code></a>: <a href="#Packages-known-to-work">Packages known to work</a></li>
+<li><a href="#index-user_002dinaccessible-macros-1123">user-inaccessible macros</a>: <a href="#Category-codes">Category codes</a></li>
+<li><a href="#index-vectors-1022">vectors</a>: <a href="#Slanted-lines-and-vectors">Slanted lines and vectors</a></li>
+<li><a href="#index-verbatim-listing-147">verbatim listing</a>: <a href="#Verbatim-listing">Verbatim listing</a></li>
+<li><a href="#index-verbatim-listing_002c-demo-1272">verbatim listing, demo</a>: <a href="#Highlighting-TeX-comments-in-listings-_0028lscommnt_002etex_0029">Highlighting TeX comments in listings (lscommnt.tex)</a></li>
+<li><a href="#index-verbatim-text_002c-in-index-269">verbatim text, in index</a>: <a href="#Index-entries-with-special-characters">Index entries with special characters</a></li>
+<li><a href="#index-verbatim-text_002c-in-table-of-contents-171">verbatim text, in table of contents</a>: <a href="#Writing-the-_002etoc-file">Writing the .toc file</a></li>
<li><a href="#index-version-number-9">version number</a>: <a href="#Introduction">Introduction</a></li>
-<li><a href="#index-Warner_002c-Frank-W_002e-931">Warner, Frank W.</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-whatsits-made-by-index-entries-234">whatsits made by index entries</a>: <a href="#Indexing-commands">Indexing commands</a></li>
-<li><a href="#index-whatsits_002c-made-by-hyperlinks-792">whatsits, made by hyperlinks</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
-<li><a href="#index-whitespace-1042">whitespace</a>: <a href="#Obeying-spaces">Obeying spaces</a></li>
-<li><a href="#index-width_002c-hyperlink-border-757">width, hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
-<li><a href="#index-Zassenhaus_002c-Hans-946">Zassenhaus, Hans</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
-<li><a href="#index-zooming_002c-hyperlink-destination-662">zooming, hyperlink destination</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
- </ul>
-<div class="contents">
-<h2>Table of Contents</h2>
-<ul>
-<li><a name="toc_Top" href="#Top">Eplain</a>
-<li><a name="toc_Introduction" href="#Introduction">1 Introduction</a>
-<li><a name="toc_Installation" href="#Installation">2 Installation</a>
-<li><a name="toc_Invoking-Eplain" href="#Invoking-Eplain">3 Invoking Eplain</a>
-<li><a name="toc_User-definitions" href="#User-definitions">4 User definitions</a>
-<ul>
-<li><a href="#Diagnostics">4.1 Diagnostics</a>
-<li><a href="#Rules">4.2 Rules</a>
-<li><a href="#Citations">4.3 Citations</a>
-<ul>
-<li><a href="#Formatting-citations">4.3.1 Formatting citations</a>
-<li><a href="#Formatting-bibliographies">4.3.2 Formatting bibliographies</a>
-</li></ul>
-<li><a href="#Displays">4.4 Displays</a>
-<ul>
-<li><a href="#Formatting-displays">4.4.1 Formatting displays</a>
-</li></ul>
-<li><a href="#Time-of-day">4.5 Time of day</a>
-<li><a href="#Lists">4.6 Lists</a>
-<ul>
-<li><a href="#Formatting-lists">4.6.1 Formatting lists</a>
-</li></ul>
-<li><a href="#Verbatim-listing">4.7 Verbatim listing</a>
-<li><a href="#Contents">4.8 Contents</a>
-<li><a href="#Cross_002dreferences">4.9 Cross-references</a>
-<ul>
-<li><a href="#Defining-generic-references">4.9.1 Defining generic references</a>
-<li><a href="#Using-generic-references">4.9.2 Using generic references</a>
-</li></ul>
-<li><a href="#Page-references">4.10 Page references</a>
-<li><a href="#Equation-references">4.11 Equation references</a>
-<ul>
-<li><a href="#Formatting-equation-references">4.11.1 Formatting equation references</a>
-<li><a href="#Subequation-references">4.11.2 Subequation references</a>
-</li></ul>
-<li><a href="#Indexing">4.12 Indexing</a>
-<ul>
-<li><a href="#Indexing-terms">4.12.1 Indexing terms</a>
-<ul>
-<li><a href="#Indexing-commands">4.12.1.1 Indexing commands</a>
-<li><a href="#Modifying-index-entries">4.12.1.2 Modifying index entries</a>
-<li><a href="#Proofing-index-terms">4.12.1.3 Proofing index terms</a>
-</li></ul>
-<li><a href="#Typesetting-an-index">4.12.2 Typesetting an index</a>
-<li><a href="#Customizing-indexing">4.12.3 Customizing indexing</a>
-</li></ul>
-<li><a href="#Justification">4.13 Justification</a>
-<li><a href="#Tables">4.14 Tables</a>
-<li><a href="#Margins">4.15 Margins</a>
-<li><a href="#Multiple-columns">4.16 Multiple columns</a>
-<li><a href="#Footnotes">4.17 Footnotes</a>
-<li><a href="#Fractions">4.18 Fractions</a>
-<li><a href="#Paths">4.19 Paths</a>
-<li><a href="#Logos">4.20 Logos</a>
-<li><a href="#Boxes">4.21 Boxes</a>
-<li><a href="#Checking-for-PDF-output">4.22 Checking for PDF output</a>
-<li><a href="#Loading-LaTeX-packages">4.23 Loading LaTeX packages</a>
-<ul>
-<li><a href="#The-_005cusepackage-command">4.23.1 The <code>\usepackage</code> command</a>
-<li><a href="#Environment-for-loading-packages">4.23.2 Environment for loading packages</a>
-<li><a href="#Packages-known-to-work">4.23.3 Packages known to work</a>
-<li><a href="#Packages-known-not-to-work">4.23.4 Packages known not to work</a>
-</li></ul>
-</li></ul>
-<li><a name="toc_Hyperlinks" href="#Hyperlinks">5 Hyperlinks</a>
-<ul>
-<li><a href="#Introduction-to-hyperlinks">5.1 Introduction to hyperlinks</a>
-<li><a href="#Explicit-hyperlinks">5.2 Explicit hyperlinks</a>
-<li><a href="#Implicit-hyperlinks">5.3 Implicit hyperlinks</a>
-<ul>
-<li><a href="#URL-hyperlinks">5.3.1 URL hyperlinks: url</a>
-<li><a href="#Citation-hyperlinks">5.3.2 Citation hyperlinks: cite, bib</a>
-<li><a href="#List-hyperlinks">5.3.3 List hyperlinks: li</a>
-<li><a href="#Cross_002dreference-hyperlinks">5.3.4 Cross-reference hyperlinks: definexref, ref</a>
-<li><a href="#Page-reference-hyperlinks">5.3.5 Page reference hyperlinks: xrdef, xref</a>
-<li><a href="#Equation-reference-hyperlinks">5.3.6 Equation reference hyperlinks: eq</a>
-<li><a href="#Index-hyperlinks">5.3.7 Index hyperlinks: idx</a>
-<ul>
-<li><a href="#Exact-destinations-for-index-terms">5.3.7.1 Exact destinations for index terms</a>
-<li><a href="#Page-destinations-for-index-terms">5.3.7.2 Page destinations for index terms</a>
-<li><a href="#Choosing-destination-placement">5.3.7.3 Choosing destination placement</a>
-<li><a href="#Index-page-list-and-page-range-parsers">5.3.7.4 Index page list and page range parsers</a>
-<li><a href="#Hyperlinks-in-see-and-see-also-entries">5.3.7.5 Hyperlinks in see and see also entries</a>
-</li></ul>
-<li><a href="#Footnote-hyperlinks">5.3.8 Footnote hyperlinks: foot, footback</a>
-<li><a href="#Contents-hyperlinks">5.3.9 Contents hyperlinks</a>
-</li></ul>
-<li><a href="#Hyperlink-drivers">5.4 Hyperlink drivers</a>
-<ul>
-<li><a href="#Options-supported-by-all-drivers">5.4.1 Options supported by all drivers</a>
-<li><a href="#Hyperlink-drivers-pdftex-and-dvipdfm">5.4.2 Hyperlink drivers <code>pdftex</code> and <code>dvipdfm</code></a>
-<ul>
-<li><a href="#Destination-types-for-pdftex-and-dvipdfm">5.4.2.1 Destination types for <code>pdftex</code> and <code>dvipdfm</code></a>
-<li><a href="#Destination-options-for-pdftex-and-dvipdfm">5.4.2.2 Destination options for <code>pdftex</code> and <code>dvipdfm</code></a>
-<li><a href="#Link-types-for-pdftex-and-dvipdfm">5.4.2.3 Link types for <code>pdftex</code> and <code>dvipdfm</code></a>
-<li><a href="#Link-options-for-pdftex-and-dvipdfm">5.4.2.4 Link options for <code>pdftex</code> and <code>dvipdfm</code></a>
-</li></ul>
-<li><a href="#Hyperlink-driver-nolinks">5.4.3 Hyperlink driver <code>nolinks</code></a>
-</li></ul>
-<li><a href="#Setting-hyperlink-types-and-options">5.5 Setting hyperlink types and options</a>
-<ul>
-<li><a href="#Setting-default-types-and-options">5.5.1 Setting default types and options</a>
-<li><a href="#Setting-group-types">5.5.2 Setting group types</a>
-<li><a href="#Setting-group-options">5.5.3 Setting group options</a>
-</li></ul>
-<li><a href="#Turning-hyperlinks-on_002foff">5.6 Turning hyperlinks on/off</a>
-<ul>
-<li><a href="#Turning-low_002dlevel-commands-on_002foff">5.6.1 Turning low-level commands on/off</a>
-<li><a href="#Turning-hyperlinks-on_002foff-for-a-group">5.6.2 Turning hyperlinks on/off for a group</a>
-</li></ul>
-</li></ul>
-<li><a name="toc_Arrow-theoretic-diagrams" href="#Arrow-theoretic-diagrams">6 Arrow theoretic diagrams</a>
-<ul>
-<li><a href="#Slanted-lines-and-vectors">6.1 Slanted lines and vectors</a>
-<li><a href="#Commutative-diagrams">6.2 Commutative diagrams</a>
-<ul>
-<li><a href="#Arrows-and-morphisms">6.2.1 Arrows and morphisms</a>
-<li><a href="#Construction-of-commutative-diagrams">6.2.2 Construction of commutative diagrams</a>
-<li><a href="#Commutative-diagram-parameters">6.2.3 Commutative diagram parameters</a>
-</li></ul>
-</li></ul>
-<li><a name="toc_Programming-definitions" href="#Programming-definitions">7 Programming definitions</a>
-<ul>
-<li><a href="#Category-codes">7.1 Category codes</a>
-<li><a href="#Allocation-macros">7.2 Allocation macros</a>
-<li><a href="#Iteration">7.3 Iteration</a>
-<li><a href="#Macro-arguments">7.4 Macro arguments</a>
-<li><a href="#Converting-to-characters">7.5 Converting to characters</a>
-<li><a href="#Expansion">7.6 Expansion</a>
-<ul>
-<li><a href="#_005ccsn-and-_005cece">7.6.1 <code>\csn</code> and <code>\ece</code></a>
-<li><a href="#_005cedefappend">7.6.2 <code>\edefappend</code></a>
-<li><a href="#Hooks">7.6.3 Hooks</a>
-<li><a href="#Properties">7.6.4 Properties</a>
-<li><a href="#_005cexpandonce">7.6.5 <code>\expandonce</code></a>
-<li><a href="#_005cifundefined">7.6.6 <code>\ifundefined</code></a>
-<li><a href="#_005cfuturenonspacelet">7.6.7 <code>\futurenonspacelet</code></a>
-</li></ul>
-<li><a href="#Obeying-spaces">7.7 Obeying spaces</a>
-<li><a href="#Writing-out-numbers">7.8 Writing out numbers</a>
-<li><a href="#Mode_002dspecific-penalties">7.9 Mode-specific penalties</a>
-<li><a href="#Auxiliary-files">7.10 Auxiliary files</a>
-<li><a href="#User_002ddefined-environments">7.11 User-defined environments</a>
-<li><a href="#Page-list-and-page-range-parsers">7.12 Page list and page range parsers</a>
-</li></ul>
-<li><a name="toc_Macro-index" href="#Macro-index">Macro index</a>
-<li><a name="toc_Concept-index" href="#Concept-index">Concept index</a>
-</li></ul>
-</div>
-
-</body></html>
+<li><a href="#index-Walden_002c-David-11">Walden, David</a>: <a href="#Introduction">Introduction</a></li>
+<li><a href="#index-Warner_002c-Frank-W_002e-1077">Warner, Frank W.</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-whatsits-made-by-hyperlinks-931">whatsits made by hyperlinks</a>: <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a></li>
+<li><a href="#index-whatsits-made-by-index-entries-253">whatsits made by index entries</a>: <a href="#Indexing-commands">Indexing commands</a></li>
+<li><a href="#index-while-loops-1156">while loops</a>: <a href="#Iteration">Iteration</a></li>
+<li><a href="#index-whitespace-1208">whitespace</a>: <a href="#Obeying-spaces">Obeying spaces</a></li>
+<li><a href="#index-width_002c-hyperlink-border-895">width, hyperlink border</a>: <a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a></li>
+<li><a href="#index-writing-several-_0040code_007btoc_007d-files-179">writing several <code>toc</code> files</a>: <a href="#Changing-the-_002etoc-file_0027s-root-name">Changing the .toc file's root name</a></li>
+<li><a href="#index-xcolor_002esty-509"><code>xcolor.sty</code></a>: <a href="#Packages-known-not-to-work">Packages known not to work</a></li>
+<li><a href="#index-xdvi-698"><code>xdvi</code></a>: <a href="#Hyperlink-driver-hypertex">Hyperlink driver hypertex</a></li>
+<li><a href="#index-xeplain_002etex-2"><code>xeplain.tex</code></a>: <a href="#Introduction">Introduction</a></li>
+<li><a href="#index-xhyper_002etex-1236"><code>xhyper.tex</code></a>: <a href="#Hyperlinks-_0028xhyper_002etex_0029">Hyperlinks (xhyper.tex)</a></li>
+<li><a href="#index-Zassenhaus_002c-Hans-1092">Zassenhaus, Hans</a>: <a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a></li>
+<li><a href="#index-zooming_002c-hyperlink-destination-799">zooming, hyperlink destination</a>: <a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a></li>
+ </ul></body></html>
diff --git a/Master/texmf-dist/doc/eplain/doc/eplain.info b/Master/texmf-dist/doc/eplain/doc/eplain.info
new file mode 100644
index 00000000000..aa7dd6bbd4e
--- /dev/null
+++ b/Master/texmf-dist/doc/eplain/doc/eplain.info
@@ -0,0 +1,7863 @@
+This is eplain.info, produced by makeinfo version 4.8 from eplain.texi.
+
+ This manual documents the Eplain macros, version 3.1, December 2006.
+Eplain provides functionality for plain TeX that is intended to be
+useful regardless of how your document is actually formatted.
+
+ Most of this manual is in the public domain, like most of the Eplain
+code. It was mostly written by Karl Berry, starting in 1989. Steven
+Smith wrote the documentation for the commutative diagram macros; this
+chapter is under the GNU General Public License. Adam Lewenberg has
+made additions and corrections. Oleg Katsitadze has helped with writing
+the section on LaTeX packages and the chapter on hyperlinks.
+
+INFO-DIR-SECTION Texinfo documentation system
+START-INFO-DIR-ENTRY
+* Eplain: (eplain). Expanding on plain Tex.
+END-INFO-DIR-ENTRY
+
+
+File: eplain.info, Node: Top, Next: Introduction, Up: (dir)
+
+Eplain
+******
+
+This manual documents the Eplain macros, version 3.1, December 2006.
+Eplain provides functionality for plain TeX that is intended to be
+useful regardless of how your document is actually formatted.
+
+ Most of this manual is in the public domain, like most of the Eplain
+code. It was mostly written by Karl Berry, starting in 1989. Steven
+Smith wrote the documentation for the commutative diagram macros; this
+chapter is under the GNU General Public License. Adam Lewenberg has
+made additions and corrections. Oleg Katsitadze has helped with writing
+the section on LaTeX packages and the chapter on hyperlinks.
+
+* Menu:
+
+* Introduction:: Eplain's purpose and philosophy.
+* Installation:: Installing Eplain.
+* Invoking Eplain:: Using Eplain from a TeX file.
+* User definitions:: Macros to be used in a document.
+* Hyperlinks:: Producing documents with hyperlinks.
+* Arrow theoretic diagrams:: Macros for commutative diagrams.
+* Programming definitions:: Macros to be used in writing other macros.
+* Demo files:: Sample documents demonstrating Eplain.
+* Macro index:: Entries for TeX and Eplain control sequences.
+* Concept index:: General index.
+
+ --- The Detailed Node Listing ---
+
+User definitions
+
+* Diagnostics:: Tracing information.
+* Rules:: Changing the default rule dimensions.
+* Citations:: Using BibTeX and Eplain to make bibliographies.
+* Displays:: Changing the formatting of math displays.
+* Time of day:: Producing the time of day.
+* Lists:: Producing numbered and unordered lists.
+* Verbatim listing:: Producing text just as it appears.
+* Contents:: Making a table of contents.
+* Cross-references:: Symbolically referring to pages or equations.
+* Page references:: Symbolic references to page numbers.
+* Equation references:: Symbolic references to equation numbers.
+* Indexing:: Creating and typesetting indexes.
+* Justification:: Left- or right-justification, or centering.
+* Tables:: Producing ordered tables.
+* Margins:: Changing the margins directly.
+* Multiple columns:: Getting output in two columns.
+* Footnotes:: Autonumbered footnotes; changing formatting.
+* Fractions:: A better way to produce fractions in text.
+* Paths:: Allowing line breaks in pathnames.
+* Logos:: Various logos.
+* Boxes:: Producing filled or open rectangles.
+* Checking for PDF output:: Checking for pdfTeX in PDF mode.
+* Loading LaTeX packages:: Support for LaTeX packages under plain TeX.
+
+Citations
+
+* Formatting citations:: Changing the way citations are printed.
+* Formatting bibliographies:: Changing the way bibliographies are printed.
+
+Displays
+
+* Formatting displays:: General formatting of displays.
+
+Lists
+
+* Formatting lists:: Changing how the lists look.
+
+Contents
+
+* Writing the .toc file::
+* Reading the .toc file::
+* Changing the .toc file's root name::
+* Alternative contents files::
+
+Cross-references
+
+* Defining generic references::
+* Using generic references::
+
+Equation references
+
+* Formatting equation references::
+* Subequation references::
+
+Indexing
+
+* Indexing terms:: Specifying what to index.
+* Typesetting an index:: Printing the sorted output.
+* Customizing indexing:: Creating commands and specifying extra actions.
+
+Indexing terms
+
+* Indexing commands:: Making index entries.
+* Modifying index entries:: Ranges, see/see also, page number typesetting.
+* Index entries with special characters::
+* Proofing index terms:: Noting index entries in the margins.
+
+Loading LaTeX packages
+
+* The \usepackage command:: Command to load packages.
+* Environment for loading packages:: Environment for the \usepackage commands.
+* Packages known to work:: Supported packages.
+* Packages known not to work:: Packages known not to work with Eplain.
+
+Hyperlinks
+
+* Introduction to hyperlinks::
+* Explicit hyperlinks::
+* Implicit hyperlinks::
+* Hyperlink drivers::
+* Setting hyperlink types and options::
+* Turning hyperlinks on/off::
+
+Implicit hyperlinks
+
+* General hyperlinks:: hrefint, hrefext
+* URL hyperlinks:: url
+* Citation hyperlinks:: cite, bib
+* List hyperlinks:: li
+* Cross-reference hyperlinks:: definexref, ref
+* Page reference hyperlinks:: xrdef, xref
+* Equation reference hyperlinks:: eq
+* Index hyperlinks:: idx
+* Footnote hyperlinks:: foot, footback
+* Contents hyperlinks::
+
+Index hyperlinks
+
+* Exact destinations for index terms::
+* Page destinations for index terms::
+* Choosing destination placement::
+* Index page list and page range parsers::
+* Hyperlinks in see and see also entries::
+
+Hyperlink drivers
+
+* Options supported by all drivers::
+* Hyperlink driver hypertex::
+* Hyperlink drivers pdftex and dvipdfm::
+* Hyperlink driver nolinks::
+
+Hyperlink driver hypertex::
+
+* Destination types for hypertex::
+* Destination options for hypertex::
+* Link types for hypertex::
+* Link options for hypertex::
+
+Hyperlink drivers pdftex and dvipdfm::
+
+* Destination types for pdftex and dvipdfm::
+* Destination options for pdftex and dvipdfm::
+* Link types for pdftex and dvipdfm::
+* Link options for pdftex and dvipdfm::
+
+Setting hyperlink types and options
+
+* Setting default types and options::
+* Setting group types::
+* Setting group options::
+
+Turning hyperlinks on/off
+
+* Turning low-level commands on/off::
+* Turning hyperlinks on/off for a group::
+
+Arrow theoretic diagrams
+
+* Slanted lines and vectors::
+* Commutative diagrams::
+
+Commutative diagrams
+
+* Arrows and morphisms::
+* Construction of commutative diagrams::
+* Commutative diagram parameters::
+
+Programming definitions
+
+* Category codes:: Changing category codes.
+* Allocation macros:: Non-outer versions of \newcount et al.
+* Iteration:: Doing `for' and `while' loops in TeX.
+* Macro arguments:: Reading and ignoring them.
+* Converting to characters:: Normalizing control sequences and spaces.
+* Expansion:: Controlling expansion.
+* Obeying spaces:: Making whitespace count anywhere.
+* Writing out numbers:: Making `1' into `one'.
+* Mode-specific penalties::
+* Auxiliary files:: Testing for their existence.
+* User-defined environments:: User-defined environments.
+* Page list and page range parsers::
+
+Expansion
+
+* \csn and \ece::
+* \edefappend::
+* Hooks:: Manipulating and executing named actions.
+* Properties:: Associating information with a csname.
+* \expandonce::
+* \ifundefined::
+* \ifempty::
+* \ifinteger and \isinteger::
+* \futurenonspacelet::
+
+Demo files
+
+* Hyperlinks (xhyper.tex)::
+* Highlighting TeX comments in listings (lscommnt.tex)::
+
+
+File: eplain.info, Node: Introduction, Next: Installation, Prev: Top, Up: Top
+
+1 Introduction
+**************
+
+The "Eplain" macro package expands on and extends the definitions in
+plain TeX. This manual describes the definitions that you, as either
+an author or a macro writer, might like to use. It doesn't discuss the
+implementation; see comments in the source code (`xeplain.tex') for
+that.
+
+ Eplain is not intended to provide "generic" typesetting
+capabilities, as do LaTeX (written by Leslie Lamport) or Texinfo (written
+by Richard Stallman and others). Instead, it provides definitions that
+are intended to be useful regardless of the high-level commands that
+you use when you actually prepare your manuscript.
+
+ For example, Eplain does not have a command `\section', which would
+format section headings in an "appropriate" way, such as LaTeX's
+`\section'. The philosophy of Eplain is that some people will always
+need or want to go beyond the macro designer's idea of "appropriate".
+Such canned macros are fine--as long as you are willing to accept the
+resulting output. If you don't like the results, or if you are trying
+to match a different format, you are out of luck.
+
+ On the other hand, almost everyone would like capabilities such as
+cross-referencing by labels, so that you don't have to put actual page
+numbers in the manuscript. The author of Eplain is not aware of any
+generally available macro packages that (1) do not force their
+typographic style on an author, and yet (2) provide such capabilities.
+
+ Besides such generic macros as cross-referencing, Eplain contains
+another set of definitions: ones that change the conventions of plain
+TeX's output. For example, math displays in TeX are, by default,
+centered. If you want your displays to come out left-justified, you
+have to plow through `The TeXbook' to find some way to do it, and then
+adapt the code to your own needs. Eplain tries to take care of the
+messy details of such things, while still leaving the detailed
+appearance of the output up to you.
+
+ Finally, numerous definitions turned out to be useful as Eplain was
+developed. They are also documented in this manual, on the chance that
+people writing other macros will be able to use them.
+
+ You can send bug reports or suggestions to <tex-eplain@tug.org>.
+The current version number of Eplain is defined as the macro
+`\fmtversion' at the end of the source file `eplain.tex'. When
+corresponding, please refer to it.
+
+ To get on this mailing list yourself, email
+<tex-eplain-request@tug.org> with a message whose body contains a line
+
+ subscribe YOU@YOUR.PREFERRED.ADDRESS
+
+or visit `http://tug.org/mailman/listinfo/tex-eplain'.
+
+ David Walden had reported his experience with Eplain as a new user.
+The article is available online at
+`http://tug.org/pracjourn/2005-4/walden'. An introductory article
+(written for TUGboat) is also available online at
+`http://tug.org/eplain/misc/tb84katsi.pdf'.
+
+
+File: eplain.info, Node: Installation, Next: Invoking Eplain, Prev: Introduction, Up: Top
+
+2 Installation
+**************
+
+Your TeX installation should already contain a version of Eplain
+(`eplain.tex') in its main `texmf' tree (usually under
+`/usr/share/texmf/tex/eplain/' on Unix systems). To install a newer
+version of Eplain, put the new `eplain.tex' (included in Eplain
+distributions) in the `tex/eplain/' subdirectory of your local `texmf'
+tree. The newer version you install in the local tree should override
+the older one in the main tree.
+
+ The location of the local `texmf' tree obviously depends on your
+operating system and TeX installation. On Unix systems the usual
+location is `/usr/local/share/texmf/'. If you don't have write
+permissions for `/usr/local/share/texmf/', many installations read the
+`texmf' tree in the user's home directory; `eplain.tex' then should go
+under `~/texmf/tex/eplain/'. For more information about TeX directory
+structure, please see
+`http://www.tex.ac.uk/cgi-bin/texfaq2html?label=tds'.
+
+ If you prefer to install `eplain.tex' in a non-standard place, set
+an environment variable (`TEXINPUTS' for the Web2C port of TeX to Unix)
+to tell TeX how to find it.
+
+ If you want, you can also create a format (`.fmt') file for Eplain,
+which will eliminate the time spent reading the macro source file with
+`\input'. You do this by issuing a sequence of Unix commands something
+like this:
+
+ prompt$ touch eplain.aux
+ prompt$ initex
+ This is TeX, ...
+ **&plain eplain
+ (eplain.tex)
+ *\dump
+ ... MESSAGES ...
+
+You must make sure that `eplain.aux' exists _before_ you run `initex';
+otherwise, warning messages about undefined labels will never be issued.
+
+ You then have to install the resulting `eplain.fmt' in your local
+`texmf' tree or set an environment variable to tell TeX how to find it.
+For the Web2C port of TeX to Unix, format files are usually installed
+under `/usr/local/share/texmf/web2c/' or `/var/lib/texmf/web2c/'; the
+environment variable is `TEXFORMATS'.
+
+
+File: eplain.info, Node: Invoking Eplain, Next: User definitions, Prev: Installation, Up: Top
+
+3 Invoking Eplain
+*****************
+
+The simplest way to use Eplain is simply to put:
+
+ \input eplain
+
+at the beginning of your input file. The macro file is small enough
+that reading it does not take an unbearably long time--at least on
+contemporary machines.
+
+ In addition, if a format (`.fmt') file has been created for Eplain
+(see the previous section), you can eliminate the time spent reading
+the macro source file. You do this by responding `&eplain' to TeX's
+`**' prompt. For example:
+
+ initex
+ This is TeX, ...
+ **&eplain myfile
+
+ Depending on the implementation of TeX which you are using, you might
+also be able to invoke TeX as `eplain' and have the format file
+automatically read.
+
+ If you write something which you will be distributing to others, you
+won't know if the Eplain format will be loaded already. If it is, then
+doing `\input eplain' will waste time; if it isn't, then you must load
+it. To solve this, Eplain defines the control sequence `\eplain' to be
+the letter `t' (a convention borrowed from Lisp; it doesn't actually
+matter what the definition is, only that the definition exists).
+Therefore, you can do the following:
+
+ \ifx\eplain\undefined \input eplain \fi
+
+where `\undefined' must never acquire a definition.
+
+ Eplain consists of several source files:
+`xeplain.tex'
+ most of the macros;
+
+`arrow.tex'
+ commutative diagram macros (*note Arrow theoretic diagrams::),
+ written by Steven Smith;
+
+`btxmac.tex'
+ bibliography-related macros (*note Citations::);
+
+`ifpdf.sty'
+ sets the switch `\ifpdf', which can be used to detect pdfTeX in
+ PDF mode (*note Checking for PDF output::), written by Heiko
+ Oberdiek;
+
+`path.sty'
+ macro for allowing line breaks at punctuation characters within
+ long pathnames, electronic mail addresses, etc., (*note Paths::),
+ written by Philip Taylor;
+
+`texnames.sty'
+ abbreviations for various TeX-related names (*note Logos::), edited
+ by Nelson Beebe.
+
+
+The file `eplain.tex' is all of these files merged together, with
+comments removed.
+
+ All of these files except `xeplain.tex' can be input individually,
+if all you want are the definitions in that file.
+
+ Also, since the bibliography macros are fairly extensive, you might
+not want to load them, to conserve TeX's memory. Therefore, if the
+control sequence `\nobibtex' is defined, then the bibliography
+definitions are skipped. You must set `\nobibtex' before `eplain.tex'
+is read, naturally. For example, you could start your input file like
+this:
+
+ \let\nobibtex = t
+ \input eplain
+
+By default, `\nobibtex' is undefined, and so the bibliography
+definitions _are_ made.
+
+ Likewise, define `\noarrow' if you don't want to include the
+commutative diagram macros from `arrow.tex', perhaps because you
+already have conflicting ones.
+
+ If you don't want to read or write an `aux' file at all, for any
+kind of cross-referencing, define `\noauxfile' before reading
+`eplain.tex'. This also turns off all warnings about undefined labels.
+
+ Eplain conflicts with AMSTeX (to be precise, with `amsppt.sty'): the
+macros `\cite' and `\ref' are defined by both.
+
+ If you want to use AMSTeX's `\cite', the solution is to define
+`\nobibtex' before reading Eplain, as described above.
+
+ If you have `amsppt.sty' loaded and use `\ref', Eplain writes a
+warning on your terminal. If you want to use the AMSTeX `\ref', do
+`\let\ref = \amsref' after reading Eplain. To avoid the warning, do
+`\let\ref = \eplainref' after reading Eplain and before using `\ref'.
+
+ Sometimes you may need to run TeX more then once on your `.tex' file
+in order to produce and typeset indexes, resolve undefined
+cross-references and/or citations. The shell script `texi2dvi' from
+the Texinfo documentation system (see
+`http://www.gnu.org/software/texinfo') can automate this process: it
+runs BibTeX, MakeIndex and TeX as many times as needed to complete the
+compilation process. You will need to set the `LATEX' environment
+variable to `tex'. For example, in a Bourne-compatible shell, the
+following command will do all the work:
+
+ prompt$ LATEX=tex texi2dvi file.tex
+
+(Despite the name, `texi2dvi' can also produce `.pdf' files; just set
+`LATEX=pdftex'.) See the output from the command `texi2dvi --help' for
+invoking information and a full list of options.
+
+
+File: eplain.info, Node: User definitions, Next: Hyperlinks, Prev: Invoking Eplain, Up: Top
+
+4 User definitions
+******************
+
+This chapter describes definitions that are meant to be used directly
+in a document. When appropriate, ways to change the default formatting
+are described in subsections.
+
+* Menu:
+
+* Diagnostics:: Tracing information.
+* Rules:: Changing the default rule dimensions.
+* Citations:: Using BibTeX and Eplain to make bibliographies.
+* Displays:: Changing the formatting of math displays.
+* Time of day:: Producing the time of day.
+* Lists:: Producing numbered and unordered lists.
+* Verbatim listing:: Producing text just as it appears.
+* Contents:: Making a table of contents.
+* Cross-references:: Symbolic references to equations, figures, etc.
+* Page references:: Symbolic references to page numbers.
+* Equation references:: Symbolic references to equation numbers.
+* Indexing:: Creating and typesetting indexes.
+* Justification:: Ragged left, ragged right, centered.
+* Tables:: Producing ordered tables.
+* Margins:: Changing the margins directly.
+* Multiple columns:: Getting output in two columns.
+* Footnotes:: Autonumbered footnotes; changing formatting.
+* Fractions:: A better way to produce fractions in text.
+* Paths:: Allowing line breaks in pathnames.
+* Logos:: Various logos.
+* Boxes:: Producing filled or open rectangles.
+* Checking for PDF output:: Checking for pdfTeX in PDF mode.
+* Loading LaTeX packages:: Support for LaTeX packages under plain TeX.
+
+
+File: eplain.info, Node: Diagnostics, Next: Rules, Up: User definitions
+
+4.1 Diagnostics
+===============
+
+Plain TeX provides the `\tracingall' command, to turn on the maximum
+amount of tracing possible in TeX. The (usually voluminous) output
+from `\tracingall' goes both on the terminal and into the transcript
+file. It is sometimes easier to have the output go only to the
+transcript file, so you can peruse it at your leisure and not obscure
+other output to the terminal. So, Eplain provides the command
+`\loggingall'. (For some reason, this command is available in
+Metafont, but not in TeX.)
+
+ It is also sometimes useful to see the complete contents of boxes.
+`\tracingboxes' does this. (It doesn't affect whether or not the
+contents are shown on the terminal.)
+
+ You can turn off all tracing with `\tracingoff'.
+
+ You can also turn logging on and off globally, so you don't have to
+worry about whether or not you're inside a group at the time of command.
+These variants are named `\gloggingall' and `\gtracingall'.
+
+ Finally, if you write your own help messages (see `\newhelp' in `The
+TeXbook'), you want a convenient way to break lines in them. This is
+what TeX's `\newlinechar' parameter is for; however, plain TeX doesn't
+set `\newlinechar'. Therefore, Eplain defines it to be the character
+`^^J'.
+
+ For example, one of Eplain's own error messages is defined as
+follows:
+
+ \newhelp\envhelp{Perhaps you forgot to end the previous^^J%
+ environment? I'm finishing off the current group,^^J%
+ hoping that will fix it.}%
+
+
+File: eplain.info, Node: Rules, Next: Citations, Prev: Diagnostics, Up: User definitions
+
+4.2 Rules
+=========
+
+The default dimensions of rules are defined in chapter 21 of the `The
+TeXbook'. To sum up what is given there, the "thickness" of rules is 0.4pt
+by default. Eplain defines three parameters that let you change this
+dimension: `\hruledefaultheight', `\hruledefaultdepth', and
+`\vruledefaultwidth'. By default, they are defined as `The TeXbook'
+describes.
+
+ But it would be wrong to redefine `\hrule' and `\vrule'. For one
+thing, some macros in plain TeX depend on the default dimensions being
+used; for another, rules are used quite heavily, and the performance
+impact of making it a macro can be noticeable. Therefore, to take
+advantage of the default rule parameters, you must use `\ehrule' and
+`\evrule'.
+
+
+File: eplain.info, Node: Citations, Next: Displays, Prev: Rules, Up: User definitions
+
+4.3 Citations
+=============
+
+Bibliographies are part of almost every technical document. To handle
+them easily, you need two things: a program to do the tedious
+formatting, and a way to cite references by labels, rather than by
+numbers. The BibTeX program, written by Oren Patashnik, takes care of
+the first item; the citation commands in LaTeX, written to be used with
+BibTeX, take care of the second. Therefore, Eplain adopts the use of
+BibTeX, and virtually the same interface as LaTeX.
+
+ The general idea is that you put citation commands in the text of
+your document, and commands saying where the bibliography data is.
+When you run TeX, these commands produce output on the file with the
+same root name as your document (by default) and the extension `.aux'. BibTeX
+reads this file. You should put the bibliography data in a file or
+files with the extension `.bib'. BibTeX writes out a file with the same
+root name as your document and extension `.bbl'. Eplain reads this file the
+next time you run your document through TeX. (It takes multiple passes
+to get everything straight, because usually after seeing your
+bibliography typeset, you want to make changes in the `.bib' file,
+which means you have to run BibTeX again, which means you have to run
+TeX again...) An annotated example of the whole process is given below.
+
+ If your document has more than one bibliography--for example, if it
+is a collection of papers--you can tell Eplain to use a different root
+name for the `.bbl' file by defining the control sequence
+`\bblfilebasename'. The default definition is simply `\jobname'.
+
+ See the document `BibTeXing' (whose text is in the file
+`btxdoc.tex', which should be in the Eplain distribution you got) for
+information on how to write your .bib files. Both the BibTeX and the
+Eplain distributions contain several examples, also.
+
+ The `\cite' command produces a citation in the text of your
+document. The exact printed form the citation will take is under your
+control (*note Formatting citations::). `\cite' takes one required
+argument, a comma-separated list of cross-reference labels (*note
+Cross-references::, for exactly what characters are allowed in such
+labels). Warning: spaces in this list are taken as part of the
+following label name, which is probably not what you expect. The
+`\cite' command also produces a command in the .aux file that tells
+BibTeX to retrieve the given reference(s) from the .bib file. `\cite'
+also takes one optional argument, which you specify within square
+brackets, as in LaTeX. This text is simply typeset after the
+citations. (See the example below.)
+
+ Eplain can create hypertext links for citations pointing to the
+relevant bibliography entries (*note Citation hyperlinks::).
+
+ Another command, `\nocite', puts the given reference(s) into the
+bibliography, but produces nothing in the text.
+
+ The `\bibliography' command is next. It serves two purposes:
+producing the typeset bibliography, and telling BibTeX the root names
+of the .bib files. Therefore, the argument to `\bibliography' is a
+comma separated list of the .bib files (without the `.bib'). Again,
+spaces in this list are significant.
+
+ You tell BibTeX the particular style in which you want your
+bibliography typeset with one more command: `\bibliographystyle'. The
+argument to this is a single filename STYLE, which tells BibTeX to look
+for a file STYLE.bst. See the document `Designing BibTeX styles'
+(whose text is in the `btxhak.tex') for information on how to write
+your own styles.
+
+ Eplain automatically reads the citations from the .aux file when
+your job starts.
+
+ If you don't want to see the messages about undefined citations, you
+can say `\xrefwarningfalse' before making any citations. Eplain
+automatically does this if the .aux file does not exist. You can
+restore the default by saying `\xrefwarningtrue'.
+
+ Here is a TeX input file that illustrates the various commands.
+
+ \input eplain % Reads the .aux file.
+ Two citations to Knuthian works:
+ \cite[note]{surreal,concrete-math}.
+ \beginsection{References.}\par % Title for the bibliography.
+ \bibliography{knuth} % Use knuth.bib for the labels.
+ \bibliographystyle{plain} % Number the references.
+ \end % End of the document.
+
+ If we suppose that this file was named `citex.tex' and that the
+bibliography data is in `knuth.bib' (as the `\bibliography' command
+says), the following commands do what's required. (`$ ' represents the
+shell prompt.)
+
+ $ tex citex (produces undefined citation messages)
+ $ bibtex citex (read knuth.bib and citex.aux, write citex.bbl)
+ $ tex citex (read citex.bbl, still have undefined citations)
+ $ tex citex (one more time, to resolve the references)
+
+The `texi2dvi' program can help you automate this process (*note
+Invoking Eplain::).
+
+ The output looks something like (because we used the plain
+bibliography style):
+
+ Two citations to Knuthian works: [2,1 note].
+
+ References
+
+ [1] Ronald L. Graham, Donald E. Knuth, and Oren Patashnik.
+ Concrete Mathematics. Addison-Wesley, Reading, Massachusetts, 1989.
+
+ [2] Donald E. Knuth. Surreal Numbers. Addison-Wesley, Reading,
+ Massachusetts, 1974.
+
+ See the BibTeX documentation for information on how to write the
+bibliography databases, and the bibliography styles that are available.
+(If you want your references printed with names, as in [Knu74], instead
+of numbered, the bibliography style is `alpha'.)
+
+* Menu:
+
+* Formatting citations:: Changing the way citations are printed.
+* Formatting bibliographies:: Changing the way bibliographies are printed.
+
+
+File: eplain.info, Node: Formatting citations, Next: Formatting bibliographies, Up: Citations
+
+4.3.1 Formatting citations
+--------------------------
+
+You may wish to change Eplain's formatting of citations; i.e., the
+result of your `\cite' commands. By default, the citation labels are
+printed one after another, separated by commas and enclosed in
+brackets, using the main text font. Some formats require other styles,
+such as superscripted labels. You can accomodate such formats by
+redefining the following macros.
+
+`\printcitestart'
+
+`\printcitefinish'
+ Eplain expands these macros at the begining and end of the list of
+ citations for each `\cite' command. By default, they produce a
+ `[' and `]', respectively.
+
+`\printbetweencitations'
+ If a `\cite' command has multiple citations, as in
+ `\cite{acp,texbook}', Eplain expands this macro in between each
+ pair of citations. By default, it produces a comma followed by a
+ space.
+
+`\printcitenote'
+ This macro takes one argument, which is the optional note to the
+ `\cite' command. If the `\cite' command had no note, this macro
+ isn't used. Otherwise, it should print the note. By default, the
+ note is preceded with a comma and a space.
+
+ Here is an example, showing you could produce citations as
+superscripted labels, with the optional notes in parentheses.
+
+ \def\printcitestart{\unskip $^\bgroup}
+ \def\printbetweencitations{,}
+ \def\printcitefinish{\egroup$}
+ \def\printcitenote#1{\hbox{\sevenrm\space (#1)}}
+
+
+File: eplain.info, Node: Formatting bibliographies, Prev: Formatting citations, Up: Citations
+
+4.3.2 Formatting bibliographies
+-------------------------------
+
+You may wish to change Eplain's formatting of the bibliography,
+especially with respect to the fonts that are used. Therefore, Eplain
+provides the following control sequences:
+
+`\biblabelwidth'
+ This control sequence represents a `\dimen' register, and its value
+ is the width of the widest label in the bibliography. Although it
+ is unlikely you will ever want to redefine it, you might want to
+ use it if you redefine `\biblabelprint', below.
+
+`\biblabelprint'
+ This macro takes one argument, the label to print. By default, the
+ label is put in a box of width `\biblabelwidth', and is followed by
+ an enspace. When you want to change the spacing around the
+ labels, this is the right macro to redefine.
+
+`\biblabelcontents'
+ This macro also takes one argument, the label to print. By
+ default, the label is printed using the font `\bblrm' (below), and
+ enclosed in brackets. When you want to change the appearance of
+ the label, but not the spacing around it, this is the right macro
+ to redefine.
+
+`\bblrm'
+ The default font used for printing the bibliography.
+
+`\bblem'
+ The font used for printing the titles and other "emphasized"
+ material.
+
+`\bblsc'
+ In some styles, authors' names are printed in a caps-and-small-caps
+ font. In those cases, this font is used.
+
+`\bblnewblock'
+ This is invoked between each of the parts of a bibliography entry.
+ The default is to leave some extra space between the parts; you
+ could redefine it to start each part on a new line (for example).
+ A part is simply a main element of the entry; for example, the
+ author is a part. (It was LaTeX that introduced the (misleading,
+ as far as I am concerned) term `block' for this.)
+
+`\biblabelextraspace'
+ Bibliography entries are typeset with a hanging indentation of
+ `\biblabelwidth' plus this. The default is `.5em', where the em
+ width is taken from the `\bblrm' font. If you want to change
+ this, you should do it inside `\bblhook'.
+
+`\bblhook'
+ This is expanded before reading the .bbl file. By default, it
+ does nothing. You could, for example, define it to set the
+ bibliography fonts, or produce the heading for the references. Two
+ spacing parameters must be changed inside `\bblhook': `\parskip',
+ which produces extra space between the items; and
+ `\biblabelextraspace', which is described above. (By the way,
+ `\hookappend' won't work with `\bblhook', despite the names. Just
+ use `\def'.)
+
+
+ If you are really desperate, you can also hand-edit the .bbl file
+that BibTeX produces to do anything you wish.
+
+
+File: eplain.info, Node: Displays, Next: Time of day, Prev: Citations, Up: User definitions
+
+4.4 Displays
+============
+
+By default, TeX centers displayed material. (Displayed material is
+just whatever you put between `$$''s--it's not necessarily
+mathematics.) Many layouts would be better served if the displayed
+material was left-justified. Therefore, Eplain provides the command
+`\leftdisplays', which indents displayed material by `\parindent' plus
+`\leftskip', plus `\leftdisplayindent'.
+
+ You can go back to centering displays with `\centereddisplays'. (It
+is usually poor typography to have both centered and left-justified
+displays in a single publication, though.)
+
+ `\leftdisplays' also changes the plain TeX commands that deal with
+alignments inside math displays, `\displaylines', `\eqalignno', and
+`\leqalignno', to produce left-justified text. You can still override
+this formatting by inserting `\hfill' glue, as explained in `The
+TeXbook'.
+
+* Menu:
+
+* Formatting displays:: General formatting of displays.
+
+
+File: eplain.info, Node: Formatting displays, Up: Displays
+
+4.4.1 Formatting displays
+-------------------------
+
+If you want some other kind of formatting, you can write a definition
+of your own, analogous to `\leftdisplays'. You need only make sure
+that `\leftdisplaysetup' is called at the beginning of every display
+(presumably by invoking it in TeX's `\everydisplay' parameter), and to
+define `\generaldisplay'.
+
+ `\leftdisplays' expands the old value of `\everydisplay' before
+calling `\leftdisplaysetup', so that any changes you have made to it
+won't be lost. That old token list as available as the value of the
+token register `\previouseverydisplay'.
+
+
+File: eplain.info, Node: Time of day, Next: Lists, Prev: Displays, Up: User definitions
+
+4.5 Time of day
+===============
+
+TeX provides the day, month, and year as numeric quantities (unless
+your TeX implementation is woefully deficient). Eplain provides some
+control sequences to make them a little more friendly to humans.
+
+ `\monthname' produces the name of the current month, abbreviated to
+three letters.
+
+ `\fullmonthname' produces the name of the current month,
+unabbreviated (in English).
+
+ `\timestring' produces the current time, as in `1:14 p.m.'
+
+ `\timestamp' produces the current date and time, as in `23 Apr 64
+1:14 p.m.'. (Except the spacing is slightly different.)
+
+ `\today' produces the current date, as in `23 April 1964'.
+
+
+File: eplain.info, Node: Lists, Next: Verbatim listing, Prev: Time of day, Up: User definitions
+
+4.6 Lists
+=========
+
+Many documents require lists of items, either numbered or simply
+enumerated. Plain TeX defines one macro to help with creating lists,
+`\item', but that is insufficient in many cases. Therefore, Eplain
+provides two pairs of commands:
+
+`\numberedlist ... \endnumberedlist'
+
+`\orderedlist ... \endorderedlist'
+ These commands (they are synonyms) produce a list with the items
+ numbered sequentially, starting from one. A nested `\numberedlist'
+ labels the items with lowercase letters, starting with `a'.
+ Another nested `\numberedlist' labels the items with roman
+ numerals. Yet more deeply nested numbered lists label items with
+ `*'.
+
+`\unorderedlist ... \endunorderedlist'
+ This produces a list with the items labelled with small black boxes
+ ("square bullets"). A nested `\unorderedlist' labels items with
+ em-dashes. Doubly (and deeper) nested unordered lists label items
+ with `*'s.
+
+
+ The two kinds of lists can be nested within each other, as well.
+
+ In both kinds of lists, you begin an item with `\li'. An item may
+continue for several paragraphs. Each item starts a paragraph.
+
+ You can give `\li' an optional argument, a cross-reference label.
+It's defined to be the "marker" for the current item. This is useful
+if the list items are numbered. You can produce the value of the label
+with `\xrefn'. *Note Cross-references::.
+
+ Eplain can create hypertext links for the markers produced by
+`\xrefn' pointing to the relevant list item (*note List hyperlinks::).
+
+ You can also say `\listcompact' right after `\numberedlist' or
+`\unorderedlist'. The items in the list will then not have any extra
+space between them (*note Formatting lists::). You might want to do
+this if the items in this particular list are short.
+
+ Here is an example:
+
+ \numberedlist\listcompact
+ \li The first item.
+ \li The second item.
+
+ The second paragraph of the second item.
+ \endnumberedlist
+
+* Menu:
+
+* Formatting lists:: Changing how the lists look.
+
+
+File: eplain.info, Node: Formatting lists, Up: Lists
+
+4.6.1 Formatting lists
+----------------------
+
+Several registers define the spacing associated with lists. It is
+likely that their default values won't suit your particular layout.
+
+`\abovelistskipamount, \belowlistskipamount'
+ The vertical glue inserted before and after every list,
+ respectively.
+
+`\interitemskipamount'
+ The vertical glue inserted before each item except the first.
+ `\listcompact' resets this to zero, as mentioned above.
+
+`\listleftindent, \listrightindent'
+ `\listrightindent' is the amount of space by which the list is
+ indented on the right; i.e., it is added to `\rightskip'.
+ `\listleftindent' is the amount of space, _relative to_
+ `\parindent', by which the list is indented on the left. Why treat
+ the two parameters differently? Because (a) it is more useful to
+ make the list indentation depend on the paragraph indentation;
+ (b) footnotes aren't formatted right if `\parindent' is reset to
+ zero.
+
+
+ The three vertical glues are inserted by macros, and preceded by
+penalties: `\abovelistskip' does `\vpenalty\abovelistpenalty' and then
+`\vskip\abovelistskip'. `\belowlistskip' and `\interitemskip' are
+analogous.
+
+ In addition, the macro `\listmarkerspace' is called to separate the
+item label from the item text. This is set to `\enspace' by default.
+
+ If you want to change the labels on the items, you can redefine these
+macros: `\numberedmarker' or `\unorderedmarker'. The following
+registers might be useful if you do:
+
+`\numberedlistdepth, \unorderedlistdepth'
+ These keep track of the depth of nesting of the two kinds of lists.
+
+`\itemnumber, \itemletter'
+ These keep track of the number of items that have been seen in the
+ current numbered list. They are both integer registers. The
+ difference is that `\itemnumber' starts at one, and `\itemletter'
+ starts at 97, i.e., lowercase `a'.
+
+
+ You can also redefine the control sequences that are used internally,
+if you want to do something radically different: `\beginlist' is
+invoked to begin both kinds of lists; `\printitem' is invoked to print
+the label (and space following the label) for each item; and `\endlist' is
+invoked to end both kinds of lists.
+
+
+File: eplain.info, Node: Verbatim listing, Next: Contents, Prev: Lists, Up: User definitions
+
+4.7 Verbatim listing
+====================
+
+It is sometimes useful to include a file verbatim in your document; for
+example, part of a computer program. The `\listing' command is given
+one argument, a filename, and produces the contents of that file in
+your document. `\listing' expands `\listingfont' to set the current
+font. The default value of `\listingfont' is `\tt'.
+
+ You can take arbitrary actions before reading the file by defining
+the macro `\setuplistinghook'. This is expanded just before the file
+is input.
+
+ If you want to have line numbers on the output, you can say
+`\let\setuplistinghook = \linenumberedlisting'. The line numbers are
+stored in the count register `\lineno' while the file is being read.
+You can redefine the macro `\printlistinglineno' to change how they are
+printed.
+
+ Normally, the `\listing' command will add a final empty line at the
+end of the output, even if the file does not end in a newline. To
+suppress this final line, you can say `\let\setuplistinghook =
+\nolastlinelisting'. This also works with line numbers (say
+`\def\setuplistinghook{\linenumberedlisting \nolastlinelisting}'), but
+only if `\printlistinglineno' consists exclusively of boxes at the top
+level (i.e., any `\kern's or glue should be wrapped up in a box).
+
+ You can use the form feed control character (ASCII code 12, typed as
+`CTRL-L') in the file to force a page break in the output.
+
+ You can produce in-line verbatim text in your document with
+`\verbatim'. End the text with `|endverbatim'. If you need a `|' in
+the text, double it. If the first character of the verbatim text is a
+space, use `| '. (`| ' will work elsewhere in the argument, too, but
+isn't necessary.)
+
+ For example:
+
+ \verbatim| ||\#%&!|endverbatim
+
+produces ` |\#%&!'.
+
+ Line breaks and spaces in the verbatim text are preserved.
+
+ You can change the verbatim escape character from the default `|'
+with `\verbatimescapechar CHAR'; for example, this changes it to `@'.
+
+ \verbatimescapechar \@
+
+The backslash is not necessary in some cases, but is in others,
+depending on the catcode of the character. The argument to
+`\verbatimescapechar' is used as `\catcode `CHAR', so the exact rules
+follow that for `\catcode'.
+
+ Because `\verbatim' must change the category code of special
+characters, calling inside a macro definition of your own does not work
+properly. For example:
+
+ \def\mymacro{\verbatim &#%|endverbatim}% Doesn't work!
+
+To accomplish this, you must change the category codes yourself before
+making the macro definition. Perhaps `\uncatcodespecials' will help
+you (*note Category codes::).
+
+
+File: eplain.info, Node: Contents, Next: Cross-references, Prev: Verbatim listing, Up: User definitions
+
+4.8 Contents
+============
+
+Producing a table of contents that is both useful and aesthetic is one
+of the most difficult design problems in any work. Naturally, Eplain
+does not pretend to solve the design problem. Collecting the raw data
+for a table of contents, however, is much the same across documents.
+Eplain uses an auxiliary file with extension `.toc' (and the same root
+name as your document) to save the information.
+
+* Menu:
+
+* Writing the .toc file::
+* Reading the .toc file::
+* Changing the .toc file's root name::
+* Alternative contents files::
+
+
+File: eplain.info, Node: Writing the .toc file, Next: Reading the .toc file, Up: Contents
+
+4.8.1 Writing the .toc file
+---------------------------
+
+To write an entry for the table of contents, you say
+`\writetocentry{PART}{TEXT}', where PART is the type of part this entry
+is, e.g., `chapter', and TEXT is the text of the title.
+`\writetocentry' puts an entry into the .toc file that looks like
+`\tocPARTentry{TEXT}{PAGE NUMBER}' (unless PART is an integer, see
+below). The TEXT is written unexpanded.
+
+ A related command, `\writenumberedtocentry', takes one additional
+argument, the first token of which is expanded at the point of the
+`\writenumberedtocentry', but the rest of the argument is not expanded.
+The usual application is when the parts of the document are numbered.
+On the other hand, the one-level expansion allows you to use the
+argument for other things as well (author's names in a proceedings,
+say), and not have accents or other control sequences expanded. The
+downside is that if you _want_ full expansion of the third argument,
+you don't get it--you must expand it yourself, before you call
+`\writenumberedtocentry'.
+
+ For example:
+
+ \writenumberedtocentry{chapter}{A $\sin$ wave}{\the\chapno}
+ \writetocentry{section}{A section title}
+
+Supposing `\the\chapno' expanded to `3' and that the `\write''s
+occurred on pages eight and nine, respectively, the above writes the
+following to the .toc file:
+
+ \tocchapterentry{A $\sin$ wave}{3}{8}
+ \tocsectionentry{A section title}{9}
+
+ A variation on `\writenumberedtocentry' is `\writenumberedtocline',
+differing only in the order of the parameters it takes and writes for
+the `\tocPARTentry' control sequences. To continue the previous
+example:
+
+ \writenumberedtocline{chapter}{\the\chapno}{A $\sin$ wave}
+
+writes the following to the .toc file:
+
+ \tocchapterentry{3}{A $\sin$ wave}{8}
+
+Such ordering of the parameters allows the `\tocPARTentry' macros to
+typeset the text of the entry without actually reading it as an
+argument. This is required for entries which need to change character
+catcodes, e.g., to produce verbatim text (*note Verbatim listing::).
+
+ Each of `\writetocentry', `\writenumberedtocentry' and
+`\writenumberedtocline' processes a numeric PART argument specially.
+If you pass PART expanding to an integer, these macros write into the
+.toc file an entry that starts with `\tocentry{PART}'. Thus, you can
+define a single `\tocentry' macro which formats all entries for a table
+of contents. To continue the previous examples:
+
+ \writenumberedtocentry{1}{A $\sin$ wave}{\the\chapno}
+ \writenumberedtocline{1}{\the\chapno}{A $\sin$ wave}
+ \writetocentry{2}{A section title}
+
+writes the following to the .toc file:
+
+ \tocentry{1}{A $\sin$ wave}{3}{8}
+ \tocentry{1}{3}{A $\sin$ wave}{8}
+ \tocentry{2}{A section title}{9}
+
+
+File: eplain.info, Node: Reading the .toc file, Next: Changing the .toc file's root name, Prev: Writing the .toc file, Up: Contents
+
+4.8.2 Reading the .toc file
+---------------------------
+
+You read the .toc file with the command `\readtocfile'. Naturally,
+whatever `\toc... entry' commands that were written to the file must be
+defined when `\readtocfile' is invoked. Eplain has minimal definitions
+for `\tocchapterentry', `\tocsectionentry', and `\tocsubsectionentry',
+just to prevent undefined control sequence errors in common cases.
+They aren't suitable for anything but preliminary proofs.
+
+ Each of `\writetocentry', `\writenumberedtocentry' and
+`\writenumberedtocline' opens the .toc file for writing, thereby
+deleting the information from the previous run. You should therefore
+arrange that `\readtocfile' be called _before_ the first call to a
+`\writetoc...' macro. `\readtocfile' does not itself delete the
+information from the .toc file, so that you can call it several times,
+e.g., to create both a short and normal table of contents. (To produce
+this in particular, define `\tocsectionentry' to produce nothing while
+you are reading .toc file for a short table of contents (*note Macro
+arguments::).)
+
+ On the other hand, if you don't want to rewrite the .toc file at
+all, perhaps because you are only running TeX on part of your
+manuscript, you can set `\rewritetocfilefalse'.
+
+
+File: eplain.info, Node: Changing the .toc file's root name, Next: Alternative contents files, Prev: Reading the .toc file, Up: Contents
+
+4.8.3 Changing the .toc file's root name
+----------------------------------------
+
+By default, the `.toc' file has the root `\jobname'. If your document
+has more than one contents--for example, if it is a collection of
+papers, some of which have their own contents--you can tell Eplain to
+use a different root name by defining the control sequence
+`\tocfilebasename'.
+
+ Note that `\writetocentry', `\writenumberedtocentry' and
+`\writenumberedtocline' will open the contents file for writing only at
+the first call, using the value of `\tocfilebasename' at that time.
+Changing the value of `\tocfilebasename' afterwards will not affect
+which file gets _written_, although it will affect which file gets
+_read_ by `\readcontentsfile'. In case you need to write several
+contents files from a single TeX job, use `\definecontentsfile' (*note
+Alternative contents files::).
+
+
+File: eplain.info, Node: Alternative contents files, Prev: Changing the .toc file's root name, Up: Contents
+
+4.8.4 Alternative contents files
+--------------------------------
+
+In addition to the usual table of contents, you may want to have a list
+of figures, list of tables, or other such contents-like list. You can do
+this with `\definecontentsfile{ABBREV}'. All of the above commands are
+actually a special case that Eplain predefines with
+
+ \definecontentsfile{toc}
+
+The ABBREV is used both for the file extension and in the control
+sequence names.
+
+
+File: eplain.info, Node: Cross-references, Next: Page references, Prev: Contents, Up: User definitions
+
+4.9 Cross-references
+====================
+
+It is often useful to refer the reader to other parts of your document;
+but putting literal page, section, equation, or whatever numbers in the
+text is certainly a bad thing.
+
+ Eplain therefore provides commands for symbolic cross-references. It
+uses an auxiliary file with extension .aux (and the same root name as
+your document) to keep track of the information. Therefore, it takes
+two passes to get the cross-references right--one to write them out,
+and one to read them in. Eplain automatically reads the .aux file at
+the first reference; after reading it, Eplain reopens it for writing.
+
+ You can control whether or not Eplain warns you about undefined
+labels. *Note Citations::.
+
+ Labels in Eplain's cross-reference commands can use characters of
+category code eleven (letter), twelve (other), ten (space), three (math
+shift), four (alignment tab), seven (superscript), or eight (subscript).
+For example, `(a1 $&^_' is a valid label (assuming the category codes
+of plain TeX), but `%#\{' has no valid characters.
+
+ You can also do symbolic cross-references for bibliographic citations
+and list items. *Note Citations::, and *Note Lists::.
+
+ Eplain can create hypertext links for the cross-references (*note
+Cross-reference hyperlinks::).
+
+* Menu:
+
+* Defining generic references::
+* Using generic references::
+
+
+File: eplain.info, Node: Defining generic references, Next: Using generic references, Up: Cross-references
+
+4.9.1 Defining generic references
+---------------------------------
+
+Eplain provides the command `\definexref' for general cross-references.
+It takes three arguments: the name of the label (see section above for
+valid label names), the value of the label (which can be anything), and
+the "class" of the reference--whether it's a section, or theorem, or
+what. For example:
+
+ \definexref{sec-intro}{3.1}{section}
+
+Of course, the label value is usually generated by another macro using
+TeX count registers or some such.
+
+ `\definexref' doesn't actually define LABEL; instead, it writes out
+the definition to the .aux file, where Eplain will read it on the next
+TeX run.
+
+ The CLASS argument is used by the `\ref' and `\refs' commands. See
+the next section.
+
+
+File: eplain.info, Node: Using generic references, Prev: Defining generic references, Up: Cross-references
+
+4.9.2 Using generic references
+------------------------------
+
+To retrieve the value of the label defined via `\definexref' (see the
+previous section), Eplain provides the following macros:
+
+`\refn{LABEL}'
+
+`\xrefn{LABEL}'
+ `\refn' and `\xrefn' (they are synonyms) produce the bare
+ definition of LABEL. If LABEL isn't defined, issue a warning, and
+ produce LABEL itself instead, in typewriter. (The warning isn't
+ given if `\xrefwarningfalse'.)
+
+`\ref{LABEL}'
+ Given the class C for LABEL (see the description of `\definexref'
+ in the previous section), expand the control sequence `\C word'
+ (if it's defined) followed by a tie. Then call `\refn' on LABEL.
+ (Example below.)
+
+`\refs{LABEL}'
+ Like `\ref', but append the letter `s' to the `\...word'.
+
+
+ The purpose of the `\...word' macro is to produce the word `Section'
+or `Figure' or whatever that usually precedes the actual reference
+number.
+
+ Here is an example:
+
+ \def\sectionword{Section}
+ \definexref{sec-intro}{3.1}{section}
+ \definexref{sec-next}{3.2}{section}
+ See \refs{sec-intro} and \refn{sec-next} ...
+
+This produces `See Sections 3.1 and 3.2 ...'
+
+
+File: eplain.info, Node: Page references, Next: Equation references, Prev: Cross-references, Up: User definitions
+
+4.10 Page references
+====================
+
+Eplain provides two commands for handling references to page numbers,
+one for definition and one for use.
+
+`\xrdef{LABEL}'
+ Define LABEL to be the current page number. This produces no
+ printed output, and ignores following spaces.
+
+`\xref{LABEL}'
+ Produce the text `p. PAGENO', which is the usual form for
+ cross-references. The PAGENO is actually LABEL's definition; if
+ LABEL isn't defined, the text of the label itself is printed. The
+ `p. ' prefix is defined by `\xrefpageword'. Its default
+ definition is `p.\thinspace'.
+
+
+ Eplain can create hypertext links for the page references (*note
+Page reference hyperlinks::).
+
+
+File: eplain.info, Node: Equation references, Next: Indexing, Prev: Page references, Up: User definitions
+
+4.11 Equation references
+========================
+
+Instead of referring to pages, it's most useful if equation labels
+refer to equation numbers. Therefore, Eplain reserves a `\count'
+register, `\eqnumber', for the current equation number, and increments
+it at each numbered equation.
+
+ Here are the commands to define equation labels and then refer to
+them:
+
+`\eqdef{LABEL}'
+ This defines LABEL to be the current value of `\eqnumber', and, if
+ the current context is not inner, then produces a `\eqno' command.
+ (The condition makes it possible to use `\eqdef' in an
+ `\eqalignno' construction, for example.) The text of the equation
+ number is produced using `\eqprint'. *Note Formatting equation
+ references::.
+
+ If LABEL is empty, you still get an equation number (although
+ naturally you can't reliably refer to it). This is useful if you
+ want to put numbers on all equations in your document, and you
+ don't want to think up unique labels.
+
+ To refer to the last equation with the empty label, you just use
+ the empty label in one of the equation reference macros (see
+ below). This can be handy when you want to refer to an equation
+ shortly after its definition, say, in the sentence following the
+ displayed equation, and do not intend to refer to the equation
+ later. But use this trick with extreme caution: if later you
+ change the text and insert another empty definition between the
+ original definition and the reference, the reference will start to
+ refer to the new empty-labeled equation.
+
+`\eqdefn{LABEL}'
+ This is like `\eqdef', except it always omits the `\eqno' command.
+ It can therefore be used in places where `\eqdef' can't; for
+ example, in a non-displayed equation. The text of the equation
+ number is not produced, so you can also use it in the (admittedly
+ unusual) circumstance when you want to define an equation label
+ but not print that label.
+
+`\eqref{LABEL}'
+ This produces a formatted reference to LABEL. If LABEL is
+ undefined (perhaps because it is a forward reference), it just
+ produces the text of the label itself. Otherwise, it calls
+ `\eqprint'.
+
+`\eqrefn{LABEL}'
+ This produces the cross-reference text for LABEL. That is, it is
+ like `\eqref', except it doesn't call `\eqprint'.
+
+
+ Equation labels can contain the same characters that are valid in
+general cross-references.
+
+ Eplain can create hypertext links for the equation references (*note
+Equation reference hyperlinks::).
+
+* Menu:
+
+* Formatting equation references::
+* Subequation references::
+
+
+File: eplain.info, Node: Formatting equation references, Next: Subequation references, Up: Equation references
+
+4.11.1 Formatting equation references
+-------------------------------------
+
+Both defining an equation label and referring to it should usually
+produce output. This output is produced with the `\eqprint' macro,
+which takes one argument, the equation number being defined or referred
+to. By default, this just produces `(NUMBER)', where NUMBER is the
+equation number. To produce the equation number in a different font,
+or with different surrounding symbols, or whatever, you can redefine
+`\eqprint'. For example, the following definition would print all
+equation numbers in italics. (The extra braces define a group, to keep
+the font change from affecting surrounding text.)
+
+ \def\eqprint#1{{\it (#1)}}
+
+ In addition to changing the formatting of equation numbers, you
+might want to add more structure to the equation number; for example,
+you might want to include the chapter number, to get equation numbers
+like `(1.2)'. To achieve this, you redefine `\eqconstruct'. For
+example:
+
+ \def\eqconstruct#1{\the\chapternumber.#1}
+
+(If you are keeping the chapter number in a count register named
+`\chapternumber', naturally.)
+
+ The reason for having both `\eqconstruct' and `\eqprint' may not be
+immediately apparent. The difference is that `\eqconstruct' affects
+the text that cross-reference label is defined to be, while `\eqprint'
+affects only what is typeset on the page. The example just below might
+help.
+
+ Usually, you want equation labels to refer to equation numbers. But
+sometimes you might want a more complicated text. For example, you
+might have an equation `(1)', and then have a variation several pages
+later which you want to refer to as `(1*)'.
+
+ Therefore, Eplain allows you to give an optional argument (i.e.,
+arbitrary text in square brackets) before the cross-reference label to
+\eqdef. Then, when you refer to the equation, that text is produced.
+Here's how to get the example just mentioned:
+
+ $$...\eqdef{a-eq}$$
+ ...
+ $$...\eqdef[\eqrefn{a-eq}*]{a-eq-var}$$
+ In \eqref{a-eq-var}, we expand on \eqref{a-eq}, ...
+
+ We use `\eqrefn' in the cross-reference text, not `\eqref', so that
+`\eqprint' is called only once.
+
+
+File: eplain.info, Node: Subequation references, Prev: Formatting equation references, Up: Equation references
+
+4.11.2 Subequation references
+-----------------------------
+
+Eplain also provides for one level of substructure for equations. That
+is, you might want to define a related group of equations with numbers
+like `2.1' and `2.2', and then be able to refer to the group as a whole:
+"... in the system of equations (2)...".
+
+ The commands to do this are `\eqsubdef' and `\eqsubdefn'. They take
+one LABEL argument like their counterparts above, and generally behave
+in the same way. The difference is in how they construct the equation
+number: instead of using just `\eqnumber', they also use another
+counter, `\subeqnumber'. This counter is advanced by one at every
+`\eqsubdef' or `\eqsubdefn', and reset to zero at every `\eqdef' or
+`\eqdefn'.
+
+ You use `\eqref' to refer to subequations as well as main equations.
+
+ To put the two together to construct the text that the label will
+produce, they use a macro `\eqsubreftext'. This macros takes two
+arguments, the "main" equation number (which, because the equation
+label can be defined as arbitrary text, as described in the previous
+section, might be anything at all) and the "sub" equation number (which
+is always just a number). Eplain's default definition just puts a
+period between them:
+
+ \def\eqsubreftext#1#2{#1.#2}%
+
+You can redefine `\eqsubreftext' to print however you like. For
+example, this definition makes the labels print as `2a', `2b', and so
+on.
+
+ \newcount\subref
+ \def\eqsubreftext#1#2{%
+ \subref = #2 % The space stops a <number>.
+ \advance\subref by 96 % `a' is character code 97.
+ #1\char\subref
+ }
+
+Sadly, we must define a new count register, `\subref', instead of using
+the scratch count register `\count255', because `#1' might include
+other macro calls which use `\count255'.
+
+
+File: eplain.info, Node: Indexing, Next: Justification, Prev: Equation references, Up: User definitions
+
+4.12 Indexing
+=============
+
+Eplain provides support for generating raw material for an index, and
+for typesetting a sorted index. A separate program must do the actual
+collection and sorting of terms, because TeX itself has no support for
+sorting.
+
+ Eplain can create hypertext links pointing from the index to the
+index terms (*note Index hyperlinks::).
+
+ Eplain's indexing commands were designed to work with the program
+MakeIndex, available from CTAN hosts in
+`tex-archive/indexing/makeindex'; MakeIndex is also commonly included
+in prepackaged TeX distributions. It is beyond the scope of this
+manual to explain how to run MakeIndex, and all of its many options.
+See `http://www.ctan.org/tex-archive/indexing/makeindex'.
+
+ The basic strategy for indexing works like this:
+
+ 1. For a document `foo.tex', Eplain's indexing commands (e.g.,
+ `\idx'; see the section `Indexing terms' below) write the raw index
+ material to `foo.idx'.
+
+ 2. MakeIndex reads `foo.idx', collects and sorts the index, and
+ writes the result to `foo.ind'.
+
+ 3. Eplain reads and typesets `foo.ind' on a subsequent run of TeX.
+ See the section `Typesetting an index' below.
+
+
+The `texi2dvi' program can help you automate this process (*note
+Invoking Eplain::).
+
+ If your document needs more than one index, each must have its own
+file. Therefore, Eplain provides the command `\defineindex', which
+takes an argument that is a single letter, which replaces `i' in the
+filenames and in the indexing command names described below. For
+example,
+
+ \defineindex{m}
+
+defines the command `\mdx' to write to the file `foo.mdx'. Eplain
+simply does `\defineindex{i}' to define the default commands.
+
+* Menu:
+
+* Indexing terms:: Specifying what to index.
+* Typesetting an index:: Printing the sorted output.
+* Customizing indexing:: Creating commands and specifying extra actions.
+
+
+File: eplain.info, Node: Indexing terms, Next: Typesetting an index, Up: Indexing
+
+4.12.1 Indexing terms
+---------------------
+
+Indexing commands in Eplain come in pairs: one command that only writes
+the index entry to the `.idx' file (see above section), and one that
+also typesets the term being indexed. The former always starts with `s'
+(for "silent"). In either case, the name always includes `Idx', where I
+is the index letter, also described above. Eplain defines the index `i'
+itself, so that's what we'll use in the names below.
+
+ The silent form of the commands take a subterm as a trailing optional
+argument. For example, `\sidx{truth}[definition of]' on page 75 makes
+an index entry that will eventually be typeset (by default) as
+
+ truth
+ definition of, 75
+
+ Also, the silent commands ignore trailing spaces. The non-silent
+ones do not.
+
+* Menu:
+
+* Indexing commands:: Making index entries.
+* Modifying index entries:: Ranges, see/see also, page number typesetting.
+* Index entries with special characters::
+* Proofing index terms:: Noting index entries in the margins.
+
+
+File: eplain.info, Node: Indexing commands, Next: Modifying index entries, Up: Indexing terms
+
+4.12.1.1 Indexing commands
+..........................
+
+Here are the commands.
+
+ * `\sidx{TERM}[SUBTERM]' makes an index entry for TERM, optionally
+ with subterm SUBTERM. `\idx{TERM}' also produces TERM as output.
+ Example:
+
+ \sidx{truth}[beauty of]
+ The beauty of truth is \idx{death}.
+
+ Subterms at the second and further levels can also be specified in
+ SUBTERM, using the `\idxsubentryseparator' character to separate
+ them. This character is by default `!'.
+
+ * `\sidxname{FIRST M.}{VON LAST}[SUBTERM]' makes an index entry for
+ `VON LAST, FIRST M.'. You can change the `, ' by redefining
+ `\idxnameseparator'. `\idxname{FIRST M.}{VON LAST}' also produces
+ FIRST M. VON LAST as output. (These commands are useful special
+ cases of `\idx' and `\sidx'.) Example:
+
+ \sidxname{Richard}{Stark}
+ \idxname{Donald}{Westlake} has written many kinds of novels, under
+ almost as many names.
+
+ * `\sidxmarked\CS{TERM}[SUBTERM]' makes an index entry for
+ `TERM[SUBTERM]', but TERM will be put in the index as `\CS{term}',
+ but still sorted as just TERM. `\idxmarked\CS{TERM}' also typesets
+ `\CS{term}'. This provides for the usual ways of changing the
+ typesetting of index entries. Example:
+
+ \def\article#1{``#1''}
+ \sidxmarked\article{Miss Elsa and Aunt Sophie}
+ Peter Drucker's \idxmarked\article{The Polanyis} is a remarkable
+ essay about a remarkable family.
+
+ * `\sidxsubmarked{TERM}\CS{subterm}' makes an index entry for TERM,
+ SUBTERM as usual, but also puts SUBTERM in the index as
+ `\CS{term}'. `\idxsubmarked{TERM}\CS{subterm}' also typesets
+ `TERM \CS{subterm}', in the unlikely event that your syntax is
+ convoluted enough to make this useful. Example:
+
+ \def\title#1{{\sl #1}}
+ \sidxsubmarked{Anderson, Laurie}\title{Strange Angels}
+ The \idxsubmarked{Anderson}\title{Carmen} is a strange twist.
+
+
+ The commands above rely on MakeIndex's feature for separating
+sorting of an index entry's from its typesetting. You can use this
+directly by specifying an index entry as `SORT@TYPESET'. For example:
+
+ \sidx{Ap-weight@$A_\pi$-weight}
+
+will sort as `Ap-weight', but print with the proper math. The `@' here
+is MakeIndex's default character for this purpose. See
+`http://www.ctan.org/tex-archive/indexing/makeindex'. To make an index
+entry with an `@' in it, you have to escape it with a backslash; Eplain
+provides no macros for doing this.
+
+ After any index command, Eplain runs `\hookaction{afterindexterm}'.
+Because the index commands always add a whatsit item to the current
+list, you may wish to preserve a penalty or space past the new item.
+For example, given a conditional `\if@aftersctnhead' set true when
+you're at a section heading, you could do:
+
+ \hookaction{afterindexterm}{\if@aftersctnhead \nobreak \fi}
+
+
+File: eplain.info, Node: Modifying index entries, Next: Index entries with special characters, Prev: Indexing commands, Up: Indexing terms
+
+4.12.1.2 Modifying index entries
+................................
+
+All the index commands described in the previous section take an initial
+optional argument before the index term, which modify the index entry's
+meaning in various ways. You can specify only one of the following in
+any given command, except that `begin' and `end' can be specified
+together with `pagemarkup=CS' (separate them with a comma without a
+following space, like this: `[begin,pagemarkup=defn]').
+
+ These work via MakeIndex's "encapsulation" feature. *Note
+Customizing indexing::, if you're not using the default characters for
+the MakeIndex operators. The other optional argument (specifying a
+subterm) is independent of these.
+
+ Here are the possibilities:
+
+`begin'
+`end'
+ These mark an index entry as the beginning or end of a range. The
+ index entries must match exactly for MakeIndex to recognize them.
+ Example:
+
+ \sidx[begin]{future}[Cohen, Leonard]
+ ...
+ \sidx[end]{future}[Cohen, Leonard]
+
+ will typeset as something like
+
+ future,
+ Cohen, Leonard, 65-94
+
+`see'
+ This marks an index entry as pointing to another; the real index
+ term is an additional (non-optional) argument to the command. Thus
+ you can anticipate a term readers may wish to look up, yet which
+ you have decided not to index. Example:
+
+ \sidx[see]{analysis}[archetypal]{archetypal criticism}
+
+ becomes
+
+ analysis,
+ archetypal, see archetypal criticism
+
+`seealso'
+ Similar to `see' (the previous item), but also allows for normal
+ index entries of the referencing term. Example:
+
+ \sidx[seealso]{archetypal criticism}[elements of]{dichotomies}
+
+ becomes
+
+ archetypal criticism,
+ elements of, 75, 97, 114, see also dichotomies
+
+ (Aside for the academically curious: The archetypally critical
+ book I took these dichotomous examples from is Laurence Berman's
+ `The Musical Image', which I happened to co-design and typeset.)
+
+`pagemarkup=CS'
+ This puts `\CS' before the page number in the typeset index, thus
+ allowing you to underline definitive entries, italicize examples,
+ and the like. You do _not_ precede the control sequence CS with a
+ backslash. (That just leads to expansive difficulties.) Naturally
+ it is up to you to define the control sequences you want to use.
+ Example:
+
+ \def\defn#1{{\sl #1}}
+ \sidx[pagemarkeup=defn]{indexing}
+
+ becomes something like
+
+ indexing, `\defn{75}'
+
+
+
+File: eplain.info, Node: Index entries with special characters, Next: Proofing index terms, Prev: Modifying index entries, Up: Indexing terms
+
+4.12.1.3 Index entries with special characters
+..............................................
+
+Indexing terms with special characters can become quite cumbersome
+because you have to keep both TeX and MakeIndex happy at the same time.
+For example, while `!' has no special meaning for TeX, it is a
+subentry separator for MakeIndex, therefore you'd have to escape
+occurrences of literal `!' in index terms. Things get even more
+interesting with characters which are special in both TeX and MakeIndex.
+
+ This in turn has some implications for the non-silent forms of the
+indexing commands (*note Indexing terms::), since TeX and MakeIndex use
+different conventions for escaping characters. For example, this will
+not typeset the exclamation point correctly within the text, while it
+will come out right inside the index, after MakeIndex strips the
+quoting character (`"'):
+
+ \idx{"!}
+
+This would have to be rewritten using the silent command:
+
+ !\sidx{"!}
+
+In general, it is a good idea to eschew the non-silent commands
+whenever index term contains anything unusual.
+
+ To understand this keep in mind that indexing commands read the terms
+verbatim so that the terms can embed almost any character, and that's
+what gets written into the `.idx' file. The non-silent forms then
+typeset the term by rescanning the verbatim copy, therefore for the
+non-silent commands the term, besides being a valid MakeIndex input,
+must also represent a valid TeX input. The silent commands don't have
+this restriction--their terms only need to become valid TeX input
+_after_ MakeIndex processes the `.idx' file and writes the `.ind' file.
+This is what makes the non-silent commands less powerful and more
+troublesome when dealing with special characters.
+
+ Here's an example showing that terms for the silent commands can
+contain almost any character:
+
+ \sidx[see]{comments}[with %@with \verbatim %"|endverbatim]
+ {commenting with \verbatim %"|endverbatim}
+
+We didn't have to escape `%' in the sort string for MakeIndex, while we
+had to put it inside the verbatim environment (*note Verbatim
+listing::) in the part which MakeIndex will pass back to TeX. Also, we
+had to escape the `|' character because it is special for MakeIndex.
+If you have trouble understanding the reasons for the different types
+of escaping used, it is best to examine the `.idx' and `.ind' files
+resulting from processing the above input.
+
+ As was mentioned, index terms can embed "almost any character", so
+now we'll describe the exceptions.
+
+ The following characters are reset to their usual meanings because
+they are not useful verbatim: multiple consequent spaces are converted
+into a single space; ASCII tab characters are treated as spaces; ASCII
+return is treated as end-of-line (this means, among other things, that
+long terms can be broken across several lines).
+
+ You have to be careful with the begin- and end-group characters (`{'
+and `}' by default). If they are matched, you don't have to do
+anything special. For example:
+
+ \sidx {braces {, }@braces
+ \verbatim {"|endverbatim, \verbatim }"|endverbatim}
+
+However, if they are not matched you have two problems on hand. The
+first one is TeX--you have to instruct TeX to use something else as
+begin- and/or end-group characters. Eplain provides an easy way to do
+this: just define `\idxargopen' and/or `\idxargclose' to the begin-
+and end-group characters you are going to use with indexing macros, and
+use braces inside index terms without any restrictions. Here's an
+example:
+
+ \def\idxargopen{`\<}
+ \def\idxargclose{`\>}
+ \sidx <left brace "{@left brace \verbatim "{"|endverbatim>
+
+In this example we've also dealt with the second problem--braces are
+MakeIndex's grouping characters as well (by default), so we have
+escaped unmatched braces with `"'.
+
+ And the final note: if you need a subentry containing brackets (`['
+and `]'), avoid the optional argument of `\sidx' and friends, and use
+instead MakeIndex's subentry separator to create the subentry with the
+brackets in it:
+
+ \sidx{entry!subentry with a bracket [}
+
+
+File: eplain.info, Node: Proofing index terms, Prev: Index entries with special characters, Up: Indexing terms
+
+4.12.1.4 Proofing index terms
+.............................
+
+As you are reading through a manuscript, it is helpful to see what terms
+have been indexed, so you can add others, catch miscellaneous errors,
+etc. (Speaking from bitter experience, I can say it is extremely
+error-prone to leave all indexing to the end of the writing, since it
+involves adding many TeX commands to the source files.)
+
+ So Eplain puts index terms in the margin of each page, if you set
+`\indexproofingtrue'. It is `false' by default. The terms are typeset
+by the macro `\indexproofterm', which takes a single argument, the term
+to be typeset. Eplain's definition of `\indexproofterm' just puts it
+into an `\hbox', first doing `\indexprooffont', which Eplain defines to
+select the font `cmtt8'. With this definition long terms run off the
+page, but since this is just for proofreading anyway, it seems
+acceptable.
+
+ On the other hand, we certainly don't want the index term to run into
+the text of the page, so Eplain uses the right-hand side of the page
+rather than the left-hand page (assuming a language read left to right
+here). So `\ifodd\pageno', Eplain kerns by `\outsidemargin', otherwise
+by `\insidemargin'. If those macros are undefined, `\indexsetmargins'
+defines them to be one inch plus `\hoffset'.
+
+ To get the proofing index entries on the proper page, Eplain defines
+a new insertion class `\@indexproof'. To unbox any index proofing
+material, Eplain redefines `\makeheadline' to call `\indexproofunbox'
+before the original `\makeheadline'. Thus, if you have your own output
+routine, that redefines or doesn't use `\makeheadline', it's up to you
+to call `\indexproofunbox' at the appropriate time.
+
+
+File: eplain.info, Node: Typesetting an index, Next: Customizing indexing, Prev: Indexing terms, Up: Indexing
+
+4.12.2 Typesetting an index
+---------------------------
+
+The command `\readindexfile{i}' reads and typesets the `.ind' file that
+MakeIndex outputs (from the `.idx' file which the indexing commands in
+the previous sections write). Eplain defines a number of commands that
+support the default MakeIndex output.
+
+ More precisely, `\readindexfile' reads
+`\indexfilebasename.INDEX-LETTERnd', where the INDEX-LETTER is the
+argument. `\indexfilebasename' is `\jobname' by default, but if you
+have different indexes in different parts of a book, you may wish to
+change it, just as with bibliographies (*note Citations::).
+
+ MakeIndex was designed to work with LaTeX; therefore, by default the
+`.ind' file starts with `\begin{theindex}' and ends with
+`\end{theindex}'. If no `\begin' has been defined, Eplain defines one
+to ignore its argument and set up for typesetting the index (see
+below), and also defines a `\end' to ignore its argument. (In a group,
+naturally, since there is a primitive `\end').
+
+ Eplain calls `\indexfonts', sets `\parindent = 0pt', and does
+`\doublecolumns' (*note Multiple columns::) at the `\begin{theindex}'.
+`\indexfonts' does nothing by default; it's just there for you to
+override. (Indexes are usually typeset in smaller type than the main
+text.)
+
+ It ends the setup with `\hookrun{beginindex}', so you can override
+anything you like in that hook (*note Hooks::). For example:
+
+ \hookaction{beginindex}{\triplecolumns}
+
+ MakeIndex turns each main index entry into an `\item', subentries
+into `\subitem', and subsubentries into `\subsubitem'. By default, the
+first line of main entries are not indented, and subentries are
+indented 1em per level. Main entries are preceded by a `\vskip' of
+`\aboveitemskipamount', `0pt plus2pt' by default. Page breaks are
+encouraged before main entries (`\penalty -100'), but prohibited
+afterwards--Eplain has no provision for "continued" index entries.
+
+ All levels do the following:
+
+ \hangindent = 1em
+ \raggedright
+ \hyphenpenalty = 10000
+
+ Each entry ends with `\hookrun{indexitem}', so you can change any of
+this. For example, to increase the allowable rag:
+
+ \hookaction{indexitem}{\advance\rightskip by 2em}
+
+ Finally, MakeIndex outputs `\indexspace' between each group of
+entries in the `.ind' file. Eplain makes this equivalent to `\bigbreak'.
+
+
+File: eplain.info, Node: Customizing indexing, Prev: Typesetting an index, Up: Indexing
+
+4.12.3 Customizing indexing
+---------------------------
+
+By default, MakeIndex outputs `, ' after each term in the index. To
+change this, you can add the following to your MakeIndex style (`.ist')
+file:
+
+ delim_0 "\\afterindexterm "
+ delim_1 "\\afterindexterm "
+ delim_2 "\\afterindexterm "
+
+Eplain makes `\afterindexterm' equivalent to `\quad'.
+
+ You can also change the keywords Eplain recognizes (*note Modifying
+index entries::):
+
+`\idxrangebeginword'
+ `begin'
+
+`\idxrangeendword'
+ `end'
+
+`\idxseecmdword'
+ `see'
+
+`\idxseealsocmdword'
+ `seealso'
+
+
+ You can also change the magic characters Eplain puts into the `.idx'
+file, in case you've changed them in the `.ist' file:
+
+`\idxsubentryseparator'
+ `!'
+
+`\idxencapoperator'
+ `|'
+
+`\idxbeginrangemark'
+ `('
+
+`\idxendrangemark'
+ `)'
+
+
+ There is no macro for the `actual' (`@' by default) character,
+because it's impossible to make it expand properly.
+
+ You can change the (imaginary) page number that "see also" entries
+sort as by redefining `\idxmaxpagenum'. This is 99999 by default, which
+is one digit too many for old versions of MakeIndex.
+
+ The words output by Eplain for "see" and "see also" index entries
+are defined by `\indexseeword' and `\indexseealsowords' respectively.
+You can change the typeface used for these words by redefining
+`\seevariant'. And finally, the macros `\indexsee' and `\indexseealso'
+actually produce the "see ..." entries, so you can redefine them if you
+want something entirely different. If you do redefine them, make them
+take two parameters, the term being referenced and the `\idxmaxpagenum'
+(the latter should normally be ignored). See the example below.
+
+ Unfortunately, it is impossible to reliably control the commas
+produced by MakeIndex in front of "see ..." entries in the `.ind' file,
+either at MakeIndex level or at Eplain level. However, the `sed'
+script contained in `trimsee' distributed with Eplain in the `util'
+directory can be used to filter out these commas from the output of
+MakeIndex. For example, suppose you want the following style for your
+"see ..." entries:
+
+ analysis,
+ archetypal (see archetypal criticism)
+ archetypal criticism,
+ elements of, 75, 97, 114 (see also dichotomies)
+
+You would need to redefine these macros in your TeX file:
+
+ \def\indexsee#1#2{({\seevariant \indexseeword\/ }#1)}
+ \def\indexseealso#1#2{({\seevariant \indexseealsowords\/ }#1)}
+
+and then filter out the commas in front of the "see ..." entries by
+running the following command to produce the `.ind' file (assuming the
+name of the `.idx' file is `myfile.idx' and the `trimsee' script is
+placed in the current directory):
+
+ prompt$ cat myfile.idx | makeindex | ./trimsee > myfile.ind
+
+ By default, `trimsee' uses default page list separators and default
+"see ..." command names. If you set up MakeIndex to use different page
+list separator or change the names of `\indexsee' and `\indexseealso'
+commands, it is possible to adjust the `trimsee' script through its
+command line options, which are the following:
+
+`-i IS'
+ Use IS as a regular expression matching separator before "see ..."
+ commands in the input (default: `, \+').
+
+`-o OS'
+ Use OS as a separator to replace IS before "see ..." commands
+ (default: ` ').
+
+`-s SEE'
+ Use SEE as a regular expression matching "see ..." commands
+ (default: `\\indexsee').
+
+`-h'
+`--help'
+ Print a usage message.
+
+`-v'
+`--version'
+ Print version.
+
+ `trimsee' reads input from the standard input, and directs its
+output to the standard output.
+
+
+File: eplain.info, Node: Justification, Next: Tables, Prev: Indexing, Up: User definitions
+
+4.13 Justification
+==================
+
+Eplain defines three commands to conveniently justify multiple lines of
+text: `\flushright', `\flushleft', and `\center'.
+
+ They all work in the same way; let's take `\center' as the example.
+To start centering lines, you say `\center' inside a group; to stop,
+you end the group. Between the two commands, each end-of-line in the
+input file also starts a new line in the output file.
+
+ The entire block of text is broken into paragraphs at blank lines,
+so all the TeX paragraph-shaping parameters apply in the usual way.
+This is convenient, but it implies something else that isn't so
+convenient: changes to any linespacing parameters, such as
+`\baselineskip', will have _no effect_ on the paragraph in which they
+are changed. TeX does not handle linespacing changes within a
+paragraph (because it doesn't know where the line breaks are until the
+end of the paragraph).
+
+ The space between paragraphs is by default one blank line's worth.
+You can adjust this space by assigning to `\blanklineskipamount'; this
+(vertical) glue is inserted after each blank line.
+
+ Here is an example:
+
+ {\center First line.
+
+ Second line, with a blank line before.
+ }
+
+This produces:
+
+ First line.
+
+ Second line, with a blank line before.
+
+ You may wish to use the justification macros inside of your own
+macros. Just be sure to put them in a group. For example, here is how
+a title macro might be defined:
+
+ \def\title{\begingroup\titlefont\center}
+ \def\endtitle{\endgroup}
+
+
+File: eplain.info, Node: Tables, Next: Margins, Prev: Justification, Up: User definitions
+
+4.14 Tables
+===========
+
+Eplain provides a single command, `\makecolumns', to make generating
+one particular kind of table easier. More ambitious macro packages
+might be helpful to you for more difficult applications. The files
+`ruled.tex' and `TXSruled.tex', available from
+`http://www.ctan.org/tex-archive/macros/texsis', is the only one I know
+of.
+
+ Many tables are homogenous, i.e., all the entries are semantically
+the same. The arrangement into columns is to save space on the page,
+not to encode different meanings. In this kind of the table, it is
+useful to have the column breaks chosen automatically, so that you can
+add or delete entries without worrying about the column breaks.
+
+ `\makecolumns' takes two arguments: the number of entries in the
+table, and the number of columns to break them into. As you can see
+from the example below, the first argument is delimited by a slash, and
+the second by a colon and a space (or end-of-line). The entries for the
+table then follow, one per line (not including the line with the
+`\makecolumns' command itself).
+
+ `\parindent' defines the space to the left of the table. `\hsize'
+defines the width of the table. So you can adjust the position of the
+table on the page by assignments to these parameters, probably inside a
+group.
+
+ You can also control the penalty at a page break before the
+`\makecolumns' by setting the parameter `\abovecolumnspenalty'. Usually,
+the table is preceded by some explanatory text. You wouldn't want a
+page break to occur after the text and before the table, so Eplain sets
+it to `10000'. But if the table produced by `\makecolumns' is standing
+on its own, `\abovecolumnspenalty' should be decreased.
+
+ If you happen to give `\makecolumns' a smaller number of entries
+than you really have, some text beyond the (intended) end of the table
+will be incorporated into the table, probably producing an error
+message, or at least some strange looking entries. And if you give
+`\makecolumns' a larger number of entries than you really have, some of
+the entries will be typeset as straight text, probably also looking
+somewhat out of place.
+
+ Here is an example:
+
+ % Arrange 6 entries into 2 columns:
+ \makecolumns 6/2: % This line doesn't have an entry.
+ one
+ two
+ three
+ four
+ five
+ six
+ Text after the table.
+
+This produces `one', `two', and `three' in the first column, and
+`four', `five', and `six' in the second.
+
+
+File: eplain.info, Node: Margins, Next: Multiple columns, Prev: Tables, Up: User definitions
+
+4.15 Margins
+============
+
+TeX's primitives describe the type area in terms of an offset from the
+upper left corner, and the width and height of the type. Some people
+prefer to think in terms of the "margins" at the top, bottom, left, and
+right of the page, and most composition systems other than TeX conceive
+of the page laid out in this way. Therefore, Eplain provides commands
+to directly assign and increment the margins.
+
+`\topmargin = DIMEN'
+`\bottommargin = DIMEN'
+`\leftmargin = DIMEN'
+
+`\rightmargin = DIMEN'
+ These commands set the specified margin to the DIMEN given. The
+ `=' and the spaces around it are optional. The control sequences
+ here are not TeX registers, despite appearances; therefore,
+ commands like `\showthe\topmargin' will not do what you expect.
+
+`\advancetopmargin by DIMEN'
+`\advancebottommargin by DIMEN'
+`\advanceleftmargin by DIMEN'
+
+`\advancerightmargin by DIMEN'
+ These commands change the specified margin by the DIMEN given.
+
+ Regardless of whether you use the assignment or the advance commands,
+Eplain always changes the type area in response, not the other margins.
+For example, when TeX starts, the left and right margins are both one
+inch. If you then say `\leftmargin = 2in', the right margin will
+remain at one inch, and the width of the lines (i.e., `\hsize') will
+decrease by one inch.
+
+ When you use any of these commands, Eplain computes the old value of
+the particular margin, by how much you want to change it, and then
+resets the values of TeX's primitive parameters to correspond.
+Unfortunately, Eplain cannot compute the right or bottom margin without
+help: you must tell it the full width and height of the final output
+page. It defines two new parameters for this:
+
+`\paperheight'
+ The height of the output page; default is 11truein.
+
+`\paperwidth'
+ The width of the output page; default is 8.5truein.
+
+ If your output page has different dimensions than this, you must
+reassign to these parameters, as in
+
+ \paperheight = 11truein
+ \paperwidth = 17truein
+
+
+File: eplain.info, Node: Multiple columns, Next: Footnotes, Prev: Margins, Up: User definitions
+
+4.16 Multiple columns
+=====================
+
+Eplain provides for double, triple, and quadruple column output: say
+`\doublecolumns', `\triplecolumns', or `\quadcolumns', and from that
+point on, the manuscript will be set in columns. To go back to one
+column, say `\singlecolumn'.
+
+ You may need to invoke `\singlecolumn' to balance the columns on the
+last page of output.
+
+ To do a "column eject", i.e., move to the top of the next column, do
+`\columnfill'. This does not actually force an eject, however: it
+merely inserts a kern of size `\@normalvsize' minus `\pagetotal'
+(`\@normalvsize' being the usual height of the page; to implement
+multicolumns, Eplain multiplies `\vsize' itself by the number of
+columns). In most circumstances, a column break will be forced after
+this kern (during the column splitting operation when the whole page is
+output), as desired.
+
+ The columns are separated by the value of the dimen parameter
+`\gutter'. Default value is two picas. If you want to add vertical
+material between the columns, use `\gutterbox'. For example, to put a
+vertical line between columns, define `\gutterbox' as
+
+ \def\gutterbox{\vbox to \dimen0{\vfil\hbox{\vrule height\dimen0}\vfil}}%
+
+The dimension counter `\dimen0' contains the height of the column.
+
+ All the `\...columns' macros insert the value of the glue parameter
+`\abovecolumnskip' before the multicolumn text, and the value of the
+glue parameter `\belowcolumnskip' after it. The default value for both
+of these parameters is `\bigskipamount', i.e., one linespace in plain
+TeX.
+
+ The macros take into account only the insertion classes defined by
+plain TeX; namely, footnotes and `\topinsert's. If you have additional
+insertion classes, you will need to change the implementation.
+
+ Also, Eplain makes insertions the full page width. There is no
+provision for column-width insertions.
+
+
+File: eplain.info, Node: Footnotes, Next: Fractions, Prev: Multiple columns, Up: User definitions
+
+4.17 Footnotes
+==============
+
+The most common reference mark for footnotes is a raised number,
+incremented on each footnote. The `\numberedfootnote' macro provides
+this. It takes one argument, the footnote text.
+
+ If your document uses only numbered footnotes, you could make typing
+`\numberedfootnote' more convenient with a command such as:
+
+ \let\footnote = \numberedfootnote
+
+After doing this, you can type your footnotes as `\footnote{FOOTNOTE
+TEXT}', instead of as `\numberedfootnote{FOOTNOTE TEXT}'.
+
+ Eplain keeps the current footnote number in the count register
+`\footnotenumber'. So, to reset the footnote number to zero, as you
+might want to do at, for example, the beginning of a chapter, you could
+say `\footnotenumber=0'.
+
+ Plain TeX separates the footnote marker from the footnote text by an
+en space (it uses the `\textindent' macro). In Eplain, you can change
+this space by setting the dimension register `\footnotemarkseparation'. The
+default is still an en.
+
+ You can produce a space between footenotes by setting the glue
+register `\interfootnoteskip'. The default is zero.
+
+ `\parskip' is also set to zero by default before the beginning of
+each footnote (but not for the text of the footnote).
+
+ You can also control footnote formatting in a more general way:
+Eplain expands the token register `\everyfootnote' before a footnote is
+typeset, but after the default values for all the parameters have been
+established. For example, if you want your footnotes to be printed in
+seven-point type, indented by one inch, you could say:
+
+ \everyfootnote = {\sevenrm \leftskip = 1in}
+
+ By default, an `\hrule' is typeset above each group of footnotes on
+a page. You can control the dimensions of this rule by setting the
+dimension registers `\footnoterulewidth' and `\footnoteruleheight'. The
+space between the rule and the first footnote on the page is determined
+by the dimension register `\belowfootnoterulespace'. If you don't want
+any rule at all, set `\footenoteruleheight=0pt', and, most likely,
+`\belowfootnoterulespace=0pt'. The defaults for these parameters
+typeset the rule in the same way as plain TeX: the rule is 0.4 points
+high, 2 true inches wide, with 2.6 points below it.
+
+ The space above the rule and below the text on the page is controlled
+by the glue register `\skip\footins'. The default is a plain TeX
+`\bigskip'.
+
+ Eplain can create hypertext links for the footnote marks (*note
+Footnote hyperlinks::).
+
+
+File: eplain.info, Node: Fractions, Next: Paths, Prev: Footnotes, Up: User definitions
+
+4.18 Fractions
+==============
+
+Exercise 11.6 of `The TeXbook' describes a macro `\frac' for setting
+fractions, but `\frac' never made it into plain TeX. So Eplain
+includes it.
+
+ `\frac' typesets the numerator and denominator in `\scriptfont0',
+slightly raised and lowered. The numerator and denominator are
+separated by a slash. The denominator must be enclosed in braces if
+it's more than one token long, but the numerator need not be. (This is
+a consequence of `\frac' taking delimited arguments; see page 203 of
+`The TeXbook' for an explanation of delimited macro arguments.)
+
+ For example, `\frac 23/{64}' turns `23/64' into 23/64 (you can't see
+the difference in the Info file).
+
+
+File: eplain.info, Node: Paths, Next: Logos, Prev: Fractions, Up: User definitions
+
+4.19 Paths
+==========
+
+When you typeset long pathnames, electronic mail addresses, or other
+such "computer" names, you would like TeX to break lines at punctuation
+characters within the name, rather than trying to find hyphenation
+points within the words. For example, it would be better to break the
+email address `letters@alpha.gnu.ai.mit.edu' at the `@' or a `.',
+rather than at the hyphenation points in `letters' and `alpha'.
+
+ If you use the `\path' macro to typeset the names, TeX will find
+these good breakpoints. The argument to `\path' is delimited by any
+character other other than `\' which does not appear in the name itself.
+`|' is often a good choice, as in:
+
+ \path|letters@alpha.gnu.ai.mit.edu|
+
+ You can control the exact set of characters at which breakpoints
+will be allowed by calling `\discretionaries'. This takes the same
+sort of delimited argument; any character in the argument will
+henceforth be a valid breakpoint within `\path'. The default set is
+essentially all the punctuation characters:
+
+ \discretionaries |~!@$%^&*()_+`-=#{}[]:";'<>,.?\/|
+
+ If for some reason you absolutely must use `\' as the delimiter
+character for `\path', you can set `\specialpathdelimiterstrue'.
+(Other delimiter characters can still be used.) TeX then processes the
+`\path' argument about four times more slowly.
+
+ The `\path' macro comes from `path.sty', written by Nelson Beebe and
+Philip Taylor and available at
+`http://www.ctan.org/tex-archive/macros/latex/contrib/misc/path.sty'.
+
+
+File: eplain.info, Node: Logos, Next: Boxes, Prev: Paths, Up: User definitions
+
+4.20 Logos
+==========
+
+Eplain redefines the `\TeX' macro of plain TeX to end with `\null', so
+that the proper spacing is produced when `\TeX' is used at the end of a
+sentence. The other ...TeX macros listed here do this, also.
+
+ Eplain defines `\AMSTeX', `\BibTeX' `\AMSLaTeX', `\LAMSTeX', `\LaTeX' `\MF', and
+`\SLiTeX' to produce their respective logos. (Sorry, the logos are not
+shown here.) Some spelling variants of these are also supported.
+
+ All these macros come from `texnames.sty', compiled by Nelson Beebe
+and available at
+`http://www.ctan.org/tex-archive/info/biblio/texnames.sty'.
+
+
+File: eplain.info, Node: Boxes, Next: Checking for PDF output, Prev: Logos, Up: User definitions
+
+4.21 Boxes
+==========
+
+The solid rectangle that Eplain uses as a marker in unordered lists
+(*note Lists::) is available by itself: just say `\blackbox'.
+
+ You can create black boxes of arbitrary size with `\hrule' or
+`\vrule'.
+
+ You can also get unfilled rectangles with `\makeblankbox'. This
+takes two explicit arguments: the height and depth of the rules that
+define the top and bottom of the rectangle. (The two arguments are
+added to get the width of the left and right borders, so that the
+thickness of the border is the same on all four sides.) It also uses,
+as implicit arguments, the dimensions of `\box0' to define the
+dimensions of the rectangle it produces. (The contents of `\box0' are
+ignored.)
+
+ Here is an example. This small raised open box is suitable for
+putting next to numbers in, e.g., a table of contents.
+
+ \def\openbox{%
+ \ht0 = 1.75pt \dp0 = 1.75pt \wd0 = 3.5pt
+ \raise 2.75pt \makeblankbox{.2pt}{.2pt}
+ }
+
+ Finally, you can put a box around arbitrary text with `\boxit'. This
+takes one argument, which must itself be a (TeX) box, and puts a
+printed box around it, separated by `\boxitspace' white space (3 points
+by default) on all four sides. For example:
+
+ \boxit{\hbox{This text is boxed.}}
+
+ The reason that the argument must be a box is that when the text is
+more than one line long, TeX cannot figure out the line length for
+itself. Eplain does set `\parindent' to zero inside `\boxit', since it
+is very unlikely you would want indentation there. (If you do, you can
+always reset it yourself.)
+
+ `\boxit' uses `\ehrule' and `\evrule' so that you can easily adjust
+the thicknesses of the box rules. *Note Rules::.
+
+
+File: eplain.info, Node: Checking for PDF output, Next: Loading LaTeX packages, Prev: Boxes, Up: User definitions
+
+4.22 Checking for PDF output
+============================
+
+pdfTeX is a TeX variant that can output both `.dvi' and `.pdf' (Adobe's
+Portable Document Format) files (see
+`http://www.ctan.org/tex-archive/systems/pdftex'). You might sometimes
+want to know whether the target format is `.pdf' or `.dvi'. The
+`\ifpdf' switch can be used to detect pdfTeX in PDF mode:
+
+ \ifpdf
+ This text is produced when pdfTeX is in PDF mode.
+ \else
+ This text is produced when pdfTeX is in DVI mode,
+ or when some program other than pdfTeX is used.
+ \fi
+
+ Keep in mind that `\ifpdf' is set based on the value of the
+`\pdfoutput' primitive of pdfTeX at the time Eplain is loaded. If you
+change the value of `\pdfoutput' after you load Eplain, `\ifpdf' will
+not reflect the change.
+
+ Eplain defines `\ifpdf' by incorporating Heiko Oberdiek's
+`ifpdf.sty', which is available at
+`http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/ifpdf.sty'.
+
+
+File: eplain.info, Node: Loading LaTeX packages, Prev: Checking for PDF output, Up: User definitions
+
+4.23 Loading LaTeX packages
+===========================
+
+Eplain provides a limited support for loading LaTeX packages (`.sty'
+files--not `.cls'). This will mostly work for packages which were
+designed with plain TeX compatibility in mind, which means that most
+LaTeX packages cannot be loaded. The packages which are known to work
+are listed below (*note Packages known to work::). If you discover a
+working package which is not in the list, please report it to the
+Eplain mailing list (*note Introduction::).
+
+ To set up a pseudo-LaTeX environment for the packages, Eplain uses
+`miniltx.tex'
+(`http://www.ctan.org/tex-archive/macros/plain/graphics/miniltx.tex')
+from the LaTeX graphics collection, written by David Carlisle and
+Sebastian Rahtz (the collection is available at
+`http://www.ctan.org/tex-archive/macros/latex/required/graphics').
+Eplain extends `miniltx.tex' to provide some additional features, e.g.,
+support for package options.
+
+* Menu:
+
+* The \usepackage command:: Command to load packages.
+* Environment for loading packages:: Environment for the \usepackage commands.
+* Packages known to work:: Supported packages.
+* Packages known not to work:: Packages known not to work with Eplain.
+
+
+File: eplain.info, Node: The \usepackage command, Next: Environment for loading packages, Up: Loading LaTeX packages
+
+4.23.1 The `\usepackage' command
+--------------------------------
+
+`\usepackage' loads a LaTeX package. Its syntax is similar to that of
+LaTeX's `\usepackage' command:
+
+ \usepackage[OPTIONS]{PACKAGES}[VERSION]
+
+where OPTIONS is a comma-separated list of package options, PACKAGES is
+a comma-separated list of packages to load (without the `.sty' suffix),
+and VERSION is a package version number given as a date in the format
+`YYYY/MM/DD'. If an older version of the package is found, a warning
+is issued. If several packages are loaded within a single `\usepackage'
+command, the OPTIONS will be applied to each of the packages. As
+usual, parameters in square brackets are optional and can be omitted
+(together with the square brackets).
+
+ For example:
+
+ \usepackage[foo,bar]{pack1,pack2}[2005/08/29]
+
+will load packages `pack1' and `pack2', each with the options `foo' and
+`bar', and will check that each of the packages are dated 2005/08/29 or
+newer.
+
+
+File: eplain.info, Node: Environment for loading packages, Next: Packages known to work, Prev: The \usepackage command, Up: Loading LaTeX packages
+
+4.23.2 Environment for loading packages
+---------------------------------------
+
+Some packages request that certain commands are executed after all
+packages have been loaded. In LaTeX, this means that the commands are
+executed at the beginning of the document, after the so-called
+"preamble". Neither plain TeX nor Eplain have any kind of preamble;
+therefore, Eplain requires that all packages be loaded inside a
+`\beginpackages...\endpackages' block, for example:
+
+ \beginpackages
+ \usepackage[foo,bar]{pack1}
+ \usepackage{pack2}
+ \endpackages
+
+This requirement enables Eplain to execute the "delayed" commands at
+the end of the `\beginpackages...\endpackages' block.
+
+ For the same reason, it is advisable to specify only one such block
+per document, just like there is only one preamble in LaTeX.
+
+ Some packages (and the pseudo-LaTeX environment, `miniltx.tex')
+redefine TeX's primitive `\input' to be a macro. Non-primitive
+`\input' is probably not what the user expects under plain TeX.
+Therefore, at the beginning of the `\beginpackages...\endpackages'
+block Eplain saves the meaning of `\input' as `\eplaininput' and
+restores the original `\input' at the end of the block. This usually
+means that the primitive `\input' is restored, unless you (or some
+other macro package you've loaded directly) have redefined it before
+calling `\beginpackages'. In case you need to access the
+package-provided `\input', Eplain saves it as `\packageinput'.
+
+ Sometimes you may encounter packages which make conflicting
+redefinitions of `\input'. Common symptoms are TeX spewing
+incomprehensible error messages or hanging in a loop at a call to
+`\input'. This sometimes can be cured by restoring `\input' to
+`\eplaininput' before loading each package. For example:
+
+ \beginpackages
+ \usepackage{pack1}
+ \let\input\eplaininput
+ \usepackage{pack2}
+ \endpackages
+
+
+File: eplain.info, Node: Packages known to work, Next: Packages known not to work, Prev: Environment for loading packages, Up: Loading LaTeX packages
+
+4.23.3 Packages known to work
+-----------------------------
+
+The following table lists packages that had been tested and are known
+to work with Eplain, and locations where you can find manuals for these
+packages. Some of the short descriptions of the packages were taken
+from the documentation for those packages.
+
+autopict (`2001/06/04 v1.1j Picture mode autoload file')
+ `http://tug.org/eplain/misc/ltpictur.pdf'
+
+ This is the LaTeX "picture mode", started by `\begin{picture}' and
+ ended by `\end{picture}' (in LaTeX, this package is not explicitly
+ loaded since it is part of the LaTeX kernel). It provides
+ commands to draw simple figures inside your document without
+ resorting to any external tools.
+
+color (`1999/02/16 v1.0i Standard LaTeX Color (DPC)')
+graphics (`2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR)')
+graphicx (`1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)')
+ `http://www.ctan.org/tex-archive/macros/latex/required/graphics/grfguide.pdf'
+
+ These packages are from the LaTeX graphics collection. They
+ provide commands for changing text/page colors, text rotation and
+ scaling, and much more.
+
+ *Warning 1:* If you encounter problems loading one of these
+ packages under pdfTeX (more specifically, when pdfTeX reads
+ `supp-mis.tex'), the cause may be an outdated `supp-mis.tex' (part
+ of ConTeXt, a typesetting system for TeX) installed on your
+ system. The problem was fixed in `supp-mis.tex'
+ version 2004.10.26. You can obtain up-to-date versions of
+ `supp-mis.tex' and the accompanying `supp-pdf.tex' from
+ `http://www.ctan.org/tex-archive/macros/pdftex/graphics'. To
+ convince TeX to use the new files, you have the following options
+ in the decreasing order of preference:
+
+ 1. put the new files in the same directory with your document;
+
+ 2. overwrite the outdated files installed by your TeX
+ distribution;
+
+ 3. install the new `supp-mis.tex' and `supp-pdf.tex' files in
+ the relevant subdirectory of your local `texmf' tree (for
+ info on TeX directory structure see
+ `http://www.tex.ac.uk/cgi-bin/texfaq2html?label=tds');
+
+ 4. upgrade your ConTeXt installation.
+
+ Note that option 1 is the safest but provides the fix only for
+ your current document. Options 2 and 3 will usually suffice for
+ Eplain but may break ConTeXt. Option 4 is the most general but is
+ more complicated than the first three. Be sure to backup any
+ files you overwrite. Also keep in mind that upgrading your TeX
+ distribution may overwrite files you install in the system `texmf'
+ tree.
+ *End of warning 1.*
+
+ *Warning 2:* If you encounter problems using the `\pagecolor'
+ command from the `color.sty' package under pdfTeX, the cause may
+ be an outdated pdfTeX color and graphics driver `pdftex.def'. The
+ problem was fixed in `pdftex.def' version 0.03p. You can obtain
+ an up-to-date version from
+ `http://www.ctan.org/tex-archive/graphics/pdftex/pdftex.def'.
+ *End of warning 2.*
+
+ The `graphics'/`graphicx' packages have the option `draft' which
+ instructs `\includegraphics' not to include the graphics but
+ instead typeset a box with the dimensions of the graphics and the
+ name of the graphics file in typewriter type at the center of the
+ box. These packages expect the LaTeX-provided command `\ttfamily'
+ to switch to the typewrite type. This command is not defined by
+ `miniltx.tex', therefore Eplain defines it and makes it equivalent
+ to plain TeX's `\tt'.
+
+ *Note Hyperlinks (xhyper.tex)::, for the demonstration of text
+ rotation and graphics inclusion using the `graphicx' package, and
+ using the `color' package to colorize hypertext links.
+
+ Klaus Ho"ppner has written a nice introduction to the LaTeX
+ graphics packages and different graphics formats. You can
+ download it from
+ `http://www.tug.org/pracjourn/2005-3/hoeppner'
+
+epstopdf (`2001/02/04 v1.1 Conversion with epstopdf on the fly (HO)')
+ `http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek'
+
+ This package does on-the-fly conversion of Encapsulated PostScript
+ (EPS) graphics into Portable Document Format (PDF) graphics for
+ inclusion with the `\includegraphics' command from the
+ `graphics'/`graphicx' packages, so that you do not have to
+ explicitly call the `epstopdf' script.
+
+psfrag (`1998/04/11 v3.04 PSfrag (MCG)')
+ `http://www.ctan.org/tex-archive/macros/latex/contrib/psfrag/pfgguide.pdf'
+
+ PSfrag allows the user to precisely overlay Encapsulated PostScript
+ (EPS) files with arbitrary (La)TeX constructions. In order to
+ accomplish this, the user places a simple text "tag" in the
+ graphics file, as a "position marker" of sorts. Then, using simple
+ (La)TeX commands, the user instructs PSfrag to remove that tag from
+ the figure, and replace it with a properly sized, aligned, and
+ rotated (La)TeX equation.
+
+soul (`2003/11/17 v2.4 letterspacing/underlining (mf)')
+ `http://www.ctan.org/tex-archive/macros/latex/contrib/soul'
+
+ This package provides hyphenatable letterspacing (spacing out),
+ underlining, and some derivatives. The package is optimized for
+ LaTeX, but works with plain TeX--you don't actually need to load
+ it with the `\usepackage' command, just say `\input soul.sty'. If
+ you intend to use the highlighting macros of `soul', don't forget
+ to load the `color' package.
+
+url (`2005/06/27 ver 3.2 Verb mode for urls, etc.')
+ `http://www.ctan.org/tex-archive/macros/latex/contrib/misc/url.sty'
+
+ This package provides a form of `\verbatim' that allows line
+ breaks at certain characters or combinations of characters,
+ accepts reconfiguration, and can usually be used in the argument to
+ another command. It is intended for email addresses, hypertext
+ links, directories/paths, etc., which normally have no spaces.
+
+ Eplain can create hypertext links with the `\url' command (*note
+ URL hyperlinks::).
+
+ Be sure to get a version dated at least 2005/06/27, as older
+ versions have problems in plain TeX.
+
+
+File: eplain.info, Node: Packages known not to work, Prev: Packages known to work, Up: Loading LaTeX packages
+
+4.23.4 Packages known not to work
+---------------------------------
+
+The following packages are known not to work with Eplain:
+
+hyperref
+ `http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref'
+
+ This package depends heavily on LaTeX, so that it is mostly
+ unusable outside of LaTeX. Eplain provides its own macros for
+ creating hyperlinks, see *Note Hyperlinks::.
+
+pict2e (`2005/07/15 v0.2r Improved picture commands (HjG,RN)')
+ `http://www.ctan.org/tex-archive/macros/latex/contrib/pict2e'
+
+xcolor (`2005/06/06 v2.03 LaTeX color extensions (UK)')
+ `http://www.ctan.org/tex-archive/macros/latex/contrib/xcolor'
+
+
+File: eplain.info, Node: Hyperlinks, Next: Arrow theoretic diagrams, Prev: User definitions, Up: Top
+
+5 Hyperlinks
+************
+
+This chapter describes the support which Eplain provides for hypertext
+links ("hyperlinks" for short). Hyperlinks can be created implicitly
+by the cross-reference, indexing and other macros in Eplain. Macros
+for constructing explicit hyperlinks are also provided.
+
+* Menu:
+
+* Introduction to hyperlinks::
+* Explicit hyperlinks::
+* Implicit hyperlinks::
+* Hyperlink drivers::
+* Setting hyperlink types and options::
+* Turning hyperlinks on/off::
+
+
+File: eplain.info, Node: Introduction to hyperlinks, Next: Explicit hyperlinks, Up: Hyperlinks
+
+5.1 Introduction to hyperlinks
+==============================
+
+The original TeX engine has no built-in support for hyperlinks (a.k.a.
+hypertext links). Many of the present-day file formats with
+hyperlinking capabilities did not even exist at the time TeX was
+written. However, TeX's `\special' primitive can be used to instruct
+TeX to write special directives into its `.dvi' output file. These
+directives are not interpreted by TeX in any way; they are intended for
+programs which process the `.dvi' files produced by TeX, be it printing
+or converting to other formats, such as `.ps' or `.pdf'.
+
+ Another approach is to extend the original TeX engine with the
+ability to generate one of the hyperlinking formats; TeX's set of
+primitives can be extended to include hyperlink commands. This is the
+approach used by the pdfTeX engine, which is capable of producing
+`.pdf' files directly from the TeX source, skipping the `.dvi'
+generation and processing step.
+
+ It turns out that the sets of commands for different formats are
+mostly not interchangeable, as each of the file formats has its own
+quirks and capabilities. And this is where Eplain "hyperlink drivers"
+come into play.
+
+ In order for Eplain to generate proper commands, Eplain has to know
+two things: which engine or `.dvi' processor you are using, and the set
+of commands it understands.
+
+ The knowledge about the commands that the various processors
+understand is programmed into Eplain's hyperlink drivers. Eplain
+provides three drivers: `hypertex' (implementation of the HyperTeX
+standard, see `http://arxiv.org/hypertex'), and `pdftex' and `dvipdfm'
+(named after the programs which process the hyperlink commands, pdfTeX
+and dvipdfm). Therefore, Eplain can only produce HyperTeX commands and
+hyperlink commands for one of these two programs--except that the
+extended `dvipdfmx' program can be used as well as the original
+`dvipdfm', since they are compatible.
+
+ To tell Eplain which `.dvi' processor or extended TeX engine you are
+using, use the command `\enablehyperlinks'.
+
+ For example:
+
+ \enablehyperlinks
+
+instructs Eplain to attempt to automatically detect which driver to
+use, as follows: if it detects pdfTeX in PDF mode, it loads the
+`pdftex' driver. If it does not detect pdfTeX in PDF mode, the
+`hypertex' driver is loaded. The detection is based on the `\ifpdf'
+switch (*note Checking for PDF output::).
+
+ If necessary, you can explicitly specify the driver name:
+
+ \enablehyperlinks[pdftex]
+
+will start producing hyperlinks under the assumption that you are using
+pdfTeX.
+
+ Eplain does not produce any hyperlinks until you explicitly enable
+them with `\enablehyperlinks'. For one thing, this keeps Eplain
+backward-compatible with previous releases without hyperlink support.
+For another, you may be using a program other than pdfTeX or `dvipdfm',
+which does not understand their hyperlink commands or the HyperTeX
+commands.
+
+Concepts and Terminology
+------------------------
+
+In general, hyperlinks work as follows. You mark some place in your
+document as a hyperlink destination, associating a "hyperlink label"
+with that destination. Next, somewhere within your document, you
+create a hyperlink, using a label to identify the destination you want
+this link to point to. A hyperlink is a region in the document (which
+can take many forms, for example, text or a picture); when a user
+clicks on that region, they will be taken to a place in the document
+marked by the corresponding destination. The following two sections
+(*Note Explicit hyperlinks::, and *Note Implicit hyperlinks::) describe
+the macros you can use to define destinations and create links pointing
+to those destinations.
+
+ In the rest of this chapter, we will often need to refer to links and
+destinations jointly, in which case we will use the term "hyperlinks".
+We will use the terms "links" and "destinations" in cases when we need
+to refer specifically to links or destinations.
+
+ Hyperlink drivers provide several kinds of links and destinations.
+We will refer to them as "link types" and "destination types".
+
+ For example, one of the destination types that the `pdftex' driver
+provides is the `xyz' type; when the user follows a link pointing to an
+`xyz' destination, the exact location marked by that destination is
+displayed. Another destination type provided by the `pdftex' driver is
+the `fit' type; when the user follows a link pointing to a `fit'
+destination, the page containing that destination is zoomed to fit into
+the window in which the document is displayed.
+
+ Similarly, drivers support various link types. For example, with the
+`pdftex' driver, the usual link type used to refer to destinations in
+the current document is called `name'. You can also create a link
+pointing to another local document (by using the `filename' link type)
+or to a URL (by using the `url' link type).
+
+ In addition, each hyperlink driver supports a number of destination
+and link "options". By setting these options you can customize
+hyperlink parameters (e.g., the thickness of the border drawn around a
+hyperlink) or pass information to hyperlinks (for example, file name of
+a document, for a link pointing to a destination in another document).
+
+ *Note Hyperlink drivers::, for the description of hyperlink types and
+options supported by the drivers. *Note Setting hyperlink types and
+options::, for the information on how to set hyperlink options.
+
+
+File: eplain.info, Node: Explicit hyperlinks, Next: Implicit hyperlinks, Prev: Introduction to hyperlinks, Up: Hyperlinks
+
+5.2 Explicit hyperlinks
+=======================
+
+Explicit hyperlinks are created by you, in the source of your document.
+The simplest command is `\hldest', which marks the current position in
+your document as a destination:
+
+ \hldest{TYPE}{OPTIONS}{LABEL}
+
+Here TYPE is one of the destination types supported by the hyperlink
+driver (*note Hyperlink drivers::), OPTIONS is a comma-separated list
+of option assignments, and LABEL is the hyperlink label to associate
+with this destination. This label will identify the destination when
+creating links pointing to this destination. For example, with the
+`pdftex' driver, the command
+
+ \hldest{xyz}{zoom=2000}{index}
+
+creates a destination of type `xyz' ("the current position"), sets the
+magnification ratio for this destination to be 200%, and associates the
+label `index' with the destination.
+
+ Another command, `\hlstart', paired with `\hlend', turns all
+intervening material into a link:
+
+ \hlstart{TYPE}{OPTIONS}{LABEL} ... \hlend
+
+Here TYPE, OPTIONS and LABEL have the same meaning as for `\hldest'.
+Continuing the previous example,
+
+ \hlstart{name}{bstyle=U,bwidth=2}{index} Index\hlend
+
+typesets the word `Index' as a link with underline border of
+width 2 PostScript points, pointing to the named destination `index'
+defined in the previous example. (The other options, like highlight
+mode and border color, are determined by the defaults, *note Setting
+default types and options::).
+
+ The LABEL argument of both `\hldest' and `\hlstart' can contain
+special characters (such as `#', `%', `&', `~', etc.) without any
+escaping. This is especially important for URL links supported by some
+drivers (*note Hyperlink drivers::).
+
+ Both `\hldest' and `\hlstart' ignore following spaces.
+
+ Both `\hldest' and `\hlstart' expand the first token of OPTIONS
+once, so you can save a list of options in a macro and pass it for the
+OPTIONS. For example:
+
+ \def\linkopts{bstyle=U,bwidth=2}
+ \hlstart{name}{\linkopts}{index}Index\hlend
+
+is functionally equivalent to the previous example.
+
+ *Note Hyperlinks (xhyper.tex)::, for a demonstration of the usage of
+explicit hyperlinks.
+
+
+File: eplain.info, Node: Implicit hyperlinks, Next: Hyperlink drivers, Prev: Explicit hyperlinks, Up: Hyperlinks
+
+5.3 Implicit hyperlinks
+=======================
+
+"Implicit hyperlinks" are hyperlinks created implicitly by various
+Eplain macros, such as the macros for citations, cross-references,
+indexing, etc.
+
+ All such macros are divided into "link groups" and "destination
+groups" (or "linkgroups" and "destgroups" for short) so that parameters
+can be set individually for each group. For example, all equation
+macros which define a destination are assigned to the `eq' destgroup;
+equation macros which create a link are assigned to the `eq' linkgroup.
+By setting parameters for the `eq' linkgroup (destgroup), you can
+uniformly customize all links (destinations) related to equation
+references, without interfering with settings for the other groups.
+
+ *Note Setting hyperlink types and options::, for information on how
+to set parameters for a group.
+
+ Here is the list of the linkgroups:
+
+ hrefint, hrefext, url, cite, ref, xref, eq, idx, foot, footback.
+
+ And here are the destgroups:
+
+ bib, li, definexref, xrdef, eq, idx, foot, footback.
+
+ *Note Hyperlinks (xhyper.tex)::, for a demonstration of the usage of
+implicit hyperlinks.
+
+ The following subsections describe each of the linkgroups and
+destgroups and the hyperlink support provided.
+
+* Menu:
+
+* General hyperlinks:: hrefint, hrefext
+* URL hyperlinks:: url
+* Citation hyperlinks:: cite, bib
+* List hyperlinks:: li
+* Cross-reference hyperlinks:: definexref, ref
+* Page reference hyperlinks:: xrdef, xref
+* Equation reference hyperlinks:: eq
+* Index hyperlinks:: idx
+* Footnote hyperlinks:: foot, footback
+* Contents hyperlinks::
+
+
+File: eplain.info, Node: General hyperlinks, Next: URL hyperlinks, Up: Implicit hyperlinks
+
+5.3.1 General hyperlinks: hrefint, hrefext
+-------------------------------------------
+
+`\href{URL}{TEXT}' typesets TEXT as a link to URL. It basically does
+what the explicit hyperlink macros do (*note Explicit hyperlinks::),
+but is more convenient (at the expense of flexibility).
+
+ If URL starts with `#', the rest of URL is assumed to be a local
+hyperlink destination name (destination within the same document).
+Parameters for these links can be set by customizing the `hrefint'
+linkgroup. For example:
+
+ See \href{#intro}{Introduction}
+
+will make `Introduction' into an internal link, which might have been
+created, e.g., with `\xrdef{intro}'.
+
+ If URL does not start with `#', it is assumed to be a URL link.
+Parameters for these links can be set by customizing the `hrefext'
+linkgroup. The special characters (such as `#' and `~') in the URL
+don't need to be escaped. For example:
+
+ \href{http://tug.org/eplain/doc/eplain.html#Hyperlinks}{Hyperlinks
+ in Eplain}
+
+*Note URL hyperlinks::, for another way to create URL hyperlinks.
+
+ The TEXT argument of `\href' can contain verbatim text (*note
+Verbatim listing::) or other macros which manipulate character
+catcodes. For example:
+
+ \href{#WeirdChars}{The weird chars \verbatim #&%$~|endverbatim}
+
+ `\href' does not currently handle other link types, such as `file:'
+and `run:' links.
+
+
+File: eplain.info, Node: URL hyperlinks, Next: Citation hyperlinks, Prev: General hyperlinks, Up: Implicit hyperlinks
+
+5.3.2 URL hyperlinks: url
+--------------------------
+
+The `url' linkgroup covers the `\url' command from the LaTeX package `url'
+(*note Packages known to work::), as well as any new `\url'-like
+commands you define. The type for this linkgroup is set to `url' by
+the drivers which support this link type. `url' links use the
+parameter to the `\url' command as the URL to point to.
+
+ You may be using the `\url' command to typeset something other than
+a URL, e.g., a path, for which you do not want a link to be created; in
+that case, you can disable the `url' linkgroup with the command
+`\hloff[url]' (*note Turning hyperlinks on/off for a group::).
+
+ By default, URL (and other types of) links are boxed, so that they
+are visually marked even if you do not load the LaTeX `color' package
+(*note Loading LaTeX packages::) and therefore link text is not
+colored. You can see the effect by compiling the following code
+snippet (be sure to get a modern `url.sty', older versions do not work
+in plain TeX; *note Packages known to work::):
+
+ \input eplain
+ \beginpackages
+ \usepackage{url}
+ \endpackages
+
+ \enablehyperlinks
+
+ \url{http://foo/bar}
+ \bye
+
+ If the hyperlink driver you use supports the link option `bwidth'
+(*note Hyperlink drivers::), you can produce colored links with no
+border around them. Try this:
+
+ \input eplain
+ \beginpackages
+ \usepackage{url}
+ \usepackage{color}
+ \endpackages
+
+ \enablehyperlinks
+ \hlopts{bwidth=0}
+
+ \url{http://foo/bar}
+ \bye
+
+The command `\hlopts{bwidth=0}' sets border width to zero as the
+default for all links, and loading the `color' package automatically
+colors links using the default color (*note Options supported by all
+drivers::). If you want the border width setting to apply to URL links
+only, say `\hlopts[url]{bwidth=0}' (*note Setting hyperlink types and
+options::).
+
+
+File: eplain.info, Node: Citation hyperlinks, Next: List hyperlinks, Prev: URL hyperlinks, Up: Implicit hyperlinks
+
+5.3.3 Citation hyperlinks: cite, bib
+-------------------------------------
+
+The `cite' linkgroup includes only the `\cite' command (*note
+Citations::). `\cite' turns each of the references in the list into a
+link pointing to the respective bibliography entry produced by the
+`\bibliography' command.
+
+ The `bib' destgroup includes the macros related to the
+`\bibliography' command (*note Citations::). `\bibliography' inputs a
+`.bbl' file, which contains a list of bibliography entries. For each
+of the entries, a destination is defined.
+
+ Both commands use the citation label as the hyperlink label.
+
+
+File: eplain.info, Node: List hyperlinks, Next: Cross-reference hyperlinks, Prev: Citation hyperlinks, Up: Implicit hyperlinks
+
+5.3.4 List hyperlinks: li
+--------------------------
+
+The `li' destgroup consists of the `\li' command (*note Lists::), which
+defines a destination if you supply the optional argument
+(cross-reference label). This label is also used as the hyperlink
+label.
+
+
+File: eplain.info, Node: Cross-reference hyperlinks, Next: Page reference hyperlinks, Prev: List hyperlinks, Up: Implicit hyperlinks
+
+5.3.5 Cross-reference hyperlinks: definexref, ref
+--------------------------------------------------
+
+The `definexref' destgroup is for the `\definexref' command (*note
+Defining generic references::). `\definexref' defines a destination
+using the cross-reference label (the first argument) as the hyperlink
+label.
+
+ The `ref' linkgroup includes `\refn' and `\xrefn' (they are
+synonyms), `\ref', and `\refs' (*note Using generic references::).
+
+ `\refn' turns the cross-reference it produces into a link, using the
+cross-reference label as the hyperlink label. If an optional argument
+is present, it is tied by `\reftie' to the reference and become part of
+the link.
+
+ `\ref' works similarly to `\refn'. It takes an optional argument,
+which is treated the same way as the optional argument to `\refn'. In
+addition, `\ref' can produce a "class word". Both the optional
+argument and the class word become part of the link, when present. The
+cross-reference is tied by `\reftie' to the preceding word. The
+optional argument is separated from the class word by `\refspace'.
+
+ Unlike `\ref', `\refs' does not take an optional argument and does
+not make the class word part of the link, which is appropriate for its
+intended use.
+
+
+File: eplain.info, Node: Page reference hyperlinks, Next: Equation reference hyperlinks, Prev: Cross-reference hyperlinks, Up: Implicit hyperlinks
+
+5.3.6 Page reference hyperlinks: xrdef, xref
+---------------------------------------------
+
+The `xrdef' destgroup is for `\xrdef' (*note Page references::).
+`\xrdef' defines a destination using cross-reference label as the
+hyperlink label.
+
+ The `xref' linkgroup includes the `\xref' command (*note Page
+references::). `\xref' turns its optional argument (followed by
+`\refspace'), `\xrefpageword' and the cross-reference (page number)
+into a link, using the cross-reference label as the hyperlink label.
+
+
+File: eplain.info, Node: Equation reference hyperlinks, Next: Index hyperlinks, Prev: Page reference hyperlinks, Up: Implicit hyperlinks
+
+5.3.7 Equation reference hyperlinks: eq
+----------------------------------------
+
+All commands that define equation labels are part of the `eq' destgroup.
+These are `\eqdef', `\eqdefn', `\eqsubdef' and `\eqsubdefn' (*note
+Equation references::). All these commands use the equation label as
+the hyperlink label. However, if the equation label is empty, they
+make up a (hopefully) unique hyperlink label for the destination. This
+label will be used for the link when you refer to this empty-labeled
+equation with one of the equation reference macros.
+
+ The command `\phantomeqlabel' is called to generate hyperlink labels
+for the empty-labeled equations. By default, it produces the labels in
+the format `PHEQNUMBER', where NUMBER comes from the count register
+`\phantomeqnumber'; this count register is incremented at every
+empty-labeled equation definition.
+
+ The commands `\eqref' and `\eqrefn' (*note Equation references::)
+form the `eq' linkgroup. These commands take an optional argument,
+which, when present, is tied with `\reftie' to the equation reference
+and becomes part of the link. The equation label is used for the
+hyperlink label; if the label is empty, the link is for the label
+generated for the last empty-labeled equation.
+
+
+File: eplain.info, Node: Index hyperlinks, Next: Footnote hyperlinks, Prev: Equation reference hyperlinks, Up: Implicit hyperlinks
+
+5.3.8 Index hyperlinks: idx
+----------------------------
+
+All indexing commands (`\idx', `\idxname', `\idxmarked',
+`\idxsubmarked' and their silent equivalents, *note Indexing
+commands::) form the `idx' destgroup. The `idx' linkgroup consists of
+the macros which are used to typeset the index when you say `\readindexfile{INDEX-LETTER}'
+(*note Typesetting an index::).
+
+ To create the links in index entries, Eplain uses MakeIndex's
+"encapsulation" feature. When you use an indexing macro to mark an
+index term, Eplain writes out a line to the `.idx' file of the
+following general form:
+
+ \indexentry{ENTRY|PAGEMARKUP}{PAGENO}
+
+where ENTRY is the index entry (converted into the internal format that
+MakeIndex understands), CS is the markup command you specified with the
+`pagemarkup=CS' optional argument to the indexing commands (*note
+Modifying index entries::), and PAGENO is the page number on which the
+term appeared. When processing the `.idx' file, MakeIndex makes the
+page number an argument to the page markup command ("encapsulates" the
+page number), so the page number in the `.ind' file appears as
+`\CS{PAGENO}'. Eplain internally replaces the CS command name with its
+own command, which, in addition to calling the original `\CS'
+encapsulator, turns the page number into a link.
+
+ Eplain provides two approaches to linking page numbers in the index
+to locations of index terms in the text.
+
+* Menu:
+
+* Exact destinations for index terms::
+* Page destinations for index terms::
+* Choosing destination placement::
+* Index page list and page range parsers::
+* Hyperlinks in see and see also entries::
+
+
+File: eplain.info, Node: Exact destinations for index terms, Next: Page destinations for index terms, Up: Index hyperlinks
+
+5.3.8.1 Exact destinations for index terms
+..........................................
+
+In this approach, each command that marks an index term defines a unique
+destination and passes its label on to the `.idx' file as part of the
+`\indexentry' command. The `\indexentry' line that Eplain writes to
+the `.idx' file becomes
+
+ \indexentry{ENTRY|hlidx{LABEL}{CS}}{PAGENO}
+
+where `\hlidx' is the command that is defined by Eplain to take three
+arguments: a hyperlink label (LABEL), a name of page number
+encapsulator (CS) and a page number (PAGENO). In the `.ind' file that
+MakeIndex will generate, the page number will now appear as
+
+ \hlidx{LABEL}{CS}{PAGENO}
+
+The result of this command is `\CS{PAGENO}', wrapped up into a link
+pointing to LABEL destination.
+
+ The hyperlink labels for the index terms are generated by the `\hlidxlabel'
+command, by default in the format `IDXNUMBER', where NUMBER is the
+value of the count register `\hlidxlabelnumber'. This count register
+is incremented at each index term.
+
+ The advantage of this approach, as compared to the second approach
+described below, is that links in the index point to exact locations of
+the indexed terms on the page. The disadvantage of this approach is
+that MakeIndex will regard _all_ index entries as distinct, because
+each one contains a (unique) hyperlink label. This disadvantage can be
+partially overcome by the script `idxuniq' distributed with Eplain in
+the `util' directory. This script filters out `\indexentry' lines
+differing only in the hyperlink label but identical otherwise. You
+should process the `.idx' with this script before passing it on to
+MakeIndex. For example:
+
+ prompt$ ./idxuniq file.idx | makeindex > file.ind
+
+Still, this solution is not ideal, as the page-range formation ability
+of MakeIndex will not work, and there will be problems of apparently
+identical index entries clashing (e.g., when a range-end entry appears
+on the same page as another entry with the same definition; `idxuniq'
+will not filter out the second entry).
+
+
+File: eplain.info, Node: Page destinations for index terms, Next: Choosing destination placement, Prev: Exact destinations for index terms, Up: Index hyperlinks
+
+5.3.8.2 Page destinations for index terms
+.........................................
+
+In the second approach, Eplain does not write out any destination labels
+for the index terms. Instead, Eplain writes out a wrapper for page
+number encapsulator which can parse the page number and generate a link
+pointing to the _page_ on which the term appeared. On top of each page
+containing an index term, Eplain defines a destination with label
+produced by `\hlidxpagelabel'. The `\hlidxpagelabel' command takes a
+single argument (page number NUMBER) and by default produces the label
+in the format `IDXPGNUMBER'.
+
+ With this approach, the `\indexentry' line which Eplain writes to
+the `.idx' file looks like this:
+
+ \indexentry{ENTRY|hlidxpage{CS}}{PAGENO}
+
+where `\hlidxpage' is the command that is defined by Eplain to take two
+arguments: a name of page number encapsulator (CS) and a page number
+(PAGENO). In the `.ind' file that MakeIndex will generate, the page
+number will appear as
+
+ \hlidxpage{CS}{PAGENO}
+
+ The advantage of this approach is that all features of MakeIndex are
+intact. The drawback is that links in the index do not point to exact
+locations of indexed terms on a page, but to the top of a page on which
+the term appears.
+
+ Another disadvantage is that this approach depends on the page range
+and page list separators which MakeIndex was configured to output.
+`\hlidxpage' must be able to parse the first page number in a page
+range like `1--4'. In addition, page list parsing is needed because
+MakeIndex combines two consecutive page numbers in one call to the page
+number encapsulator, so `\hlidxpage' can be passed, e.g., `1, 2' for
+the PAGENO. In this last case, `\hlidxpage' splits the two page
+numbers, applies `\CS' to each of them, and makes each of the page
+numbers a link to the appropriate page. Note that this will alter
+typesetting slightly, because now the page list separator (a comma
+followed by a space, by default) is not typeset using the page number
+encapsulator (`\CS').
+
+ Eplain's defaults for the page list and page number delimiters are
+the same as those in MakeIndex, a comma followed by a space (`, ') and
+two dashes (`--'), respectively. If you customize MakeIndex to use
+different delimiters, you must not forget to let Eplain know about them
+with the commands
+
+ \setidxpagelistdelimiter{LIST-DELIM}
+ \setidxpagerangedelimiter{PAGE-DELIM}
+
+(*note Page list and page range parsers::).
+
+
+File: eplain.info, Node: Choosing destination placement, Next: Index page list and page range parsers, Prev: Page destinations for index terms, Up: Index hyperlinks
+
+5.3.8.3 Choosing destination placement
+......................................
+
+The approach that Eplain should use for the index terms can be selected
+in the `\enablehyperlinks' command. The optional argument it accepts is
+a comma-separated list of options. The `idxexact' option selects the
+first approach, `idxpage' the second, and `idxnone' disables hyperlink
+support for the index terms altogether, in case you want to stop Eplain
+from writing its link wrappers into the `.idx' file. The default is
+`idxpage'.
+
+ For example:
+
+ \enablehyperlinks[idxexact]
+
+selects the first approach ("exact index links").
+
+
+File: eplain.info, Node: Index page list and page range parsers, Next: Hyperlinks in see and see also entries, Prev: Choosing destination placement, Up: Index hyperlinks
+
+5.3.8.4 Index page list and page range parsers
+..............................................
+
+The macros that Eplain uses to parse page lists and page ranges,
+`\idxparselist' and `\idxparserange', can sometimes be useful when
+defining page number encapsulators. *Note Page list and page range
+parsers::, for the description of these commands and an example of their
+usage.
+
+
+File: eplain.info, Node: Hyperlinks in see and see also entries, Prev: Index page list and page range parsers, Up: Index hyperlinks
+
+5.3.8.5 Hyperlinks in see and see also entries
+..............................................
+
+There is no automatic support for hyperlinks with "see" and "see also"
+index entries, as there is not enough information to trace the
+parameters of `\indexsee' and `\indexseealso' to corresponding index
+entries. But if desired, this can be implemented with `\hldest' and
+`\hlstart' (*note Explicit hyperlinks::); for example:
+
+ \sidx{semantic theory of truth@%
+ \leavevmode\hldest{}{}{idx:theo truth}semantic theory of truth}
+ ...
+ \sidx[seealso]{truth}[definition of]%
+ {\hlstart{}{}{idx:theo truth}semantic theory of truth\hlend}
+
+
+File: eplain.info, Node: Footnote hyperlinks, Next: Contents hyperlinks, Prev: Index hyperlinks, Up: Implicit hyperlinks
+
+5.3.9 Footnote hyperlinks: foot, footback
+------------------------------------------
+
+The `foot' link and destination groups include the `\numberedfootnote'
+and `\footnote' macros (*note Footnotes::). The `footback' groups
+include the same macros, but control parameters for links and
+destinations created inside the footnote to point back to the footnote
+mark within the text body.
+
+ The macros use hyperlink labels generated by `\hlfootlabel' and `\hlfootbacklabel'.
+The default formats for the labels are `FOOTNUMBER' and `FOOTBNUMBER',
+respectively, where NUMBER is the value of the count register `\hlfootlabelnumber'.
+This register is incremented at every footnote.
+
+ Generally, footnote hyperlinks are not of much use, because the
+footnotes are usually placed on the same page as the footnote mark.
+Therefore, footnote hyperlinks are disabled by default. Here is how you
+can turn them on selectively, without affecting the other kinds of
+hyperlinks (*note Turning hyperlinks on/off for a group::):
+
+ \hldeston[foot,footback]
+ \hlon[foot,footback]
+
+
+File: eplain.info, Node: Contents hyperlinks, Prev: Footnote hyperlinks, Up: Implicit hyperlinks
+
+5.3.10 Contents hyperlinks
+--------------------------
+
+There is currently no special support for hyperlinks in the table of
+contents (*note Contents::), but implementing them with the `\hldest'
+and `\hlstart ... \hlend' commands (*note Explicit hyperlinks::) should
+be possible.
+
+
+File: eplain.info, Node: Hyperlink drivers, Next: Setting hyperlink types and options, Prev: Implicit hyperlinks, Up: Hyperlinks
+
+5.4 Hyperlink drivers
+=====================
+
+This section describes the hyperlink drivers: the types of hyperlinks
+they support, and the options they accept. During the first reading,
+you may only want to skim through this section.
+
+ Some of the descriptions below come from `Portable Document Format
+Reference Manual Version 1.3', March 11, 1999.
+
+* Menu:
+
+* Options supported by all drivers::
+* Hyperlink driver hypertex::
+* Hyperlink drivers pdftex and dvipdfm::
+* Hyperlink driver nolinks::
+
+
+File: eplain.info, Node: Options supported by all drivers, Next: Hyperlink driver hypertex, Up: Hyperlink drivers
+
+5.4.1 Options supported by all drivers
+--------------------------------------
+
+This subsection describes the destination and link options which are
+supported by all hyperlink drivers.
+
+Destination options supported by all drivers
+............................................
+
+`raise'
+ Specifies how much to raise destinations above the baseline. When
+ set to zero or empty, destinations are placed at the baseline.
+
+ It is usually convenient to set this option to some variable
+ parameter, so that the height to which destinations are raised is
+ automatically adjusted according to the current context. For
+ example, setting it to `\normalbaselineskip' (or some fraction of
+ it, like `1.7\normalbaselineskip') makes the setting appropriate
+ for different point sizes, in case your document uses more than
+ one.
+
+ The default setting is `\normalbaselineskip'. Initially, the
+ destgroups do not define this option, so they fall back on the
+ default, except for the `eq' destgroup, for which this option is
+ set to `1.7\normalbaselineskip', to accommodate the usual cases of
+ large operators in displayed math.
+
+ Example: `\hldestopts[eq]{raise=2.5\normalbaselineskip}'
+
+Link options supported by all drivers
+.....................................
+
+`colormodel'
+`color'
+ These two options define the color to be used for rendering the
+ link text. The colors are used only when a `\color' command is
+ defined, e.g., by loading the LaTeX `color' package (*note
+ Packages known to work::). The `\color' command is called as
+ `\color[COLORMODEL]{COLOR}', where COLORMODEL and COLOR are the
+ definitions of the `colormodel' and `color' options, respectively.
+ However, if COLORMODEL is empty, the optional argument to
+ `\color' is omitted; and if COLOR is empty, the `\color' command
+ is omitted altogether. The default setting is `COLORMODEL=cmyk'
+ and `COLOR=0.28,1,1,0.35'.
+
+ When specifying colors with several components delimited by commas
+ (e.g., RGB and CMYK colors in the LaTeX `color' package), it is not
+ possible to specify the components directly in the option list of
+ `\hlopts', because comma is the option list delimiter. With the
+ `color' package, it is possible to specify such colors by defining
+ a custom color with `\definecolor' and using the new color name
+ with an empty COLORMODEL (see examples below).
+
+ Examples:
+
+ \hlopts{colormodel=,color=blue}% predefined color
+ \definecolor{mycolor}{rgb}{.3,.8,.95}
+ \hlopts{colormodel=,color=mycolor}% custom color
+ \hlopts{colormodel=gray,color=.4}
+
+
+File: eplain.info, Node: Hyperlink driver hypertex, Next: Hyperlink drivers pdftex and dvipdfm, Prev: Options supported by all drivers, Up: Hyperlink drivers
+
+5.4.2 Hyperlink driver `hypertex'
+---------------------------------
+
+HyperTeX is a standard for inclusion of hyperlink information in TeX
+(and LaTeX) documents (see `http://arxiv.org/hypertex'). This standard
+defines a set of hyperlink tags implemented as `\special' commands
+written into the DVI file. The major advantage of such standard is
+that a single `.dvi' file containing HyperTeX commands can be viewed by
+any HyperTeX-enabled viewer (e.g., any more or less modern version of `xdvi')
+or converted to other file formats (e.g., PDF) by any HyperTeX-enabled
+DVI converter (e.g., `dvipdfmx' or `dvips' with Ghostscript's `ps2pdf'
+script).
+
+ The downside to the standard is that it is by design "the common
+factor" of other formats supporting hyperlinks, so many features of a
+particular file format cannot be supported by HyperTeX. Therefore, if
+you need to use special features of a particular format, HyperTeX is
+not a good choice. For the PDF file format, Eplain provides the
+`pdftex' and `dvipdfm' drivers which provide fine control over the PDF
+options (*note Hyperlink drivers pdftex and dvipdfm::).
+
+ For more information on programs which support the HyperTeX standard,
+please see
+
+ `http://arxiv.org/hypertex'
+ `http://www.tug.org/tex-archive/support/hypertex/hypertex'
+
+For convenience, we list a few HyperTeX-enabled converters:
+
+`dvips'
+ Note that you need to pass the `-z' option to `dvips' to tell it
+ to preserve the information about the hyperlinks. To generate a
+ `.pdf' file with hyperlinks, you can use the `ps2pdf' script of Ghostscript.
+ For example, if `foo.tex' is a TeX file using HyperTeX commands,
+ then
+
+ prompt$ tex foo.tex
+ prompt$ dvips -z foo.dvi -o
+ prompt$ ps2pdf foo.ps
+
+ will produce `foo.pdf' with hyperlinks.
+
+`dvipdfm'
+`dvipdfmx'
+ No special command line arguments are required, these programs
+ automatically detect the HyperTeX commands.
+
+
+ One more note is in place: support for the HyperTeX commands varies
+from one previewer/converter to another, so you might need to experiment
+to see if what you need is supported by the program(s) you intend to
+use. For example, dvips(k) as of version 5.92b converts all internal
+hyperlinks into page links pointing to a page containing the
+destination, so that "exact" linking to destinations is not possible
+(this was confirmed to be a bug and most probably has already been fixed
+in later versions of dvips(k)); dvipdfm as of version 0.13.2c and
+dvipdfmx as of version 20040411 do not correctly parse links to
+external local files, and produce a URL link instead of a file link.
+
+* Menu:
+
+* Destination types for hypertex::
+* Destination options for hypertex::
+* Link types for hypertex::
+* Link options for hypertex::
+
+
+File: eplain.info, Node: Destination types for hypertex, Next: Destination options for hypertex, Up: Hyperlink driver hypertex
+
+5.4.2.1 Destination types for `hypertex'
+........................................
+
+`xyz'
+ "Current position". This is the default type.
+
+ Example: `\hldest{xyz}{}{dest123}'
+
+`raw'
+ The destination specification (in the form of a HyperTeX
+ `\special') is taken from the command sequence `\CS', where CS is
+ the value of the `cmd' option. In the definition of `\CS', use `\@hllabel'
+ to refer to the hyperlink label. This option is intended to be
+ used with destgroups (*note Setting hyperlink types and
+ options::), as it does not make sense in a direct call to `\hldest'--you
+ can just call the raw command.
+
+ Example:
+
+ \makeatletter
+ \def\mydest{\special{html:<a name="\@hllabel">}%
+ \special{html:</a>}}
+ \resetatcatcode
+ \indent\hldest{raw}{cmd=mydest}{SpecialDest}
+ Special destination.
+
+
+
+File: eplain.info, Node: Destination options for hypertex, Next: Link types for hypertex, Prev: Destination types for hypertex, Up: Hyperlink driver hypertex
+
+5.4.2.2 Destination options for `hypertex'
+..........................................
+
+`cmd'
+ Name of the macro (without the leading `\') containing a HyperTeX
+ `\special' for the `raw' destination.
+
+ *Note Destination types for hypertex::, the description of the
+ `raw' destination, for an example.
+
+
+File: eplain.info, Node: Link types for hypertex, Next: Link options for hypertex, Prev: Destination options for hypertex, Up: Hyperlink driver hypertex
+
+5.4.2.3 Link types for `hypertex'
+.................................
+
+`name'
+ Go to a "named destination". The label is the destination name.
+ All destinations in HyperTeX are named destinations. This is the
+ default type.
+
+ Example: `\hlstart{name}{}{dest123}Link to dest123\hlend'
+
+`url'
+ Go to a URL. The label is the URL.
+
+ Example:
+
+ `\hlstart{url}{}{http://tug.org/eplain/}Eplain home\hlend'
+
+`filename'
+ Go to a named destination in another file. The label is the
+ destination name. The file name is specified by the `file'
+ option. The file name extension can be specified separately by the `ext'
+ option. The idea is to set the `ext' option globally at the
+ beginning of the document to avoid hard-coding the extension
+ together with the file name within each link--HyperTeX is not
+ restricted to any single output format, it can be DVI, PDF,
+ possibly other formats.
+
+ Example:
+
+ \hlopts{ext=.pdf}
+ \hlstart{filename}{file=book}{dest123}
+ Link to dest123 in file `book.pdf'\hlend
+
+`raw'
+ The link specification (in the form of a HyperTeX `\special') is
+ taken from the command sequence `\CS', where CS is the value of the `cmd'
+ option. In the definition of `\CS', use `\@hllabel' to refer to
+ the hyperlink label. Use the predefined command `\hlhash' to
+ insert the `#' characters. This option is intended to be used
+ with linkgroups (*note Setting hyperlink types and options::), as
+ it does not make sense in a direct call to `\hlstart'--you can
+ just call the raw command.
+
+ Example:
+
+ \makeatletter
+ \def\mylink{\special{html:<a href="\hlhash\@hllabel">}}
+ \resetatcatcode
+ \hlstart{raw}{cmd=mylink}{SpecialDest}
+ Link to the special destination.\hlend
+
+
+
+File: eplain.info, Node: Link options for hypertex, Prev: Link types for hypertex, Up: Hyperlink driver hypertex
+
+5.4.2.4 Link options for `hypertex'
+...................................
+
+`cmd'
+ Name of the macro (without the leading `\') containing a HyperTeX
+ `\special' for the `raw' link.
+
+ *Note Link types for hypertex::, the description of the `raw' link,
+ for an example.
+
+`file'
+ File name for the `filename' link type. See also the `ext' option.
+
+ *Note Link types for hypertex::, the description of the `filename'
+ link, for an example.
+
+`ext'
+ File name extension for the `filename' link type. The idea is to
+ set the `ext' option globally at the beginning of the document to
+ avoid hard-coding the extension together with the file name within
+ each link--HyperTeX is not restricted to any single output format,
+ it can be DVI, PDF, possibly other formats.
+
+ *Note Link types for hypertex::, the description of the `filename'
+ link, for an example.
+
+
+File: eplain.info, Node: Hyperlink drivers pdftex and dvipdfm, Next: Hyperlink driver nolinks, Prev: Hyperlink driver hypertex, Up: Hyperlink drivers
+
+5.4.3 Hyperlink drivers `pdftex' and `dvipdfm'
+----------------------------------------------
+
+This subsection describes link and destination types and options
+supported by the `pdftex' and `dvipdfm' drivers. Many of the hyperlink
+types and options are common to both drivers, so we describe them
+together.
+
+* Menu:
+
+* Destination types for pdftex and dvipdfm::
+* Destination options for pdftex and dvipdfm::
+* Link types for pdftex and dvipdfm::
+* Link options for pdftex and dvipdfm::
+
+
+File: eplain.info, Node: Destination types for pdftex and dvipdfm, Next: Destination options for pdftex and dvipdfm, Up: Hyperlink drivers pdftex and dvipdfm
+
+5.4.3.1 Destination types for `pdftex' and `dvipdfm'
+....................................................
+
+`xyz'
+ "Current position". The option `zoom' specifies magnification to
+ use (zero or empty means leave magnification unchanged, which is
+ the default). This is the default type.
+
+ For `dvipdfm': the options `left' and `top' specify position
+ coordinates to use (empty options mean current position
+ coordinate, which is the default).
+
+ Example: `\hldest{xyz}{zoom=2000}{dest123}'
+
+`fit'
+ Fit the page to the window.
+
+ Example: `\hldest{fit}{}{dest123}'
+
+`fith'
+ Fit the width of the page to the window.
+
+ For `dvipdfm': the `top' option specifies vertical position
+ (default is empty, meaning current position).
+
+ Example: `\hldest{fith}{}{dest123}'
+
+`fitv'
+ Fit the height of the page to the window.
+
+ For `dvipdfm': The option `left' specifies horizontal position
+ (default is empty, meaning current position).
+
+ Example: `\hldest{fitv}{}{dest123}'
+
+`fitb'
+ Fit the page's bounding box to the window.
+
+ Example: `\hldest{fitb}{}{dest123}'
+
+`fitbh'
+ Fit the width of the page's bounding box to the window.
+
+ For `dvipdfm': the option `top' specifies vertical position
+ (default is empty, meaning current position).
+
+ Example: `\hldest{fitbh}{}{dest123}'
+
+`fitbv'
+ Fit the height of the page's bounding box to the window.
+
+ For `dvipdfm': the option `left' specifies horizontal position
+ (default is empty, meaning current position).
+
+ Example: `\hldest{fitbv}{}{dest123}'
+
+`fitr'
+ For `pdftex': fit the rectangle specified by the options `width', `height'
+ and `depth' (as a TeX rule specification) in the window. For
+ dimensions set to empty, the corresponding value of the parent box
+ is used (these are the defaults).
+
+ For `dvipdfm': fit the rectangle specified by the options `left', `bottom', `right'
+ and `top' (in PostScript points, 72 points per inch) in the
+ window. For dimensions set to empty, current position coordinate
+ is substituted (these are the defaults).
+
+ Example for `pdftex':
+
+ \hldest{fitr}{width=\hsize,
+ height=.5\vsize,depth=0pt}{dest123}
+
+ Example for `dvipdfm':
+
+ \hldest{fitr}{left=72,bottom=72,
+ right=720,top=360}{dest123}
+
+`raw'
+ The destination specification (in the form of a pdfTeX command or a
+ dvipdfm `\special') is taken from the command sequence `\CS',
+ where CS is the value of the `cmd' option. In the definition of
+ `\CS', use `\@hllabel' to refer to the hyperlink label. This
+ option is intended to be used with destgroups (*note Setting
+ hyperlink types and options::), as it does not make sense in a
+ direct call to `\hldest'--you can just call the raw command.
+
+ Example for `pdftex':
+
+ \makeatletter
+ \def\mydest{\pdfdest name{\@hllabel} xyz}
+ \resetatcatcode
+ \hldesttype{raw}
+ \hldestopts{cmd=mydest}
+
+ Example for `dvipdfm':
+
+ \makeatletter
+ \def\mydest{\special{pdf: dest (\@hllabel)
+ [@thispage /XYZ @xpos @ypos 0]}}
+ \resetatcatcode
+ \hldesttype{raw}
+ \hldestopts{cmd=mydest}
+
+
+File: eplain.info, Node: Destination options for pdftex and dvipdfm, Next: Link types for pdftex and dvipdfm, Prev: Destination types for pdftex and dvipdfm, Up: Hyperlink drivers pdftex and dvipdfm
+
+5.4.3.2 Destination options for `pdftex' and `dvipdfm'
+......................................................
+
+With respect to the destination options, the `pdftex' and `dvipdfm'
+differ in the way the fit rectangle is specified (relative coordinates
+for `pdftex', absolute coordinates for `dvipdfm').
+
+Common destination options
+..........................
+
+`cmd'
+ Name of the macro (without the leading `\') containing a pdfTeX
+ command or a dvipdfm `\special' for the `raw' destination.
+
+ *Note Destination types for pdftex and dvipdfm::, the description
+ of the `raw' destination, for an example.
+
+`zoom'
+ Magnification ratio times 1000 (like TeX's scale factor). Zero or
+ empty means leave magnification unchanged, which is the default.
+
+ Example: `\hldest{xyz}{zoom=2000}{dest123}'
+
+`pdftex'-specific destination options
+.....................................
+
+The dimension options below must be specified as a TeX rule
+specification. When set to empty, the corresponding value of the
+parent box is used (this is the default for all dimension options).
+
+`depth'
+ Depth of the fit rectangle for the `fitr' destination.
+
+`height'
+ Height of the fit rectangle for the `fitr' destination.
+
+`width'
+ Width of the fit rectangle for the `fitr' destination.
+
+ Example:
+
+ \hldest{fitr}{width=\hsize,
+ height=.5\vsize,depth=0pt}{dest123}
+
+`dvipdfm'-specific destination options
+......................................
+
+The dimension options below must be specified in PostScript points
+(72 points per inch), as a number without the `bp' unit name. When set
+to empty, the current position coordinate is used (this is the default
+for all dimension options).
+
+`bottom'
+ Bottom position coordinate of a box specification for the various
+ destination types.
+
+`left'
+ Left position coordinate of a box specification for the various
+ destination types.
+
+`right'
+ Right position coordinate of a box specification for the various
+ destination types.
+
+`top'
+ Top position coordinate of a box specification for the various
+ destination types.
+
+ Example:
+
+ \hldest{fitr}{left=72,bottom=72,
+ right=720,top=360}{dest123}
+
+
+File: eplain.info, Node: Link types for pdftex and dvipdfm, Next: Link options for pdftex and dvipdfm, Prev: Destination options for pdftex and dvipdfm, Up: Hyperlink drivers pdftex and dvipdfm
+
+5.4.3.3 Link types for `pdftex' and `dvipdfm'
+.............................................
+
+Link types are the same for the `pdftex' and `dvipdfm' drivers, except
+that the `pdftex' driver provides one additional link type `num' (link
+to a numbered destination). dvipdfm does not support numbered
+destinations, therefore it does not have this link type. Note that all
+destinations created by Eplain hyperlink macros are named destinations;
+to define a numbered destination, you have to use low-level pdfTeX
+commands.
+
+Common link types
+.................
+
+`name'
+ Go to a "named destination". The label is the destination name.
+ All destinations created with `\hldest' are named destinations
+ (*note Explicit hyperlinks::). This is the default type.
+
+ Example: `\hlstart{name}{}{dest123}Link to dest123\hlend'
+
+`url'
+ Go to a URL. The label is the URL.
+
+ Example: `\hlstart{url}{}{http://tug.org/eplain/}Eplain
+ home\hlend'
+
+`page'
+ Go to a page. The label is the page number (counting from 1).
+ Page fitting is specified by the `pagefit' option.
+
+ Example:
+
+ \hlstart{page}{pagefit=/FitH 600}{123}
+ Link to page~123\hlend
+
+`filename'
+ Go to a named destination in another file. The label is the
+ destination name. The file name is specified by the `file'
+ option. Page fitting is specified by the `pagefit' option. The `newwin'
+ option specifies whether the destination document is opened in the
+ same window or in a new window.
+
+ Example:
+
+ \hlstart{filename}{file=book.pdf,newwin=1}{dest123}
+ Link to dest123 in file `book.pdf'\hlend
+
+`filepage'
+ Go to a page in another file. The label is the page number
+ (counting from 1). The file name is specified by the `file'
+ option. Page fitting is specified by the `pagefit' option. The `newwin'
+ option specifies whether the destination document is opened in the
+ same window or in a new window.
+
+ Example:
+
+ \hlstart{filepage}{file=book.pdf,newwin=,
+ pagefit=/FitR 50 100 300 500}{1}
+ Link to page~1 in file `book.pdf'\hlend
+
+`raw'
+ The link specification (in the form of a pdfTeX command or a
+ dvipdfm `\special' primitive) is taken from the command sequence
+ `\CS', where CS is the value of the `cmd' option. In the
+ definition of `\CS', use `\@hllabel' to refer to the hyperlink
+ label. This option is intended to be used with linkgroups (*note
+ Setting hyperlink types and options::), as it does not make sense
+ in a direct call to `\hlstart'--you can just call the raw command.
+
+ Example for `pdftex':
+
+ % Redirect all \url links to the first page
+ \def\mycmd{\pdfstartlink goto page 1 {/Fit}}
+ \hltype[url]{raw}
+ \hlopts[url]{cmd=mycmd}
+
+ Example for `dvipdfm':
+
+ % Redirect all \url links to the first page
+ \def\mycmd{\special{pdf: beginann <</Type/Annot /Subtype/Link
+ /Dest[0 /Fit]>>}}
+ \hltype[url]{raw}
+ \hlopts[url]{cmd=mycmd}
+
+`pdftex'-specific link types
+............................
+
+`num'
+ Go to a "numbered destination". The label is the destination
+ number.
+
+ Example: `\hlstart{num}{}{123}Link to 123\hlend'
+
+
+File: eplain.info, Node: Link options for pdftex and dvipdfm, Prev: Link types for pdftex and dvipdfm, Up: Hyperlink drivers pdftex and dvipdfm
+
+5.4.3.4 Link options for `pdftex' and `dvipdfm'
+...............................................
+
+Link options are mostly the same for the `pdftex' and `dvipdfm'
+drivers. The `pdftex' driver has additional options to specify link
+dimensions.
+
+Common link options
+...................
+
+`bcolor'
+ Border color. An array of three numbers in the range 0 to 1,
+ representing a color in DeviceRGB.
+
+ Example: `\hlstart{name}{bcolor=.1 .5 1}{dest123}Link\hlend'
+
+`bdash'
+ Array of numbers representing on and off stroke lengths for drawing
+ dashes.
+
+ Example: `\hlstart{name}{bstyle=D,bdash=2 4}{dest123}Link\hlend'
+
+`bstyle'
+ Link border style:
+
+ `S'
+ The border is drawn as a solid line.
+
+ `D'
+ The border is drawn with a dashed line (the dash pattern is
+ specified by the `bdash' option).
+
+ `B'
+ The border is drawn in a beveled style.
+
+ `I'
+ The border is drawn in an inset style.
+
+ `U'
+ The border is drawn as a line on the bottom of the link
+ rectangle.
+
+ The default is `S'.
+
+ Example: `\hlstart{name}{bstyle=D,bdash=2 4}{dest123}Link\hlend'
+
+`bwidth'
+ Border width in PostScript points (72 points per inch). The
+ default is 1.
+
+ Example: `\hlstart{name}{bwidth=2}{dest123}Link\hlend'
+
+`cmd'
+ Name of the macro (without the leading `\') containing a pdfTeX
+ command or a dvipdfm `\special' for the `raw' link.
+
+ *Note Link types for pdftex and dvipdfm::, the description of the
+ `raw' link, for an example.
+
+`file'
+ File name for the `filename' and `filepage' link types.
+
+ *Note Link types for pdftex and dvipdfm::, the descriptions of the
+ `filename' and `filepage' links, for an example.
+
+`hlight'
+ Link border highlight modes:
+
+ `I'
+ The rectangle specified by the bounding box of the link is
+ inverted.
+
+ `N'
+ No highlighting is done.
+
+ `O'
+ The border of the link is inverted.
+
+ `P'
+ The region underneath the bounding box of the link is drawn
+ inset into the page.
+
+ The default is `I'.
+
+ Example: `\hlstart{name}{bstyle=S,hlight=O}{dest123}Link\hlend'
+
+`newwin'
+ For the `filename' and `filepage' links, specifies whether the
+ destination document is opened in the same window or in a new
+ window. The settings are:
+
+ `0'
+ Open in the same window.
+
+ `non-0'
+ Open in a new window.
+
+ `empty'
+ Behavior according to the viewer settings.
+
+ The default is empty.
+
+ *Note Link types for pdftex and dvipdfm::, the descriptions of the
+ `filename' and `filepage' links, for an example.
+
+`pagefit'
+ For the `page' and `filepage links', specifies how the page must
+ be fitted to the window. `pagefit' specification is written to
+ the PDF file as is, so it must conform to the PDF standard.
+
+ *Note Link types for pdftex and dvipdfm::, the descriptions of the
+ `page' and `filepage' links, for an example.
+
+`pdftex'-specific link options
+..............................
+
+The dimension options below must be specified as a TeX rule
+specification. When set to empty, the corresponding value of the
+parent box is used (this is the default for all dimension options).
+
+`depth'
+ Depth of the link.
+
+`height'
+ Height of the link.
+
+`width'
+ Width of the link.
+
+ Example:
+
+ \hlstart{name}{width=5in,height=20pc,depth=0pt}{dest123}
+ Link\hlend
+
+
+File: eplain.info, Node: Hyperlink driver nolinks, Prev: Hyperlink drivers pdftex and dvipdfm, Up: Hyperlink drivers
+
+5.4.4 Hyperlink driver `nolinks'
+--------------------------------
+
+Select this driver to suppress all hyperlinks in your document.
+
+ Selecting this driver is quite different from not selecting any
+driver at all, or from selecting some driver and then turning
+hyperlinks off for the entire document with `\hloff' and `\hldestoff'
+(*note Turning hyperlinks on/off::).
+
+ The purpose of `\hldestoff' and `\hloff' is to mark (parts) of your
+document where hyperlinks should never appear. (Imagine you want to
+prevent a cross-referencing macro from generating a link at a certain
+spot in your document.)
+
+ If instead you have prepared a document with hyperlinks and just
+want to compile a version without them, it is better to select the
+driver `nolinks'. This ensures that spacing and page-breaking are the
+same as what you were getting with hyperlinks enabled.
+
+ The reason for this is that hyperlinks are produced by the
+`\special' primitives or low-level hyperlink commands. Each such
+command is placed inside a "whatsit" (an internal TeX object), which
+may introduce legitimate breakpoints at places where none would exist
+without the whatsits. The macros `\hldestoff' and `\hloff' disable the
+hyperlink macros completely, so that no whatsits are produced.
+
+ In contrast, the `nolinks' driver does not completely disable
+hyperlink macros. Instead, it defines them to merely write to the log
+file (what gets written is unimportant). This also produces whatsits,
+thus imitating the whatsits from the hyperlink commands. (This trick
+was borrowed from the LaTeX `color' package.)
+
+ Another reason for using `nolinks' is that in horizontal mode
+`\hldest' places destinations inside boxes of zero width, height, and
+depth. When you say `\hldestoff', `\hldest' will omit both destination
+definitions and these boxes. The missing boxes can again cause the
+typesetting to be inconsistent with that with destinations enabled.
+Here again, the `nolinks' driver helps by defining `\hldest' to produce
+the empty boxes.
+
+ So, if you are planning to produce versions of your PDF document
+both with and without hyperlinks, here is the recommended way to enable
+the hyperlinks under pdfTeX:
+
+ \ifpdf
+ \enablehyperlinks
+ \else
+ \enablehyperlinks[nolinks]%
+ \fi
+
+
+File: eplain.info, Node: Setting hyperlink types and options, Next: Turning hyperlinks on/off, Prev: Hyperlink drivers, Up: Hyperlinks
+
+5.5 Setting hyperlink types and options
+=======================================
+
+You can define default types for links and destinations, which will be
+used when you do not specify a type in `\hlstart' or `\hldest'.
+Similarly, you can define default values for the options; the default
+value for an option is used when you do not set the option in the
+argument to `\hlstart' or `\hldest'.
+
+ The parameters for implicit links and destinations can be customized
+by setting the "group" types and options. When not set, the defaults
+are used.
+
+ All these settings are local to the current (TeX) group, so if you
+want to set an option temporarily, you can do so inside a
+`\begingroup...\endgroup' block; when the group ends, the previous
+settings are restored.
+
+* Menu:
+
+* Setting default types and options::
+* Setting group types::
+* Setting group options::
+
+
+File: eplain.info, Node: Setting default types and options, Next: Setting group types, Up: Setting hyperlink types and options
+
+5.5.1 Setting default types and options
+---------------------------------------
+
+The default types for links and destinations can be set with the
+following commands:
+
+ \hltype{TYPE}
+ \hldesttype{TYPE}
+
+where TYPE is one of the link/destination types supported by the
+selected hyperlink driver (*note Hyperlink drivers::).
+
+ Default values for the options can be set with the following
+commands:
+
+ \hlopts{OPTIONS}
+ \hldestopts{OPTIONS}
+
+where OPTIONS is a comma-separated list of option assignments in the
+format `OPTION=VALUE'. Again, what options are allowed depends on the
+selected hyperlink driver.
+
+ Many people regard the default boxed links as not aesthetic and
+intruding on page layout. The reason why boxed links are the default is
+that the links are not colored until you load the LaTeX `color' package
+(*note Loading LaTeX packages::) or use other means to define the
+`\color' command; therefore, not producing any kind of link border may
+result in the links not being marked in any way. However, when the
+links are actually colored, there is no need to produce the link boxes
+anymore; to avoid the boxes, you can set the default border width to
+zero (if the driver you use supports the link option `bwidth'; *note
+Hyperlink drivers::):
+
+ \hlopts{bwidth=0}
+
+
+File: eplain.info, Node: Setting group types, Next: Setting group options, Prev: Setting default types and options, Up: Setting hyperlink types and options
+
+5.5.2 Setting group types
+-------------------------
+
+When called with an optional argument, as in
+
+ \hltype[GROUPS]{TYPE}
+ \hldesttype[GROUPS]{TYPE}
+
+where GROUPS is a comma-separated list of groups, `\hltype' and
+`\hldesttype' set the type for each group from GROUPS to TYPE. The
+default type is used for all groups with an empty type (this is the
+initial setting for all groups, except that the type for the `url'
+linkgroup is set to `url' by the drivers which support this link type).
+
+ There are two special "groups" which can be used inside the GROUPS
+list. An empty group sets the default type. This allows to set the
+default type and group types in one command, for example:
+
+ \hltype[eq,]{TYPE}
+
+sets the link type for the `eq' linkgroup and the default link type to
+TYPE.
+
+ Another special group is a star (`*') group, which signifies all
+defined groups. For example, the command
+
+ \hldesttype[*,]{TYPE}
+
+sets the destination type to TYPE for each group, as well as the
+default destination type.
+
+
+File: eplain.info, Node: Setting group options, Prev: Setting group types, Up: Setting hyperlink types and options
+
+5.5.3 Setting group options
+---------------------------
+
+Option values for each group are stored as a list of option
+assignments. This list does not have to contain every supported
+option. Values for options missing from this list are taken from the
+default option values.
+
+ To manipulate the list of option values for the groups, you use the
+`\hlopts' and `\hldestopts' commands with an optional argument:
+
+ \hlopts[GROUPS]{OPTIONS}
+ \hldestopts[GROUPS]{OPTIONS}
+ \hlopts![GROUPS]{OPTIONS}
+ \hldestopts![GROUPS]{OPTIONS}
+
+where GROUPS is a comma-separated list of groups and OPTIONS is a
+comma-separated list of option assignments. The two special "groups",
+the empty group and the star (`*') group, have the same meaning as for
+`\hltype' and `\hldesttype'. When used without the exclamation mark,
+`\hlopts' and `\hldestopts' preserve the current list of options for
+the groups, and only update the options listed in OPTIONS. If you add
+the exclamation mark, the current list of options for each group in
+GROUPS is discarded and the new list is set to OPTIONS.
+
+ The "overriding" nature of the `!' is appropriate when you give a
+complete specification of the options for a group, e.g., at the
+beginning of your document. On the other hand, when you want to adjust
+some option(s) and leave others intact, you should use the macros
+without the `!'.
+
+ For example, with displayed mathematical formulas, you often need to
+adjust the `raise' option for the `eq' destgroup, because the formulas
+often contain large parentheses and brackets. But when doing so, you
+want to leave the other settings unchanged. To achieve this, call
+`\hldestopts' without the `!', for example:
+
+ $$\hldestopts[eq]{raise=2.5\normalbaselineskip}
+ ...
+ $$
+
+The display commands (`$$') implicitly put the entire formula inside a
+(TeX) group (`\begingroup...\endgroup'), so you do not need to isolate
+the setting of the `raise' option--it will be restored after the
+closing `$$'.
+
+ Initially, Eplain sets the option lists for almost all groups to
+empty, so that the groups fall back on the default values for all
+options. The one exception to this rule is the `eq' destgroup, whose
+initial option list contains one setting:
+
+ raise=1.7\normalbaselineskip
+
+This setting usually accommodates the large operators, which often
+appear in displayed math.
+
+
+File: eplain.info, Node: Turning hyperlinks on/off, Prev: Setting hyperlink types and options, Up: Hyperlinks
+
+5.6 Turning hyperlinks on/off
+=============================
+
+Links and/or destinations can be turned on or off globally by disabling
+the low-level commands, or for each group individually.
+
+ All these settings are local to the current (TeX) group, so if you
+want to enable or disable links/destinations temporarily, you can do so
+inside a `\begingroup...\endgroup' block; when the group ends, the
+previous settings are restored.
+
+* Menu:
+
+* Turning low-level commands on/off::
+* Turning hyperlinks on/off for a group::
+
+
+File: eplain.info, Node: Turning low-level commands on/off, Next: Turning hyperlinks on/off for a group, Up: Turning hyperlinks on/off
+
+5.6.1 Turning low-level commands on/off
+---------------------------------------
+
+The low-level commands `\hlstart', `\hlend' and `\hldest' can be turned
+on/off with the following commands:
+
+ \hldeston
+ \hldestoff
+ \hlon
+ \hloff
+
+*Note Hyperlink driver nolinks::, for the implications of using these
+commands to disable hyperlinks for the entire document.
+
+
+File: eplain.info, Node: Turning hyperlinks on/off for a group, Prev: Turning low-level commands on/off, Up: Turning hyperlinks on/off
+
+5.6.2 Turning hyperlinks on/off for a group
+-------------------------------------------
+
+If you want to disable links/destinations produced by certain groups,
+you can give a list of the groups as an optional argument to these
+commands:
+
+ \hldeston[GROUPS]
+ \hldestoff[GROUPS]
+ \hlon[GROUPS]
+ \hloff[GROUPS]
+
+where GROUPS is the list of linkgroups/destgroups. This list can
+contain two special groups. The empty group switches the low-level
+commands (*note Turning low-level commands on/off::), and the star
+(`*') group operates on all defined groups.
+
+ Note that turning off the low-level commands disables all hyperlinks
+globally, including groups which have them enabled. Turning off certain
+linkgroups/destgroups records the fact that the macros in the group
+should not produce links/destinations. To illustrate the distinction,
+assume that all links are on; after the following sequence of commands:
+
+ \hloff
+ \hloff[eq]
+ \hlon
+
+all links are on except for the `eq' linkgroup.
+
+
+File: eplain.info, Node: Arrow theoretic diagrams, Next: Programming definitions, Prev: Hyperlinks, Up: Top
+
+6 Arrow theoretic diagrams
+**************************
+
+This chapter describes definitions for producing commutative diagrams.
+
+ Steven Smith wrote this documentation (and the macros).
+
+* Menu:
+
+* Slanted lines and vectors::
+* Commutative diagrams::
+
+
+File: eplain.info, Node: Slanted lines and vectors, Next: Commutative diagrams, Up: Arrow theoretic diagrams
+
+6.1 Slanted lines and vectors
+=============================
+
+The macros `\drawline' and `\drawvector' provide the capability found
+in LaTeX's picture mode to draw slanted lines and vectors of certain
+directions. Both of these macros take three arguments: two integer
+arguments to specify the direction of the line or vector, and one
+argument to specify its length. For example, `\drawvector(-4,1){60pt}'
+produces the vector
+
+ (A vector in the 2d quadrant of length 60 pt appears here.)
+
+ which lies in the 2d quadrant, has a slope of minus 1/4, and a width
+of 60 pt.
+
+ Note that if an `\hbox' is placed around `\drawline' or
+`\drawvector', then the width of the `\hbox' will be the positive
+dimension specified in the third argument, except when a vertical line
+or vector is specified, e.g., `\drawline(0,1){1in}', which has zero
+width. If the specified direction lies in the 1st or 2d quadrant
+(e.g., `(1,1)' or `(-2,3)'), then the `\hbox' will have positive height
+and zero depth. Conversely, if the specified direction lies in the 3d
+or 4th quadrant (e.g., `(-1,-1)' or `(2,-3)'), then the `\hbox' will
+have positive depth and zero height.
+
+ There are a finite number of directions that can be specified. For
+`\drawline', the absolute value of each integer defining the direction
+must be less than or equal to six, i.e., `(7,-1)' is incorrect, but
+`(6,-1)' is acceptable. For `\drawvector', the absolute value of each
+integer must be less than or equal to four. Furthermore, the two
+integers cannot have common divisors; therefore, if a line with slope 2
+is desired, say `(2,1)' instead of `(4,2)'. Also, specify `(1,0)'
+instead of, say, `(3,0)' for horizontal lines and likewise for vertical
+lines.
+
+ Finally, these macros depend upon the LaTeX font `line10'. If your
+site doesn't have this font, ask your system administrator to get it.
+Future enhancements will include macros to draw dotted lines and dotted
+vectors of various directions.
+
+
+File: eplain.info, Node: Commutative diagrams, Prev: Slanted lines and vectors, Up: Arrow theoretic diagrams
+
+6.2 Commutative diagrams
+========================
+
+The primitive commands `\drawline' and `\drawvector' can be used to
+typeset arrow theoretic diagrams. This section describes (1) macros to
+facilitate typesetting arrows and morphisms, and (2) macros to
+facilitate the construction of commutative diagrams. All macros
+described in this section must be used in math mode.
+
+* Menu:
+
+* Arrows and morphisms::
+* Construction of commutative diagrams::
+* Commutative diagram parameters::
+
+
+File: eplain.info, Node: Arrows and morphisms, Next: Construction of commutative diagrams, Up: Commutative diagrams
+
+6.2.1 Arrows and morphisms
+--------------------------
+
+The macros `\mapright' and `\mapleft' produce right and left pointing
+arrows, respectively. Use superscript (`^') to place a morphism above
+the arrow, e.g., `\mapright^\alpha'; use subscript (`_') to place a
+morphism below the arrow, e.g., `\mapright_{\tilde l}'. Superscripts
+and subscripts may be used simulataneously, e.g., `\mapright^\pi_{\rm
+epimor.}'.
+
+ Similarly, the macros `\mapup' and `\mapdown' produce up and down
+pointing arrows, respectively. Use `\rt' to place a morphism to the
+right of the arrow, e.g., `\mapup\rt{\rm id}'; use `\lft' to place a
+morphism to the left of the arrow, e.g., `\mapup\lft\omega'. `\lft'
+and `\rt' may be used simultaneously, e.g., `\mapdown\lft\pi\rt{\rm
+monomor.}'.
+
+ Slanted arrows are produced by the macro `\arrow', which takes a
+direction argument (e.g., `\arrow(3,-4)'). Use `\rt' and `\lft' to
+place morphisms to the right and left, respectively, of the arrow. A
+slanted line (no arrowhead) is produced with the macro `\sline', whose
+syntax is identical to that of `\arrow'.
+
+ The length of these macros is predefined by the default TeX
+dimensions `\harrowlength', for horizontal arrows (or lines),
+`\varrowlength', for vertical arrows (or lines), and `\sarrowlength', for
+slanted arrows (or lines). To change any of these dimensions, say,
+e.g., `\harrowlength=40pt'. As with all other TeX dimensions, the
+change may be as global or as local as you like. Furthermore, the
+placement of morphisms on the arrows is controlled by the dimensions
+`\hmorphposn', `\vmorphposn', and `\morphdist'. The first two
+dimensions control the horizontal and vertical position of the morphism
+from its default position; the latter dimension controls the distance
+of the morphism from the arrow. If you have more than one morphism per
+arrow (i.e., a `^'/`_' or `\lft'/`\rt' construction), use the parameters
+`\hmorphposnup', `\hmorphposndn', `\vmorphposnup', `\vmorphposndn', `\hmorphposnrt', `\hmorphposnlft', `\vmorphposnrt', and
+`\vmorphposnlft'. The default values of all these dimensions are
+provided in the section on parameters that follows below.
+
+ There is a family of macros to produce horizontal lines, arrows, and
+adjoint arrows. The following macros produce horizontal maps and have
+the same syntax as `\mapright':
+
+`\mapright'
+ `$X\mapright Y$' = (a right arrow).
+
+`\mapleft'
+ `$X\mapleft Y$' = (a left arrow).
+
+`\hline'
+ `$X\hline Y$' = (horizontal line)
+
+`\bimapright'
+ `$X\bimapright Y$' = (two right arrows).
+
+`\bimapleft'
+ `$X\bimapleft Y$' = (two left arrows)
+
+`\adjmapright'
+ `$X\adjmapright Y$' = (two adjoint arrows; left over right)
+
+`\adjmapleft'
+ `$X\adjmapleft Y$' = (two adjoint arrows; right over left)
+
+`\bihline'
+ `$X\bihline Y$' = (two horizontal lines)
+
+ There is also a family of macros to produce vertical lines, arrows,
+and adjoint arrows. The following macros produce vertical maps and have
+the same syntax as `\mapdown':
+
+`\mapdown'
+ (a down arrow)
+
+`\mapup'
+ (an up arrow)
+
+`\vline'
+ (vertical line)
+
+`\bimapdown'
+ (two down arrows)
+
+`\bimapup'
+ (two up arrows)
+
+`\adjmapdown'
+ (two adjoint arrows; down then up)
+
+`\adjmapup'
+ (two adjoint arrows; up then down)
+
+`\bivline'
+ (two vertical lines)
+
+ Finally, there is a family of macros to produce slanted lines,
+arrows, and adjoint arrows. The following macros produce slanted maps
+and have the same syntax as `\arrow':
+
+`\arrow'
+ (a slanted arrow)
+
+`\sline'
+ (a slanted line)
+
+`\biarrow'
+ (two straight arrows)
+
+`\adjarrow'
+ (two adjoint arrows)
+
+`\bisline'
+ (two straight lines)
+
+
+ The width between double arrows is controlled by the parameter
+`\channelwidth'. The parameters `\hchannel' and `\vchannel', if
+nonzero, override `\channelwidth' by controlling the horizontal and
+vertical shifting from the first arrow to the second.
+
+ There are no adornments on these arrows to distinguish inclusions
+from epimorphisms from monomorphisms. Many texts, such as Lang's book
+`Algebra', use as a tasteful alternative the symbol `inc' (in roman)
+next to an arrow to denote inclusion.
+
+ Future enhancements will include a mechanism to draw curved arrows
+found in, e.g., the Snake Lemma, by employing a version of the `\path'
+macros of Appendix D of `The TeXbook'.
+
+
+File: eplain.info, Node: Construction of commutative diagrams, Next: Commutative diagram parameters, Prev: Arrows and morphisms, Up: Commutative diagrams
+
+6.2.2 Construction of commutative diagrams
+------------------------------------------
+
+There are two approaches to the construction of commutative diagrams
+described here. The first approach, and the simplest, treats
+commutative diagrams like fancy matrices, as Knuth does in Exercise
+18.46 of `The TeXbook'. This case is covered by the macro `\commdiag', which
+is an altered version of the Plain TeX macro `\matrix'. An example
+suffices to demonstrate this macro. The following commutative diagram
+(illustrating the covering homotopy property; Bott and Tu,
+`Differential Forms in Algebraic Topology')
+
+ (A commutative diagram appears here in the printed output.)
+
+ is produced with the code
+
+ $$\commdiag{Y&\mapright^f&E\cr \mapdown&\arrow(3,2)\lft{f_t}&\mapdown\cr
+ Y\times I&\mapright^{\bar f_t}&X}$$
+
+ Of course, the parameters may be changed to produce a different
+effect. The following commutative diagram (illustrating the universal
+mapping property; Warner, `Foundations of Differentiable Manifolds and
+Lie Groups')
+
+ (A commutative diagram appears here in the printed output.)
+
+ is produced with the code
+
+ $$\varrowlength=20pt
+ \commdiag{V\otimes W\cr \mapup\lft\phi&\arrow(3,-1)\rt{\tilde l}\cr
+ V\times W&\mapright^l&U\cr}$$
+
+ A diagram containing isosceles triangles is achieved by placing the
+apex of the triangle in the center column, as shown in the example
+(illustrating all constant minimal realizations of a linear system;
+Brockett, `Finite Dimensional Linear Systems')
+
+ (A commutative diagram appears here in the printed output.)
+
+ which is produced with the code
+
+ $$\sarrowlength=.42\harrowlength
+ \commdiag{&R^m\cr &\arrow(-1,-1)\lft{\bf B}\quad \arrow(1,-1)\rt{\bf G}\cr
+ R^n&\mapright^{\bf P}&R^n\cr
+ \mapdown\lft{e^{{\bf A}t}}&&\mapdown\rt{e^{{\bf F}t}}\cr
+ R^n&\mapright^{\bf P}&R^n\cr
+ &\arrow(1,-1)\lft{\bf C}\quad \arrow(-1,-1)\rt{\bf H}\cr
+ &R^q\cr}$$
+
+ Other commutative diagram examples appear in the file
+`commdiags.tex', which is distributed with this package.
+
+ In these examples the arrow lengths and line slopes were carefully
+chosen to blend with each other. In the first example, the default
+settings for the arrow lengths are used, but a direction for the arrow
+must be chosen. The ratio of the default horizontal and vertical arrow
+lengths is approximately the golden mean gamma=1.618...; the arrow
+direction closest to this mean is `(3,2)'. In the second example, a
+slope of -1/3 is desired and the default horizontal arrow length is 60
+pt; therefore, choose a vertical arrow length of 20 pt. You may affect
+the interline glue settings of `\commdiag' by redefining the macro
+`\commdiagbaselines'. (cf. Exercise 18.46 of `The TeXbook' and the
+section on parameters below.)
+
+ The width, height, and depth of all morphisms are hidden so that the
+morphisms' size do not affect arrow positions. This can cause a large
+morphism at the top or bottom of a diagram to impinge upon the text
+surrounding the diagram. To overcome this problem, use TeX's
+`\noalign' primitive to insert a `\vskip' immediately above or below
+the offending line, e.g.,
+`$$\commdiag{\noalign{\vskip6pt}X&\mapright^\int&Y\cr ...}'.
+
+ The macro `\commdiag' is too simple to be used for more complicated
+diagrams, which may have intersecting or overlapping arrows. A second
+approach, borrowed from Francis Borceux's `Diagram' macros for LaTeX,
+treats the commutative diagram like a grid of identically shaped boxes.
+To compose the commutative diagram, first draw an equally spaced grid,
+e.g.,
+
+ . . . . . .
+ . . . . . .
+ . . . . . .
+ . . . . . .
+
+ on a piece of scratch paper. Then draw each element (vertices and
+arrows) of the commutative diagram on this grid, centered at each grid
+point. Finally, use the macro `\gridcommdiag' to implement your design
+as a TeX alignment. For example, the cubic diagram
+
+ (A commutative diagram appears here.)
+
+ that appears in Francis Borceux's documentation can be implemented on
+a 7 by 7 grid, and is achieved with the code
+
+ $$\harrowlength=48pt \varrowlength=48pt \sarrowlength=20pt
+ \def\cross#1#2{\setbox0=\hbox{$#1$}%
+ \hbox to\wd0{\hss\hbox{$#2$}\hss}\llap{\unhbox0}}
+ \gridcommdiag{&&B&&\mapright^b&&D\cr
+ &\arrow(1,1)\lft a&&&&\arrow(1,1)\lft d\cr
+ A&&\cross{\hmorphposn=12pt\mapright^c}{\vmorphposn=-12pt\mapdown\lft f}
+ &&C&&\mapdown\rt h\cr\cr
+ \mapdown\lft e&&F&&\cross{\hmorphposn=-12pt\mapright_j}
+ {\vmorphposn=12pt\mapdown\rt g}&&H\cr
+ &\arrow(1,1)\lft i&&&&\arrow(1,1)\rt l\cr
+ E&&\mapright_k&&G\cr}$$
+
+ The dimensions `\hgrid' and `\vgrid' control the horizontal and
+vertical spacing of the grid used by `\gridcommdiag'. The default
+setting for both of these dimensions is 15 pt. Note that in the
+example of the cube the arrow lengths must be adjusted so that the
+arrows overlap into neighboring boxes by the desired amount. Hence,
+the `\gridcommdiag' method, albeit more powerful, is less automatic
+than the simpler `\commdiag' method. Furthermore, the ad hoc macro
+`\cross' is introduced to allow the effect of overlapping arrows.
+Finally, note that the positions of four of the morphisms are adjusted
+by setting `\hmorphposn' and `\vmorphposn'.
+
+ One is not restricted to a square grid. For example, the proof of
+Zassenhaus's Butterfly Lemma can be illustrated by the diagram
+(appearing in Lang's book `Algebra')
+
+ (A commutative diagram appears here.)
+
+ This diagram may be implemented on a 9 by 12 grid with an aspect
+ratio of 1/2, and is set with the code
+
+ $$\hgrid=16pt \vgrid=8pt \sarrowlength=32pt
+ \def\cross#1#2{\setbox0=\hbox{$#1$}%
+ \hbox to\wd0{\hss\hbox{$#2$}\hss}\llap{\unhbox0}}
+ \def\l#1{\llap{$#1$\hskip.5em}}
+ \def\r#1{\rlap{\hskip.5em$#1$}}
+ \gridcommdiag{&&U&&&&V\cr &&\bullet&&&&\bullet\cr
+ &&\sarrowlength=16pt\sline(0,1)&&&&\sarrowlength=16pt\sline(0,1)\cr
+ &&\l{u(U\cap V)}\bullet&&&&\bullet\r{(U\cap V)v}\cr
+ &&&\sline(2,-1)&&\sline(2,1)\cr
+ &&\cross{=}{\sline(0,1)}&&\bullet&&\cross{=}{\sline(0,1)}\cr\cr
+ &&\l{^{\textstyle u(U\cap v)}}\bullet&&\cross{=}{\sline(0,1)}&&
+ \bullet\r{^{\textstyle(u\cap V)v}}\cr
+ &\sline(2,1)&&\sline(2,-1)&&\sline(2,1)&&\sline(2,-1)\cr
+ \l{u}\bullet&&&&\bullet&&&&\bullet\r{v}\cr
+ &\sline(2,-1)&&\sline(2,1)&&\sline(2,-1)&&\sline(2,1)\cr
+ &&\bullet&&&&\bullet\cr &&u\cap V&&&&U\cap v\cr}$$
+
+ Again, the construction of this diagram requires careful choices for
+the arrow lengths and is facilitated by the introduction of the ad hoc
+macros `\cross', `\r', and `\l'. Note also that superscripts were used
+to adjust the position of the vertices u(U intersection v) and (u
+intersection V)v. Many diagrams may be typeset with the predefined
+macros that appear here; however, ingenuity is often required to handle
+special cases.
+
+
+File: eplain.info, Node: Commutative diagram parameters, Prev: Construction of commutative diagrams, Up: Commutative diagrams
+
+6.2.3 Commutative diagram parameters
+------------------------------------
+
+The following is a list describing the parameters used in the
+commutative diagram macros. These dimensions may be changed globally or
+locally.
+
+`\harrowlength'
+ (Default: 60 pt) The length of right or left arrows.
+
+`\varrowlength'
+ (Default: 0.618`\harrowlength') The length of up or down arrows.
+
+`\sarrowlength'
+ (Default: 60 pt) The horizontal length of slanted arrows.
+
+`\hmorphposn'
+ (Default: 0 pt) The horizontal position of the morphism with
+ respect to its default position. There are also the dimensions
+ `\hmorphposnup', `\hmorphposndn', `\hmorphposnrt', and
+ `\hmorphposnlft' for `^'/`_' or `\lft'/`\rt' constructions.
+
+`\vmorphposn'
+ (Default: 0 pt) The vertical position of the morphism with respect
+ to its default position. There are also the dimensions
+ `\vmorphposnup', `\vmorphposndn', `\vmorphposnrt', and
+ `\vmorphposnlft' for `^'/`_' or `\lft'/`\rt' constructions.
+
+`\morphdist'
+ (Default: 4 pt) The distance of morphisms from slanted lines or
+ arrows.
+
+`\channelwidth'
+ (Default: 3 pt) The distance between double lines or arrows.
+
+`\hchannel, \vchannel'
+ (Defaults: 0 pt) Overrides `\channelwidth'. The horizontal and
+ vertical shifts between double lines or arrows.
+
+`\commdiagbaselines'
+ (Default: `\baselineskip=15pt \lineskip=3pt \lineskiplimit=3pt ')
+ The parameters used by `\commdiag' for setting interline glue.
+
+`\hgrid'
+ (Default: 15 pt) The horizontal spacing of the grid used by
+ `\gridcommdiag'.
+
+`\vgrid'
+ (Default: 15 pt) The vertical spacing of the grid used by
+ `\gridcommdiag'.
+
+
+
+File: eplain.info, Node: Programming definitions, Next: Demo files, Prev: Arrow theoretic diagrams, Up: Top
+
+7 Programming definitions
+*************************
+
+The definitions in this section are only likely to be useful when you
+are writing nontrivial macros, not when writing a document.
+
+* Menu:
+
+* Category codes:: Changing category codes.
+* Allocation macros:: Non-outer versions of \newcount et al.
+* Iteration:: Doing `for' and `while' loops in TeX.
+* Macro arguments:: Reading and ignoring them.
+* Converting to characters:: Normalizing control sequences and spaces.
+* Expansion:: Controlling expansion.
+* Obeying spaces:: Making whitespace count anywhere.
+* Writing out numbers:: Making `1' into `one'.
+* Mode-specific penalties::
+* Auxiliary files:: Testing for their existence.
+* User-defined environments:: User-defined environments.
+* Page list and page range parsers::
+
+
+File: eplain.info, Node: Category codes, Next: Allocation macros, Up: Programming definitions
+
+7.1 Category codes
+==================
+
+Plain TeX defines `\active' (as the number 13) for use in changing
+category codes. Although the author of `The TeXbook' has
+"intentionally kept the category codes numeric", two other categories
+are commonly used: letters (category code 11) and others (12).
+Therefore, Eplain defines `\letter' and `\other'.
+
+ Sometimes it is cleaner to make a character active without actually writing
+a `\catcode' command. The `\makeactive' command takes a character as
+an argument to make active (and ignores following spaces). For
+example, here are two commands which both make `\' active:
+
+ \makeactive\\ \makeactive92
+
+ Sometimes you might want to temporarily change the category code of
+the `@' character to `\letter', so that you can use or define macros
+which are normally inaccessible to the user. For such situations,
+Eplain provides the `\makeatletter' command. It sets the category code
+of `@' to `\letter' (11) and defines `\resetatcatcode' to restore the
+category code to whatever it was before the call to `\makeatletter'.
+For example:
+
+ \makeatletter
+ \def\@hidden@macro{This macro cannot normally be
+ called / redefined by the user}
+ \resetatcatcode
+
+There is also `\makeatother' which works similarly but sets the
+category code of `@' to `\other' (12).
+
+ Usually, when you give a definition to an active character, you have
+to do so inside a group where you temporarily make the character active,
+and then give it a global definition (cf. the definition of
+`\obeyspaces' in `The TeXbook'). This is inconvenient if you are
+writing a long macro, or if the character already has a global
+definition you do not wish to transcend. Eplain provides `\letreturn',
+which defines the usual end-of-line character to be the argument. For
+example:
+
+ \def\mymacro{... \letreturn\myreturn ... }
+ \mymacro hello
+ there
+
+The end-of-line between `hello' and `there' causes `\myreturn' to be
+expanded.
+
+ `The TeXbook' describes `\uncatcodespecials', which makes all
+characters which are normally "special" into "other" characters, but
+the definition never made it into plain TeX. Eplain therefore defines
+it.
+
+ Finally, `\percentchar' expands into a literal `%' character. This
+is useful when you `\write' TeX output to a file, and want to avoid
+spurious spaces. For example, Eplain writes a `\percentchar' after the
+definition of cross-references. The macros `\lbracechar' and
+`\rbracechar' expand similarly.
+
+
+File: eplain.info, Node: Allocation macros, Next: Iteration, Prev: Category codes, Up: Programming definitions
+
+7.2 Allocation macros
+=====================
+
+Plain TeX provides macros that allocate registers of each primitive
+type in TeX, to prevent different sets of macros from using the same
+register for two different things. The macros are all named starting
+with `new', e.g., `\newcount' allocates a new "count" (integer)
+register. Such allocations are usually needed only at the top level of
+some macro definition file; therefore, plain TeX makes the allocation
+registers `\outer', to help find errors. (The error this helps to find
+is a missing right brace in some macro definition.)
+
+ Sometimes, however, it is useful to allocate a register as part of
+some macro. An outer control sequence cannot be used as part of a macro
+definition (or in a few other contexts: the parameter text of a
+definition, an argument to a definition, the preamble of an alignment,
+or in conditional text that is being skipped). Therefore, Eplain
+defines "inner" versions of all the allocation macros, named with the
+prefix `inner': `\innernewbox', `\innernewcount', `\innernewdimen', `\innernewfam', `\innernewhelp', `\innernewif', `\innernewinsert', `\innernewlanguage', `\innernewread',
+`\innernewskip', `\innernewtoks', `\innernewwrite'.
+
+ You can also define non-outer versions of other macros in the same
+way that Eplain defines the above. The basic macro is called
+`\innerdef':
+
+ \innerdef \INNERNAME {OUTERNAME}
+
+ The first argument (\INNERNAME) to `\innerdef' is the control
+sequence that you want to define. Any previous definition of
+\INNERNAME is replaced. The second argument (OUTERNAME) is the
+_characters_ in the name of the outer control sequence. (You can't use
+the actual control sequence name, since it's outer!)
+
+ If the outer control sequence is named \CS, and you want to define
+`innerCS' as the inner one, you can use `\innerinnerdef', which is just
+an abbreviation for a call to `\innerdef'. For example, these two
+calls are equivalent:
+
+ \innerdef\innerproclaim{proclaim}
+ \innerinnerdef{proclaim}
+
+
+File: eplain.info, Node: Iteration, Next: Macro arguments, Prev: Allocation macros, Up: Programming definitions
+
+7.3 Iteration
+=============
+
+You can iterate through a comma-separated list of items with `\for'. Here
+is an example:
+
+ \for\name:=karl,kathy\do{%
+ \message{\name}%
+ }%
+
+This writes `karl' and `kathy' to the terminal. Spaces before or after
+the commas in the list, or after the `:=', are _not_ ignored. To strip
+leading spaces off the items, use `\For':
+
+ \For\name:=
+ karl,
+ kathy\do{%
+ \message{\name}%
+ }%
+
+Note that trailing spaces are still _not_ ignored.
+
+ Both `\for' and `\For' expand the first token of the item list
+fully, so this is equivalent to the above:
+
+ \def\namelist{karl,kathy}%
+ \for\name:=\namelist\do ...
+
+However, this won't work, either with `\for' or with `\For':
+
+ \def\namelist{karl,kathy}%
+ \For\name:= \namelist\do ...
+
+because `\for' and `\For' expand the first token after `:=' which is
+space, not `\namelist'.
+
+ Eplain provides another kind of loops, which is an extension of plain
+TeX's `\loop'. If you say:
+
+ \loop
+ LOOP-TEXT
+ \if CONDITION
+ IF-TEXT
+ \repeat
+
+then LOOP-TEXT will be repeated as long as CONDITION is satisfied
+(`\if' can be any of the TeX's conditional commands, without the
+matching `\fi'). Eplain extends this with the optional else clause:
+
+ \loop
+ LOOP-TEXT
+ \if CONDITION
+ IF-TEXT
+ \else
+ ELSE-TEXT
+ \repeat
+
+Here, LOOP-TEXT will be repeated as long as CONDITION is _not_
+satisfied. This extension is from Victor Eijkhout's TeX by Topic
+(page 104).
+
+
+File: eplain.info, Node: Macro arguments, Next: Converting to characters, Prev: Iteration, Up: Programming definitions
+
+7.4 Macro arguments
+===================
+
+It is occasionally useful to redefine a macro that takes arguments to
+do nothing. Eplain defines `\gobble', `\gobbletwo', and `\gobblethree'
+to swallow one, two, and three arguments, respectively.
+
+ For example, if you want to produce a "short" table of contents--one
+that includes only chapters, say--the easiest thing to do is read the
+entire `.toc' file (*note Contents::), and just ignore the commands
+that produce section or subsection entries. To be specific:
+
+ \let\tocchapterentry = \shorttocchapter
+ \let\tocsectionentry = \gobbletwo
+ \let\tocsubsectionentry = \gobbletwo
+ \readtocfile
+
+(Of course, this assumes you only have chapters, sections, and
+subsections in your document.)
+
+ In addition, Eplain defines `\eattoken' to swallow the single
+following token, using `\let'. Thus, `\gobble' followed by `{...}'
+ignores the entire brace-enclosed text. `\eattoken' followed by the
+same ignores only the opening left brace.
+
+ Eplain defines a macro `\identity' which takes one argument and
+expands to that argument. This may be useful if you want to provide a
+function for the user to redefine, but don't need to do anything by
+default. (For example, the default definition of `\eqconstruct' (*note
+Formatting equation references::) is `\identity'.)
+
+ You may also want to read an optional argument. The established
+convention is that optional arguments are put in square brackets, so
+that is the syntax Eplain recognizes. Eplain ignores space tokens
+before an optional argument, via `\futurenonspacelet'.
+
+ You test for an optional argument by using `\@getoptionalarg'. It
+takes one argument, a control sequence to expand after reading the
+argument, if present. If an optional argument is present, the control
+sequence `\@optionalarg' expands to it; otherwise, `\@optionalarg' is
+`\empty'. You must therefore have the category code of `@' set to 11
+(letter). Here is an example:
+
+ \catcode`@=\letter
+ \def\cmd{\@getoptionalarg\finishcmd}
+ \def\finishcmd{%
+ \ifx\@optionalarg\empty
+ % No optional argument present.
+ \else
+ % One was present.
+ \fi
+ }
+
+ If an optional argument contains another optional argument, the inner
+one will need to be enclosed in braces, so TeX does not mistake the end
+of the first for the end of the second.
+
+
+File: eplain.info, Node: Converting to characters, Next: Expansion, Prev: Macro arguments, Up: Programming definitions
+
+7.5 Converting to characters
+============================
+
+Eplain defines `\xrlabel' to produce control sequence names for
+cross-reference labels, et al. This macro expands to its argument with
+an `_' appended. (It does this because the usual use of `\xrlabel' is
+to generate a control sequence name, and we naturally want to avoid
+conflicts between control sequence names.)
+
+ Because `\xrlabel' is fully expandable, to make a control sequence
+name out of the result you need only do
+
+ `\csname \xrlabel{LABEL}\endcsname'
+
+The `\csname' primitive makes a control sequence name out of any
+sequence of character tokens, regardless of category code. Labels can
+therefore include any characters except for `\', `{', `}', and `#', all
+of which are used in macro definitions themselves.
+
+ `\sanitize' takes a control sequence as an argument and converts the
+expansion of the control sequence into a list of character tokens.
+This is the behavior you want when writing information like chapter
+titles to an output file. For example, here is part of the definition
+of `\writenumberedtocentry'; `#2' is the title that the user has given.
+
+ ...
+ \def\temp{#2}%
+ ...
+ \write\tocfile{%
+ ...
+ \sanitize\temp
+ ...
+ }%
+
+
+File: eplain.info, Node: Expansion, Next: Obeying spaces, Prev: Converting to characters, Up: Programming definitions
+
+7.6 Expansion
+=============
+
+This section describes some miscellanous macros for expansion, etc.
+
+* Menu:
+
+* \csn and \ece:: Abbreviations for \csname expansions.
+* \edefappend::
+* Hooks:: Manipulating and executing named actions.
+* Properties:: Associating information with a csname.
+* \expandonce::
+* \ifundefined::
+* \ifempty::
+* \ifinteger and \isinteger::
+* \futurenonspacelet::
+
+
+File: eplain.info, Node: \csn and \ece, Next: \edefappend, Up: Expansion
+
+7.6.1 `\csn' and `\ece'
+-----------------------
+
+`\csn'{NAME} simply abbreviates `\csname' NAME `\endcsname', thus
+saving some typing. The extra level of expansion does take some time,
+though, so I don't recommend it for an inner loop.
+
+ `\ece'{TOKEN}{NAME} abbreviates
+
+ \expandafter TOKEN \csname NAME \endcsname
+
+For example,
+
+ \def\fontabbrevdef#1#2{\ece\def{@#1font}{#2}}
+ \fontabbrevdef{normal}{ptmr}
+
+defines a control sequence `\@normalfont' to expand to `ptmr'.
+
+
+File: eplain.info, Node: \edefappend, Next: Hooks, Prev: \csn and \ece, Up: Expansion
+
+7.6.2 `\edefappend'
+-------------------
+
+`\edefappend' is a way of adding on to an existing definition. It
+takes two arguments: the first is the control sequence name, the second
+the new tokens to append to the definition. The second argument is
+fully expanded (in the `\edef' that redefines the control sequence).
+
+ For example:
+
+ \def\foo{abc}
+ \def\bar{xyz}
+ \edefappend\foo{\bar karl}
+
+results in `\foo' being defined as `abcxyzkarl'.
+
+
+File: eplain.info, Node: Hooks, Next: Properties, Prev: \edefappend, Up: Expansion
+
+7.6.3 Hooks
+-----------
+
+A "hook" is simply a name for a group of actions which is executed in
+certain places--presumably when it is most useful to allow
+customization or modification. TeX already provides many builtin
+hooks; for example, the `\every ...' token lists are all examples of
+hooks.
+
+ Eplain provides several macros for adding actions to hooks. They all
+take two arguments: the name of the hook and the new actions.
+
+`hookaction NAME ACTIONS'
+`hookappend NAME ACTIONS'
+
+`hookprepend NAME ACTIONS'
+ Each of these adds ACTIONS to the hook NAME. (Any
+ previously-defined actions are retained.) NAME is not a control
+ sequence, but rather the characters of the name.
+
+`hookactiononce NAME `\CS''
+ `\hookactiononce' adds CS to NAME, like the macros above, but
+ first it adds
+
+ \global\let \CS \relax
+
+ to the definition of \CS. (This implies \CS must be a true
+ expandable macro, not a control sequence `\let' to a primitive or
+ some other such thing.) Thus, \CS is expanded the next time the
+ hook NAME is run, but it will disappear after that.
+
+ The `\global' is useful because `\hookactiononce' is most useful
+ when the grouping structure of the TeX code could be anything.
+ Neither this nor the other hook macros do global assignments to
+ the hook variable itself, so TeX's usual grouping rules apply.
+
+ The companion macro to defining hook actions is `\hookrun', for
+running them. This takes a single argument, the name of the hook. If
+no actions for the hook are defined, no error ensues.
+
+ Here is a skeleton of general `\begin' and `\end' macros that run
+hooks, and a couple of calls to define actions. The use of
+`\hookprepend' for the begin action and `\hookappend' for the end
+action ensures that the actions are executed in proper sequence with
+other actions (as long as the other actions use `\hookprepend' and
+`\hookappend' also).
+
+ \def\begin#1{ ... \hookrun{begin} ... }
+ \def\end#1{ ... \hookrun{end} ... }
+ \hookprepend{begin}\start_underline
+ \hookappend{end}\finish_underline
+
+
+File: eplain.info, Node: Properties, Next: \expandonce, Prev: Hooks, Up: Expansion
+
+7.6.4 Properties
+----------------
+
+A "property" is a name/value pair associated with another symbol,
+traditionally called an "atom". Both atom and property names are
+control sequence names.
+
+ Eplain provides two macros for dealing with property lists:
+`\setproperty' and `\getproperty'.
+
+`\setproperty ATOM PROPNAME VALUE'
+ `\setproperty' defines the property PROPERTY on the atom ATOM to
+ be VALUE. ATOM and PROPNAME can be anything acceptable to
+ `\csname'. VALUE can be anything.
+
+`\getproperty ATOM PROPNAME'
+ `\getproperty' expands to the value stored for PROPNAME on ATOM.
+ If PROPNAME is undefined, it expands to nothing (i.e., `\empty').
+
+
+ The idea of properties originated in Lisp (I believe). There, the
+implementation truly does associate properties with atoms. In TeX,
+where we have no builtin support for properties, the association is only
+conceptual.
+
+ The following example typesets `xyz'.
+
+ \setproperty{a}{pr}{xyz}
+ \getproperty{a}{pr}
+
+
+File: eplain.info, Node: \expandonce, Next: \ifundefined, Prev: Properties, Up: Expansion
+
+7.6.5 `\expandonce'
+-------------------
+
+`\expandonce' is defined as `\expandafter\noexpand'. Thus,
+`\expandonce TOKEN' expands TOKEN once, instead of to TeX primitives.
+This is most useful in an `\edef'.
+
+ For example, the following defines `\temp' to be `\foo', not `abc'.
+
+ \def\foo{abc}
+ \def\bar{\foo}
+ \edef\temp{\expandonce\bar}
+
+
+File: eplain.info, Node: \ifundefined, Next: \ifempty, Prev: \expandonce, Up: Expansion
+
+7.6.6 `\ifundefined'
+--------------------
+
+`\ifundefined{CS} T \else F \fi' expands the T text if the control
+sequence `\CS' is undefined or has been `\let' to `\relax', and the F
+text otherwise.
+
+ Since `\ifundefined' is not a primitive conditional, it cannot be
+used in places where TeX might skip tokens "at high speed", e.g.,
+within another conditional--TeX can't match up the `\if''s and `\fi''s.
+
+ This macro was taken directly from `The TeXbook', page 308.
+
+
+File: eplain.info, Node: \ifempty, Next: \ifinteger and \isinteger, Prev: \ifundefined, Up: Expansion
+
+7.6.7 `\ifempty'
+----------------
+
+`\ifempty{ARG} T \else F \fi' expands the T text if ARG is the empty
+string, and the F text otherwise. This macro is useful when you need
+to test for empty arguments to your macros, for example:
+
+ \def\foo#1{\ifempty{#1} T \else F \fi}
+
+ Since `\ifempty' is not a primitive conditional, it cannot be used
+in places where TeX might skip tokens "at high speed", e.g., within
+another conditional--TeX can't match up the `\if''s and `\fi''s.
+
+ Note that the following code
+
+ \def\empty{}
+ \ifempty\empty\message{empty}\else\message{not empty}\fi
+
+will produce the message `not empty'.
+
+
+File: eplain.info, Node: \ifinteger and \isinteger, Next: \futurenonspacelet, Prev: \ifempty, Up: Expansion
+
+7.6.8 `\ifinteger' and `\isinteger'
+-----------------------------------
+
+`\ifinteger{ARG} T \else F \fi' expands the T text if ARG is an
+integer, and the F text otherwise. This macro can detect positive and
+negative integers.
+
+ Since `\ifinteger' is not a primitive conditional, it cannot be used
+in places where TeX might skip tokens "at high speed", e.g., within
+another conditional--TeX can't match up the `\if''s and `\fi''s. For
+such situations Eplain provides `\isinteger', which can be used as
+follows:
+
+ \if\isinteger{ARG} T \else F \fi
+
+ Although `\ifinteger' and `\isinteger' work well with regular input,
+they are not bullet-proof. For example, the following code
+
+ \ifinteger{12_ab}integer\else not integer\fi
+
+will expand to `ab_integer' (and thus would not even compile outside
+math mode).
+
+ These macros come from TeX Frequently Asked Question
+(`http://www.tex.ac.uk/cgi-bin/texfaq2html').
+
+
+File: eplain.info, Node: \futurenonspacelet, Prev: \ifinteger and \isinteger, Up: Expansion
+
+7.6.9 `\futurenonspacelet'
+--------------------------
+
+The `\futurelet' primitive allows you to look at the next token from
+the input. Sometimes, though, you want to look ahead ignoring any
+spaces. This is what `\futurenonspacelet' does. It is otherwise the
+same as `\futurelet': you give it two control sequences as arguments,
+and it assigns the next nonspace token to the first, and then expands
+the second. For example:
+
+ \futurenonspacelet\temp\finishup
+ \def\finishup{\ifx\temp ...}
+
+
+File: eplain.info, Node: Obeying spaces, Next: Writing out numbers, Prev: Expansion, Up: Programming definitions
+
+7.7 Obeying spaces
+==================
+
+`\obeywhitespace' makes both end-of-lines and space characters in the
+input be respected in the output. Unlike plain TeX's `\obeyspaces',
+even spaces at the beginnings of lines turn into blank space.
+
+ By default, the size of the space that is produced by a space
+character is the natural space of the current font, i.e., what `\ '
+produces.
+
+ Ordinarily, a blank line in the input produces as much blank vertical
+space as a line of text would occupy. You can adjust this by assigning
+to the parameter `\blanklineskipamount': if you set this negative, the
+space produced by a blank line will be smaller; if positive, larger.
+
+ Tabs are not affected by this routine. In particular, if tabs occur
+at the beginning of a line, they will disappear. (If you are trying to
+make TeX do the "right thing" with tabs, don't. Use a utility program
+like expand instead.)
+
+
+File: eplain.info, Node: Writing out numbers, Next: Mode-specific penalties, Prev: Obeying spaces, Up: Programming definitions
+
+7.8 Writing out numbers
+=======================
+
+`\numbername' produces the written-out form of its argument, i.e.,
+`zero' through `ten' for the numbers 0-10, and numerals for all others.
+
+
+File: eplain.info, Node: Mode-specific penalties, Next: Auxiliary files, Prev: Writing out numbers, Up: Programming definitions
+
+7.9 Mode-specific penalties
+===========================
+
+TeX's built-in `\penalty' command simply appends to the current list,
+no matter what kind of list it is. You might intend a particular
+penalty to always be a "vertical" penalty, however, i.e., appended to a
+vertical list. Therefore, Eplain provides `\vpenalty' and `\hpenalty'
+which first leave the other mode and then do `\penalty'.
+
+ More precisely, `\vpenalty' inserts `\par' if the current mode is
+horizontal, and `\hpenalty' inserts `\leavevmode' if the current mode
+is vertical. (Thus, `\vpenalty' cannot be used in math mode.)
+
+
+File: eplain.info, Node: Auxiliary files, Next: User-defined environments, Prev: Mode-specific penalties, Up: Programming definitions
+
+7.10 Auxiliary files
+====================
+
+It is common to write some information out to a file to be used on a
+subsequent run. But when it is time to read the file again, you only
+want to do so if the file actually exists. `\testfileexistence' is
+given an argument which is appended to `\jobname', and sets the
+conditional `\iffileexists' appropriately. For example:
+
+ \testfileexistence{toc}%
+ \iffileexists
+ \input \jobname.toc
+ \fi
+
+ `\testfileexistence' takes an optional parameter; when given, it
+will override `\jobname' for the root part of the file name. For
+example, if you want to test for the file `answers.aux', you can do
+this with the following:
+
+ \testfileexistence[answers]{aux}%
+ \iffileexists
+ \input answers.aux
+ \fi
+
+
+File: eplain.info, Node: User-defined environments, Next: Page list and page range parsers, Prev: Auxiliary files, Up: Programming definitions
+
+7.11 User-defined environments
+==============================
+
+Plain TeX does not provide "named" block structures, only the anonymous
+`\begingroup' and `\endgroup' pair. The disadvantage of this is that
+when there are several such groups and one is mismatched, it can be
+difficult to find the error. Eplain provides a named block structure so
+that if you forget an `\environment' or an `\endenvironment', you will
+(probably) get an error message about it.
+
+ For example:
+
+ \def\itpar{
+ \environment{@italicpar}
+ \it\par
+ }
+ \def\enditpar{
+ \par
+ \endenvironment{@italicpar}%
+ }
+
+which could then be used to set italicized paragraphs:
+
+ \itpar
+ If I reprehend anything in this world, it is the use of my oracular
+ tongue, and a nice derangement of epitaphs!
+ \enditpar
+
+ The above sort of environment allows nesting. But environments
+shouldn't always be allowed to nest. Put the control sequence
+`\checkenv' at the beginning of a macro that is going to define an
+environment that should not be nested.
+
+
+File: eplain.info, Node: Page list and page range parsers, Prev: User-defined environments, Up: Programming definitions
+
+7.12 Page list and page range parsers
+=====================================
+
+The macros which Eplain uses to parse the page lists and ranges in the
+index, `\idxparselist' and `\idxparserange' (*note Page destinations
+for index terms::), are sometimes useful when defining page number
+encapsulators. They take one argument, text to parse. When a page
+list (range) is not present, they set `\idxpagei' to be `\empty'; when
+a list (range) is detected, they set `\idxpagei' and `\idxpageii' to
+the first and the second page numbers, respectively.
+
+ Eplain's defaults for the page list and page range delimiters are the
+same as those in MakeIndex, a comma followed by a space (`, ') and two
+dashes (`--'), respectively. If you customize MakeIndex to use
+different delimiters, you must not forget to let Eplain know about them
+with the commands
+
+ \setidxpagelistdelimiter{LIST-DELIM}
+ \setidxpagerangedelimiter{PAGE-DELIM}
+
+These commands save the LIST-DELIM and PAGE-DELIM delimiters in `\idxpagelistdelimiter'
+and `\idxpagerangedelimiter', respectively.
+
+ For example, you may want to define a page number markup command
+which italicizes and properly underlines page ranges by underlining
+only the page numbers and not the delimiter:
+
+ \def\ituline#1{%
+ {\it
+ \idxparserange{#1}%
+ \ifx\idxpagei\empty
+ % The argument is a single page number.
+ \underbar{#1}%
+ \else
+ % The argument is a page range.
+ \underbar{\idxpagei}\idxpagerangedelimiter\underbar{\idxpageii}%
+ \fi}%
+ }
+
+Note that the `\ituline' macro is not aware of page lists. This is not
+needed if you use hyperlinks in the index, because `\hlidx' and
+`\hlidxpage' will break up the page lists before calling the user's
+page encapsulator (*note Page destinations for index terms::), so
+`\ituline' will never see the lists. If, however, you need to design a
+macro which also takes care of the lists, you can extend `\ituline'
+with an additional call to `\idxparselist'.
+
+
+File: eplain.info, Node: Demo files, Next: Macro index, Prev: Programming definitions, Up: Top
+
+8 Demo files
+************
+
+This chapter contains listings of source files, along with the output
+they produce (where appropriate), which illustrate various aspects of
+Eplain. The files can be found in the `demo' subdirectory of Eplain
+distribution. These demos, both the sources and the compiled PDF and
+PS files, are also available from `http://tug.org/eplain/demo'.
+
+* Menu:
+
+* Hyperlinks (xhyper.tex)::
+* Highlighting TeX comments in listings (lscommnt.tex)::
+
+
+File: eplain.info, Node: Hyperlinks (xhyper.tex), Next: Highlighting TeX comments in listings (lscommnt.tex), Up: Demo files
+
+8.1 Hyperlinks (`xhyper.tex')
+=============================
+
+% (This file is public domain.)
+%
+% This file demonstrates the following features of Eplain:
+%
+% - explicit and implicit hyperlinks;
+% - symbolic cross-references;
+% - inserting external graphics using |\includegraphics| from
+% the \LaTeX\ package |graphicx.sty|.
+% - rotating text using |\rotatebox| from |graphicx.sty|.
+%
+% The compiled demo can be downloaded from
+%
+% http://tug.org/eplain/demo
+%
+% In order to compile this file yourself, you will need the CTAN lion
+% drawing by Duane Bibby from
+%
+% ftp://tug.ctan.org/ftpmaint/CTAN_lion/ctan_lion_350x350.png
+%
+% (thanks, |www.ctan.org|). Place the image file in the same
+% directory with this file, and change to that directory. Now, to
+% produce a PDF, run twice the command
+%
+% pdftex xhyper.tex
+%
+% During the first run, Eplain will write the information about the
+% cross-references into |xhyper.aux|, and during the second run this
+% information will be read by Eplain to typeset the references.
+%
+% Demo case:
+%
+% Suppose you are using pdf\TeX, have a figure you want to insert
+% scaled to $200\,pt$ horizontally, and you want this figure to
+% completely fill the PDF viewer's window whenever the reader
+% selects a link pointing to this figure. Additionally, you want to
+% typeset some text as live hyperlinks, clicking on which will start
+% a Web browser and open a URL.
+
+\input eplain
+
+% Load \LaTeX\ packages.
+\beginpackages
+ % |url.sty| provides the |\url| command which we will use to typeset
+ % a URL. We request that |url.sty| be the version from June~27,
+ % 2005, or later, because earlier versions had problems interacting
+ % with plain \TeX.
+ \usepackage{url}[2005/06/27]
+ % |color.sty| provides support for colored text; all hyperlinks are
+ % automatically colored by Eplain when this package is loaded. We give
+ % the |dvipsnames| option because we want to use named colors from the
+ % |dvips| graphics driver.
+ \usepackage[dvipsnames]{color}
+ % Finally, we load |graphicx.sty|, for the macros |\includegraphics|
+ % and |\rotatebox|.
+ \usepackage{graphicx}
+\endpackages
+
+% Remember that hyperlinks are off by default. Therefore, we need to
+% enable them.
+\enablehyperlinks
+
+% Customize some hyperlink options. First, we set border width to~$0$
+% for all links to get rid of the default boxes around links (we
+% prefer colored links over the boxed links). Next, we say that all
+% links created by the |url| hyperlink group (which means the |\url|
+% command from |url.sty|) must be colored using the named color
+% |BlueViolet|.
+\hlopts{bwidth=0}
+\hlopts[url]{colormodel=named,color=BlueViolet}
+
+% Inhibit page numbering (we have only one page).
+\nopagenumbers
+
+% Define a class word for the cross-reference class |figure|. This
+% word, when defined, will be automatically prepended by Eplain to the
+% reference created by |\ref| (read on to see its use).
+\def\figureword{fig.}
+
+% Allocate a count register for the figure's number, and a box
+% register which we'll use to measure dimensions of the image.
+\newcount\fignumber
+\newbox\imgbox
+
+% Now comes the fun part--constructing the figure for the image of the
+% \CTAN\ lion. We define a macro
+%
+% \fig{LABEL}{FILENAME}{CAPTION}{WIDTH}
+%
+% which creates a figure using LABEL for the cross-reference and
+% hyperlink label, reading the image from file FILENAME, using CAPTION
+% to name the figure, and WIDTH to scale the image horizontally.
+\def\fig#1#2#3#4{%
+ % Leave some space above the figure. This will also ensure that we
+ % are in the vertical mode before we produce a |\vbox|.
+ \medskip
+ % Advance the figure number. |\global| ensures that the change to
+ % the count register is global, even when |\fig| is buried inside a
+ % group.
+ \global\advance\fignumber by 1
+ % We use |\includegraphics| (from |graphicx.sty|) to load the image,
+ % scaled to the specified width, into our ``measuring'' box
+ % |\imgbox|.
+ \setbox\imgbox = \hbox{\includegraphics[width=#4]{#2}}%
+ % To make the demo even more exciting, let's put the figure's
+ % caption to the left of the image into the |\indent| space of the
+ % new paragraph, and rotate the caption~$90^\circ$.
+ \textindent{%
+ \rotatebox{90}{F{\sc IGURE}~\the\fignumber. #3}%
+ }%
+ % Continue the paragraph by constructing a |\vbox| with the image of
+ % the lion. We use |\definexref| to define the cross-reference
+ % label.
+ \vbox{%
+ % In addition to the cross-reference label, |\definexref| will
+ % create a hyperlink destination with the same label. Therefore,
+ % we customize this destination to do what we need. We say that
+ % destination type for the hyperlink group |definexref| (to which
+ % |\definexref| belongs) should be |fitr|. This destination type
+ % will magnify the rectangle specified by the options |width|,
+ % |height| and |depth| to the PDF viewer's window. Therefore, we
+ % set those options accordingly with |\hldestopts| (notice the use
+ % of |depth| instead of |height|---we will want the rectangle to
+ % extend {\it downward}, to cover the image which will come
+ % next). Notice that these settings will be isolated within the
+ % current group (i.e., the |\vbox| we're constructing).
+ \hldesttype[definexref]{fitr}%
+ \hldestopts[definexref]{width=\wd\imgbox,height=0pt,depth=\ht\imgbox}%
+ % We define a symbolic label so that we can later refer
+ % to the figure with |\ref|. The command |\definexref| does
+ % exactly that. The last argument to |\definexref| specifies
+ % class of the label, which determines the word used by |\ref| in
+ % front of the reference text (remember that we've defined
+ % |\figureword| above).
+ \definexref{#1}{\the\fignumber}{figure}%
+ % Finally, produce the image which we've been stashing in the box
+ % register |\imgbox|.
+ \box\imgbox
+ }%
+ \medskip
+}
+
+% Create the figure.
+\fig{CTANlion}{ctan_lion_350x350}{Lion in the archives}{200pt}
+
+% Finished with the fun part, we can relax and typeset some
+% hyperlinks. The easiest way to do that is to use the |\ref|
+% cross-reference command. We can even pass an optional argument
+% (|the lion in|), which will be placed before the class word (|fig.|)
+% and become part of the link (to make sure the reader does not have
+% to aim too hard).
+Show me \ref[the lion in]{CTANlion}.
+
+% If you are the restless kind, here's another way to create a
+% hyperlink to the image: we create a link explicitly by using
+% |\hlstart ... \hlend|. We don't specify the link type, therefore
+% the default type |name| will be used (these are ``named links'',
+% i.e., links pointing to destinations identified by labels). In the
+% options argument, we specify that the border of the link should be
+% inverted when the user clicks the link (|hlight=O|), and also set
+% special color for this link, overriding the default dark-red. The
+% label for the destination is the same as the cross-reference label,
+% |CTANlion|.
+Show me
+\hlstart{}{hlight=O,colormodel=named,color=OliveGreen}{CTANlion}
+ the CTAN lion\hlend.
+
+% Let's now point somewhere outside our document. Eplain homepage is
+% a good target. In the similar spirit, let's consider two
+% approaches. The easy one is to use the |\url| command from
+% |url.sty|. Remember that we have customized the color of |url|
+% hyperlinks, so this one will show up with a different color than the
+% default dark-red.
+Take me to \url{http://tug.org/eplain}.
+
+% The second approach is to create an explicit URL link. We specify
+% yet another border highlighting mode, |P|, which means that the
+% region underneath the bounding box of the link will be drawn inset
+% into the page. Also, let's set the color of the hyperlink to an RGB
+% color |0.4,0.1,0.4|. Since we cannot use commas to separate the
+% color elements inside the options parameter to |\hlstart| (commas
+% there separate options), we have to first create a user-defined
+% color with |\definecolor| from |color.sty|, and use that in
+% |\hlstart|.
+\definecolor{mycolor}{rgb}{0.4,0.1,0.4}
+
+Take me to
+\hlstart{url}{hlight=P,colormodel=,color=mycolor}{http://tug.org/eplain}
+ Eplain homepage\hlend.
+
+\bye
+
+
+File: eplain.info, Node: Highlighting TeX comments in listings (lscommnt.tex), Prev: Hyperlinks (xhyper.tex), Up: Demo files
+
+8.2 Highlighting TeX comments in listings (`lscommnt.tex')
+==========================================================
+
+% (This file is public domain.)
+% Demonstrate how Eplain can be used to include a TeX source file
+% verbatim, typesetting comments in colored italic typewriter type.
+
+% Load Eplain and LaTeX's color.sty package.
+\input eplain
+\beginpackages \usepackage{color} \endpackages
+\nopagenumbers % Disable page numbers.
+\font\commentfont = cmitt10 % Font for the comments (italic \tt).
+% We'll define some `protected' macros with `@' in their names.
+\makeatletter
+% Define an equivalent of Eplain's \letreturn, to be able to assign
+% various actions to the (active) percent character.
+\begingroup \makeactive\%
+ \gdef\letpercent{\let%}
+\endgroup
+% The listing hook to be called in \setuplistinghook, see below. It
+% makes `%' active and assigns it a `start comment' action.
+\def\hlightcommentslisting{\makeactive\% \letpercent\start@comment}%
+% This is what `%' is aliased to before a comment is started.
+\def\start@comment{%
+ \leavevmode % Needed in the very first line of the input to process
+ % the new par (possibly inserting line number) before we
+ % kick in with the color and stuff.
+ \begingroup % Isolate color and font changes and the redefinitions.
+ \commentfont
+ \color[cmyk]{0.28,1,1,0.35}%
+ \percentchar % Produce the actual `%' and
+ \letpercent\percentchar % make all following `%'s do the same.
+ \letreturn\end@comment % Call \end@comment at end-of-line.
+}
+% \end@comment (alias for ^^M inside a comment) will end the comment
+% started by \start@comment. We make ^^M active temporarily so that
+% the active version of ^^M gets "frozen" into \end@comment.
+\begingroup \makeactive\^^M % Avoid ^^M's from here on.
+ \gdef\end@comment{\endgroup ^^M}%
+\endgroup
+\resetatcatcode % Make `@' again inaccessible for use in macro names.
+
+% Define \setuplistinghook to setup comments highlighting, line
+% numbering and omitting the last (empty) line of input.
+\def\setuplistinghook{\hlightcommentslisting \linenumberedlisting
+ \nolastlinelisting}
+% Isn't this fun? This file typesets itself, with the extra bonus of
+% the pretty-printed comments and numbered source lines!
+\listing{lscommnt}
+\bye
+
+
+File: eplain.info, Node: Macro index, Next: Concept index, Prev: Demo files, Up: Top
+
+Macro index
+***********
+
+
+* Menu:
+
+* @hllabel <1>: Link types for pdftex and dvipdfm.
+ (line 68)
+* @hllabel <2>: Destination types for pdftex and dvipdfm.
+ (line 84)
+* @hllabel <3>: Link types for hypertex.
+ (line 39)
+* @hllabel: Destination types for hypertex.
+ (line 14)
+* @indexproof insertion class: Proofing index terms.
+ (line 28)
+* abovecolumnskip: Multiple columns. (line 33)
+* abovecolumnspenalty: Tables. (line 32)
+* abovelistpenalty: Formatting lists. (line 29)
+* abovelistskip: Formatting lists. (line 29)
+* abovelistskipamount: Formatting lists. (line 10)
+* adjarrow: Arrows and morphisms.
+ (line 112)
+* adjmapdown: Arrows and morphisms.
+ (line 90)
+* adjmapleft: Arrows and morphisms.
+ (line 65)
+* adjmapright: Arrows and morphisms.
+ (line 62)
+* adjmapup: Arrows and morphisms.
+ (line 93)
+* advancebottommargin: Margins. (line 28)
+* advanceleftmargin: Margins. (line 28)
+* advancerightmargin: Margins. (line 28)
+* advancetopmargin: Margins. (line 28)
+* afterindexterm: Customizing indexing.
+ (line 6)
+* afterindexterm hook: Indexing commands. (line 63)
+* AMSLaTeX: Logos. (line 10)
+* AMSTeX: Logos. (line 10)
+* arrow: Arrows and morphisms.
+ (line 20)
+* bblem: Formatting bibliographies.
+ (line 33)
+* bblfilebasename: Citations. (line 30)
+* bblhook: Formatting bibliographies.
+ (line 55)
+* bblnewblock: Formatting bibliographies.
+ (line 41)
+* bblrm: Formatting bibliographies.
+ (line 30)
+* bblsc: Formatting bibliographies.
+ (line 37)
+* bcolor (hyperlink option): Link options for pdftex and dvipdfm.
+ (line 14)
+* bdash (hyperlink option): Link options for pdftex and dvipdfm.
+ (line 20)
+* begin for index entries: Modifying index entries.
+ (line 22)
+* beginindex hook: Typesetting an index.
+ (line 30)
+* beginlist: Formatting lists. (line 51)
+* beginpackages: Environment for loading packages.
+ (line 6)
+* begin{picture}: Packages known to work.
+ (line 14)
+* begin{theindex}: Typesetting an index.
+ (line 17)
+* belowcolumnskip: Multiple columns. (line 34)
+* belowfootnoterulespace: Footnotes. (line 46)
+* belowlistskip: Formatting lists. (line 30)
+* belowlistskipamount: Formatting lists. (line 10)
+* biarrow: Arrows and morphisms.
+ (line 109)
+* biblabelcontents: Formatting bibliographies.
+ (line 23)
+* biblabelextraspace: Formatting bibliographies.
+ (line 49)
+* biblabelprint: Formatting bibliographies.
+ (line 17)
+* biblabelwidth: Formatting bibliographies.
+ (line 11)
+* bibliography: Citations. (line 56)
+* bibliography (hyperlinks): Citation hyperlinks. (line 11)
+* bibliographystyle: Citations. (line 63)
+* BibTeX: Logos. (line 10)
+* bihline: Arrows and morphisms.
+ (line 68)
+* bimapdown: Arrows and morphisms.
+ (line 84)
+* bimapleft: Arrows and morphisms.
+ (line 59)
+* bimapright: Arrows and morphisms.
+ (line 56)
+* bimapup: Arrows and morphisms.
+ (line 87)
+* bisline: Arrows and morphisms.
+ (line 115)
+* bivline: Arrows and morphisms.
+ (line 96)
+* blackbox: Boxes. (line 7)
+* blanklineskipamount in justified text: Justification. (line 24)
+* blanklineskipamount in obeyed text: Obeying spaces. (line 16)
+* bottom (destination option) <1>: Destination options for pdftex and dvipdfm.
+ (line 56)
+* bottom (destination option): Destination types for pdftex and dvipdfm.
+ (line 65)
+* bottommargin: Margins. (line 18)
+* boxit: Boxes. (line 29)
+* boxitspace: Boxes. (line 31)
+* bstyle (hyperlink option): Link options for pdftex and dvipdfm.
+ (line 26)
+* bwidth (hyperlink option): Link options for pdftex and dvipdfm.
+ (line 50)
+* catcode: Category codes. (line 13)
+* center: Justification. (line 7)
+* centereddisplays: Displays. (line 13)
+* channelwidth <1>: Commutative diagram parameters.
+ (line 36)
+* channelwidth: Arrows and morphisms.
+ (line 119)
+* cite: Citations. (line 37)
+* cite (hyperlinks): Citation hyperlinks. (line 6)
+* cmd (destination option) <1>: Destination options for pdftex and dvipdfm.
+ (line 14)
+* cmd (destination option) <2>: Destination types for pdftex and dvipdfm.
+ (line 83)
+* cmd (destination option) <3>: Destination options for hypertex.
+ (line 7)
+* cmd (destination option): Destination types for hypertex.
+ (line 14)
+* cmd (hyperlink option) <1>: Link options for pdftex and dvipdfm.
+ (line 56)
+* cmd (hyperlink option) <2>: Link types for pdftex and dvipdfm.
+ (line 67)
+* cmd (hyperlink option) <3>: Link options for hypertex.
+ (line 7)
+* cmd (hyperlink option): Link types for hypertex.
+ (line 38)
+* color (hyperlink option): Options supported by all drivers.
+ (line 37)
+* colormodel (hyperlink option): Options supported by all drivers.
+ (line 37)
+* columnfill: Multiple columns. (line 14)
+* commdiag: Construction of commutative diagrams.
+ (line 9)
+* commdiagbaselines <1>: Commutative diagram parameters.
+ (line 43)
+* commdiagbaselines: Construction of commutative diagrams.
+ (line 64)
+* csn: \csn and \ece. (line 6)
+* definecolor: Hyperlinks (xhyper.tex).
+ (line 6)
+* definecontentsfile: Alternative contents files.
+ (line 6)
+* defineindex: Indexing. (line 37)
+* definexref <1>: Hyperlinks (xhyper.tex).
+ (line 6)
+* definexref: Defining generic references.
+ (line 6)
+* definexref (hyperlinks): Cross-reference hyperlinks.
+ (line 6)
+* depth (destination option) <1>: Destination options for pdftex and dvipdfm.
+ (line 34)
+* depth (destination option): Destination types for pdftex and dvipdfm.
+ (line 61)
+* depth (hyperlink option): Link options for pdftex and dvipdfm.
+ (line 124)
+* discretionaries: Paths. (line 20)
+* displaylines: Displays. (line 18)
+* doublecolumns: Multiple columns. (line 7)
+* drawline: Slanted lines and vectors.
+ (line 6)
+* drawvector: Slanted lines and vectors.
+ (line 6)
+* dvipdfm (hyperlink driver): Hyperlink drivers pdftex and dvipdfm.
+ (line 6)
+* eattoken: Macro arguments. (line 23)
+* ece: \csn and \ece. (line 10)
+* edefappend: \edefappend. (line 6)
+* ehrule: Rules. (line 17)
+* enablehyperlinks <1>: Hyperlink driver nolinks.
+ (line 48)
+* enablehyperlinks <2>: Choosing destination placement.
+ (line 7)
+* enablehyperlinks: Introduction to hyperlinks.
+ (line 42)
+* end for index entries: Modifying index entries.
+ (line 22)
+* endlist: Formatting lists. (line 53)
+* endnumberedlist: Lists. (line 14)
+* endorderedlist: Lists. (line 14)
+* endpackages: Environment for loading packages.
+ (line 6)
+* endunorderedlist: Lists. (line 22)
+* end{picture}: Packages known to work.
+ (line 14)
+* end{theindex}: Typesetting an index.
+ (line 17)
+* eplain: Invoking Eplain. (line 30)
+* eplaininput: Environment for loading packages.
+ (line 28)
+* eqalignno: Displays. (line 18)
+* eqconstruct: Formatting equation references.
+ (line 21)
+* eqdef: Equation references. (line 15)
+* eqdef (hyperlinks): Equation reference hyperlinks.
+ (line 6)
+* eqdefn: Equation references. (line 38)
+* eqdefn (hyperlinks): Equation reference hyperlinks.
+ (line 6)
+* eqnumber: Equation references. (line 8)
+* eqprint: Formatting equation references.
+ (line 12)
+* eqref <1>: Equation reference hyperlinks.
+ (line 20)
+* eqref: Equation references. (line 46)
+* eqrefn <1>: Equation reference hyperlinks.
+ (line 20)
+* eqrefn: Equation references. (line 52)
+* eqsubdef: Subequation references.
+ (line 11)
+* eqsubdef (hyperlinks): Equation reference hyperlinks.
+ (line 6)
+* eqsubdefn: Subequation references.
+ (line 11)
+* eqsubdefn (hyperlinks): Equation reference hyperlinks.
+ (line 6)
+* eqsubreftext: Subequation references.
+ (line 22)
+* everyfootnote: Footnotes. (line 35)
+* evrule: Rules. (line 18)
+* expandonce: \expandonce. (line 6)
+* ext (hyperlink option) <1>: Link options for hypertex.
+ (line 20)
+* ext (hyperlink option): Link types for hypertex.
+ (line 23)
+* file (hyperlink option) <1>: Link options for pdftex and dvipdfm.
+ (line 63)
+* file (hyperlink option) <2>: Link types for pdftex and dvipdfm.
+ (line 41)
+* file (hyperlink option) <3>: Link options for hypertex.
+ (line 14)
+* file (hyperlink option): Link types for hypertex.
+ (line 22)
+* fileexists (conditional): Auxiliary files. (line 10)
+* filename (hyperlink type) <1>: Link types for pdftex and dvipdfm.
+ (line 40)
+* filename (hyperlink type): Link types for hypertex.
+ (line 21)
+* filepage (hyperlink type): Link types for pdftex and dvipdfm.
+ (line 52)
+* fit (destination type): Destination types for pdftex and dvipdfm.
+ (line 18)
+* fitb (destination type): Destination types for pdftex and dvipdfm.
+ (line 39)
+* fitbh (destination type): Destination types for pdftex and dvipdfm.
+ (line 44)
+* fitbv (destination type): Destination types for pdftex and dvipdfm.
+ (line 52)
+* fith (destination type): Destination types for pdftex and dvipdfm.
+ (line 23)
+* fitr (destination type): Destination types for pdftex and dvipdfm.
+ (line 60)
+* fitv (destination type): Destination types for pdftex and dvipdfm.
+ (line 31)
+* flushleft: Justification. (line 7)
+* flushright: Justification. (line 7)
+* fmtversion: Introduction. (line 47)
+* footnote (hyperlinks): Footnote hyperlinks. (line 7)
+* footnotemarkseparation: Footnotes. (line 25)
+* footnoteruleheight: Footnotes. (line 44)
+* footnoterulewidth: Footnotes. (line 44)
+* For: Iteration. (line 15)
+* for: Iteration. (line 6)
+* frac: Fractions. (line 6)
+* fullmonthname: Time of day. (line 13)
+* futurenonspacelet: \futurenonspacelet. (line 6)
+* generaldisplay: Formatting displays. (line 10)
+* getproperty: Properties. (line 18)
+* gloggingall: Diagnostics. (line 23)
+* gobble: Macro arguments. (line 7)
+* gobbletwo: Macro arguments. (line 7)
+* gridcommdiag: Construction of commutative diagrams.
+ (line 89)
+* gtracingall: Diagnostics. (line 23)
+* gutter: Multiple columns. (line 23)
+* gutterbox: Multiple columns. (line 24)
+* hangindent for index entries: Typesetting an index.
+ (line 45)
+* harrowlength <1>: Commutative diagram parameters.
+ (line 11)
+* harrowlength: Arrows and morphisms.
+ (line 27)
+* hchannel: Commutative diagram parameters.
+ (line 39)
+* height (destination option) <1>: Destination options for pdftex and dvipdfm.
+ (line 37)
+* height (destination option): Destination types for pdftex and dvipdfm.
+ (line 60)
+* height (hyperlink option): Link options for pdftex and dvipdfm.
+ (line 127)
+* hgrid <1>: Commutative diagram parameters.
+ (line 47)
+* hgrid: Construction of commutative diagrams.
+ (line 109)
+* hldest <1>: Setting hyperlink types and options.
+ (line 7)
+* hldest <2>: Destination types for pdftex and dvipdfm.
+ (line 87)
+* hldest <3>: Destination types for hypertex.
+ (line 17)
+* hldest: Explicit hyperlinks. (line 6)
+* hldestoff <1>: Turning low-level commands on/off.
+ (line 6)
+* hldestoff: Hyperlink driver nolinks.
+ (line 10)
+* hldeston: Turning low-level commands on/off.
+ (line 6)
+* hldestopts <1>: Hyperlinks (xhyper.tex).
+ (line 6)
+* hldestopts <2>: Setting group options.
+ (line 11)
+* hldestopts: Setting default types and options.
+ (line 15)
+* hldesttype <1>: Hyperlinks (xhyper.tex).
+ (line 6)
+* hldesttype <2>: Setting group types. (line 6)
+* hldesttype: Setting default types and options.
+ (line 6)
+* hlend <1>: Hyperlinks (xhyper.tex).
+ (line 6)
+* hlend: Explicit hyperlinks. (line 25)
+* hlfootbacklabel: Footnote hyperlinks. (line 12)
+* hlfootlabel: Footnote hyperlinks. (line 12)
+* hlfootlabelnumber: Footnote hyperlinks. (line 14)
+* hlhash: Link types for hypertex.
+ (line 40)
+* hlidx: Exact destinations for index terms.
+ (line 13)
+* hlidxlabel: Exact destinations for index terms.
+ (line 23)
+* hlidxlabelnumber: Exact destinations for index terms.
+ (line 25)
+* hlidxpage: Page destinations for index terms.
+ (line 20)
+* hlidxpagelabel: Page destinations for index terms.
+ (line 11)
+* hlight (hyperlink option): Link options for pdftex and dvipdfm.
+ (line 69)
+* hlightcommentslisting: Highlighting TeX comments in listings (lscommnt.tex).
+ (line 6)
+* hline: Arrows and morphisms.
+ (line 53)
+* hloff <1>: Turning low-level commands on/off.
+ (line 6)
+* hloff: Hyperlink driver nolinks.
+ (line 10)
+* hlon: Turning low-level commands on/off.
+ (line 6)
+* hlopts <1>: Hyperlinks (xhyper.tex).
+ (line 6)
+* hlopts <2>: Setting group options.
+ (line 11)
+* hlopts: Setting default types and options.
+ (line 15)
+* hlstart <1>: Hyperlinks (xhyper.tex).
+ (line 6)
+* hlstart <2>: Setting hyperlink types and options.
+ (line 7)
+* hlstart <3>: Link types for pdftex and dvipdfm.
+ (line 71)
+* hlstart <4>: Link types for hypertex.
+ (line 43)
+* hlstart: Explicit hyperlinks. (line 25)
+* hltype <1>: Setting group types. (line 6)
+* hltype: Setting default types and options.
+ (line 6)
+* hmorphposn <1>: Commutative diagram parameters.
+ (line 20)
+* hmorphposn: Arrows and morphisms.
+ (line 33)
+* hmorphposndn <1>: Commutative diagram parameters.
+ (line 22)
+* hmorphposndn: Arrows and morphisms.
+ (line 38)
+* hmorphposnlft <1>: Commutative diagram parameters.
+ (line 23)
+* hmorphposnlft: Arrows and morphisms.
+ (line 38)
+* hmorphposnrt <1>: Commutative diagram parameters.
+ (line 22)
+* hmorphposnrt: Arrows and morphisms.
+ (line 38)
+* hmorphposnup <1>: Commutative diagram parameters.
+ (line 22)
+* hmorphposnup: Arrows and morphisms.
+ (line 38)
+* hoffset: Proofing index terms.
+ (line 21)
+* hookaction: Hooks. (line 15)
+* hookactiononce: Hooks. (line 23)
+* hookappend: Hooks. (line 16)
+* hookprepend: Hooks. (line 17)
+* hookrun: Hooks. (line 39)
+* href: General hyperlinks. (line 6)
+* hruledefaultdepth: Rules. (line 9)
+* hruledefaultheight: Rules. (line 9)
+* hsize: Margins. (line 34)
+* hypertex (hyperlink driver): Hyperlink driver hypertex.
+ (line 6)
+* hyphenpenalty for index entries: Typesetting an index.
+ (line 45)
+* identity: Macro arguments. (line 28)
+* idx: Indexing commands. (line 8)
+* idx (hyperlinks): Index hyperlinks. (line 6)
+* idxargclose: Index entries with special characters.
+ (line 73)
+* idxargopen: Index entries with special characters.
+ (line 73)
+* idxbeginrangemark: Customizing indexing.
+ (line 42)
+* idxencapoperator: Customizing indexing.
+ (line 39)
+* idxendrangemark: Customizing indexing.
+ (line 45)
+* idxexact: Choosing destination placement.
+ (line 8)
+* idxmarked: Indexing commands. (line 29)
+* idxmarked (hyperlinks): Index hyperlinks. (line 6)
+* idxname: Indexing commands. (line 19)
+* idxname (hyperlinks): Index hyperlinks. (line 6)
+* idxnameseparator: Indexing commands. (line 19)
+* idxnone: Choosing destination placement.
+ (line 9)
+* idxpage: Choosing destination placement.
+ (line 9)
+* idxpagei: Page list and page range parsers.
+ (line 6)
+* idxpageii: Page list and page range parsers.
+ (line 6)
+* idxpagelistdelimiter: Page list and page range parsers.
+ (line 23)
+* idxpagenum: Customizing indexing.
+ (line 51)
+* idxpagerangedelimiter: Page list and page range parsers.
+ (line 23)
+* idxparselist: Page list and page range parsers.
+ (line 6)
+* idxparserange: Page list and page range parsers.
+ (line 6)
+* idxrangebeginword: Customizing indexing.
+ (line 20)
+* idxrangeendword: Customizing indexing.
+ (line 23)
+* idxseealsocmdword: Customizing indexing.
+ (line 29)
+* idxseecmdword: Customizing indexing.
+ (line 26)
+* idxsubentryseparator: Customizing indexing.
+ (line 36)
+* idxsubmarked: Indexing commands. (line 40)
+* idxsubmarked (hyperlinks): Index hyperlinks. (line 6)
+* ifempty: \ifempty. (line 6)
+* iffileexists: Auxiliary files. (line 10)
+* ifinteger: \ifinteger and \isinteger.
+ (line 6)
+* ifpdf <1>: Introduction to hyperlinks.
+ (line 51)
+* ifpdf: Checking for PDF output.
+ (line 10)
+* ifrewritetocfile: Reading the .toc file.
+ (line 26)
+* ifundefined: \ifundefined. (line 6)
+* includegraphics: Hyperlinks (xhyper.tex).
+ (line 6)
+* indexfilebasename: Typesetting an index.
+ (line 11)
+* indexfonts: Typesetting an index.
+ (line 24)
+* indexitem hook: Typesetting an index.
+ (line 49)
+* indexprooffont: Proofing index terms.
+ (line 12)
+* indexproofterm: Proofing index terms.
+ (line 12)
+* indexproofunbox: Proofing index terms.
+ (line 28)
+* indexsee <1>: Hyperlinks in see and see also entries.
+ (line 8)
+* indexsee: Customizing indexing.
+ (line 55)
+* indexseealso <1>: Hyperlinks in see and see also entries.
+ (line 8)
+* indexseealso: Customizing indexing.
+ (line 55)
+* indexseealsowords: Customizing indexing.
+ (line 55)
+* indexseeword: Customizing indexing.
+ (line 55)
+* indexsetmargins: Proofing index terms.
+ (line 21)
+* indexspace: Typesetting an index.
+ (line 54)
+* innerdef: Allocation macros. (line 26)
+* innerinnerdef: Allocation macros. (line 37)
+* innernewbox: Allocation macros. (line 21)
+* innernewcount: Allocation macros. (line 21)
+* innernewdimen: Allocation macros. (line 21)
+* innernewfam: Allocation macros. (line 21)
+* innernewhelp: Allocation macros. (line 21)
+* innernewif: Allocation macros. (line 21)
+* innernewinsert: Allocation macros. (line 21)
+* innernewlanguage: Allocation macros. (line 21)
+* innernewread: Allocation macros. (line 22)
+* innernewskip: Allocation macros. (line 22)
+* innernewtoks: Allocation macros. (line 22)
+* innernewwrite: Allocation macros. (line 22)
+* input: Environment for loading packages.
+ (line 24)
+* insidemargin: Proofing index terms.
+ (line 21)
+* interfootnoteskip: Footnotes. (line 29)
+* interitemskip: Formatting lists. (line 30)
+* interitemskipamount: Formatting lists. (line 14)
+* isinteger: \ifinteger and \isinteger.
+ (line 13)
+* item in indexes: Typesetting an index.
+ (line 35)
+* itemletter: Formatting lists. (line 44)
+* itemnumber: Formatting lists. (line 44)
+* ituline: Page list and page range parsers.
+ (line 26)
+* jobname <1>: Auxiliary files. (line 9)
+* jobname <2>: Typesetting an index.
+ (line 11)
+* jobname: Citations. (line 17)
+* LAMSTeX: Logos. (line 10)
+* LaTeX: Logos. (line 10)
+* lbracechar: Category codes. (line 59)
+* left (destination option) <1>: Destination options for pdftex and dvipdfm.
+ (line 60)
+* left (destination option): Destination types for pdftex and dvipdfm.
+ (line 11)
+* leftdisplayindent: Displays. (line 11)
+* leftdisplays: Displays. (line 10)
+* leftdisplaysetup: Formatting displays. (line 8)
+* leftmargin: Margins. (line 18)
+* leqalignno: Displays. (line 19)
+* letreturn: Category codes. (line 41)
+* letter: Category codes. (line 10)
+* lft: Arrows and morphisms.
+ (line 15)
+* li: Lists. (line 30)
+* li (hyperlinks): List hyperlinks. (line 6)
+* linenumberedlisting <1>: Highlighting TeX comments in listings (lscommnt.tex).
+ (line 6)
+* linenumberedlisting: Verbatim listing. (line 17)
+* listcompact: Lists. (line 41)
+* listing <1>: Highlighting TeX comments in listings (lscommnt.tex).
+ (line 6)
+* listing: Verbatim listing. (line 7)
+* listingfont: Verbatim listing. (line 10)
+* listleftindent: Formatting lists. (line 18)
+* listmarkerspace: Formatting lists. (line 33)
+* listrightindent: Formatting lists. (line 18)
+* loggingall: Diagnostics. (line 12)
+* loop: Iteration. (line 40)
+* makeactive: Category codes. (line 13)
+* makeatletter: Category codes. (line 22)
+* makeatother: Category codes. (line 32)
+* makeblankbox: Boxes. (line 12)
+* makecolumns: Tables. (line 6)
+* makeheadline: Proofing index terms.
+ (line 28)
+* mapdown: Arrows and morphisms.
+ (line 13)
+* mapleft: Arrows and morphisms.
+ (line 6)
+* mapright: Arrows and morphisms.
+ (line 6)
+* mapup: Arrows and morphisms.
+ (line 13)
+* matrix: Construction of commutative diagrams.
+ (line 10)
+* MF: Logos. (line 10)
+* monthname: Time of day. (line 10)
+* morphdist <1>: Commutative diagram parameters.
+ (line 32)
+* morphdist: Arrows and morphisms.
+ (line 33)
+* name (hyperlink type) <1>: Link types for pdftex and dvipdfm.
+ (line 18)
+* name (hyperlink type): Link types for hypertex.
+ (line 7)
+* new...: Allocation macros. (line 9)
+* newwin (hyperlink option) <1>: Link options for pdftex and dvipdfm.
+ (line 90)
+* newwin (hyperlink option): Link types for pdftex and dvipdfm.
+ (line 42)
+* noarrow: Invoking Eplain. (line 84)
+* noauxfile: Invoking Eplain. (line 89)
+* nobibtex: Invoking Eplain. (line 73)
+* nocite: Citations. (line 53)
+* nolastlinelisting <1>: Highlighting TeX comments in listings (lscommnt.tex).
+ (line 6)
+* nolastlinelisting: Verbatim listing. (line 25)
+* nolinks (hyperlink driver): Hyperlink driver nolinks.
+ (line 6)
+* normalbaselineskip: Options supported by all drivers.
+ (line 19)
+* num (hyperlink type): Link types for pdftex and dvipdfm.
+ (line 92)
+* numberedfootnote: Footnotes. (line 7)
+* numberedfootnote (hyperlinks): Footnote hyperlinks. (line 6)
+* numberedlist: Lists. (line 14)
+* numberedlistdepth: Formatting lists. (line 41)
+* numberedmarker: Formatting lists. (line 37)
+* numbername: Writing out numbers. (line 6)
+* obeywhitespace: Obeying spaces. (line 6)
+* orderedlist: Lists. (line 14)
+* other: Category codes. (line 10)
+* outer: Allocation macros. (line 12)
+* outsidemargin: Proofing index terms.
+ (line 21)
+* page (hyperlink type): Link types for pdftex and dvipdfm.
+ (line 31)
+* pagefit (hyperlink option) <1>: Link options for pdftex and dvipdfm.
+ (line 109)
+* pagefit (hyperlink option): Link types for pdftex and dvipdfm.
+ (line 32)
+* pageno: Proofing index terms.
+ (line 21)
+* pagetotal: Multiple columns. (line 14)
+* paperheight: Margins. (line 45)
+* paperwidth: Margins. (line 48)
+* parindent in indexes: Typesetting an index.
+ (line 24)
+* path: Paths. (line 13)
+* pdfoutput: Checking for PDF output.
+ (line 20)
+* pdftex (hyperlink driver): Hyperlink drivers pdftex and dvipdfm.
+ (line 6)
+* percentchar: Category codes. (line 56)
+* phantomeqlabel: Equation reference hyperlinks.
+ (line 14)
+* phantomeqnumber: Equation reference hyperlinks.
+ (line 14)
+* previouseverydisplay: Formatting displays. (line 15)
+* printbetweencitations: Formatting citations.
+ (line 21)
+* printcitefinish: Formatting citations.
+ (line 16)
+* printcitenote: Formatting citations.
+ (line 27)
+* printcitestart: Formatting citations.
+ (line 16)
+* printitem: Formatting lists. (line 52)
+* printlistinglineno: Verbatim listing. (line 19)
+* quadcolumns: Multiple columns. (line 7)
+* raggedright for index entries: Typesetting an index.
+ (line 45)
+* raise (hyperlink option) <1>: Setting group options.
+ (line 34)
+* raise (hyperlink option): Options supported by all drivers.
+ (line 13)
+* raw (destination type) <1>: Destination types for pdftex and dvipdfm.
+ (line 81)
+* raw (destination type): Destination types for hypertex.
+ (line 12)
+* raw (hyperlink type) <1>: Link types for pdftex and dvipdfm.
+ (line 65)
+* raw (hyperlink type): Link types for hypertex.
+ (line 37)
+* rbracechar: Category codes. (line 60)
+* readindexfile: Typesetting an index.
+ (line 6)
+* readindexfile (hyperlinks): Index hyperlinks. (line 9)
+* readtocfile: Reading the .toc file.
+ (line 6)
+* ref <1>: Hyperlinks (xhyper.tex).
+ (line 6)
+* ref: Using generic references.
+ (line 17)
+* ref (hyperlinks): Cross-reference hyperlinks.
+ (line 19)
+* refn: Using generic references.
+ (line 9)
+* refn (hyperlinks): Cross-reference hyperlinks.
+ (line 14)
+* refs: Using generic references.
+ (line 23)
+* refs (hyperlinks): Cross-reference hyperlinks.
+ (line 26)
+* refspace <1>: Page reference hyperlinks.
+ (line 10)
+* refspace: Cross-reference hyperlinks.
+ (line 24)
+* reftie <1>: Equation reference hyperlinks.
+ (line 20)
+* reftie: Cross-reference hyperlinks.
+ (line 16)
+* repeat: Iteration. (line 42)
+* resetatcatcode: Category codes. (line 23)
+* rewritetocfile (conditional): Reading the .toc file.
+ (line 26)
+* right (destination option) <1>: Destination options for pdftex and dvipdfm.
+ (line 64)
+* right (destination option): Destination types for pdftex and dvipdfm.
+ (line 65)
+* rightmargin: Margins. (line 18)
+* rotatebox: Hyperlinks (xhyper.tex).
+ (line 6)
+* rt: Arrows and morphisms.
+ (line 14)
+* sanitize: Converting to characters.
+ (line 22)
+* sarrowlength <1>: Commutative diagram parameters.
+ (line 17)
+* sarrowlength: Arrows and morphisms.
+ (line 28)
+* see for index entries <1>: Customizing indexing.
+ (line 64)
+* see for index entries: Modifying index entries.
+ (line 36)
+* seealso for index entries: Modifying index entries.
+ (line 49)
+* seevariant: Customizing indexing.
+ (line 55)
+* setidxpagelistdelimiter: Page list and page range parsers.
+ (line 14)
+* setidxpagerangedelimiter: Page list and page range parsers.
+ (line 14)
+* setproperty: Properties. (line 13)
+* setuplistinghook <1>: Highlighting TeX comments in listings (lscommnt.tex).
+ (line 6)
+* setuplistinghook: Verbatim listing. (line 13)
+* sidx: Indexing commands. (line 8)
+* sidxmarked: Indexing commands. (line 29)
+* sidxname: Indexing commands. (line 19)
+* sidxsubmarked: Indexing commands. (line 40)
+* singlecolumn: Multiple columns. (line 9)
+* sline: Arrows and morphisms.
+ (line 23)
+* SLiTeX: Logos. (line 11)
+* special: Introduction to hyperlinks.
+ (line 9)
+* specialpathdelimiters (conditional): Paths. (line 28)
+* subeqnumber: Subequation references.
+ (line 15)
+* subitem in indexes: Typesetting an index.
+ (line 35)
+* subsubitem in indexes: Typesetting an index.
+ (line 35)
+* testfileexistence: Auxiliary files. (line 8)
+* TeX: Logos. (line 6)
+* timestamp: Time of day. (line 18)
+* timestring: Time of day. (line 16)
+* toc...entry: Writing the .toc file.
+ (line 9)
+* tocfilebasename: Changing the .toc file's root name.
+ (line 10)
+* today: Time of day. (line 21)
+* top (destination option) <1>: Destination options for pdftex and dvipdfm.
+ (line 68)
+* top (destination option): Destination types for pdftex and dvipdfm.
+ (line 11)
+* topmargin: Margins. (line 18)
+* tracingall: Diagnostics. (line 9)
+* tracingboxes: Diagnostics. (line 17)
+* tracingoff: Diagnostics. (line 19)
+* triplecolumns: Multiple columns. (line 7)
+* tt: Packages known to work.
+ (line 76)
+* ttfamily: Packages known to work.
+ (line 73)
+* uncatcodespecials: Category codes. (line 51)
+* unorderedlist: Lists. (line 22)
+* unorderedlistdepth: Formatting lists. (line 41)
+* unorderedmarker: Formatting lists. (line 37)
+* url: Hyperlinks (xhyper.tex).
+ (line 6)
+* url (hyperlink type) <1>: Link types for pdftex and dvipdfm.
+ (line 25)
+* url (hyperlink type): Link types for hypertex.
+ (line 14)
+* url (hyperlinks): URL hyperlinks. (line 6)
+* usepackage: The \usepackage command.
+ (line 6)
+* varrowlength <1>: Commutative diagram parameters.
+ (line 14)
+* varrowlength: Arrows and morphisms.
+ (line 28)
+* vchannel: Commutative diagram parameters.
+ (line 39)
+* verbatim: Verbatim listing. (line 34)
+* verbatimescapechar: Verbatim listing. (line 47)
+* vgrid <1>: Commutative diagram parameters.
+ (line 51)
+* vgrid: Construction of commutative diagrams.
+ (line 109)
+* vline: Arrows and morphisms.
+ (line 81)
+* vmorphposn <1>: Commutative diagram parameters.
+ (line 26)
+* vmorphposn: Arrows and morphisms.
+ (line 33)
+* vmorphposndn <1>: Commutative diagram parameters.
+ (line 28)
+* vmorphposndn: Arrows and morphisms.
+ (line 38)
+* vmorphposnlft <1>: Commutative diagram parameters.
+ (line 29)
+* vmorphposnlft: Arrows and morphisms.
+ (line 39)
+* vmorphposnrt <1>: Commutative diagram parameters.
+ (line 28)
+* vmorphposnrt: Arrows and morphisms.
+ (line 38)
+* vmorphposnup <1>: Commutative diagram parameters.
+ (line 28)
+* vmorphposnup: Arrows and morphisms.
+ (line 38)
+* vpenalty: Mode-specific penalties.
+ (line 9)
+* vruledefaultwidth: Rules. (line 10)
+* width (destination option) <1>: Destination options for pdftex and dvipdfm.
+ (line 40)
+* width (destination option): Destination types for pdftex and dvipdfm.
+ (line 60)
+* width (hyperlink option): Link options for pdftex and dvipdfm.
+ (line 130)
+* writenumberedtocentry: Writing the .toc file.
+ (line 13)
+* writenumberedtocline: Writing the .toc file.
+ (line 36)
+* writetocentry: Writing the .toc file.
+ (line 7)
+* xrdef: Page references. (line 10)
+* xrdef (hyperlinks): Page reference hyperlinks.
+ (line 6)
+* xref: Page references. (line 14)
+* xref (hyperlinks): Page reference hyperlinks.
+ (line 10)
+* xrefn: Using generic references.
+ (line 10)
+* xrefn (hyperlinks): Cross-reference hyperlinks.
+ (line 14)
+* xrefpageword <1>: Page reference hyperlinks.
+ (line 10)
+* xrefpageword: Page references. (line 17)
+* xrefwarning conditional: Using generic references.
+ (line 15)
+* xrefwarningfalse: Citations. (line 73)
+* xrlabel: Converting to characters.
+ (line 6)
+* xyz (destination type) <1>: Destination types for pdftex and dvipdfm.
+ (line 7)
+* xyz (destination type): Destination types for hypertex.
+ (line 7)
+* zoom (destination option) <1>: Destination options for pdftex and dvipdfm.
+ (line 21)
+* zoom (destination option): Destination types for pdftex and dvipdfm.
+ (line 7)
+
+
+File: eplain.info, Node: Concept index, Prev: Macro index, Up: Top
+
+Concept index
+*************
+
+
+* Menu:
+
+* .aux file <1>: Cross-references. (line 11)
+* .aux file: Citations. (line 17)
+* .bbl file: Citations. (line 20)
+* .bib file: Citations. (line 20)
+* .bst files: Citations. (line 65)
+* .cls files: Loading LaTeX packages.
+ (line 6)
+* .eps files: Packages known to work.
+ (line 90)
+* .fmt file <1>: Invoking Eplain. (line 14)
+* .fmt file: Installation. (line 27)
+* .idx files <1>: Index hyperlinks. (line 14)
+* .idx files: Indexing. (line 23)
+* .ind files <1>: Index hyperlinks. (line 25)
+* .ind files: Indexing. (line 27)
+* .pdf files <1>: Introduction to hyperlinks.
+ (line 13)
+* .pdf files <2>: Packages known to work.
+ (line 90)
+* .pdf files: Checking for PDF output.
+ (line 6)
+* .ps files: Introduction to hyperlinks.
+ (line 13)
+* .sty files: Loading LaTeX packages.
+ (line 6)
+* .toc file: Contents. (line 10)
+* active characters: Category codes. (line 12)
+* after index terms: Customizing indexing.
+ (line 6)
+* alignments: Tables. (line 6)
+* all groups, specifying: Setting group types. (line 26)
+* allocation macros: Allocation macros. (line 6)
+* alphanumeric references: Citations. (line 116)
+* AMSLaTeX: Logos. (line 10)
+* amsppt.sty: Invoking Eplain. (line 92)
+* AMSTeX: Logos. (line 10)
+* AMSTeX conflicts: Invoking Eplain. (line 92)
+* arguments, ignoring: Macro arguments. (line 6)
+* arrows: Arrows and morphisms.
+ (line 6)
+* atom: Properties. (line 6)
+* autopict.sty: Packages known to work.
+ (line 12)
+* avoiding boxed links <1>: Setting default types and options.
+ (line 25)
+* avoiding boxed links: URL hyperlinks. (line 17)
+* axuiliary files, existence of: Auxiliary files. (line 6)
+* backslash character: Category codes. (line 15)
+* balancing of columns with \singlecolumn: Multiple columns. (line 11)
+* Berry, Karl: Introduction. (line 28)
+* beveled hyperlink border: Link options for pdftex and dvipdfm.
+ (line 26)
+* bibliographies: Citations. (line 6)
+* bibliography fonts: Formatting bibliographies.
+ (line 30)
+* bibliography items, extra space between: Formatting bibliographies.
+ (line 55)
+* bibliography, formatting the: Formatting bibliographies.
+ (line 6)
+* bibliography, hyperlinks: Citation hyperlinks. (line 11)
+* BibTeX <1>: Logos. (line 10)
+* BibTeX: Citations. (line 9)
+* bibtex: Invoking Eplain. (line 103)
+* black boxes: Boxes. (line 6)
+* Borceux, Francis: Construction of commutative diagrams.
+ (line 80)
+* border color, hyperlink: Link options for pdftex and dvipdfm.
+ (line 14)
+* border style, hyperlink: Link options for pdftex and dvipdfm.
+ (line 20)
+* border width, hyperlink: Link options for pdftex and dvipdfm.
+ (line 50)
+* Bott, Raoul: Construction of commutative diagrams.
+ (line 13)
+* boxed links, avoiding <1>: Setting default types and options.
+ (line 25)
+* boxed links, avoiding: URL hyperlinks. (line 17)
+* boxes, open: Boxes. (line 12)
+* braces, inside index entries: Index entries with special characters.
+ (line 63)
+* brackets, inside index entries: Index entries with special characters.
+ (line 86)
+* Brockett, Roger W.: Construction of commutative diagrams.
+ (line 38)
+* Butterfly Lemma: Construction of commutative diagrams.
+ (line 122)
+* Carlisle, David: Loading LaTeX packages.
+ (line 14)
+* category codes: Category codes. (line 6)
+* centering: Justification. (line 6)
+* characters, converting to: Converting to characters.
+ (line 6)
+* citations: Citations. (line 6)
+* citations, formatting: Formatting citations.
+ (line 6)
+* citations, hyperlinks: Citation hyperlinks. (line 6)
+* citations, undefined: Citations. (line 43)
+* cmtt8: Proofing index terms.
+ (line 12)
+* color: Packages known to work.
+ (line 25)
+* color, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* color, hyperlink border: Link options for pdftex and dvipdfm.
+ (line 14)
+* color, hyperlinks <1>: Setting default types and options.
+ (line 25)
+* color, hyperlinks <2>: Options supported by all drivers.
+ (line 37)
+* color, hyperlinks: URL hyperlinks. (line 17)
+* color, problems with pdfTeX: Packages known to work.
+ (line 29)
+* color.sty <1>: Hyperlinks (xhyper.tex).
+ (line 6)
+* color.sty <2>: Setting default types and options.
+ (line 27)
+* color.sty <3>: Hyperlink driver nolinks.
+ (line 34)
+* color.sty <4>: URL hyperlinks. (line 18)
+* color.sty: Packages known to work.
+ (line 21)
+* colored links <1>: Setting default types and options.
+ (line 25)
+* colored links <2>: Options supported by all drivers.
+ (line 37)
+* colored links: URL hyperlinks. (line 17)
+* column balancing with \singlecolumn: Multiple columns. (line 11)
+* column eject: Multiple columns. (line 14)
+* commas after index terms: Customizing indexing.
+ (line 6)
+* commas in cross-referencing index entries: Customizing indexing.
+ (line 64)
+* comments, highlighting in listings: Highlighting TeX comments in listings (lscommnt.tex).
+ (line 6)
+* commutative diagrams: Commutative diagrams.
+ (line 6)
+* contents: Contents. (line 6)
+* contents, and verbatim text: Writing the .toc file.
+ (line 50)
+* contents, hyperlinks: Contents hyperlinks. (line 6)
+* ConTeXt: Packages known to work.
+ (line 29)
+* continued index entries: Typesetting an index.
+ (line 35)
+* covering homotopy property: Construction of commutative diagrams.
+ (line 13)
+* cross-references: Cross-references. (line 6)
+* cross-references, defining general <1>: Using generic references.
+ (line 6)
+* cross-references, defining general: Defining generic references.
+ (line 6)
+* cross-references, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* cross-references, hyperlinks: Cross-reference hyperlinks.
+ (line 6)
+* cross-referencing index entries <1>: Customizing indexing.
+ (line 64)
+* cross-referencing index entries: Modifying index entries.
+ (line 36)
+* CTRL-L, and verbatim listing: Verbatim listing. (line 30)
+* cube: Construction of commutative diagrams.
+ (line 90)
+* customizing indexing: Customizing indexing.
+ (line 6)
+* dashed hyperlink border: Link options for pdftex and dvipdfm.
+ (line 20)
+* date: Time of day. (line 6)
+* default hyperlink options <1>: Setting group types. (line 17)
+* default hyperlink options: Setting hyperlink types and options.
+ (line 6)
+* default hyperlink type <1>: Setting group types. (line 17)
+* default hyperlink type: Setting hyperlink types and options.
+ (line 6)
+* defining general references <1>: Using generic references.
+ (line 6)
+* defining general references: Defining generic references.
+ (line 6)
+* definitions, global: Category codes. (line 38)
+* demo files: Demo files. (line 6)
+* destgroup: Implicit hyperlinks. (line 10)
+* destgroup `bib': Citation hyperlinks. (line 11)
+* destgroup `definexref': Cross-reference hyperlinks.
+ (line 6)
+* destgroup `eq': Equation reference hyperlinks.
+ (line 6)
+* destgroup `foot': Footnote hyperlinks. (line 6)
+* destgroup `footback': Footnote hyperlinks. (line 6)
+* destgroup `idx': Index hyperlinks. (line 6)
+* destgroup `li': List hyperlinks. (line 6)
+* destgroup `xrdef': Page reference hyperlinks.
+ (line 6)
+* destgroup options <1>: Setting group options.
+ (line 6)
+* destgroup options: Setting hyperlink types and options.
+ (line 12)
+* destgroup options, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* destgroup type <1>: Setting group types. (line 6)
+* destgroup type: Setting hyperlink types and options.
+ (line 12)
+* destgroup type, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* destination group: Implicit hyperlinks. (line 10)
+* destination options: Introduction to hyperlinks.
+ (line 105)
+* destination options, common: Options supported by all drivers.
+ (line 12)
+* destination options, dvipdfm: Destination options for pdftex and dvipdfm.
+ (line 6)
+* destination options, hypertex: Destination options for hypertex.
+ (line 6)
+* destination options, pdftex: Destination options for pdftex and dvipdfm.
+ (line 6)
+* destination type: Introduction to hyperlinks.
+ (line 88)
+* destination types, dvipdfm: Destination types for pdftex and dvipdfm.
+ (line 6)
+* destination types, hypertex: Destination types for hypertex.
+ (line 6)
+* destination types, pdftex: Destination types for pdftex and dvipdfm.
+ (line 6)
+* destinations, default options <1>: Setting group types. (line 17)
+* destinations, default options: Setting hyperlink types and options.
+ (line 6)
+* destinations, default type <1>: Setting group types. (line 17)
+* destinations, default type: Setting hyperlink types and options.
+ (line 6)
+* destinations, dimensions: Destination options for pdftex and dvipdfm.
+ (line 34)
+* destinations, disabling <1>: Turning hyperlinks on/off.
+ (line 6)
+* destinations, disabling: Hyperlink driver nolinks.
+ (line 6)
+* destinations, group options <1>: Setting group options.
+ (line 6)
+* destinations, group options: Setting hyperlink types and options.
+ (line 12)
+* destinations, group options, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* destinations, group type <1>: Setting group types. (line 6)
+* destinations, group type: Setting hyperlink types and options.
+ (line 12)
+* destinations, group type, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* destinations, in another file <1>: Link types for pdftex and dvipdfm.
+ (line 40)
+* destinations, in another file: Link types for hypertex.
+ (line 21)
+* destinations, large operators <1>: Setting group options.
+ (line 34)
+* destinations, large operators: Options supported by all drivers.
+ (line 27)
+* destinations, magnification: Destination options for pdftex and dvipdfm.
+ (line 21)
+* destinations, named <1>: Link types for pdftex and dvipdfm.
+ (line 18)
+* destinations, named: Link types for hypertex.
+ (line 7)
+* destinations, numbered: Link types for pdftex and dvipdfm.
+ (line 92)
+* destinations, page: Link types for pdftex and dvipdfm.
+ (line 31)
+* destinations, raising: Options supported by all drivers.
+ (line 13)
+* destinations, URL <1>: Link types for pdftex and dvipdfm.
+ (line 25)
+* destinations, URL: Link types for hypertex.
+ (line 14)
+* detecting numbers: \ifinteger and \isinteger.
+ (line 6)
+* diagnostics: Diagnostics. (line 6)
+* Diagram, macros for LaTeX: Construction of commutative diagrams.
+ (line 80)
+* dimensions, hyperlink: Link options for pdftex and dvipdfm.
+ (line 124)
+* dimensions, hyperlink destination: Destination options for pdftex and dvipdfm.
+ (line 34)
+* disabling hyperlinks <1>: Turning hyperlinks on/off.
+ (line 6)
+* disabling hyperlinks: Hyperlink driver nolinks.
+ (line 6)
+* displayed math and hyperlinks <1>: Setting group options.
+ (line 34)
+* displayed math and hyperlinks: Options supported by all drivers.
+ (line 27)
+* displays, left-justifying: Displays. (line 6)
+* do...while loops: Iteration. (line 6)
+* double column output: Multiple columns. (line 6)
+* double columns in indexes: Typesetting an index.
+ (line 24)
+* draft, option for graphics.sty: Packages known to work.
+ (line 69)
+* driver dvipdfm: Hyperlink drivers pdftex and dvipdfm.
+ (line 6)
+* driver hypertex: Hyperlink driver hypertex.
+ (line 6)
+* driver nolinks: Hyperlink driver nolinks.
+ (line 6)
+* driver pdftex: Hyperlink drivers pdftex and dvipdfm.
+ (line 6)
+* drivers, hyperlink: Introduction to hyperlinks.
+ (line 6)
+* dvipdfm <1>: Hyperlink driver hypertex.
+ (line 13)
+* dvipdfm: Introduction to hyperlinks.
+ (line 36)
+* dvipdfm, destination options: Destination options for pdftex and dvipdfm.
+ (line 6)
+* dvipdfm, destination types: Destination types for pdftex and dvipdfm.
+ (line 6)
+* dvipdfm, hyperlink driver: Hyperlink drivers pdftex and dvipdfm.
+ (line 6)
+* dvipdfm, link options: Link options for pdftex and dvipdfm.
+ (line 6)
+* dvipdfm, link types: Link types for pdftex and dvipdfm.
+ (line 6)
+* dvips: Hyperlink driver hypertex.
+ (line 13)
+* Eijkhout, Victor: Iteration. (line 61)
+* eject in multicolumns: Multiple columns. (line 14)
+* electronic mail addresses, breaking <1>: Packages known to work.
+ (line 120)
+* electronic mail addresses, breaking: Paths. (line 6)
+* empty argument, checking for: \ifempty. (line 6)
+* empty equation labels: Equation references. (line 22)
+* empty equation labels, referring to: Equation references. (line 27)
+* empty string, checking for: \ifempty. (line 6)
+* Encapsulated PostScript: Packages known to work.
+ (line 90)
+* environments, user-defined: User-defined environments.
+ (line 6)
+* Eplain, installing: Installation. (line 6)
+* Eplain, invoking: Invoking Eplain. (line 6)
+* Eplain, purpose of: Introduction. (line 6)
+* Eplain, upgrading: Installation. (line 6)
+* eplain.aux: Installation. (line 40)
+* eplain.fmt: Installation. (line 27)
+* EPS: Packages known to work.
+ (line 90)
+* epstopdf: Packages known to work.
+ (line 90)
+* epstopdf.sty: Packages known to work.
+ (line 88)
+* equation labels, characters valid in: Equation references. (line 56)
+* equation numbers, formatting of: Formatting equation references.
+ (line 6)
+* equations, giving numbers to all: Equation references. (line 22)
+* equations, groups of: Subequation references.
+ (line 6)
+* equations, hyperlinks: Equation reference hyperlinks.
+ (line 6)
+* equations, numbering: Equation references. (line 6)
+* equations, references to: Equation references. (line 6)
+* error messages: Diagnostics. (line 25)
+* error on \input: Environment for loading packages.
+ (line 35)
+* escape character, changing verbatim: Verbatim listing. (line 47)
+* exact index hyperlinks: Exact destinations for index terms.
+ (line 28)
+* expansion, one-level: \expandonce. (line 6)
+* explicit hyperlinks: Explicit hyperlinks. (line 6)
+* explicit hyperlinks, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* file, hyperlink to <1>: Link types for pdftex and dvipdfm.
+ (line 40)
+* file, hyperlink to: Link types for hypertex.
+ (line 21)
+* file: links: General hyperlinks. (line 36)
+* filenames, breaking <1>: Packages known to work.
+ (line 120)
+* filenames, breaking: Paths. (line 6)
+* files, verbatim listing of: Verbatim listing. (line 6)
+* files, verbatim listing of, demo: Highlighting TeX comments in listings (lscommnt.tex).
+ (line 6)
+* filtering index entries with hyperlinks: Exact destinations for index terms.
+ (line 33)
+* footnotes, hyperlinks: Footnote hyperlinks. (line 6)
+* footnotes, numbered: Footnotes. (line 6)
+* for loops: Iteration. (line 6)
+* form feed character, and verbatim listing: Verbatim listing.
+ (line 30)
+* format file: Installation. (line 27)
+* formatting index entries: Typesetting an index.
+ (line 35)
+* fractions: Fractions. (line 6)
+* Ghostscript: Hyperlink driver hypertex.
+ (line 13)
+* gobbling arguments: Macro arguments. (line 6)
+* golden mean: Construction of commutative diagrams.
+ (line 59)
+* Graham, Ronald L.: Citations. (line 86)
+* graphics collection, LaTeX <1>: Hyperlink driver nolinks.
+ (line 34)
+* graphics collection, LaTeX <2>: Packages known to work.
+ (line 25)
+* graphics collection, LaTeX: Loading LaTeX packages.
+ (line 14)
+* graphics collection, LaTeX, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* graphics, omitting typesetting of: Packages known to work.
+ (line 69)
+* graphics, problems with pdfTeX: Packages known to work.
+ (line 29)
+* graphics.sty: Packages known to work.
+ (line 22)
+* graphicx.sty <1>: Hyperlinks (xhyper.tex).
+ (line 6)
+* graphicx.sty: Packages known to work.
+ (line 23)
+* grid: Construction of commutative diagrams.
+ (line 80)
+* group `' (empty): Setting group types. (line 17)
+* group `*': Setting group types. (line 26)
+* group `bib': Citation hyperlinks. (line 11)
+* group `cite': Citation hyperlinks. (line 6)
+* group `definexref': Cross-reference hyperlinks.
+ (line 6)
+* group `eq' <1>: Setting group options.
+ (line 35)
+* group `eq': Equation reference hyperlinks.
+ (line 6)
+* group `foot': Footnote hyperlinks. (line 6)
+* group `footback': Footnote hyperlinks. (line 6)
+* group `hrefext': General hyperlinks. (line 21)
+* group `hrefint': General hyperlinks. (line 12)
+* group `idx': Index hyperlinks. (line 6)
+* group `li': List hyperlinks. (line 6)
+* group `ref': Cross-reference hyperlinks.
+ (line 11)
+* group `url': URL hyperlinks. (line 6)
+* group `xrdef': Page reference hyperlinks.
+ (line 6)
+* group `xref': Page reference hyperlinks.
+ (line 10)
+* group option list: Setting group options.
+ (line 49)
+* group options, hyperlink <1>: Setting group options.
+ (line 6)
+* group options, hyperlink: Setting hyperlink types and options.
+ (line 12)
+* group options, hyperlink, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* group type, hyperlink <1>: Setting group types. (line 6)
+* group type, hyperlink: Setting hyperlink types and options.
+ (line 12)
+* group type, hyperlink, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* group, destination: Implicit hyperlinks. (line 10)
+* group, disabling hyperlinks: Turning hyperlinks on/off for a group.
+ (line 6)
+* group, link: Implicit hyperlinks. (line 10)
+* group, preserving option list: Setting group options.
+ (line 22)
+* groups, specifying all: Setting group types. (line 26)
+* hanging on \input: Environment for loading packages.
+ (line 35)
+* help messages: Diagnostics. (line 25)
+* highlight modes, hyperlink: Link options for pdftex and dvipdfm.
+ (line 69)
+* highlighting: Packages known to work.
+ (line 110)
+* highlighting, in listings: Highlighting TeX comments in listings (lscommnt.tex).
+ (line 6)
+* Ho"ppner, Klaus: Packages known to work.
+ (line 82)
+* hooks: Hooks. (line 6)
+* hyperlink border color: Link options for pdftex and dvipdfm.
+ (line 14)
+* hyperlink color <1>: Setting default types and options.
+ (line 25)
+* hyperlink color <2>: Options supported by all drivers.
+ (line 37)
+* hyperlink color: URL hyperlinks. (line 17)
+* hyperlink destination, dimensions: Destination options for pdftex and dvipdfm.
+ (line 34)
+* hyperlink destination, magnification: Destination options for pdftex and dvipdfm.
+ (line 21)
+* hyperlink destination, named <1>: Link types for pdftex and dvipdfm.
+ (line 18)
+* hyperlink destination, named: Link types for hypertex.
+ (line 7)
+* hyperlink destination, numbered: Link types for pdftex and dvipdfm.
+ (line 92)
+* hyperlink destination, page: Link types for pdftex and dvipdfm.
+ (line 31)
+* hyperlink destination, raising: Options supported by all drivers.
+ (line 13)
+* hyperlink dimensions: Link options for pdftex and dvipdfm.
+ (line 124)
+* hyperlink driver dvipdfm: Hyperlink drivers pdftex and dvipdfm.
+ (line 6)
+* hyperlink driver hypertex: Hyperlink driver hypertex.
+ (line 6)
+* hyperlink driver nolinks: Hyperlink driver nolinks.
+ (line 6)
+* hyperlink driver pdftex: Hyperlink drivers pdftex and dvipdfm.
+ (line 6)
+* hyperlink drivers: Introduction to hyperlinks.
+ (line 6)
+* hyperlink group, disabling hyperlinks: Turning hyperlinks on/off for a group.
+ (line 6)
+* hyperlink group, preserving option list: Setting group options.
+ (line 22)
+* hyperlink options, common: Options supported by all drivers.
+ (line 6)
+* hyperlinks, bibliography: Citation hyperlinks. (line 11)
+* hyperlinks, border style: Link options for pdftex and dvipdfm.
+ (line 20)
+* hyperlinks, border width: Link options for pdftex and dvipdfm.
+ (line 50)
+* hyperlinks, citations: Citation hyperlinks. (line 6)
+* hyperlinks, cross-references: Cross-reference hyperlinks.
+ (line 6)
+* hyperlinks, default options <1>: Setting group types. (line 17)
+* hyperlinks, default options: Setting hyperlink types and options.
+ (line 6)
+* hyperlinks, default type <1>: Setting group types. (line 17)
+* hyperlinks, default type: Setting hyperlink types and options.
+ (line 6)
+* hyperlinks, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* hyperlinks, disabling <1>: Turning hyperlinks on/off.
+ (line 6)
+* hyperlinks, disabling: Hyperlink driver nolinks.
+ (line 6)
+* hyperlinks, equations: Equation reference hyperlinks.
+ (line 6)
+* hyperlinks, explicit: Explicit hyperlinks. (line 6)
+* hyperlinks, explicit, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* hyperlinks, filtering index entries: Exact destinations for index terms.
+ (line 33)
+* hyperlinks, footnotes: Footnote hyperlinks. (line 6)
+* hyperlinks, group option list: Setting group options.
+ (line 49)
+* hyperlinks, group options <1>: Setting group options.
+ (line 6)
+* hyperlinks, group options: Setting hyperlink types and options.
+ (line 12)
+* hyperlinks, group options, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* hyperlinks, group type <1>: Setting group types. (line 6)
+* hyperlinks, group type: Setting hyperlink types and options.
+ (line 12)
+* hyperlinks, highlight mode: Link options for pdftex and dvipdfm.
+ (line 69)
+* hyperlinks, implicit: Implicit hyperlinks. (line 6)
+* hyperlinks, implicit, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* hyperlinks, index: Index hyperlinks. (line 6)
+* hyperlinks, index destination placement: Choosing destination placement.
+ (line 6)
+* hyperlinks, index, exact: Exact destinations for index terms.
+ (line 28)
+* hyperlinks, large operators <1>: Setting group options.
+ (line 34)
+* hyperlinks, large operators: Options supported by all drivers.
+ (line 27)
+* hyperlinks, lists: List hyperlinks. (line 6)
+* hyperlinks, opening in a new window: Link options for pdftex and dvipdfm.
+ (line 90)
+* hyperlinks, page references: Page reference hyperlinks.
+ (line 6)
+* hyperlinks, preserving page-breaking: Hyperlink driver nolinks.
+ (line 6)
+* hyperlinks, preserving spacing: Hyperlink driver nolinks.
+ (line 6)
+* hyperlinks, see and see also index entries: Hyperlinks in see and see also entries.
+ (line 6)
+* hyperlinks, table of contents: Contents hyperlinks. (line 6)
+* hyperlinks, to another file <1>: Link types for pdftex and dvipdfm.
+ (line 40)
+* hyperlinks, to another file: Link types for hypertex.
+ (line 21)
+* hyperlinks, URL <1>: Link types for pdftex and dvipdfm.
+ (line 25)
+* hyperlinks, URL <2>: Link types for hypertex.
+ (line 14)
+* hyperlinks, URL <3>: URL hyperlinks. (line 6)
+* hyperlinks, URL: General hyperlinks. (line 20)
+* hyperref.sty: Packages known not to work.
+ (line 9)
+* hypertex, destination options: Destination options for hypertex.
+ (line 6)
+* hypertex, destination types: Destination types for hypertex.
+ (line 6)
+* hypertex, hyperlink driver: Hyperlink driver hypertex.
+ (line 6)
+* hypertex, link options: Link options for hypertex.
+ (line 6)
+* hypertex, link types: Link types for hypertex.
+ (line 6)
+* hypertext links: Hyperlinks. (line 6)
+* identifying numbers: \ifinteger and \isinteger.
+ (line 6)
+* idxuniq: Exact destinations for index terms.
+ (line 33)
+* ignoring arguments: Macro arguments. (line 6)
+* implicit hyperlinks: Implicit hyperlinks. (line 6)
+* implicit hyperlinks, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* inaccessible macros: Category codes. (line 19)
+* index entries and ranges: Modifying index entries.
+ (line 22)
+* index entries containing braces: Index entries with special characters.
+ (line 63)
+* index entries containing brackets: Index entries with special characters.
+ (line 86)
+* index entries with special characters: Index entries with special characters.
+ (line 6)
+* index entries' page numbers, modifying: Modifying index entries.
+ (line 6)
+* index entries, and cross-referencing <1>: Customizing indexing.
+ (line 64)
+* index entries, and cross-referencing: Modifying index entries.
+ (line 36)
+* index entries, proofing: Proofing index terms.
+ (line 6)
+* index entries, with verbatim text: Index entries with special characters.
+ (line 40)
+* index entry continuations: Typesetting an index.
+ (line 35)
+* index entry formatting: Typesetting an index.
+ (line 35)
+* index entry general sorting: Indexing commands. (line 51)
+* index fonts: Typesetting an index.
+ (line 24)
+* index groupings: Typesetting an index.
+ (line 54)
+* index hyperlink: Index hyperlinks. (line 6)
+* index typesetting: Typesetting an index.
+ (line 6)
+* index, and verbatim text: Index entries with special characters.
+ (line 40)
+* index, choosing destination placement: Choosing destination placement.
+ (line 6)
+* index, destination placement: Choosing destination placement.
+ (line 6)
+* index, exact hyperlinks: Exact destinations for index terms.
+ (line 28)
+* index, hyperlinks in see and see also entries: Hyperlinks in see and see also entries.
+ (line 6)
+* index, parsing page numbers: Page destinations for index terms.
+ (line 32)
+* index, placement of destinations: Choosing destination placement.
+ (line 6)
+* index, selecting destination placement: Choosing destination placement.
+ (line 6)
+* index, underlining page numbers: Page list and page range parsers.
+ (line 26)
+* indexes, multiple: Indexing. (line 37)
+* indexing: Indexing. (line 6)
+* indexing and trailing spaces: Indexing terms. (line 20)
+* indexing commands: Indexing commands. (line 6)
+* indexing terms: Indexing terms. (line 6)
+* insertion classes: Multiple columns. (line 38)
+* inset hyperlink border: Link options for pdftex and dvipdfm.
+ (line 26)
+* installation: Installation. (line 6)
+* integers, detecting: \ifinteger and \isinteger.
+ (line 6)
+* item labels, changing: Formatting lists. (line 54)
+* iteration: Iteration. (line 6)
+* justification: Justification. (line 6)
+* Knuth, Donald Ervin <1>: Category codes. (line 7)
+* Knuth, Donald Ervin: Citations. (line 86)
+* labels on items, changing: Formatting lists. (line 54)
+* labels, characters valid in: Cross-references. (line 20)
+* labels, empty equation: Equation references. (line 22)
+* labels, empty equation, referring to: Equation references. (line 27)
+* Lamport, Leslie: Introduction. (line 13)
+* LAMSTeX: Logos. (line 10)
+* Lang, Serge <1>: Construction of commutative diagrams.
+ (line 122)
+* Lang, Serge: Arrows and morphisms.
+ (line 126)
+* large operators and hyperlinks <1>: Setting group options.
+ (line 34)
+* large operators and hyperlinks: Options supported by all drivers.
+ (line 27)
+* LaTeX <1>: Slanted lines and vectors.
+ (line 7)
+* LaTeX <2>: Logos. (line 10)
+* LaTeX <3>: Citations. (line 10)
+* LaTeX: Introduction. (line 13)
+* LaTeX graphics collection <1>: Hyperlink driver nolinks.
+ (line 34)
+* LaTeX graphics collection <2>: Packages known to work.
+ (line 25)
+* LaTeX graphics collection: Loading LaTeX packages.
+ (line 14)
+* LaTeX graphics collection, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* LaTeX packages <1>: Packages known not to work.
+ (line 6)
+* LaTeX packages <2>: Packages known to work.
+ (line 6)
+* LaTeX packages: Loading LaTeX packages.
+ (line 6)
+* LaTeX packages, restoring \input: Environment for loading packages.
+ (line 24)
+* left-justification: Justification. (line 6)
+* left-justification of displays: Displays. (line 6)
+* letterspacing: Packages known to work.
+ (line 110)
+* linear systems theory: Construction of commutative diagrams.
+ (line 38)
+* lines: Slanted lines and vectors.
+ (line 15)
+* link group: Implicit hyperlinks. (line 10)
+* link options: Introduction to hyperlinks.
+ (line 105)
+* link options, common: Options supported by all drivers.
+ (line 35)
+* link options, dvipdfm: Link options for pdftex and dvipdfm.
+ (line 6)
+* link options, hypertex: Link options for hypertex.
+ (line 6)
+* link options, pdftex: Link options for pdftex and dvipdfm.
+ (line 6)
+* link type: Introduction to hyperlinks.
+ (line 88)
+* link types, dvipdfm: Link types for pdftex and dvipdfm.
+ (line 6)
+* link types, hypertex: Link types for hypertex.
+ (line 6)
+* link types, pdftex: Link types for pdftex and dvipdfm.
+ (line 6)
+* link, group options <1>: Setting group options.
+ (line 6)
+* link, group options: Setting hyperlink types and options.
+ (line 12)
+* link, group options, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* link, group type <1>: Setting group types. (line 6)
+* link, group type: Setting hyperlink types and options.
+ (line 12)
+* linkgroup: Implicit hyperlinks. (line 10)
+* linkgroup `cite': Citation hyperlinks. (line 6)
+* linkgroup `eq' <1>: Setting group options.
+ (line 35)
+* linkgroup `eq': Equation reference hyperlinks.
+ (line 20)
+* linkgroup `foot': Footnote hyperlinks. (line 6)
+* linkgroup `footback': Footnote hyperlinks. (line 6)
+* linkgroup `hrefext': General hyperlinks. (line 21)
+* linkgroup `hrefint': General hyperlinks. (line 12)
+* linkgroup `idx': Index hyperlinks. (line 6)
+* linkgroup `ref': Cross-reference hyperlinks.
+ (line 11)
+* linkgroup `url': URL hyperlinks. (line 6)
+* linkgroup `xref': Page reference hyperlinks.
+ (line 10)
+* linkgroup options <1>: Setting group options.
+ (line 6)
+* linkgroup options: Setting hyperlink types and options.
+ (line 12)
+* linkgroup options, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* linkgroup type <1>: Setting group types. (line 6)
+* linkgroup type: Setting hyperlink types and options.
+ (line 12)
+* links, hypertext: Hyperlinks. (line 6)
+* list of figures: Alternative contents files.
+ (line 6)
+* list of tables: Alternative contents files.
+ (line 6)
+* listing files: Verbatim listing. (line 6)
+* listing files, demo: Highlighting TeX comments in listings (lscommnt.tex).
+ (line 6)
+* lists: Lists. (line 6)
+* lists, formatting: Formatting lists. (line 6)
+* lists, hyperlinks: List hyperlinks. (line 6)
+* logos: Logos. (line 6)
+* lookahead without spaces: \futurenonspacelet. (line 6)
+* loops: Iteration. (line 6)
+* lscommnt.tex: Highlighting TeX comments in listings (lscommnt.tex).
+ (line 6)
+* magnification, hyperlink destination: Destination options for pdftex and dvipdfm.
+ (line 21)
+* makeindex <1>: Index hyperlinks. (line 12)
+* makeindex <2>: Indexing. (line 14)
+* makeindex: Invoking Eplain. (line 103)
+* margins, changing: Margins. (line 6)
+* margins, index terms in: Proofing index terms.
+ (line 6)
+* mathematics displays, formatting: Displays. (line 6)
+* mathematics displays, hyperlinks <1>: Setting group options.
+ (line 34)
+* mathematics displays, hyperlinks: Options supported by all drivers.
+ (line 27)
+* Metafont: Logos. (line 10)
+* miniltx.tex: Loading LaTeX packages.
+ (line 14)
+* minimal realizations: Construction of commutative diagrams.
+ (line 38)
+* modifying index entries' page numbers: Modifying index entries.
+ (line 6)
+* morphisms: Arrows and morphisms.
+ (line 6)
+* multiple column output: Multiple columns. (line 6)
+* multiple indexes: Indexing. (line 37)
+* named destination <1>: Link types for pdftex and dvipdfm.
+ (line 18)
+* named destination: Link types for hypertex.
+ (line 7)
+* names, of TeX variants: Logos. (line 6)
+* new window, opening hyperlink in: Link options for pdftex and dvipdfm.
+ (line 90)
+* newlinechar: Diagnostics. (line 27)
+* newlines, obeying: Obeying spaces. (line 6)
+* nolinks, hyperlink driver: Hyperlink driver nolinks.
+ (line 6)
+* numbered destination: Link types for pdftex and dvipdfm.
+ (line 92)
+* numbered lists: Lists. (line 6)
+* numbered references: Citations. (line 86)
+* numbers, detecting: \ifinteger and \isinteger.
+ (line 6)
+* numbers, written form of: Writing out numbers. (line 6)
+* Oberdiek, Heiko: Checking for PDF output.
+ (line 24)
+* omitting hyperlinks <1>: Turning hyperlinks on/off.
+ (line 6)
+* omitting hyperlinks: Hyperlink driver nolinks.
+ (line 6)
+* omitting typesetting of graphics: Packages known to work.
+ (line 69)
+* open boxes: Boxes. (line 12)
+* option list, group: Setting group options.
+ (line 49)
+* option list, preserving for group: Setting group options.
+ (line 22)
+* options, destination, common: Options supported by all drivers.
+ (line 12)
+* options, destination, dvipdfm: Destination options for pdftex and dvipdfm.
+ (line 6)
+* options, destination, hypertex: Destination options for hypertex.
+ (line 6)
+* options, destination, pdftex: Destination options for pdftex and dvipdfm.
+ (line 6)
+* options, link and destination: Introduction to hyperlinks.
+ (line 105)
+* options, link, common: Options supported by all drivers.
+ (line 35)
+* options, link, dvipdfm: Link options for pdftex and dvipdfm.
+ (line 6)
+* options, link, hypertex: Link options for hypertex.
+ (line 6)
+* options, link, pdftex: Link options for pdftex and dvipdfm.
+ (line 6)
+* ordered list: Lists. (line 6)
+* output routine and index proofing: Proofing index terms.
+ (line 28)
+* overstriking: Packages known to work.
+ (line 110)
+* packages, LaTeX <1>: Packages known not to work.
+ (line 6)
+* packages, LaTeX <2>: Packages known to work.
+ (line 6)
+* packages, LaTeX: Loading LaTeX packages.
+ (line 6)
+* page destination: Link types for pdftex and dvipdfm.
+ (line 31)
+* page list, parsing: Page destinations for index terms.
+ (line 32)
+* page range, parsing: Page destinations for index terms.
+ (line 32)
+* page reference hyperlink: Page reference hyperlinks.
+ (line 6)
+* page-breaking, preserving with hyperlinks: Hyperlink driver nolinks.
+ (line 6)
+* parsing page numbers: Page destinations for index terms.
+ (line 32)
+* Patashnik, Oren: Citations. (line 9)
+* pathnames, breaking <1>: Packages known to work.
+ (line 120)
+* pathnames, breaking: Paths. (line 6)
+* PDF: Packages known to work.
+ (line 90)
+* PDF output: Checking for PDF output.
+ (line 6)
+* pdftex <1>: Introduction to hyperlinks.
+ (line 35)
+* pdftex <2>: Checking for PDF output.
+ (line 6)
+* pdftex: Invoking Eplain. (line 115)
+* pdftex, destination options: Destination options for pdftex and dvipdfm.
+ (line 6)
+* pdftex, destination types: Destination types for pdftex and dvipdfm.
+ (line 6)
+* pdftex, hyperlink driver: Hyperlink drivers pdftex and dvipdfm.
+ (line 6)
+* pdftex, link options: Link options for pdftex and dvipdfm.
+ (line 6)
+* pdftex, link types: Link types for pdftex and dvipdfm.
+ (line 6)
+* pdfTeX, problems using color and graphics: Packages known to work.
+ (line 29)
+* pdfTeX, problems with supp-mis.tex: Packages known to work.
+ (line 29)
+* pict2e.sty: Packages known not to work.
+ (line 16)
+* picture mode <1>: Slanted lines and vectors.
+ (line 7)
+* picture mode: Packages known to work.
+ (line 14)
+* Portable Document Format: Packages known to work.
+ (line 90)
+* PostScript point <1>: Link options for pdftex and dvipdfm.
+ (line 50)
+* PostScript point <2>: Destination options for pdftex and dvipdfm.
+ (line 50)
+* PostScript point: Destination types for pdftex and dvipdfm.
+ (line 66)
+* proofing index terms: Proofing index terms.
+ (line 6)
+* properties: Properties. (line 6)
+* ps2pdf: Hyperlink driver hypertex.
+ (line 13)
+* psfrag.sty: Packages known to work.
+ (line 97)
+* quadruple column output: Multiple columns. (line 6)
+* Rahtz, Sebastian: Loading LaTeX packages.
+ (line 14)
+* raising hyperlink destinations <1>: Setting group options.
+ (line 34)
+* raising hyperlink destinations: Options supported by all drivers.
+ (line 13)
+* ranges and index entry: Modifying index entries.
+ (line 22)
+* recognizing numbers: \ifinteger and \isinteger.
+ (line 6)
+* rectangles: Boxes. (line 6)
+* references, alphanumeric: Citations. (line 116)
+* references, defining general <1>: Using generic references.
+ (line 6)
+* references, defining general: Defining generic references.
+ (line 6)
+* references, numbered: Citations. (line 86)
+* register allocation: Allocation macros. (line 6)
+* restoring \input, LaTeX packages: Environment for loading packages.
+ (line 24)
+* return character: Category codes. (line 41)
+* right-justification: Justification. (line 6)
+* rms: Introduction. (line 14)
+* rotation: Packages known to work.
+ (line 25)
+* rotation, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* rule thickness: Rules. (line 7)
+* run: links: General hyperlinks. (line 37)
+* scaling: Packages known to work.
+ (line 25)
+* scaling, demo: Hyperlinks (xhyper.tex).
+ (line 6)
+* sed: Customizing indexing.
+ (line 66)
+* see also index entries and hyperlinks: Hyperlinks in see and see also entries.
+ (line 6)
+* see also index entries and sorting: Customizing indexing.
+ (line 51)
+* see, and index entries <1>: Customizing indexing.
+ (line 64)
+* see, and index entries: Modifying index entries.
+ (line 36)
+* see, and index entries, hyperlinks: Hyperlinks in see and see also entries.
+ (line 6)
+* silent indexing: Indexing terms. (line 6)
+* skipping tokens <1>: \ifempty. (line 12)
+* skipping tokens: \ifundefined. (line 10)
+* SLiTeX: Logos. (line 11)
+* Snake Lemma: Arrows and morphisms.
+ (line 130)
+* solid hyperlink border: Link options for pdftex and dvipdfm.
+ (line 26)
+* sorting an index: Indexing. (line 6)
+* sorting of index entries: Indexing commands. (line 51)
+* soul.sty: Packages known to work.
+ (line 108)
+* space above index entries: Typesetting an index.
+ (line 35)
+* spaces, ignoring: \futurenonspacelet. (line 6)
+* spaces, obeying: Obeying spaces. (line 6)
+* spaces, trailing and indexing commands: Indexing terms. (line 20)
+* spacing out: Packages known to work.
+ (line 110)
+* spacing, preserving with hyperlinks: Hyperlink driver nolinks.
+ (line 6)
+* special characters, in index entries: Index entries with special characters.
+ (line 6)
+* special characters, in table of contents: Writing the .toc file.
+ (line 50)
+* Stallman, Richard: Introduction. (line 14)
+* striking out: Packages known to work.
+ (line 110)
+* style, hyperlink border: Link options for pdftex and dvipdfm.
+ (line 26)
+* subequations, referring to: Subequation references.
+ (line 6)
+* subterm in indexing: Indexing terms. (line 13)
+* supp-mis.tex, problems with pdfTeX: Packages known to work.
+ (line 29)
+* supp-pdf.tex: Packages known to work.
+ (line 29)
+* table of contents: Contents. (line 6)
+* table of contents, and verbatim text: Writing the .toc file.
+ (line 50)
+* table of contents, hyperlinks: Contents hyperlinks. (line 6)
+* table of contents, short <1>: Macro arguments. (line 10)
+* table of contents, short: Reading the .toc file.
+ (line 19)
+* tables: Tables. (line 6)
+* tabs: Obeying spaces. (line 22)
+* TeX by Topic: Iteration. (line 61)
+* TeX Frequently Asked Question: \ifinteger and \isinteger.
+ (line 26)
+* TEXFORMATS: Installation. (line 43)
+* texi2dvi <1>: Indexing. (line 34)
+* texi2dvi <2>: Citations. (line 97)
+* texi2dvi: Invoking Eplain. (line 103)
+* Texinfo: Introduction. (line 13)
+* TEXINPUTS: Installation. (line 23)
+* time of day: Time of day. (line 6)
+* toc files, writing several: Changing the .toc file's root name.
+ (line 12)
+* tracing: Diagnostics. (line 6)
+* trailing spaces and indexing commands: Indexing terms. (line 20)
+* trimsee: Customizing indexing.
+ (line 67)
+* triple column output: Multiple columns. (line 6)
+* Tu, Loring W.: Construction of commutative diagrams.
+ (line 13)
+* TUGboat: Introduction. (line 60)
+* type, link and destination: Introduction to hyperlinks.
+ (line 88)
+* types, destination, dvipdfm: Destination types for pdftex and dvipdfm.
+ (line 6)
+* types, destination, hypertex: Destination types for hypertex.
+ (line 6)
+* types, destination, pdftex: Destination types for pdftex and dvipdfm.
+ (line 6)
+* types, link, dvipdfm: Link types for pdftex and dvipdfm.
+ (line 6)
+* types, link, hypertex: Link types for hypertex.
+ (line 6)
+* types, link, pdftex: Link types for pdftex and dvipdfm.
+ (line 6)
+* typesetting an index: Typesetting an index.
+ (line 6)
+* undefined control sequence, checking for: \ifundefined. (line 10)
+* undefined labels, warnings about: Installation. (line 40)
+* underline hyperlink border: Link options for pdftex and dvipdfm.
+ (line 26)
+* underlining: Packages known to work.
+ (line 110)
+* underlining page numbers in index: Page list and page range parsers.
+ (line 26)
+* universal mapping property: Construction of commutative diagrams.
+ (line 25)
+* unordered lists: Lists. (line 6)
+* upgrading: Installation. (line 6)
+* URL for ifpdf.sty: Checking for PDF output.
+ (line 24)
+* URL for MakeIndex: Indexing. (line 14)
+* URL for path.sty: Paths. (line 33)
+* URL for pdfTeX: Checking for PDF output.
+ (line 6)
+* URL for texnames.sty: Logos. (line 14)
+* URL hyperlink <1>: Link types for pdftex and dvipdfm.
+ (line 25)
+* URL hyperlink <2>: Link types for hypertex.
+ (line 14)
+* URL hyperlink <3>: URL hyperlinks. (line 6)
+* URL hyperlink: General hyperlinks. (line 20)
+* url.sty <1>: Hyperlinks (xhyper.tex).
+ (line 6)
+* url.sty <2>: URL hyperlinks. (line 6)
+* url.sty: Packages known to work.
+ (line 118)
+* user-inaccessible macros: Category codes. (line 19)
+* vectors: Slanted lines and vectors.
+ (line 15)
+* verbatim listing: Verbatim listing. (line 6)
+* verbatim listing, demo: Highlighting TeX comments in listings (lscommnt.tex).
+ (line 6)
+* verbatim text, in index: Index entries with special characters.
+ (line 40)
+* verbatim text, in table of contents: Writing the .toc file.
+ (line 50)
+* version number: Introduction. (line 47)
+* Walden, David: Introduction. (line 57)
+* Warner, Frank W.: Construction of commutative diagrams.
+ (line 25)
+* whatsits made by hyperlinks: Hyperlink driver nolinks.
+ (line 25)
+* whatsits made by index entries: Indexing commands. (line 63)
+* while loops: Iteration. (line 6)
+* whitespace: Obeying spaces. (line 6)
+* width, hyperlink border: Link options for pdftex and dvipdfm.
+ (line 50)
+* writing several toc files: Changing the .toc file's root name.
+ (line 12)
+* xcolor.sty: Packages known not to work.
+ (line 19)
+* xdvi: Hyperlink driver hypertex.
+ (line 11)
+* xeplain.tex: Introduction. (line 6)
+* xhyper.tex: Hyperlinks (xhyper.tex).
+ (line 6)
+* Zassenhaus, Hans: Construction of commutative diagrams.
+ (line 122)
+* zooming, hyperlink destination: Destination options for pdftex and dvipdfm.
+ (line 21)
+
+
+
+Tag Table:
+Node: Top824
+Node: Introduction8097
+Node: Installation11064
+Node: Invoking Eplain13116
+Node: User definitions17568
+Node: Diagnostics19395
+Node: Rules20965
+Node: Citations21798
+Node: Formatting citations27641
+Node: Formatting bibliographies29187
+Node: Displays32016
+Node: Formatting displays33063
+Node: Time of day33735
+Node: Lists34496
+Node: Formatting lists36655
+Node: Verbatim listing38951
+Node: Contents41680
+Node: Writing the .toc file42351
+Node: Reading the .toc file45219
+Node: Changing the .toc file's root name46629
+Node: Alternative contents files47649
+Node: Cross-references48214
+Node: Defining generic references49699
+Node: Using generic references50577
+Node: Page references51868
+Node: Equation references52692
+Node: Formatting equation references55445
+Node: Subequation references57745
+Node: Indexing59668
+Node: Indexing terms61671
+Node: Indexing commands62784
+Node: Modifying index entries65812
+Node: Index entries with special characters68529
+Node: Proofing index terms72788
+Node: Typesetting an index74601
+Node: Customizing indexing77068
+Node: Justification80775
+Node: Tables82454
+Node: Margins85009
+Node: Multiple columns87170
+Node: Footnotes89154
+Node: Fractions91741
+Node: Paths92528
+Node: Logos94135
+Node: Boxes94822
+Node: Checking for PDF output96620
+Node: Loading LaTeX packages97711
+Node: The \usepackage command99059
+Node: Environment for loading packages100149
+Node: Packages known to work102216
+Node: Packages known not to work108621
+Node: Hyperlinks109383
+Node: Introduction to hyperlinks109966
+Node: Explicit hyperlinks115522
+Node: Implicit hyperlinks117812
+Node: General hyperlinks119634
+Node: URL hyperlinks121102
+Node: Citation hyperlinks123131
+Node: List hyperlinks123863
+Node: Cross-reference hyperlinks124257
+Node: Page reference hyperlinks125637
+Node: Equation reference hyperlinks126301
+Node: Index hyperlinks127699
+Node: Exact destinations for index terms129463
+Node: Page destinations for index terms131639
+Node: Choosing destination placement134267
+Node: Index page list and page range parsers135059
+Node: Hyperlinks in see and see also entries135612
+Node: Footnote hyperlinks136411
+Node: Contents hyperlinks137609
+Node: Hyperlink drivers137992
+Node: Options supported by all drivers138627
+Node: Hyperlink driver hypertex141431
+Node: Destination types for hypertex144383
+Node: Destination options for hypertex145422
+Node: Link types for hypertex145904
+Node: Link options for hypertex147925
+Node: Hyperlink drivers pdftex and dvipdfm148949
+Node: Destination types for pdftex and dvipdfm149595
+Node: Destination options for pdftex and dvipdfm153094
+Node: Link types for pdftex and dvipdfm155549
+Node: Link options for pdftex and dvipdfm159088
+Node: Hyperlink driver nolinks162727
+Node: Setting hyperlink types and options165139
+Node: Setting default types and options166141
+Node: Setting group types167570
+Node: Setting group options168763
+Node: Turning hyperlinks on/off171253
+Node: Turning low-level commands on/off171891
+Node: Turning hyperlinks on/off for a group172404
+Node: Arrow theoretic diagrams173561
+Node: Slanted lines and vectors173928
+Node: Commutative diagrams176010
+Node: Arrows and morphisms176609
+Node: Construction of commutative diagrams181087
+Node: Commutative diagram parameters188279
+Node: Programming definitions190098
+Node: Category codes191099
+Node: Allocation macros193709
+Node: Iteration195857
+Node: Macro arguments197516
+Node: Converting to characters200015
+Node: Expansion201407
+Node: \csn and \ece201970
+Node: \edefappend202536
+Node: Hooks203085
+Node: Properties205271
+Node: \expandonce206356
+Node: \ifundefined206805
+Node: \ifempty207369
+Node: \ifinteger and \isinteger208112
+Node: \futurenonspacelet209150
+Node: Obeying spaces209749
+Node: Writing out numbers210780
+Node: Mode-specific penalties211103
+Node: Auxiliary files211835
+Node: User-defined environments212758
+Node: Page list and page range parsers213973
+Node: Demo files216110
+Node: Hyperlinks (xhyper.tex)216678
+Node: Highlighting TeX comments in listings (lscommnt.tex)224997
+Node: Macro index227421
+Node: Concept index289457
+
+End Tag Table
diff --git a/Master/texmf-dist/doc/eplain/doc/eplain.pdf b/Master/texmf-dist/doc/eplain/doc/eplain.pdf
new file mode 100644
index 00000000000..206298f2393
--- /dev/null
+++ b/Master/texmf-dist/doc/eplain/doc/eplain.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/eplain/doc/lscommnt.jpg b/Master/texmf-dist/doc/eplain/doc/lscommnt.jpg
new file mode 100644
index 00000000000..6f40a9ac8b7
--- /dev/null
+++ b/Master/texmf-dist/doc/eplain/doc/lscommnt.jpg
Binary files differ
diff --git a/Master/texmf-dist/doc/eplain/doc/xhyper.jpg b/Master/texmf-dist/doc/eplain/doc/xhyper.jpg
new file mode 100644
index 00000000000..60c5abf18e2
--- /dev/null
+++ b/Master/texmf-dist/doc/eplain/doc/xhyper.jpg
Binary files differ
diff --git a/Master/texmf-dist/source/eplain/base/util/idxuniq b/Master/texmf-dist/doc/eplain/util/idxuniq
index 6ee7d225f5c..6ee7d225f5c 100644
--- a/Master/texmf-dist/source/eplain/base/util/idxuniq
+++ b/Master/texmf-dist/doc/eplain/util/idxuniq
diff --git a/Master/texmf-dist/source/eplain/base/util/trimsee b/Master/texmf-dist/doc/eplain/util/trimsee
index 8af5ebe6434..8af5ebe6434 100644
--- a/Master/texmf-dist/source/eplain/base/util/trimsee
+++ b/Master/texmf-dist/doc/eplain/util/trimsee
diff --git a/Master/texmf-dist/source/eplain/base/add-date b/Master/texmf-dist/source/eplain/base/add-date
deleted file mode 100644
index 8465939b5b8..00000000000
--- a/Master/texmf-dist/source/eplain/base/add-date
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-# This file is public domain.
-
-# Change placeholders to variations on the current date. Assumes
-# various % constructs are recognized.
-
-if test $# -lt 1
-then
- echo "Usage: $0 [<file> <file> ...]"
- exit 1
-fi
-
-temp=${TMPDIR-/tmp}/adddate$$
-
-for f in "$@"; do
- sed -e s/REPLACE-WITH-MONTH-YEAR/"`date +'%B %Y'`"/ \
- -e s/REPLACE-WITH-DAY-MONTH-YEAR/"`date +'%e %B %Y'`"/ \
- -e s/REPLACE-WITH-DATE/"`date`"/ \
- <$f >$temp
- if cmp -s $f $temp; then
- echo "$f: No REPLACE-WITH-<date>."
- exit 1
- fi
- rm -f $f
- mv $temp $f
-done
-
-rm -f $temp
diff --git a/Master/texmf-dist/source/eplain/base/add-version b/Master/texmf-dist/source/eplain/base/add-version
deleted file mode 100644
index 1934c8957f6..00000000000
--- a/Master/texmf-dist/source/eplain/base/add-version
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-# This file is public domain.
-
-if test $# -lt 2; then
- echo "Usage: $0 <version> [<file> <file> ...]"
- exit 1
-fi
-
-temp=${TMPDIR-/tmp}/version$$
-
-version=$1
-shift
-
-for f in "$@"; do
- sed "s/REPLACE-WITH-VERSION/$version/" <$f >$temp || exit 1
- if cmp -s $f $temp; then
- echo "$f: No REPLACE-WITH-VERSION."
- exit 1
- fi
- rm -f $f
- mv $temp $f
-done
-
-rm -f $temp
diff --git a/Master/texmf-dist/source/eplain/base/etex.tex b/Master/texmf-dist/source/eplain/base/etex.tex
deleted file mode 100644
index 46fe32ee733..00000000000
--- a/Master/texmf-dist/source/eplain/base/etex.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-% This file just makes a .fmt file, assuming plain is loaded.
-%
-\input eplain
-
-\dump
diff --git a/Master/texmf-dist/source/eplain/base/fix-checksum b/Master/texmf-dist/source/eplain/base/fix-checksum
deleted file mode 100644
index c2f830f10f3..00000000000
--- a/Master/texmf-dist/source/eplain/base/fix-checksum
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-# This file is public domain.
-
-# Fix a checksum line in the files given as arguments.
-
-tmpfile=/tmp/checksum$$
-
-for f in $*
-do
- checksum=""
- newchecksum=`wc < $f | sed "s/^ *//"`
- while test "$checksum" != "$newchecksum"
- do
- sed -e "1,50s/checksum = .*,/checksum = \"$newchecksum\",/" $f > $tmpfile
- checksum="$newchecksum"
- newchecksum=`wc < $tmpfile | sed "s/^ *//"`
- done
- mv -f $tmpfile $f
-done
-
diff --git a/Master/texmf-dist/source/eplain/base/merge b/Master/texmf-dist/source/eplain/base/merge
deleted file mode 100644
index b300b936bca..00000000000
--- a/Master/texmf-dist/source/eplain/base/merge
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/sh
-# This file is public domain.
-
-# Merge the constituent files with xeplain.tex to produce eplain.tex.
-
-# Usually we are called from the Makefile, and the `version' variable is set.
-if test -z "$version"; then
- echo "No version number, using xx!"
- version=xx
-fi
-
-btxtmp=/tmp/mergebtx$$
-common1tmp=/tmp/mergec1$$
-common2tmp=/tmp/mergec2$$
-common3tmp=/tmp/mergec3$$
-eplaintmp=/tmp/mergepl$$
-arrow1tmp=/tmp/mergea1$$
-arrow2tmp=/tmp/mergea2$$
-pathtmp=/tmp/mergepa$$
-ifpdftmp=/tmp/mergeif$$
-
-rm -f eplain.tex
-
-# Use this regexp to strip comments with egrep.
-commentre='^ *%([^%]|$)'
-
-# Extract the relevant parts of btxmac.tex (without comments).
-egrep -v "$commentre" btxmac.tex \
- | sed -n \
- -e "1,/^%% \[\[\[start .*\]\]\]/w $common1tmp" \
- -e "/^%% \[\[\[start .*\]\]\]/,/^%% \[\[\[end .*\]\]\]/w $btxtmp" \
- -e "/^%% \[\[\[end .*\]\]\]/,\$w $common2tmp"
-
-# Get texnames.sty and path.sty. Remove the announcement, as well as
-# the comments.
-egrep -v "$commentre|immediate" texnames.sty > $common3tmp
-egrep -v "$commentre|immediate" path.sty > $pathtmp
-
-# Get arrow.tex.
-egrep -v "$commentre" arrow.tex \
- | sed -n \
- -e '1,/catcode.*\&.*4/w '"$arrow1tmp" \
- -e '/catcode.*\&.*4/,$w '"$arrow2tmp"
-
-# Get ifpdf.sty
-egrep -v "$commentre"'|^ {0,6}\\immediate' ifpdf.sty > $ifpdftmp
-
-# Merge the above into xeplain, calling the result eplain. Also change the
-# `filename' in the comment.%%
-egrep -v "$commentre" xeplain.tex \
- | sed -e 's/"xeplain.tex"/"eplain.tex"/' \
- -e "/^%% \[\[\[here is the first.*\]\]\]/r $common1tmp" \
- -e "/^ %% \[\[\[here are the BibTeX.*\]\]\]/r $btxtmp" \
- -e "/^%% \[\[\[here is the second.*\]\]\]/r $common2tmp" \
- -e "/^%% \[\[\[include texnames.*\]\]\]/r $common3tmp" \
- -e "/^%% \[\[\[include path.*\]\]\]/r $pathtmp" \
- -e "/^ %% \[\[\[include arrow1\]\]\]/r $arrow1tmp" \
- -e "/^ %% \[\[\[include arrow2\]\]\]/r $arrow2tmp" \
- -e "/^%% \[\[\[include ifpdf.*\]\]\]/r $ifpdftmp" \
- > $eplaintmp
-
-# Remove our [[[...]]] markers and \endinput's.
-egrep -v '\[\[\[|^ *$|\\endinput' $eplaintmp > eplain.tex
-
-# Fix header fields.
-./add-date eplain.tex
-./add-version $version eplain.tex
-./fix-checksum eplain.tex
-
-# Old checksum computation:
-#checksum=`wc < $eplaintmp | sed -n "s/^ *//"`
-# Replace the checksum in the old file. We really should loop here,
-# since one iteration may not be enough. Only replace the first
-# checksum, since the second is for btxmac.
-#sed -e "1,50s/checksum = .*,/checksum = \"$checksum\",/" $eplaintmp \
-# > eplain.tex
-
-chmod a-w eplain.tex
-#ls -lt btxmac.tex path.sty texnames.sty xeplain.tex eplain.tex arrow.tex
-#wc eplain.tex
-#grep 'checksum.*=' eplain.tex
-
-rm -f $btxtmp $eplaintmp $common1tmp $common2tmp $common3tmp
-rm -f $arrow1tmp $arrow2tmp $pathtmp $ifpdftmp
diff --git a/Master/texmf-dist/source/eplain/base/packages.zip b/Master/texmf-dist/source/eplain/base/packages.zip
deleted file mode 100644
index 6bbf89e4203..00000000000
--- a/Master/texmf-dist/source/eplain/base/packages.zip
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/source/eplain/base/test/allref.tex b/Master/texmf-dist/source/eplain/base/test/allref.tex
deleted file mode 100644
index 8e4f51270b0..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/allref.tex
+++ /dev/null
@@ -1,15 +0,0 @@
-% This file is public domain.
-%
-% Test all kinds of references.
-%
-\ifx\undefined\eplain \input eplain \fi
-
-\let\primitiveend = \end
-\let\end = \relax
-
-\input cite
-\input xref
-\primitiveend
-
-\input eqref
-
diff --git a/Master/texmf-dist/source/eplain/base/test/boxes.tex b/Master/texmf-dist/source/eplain/base/test/boxes.tex
deleted file mode 100644
index b58e1ffef34..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/boxes.tex
+++ /dev/null
@@ -1,11 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-A box: \blackbox
-
-A large rectangle:
-\ht0=2pc \dp0=2pc \wd0=3pc
-\makeblankbox{.8pt}{.8pt}
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/boxit.tex b/Master/texmf-dist/source/eplain/base/test/boxit.tex
deleted file mode 100644
index 20da2e7c27d..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/boxit.tex
+++ /dev/null
@@ -1,24 +0,0 @@
-% This file is public domain.
-%
-% Test \boxit.
-%
-\ifx\undefined\eplain \input eplain \fi
-
-\boxit{\hbox{the basics, boxed}}
-
-\boxitspace = 24pt
-\boxit{\hbox{should be spacier}}
-
-\boxitspace = 5pt
-
-\boxit{\vbox{Something that is more than one line long, no matter how verbose
-I have to do make it so, so that we can see if the line breaks are
-plausible.}}
-
-
-\boxit{\vbox{\hsize = 4in Another one that is more than one line long, just
-to see if resetting hsize inside the box will work.}}
-
-\boxit{\boxit{\hbox{double box}}}
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/catcode.tex b/Master/texmf-dist/source/eplain/base/test/catcode.tex
deleted file mode 100644
index af71f740ea9..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/catcode.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-% This file is public domain.
-%
-The catcode BEFORE loading eplain: \the\catcode`@ \showthe\catcode`@
-\input eplain
-
-The catcode AFTER loading eplain: \the\catcode`@ \showthe\catcode`@
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/center.tex b/Master/texmf-dist/source/eplain/base/test/center.tex
deleted file mode 100644
index 628155050a6..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/center.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-\def\title{\begingroup \def\endcentermacro{\endtitle}\bf\center}
-\def\endtitle{\endcenter\endgroup}
-
-\loggingall
-\title hi
-\endtitle
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/cite.bib b/Master/texmf-dist/source/eplain/base/test/cite.bib
deleted file mode 100644
index 7c082677b4f..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/cite.bib
+++ /dev/null
@@ -1,25 +0,0 @@
-% This file is public domain.
-
-@book{chicago,
- title = "Chicago",
-}
-
-@book{texbook,
- title = "texbook"
-}
-
-@book{prime-number-theorem,
- title = "prime number theorem",
-}
-
-@book{1234567890)(@!`['";:]|<>./?-=+_$^&,
- title = "weird label"
-}
-
-@book{others,
- author = "Jill and Susan and others"
-}
-
-@book{accented,
- author = "{\'E}ric {\'E}ttelbaum"
-}
diff --git a/Master/texmf-dist/source/eplain/base/test/cite.tex b/Master/texmf-dist/source/eplain/base/test/cite.tex
deleted file mode 100644
index 12b818995bb..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/cite.tex
+++ /dev/null
@@ -1,35 +0,0 @@
-% This file is public domain.
-%
-% Test file for citations (plain bibliography style).
-%
-\ifx\eplain\undefined \input eplain \fi
-\loggingall
-
-Let's cite chicago: \cite{chicago}.
-
-Now let's have multiple citations: \cite{chicago,texbook}.
-
-Now let's have a non-alphabetic label: \cite{prime-number-theorem}.
-
-Here is an undefined citation: \cite{undefined}.
-
-Here is a citation with an optional note: \cite[note]{texbook}.
-
-Here is a citation with a weird label:
-\cite{1234567890)(@!`['";:]|<>./?-=+_$^&}.
-
-Now let's cite an `and others': \cite{others}.
-
-And an accented one: \cite{accented}.
-
-Let's get up to ten refs:
-\cite{article-minimal,article-full,article-crossref,whole-journal,%
-inbook-minimal,inbook-full}
-
-\bigskip
-\leftline{\bf References.}
-
-\bibliography{cite,xampl}
-\bibliographystyle{plain}
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/citeall.tex b/Master/texmf-dist/source/eplain/base/test/citeall.tex
deleted file mode 100644
index 24929568abe..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/citeall.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-% This file is public domain.
-%
-\input btxmac
-
-Cite all the entries in the bib database files {\tt knuth.bib} and {\tt
-ep.bib}:
-
-\nocite{*}
-\bibliography{knuth,ep}
-\bibliographystyle{plain}
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/citealph.tex b/Master/texmf-dist/source/eplain/base/test/citealph.tex
deleted file mode 100644
index 5b83d26d2b6..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/citealph.tex
+++ /dev/null
@@ -1,26 +0,0 @@
-% This file is public domain.
-%
-% Test file for citations (alphabetic bibliography style).
-%
-\input eplain
-
-Let's cite chicago and van-leunen: \cite{chicago,van-leunen}.
-
-Now let's cite an `and others': \cite{others}.
-
-And an accented one: \cite{accented}.
-
-Here is a citation with an optional note: \cite[note]{texbook}.
-
-Here is a citation with a weird label:
-\cite{1234567890)(@!`['";:]|<>./?-=+}.
-
-Here is an undefined citation: \cite{undefined}.
-
-\bigskip
-\leftline{\bf References.}
-
-\bibliography{cite}
-\bibliographystyle{alpha}
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/citeapa.tex b/Master/texmf-dist/source/eplain/base/test/citeapa.tex
deleted file mode 100644
index 3d59f70fa09..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/citeapa.tex
+++ /dev/null
@@ -1,26 +0,0 @@
-% This file is public domain.
-%
-% Test file for citations (alphabetic bibliography style).
-%
-\input btxmac
-
-Let's cite chicago and van-leunen: \cite{chicago,van-leunen}.
-
-Now let's cite an `and others': \cite{others}.
-
-And an accented one: \cite{accented}.
-
-Here is a citation with an optional note: \cite[note]{texbook}.
-
-Here is a citation with a weird label:
-\cite{1234567890)(@!`['";:]|<>./?-=+}.
-
-Here is an undefined citation: \cite{undefined}.
-
-\bigskip
-\leftline{\bf References.}
-
-\bibliography{cite}
-\bibliographystyle{apalike}
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/citebegin.tex b/Master/texmf-dist/source/eplain/base/test/citebegin.tex
deleted file mode 100644
index 75b5c8d6de6..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/citebegin.tex
+++ /dev/null
@@ -1,20 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-\let\primitiveend = \end
-\def\bye{\vfill\eject\primitiveend}
-
-\def\begin#1#2{%
- \message{widest label is #2}
-}
-\def\end#1{}
-
-Two citations to Knuthian works: \cite{surreal,concrete-math}.
-
-\beginsection{References.}\par % Title for the bibliography.
-
-\bibliography{knuth} % Use knuth.bib to resolve the labels.
-\bibliographystyle{plain} % Number the references.
-
-\bye % End of the document.
diff --git a/Master/texmf-dist/source/eplain/base/test/citecust.tex b/Master/texmf-dist/source/eplain/base/test/citecust.tex
deleted file mode 100644
index 2b3266407ba..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/citecust.tex
+++ /dev/null
@@ -1,38 +0,0 @@
-% This file is public domain.
-%
-% File to test the various customizations btxmac.tex allows.
-%
-\input eplain
-
-% Have citations come out as superscripts, as in footnotes.
-%
-% Unfortunately, plain TeX doesn't define the \scriptfont for the \tt
-% family. Since we use \tt to print unresolved bib-references, we define
-% it ourselves, so we can use superscripts.
-\font\eighttt = cmtt8
-\scriptfont\ttfam = \eighttt
-\def\printcitestart{$^\bgroup}
-\def\printbetweencitations{,\space}
-\def\printcitefinish{\egroup$}
-\def\printcitenote#1{\hbox{\sevenrm\space (#1)}}
-
-% Do angle brackets instead of brackets. (We don't redefine \biblabelprint.)
-%
-\def\biblabelcontents#1{\bblrm $\langle$#1$\rangle$}
-
-% Use sans serif instead of roman, and slanted instead of italic.
-%
-\font\bblrm = cmss10
-\font\bblem = cmsl10
-
-% Put a rule before the bibliography.
-%
-\def\bblhook{\medskip\hrule\smallskip}
-
-Two citations to Knuthian works: \cite{surreal,concrete-math}.
-
-This one with a note: \cite[another one]{surreal}.
-
-\bibliography{knuth} % Use knuth.bib to resolve the labels.
-\bibliographystyle{plain} % Number the references.
-\end % End of the document.
diff --git a/Master/texmf-dist/source/eplain/base/test/citenote.tex b/Master/texmf-dist/source/eplain/base/test/citenote.tex
deleted file mode 100644
index 429b5cd456f..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/citenote.tex
+++ /dev/null
@@ -1,13 +0,0 @@
-% This file is public domain.
-%
-% Test file for citations (plain bibliography style).
-%
-\ifx\eplain\undefined \input eplain \fi
-\loggingall
-
-Here is a citation with an optional note, first: \cite[note]{texbook}.
-
-\bibliography{cite}
-\bibliographystyle{plain}
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/citex.tex b/Master/texmf-dist/source/eplain/base/test/citex.tex
deleted file mode 100644
index 69e880490a7..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/citex.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-Two citations to Knuthian works: \cite{surreal,concrete-math}.
-\beginsection{References.}\par % Title for the bibliography.
-\bibliography{knuth} % Use knuth.bib to resolve the labels.
-\bibliographystyle{plain} % Number the references.
-\end % End of the document.
diff --git a/Master/texmf-dist/source/eplain/base/test/colfootn.tex b/Master/texmf-dist/source/eplain/base/test/colfootn.tex
deleted file mode 100644
index 942f71f50b3..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/colfootn.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-\loggingall
-
-\vsize = 6\baselineskip
-\doublecolumns
-
-\leftline{1\footnote\dag{A footnote that is longer than the column
-width. Much much longer longer.}}
-\count255 = 2
-\loop
- \leftline{\number\count255}
- \advance\count255 by 1
-\ifnum\count255 < 14 \repeat
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/colrule.tex b/Master/texmf-dist/source/eplain/base/test/colrule.tex
deleted file mode 100644
index 5213685e9a3..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/colrule.tex
+++ /dev/null
@@ -1,33 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-% ashley suggested the length of the footnote rule changes where the
-% second column starts.
-\vsize = 3in
-\footnoterulewidth = 6in
-\doublecolumns
-This is a footnote\footnote1{No, this is the footnote} in double column mode.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-And now we have lots of text to fill up the column.
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/column.tex b/Master/texmf-dist/source/eplain/base/test/column.tex
deleted file mode 100644
index be1d521fe08..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/column.tex
+++ /dev/null
@@ -1,228 +0,0 @@
-% This file is public domain.
-%
-% Test double columns with headlines, single-column material, and a
-% \topinsert.
-\ifx\undefined\eplain \input eplain \fi
-%\catcode`@=11
-%\input gcol
-%\catcode`@=12
-
-\gutter = 1pc
-\hyphenation{pour-ed}
-
-\headline = {This is the headline \hfil}
-
-{\center
- A test file for eplain
- Karl\footnote\dag{Credit in a footnote. Longer than one column. %
- Longer longer longer.}
-}
-
-\topinsert
-This should appear at the top of the page, since it's a topinsert. It's
-also longer than one column.
-\endinsert
-
-Here is a six-and-a-half-inch long rule.
-
-\hrule width 6.5in
-
-\doublecolumns
-
-Here the main document starts. It should be in double columns until
-further notice. It's all one paragraph. I am going to use Wuthering
-Heights, as usual. With that concluding word, the whole assembly,
-exalting their pilgrim's staves, rushed round me in a body; and I,
-having no weapon to raise in self-defence, commenced grappling with
-Joseph, my nearest and most ferocious assailant, for his. In the
-confluence of the multitude several clubs crossed; blows aimed at me
-fell on other sconces. Presently the whole chapel resounded with
-rappings and counter-rappings. Every man's hand was against his
-neighbour; and Branderham, unwilling to remain idle, pour\-ed forth his
-zeal in a shower of loud taps on the boards of the pulpit, which
-responded so smartly that at last, to my unspeakable relief, they woke
-me. And what was it that had suggested the tremendous tumult? What had
-played Jabes's part in the row? Merely the branch of a fir-tree that
-touched my lattice, as the blast wailed by, and rattled its dry cones
-against the panes! I listened doubtingly an instant, detected the
-disturber, then turned and dozed, and dreamt again---if possible, still
-more disagreeably than before. This time I remembered I was lying in
-the oak closet, and I heard distinctly the gusty wind and the driving of
-the snow. I heard also the fir-bough repeat its teasing sound, and
-ascribed it to the right cause. But it annoyed me so much that I
-resolved to silence it, if possible; and I thought I rose and
-endeavoured to unhasp the casement. The hook was soldered into the
-staple---a circumstance observed by me when awake, but forgotten. ``I
-must stop it, nevertheless!'' I muttered, knocking my knuckles through
-the glass, and stretching an arm out to seize the importunate branch;
-instead of which, my fingers closed on the fingers of a little, icecold
-hand!
-
-The intense horror of nightmare came over me. I tried to draw
-back my arm, but the hand clung to it, and a most melancholy voice
-sobbed, ``Let me in---let me in!'' ``Who are you?'' I asked, struggling,
-meanwhile, to disengage myself. ``Catherine Linton,'' it replied
-shiveringly. (Why did I think of Linton? I had read Earnshaw twenty
-times for Linton.) ``I'm come home. I'd lost my way on the moor.'' As
-it spoke, I discerned, obscurely, a child's face looking through the
-window. Terror made me cruel; and finding it useless to attempt shaking
-the creature off, I pulled its wrist on to the broken pane, and rubbed
-it to and fro till the blood ran down and soaked the bedclothes. Still
-it wailed, ``Let me in!'' and maintained its tenacious gripe, almost
-maddening me with fear. ``How can I?'' I said at length. ``Let me go,
-if you want me to let you in!''
-
-With that concluding word, the whole assembly,
-exalting their pilgrim's staves, rushed round me in a body; and I,
-having no weapon to raise in self-defence, commenced grappling with
-Joseph, my nearest and most ferocious assailant, for his. In the
-confluence of the multitude several clubs crossed; blows aimed at me
-fell on other sconces. Presently the whole chapel resounded with
-rappings and counter-rappings. Every man's hand was against his
-neighbour; and Branderham, unwilling to remain idle, pour\-ed forth his
-zeal in a shower of loud taps on the boards of the pulpit, which
-responded so smartly that at last, to my unspeakable relief, they woke
-me. And what was it that had suggested the tremendous tumult? What had
-played Jabes's part in the row? Merely the branch of a fir-tree that
-touched my lattice, as the blast wailed by, and rattled its dry cones
-against the panes! I listened doubtingly an instant, detected the
-disturber, then turned and dozed, and dreamt again---if possible, still
-more disagreeably than before. This time I remembered I was lying in
-the oak closet, and I heard distinctly the gusty wind and the driving of
-the snow. I heard also the fir-bough repeat its teasing sound, and
-ascribed it to the right cause. But it annoyed me so much that I
-resolved to silence it, if possible; and I thought I rose and
-endeavoured to unhasp the casement. The hook was soldered into the
-staple---a circumstance observed by me when awake, but forgotten. ``I
-must stop it, nevertheless!'' I muttered, knocking my knuckles through
-the glass, and stretching an arm out to seize the importunate branch;
-instead of which, my fingers closed on the fingers of a little, icecold
-hand!
-
-The intense horror of nightmare came over me. I tried to draw
-back my arm, but the hand clung to it, and a most melancholy voice
-sobbed, ``Let me in---let me in!'' ``Who are you?'' I asked, struggling,
-meanwhile, to disengage myself. ``Catherine Linton,'' it replied
-shiveringly. (Why did I think of Linton? I had read Earnshaw twenty
-times for Linton.) ``I'm come home. I'd lost my way on the moor.'' As
-it spoke, I discerned, obscurely, a child's face looking through the
-window. Terror made me cruel; and finding it useless to attempt shaking
-the creature off, I pulled its wrist on to the broken pane, and rubbed
-it to and fro till the blood ran down and soaked the bedclothes. Still
-it wailed, ``Let me in!'' and maintained its tenacious gripe, almost
-maddening me with fear. ``How can I?'' I said at length. ``Let me go,
-if you want me to let you in!''
-
-With that concluding word, the whole assembly,
-exalting their pilgrim's staves, rushed round me in a body; and I,
-having no weapon to raise in self-defence, commenced grappling with
-Joseph, my nearest and most ferocious assailant, for his. In the
-confluence of the multitude several clubs crossed; blows aimed at me
-fell on other sconces. Presently the whole chapel resounded with
-rappings and counter-rappings. Every man's hand was against his
-neighbour; and Branderham, unwilling to remain idle, re forth his
-zeal in a shower of loud taps on the boards of the pulpit, which
-responded so smartly that at last, to my unspeakable relief, they woke
-me. And what was it that had suggested the tremendous tumult? What had
-played Jabes's part in the row? Merely the branch of a fir-tree that
-touched my lattice, as the blast wailed by, and rattled its dry cones
-against the panes! I listened doubtingly an instant, detected the
-disturber, then turned and dozed, and dreamt again---if possible, still
-more disagreeably than before. This time I remembered I was lying in
-the oak closet, and I heard distinctly the gusty wind and the driving of
-the snow. I heard also the fir-bough repeat its teasing sound, and
-ascribed it to the right cause. But it annoyed me so much that I
-resolved to silence it, if possible; and I thought I rose and
-endeavoured to unhasp the casement. The hook was soldered into the
-staple---a circumstance observed by me when awake, but forgotten. ``I
-must stop it, nevertheless!'' I muttered, knocking my knuckles through
-the glass, and stretching an arm out to seize the importunate branch;
-instead of which, my fingers closed on the fingers of a little, icecold
-hand!
-
-The intense horror of nightmare came over me. I tried to draw
-back my arm, but the hand clung to it, and a most melancholy voice
-sobbed, ``Let me in---let me in!'' ``Who are you?'' I asked, struggling,
-meanwhile, to disengage myself. ``Catherine Linton,'' it replied
-shiveringly. (Why did I think of Linton? I had read Earnshaw twenty
-times for Linton.) ``I'm come home. I'd lost my way on the moor.'' As
-it spoke, I discerned, obscurely, a child's face looking through the
-window. Terror made me cruel; and finding it useless to attempt shaking
-the creature off, I pulled its wrist on to the broken pane, and rubbed
-it to and fro till the blood ran down and soaked the bedclothes. Still
-it wailed, ``Let me in!'' and maintained its tenacious gripe, almost
-maddening me with fear. ``How can I?'' I said at length. ``Let me go,
-if you want me to let you in!''
-
-With that concluding word, the whole assembly,
-exalting their pilgrim's staves, rushed round me in a body; and I,
-having no weapon to raise in self-defence, commenced grappling with
-Joseph, my nearest and most ferocious assailant, for his. In the
-confluence of the multitude several clubs crossed; blows aimed at me
-fell on other sconces. Presently the whole chapel resounded with
-rappings and counter-rappings. Every man's hand was against his
-neighbour; and Branderham, unwilling to remain idle, re forth his
-zeal in a shower of loud taps on the boards of the pulpit, which
-responded so smartly that at last, to my unspeakable relief, they woke
-me. And what was it that had suggested the tremendous tumult? What had
-played Jabes's part in the row? Merely the branch of a fir-tree that
-touched my lattice, as the blast wailed by, and rattled its dry cones
-against the panes! I listened doubtingly an instant, detected the
-disturber, then turned and dozed, and dreamt again---if possible, still
-more disagreeably than before. This time I remembered I was lying in
-the oak closet, and I heard distinctly the gusty wind and the driving of
-the snow. I heard also the fir-bough repeat its teasing sound, and
-ascribed it to the right cause. But it annoyed me so much that I
-resolved to silence it, if possible; and I thought I rose and
-endeavoured to unhasp the casement. The hook was soldered into the
-staple---a circumstance observed by me when awake, but forgotten. ``I
-must stop it, nevertheless!'' I muttered, knocking my knuckles through
-the glass, and stretching an arm out to seize the importunate branch;
-instead of which, my fingers closed on the fingers of a little, icecold
-hand!
-
-The intense horror of nightmare came over me. I tried to draw
-back my arm, but the hand clung to it, and a most melancholy voice
-sobbed, ``Let me in---let me in!'' ``Who are you?'' I asked, struggling,
-meanwhile, to disengage myself. ``Catherine Linton,'' it replied
-shiveringly. (Why did I think of Linton? I had read Earnshaw twenty
-times for Linton.) ``I'm come home. I'd lost my way on the moor.'' As
-it spoke, I discerned, obscurely, a child's face looking through the
-window. Terror made me cruel; and finding it useless to attempt shaking
-the creature off, I pulled its wrist on to the broken pane, and rubbed
-it to and fro till the blood ran down and soaked the bedclothes. Still
-it wailed, ``Let me in!'' and maintained its tenacious gripe, almost
-maddening me with fear. ``How can I?'' I said at length. ``Let me go,
-if you want me to let you in!''
-
-\singlecolumn
-Now we should be typesetting in a single column, i.e., normally. The
-fingers relaxed; I snatched mine through the hole, hurriedly piled the
-books up in a pyramid against it, and stopped my ears to exclude the
-lamentable prayer. I seemed to keep them closed above a quarter of an
-hour; yet the instant I listened again, there was the doleful cry
-moaning on! ``Begone!'' I shouted; ``I'll never let you in---not if you
-beg for twenty years.'' ``It is twenty years,'' mourned the
-voice---``twenty years. I've been a waif for twenty years!'' Thereat
-began a feeble scratching outside, and the pile of books moved as if
-thrust forward. I tried to jump up, but could not stir a limb, and so
-yelled aloud in a frenzy of fright. To my confusion, I discovered the
-yell was not ideal. Hasty footsteps approached my chamber door; somebody
-pushed it open with a vigorous hand, and a light glimmered through the
-squares at the top of the bed. I sat shuddering yet, and wiping the
-perspiration from my forehead. The intruder appeared to hesitate, and
-muttered to himself. At last he said in a half-whisper, plainly not
-expecting an answer, ``Is any one here?'' I considered it best to
-confess my presence, for I knew Heathcliff's accents, and feared he
-might search further if I kept quiet. With this intention I turned and
-opened the panels. I shall not soon forget the effect my action
-produced. Heathcliff stood near the entrance, in his shirt and
-trousers, with a candle dripping over his fingers, and his face as white
-as the wall behind him. The first creak of the oak startled him like an
-electric shock. The light leaped from his hold to a distance of some
-feet, and his agitation was so extreme that he could hardly pick it up.
-``It is only your guest, sir,'' I called out, desirous to spare him the
-humiliation of exposing his cowardice further. ``I had the misfortune
-to scream in my sleep, owing to a frightful nightmare. I'm sorry I
-disturbed you.''
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/column2.tex b/Master/texmf-dist/source/eplain/base/test/column2.tex
deleted file mode 100644
index 90a736e4333..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/column2.tex
+++ /dev/null
@@ -1,51 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-\headline = {headline\hfil}
-\topinsert
-topinsert
-\endinsert
-
-\parskip = 0pt
-
-\centerline{Xiaogen Yang and Max L. Deinzer}
-\smallskip
-\centerline{Department of Agricultural Chemistry}
-\centerline{Oregon State University, Corvallis, Oregon 97331}
-
-\doublecolumns
-Humulene monoepoxides exist in hop essential oil and were suggested
-as one of the important contributors of hop flavor to fermented
-malt beverages [1-3]. However, it is more possible that the ``noble
-hop'' aroma compounds are produced from certain hop components
-during the brewing process, because the ``noble hop'' aroma is
-distinct from ``dry hop'' aroma. The aging of hops, during which the
-amount of oxidation products of humulene increases [4], is also
-necessary to develop the ``noble hop'' aroma. One approach to find
-out the flavor compounds and their origin is to examine the brewing
-products of the oxygenated sesquiterpenes. The reactions of the
-brewing process can be simplified to hydrolyzation and fermentation
-as the first step. We have been investigated the hydrolysis of
-humulene monoepoxides.
-\singlecolumn
-To simulate the hydrolyzation effect in the ``late hop'' brewing
-process, humulene monoepoxides were boiled in water at
-pH\thinspace 4 for 10 minutes. After boiling, a large amount of
-the epoxides remain unreacted. When the solution was kept at
-ambient temperature for several weeks, humulene epoxides were
-then almost completely hydrolyzed. To accelerate the hydrolysis
-process, humulene epoxides were suspended in a aqueous solution
-buffered at pH\thinspace 4 and boiled for three hours under
-reflux. All three humulene monoepoxides produced a complex
-mixture after the reaction (Figure 1). The hydrolysis products
-can be easily separated into two groups by extraction with
-pentane and dichloro\-me\-thane subsequently. The pentane
-extracts are less polar, more volatile and smell stron\-ger than
-the dichloro\-methane extracts. Sensory evaluation of the
-hydrolysis products of humulene epoxide II and III by sniffing
-gas chromatography effluent indicates that some of the compounds
-have the flavor notes which are close to the ``noble hop'' aroma
-character described as ``spicy, citrus, floral'' (Table 1).
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/column3.tex b/Master/texmf-dist/source/eplain/base/test/column3.tex
deleted file mode 100644
index 01788bd3064..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/column3.tex
+++ /dev/null
@@ -1,23 +0,0 @@
-% This file is public domain.
-%
-\ifx\undefined\eplain \input eplain \fi
-
-Here is a single-column line of text.
-%\vskip 6in
-%And another one.
-
-\doublecolumns
-\newcount \xxx
-\xxx=0
-\par
-\baselineskip = 2.5\baselineskip
-\loop
- \hbox{Line \the\xxx.}
- \ifnum \xxx < 3
- \advance \xxx by 1
-\repeat
-
-\singlecolumn
-Another single-column line of text.
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/commdiags.tex b/Master/texmf-dist/source/eplain/base/test/commdiags.tex
deleted file mode 100644
index ae5ca6221d4..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/commdiags.tex
+++ /dev/null
@@ -1,111 +0,0 @@
-% This file is public domain.
-%
-% Examples of commutative diagrams from Brockett, {\it Finite
-% Dimensional Linear Systems}.
-
-\input arrow
-
-\def\Real{\mathord{R}}
-\def\Rn{\Real^n}
-\def\A{{\bf A}}
-\def\B{{\bf B}}
-\def\C{{\bf C}}
-\def\F{{\bf F}}
-\def\G{{\bf G}}
-\def\H{{\bf H}}
-\def\I{{\bf I}}
-\def\K{{\bf K}}
-\def\L{{\bf L}}
-\def\M{{\bf M}}
-\def\N{{\bf N}}
-\def\P{{\bf P}}
-\def\Q{{\bf Q}}
-\def\R{{\bf R}}
-\def\S{{\bf S}}
-\def\W{{\bf W}}
-\def\bp{{\bf\Phi}}
-
-
-Page 29, Fig.~3
-$$\commdiag{\Rn&\mapright^{\bp(t_1,t_0)}&\Rn\cr
-&\arrow(3,-2)\lft{\bp(t,t_0)}&\mapdown\rt{\bp(t,t_1)}\cr &&\Rn\cr}$$
-
-Page 48, Fig.~1:
-$$\commdiag{\Rn&\mapright^{\bp(t,t_0)}&\Rn\cr
-\mapdown\lft{\P(t_0)}&&\mapup\rt{\P^{-1}(t)}\cr
-\Rn&\mapright^{e^{\R(t-t_0)}}&\Rn\cr}$$
-
-Page 69, Fig.~1:
-$$\commdiag{\Rn&\mapright^{\M_1}&\Real^m\cr
-\mapdown\lft\Q&&\mapup\rt\P\cr
-\Rn&\mapright^{\M_2}&\Real^m\cr}$$
-
-Page 69, Fig.~2:
-$$\commdiag{\Rn&\mapright^\A&\Rn\cr
-\mapdown\lft\P&&\mapup\rt{\P'}\cr
-\Rn&\mapright^\S&\Rn\cr}$$
-
-Page 71, Fig.~3:
-$$\commdiag{\Rn&\mapright^\A&\Rn\cr
-\mapdown\lft\P&&\mapup\rt{\P^{-1}}\cr
-\Rn&\mapright^\B&\Rn\cr}$$
-
-Page 92, Fig.~1:
-$$\harrowlength=40pt \varrowlength=24.7pt \sarrowlength=\harrowlength
-\commdiag{C^m&\mapright^{\B(\sigma)}&\Rn&\mapright^{\bp_\A(t_0,\sigma)}&
-\Rn&\mapright^{\int_{t_0}^t-d\sigma}&\Rn&\mapright^{\bp_\A(t,t_0)}&
-\Rn&\mapright^{\C(t)}&C^q\cr
-&\arrow(3,-2)\lft{\P(\sigma)\B(\sigma)}&\mapdown\rt{\P(\sigma)}&&
-\mapdown\rt{\P^{-1}(t_0)}&&\mapdown\rt{\P(t_0)}&&\mapdown\lft{\P^{-1}(t)}&
-\arrow(3,2)\rt{\C(t)\P^{-1}(t)}\cr
-&&\Rn&\mapright_{\bp_{\A_1}(t_0,\sigma)}&\Rn&\mapright_{\int_{t_0}^t-d\sigma}&
-\Rn&\mapright_{\bp_{\A_1}(t,t_0)}&\Rn}$$
-
-Page 96, Fig.~2:
-$$\harrowlength=32pt \varrowlength=\harrowlength \sarrowlength=\harrowlength
-\def\olap#1{\harrowlength=118pt\hbox to0pt{\hss$#1$\hss}}
-\commdiag{C^m&&&&&&&&&&C^q\cr \mapup\lft{\G(\sigma)}
-&\hmorphposn=2pt\arrow(1,-1)\rt{\int_{t_0}^{t_1}-\G(\sigma)\,d\sigma}
-&&&&&&&&\arrow(1,1)\lft{\H(\ )}&\mapdown\rt
-{\int_{t_0}^{t_1}-\H(\sigma)\,d\sigma}\cr
-\Rn&\mapleft_{\W(t_0,t_1)}&\Rn&&&\olap{\mapright^{\I}}&&&
-\Rn&\mapleft_{\M(t_0,t_1)}&\Rn\cr
-\mapdown\lft{\P'}&&\mapup\lft\P&\arrow(-1,1)\rt\P&&&&\arrow(-1,-1)\lft\Q&
-\mapdown\rt\Q&&\mapup\rt{\Q'}\cr
-\Rn&\mapright^{\S_1}&\Rn&\mapright^{\S_1}&\Rn&\harrowlength=20pt
-\mapright^{\Q\P}&\Rn&\mapright^{\S_2}&\Rn&\mapright^{\S_2}&\Rn\cr
-&&\mapdown\lft{\N_1}&&&&&&\mapup\rt{\N_2}\cr
-&&\Rn&&&\olap{\mapright^{\I}}&&&\Rn\cr}$$
-
-Page 114, Fig.~1:
-$$\sarrowlength=.42\harrowlength
-\commdiag{&\Real^m\cr &\arrow(-1,-1)\lft\B\quad \arrow(1,-1)\rt\G\cr
-\Rn&\mapright^\P&\Rn\cr \mapdown\lft{e^{\A t}}&&\mapdown\rt{e^{\F t}}\cr
-\Rn&\mapright^\P&\Rn\cr &\arrow(1,-1)\lft\C\quad \arrow(-1,-1)\rt\H\cr
-&\Real^q\cr}$$
-
-Page 127, Fig.~2:
-$$\commdiag{Y&\mapright^{L^*}&X\cr &\adjarrow(3,-2)\lft{LL^*}\rt{(LL^*)^{-1}}&
-\mapdown\rt{L}\cr &&Y\cr}$$
-
-Page 135, Fig.~2:
-$$\harrowlength=80pt \varrowlength=40pt \sarrowlength=50pt
-\def\olap#1{\harrowlength=214pt\hbox to0pt{\hss$#1$\hss}}
-\def\vlap#1{\varrowlength=93pt\setbox0=\hbox{$#1$}\ht0=0pt\dp0=0pt\box0}
-\commdiag{\Rn&&&\olap{\mapright^{\dot\K+\A'\K+\K\A+\L}}&&&\Rn\cr
-&\arrow(3,-1)\rt\K&&&&\arrow(-3,-1)\lft\K\cr \noalign{\vskip-3pt}
-&&\Rn&\mapright^{\B\B'}&\Rn\cr
-\vlap{\mapdown\lft\P}&&\mapup\lft{\P'}&&\mapdown\rt\P&&\vlap{\mapup\rt{\P'}}\cr
-&&\Rn&\mapleft^{\P\B\B'\P'}&\Rn\cr \noalign{\vskip-3pt}
-&\arrow(3,1)\lft{\K_1}&&&&\arrow(-3,1)\rt{\K_1}\cr
-\Rn&&&\olap{\mapright_{\dot\K_1+(\P\A\P^{-1}+\dot\P\P^{-1})\K_1
-+\K_1(\P\A\P^{-1}+\dot\P\P^{-1})+\P'^{-1}\L\P^{-1}}}&&&\Rn\cr
-\noalign{\medskip}}$$
-
-Page 139, Fig.~2:
-$$\harrowlength=80pt \varrowlength=.618\harrowlength
-\sarrowlength=\harrowlength
-\commdiag{\Rn&\mapright^{\B'(\sigma)\bp'(t_0,\sigma)}&C^m\cr
-&\adjarrow(3,-2)\lft{\W(t_0,t_1)}\rt{\W^{-1}(t_0,t_1)}&
-\mapdown\rt{\int_{t_0}^{t_1}\bp(t_0,\sigma)\B(\sigma)\,d\sigma}\cr
-&&\Rn\cr}$$
diff --git a/Master/texmf-dist/source/eplain/base/test/contents.tex b/Master/texmf-dist/source/eplain/base/test/contents.tex
deleted file mode 100644
index 6c3159da810..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/contents.tex
+++ /dev/null
@@ -1,30 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-\newcount\subsectionno
-
-\def\tocsubsectionentry#1#2#3{\leftline{Subsection #2.~#1\dotfill#3}}
-\let\tocentry = \tocsubsectionentry
-
-\readtocfile
-
-\subsectionno = 13
-
-\writetocentry{chapter}{beginning}
-\writetocentry{section}{subbeginning $\sin$}
-
-\advance\subsectionno by 1
-\writenumberedtocentry{subsection}{Subsection $\cos$ \#14}
- {\the\subsectionno}
-
-\advance\subsectionno by 1
-\writenumberedtocentry{subsection}{Subsection \#15}{\the\subsectionno}
-
-% This doesn't expand \the\subsectionno -- only the first token gets
-% expanded. Its output line starts with \tocentry.
-\writenumberedtocentry{}{A toc entry}{1{\the\subsectionno}}
-
-%\loggingall
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/displine.tex b/Master/texmf-dist/source/eplain/base/test/displine.tex
deleted file mode 100644
index 97730ede242..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/displine.tex
+++ /dev/null
@@ -1,36 +0,0 @@
-% This file is public domain.
-%
-\ifx\undefined\eplain \input eplain \fi
-
-\loggingall
-
-\leftdisplays
-\parindent=31pt
-
-A displaylines with an eqdef: text mre more more more more more more
-more more more more more more more more more more text.
-$$\displaylines{x=1 \eqdef{eqdef-displ}\cr}$$
-
-{\leftskip = 14pt
-\noindent
-And a indented normal equation:
-$$y=2\eqdef{foo}
-$$
-An indented displaylines with an eqdef:
-$$\displaylines{x=1 \eqdef{eqdef-displ}\cr}
-$$
-
-Now the same two with hangindent nonzero.
-\hangindent=17pt
-And a indented normal equation:
-$$y=2\eqdef{foo}
-$$
-An indented displaylines with an eqdef:
-$$\displaylines{x=1 \eqdef{eqdef-displ}\cr}
-$$
-\par}
-
-Well?
-
-\bye
-
diff --git a/Master/texmf-dist/source/eplain/base/test/double.tex b/Master/texmf-dist/source/eplain/base/test/double.tex
deleted file mode 100644
index aca6d6bb3e4..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/double.tex
+++ /dev/null
@@ -1,24 +0,0 @@
-% This file is public domain.
-%
-\ifx\undefined\eplain \input eplain \fi
-
-%\catcode`@ = 11
-%\input gcol
-%\catcode`@ = 12
-
-Here is a single-column line of text.
-%\vskip 6in
-%And another one.
-
-\doublecolumns
-\newcount \xxx
-\xxx=0
-\par
-\baselineskip = 2.5\baselineskip
-\loop
- \hbox{Line \the\xxx.}
- \ifnum \xxx < 3
- \advance \xxx by 1
-\repeat
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/double2.tex b/Master/texmf-dist/source/eplain/base/test/double2.tex
deleted file mode 100644
index d1b794cad18..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/double2.tex
+++ /dev/null
@@ -1,163 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-\tolerance=2000
-
-\def\SP{\ }
-\def\throwaway#1{}
-\def\checkspace{\ifx \next\
-\let\result=\throwaway
- \else \let\result=\ignorespaces \fi \result }
-\font\bigfont=cmr10 scaled \magstep5
-\def\bfl#1{\setbox0=\hbox {{\bigfont #1}\thinspace}
- \noindent \hangindent \wd0 \hangafter -2
- \llap {\vbox to \ht0{\kern\baselineskip \box0 \kern-\baselineskip}}%
- \futurelet \next \checkspace}
-
-\parskip=10pt
-\hbadness = 1500
-\parindent=0pt
-
-\font\cmbig=cmr17
-\font\cmrbv=cmb10 scaled \magstep5
-\font\iti=cmbxti10 scaled \magstep2
-\font\erm=cmr8
-
-\doublecolumns
-
-%**************************************************************************
-% Generate a dummy first page for the twocol macro
-% The first page is to have the left column blank.
-
-\phantom{dummy first line} \vskip5truein
- {\font\iti=cmti10 scaled \magstep1
- \iti
- \rightline{An abstract}
- \rightline{goes}
- \rightline{in here.}
- }
-
-%karl \vfill
-%karl \eject
-
-%**************************************************************************
-
-\phantom{dummy first line} \vskip0.75truein
-
-\rightline{\cmrbv Title}
-\bigskip\bigskip
-\rightline{\iti Author}
-
-\bigskip\bigskip\bigskip
-%\rightline{\hrulefill}% width6.5truein}
-
-\nointerlineskip
-\moveleft 3.31truein
-\vbox{\hrule width6.5truein}
-\nointerlineskip
-
-\vskip0.75truein
-
-%**************************************************************************
-
-\bfl
-Xxxxxxx xxxxxx xxxxxx xxxxxxx xxxx xxx xxx\numberedfootnote{\erm Xxxxx xxxxx
-xxx xxxx Xxxxx xxxxx, Xxxxx xxxx Xxxxxx xxxxxx, xxxxxx xxxxx xx Xxxxxx Xxxxxx,
-Xxx., X.~X. Xxx~xxx, Xxxx Xxxxx, XX~xxxxx.} Xxxx Xxxxxxxxxx xxxxxxxx xxxx, Xxx
-xxxxx xxxxxx xx xxxxxxxx xx xxxxx xxxxxxx xxxxxxx xxxx xx xxxx xx xxxxxxx xx
-xxx xxxxx xx x xxx xxxxxxx xx xxxxx. Xx x/xxx xx x xxx xxxx xxxxxxx xxxxx
-xxxxxxx, Xxxxxx xxxxxxxxx xxxxx xxxxx x/xxx,xxx,xxx xx x xxxxxx. Xxxx xxxxx
- xxxx xx xxxx xxxx Xxxxxx'x xxxxxxxx xx xxx xxxxxxx xxxxxxxx xxxxxx xx xxxxx
- xx xxxx xxxxxxx xxx xxxxxx xxxx xx xxxxxxx xx xxxxxx x.xx xx x xxx, xxx x.xx
-xxx xxxxxx xxxxx xx~xxxxxxx. Xxxx xx x xxxxx xxxxxx xxx xxxxxxxxx xxxxxxxx xxx
-xxxxxxxx xxxx xxxxxxxx xxxxxxxxx xxx xxxxxx xxxxxx xxxx, xxx xxx xxxxxxxx
-xxxxxxxxx xx xxx xxxx xx xxxxxxxxxx xx x xxxx xxxxx xxxxxxxxxx.
-
-Xxxxx xxx xxxxxx xxx xxxxxx xx xxx xxxxx xx xxx xxx xxxxxxxxx (xxx XX-xxx
-xxxxx xxxxxx xxxxxxxx xx xxx Xxx Xxxxxxxxxx Xxxxxxxxxx), xx xxx xxxxxxx xxxx
-xx xxxxx xx xxxxxxxxxxx xx xxxxxxx x xxxxx xxxxxxx xxx xxxx xx xxxxx xxxx
-xxxxxx xx xxxx x xxxxxxxxxxx xxxxxx xxxx xxx xxxxxxx.
-
-Xxxxx x xxxxx xx xxx xxxx xx xxxxxxxxxx xxx xxxxxxxx xx xxx xxxxxxxxxx xxx
-xxxxxx xxxxxxxx xxx xxxx xxxxxx xxx xxxxx xxxx. Xxxx xxx xxxx xxxx xxxx xx
-xxxxx xxx xxxxxx'x xxxx xxxx xxxxxxxx, xxxx {xxx xxxxxxx} xx xxx xxxxxxx
-xxxxxxxxx, xxxxxxxx, xx x, xxx xxxxxxxx. Xxxxx xxxx xxxxxxxxx xxx xxxx (xxxx
-xxx Xxxx) xxx xxxxx xx Xxxxx~x.
-
-Xx xxxxxxxxxxx xx Xxxxx~x xxxxxxx xxxx xxx xxxxxxxx xx xxxxxxx xx xxxx xxxxxxx
-xxxxxxxx xxx xxx xx xxxxxxxxxx xx xxxxx xx xxxxxxxx. Xx xxxx, xx xxxxxxx xx
-xxxxxx xxx xxxxx xx xx xxxxx xxx xxx xxxxxxxxx xxx xxxxxxxx xxxxx xx Xxxxxx'x
-xxxxx xx Xxxxxx' xxxxxx xxxxxxx. Xxxx xxx xxxxxxxx xxxxx xxx xx xx xxxx, xxx
-xxxxxxxxx. Xxxxx~x xxxxxxxx xxx xxxxxxxxx xx xxxxxxx xx xxx xxxxxx xxxxxx xx
-xxxx xxxxxx xxxxxxxx xx xxxxxxxxx xx xxxxxxxxx.
-
-
-\singlecolumn
-\centerline{Table 1---Xxxxxxxxx Xxxx Xxxxxxxx xx Xxxxxxxx}
-\smallbreak
-\line \bgroup \hss
- \vbox to 11\baselineskip{}
-\hss \egroup
-\doublecolumns
-
-
-Xxxx xxxxxx x xxxxxx xxxxxxx Xxxxxx'x xxxxxx xxxxxx xx xxx xxxxxx xxxxx xxxxxx
-xxx xxxx xxxxx xx Xxxxx~x, xxxx xxxx xxxxxx xx xxxxx xxxxxxx. Xx, xxx xxxxxxx,
-xx xxxxxxxxxx xxx xxxxxxxx xxxx xxxxxx xxxxxx, xx xxxxx xxxxx xx xxxxxxxxxxx,
-xxxxxxxxxx, xxx xxxxxxxxx, xxxxxxx xx xxx xxxxxxxx xx xxxx xxxxxx xxxx xxxxx
-xxxxxxx, xx xxxxx xxxxx xx xxx xxxxxxxx, xxxxx xxxxx, xxx xxxxxxxxx. Xxxx xxx
-xxxx xx xxxxxxxxx.
-
-\medskip\bigskip
-\centerline{Table 2---Xxxxxxx xx Xxxxxx'x Xxxxxx Xxxxxxx}
-\nobreak
-\centerline{(Xxxxxxx Xxxxxxxx)}
-\smallbreak
-\line \bgroup \hss
- \vbox to 9\baselineskip{}
-\hss \egroup
-
-Xxxxxxxx xxx xxxx xxxx xxxxx xxxxx xx Xxxxx~x xxx xxx xxxx, xxxx xxx xxx xxxx
-xx xxx xxxxxxxx xxxxxxxx xxxxxxxxx xxxxx. Xx xxx x xxxxx xxxxxxx xx xxx xxxx
-xx xxxxxxx, xx xxx xxxxxxx xx xx x xxxxxx xxxxxx xx xxxxx xxxxxxx xx xxxxxx xx
-xxxx xxxxx xxxxxx x ``xxxxx xxxx'' xxxxxxxx. Xxxxx x xxxxx xx xxxx xxxxx xx
-xxx xxxx xx xxxxxxx xxx xxxxxxxx. Xxxx xxx xxxx xxxxxxxx xx xxxxx xxx xxxxxx'x
-xxxxxxxx xxxxxx xx xxxxx xxxxx, xxxxxxx xxx, xxx xxxxxx xxxx xxxx xxx xxxxx
-xxxxx xxxxxxxx xxx xxxxxxxx. Xxx xxxxxxx, xx xxx xxxxx xxxxx xxxxxx xxxx xxxx
-xxxxxx, xx xxx xxxx xxxxxx xxxxxxxx xxx xxx xxxxx. Xxx xxxxxxx xxx xxxxx xx
-Table~3.
-
-
-\font\eri=cmti8
-
-Xx xxxxxx xx xxxxxxxxxx xxxx xxxxx xxxxxx xxxx xxxxxxxx xxxx xxx xxx xxxxxxx
-xxxxx xx xxx xxxx xxxxx xxx xx xxx xx xxx xxx xxxxxxxxx xx xxxxxxx xxxx xx xxx
-xxx xxxxx xxxxx xxxxxx. Xxxxx~x xxxxxxx xxxx xxx xxxxx xxxxxxx, xx xx
-xxxxxxxxx xxxxxxxxx xx xxxxxxxx xx xxxx xxxx xxxxxxx xxxx xxx xxxx xxx xxxx
-xxxxxxxx xxxxxxxxxxx xxx xxx xxxxxx xx xx xxxxxxx. Xxxxxxxxx xxxxxxx xxxxx xxx
-xx xxxxxxxx xxxxxx xxxx xxx xxxx xxxxxxx xx x xxxxx xxxxxxxxx, xxx xxx
-xxxxxxxx xx xxx xxxxxxxxx? Xxx xxxx xxxxxxxx xxxxxxxxx xxxxxxxxx xxxxxxxxx xx
-XX-xxx, xxx xxxxxxxxx xx xxx {xxx Xxxxxx xxxxxx Xxxx
-xxx},\numberedfootnote{\erm Xxxx Xx xx xxx xxxx Xxxxxx Xxxxxxx xxxx xxxxx
-xxxx.} ``X xxxxxxx xxxxx xxxxxxxxx xxx Xxxxxx xxx xxx xxxx'x xxxxx xx xxxxxxxx
-xxxx xx xxxxxxxxx xxxxxx xxxxxx xxxx xxxxxx xxxx.'' Xxxx xxxxxx xxxxx xx x
-xxxxxxxx xxxx xxxxxxxx xxxxx xxxxxx xxx xxxxxxxx xxx xxx xxxxxxx xxx xx xxxx
-xxxxxxx xxx xxxxxx xxxxxx xxxxxxxx xxx xxxx xxxxxxxxxxx xxxx xxx xxx xxxxxxx
-xxx xxxxxx xxxxxx xx Xxxxxx xxxxx xx xxxx, xxx xxxxx xxx xxx xxxxxxxx xx x
-Xxxxxx xxxxxxx xxxx xxx xxxx? Xxx xxxxxx xxxxx xx xx xxxxxxxxx xxx xxxxxxx
-xxxx xxx xxxx xxxx xx Xxxxx~x xxx xxxxxx xxxx xxx xxxxxxx xxxx xxxxx xx
-xxxxxxx xx xxxxxx xxx xx xxxxx.
-
-\singlecolumn
-
-\medskip\bigbreak
-\midinsert
-\centerline{Table 3---Xxxxxxxxx Xxxx Xxxxxxxx xx Xxxxxxxx}
-\smallbreak
-\line \bgroup \hss
- \vbox to11\baselineskip{}
-\hss \egroup
-\endinsert
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/dvipdfm.tex b/Master/texmf-dist/source/eplain/base/test/dvipdfm.tex
deleted file mode 100644
index 0760afbe50b..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/dvipdfm.tex
+++ /dev/null
@@ -1,111 +0,0 @@
-\input ../eplain
-%\enablehyperlinks[nolinks]
-%\enablehyperlinks[dvipdfm]
-\enablehyperlinks
-
-\beginpackages
-\usepackage[dvipsnames]{color}
-\endpackages
-
-% Execute #1 then print it verbatim and indented.
-\def\c{\cf\indent\relax}
-% Same as \c, but do not indent and at the end say \hlend.
-\def\f{\cf\noindent\hlend}
-%
-\def\cf#1#2#3{%
- \def\temp{#3}%
- \edef\cftemp{\sanitize\temp}%
- #1#3\expandafter\verbatim\cftemp\endverbatim#2\par
-}
-%
-\newcount\destcount
-% Execute `#1{d\the\destcount}' then print it (`#1', `{d', and `}' are printed
-% verbatim; `\the\destcount' is expanded).
-\def\d{\dl\relax}
-% Same as \d, but at the end also say \hlend.
-\def\l{\dl\hlend}
-%
-\def\dl#1#2{%
- \global\advance\destcount by1
- \toks0={#2}%
- \edef\temp{\the\toks0{d\the\destcount}}%
- \edef\dltemp{\sanitize\temp}%
- \noindent#2{d\the\destcount}\expandafter\verbatim\dltemp\endverbatim#1\par
-}
-
-
-
-\leftline{\bf Destinations}
-\medskip
-
-{\tt\global\parindent=4em}
-
-\d{\hldest{}{}}
-\c{\hldestopts{zoom=2345}}
-\d{\hldest{}{}}
-\medskip
-\c{\hldesttype{fitr}}
-\c{\hldestopts{left=36,bottom=420,right=360,top=720}}
-\d{\hldest{}{}}
-\c{\def\mydesttype{xyz}}
-\c{\def\myopts{left=72,top=648}}
-\d{\hldest{\mydesttype}{\myopts}}
-\medskip
-\c{\let\myopts\empty}
-\c{\hldestopts{raise=2\normalbaselineskip}}
-\d{\hldest{xyz}{\myopts,zoom=2500}}
-\c{\hldestopts{left=,bottom=,right=,top=}}
-\d{\hldest{xyz}{raise=\ht\strutbox,zoom=3000}}
-\medskip
-\makeatletter
-\c{\def\mydest{\special{pdf: dest (\@hllabel) [@thispage /FitBH @ypos]}}}
-\d{\hldest{raw}{cmd=mydest}}
-\resetatcatcode
-\medskip
-\d{\hldest{fit}{}}
-\d{\hldest{fith}{}}
-\d{\hldest{fitv}{}}
-\d{\hldest{fitb}{}}
-\d{\hldest{fitbh}{}}
-\d{\hldest{fitbv}{}}
-\vfil\eject
-
-
-
-\leftline{\bf Links}
-\medskip
-
-{\tt\global\parindent=4.5em}
-
-\destcount=0 % Reset destination count.
-\l{\hlstart{name}{}}
-\c{\hlopts{bstyle=U}}
-\l{\hlstart{name}{}}
-\l{\hlstart{}{bstyle=D,bdash=2 4,bcolor=1 0 0,hlight=I}}
-\l{\hlstart{}{bstyle=B,bwidth=3}}
-\c{\hlopts{bcolor=0 0 1}}
-\l{\hlstart{}{bstyle=I,bwidth=4}}
-\l{\hlstart{}{bstyle=U,bwidth=1}}
-\c{\hlopts{bstyle=S}}
-\l{\hlstart{}{hlight=I,bcolor=1 .2 .2,bwidth=2}}
-\l{\hlstart{}{hlight=N,bstyle=D,bwidth=3}}
-\l{\hlstart{}{hlight=O}}
-\l{\hlstart{}{hlight=P,bcolor=.3 .6 .7}}
-\l{\hlstart{}{bstyle=D,bdash=2 4 6}}
-\l{\hlstart{}{bwidth=0}}
-\l{\hlstart{}{bstyle=D,bdash=2 4 6 8}}
-\f{\hlstart{page}{pagefit=/FitH 600}{1}}
-\f{\hlstart{filename}{file=hlink.pdf,newwin=1}{eq1}}
-\f{\hlstart{filepage}{file=hlink.pdf,pagefit=/FitR 50 100 300 500}{1}}
-\f{\hlstart{filepage}{file=hlink.pdf,pagefit=/FitB}{2}}
-\f{\hlstart{url}{}{http://tug.org/eplain/}}
-\c{\def\c{\special{pdf:beginann<</Type/Annot/Subtype/Link/Dest[0/FitH @ypos]>>}}}
-\f{\hlstart{raw}{cmd=c}{}}
-
-
-
-\bye
-
-% Local variables:
-% compile-command: "(cd .. && make eplain.tex) && tex --interact=nonstopmode dvipdfm.tex && dvipdfm -p letter dvipdfm.dvi"
-% End:
diff --git a/Master/texmf-dist/source/eplain/base/test/ecommdiag.tex b/Master/texmf-dist/source/eplain/base/test/ecommdiag.tex
deleted file mode 100644
index 562ad84ce00..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/ecommdiag.tex
+++ /dev/null
@@ -1,15 +0,0 @@
-% This file is public domain.
-%
-\input ../eplain
-
-\fmtversion
-
-$$\commdiag{Y&\mapright^f&E\cr \mapdown&\arrow(3,2)\lft{f_t}&\mapdown\cr
-Y\times I&\mapright^{\bar f_t}&X}$$
-
-\end
-
-From DYMACEK@fs.sciences.WLU.EDU Fri Apr 15 09:21:12 1994
-To: kb@cs.umb.edu
-From: "Wayne M. Dymacek" <DYMACEK@fs.sciences.WLU.EDU>
-Date: Fri, 15 Apr 1994 9:19:15 EDT
diff --git a/Master/texmf-dist/source/eplain/base/test/emergncy.tex b/Master/texmf-dist/source/eplain/base/test/emergncy.tex
deleted file mode 100644
index de1eeaefe6f..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/emergncy.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-% This file is public domain.
-%
-%\ifx\undefined\eplain \input eplain \fi
-
-\hsize = 32pc
-\emergencystretch = 8pc
-%\tolerance = 10000
-
-\def\code#1{{\tt #1}}
-\def\\{{\tt \char92}}
-
-You can make a new numbered theorem-like environment with
-\code{\\definenumberedtheorem}. This macro takes one argument, the name
-of the environment. The first letter of the name will be capitalized
-when it is typeset. Analogously, you can use
-\code{\\defineunnumberedtheorem} to make a new unnumbered theorem-like
-environment. These commands can only be used before \code{\\body}.
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/env.tex b/Master/texmf-dist/source/eplain/base/test/env.tex
deleted file mode 100644
index 3b4cf56be66..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/env.tex
+++ /dev/null
@@ -1,42 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-First, let's make sure they work.
-
-\loggingall
-
-\environment{outer}
- \environment{inner}
- This is in the first inner.
- \endenvironment{inner}
-
- This is between inners.
-
- \environment{inner}
- This is in the second inner.
-
- \environment{even-more-inner}
- This is even more inner.
- \endenvironment{even-more-inner}
- \endenvironment{inner}
-\endenvironment{outer}
-
-This is after the outer.
-
-Now let's make some mistakes.
-
-%\environment{start-1}
-%\endenvironment{end-2}
-
-\endenvironment{where-is-the-start?}
-
-\begingroup
-\endenvironment{begingroup-started}
-
-\environment{endgroup-ended}
-\endgroup
-
-\environment{noend}
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/eqdef.tex b/Master/texmf-dist/source/eplain/base/test/eqdef.tex
deleted file mode 100644
index 8a72b874333..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/eqdef.tex
+++ /dev/null
@@ -1,15 +0,0 @@
-% This file is public domain.
-%
-% Test empty eqdef's.
-\ifx\undefined\eplain \input eplain \fi
-
-\loggingall
-
-$$a = 1
-\eqdef{}
-$$
-
-$$b = 2
-\eqdef{}
-$$
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/eqref.tex b/Master/texmf-dist/source/eplain/base/test/eqref.tex
deleted file mode 100644
index 8f0d4f8bb59..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/eqref.tex
+++ /dev/null
@@ -1,141 +0,0 @@
-% This file is public domain.
-%
-% Test symbolic equation references.
-%
-\ifx\eplain\undefined \input eplain \fi
-
-\loggingall
-\leftdisplays
-
-An equation with a number in its name:
-$$ a+b=1\eqdef{line1}$$
-\line{did we mess up plain's line in equation \eqref{line1}?\hfil}
-
-\bye
-
-The first equation:
-$$x + y = 1 \eqdef{first}$$
-
-In equation \eqref{first}, we said that $x+y=1$.
-Now, in equation \eqref{second}, we say that $a+b=2$.
-
-$$a + b = 2 \eqdef{second}$$
-
-The next equation is unlabeled in the output, but we can still refer to
-it.
-$$c + d = 3 \eqdefn{*}$$
-
-And here's an equation whose text references another equation, namely,
-\eqref{first}:
-$$c=3\eqdef[\eqrefn{first}*]{first-star}$$
-And a reference to it: \eqref{first-star}.
-
-Here is the first of a group of equations: \eqdefn{group}
-$$a = 1\eqsubdef{group-1}$$
-and the invisible second, then the third of the group \eqsubdefn{group-invis}:
-$$b = 2\eqsubdef{group-2}$$
-We refer to the group as \eqref{group}, to the first as
-\eqref{group-1}, the third as \eqref{group-2}, and the invisible second
-as \eqref{group-invis}.
-
-Here's an equation labeled strangely:
-$$a=1\eqdef[\rm strange*]{foo}$$
-And let's refer to \eqref{foo}.
-
-Let's do subequations off that:
-$$b=2\eqsubdef{foo-1}$$
-And refer to it: \eqref{foo-1}.
-
-% We can't use \count255, since #1 might involve contortions which
-% trample it.
-\newcount\subrefcount
-\def\eqsubreftext#1#2{%
- \subrefcount = #2
- \advance\subrefcount by 96
- #1\char\subrefcount
-}
-
-Let's try another group, with a different labelling scheme. Here is the
-first of this group2: \eqdefn{group2}
-$$a = 1\eqsubdef{group2-1}$$
-and the second of the group2 \eqsubdefn{group2-invis}:
-$$b = 2\eqsubdef{group2-2}$$
-We refer to the group2 as \eqref{group2}, to the first as
-\eqref{group2-1}, the third as \eqref{group2-2}, and the invisible second
-as \eqref{group2-invis}.
-
-Here is one done with displaylines:
-% The \hfill's and \llap make the equation numbers come out in the right
-% place if we are not doing \leftdisplays. (See the TeXbook, p.194.)
-%$$\displaylines{
-% \hfill x=1\hfill\llap{\eqdef{displayline-1}}\cr
-% \hfill y=2\hfill\llap{\eqdef{displayline-2}}\cr
-%}$$
-$$\displaylines{
- x=1\eqdef{displayline-1}\cr
- y=2\eqdef{displayline-2}\cr
-}$$
-
-Let's refer to each of the equations in the displaylines:
-\eqref{displayline-1}, \eqref{displayline-2}.
-
-And one with eqalignno:
-$$
-\eqalignno{
- a+b&=c&\eqdef{eqalign-1}\cr
- d+e&=f&\eqdef{eqalign-2}\cr
-}
-$$
-
-And one with leqalignno, and indented more:
-{\leftdisplayindent = 1in
-$$\leqalignno{
- a+b &=c&\eqdef{leqalign-1}\cr
- dt+eg&=f&\eqdef{leqalign-2}\cr
-}$$
-}
-
-And now let's refer to those: \eqref{eqalign-1}, \eqref{eqalign-2},
-\eqref{leqalign-1}, \eqref{leqalign-2}.
-
-
-
-\def\eqprint#1{[\rm A.#1]}
-
-From now on, all equation labels should be in brackets and preceded
-by `A.'. In \eqref{*}, we said that $c+d=3$. And in equation
-\eqref{undefined}, we say that $1+1=2$.
-
-\eqdefn{*x}
-\eqdefn{*y}
-
-We defined equation \eqref{*y}, although we didn't give an equation for
-it.
-This is a forward reference to equation \eqref{forward}.
-
-$$e + f = 4 \eqdef{forward}$$
-
-That equation above defines \eqref{forward}.
-
-
-\newcount\sectionnum \sectionnum = 1
-\def\eqconstruct#1{\the\sectionnum.#1}
-
-And now equation numbers should have a section number (which we start at
-one) preceding them.
-
-$$a+b=1 \eqdef{s-ab}$$
-
-That equation is \eqref{s-ab}. The one we'll define in the next section
-is \eqref{s-cd}.
-
-
-\advance\sectionnum by 1
-The equation in the previous section was \eqref{s-ab}. Let's define one
-in this section:
-
-$$c+d=3 \eqdef{s-cd}$$
-
-And refer to it: \eqref{s-cd}.
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/example.eps b/Master/texmf-dist/source/eplain/base/test/example.eps
deleted file mode 100644
index 4074a32b458..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/example.eps
+++ /dev/null
@@ -1,389 +0,0 @@
-%!PS-Adobe-2.0 EPSF-1.2
-%%Creator: MATLAB, The Mathworks, Inc.
-%%Title: example.eps
-%%CreationDate: 11/05/96 21:16:44
-%%DocumentNeededFonts: Helvetica
-%%DocumentProcessColors: Cyan Magenta Yellow Black
-%%Pages: 1
-%%BoundingBox: 97 197 502 604
-%%EndComments
-
-%%BeginProlog
-
-% MathWorks dictionary
-/MathWorks 150 dict begin
-
-% definition operators
-/bdef {bind def} bind def
-/ldef {load def} bind def
-/xdef {exch def} bdef
-/xstore {exch store} bdef
-
-% operator abbreviations
-/c /clip ldef
-/cc /concat ldef
-/cp /closepath ldef
-/gr /grestore ldef
-/gs /gsave ldef
-/mt /moveto ldef
-/np /newpath ldef
-/cm /currentmatrix ldef
-/sm /setmatrix ldef
-/rc {rectclip} bdef
-/rf {rectfill} bdef
-/rm /rmoveto ldef
-/rl /rlineto ldef
-/s /show ldef
-/sc {setcmykcolor} bdef
-/sr /setrgbcolor ldef
-/w /setlinewidth ldef
-/j /setlinejoin ldef
-/cap /setlinecap ldef
-
-% page state control
-/pgsv () def
-/bpage {/pgsv save def} bdef
-/epage {pgsv restore} bdef
-/bplot /gsave ldef
-/eplot {stroke grestore} bdef
-
-% orientation switch
-/portraitMode 0 def
-/landscapeMode 1 def
-
-% coordinate system mappings
-/dpi2point 0 def
-
-% font control
-/FontSize 0 def
-/FMS {
- /FontSize xstore %save size off stack
- findfont
- [FontSize 0 0 FontSize neg 0 0]
- makefont
- setfont
- }bdef
-
-/reencode {
-exch dup where
-{pop load} {pop StandardEncoding} ifelse
-exch
-dup 3 1 roll
-findfont dup length dict begin
- { 1 index /FID ne {def}{pop pop} ifelse } forall
- /Encoding exch def
- currentdict
-end
-definefont pop
-} bdef
-
-/isroman {
-findfont /CharStrings get
-/Agrave known
-} bdef
-
-/FMSR {
-3 1 roll 1 index
-dup isroman
-{reencode} {pop pop} ifelse
-exch FMS
-} bdef
-
-/csm {
- 1 dpi2point div -1 dpi2point div scale
- neg translate
- landscapeMode eq {90 rotate} if
- } bdef
-
-% line types: solid, dotted, dashed, dotdash
-/SO { [] 0 setdash } bdef
-/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
-/DA { [6 dpi2point mul] 0 setdash } bdef
-/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
-
-% macros for lines and objects
-/L {
- lineto
- stroke
- } bdef
-/MP {
- 3 1 roll moveto
- 1 sub {rlineto} repeat
- } bdef
-/AP {
- {rlineto} repeat
- } bdef
-/PP {
- closepath fill
- } bdef
-/DP {
- closepath stroke
- } bdef
-/MR {
- 4 -2 roll moveto
- dup 0 exch rlineto
- exch 0 rlineto
- neg 0 exch rlineto
- closepath
- } bdef
-/FR {
- MR stroke
- } bdef
-/PR {
- MR fill
- } bdef
-/L1i {
- { currentfile picstr readhexstring pop } image
- } bdef
-
-/tMatrix matrix def
-/MakeOval {
- newpath
- tMatrix currentmatrix pop
- translate scale
- 0 0 1 0 360 arc
- tMatrix setmatrix
- } bdef
-/FO {
- MakeOval
- stroke
- } bdef
-/PO {
- MakeOval
- fill
- } bdef
-
-/PD {
- 2 copy moveto lineto stroke
- } bdef
-
-
-currentdict end def
-%%EndProlog
-
-%%BeginSetup
-MathWorks begin
-
-0 cap
-
-end
-%%EndSetup
-
-%%Page: 1 1
-%%BeginPageSetup
-%%PageBoundingBox: 97 197 502 604
-MathWorks begin
-bpage
-%%EndPageSetup
-
-%%BeginObject: graph1 1
-bplot
-
-/dpi2point 12 def
-portraitMode 0216 7344 csm
-
- 956 91 4862 4883 MR c np
-76 dict begin %Colortable dictionary
-/c0 { 0 0 0 sr} bdef
-/c1 { 1 1 1 sr} bdef
-/c2 { 1 0 0 sr} bdef
-/c3 { 0 1 0 sr} bdef
-/c4 { 0 0 1 sr} bdef
-/c5 { 1 1 0 sr} bdef
-/c6 { 1 0 1 sr} bdef
-/c7 { 0 1 1 sr} bdef
-%%IncludeResource: font Helvetica
-/Helvetica /ISOLatin1Encoding 144 FMSR
-
-1 j
-c1
- 0 0 6912 5185 PR
-6 w
-DO
-4 w
-c0
-1463 4613 mt 1463 388 L
-1463 388 mt 1463 388 L
-2308 4613 mt 2308 388 L
-2308 388 mt 2308 388 L
-3153 4613 mt 3153 388 L
-3153 388 mt 3153 388 L
-3999 4613 mt 3999 388 L
-3999 388 mt 3999 388 L
-4844 4613 mt 4844 388 L
-4844 388 mt 4844 388 L
-5689 4613 mt 5689 388 L
-5689 388 mt 5689 388 L
-1463 4613 mt 5689 4613 L
-5689 4613 mt 5689 4613 L
-1463 4191 mt 5689 4191 L
-5689 4191 mt 5689 4191 L
-1463 3768 mt 5689 3768 L
-5689 3768 mt 5689 3768 L
-1463 3346 mt 5689 3346 L
-5689 3346 mt 5689 3346 L
-1463 2923 mt 5689 2923 L
-5689 2923 mt 5689 2923 L
-1463 2501 mt 5689 2501 L
-5689 2501 mt 5689 2501 L
-1463 2078 mt 5689 2078 L
-5689 2078 mt 5689 2078 L
-1463 1655 mt 5689 1655 L
-5689 1655 mt 5689 1655 L
-1463 1233 mt 5689 1233 L
-5689 1233 mt 5689 1233 L
-1463 811 mt 5689 811 L
-5689 811 mt 5689 811 L
-1463 388 mt 5689 388 L
-5689 388 mt 5689 388 L
-1463 4613 mt 1463 388 L
-1463 388 mt 5689 388 L
-1463 4613 mt 1463 388 L
-1463 388 mt 5689 388 L
-1463 4613 mt 1463 388 L
-1463 388 mt 5689 388 L
-SO
-6 w
-1463 4613 mt 5689 4613 L
-1463 388 mt 5689 388 L
-5689 4613 mt 5689 388 L
-1463 4613 mt 1463 388 L
-5689 4613 mt 5689 4613 L
-1463 4613 mt 1463 4613 L
-1463 4613 mt 5689 4613 L
-1463 4613 mt 1463 388 L
-1463 4613 mt 1463 4613 L
-1463 4613 mt 1463 4571 L
-1463 388 mt 1463 430 L
-1423 4782 mt
-(0) s
-2308 4613 mt 2308 4571 L
-2308 388 mt 2308 430 L
-2268 4782 mt
-(2) s
-3153 4613 mt 3153 4571 L
-3153 388 mt 3153 430 L
-3113 4782 mt
-(4) s
-3999 4613 mt 3999 4571 L
-3999 388 mt 3999 430 L
-3959 4782 mt
-(6) s
-4844 4613 mt 4844 4571 L
-4844 388 mt 4844 430 L
-4804 4782 mt
-(8) s
-5689 4613 mt 5689 4571 L
-5689 388 mt 5689 430 L
-5609 4782 mt
-(10) s
-1463 4613 mt 1505 4613 L
-5689 4613 mt 5647 4613 L
-1264 4666 mt
-(-1) s
-1463 4191 mt 1505 4191 L
-5689 4191 mt 5647 4191 L
-1144 4244 mt
-(-0.8) s
-1463 3768 mt 1505 3768 L
-5689 3768 mt 5647 3768 L
-1144 3821 mt
-(-0.6) s
-1463 3346 mt 1505 3346 L
-5689 3346 mt 5647 3346 L
-1144 3399 mt
-(-0.4) s
-1463 2923 mt 1505 2923 L
-5689 2923 mt 5647 2923 L
-1144 2976 mt
-(-0.2) s
-1463 2501 mt 1505 2501 L
-5689 2501 mt 5647 2501 L
-1348 2554 mt
-(0) s
-1463 2078 mt 1505 2078 L
-5689 2078 mt 5647 2078 L
-1228 2131 mt
-(0.2) s
-1463 1655 mt 1505 1655 L
-5689 1655 mt 5647 1655 L
-1228 1708 mt
-(0.4) s
-1463 1233 mt 1505 1233 L
-5689 1233 mt 5647 1233 L
-1228 1286 mt
-(0.6) s
-1463 811 mt 1505 811 L
-5689 811 mt 5647 811 L
-1228 864 mt
-(0.8) s
-1463 388 mt 1505 388 L
-5689 388 mt 5647 388 L
-1348 441 mt
-(1) s
-1463 388 mt 5689 388 L
-1463 4613 mt 5689 4613 L
-1463 4613 mt 1463 388 L
-5689 4613 mt 5689 388 L
-1463 388 mt 1463 388 L
-5689 388 mt 5689 388 L
-gs 1463 388 4227 4226 MR c np
-42 183 43 192 42 200 42 206 42 210 43 211 42 210 42 208
-42 204 43 196 42 188 42 177 42 165 43 151 42 135 42 119
-42 100 43 82 42 61 42 42 42 20 43 -1 42 -22 42 -43
-42 -63 43 -83 42 -102 42 -120 43 -137 42 -152 42 -166 42 -178
-43 -188 42 -197 42 -204 42 -208 43 -211 42 -211 42 -209 42 -206
-43 -199 42 -192 42 -182 42 -170 43 -157 42 -142 42 -126 42 -108
-43 -89 42 -70 42 -50 43 -29 42 -8 42 13 42 34 43 55
-42 75 42 94 42 113 43 130 42 146 42 160 42 173 43 185
-42 193 42 202 42 206 43 210 42 211 42 211 42 207 43 202
-42 195 42 186 42 176 43 162 42 149 42 132 43 116 42 97
-42 79 42 58 43 37 42 17 42 -4 42 -26 43 -46 42 -67
-42 -86 42 -105 43 -123 42 -139 42 -155 42 -168 43 -180 42 -190
-42 -198 42 -205 43 -209 1505 2290 100 MP stroke
-42 -211 1463 2501 2 MP stroke
-42 -106 43 -87 42 -67 42 -48 42 -26 43 -5 42 15 42 37
-42 57 43 78 42 96 42 115 42 132 43 148 42 162 42 175
-42 185 43 195 42 202 42 207 42 210 43 211 42 211 42 206
-42 202 43 194 42 185 42 174 43 161 42 146 42 131 42 113
-43 95 42 76 42 56 42 35 43 14 42 -7 42 -28 42 -49
-43 -69 42 -89 42 -107 42 -125 43 -141 42 -157 42 -169 42 -182
-43 -191 42 -199 42 -205 43 -210 42 -211 42 -210 42 -209 43 -204
-42 -197 42 -189 42 -179 43 -166 42 -153 42 -137 42 -121 43 -103
-42 -84 42 -64 42 -44 43 -22 42 -2 42 19 42 40 43 61
-42 81 42 99 42 118 43 135 42 150 42 164 43 177 42 187
-42 197 42 203 43 207 42 211 42 211 42 210 43 206 42 200
-42 193 42 183 43 172 42 158 42 144 42 128 43 110 42 92
-42 73 42 52 43 31 1505 399 100 MP stroke
-42 11 1463 388 2 MP stroke
-
-gr
-3194 4942 mt
-(\\tex[t][t]{$t$}) s
-1090 3419 mt -90 rotate
-(\\tex[B][B]{$\\sin\(t\)$, $\\cos\(t\)$}) s
-90 rotate
-2314 273 mt
-(\\tex[B][B]{Plot of $\\sin\(t\)$ and $\\cos\(t\)$}) s
-2689 2048 mt
-(p1) s
-3956 3343 mt
-(p2) s
-5224 1495 mt
-(p2) s
-3486 2178 mt -78 rotate
-(p3) s
-78 rotate
-
-end
-
-eplot
-%%EndObject graph 1
-
-epage
-end
-
-showpage
-
-%%Trailer
-%%EOF
diff --git a/Master/texmf-dist/source/eplain/base/test/filexist.tex b/Master/texmf-dist/source/eplain/base/test/filexist.tex
deleted file mode 100644
index e80485577a5..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/filexist.tex
+++ /dev/null
@@ -1,22 +0,0 @@
-% This file is public domain.
-%
-% Test \testfileexistence.
-%
-\ifx\undefined\eplain \input eplain\fi
-
-\testfileexistence{tex}
-\iffileexists \else
- \message{\jobname.tex does not exist, but it should.}
-\fi
-
-\testfileexistence[README]{}
-\iffileexists \else
- \message{README does not exist, but it should.}
-\fi
-
-\testfileexistence[foo]{bar}
-\iffileexists
- \message{foo.bar exists, but it shouldn't.}
-\fi
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/flynn.tex b/Master/texmf-dist/source/eplain/base/test/flynn.tex
deleted file mode 100644
index d5efea792cd..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/flynn.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-\loggingall
-\xrdef{foo}
-\xrdef{bar}
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/footnote.tex b/Master/texmf-dist/source/eplain/base/test/footnote.tex
deleted file mode 100644
index de30cc89de4..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/footnote.tex
+++ /dev/null
@@ -1,88 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-This is some text\numberedfootnote{And this is the first footnote.} and
-now some more text\numberedfootnote{The second.} and
-finally\numberedfootnote{the third} some
-more.\numberedfootnote{The fourth.} And again.
-
-\footnotenumber = 0
-
-\leftskip = 1in
-Let's do another, this one should be numbered one
-again\numberedfootnote{OK, here it is, numbered one}. This paragraph
-ends up being indented by one inch. But this time the
-footnote\numberedfootnote{This one should be like the others.} shouldn't be
-indented.
-
-\footnotemarkseparation = .16666em
-
-\numberedlist
-\li This is the first item in a list, and it has a
-footnote\numberedfootnote{See? With a separation less than the others, too}.
-
-This is the second paragraph of the first item, and it has
-one\numberedfootnote{This is in the second paragraph.} too.
-\endnumberedlist
-
-\leftskip = 0pt
-Now let's redefine the footnote command.
-\let\footnote = \numberedfootnote
-
-\everyfootnote = {\it\leftskip=1in}%
-
-And do one\footnote{This is it, should be indented by one inch and in
-italics.} footnote with that, which should also end up indented.
-
-\font\small = cmr7
-\everyfootnote = {\small \baselineskip = 7pt }
-Another paragraph\footnote{With a footnote in a smaller font, but make
-it more than one line long so we can see if the baselineskip change
-worked or not. Because it's a small font, it has to go on for ages,
-simply ages.\par}.
-
-\vfill\eject
-
-% Test the \footnoterule parameters.
-%
-\footnoterulewidth = 6in
-\footnoteruleheight = 4pt
-\belowfootnoterulespace = 6pt
-
-New page\footnote{This footnote should have a 4pt rule above it which 6 inches
-wide and has 6 points of space below it.} to test the footnote rule
-parameters.
-
-\vfill\eject
-
-\everyfootnote = {\bf}
-\interfootnoteskip = 8pt
-\footnoteruleheight = 0pt
-\belowfootnoterulespace = 0pt
-\skip\footins = 12pt
-
-Some more\footnote{In bold, indented by the usual parindent, with no
-extra space between it and the rule; in fact, no rule.} footnotes so we can
-test\footnote{In bold, with 8pt extra space above it.}
-interfootnoteskip.
-
-The big blank space following this will force a long footnote to be
-broken across pages.
-
-\vglue 41pc plus 1filll
-
-This is the last line on the page\footnote{And this is the last
-footnote; it should be like the last one. We are making this
-footnote pretty long, so that it won't all fit on one page. I hope that
-\TeX\ will break it across pages, so we see if the new footnote
-formatting parameters still work in that case. Oh, boy, I can see we
-should make this footnote really long; much longer than I can make up
-garbage sentences like this for. Well, maybe not. I can be pretty
-verbose when I have to be. I suppose anyone can. Did you notice I'm
-inconsistent about leaving one space or two after sentence-ending
-periods? Punctuation, really.}, and it should have 12pt
-(which is the footins skip) between it and the rule\footnote{I lied;
-{\it this} is the last footnote}.
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/frac.tex b/Master/texmf-dist/source/eplain/base/test/frac.tex
deleted file mode 100644
index f4f4cd565ab..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/frac.tex
+++ /dev/null
@@ -1,24 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-\obeylines %
-This is \frac 1/2 cup.
-This is \frac 2/3 cup.
-This is \frac 3/4 cup.
-This is \frac 5/6 cup.
-This is \frac 6/7 cup.
-This is \frac 7/8 cup.
-This is \frac 8/9 cup.
-This is \frac 9/{10} cup.
-This is \frac 10/{11} cup.
-
-\end
-
-
-
-
-
-
-
-
diff --git a/Master/texmf-dist/source/eplain/base/test/gcol.tex b/Master/texmf-dist/source/eplain/base/test/gcol.tex
deleted file mode 100644
index e44455ce0e7..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/gcol.tex
+++ /dev/null
@@ -1,218 +0,0 @@
-% This file is public domain.
-%
-%Date: Thu, 16 May 91 14:59 PDT
-%From: David Guichard <GUICHARD%WHITMAN.BITNET@CORNELLC.cit.cornell.edu>
-%Subject: Re: eplain
-%To: karl@cs
-%
-%Karl--
-%
-%Here are my multi-column macros and a rewrite of the double columns section
-%of eplain.texinfo. I included a \quadcolumns because this seems potentially
-%useful on landscape pages.
-%
-%I ran into a couple of problems/bugs/features of the original macros that I
-%think I've fixed.
-%
-%First, if I started double columns and then returned to single column before
-%the output routine was invoked, but there was too much text in the columns to
-%fit on the current page, then all of the text was put on the next page, leaving
-%lots of blank space on the first page. I think I've fixed this by changing how
-%\vsize is defined.
-%
-%Next, unless I'm doing something screwy, it looks to me like eplain goofs up on
-%footnotes and topinserts issued in multicolumn mode. I think I've got things
-%changed around so they work.
-%
-%I also discovered that the "\vskip\interfootnoteskip" in the vfootnote macro
-%will produce a parskip even if the interfootnoteskip is 0---was this
-%intentional? If not, perhaps you'd like to add \parskip=0pt to vfootnote.
-%(I have already added it to the modified vfootnote in the columns macro).
-
-\newskip\abovecolumnskip \abovecolumnskip = \bigskipamount
-\newskip\belowcolumnskip \belowcolumnskip = \bigskipamount
-\newdimen\gutter \gutter = 2pc
-\newdimen\c@lumnhsize
-\newtoks\previousoutput
-\newcount\number@fcolumns
-\newbox\@partialpage
-\newdimen\singlec@lumnhsize
-\newdimen\singlec@lumnvsize
-\newtoks\previousoutput
-\let\@ndcolumns=\relax
-%
-% We have a few synonymous ways to refer to multiple column modes.
-%
-\def\doublecolumns{\@columns2}
-\def\triplecolumns{\@columns3}
-\def\quadcolumns{\@columns4}
-\def\begincolumns#1{\ifcase#1\relax \or \singlecolumn \or \@columns2 \or%
- \@columns3 \or \@columns4 \else \relax \fi}
-\def\singlecolumn{\@ndcolumns\vskip\belowcolumnskip\nointerlineskip}
-\let\endcolumns=\singlecolumn
-%
-\def\@columns#1{%
- \@ndcolumns%
- \begingroup
-%
-% We redefine the main footnote macro so footnotes will extend across
-% the whole page, not just the width of a column. Likewise for @ins,
-% the insertion macro.
-%
- \def\vfootnote##1{\insert\footins\bgroup\hsize=\singlec@lumnhsize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\ht\strutbox % top baseline for broken footnotes
- \advance\splittopskip by \interfootnoteskip
- \splitmaxdepth\dp\strutbox
- \floatingpenalty\@MM
- \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip
- \everypar = {}%
- \parskip0pt
- \the\everyfootnote
- \vskip\interfootnoteskip
- \indent\llap{##1\kern\footnotemarkseparation}\footstrut\futurelet\next\fo@t}
- %
- \def\@ins{\par\begingroup\setbox\z@\vbox\bgroup\hsize=\singlec@lumnhsize}
- \global\let\@ndcolumns=\@@endcolumns
- \global\number@fcolumns=#1
- \global\c@lumnhsize = \hsize % If \hsize changed, get the new value.
- \par % Shouldn't start in horizontal mode.
- \global\previousoutput = \expandafter{\the\output}%
- \global\advance\c@lumnhsize by -#1\gutter
- \global\divide\c@lumnhsize by #1
- \global\output = {%
- \global\setbox\@partialpage =
- \vbox{\unvbox255\vskip\abovecolumnskip}%
- }%
- \pagegoal = \pagetotal
- \eject % Now expand the \output just above.
- \global\output = {\c@lumnoutput}%
- \global\singlec@lumnhsize = \hsize
- \global\singlec@lumnvsize = \vsize
- \hsize = \c@lumnhsize
-%
-% Compute the proper vsize based on what's already on the page
-% and the number of columns. Also change the mag factor for insertions.
-%
- \global\advance\vsize by -\ht\@partialpage
- \global\advance\vsize by -\ht\footins
- \ifvoid\footins\else \global\advance\vsize by -\skip\footins \fi
- \global\advance\vsize by -\ht\topins
- \ifvoid\topins\else \global\advance\vsize by -\skip\topins \fi
- \global\vsize = #1\vsize
- \multiply\count\footins by #1 \multiply\count\topins by #1
-}%
-%
-% When this is invoked box 255 should contain just the right amount of
-% material, whether triggered by an output routine or a change in the
-% number of columns. Because columns have to contain a whole number of
-% lines of type, we take a bit of care with balancing the heights of the
-% columns to prevent either losing material or having a very short last
-% column.
-%
-% Note: when a page ends due to \bye or \eject, box 255 will contain lotsa
-% white space, so the columns will not look balanced. To fix this use
-% \singlecolumn before ending the page.
-%
-\def\@columnsplit{%
- \splittopskip = \topskip
- \splitmaxdepth = \baselineskip
- \dimen0 = \ht255
- \divide\dimen0 by \number@fcolumns
- \begingroup % the balancing act
- \vbadness = 10000 \loop \setbox8=\copy255
- \global\setbox1 = \vsplit8 to \dimen0 \global\wd1 = \hsize
- \global\setbox3 = \vsplit8 to \dimen0 \global\wd3 = \hsize
- \ifnum\number@fcolumns>2%
- \global\setbox5 = \vsplit8 to \dimen0
- \global\wd5 = \hsize \fi
- \ifnum\number@fcolumns>3%
- \global\setbox7 = \vsplit8 to \dimen0
- \global\wd7 = \hsize \fi
- \ifdim\ht8>0pt \advance\dimen0 by 1pt \repeat
- \endgroup
- \global\setbox255 = \vbox{%
- \unvbox\@partialpage
- \ifcase\number@fcolumns \relax\or\relax\or%
- \hbox to \singlec@lumnhsize{\box1\hfil\box3}\or%
- \hbox to\singlec@lumnhsize{\box1\hfil\box3\hfil\box5}\or%
- \hbox to\singlec@lumnhsize{\box1\hfil\box3\hfil\box5\hfil\box7}\or%
- \else\relax\fi%
- }%
-}%
-\def\c@lumnoutput{%
- \@columnsplit
- \hsize = \singlec@lumnhsize % Local to the \output group.
- \vsize = \singlec@lumnvsize
- \the\previousoutput
-%
-% Now the correct vsize is the original vsize times the
-% number of columns.
-%
- \global\vsize=\number@fcolumns\singlec@lumnvsize
-}%
-\def\@@endcolumns{%
- \global\let\@ndcolumns=\relax%
- \par % Shouldn't start in horizontal mode.
- \global\output = {\global\setbox1 = \box255}%
- \pagegoal = \pagetotal
- \eject
- \global\setbox255 = \box1
- \@columnsplit
- \global\vsize = \singlec@lumnvsize
- \global\output = \expandafter{\the\previousoutput}%
- \endgroup
- \ifvoid\topins\else\topinsert\unvbox\topins\endinsert\fi
- \unvbox255
-}%
-
-\endinput
-
-@node Multiple columns, Footnotes, Margins, User definitions
-@section Multiple columns
-
-@cindex double column output
-@cindex triple column output
-@cindex quadruple column output
-@cindex multiple column output
- Eplain provides for double, triple and quadruple
-column output: you just say
-@code{\doublecolumns},
-@findex doublecolumns
-@code{\triplecolumns}
-@findex triplecolumns
-or @code{\quadcolumns}
-@findex quadcolumns
-and from that point on, the manuscript will be
-set in columns. If you want to go back to one column, say
-@code{\singlecolumn}.
-@findex singlecolumn
-
- The columns macros insert the value of the glue parameter
-@code{\abovecolumnskip}
-@findex abovecolumnskip
-before the multi-column text, and the value of the glue parameter
-@code{\belowcolumnskip}
-@findex belowcolumnskip
-after it. The default value for both of these parameters is
-@code{\bigskipamount}, i.e., one linespace.
-
- The columns are separated by the value of the dimen parameter
-@code{\gutter}.
-@findex gutter
-The default value for @code{\gutter} is two picas.
-
- The macros take into account only the insertion classes
-@cindex insertion classes
-defined by plain @TeX{}, namely, footnotes and @code{\topinsert}s. If
-you have defined additional insertion classes, you will need to change
-the macros which implement multi-column mode. Furthermore, the insertions
-do not respect the column widths; if you want them to, you have to
-change the way your output routine works. (Eplain uses whatever the
-current output routine is; it is not tied to @code{\plainoutput}.)
-@findex plainoutput
-
-@xx: \columnfill
-@xx: \singlecolumn to balance columns
-@xx: footnote/topinsert width of whole page
-@xx: \vfootnote resets \parskip
diff --git a/Master/texmf-dist/source/eplain/base/test/hlcite.tex b/Master/texmf-dist/source/eplain/base/test/hlcite.tex
deleted file mode 100644
index ec27c4e8fbe..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/hlcite.tex
+++ /dev/null
@@ -1,55 +0,0 @@
-\input ../eplain
-%\enablehyperlinks[nolinks]
-%\enablehyperlinks[pdftex]
-%\enablehyperlinks[dvipdfm]
-\enablehyperlinks
-
-\ifpdf
- \pdfpagewidth=8.5in
- \pdfpageheight=11in
-\fi
-
-\beginpackages
- \usepackage{color}
-\endpackages
-
-\hldestopts[bib]{raise=\ht\strutbox}
-\hlopts![cite]{bstyle=U}
-
-
-% Bibliography in front of the text.
-
-%\beginsection{References.}\par % Title for the bibliography.
-%\bibliography{knuth,xampl} % Use knuth.bib (from Eplain) and xampl.bib
- % (from BibTeX) for the labels.
-%\bibliographystyle{plain}
-%\vfil\eject
-
-
-Two citations to Knuthian works:
- \cite[note]{surreal,concrete-math}.
-
-
-\vfil\eject
-Three citations:
- \cite[note]{surreal,article-crossref,whole-journal}.
-
-One citation:
- \cite{article-crossref}.
-
-
-% Bibliography after the text.
-
-\vfil\eject
-\beginsection{References.}\par % Title for the bibliography.
-\bibliography{knuth,xampl} % Use knuth.bib (from Eplain) and xampl.bib
- % (from BibTeX) for the labels.
-\bibliographystyle{plain}
-
-
-\bye
-
-% Local variables:
-% compile-command: "rm -f hlcite.aux hlcite.bbl && tex --interact=nonstopmode hlcite && bibtex hlcite && tex --interact=nonstopmode hlcite && tex --interact=nonstopmode hlcite && dvipdfm -p letter hlcite"
-% compile-command: "rm -f hlcite.aux hlcite.bbl && pdftex --interact=nonstopmode hlcite && bibtex hlcite && pdftex --interact=nonstopmode hlcite && pdftex --interact=nonstopmode hlcite"
-% End:
diff --git a/Master/texmf-dist/source/eplain/base/test/hlfoot.tex b/Master/texmf-dist/source/eplain/base/test/hlfoot.tex
deleted file mode 100644
index 01fae52386b..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/hlfoot.tex
+++ /dev/null
@@ -1,47 +0,0 @@
-\input ../eplain
-%\enablehyperlinks[nolinks]
-%\enablehyperlinks[pdftex]
-%\enablehyperlinks[dvipdfm]
-\enablehyperlinks
-
-\ifpdf
- \pdfpagewidth=8.5in
- \pdfpageheight=11in
-\fi
-
-\beginpackages
- \usepackage{color}
-\endpackages
-
-% Set \normalbaselineskip for the sake of \hldestfootraise
-\everyfootnote = {\sevenrm \normalbaselineskip=9pt \normalbaselines}
-
-\hlopts![foot]{bstyle=U}
-\hldesttype[foot]{fitbh}
-\hlopts![footback]{bstyle=D,bdash=1 4}
-\hldesttype[footback]{fith}
-
-
-This\numberedfootnote{Footnote to `This'.} is a
-sentence\footnote*{Footnote to `sentence'.} with
-footnotes\footnote{**}{Footnote to `footnotes'.}.
-
-\medskip
-Now we say
-\verbatim\let\footnote=\numberedfootnote|endverbatim
-\let\footnote=\numberedfootnote\ and look what we get:
-
-This\footnote{Another footnote to `This'.} is another
-sentence\footnote{Another footnote to `sentence'.} with
-footnotes\footnote{Another footnote to `footnotes'.}.
-
-\vfil\eject
-Second page.
-
-
-\bye
-
-% Local variables:
-% compile-command: "tex --interact=nonstopmode hlfoot.tex && dvipdfm -p letter hlfoot.dvi"
-% compile-command: "pdftex --interact=nonstopmode hlfoot.tex"
-% End:
diff --git a/Master/texmf-dist/source/eplain/base/test/hlidx.mst b/Master/texmf-dist/source/eplain/base/test/hlidx.mst
deleted file mode 100644
index 1f0813b806b..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/hlidx.mst
+++ /dev/null
@@ -1,2 +0,0 @@
-delim_n "; "
-delim_r "\\thinspace--\\allowbreak\\thinspace "
diff --git a/Master/texmf-dist/source/eplain/base/test/hlidx.tex b/Master/texmf-dist/source/eplain/base/test/hlidx.tex
deleted file mode 100644
index 2d177a9c6d2..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/hlidx.tex
+++ /dev/null
@@ -1,138 +0,0 @@
-\input ../eplain
-
-% If you uncomment the optional arg, index hyperlinks will point to exact
-% locations of terms, but MakeIndex will regard _all_ index entries as distinct.
-% This can be partially cured by piping hlidx.idx through `util/idxuniq' script
-% before feeding it to MakeIndex (see the first compile-command at the end of
-% this file).
-\enablehyperlinks%[idxexact]
-%\enablehyperlinks[nolinks]
-%\enablehyperlinks[pdftex]
-%\enablehyperlinks[dvipdfm]
-
-\ifpdf
- \pdfpagewidth=8.5in
- \pdfpageheight=11in
-\fi
-
-\beginpackages
- \usepackage{color}
-\endpackages
-
-\headline={\hrulefill}
-
-% Try to redefine the delimiters.
-\setidxpagelistdelimiter{; }
-\setidxpagerangedelimiter{\thinspace--\allowbreak\thinspace}
-
-% Underline and italisize a page number / page range, taking care not to
-% underline `--' in page range like `1--3'.
-%
-% Note that this definition is not enough if you don't use hyperlinks in index
-% (i.e., if you pass `idxnone' to \enablehyperlinks). Then page lists
-% like `1, 2' are not broken up by \hlidxpage, and the entire list may
-% be passed, which will be be italicized and underlined without being
-% split up. You can see the effect by commenting out
-% \enablehyperlinks above. In that case, you will have to do a more
-% sophisticated parsing using both \idxparserange and \idxparselist
-% (like in \@hlidxgetpages).
-\def\ituline#1{%
- {\it
- \idxparserange{#1}%
- \ifx\idxpagei\empty
- \underbar{#1}%
- \else
- \underbar{\idxpagei}\idxpagerangedelimiter\underbar{\idxpageii}%
- \fi}%
-}
-
-
-\count0=-1
-
-% i
-\topglue12pt
-% \indent is needed to place hyperlink destination at the beginning of the first
-% line of the paragraph instead of vertical mode above the paragraph.
-\indent
-\sidx[pagemarkup=ituline]{truth}[definition of]
-Definition of truth, page~i.
-
-Another
-\sidx[pagemarkup=ituline]{truth}[definition of]
-definition of truth on page~i.
-\vfil\eject
-
-% ii
-\topglue24pt
-\indent
-\sidx[pagemarkup=ituline]{truth}[definition of]
-Definition of truth, page~ii.
-\vfil\eject
-
-% iii
-No index entries, page~iii.
-\vfil\eject
-
-\count0=1
-
-% 1
-\topglue36pt
-\indent
-\sidx[pagemarkup=ituline]{truth}[definition of]
-Definition of truth, page~1.
-\vfil\eject
-
-% 2
-\topglue24pt
-Beginning of
-\sidx[begin,pagemarkup=ituline]{truth}[definition of]
-definition of truth, page~2.
-\vfil\eject
-
-% 3
-\indent
-\sidx[pagemarkup=ituline]{truth}[definition of]
-Definition of truth that comes whithin an explicit range, page~3.
-\vfil\eject
-
-% 4
-End of
-\sidx[end]{truth}[definition of]
-definition of truth, page~4.
-\vfil\eject
-
-% 5
-\indent\idxname{Adrien-Marie}{Legendre} (September~18, 1752~-- January~10, 1833)
-was a French mathematician.
-
-Legendre integrals
-\sidx{Legendre\idxnameseparator Adrien-Marie!functions!F(k, phi), E(k,
-phi)@$F(k,\varphi)$, $E(k,\varphi)$}
-$F(k,\varphi)$ and $E(k,\varphi)$ are called {\it complete\/} when
-$\varphi=\pi/2$, in which case they are denoted by
-\sidx[pagemarkup=ituline]{Legendre\idxnameseparator Adrien-Marie!functions!K(k),
-E(k)@${\bf K}(k)$, ${\bf E}(k)$}
-${\bf K}(k)$ and ${\bf E}(k)$.
-
-\indent
-\sidx{semantic theory of truth@\leavevmode\hldest{}{}{idx:TSTT}semantic theory of truth}
-Semantic theory of truth was developed by Polish logician Alfred Tarski in the
-1930s.
-
-
-\sidx[seealso]{truth}[definition of]{\hlstart{}{}{idx:TSTT}semantic theory of
-truth\hlend}
-
-
-{\baselineskip=36pt
-\noindent\bf Index\par}
-
-\hookaction{beginindex}{\singlecolumn}
-\readindexfile{i}
-
-\bye
-
-% Local variables:
-% compile-command: "(cd .. && make eplain.tex) && rm -f hlidx.aux hlidx.ind hlidx.idx && tex --interact=nonstopmode hlidx && cat hlidx.idx | ../util/idxuniq | makeindex -s hlidx.mst > hlidx.ind && tex --interact=nonstopmode hlidx && dvipdfm -p letter hlidx.dvi"
-% compile-command: "(cd .. && make eplain.tex) && rm -f hlidx.aux hlidx.ind hlidx.idx && pdftex --interact=nonstopmode hlidx && makeindex -s hlidx.mst hlidx && pdftex --interact=nonstopmode hlidx"
-% End:
diff --git a/Master/texmf-dist/source/eplain/base/test/hlink.tex b/Master/texmf-dist/source/eplain/base/test/hlink.tex
deleted file mode 100644
index 939a552ad3c..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/hlink.tex
+++ /dev/null
@@ -1,144 +0,0 @@
-\input ../eplain
-%\enablehyperlinks[nolinks]
-%\enablehyperlinks[pdftex]
-%\enablehyperlinks[dvipdfm]
-\enablehyperlinks
-
-\beginpackages
-\usepackage[dvipsnames]{color}
-\endpackages
-
-\ifpdf
- \pdfpagewidth=8.5in
- \pdfpageheight=11in
-\fi
-
-\def\sectionword{Section}%
-\newcount\sectioncount
-\def\beginsection#1\par{%
- \par
- \advance\sectioncount by1
- {\normalbaselineskip=3pc \normalbaselines
- \noindent\definexref{sec\the\sectioncount}{\the\sectioncount}{section}%
- {\bf Section~\the\sectioncount} #1\par}
-}%
-
-\def\deriv#1/#2{{{d#1}\over d#2}}%
-\def\vec#1#2{#1_1,#1_2,\ldots,#1_{#2}}%
-\def\cdotfill{\cleaders\hbox to 1em{\hss$\cdot$\hss}\hfill}%
-
-% Set defaults for hyperlink options.
-\hlopts{bstyle=U}% underlined border
-\hlopts{bwidth=2}%
-% Make \xrdef destinations make pages fit in the screen.
-\hldesttype[xrdef]{fit}% fit page
-% Set hyperlink options for various kinds of hyperlinks.
-\hlopts![ref]{bstyle=D,bdash=3,hlight=I}% dash border, invert box hlight
-\hlopts[ref]{bcolor=1 0 0,bwidth=1}% add options to the current list
-\hlopts![eq]{bcolor=0 1 0,hlight=O}% invert border hlight
-\hlopts![xref]{bstyle=I,bcolor=0 0 1,hlight=P,bwidth=4}% inset border, inset hlight
-
-
-Ordered list:
-\numberedlist
-\li[li1] Item 1
-\li[li2] \xrdef{li2:pg}Item 2
- \numberedlist
- \li[li2.a] subitem 2.a
- \li[li2.b] subitem 2.b
- \endnumberedlist
-\li Item 3
-\endnumberedlist
-
-Reference to \ref{li1}. Reference to {\let\reftie.\refn[item~\refn{li2}]{li2.b}}.
-
-\vskip\abovelistskipamount
-Unordered list:
-\unorderedlist
-\li[uli1] Item 1
-\li Item 2
- \unorderedlist
- \li[uli2.a] subitem 2.a
- \li subitem 2.b
- \endunorderedlist
-\endunorderedlist
-
-Refereneces to \ref[\sevenrm\lbrack dvipdfm will not make the \blackbox\ part of
-the link\rbrack]{uli1} and~\refn{uli2.a}.
-
-
-\beginsection \xrdef{sec1:pg}
-
-Reference to \ref{sec1} and forward reference to \ref{sec2}.
-
-
-
-\beginsection
-
-References to \refs{sec1} and~\refn{sec2}.
-
-\indent\ref{sec3} will start on \xref{sec3:pg}.
-$$\|A\| = \sup_{x\ne0} { \|Ax\| \over \|x\| }. \eqdef{eq1}$$
-Reference to \eqref{eq1}.
-$$\|A\| \ge {\|Ax\| \over \|x\|}. \eqsubdef{}$$
-Reference to \eqref[subequation]{}.
-$$\|Ax\| \le \|A\| \cdot \|x\|. \eqsubdef{subeq1.2}$$
-Reference to \eqref[subequation]{subeq1.2}. One more reference to
-\eqref[subequation]{}.
-
-\vfil\eject
-
-
-
-Forward reference to \eqref[equation]{subeq2.1}.
-$$\openup\jot
-\eqalignno{\eqdefn{eq2}% fake definition for \eqsubdef's to work
- \deriv x/t &= 3x-2y,&\eqsubdef{subeq2.1}\cr
- \deriv y/t &= 2x-y.&\eqsubdef{subeq2.2}\cr
-}$$
-References to equations \eqref{eq2}, \eqref{subeq2.1} and~\eqref{subeq2.2}.
-
-$$\hldestopts[eq]{raise=4.5\normalbaselineskip}
-\openup\jot
-\left.\,\eqalign{
- \deriv x_1/t &= f_1(t,\vec xn),\cr
- \deriv x_2/t &= f_2(t,\vec xn),\cr
- \omit\span\omit\strut\cdotfill\cr
- \deriv x_n/t &= f_n(t,\vec xn).\cr
-}\,\right\}\eqdef{eq3}$$
-Another notation for the \eqref[system]{eq3}:
-$$\deriv x_i/t=f_i(t,\vec xn)\quad
-(i=1,2,\ldots,n).\eqdef[\hbox{$\eqrefn{eq3}^*$}]{}$$
-Reference to \eqref[system]{}.
-
-Subequations in \verbatim\displaylines|endverbatim:
-$$\openup\jot
-\displaylines{
- \eqsubdefn{eq3*.1}
- \hfill\deriv x_2/t=f_2(t,\vec xn),\hfill\llap{\eqsubdef{eq3*.2}}\cr
- \hfill\deriv x_3/t=f_3(t,\vec xn).\hfill\llap{\eqsubdef{eq3*.3}}\cr
-}$$
-References to \eqref{eq3*.1}, \eqref{eq3*.2} and~\eqref{eq3*.3}.
-
-\hloff[eq,]
-One more reference to \eqref[system]{}.
-\hlon
-And one more reference to \eqref[system]{}.
-
-\beginsection \xrdef{sec3:pg}
-
-\definecolor{mycolor}{rgb}{0,0,1}
-\hlopts{colormodel=,color=mycolor}
-
-Reference to \ref[item]{li2} on {\hloff\xref{li2:pg}}.
-
-\indent\ref{sec1} started on {\def\xrefpageword{page~}\xref[title]{sec1:pg}}.
-
-
-
-\bye
-
-% Local variables:
-% compile-command: "(cd .. && make eplain.tex) && rm -f hlink.aux && tex --interact=nonstopmode hlink.tex && tex --interact=nonstopmode hlink.tex && dvipdfm -p letter hlink.dvi"
-% compile-command: "(cd .. && make eplain.tex) && rm -f hlink.aux && pdftex --interact=nonstopmode hlink.tex && pdftex --interact=nonstopmode hlink.tex"
-% End:
diff --git a/Master/texmf-dist/source/eplain/base/test/ian.tex b/Master/texmf-dist/source/eplain/base/test/ian.tex
deleted file mode 100644
index 95c254c6546..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/ian.tex
+++ /dev/null
@@ -1,28 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-\vsize 10cm \hsize 7cm
-
-Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
-blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
-blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
-blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah.
-
-\doublecolumns
-
-Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
-blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
-blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
-blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
-blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
-blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
-blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
-blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
-blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah.
-
-\singlecolumn
-
-Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah.
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/index.tex b/Master/texmf-dist/source/eplain/base/test/index.tex
deleted file mode 100644
index 0a039dec9c2..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/index.tex
+++ /dev/null
@@ -1,36 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-\indexproofingtrue
-\hsize = 5in
-
-\def\defn#1{{\sl #1\/}}
-\def\title#1{{\it #1\/}}
-
-\idx{term}
-\idxname{K. Elizabeth}{Tachikawa}
-\idxmarked\title{Strange Angels}
-\idxsubmarked{Anderson, Laurie}\defn{Strange Angels}
-\idx[begin]{range} starts.
-\sidx[begin]{home}
-
-\vfill\eject
-
-\sidx[pagemarkup=defn]{truth}
-\sidxname{Megan Anne}{Haney}
-
-\sidx[end]{home}
-\idx[end]{range} ends.
-
-\sidx[see]{beauty}[truthful]{Anderson, Laurie}
-\sidxmarked[seealso]\defn{Strange Angels}{\defn{Home of the Brave}}
-
-
-\leftline{\bf Index}
-
-\def\idxpreface{These words precede the index.}
-
-\readindexfile{i}
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/jan.tex b/Master/texmf-dist/source/eplain/base/test/jan.tex
deleted file mode 100644
index b94ab34556f..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/jan.tex
+++ /dev/null
@@ -1,15 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-This gives \eqdefn{aa}
-$$1+2,\eqsubdef{op}$$
-and
-$$1+3.\eqsubdef{pp}$$
-And \eqref{aa} and \eqref{op} and \eqref{pp}.
-\bye
-
-From: deleeuw@laplace.sscnet.ucla.edu (Jan Deleeuw)
-Subject: batch mode
-To: karl@cs.umb.edu
-Date: Mon, 7 Jun 1993 20:26:22 -0700 (PDT)
diff --git a/Master/texmf-dist/source/eplain/base/test/justify.tex b/Master/texmf-dist/source/eplain/base/test/justify.tex
deleted file mode 100644
index 232a6915064..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/justify.tex
+++ /dev/null
@@ -1,106 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-{\center foo
-bar
-}
-
-% Changing \parfillskip is OK, since the macros reset it.
-%\parfillskip = .75\hsize plus .06\hsize minus .75\hsize
-\loggingall
-
-Pre-text. These should be flush left:
-{\flushleft
-Here are a few
-lines that we are
-\vadjust{\bigskip}going to take {\it literally}. (with vadjusted space now)
-And a couple more
-of them.}
-
-Now we're back to normal.
-Now we're back to normal.
-Now we're back to normal.
-Pre-text. These should be flush right:
-
-{\it \flushright
-Here are a few italic
-lines that we are
-\vadjust{\bigskip}going to take literally.
-And a couple more
-of {\bf them.}
-
-In fact, let's do two paragraphs,
-this is so much fun. No, let's make it three.
-
- For Dan
- ---{\bf k.b.}
-}
-
-Now we're back to normal.
-Now we're back to normal.
-Now we're back to normal.
-These should be centered.
-
-{\center
-Here are a few
-lines that we are
-\vadjust{\bigskip}going to take literally.
-And a couple more
-of them.}
-
-Some centered paragraphs:
-{\center
- Here is the first paragraph.
-
- Here is the second.
-
- Here is the third.
-}
-
-Now we're back to normal.
-Now we're back to normal.
-Now we're back to normal.
-These should be flush left again (two groups):
-
-{\flushleft
- Here is the first paragraph.
-
- Here is the second.
-}
-
-\blanklineskipamount = -.8\baselineskip
-{\flushleft
- Here is the first paragraph.
-
- Here is the second.
-
- Here is the third
-}
-
-We changed the amount of space between the paragraphs in the second
-group so it was less than a full blank line. Did you notice?
-
-\scrollmode
-
-{\message{Now comes a mysterious error.} \center on first line---what happens?
-centered
-}
-
-\def\title{\begingroup\center}
-\def\endtitle{\endgroup}
-
-\title
-this should be centered
-by virtue of a macro
-\endtitle
-
-Back to normal.
-
-{\center
-centered
-\message{Now there should be an error:}%
-\flushleft % error
-}
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/knuth.bib b/Master/texmf-dist/source/eplain/base/test/knuth.bib
deleted file mode 100644
index abdf6ddecfa..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/knuth.bib
+++ /dev/null
@@ -1,17 +0,0 @@
-% This file is public domain.
-
-@book{surreal,
- author = "Donald E. Knuth",
- title = "Surreal Numbers",
- year = 1974,
- publisher = "Addison-Wesley",
- address = "Reading, Massachusetts"
-}
-
-@book{concrete-math,
- author = "Ronald L. Graham and Donald E. Knuth and Oren Patashnik",
- title = "Concrete Mathematics",
- year = 1989,
- publisher = "Addison-Wesley",
- address = "Reading, Massachusetts"
-}
diff --git a/Master/texmf-dist/source/eplain/base/test/label.tex b/Master/texmf-dist/source/eplain/base/test/label.tex
deleted file mode 100644
index 348a7541711..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/label.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-% This file is public domain.
-%
-\ifx\undefined \eplain \input eplain \fi
-
-\xrdef{a1@$^ ~&_}
-\xref{a1@$^ ~&_}
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/latexcite.tex b/Master/texmf-dist/source/eplain/base/test/latexcite.tex
deleted file mode 100644
index 5ad031aa1a6..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/latexcite.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-% This file is public domain.
-%
-\documentstyle{article}
-\begin{document}
-\cite{chicago,texbook,prime-number-theorem,1234567890)(@!`['";:]|<>./?-=+_$^&}
-\cite{others,accented}
-\bibliographystyle{plain}
-\bibliography{cite}
-\end{document}
diff --git a/Master/texmf-dist/source/eplain/base/test/liang.tex b/Master/texmf-dist/source/eplain/base/test/liang.tex
deleted file mode 100644
index 975fa83d020..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/liang.tex
+++ /dev/null
@@ -1,300 +0,0 @@
-% This file is public domain.
-%
-% Test double columns with headlines, single-column material, and a
-% \topinsert.
-\ifx\undefined\eplain \input eplain \fi
-%\catcode`@=11
-%\input gcol
-%\catcode`@=12
-\magnification=\magstep1
-\parskip=10pt
-\gutter = 1pc
-\hyphenation{pour-ed}
-
-\headline = {This is the headline \hfil}
-
-{\center
- A test file for eplain
- Karl\footnote\dag{Credit in a footnote.}
-}
-
-\topinsert
-This should appear at the top of the page, since it's a topinsert.
-\endinsert
-
-Here the main document starts. It should be in double columns until
-further notice. It's all one paragraph. I am going to use Wuthering
-Heights, as usual.
-
-With that concluding word, the whole assembly,
-exalting their pilgrim's staves, rushed round me in a body; and I,
-having no weapon to raise in self-defence, commenced grappling with
-Joseph, my nearest and most ferocious assailant, for his. In the
-confluence of the multitude several clubs crossed; blows aimed at me
-fell on other sconces. Presently the whole chapel resounded with
-rappings and counter-rappings.
-
-Every man's hand was against his
-neighbour; and Branderham, unwilling to remain idle, pour\-ed forth his
-zeal in a shower of loud taps on the boards of the pulpit, which
-responded so smartly that at last, to my unspeakable relief, they woke
-me. And what was it that had suggested the tremendous tumult? What had
-played Jabes's part in the row? Merely the branch of a fir-tree that
-touched my lattice, as the blast wailed by, and rattled its dry cones
-against the panes!
-
-
-\doublecolumns
-Here the main document starts. It should be in double columns until
-further notice. It's all one paragraph. I am going to use Wuthering
-Heights, as usual.
-
-With that concluding word, the whole assembly,
-exalting their pilgrim's staves, rushed round me in a body; and I,
-having no weapon to raise in self-defence, commenced grappling with
-Joseph, my nearest and most ferocious assailant, for his. In the
-confluence of the multitude several clubs crossed; blows aimed at me
-fell on other sconces.
-
-Presently the whole chapel resounded with
-rappings and counter-rappings. Every man's hand was against his
-neighbour; and Branderham, unwilling to remain idle, pour\-ed forth his
-zeal in a shower of loud taps on the boards of the pulpit, which
-responded so smartly that at last, to my unspeakable relief, they woke
-me. And what was it that had suggested the tremendous tumult?
-
-What had played Jabes's part in the row? Merely the branch of a fir-tree that
-touched my lattice, as the blast wailed by, and rattled its dry cones
-against the panes! Here the main document starts. It should be in double columns
- until
-further notice. It's all one paragraph. I am going to use Wuthering
-Heights, as usual. With that concluding word, the whole assembly,
-exalting their pilgrim's staves, rushed round me in a body; and I,
-having no weapon to raise in self-defence, commenced grappling with
-Joseph, my nearest and most ferocious assailant, for his. In the
-confluence of the multitude several clubs crossed; blows aimed at me
-fell on other sconces. Presently the whole chapel resounded with
-rappings and counter-rappings. Every man's hand was against his
-neighbour; and Branderham, unwilling to remain idle, pour\-ed forth his
-zeal in a shower of loud taps on the boards of the pulpit, which
-responded so smartly that at last, to my unspeakable relief, they woke
-me. And what was it that had suggested the tremendous tumult?
-What had played Jabes's part in the row? Merely the branch of a fir-tree that
-touched my lattice, as the blast wailed by, and rattled its dry cones
-against the panes!
-
-\singlecolumn % an extra insert of singlecolumn
-I listened doubtingly an instant, detected the
-disturber, then turned and dozed, and dreamt again---if possible, still
-more disagreeably than before. This time I remembered I was lying in
-the oak closet, and I heard distinctly the gusty wind and the driving of
-the snow. I heard also the fir-bough repeat its teasing sound, and
-ascribed it to the right cause. But it annoyed me so much that I
-resolved to silence it, if possible; and I thought I rose and
-endeavoured to unhasp the casement. The hook was soldered into the
-staple---a circumstance observed by me when awake, but forgotten. ``I
-must stop it, nevertheless!'' I muttered, knocking my knuckles through
-the glass, and stretching an arm out to seize the importunate branch;
-instead of which, my fingers closed on the fingers of a little, icecold
-hand!
-
-\doublecolumns % an extra insert of doublecolumns
-The intense horror of nightmare came over me. I tried to draw
-back my arm, but the hand clung to it, and a most melancholy voice
-sobbed, ``Let me in---let me in!'' ``Who are you?'' I asked, struggling,
-meanwhile, to disengage myself. ``Catherine Linton,'' it replied
-shiveringly. (Why did I think of Linton? I had read Earnshaw twenty
-times for Linton.) ``I'm come home. I'd lost my way on the moor.'' As
-it spoke, I discerned, obscurely, a child's face looking through the
-window. Terror made me cruel; and finding it useless to attempt shaking
-the creature off, I pulled its wrist on to the broken pane, and rubbed
-it to and fro till the blood ran down and soaked the bedclothes. Still
-it wailed, ``Let me in!'' and maintained its tenacious gripe, almost
-maddening me with fear. ``How can I?'' I said at length. ``Let me go,
-if you want me to let you in!''
-
-With that concluding word, the whole assembly,
-exalting their pilgrim's staves, rushed round me in a body; and I,
-having no weapon to raise in self-defence, commenced grappling with
-Joseph, my nearest and most ferocious assailant, for his. In the
-confluence of the multitude several clubs crossed; blows aimed at me
-fell on other sconces. Presently the whole chapel resounded with
-rappings and counter-rappings. Every man's hand was against his
-neighbour; and Branderham, unwilling to remain idle, pour\-ed forth his
-zeal in a shower of loud taps on the boards of the pulpit, which
-responded so smartly that at last, to my unspeakable relief, they woke
-me. And what was it that had suggested the tremendous tumult? What had
-played Jabes's part in the row? Merely the branch of a fir-tree that
-touched my lattice, as the blast wailed by, and rattled its dry cones
-against the panes! I listened doubtingly an instant, detected the
-disturber, then turned and dozed, and dreamt again---if possible, still
-more disagreeably than before. This time I remembered I was lying in
-the oak closet, and I heard distinctly the gusty wind and the driving of
-the snow. I heard also the fir-bough repeat its teasing sound, and
-ascribed it to the right cause. But it annoyed me so much that I
-resolved to silence it, if possible; and I thought I rose and
-endeavoured to unhasp the casement. The hook was soldered into the
-staple---a circumstance observed by me when awake, but forgotten. ``I
-must stop it, nevertheless!'' I muttered, knocking my knuckles through
-the glass, and stretching an arm out to seize the importunate branch;
-instead of which, my fingers closed on the fingers of a little, icecold
-hand!
-
-The intense horror of nightmare came over me. I tried to draw
-back my arm, but the hand clung to it, and a most melancholy voice
-sobbed, ``Let me in---let me in!'' ``Who are you?'' I asked, struggling,
-meanwhile, to disengage myself. ``Catherine Linton,'' it replied
-shiveringly. (Why did I think of Linton? I had read Earnshaw twenty
-times for Linton.) ``I'm come home. I'd lost my way on the moor.'' As
-it spoke, I discerned, obscurely, a child's face looking through the
-window. Terror made me cruel; and finding it useless to attempt shaking
-the creature off, I pulled its wrist on to the broken pane, and rubbed
-it to and fro till the blood ran down and soaked the bedclothes. Still
-it wailed, ``Let me in!'' and maintained its tenacious gripe, almost
-maddening me with fear. ``How can I?'' I said at length. ``Let me go,
-if you want me to let you in!''
-
-With that concluding word, the whole assembly,
-exalting their pilgrim's staves, rushed round me in a body; and I,
-having no weapon to raise in self-defence, commenced grappling with
-Joseph, my nearest and most ferocious assailant, for his. In the
-confluence of the multitude several clubs crossed; blows aimed at me
-fell on other sconces. Presently the whole chapel resounded with
-rappings and counter-rappings. Every man's hand was against his
-neighbour; and Branderham, unwilling to remain idle, repoured forth his
-zeal in a shower of loud taps on the boards of the pulpit, which
-responded so smartly that at last, to my unspeakable relief, they woke
-me. And what was it that had suggested the tremendous tumult? What had
-played Jabes's part in the row? Merely the branch of a fir-tree that
-touched my lattice, as the blast wailed by, and rattled its dry cones
-against the panes! I listened doubtingly an instant, detected the
-disturber, then turned and dozed, and dreamt again---if possible, still
-more disagreeably than before. This time I remembered I was lying in
-the oak closet, and I heard distinctly the gusty wind and the driving of
-the snow. I heard also the fir-bough repeat its teasing sound, and
-ascribed it to the right cause. But it annoyed me so much that I
-resolved to silence it, if possible; and I thought I rose and
-endeavoured to unhasp the casement. The hook was soldered into the
-staple---a circumstance observed by me when awake, but forgotten. ``I
-must stop it, nevertheless!'' I muttered, knocking my knuckles through
-the glass, and stretching an arm out to seize the importunate branch;
-instead of which, my fingers closed on the fingers of a little, icecold
-hand!
-
-The intense horror of nightmare came over me. I tried to draw
-back my arm, but the hand clung to it, and a most melancholy voice
-sobbed, ``Let me in---let me in!'' ``Who are you?'' I asked, struggling,
-meanwhile, to disengage myself. ``Catherine Linton,'' it replied
-shiveringly. (Why did I think of Linton? I had read Earnshaw twenty
-times for Linton.) ``I'm come home. I'd lost my way on the moor.'' As
-it spoke, I discerned, obscurely, a child's face looking through the
-window. Terror made me cruel; and finding it useless to attempt shaking
-the creature off, I pulled its wrist on to the broken pane, and rubbed
-it to and fro till the blood ran down and soaked the bedclothes. Still
-it wailed, ``Let me in!'' and maintained its tenacious gripe, almost
-maddening me with fear. ``How can I?'' I said at length. ``Let me go,
-if you want me to let you in!''
-
-With that concluding word, the whole assembly,
-exalting their pilgrim's staves, rushed round me in a body; and I,
-having no weapon to raise in self-defence, commenced grappling with
-Joseph, my nearest and most ferocious assailant, for his. In the
-confluence of the multitude several clubs crossed; blows aimed at me
-fell on other sconces. Presently the whole chapel resounded with
-rappings and counter-rappings. Every man's hand was against his
-neighbour; and Branderham, unwilling to remain idle, repoured forth his
-zeal in a shower of loud taps on the boards of the pulpit, which
-responded so smartly that at last, to my unspeakable relief, they woke
-me. And what was it that had suggested the tremendous tumult? What had
-played Jabes's part in the row? Merely the branch of a fir-tree that
-touched my lattice, as the blast wailed by, and rattled its dry cones
-against the panes! I listened doubtingly an instant, detected the
-disturber, then turned and dozed, and dreamt again---if possible, still
-more disagreeably than before. This time I remembered I was lying in
-the oak closet, and I heard distinctly the gusty wind and the driving of
-the snow. I heard also the fir-bough repeat its teasing sound, and
-ascribed it to the right cause. But it annoyed me so much that I
-resolved to silence it, if possible; and I thought I rose and
-endeavoured to unhasp the casement. The hook was soldered into the
-staple---a circumstance observed by me when awake, but forgotten. ``I
-must stop it, nevertheless!'' I muttered, knocking my knuckles through
-the glass, and stretching an arm out to seize the importunate branch;
-instead of which, my fingers closed on the fingers of a little, icecold
-hand!
-
-The intense horror of nightmare came over me. I tried to draw
-back my arm, but the hand clung to it, and a most melancholy voice
-sobbed, ``Let me in---let me in!'' ``Who are you?'' I asked, struggling,
-meanwhile, to disengage myself. ``Catherine Linton,'' it replied
-shiveringly. (Why did I think of Linton? I had read Earnshaw twenty
-times for Linton.) ``I'm come home. I'd lost my way on the moor.'' As
-it spoke, I discerned, obscurely, a child's face looking through the
-window. Terror made me cruel; and finding it useless to attempt shaking
-the creature off, I pulled its wrist on to the broken pane, and rubbed
-it to and fro till the blood ran down and soaked the bedclothes. Still
-it wailed, ``Let me in!'' and maintained its tenacious gripe, almost
-maddening me with fear. ``How can I?'' I said at length. ``Let me go,
-if you want me to let you in!''
-
-\singlecolumn
-Now we should be typesetting in a single column, i.e., normally. The
-fingers relaxed; I snatched mine through the hole, hurriedly piled the
-books up in a pyramid against it, and stopped my ears to exclude the
-lamentable prayer. I seemed to keep them closed above a quarter of an
-hour; yet the instant I listened again, there was the doleful cry
-moaning on! ``Begone!'' I shouted; ``I'll never let you in---not if you
-beg for twenty years.'' ``It is twenty years,'' mourned the
-voice---``twenty years. I've been a waif for twenty years!'' Thereat
-began a feeble scratching outside, and the pile of books moved as if
-thrust forward. I tried to jump up, but could not stir a limb, and so
-yelled aloud in a frenzy of fright. To my confusion, I discovered the
-yell was not ideal. Hasty footsteps approached my chamber door; somebody
-pushed it open with a vigorous hand, and a light glimmered through the
-squares at the top of the bed. I sat shuddering yet, and wiping the
-perspiration from my forehead. The intruder appeared to hesitate, and
-muttered to himself. At last he said in a half-whisper, plainly not
-expecting an answer, ``Is any one here?'' I considered it best to
-confess my presence, for I knew Heathcliff's accents, and feared he
-might search further if I kept quiet. With this intention I turned and
-opened the panels. I shall not soon forget the effect my action
-produced. Heathcliff stood near the entrance, in his shirt and
-trousers, with a candle dripping over his fingers, and his face as white
-as the wall behind him. The first creak of the oak startled him like an
-electric shock. The light leaped from his hold to a distance of some
-feet, and his agitation was so extreme that he could hardly pick it up.
-``It is only your guest, sir,'' I called out, desirous to spare him the
-humiliation of exposing his cowardice further. ``I had the misfortune
-to scream in my sleep, owing to a frightful nightmare. I'm sorry I
-disturbed you.''
-\end
-From: Jun-Jih Liang <cip224@wpax01.physik.uni-wuerzburg.de>
-Subject: A vbox underfull while using eplain.tex
-To: karl@cs.umb.edu
-Date: Wed, 10 Nov 93 11:47:39 MEZ
-
-Dear Karl:
-
- I'd like to appreciate your kindness to put the "eplain.tex" in the public
-domain so that I can switch \doublecolumns and \singlecolumn in an article.
-After a little change in the file "column.tex" which is located at the
-subdirectory "/eplain-2.3/test" I have got an unexpected output. There is a
-"verticle underfull (Underfull \vbox ...)" at the first page. What I've done at
-the file are:
-
-1) magnify the text font at 1 step (\magnification=\magstep1)
-2) add an extra "\singlecolumn" and "\doublecolumns" after the first
- "doublecolumn".
-
- Would you please tell me how can I get rid of the verticle underfull and
-get the normal single- and doublecolumns output at the same page? Thank you for
-your helpness in advance!
-
- Sincerely,
- Jun-Jih Liang
-
-P.S. In the following two mails I attach the file "column.tex" which has
-changed by me in the first and a Postcript formated "column.ps" which is
-transformed from "column.dvi" in the second.
-
-
-
diff --git a/Master/texmf-dist/source/eplain/base/test/list.tex b/Master/texmf-dist/source/eplain/base/test/list.tex
deleted file mode 100644
index 68775b3d822..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/list.tex
+++ /dev/null
@@ -1,90 +0,0 @@
-% This file is public domain.
-%
-% Test file for lists.
-%
-\ifx\undefined\eplain \input eplain \fi
-
-{\parindent = 0pt
- \parskip = .5\baselineskip
-\unorderedlist
- \li hello there
-
- This item has two paragraphs since we want to see if it
- works anywhere, and of course we want the paragraphs to be long.
-
- \li We did this list with zero parindent and nonzero parskip.
-\endunorderedlist
-}
-
-\unorderedlist
- \li hello there
-
- This item has two paragraphs since we want to see if it
- works anywhere, and of course we want the paragraphs to be long.
-
- \li second item
- \numberedlist
- \li nested
- \li and again.
-
- This item has two paragraphs, also, since we want to see if it
- works anywhere, and of course we want the paragraphs to be long.
-
- \li and again
- \numberedlist
- \li I am going three-level with you.
- \endnumberedlist
- \unorderedlist
- \li I'm not.
-
- This item has two paragraphs, also, since we want to see if
- it works anywhere, and of course we want the paragraphs to
- be long.
-
- In fact, maybe we better make it three paragraphs. What
- will happen then? This should tell us.
-
- \endunorderedlist
- \endnumberedlist
-\endunorderedlist
-
-This is a paragraph between the lists. It should be indented. But we'll
-make it go on for more than one line, so we'll be able to see where the
-left margin is.
-
-\numberedlist
- \li hello there
-
- This item has two paragraphs. Isn't that annoying?
- In fact, the second paragraph has more than one line, at least
- I'm going to make it long enough so that that is true---I hope.
-
- \li second item
- \numberedlist
- \li nested
- \li and again
- \li and again
- \numberedlist
- \li I am going three-level with you.
- \endnumberedlist
- \unorderedlist
- \li I'm not.
- \endunorderedlist
- \endnumberedlist
-\endnumberedlist
-
-\listleftindent = 4pc
-\unorderedlist
-\li A shorter list, but with a bigger indent.
-\numberedlist \li A nested list.
-\endnumberedlist
-\li The second item.
-\endunorderedlist
-
-A list with an xref label:
-\numberedlist
-\li[listitem] This is the first.
-\endnumberedlist
-
-And now we can refer to that item: \xrefn{listitem}.
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/listing.tex b/Master/texmf-dist/source/eplain/base/test/listing.tex
deleted file mode 100644
index 60ae74c9ef3..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/listing.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-\listing{verbatim.tex}
-
-\let\setuplistinghook = \linenumberedlisting
-\listing{verbatim.tex}
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/logo.tex b/Master/texmf-dist/source/eplain/base/test/logo.tex
deleted file mode 100644
index 5b137a56c46..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/logo.tex
+++ /dev/null
@@ -1,20 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-\xspaceskip = 2em
-Sentence-ending \TeX. And sentence \TeX\ middle. Sentence.
-
-\LaTeX
-
-\AMSTeX
-
-\LAMSTeX
-
-\BibTeX
-
-\MF
-
-\SLITEX
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/loop.tex b/Master/texmf-dist/source/eplain/base/test/loop.tex
deleted file mode 100644
index 7f6b7bd4e89..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/loop.tex
+++ /dev/null
@@ -1,20 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-\def\iterate{%
- \let\next\relax
- \body
- \let\next\iterate
- \fi
- \next
-}
-
-\count255 = 5
-\loop
- loop iteration \number\count255 %\par
- \ifnum\count255<3 \else
- \advance\count255 by -1
-\repeat
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/loopnext.tex b/Master/texmf-dist/source/eplain/base/test/loopnext.tex
deleted file mode 100644
index 8d77b8622bf..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/loopnext.tex
+++ /dev/null
@@ -1,21 +0,0 @@
-% This file is public domain.
-%
-% Date: Tue, 2 May 2000 17:27:38 -0400
-% From: "Peter Kabal" <kabal@ece.mcgill.ca>
-% To: <karl@cs.umb.edu>
-% Subject: eplain interaction with TeXdraw
-%
-% A TeXdraw user alerted me to the fact that the TeXdraw routines gave a
-% warning message when used together with eplain. It seems that eplain
-% defines \iterate
-% differently than plain tex. Using plain TeX, there is no problem, but using
-% eplain one there is.
-
-\input eplain
-
-\input texdraw
-\btexdraw
- \lpatt(0.1 0.1)
-\etexdraw
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/mag.tex b/Master/texmf-dist/source/eplain/base/test/mag.tex
deleted file mode 100644
index 8704c008996..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/mag.tex
+++ /dev/null
@@ -1,14 +0,0 @@
-% This file is public domain.
-%
-% \magnification=1200
-\input eplain.tex
-\paperheight=11truein
-\paperwidth=8.5truein
-\leftmargin=2.5truecm
-\rightmargin=2.5truecm
-\topmargin=2.5truecm
-\bottommargin=2.5truecm
-
-This is a test
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/makecol.tex b/Master/texmf-dist/source/eplain/base/test/makecol.tex
deleted file mode 100644
index 4c0379a703d..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/makecol.tex
+++ /dev/null
@@ -1,17 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-Should have two columns with 1--3 in the first, and 4--6 in the second.
-
-\loggingall
-
-\makecolumns 6/2:
-one
-two
-three
-four
-five
-six
-I should be after the table.
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/margin.tex b/Master/texmf-dist/source/eplain/base/test/margin.tex
deleted file mode 100644
index 8275e543326..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/margin.tex
+++ /dev/null
@@ -1,68 +0,0 @@
-% This file is public domain.
-%
-\input marg
-
-\headline = {headline with descender: p\hfil}
-\parindent = 0pt
-
-% Assigning to \topskip increases the space at the top of the page,
-% between the headline and the text.
-%
-%\topskip = .5in
-
-
-\topmargin = 3in \leftmargin = 3in
-\bottommargin = 3in \rightmargin = 3in
-
-This is the first line of text. The top of it should be 3in from the
-top of the paper.
-\vfill
-This is in the middle. The left margin should be three inches, and so
-should the right margin (on the whole page, not just here, of course).
-\vfill
-The last line's baseline should be 3in from the bottom.
-(This page tested assignments that increase the margins.)
-\eject
-
-
-\advancetopmargin by -1in \advanceleftmargin by -1in
-\advancebottommargin by -1in \advancerightmargin by -1in
-
-This is the first line of text. The top of it should be 2in from the
-top of the paper.
-\vfill
-This is in the middle. The left and right margins should be two inches
-each.
-\vfill
-The last line's baseline should be 2in from the bottom.
-(This page tested advances that decreased the margins.)
-\eject
-
-
-\topmargin = .5in \leftmargin = .5in
-\bottommargin = .5in \rightmargin = .5in
-
-This is the first line of text. The top of it should be .5in from the
-top of the paper.
-\vfill
-This is in the middle. The left and right margins should be .5in each,
-just as you might expect by now, if you've been reading.
-\vfill
-The last line's baseline should be .5in from the bottom.
-(This page tested assignments that decreased the margins.)
-\eject
-
-
-\advancetopmargin by 1in \advanceleftmargin by 1in
-\advancebottommargin by 1in \advancerightmargin by 1in
-
-This is the first line of text. The top of it should be 1.5in from the
-top of the paper.
-\vskip0pt plus1filll
-I bet you can guess what the left and right margins should be: yup,
-1.5in. Let's make this line a little longer, so it will actually hit
-the margin.
-\vskip0pt plus1filll
-The last line's baseline should be 1.5in from the bottom.
-(This page tested assignments that increased the margins.)
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/matrix.tex b/Master/texmf-dist/source/eplain/base/test/matrix.tex
deleted file mode 100644
index 4c966c312b4..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/matrix.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-% This file is public domain.
-%
-\ifx\undefined\eplain \input eplain \fi
-
-This tests matrix inside eqalignno with leftdisplays.
-
-% $$\eqalignno{
-% \matrix{a \cr b\cr c} & = 1 & 1 \cr
-% }$$
-
-\loggingall
-
-\leftdisplays
-$$\eqalignno{
- \matrix{a \cr b\cr c} & = 1 & 1 \cr
-}$$
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/mdisplay.tex b/Master/texmf-dist/source/eplain/base/test/mdisplay.tex
deleted file mode 100644
index 96ed8543b9c..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/mdisplay.tex
+++ /dev/null
@@ -1,215 +0,0 @@
-% This file is public domain.
-%
-% Test math displays.
-%
-\ifx\undefined\eplain \input eplain \fi
-
-%\loggingall
-
-A simple one, done with plain, for comparison (it should come out
-centered). Because of the way that \TeX's modes work, you should never
-leave a blank line (i.e., cause a par command) before a display. When
-\TeX\ sees a \$ in vertical mode, it switches to horizontal mode; but
-then when the display starts, it goes back to vertical mode, thus
-causing an extraneous blank line before the display. (Plain \TeX\ sets
-abovedisplayskip to about a baselineskip, so you are going to get one
-blank line from that (unless the line above the display is short, in
-which case aboveshortdisplayskip is used, which is 3pt or some such);
-but if a par intervenes between the end of the paragraph and the
-beginning of the display, you get a second one.)
-$$x = y + z$$
-
-After a centereddisplays:
-\centereddisplays
-$$d+e+f$$
-
-Now starting leftdisplays.
-\leftdisplays
-
-No equation number:
-$$A = B + C$$
-
-Do another leftdisplays.
-\leftdisplays
-$$a+n=m$$
-
-Equation number on right:
-$$D = E + F\eqno (r)$$
-
-Equation number on left:
-$$G = H + I\leqno (l)$$
-
-Using eqdef:
-$$J = K + L\eqdef{hello}$$
-
-Here is one done with displaylines:
-$$\displaylines{x=1\cr}$$
-
-Let's do those again, indented by one inch plus the paragraph indentation:
-{\leftdisplayindent = 1in
- No equation number:
- $$A = B + C$$
-
- Equation number on right:
- $$D = E + F\eqno (r)$$
-
- Equation number on left:
- $$G = H + I\leqno (l)$$
-
- Using eqdef:
- $$J = K + L\eqdef{hello}$$
-
- Here is one done with displaylines:
- $$\displaylines{x=1\cr}$$
-}
-
-\hrule
-\smallskip
-The rule above just makes it easier to see the margins.
-
-Another displaylines, this one should end up on the right.
-$$\displaylines{\hfill y=2\cr}$$
-
-A displaylines with an eqno:
-$$\displaylines{x=1 \eqno{d}\cr}$$
-
-A displaylines with an eqdef:
-$$\displaylines{x=1 \eqdef{eqdef-displ}\cr}$$
-
-{\leftskip = 14pt
-An indented displaylines with an eqdef:
-$$\displaylines{x=1 \eqdef{eqdef-displ}\cr}$$
-
-}
-
-Here is one with done with eqalign (the ='s should line up):
-$$\eqalign{
- a+b&=c\cr
- dq+er&=f\cr
-}$$
-
-An eqalign with a noalign inside:
-$$\eqalign{
- a+b&=c\cr
- g+h&=i\cr
-}$$
-
-And one with eqalignno:
-$$\eqalignno{
- a+b&=c&(1)\cr
- d+e&=f&(1*)\cr
- g+h&=i&\eqdef{eqdef-2}\cr
-}$$
-
-An eqalignno with a noalign inside:
-$$\eqalignno{
- a+b&=c&(1)\cr
-\noalign{and}
- g+h&=i&\eqdef{eqdef-2}\cr
-}$$
-
-And one (indented more) with leqalignno:
-{\leftdisplayindent = 1in
-$$\leqalignno{
- a+b&=c&(1)\cr
- dt+eg&=f&(1*)\cr
- g+h&=i&\eqdef{eqdef-3}\cr
-}$$
-}
-
-A cases, from p.175 of the TeXbook.
-$$
- |x| = \cases{x, &if $x\ge0$;\cr
- -x, &otherwise.\cr
-}$$
-
-A pmatrix, from p.176.
-$$\pmatrix{
- x-\lambda&1&0\cr
- 0&x-\lambda&1\cr
- 0&0&x-\lambda\cr
-}$$
-
-
-The rule below just makes it easier to see the margins.
-\smallskip
-\hrule
-\bigskip
-
-Back to centered displays now.
-\centereddisplays
-
-No equation number:
-$$A = B + C$$
-
-Equation number on right:
-$$D = E + F\eqno (r)$$
-
-Equation number on left:
-$$G = H + I\leqno (l)$$
-
-Using eqdef:
-$$J = K + L\eqdef{hello}$$
-
-Here is one done with displaylines:
-$$\displaylines{x=1\cr}$$
-
-\hrule
-\smallskip
-The rule above just makes it easier to see the margins.
-
-Another displaylines, this one should end up on the right.
-$$\displaylines{\hfill y=2\cr}$$
-
-Here is one with done with eqalign (the ='s should line up):
-$$\eqalign{
- a+b&=c\cr
- dq+er&=f\cr
-}$$
-
-And one with eqalignno:
-$$\eqalignno{
- a+b&=c&(1)\cr
- d+e&=f&(1*)\cr
- g+h&=i&\eqdef{eqdef-2}\cr
-}$$
-
-An eqalignno with a noalign inside:
-$$\eqalignno{
- a+b&=c&(1)\cr
-\noalign{and}
- g+h&=i&\eqdef{eqdef-2}\cr
-}$$
-
-And one (indented more) with leqalignno:
-{\leftdisplayindent = 1in
-$$\leqalignno{
- a+b&=c&(1)\cr
- dt+eg&=f&(1*)\cr
- g+h&=i&\eqdef{eqdef-3}\cr
-}$$
-}
-
-The rule below just makes it easier to see the margins.
-\smallskip
-\hrule
-\bigskip
-
-
-A cases, from p.175 of the TeXbook.
-$$
- |x| = \cases{x, &if $x\ge0$;\cr
- -x, &otherwise.\cr
-}$$
-
-A pmatrix, from p.176.
-$$\pmatrix{
- x-\lambda&1&0\cr
- 0&x-\lambda&1\cr
- 0&0&x-\lambda\cr
-}$$
-
-Now after a second centereddisplays:
-\centereddisplays
-$$a + b = c$$
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/names.tex b/Master/texmf-dist/source/eplain/base/test/names.tex
deleted file mode 100644
index b996738a63a..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/names.tex
+++ /dev/null
@@ -1,21 +0,0 @@
-% This file is public domain.
-%
-\input texnames.sty
-
-\parskip = \baselineskip
-\nopagenumbers
-
-\def\test{%
- \AMSTeX\par
- \BibTeX\par
- \LAMSTeX\par
- \LaTeX\par
- \MF\par
- \SLiTeX\par
-}
-
-\rm \test
-\it \test
-\bf \test
-\sl \test
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/noarrow.tex b/Master/texmf-dist/source/eplain/base/test/noarrow.tex
deleted file mode 100644
index f0379f7f813..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/noarrow.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-% This file is public domain.
-%
-\let\noarrow = t
-\input eplain
-
-\show\commdiag
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/nobib.tex b/Master/texmf-dist/source/eplain/base/test/nobib.tex
deleted file mode 100644
index e2586ecd8c2..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/nobib.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-% This file is public domain.
-%
-\let\nobibtex = t
-\ifx\eplain\undefined\input eplain \fi
-
-\tokstostring{abc}
-\xrdef{label}
-\xref{label}
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/nonouter.tex b/Master/texmf-dist/source/eplain/base/test/nonouter.tex
deleted file mode 100644
index 32aa5c9fee1..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/nonouter.tex
+++ /dev/null
@@ -1,11 +0,0 @@
-% This file is public domain.
-%
-\outer\def\nonouterdef#1#2{\begingroup
- \def\startdef{\def #1\bgroup}%
-% \expandafter\defstart \csname #2\endcsname\egroup
- \def\outername{\csname #2\endcsname}%
- \expandafter\startdef \outername \egroup
-\endgroup}
-
-\tracingall
-\nonouterdef\innernewwrite{newwrite}
diff --git a/Master/texmf-dist/source/eplain/base/test/optional.tex b/Master/texmf-dist/source/eplain/base/test/optional.tex
deleted file mode 100644
index f7cc917000e..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/optional.tex
+++ /dev/null
@@ -1,30 +0,0 @@
-% This file is public domain.
-%
-% Test optional arguments.
-
-\ifx\undefined\eplain \input eplain \fi
-
-\catcode`@ = \letter
-\def\foo{\@getoptionalarg\finfoo}
-\def\finfoo#1{%
- \edef\firstarg{\@optionalarg}
- \edef\mandatoryarg{#1}%
- \@getoptionalarg\finfinfoo
-}
-\def\finfinfoo{%
- The first optional argument is `\firstarg', the mandatory argument
- is `\mandatoryarg', and the second optional argument is `\@optionalarg'.
- \par
-}
-
-\loggingall
-\foo[a {\cite[p.10]{xyz}} b]{mand2}
-
-\foo{mand}
-\foo[opt1]{mand}
-\foo{mand}[opt2]
-\foo[opt1]{mand}[opt2]
-\foo[opt1]{mand}
- [opt2 on a separate line]
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/outer.tex b/Master/texmf-dist/source/eplain/base/test/outer.tex
deleted file mode 100644
index e424bebed12..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/outer.tex
+++ /dev/null
@@ -1,26 +0,0 @@
-% This file is public domain.
-%
-% Test file to make sure all the inner allocation routines really are
-% inner.
-%
-\input eplain
-
-\def\foo{%
- \innernewcount\a
- \innernewdimen\b
- \innernewskip\c
- \innernewmuskip\d
- \innernewbox\e
- \innernewhelp\f{Help.}%
- \innernewtoks\g
- \innernewread\h
- \innernewwrite\i
- \innernewfam\j
- \innernewlanguage\k
- \innernewinsert\l
- \innernewif\ifm
-}
-
-\foo
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/page.tex b/Master/texmf-dist/source/eplain/base/test/page.tex
deleted file mode 100644
index 5112d5d9ed4..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/page.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-% This file is public domain.
-%
-\hrule
-top of page
-\vskip 0pt plus1filll
-bottom of page
-\hrule
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/path.tex b/Master/texmf-dist/source/eplain/base/test/path.tex
deleted file mode 100644
index 8a891bd3623..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/path.tex
+++ /dev/null
@@ -1,25 +0,0 @@
-% This file is public domain.
-%
-% Test the \path macro.
-
-\input eplain
-%\input path.sty
-
-This is a normal path: \path|karl@cs.umb.edu|. This is a somewhat
-longer path: \path|letters@kropotkin.gnu.ai.mit.edu|. This is a still
-longer path:
-\path|megan@agroecology.university-of-california-at-santa-cruz.edu|. I'm
-making this all one paragraph so the path macro will have a chance to
-show its stuff. This path has dollar signs and other strange characters
-(but no vertical bars) in it: \path|#$%^_<>|. Now I'm going to change
-the discretionaries to only be at !'s. \discretionaries|!| Now this path
-should break only at !'s: \path|-hello!..from!@@bang!land|. Now I'm
-going to change things so backslash is the delimiter.
-\specialpathdelimiterstrue
-\path\##hello!there!@.@again!...we!**still!_have!-bangs!\. That last
-was delimited by backslashes, now let's do one that isn't delimited by
-backslashes: \path@hi, there!this is fun!@. I'll go on for a little
-while not doing anything in particular, so \TeX\ will have a chance to
-break the paragraph nicely. That's all, folks!
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/pcol.tex b/Master/texmf-dist/source/eplain/base/test/pcol.tex
deleted file mode 100644
index 52bfc2cc77d..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/pcol.tex
+++ /dev/null
@@ -1,183 +0,0 @@
-% This file is public domain.
-%
-% These are the double-column macros from Paul Abrahams, Dec 1991
-% They add the following features:
-% \ifbalance (by default true, causes last page to be balanced)
-% \everycolumn (a token list, useful for marks)
-% \pageeject
-% \eject does a column eject
-
-\newtoks\mainoutput
-\newbox\partialpage
-\newdimen\fullvsize \newdimen \fullhsize
-\newbox\leftcolumn \newbox \rightcolumn
-\newbox\savefootins \newskip\footskip
-\newbox\savetopins \newskip\topinsskip
-\newif\ifbalance \balancetrue
-\newtoks\everycolumn
-
-
-\def\pageeject{\penalty -10005 }%
-
-\def\doublecolumns{%
- \mainoutput = \output % Save the previous \output.
- %
- % This grabs any single-column material.
- \output = {\global\setbox\partialpage = \vbox{\unvbox255}}%
- \vskip\abovedoublecolumnskip
- \par % \par updates \pagetotal
- \pagegoal = \pagetotal
- \break % Now expand the \output we assigned just above.
- \output = {\doublecolumnoutput}%
- %
- % Set up \hsize and \vsize for double columns.
- \fullvsize = \vsize
- \fullhsize = \hsize
- \advance\hsize by -\gutter
- \divide \hsize by 2
- \advance\vsize by -\ht\partialpage
- %
- % Take account of existing insertions.
- \ifvoid\footins\else
- \advance\vsize by -\ht\footins
- \advance\vsize by -\skip\footins
- \fi
- \setbox\savefootins = \box\footins
- \footskip = \skip\footins
- %
- \ifvoid\topins\else
- \advance\vsize by -\ht\topins
- \advance\vsize by -\skip\topins
- \fi
- \setbox\savetopins = \box\topins
- \topinsskip = \skip\topins
- %
- % Start at the left, clear the existing columns.
- \let\lr = L%
- \setbox0 = \box\leftcolumn \setbox0 = \box\rightcolumn
-}%
-%
-% This routine actually does the outputting.
-\def\doublecolumnoutput{%
- \ifbalance\else \ifnum \outputpenalty < -10000
- \setbox255 = \vbox{\unvbox255 \vfil}%
- \fi\fi
- %
- \the\everycolumn
- \if \lr L%
- \buildcolumn\leftcolumn
- \global\let\lr = R%
- \else
- \buildcolumn\rightcolumn
- \global\let\lr = L%
- \fi
- %
- \ifnum \outputpenalty < -10000
- \ifbalance
- \ifdim \ht\leftcolumn > 8\baselineskip
- \balancecolumns
- \global \let \lr = L%
- \fi\fi\fi
- %
- \if \lr L%
- \setbox255 = \vbox{%
- \unvbox\partialpage
- \dimen0 = \ht\leftcolumn \dimen1 = \dp\leftcolumn
- \joincolumns
- \ifnum \outputpenalty = -10005 \vfil \fi
- }%
- % The restoration of the insertion boxes happens only once, since
- % they are empty thereafter.
- \setbox\footins = \box\savefootins
- \setbox\topins = \box\savetopins
- \vsize = \fullvsize % Because we've taken care of \partialoutput
- \ifnum \outputpenalty = -10006
- \unvbox255
- \else
- \the\mainoutput
- \global\vsize = \fullvsize
- \fi
- \fi
-}%
-%
-%
-% \joincolumns joins \leftcolumn and \rightcolumn into a vbox that aligns
-% the tops of the two columns and has the depth of the deeper column.
-% It adds the resulting box to the main vertical list.
-%
-\def\joincolumns{%
- \dimen0 = \dp\leftcolumn \dimen1 = \dp \rightcolumn
- \setbox0 = \hbox to \fullhsize{%
- \vtop to \ht\leftcolumn{\unvbox\leftcolumn}%
- \hfil
- \vtop to \ht\rightcolumn{\unvbox\rightcolumn}%
- }%
- \dimen2 = \boxmaxdepth % For restoring it later
- \ifdim \dimen0 < \dimen1
- \boxmaxdepth = \dimen1
- \else
- \boxmaxdepth = \dimen0
- \fi
- \setbox0 = \vbox{\box0}%
- \boxmaxdepth = \dimen2
- \box0 % Produce for the calling context
-}%
-
-\def\buildcolumn #1{%
- \ifnum \outputpenalty < -9999
- \global \setbox #1 = \vbox{\pagecontents}%
- \else
- \global \setbox #1 = \vbox to \vsize{\pagecontents}%
- \fi
-}%
-%
-%
-% Go back to single-column typesetting. Unfortunately, we cannot start
-% a group in \doublecolumns and end it here, because some documents
-% might want double-column mode to continue to the end. So we have to
-% restore the things we've changed manually.
-%
-\def\singlecolumn{%
- \penalty -10006
- \output = \mainoutput
- \hsize = \fullhsize
- \vsize = \fullvsize
- %
- % Add \belowdoublecolumnskip if there's enough room, otherwise a \vfil
- % to fill out the page.
- \dimen0 = \pagetotal \advance \dimen0 by \belowdoublecolumnskip
- \ifdim \dimen0 < \pagegoal
- \vskip\belowdoublecolumnskip
- \else
- \vfil
- \fi
- \allowbreak
-}%
-%
-\def \balancecolumns{%
- \setbox\leftcolumn = \vbox{\unvbox\leftcolumn \unskip}%
- \setbox\rightcolumn = \vbox{\unvbox\rightcolumn \unskip}%
- \setbox0 = \vbox{%
- \dimen0 = \dp\leftcolumn
- \unvbox \leftcolumn
- \if \lr L
- \kern -\dimen0
- \vskip -\topskip
- \vskip \baselineskip
- \unvbox \rightcolumn
- \fi
- }%
- \dimen0 = \ht0
- \advance \dimen0 by \topskip \advance \dimen0 by -\baselineskip
- \divide \dimen0 by 2 \splittopskip = \topskip
- \count@ = \vbadness \vbadness = 10000
- \loop
- \setbox2 = \copy0
- \setbox1 = \vsplit2 to \dimen0
- \ifdim \ht2 > \dimen0
- \advance \dimen0 by 1pt
- \repeat
- \vbadness = \count@
- \setbox \leftcolumn = \vbox to \dimen0{\unvbox1}%
- \setbox \rightcolumn = \vbox to \dimen0{\unvbox2}%
-}%
diff --git a/Master/texmf-dist/source/eplain/base/test/pdftex.tex b/Master/texmf-dist/source/eplain/base/test/pdftex.tex
deleted file mode 100644
index 7aa765d2c89..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/pdftex.tex
+++ /dev/null
@@ -1,112 +0,0 @@
-\input ../eplain
-%\enablehyperlinks[nolinks]
-%\enablehyperlinks[pdftex]
-\enablehyperlinks
-
-\beginpackages
-\usepackage[dvipsnames]{color}
-\endpackages
-
-% Execute #1 then print it verbatim and indented.
-\def\c{\cf\indent\relax}
-% Same as \c, but do not indent and at the end say \hlend.
-\def\f{\cf\noindent\hlend}
-%
-\def\cf#1#2#3{%
- \def\temp{#3}%
- \edef\cftemp{\sanitize\temp}%
- #1#3\expandafter\verbatim\cftemp\endverbatim#2\par
-}
-%
-\newcount\destcount
-% Execute `#1{d\the\destcount}' then print it (`#1', `{d', and `}' are printed
-% verbatim; `\the\destcount' is expanded).
-\def\d{\dl\relax}
-% Same as \d, but at the end also say \hlend.
-\def\l{\dl\hlend}
-%
-\def\dl#1#2{%
- \global\advance\destcount by1
- \toks0={#2}%
- \edef\temp{\the\toks0{d\the\destcount}}%
- \edef\dltemp{\sanitize\temp}%
- \noindent#2{d\the\destcount}\expandafter\verbatim\dltemp\endverbatim#1\par
-}
-
-\pdfpagewidth=8.5in
-\pdfpageheight=11in
-
-
-
-\leftline{\bf Destinations}
-\medskip
-
-{\tt\global\parindent=4em}
-
-\d{\hldest{}{}}
-\c{\hldestopts{zoom=2345}}
-\d{\hldest{}{}}
-\medskip
-\c{\hldesttype{fitr}}
-\c{\hldestopts{width=\hsize}}
-\d{\hldest{}{}}
-\c{\def\myopts{width=.5\hsize,depth=.25\hsize}}
-\d{\hldest{}{\myopts,height=.25\hsize}}
-\medskip
-\c{\let\myopts\empty}
-\c{\hldestopts{raise=2\normalbaselineskip}}
-\d{\hldest{xyz}{\myopts,zoom=2500}}
-\d{\hldest{xyz}{raise=\ht\strutbox,zoom=3000}}
-\medskip
-\makeatletter
-\c{\def\mydest{\pdfdest name{\@hllabel} xyz}}
-\d{\hldest{raw}{cmd=mydest}}
-\resetatcatcode
-\medskip
-\d{\hldest{fit}{}}
-\d{\hldest{fith}{}}
-\d{\hldest{fitv}{}}
-\d{\hldest{fitb}{}}
-\d{\hldest{fitbh}{}}
-\d{\hldest{fitbv}{}}
-\vfil\eject
-
-
-
-\leftline{\bf Links}
-\medskip
-
-{\tt\global\parindent=4.5em}
-
-\destcount=0 % Reset destination count.
-\l{\hlstart{name}{}}
-\c{\hlopts{bstyle=U}}
-\l{\hlstart{name}{}}
-\l{\hlstart{}{bstyle=D,bdash=2 4,bcolor=1 0 0,hlight=I}}
-\l{\hlstart{}{bstyle=B,bwidth=3}}
-\c{\hlopts{bcolor=0 0 1}}
-\l{\hlstart{}{bstyle=I,bwidth=4}}
-\l{\hlstart{}{bstyle=U,bwidth=1}}
-\c{\hlopts{bstyle=S}}
-\l{\hlstart{}{hlight=I,bcolor=1 .2 .2,bwidth=2}}
-\l{\hlstart{}{hlight=N,bstyle=D,bwidth=3}}
-\l{\hlstart{}{hlight=O}}
-\l{\hlstart{}{hlight=P,bcolor=.3 .6 .7}}
-\l{\hlstart{}{bstyle=D,bdash=2 4 6}}
-\l{\hlstart{}{bwidth=0}}
-\l{\hlstart{}{bstyle=D,bdash=2 4 6 8}}
-\f{\hlstart{page}{pagefit=/FitH 600}{1}}
-\f{\hlstart{filename}{file=hlink.pdf,newwin=1}{eq1}}
-\f{\hlstart{filepage}{file=hlink.pdf,pagefit=/FitR 50 100 300 500}{1}}
-\f{\hlstart{filepage}{file=hlink.pdf,pagefit=/FitB}{2}}
-\f{\hlstart{url}{}{http://tug.org/eplain/}}
-\c{\def\mycmd{\pdfstartlink goto page 1 {/Fit}}}
-\f{\hlstart{raw}{cmd=mycmd}{}}
-
-
-
-\bye
-
-% Local variables:
-% compile-command: "(cd .. && make eplain.tex) && pdftex --interact=nonstopmode pdftex.tex"
-% End:
diff --git a/Master/texmf-dist/source/eplain/base/test/psfont.map b/Master/texmf-dist/source/eplain/base/test/psfont.map
deleted file mode 100644
index 6b25d458abb..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/psfont.map
+++ /dev/null
@@ -1,78 +0,0 @@
-% This file is public domain.
-%
-% +--------------------------------------------------------------------+
-% | |
-% | Font mapping for Turing |
-% | ----------------------- |
-% | |
-% | Letter Font Letter Qualifier |
-% | ------ ------------ ------ ------------ |
-% | A Avant-Garde B Bold |
-% | B Bookman D Demi |
-% | C Courier I Italic |
-% | H Helvetica L Light |
-% | N New-Century M Medium |
-% | Schoolbook O Oblique |
-% | P Palatino R Roman |
-% | S Symbol S Small Caps |
-% | T Times |
-% | ZC Zapf Chancery |
-% | ZD Zapf Dingbats |
-% | |
-% +--------------------------------------------------------------------+
-
- \def\SYSTEM{Turing}
-
- \def\AB@#1pt{pagk at #1pt}
- \def\ABO@#1pt{pagko at #1pt}
- \def\AD@#1pt{pagd at #1pt}
- \def\ADO@#1pt{pagdo at #1pt}
-
- \def\BD@#1pt{pbkd at #1pt}
- \def\BDI@#1pt{pbkdi at #1pt}
- \def\BL@#1pt{pbkl at #1pt}
- \def\BLI@#1pt{pbkli at #1pt}
- \def\BO@#1pt{pbkro at #1pt}
-
- \def\CB@#1pt{pcrb at #1pt}
- \def\CBO@#1pt{pcrbo at #1pt}
- \def\CM@#1pt{pccr at #1pt}
- \def\CO@#1pt{pccro at #1pt}
-
- \def\HB@#1pt{phvb at #1pt}
- \def\HBO@#1pt{phvbo at #1pt}
- \def\HM@#1pt{phvr at #1pt}
- \def\HO@#1pt{phvro at #1pt}
-
- \def\NB@#1pt{pncb at #1pt}
- \def\NBI@#1pt{pncbi at #1pt}
- \def\NI@#1pt{pncri at #1pt}
- \def\NR@#1pt{pncr at #1pt}
- \def\NO@#1pt{pncro at #1pt}
-
- \def\PB@#1pt{pplb at #1pt}
- \def\PBI@#1pt{pplbi at #1pt}
- \def\PBO@#1pt{pplbo at #1pt}
- \def\PI@#1pt{pplri at #1pt}
- \def\PO@#1pt{pplro at #1pt}
- \def\PR@#1pt{pplr at #1pt}
-
- \def\TB@#1pt{ptmb at #1pt}
- \def\TBI@#1pt{ptmbi at #1pt}
- \def\TBO@#1pt{ptmbo at #1pt}
- \def\TI@#1pt{ptmri at #1pt}
- \def\TIU@#1pt{ptmru at #1pt}
- \def\TO@#1pt{ptmro at #1pt}
- \def\TR@#1pt{ptmr at #1pt}
-
- \def\ZCMI@#1pt{pzcmi at #1pt}
- \def\ZD@#1pt{pzdr at #1pt}
-
- \def\S@#1pt{psyr at #1pt}
- \def\SO@#1pt{psyro at #1pt}
- \def\SX@#1pt{psyrx at #1pt}
-
- \def\TRS@#1pt{ptmrc at #1pt}
- \def\PRS@#1pt{pplrc at #1pt}
- \def\NRS@#1pt{pncrc at #1pt}
- \def\BS@#1pt{pblrc at #1pt}
diff --git a/Master/texmf-dist/source/eplain/base/test/rex.tex b/Master/texmf-dist/source/eplain/base/test/rex.tex
deleted file mode 100644
index 7fc90ba9367..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/rex.tex
+++ /dev/null
@@ -1,277 +0,0 @@
-% This file is public domain.
-%
-%Date: Fri, 08 May 92 12:28:17 PDT
-%From: Rex Shudde <0024P%NAVPGS.BITNET@CORNELLC.cit.cornell.edu>
-%Subject: Eplain document
-%To: karl berry <karl@cs.umb.edu>
-%
-%Karl,
-%
-%Attached is an emulation of my document. Re-iterating, (1) the title should be
-%on the first page with the abstract, and a horizontal rule should span the
-%entire first page, and (2) the second footnote is referenced in the second
-%column on third page.
-%
-%Undoubtedly I've violated some of the rules of either TeX or eplain, but I
-%don't know what.
-%
-%Again, many thanks.
-%
-%Rex
-%
-%Bitnet: 0024p@navpgs
-%Internet: 0024p@cc.nps.navy.mil
-%.............................................................................
-%\magnification=\magstep0
-\input eplain
-\input tables %This is Ferguson's INRSTeX Tables (a very old version).
-
-\hbadness = 100000 \vbadness = 10000 \hfuzz = \maxdimen
-\tolerance=2000
-
-\def\SP{\ }
-\def\throwaway#1{}
-\def\checkspace{\ifx \next\
-\let\result=\throwaway
- \else \let\result=\ignorespaces \fi \result }
-\font\bigfont=cmr10 scaled \magstep5
-\def\bfl#1{\setbox0=\hbox {{\bigfont #1}\thinspace}
- \noindent \hangindent \wd0 \hangafter -2
- \llap {\vbox to \ht0{\kern\baselineskip \box0 \kern-\baselineskip}}%
- \futurelet \next \checkspace}
-
-\parskip=10pt
-\parindent=0pt
-
-\font\cmbig=cmr17
-\font\cmrbv=cmb10 scaled \magstep5
-\font\iti=cmbxti10 scaled \magstep2
-\font\erm=cmr8
-
-\doublecolumns
-
-%**************************************************************************
-% Generate a dummy first page for the twocol macro
-% The first page is to have the left column blank.
-
-\phantom{dummy first line} \vskip5truein
- {\font\iti=cmti10 scaled \magstep1
- \iti
- \rightline{An abstract}
- \rightline{goes}
- \rightline{in here.}
- }
-
-\columnfill
-
-%**************************************************************************
-
-\phantom{dummy first line} \vskip0.75truein
-
-\rightline{\cmrbv Title}
-\bigskip\bigskip
-\rightline{\iti Author}
-
-\bigskip\bigskip\bigskip
-%\rightline{\hrulefill}% width6.5truein}
-
-\nointerlineskip
-\moveleft 3.31truein
-\vbox{\hrule width6.5truein}
-\nointerlineskip
-
-\vskip0.75truein
-
-%**************************************************************************
-
-\bfl
-Xxxxxxx xxxxxx xxxxxx xxxxxxx xxxx xxx xxx\numberedfootnote{\erm Xxxxx xxxxx
-xxx xxxx Xxxxx xxxxx, Xxxxx xxxx Xxxxxx xxxxxx, xxxxxx xxxxx xx Xxxxxx Xxxxxx,
-Xxx., X.~X. Xxx~xxx, Xxxx Xxxxx, XX~xxxxx.} Xxxx Xxxxxxxxxx xxxxxxxx xxxx, Xxx
-xxxxx xxxxxx xx xxxxxxxx xx xxxxx xxxxxxx xxxxxxx xxxx xx xxxx xx xxxxxxx xx
-xxx xxxxx xx x xxx xxxxxxx xx xxxxx. Xx x/xxx xx x xxx xxxx xxxxxxx xxxxx
-xxxxxxx, Xxxxxx xxxxxxxxx xxxxx xxxxx x/xxx,xxx,xxx xx x xxxxxx. Xxxx xxxxx
- xxxx xx xxxx xxxx Xxxxxx'x xxxxxxxx xx xxx xxxxxxx xxxxxxxx xxxxxx xx xxxxx
- xx xxxx xxxxxxx xxx xxxxxx xxxx xx xxxxxxx xx xxxxxx x.xx xx x xxx, xxx x.xx
-xxx xxxxxx xxxxx xx~xxxxxxx. Xxxx xx x xxxxx xxxxxx xxx xxxxxxxxx xxxxxxxx xxx
-xxxxxxxx xxxx xxxxxxxx xxxxxxxxx xxx xxxxxx xxxxxx xxxx, xxx xxx xxxxxxxx
-xxxxxxxxx xx xxx xxxx xx xxxxxxxxxx xx x xxxx xxxxx xxxxxxxxxx.
-
-Xxxxx xxx xxxxxx xxx xxxxxx xx xxx xxxxx xx xxx xxx xxxxxxxxx (xxx XX-xxx
-xxxxx xxxxxx xxxxxxxx xx xxx Xxx Xxxxxxxxxx Xxxxxxxxxx), xx xxx xxxxxxx xxxx
-xx xxxxx xx xxxxxxxxxxx xx xxxxxxx x xxxxx xxxxxxx xxx xxxx xx xxxxx xxxx
-xxxxxx xx xxxx x xxxxxxxxxxx xxxxxx xxxx xxx xxxxxxx.
-
-Xxxxx x xxxxx xx xxx xxxx xx xxxxxxxxxx xxx xxxxxxxx xx xxx xxxxxxxxxx xxx
-xxxxxx xxxxxxxx xxx xxxx xxxxxx xxx xxxxx xxxx. Xxxx xxx xxxx xxxx xxxx xx
-xxxxx xxx xxxxxx'x xxxx xxxx xxxxxxxx, xxxx {xxx xxxxxxx} xx xxx xxxxxxx
-xxxxxxxxx, xxxxxxxx, xx x, xxx xxxxxxxx. Xxxxx xxxx xxxxxxxxx xxx xxxx (xxxx
-xxx Xxxx) xxx xxxxx xx Xxxxx~x.
-
-Xx xxxxxxxxxxx xx Xxxxx~x xxxxxxx xxxx xxx xxxxxxxx xx xxxxxxx xx xxxx xxxxxxx
-xxxxxxxx xxx xxx xx xxxxxxxxxx xx xxxxx xx xxxxxxxx. Xx xxxx, xx xxxxxxx xx
-xxxxxx xxx xxxxx xx xx xxxxx xxx xxx xxxxxxxxx xxx xxxxxxxx xxxxx xx Xxxxxx'x
-xxxxx xx Xxxxxx' xxxxxx xxxxxxx. Xxxx xxx xxxxxxxx xxxxx xxx xx xx xxxx, xxx
-xxxxxxxxx. Xxxxx~x xxxxxxxx xxx xxxxxxxxx xx xxxxxxx xx xxx xxxxxx xxxxxx xx
-xxxx xxxxxx xxxxxxxx xx xxxxxxxxx xx xxxxxxxxx.
-
-
-\singlecolumn
-\centerline{Table 1---Xxxxxxxxx Xxxx Xxxxxxxx xx Xxxxxxxx}
-\smallbreak
-\line \bgroup \hss
- \begintable
- \begintableformat
- & \center
- \endtableformat
- \-
- \br{\::} : : \use{3} Xxxxxxxxxx Xxxxxxx:
- : \use{3} Xxxxxx Xxxxxxn \er{:}
- \br{\:} \zb{Xxxxxx} : \zb{Xxxx} : \use{3} \-
- : \zb{Xxxx} : \use{3} \- \er{:}
- \br{\::} : : -xxxxx " -xxxxx " -x :
- : +xxxxx " +xxxxx " +x \er{:}
- \-
- \br{\::} xxxxxxx : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx
- : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx \er{:}
- \-
- \br{\::} xxxxxxx : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx
- : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx \er{:}
- \-
- \br{\::} xxxxxxx : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx
- : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx \er{:}
- \-
- \br{\::} xxxxxxx : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx
- : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx \er{:}
- \-
- \br{\::} xxxxxxx : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx
- : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx \er{:}
- \-
- \br{\::} xxxxxxx : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx
- : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx \er{:}
- \-
- \br{\::} xxxxxxx : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx
- : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx \er{:}
- \-
- \br{\::} xxxxxxx : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx
- : ~x-xx-xx : xxxxx " ~xxxxx " ~xxxxx \er{:}
- \-
- \endtable
-\hss \egroup
-\doublecolumns
-
-
-Xxxx xxxxxx x xxxxxx xxxxxxx Xxxxxx'x xxxxxx xxxxxx xx xxx xxxxxx xxxxx xxxxxx
-xxx xxxx xxxxx xx Xxxxx~x, xxxx xxxx xxxxxx xx xxxxx xxxxxxx. Xx, xxx xxxxxxx,
-xx xxxxxxxxxx xxx xxxxxxxx xxxx xxxxxx xxxxxx, xx xxxxx xxxxx xx xxxxxxxxxxx,
-xxxxxxxxxx, xxx xxxxxxxxx, xxxxxxx xx xxx xxxxxxxx xx xxxx xxxxxx xxxx xxxxx
-xxxxxxx, xx xxxxx xxxxx xx xxx xxxxxxxx, xxxxx xxxxx, xxx xxxxxxxxx. Xxxx xxx
-xxxx xx xxxxxxxxx.
-
-\medskip\bigskip
-\centerline{Table 2---Xxxxxxx xx Xxxxxx'x Xxxxxx Xxxxxxx}
-\nobreak
-\centerline{(Xxxxxxx Xxxxxxxx)}
-\smallbreak
-\line \bgroup \hss
- \begintable
- \begintableformat
- & \center
- \endtableformat
- \-
- \br{\::} Xxxx : xxxxxxxx " xxxxxxx " xxxxxx " xxx \er{:}
- \-
- \br{\::} xxxx : xxxxxxxx " xxxxxxx " xxxxxx " $x''$ \er{:}
- \br{\::} xxxx : xxxxxxxx " xxxxxxx " xxxxxx " $x''$ \er{:}
- \-
- \br{\::} xxxx : xxxxxxxx " xxxxxxx " xxxxxx " $x''$ \er{:}
- \br{\::} xxxx : xxxxxxxx " xxxxxxx " xxxxxx " $x''$ \er{:}
- \-
- \br{\::} xxxx : xxxxxxxx " xxxxxxx " xxxxxx " $x''$ \er{:}
- \br{\::} xxxx : xxxxxxxx " xxxxxxx " xxxxxx " $x''$ \er{:}
- \-
- \br{\::} xxxx : xxxxxxxx " xxxxxxx " xxxxxx " $x''$ \er{:}
- \br{\::} xxxx : xxxxxxxx " xxxxxxx " xxxxxx " $x''$ \er{:}
- \-
- \endtable
-\hss \egroup
-
-Xxxxxxxx xxx xxxx xxxx xxxxx xxxxx xx Xxxxx~x xxx xxx xxxx, xxxx xxx xxx xxxx
-xx xxx xxxxxxxx xxxxxxxx xxxxxxxxx xxxxx. Xx xxx x xxxxx xxxxxxx xx xxx xxxx
-xx xxxxxxx, xx xxx xxxxxxx xx xx x xxxxxx xxxxxx xx xxxxx xxxxxxx xx xxxxxx xx
-xxxx xxxxx xxxxxx x ``xxxxx xxxx'' xxxxxxxx. Xxxxx x xxxxx xx xxxx xxxxx xx
-xxx xxxx xx xxxxxxx xxx xxxxxxxx. Xxxx xxx xxxx xxxxxxxx xx xxxxx xxx xxxxxx'x
-xxxxxxxx xxxxxx xx xxxxx xxxxx, xxxxxxx xxx, xxx xxxxxx xxxx xxxx xxx xxxxx
-xxxxx xxxxxxxx xxx xxxxxxxx. Xxx xxxxxxx, xx xxx xxxxx xxxxx xxxxxx xxxx xxxx
-xxxxxx, xx xxx xxxx xxxxxx xxxxxxxx xxx xxx xxxxx. Xxx xxxxxxx xxx xxxxx xx
-Table~3.
-
-
-\font\eri=cmti8
-
-Xx xxxxxx xx xxxxxxxxxx xxxx xxxxx xxxxxx xxxx xxxxxxxx xxxx xxx xxx xxxxxxx
-xxxxx xx xxx xxxx xxxxx xxx xx xxx xx xxx xxx xxxxxxxxx xx xxxxxxx xxxx xx xxx
-xxx xxxxx xxxxx xxxxxx. Xxxxx~x xxxxxxx xxxx xxx xxxxx xxxxxxx, xx xx
-xxxxxxxxx xxxxxxxxx xx xxxxxxxx xx xxxx xxxx xxxxxxx xxxx xxx xxxx xxx xxxx
-xxxxxxxx xxxxxxxxxxx xxx xxx xxxxxx xx xx xxxxxxx. Xxxxxxxxx xxxxxxx xxxxx xxx
-xx xxxxxxxx xxxxxx xxxx xxx xxxx xxxxxxx xx x xxxxx xxxxxxxxx, xxx xxx
-xxxxxxxx xx xxx xxxxxxxxx? Xxx xxxx xxxxxxxx xxxxxxxxx xxxxxxxxx xxxxxxxxx xx
-XX-xxx, xxx xxxxxxxxx xx xxx {xxx Xxxxxx xxxxxx Xxxx
-xxx},\numberedfootnote{\erm Xxxx Xx xx xxx xxxx Xxxxxx Xxxxxxx xxxx xxxxx
-xxxx.} ``X xxxxxxx xxxxx xxxxxxxxx xxx Xxxxxx xxx xxx xxxx'x xxxxx xx xxxxxxxx
-xxxx xx xxxxxxxxx xxxxxx xxxxxx xxxx xxxxxx xxxx.'' Xxxx xxxxxx xxxxx xx x
-xxxxxxxx xxxx xxxxxxxx xxxxx xxxxxx xxx xxxxxxxx xxx xxx xxxxxxx xxx xx xxxx
-xxxxxxx xxx xxxxxx xxxxxx xxxxxxxx xxx xxxx xxxxxxxxxxx xxxx xxx xxx xxxxxxx
-xxx xxxxxx xxxxxx xx Xxxxxx xxxxx xx xxxx, xxx xxxxx xxx xxx xxxxxxxx xx x
-Xxxxxx xxxxxxx xxxx xxx xxxx? Xxx xxxxxx xxxxx xx xx xxxxxxxxx xxx xxxxxxx
-xxxx xxx xxxx xxxx xx Xxxxx~x xxx xxxxxx xxxx xxx xxxxxxx xxxx xxxxx xx
-xxxxxxx xx xxxxxx xxx xx xxxxx.
-
-\singlecolumn
-
-\medskip\bigbreak
-\midinsert
-\centerline{Table 3---Xxxxxxxxx Xxxx Xxxxxxxx xx Xxxxxxxx}
-\smallbreak
-\line \bgroup \hss
- \begintable
- \begintableformat
- & \center
- \endtableformat
- \-
- \br{\::} : : \use{3} Xxxxxxxxxx Xxxxxxx:
- : \use{3} Xxxxxx Xxxxxxx \er{:}
- \br{\:} \zb{Xxxxxx} : \zb{Xxxx} : \use{3} \-
- : \zb{Xxxx} : \use{3} \- \er{:}
- \br{\::} : : -xxxxxxx " -xxxxxxx " -xxxxxxx :
- : +xxxxxxx " +xxxxxxx " +xxxxxxx \er{:}
- \-
- \br{\::} {xxx x} : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx
- : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx \er{:}
- \-
- \br{\::} {xxx x} : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx
- : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx \er{:}
- \-
- \br{\::} {xxx x} : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx
- : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx \er{:}
- \-
- \br{\::} {xxx x} : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx
- : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx \er{:}
- \-
- \br{\::} {xxx x} : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx
- : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx \er{:}
- \-
- \br{\::} {xxx x} : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx
- : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx \er{:}
- \-
- \br{\::} {xxx x} : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx
- : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx \er{:}
- \-
- \br{\::} {xxx x} : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx
- : ~x-xx-xx : xxxxxx " ~xxxxxx " ~xxxxxx \er{:}
- \-
- \endtable
-\hss \egroup
-\endinsert
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/rule.tex b/Master/texmf-dist/source/eplain/base/test/rule.tex
deleted file mode 100644
index 7001ca9a368..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/rule.tex
+++ /dev/null
@@ -1,23 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-\hruledefaultheight = 4pt
-\hruledefaultdepth = 8pt
-
-\vruledefaultwidth = 36pt
-
-\vglue 1in
-
-\line{\leaders\ehrule\hfil gA}%
-
-\smallskip
-\ehrule
-\medskip
-
-\noindent \evrule \quad Greetings
-\smallskip
-\vbox to 3in{\leaders\evrule\vfil gB}
-
-\hbox to 40pt{\downbracefill} % uses \vrule
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/sidx.tex b/Master/texmf-dist/source/eplain/base/test/sidx.tex
deleted file mode 100644
index 88041620f09..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/sidx.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-\sidx{help}
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/subdef.tex b/Master/texmf-dist/source/eplain/base/test/subdef.tex
deleted file mode 100644
index 55d624b729a..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/subdef.tex
+++ /dev/null
@@ -1,24 +0,0 @@
-% This file is public domain.
-%
-%Karl: on page 15 of the eplain manual (referring to subequation
-%formatting) you say
-% "Eplain's default definition just puts a period between them:"
-%However, when I run eplain (version 2.3 dated "Mon Mar 1 06:30:39 EST
-%1993") I get a colon ":" between the two. Below is a sample file.
-% Adam H. Lewenberg adam@math.uiuc.edu
-%%%%%%%%%%
-\input eplain %Version 2.3 "Mon Mar 1 06:30:39 EST 1993"
-
-$$5+5=10\eqdefn{ggg}$$
-$$4+5=10\eqsubdef{b-eq}$$
-
-\eqref{ggg} is correct and \eqrefn{b-eq} is incorrect.
-
-
-\end
-
-Date: Tue, 8 Jun 1993 09:46:11 -0500
-From: "Adam H. Lewenberg" <adam@symcom.math.uiuc.edu>
-To: karl@cs.umb.edu
-Subject: subeq referencing in eplain.tex (v. 2.3)
-Cc: adam@symcom.math.uiuc.edu
diff --git a/Master/texmf-dist/source/eplain/base/test/tenenb.tex b/Master/texmf-dist/source/eplain/base/test/tenenb.tex
deleted file mode 100644
index 89cd534e55d..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/tenenb.tex
+++ /dev/null
@@ -1,48 +0,0 @@
-% This file is public domain.
-%
-%Date: Sun, 7 Jan 2001 20:31:13 +0100
-%To: tex-eplain@tug.org
-%From: Gerald Tenenbaum <tenenb@arcturus.ciril.fr>
-%Subject: doublecolumns again
-%Cc:
-%Bcc:
-%X-Attachments:
-%
-%Hi,
-%
-%Here is a small file:
-%
-%*****************************
-\magnification1200
-\input eplain.tex
-\vsize30mm\hsize100mm
-
-This is an example of an apparent bug in {\tt $\backslash$doublecolumns}.
-This is an example of an apparent bug in {\tt
-$\backslash$doublecolumns}. This is
-an example of an apparent bug in {\tt $\backslash$doublecolumns}. This is an
-example of an apparent bug in {\tt $\backslash$doublecolumns}. This
-is an example
-of an apparent bug in {\tt $\backslash$doublecolumns}. This is an example of an
-apparent bug in {\tt $\backslash$doublecolumns}.
-\par
-\obeylines\doublecolumns
-item 1
-item 2
-item 3
-item 4
-item 5
-item 6
- \singlecolumn
-\bye
-*************************************
-
-Has anyone an explanation for this bad behaviour and an idea for a fix?
-
-Best wishes,
-
- Gérald
-
-
-
-
diff --git a/Master/texmf-dist/source/eplain/base/test/tenenb2.tex b/Master/texmf-dist/source/eplain/base/test/tenenb2.tex
deleted file mode 100644
index 734299c3726..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/tenenb2.tex
+++ /dev/null
@@ -1,23 +0,0 @@
-% This file is public domain.
-%
-% Gerald Tenenbaum, tenenb@arcturus.ciril.fr
-% 7 Jan 2001
-
-%\magnification 1200
-\input ../eplain
-\vsize 30mm
-\hsize 100mm
-
-This is an example of an apparent bug in double columns.
-This is an example of an apparent bug in double columns.
-This is an example of an apparent bug in double columns.
-This is an example of an apparent bug in double columns.
-This is an example of an apparent bug in double columns.
-This is an example of an apparent bug in double columns.
-This is an example of an apparent bug in double columns.
-
-\doublecolumns
-This is an example of an apparent bug in double columns.
-\singlecolumn
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/test.tex b/Master/texmf-dist/source/eplain/base/test/test.tex
deleted file mode 100644
index 779d8adf662..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/test.tex
+++ /dev/null
@@ -1,14 +0,0 @@
-% This file is public domain.
-%
-\input ../eplain
-\input asibook.gst
-
-\comment The title is actually irrelevant: we don't do the title page.
-\title{Wavelets and their applications}
-
-\comment The other front stuff happens in asibook.gst's \producepreliminary,
-\comment which is called by virtue of the \part here.
-
-\backthing{test.index}
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/time.tex b/Master/texmf-dist/source/eplain/base/test/time.tex
deleted file mode 100644
index 90751506091..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/time.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-\timestring
-
-\time = 68
-\timestring
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/truemarg.tex b/Master/texmf-dist/source/eplain/base/test/truemarg.tex
deleted file mode 100644
index b057a86b94f..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/truemarg.tex
+++ /dev/null
@@ -1,36 +0,0 @@
-% This file is public domain.
-%
-% Some code to test margin-setting macros in concert with
-% \magnification.
-
-\input ../eplain % margin altered version
-
-%\magnification=\magstep0
-%\magnification=\magstep1
-%\magnification=\magstep2
-\magnification=\magstep3
-
-
-\nopagenumbers
-
-\paperheight=11truein
-\paperwidth=8.5truein
-
-\topmargin=1truein
-\leftmargin=1truein
-\rightmargin=6truein
-\bottommargin=3truein
-
-\parindent=0pt
-
-\vbox to \vsize{
-\hrule depth4truept
-\vfill
-\centerline{Magnification = \the\mag}
-\vfill
-\hrule height4truept
-}
-
-
-\bye
-
diff --git a/Master/texmf-dist/source/eplain/base/test/uscore.bib b/Master/texmf-dist/source/eplain/base/test/uscore.bib
deleted file mode 100644
index 82b7bcb07b1..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/uscore.bib
+++ /dev/null
@@ -1,5 +0,0 @@
-% This file is public domain.
-
-@misc{bib_uscore,
- title = "Underscore label"
-}
diff --git a/Master/texmf-dist/source/eplain/base/test/uscore.tex b/Master/texmf-dist/source/eplain/base/test/uscore.tex
deleted file mode 100644
index 097230596e0..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/uscore.tex
+++ /dev/null
@@ -1,14 +0,0 @@
-% This file is public domain.
-%
-\ifx\undefined\eplain \input eplain \fi
-
-Define a label with an underscore in it. \xrdef{u_score}
-Refer to it: \xref{u_score}.
-
-Make a citation, too: \cite{bib_uscore}.
-
-\bibliographystyle{plain}
-\bibliography{uscore}
-
-\bye
-
diff --git a/Master/texmf-dist/source/eplain/base/test/usepackage.tex b/Master/texmf-dist/source/eplain/base/test/usepackage.tex
deleted file mode 100644
index ab797823fe7..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/usepackage.tex
+++ /dev/null
@@ -1,146 +0,0 @@
-% This file is public domain.
-%
-% Test \usepackage with packages: color, graphicx, autopict, psfrag, url.
-\input ../eplain
-
-\beginpackages
- \usepackage[dvipsnames]{color}
- %\usepackage[draft,hidescale]{graphicx,autopict}\let\ttfamily\relax
- \usepackage{graphicx,autopict}
- \usepackage{psfrag}
- \usepackage[obeyspaces,spaces]{url}[2005/06/27]
-\endpackages
-
-%\enablehyperlinks
-
-\ifpdf
- \pdfpagewidth=8.5in
- \pdfpageheight=11in
-\fi
-
-% The following redefinition works around a bug in pdftex.def v0.03m
-% related to \pagecolor.
-\ifpdf
-\makeatletter
-\ifx\GPT@outputbox\undefined
-\def\set@page@color{%
- \@ifundefined{GPT@outputbox}{%
- % \newbox is outer in plain
- \csname newbox\endcsname\GPT@outputbox
- }{}%
- \global\let\current@page@color\current@color
- \@ifundefined{GPTorg@shipout}{%
- \global\let\GPTorg@shipout\shipout
- \gdef\shipout{%
- \afterassignment\GPT@shipout
- \global\setbox\GPT@outputbox=%
- }%
- \gdef\GPT@shipout{%
- \ifvoid\GPT@outputbox\relax
- \aftergroup\GPT@@shipout
- \GPT@pageliteral
- \else
- \GPTorg@shipout\vbox{%
- \GPT@pageliteral
- \box\GPT@outputbox
- }%
- \fi
- }%
- \gdef\GPT@@shipout{%
- \GPTorg@shipout\box\GPT@outputbox\relax
- }%
- \gdef\GPT@pageliteral{%
- \pdfliteral direct{%
- q % gsave
- \current@page@color\space
- n % newpath
- 0 0 \strip@pt\pdfpagewidth\space
- \strip@pt\pdfpageheight\space re % rectangle
- % there is no need to convert to bp
- f % fill
- Q% grestore
- }%
- }%
- }{}%
-}
-\fi
-\resetatcatcode
-\fi
-
-
-\pagecolor[rgb]{.3,.8,.95}
-
-\centerline{\bf URL, color, rotation and scaling tests:}
-\smallskip
-
-{\color[rgb]{1,0.2,0.3} RGB-colored text. }Non-colored text.\par
-{\color[cmyk]{.2,.7,.5,.1}CMYK-colored text. }Non-colored text.\par
-{\color[gray]{.4} GRAY-colored text. }Non-colored text.\par
-\definecolor{refcolor}{cmyk}{0.28,1,1,0.35}
-{\color{refcolor}Defined color. }Non-colored text.\par
-\colorbox{green}{Green-colored box.}\par
-\colorbox[rgb]{1,0,0}{Red-colored box.}\par
-%\fcolorbox doesn't work because plain TeX does not have LaTeX's \fbox
-What is this:
-\rotatebox[origin=c]{180}{\reflectbox{\color[rgb]{.5,.3,.3}%
- \hloff[url]\url{http : // tug . org / eplain}}}\par
-Example of a line break inside a URL: \url{http://www.this.is.some/very.very.very.long.URL/which.goes.on/and.on/and.on.html}\par
-\textcolor{red}{Predefined color `{\tt red}'. }Non-colored text.\par
-\rotatebox{20}{\scalebox{2}[5]{\color[named]{DarkOrchid}Rotated,
- scaled, and colored text.}}\par
-\resizebox{1in}{\height}{Some text $\sum$.}
- \resizebox*{1in}{\height}{Some text $\sum$.}
- \resizebox{1in}{!}{Some text $\sum$.}\par
-
-
-\bigskip
-\centerline{\bf \LaTeX's picture environment:}
-\smallskip
-
-\picture(50,50)
- \color{red}
- \thicklines
- \put(0,0){\line(1,1){50}}
- \color{blue}
- \put(40,0){\circle{50}}
- \put(0,0){\vector(1,0){50}}
- \color{green}
- \put(20,0){\circle*{12}}
- \put(55,40){\oval(80,70)[t]}
- \color{black}
- \put(55,40){\oval(50,30)}
- \bezier{0}(10,10)(40,90)(110,90)
- %\qbezier does not work
- %\qbezier[0](10,10)(40,90)(110,90)
-\endpicture
-
-\LaTeXbegin
-
-\begin{picture}(40,40)
-\put(0,0){\vector(1,1){40}}
-\multiput(0,5)(10,10){4}{a}
-\end{picture}
-
-\vfil\eject
-
-
-\pagecolor[named]{SkyBlue}
-
-\centerline{\bf PSfrag test (uses {\tt example.eps} from the PSfrag package):}
-\smallskip
-
-\centerline{\includegraphics[width=3.5in]{example.eps}
-\quad
-\psfragscanon
-\psfrag*{p1}[][l]{$\ast$}
-\psfrag{p2}[][l]{$\ast$}
-\psfrag{p3}{$\cos(t)$}
-\includegraphics[width=3.5in]{example.eps}}
-
-
-\bye
-
-% Local variables:
-% compile-command: "(cd .. && make eplain.tex) && pdftex --interact=nonstopmode usepackage.tex"
-% compile-command: "(cd .. && make eplain.tex) && tex --interact=nonstopmode usepackage.tex && dvips -t letter usepackage.dvi -o"
-% End:
diff --git a/Master/texmf-dist/source/eplain/base/test/verb2.tex b/Master/texmf-dist/source/eplain/base/test/verb2.tex
deleted file mode 100644
index b3c7c4ad54c..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/verb2.tex
+++ /dev/null
@@ -1,61 +0,0 @@
-% This file is public domain.
-%
-% Date: Wed, 30 Mar 94 09:50:27 CST
-% From: dorai@cs.rice.edu (Dorai Sitaram)
-% To: karl@cs.umb.edu
-% Subject: eplain 2.4's \verbatim: problem & fix
-
-\input eplain
-
-Testing Eplain's \verbatim verbatim|endverbatim
-
-\def\junk{{\it Some obviously $a^2+b^2$ non-verbatim stuff}}
-
-\bigskip\bigskip
-
-First let's test if the default | works
-
-\verbatim
-verbatim starts
-Some special chars:
- !@#$%^&*()_+
-Now test if doubling works:
- This line ends with a single ||
-Now test if I can use || to get non-verbatim stuff:
- \junk
-verbatim ends
-|endverbatim
-
-\bigskip\bigskip
-
-Now let's try the same with escape set to \#.
-\verbatimescapechar\#
-
-\verbatim
-verbatim starts
-Some special chars:
- !@$%^&*()_+
-Now test if doubling works:
- This line ends with a single ##
-Now test if I can use ## to get non-verbatim stuff:
- #junk
-verbatim ends
-#endverbatim
-
-\bigskip\bigskip
-
-Now with @.
-\verbatimescapechar\@
-
-\verbatim
-verbatim starts
-Some special chars:
- !#$%^&*()_+
-Now test if doubling works:
- This line ends with a single @@
-Now test if I can use @@ to get non-verbatim stuff:
- @junk
-verbatim ends
-@endverbatim
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/verbatim.tex b/Master/texmf-dist/source/eplain/base/test/verbatim.tex
deleted file mode 100644
index 677d0f3b176..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/verbatim.tex
+++ /dev/null
@@ -1,65 +0,0 @@
-% This file is public domain.
-%
-\input eplain
-
-Leading spaces:
-
-\verbatim
----T--T----
-One
-
- Two
-
- Three
-
- Four
-
-Five
-|endverbatim
-
-The same again with spaces on empty lines:
-
-\verbatim
----T--T----
-One
-
- Two
-
- Three
-
- Four
-
-Five
-|endverbatim
-
-Now for some tabs:
-
-\verbatim
---------T-------T
-One
-
- Two
-
- Three
-
- Four
-
-Five
-
-|endverbatim
-
-Here is how you can get vertical bars into verbatim:
-
-\verbatim
-||!@#$%^&*()_-+=\~`{}[]:'';'<>?,./
-|endverbatim
-
-And here's you can use it in a paragraph:
-\verbatim middle%%%%|endverbatim. And this is the example from the
-manual, quoted with a leading space: `\verbatim| ||\#%&!|endverbatim'.
-
-Now we change the escape character to @ and have a leading space:
-\verbatimescapechar @
-`\verbatim@ @@|my what big teeth you have!@endverbatim'.
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/vlach.tex b/Master/texmf-dist/source/eplain/base/test/vlach.tex
deleted file mode 100644
index 1aa8262d1b6..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/vlach.tex
+++ /dev/null
@@ -1,258 +0,0 @@
-% This file is public domain.
-%
-%Date: Sun, 29 Nov 92 18:21:53 EST
-%From: avlach@cleveland.next.nd.edu (alan vlach)
-%To: Karl Berry <karl@ra.cs.umb.edu>
-%Subject: Re: eplain
-%
-%My problem occurs when I try to call \singlecolumn too quickly after
-%I have called \doublecolumns, which is probably bad style anyway, but
-%here's a sample file (below) so you can see what's happening.
-%
-%Put \singlecolumn just one paragraph later and everything works OK.
-%
-%Thanks for looking at this.
-%
-%Sincerely,
-%Alan Vlach
-%alan.d.vlach.1@nd.edu
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\input eplain
-
-This is a dummy file just to show Karl Berry the problem I'm having.
-
-Here is a first paragraph of nonsense. Here is a first paragraph of
-nonsense. Here is a first paragraph of nonsense. Here is a first
-paragraph of nonsense. Here is a first paragraph of nonsense. Here is
-a first paragraph of nonsense. Here is a first paragraph of nonsense.
-Here is a first paragraph of nonsense. Here is a first paragraph of
-nonsense. Here is a first paragraph of nonsense. Here is a first
-paragraph of nonsense. Here is a first paragraph of nonsense. Here is
-a first paragraph of nonsense. Here is a first paragraph of nonsense.
-Here is a first paragraph of nonsense. Here is a first paragraph of
-nonsense.
-
-Here is another paragraph of nonsense. Here is another paragraph of
-nonsense. Here is another paragraph of nonsense. Here is another
-paragraph of nonsense. Here is another paragraph of nonsense. Here is
-another paragraph of nonsense. Here is another paragraph of nonsense.
-Here is another paragraph of nonsense. Here is another paragraph of
-nonsense. Here is another paragraph of nonsense. Here is another
-paragraph of nonsense. Here is another paragraph of nonsense. Here is
-another paragraph of nonsense. Here is another paragraph of nonsense.
-Here is another paragraph of nonsense. Here is another paragraph of
-nonsense. Here is another paragraph of nonsense. Here is another
-paragraph of nonsense. Here is another paragraph of nonsense. Here is
-another paragraph of nonsense. Here is another paragraph of nonsense.
-Here is another paragraph of nonsense. Here is another paragraph of
-nonsense. Here is another paragraph of nonsense. Here is another
-paragraph of nonsense. Here is another paragraph of nonsense. Here is
-another paragraph of nonsense. Here is another paragraph of nonsense.
-Here is another paragraph of nonsense. Here is another paragraph of
-nonsense. Here is another paragraph of nonsense. Here is another
-paragraph of nonsense.
-
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-
-\doublecolumns
-
-And here is where the double columns begin.
-And here is where the double columns begin.
-And here is where the double columns begin.
-And here is where the double columns begin.
-And here is where the double columns begin.
-And here is where the double columns begin.
-And here is where the double columns begin.
-And here is where the double columns begin.
-And here is where the double columns begin.
-And here is where the double columns begin.
-And here is where the double columns begin.
-And here is where the double columns begin.
-And here is where the double columns begin.
-And here is where the double columns begin.
-
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-
-\singlecolumn
-
-The single column resumes. The single column resumes.
-
-The single column resumes. The single column resumes.
-
-The single column resumes. The single column resumes.
-
-The single column resumes. The single column resumes.
-
-The single column resumes. The single column resumes.
-
-The single column resumes. The single column resumes.
-
-The single column resumes. The single column resumes.
-
-The single column resumes. The single column resumes.
-
-The single column resumes. The single column resumes.
-
-The single column resumes. The single column resumes.
-
-The single column resumes. The single column resumes.
-
-The single column resumes. The single column resumes.
-
-The single column resumes. The single column resumes.
-
-
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-Here is the $n^{\rm th}$ paragraph of nonsense.
-
-This is the final paragraph. This is the final paragraph.
-This is the final paragraph. This is the final paragraph.
-This is the final paragraph. This is the final paragraph.
-This is the final paragraph. This is the final paragraph.
-This is the final paragraph. This is the final paragraph.
-This is the final paragraph. This is the final paragraph.
-This is the final paragraph. This is the final paragraph.
-This is the final paragraph. This is the final paragraph.
-This is the final paragraph. This is the final paragraph.
-This is the final paragraph. This is the final paragraph.
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/whitespc.tex b/Master/texmf-dist/source/eplain/base/test/whitespc.tex
deleted file mode 100644
index eb3ca0d6b3b..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/whitespc.tex
+++ /dev/null
@@ -1,51 +0,0 @@
-% This file is public domain.
-%
-\ifx\eplain\undefined \input eplain \fi
-
-\vbox{\obeywhitespace Does it work in vbox ?}
-
-This is some normal text, in a normal paragraph, that's been indented in
-the normal way. Isn't that nice? The lines after the first aren't
-indented, as usual.
-
-This line is the start of a paragraph; the obeyed material is next. And
-it continues on the same line.
-{\obeywhitespace This is the start of the obeyed stuff.
- And this one by a couple spaces more than the indentation.
-Back to the normal indentation--- some extra space there, did you notice?
-That's it.
-}
-This is the end of the paragraph with the obeyed stuff, and it shouldn't
-be indented, but it should start at the beginning of the line, since it
-continues the paragraph.
-
-{\obeywhitespace This obeyed material starts a paragraph.
-That line should have the normal indentation (so should this one).
-And this line ends with the closing brace to the group.}
-And this line continues the paragraph.
-
-{\obeywhitespace
-Some more obeyed material (and a newline after the control sequence):
-
-That was a blank line above.
-}
-
-That time no normal stuff continued the paragraph. It shouldn't have
-made any difference.
-Some more normal text, with spaces treated normally again.
-
-Here is some {\obeywhitespace obeyed stuff} in the middle of a line.
-And this {\obeywhitespace more stuff} has multiple spaces before
-the `more', that should be ignored.
-
-{\blanklineskipamount = -.5\baselineskip
-\obeywhitespace The blank line after this line
-
-should be half as much as the blank lines above and below.
-}
-
-{\obeywhitespace And now we should be
-
-back to normal.}
-
-\bye
diff --git a/Master/texmf-dist/source/eplain/base/test/xampl.tex b/Master/texmf-dist/source/eplain/base/test/xampl.tex
deleted file mode 100644
index 4b6eaab3f3e..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/xampl.tex
+++ /dev/null
@@ -1,13 +0,0 @@
-% This file is public domain.
-%
-% Test xampl.bib.
-%
-%\ifx\undefined\eplain \input eplain \fi
-\input btxmac
-
-\bibliography{xampl}
-\bibliographystyle{apalike}
-
-\nocite{*}
-
-\end
diff --git a/Master/texmf-dist/source/eplain/base/test/xref.tex b/Master/texmf-dist/source/eplain/base/test/xref.tex
deleted file mode 100644
index 70096bd29e9..00000000000
--- a/Master/texmf-dist/source/eplain/base/test/xref.tex
+++ /dev/null
@@ -1,39 +0,0 @@
-% This file is public domain.
-%
-% Test file for cross-references.
-%
-\ifx\undefined\eplain \input eplain \fi
-
-\catcode`\_ = 2
-
-defining ``foo bar'':
-\xrdef{foo bar}.
-
-and also a `sect' (make that word `Section') label `s' to be `3.1':
-\definexref{s}{3.1}{sect}.
-\def\sectword{Section}
-
-Let's also define two labels with a numbers, ``label1'' and ``label2'':
-\xrdef{label1}\xrdef{label2}
-
-\vfill\eject
-
-defining ``foo baz''.
-\xrdef{foo baz}
-\vfill\eject
-
-Define something with all the other characters, including unprintable
-ones: \xrdef{1234567890)(@!`['";:]|<>,./?À-=+}.
-
-
-using everything (these should be page 1 and page 2):
-\xref{foo bar} and \xref{foo baz}.
-
-And now the ones with numbers (page 1): \xref{label1} and \xref{label2}.
-
-And now the weird one (page 3): \xref{1234567890)(@!`['";:]|<>,./?À-=+}.
-
-ref, refn, and refs on s: \ref{s}, \refn{s}, \refs{s}.
-
-And an undefined one: \xref{undefined}.
-\end
diff --git a/Master/texmf-dist/source/eplain/base/xeplain.tex b/Master/texmf-dist/source/eplain/base/xeplain.tex
deleted file mode 100644
index 5464d27a82e..00000000000
--- a/Master/texmf-dist/source/eplain/base/xeplain.tex
+++ /dev/null
@@ -1,4783 +0,0 @@
-% xeplain.tex: macros for nonformatting. Written 1989--94 by (mostly)
-% Karl Berry. Some additions/changes 1997--98 by Adam Lewenberg.
-% These macros are in the public domain.
-%
-% This is the ``extended plain'' TeX format that's described in
-% `eplain.texinfo', which you should have received with this file. We
-% assume plain has been loaded.
-%
-% N.B.: A version number is defined at the beginning and end of this file;
-% please change those numbers whenever the file is modified!
-% And it's best to rename the file if you're going to distribute a
-% modified version.
-%
-% Some macros were written and/or suggested by Paul Abrahams.
-% Other sources (e.g., The TeXbook) are cited at the appropriate places.
-%
-%% @texfile{
-%% author = "Karl Berry, Steven Smith, Oleg Katsitadze, and others",
-%% version = "REPLACE-WITH-VERSION",
-%% date = "REPLACE-WITH-DATE",
-%% filename = "xeplain.tex",
-%% email = "bug-eplain@tug.org",
-%% checksum = "REPLACE-WITH-CHECKSUM",
-%% codetable = "ASCII",
-%% supported = "yes",
-%% docstring = "This file defines macros that extend and expand on
-%% plain TeX. eplain.tex is xeplain.tex and the other
-%% source files with comments stripped; see the original
-%% files for author credits, etc. And please base diffs
-%% or other contributions on xeplain.tex, not the
-%% stripped-down eplain.tex.",
-%% }
-%
-%
-% Load eplain.tex only once (to avoid using up \new's).
-% \eplain is defined at the end of this file, so we can test \eplain to
-% detect whether eplain.tex has been loaded already or not.
-%
-% We use \expandafter because the merge script strips any lines
-% with an \endinput.
-%
-\ifx\eplain\undefined
- \let\next\relax
-\else
- \expandafter\let\expandafter\next\csname endinput\endcsname
-\fi
-\next
-% The ifpdf.sty file included below was written by Heiko Oberdiek.
-% See the complete source file (e.g., in this distribution) for
-% comments.
-%% [[[include ifpdf.sty]]]
-%
-%
-% Category codes, etc.
-%
-\def\makeactive#1{\catcode`#1 = \active \ignorespaces}%
-\chardef\letter = 11
-\chardef\other = 12
-% The following two macros were adopted from miniltx.tex of graphics.
-\def\makeatletter{%
- \edef\resetatcatcode{\catcode`\noexpand\@\the\catcode`\@\relax}%
- \catcode`\@11\relax
-}%
-\def\makeatother{%
- \edef\resetatcatcode{\catcode`\noexpand\@\the\catcode`\@\relax}%
- \catcode`\@12\relax
-}%
-%
-%
-% So we can have user-inaccessible control sequences.
-%
-\edef\leftdisplays{\the\catcode`@}%
-\catcode`@ = \letter
-\let\@eplainoldatcode = \leftdisplays
-%
-% Save miniscule amounts of memory and time by writing \toks@ii instead
-% of \toks2.
-\toksdef\toks@ii = 2
-%
-%
-% This macro is defined in The TeXbook, but it never made it
-% into plain TeX. \dospecials is defined there, though.
-%
-\def\uncatcodespecials{%
- \def\do##1{\catcode`##1 = \other}%
- \dospecials
-}%
-%
-%
-% Here is a way to do \let^^M = \cs, where the \let need not be global.
-{%
- \makeactive\^^M %
- \long\gdef\letreturn#1{\let^^M = #1}%
-}%
-%
-%
-% Swallow parameters, etc.
-%
-\let\@eattoken = \relax % Define this, so \eattoken can be used in \edef.
-\def\eattoken{\let\@eattoken = }%
-\def\gobble#1{}%
-\def\gobbletwo#1#2{}%
-\def\gobblethree#1#2#3{}%
-%
-% We can't just use \empty as the identity function, since then outer
-% braces which would supposedly delimit the argument would define a group.
-\def\identity#1{#1}%
-%
-% True if #1 is the empty string, i.e., called like `\ifempty{}'.
-% Use notes:
-% So far, \ifempty works in the following cases:
-% 1. \ifempty{}\message{empty}\else\message{not empty}\fi --> empty
-% 2. \ifempty\undefined\message{empty}\else\message{not empty}\fi --> not empty
-% But does NOT work in the case
-% 3. \def\empty{}
-% \ifempty\empty\message{empty}\else\message{not empty}\fi --> not empty
-% Question: When should \ifempty be true?
-\def\@emptymarkA{\@emptymarkB}
-% The above line suggested by Stanislav Brabec.
-\def\ifempty#1{\@@ifempty #1\@emptymarkA\@emptymarkB}%
-\def\@@ifempty#1#2\@emptymarkB{\ifx #1\@emptymarkA}%
-%
-% Turn a definition into the characters that compose it. See
-% ``Sanitizing control sequences under \write'', by Ron Whitney, TUGboat
-% 11(4), p.620.
-\def\@gobblemeaning#1:->{}%
-\def\sanitize{\expandafter\@gobblemeaning\meaning}%
-%
-%
-% From p.308 of the TeXbook. This cannot be used in places where TeX
-% might be skipping tokens, e.g., in conditionals.
-%
-\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}%
-%
-%
-% \csname constructions come up an awful lot, so we save typing with the
-% following. (But the extra macro expansion does take time, so we don't
-% use these in frequently-executed code.)
-%
-\def\csn#1{\csname#1\endcsname}%
-\def\ece#1#2{\expandafter#1\csname#2\endcsname}%
-%
-%
-% \expandonce{TOKEN} abbreviates \expandafter\noexpand TOKEN.
-%
-\def\expandonce{\expandafter\noexpand}%
-%
-%
-% Don't show our register allocations in the log.
-%
-\let\@plainwlog = \wlog
-\let\wlog = \gobble
-%
-%
-% Make it convenient to put newlines in error messages.
-%
-\newlinechar = `^^J
-%
-%
-% Sometimes it is convenient to have everything in the transcript file
-% and nothing on the terminal. We don't just call \tracingall here,
-% since that produces some useless output on the terminal.
-%
-\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
-\def\loggingall{\tracingcommands\tw@\tracingstats\tw@
- \tracingpages\@ne\tracingoutput\@ne\tracinglostchars\@ne
- \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne
- \showboxbreadth\maxdimen\showboxdepth\maxdimen
-}%
-% Show the complete contents of boxes.
-%
-\def\tracingboxes{\showboxbreadth = \maxdimen \showboxdepth = \maxdimen}%
-%
-% Don't trace anything, except restore \showbox... to plain's values.
-%
-\def\gtracingoff{\begingroup \globaldefs = 1 \tracingoff \endgroup}%
-\def\tracingoff{\tracingonline\z@\tracingcommands\z@\tracingstats\z@
- \tracingpages\z@\tracingoutput\z@\tracinglostchars\z@
- \tracingmacros\z@\tracingparagraphs\z@\tracingrestores\z@
- \showboxbreadth5 \showboxdepth3
-}%
-%
-%
-% Definitions to produce actual `{' (et al.) characters in an output
-% file via \write. We omit the line break after the first }, since we
-% have no comment character at that point.
-%
-\begingroup
- \catcode`\{ = 12 \catcode`\} = 12
- \catcode`\[ = 1 \catcode`\] = 2
- \gdef\lbracechar[{]%
- \gdef\rbracechar[}]%
- \catcode`\% = \other
- \gdef\percentchar[%]\endgroup
-%
-%
-% Leave horizontal mode (if we're in it), then insert a penalty.
-% And conversely.
-%
-\def\vpenalty{\ifhmode\par\fi \penalty}%
-\def\hpenalty{\ifvmode\leavevmode\fi \penalty}%
-%
-%
-% Make \else usable in \loop. From Victor Eijkhout's TeX by Topic (page
-% 104). See also Alois Kabelschacht, TUGboat 8(2), page 184.
-%
-\def\iterate{%
- \let\loop@next\relax
- \body
- \let\loop@next\iterate
- \fi
- \loop@next
-}%
-%
-%
-% Add #2 (which is expanded in an \edef) to the end of the definition of
-% #1 (which must be a previously-defined control sequence). This is a
-% way to construct simple lists.
-%
-\def\edefappend#1#2{%
- \toks@ = \expandafter{#1}%
- \edef#1{\the\toks@ #2}%
-}%
-%
-%
-% \allowhyphens, from TeXbook, p. 395. Allows following & preceding word
-% to be hyphenated.
-%
-\def\allowhyphens{\nobreak\hskip\z@skip}%
-%
-%
-%
-% Hooks.
-%
-% \hookaction{HOOK}{TOKENS} adds TOKENS to the list of actions for
-% HOOK. We avoid defining a \toks register for each hook, although
-% maybe that isn't so important.
-%
-% \hookappend and \hookprepend add TOKENS specificially to the end or
-% the beginning. When the argument is used, \toks@ will be the previous
-% value of the hook, and \toks@ii the new tokens.
-%
-\long\def\hookprepend{\@hookassign{\the\toks@ii \the\toks@}}%
-\long\def\hookappend{\@hookassign{\the\toks@ \the\toks@ii}}%
-\let\hookaction = \hookappend % either one should be ok
-%
-%
-% \@hookassign{LAST-DEF}{HOOK}{TOKENS} makes \toks@ the previous value
-% of HOOK, and \toks@ii TOKENS, and then assigns the new value using
-% LASTDEF. We store the hook in a control sequence \@HOOKhook.
-%
-\long\def\@hookassign#1#2#3{%
- % Make \toks@ be the expansion (to one level) of \@HOOKhook, or empty.
- \expandafter\ifx\csname @#2hook\endcsname \relax
- % If \@HOOKhook was undefined, let it be empty.
- \toks@ = {}%
- \else
- % Otherwise, expand it to one level. We can't just assign from
- % \expandafter{\csname ...} since then the \toks register would
- % contain the control sequence, not its definition.
- \expandafter\let\expandafter\temp \csname @#2hook\endcsname
- \toks@ = \expandafter{\temp}%
- \fi
- \toks2 = {#3}% Don't expand the argument all the way.
- \ece\edef{@#2hook}{#1}%
-}%
-%
-%
-% \hookactiononce{HOOK}\CS adds `\global\let\CS=\relax' to the
-% definition of \CS, then adds to HOOK. Thus, \CS is expanded the next
-% time HOOK is called, but then it goes away. This only works if \CS is
-% expandable, though.
-%
-\long\def\hookactiononce#1#2{%
- \edefappend#2{\global\let\noexpand#2\relax}
- \hookaction{#1}#2%
-}%
-%
-%
-% \hookrun{HOOKNAME} runs whatever actions have been defined for HOOK.
-%
-\def\hookrun#1{%
- \expandafter\ifx\csname @#1hook\endcsname \relax \else
- % Isn't this fun? We want to get rid of the \fi before expanding
- % the actions, so that they can read what's coming up next.
- \def\temp{\csname @#1hook\endcsname}%
- \expandafter\temp
- \fi
-}%
-%
-%
-%
-% Properties a la Lisp.
-%
-% \setproperty{ATOM}{PROPNAME}{VALUE} defines the property PROPNAME on the
-% ``atom'' ATOM to have VALUE.
-%
-\def\setproperty#1#2#3{\ece\edef{#1@p#2}{#3}}%
-\def\setpropertyglobal#1#2#3{\ece\xdef{#1@p#2}{#3}}%
-%
-%
-% \getproperty{ATOM}{PROPNAME} expands to the value of the property
-% PROPNAME on ATOM, or to nothing (i.e., \empty), if the property isn't
-% present.
-%
-\def\getproperty#1#2{%
- \expandafter\ifx\csname#1@p#2\endcsname\relax
- % then \empty
- \else \csname#1@p#2\endcsname
- \fi
-}%
-%
-%
-%
-% Macros to support BibTeX are in a separate file, btxmac.tex.
-%
-% (They are maintained separately, too, by Oren Patashnik,
-% opbibtex@cs.stanford.edu.) btxmac.tex also defines other macros we
-% want to use and make available.
-%
-% But not all people want to read the BibTeX macros, because of either
-% space or time considerations. Therefore, we look for \nobibtex,
-% which, if defined, causes btxmac.tex not to be read. But we still
-% have to get \tokstostring et al. defined---so eplain.tex contains
-% those definitions, automatically edited in from btxmac.tex. All the
-% documentation has been removed, so you must read btxmac.tex if you
-% want the comments.
-%
-%
-% We want to give a slightly different message than btxmac if no .aux
-% file exists (unless the person using us has already define some
-% message, possibly empty.)
-%
-\ifx\@undefinedmessage\@undefined
- \def\@undefinedmessage
- {No .aux file; I won't warn you about undefined labels.}%
-\fi
-%
-%
-% We use a token register to define all the BibTeX definitions, to avoid
-% problems with the \if... constructions when they are conditionally
-% read.
-%
-%% [[[here is the first set of common definitions from btxmac]]]
-\toks0 = {%
- %% [[[here are the BibTeX-specific definitions from btxmac]]]
-}%
-\ifx\nobibtex\@undefined \the\toks0 \fi
-%% [[[here is the second set of common definitions from btxmac]]]
-%
-% Here are the control sequences that btxmac.tex defines using an @,
-% because btxmac.tex wants to absolutely minimize the chance of
-% conflicts. But these control sequence implement documented features
-% of eplain, so we want to allow people to use them without the @.
-%
-\let\auxfile = \@auxfile
-\let\for = \@for
-\let\futurenonspacelet = \@futurenonspacelet
-\def\iffileexists{\if@fileexists}%
-\let\innerdef = \@innerdef
-\let\innernewcount = \@innernewcount
-\let\innernewdimen = \@innernewdimen
-\let\innernewif = \@innernewif
-\let\innernewwrite = \@innernewwrite
-\let\linenumber = \@linenumber
-\let\readauxfile = \@readauxfile
-\let\spacesub = \@spacesub
-\let\testfileexistence = \@testfileexistence
-\let\writeaux = \@writeaux
-%
-%
-% btxmac.tex defines \innerdef. Let's use it to make an abbreviation
-% for \innerdef\inner<name>{<name>}.
-%
-\def\innerinnerdef#1{\expandafter\innerdef\csname inner#1\endcsname{#1}}%
-%
-% Use that in turn to make non-outer versions of the rest of plain TeX's
-% allocation macros. (btxmac.tex already did a few of them.)
-%
-\innerinnerdef{newbox}%
-\innerinnerdef{newfam}%
-\innerinnerdef{newhelp}%
-\innerinnerdef{newinsert}%
-\innerinnerdef{newlanguage}%
-\innerinnerdef{newmuskip}%
-\innerinnerdef{newread}%
-\innerinnerdef{newskip}%
-\innerinnerdef{newtoks}%
-%
-%
-% Besides doing a \write to the aux file, we also need to do an
-% \immediate\write.
-%
-\def\immediatewriteaux#1{%
- \ifx\noauxfile\@undefined
- \immediate\write\@auxfile{#1}%
- \fi
-}%
-%
-%
-% We want \biblabelprint to define hyperlink destination. For that,
-% we save the label for the current bibliography entry from within
-% \bblitemhook.
-\def\bblitemhook#1{\gdef\@hlbblitemlabel{#1}}%
-%
-\def\biblabelprint#1{%
- \noindent
- \hbox to \biblabelwidth{%
- \hldest@impl{bib}{\@hlbblitemlabel}%
- \biblabelprecontents
- \biblabelcontents{#1}%
- \biblabelpostcontents
- }%
- \kern\biblabelextraspace
-}%
-% We want each citation item to be hyperlink to bibliography entry.
-% To avoid unnecessary warnings about undefined destinations (e.g.,
-% from pdfTeX), produce the link only when .bbl file (which does the
-% \hldest's) is present.
-\def\eplainprintcitepreitem#1{\hlstart@impl{cite}{#1}}%
-\def\eplainprintcitepostitem{\hlend@impl{cite}}%
-%
-%
-\def\printcitepreitem#1{%
- \testfileexistence[\bblfilebasename]{bbl}%
- \iffileexists
- \global\let\printcitepreitem\eplainprintcitepreitem
- \global\let\printcitepostitem\eplainprintcitepostitem
- \else
- \global\let\printcitepreitem\gobble
- \global\let\printcitepostitem\relax
- \fi
- \printcitepreitem{#1}%
-}%
-%
-%
-%
-% Macros that produce output.
-%
-% \obeywhitespace makes both end-of-lines and spaces in the input be
-% respected in the output. Even spaces at the beginning of lines turn
-% into blank space the size of the natural space of the current font.
-% The reason why plain TeX's \obeyspaces does not do this last is that
-% it produces actual space characters, i.e., glue, and glue is discarded
-% at a(n output) line break, and so if line breaks in the input are
-% line breaks in the output...
-%
-% Tabs are not affected; they will still produce glue (a single space).
-%
-\begingroup
- \makeactive\^^M \makeactive\ % No spaces or ^^M's from here on.
-\gdef\obeywhitespace{%
-\makeactive\^^M\def^^M{\par\futurelet\next\@finishobeyedreturn}%
-\makeactive\ \let =\ %
-%
-% The group we use here is the one \obeywhitespace must be enclosed in.
-% If we don't do this, then if the obeyed stuff ends in a newline, the
-% indent produced by the definition of ^^M will make that line indented,
-% even if it isn't the end of the paragraph.
-\aftergroup\@removebox%
-\futurelet\next\@finishobeywhitespace%
-}%
-%
-% \@finishobeywhitespace eats any spaces and/or the end-of-line after
-% the \obeywhitespace command itself. The group here is the one that it
-% itself creates.
-%
-\gdef\@finishobeywhitespace{{%
-\ifx\next %
-\aftergroup\@obeywhitespaceloop%
-\else\ifx\next^^M%
-\aftergroup\gobble%
-\fi\fi}}%
-%
-% \@finishobeyedreturn is invoked at the end of every input line. We
-% check if the next thing is also a return, and, if so, insert extra
-% space. Then we start the next line.
-%
-\gdef\@finishobeyedreturn{%
-\ifx\next^^M\vskip\blanklineskipamount\fi%
-\indent%
-}%
-\endgroup
-%
-% The argument here is the space that we are supposed to eat after the
-% \obeywhitespace command.
-%
-\def\@obeywhitespaceloop#1{\futurelet\next\@finishobeywhitespace}%
-%
-%
-% This removes the last box, if it was a empty box of width \parindent.
-% We might have been called inside a \vbox, so we have to test if we are
-% in horizontal mode before using \lastbox.
-%
-\def\@removebox{%
- \ifhmode
- \setbox0 = \lastbox
- \ifdim\wd0=\parindent
- \setbox2 = \hbox{\unhbox0}%
- \ifdim\wd2=0pt
- % Don't put it back: it was an indentation box.
- % This \ignorespaces ignores spaces after the group.
- \ignorespaces
- \else
- \box2 % Put it back: it wasn't empty.
- \fi
- \else
- \box0 % Put it back: it wasn't the right width.
- \fi
- \fi
-}%
-%
-% We allow for extra (possibly negative) space when we hit blank lines.
-%
-\newskip\blanklineskipamount
-\blanklineskipamount = 0pt
-%
-%
-% A good way to print fractions in text when you don't want
-% to use \over (which should be most of the time), and yet
-% just `1/2' doesn't look right. (From the TeXbook,
-% the answer to exercise 11.6, p.311.)
-%
-\def\frac#1/#2{\leavevmode
- \kern.1em \raise .5ex \hbox{\the\scriptfont0 #1}%
- \kern-.1em $/$%
- \kern-.15em \lower .25ex \hbox{\the\scriptfont0 #2}%
-}%
-%
-%
-% The `e' just means `Eplain', as in `Eplain's hrule'. The advantage
-% to using these is that you can change the default thickness.
-%
-\newdimen\hruledefaultheight \hruledefaultheight = 0.4pt
-\newdimen\hruledefaultdepth \hruledefaultdepth = 0.0pt
-\newdimen\vruledefaultwidth \vruledefaultwidth = 0.4pt
-%
-\def\ehrule{\hrule height\hruledefaultheight depth\hruledefaultdepth}%
-\def\evrule{\vrule width\vruledefaultwidth}%
-%
-%
-% The texnames.sty and path.sty files included below were originally
-% written by Nelson Beebe and Philip Taylor, respectively. See the
-% complete source files (e.g., in this distribution) for comments.
-%% [[[include texnames.sty]]]
-%% [[[include path.sty]]]
-%
-%
-% A square box, suitable for being a marker in lists.
-%
-\def\blackbox{\vrule height .8ex width .6ex depth -.2ex \relax}% square bullet
-%
-%
-% From p.311 of the TeXbook.
-%
-% Make an unfilled rectangle with the dimensions of \box0. #1 is the
-% height of the rules, #2 the depth (i.e., the thicknesses).
-%
-\def\makeblankbox#1#2{%
- \ifvoid0
- \errhelp = \@makeblankboxhelp
- \errmessage{Box 0 is void}%
- \fi
- \hbox{\lower\dp0
- \vbox{\hidehrule{#1}{#2}%
- \kern -#1% overlap rules
- \hbox to \wd0{\hidevrule{#1}{#2}%
- \raise\ht0\vbox to #1{}% vrule height
- \lower\dp0\vtop to #1{}% vrule depth
- \hfil\hidevrule{#2}{#1}%
- }%
- \kern-#1\hidehrule{#2}{#1}%
- }%
- }%
-}%
-%
-\newhelp\@makeblankboxhelp{Assigning to the dimensions of a void^^J%
- box has no effect. Do `\string\setbox0=\string\null' before you^^J%
- define its dimensions.}%
-%
-%
-% Produce an hrule with height #1 and depth #2, and insert kerning so it
-% doesn't change the current position.
-%
-\def\hidehrule#1#2{\kern-#1\hrule height#1 depth#2 \kern-#2}%
-%
-% Produce a vrule with width #1+#2, kerning so as not to change the
-% current position.
-%
-\def\hidevrule#1#2{%
- \kern-#1%
- \dimen@=#1\advance\dimen@ by #2%
- \vrule width\dimen@
- \kern-#2%
-}%
-%
-%
-% The \boxit macro from the TeXbook, trivially generalized to allow
-% something other than 3pt around the TeX box being boxed.
-%
-\newdimen\boxitspace \boxitspace = 3pt
-%
-\long\def\boxit#1{%
- \vbox{%
- \ehrule
- \hbox{%
- \evrule
- \kern\boxitspace
- \vbox{\kern\boxitspace \parindent = 0pt #1\kern\boxitspace}%
- \kern\boxitspace
- \evrule
- }%
- \ehrule
- }%
-}%
-%
-%
-% Produce the written-out form of a number.
-%
-\def\numbername#1{\ifcase#1%
- zero%
- \or one%
- \or two%
- \or three%
- \or four%
- \or five%
- \or six%
- \or seven%
- \or eight%
- \or nine%
- \or ten%
- \or #1%
- \fi
-}%
-%
-% The following arrow macros were written by Steven Smith. See arrow.tex.
-\let\@plainnewif = \newif
-\let\@plainnewdimen = \newdimen
-\let\newif = \innernewif
-\let\newdimen = \innernewdimen
-\edef\@eplainoldandcode{\the\catcode`& }%
-\catcode`& = 11
-\toks0 = {%
- %% [[[include arrow1]]]
-}%
-\catcode`& = 4
-\toks2 = {%
- %% [[[include arrow2]]]
-}%
-\let\newif = \@plainnewif
-\let\newdimen = \@plainnewdimen
-\ifx\noarrow\@undefined \the\toks0 \the\toks2 \fi
-\catcode`& = \@eplainoldandcode
-%
-%
-%
-% Environments.
-%
-% Define an ``environment'': arbitrary text, enclosed by \begingroup and
-% \endgroup. But you get to label the group, so that if you forget an
-% \environment or an \endenvironment, you will probably get an error
-% message about it.
-%
-% Since the environment names appear in \errmessage arguments, it's best
-% to keep them to `letter' and `other' characters. I suppose we could
-% call \tokstostring to allow more general labels.
-%
-% These macros improve slightly on the answer to exercise 5.7 in
-% The TeXbook, by making some checks on \begingroup and \endgroup, as
-% well as just making sure \environment and \endenvironment's match.
-%
-%
-\def\environment#1{%
- \ifx\@groupname\@undefined\else
- % This gets invoked if we have two \environments (and no matching
- % \endenvironment to the first) with an \endgroup in between.
- \errhelp = \@unnamedendgrouphelp
- \errmessage{`\@groupname' was not closed by \string\endenvironment}%
- \fi
- % Use \edef in case we are passed a macro that contains the name,
- % instead of the name.
- \edef\@groupname{#1}%
- \begingroup
- \let\@groupname = \@undefined
-}%
-%
-\def\endenvironment#1{%
- \endgroup
- \edef\@thearg{#1}%
- \ifx\@groupname\@thearg
- \else
- \ifx\@groupname\@undefined
- % Unfortunately, one gets an `extra \endgroup' message before
- % seeing this. But we have to restore \@groupname, so I see no
- % alternative.
- \errhelp = \@isolatedendenvironmenthelp
- \errmessage{Isolated \string\endenvironment\space for `#1'}%
- \else
- \errhelp = \@mismatchedenvironmenthelp
- \errmessage{Environment `#1' ended, but `\@groupname' started}%
- \endgroup % Probably a typo in the names.
- \fi
- \fi
- \let\@groupname = \@undefined
-}%
-%
-\newhelp\@unnamedendgrouphelp{Most likely, you just forgot an^^J%
- \string\endenvironment. Maybe you should try inserting another^^J%
- \string\endgroup to recover.}%
-%
-\newhelp\@isolatedendenvironmenthelp{You ended an environment X, but^^J%
- no \string\environment{X} to start it is anywhere in sight.^^J%
- You might also be at an \string\endenvironment\space that would match^^J%
- a \string\begingroup, i.e., you forgot an \string\endgroup.}%
-%
-\newhelp\@mismatchedenvironmenthelp{You started an environment named X, but^^J%
- you ended one named Y. Maybe you made a typo in one^^J%
- or the other of the names?}%
-%
-%
-% The above sort of environment allows nesting. But environments
-% shouldn't always be allowed to nest (like the \flushright,
-% \flushleft, and \center ones defined below). Here are some macros to
-% help deal with that.
-%
-% \checkenv goes at the beginning of a macro that is
-% going to define the environment.
-%
-\newif\ifenvironment
-\def\checkenv{\ifenvironment \errhelp = \@interwovenenvhelp
- \errmessage{Interwoven environments}%
- \egroup \fi
-}%
-%
-\newhelp\@interwovenenvhelp{Perhaps you forgot to end the previous^^J%
- environment? I'm finishing off the current group,^^J%
- hoping that will fix it.}%
-%
-%
-%
-% Mathematics displays.
-%
-% By default, TeX centers displayed material. To get left-justified
-% displays, say \leftdisplays. To go back to centered displays, say
-% \centereddisplays.
-%
-% This is based on an approach developed by Donald Arseneau,
-% asnd@triumfrg.bitnet.
-%
-\newtoks\previouseverydisplay
-% Here we want to make ordinary math displays flush left,
-% indented by the dimen \leftdisplayindent, which defaults
-% to \parindent.
-%
-% How do you want the first column aligned?
-\let\@leftleftfill\relax % as it was
-%\let\@leftleftfill\hfill % makes more sense, but could be too ugly
-%
-% Surely it makes more sense to not sum \leftdisplayindent+\parindent
-\newdimen\leftdisplayindent \leftdisplayindent=\parindent
-\newif\if@leftdisplays
-%
-\def\leftdisplays{%
- \if@leftdisplays\else
- \previouseverydisplay = \everydisplay
- \everydisplay = {\the\previouseverydisplay \leftdisplaysetup}%
- \let\@save@maybedisableeqno = \@maybedisableeqno
- \let\@saveeqno = \eqno
- \let\@saveleqno = \leqno
- \let\@saveeqalignno = \eqalignno
- \let\@saveleqalignno = \leqalignno
- \let\@maybedisableeqno = \relax
- \def\eqno{\hfill\textstyle\enspace}%
- \def\leqno{%
- \hfill
- \hbox to0pt\bgroup
- \kern-\displaywidth
- % was: \kern-\displayindent % really \displayindent?
- \kern-\leftdisplayindent % I'll use just \leftdisplayindent
- $\aftergroup\@leftleqnoend % inserted after ending $
- }%
- \@redefinealignmentdisplays
- \@leftdisplaystrue
- \fi
-}%
-\newbox\@lignbox
-\newdimen\disprevdepth
-
-% In order to use $$ for left-aligned equation we have to
-% put something like \leftline{$\displaystyle ...$} in the
-% display. Then \eqno works basically like \hfill.
-% In order to make $$<assignments>\eqalignno{...}$$ work as
-% expected, including page breaks, we have to get rid of the
-% horizontal box, and un-vbox the alignment. Sadly, \unvbox
-% does not perform baselineskip handing, so we need to get
-% the \prevdepth ourselves...in order to get the prevdepth,
-% the outermost display must be an alignment display.
-% Therefore, an ordinary $$ a=b $$ becomes:
-% $$\halign{#\cr\noalign{\disprevdepth = \prevdepth
-% \leftline{$\displaystyle a=b$}
-% }}$$
-%
-\def\centereddisplays{%
- % If \leftdisplays hasn't been called, don't try to restore all the
- % stuff it changes.
- %
- \if@leftdisplays
- \everydisplay = \previouseverydisplay
- \let\@maybedisableeqno = \@save@maybedisableeqno
- \let\eqno = \@saveeqno
- \let\leqno = \@saveleqno
- \let\eqalignno = \@saveeqalignno
- \let\leqalignno = \@saveleqalignno
- \@leftdisplaysfalse
- \fi
-}%
-%
-\def\leftdisplaysetup{%
-% surely not this *and* \leftdisplayindent? : \dimen@ = \parindent
- \dimen@ = \leftdisplayindent
- \advance\dimen@ by \leftskip
- \advance\displayindent by \dimen@
- \advance\displaywidth by -\dimen@
-% this outermost alignment doesn't align anything.
- \halign\bgroup##\cr \noalign\bgroup
- \disprevdepth = \prevdepth
- \setbox\z@ = \hbox to\displaywidth\bgroup
- % Why strut?? \strut
- % Why this?? \advance\hsize by -\displayindent
- $\displaystyle
- \aftergroup\@lefteqend % inserted after ending $
-}
-%
-\def\@lefteqend{% gets inserted between the ending $$
- \hfil\egroup% end box 0
- \@putdisplay}
-% gets inserted between trailing $$.
-\def\@leftleqnoend{\hss \egroup $}% end the \hbox to 0pt for \leqno, restore $
-%
-\def\@putdisplay{%
- \ifvoid\@lignbox % Ordinary display; use it.
- \moveright\displayindent\box\z@
- \else % alignment display; unwrap alignment
- \prevdepth = \dp\@lignbox % affects the skip *below*
- \unvbox\@lignbox
- \fi
- \egroup\egroup % end \noalign, end outer \halign
- $% restore first $ of trailing $$
-}
-%
-\def\@redefinealignmentdisplays{%
- \def\displaylines##1{
- \global\setbox\@lignbox\vbox{%
- \prevdepth = \disprevdepth
- \displ@y
- \tabskip\displayindent
- \halign{\hbox to\displaywidth
- {$\@lign\displaystyle####\hfil$\hfil}\crcr
- ##1\crcr}}}%
- \def\eqalignno##1{%
- \def\eqno{&}%
- \global\setbox\@lignbox\vbox{%
- \prevdepth = \disprevdepth
- \displ@y
- \advance\displaywidth by \displayindent
- \tabskip\displayindent
- \halign to\displaywidth{%
- \hfil $\@lign\displaystyle{####}$\@leftleftfill\tabskip\z@skip
- &$\@lign\displaystyle{{}####}$\hfil\tabskip\centering
- &\llap{$\@lign####$}\tabskip\z@skip\crcr
- ##1\crcr}}}%
- \def\leqalignno##1{%
- \def\eqno{&}%
- \global\setbox\@lignbox\vbox{%
- \prevdepth = \disprevdepth
- \displ@y
- \advance\displaywidth by \displayindent
- \tabskip\displayindent
- \halign to\displaywidth{%
- \hfil $\@lign\displaystyle{####}$\@leftleftfill\tabskip\z@skip
- &$\@lign\displaystyle{{}####}$\hfil\tabskip\centering
- &\kern-\displaywidth
-% \showthe\displayindent \showthe\leftdisplayindent
- \rlap{\kern\displayindent \kern-\leftdisplayindent$\@lign####$}%
- \tabskip\displaywidth\crcr
- ##1\crcr}}}%
-}%
-%
-% \noalign is typically used to insert a few words (`and', for example)
-% between two aligned equations. So I don't think the \noaligned
-% material should be indented. Since \noalign takes <vertical mode
-% material>, we would end up with double indentation, anyway: one
-% because we're indenting the whole display, and one at the start of the
-% <v.m.m.>. (If you want to change any of this, you can put something in
-% \@everynoalign.) So, we use this definition for \noalign in a
-% left-justified \eqalignno:
-%
-\let\@primitivenoalign = \noalign
-\newtoks\@everynoalign
-\def\@lefteqalignonoalign#1{%
- \@primitivenoalign{%
- % Is it right to set \leftskip=0pt first, thus perhaps making this
- % work in lists and so forth? We just compensate for the other ways
- % the display is indented here.
- \advance\leftskip by -\parindent
- \advance\leftskip by -\leftdisplayindent
- \parskip = 0pt
- %
- % We use \parindent=0pt instead of \noindent because the latter
- % starts unrestricted horizontal mode, which means the alignment
- % we're inside will wind up being as wide as the page. When the arg
- % is just vertical material, this is wrong. For example, using
- % \matrix inside \eqalignno fails if \noindent is used.
- \parindent = 0pt
- \the\@everynoalign
- #1%
- }%
-}%
-%
-%
-%
-% Time macros.
-%
-% TeX sets \time, \day, \month, and \year when it begins. (And does not
-% update them as it runs!)
-%
-%
-% \monthname produces the name of the month, abbreviated to three
-% letters. The primitive \month should never be zero.
-%
-\def\monthname{%
- \ifcase\month
- \or Jan\or Feb\or Mar\or Apr\or May\or Jun%
- \or Jul\or Aug\or Sep\or Oct\or Nov\or Dec%
- \fi
-}%
-%
-% \fullmonthname is like \monthname, except it doesn't abbreviate.
-%
-\def\fullmonthname{%
- \ifcase\month
- \or January\or February\or March\or April\or May\or June%
- \or July\or August\or September\or October\or November\or December%
- \fi
-}%
-%
-% \timestring produces the current time, in a format like `1:14 p.m.'.
-%
-\def\timestring{\begingroup
- \count0 = \time
- \divide\count0 by 60
- \count2 = \count0 % The hour, from zero to 23.
- %
- \count4 = \time
- \multiply\count0 by 60
- \advance\count4 by -\count0 % The minute, from zero to 59.
- % But we need the minutes with a leading zero, if necessary.
- \ifnum\count4<10
- \toks1 = {0}%
- \else
- \toks1 = {}%
- \fi
- %
- % Convert the hour into `a.m.' or `p.m.', and make it mod 12.
- \ifnum\count2<12
- \toks0 = {a.m.}%
- \else
- \toks0 = {p.m.}%
- \advance\count2 by -12
- \fi
- %
- % If it's midnight, call it `12', not `0'.
- \ifnum\count2=0
- \count2 = 12
- \fi
- %
- % Produce the output.
- \number\count2:\the\toks1 \number\count4 \thinspace \the\toks0
-\endgroup}%
-%
-%
-% \timestamp produces a text string for the whole thing like
-% `23 Apr 1964 1:14 p.m.'.
-%
-\def\timestamp{\number\day\space\monthname\space\number\year\quad\timestring}%
-%
-%
-% \today produces the current date, as in `23 April 1964'.
-%
-\def\today{\the\day\ \fullmonthname\ \the\year}%
-%
-%
-%
-% (Typographical) lists.
-%
-% These macros can produce numbered or unnumbered lists.
-%
-% You can change the spacing by assigning new values to these registers.
-% They are used by both kinds of lists. \listleftindent is relative to
-% the current paragraph indentation, while \listrightindent is an
-% absolute value. I do this for two reasons: (1) it is more useful, if not
-% more ``logical'', to make list indentation depend on the paragraph
-% indentation; (2) footnotes do not work if \parindent is zero, and
-% having a footnote in a list item is perfectly reasonable.
-%
-% If you change \baselineskip and want \abovelistskip and \belowlistskip
-% to retain their meanings here, you will have to reassign to them. The
-% \baselineskip here is the value at the time eplain.tex is read, i.e.,
-% 12pt (most likely).
-%
-% If the items in your lists are very long, you might want to
-% make \interitemskipamount nonzero.
-%
-\newskip\abovelistskipamount \abovelistskipamount = .5\baselineskip
- \newcount\abovelistpenalty \abovelistpenalty = 10000
- \def\abovelistskip{\vpenalty\abovelistpenalty \vskip\abovelistskipamount}%
-\newskip\interitemskipamount \interitemskipamount = 0pt
- \newcount\belowlistpenalty \belowlistpenalty = -50
- \def\belowlistskip{\vpenalty\belowlistpenalty \vskip\belowlistskipamount}%
-\newskip\belowlistskipamount \belowlistskipamount = .5\baselineskip
- \newcount\interitempenalty \interitempenalty = 0
- \def\interitemskip{\vpenalty\interitempenalty \vskip\interitemskipamount}%
-\newdimen\listleftindent \listleftindent = 0pt
-\newdimen\listrightindent \listrightindent = 0pt
-\let\listmarkerspace = \enspace
-%
-% To do arbitrary things at the start of each list:
-\newtoks\everylist
-%
-% If you want no space between items for a particular list
-% (perhaps because the items in it are short), you can say,
-% e.g., \numberedlist\listcompact.
-%
-\def\listcompact{\interitemskipamount = 0pt \relax}%
-%
-% This is called to set up the parameters by both sorts of lists.
-% Because we set \rightskip, we finish off the current paragraph.
-%
-\newdimen\@listindent
-%
-\def\beginlist{%
- % Insert the space above this list, before we change \leftskip
- % (because the \vskip in here might be what ends the paragraph).
- \abovelistskip
- %
- \@listindent = \parindent
- \advance\@listindent by \listleftindent
- %
- % \leftskip shifts nested lists to the right on the page.
- \advance\leftskip by \@listindent
- \advance\rightskip by \listrightindent
- %
- % We always need \itemnumber, so we can know whether an item is the
- % first one or not.
- \itemnumber = 1
- %
- \the\everylist
-}%
-%
-% A list item, for both kinds of lists.
-%
-\def\li{\@getoptionalarg\@finli}%
-\def\@finli{%
- % Save \@optionalarg in case \interitemskip garble it.
- \let\@lioptarg\@optionalarg
- % Write xref definition but do not define hyperlink destination
- % (\printitem will do it).
- \ifx\@lioptarg\empty \else
- \begingroup
- \@@hldestoff
- \expandafter\writeitemxref\expandafter{\@lioptarg}%
- \endgroup
- \fi
- \ifnum\itemnumber=1 \else \interitemskip \fi
- % Add hyperlink destination in front of \marker before doing \printitem.
- \begingroup
- \ifx\@lioptarg\empty \else
- \toks@ = \expandafter{\@lioptarg}%
- \let\li@nohldest@marker\marker
- \edef\marker{\noexpand\hldest@impl{li}{\the\toks@}\noexpand\li@nohldest@marker}%
- \fi
- \printitem
- \endgroup
- \advance\itemnumber by 1
- \advance\itemletter by 1
- \advance\itemromannumeral by 1
- %
- % Just in case somebody creeps in with an argument or something.
- \ignorespaces
-}%
-%
-% \writeitemxref{LABEL} writes out a definition for LABEL to be \marker
-% for the aux file.
-%
-\def\writeitemxref#1{\definexref{#1}\marker{item}}%
-%
-% \printitem is used to print items by both sorts of lists. A \par gets
-% produced before every item -- even the first one. We also want to
-% make paragraphs after the first appear to be indented -- i.e., they
-% will have double indentation. It is usually bad exposition to have
-% lists with multiparagraph items, but sometimes it is unavoidable.
-%
-\def\printitem{%
- \par
- \nobreak
- \vskip-\parskip
- \noindent
- \printmarker\marker
-}%
-%
-% Output the list marker.
-%
-\def\printmarker#1{\llap{\marker \enspace}}%
-%
-% Common ending.
-%
-\def\endlist{\belowlistskip}%
-%
-%
-% \numberedlist produces items which are numbered sequentially, starting
-% from one. You start items with \li (`list item'). End the list with
-% \endnumberedlist.
-%
-% A nested \numberedlist produces items labelled `(a)', `(b)', etc. A
-% doubly (and deeper) nested \numberedlist labels items with `*'.
-%
-% These registers keep track of where we are.
-%
-\newcount\numberedlistdepth
-\newcount\itemnumber
-\newcount\itemletter
-\newcount\itemromannumeral
-%
-\def\numberedmarker{%
- \ifcase\numberedlistdepth
- (impossible)%
- \or \printitemnumber
- \or \printitemletter
- \or \printitemromannumeral
- \else *%
- \fi
-}%
-%
-% These produce the text of the labels. We use \the\itemletter so that
-% the value will expand.
-%
-\def\printitemnumber{\number\itemnumber}%
-\def\printitemletter{\char\the\itemletter}%
-\def\printitemromannumeral{\romannumeral\itemromannumeral}%
-\def\numberedprintmarker#1{\llap{#1) \listmarkerspace}}%
-%
-\def\numberedlist{\environment{@numbered-list}%
- % This is set back to zero by getting to the end of the group.
- \advance\numberedlistdepth by 1
- \itemletter = `a
- \itemromannumeral = 1
- \beginlist
- \let\marker = \numberedmarker
- \let\printmarker = \numberedprintmarker
-}%
-%
-\def\endnumberedlist{%
- \par
- \endenvironment{@numbered-list}%
- \endlist
-}%
-%
-% Allow synonyms for \numberedlist.
-\let\orderedlist = \numberedlist
-\let\endorderedlist = \endnumberedlist
-%
-%
-%
-% \unorderedlist produces items which are labelled with bullets. You
-% start an item with \li, just as with numbered lists. You end the list
-% with \endunorderedlist.
-%
-% A nested \unorderedlist produces items labelled with em-dashes. A
-% doubly (and deeper) nested \unorderedlist uses `*'.
-%
-\newcount\unorderedlistdepth
-%
-\def\unorderedmarker{%
- \ifcase\unorderedlistdepth
- (impossible)%
- \or \blackbox
- \or ---%
- \else *%
- \fi
-}%
-\def\unorderedprintmarker#1{\llap{#1\listmarkerspace}}%
-%
-\def\unorderedlist{\environment{@unordered-list}%
- \advance\unorderedlistdepth by 1
- \beginlist
- \let\marker = \unorderedmarker
- \let\printmarker = \unorderedprintmarker
-}%
-%
-\def\endunorderedlist{%
- \par
- \endenvironment{@unordered-list}%
- \endlist
-}%
-%
-%
-%
-% Verbatim listing.
-%
-% ... well, almost verbatim. We assume the font \tt has all the
-% characters that will appear. Control characters, except for tabs and
-% form feeds (and returns) won't produce anything useful. Tabs produce
-% a fixed amount of space, and form feeds produce a page break.
-%
-% This is based on Knuth's ideas in Appendix D of the TeXbook, p. 380.
-% The argument should be a filename.
-%
-% if you need to do something more for your particular fonts and/or
-% environment before the file is input, give a definition to
-% \setuplistinghook. If you want line numbers on the output, you can
-% say \let\setuplistinghook = \linenumberedlisting.
-%
-\def\listing#1{%
- \par \begingroup
- \@setuplisting
- \setuplistinghook
- \input #1
- \endgroup
-}%
-%
-\let\setuplistinghook = \relax
-%
-\def\linenumberedlisting{%
- \ifx\lineno\undefined \innernewcount\lineno \fi
- \lineno = 0
- \everypar = {\advance\lineno by 1 \printlistinglineno}%
-}%
-\def\printlistinglineno{\llap{[\the\lineno]\quad}}%
-%
-%
-% \uncatcodespecials must come before \obeywhitespace, lest a space
-% character in the input produce character 32 from the \tt font.
-% Ensure ^^L is active and non-outer.
-%
-{%
- \makeactive\^^L
- \let^^L = \relax
- \gdef\@setuplisting{%
- \uncatcodespecials
- \obeywhitespace
- \makeactive\`
- \makeactive\^^I
- \makeactive\^^L
- \def^^L{\vfill\break}%
- \parskip = 0pt
- \listingfont
- }%
-}%
-\def\listingfont{\tt}%
-%
-% Give definitions to the characters we want to be special.
-%
-% Do ` separately, so can use ` in the \catcode commands elsewhere.
-%
-{%
- \makeactive\`
- \gdef`{\relax\lq}% Defeat ligatures.
-}%
-{%
- \makeactive\^^I
- \gdef^^I{\hskip8\fontdimen2\font \relax}%
-}%
-%
-%
-% \verbatim ... |endverbatim typesets the ... in typewriter. To produce a |
-% in the ..., use ||. This macro was contributed by beebe@math.utah.edu.
-% Generalized to characters other than | by dorai@cs.rice.edu.
-%
-\def\verbatimescapechar#1{%
- \gdef\@makeverbatimescapechar{%
- \@makeverbatimdoubleescape #1%
- \catcode`#1 = 0
- }%
-}%
-\def\@makeverbatimdoubleescape#1{%
- \catcode`#1 = \other
- \begingroup
- \lccode`\* = `#1%
- \lowercase{\endgroup \ece\def*{*}}%
-}%
-\verbatimescapechar\| % initially escapechar is |
-%
-\def\verbatim{\begingroup
- \uncatcodespecials
- \makeactive\` % make space character a single space, not stretchable
- \@makeverbatimescapechar
- \tt\obeywhitespace}
-\let\endverbatim = \endgroup
-%
-%
-%
-% Table of contents, list of figures, etc.
-%
-% Entries for the table of contents are recorded in \jobname.toc, which
-% we open for writing at the first \writetocentry. Actually, we use
-% \tocfilebasename for the root of the filename to read; \jobname is
-% the default.
-%
-\def\definecontentsfile#1{%
- \ece\innernewwrite{#1file}%
- \ece\innernewif{if@#1fileopened}%
- \ece\let{#1filebasename} = \jobname
- \ece\def{open#1file}{\opencontentsfile{#1}}%
- \ece\def{write#1entry}{\writecontentsentry{#1}}%
- \ece\def{writenumbered#1entry}{\writenumberedcontentsentry{#1}}%
- \ece\innernewif{ifrewrite#1file} \csname rewrite#1filetrue\endcsname
- \ece\def{read#1file}{\readcontentsfile{#1}}%
-}%
-%
-% We provide \opentocfile, \readtocfile, etc., by default.
-\definecontentsfile{toc}%
-%
-% And `toc' is just the argument to this macro.
-\def\opencontentsfile#1{%
- \csname if@#1fileopened\endcsname \else
- \ece{\immediate\openout}{#1file} = \csname #1filebasename\endcsname.#1
- \ece\global{@#1fileopenedtrue}%
- \fi
-}%
-%
-% \writetocentry#1#2 produces a line in the .toc file that
-% looks like:
-% \toc#1entry{#2}{page number}
-% e.g.,
-% \tocchapterentry{Introduction}{2}
-% would be written by
-% \writetocentry{chapter}{Introduction}
-% if the chapter started on page two.
-%
-% Thus, #1 is intended to be something like `chapter' or `section', #2
-% to be the text of the title.
-%
-% Of course, if you want, you can \write\tocfile yourself with whatever
-% you like. In that case, you must also call \opentocfile.
-%
-% By the way, it would be wrong to put a \percentchar at the end of the
-% output line. Then, when the .toc file is read, if each line is turned
-% into a \leftline, say, there would be no legal breakpoint between the
-% boxes, and one extremely long line would result.
-%
-% `toc' is the first argument to this; \writetocentry is defined by
-% \definecontentsfile.
-\def\writecontentsentry#1#2#3{\writenumberedcontentsentry{#1}{#2}{#3}{}}%
-%
-% Sometimes you want the control sequence to take another number (e.g.,
-% a chapter number) as a parameter. (Although you can pass anything you
-% want as the third parameter, naturally.) The third parameter is
-% expanded at the point of the \writenumberedtocentry, not when the
-% \write actually happens. This makes the usual case---the third
-% parameter being \the\someregister---work.
-%
-% For example:
-% \writenumberedtocentry{chapter}{The second chapter}{2}
-% would produce:
-% \tocchapterentry{The second chapter}{2}{14}
-%
-% if the second chapter started on page 14.
-%
-% `toc' is the first argument, as above.
-\def\writenumberedcontentsentry#1#2#3#4{%
- \csname ifrewrite#1file\endcsname
- \csname open#1file\endcsname
- \toks0 = {\expandafter\noexpand \csname #1#2entry\endcsname}%
- \def\temp{#3}%
- %
- % Usually #4 is just `\the\register', which we want to expand. But
- % if it's not a number at all -- e.g., if it's an author's name, we
- % don't want to expand control sequences for accents and the like.
- % So we play some games here.
- \toks2 = \expandafter{#4}%
- \edef\cs{\the\toks2}%
- \edef\@wr{%
- \write\csname #1file\endcsname{%
- \the\toks0 % the \toc...entry control sequence
- {\sanitize\temp}% the text
- \ifx\empty\cs\else {\sanitize\cs}\fi % A secondary number, or nothing:
- {\noexpand\folio}% the page number
- }%
- }%
- \@wr
- \fi
- \ignorespaces
-}%
-%
-% The entries are read in when the user invokes \readtocfile (which
-% should be before the first \writetocentry). We do not open the .toc
-% file to allow reading it in twice to make a short contents or some
-% such. This should not cause any problems because each of
-% \writecontentsentry and \writenumberedcontentsentry open the .toc
-% file for writing (i.e., empty it) before trying to write to it.
-\def\readcontentsfile#1{%
- \edef\temp{%
- \noexpand\testfileexistence[\csname #1filebasename\endcsname]{#1}%
- }\temp
- \if@fileexists
- \input \csname #1filebasename\endcsname.#1\relax
- \fi
-}%
-%
-% Here are some sample definitions of the \toc...entry macros. Perhaps
-% you or your book designer can come up with a better way of handling
-% contents than leaders. These definitions are just examples, not
-% something you might want to actually use to print a document.
-\def\tocchapterentry#1#2{\line{\bf #1 \dotfill\ #2}}%
-\def\tocsectionentry#1#2{\line{\quad\sl #1 \dotfill\ \rm #2}}%
-\def\tocsubsectionentry#1#2{\line{\qquad\rm #1 \dotfill\ #2}}%
-%
-%
-%
-% Cross-references.
-%
-% Definitions of references are recorded in \jobname.aux, called
-% \auxfile in the macros, which btxmac.tex has opened.
-%
-% When a label isn't defined, we only want to complain if
-% \xrefwarningtrue; btxmac uses \if@citewarning for this, so we have to
-% reuse that name. We can't just say \let\ifxrefwarning =
-% \if@citewarning, since then changes to the latter won't be reflected
-% in the former. On the other hand, we have to have a true \if...
-% command, so \if's and \fi's match properly. What a mess.
-%
-\let\ifxrefwarning = \iftrue
-\def\xrefwarningtrue{\@citewarningtrue \let\ifxrefwarning = \iftrue}%
-\def\xrefwarningfalse{\@citewarningfalse \let\ifxrefwarning = \iffalse}%
-%
-%
-% \xref{foo} produces ``p.\thinspace <page#>''. \xrefn{foo} produces
-% ``<page#>''. \xrdef{foo} produces nothing, but defines the label
-% `foo' to be on the current page.
-%
-% As usual, it takes two passes to get the cross-references right. I
-% would like to check for labels being defined twice, but I don't know
-% how to do that. If the cross-reference file has been read in, many
-% cross-references will be defined that I don't want to complain about.
-% It is only if two \xrdef commands are given to the same string that I
-% want to complain. I could define a new control sequence for each
-% cross-reference, and check that, but that seems like too high of a
-% price to pay.
-%
-%
-% \xrlabel{LABEL} expands to a cross-reference internal name. We append
-% an _ character to NAME, to help avoid conflicts. And we append an `x'
-% so that we don't redefine \_ on an empty label.
-%
-\begingroup
- % Mike Spivak's MathTime macros for Times Roman fonts changes the
- % catcode of _ to be active. Undo that. (From adam@symcom.math.uiuc.edu.)
- \catcode`\_ = 8
- \gdef\xrlabel#1{#1_x}%
-\endgroup
-%
-%
-% \xrdef{LABEL} defines LABEL to be the current page number. But we
-% don't define the label here, because the page number might be off: if
-% this is not the first time through, the label would already be
-% defined, and we would redefine it with the wrong information.
-%
-\def\xrdef#1{%
- \begingroup
- % Define hyperlink destination.
- \hldest@impl{xrdef}{#1}%
- % Define cross-reference but not hyperlink destination.
- \begingroup
- \@@hldestoff
- \definexref{#1}{\noexpand\folio}{page}%
- \endgroup
- \endgroup
-}%
-%
-% \definexref{LABEL}{DEFINITION}{CLASS} defines a cross-reference named
-% LABEL of label class CLASS to be DEFINITION. (Or LABEL can be a
-% control sequence; it's expanded to get the label text.) To get a
-% possible page number right, we have to write the definition out to the
-% auxiliary file, instead of only defining it directly.
-%
-\def\definexref#1#2#3{%
- % Define a hyperlink destination LABEL.
- \hldest@impl{definexref}{#1}%
- % Remember what we're given; it might be `\@optionalarg', which
- % \readauxfile trashes. (No loss of generality here, since \csname
- % will fully expand the label anyway.)
- \edef\temp{#1}%
- %
- % Be sure we've read the aux file before we zap it:
- \readauxfile
- %
- % When we read in the aux file next time, define the label:
- \edef\@wr{\noexpand\writeaux{\string\@definelabel{\temp}{#2}{#3}}}%
- \@wr
- \ignorespaces
-}%
-%
-% \@definelabel{LABEL}{DEFINITION}{CLASS} actually defines LABEL of
-% label class CLASS to be DEFINITION.
-%
-\def\@definelabel#1#2#3{%
- % Define the control sequence.
- \expandafter\gdef\csname\xrlabel{#1}\endcsname{#2}%
- %
- % Remember what kind of label this is, so \ref will know what to do.
-% \global\setproperty{\xrlabel{#1}}{class}{#3}%
- \setpropertyglobal{\xrlabel{#1}}{class}{#3}%
-}%
-%
-% \reftie is used by several cross-referencing macros to separate
-% optional text from label reference. \refspace is used by \ref to
-% separate optional text from \CLASSword and by \xref to separate
-% optional text from `p. '.
-%
-\def\reftie{\penalty\@M \ }% Do not rely on `~' being defined as a tie.
-\let\refspace\
-%
-% Typeset a reference to the label #1. If optional argument is
-% present it will be tied with \reftie to the reference and become
-% part of the hyperlink.
-%
-\def\xrefn{\@getoptionalarg\@finxrefn}%
-\def\@finxrefn#1{%
- % Hyperlink and optional TEXT.
- \hlstart@impl{ref}{#1}%
- \ifx\@optionalarg\empty \else
- % Save \@optionalarg before it is trashed by \readauxfile.
- \let\@xrefnoptarg\@optionalarg
- % Read .aux file -- \@optionalarg may contain cross-references.
- \readauxfile
- % Typeset the \@optionalarg
- {\@@hloff\@xrefnoptarg}\reftie
- \fi
- % Typeset the reference.
- \plain@xrefn{#1}%
- \hlend@impl{ref}%
-}%
-% This is equivalent to \xrefn but without the hyperlink stuff and the
-% optional parameter so that its expansion does not contain the many
-% \let's, \def's and such which the expansion of \xrefn contains. It
-% is needed by \eqdefn and \eqsubdefn to be able to `cleanly' write
-% texts of equation labels to .aux file. It is also used when
-% functionality of \xrefn is needed without the hyperlink and the
-% optional parameter.
-\def\plain@xrefn#1{%
- \readauxfile
- %
- \expandafter \ifx\csname\xrlabel{#1}\endcsname\relax
- \if@citewarning
- \message{\linenumber Undefined label `#1'.}%
- \fi
- %
- % Give it a dummy definition, though, to stop multiple error messages.
- \expandafter\def\csname\xrlabel{#1}\endcsname{%
- `{\tt
- \escapechar = -1
- \expandafter\string\csname#1\endcsname
- }'%
- }%
- \fi
- \csname\xrlabel{#1}\endcsname % Always produce something.
-}%
-%
-% \refn is just a synonym.
-%
-\let\refn = \xrefn
-%
-% One common case: print `p. ' before the page number.
-%
-\def\xrefpageword{p.\thinspace}%
-%
-\def\xref{\@getoptionalarg\@finxref}%
-\def\@finxref#1{%
- % Hyperlink and optional TEXT.
- \hlstart@impl{xref}{#1}%
- \ifx\@optionalarg\empty \else
- {\@@hloff\@optionalarg}\refspace
- \fi
- % Typeset page reference but omit hyperlink.
- \xrefpageword\plain@xrefn{#1}%
- \hlend@impl{xref}%
-}%
-%
-% \ref[TEXT]{LABEL} typesets TEXT, \CLASSword for LABEL's class (if it's defined)
-% and then does \refn on LABEL. But amstex also has a \ref, so tell the
-% user if they try to use \ref and have loaded amsppt.sty.
-%
-% \refs{LABEL} is similar, but puts the letter `s' after the \...word, thus
-% producing (for example) `Figures 1.2' (presumably to be followed by
-% `and~\refn{fig-1.3}').
-%
-% Note that \ref takes an optional TEXT, while \refs does not. This
-% text (together with \CLASSword) will become part of the hyperlink
-% generated by \ref. \refs does not include \CLASSword in the
-% hyperlink.
-%
-\def\@maybewarnref{%
- \ifundefined{amsppt.sty}%
- % No amsppt.sty, so just use ours.
- \else
- \message{Warning: amsppt.sty and Eplain both define \string\ref. See
- the Eplain manual.}%
- % Remember their definition.
- \let\amsref = \ref
- \fi
- \let\ref = \eplainref
- \ref
-}
-\let\ref = \@maybewarnref
-%
-\def\eplainref{\@getoptionalarg\@fineplainref}%
-\def\@fineplainref{\@generalref{1}{}}%
-\def\refs{\let\@optionalarg\empty \@generalref{0}s}%
-%
-% #1 is an integer flag which tells whether hyperlink should include
-% \@optionalarg and class word (non-0) or not (0). #2 is the text to
-% follow the \...word. Both #1 and #2 are supplied by the macros
-% above. #3 comes from the document, and is the LABEL.
-%
-% \reftie separates \@optionalarg or \..word from \refn; \refspace
-% separates \@optionalarg from \..word.
-%
-\def\@generalref#1#2#3{%
- % Save \@optionalarg before it is trashed by \readauxfile.
- \let\@generalrefoptarg\@optionalarg
- \readauxfile
- % Maybe start hyperlink here.
- \ifcase#1 \else \hlstart@impl{ref}{#3}\fi
- % Get the class of the label.
- \edef\temp{\getproperty{\xrlabel{#3}}{class}}%
- % If the word for this class is not defined, don't complain.
- \expandafter\ifx\csname \temp word\endcsname\relax
- % Produce \@optionalarg followed by a \reftie, if \@optionalarg is
- % not empty.
- \ifx\@generalrefoptarg\empty \else {\@@hloff\@generalrefoptarg\reftie}\fi
- \else
- \begingroup
- \@@hloff
- % Produce \@optionalarg, if not empty, followed by a \refspace.
- \ifx\@generalrefoptarg\empty \else \@generalrefoptarg \refspace \fi
- % Produce the word.
- \csname \temp word\endcsname
- % Add the suffix and then put in a \reftie before the \refn.
- #2\reftie
- \endgroup
- \fi
- % Maybe start hyperlink here.
- \ifcase#1 \hlstart@impl{ref}{#3}\fi
- % Typeset the reference omitting hyperlinks.
- \plain@xrefn{#3}%
- \hlend@impl{ref}%
-}%
-%
-%
-% References to equations are similar.
-%
-% \eqref{foo} produces ``(<text for equation label foo>)''.
-% \eqdefn{foo} advances \eqnumber, resets \eqsubnumber, and defines
-% `foo' to be the new number.
-% \eqsubdefn{foo} advances \eqsubnumber and defines `foo'. \eqref works
-% for both equations and subequations,
-% \eqdef{foo} does \eqdefn, then inserts an \eqno and \eqref.
-% \eqsubdef{foo} does \eqsubdefn, then what \eqdef does.
-%
-% The non-``sub'' macros also take an optional argument; if it's
-% present, we use it as the text for the equation label, instead of the
-% various counters.
-%
-% Because there are no page break issues with equations, we can
-% immediately define the control sequence. But we also need to write
-% the definition out, in case the user wants to forward reference an
-% equation (bad style as that may be).
-%
-% The current equation number is in \eqnumber; we just advance it by one
-% for each \eqdef. You can handle fancier equation numbers (e.g., ones
-% that include a chapter number) by redefining \eqprint, below, and
-% using your own counters. We do provide for one level of substructure,
-% since that's more painful to implement than superstructures.
-%
-\newcount\eqnumber
-\newcount\subeqnumber
-%
-%
-% \eqdefn[TEXT]{LABEL} defines LABEL to be TEXT (if it's present),
-% otherwise it advances \eqnumber and defines LABEL to be that. It
-% doesn't produce anything.
-%
-\def\eqdefn{\@getoptionalarg\@fineqdefn}%
-\def\@fineqdefn#1{%
- \ifx\@optionalarg\empty
- \global\advance\eqnumber by 1
- % We call \eqconstruct here instead of in \@eqdefn because we don't
- % want to expand it for \eqsubdefn -- \eqsubdefn already includes an
- % \eqrefn which includes the text of the label which was \eqconstructed.
- \def\temp{\eqconstruct{\number\eqnumber}}%
- \else
- % In the next \def there is (I believe) a spurious \noexpand.
- % I leave in the old definition, albeit commented out, in case the
- % \noexpand really _is_ necessary. But I don't thikn so. Adam Lewenberg
-% \def\temp{\noexpand\@optionalarg}%
- \def\temp{\@optionalarg}%
- \fi
- %
- % Always reset the current subequation number:
- \global\subeqnumber = 0
- %
- % Remember this label, so that we can define subequations:
- \gdef\@currenteqlabel{#1}%
- \toks0 = \expandafter{\@currenteqlabel}%
- %
- % Actually do the definition, replacing \xrefn and \eqrefn with
- % \plain@xrefn and taking precautions not to expand \plain@xrefn
- % in what we output to the aux file. \plain@xrefn expands to many things,
- % including \count@'s and \edef's and the expansion of \xrlabel, and
- % it's just a real mess.
- \begingroup
- \def\eqrefn{\noexpand\plain@xrefn}%
- \def\xrefn{\noexpand\plain@xrefn}%
- \edef\temp{\noexpand\@eqdefn{\the\toks0}{\temp}}%
- \temp
- \endgroup
-}%
-%
-%
-% \eqsubdefn defines its argument as a ``subequation'' of the last \eqdef.
-%
-\def\eqsubdefn#1{%
- \global\advance\subeqnumber by 1
- \toks0 = {#1}%
- %
- % Get the text of the label;
- \toks2 = \expandafter{\@currenteqlabel}%
- %
- % We must expand \@currenteqlabel. We have to not expand
- % \eqsubreftext here, as well as \plain@xrefn (which we substitute
- % for \eqrefn and \xrefn), since the first arg to \eqsubreftext
- % could also include lots of complicated things.
- \begingroup
- \def\eqrefn{\noexpand\plain@xrefn}%
- \def\xrefn{\noexpand\plain@xrefn}%
- \def\eqsubreftext{\noexpand\eqsubreftext}%
- \edef\temp{%
- \noexpand\@eqdefn
- {\the\toks0}%
- {\eqsubreftext{\eqrefn{\the\toks2}}{\the\subeqnumber}}%
- }%
- \temp
- \endgroup
-}%
-%
-% \@eqdefn{LABEL}{REF-TEXT} actually handles the equation number
-% definitions and writing to the aux file.
-%
-% In contrast to \xrdef, we define LABEL right away (as REF-TEXT). We
-% can do this since we know right now what the right equation number is.
-% This eliminates some unnecessary warning. It also lets the user put
-% \eqdef{} on all equations and have it work, since then \eqref
-% refers to the just-defined new value.
-%
-\def\@eqdefn#1#2{%
- % Define hyperlink destination taking care of empty LABEL.
- \hl@define@eqlabel{#1}%
- \hldest@impl{eq}{\hl@eqlabel}%
- % Define cross-reference but not hyperlink destination.
- \begingroup
- \@@hldestoff
- \definexref{#1}{#2}{eq}%
- \endgroup
- % Define the LABEL.
- \@definelabel{#1}{#2}{eq}%
-}%
-%
-% \eqdef{LABEL} defines LABEL, with \eqdefn, then prints it. We allow
-% an optional argument to explicitly specify the text which we define
-% the label as.
-%
-\def\eqdef{\@getoptionalarg\@fineqdef}%
-\def\@fineqdef{%
- \toks0 = \expandafter{\@optionalarg}%
- \edef\temp{\noexpand\@eqdef{\noexpand\eqdefn[\the\toks0]}}%
- \temp
-}%
-%
-% \eqsubdef is to \eqdef as \eqsubdefn is to \eqdefn. No optional
-% argument allowed here.
-%
-\def\eqsubdef{\@eqdef\eqsubdefn}%
-%
-% \@eqdef{DEFN-CMD}{LABEL} defines LABEL, using DEFN-CMD. Then it
-% inserts an \eqno (unless it's called when an \eqno would be invalid).
-% Then it prints the newly-defined value using \eqprint.
-%
-\def\@eqdef#1#2{%
- % Define the label but not hyperlink destination (we want to define
- % the destination after \eqno). Note that \@eqdefn will call
- % \hl@define@eqlabel{#2}, so we won't call it again (definintions in
- % \hl@define@eqlabel must be global to survive past the group).
- \begingroup
- \@@hldestoff
- #1{#2}%
- \endgroup
- % Define hyperlink destination and print the text.
- \@maybedisableeqno
- \eqno % \hl@define@eqlabel already called in \@eqdefn.
- \hldest@impl{eq}{\hl@eqlabel}%
- \let\@optionalarg\empty % \@fineqref will examine \@optionalarg.
- {\@@hloff\@fineqref{#2}}% No hyperlink here.
- \@mayberestoreeqno
- \ignorespaces
-}%
-%
-%
-% If we are in an alignment or some other inner place, \eqno won't work.
-%
-\let\@mayberestoreeqno = \relax
-%
-\def\@maybedisableeqno{%
- \ifinner
- \global\let\eqno = \relax
- \global\let\@mayberestoreeqno = \@restoreeqno
- \fi
-}%
-%
-% This makes `\eqno' mean \eqno again.
-%
-\let\@primitiveeqno = \eqno
-\def\@restoreeqno{%
- \global\let\eqno = \@primitiveeqno
- \global\let\@mayberestoreeqno = \empty
-}%
-%
-%
-% \eqrefn[TEXT]{LABEL} produces the text for the equation label LABEL, or
-% something suitable if LABEL is undefined. (It possibly issues a
-% warning in the latter case as well.) TEXT followed by a \reftie is
-% prepended to the equation text as part of the hyperlink.
-%
-\def\eqrefn{\@getoptionalarg\@fineqrefn}%
-\def\@fineqrefn#1{%
- \eqref@start{#1}%
- % Typeset the equation reference but do not produce hyperlink.
- \plain@xrefn{#1}%
- \hlend
-}%
-%
-% \eqref[TEXT]{LABEL} is the usual way to refer to equation labels; it
-% calls \eqprint on the text of LABEL, prepending it with TEXT and a
-% \reftie as part of the hyperlink.
-%
-\def\eqref{\@getoptionalarg\@fineqref}%
-\def\@fineqref#1{%
- \eqref@start{#1}%
- % Typeset the equation reference but do not produce hyperlink.
- \eqprint{\plain@xrefn{#1}}%
- \hlend@impl{eq}%
-}%
-% Common code executed at the start of \@fineqrefn and \@fineqref.
-\def\eqref@start#1{%
- % Save \@optionalarg in case \phantomeqlabel is redefined by the
- % user to something that trashes it.
- \let\@eqrefoptarg\@optionalarg
- % Hyperlink (fetch last `phantom' equation label if LABEL is empty).
- \ifempty{#1}%
- \hlstart@impl{eq}{\phantomeqlabel}%
- \else
- \hlstart@impl{eq}{#1}%
- \fi
- % Optional TEXT followed by a \reftie.
- \ifx\@eqrefoptarg\empty \else
- {\@@hloff\@eqrefoptarg\reftie}%
- \fi
-}%
-%
-%
-% \eqconstruct{EQ-TEXT} constructs an equation number, i.e., the text to
-% be defined as the value of a label.
-%
-\let\eqconstruct = \identity
-%
-% \eqprint{EQ-TEXT} produces the typeset equation number EQ-TEXT.
-%
-\def\eqprint#1{(#1)}%
-%
-% \eqsubreftext{EQ-TEXT}{SUBEQ-TEXT} produces the text of a subequation
-% reference. (\eqprint is later called on the result of this to produce
-% output for subequations; I didn't define any \subeqprint.)
-%
-\def\eqsubreftext#1#2{#1.#2}%
-%
-%
-%
-% Indexing.
-%
-% \defineindex{PREFIX} defines an index with ``prefix'' PREFIX. The
-% prefix is used to construct the output filename and the various
-% commands. We just define all the index commands for this index to
-% call the general commands with PREFIX.
-%
-\let\extraidxcmdsuffixes = \empty
-%
-\outer\def\defineindex#1{%
- \def\@idxprefix{#1}%
- %
- % Define the indexing commands for this prefix.
- \for\@idxcmd:=,marked,submarked,name%
- \extraidxcmdsuffixes\do
- {%
- \@defineindexcmd\@idxcmd
- }%
- %
- % Allocate a stream for the output.
- \ece\innernewwrite{@#1indexfile}%
- %
- % And a conditional to test whether we've opened the file.
- \ece\innernewif{if@#1indexfileopened}%
-}%
-%
-%
-% \@defineindexcmd{SUFFIX} defines both silent and non-silent index
-% command for prefix \@idxprefix with suffix SUFFIX. That is, we define
-% both `\@idxprefix dxSUFFIX' and `\s\@idxprefix dxSUFFIX' to call the
-% corresponding generic command with \@idxprefix. \silentindexentry is
-% used to decide whether we should ignore following spaces.
-%
-\newif\ifsilentindexentry
-%
-\def\@defineindexcmd#1{%
- \@defineoneindexcmd{s}{#1}\silentindexentrytrue
- \@defineoneindexcmd{}{#1}\silentindexentryfalse
-}%
-%
-%
-% \@defineoneindexcmd{PREFIX}{SUFFIX}{PRECALL} does just one silent or
-% non-silent commands. We define the command `\@@PREFIXidxSUFFIX' to do
-% PRECALL, then define \@idxprefix, then call \@idxgetrange with an
-% argument of `\@@{,s}idxSUFFIX'. (So far every indexing command
-% should allow a range. If not, you could redefine `\@@{,s}idxSUFFIX'
-% after this macro is called.)
-%
-\def\@defineoneindexcmd#1#2#3{%
- \toks@ = {#3}%
- \edef\temp{%
- \def
- % We have to restrict expansion because the generic (\@@...)
- % commands will be defined after the first call to \defineindex.
- % Not expanding the user (\idx...) commands is unnecessary unless
- % the user has defined some new commands, but may as well be cautious.
- \expandonce\csname#1\@idxprefix dx#2\endcsname % e.g., \idx or \sidxname.
- {\def\noexpand\@idxprefix{\@idxprefix}% define \@idxprefix
- % call, e.g., \@@idx or \@@sidxname:
- \expandonce\csname @@#1idx#2\endcsname
- }%
- \def
- \expandonce\csname @@#1idx#2\endcsname{% e.g., \@@idx
- % First do PRECALL.
- \the\toks@
- % Then call \@idxgetrange with, e.g., \@idx or \@sidxname as its arg.
- \noexpand\@idxgetrange\expandonce\csname @#1idx#2\endcsname
- }%
- }%
- \temp
-}%
-%
-%
-% \@idxwrite{TERM}{PAGENO} writes a general index entry for TERM on page
-% PAGENO to the index file `\@idxprefix indexfile'. We open the stream
-% as `\indexfilebasename.\@idxprefix dx' if it isn't already open.
-%
-\let\indexfilebasename = \jobname
-%
-\def\@idxwrite#1#2{%
- % Be sure the file is opened.
- \csname if@\@idxprefix indexfileopened\endcsname \else
- \expandafter\immediate\openout\csname @\@idxprefix indexfile\endcsname =
- \indexfilebasename.\@idxprefix dx
- \expandafter\global\csname @\@idxprefix indexfileopenedtrue\endcsname
- \fi
- %
- % Save the index term.
- \def\temp{#1}%
- %
- % Write the index term and page number.
- \edef\@wr{%
- \expandafter\write\csname @\@idxprefix indexfile\endcsname{%
- \string\indexentry
- {\sanitize\temp}%
- {\noexpand#2}%
- }%
- }%
- \@wr
- %
- % Marginalize the index term, if desired.
- % (the \allowhyphens allows `infinitesimal' in \sidx{Infinitesimal}infinitesimal
- % to be hyphenated.
- \ifindexproofing \insert\@indexproof{\indexproofterm{#1}}\allowhyphens\fi
- %
- % We just appended at least one non-discardable item (namely, the
- % whatsit from the \write) to the current list. So in case glue comes
- % next (not unlikely), be sure we don't inadvertently make that glue a
- % valid breakpoint, if it wouldn't have been without us.
- \hookrun{afterindexterm}%
- %
- % This is the end of the index entry processing. If this was a silent
- % entry, ignore following spaces.
- \ifsilentindexentry \expandafter\ignorespaces\fi
-}%
-%
-%
-% If this conditional is true, we output the index terms on the page
-% where they occur.
-\newif\ifindexproofing
-%
-% We need a new insertion class to collect the proofed terms.
-\newinsert\@indexproof
-\dimen\@indexproof = \maxdimen % No limit on number of terms.
-\count\@indexproof = 0 \skip\@indexproof = 0pt % They take up no space.
-%
-% This actually typesets the proofed term. We don't go to any lengths
-% to provide nice-looking output; since the term might have all kinds of
-% weird characters in it, we just dump it in the smallest standard
-% Computer Modern typewriter font.
-%
-% We put the term in an \hbox, even though that might make the output
-% run off the page, since we don't really need to see all of it, and
-% I think it's better to opt for simplicity -- one term per line.
-\font\indexprooffont = cmtt8
-\def\indexproofterm#1{\hbox{\strut \indexprooffont #1}}%
-%
-%
-% If \output doesn't use \makeheadline, or redefines it, it's up to the
-% new \output to define index hyperlink destination and to call
-% \indexproofunbox.
-\let\@plainmakeheadline = \makeheadline
-\def\makeheadline{%
- % Define index page destination only when this `cross-reference' is defined.
- \expandafter\ifx\csname\xrlabel{\idxpagexref{\folio}}\endcsname\relax \else
- % Say \@@hldeston in case a page break happened at an unfortunate
- % time when user said \hldestoff.
- {\@@hldeston \hldest@impl{idx}{\hlidxpagelabel{\folio}}}%
- \fi
- \indexproofunbox
- \@plainmakeheadline
-}%
-%
-% We want to put the proof index terms in the margin, outside the
-% printed area. So if \outsidemargin (for odd pages) and \insidemargin
-% (for even pages) are undefined, we define them (both) to be the default
-% TeX margin -- one inch + \hoffset.
-\def\indexsetmargins{%
- \ifx\undefined\outsidemargin
- \dimen@ = 1truein
- \advance\dimen@ by \hoffset
- \edef\outsidemargin{\the\dimen@}%
- \let\insidemargin = \outsidemargin
- \fi
-}%
-%
-% We always put the terms in the right-hand margin, so long terms run
-% off the page, instead of into the text.
-\def\indexproofunbox{%
- \ifvoid\@indexproof\else
- \indexsetmargins
- \rlap{%
- \kern\hsize
- \ifodd\pageno \kern\outsidemargin \else \kern\insidemargin \fi
- \vbox to 0pt{\unvbox\@indexproof\vss}%
- }\nointerlineskip
- \fi
-}%
-%
-%
-% \@idxgetrange\CS parses an optional argument which, if present, should
-% be either `begin' or `end', marking the beginning or ending of a range
-% for the index entry. If we find this, we set the appropriate one of
-% \@idxrangestr. Then we call \CS.
-%
-% If the optional argument is `see' or `seealso' we read another
-% argument, namely, the entry to see.
-%
-\def\idxrangebeginword{begin}%
-\def\idxbeginrangemark{(}% the corresponding magic char to go in the idx file
-%
-\def\idxrangeendword{end}%
-\def\idxendrangemark{)}%
-%
-\def\idxseecmdword{see}%
-\def\idxseealsocmdword{seealso}%
-\newif\if@idxsee
-\newif\if@hlidxencap
-\let\@idxseenterm = \relax
-%
-\def\idxpagemarkupcmdword{pagemarkup}%
-\let\@idxpagemarkup = \relax
-%
-\def\@idxgetrange#1{%
- \let\@idxrangestr = \empty
- \let\@afteridxgetrange = #1%
- \@getoptionalarg\@finidxgetopt
-}%
-\def\@finidxgetopt{%
- \@hlidxencaptrue
- %
- \for\@idxarg:=\@optionalarg\do{%
- % These are ordered by my guess at frequency of use.
- \expandafter\@idxcheckpagemarkup\@idxarg=,%
- %
- \ifx\@idxarg\idxrangebeginword
- \def\@idxrangestr{\idxencapoperator\idxbeginrangemark}%
- \else
- \ifx\@idxarg\idxrangeendword
- \def\@idxrangestr{\idxencapoperator\idxendrangemark}%
- \@hlidxencapfalse
- \else
- \ifx\@idxarg\idxseecmdword
- \def\@idxpagemarkup{indexsee}%
- \@idxseetrue
- \@hlidxencapfalse
- \else
- \ifx\@idxarg\idxseealsocmdword
- \def\@idxpagemarkup{indexseealso}%
- \@idxseetrue
- \@hlidxencapfalse
- \else
- \ifx\@idxpagemarkup\relax
- \errmessage{Unrecognized index option `\@idxarg'}%
- \fi
- \fi
- \fi
- \fi
- \fi
- }%
- % Stick hyperlink encapsulator into \@idxpagemarkup.
- \ifnum\hldest@place@idx < 0 \else
- \if@hlidxencap
- \ifx\@idxpagemarkup\relax
- % Even when user gives no pagemarkup command, we still do
- % insert our hyperlink encapsulator.
- \let\@idxpagemarkup\empty
- \fi
- \ifcase\hldest@place@idx \relax
- % \hldest@place@idx = 0, dests point to a page with a term.
- \edef\@idxpagemarkup{hlidxpage{\@idxpagemarkup}}%
- % We want to define index \hldest's only on those
- % pages which contain at least one index term, so this
- % `cross-reference' will tell \makeheadline on which pages to
- % generate an \hldest.
- {\@@hldestoff \definexref{\idxpagexref{\folio}}{}{}}%
- \else
- % \hldest@place@idx = 1, dests point to exact location of a term.
- \global\advance\hlidxlabelnumber by 1
- \edef\@idxpagemarkup{hlidx{\hlidxlabel}{\@idxpagemarkup}}%
- \hldest@impl{idx}{\hlidxlabel}%
- \fi
- \fi
- \fi
- %
- \@afteridxgetrange
-}%
-%
-%
-% Check for a command of the form `pagemarkup=\cmd', and if found, set
-% \@idxpagemarkup to `cmd'.
-%
-\def\@idxcheckpagemarkup#1=#2,{%
- \def\temp{#1}%
- \ifx\temp\idxpagemarkupcmdword
- \if ,#2, % If #2 is empty, complain.
- \errmessage{Missing markup command to `pagemarkup'}%
- \else
- % Remove a trailing =.
- \def\temp##1={##1}%
- \edef\@idxpagemarkup{\temp\string#2}%
- \fi
- \fi
-}%
-%
-%
-% \hlidxpage and \hlidx are hyperlink encapsulators for the two types
-% of hyperlink destinations for index terms.
-%
-% \hldest@place@idx defines which type is selected. When defined to 0,
-% we generate destinations pointing to the page on which the indexed
-% term is located. When defined to 1, we generate destinations
-% pointing to exact location of the indexed term. When negative, we
-% generate no hyperlinks / destinations.
-\def\hldest@place@idx{-1}%
-% Name for a `cross-reference' which \makeheadline uses do decide on
-% which pages to generate \hldest.
-\def\idxpagexref#1{@@IDXPG@@#1}%
-% Hyperlink labels for both types of destinations.
-\newcount\hlidxlabelnumber
-\def\hlidxlabel{IDX\the\hlidxlabelnumber}%
-\def\hlidxpagelabel#1{IDXPG#1}%
-%
-% \hlidx{HYPERLINK-LABEL}{PAGEENCAP}{PAGESPEC}
-\def\hlidx#1#2#3{%
- \hlstart@impl{idx}{#1}%
- \csname #2\endcsname{#3}%
- \hlend@impl{idx}%
-}%
-%
-% \hlidxpage{PAGEENCAP}{PAGESPEC}
-%
-% We expect PAGESPEC to be one of the following:
-% 14 (single page number)
-% 14, 15 (list of two consecutive page numbers)
-% 14--15 (page range)
-%
-% If you configure MakeIndex to use different page list separator
-% (delim_n parameter in .mst file) / different page range separator
-% (delim_r parameter), you should call \setidxpagelistdelimiter /
-% \setidxpagerangedelimiter to setup the new separators.
-%
-% In case of a single page number, we call \PAGEENCAP on the page
-% number and turn the result into a hyperlink.
-%
-% In case of a two-page list, we break the list, call \PAGEENCAP on
-% each of the page numbers separately, and turn each result into a
-% hyperlink, producing page list separator between the page numbers.
-%
-% In case of a page range, we do not break the range, call \PAGEENCAP
-% on the entire range and turn what results into a hyperlink for the
-% first of the page numbers.
-\def\hlidxpage#1#2{%
- % Set \@idxpagei[i][ref] and \@idxpagesep
- \@hlidxgetpages{#2}%
- % Alias for \PAGEENCAP.
- \expandafter\let\expandafter\@idxpageencap\csname #1\endcsname
- % Now comes the first part, to be done in any of the three cases.
- \hlstart@impl{idx}{\hlidxpagelabel{\@idxpageiref}}%
- \expandafter\@idxpageencap\expandafter{\@idxpagei}%
- \hlend@impl{idx}%
- % The second part, to be done only if there is a second page number.
- \ifx\@idxpageii\empty \else
- \@idxpagesep
- \hlstart@impl{idx}{\hlidxpagelabel{\@idxpageiiref}}%
- \expandafter\@idxpageencap\expandafter{\@idxpageii}%
- \hlend@impl{idx}%
- \fi
-}%
-%
-% This macro parses PAGESPEC parameter to \hlidxpage. It sets
-% \@idxpagei to the first page number, \@idxpageii to the second (if
-% present; if not, \@idxpageii will be set to \empty). For the first
-% page number, use \@idxpageiref to construct hyperlink label; for
-% the second page number, use \@idxpageiiref. Use \@idxpagesep to
-% separate the two page numbers.
-%
-% NOTE: we use \@idxpagei[i], not \idxpagei[i], because the user may
-% use \idxparselist / \idxparserange in his \PAGEENCAP, in which case
-% our \idxpagei[i]'s will get garbled.
-\def\@hlidxgetpages#1{%
- % Try to parse a two-page list.
- \idxparselist{#1}%
- \ifx\idxpagei\empty
- % It is not a two-page list, try page range.
- \idxparserange{#1}%
- \ifx\idxpagei\empty
- % It is neither a two-page list nor a page range, so we assume
- % it is a single page number.
- \def\@idxpageiref{#1}% Label for \hlstart.
- \else
- % It is a page range.
- \let\@idxpageiref\idxpagei % Label for \hlstart.
- \fi
- \def\@idxpagei{#1}%
- \let\@idxpageii\empty
- \else
- % It is a two-page list.
- \let\@idxpagei\idxpagei
- \let\@idxpageii\idxpageii
- \let\@idxpageiref\idxpagei % Label for \hlstart.
- \let\@idxpageiiref\idxpageii % Label for \hlstart.
- \let\@idxpagesep\idxpagelistdelimiter
- \fi
-}%
-%
-% Set up a macro \@idxparselist and user-accessible \idxparselist for
-% parsing two-page list. Takes list separator (which is saved in
-% \idxpagelistdelimiter). If the list is found, \@idxparselist will
-% set \idxpagei to the first page number, \idxpageii to the second;
-% if not found, it will set \idxpagei to \empty (this implies that
-% the list's first page number should never be empty).
-\def\setidxpagelistdelimiter#1{%
- \gdef\idxpagelistdelimiter{#1}%
- \gdef\@removepagelistdelimiter##1#1{##1}%
- \gdef\@idxparselist##1#1##2\@@{%
- \ifempty{##2}%
- \let\idxpagei\empty
- \else
- \def\idxpagei{##1}%
- \edef\idxpageii{\@removepagelistdelimiter##2}%
- \fi
- }%
- \gdef\idxparselist##1{\@idxparselist##1#1\@@}%
-}%
-%
-% Same as previous, but \@idxparserange and \idxparserange will parse
-% page range, range separator is saved in \idxpagerangedelimiter.
-\def\setidxpagerangedelimiter#1{%
- \gdef\idxpagerangedelimiter{#1}%
- \gdef\@removepagerangedelimiter##1#1{##1}%
- \gdef\@idxparserange##1#1##2\@@{%
- \ifempty{##2}%
- \let\idxpagei\empty
- \else
- \def\idxpagei{##1}%
- \edef\idxpageii{\@removepagerangedelimiter##2}%
- \fi
- }%
- \gdef\idxparserange##1{\@idxparserange##1#1\@@}%
-}%
-%
-% Set up the default delimiters.
-\setidxpagelistdelimiter{, }%
-\setidxpagerangedelimiter{--}%
-%
-%
-% \@idxtokscollect uses \@idxmaintoks as the token list for the main
-% part of an index entry and \@idxsubtoks for the subpart. Then it
-% calls \@idxwrite.
-%
-\def\idxsubentryseparator{!}%
-\def\idxencapoperator{|}%
-\def\idxmaxpagenum{99999}%
-%
-\newtoks\@idxmaintoks
-\newtoks\@idxsubtoks
-%
-\def\@idxtokscollect{%
- % Remember the subentry.
- \edef\temp{\the\@idxsubtoks}%
- %
- % We want to expand the conditions, but not the terms. The index
- % entry starts simply with \@idxmaintoks and \@idxsubtoks.
- \edef\@indexentry{%
- \the\@idxmaintoks
- \ifx\temp\empty\else \idxsubentryseparator\the\@idxsubtoks \fi
- \@idxrangestr
- }%
- %
- % If this is a `see' or `see also' entry, we need to read one more
- % arg. We use a giant page number so the entry will be last (for the
- % benefit of `see also's). MakeIndex rejects page numbers >=1000.
- %
- \if@idxsee
- \@idxseefalse % Reset so the next term won't be a `see'.
- \edef\temp{\noexpand\@finidxtokscollect{\idxmaxpagenum}}%
- \else
- \def\temp{\@finfinidxtokscollect\folio}%
- \fi
- \temp
-}%
-%
-%
-% \@finidxtokscollect{PAGENO}{REAL-TERM} reads the final term for
-% see/see also entries. We do not check if the person has put both a
-% range and a see in the same index term (which will confuse makeindex).
-%
-\def\@finidxtokscollect#1#2{%
- \def\@idxseenterm{#2}%
- \@finfinidxtokscollect{#1}%
-}%
-%
-% \@finfinidxtokscollect{PAGENO} writes \@indexentry for page PAGENO.
-% Besides \@indexentry, if \@idxpagemarkup is not \relax we output an
-% index entry \@indexentry|\@idxpagemarkup{PAGENO} (but omitting | if
-% this is a range term, because in that case | will have been added
-% together with \@idxrangestr in \@idxtokscollect). And if
-% \@idxseenterm is not \relax we output {\@idxseenterm} after the
-% \@idxpagemarkup. (This will become an argument to the ``markup''
-% command, which will be \indexsee or \indexseealso.)
-%
-\def\@finfinidxtokscollect#1{%
- % If we've got a page markup command, append it.
- \ifx\@idxpagemarkup\relax \else
- \toks@ = \expandafter{\@indexentry}%
- \edef\@indexentry{%
- \the\toks@
- % Add | only if this is not a range term, otherwise | has
- % already been added with \@idxrangestr by \@idxtokscollect.
- \ifx\@idxrangestr\empty \idxencapoperator \fi
- \@idxpagemarkup
- }%
- \let\@idxpagemarkup = \relax
- \fi
- %
- % If we've got an argument to the ``page markup'' command, append it.
- \ifx\@idxseenterm\relax \else
- \toks@ = \expandafter{\@indexentry}%
- \edef\@indexentry{\the\toks@{\sanitize\@idxseenterm}}%
- \let\@idxseenterm = \relax
- \fi
- %
- % Finally, write what we've constructed.
- \expandafter\@idxwrite\expandafter{\@indexentry}{#1}%
-}%
-%
-%
-% \@idxcollect{MAIN}{SUB} sets up the token registers
-% \@idx{main,sub}toks, then calls \@idxtokscollect. This is convenient
-% for some of the macros below.
-%
-\def\@idxcollect#1#2{%
- \@idxmaintoks = {#1}%
- \@idxsubtoks = {#2}%
- \@idxtokscollect
-}%
-%
-%
-% Following are the TeX macros that correspond to the commands
-% that actually appear in the document.
-%
-% \@idx{TERM} produces TERM in the output and then makes the index entry
-% for TERM as usual. We don't allow a [SUBTERM] here since then we
-% would lose spaces after the command, which would be very inconvenient.
-%
-% As with all our index commands, we've already defined \@idxprefix (in
-% \idx or whatever), to save passing it around, and we've looked for a
-% range argument before TERM.
-%
-\def\@idx#1{%
- #1% Produce TERM as output.
- \@idxcollect{#1}{}%
-}%
-%
-% \@sidx{TERM}[SUBTERM] produces an index entry TERM and no output. If
-% SUBTERM is present, this is a subentry. (At the moment, I don't
-% provide for subsubentries, since I've never needed that.)
-%
-\def\@sidx#1{\@idxmaintoks = {#1}\@getoptionalarg\@finsidx}%
-\def\@finsidx{%
- \@idxsubtoks = \expandafter{\@optionalarg}%
- \@idxtokscollect
-}%
-%
-%
-% \@idxconstructmarked{TOKS-REG}\CS{TERM}
-%
-\def\idxsortkeysep{@}% This `@' is catcode 11, but it doesn't matter.
-%
-\def\@idxconstructmarked#1#2#3{%
- \toks@ = {#2}% The control sequence.
- \toks2 = {#3}% The term.
- %
- % Construct TERM@\CS{TERM} as the string to write.
- \edef\temp{\the\toks2 \idxsortkeysep \the\toks@{\the\toks2}}%
- %
- % Save it in TOKS-REG.
- #1 = \expandafter{\temp}%
-}%
-%
-%
-% \@idxmarked\CS{TERM} outputs \CS{TERM} and then calls the main part of
-% \@sidxmarked.
-%
-\def\@idxmarked#1#2{%
- #1{#2}% Produce \CS{TERM} as output.
- \@idxconstructmarked\@idxmaintoks{#1}{#2}%
- \@idxsubtoks = {}%
- \@idxtokscollect
-}%
-%
-% \@sidxmarked\CS{TERM}[SUBTERM] outputs an index entry sorted by TERM
-% but producing \CS{TERM}.
-%
-\def\@sidxmarked#1#2{%
- \@idxconstructmarked\toks@{#1}{#2}%
- \edef\temp{{\the\toks@}}%
- \expandafter\@sidx\temp
-}%
-%
-%
-% \@idxsubmarked{TERM}\CS{SUBTERM} is like \@idxmarked, except that it's
-% SUBTERM that's marked instead of TERM.
-%
-\def\@idxsubmarked#1#2#3{%
- #1 #2{#3}% produce `TERM \CS{SUBTERM} as output.
- \@sidxsubmarked{#1}{#2}{#3}%
-}%
-%
-% \@sidxsubmarked{TERM}\CS{SUBTERM} is to \@sidxmarked as \@idxsubmarked
-% is to \@idxmarked.
-%
-\def\@sidxsubmarked#1#2#3{%
- \@idxmaintoks = {#1}%
- \@idxconstructmarked\@idxsubtoks{#2}{#3}%
- \@idxtokscollect
-}%
-%
-%
-% \@idxcollectname{FIRST}{LAST} puts `LAST, FIRST' into \temp. (Well,
-% we use \idxnameseparator instead of hardwiring `, '.) If FIRST is
-% empty, don't include the separator.
-%
-\def\idxnameseparator{, }% as in `Tachikawa, Elizabeth'
-%
-\def\@idxcollectname#1#2{%
- \def\temp{#1}%
- \ifx\temp\empty
- \toks@ = {}%
- \else
- \toks@ = {\idxnameseparator #1}%
- \fi
- \toks2 = {#2}%
- %
- \edef\temp{\the\toks2 \the\toks@}%
-}%
-%
-%
-% \@idxname{FIRST}{LAST} also produces `FIRST LAST' in the output and an
-% index entry for `LAST, FIRST'.
-%
-\def\@idxname#1#2{%
- #1 #2% Separate the names by a space in the output.
- \@idxcollectname{#1}{#2}%
- \expandafter\@idxcollect\expandafter{\temp}{}%
-}%
-%
-% \@sidxname{FIRST}{LAST}[SUBTERM] is to \@sidx as \@idxname is to
-% \@idx.
-%
-\def\@sidxname#1#2{%
- \@idxcollectname{#1}{#2}%
- \expandafter\@sidx\expandafter{\temp}%
-}%
-%
-%
-% Now we come to actually producing the index, i.e., implementing the
-% formatting commands that MakeIndex outputs.
-%
-% \readindexfile is responsible for formatting and printing the index.
-% It reads \indexfilebasename.ind. We implement the same commands that
-% LaTeX does. I suppose we could allow for different indices having
-% different basenames, but I can't imagine when that would be useful.
-%
-\let\indexfonts = \relax
-%
-\def\readindexfile#1{%
- \edef\@idxprefix{#1}%
- %
- % Does the output file exist?
- \testfileexistence[\indexfilebasename]{\@idxprefix nd}%
- \iffileexists \begingroup
- % If no \begin or \end, define them. The argument will be `{theindex}'.
- \ifx\begin\undefined
- \def\begin##1{\@beginindex}%
- \let\end = \@gobble
- \fi
- %
- % Read the file:
- \input \indexfilebasename.\@idxprefix nd
- %
- % \doublecolumns isn't affected by groups.
- \singlecolumn
- \endgroup
- \else
- \message{No index file \indexfilebasename.\@idxprefix nd.}%
- \fi
-}%
-%
-% Here's the default for `\begin{theindex}', if \begin isn't defined.
-\def\@beginindex{%
- % Define the commands MakeIndex outputs.
- \let\item = \@indexitem
- \let\subitem = \@indexsubitem
- \let\subsubitem = \@indexsubsubitem
- %
- % Set up the default formatting:
- \indexfonts
- \doublecolumns
- \parindent = 0pt
- %
- % Let the user override the defaults.
- \hookrun{beginindex}%
-}%
-%
-% MakeIndex puts \indexspace between groups in the ind file.
-\let\indexspace = \bigbreak
-%
-% You can make \afterindexterm appear after the term and before the
-% first page with the following in the ist file:
-% delim_0 "\\afterindexterm "
-% delim_1 "\\afterindexterm "
-% delim_2 "\\afterindexterm "
-\let\afterindexterm = \quad
-%
-%
-% Top-level index entries start with \item.
-\newskip\aboveindexitemskipamount \aboveindexitemskipamount = 0pt plus2pt
-\def\aboveindexitemskip{\vskip\aboveindexitemskipamount}%
-%
-\def\@indexitem{\begingroup
- \@indexitemsetup
- \leftskip = 0pt
- \aboveindexitemskip
- \penalty-100 % Encourage page breaks before items.
- %
- % But forbid page breaks after items, in case a subitem follows.
- \def\par{\endgraf\endgroup\nobreak}%
-}%
-%
-% Secondary index entries.
-\def\@indexsubitem{%
- \@indexitemsetup
- \leftskip = 1em
-}%
-%
-% And tertiary entries.
-\def\@indexsubsubitem{%
- \@indexitemsetup
- \leftskip = 2em
-}%
-%
-% Common setup for the formatting.
-\def\@indexitemsetup{%
- \par
- \hangindent = 1em
- \raggedright
- \hyphenpenalty = 10000
- \hookrun{indexitem}%
-}%
-%
-%
-% \indexsee{TERM}{PAGENO} ignores PAGENO, and says `see TERM'.
-\def\seevariant{\it}%
-\def\indexseeword{see}%
-\def\indexsee#1#2{{\seevariant \indexseeword\/ }#1}%
-%
-% \indexseealso{TERM}{PAGENO} is similar.
-\def\indexseealsowords{see also}%
-\def\indexseealso#1#2{{\seevariant \indexseealsowords\/ }#1}%
-%
-%
-% We provide one index by default; commands are \idx, \sidx, etc.
-\defineindex{i}%
-%
-%
-%
-% Justification of multiple input lines.
-%
-% You use these by saying
-% {\flushright
-% <flush right text>
-% }
-%
-% and similarly for \flushleft and \center. The command must be
-% embedded in a group. The lines are set in paragraphs as usual, i.e.,
-% blank lines start a new paragraph (by virtue of the
-% \blanklineskipamount vertical glue being inserted).
-%
-% \environment ... \endenvironment isn't appropriate in this case, since
-% these ``environments'' can't be nested.
-%
-\begingroup
- \catcode `\^^M = \active %
- \gdef\flushleft{%
- \def\@endjustifycmd{\@endflushleft}%
- \def\@eoljustifyaction{\null\hfil\break}%
- \let\@firstlinejustifyaction = \relax
- \@startjustify %
- }%
- \gdef\flushright{%
- \def\@endjustifycmd{\@endflushright}%
- \def\@eoljustifyaction{\break\null\hfil}%
- \def\@firstlinejustifyaction{\hfil\null}%
- \@startjustify %
- }%
- \gdef\center{%
- \def\@endjustifycmd{\@endcenter}%
- \def\@eoljustifyaction{\hfil\break\null\hfil}%
- \def\@firstlinejustifyaction{\hfil\null}%
- \@startjustify %
- }%
- %
- % We do this before starting any of the justification commands.
- \gdef\@startjustify{%
- \parskip = 0pt
- \catcode`\^^M = \active %
- \def^^M{\futurelet\next\@finjustifyreturn}%
- %
- % \@eateol is called at the beginning of each justified paragraph.
- \def\@eateol##1^^M{%
- \def\temp{##1}%
- \@firstlinejustifyaction %
- \ifx\temp\empty\else \temp^^M\fi %
- }%
- \expandafter\aftergroup\@endjustifycmd %
- \checkenv \environmenttrue %
- \par\noindent %
- \@eateol %
- }%
- %
- % If the next thing is a ^^M, insert \blanklineskipamount glue. Then
- % do \@eoljustifyaction (which each justification command defines).
- \gdef\@finjustifyreturn{%
- \@eoljustifyaction %
- \ifx\next^^M%
- % Insert extra glue when the \@end... command does the \par.
- \def\par{\endgraf\vskip\blanklineskipamount \global\let\par = \endgraf}%
- \@endjustifycmd %
- % Get back into horizontal mode for the next line.
- \noindent %
- \@firstlinejustifyaction %
- \fi %
- }%
-\endgroup
-%
-\def\@endflushleft{\unpenalty{\parfillskip = 0pt plus1fil\par}\ignorespaces}%
-\def\@endflushright{% Remove the \hfil\null\break we just put on.
- \unskip \setbox0=\lastbox \unpenalty
- % We have fil glue at the left of the line; \parfillskip shouldn't
- % affect that.
- {\parfillskip = 0pt \par}\ignorespaces
-}%
-\def\@endcenter{% Remove the \hfil\null\break we just put on.
- \unskip \setbox0=\lastbox \unpenalty
- % We have fil glue at the left of the line; \parfillskip must balance it.
- {\parfillskip = 0pt plus1fil \par}\ignorespaces
-}%
-%
-%
-%
-% Automatically-columnated tables.
-%
-% \makecolumns N/K: organizes the entries on the following N lines into
-% K columns. If N is too small, some text beyond the end of the table
-% will be incorporated into the table, probably producing an error
-% message. If N is too large, some of the entries will appear after the
-% table, probably looking very out of place.
-%
-% You can adjust the position of the table on the page by changing
-% \parindent (space to the left of the block) and \hsize (distance from
-% the left margin to the right of the block). (No doubt inside a
-% group.) And you can allow a page break above the valign by changing
-% \abovecolumnspenalty.
-%
-\newcount\abovecolumnspenalty \abovecolumnspenalty = 10000
-\newcount\@linestogo % Lines remaining to process.
-\newcount\@linestogoincolumn % Lines remaining in column.
-\newcount\@columndepth % Number of lines in a column.
-\newdimen\@columnwidth % Width of each column.
-\newtoks\crtok \crtok = {\cr}%
-\newcount\currentcolumn
-%
-% The space matches an end-of-line that will probably be there.
-%
-\def\makecolumns#1/#2: {\par \begingroup
- % Set \@columndepth to the number of items we will put in a column:
- % ceiling(N/K), i.e. (N - 1) / K + 1.
- \@columndepth = #1
- \advance\@columndepth by -1
- \divide \@columndepth by #2
- \advance\@columndepth by 1
- \@linestogoincolumn = \@columndepth
- \@linestogo = #1
- %
- % We start in the first column.
- \currentcolumn = 1
- %
- \def\@endcolumnactions{%
- \ifnum \@linestogo<2
- \the\crtok \egroup \endgroup \par % End \valign and \makecolumns.
- \else
- % We've done one more line out of the total.
- \global\advance\@linestogo by -1
- %
- % How many left in the column?
- %
- \ifnum\@linestogoincolumn<2
- % End this column, that was the last line.
- \global\advance\currentcolumn by 1
- \global\@linestogoincolumn = \@columndepth
- \the\crtok
- \else
- % Still got more lines to go.
- &\global\advance\@linestogoincolumn by -1
- \fi
- \fi
- }%
- %
- % Set up to read the table.
- %
- \makeactive\^^M
- \letreturn \@endcolumnactions
- %
- % Figure out how wide our columns are going to be; each column has
- % exactly the same template, so we can use the feature described on
- % p.241 of the TeXbook for repeating preambles.
- %
- \@columnwidth = \hsize
- \advance\@columnwidth by -\parindent
- \divide\@columnwidth by #2
- \penalty\abovecolumnspenalty
- \noindent % It's not a paragraph (usually).
- \valign\bgroup
- &\hbox to \@columnwidth{\strut \hsize = \@columnwidth ##\hfil}\cr
- %
- % The next end-of-line starts everything going.
-}%
-%
-%
-%
-% \numberedfootnote is like plain TeX's \footnote, but automatically
-% numbered. When you want to reset the footnote number, say
-% \footnotenumber = 0.
-%
-% We also provide for more general formatting than \footnote:
-% \footnotemarkseparation is the space between the reference mark and
-% the footnote text;
-% \interfootnoteskip is the space between footnotes;
-% \everyfootnote is expanded just before we typeset the footnote.
-%
-% The dimensions of the footnote rule are controlled by
-% \footnoterulewidth and \footnoteruleheight (the depth is always zero);
-% the space after the rule is \belowfootnoterulespace.
-%
-\newcount\footnotenumber
-\newcount\hlfootlabelnumber
-\newdimen\footnotemarkseparation \footnotemarkseparation = .5em
-\newskip\interfootnoteskip \interfootnoteskip = 0pt
-\newtoks\everyfootnote
-\newdimen\footnoterulewidth \footnoterulewidth = 2in
-\newdimen\footnoteruleheight \footnoteruleheight = 0.4pt
-\newdimen\belowfootnoterulespace \belowfootnoterulespace = 2.6pt
-%
-\let\@plainfootnote = \footnote
-\let\@plainvfootnote = \vfootnote
-% Hyperlink labels for forward and back references.
-\def\hlfootlabel{FOOT\the\hlfootlabelnumber}%
-\def\hlfootbacklabel{FOOTB\the\hlfootlabelnumber}%
-%
-\def\@eplainfootnote#1{\let\@sf\empty % parameter #2 (the text) is read later
- \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
- \global\advance\hlfootlabelnumber by 1
- \hlstart@impl{foot}{\hlfootlabel}%
- \hldest@impl{footback}{\hlfootbacklabel}%
- #1%
- \hlend@impl{foot}%
- \@sf\vfootnote{#1}%
-}%
-%
-\let\footnote\@eplainfootnote
-%
-\def\vfootnote#1{\insert\footins\bgroup
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\ht\strutbox % top baseline for broken footnotes
- \advance\splittopskip by \interfootnoteskip
- \splitmaxdepth\dp\strutbox
- \floatingpenalty\@MM
- \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip
- \everypar = {}%
- \parskip = 0pt % because of the vskip
- % Even if typesetting in multicolumns, do footnotes in normal page width.
- % (We don't have any provision in the output routine for having
- % footnotes per column, anyway.)
- \ifnum\@numcolumns > 1 \hsize = \@normalhsize \fi
- \the\everyfootnote
- \vskip\interfootnoteskip
- \indent\llap{%
- \hlstart@impl{footback}{\hlfootbacklabel}%
- \hldest@impl{foot}{\hlfootlabel}%
- #1%
- \hlend@impl{footback}%
- \kern\footnotemarkseparation
- }%
- \footstrut\futurelet\next\fo@t
-}%
-%
-\def\footnoterule{\dimen@ = \footnoteruleheight
- \advance\dimen@ by \belowfootnoterulespace
- \kern-\dimen@
- \hrule width\footnoterulewidth height\footnoteruleheight depth0pt
- \kern\belowfootnoterulespace
- \vskip-\interfootnoteskip
-}%
-%
-\def\numberedfootnote{%
- \global\advance\footnotenumber by 1
- \@eplainfootnote{$^{\number\footnotenumber}$}%
-}%
-%
-%
-%
-% Margins.
-%
-% TeX's primitives determine the type area. But some users prefer to
-% think in terms of margins. These definitions allow one to say, for
-% example, `\topmargin = 2in', instead of `\voffset=1in\advance\vsize by
-% -1in'. Constructions like `\advance\topmargin by 1in' give an error
-% message, though, since \topmargin is not a parameter. Instead, the
-% macro \advancetopmargin has to be used.
-%
-\newdimen\paperheight
-\ifnum\mag=1000
- \paperheight = 11in % No magnification (yet).
-\else
- \paperheight = 11truein % We already have a magnification.
-\fi
-%
-\def\topmargin{\afterassignment\@finishtopmargin \dimen@}%
-\def\@finishtopmargin{%
- \dimen2 = \voffset % Remember the old \voffset.
- \voffset = \dimen@ \advance\voffset by -1truein
- \advance\dimen2 by -\voffset % Compute the change in \voffset.
- \advance\vsize by \dimen2 % Change type area accordingly.
-}%
-\def\advancetopmargin{%
- \dimen@ = 0pt \afterassignment\@finishadvancetopmargin \advance\dimen@
-}%
-\def\@finishadvancetopmargin{%
- \advance\voffset by \dimen@
- \advance\vsize by -\dimen@
-}%
-%
-%
-\def\bottommargin{\afterassignment\@finishbottommargin \dimen@}%
-\def\@finishbottommargin{%
- \@computebottommargin % Result in \dimen2.
- \advance\dimen2 by -\dimen@ % Compute the change in the bottom margin.
- \advance\vsize by \dimen2 % Change the type area.
-}%
-\def\advancebottommargin{%
- \dimen@ = 0pt \afterassignment\@finishadvancebottommargin \advance\dimen@
-}%
-\def\@finishadvancebottommargin{%
- \advance\vsize by -\dimen@
-}%
-%
-% Find the current bottom margin, putting the result in \dimen2.
-%
-\def\@computebottommargin{%
- \dimen2 = \paperheight % The total paper size.
- \advance\dimen2 by -\vsize % Less the text size.
- \advance\dimen2 by -\voffset % Less the offset at the top.
- \advance\dimen2 by -1truein % Less the default offset.
-}%
-%
-%
-\newdimen\paperwidth
-\ifnum\mag=1000
- \paperwidth = 8.5in % No magnification (yet).
-\else
- \paperwidth = 8.5truein % We already have a magnification.
-\fi
-%
-\def\leftmargin{\afterassignment\@finishleftmargin \dimen@}%
-\def\@finishleftmargin{%
- \dimen2 = \hoffset % Remember the old \hoffset.
- \hoffset = \dimen@ \advance\hoffset by -1truein
- \advance\dimen2 by -\hoffset % Compute the change in \hoffset.
- \advance\hsize by \dimen2 % Change type area accordingly.
-}%
-\def\advanceleftmargin{%
- \dimen@ = 0pt \afterassignment\@finishadvanceleftmargin \advance\dimen@
-}%
-\def\@finishadvanceleftmargin{%
- \advance\hoffset by \dimen@
- \advance\hsize by -\dimen@
-}%
-%
-%
-\def\rightmargin{\afterassignment\@finishrightmargin \dimen@}%
-\def\@finishrightmargin{%
- \@computerightmargin % Result in \dimen2.
- \advance\dimen2 by -\dimen@ % Compute the change in the right margin.
- \advance\hsize by \dimen2 % Change the type area.
-}%
-\def\advancerightmargin{%
- \dimen@ = 0pt \afterassignment\@finishadvancerightmargin \advance\dimen@
-}%
-\def\@finishadvancerightmargin{%
- \advance\hsize by -\dimen@
-}%
-%
-% Find the current right margin, putting the result in \dimen2.
-%
-\def\@computerightmargin{%
- \dimen2 = \paperwidth % The total paper size.
- \advance\dimen2 by -\hsize % Less the text size.
- \advance\dimen2 by -\hoffset % Less the offset at the left.
- \advance\dimen2 by -1truein % Less the default offset.
-}%
-%
-% There is a potential problem when using the margin macros at a true
-% dimension and then calling \magnification. So we redefine
-% \magnification to address this.
-%
-\let\@plainm@g = \m@g
-\def\m@g{\@plainm@g \paperwidth = 8.5 true in \paperheight = 11 true in}%
-%
-%
-%
-% Double column output.
-%
-% \doublecolumns begins double column output. It can be called
-% in the midst of a page. \singlecolumn restores single column
-% output. (It would be wrong to require \enddoublecolumns, because
-% often one wants double column mode to continue to the end of
-% the document.)
-%
-% The basic approach is that of Appendix E of the TeXbook, p.417.
-% David Guichard made significant improvements to my original implementation.
-%
-% The glue here (the default is intended to be one linespace) is inserted
-% before double columns start, and after they end.
-%
-\newskip\abovecolumnskip \abovecolumnskip = \bigskipamount
-\newskip\belowcolumnskip \belowcolumnskip = \bigskipamount
-%
-% Space between the columns. It can be changed as desired.
-\newdimen\gutter \gutter = 2pc
-%
-% These registers are needed for dealing with switching back and forth.
-\newbox\@partialpage
-\newdimen\@normalhsize
-\newdimen\@normalvsize % The original (before multi-columns) \vsize.
-\newtoks\previousoutput
-%
-% Some synonymous ways to refer to multiple column modes.
-\def\quadcolumns{\@columns4}%
-\def\triplecolumns{\@columns3}%
-\def\doublecolumns{\@columns2}%
-\def\begincolumns#1{\ifcase#1\relax \or \singlecolumn \or \@columns2 \or
- \@columns3 \or \@columns4 \else \relax \fi}%
-\def\endcolumns{\singlecolumn}%
-\let\@ndcolumns = \relax
-%
-% Set this by default so \vfootnote can unconditionally inspect it.
-\chardef\@numcolumns = 1
-%
-\mathchardef\@ejectpartialpenalty = 10141
-%
-%
-% \@columns: Start typesetting with #1 columns.
-%
-% Before we actually start, we have to make sure that there are at least
-\chardef\@col@minlines = 3
-% free lines.
-% (It could be 2, or even 1, but it might give ugly results; at least one
-% line is absolutely necessary, or the output routine might get confused.)
-% We have to be careful, so that eg.
-% \hbox{TITLE}
-% \nobreak
-% \doublecolumns
-% won't break between the title and the start of the columned output.
-%
-% To achieve this, we add vskip of fixed size equal to
-% @col@minlines * baselineskip
-% and then eject the page.
-% The output routine then catches the pages ejected:
-% 1) if it's a normal page, it is processed by previous output routine;
-% 2) if it's the last one, it is saved and the added skip is removed.
-%
-% When the box is processed according to 1), an underfull vbox can appear,
-% but it's not our problem, the manuscript (or it's macros) has to be fixed.
-%
-% Another note: all assignments are global; it is not possible to call
-% \doublecolumns in a group.
-%
-\def\@columns#1{%
- \@ndcolumns
- %
- \global\let\@ndcolumns = \@endcolumns
- \global\chardef\@numcolumns = #1
- \global\previousoutput = \expandafter{\the\output}%
- %
- % Grab the page so far (i.e., the material BEFORE \@columns was called)
- % and save it in \@partialpage.
- \global\output = {%
- \ifnum\outputpenalty = -\@ejectpartialpenalty
- \dimen@ = \vsize
- \advance\dimen@ by \@col@minlines\baselineskip
- \global\setbox\@partialpage =
- \vbox \ifdim \pagetotal > \vsize to \dimen@ \fi {%
- \unvbox255 \unskip
- }%
- \else
- \the\previousoutput
- \fi
- }%
- %
- \vskip \abovecolumnskip
- \vskip \@col@minlines\baselineskip
- % now execute the output routine:
- \penalty -\@ejectpartialpenalty
- %
- % Reset \output to prepare for the first real page break.
- \global\output = {\@columnoutput}%
- %
- \global\@normalhsize = \hsize
- \global\@normalvsize = \vsize
- %
- % Figure out how wide the columns should be -- for n columns,
- % decrement by n - 1 gutters.
- \count@ = \@numcolumns
- \advance\count@ by -1
- \global\advance\hsize by -\count@\gutter
- \global\divide\hsize by \@numcolumns
- %
- % Compute \vsize based on what's already on the page
- % and the number of columns. Also change the mag factor for insertions.
- %
- \advance\vsize by -\ht\@partialpage
- %
- \advance\vsize by -\ht\footins
- \ifvoid\footins\else \advance\vsize by -\skip\footins \fi
- \multiply\count\footins by \@numcolumns
- %
- \advance\vsize by -\ht\topins
- \ifvoid\topins\else \advance\vsize by -\skip\topins \fi
- \multiply\count\topins by \@numcolumns
- %
- \global\vsize = \@numcolumns\vsize
-}%
-%
-% When this is invoked box 255 contains just the right amount of
-% material, whether triggered by an output routine or a change in the
-% number of columns. Because columns have to contain an integral number
-% of lines of type, we take a bit of care with balancing the heights of
-% the columns to prevent either losing material or having a very short
-% last column.
-%
-% When a page ends due to \bye or \eject, box 255 will contain lots of
-% white space, so the columns will not look balanced. To fix this use
-% \singlecolumn before ending the page.
-%
-% [gutterbox material added by AHL on 5 November 1997.]
-% \gutterbox is a hook to enable the placement of arbitrary vertical
-% material in the gutter between columns. For example, to put a
-% vertical line between the columns you could say
-%
-% \def\gutterbox{\vbox to \dimen0{\vfil\hbox{\vrule height\dimen0}\vfil}}%
-%
-% The dimension counter \dimen0 contains the height of the column.
-%
-% By default, we define \gutterbox to be "empty":
-\def\gutterbox{\vbox to \dimen0{\vfil\hbox{\hfil}\vfil}}%
-%
-% [This next paragraph added by AHL on 22 Sep 1996.]
-% There is a special case we have to worry about, namely when we
-% switch from multiple columns to single columns. In this case, we may
-% have a bit of text left over that doesn't fit evenly into the
-% multiple columns. In that case, we will have un-even columns. Not a
-% pretty solution, but I don't have a better one at the moment. The
-% conditional \if@forceextraline tests whether we are in this case.
-%
-\newif\if@forceextraline\@forceextralinefalse
-\def\@columnsplit{%
- \splittopskip = \topskip
- \splitmaxdepth = \baselineskip
- %
- % \dimen@ will be the height that the double-column material on this
- % page should have, i.e., the height of the page (\singlecolumvsize)
- % minus single-column material, which includes insertions. (If you
- % want your insertions to respect the columns, you will have to
- % change the output routine.) If you add more insertions, they
- % should be taken into account both here and in \singlecolumn.
- %
- % Unfortunately, we lose on flexible glue because we must
- % \vsplit to a <dimen>.
- \dimen@ = \ht255
- \divide\dimen@ by \@numcolumns
- %
- % If we are in an end-column mode and we need extra vertical space
- % in the last column, advance \dimen@.
- \if@forceextraline
- \advance\dimen@ by \baselineskip
- \fi
- %
- % Split the long scroll into columns.
- \begingroup
- % We do not want to see underfull \vbox messages unless the final
- % page is underfull.
- \vbadness = 10000
- %
- % The first (leftmost) column.
- \global\setbox1 = \vsplit255 to \dimen@ \global\wd1 = \hsize
- %
- % The second column.
- \global\setbox3 = \vsplit255 to \dimen@ \global\wd3 = \hsize
- %
- \ifnum\@numcolumns > 2
- % The third column, if requested.
- \global\setbox5 = \vsplit255 to \dimen@ \global\wd5 = \hsize
- \fi
- \ifnum\@numcolumns > 3
- % The fourth column, likewise if requested.
- \global\setbox7 = \vsplit255 to \dimen@ \global\wd7 = \hsize
- \fi
- \endgroup
- \if@forceextraline % If this is the first time
- \else % through, save the single
- \setbox\@forcelinebox=\copy\@partialpage % column material.
- \fi
- %
- % Set up \box255 with the real output page, as the previous output
- % routine expects.
- \setbox0 = \box255
- \global\setbox255 = \vbox{%
- \unvbox\@partialpage
- \ifcase\@numcolumns \relax\or\relax
- \or \hbox to \@normalhsize{\box1\hfil\gutterbox\hfil\box3}%
- \or \hbox to \@normalhsize{\box1\hfil\gutterbox\hfil\box3%
- \hfil\gutterbox\hfil\box5}%
- \or \hbox to \@normalhsize{\box1\hfil\gutterbox\hfil\box3%
- \hfil\gutterbox\hfil\box5%
- \hfil\gutterbox\hfil\box7}%
- \fi
- }%
- %
- % Save what's left over in a private register before calling their
- % output routine.
- \setbox\@partialpage = \box0
-}%
-%
-% Our output routine splits the columns and then calls the previous one.
-%
-\def\@columnoutput{%
- \@columnsplit
- \@recoverclubpenalty
- \hsize = \@normalhsize % Local to \output's group.
- \vsize = \@normalvsize
- \the\previousoutput
- %
- % Put back what didn't fit.
- \unvbox\@partialpage
- \penalty\outputpenalty
- %
- % The correct vsize is the original vsize times the
- % number of columns.
- \global\vsize = \@numcolumns\@normalvsize
-}%
-%
-% Go back to single-column typesetting. Assume \doublecolumns has
-% been called.
-%
-\def\singlecolumn{%
- \@ndcolumns
- \chardef\@numcolumns = 1
- \vskip\belowcolumnskip
- \nointerlineskip
-}%
-%
-\newbox\@forcelinebox
-\def\@endcolumns{%
- \global\let\@ndcolumns = \relax
- \par % Shouldn't start in horizontal mode.
- %
- \global\output = {\global\setbox1 = \box255}%
- \pagegoal = \pagetotal
- \break % Exercise the page builder, i.e., \output.
- \setbox2 = \box1 % Save material in box2 in case of overflow.
- \global\setbox255 = \copy2 % Retrieve what the fake \output set.
- %
- % \box255 now has the double-column material. On the page where we
- % switch back to one column, the double-column material might not
- % fill up the page. We want to split whatever is there.
- \@columnsplit
- %
- % Check that \@columnsplit did not leave any lines in
- % \@partialpage. If it did, do it again, but this time with longer
- % columns.
- \ifvoid\@partialpage
- \else % There is some left-over.
- \setbox0=\box\@partialpage % Merely to void \@partialpage
- \global\setbox255 = \box2 % Retrieve what the fake \output set.
- \@forceextralinetrue % Add \forcelinebox to \box255 to save single
- \@columnsplit % column material.
- \global\setbox255 = \vbox{\box\@forcelinebox\box255}%
- \fi
-
- \global\vsize = \@normalvsize
- \global\hsize = \@normalhsize
- \global\output = \expandafter{\the\previousoutput}%
- %
- \ifvoid\topins\else\topinsert\unvbox\topins\endinsert\fi
- \unvbox255
-}%
-% [\columnfill]
-% We don't have any way to force a column eject, since the \output
-% routine is only prepared to split up a full page of material. Instead,
-% we provide the following as a guess at enough space to fill up the
-% current column.
-%
-% [April 30, 1998] This definition is from
-% Helmut Jarausch <jarausch@IGPM.Rwth-Aachen.DE> with some
-% modifications by A. Lewenberg <ahl@uakron.edu>.
-%
-% Here is the main difficulty: when \vsplitting the long page into the
-% component columns, \vsplit prepends to the top of each column glue
-% in the amount \topskip - (height of top box). But this happens
-% in the output routine _after_ the \columnfill does its
-% calculations. The result of this is that if we are not careful
-% \columnfill will insert too much space attempting to ``eject'' the
-% current column. There is no simple way around this, so what I have
-% done is have is make \columnfill insert less space than needed, and
-% then not allow any \club lines by setting \clubpenalty to its
-% maximum value. Not a pretty solution, but until something better
-% comes along, it will have to do.
-%
-\def\@saveclubpenalty{% save the current value of \clubpenalty
- \edef\@recoverclubpenalty{%
- \global\clubpenalty=\the\clubpenalty\relax%
- \global\let\noexpand\@recoverclubpenalty\relax
- }% the \noexpand handles infinite self-reference
-}%
-\let\@recoverclubpenalty\relax
-\newdimen\temp@dimen
-\def\columnfill{%
- \par
- \dimen@=\pagetotal % The height of the text set so far.
- \temp@dimen = \vsize % = \@numcolumns * columnheight
- \divide\temp@dimen by \@numcolumns % find out column height
- \loop
- \ifdim \dimen@ > \temp@dimen
- \advance \dimen@ by -\temp@dimen
- \advance \dimen@ by \topskip % fudge factor
- \repeat
- \advance \temp@dimen by -\dimen@
- \advance \temp@dimen by -\prevdepth
- \@saveclubpenalty
- \clubpenalty=10000\relax
- \hrule height\temp@dimen width0pt depth0pt\relax
- \nointerlineskip
- \par
- \nointerlineskip
- \penalty0\vfil % To allow a page break here.
- \relax
-}%
-%
-%
-%
-% Hypertext links support.
-%
-% Hyperlink destinations (driver-independent code).
-%
-% \hldest{TYPE}{OPTIONS}{LABEL} defines a hyperlink destination
-% LABEL. OPTIONS is a comma-separated list of option assignments of
-% the form `opt=value'; permitted values for TYPE and OPTIONS depend
-% on selected hyperlink driver.
-%
-% \hldest will be \let to \@hldest by \enablehyperlinks. TYPE,
-% OPTIONS and LABEL will be read by \hl@getparam.
-\def\@hldest{%
- \def\hl@prefix{hldest}%
- \let\after@hl@getparam\hldest@aftergetparam
- % Start the group which will isolate option settings. It will be
- % ended in \hldest@aftergetparam
- \begingroup
- \hl@getparam
-}%
-% This actually produces hyperlink destination. It will be called at
-% the end of \hl@getparam, after the parameters are parsed.
-\def\hldest@aftergetparam{%
- \ifvmode
- % In vertical mode we don't raise the destination, so it can go
- % directly into the vertical list.
- \hldest@driver
- \else
- % In horizontal mode, the destination is raised \hldest@opt@raise
- % above the baseline and placed inside a zero-width/height/depth
- % box; the box is surrounded by \allowhyphens in case it is
- % placed next to a word, to allow hyphenation of that word.
- \allowhyphens
- \smash{\ifx\hldest@opt@raise\empty \else \raise\hldest@opt@raise\fi
- \hbox{\hldest@driver}}%
- \allowhyphens
- \fi
- % End the group which was isolating option settings (it was started
- % in \@hldest).
- \endgroup
-}%
-%
-% Hyperlinks (driver-independent code).
-%
-% \hlstart{TYPE}{OPTIONS}{LABEL} starts a hyperlink to destination
-% LABEL. OPTIONS is a comma-separated list of option assignments of
-% the form `opt=value'; permitted values of TYPE and OPTIONS depend on
-% selected hyperlink driver. End the link with \hlend.
-%
-% \hlstart will be \let to \@hlstart by \enablehyperlinks. TYPE,
-% OPTIONS and LABEL will be read by \hl@getparam.
-\def\@hlstart{%
- \leavevmode
- \def\hl@prefix{hl}%
- \let\after@hl@getparam\hlstart@aftergetparam
- % Start the group which will isolate option settings and color
- % changes. It will be ended in \@hlend
- \begingroup
- \hl@getparam
-}%
-%
-\def\hlstart@aftergetparam{%
- % Set the color for the link.
- \ifx\color\undefined \else
- \ifx\hl@opt@color\empty \else
- \ifx\hl@opt@colormodel\empty
- \edef\temp{\noexpand\color{\hl@opt@color}}%
- \else
- \edef\temp{\noexpand\color[\hl@opt@colormodel]{\hl@opt@color}}%
- \fi
- \temp
- \fi
- \fi
- % Call the driver.
- \hl@driver
-}%
-% \hlend will be \let to \@hlend by \enablehyperlinks. \@hlend will
-% be defined by a driver.
-%
-% Macros which are used commonly by \hldest and \hlstart to parse and
-% save parameters. \hl@prefix must be set to `hldest' by \hldest and
-% to `hl' by \hlstart.
-%
-% \hl@getparam{TYPE}{OPTIONS}{LABEL} reads, parses and saves the
-% parameters for \hldest or \hlstart into \@hltype, \hl[dest]@opt@...
-% and \@hllabel. After doing that it calls \after@hl@getparam which
-% should be defined by \@hldest and \@hlstart to produce destination /
-% link using the saved parameters.
-\def\hl@getparam#1#2#3{%
- % Save TYPE in \@hltype (use default if empty).
- \edef\@hltype{#1}%
- \ifx\@hltype\empty
- \expandafter\let\expandafter\@hltype
- \csname \hl@prefix @type\endcsname
- \fi
- % For each supported destination / link type TYPE, a driver should
- % define \hl[dest]@typeh@TYPE handler.
- \expandafter\ifx\csname \hl@prefix @typeh@\@hltype\endcsname \relax
- \errmessage{Invalid type `\@hltype'}%
- \fi
- % \for will expand #2 once so user can pass a shortcut macro. We
- % also ignore empty \hl@arg, so that the following
- % \hldest{TYPE}{\myopt,height=200pt}{LABEL}
- % would be legal even when \myopt happens to be empty.
- \for\hl@arg:=#2\do{%
- \ifx\hl@arg\empty \else
- \expandafter\hl@set@opt\hl@arg=,%
- \fi
- }%
- % Save LABEL in \@hllabel.
- \edef\@hllabel{#3}%
- % Execute the commands specific to destination / link
- \after@hl@getparam
- % Ignore spaces after \hlstart and \hldest.
- \ignorespaces
-}%
-% Parse and set a (default, not a group) option.
-\def\hl@set@opt#1=#2,{%
- % For each supported option OPTION, a driver should define
- % \hl[dest]@opt@OPTION.
- \expandafter\ifx\csname \hl@prefix @opt@#1\endcsname \relax
- \errmessage{Invalid option `#1'}%
- \fi
- % Save the value of the option.
- \if ,#2, % if #2 is empty, complain.
- \errmessage{Missing value for option `#1'}%
- \else
- % Remove a trailing =.
- \def\temp##1={##1}%
- \expandafter\edef\csname \hl@prefix @opt@#1\endcsname{\temp#2}%
- \fi
-}%
-% \hl{dest,start,end}@impl{GROUP}{LABEL} will generate `implicit' destination /
-% hyperlink, if the user has not turned off this kind of implicit
-% destinations / hyperlinks. This is used by Eplain's cross-reference
-% macros.
-\def\hldest@impl#1{%
- \expandafter\ifcase\csname hldest@on@#1\endcsname
- \relax\expandafter\gobble
- \else
- \toks@=\expandafter{\csname hldest@type@#1\endcsname}%
- \toks@ii=\expandafter{\csname hldest@opts@#1\endcsname}%
- \edef\temp{\noexpand\hldest{\the\toks@}{\the\toks@ii}}%
- \expandafter\temp
- \fi
-}%
-\def\hlstart@impl#1{%
- \expandafter\ifcase\csname hl@on@#1\endcsname
- % Still produce \leavevmode, to be consistent with \hloff.
- \leavevmode\expandafter\gobble
- \else
- \toks@=\expandafter{\csname hl@type@#1\endcsname}%
- \toks@ii=\expandafter{\csname hl@opts@#1\endcsname}%
- \edef\temp{\noexpand\hlstart{\the\toks@}{\the\toks@ii}}%
- \expandafter\temp
- \fi
-}%
-\def\hlend@impl#1{%
- \expandafter\ifcase\csname hl@on@#1\endcsname
- \else
- \hlend
- \fi
-}%
-%
-% Setting options and types.
-%
-\def\hl@asterisk@word{*}%
-\def\hl@opts@word{opts}%
-\newif\if@params@override
-% We define hyperlink / destination groups. A group is a macro or a
-% group of macros which implicitly generate hyperlink / destination.
-% The user can set parameters for each group individually, as well as
-% the default parameters, with the macros defined below. Group
-% settings will override the default hyperlink / destination
-% parameters.
-\def\hldest@groups{definexref,xrdef,li,eq,bib,foot,footback,idx}%
-\def\hl@groups{ref,xref,eq,cite,foot,footback,idx,url}%
-% \hldesttype [GROUPS]{VALUE}
-% \hldestopts [GROUPS]{VALUE}
-% \hltype [GROUPS]{VALUE}
-% \hlopts [GROUPS]{VALUE}
-%
-% Set hyperlink or destination parameter (type / opts) to VALUE for
-% each group in GROUPS. An empty `group' will set default value for
-% the parameter. A star (*) `group' stands for all groups (exept the
-% empty `group'). If the macro is followed by an exclamation mark
-% (like \hlopts!...), the parameters will be overridden; otherwise,
-% they will be updated (this has effect only on group option list).
-\def\hldesttype{%
- \def\hl@prefix{hldest}%
- \def\hl@param{type}%
- \let\hl@all@groups\hldest@groups
- \futurelet\hl@excl\hl@param@read@excl
-}%
-\def\hldestopts{%
- \def\hl@prefix{hldest}%
- \def\hl@param{opts}%
- \let\hl@all@groups\hldest@groups
- \futurelet\hl@excl\hl@param@read@excl
-}%
-\def\hltype{%
- \def\hl@prefix{hl}%
- \def\hl@param{type}%
- \let\hl@all@groups\hl@groups
- \futurelet\hl@excl\hl@param@read@excl
-}%
-\def\hlopts{%
- \def\hl@prefix{hl}%
- \def\hl@param{opts}%
- \let\hl@all@groups\hl@groups
- \futurelet\hl@excl\hl@param@read@excl
-}%
-\def\hl@param@read@excl{%
- \ifx!\hl@excl
- \let\next\hl@param@read@opt@arg
- \@params@overridetrue
- \else
- \def\next{\hl@param@read@opt@arg{!}}%
- \@params@overridefalse
- \fi
- \next
-}%
-\def\hl@param@read@opt@arg#1{% #1 is the `!', ignore it.
- \@getoptionalarg\hl@setparam
-}%
-% Set the parameter \hl@param to #1 for each group in \@optionalarg.
-\def\hl@setparam#1{%
- \ifx\@optionalarg\empty
- \hl@setparam@default{#1}% Set default.
- \else
- % If we find an asterisk in the list, we have no choice but to
- % finish the list and then call \hl@setparam again, now with
- % \hl@all@groups for the list of groups.
- \let\hl@do@all@groups\gobble
-%
- \for\hl@group:=\@optionalarg\do{%
- \ifx\hl@group\hl@asterisk@word
- \def\hl@do@all@groups{\let\@optionalarg\hl@all@groups \hl@setparam}%
- \else
- \hl@setparam@group{#1}%
- \fi
- }%
-%
- \hl@do@all@groups{#1}%
- \fi
-}%
-% Set a parameter (\hl@param) for one group (\hl@group) to the value
-% (#1). The group may be empty, in which case we call
-% \hl@setparam@default
-\def\hl@setparam@group#1{%
- \ifx\hl@group\empty
- \hl@setparam@default{#1}%
- \else
- \expandafter\ifx\csname\hl@prefix @\hl@param @\hl@group\endcsname\relax
- \errmessage{Hyperlink group parameter `\hl@prefix:\hl@param:\hl@group' is not defined}%
- \fi
- \ifx\hl@param\hl@opts@word
- % For the `opts' parameter, we want to expand the first token of
- % #1 once, in case the user passed a macro containing the option
- % list. We may need to either simply override the old option
- % list, or to update it with the new option settings.
- \if@params@override
- \toks@=\expandafter{#1}%
- \ece\edef{\hl@prefix @\hl@param @\hl@group}{\the\toks@}%
- \else
- \hl@update@opts@with@list{#1}% #1 will be used in the \for
- % loop, so it will be expanded once.
- \fi
- \else
- % Do not use \edef here to define the parameter, so the user can
- % define it to, e.g., \normalbaselineskip, and make the parameter
- % adjustable to a situation.
- \ece\def{\hl@prefix @\hl@param @\hl@group}{#1}%
- \fi
- \fi
-}%
-% Set default parameter values. We have to treat `opts' (list of
-% options) specially, because for option defaults we don't store a
-% list of options (like we do for the group options) but set each
-% option individually.
-\def\hl@setparam@default#1{%
- \ifx\hl@param\hl@opts@word
- % `opts'.
- \for\hl@opt:=#1\do{%
- \ifx\hl@opt\empty \else
- \expandafter\hl@set@opt\hl@opt=,%
- \fi
- }%
- \else
- % Everything except `opts'.
- \expandafter\ifx\csname\hl@prefix @\hl@param\endcsname\relax
- \message{Default parameter `\hl@prefix:\hl@param' is not defined}%
- \fi
- % Should not use \edef, so the user could define this to, e.g.,
- % \normalbaselineskip, to make the parameter adjustable to a
- % situation.
- \ece\def{\hl@prefix @\hl@param}{#1}%
- \fi
-}%
-% For each option in the list (#1), call \hl@update@with@opt to update
-% the group's option list (\csname\hl@prefix @opts@ \hl@group\endcsname)
-% with this new option.
-\def\hl@update@opts@with@list#1{%
- % Start with the current list of the group.
- \global\expandafter\let\expandafter\hl@update@new@list
- \csname \hl@prefix @opts@\hl@group\endcsname
- % We have to isolate the \for loop inside a (TeX) group, to avoid
- % clashes with the loop in \hl@setparam
- \begingroup
- \for\hl@opt:=#1\do{%
- \hl@update@opts@with@opt
- }%
- \endgroup
- % Save the final list back in the option list for the group.
- \ece\let{\hl@prefix @opts@\hl@group}\hl@update@new@list
-}%
-% Go through the option list (\hl@update@new@list) and construct the
-% new list (in \hl@update@new@list), replacing the old definition of
-% the option with the new one (\hl@opt).
-\def\hl@update@opts@with@opt{%
- % Save the old list and the new option.
- \global\let\hl@update@old@list\hl@update@new@list
- \global\let\hl@update@new@list\empty
- \global\let\hl@update@new@opt\hl@opt
- % Get the key of the new option and save it.
- \expandafter\hl@parse@opt@key\hl@opt=,%
- \let\hl@update@new@key\hl@update@key
- % We will set this to real comma after the first entry.
- \global\let\hl@update@comma\empty
- % We have to isolate the \for loop inside a (TeX) group, to avoid
- % clashes with the loop in \hl@update@opts@with@list
- \begingroup
- \for\hl@opt:=\hl@update@old@list\do{%
- \ifx\hl@opt\empty \else % Skip empty `options'.
- % Get the key of this option.
- \expandafter\hl@parse@opt@key\hl@opt=,%
- % If the key matches, replace the option definition with the
- % new definition, otherwise, repeat the old definition.
- \toks@=\expandafter{\hl@update@new@list}%
- \ifx\hl@update@key\hl@update@new@key
- \ifx\hl@update@new@opt\empty \else % Skip multiple options.
- \toks@ii=\expandafter{\hl@update@new@opt}%
- \xdef\hl@update@new@list{\the\toks@\hl@update@comma\the\toks@ii}%
- \global\let\hl@update@new@opt\empty
- \global\def\hl@update@comma{,}%
- \fi
- \else
- \toks@ii=\expandafter{\hl@opt}%
- \xdef\hl@update@new@list{\the\toks@\hl@update@comma\the\toks@ii}%
- \global\def\hl@update@comma{,}%
- \fi
- \fi
- }%
- \endgroup
- % If nothing was replaced, add the new option to the end of the new list.
- \ifx\hl@update@new@opt\empty \else
- \toks@=\expandafter{\hl@update@new@list}%
- \toks@ii=\expandafter{\hl@update@new@opt}%
- \xdef\hl@update@new@list{\the\toks@\hl@update@comma\the\toks@ii}%
- \fi
-}%
-% Parse the key of the option and save it in \hl@update@key
-\def\hl@parse@opt@key#1=#2,{\def\hl@update@key{#1}}%
-%
-% Default and group parameters (options and types).
-%
-% Option `raise' will determine how much to raise hyperlink
-% destinations above the baseline. It will be supported by all
-% drivers, since it is handled outside the drivers, in
-% \hldest@aftergetparam.
-\def\hldest@opt@raise{\normalbaselineskip}%
-% Options `colormodel' and `color' will also be handled outside the
-% drivers, in \hlstart@aftergetparam.
-\def\hl@opt@colormodel{cmyk}%
-\def\hl@opt@color{0.28,1,1,0.35}%
-%
-% Parameters for destinations and links produced implicitly by
-% cross-reference macros. Note that each driver will additionally
-% define \hldest@type and \hl@type parameters which will be used when
-% one of the below is empty, and default values for destination and
-% link options (which are driver-specific).
-%
-% Destination on/off flags (0=off, 1=on).
-\def\hldest@on@definexref{0}%
-\def\hldest@on@xrdef{0}%
-\def\hldest@on@li{0}%
-\def\hldest@on@eq{0}% \eqdef and friends
-\def\hldest@on@bib{0}% \biblabelprint (BibTeX)
-\def\hldest@on@foot{0}% \footnote / \numberedfootnote
-\def\hldest@on@footback{0}% back-ref for \footnote / \numberedfootnote
-\def\hldest@on@idx{0}% both `page' dests and `exact' dests
-% Types of destinations.
-\let\hldest@type@definexref\empty
-\let\hldest@type@xrdef\empty
-\let\hldest@type@li\empty
-\let\hldest@type@eq\empty % \eqdef and friends
-\let\hldest@type@bib\empty % \biblabelprint (BibTeX)
-\let\hldest@type@foot\empty % \footnote / \numberedfootnote
-\let\hldest@type@footback\empty % back-ref for \footnote / \numberedfootnote
-\let\hldest@type@idx\empty % both `page' dests and `exact' dests
-% Options for destinations.
-\let\hldest@opts@definexref\empty
-\let\hldest@opts@xrdef\empty
-\let\hldest@opts@li\empty
-\def\hldest@opts@eq{raise=1.7\normalbaselineskip}% \eqdef and friends
-\let\hldest@opts@bib\empty % \biblabelprint (BibTeX)
-\let\hldest@opts@foot\empty % \footnote / \numberedfootnote
-\let\hldest@opts@footback\empty % back-ref for \footnote / \numberedfootnote
-\let\hldest@opts@idx\empty % both `page' dests and `exact' dests
-%
-% Hyperlink on/off flags (0=off, 1=on).
-\def\hl@on@ref{0}% \refn and \xrefn, \ref, \refs
-\def\hl@on@xref{0}%
-\def\hl@on@eq{0}% \eqref and \eqrefn
-\def\hl@on@cite{0}% \cite (BibTeX)
-\def\hl@on@foot{0}% \footnote / \numberedfootnote
-\def\hl@on@footback{0}% back-reference for \footnote / \numberedfootnote
-\def\hl@on@idx{0}%
-\def\hl@on@url{0}% \url from url.sty
-% Types of links.
-\let\hl@type@ref\empty % \refn and \xrefn, \ref, \refs
-\let\hl@type@xref\empty
-\let\hl@type@eq\empty % \eqref and \eqrefn
-\let\hl@type@cite\empty % \cite (BibTeX)
-\let\hl@type@foot\empty % \footnote / \numberedfootnote
-\let\hl@type@footback\empty % back-reference for \footnote / \numberedfootnote
-\let\hl@type@idx\empty
-\let\hl@type@url\empty % \url from url.sty (this will be set to `url' by
- % drivers which support the `url' type)
-% Options for links.
-\let\hl@opts@ref\empty % \refn and \xrefn, \ref, \refs
-\let\hl@opts@xref\empty
-\let\hl@opts@eq\empty % \eqref and \eqrefn
-\let\hl@opts@cite\empty % \cite (BibTeX)
-\let\hl@opts@foot\empty % \footnote / \numberedfootnote
-\let\hl@opts@footback\empty % back-reference for \footnote / \numberedfootnote
-\let\hl@opts@idx\empty
-\let\hl@opts@url\empty % \url from url.sty
-%
-% \@hlon[GROUPS]
-% \@hloff[GROUPS]
-% \@hldeston[GROUPS]
-% \@hldestoff[GROUPS]
-% \@@hlon
-% \@@hloff
-% \@@hldeston
-% \@@hldestoff
-%
-% Macros to switch hyperlinks / destinations on/off.
-%
-% The optional arg is the list of groups. It can contain a star (*)
-% which will make the macros affect all groups (but not the low-level
-% macros \hlstart, \hlend and \hldest).
-%
-% \@hlon, \@hldeston, \@hloff and \@hldestoff will turn low-level
-% macros on/off only when they are used either without the optional
-% arg or with an empty `group' in the optional arg, otherwise only the
-% specified groups are affected.
-%
-% The single-`@' variants (\@hl...) are for the user. In your macros,
-% if you want to (temporarily) turn low-level macros on/off, it's
-% better to use the double-`@' variants (\@@hl...), because they are
-% much faster and won't clobber \@optionalarg or anything else.
-%
-\def\@hlon{\@hlonoff@value@stub{hl}\@@hlon1 }%
-\def\@hloff{\@hlonoff@value@stub{hl}\@@hloff0 }%
-\def\@hldeston{\@hlonoff@value@stub{hldest}\@@hldeston1 }%
-\def\@hldestoff{\@hlonoff@value@stub{hldest}\@@hldestoff0 }%
-%
-\def\@hlonoff@value@stub#1#2#3{%
- \def\hl@prefix{#1}%
- \let\hl@on@empty#2%
- \def\hl@value{#3}%
- \expandafter\let\expandafter\hl@all@groups
- \csname \hl@prefix @groups\endcsname
- \@getoptionalarg\@finhlswitch
-}%
-%
-\def\@finhlswitch{%
- \ifx\@optionalarg\empty
- \hl@on@empty
- \fi
- % If we find an asterisk in the list, we have no choice but to
- % finish the list and then call \@finhlswitch again, now with
- % \hl@all@groups for the list of groups.
- \let\hl@do@all@groups\relax
-%
- \for\hl@group:=\@optionalarg\do{%
- \ifx\hl@group\hl@asterisk@word
- \let\@optionalarg\hl@all@groups
- \let\hl@do@all@groups\@finhlswitch
- \else
- \ifx\hl@group\empty
- \hl@on@empty
- \else
- \expandafter\ifx\csname\hl@prefix @on@\hl@group\endcsname \relax
- \errmessage{Hyperlink group `\hl@prefix:on:\hl@group'
- is not defined}%
- \fi
- \ece\edef{\hl@prefix @on@\hl@group}{\hl@value}%
- \fi
- \fi
- }%
-%
- \hl@do@all@groups
-}%
-% Turn low-level macros on/off.
-\def\@@hlon{%
- \let\hlstart\@hlstart
- \let\hlend\@hlend
-}%
-\def\@@hloff{%
- \def\hlstart##1##2##3{\leavevmode\ignorespaces}%
- \let\hlend\relax
-}%
-\def\@@hldeston{%
- \let\hldest\@hldest
-}%
-\def\@@hldestoff{%
- \def\hldest##1##2##3{\ignorespaces}%
-}%
-%
-% Hyperlink drivers.
-%
-% \enablehyperlinks[OPTIONS] will enable hyperlinks. OPTIONS is a
-% list of comma-separated options. An option is one of the following:
-%
-% idxexact Point index links to exact locations of the term
-% idxpage Point index links to pages with the term (default)
-% idxnone No links for index entries
-% <driver-name> Force the hyperlink driver
-%
-% If <driver-name> is omitted, appropriate driver will be detected, if
-% possible; if not, we fall back on `dvipdfm' (currently this means
-% `pdftex' when \ifpdf, and `dvipdfm' otherwise).
-\def\hl@idxexact@word{idxexact}%
-\def\hl@idxpage@word{idxpage}%
-\def\hl@idxnone@word{idxnone}%
-%
-\def\enablehyperlinks{\@getoptionalarg\@finenablehyperlinks}%
-\def\@finenablehyperlinks{%
- \let\hl@selecteddriver\empty
- % By default we generate `idxpage' index hyperlinks.
- \def\hldest@place@idx{0}%
- % Go through the option list.
- \for\hl@arg:=\@optionalarg\do{%
- \ifx\hl@arg\hl@idxexact@word
- \def\hldest@place@idx{1}%
- \else
- \ifx\hl@arg\hl@idxnone@word
- \def\hldest@place@idx{-1}%
- \else
- \ifx\hl@arg\hl@idxpage@word
- \def\hldest@place@idx{0}%
- \else
- \let\hl@selecteddriver\hl@arg
- \fi
- \fi
- \fi
- }%
- % Check the driver name.
- \ifx\hl@selecteddriver\empty
- % The user did not specify a driver, detect.
- \ifpdf
- \def\hl@selecteddriver{pdftex}%
- \message{^^JUsing `pdftex' hyperlink driver.}%
- \else
- \def\hl@selecteddriver{dvipdfm}%
- \message{^^JUsing `dvipdfm' hyperlink driver.}%
- \fi
- \else
- % Check that the requested driver's initialization routine is
- % available.
- \expandafter\ifx\csname hldriver@\hl@selecteddriver\endcsname \relax
- \errmessage{No hyperlink driver `\hl@selecteddriver' available}%
- \fi
- \fi
- % Call the driver's initialization routine.
- \csname hldriver@\hl@selecteddriver\endcsname
- % Driver should not be changed later.
- \def\@finenablehyperlinks{\errmessage{Hyperlink driver `\hl@selecteddriver'
- already selected}}%
- % Free memory taken up by the drivers.
- \let\hldriver@nolinks\undefined
- \let\hldriver@pdftex \undefined
- \let\hldriver@dvipdfm\undefined
- % The user can use these to turn the links / destinations on/off
- % (see comments to the driver `nolinks').
- \let\hloff\@hloff
- \let\hlon\@hlon
- \let\hldestoff\@hldestoff
- \let\hldeston\@hldeston
- % Turn everything on by default.
- \hlon[*,]%
- \hldeston[*,]%
-}%
-%
-% Driver `nolinks'.
-%
-% Select this driver to suppress any hyperlinks / destinations in your
-% document.
-%
-% NOTE: selecting this driver is quite different from not selecting
-% any driver at all, or from selecting some driver and then turning
-% off links and destinations for the entire document with \hloff and
-% \hldestoff.
-%
-% The purpose of \hldestoff and \hloff is to mark (parts) of document
-% where links should never appear. (Imagine you want to prevent a
-% cross-referencing macro from generating a link at a certain spot in
-% your document.)
-%
-% If instead you have prepared a document with links and just want to
-% compile a version without the links, it is better to select the
-% driver `nolinks'. This will ensure that spacing and pagebreaking
-% will be the same as what you were getting with hyperlinks enabled.
-%
-% The reason for this is that hyperlinks are produced by \special
-% commands. Each \special is placed inside a whatsit which may
-% introduce a legitimate breakpoint at places where none would exist
-% without the whatsit. The macros \hldestoff and \hloff disable
-% hyperlink macros so drastically that no whatsits are produced.
-%
-% On the other hand, `nolinks' driver does not completely disable
-% hyperlink macros. Instead, it defines them to write to the log
-% file (what gets written is not really important). This will produce
-% the whatsits imitating the whatsits from the \special's. (This
-% trick was borrowed from graphics bundle.)
-%
-% Another reason for using `nolinks' is that in horizontal mode
-% \hldest places destinations inside zero-width/height/depth boxes.
-% When you say \hldestoff, \hldest will omit both destination specs
-% and these boxes. The missing boxes can cause typesetting to be
-% inconsistent with what you were getting with destinations enabled.
-% Again, `nolinks' driver helps here by defining \hldest to still
-% produce the empty boxes.
-%
-\def\hldriver@nolinks{%
- \def\@hldest##1##2##3{%
- \ifvmode
- \write-1{\string\hldest: ##3}%
- \else
- \allowhyphens
- \smash{\write-1{\string\hldest: ##3}}%
- \allowhyphens
- \fi
- \ignorespaces
- }%
- \def\@hlstart##1##2##3{%
- \leavevmode
- \begingroup % Start the color group.
- \write-1{\string\hlstart: ##3}%
- \ignorespaces
- }%
- \def\@hlend{\write-1{\string\hlend}\endgroup}% End the group from \@hlstart.
-}%
-%
-% Driver `pdftex'.
-%
-\def\hldriver@pdftex{%
-\ifpdf % PDF output is enabled.
- \def\hl@raw@word{raw}%
- %
- % Hyperlink destinations.
- %
- % Default type.
- \def\hldest@type{xyz}%
- % Set defaults for the options and tell \hl@set@opt what options we
- % support. (We do not define \hldest@opt@raise, \hl@opt@colormodel
- % and \hl@opt@color, they are defined and used outside the drivers.)
- \let\hldest@opt@width \empty
- \let\hldest@opt@height \empty
- \let\hldest@opt@depth \empty
- \let\hldest@opt@zoom \empty
- \let\hldest@opt@cmd \empty
- % Multiplexer for all supported destination types.
- \def\hldest@driver{%
- % Special case for `raw' destinations.
- \ifx\@hltype\hl@raw@word
- \csname \hldest@opt@cmd \endcsname
- \else
- \pdfdest name{\@hllabel}\@hltype
- \csname hldest@typeh@\@hltype\endcsname
- \fi
- }%
- % Define handlers for each supported destination type.
- \let\hldest@typeh@raw \empty
- \let\hldest@typeh@fit \empty
- \let\hldest@typeh@fith \empty
- \let\hldest@typeh@fitv \empty
- \let\hldest@typeh@fitb \empty
- \let\hldest@typeh@fitbh \empty
- \let\hldest@typeh@fitbv \empty
- \def\hldest@typeh@fitr{%
- \ifx\hldest@opt@width \empty \else width \hldest@opt@width \fi
- \ifx\hldest@opt@height \empty \else height \hldest@opt@height \fi
- \ifx\hldest@opt@depth \empty \else depth \hldest@opt@depth \fi
- }%
- \def\hldest@typeh@xyz{%
- \ifx\hldest@opt@zoom\empty \else zoom \hldest@opt@zoom \fi
- }%
- %
- % Hyperlinks.
- %
- % Default type.
- \def\hl@type{name}%
- % We support `url' hyperlinks, so set the `url' group type.
- \ifx\hl@type@url\empty
- \def\hl@type@url{url}%
- \fi
- % Set defaults for the options and tell \hl@set@opt what options we
- % support.
- \let\hl@opt@width \empty
- \let\hl@opt@height \empty
- \let\hl@opt@depth \empty
- \def\hl@opt@bstyle {S}%
- \def\hl@opt@bwidth {1}%
- \let\hl@opt@bcolor \empty
- \let\hl@opt@hlight \empty
- \let\hl@opt@bdash \empty
- \let\hl@opt@pagefit \empty
- \let\hl@opt@cmd \empty
- \let\hl@opt@file \empty
- \let\hl@opt@newwin \empty
- % Multiplexer for all supported link types.
- \def\hl@driver{%
- % Special case for `raw' links.
- \ifx\@hltype\hl@raw@word
- \csname \hl@opt@cmd \endcsname
- \else
- % See if we will construct a /BS spec. We want to bother only
- % if any of \hl@opt@bstyle, \hl@opt@bwidth and \hl@opt@bdash is
- % not empty.
- \let\hl@BSspec\relax % construct
- \ifx\hl@opt@bstyle \empty
- \ifx\hl@opt@bwidth \empty
- \ifx\hl@opt@bdash \empty
- \let\hl@BSspec\empty % don't construct
- \fi
- \fi
- \fi
- % Construct common preamble of a link.
- \def\hlstart@preamble{%
- \pdfstartlink
- \ifx\hl@opt@width \empty \else width \hl@opt@width \fi
- \ifx\hl@opt@height \empty \else height \hl@opt@height \fi
- \ifx\hl@opt@depth \empty \else depth \hl@opt@depth \fi
- attr{%
- \ifx\hl@opt@bcolor\empty\else /C[\hl@opt@bcolor]\fi
- \ifx\hl@opt@hlight\empty\else /H/\hl@opt@hlight\fi
- \ifx\hl@BSspec\relax
- /BS<<%
- /Type/Border%
- \ifx\hl@opt@bstyle\empty\else /S/\hl@opt@bstyle\fi
- \ifx\hl@opt@bwidth\empty\else /W \hl@opt@bwidth\fi
- \ifx\hl@opt@bdash\empty \else /D[\hl@opt@bdash]\fi
- >>%
- \fi
- }%
- }%
- % Call the handler.
- \csname hl@typeh@\@hltype\endcsname
- \fi
- }%
- % Link type handlers
- \let\hl@typeh@raw\empty
- \def\hl@typeh@name{\hlstart@preamble goto name{\@hllabel}}%
- \def\hl@typeh@num{\hlstart@preamble goto num \@hllabel}%
- \def\hl@typeh@page{%
- % PDF requires pages to start from 0, so adjust page number.
- \count@=\@hllabel
- \advance\count@ by-1
- %
- \hlstart@preamble
- user{%
- /Subtype/Link%
- /Dest%
- [\the\count@
- \ifx\hl@opt@pagefit\empty/Fit\else\hl@opt@pagefit\fi]%
- }%
- }%
- \def\hl@typeh@filename{\hl@file{(\@hllabel)}}%
- \def\hl@typeh@filepage{%
- % PDF requires pages to start from 0, so adjust page number.
- \count@=\@hllabel
- \advance\count@ by-1
- %
- \hl@file{%
- [\the\count@ \ifx\hl@opt@pagefit\empty/Fit\else\hl@opt@pagefit\fi]%
- }%
- }%
- \def\hl@file##1{%
- \hlstart@preamble
- user{%
- /Subtype/Link%
- /A<<%
- /Type/Action%
- /S/GoToR%
- /D##1%
- /F(\hl@opt@file)%
- \ifx\hl@opt@newwin\empty \else
- /NewWindow \ifcase\hl@opt@newwin false\else true\fi
- \fi
- >>%
- }%
- }%
- \def\hl@typeh@url{%
- \hlstart@preamble
- user{%
- /Subtype/Link%
- /A<<%
- /Type/Action
- /S/URI%
- /URI(\@hllabel)%
- >>%
- }%
- }%
- %
- \def\@hlend{\pdfendlink\endgroup}% End the group from the \@hlstart.
-%
-\else % PDF output is not enabled.
- \message{Warning: `pdftex' hyperlink driver: PDF output is
- not enabled, falling back on `nolinks' driver.}%
- \hldriver@nolinks
-\fi
-}%
-%
-% Driver `dvipdfm'.
-%
-\def\hldriver@dvipdfm{%
- \def\hl@raw@word{raw}%
- %
- % Hyperlink destinations.
- %
- % Default type.
- \def\hldest@type{xyz}%
- % Set defaults for the options and tell \hl@set@opt what options we
- % support. (We do not define \hldest@opt@raise, \hl@opt@colormodel
- % and \hl@opt@color, they are defined and used outside the drivers.)
- \let\hldest@opt@left \empty
- \let\hldest@opt@top \empty
- \let\hldest@opt@right \empty
- \let\hldest@opt@bottom \empty
- \let\hldest@opt@zoom \empty
- \let\hldest@opt@cmd \empty
- % Multiplexer for all supported destination types.
- \def\hldest@driver{%
- % Special case for `raw' destinations.
- \ifx\@hltype\hl@raw@word
- \csname \hldest@opt@cmd \endcsname
- \else
- % Construct common preamble of a destination.
- \def\hldest@preamble{%
- pdf: dest (\@hllabel) [@thispage
- }%
- % Call the handler.
- \csname hldest@typeh@\@hltype\endcsname
- \fi
- }%
- % Define handlers for each supported destination type.
- \let\hldest@typeh@raw\empty
- \def\hldest@typeh@fit{%
- \special{\hldest@preamble /Fit]}%
- }%
- \def\hldest@typeh@fith{%
- \special{\hldest@preamble /FitH
- \ifx\hldest@opt@top\empty @ypos \else \hldest@opt@top \fi]}%
- }%
- \def\hldest@typeh@fitv{%
- \special{\hldest@preamble /FitV
- \ifx\hldest@opt@left\empty @xpos \else \hldest@opt@left \fi]}%
- }%
- \def\hldest@typeh@fitb{%
- \special{\hldest@preamble /FitB]}%
- }%
- \def\hldest@typeh@fitbh{%
- \special{\hldest@preamble /FitBH
- \ifx\hldest@opt@top\empty @ypos \else \hldest@opt@top \fi]}%
- }%
- \def\hldest@typeh@fitbv{%
- \special{\hldest@preamble /FitBV
- \ifx\hldest@opt@left\empty @xpos \else \hldest@opt@left \fi]}%
- }%
- \def\hldest@typeh@fitr{%
- \special{\hldest@preamble /FitR
- \ifx\hldest@opt@left\empty @xpos\else\hldest@opt@left\fi\space
- \ifx\hldest@opt@bottom\empty @ypos\else\hldest@opt@bottom\fi\space
- \ifx\hldest@opt@right\empty @xpos\else\hldest@opt@right\fi\space
- \ifx\hldest@opt@top\empty @ypos\else\hldest@opt@top \fi]}%
- }%
- \def\hldest@typeh@xyz{%
- \begingroup
- % Convert zoom factor: 12345 -> 12.345
- \ifx\hldest@opt@zoom\empty
- \count1=\z@ \count2=\z@
- \else
- \count2=\hldest@opt@zoom
- \count1=\count2 \divide\count1 by 1000
- \count3=\count1 \multiply\count3 by 1000
- \advance\count2 by -\count3
- \fi
- \special{\hldest@preamble /XYZ
- \ifx\hldest@opt@left\empty @xpos\else\hldest@opt@left\fi\space
- \ifx\hldest@opt@top\empty @ypos\else\hldest@opt@top\fi\space
- \the\count1.\the\count2]}%
- \endgroup
- }%
- %
- % Hyperlinks.
- %
- % Default type.
- \def\hl@type{name}%
- % We support `url' hyperlinks, so set `url' group type.
- \ifx\hl@type@url\empty
- \def\hl@type@url{url}%
- \fi
- % Set defaults for the options and tell \hl@set@opt what options we
- % support.
- \def\hl@opt@bstyle {S}%
- \def\hl@opt@bwidth {1}%
- \let\hl@opt@bcolor \empty
- \let\hl@opt@hlight \empty
- \let\hl@opt@bdash \empty
- \let\hl@opt@pagefit \empty
- \let\hl@opt@cmd \empty
- \let\hl@opt@file \empty
- \let\hl@opt@newwin \empty
- % Multiplexer for all supported link types.
- \def\hl@driver{%
- % Special case for `raw' links.
- \ifx\@hltype\hl@raw@word
- \csname \hl@opt@cmd \endcsname
- \else
- % See if we will construct a /BS spec. We want to bother only
- % if any of \hl@opt@bstyle, \hl@opt@bwidth and \hl@opt@bdash is
- % not empty.
- \let\hl@BSspec\relax % construct
- \ifx\hl@opt@bstyle \empty
- \ifx\hl@opt@bwidth \empty
- \ifx\hl@opt@bdash \empty
- \let\hl@BSspec\empty % don't construct
- \fi
- \fi
- \fi
- % Construct common preamble of a link.
- \def\hlstart@preamble{%
- pdf: beginann
- <<%
- /Type/Annot%
- /Subtype/Link%
- \ifx\hl@opt@bcolor\empty\else /C[\hl@opt@bcolor]\fi
- \ifx\hl@opt@hlight\empty\else /H/\hl@opt@hlight\fi
- \ifx\hl@BSspec\relax
- /BS<<%
- /Type/Border%
- \ifx\hl@opt@bstyle\empty\else /S/\hl@opt@bstyle\fi
- \ifx\hl@opt@bwidth\empty\else /W \hl@opt@bwidth\fi
- \ifx\hl@opt@bdash\empty \else /D[\hl@opt@bdash]\fi
- >>%
- \fi
- }%
- % Call the handler.
- \csname hl@typeh@\@hltype\endcsname
- \fi
- }%
- % Link type handlers.
- \let\hl@typeh@raw\empty
- \def\hl@typeh@name{\special{\hlstart@preamble /Dest(\@hllabel)>>}}%
- \def\hl@typeh@page{%
- % PDF requires pages to start from 0, so adjust page number.
- \count@=\@hllabel
- \advance\count@ by-1
- %
- \special{%
- \hlstart@preamble
- /Dest[\the\count@
- \ifx\hl@opt@pagefit\empty/Fit\else\hl@opt@pagefit\fi]%
- >>%
- }%
- }%
- \def\hl@typeh@filename{\hl@file{(\@hllabel)}}%
- \def\hl@typeh@filepage{%
- % PDF requires pages to start from 0, so adjust page number.
- \count@=\@hllabel
- \advance\count@ by-1
- %
- \hl@file{%
- [\the\count@ \ifx\hl@opt@pagefit\empty/Fit\else\hl@opt@pagefit\fi]%
- }%
- }%
- \def\hl@file##1{%
- \special{%
- \hlstart@preamble
- /A<<%
- /Type/Action%
- /S/GoToR%
- /D##1%
- /F(\hl@opt@file)%
- \ifx\hl@opt@newwin\empty \else
- /NewWindow \ifcase\hl@opt@newwin false\else true\fi
- \fi
- >>%
- >>%
- }%
- }%
- \def\hl@typeh@url{%
- \special{%
- \hlstart@preamble
- /A<<%
- /Type/Action
- /S/URI%
- /URI(\@hllabel)%
- >>%
- >>%
- }%
- }%
- %
- \def\@hlend{\special{pdf: endann}\endgroup}% End the group from \@hlstart.
-}%
-%
-% Internal hyperlink macros.
-%
-% \hl@define@eqlabel{LABEL} will define \hl@eqlabel to a non-empty
-% hyperlink label for an equation. The idea is to generate
-% (hopefully) unique label in cases when LABEL is empty (e.g., when
-% user says `\eqdef{}'). To customize the autogenerated labels
-% redefine \phantomeqlabel.
-%
-\newcount\phantomeqnumber
-\def\phantomeqlabel{PHEQ\the\phantomeqnumber}%
-%
-\def\hl@define@eqlabel#1{%
- % Make all definitions global so they are not shadowed by groups
- % (\@eqdef depends on this).
- \ifempty{#1}%
- \global\advance\phantomeqnumber by1
- \xdef\hl@eqlabel{\phantomeqlabel}%
- \else
- \gdef\hl@eqlabel{#1}%
- \fi
-}%
-%
-% Cross-reference macros call hyperlink macros, so define them to
-% produce nothing by default. However, we still want \hldest and
-% \hlstart to produce \leavevmode and/or \ignorespaces, to make
-% cross-reference macros consistent. Note that this, strictly
-% speaking, makes cross-reference macros incompatible with
-% pre-hyperlink releases of eplain, in cases where paragraph is
-% started by a cross-reference macro. It is quite unlikely though
-% that any problem will arise.
-\let\hldeston\relax \let\hldestoff\relax
-\let\hlon\relax \let\hloff\relax
-\@@hloff
-\@@hldestoff
-%
-%
-%
-% Support for LaTeX packages under plain TeX.
-%
-% We use miniltx.tex from the LaTeX graphics collection and build on
-% it to provide package options support, package version check,
-% recursive package loading with \RequirePackage, proper handling of
-% \AtBeginDocument and \AtEndOfPackage.
-%
-% Much of the following was borrowed from LaTeX.
-%
-% The internal variables are quite a mess, so here is a hint:
-%
-% - \usepkg@pkg, \usepkg@options, \usepkg@date are used by
-% \usepackage to save its parameters.
-%
-% - When \RequirePackage is called within a package, the above
-% variables are saved in \usepkg@save@VAR@RECURSIONLEVEL, where
-% VAR={pkg,options,date}, and RECURSIONLEVEL is incremented for
-% each nested package inclusion. This way the variables can be
-% restored after the (nested) package will have been loaded.
-%
-% - Options for package PACKAGE (no .sty extension) are accumulated
-% in \usepkg@options@PACKAGE.
-%
-% - For each declared option OPTION in package PACKAGE, we save the
-% code which enables OPTION in \usepkg@option@PACKAGE@OPTION.
-% There may be a star (`*') option declaration, the code from which
-% will be used to process options not declared by the package
-% (without it, an undeclared option will cause an error).
-%
-% - For each loaded PACKAGE / FILE.EXT we declare \ver@PACKAGE.sty /
-% \ver@FILE.EXT. We use \ver@PACKAGE.sty to detect reloading
-% of packages. Some packages also use these macros.
-%
-% - Calls to \AtBeginDocument accumulate the code in
-% \usepkg@at@begin@document. We will expand it at the end of the
-% \beginpackages...\endpackages `environment'.
-%
-% - Calls to \AtEndOfPackage accumulate the code in
-% \usepkg@at@end@of@package. We will expand it after the package
-% is loaded. To allow recursive package loading, \RequirePackage
-% saves \usepkg@at@end@of@package analogous to \usepkg@pkg.
-%
-\newif\ifusepkg@miniltx@loaded
-\newcount\usepkg@recursion@level
-\def\usepkg@rcrs{\the\usepkg@recursion@level}%
-\let\usepkg@at@begin@document\empty
-\let\usepkg@at@end@of@package\empty
-\def\usepkg@word@autopict{autopict}%
-\def\usepkg@word@psfrag{psfrag}%
-% \beginpackages...\endpackages
-%
-% All packages must be loaded within this `environment' (a kind of
-% LaTeX's preamble). This is so to give us a chance to expand the
-% accumulated \AtBeginDocument commands. Usually, you will want to
-% restrict all \usepackage's to a single \beginpackages...\endpackages,
-% just like in LaTeX, where you load all packages within a (single)
-% preamble.
-\long\def\beginpackages#1\endpackages{%
- \let\usepackage\real@usepackage
- #1%
- \usepkg@at@begin@document
- \global\let\usepkg@at@begin@document\empty
- \global\let\usepackage\fake@usepackage
-}%
-% \fake@usepackage
-%
-% This is what \usepackage is defined to outside of
-% \beginpackages...\endpackages `environment'.
-\def\fake@usepackage{\errmessage{You should not use \string\usepackage\space outside of^^J
- \@spaces\string\beginpackages...\string\endpackages\space environment}%
-}%
-% \RequirePackage[OPTIONS]{PACKAGES}[YYYY/MM/DD]
-%
-% Save parameters for the package being loaded and call \usepackage to
-% load PACKAGES. We depend on \usepackage to restore the saved
-% parameters. We allow for nested calls to \RequirePackage.
-\def\eplain@RequirePackage{%
- \global\ece\let{usepkg@save@pkg\usepkg@rcrs}\usepkg@pkg
- \global\ece\let{usepkg@save@options\usepkg@rcrs}\usepkg@options
- \global\ece\let{usepkg@save@date\usepkg@rcrs}\usepkg@date
- \global\ece\let{usepkg@at@end@of@package\usepkg@rcrs}\usepkg@at@end@of@package
- \global\advance\usepkg@recursion@level by\@ne
- \real@usepackage
-}%
-% \usepackage[OPTIONS]{PACKAGES}[YYYY/MM/DD]
-%
-% Load each of the PACKAGES with OPTIONS, checking that the package
-% date is at least YYYY/MM/DD; if it is not, issue a warning.
-\let\usepackage\fake@usepackage
-\def\real@usepackage{\@getoptionalarg\@finusepackage}%
-\def\@finusepackage#1{%
- \let\usepkg@options\@optionalarg
- \ifempty{#1}%
- \errmessage{No packages specified}%
- \fi
- % Load miniltx.tex, if it is not loaded.
- \ifusepkg@miniltx@loaded \else
- \testfileexistence[miniltx]{tex}%
- \if@fileexists
- \input miniltx.tex
- \global\usepkg@miniltx@loadedtrue
- % Redefine some macros from miniltx.tex
- \global\let\RequirePackage\eplain@RequirePackage
- \global\let\DeclareOption\eplain@DeclareOption
- \global\let\PassOptionsToPackage\eplain@PassOptionsToPackage
- \global\let\ExecuteOptions\eplain@ExecuteOptions
- \global\let\ProcessOptions\eplain@ProcessOptions
- \global\let\AtBeginDocument\eplain@AtBeginDocument
- \global\let\AtEndOfPackage\eplain@AtEndOfPackage
- \global\let\ProvidesFile\eplain@ProvidesFile
- \global\let\ProvidesPackage\eplain@ProvidesPackage
- \else
- \errmessage{miniltx.tex not found, cannot load LaTeX packages}%
- \fi
- \fi
- % Read the trailing optional arg (YYYY/MM/DD).
- \@ifnextchar[%]
- {\@finfinusepackage{#1}}%
- {\@finfinusepackage{#1}[]}%
-}%
-%
-\def\@finfinusepackage#1[#2]{%
- \edef\usepkg@date{#2}%
- % Load each package from the list. Do it outside the \for loop to
- % avoid clashes with any \for loops executed by the package.
- \let\usepkg@load@list\empty
- \for\usepkg@pkg:=#1\do{%
- \toks@=\expandafter{\usepkg@load@list}%
- \edef\usepkg@load@list{%
- \the\toks@
- \noexpand\usepkg@load@pkg{\usepkg@pkg}%
- }%
- }%
- \usepkg@load@list
- % Restore parameters in case we were called from \RequirePackage.
- \ifnum\usepkg@recursion@level>0
- \global\advance\usepkg@recursion@level by\m@ne
- \expandafter\let\expandafter\usepkg@pkg\csname usepkg@save@pkg\usepkg@rcrs\endcsname
- \expandafter\let\expandafter\usepkg@options\csname usepkg@save@options\usepkg@rcrs\endcsname
- \expandafter\let\expandafter\usepkg@date\csname usepkg@save@date\usepkg@rcrs\endcsname
- \expandafter\let\expandafter\usepkg@at@end@of@package\csname usepkg@at@end@of@package\usepkg@rcrs\endcsname
- % Free the memory.
- \global\ece\let{usepkg@save@pkg\usepkg@rcrs}\undefined
- \global\ece\let{usepkg@save@options\usepkg@rcrs}\undefined
- \global\ece\let{usepkg@save@date\usepkg@rcrs}\undefined
- \global\ece\let{usepkg@at@end@of@package\usepkg@rcrs}\undefined
- \fi
-}%
-% Load one package. We assume packages have `sty' extension.
-\def\usepkg@load@pkg#1{%
- % Special cases for `autopict' and `psfrag' packages:
- % - `psfrag' is loaded by psfrag.tex.
- % - `autopict' is loaded by picture.tex, but the package file is
- % autopict.sty.
- \def\usepkg@pkg{#1}%
- \ifx\usepkg@pkg\usepkg@word@autopict
- \testfileexistence[picture]{tex}%
- \if@fileexists \else
- \errmessage{Loader `picture.tex' for package `\usepkg@pkg' not found}%
- \fi
- \else
- \ifx\usepkg@pkg\usepkg@word@psfrag
- \testfileexistence[psfrag]{tex}%
- \if@fileexists \else
- \errmessage{Loader `psfrag.tex' for package `\usepkg@pkg' not found}%
- \fi
- \fi
- \fi
- % See if the package was loaded. If it was, we just bail out.
- % (Maybe we should skip reloading it/warn? We don't want to go into
- % checking that the package was first loaded with a subset of
- % options which are requested now.) \ProvidePackage and
- % \ProvideFile define the macro \ver@PACKAGE.sty (see
- % \eplain@pr@videpackage below).
- \ifundefined{ver@\usepkg@pkg.sty}\else
- \errmessage{Package `\usepkg@pkg' already loaded}%
- \fi
- \testfileexistence[\usepkg@pkg]{sty}%
- \if@fileexists \else
- \errmessage{Package `\usepkg@pkg' not found}%
- \fi
- % Construct option list for the package. Include any options
- % passed to us by \PassOptionsToPackage and \RequirePackage.
- \expandafter\let\expandafter\temp\csname usepkg@options@\usepkg@pkg\endcsname
- \ifx\temp\relax
- \let\temp\empty
- \fi
- \ifx\temp\empty
- \let\temp\usepkg@options
- \else
- \ifx\usepkg@options\empty \else
- \edef\temp{\temp,\usepkg@options}%
- \fi
- \fi
- \global\ece\let{usepkg@options@\usepkg@pkg}\temp
- % For the duration of the package, we want any calls to \usepackage
- % to be mapped to \RequirePackage, to allow nested package loads
- % without clobbering up anything. (Maybe packages never use
- % \usepackage instead of \RequirePackage, but this won't hurt.)
- \let\usepackage\eplain@RequirePackage
- % Clear \AtEndOfPackage commands (can be non-empty during recursive
- % package loading).
- \global\let\usepkg@at@end@of@package\empty
- % Load the package. If the package asks to load other package,
- % \RequirePackage will save our \usepkg@{pkg,options,date} and
- % \AtEndOfPackage commands, and \usepackage will restore them after
- % recursively loading that package, so we don't worry about our
- % setup being clobbered.
- \ifx\usepkg@pkg\usepkg@word@autopict
- \input picture.tex
- \else
- \ifx\usepkg@pkg\usepkg@word@psfrag
- \input \usepkg@pkg.tex
- \else
- \input \usepkg@pkg.sty
- \fi
- \fi
- % Execute the accumulated \AtEndOfPackage commands, and reset them
- % to free the memory.
- \usepkg@at@end@of@package
- \global\let\usepkg@at@end@of@package\empty
- % Restore the `real' \usepackage definition.
- \let\usepackage\real@usepackage
- % Clear the option list for the loaded package (we won't load a
- % second copy anyway).
- \global\ece\let{usepkg@options@\usepkg@pkg}\undefined
- % Set \Url@HyperHook for url.sty
- \def\Url@HyperHook##1{\hlstart@impl{url}{\Url@String}##1\hlend@impl{url}}%
- % We check package version in \ProvidePackage, before reading the
- % rest of the package, so that in case of errors (which can be
- % numerous) the warning hopefully comes before the errors.
-% \@ifl@ter{sty}\usepkg@pkg\usepkg@date{}%
-% {\message{Warning: you have requested package `\usepkg@pkg', version \usepkg@date,^^J
-% \@spaces but only version `\csname ver@\usepkg@pkg.sty\endcsname' is available.}}%
-}%
-% \DeclareOption{OPTION}{CODE}
-%
-% Save CODE in `usepkg@option@PACKAGE@OPTION'. Starred version is not
-% treated any different here, but when defined it will be used by
-% \ProcessOptions and \ExecuteOptions to process undeclared options.
-\def\eplain@DeclareOption#1#2{%
- \toks@{#2}%
- \expandafter\xdef\csname usepkg@option@\usepkg@pkg @#1\endcsname{\the\toks@}%
-}%
-% \PassOptionsToPackage{OPTIONS}{PACKAGES}
-%
-% Add OPTIONS to the option list for each of the PACKAGES.
-\def\eplain@PassOptionsToPackage#1#2{%
- \ifempty{#1}\else
- \for\usepkg@temp:=#2\do{%
- \expandafter\let\expandafter\temp\csname usepkg@options@\usepkg@temp\endcsname
- \ifx\temp\relax
- \let\temp\empty
- \fi
- \ifx\temp\empty
- \edef\temp{#1}%
- \else
- \edef\temp{\temp,#1}%
- \fi
- \global\ece\let{usepkg@options@\usepkg@temp}\temp
- }%
- \fi
-}%
-% \ExecuteOptions{OPTIONS}
-% \ProcessOptions
-%
-% \ExecuteOptions executes each option from OPTIONS, \ProcessOptions
-% executes each option from the option list for the current package.
-% If the star (`*') option is declared, it will be used to process
-% undeclared options; otherwise, undeclared option will cause an
-% error.
-\def\usepkg@exec@options#1{%
- % The iterator \CurrentOption below was used purposely. Some
- % packages use it in the argument to \DeclareOption.
- \for\CurrentOption:=#1\do{%
- \expandafter\let\expandafter\usepkg@temp
- \csname usepkg@option@\usepkg@pkg @\CurrentOption\endcsname
-%
- \ifx\usepkg@temp\relax
- % Option is not declared. If a `default' option handler is
- % declared, use it.
- \expandafter\let\expandafter\temp\csname usepkg@option@\usepkg@pkg @*\endcsname
- \ifx\temp\relax
- \errmessage{Unknown option `\CurrentOption' to package `\usepkg@pkg'}%
- \else
- \temp
- \fi
- \else
- % Option is declared.
- \usepkg@temp
- \fi
- }%
-}%
-%
-\let\eplain@ExecuteOptions\usepkg@exec@options
-\def\eplain@ProcessOptions{%
- \expandafter\usepkg@exec@options\csname usepkg@options@\usepkg@pkg\endcsname
-}%
-% \AtBeginDocument{CODE}
-% \AtEndOfPackage{CODE}
-%
-% miniltx.tex defines \AtBeginDocument to execute its parameter right
-% away, but some packages depend on \AtBeginDocument to be executed
-% after packages are processed. So we redefine \AtBeginDocument to
-% accumulate its argument, to be executed by us at the end of
-% \beginpackages...\endpackages. \AtEndOfPackage is not defined by
-% miniltx.tex at all; we define it similar to \AtBeginDocument.
-\def\usepkg@accumulate@cmds#1#2{%
- \toks@=\expandafter{#1}%
- \toks@ii={#2}%
- \xdef#1{\the\toks@\the\toks@ii}%
-}%
-\def\eplain@AtBeginDocument{\usepkg@accumulate@cmds\usepkg@at@begin@document}%
-\def\eplain@AtEndOfPackage{\usepkg@accumulate@cmds\usepkg@at@end@of@package}%
-% \ProvidesFile{FILENAME.EXT}[VERSION]
-% \ProvidesPackage{PACKAGENAME}[VERSION]
-%
-% miniltx.tex defines \ProvidesFile and \ProvidesPackage to only log a
-% message. We want to define \ver@PACKAGE.sty / \ver@FILENAME.EXT, as
-% we depend on these to know when a package/file has been loaded, and
-% some packages depend on them, too.
-\def\eplain@ProvidesPackage#1{%
- \@ifnextchar[%]
- {\eplain@pr@videpackage{#1.sty}}{\eplain@pr@videpackage#1[]}%
-}%
-\def\eplain@pr@videpackage#1[#2]{%
- \wlog{#1: #2}%
- % This will flag the package as loaded.
- \expandafter\xdef\csname ver@#1\endcsname{#2}%
-% \expandafter\edef\expandafter\temp{\csname usepkg@options@\usepkg@pkg\endcsname}%
-% \message{^^JPackage:\usepkg@pkg^^JOptions:\usepkg@options^^J+ passed options:\temp^^J}%
- % Check package version.
- \@ifl@t@r{#2}\usepkg@date{}%
- {\message{Warning: you have requested package `\usepkg@pkg', version \usepkg@date,^^J
- \@spaces but only version `\csname ver@#1\endcsname' is available.}}%
-}%
-%
-\def\eplain@ProvidesFile#1{%
- \@ifnextchar[%]
- {\eplain@pr@videfile{#1}}{\eplain@pr@videfile#1[]}%
-}%
-\def\eplain@pr@videfile#1[#2]{%
- \wlog{#1: #2}%
- % This will flag the file as loaded.
- \expandafter\xdef\csname ver@#1\endcsname{#2}%
- % We don't check file version. graphics calls \ProvideFile to
- % \includegraphics, and it does not give any date at the beginning
- % of #2, so checking the date will cause an error.
-}%
-% Check package version. From LaTeX.
-\def\@ifl@ter#1#2{%
- \expandafter\@ifl@t@r
- \csname ver@#2.#1\endcsname
-}%
-\def\@ifl@t@r#1#2{%
- \ifnum\expandafter\@parse@version#1//00\@nil<%
- \expandafter\@parse@version#2//00\@nil
- \expandafter\@secondoftwo
- \else
- \expandafter\@firstoftwo
- \fi
-}%
-\def\@parse@version#1/#2/#3#4#5\@nil{#1#2#3#4 }%
-% Needed by some packages.
-\def\@spaces{\space\space\space\space}%
-\def\@inmatherr#1{%
- \relax
- \ifmmode
- \errmessage{The command is invalid in math mode}%
- \fi
-}%
-%
-%
-%
-\let\wlog = \@plainwlog
-\catcode`@ = \@eplainoldatcode
-%
-\def\fmtname{eplain}%
-\def\eplain{t}%
-{\edef\plainversion{\fmtversion}%
- \xdef\fmtversion{REPLACE-WITH-VERSION: REPLACE-WITH-DAY-MONTH-YEAR (and plain \plainversion)}%
-}%
-%
-%
-%
-%
-% Local variables:
-% page-delimiter: "^% \f"
-% End:
diff --git a/Master/texmf-dist/source/eplain/eplain-source-3.1.zip b/Master/texmf-dist/source/eplain/eplain-source-3.1.zip
new file mode 100644
index 00000000000..bbd0d6cc76d
--- /dev/null
+++ b/Master/texmf-dist/source/eplain/eplain-source-3.1.zip
Binary files differ
diff --git a/Master/texmf-dist/tex/eplain/base/arrow.tex b/Master/texmf-dist/tex/eplain/arrow.tex
index 9c43c2fe3cc..9c43c2fe3cc 100644
--- a/Master/texmf-dist/tex/eplain/base/arrow.tex
+++ b/Master/texmf-dist/tex/eplain/arrow.tex
diff --git a/Master/texmf-dist/tex/eplain/base/btxmac.tex b/Master/texmf-dist/tex/eplain/btxmac.tex
index 4b7fda7c61e..4b7fda7c61e 100644
--- a/Master/texmf-dist/tex/eplain/base/btxmac.tex
+++ b/Master/texmf-dist/tex/eplain/btxmac.tex
diff --git a/Master/texmf-dist/tex/eplain/config/xeplain.ini b/Master/texmf-dist/tex/eplain/config/xeplain.ini
deleted file mode 100644
index 969e7081ee7..00000000000
--- a/Master/texmf-dist/tex/eplain/config/xeplain.ini
+++ /dev/null
@@ -1,39 +0,0 @@
-% Jonathan Kew
-% 2006-09-15
-% Public domain
-% hyphenation is set up in language.dat
-% based on eplain.ini ("xeplain" = the eplain macros with xetex)
-
-\input unicode-letters % required before patterns are loaded
-
-%% Disable the \font\preloaded=... entries from plain.tex
-%% as xetex is primarily intended for use with other fonts
-\catcode`\{=1 \catcode`\}=2 \catcode`\#=6 \catcode`\^=7 \catcode`\@=11
-\let\s@vef@nt=\font
-\let\preloaded=2
-\def\font{\futurelet\next\d@ntpreload}
-\def\d@ntpreload{\ifx\next\preloaded
- \let\next\sk@pf@nt
- \begingroup \catcode`\%=12 \catcode13=12
- \else
- \let\next\s@vef@nt
- \fi \next}
-\lccode1=13
-\lowercase{\def\sk@pf@nt\preloaded=#1^^A{\endgroup}}
-
-\input bplain
-
-% restore the \font command and undefine other stuff
-\catcode`\@=11
-\let\font=\s@vef@nt
-\let\d@ntpreload=\und@fined
-\let\sk@pf@nt=\und@fined
-\let\s@vef@nt=\und@fined
-\catcode`\@=12
-
-\input eplain
-
-\XeTeXuseglyphmetrics=1
-
-\dump
-\endinput
diff --git a/Master/texmf-dist/tex/eplain/eplain.aux b/Master/texmf-dist/tex/eplain/eplain.aux
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/texmf-dist/tex/eplain/eplain.aux
diff --git a/Master/texmf-dist/tex/eplain/config/eplain.ini b/Master/texmf-dist/tex/eplain/eplain.ini
index 0df42edf053..0df42edf053 100644
--- a/Master/texmf-dist/tex/eplain/config/eplain.ini
+++ b/Master/texmf-dist/tex/eplain/eplain.ini
diff --git a/Master/texmf-dist/tex/eplain/base/eplain.tex b/Master/texmf-dist/tex/eplain/eplain.tex
index 7ee9282e9b9..ae0685ca781 100644
--- a/Master/texmf-dist/tex/eplain/base/eplain.tex
+++ b/Master/texmf-dist/tex/eplain/eplain.tex
@@ -1,10 +1,10 @@
%% @texfile{
%% author = "Karl Berry, Steven Smith, Oleg Katsitadze, and others",
-%% version = "3.0",
-%% date = "Tue Sep 20 20:33:53 EEST 2005",
+%% version = "3.1",
+%% date = "Sun Dec 3 14:39:31 EET 2006",
%% filename = "eplain.tex",
%% email = "bug-eplain@tug.org",
-%% checksum = "3670 8000 118413",
+%% checksum = "4001 8638 128661",
%% codetable = "ASCII",
%% supported = "yes",
%% docstring = "This file defines macros that extend and expand on
@@ -137,6 +137,9 @@
\def\@emptymarkA{\@emptymarkB}
\def\ifempty#1{\@@ifempty #1\@emptymarkA\@emptymarkB}%
\def\@@ifempty#1#2\@emptymarkB{\ifx #1\@emptymarkA}%
+\def\@gobbleminus#1{\ifx-#1\else#1\fi}%
+\def\ifinteger#1{\ifcat_\ifnum9<1\@gobbleminus#1 _\else A\fi}%
+\def\isinteger{TT\fi\ifinteger}%
\def\@gobblemeaning#1:->{}%
\def\sanitize{\expandafter\@gobblemeaning\meaning}%
\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}%
@@ -598,6 +601,44 @@
\fi
\printcitepreitem{#1}%
}%
+\def\@Nnil{\@Nil}%
+\def\@Fornoop#1\@@#2#3{}%
+\def\For#1:=#2\do#3{%
+ \edef\@Fortmp{#2}%
+ \ifx\@Fortmp\empty \else
+ \expandafter\@Forloop#2,\@Nil,\@Nil\@@#1{#3}%
+ \fi
+}%
+\def\@Forloop#1,#2,#3\@@#4#5{\@Fordef#1\@@#4\ifx #4\@Nnil \else
+ #5\@Fordef#2\@@#4\ifx #4\@Nnil \else#5\@iForloop #3\@@#4{#5}\fi\fi
+}%
+\def\@iForloop#1,#2\@@#3#4{\@Fordef#1\@@#3\ifx #3\@Nnil
+ \let\@Nextwhile=\@Fornoop \else
+ #4\relax\let\@Nextwhile=\@iForloop\fi\@Nextwhile#2\@@#3{#4}%
+}%
+\def\@Forspc{ }%
+\def\@Fordef{\futurelet\@Fortmp\@@Fordef}% Peep at the next token.
+\def\@@Fordef{%
+ \expandafter\ifx\@Forspc\@Fortmp % Next token is a space.
+ \expandafter\@Fortrim
+ \else
+ \expandafter\@@@Fordef
+ \fi
+}%
+\expandafter\def\expandafter\@Fortrim\@Forspc#1\@@{\@Fordef#1\@@}%
+\def\@@@Fordef#1\@@#2{\def#2{#1}}%
+\def\tmpfileextension{.tmp}%
+\let\tmpfilebasename = \jobname
+\ifx\eTeXversion\undefined
+ \innernewwrite\eplain@tmpfile
+ \def\scantokens#1{%
+ \toks@={#1}%
+ \immediate\openout\eplain@tmpfile=\tmpfilebasename\tmpfileextension
+ \immediate\write\eplain@tmpfile{\the\toks@}%
+ \immediate\closeout\eplain@tmpfile
+ \input \tmpfilebasename\tmpfileextension\relax
+ }%
+\fi
\begingroup
\makeactive\^^M \makeactive\ % No spaces or ^^M's from here on.
\gdef\obeywhitespace{%
@@ -622,11 +663,11 @@
\ifhmode
\setbox0 = \lastbox
\ifdim\wd0=\parindent
- \setbox2 = \hbox{\unhbox0}%
+ \setbox2 = \hbox{\unhcopy0}% Preserve \box0 so we can put it back.
\ifdim\wd2=0pt
\ignorespaces
\else
- \box2 % Put it back: it wasn't empty.
+ \box0 % Put it back: it wasn't empty.
\fi
\else
\box0 % Put it back: it wasn't the right width.
@@ -1683,6 +1724,15 @@
\everypar = {\advance\lineno by 1 \printlistinglineno}%
}%
\def\printlistinglineno{\llap{[\the\lineno]\quad}}%
+\def\nolastlinelisting{\aftergroup\@removeboxes}%
+\def\@removeboxes{%
+ \setbox0 = \lastbox
+ \ifvoid0
+ \ignorespaces % Ignore spaces after the \obeywhitespace's group.
+ \else
+ \expandafter\@removeboxes
+ \fi
+}%
{%
\makeactive\^^L
\let^^L = \relax
@@ -1732,6 +1782,7 @@
\ece\def{open#1file}{\opencontentsfile{#1}}%
\ece\def{write#1entry}{\writecontentsentry{#1}}%
\ece\def{writenumbered#1entry}{\writenumberedcontentsentry{#1}}%
+ \ece\def{writenumbered#1line}{\writenumberedcontentsline{#1}}%
\ece\innernewif{ifrewrite#1file} \csname rewrite#1filetrue\endcsname
\ece\def{read#1file}{\readcontentsfile{#1}}%
}%
@@ -1745,16 +1796,15 @@
\def\writecontentsentry#1#2#3{\writenumberedcontentsentry{#1}{#2}{#3}{}}%
\def\writenumberedcontentsentry#1#2#3#4{%
\csname ifrewrite#1file\endcsname
- \csname open#1file\endcsname
- \toks0 = {\expandafter\noexpand \csname #1#2entry\endcsname}%
- \def\temp{#3}%
+ \writenumberedcontents@cmdname{#1}{#2}%
+ \def\temp{#3}% the text
\toks2 = \expandafter{#4}%
\edef\cs{\the\toks2}%
\edef\@wr{%
\write\csname #1file\endcsname{%
\the\toks0 % the \toc...entry control sequence
{\sanitize\temp}% the text
- \ifx\empty\cs\else {\sanitize\cs}\fi % A secondary number, or nothing:
+ \ifx\empty\cs\else {\sanitize\cs}\fi % a secondary number, or nothing
{\noexpand\folio}% the page number
}%
}%
@@ -1762,6 +1812,35 @@
\fi
\ignorespaces
}%
+\def\writenumberedcontentsline#1#2#3#4{%
+ \csname ifrewrite#1file\endcsname
+ \writenumberedcontents@cmdname{#1}{#2}%
+ \def\temp{#4}% the text
+ \toks2 = \expandafter{#3}%
+ \edef\cs{\the\toks2}%
+ \edef\@wr{%
+ \write\csname #1file\endcsname{%
+ \the\toks0 % the \toc...entry control sequence
+ \ifx\empty\cs\else {\sanitize\cs}\fi % a secondary number, or nothing
+ {\sanitize\temp}% the text
+ {\noexpand\folio}% the page number
+ }%
+ }%
+ \@wr
+ \fi
+ \ignorespaces
+}%
+\def\writenumberedcontents@cmdname#1#2{%
+ \csname open#1file\endcsname
+ \edef\temp{#2}% Expand PART fully and see if this produced an integer.
+ \expandafter\if\expandafter\isinteger\expandafter{\temp}%
+ \toks0 = {\expandafter\noexpand \csname #1entry\endcsname}%
+ \edef\temp{\the\toks0{\temp}}%
+ \toks0 = \expandafter{\temp}%
+ \else
+ \toks0 = {\expandafter\noexpand \csname #1#2entry\endcsname}%
+ \fi
+}%
\def\readcontentsfile#1{%
\edef\temp{%
\noexpand\testfileexistence[\csname #1filebasename\endcsname]{#1}%
@@ -1773,6 +1852,7 @@
\def\tocchapterentry#1#2{\line{\bf #1 \dotfill\ #2}}%
\def\tocsectionentry#1#2{\line{\quad\sl #1 \dotfill\ \rm #2}}%
\def\tocsubsectionentry#1#2{\line{\qquad\rm #1 \dotfill\ #2}}%
+\def\tocentry#1#2#3{\line{\rm\hskip#1em #2 \dotfill\ #3}}%
\let\ifxrefwarning = \iftrue
\def\xrefwarningtrue{\@citewarningtrue \let\ifxrefwarning = \iftrue}%
\def\xrefwarningfalse{\@citewarningfalse \let\ifxrefwarning = \iffalse}%
@@ -1788,6 +1868,7 @@
\definexref{#1}{\noexpand\folio}{page}%
\endgroup
\endgroup
+ \ignorespaces
}%
\def\definexref#1#2#3{%
\hldest@impl{definexref}{#1}%
@@ -1797,10 +1878,25 @@
\@wr
\ignorespaces
}%
-\def\@definelabel#1#2#3{%
+\def\@definelabel#1{% #2 and #3 will be read later.
+ \expandafter\ifx\csname\xrlabel{#1}\endcsname \relax
+ \let\next\@definelabel@nocheck
+ \else
+ \let\next\@definelabel@warn
+ \fi
+ \next{#1}%
+}%
+\def\@definelabel@nocheck#1#2#3{%
\expandafter\gdef\csname\xrlabel{#1}\endcsname{#2}%
\setpropertyglobal{\xrlabel{#1}}{class}{#3}%
}%
+\def\@definelabel@warn#1#2#3{%
+ \message{^^J\linenumber Label `#1' multiply defined,
+ value `#2' of class `#3' overwriting value
+ `\csname\xrlabel{#1}\endcsname' of class
+ `\getproperty{\xrlabel{#1}}{class}'.}%
+ \@definelabel@nocheck{#1}{#2}{#3}%
+}%
\def\reftie{\penalty\@M \ }% Do not rely on `~' being defined as a tie.
\let\refspace\
\def\xrefn{\@getoptionalarg\@finxrefn}%
@@ -1858,14 +1954,14 @@
\let\@generalrefoptarg\@optionalarg
\readauxfile
\ifcase#1 \else \hlstart@impl{ref}{#3}\fi
- \edef\temp{\getproperty{\xrlabel{#3}}{class}}%
- \expandafter\ifx\csname \temp word\endcsname\relax
+ \edef\@generalref@class{\getproperty{\xrlabel{#3}}{class}}%
+ \expandafter\ifx\csname \@generalref@class word\endcsname\relax
\ifx\@generalrefoptarg\empty \else {\@@hloff\@generalrefoptarg\reftie}\fi
\else
\begingroup
\@@hloff
\ifx\@generalrefoptarg\empty \else \@generalrefoptarg \refspace \fi
- \csname \temp word\endcsname
+ \csname \@generalref@class word\endcsname
#2\reftie
\endgroup
\fi
@@ -1909,14 +2005,19 @@
\temp
\endgroup
}%
+\newcount\phantomeqnumber
+\def\phantomeqlabel{PHEQ\the\phantomeqnumber}%
\def\@eqdefn#1#2{%
- \hl@define@eqlabel{#1}%
+ \ifempty{#1}%
+ \global\advance\phantomeqnumber by 1
+ \edef\hl@eqlabel{\phantomeqlabel}%
+ \readauxfile
+ \else
+ \def\hl@eqlabel{#1}%
+ {\@@hldestoff \definexref{#1}{#2}{eq}}%
+ \fi
\hldest@impl{eq}{\hl@eqlabel}%
- \begingroup
- \@@hldestoff
- \definexref{#1}{#2}{eq}%
- \endgroup
- \@definelabel{#1}{#2}{eq}%
+ \@definelabel@nocheck{#1}{#2}{eq}%
}%
\def\eqdef{\@getoptionalarg\@fineqdef}%
\def\@fineqdef{%
@@ -1926,15 +2027,10 @@
}%
\def\eqsubdef{\@eqdef\eqsubdefn}%
\def\@eqdef#1#2{%
- \begingroup
- \@@hldestoff
- #1{#2}%
- \endgroup
\@maybedisableeqno
- \eqno % \hl@define@eqlabel already called in \@eqdefn.
- \hldest@impl{eq}{\hl@eqlabel}%
+ \eqno #1{#2}% Define the label and hyperlink destination.
\let\@optionalarg\empty % \@fineqref will examine \@optionalarg.
- {\@@hloff\@fineqref{#2}}% No hyperlink here.
+ {\@@hloff\@fineqref{#2}}% Print the text without a hyperlink.
\@mayberestoreeqno
\ignorespaces
}%
@@ -1954,7 +2050,7 @@
\def\@fineqrefn#1{%
\eqref@start{#1}%
\plain@xrefn{#1}%
- \hlend
+ \hlend@impl{eq}%
}%
\def\eqref{\@getoptionalarg\@fineqref}%
\def\@fineqref#1{%
@@ -2036,7 +2132,7 @@
\def\indexproofterm#1{\hbox{\strut \indexprooffont #1}}%
\let\@plainmakeheadline = \makeheadline
\def\makeheadline{%
- \expandafter\ifx\csname\xrlabel{\idxpagexref{\folio}}\endcsname\relax \else
+ \expandafter\ifx\csname\idxpageanchor{\folio}\endcsname\relax \else
{\@@hldeston \hldest@impl{idx}{\hlidxpagelabel{\folio}}}%
\fi
\indexproofunbox
@@ -2074,11 +2170,15 @@
\def\@idxgetrange#1{%
\let\@idxrangestr = \empty
\let\@afteridxgetrange = #1%
- \@getoptionalarg\@finidxgetopt
+ \begingroup
+ \catcode\idxargopen=1
+ \@getoptionalarg\@finidxgetopt
}%
\def\@finidxgetopt{%
+ \global\let\@idxgetrange@arg\@optionalarg
+ \endgroup
\@hlidxencaptrue
- \for\@idxarg:=\@optionalarg\do{%
+ \for\@idxarg:=\@idxgetrange@arg\do{%
\expandafter\@idxcheckpagemarkup\@idxarg=,%
\ifx\@idxarg\idxrangebeginword
\def\@idxrangestr{\idxencapoperator\idxbeginrangemark}%
@@ -2112,7 +2212,7 @@
\fi
\ifcase\hldest@place@idx \relax
\edef\@idxpagemarkup{hlidxpage{\@idxpagemarkup}}%
- {\@@hldestoff \definexref{\idxpagexref{\folio}}{}{}}%
+ \definepageanchor{\noexpand\folio}%
\else
\global\advance\hlidxlabelnumber by 1
\edef\@idxpagemarkup{hlidx{\hlidxlabel}{\@idxpagemarkup}}%
@@ -2134,18 +2234,39 @@
\fi
}%
\def\hldest@place@idx{-1}%
-\def\idxpagexref#1{@@IDXPG@@#1}%
+\begingroup
+ \catcode`\_ = 8
+ \gdef\idxpageanchor#1{#1_p}%
+\endgroup
+\def\definepageanchor#1{%
+ \readauxfile
+ \edef\@wr{\noexpand\writeaux{\string\@definepageanchor{#1}}}%
+ \@wr
+ \ignorespaces
+}%
+\def\@definepageanchor#1{%
+ \expandafter\gdef\csname\idxpageanchor{#1}\endcsname{}%
+}%
\newcount\hlidxlabelnumber
\def\hlidxlabel{IDX\the\hlidxlabelnumber}%
\def\hlidxpagelabel#1{IDXPG#1}%
\def\hlidx#1#2#3{%
+ \ifempty{#2}%
+ \let\@idxpageencap\relax
+ \else
+ \expandafter\let\expandafter\@idxpageencap\csname #2\endcsname
+ \fi
\hlstart@impl{idx}{#1}%
- \csname #2\endcsname{#3}%
+ \@idxpageencap{#3}%
\hlend@impl{idx}%
}%
\def\hlidxpage#1#2{%
\@hlidxgetpages{#2}%
- \expandafter\let\expandafter\@idxpageencap\csname #1\endcsname
+ \ifempty{#1}%
+ \let\@idxpageencap\relax
+ \else
+ \expandafter\let\expandafter\@idxpageencap\csname #1\endcsname
+ \fi
\hlstart@impl{idx}{\hlidxpagelabel{\@idxpageiref}}%
\expandafter\@idxpageencap\expandafter{\@idxpagei}%
\hlend@impl{idx}%
@@ -2217,7 +2338,8 @@
}%
\if@idxsee
\@idxseefalse % Reset so the next term won't be a `see'.
- \edef\temp{\noexpand\@finidxtokscollect{\idxmaxpagenum}}%
+ \edef\temp{\noexpand\idx@getverbatimarg
+ {\noexpand\@finidxtokscollect{\idxmaxpagenum}}}%
\else
\def\temp{\@finfinidxtokscollect\folio}%
\fi
@@ -2249,12 +2371,61 @@
\@idxsubtoks = {#2}%
\@idxtokscollect
}%
-\def\@idx#1{%
- #1% Produce TERM as output.
+\def\idxargopen{`\{}%
+\def\idxargclose{`\}}%
+\def\idx@getverbatimarg#1{%
+ \def\idx@getverbatimarg@cmd{#1}% Save the command, allowing it to be
+ \begingroup
+ \uncatcodespecials
+ \catcode\idxargopen=1
+ \catcode\idxargclose=2
+ \catcode`\ =10 % Swallow multiple consequent spaces.
+ \catcode`\^^I=10 % Just in case, to avoid dependence on
+ \catcode`\^^M=5 % current meanings of tabs and newlines.
+ \idx@fingetverbatimarg
+}%
+\def\idx@fingetverbatimarg#1{\endgroup\idx@getverbatimarg@cmd{#1}}%
+\def\idx@getverboptarg#1{%
+ \def\idx@optionaltemp{#1}% Save the command, allowing it to be more
+ \let\idx@optionalnext = \relax
+ \begingroup
+ \if@idxsee \catcode\idxargopen=1 \fi
+ \@futurenonspacelet\idx@optionalnext\idx@bracketcheck
+}%
+\def\idx@bracketcheck{%
+ \ifx [\idx@optionalnext
+ \endgroup % Cancel \catcode\idxargopen=1.
+ \expandafter\idx@finbracketcheck
+ \else
+ \endgroup % Cancel \catcode\idxargopen=1.
+ \let\@optionalarg = \empty
+ \expandafter\idx@optionaltemp
+ \fi
+}%
+\def\idx@finbracketcheck{%
+ \begingroup
+ \uncatcodespecials
+ \catcode`\ =10 % Swallow multiple consequent spaces.
+ \catcode`\^^I=10 % Just in case, to avoid dependence on
+ \catcode`\^^M=5 % current meanings of tabs and newlines.
+ \idx@@getoptionalarg
+}%
+\def\idx@@getoptionalarg[#1]{%
+ \endgroup
+ \def\@optionalarg{#1}%
+ \idx@optionaltemp
+}%
+{\catcode`\&=0
+\gdef\idx@scanterm#1{\scantokens{#1&endinput}}%
+}%
+\def\@idx{\idx@getverbatimarg\@finidx}%
+\def\@finidx#1{%
+ \idx@scanterm{#1}% Produce TERM as output.
\@idxcollect{#1}{}%
}%
-\def\@sidx#1{\@idxmaintoks = {#1}\@getoptionalarg\@finsidx}%
-\def\@finsidx{%
+\def\@sidx{\idx@getverbatimarg\@finsidx}%
+\def\@finsidx#1{\@idxmaintoks = {#1}\idx@getverboptarg\@finfinsidx}%
+\def\@finfinsidx{%
\@idxsubtoks = \expandafter{\@optionalarg}%
\@idxtokscollect
}%
@@ -2265,24 +2436,34 @@
\edef\temp{\the\toks2 \idxsortkeysep \the\toks@{\the\toks2}}%
#1 = \expandafter{\temp}%
}%
-\def\@idxmarked#1#2{%
- #1{#2}% Produce \CS{TERM} as output.
+\def\@idxmarked#1{\idx@getverbatimarg{\@finidxmarked{#1}}}%
+\def\@finidxmarked#1#2{%
+ \idx@scanterm{#1{#2}}% Produce \CS{TERM} as output.
\@idxconstructmarked\@idxmaintoks{#1}{#2}%
\@idxsubtoks = {}%
\@idxtokscollect
}%
-\def\@sidxmarked#1#2{%
+\def\@sidxmarked#1{\idx@getverbatimarg{\@finsidxmarked{#1}}}%
+\def\@finsidxmarked#1#2{%
\@idxconstructmarked\toks@{#1}{#2}%
\edef\temp{{\the\toks@}}%
- \expandafter\@sidx\temp
-}%
-\def\@idxsubmarked#1#2#3{%
- #1 #2{#3}% produce `TERM \CS{SUBTERM} as output.
- \@sidxsubmarked{#1}{#2}{#3}%
-}%
-\def\@sidxsubmarked#1#2#3{%
- \@idxmaintoks = {#1}%
- \@idxconstructmarked\@idxsubtoks{#2}{#3}%
+ \expandafter\@finsidx\temp
+}%
+\def\@idxsubmarked{%
+ \let\sidxsubmarked@print\idxsubmarked@print
+ \idx@getverbatimarg\@finsidxsubmarked
+}%
+\def\idxsubmarked@print{\expandafter\idx@scanterm\expandafter}%
+\def\@sidxsubmarked{%
+ \let\sidxsubmarked@print\gobble
+ \idx@getverbatimarg\@finsidxsubmarked
+}%
+\def\@finsidxsubmarked#1{\@idxmaintoks = {#1}\@@finsidxsubmarked}% Reads TERM.
+\def\@@finsidxsubmarked#1{\idx@getverbatimarg{\@@@finsidxsubmarked{#1}}}% Reads \CS.
+\def\@@@finsidxsubmarked#1#2{% Reads {\CS}{SUBTERM}.
+ \sidxsubmarked@print % Prints for \@idxsubmarked, gobbles for \@sidxsubmarked.
+ {\the\@idxmaintoks\space #1{#2}}% Maybe produce `TERM \CS{SUBTERM}' as output.
+ \@idxconstructmarked\@idxsubtoks{#1}{#2}%
\@idxtokscollect
}%
\def\idxnameseparator{, }% as in `Tachikawa, Elizabeth'
@@ -2296,14 +2477,18 @@
\toks2 = {#2}%
\edef\temp{\the\toks2 \the\toks@}%
}%
-\def\@idxname#1#2{%
- #1 #2% Separate the names by a space in the output.
+\def\@idxname{\idx@getverbatimarg\@finidxname}%
+\def\@finidxname#1{\idx@getverbatimarg{\@finfinidxname{#1}}}%
+\def\@finfinidxname#1#2{%
+ \idx@scanterm{#1 #2}% Separate the names by a space in the output.
\@idxcollectname{#1}{#2}%
\expandafter\@idxcollect\expandafter{\temp}{}%
}%
-\def\@sidxname#1#2{%
+\def\@sidxname{\idx@getverbatimarg\@finsidxname}%
+\def\@finsidxname#1{\idx@getverbatimarg{\@finfinsidxname{#1}}}%
+\def\@finfinsidxname#1#2{%
\@idxcollectname{#1}{#2}%
- \expandafter\@sidx\expandafter{\temp}%
+ \expandafter\@finsidx\expandafter{\temp}%
}%
\let\indexfonts = \relax
\def\readindexfile#1{%
@@ -2358,9 +2543,11 @@
}%
\def\seevariant{\it}%
\def\indexseeword{see}%
-\def\indexsee#1#2{{\seevariant \indexseeword\/ }#1}%
+\def\indexsee{\idx@getverbatimarg\@finindexsee}%
+\def\@finindexsee#1#2{{\seevariant \indexseeword\/ }\idx@scanterm{#1}}%
\def\indexseealsowords{see also}%
-\def\indexseealso#1#2{{\seevariant \indexseealsowords\/ }#1}%
+\def\indexseealso{\idx@getverbatimarg\@finindexseealso}%
+\def\@finindexseealso#1#2{{\seevariant \indexseealsowords\/ }\idx@scanterm{#1}}%
\defineindex{i}%
\begingroup
\catcode `\^^M = \active %
@@ -2784,27 +2971,34 @@
\fi
\hl@driver
}%
-\def\hl@getparam#1#2#3{%
+\def\hl@getparam#1#2{% We'll read #3 (LABEL) later.
\edef\@hltype{#1}%
\ifx\@hltype\empty
\expandafter\let\expandafter\@hltype
\csname \hl@prefix @type\endcsname
\fi
\expandafter\ifx\csname \hl@prefix @typeh@\@hltype\endcsname \relax
- \errmessage{Invalid type `\@hltype'}%
+ \errmessage{Invalid hyperlink type `\@hltype'}%
\fi
- \for\hl@arg:=#2\do{%
+ \For\hl@arg:=#2\do{%
\ifx\hl@arg\empty \else
\expandafter\hl@set@opt\hl@arg=,%
\fi
}%
- \edef\@hllabel{#3}%
+ \bgroup
+ \uncatcodespecials
+ \catcode`\{=1 \catcode`\}=2
+ \@hl@getparam
+}%
+\def\@hl@getparam#1{%
+ \egroup
+ \edef\@hllabel{#1}%
\after@hl@getparam
\ignorespaces
}%
\def\hl@set@opt#1=#2,{%
\expandafter\ifx\csname \hl@prefix @opt@#1\endcsname \relax
- \errmessage{Invalid option `#1'}%
+ \errmessage{Invalid hyperlink option `#1'}%
\fi
\if ,#2, % if #2 is empty, complain.
\errmessage{Missing value for option `#1'}%
@@ -2843,7 +3037,7 @@
\def\hl@opts@word{opts}%
\newif\if@params@override
\def\hldest@groups{definexref,xrdef,li,eq,bib,foot,footback,idx}%
-\def\hl@groups{ref,xref,eq,cite,foot,footback,idx,url}%
+\def\hl@groups{ref,xref,eq,cite,foot,footback,idx,url,hrefint,hrefext}%
\def\hldesttype{%
\def\hl@prefix{hldest}%
\def\hl@param{type}%
@@ -2881,12 +3075,12 @@
\def\hl@param@read@opt@arg#1{% #1 is the `!', ignore it.
\@getoptionalarg\hl@setparam
}%
-\def\hl@setparam#1{%
+\def\@hl@setparam#1{%
\ifx\@optionalarg\empty
\hl@setparam@default{#1}% Set default.
\else
\let\hl@do@all@groups\gobble
- \for\hl@group:=\@optionalarg\do{%
+ \For\hl@group:=\@optionalarg\do{%
\ifx\hl@group\hl@asterisk@word
\def\hl@do@all@groups{\let\@optionalarg\hl@all@groups \hl@setparam}%
\else
@@ -2901,15 +3095,13 @@
\hl@setparam@default{#1}%
\else
\expandafter\ifx\csname\hl@prefix @\hl@param @\hl@group\endcsname\relax
- \errmessage{Hyperlink group parameter `\hl@prefix:\hl@param:\hl@group' is not defined}%
+ \errmessage{Hyperlink group `\hl@prefix:\hl@param:\hl@group' is not defined}%
\fi
\ifx\hl@param\hl@opts@word
\if@params@override
- \toks@=\expandafter{#1}%
- \ece\edef{\hl@prefix @\hl@param @\hl@group}{\the\toks@}%
- \else
- \hl@update@opts@with@list{#1}% #1 will be used in the \for
+ \expandafter\let\csname\hl@prefix @\hl@param @\hl@group\endcsname\empty
\fi
+ \hl@update@opts@with@list{#1}% #1 will be used in the \for
\else
\ece\def{\hl@prefix @\hl@param @\hl@group}{#1}%
\fi
@@ -2917,14 +3109,14 @@
}%
\def\hl@setparam@default#1{%
\ifx\hl@param\hl@opts@word
- \for\hl@opt:=#1\do{%
+ \For\hl@opt:=#1\do{%
\ifx\hl@opt\empty \else
\expandafter\hl@set@opt\hl@opt=,%
\fi
}%
\else
\expandafter\ifx\csname\hl@prefix @\hl@param\endcsname\relax
- \message{Default parameter `\hl@prefix:\hl@param' is not defined}%
+ \message{Default hyperlink parameter `\hl@prefix:\hl@param' is not defined}%
\fi
\ece\def{\hl@prefix @\hl@param}{#1}%
\fi
@@ -2933,7 +3125,7 @@
\global\expandafter\let\expandafter\hl@update@new@list
\csname \hl@prefix @opts@\hl@group\endcsname
\begingroup
- \for\hl@opt:=#1\do{%
+ \For\hl@opt:=#1\do{%
\hl@update@opts@with@opt
}%
\endgroup
@@ -3008,6 +3200,8 @@
\def\hl@on@footback{0}% back-reference for \footnote / \numberedfootnote
\def\hl@on@idx{0}%
\def\hl@on@url{0}% \url from url.sty
+\def\hl@on@hrefint{0}% \href with internal #labels
+\def\hl@on@hrefext{0}% \href with external labels (URLs)
\let\hl@type@ref\empty % \refn and \xrefn, \ref, \refs
\let\hl@type@xref\empty
\let\hl@type@eq\empty % \eqref and \eqrefn
@@ -3016,6 +3210,8 @@
\let\hl@type@footback\empty % back-reference for \footnote / \numberedfootnote
\let\hl@type@idx\empty
\let\hl@type@url\empty % \url from url.sty (this will be set to `url' by
+\let\hl@type@hrefint\empty % \href with internal #labels
+\let\hl@type@hrefext\empty % \href with external labels (URLs) (this
\let\hl@opts@ref\empty % \refn and \xrefn, \ref, \refs
\let\hl@opts@xref\empty
\let\hl@opts@eq\empty % \eqref and \eqrefn
@@ -3024,6 +3220,8 @@
\let\hl@opts@footback\empty % back-reference for \footnote / \numberedfootnote
\let\hl@opts@idx\empty
\let\hl@opts@url\empty % \url from url.sty
+\let\hl@opts@hrefint\empty % \href with internal #labels
+\let\hl@opts@hrefext\empty % \href with external labels (URLs)
\def\@hlon{\@hlonoff@value@stub{hl}\@@hlon1 }%
\def\@hloff{\@hlonoff@value@stub{hl}\@@hloff0 }%
\def\@hldeston{\@hlonoff@value@stub{hldest}\@@hldeston1 }%
@@ -3041,7 +3239,7 @@
\hl@on@empty
\fi
\let\hl@do@all@groups\relax
- \for\hl@group:=\@optionalarg\do{%
+ \For\hl@group:=\@optionalarg\do{%
\ifx\hl@group\hl@asterisk@word
\let\@optionalarg\hl@all@groups
\let\hl@do@all@groups\@finhlswitch
@@ -3076,6 +3274,7 @@
\def\hl@idxexact@word{idxexact}%
\def\hl@idxpage@word{idxpage}%
\def\hl@idxnone@word{idxnone}%
+\def\hl@raw@word{raw}%
\def\enablehyperlinks{\@getoptionalarg\@finenablehyperlinks}%
\def\@finenablehyperlinks{%
\let\hl@selecteddriver\empty
@@ -3098,36 +3297,39 @@
\ifx\hl@selecteddriver\empty
\ifpdf
\def\hl@selecteddriver{pdftex}%
- \message{^^JUsing `pdftex' hyperlink driver.}%
+ \message{^^JEplain: using `pdftex' hyperlink driver.}%
\else
- \def\hl@selecteddriver{dvipdfm}%
- \message{^^JUsing `dvipdfm' hyperlink driver.}%
+ \def\hl@selecteddriver{hypertex}%
+ \message{^^JEplain: using `hypertex' hyperlink driver.}%
\fi
\else
\expandafter\ifx\csname hldriver@\hl@selecteddriver\endcsname \relax
\errmessage{No hyperlink driver `\hl@selecteddriver' available}%
\fi
\fi
+ \let\hl@setparam\@hl@setparam
\csname hldriver@\hl@selecteddriver\endcsname
\def\@finenablehyperlinks{\errmessage{Hyperlink driver `\hl@selecteddriver'
already selected}}%
\let\hldriver@nolinks\undefined
+ \let\hldriver@hypertex\undefined
\let\hldriver@pdftex \undefined
\let\hldriver@dvipdfm\undefined
\let\hloff\@hloff
\let\hlon\@hlon
\let\hldestoff\@hldestoff
\let\hldeston\@hldeston
- \hlon[*,]%
- \hldeston[*,]%
+ \hlon[*,]\hloff[foot,footback]%
+ \hldeston[*,]\hldestoff[foot,footback]%
}%
\def\hldriver@nolinks{%
\def\@hldest##1##2##3{%
+ \edef\temp{\write-1{hldest: ##3}}%
\ifvmode
- \write-1{\string\hldest: ##3}%
+ \temp
\else
\allowhyphens
- \smash{\write-1{\string\hldest: ##3}}%
+ \expandafter\smash\expandafter{\temp}%
\allowhyphens
\fi
\ignorespaces
@@ -3135,14 +3337,70 @@
\def\@hlstart##1##2##3{%
\leavevmode
\begingroup % Start the color group.
- \write-1{\string\hlstart: ##3}%
+ \edef\temp{\write-1{hlstart: ##3}}%
+ \temp
\ignorespaces
}%
- \def\@hlend{\write-1{\string\hlend}\endgroup}% End the group from \@hlstart.
+ \def\@hlend{%
+ \edef\temp{\write-1{hlend}}%
+ \temp
+ \endgroup % End the color group from \@hlstart.
+ }%
+ \let\hl@setparam\gobble
+}%
+{\catcode`\#=\other
+\gdef\hlhash{#}}%
+\def\hldriver@hypertex{%
+ \def\hldest@type{xyz}%
+ \let\hldest@opt@cmd \empty
+ \def\hldest@driver{%
+ \ifx\@hltype\hl@raw@word
+ \csname \hldest@opt@cmd \endcsname
+ \else
+ \special{html:<a name="\@hllabel">}\special{html:</a>}%
+ \fi
+ }%
+ \let\hldest@typeh@raw \empty
+ \let\hldest@typeh@xyz \empty
+ \def\hl@type{name}%
+ \ifx\hl@type@url\empty
+ \def\hl@type@url{url}%
+ \fi
+ \ifx\hl@type@hrefext\empty
+ \def\hl@type@hrefext{url}%
+ \fi
+ \let\hl@opt@cmd \empty
+ \let\hl@opt@ext \empty
+ \let\hl@opt@file \empty
+ \def\hl@driver{%
+ \ifx\@hltype\hl@raw@word
+ \csname \hl@opt@cmd \endcsname
+ \else
+ \def\hlstart@preamble{html:<a href="}%
+ \csname hl@typeh@\@hltype\endcsname
+ \fi
+ }%
+ \let\hl@typeh@raw \empty
+ \def\hl@typeh@name{\special{\hlstart@preamble \hlhash\@hllabel">}}%
+ \def\hl@typeh@filename{%
+ \special{%
+ \hlstart@preamble
+ file:\hl@opt@file\hl@opt@ext
+ \ifempty\@hllabel \else \hlhash\@hllabel\fi
+ ">%
+ }%
+ }%
+ \def\hl@typeh@url{%
+ \special{%
+ \hlstart@preamble
+ \@hllabel
+ ">%
+ }%
+ }%
+ \def\@hlend{\special{html:</a>}\endgroup}% End the group from \@hlstart.
}%
\def\hldriver@pdftex{%
\ifpdf % PDF output is enabled.
- \def\hl@raw@word{raw}%
\def\hldest@type{xyz}%
\let\hldest@opt@width \empty
\let\hldest@opt@height \empty
@@ -3176,6 +3434,9 @@
\ifx\hl@type@url\empty
\def\hl@type@url{url}%
\fi
+ \ifx\hl@type@hrefext\empty
+ \def\hl@type@hrefext{url}%
+ \fi
\let\hl@opt@width \empty
\let\hl@opt@height \empty
\let\hl@opt@depth \empty
@@ -3263,7 +3524,7 @@
user{%
/Subtype/Link%
/A<<%
- /Type/Action
+ /Type/Action%
/S/URI%
/URI(\@hllabel)%
>>%
@@ -3271,13 +3532,12 @@
}%
\def\@hlend{\pdfendlink\endgroup}% End the group from the \@hlstart.
\else % PDF output is not enabled.
- \message{Warning: `pdftex' hyperlink driver: PDF output is
- not enabled, falling back on `nolinks' driver.}%
+ \message{Eplain warning: `pdftex' hyperlink driver: PDF output is^^J
+ \space not enabled, falling back on `nolinks' driver.}%
\hldriver@nolinks
\fi
}%
\def\hldriver@dvipdfm{%
- \def\hl@raw@word{raw}%
\def\hldest@type{xyz}%
\let\hldest@opt@left \empty
\let\hldest@opt@top \empty
@@ -3345,6 +3605,9 @@
\ifx\hl@type@url\empty
\def\hl@type@url{url}%
\fi
+ \ifx\hl@type@hrefext\empty
+ \def\hl@type@hrefext{url}%
+ \fi
\def\hl@opt@bstyle {S}%
\def\hl@opt@bwidth {1}%
\let\hl@opt@bcolor \empty
@@ -3424,7 +3687,7 @@
\special{%
\hlstart@preamble
/A<<%
- /Type/Action
+ /Type/Action%
/S/URI%
/URI(\@hllabel)%
>>%
@@ -3433,20 +3696,51 @@
}%
\def\@hlend{\special{pdf: endann}\endgroup}% End the group from \@hlstart.
}%
-\newcount\phantomeqnumber
-\def\phantomeqlabel{PHEQ\the\phantomeqnumber}%
-\def\hl@define@eqlabel#1{%
- \ifempty{#1}%
- \global\advance\phantomeqnumber by1
- \xdef\hl@eqlabel{\phantomeqlabel}%
+\def\href{%
+ \bgroup
+ \uncatcodespecials
+ \catcode`\{=1 \catcode`\}=2
+ \@href
+}%
+\def\@href#1{% We'll read #2 (TEXT) later.
+ \egroup
+ \edef\@hreftmp{\ifempty{#1}{}\fi}% Parameter stuffing for \@@href.
+ \expandafter\@@href\@hreftmp#1\@@
+}%
+\def\href@end@int{\hlend@impl{hrefint}}%
+\def\href@end@ext{\hlend@impl{hrefext}}%
+\def\@@href#1#2\@@{%
+ \def\@hreftmp{#1}%
+ \ifx\@hreftmp\hlhash
+ \let\href@end\href@end@int
+ \hlstart@impl{hrefint}{#2}%
\else
- \gdef\hl@eqlabel{#1}%
+ \let\href@end\href@end@ext
+ \hlstart@impl{hrefext}{#1#2}%
\fi
+ \@@@href
+}%
+\def\@@@href{%
+ \futurelet\@hreftmp\href@
}%
-\let\hldeston\relax \let\hldestoff\relax
-\let\hlon\relax \let\hloff\relax
-\@@hloff
-\@@hldestoff
+\def\href@{%
+ \ifcat\bgroup\noexpand\@hreftmp
+ \let\@hreftmp\href@@
+ \else
+ \let\@hreftmp\href@@@
+ \fi
+ \@hreftmp
+}%
+\def\href@@{\bgroup\aftergroup\href@end \let\@hreftmp}%
+\def\href@@@#1{#1\href@end}%
+\def\hldeston{\errmessage{Please enable hyperlinks with
+ \string\enablehyperlinks\space before using hyperlink commands
+ (consider selecting the `nolinks' driver to ignore all hyperlink
+ commands in your document)}}%
+\let\hldestoff\hldeston \let\hlon\hldeston \let\hloff\hldeston
+\let\hlstart\hldeston \let\hlend\hldeston \let\hldest\hldeston
+\let\hl@setparam\hldeston
+\@hloff[*]\@hldestoff[*]%
\newif\ifusepkg@miniltx@loaded
\newcount\usepkg@recursion@level
\def\usepkg@rcrs{\the\usepkg@recursion@level}%
@@ -3456,10 +3750,13 @@
\def\usepkg@word@psfrag{psfrag}%
\long\def\beginpackages#1\endpackages{%
\let\usepackage\real@usepackage
+ \let\eplaininput=\input
#1%
\usepkg@at@begin@document
\global\let\usepkg@at@begin@document\empty
\global\let\usepackage\fake@usepackage
+ \let\packageinput=\input
+ \let\input=\eplaininput
}%
\def\fake@usepackage{\errmessage{You should not use \string\usepackage\space outside of^^J
\@spaces\string\beginpackages...\string\endpackages\space environment}%
@@ -3539,9 +3836,14 @@
\fi
\fi
\fi
- \ifundefined{ver@\usepkg@pkg.sty}\else
- \errmessage{Package `\usepkg@pkg' already loaded}%
+ \ifundefined{ver@\usepkg@pkg.sty}%
+ \expandafter\@finusepkg@load@pkg
+ \else
+ \message{^^J\linenumber Eplain: package `\usepkg@pkg' already
+ loaded, skipping reloading}%
\fi
+}%
+\def\@finusepkg@load@pkg{%
\testfileexistence[\usepkg@pkg]{sty}%
\if@fileexists \else
\errmessage{Package `\usepkg@pkg' not found}%
@@ -3654,6 +3956,34 @@
\fi
}%
\def\@parse@version#1/#2/#3#4#5\@nil{#1#2#3#4 }%
+\let\ttfamily\tt
+\def\strip@prefix#1>{}%
+\def\@ifpackageloaded#1{%
+ \expandafter\ifx\csname ver@#1.sty\endcsname\relax
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+}%
+\long\def\g@addto@macro#1#2{%
+ \begingroup
+ \toks@\expandafter{#1#2}%
+ \xdef#1{\the\toks@}%
+ \endgroup
+}%
+\def\PackageWarning#1#2{%
+ \begingroup
+ \newlinechar=10 %
+ \def\MessageBreak{%
+ ^^J(#1)\@spaces\@spaces\@spaces\@spaces
+ }%
+ \immediate\write16{^^JPackage #1 Warning: #2\on@line.^^J}%
+ \endgroup
+}%
+\def\PackageWarningNoLine#1#2{%
+ \PackageWarning{#1}{#2\@gobble}%
+}%
+\def\on@line{ on input line \the\inputlineno}%
\def\@spaces{\space\space\space\space}%
\def\@inmatherr#1{%
\relax
@@ -3661,10 +3991,11 @@
\errmessage{The command is invalid in math mode}%
\fi
}%
+\let\protected@edef\edef
\let\wlog = \@plainwlog
\catcode`@ = \@eplainoldatcode
\def\fmtname{eplain}%
\def\eplain{t}%
{\edef\plainversion{\fmtversion}%
- \xdef\fmtversion{3.0: 20 September 2005 (and plain \plainversion)}%
+ \xdef\fmtversion{3.1: 3 December 2006 (and plain \plainversion)}%
}%
diff --git a/Master/texmf-dist/tpm/eplain.tpm b/Master/texmf-dist/tpm/eplain.tpm
index 603bd2e09b3..b896e45a273 100644
--- a/Master/texmf-dist/tpm/eplain.tpm
+++ b/Master/texmf-dist/tpm/eplain.tpm
@@ -3,7 +3,7 @@
<rdf:Description about="http://texlive.dante.de/texlive/Package/eplain.zip">
<TPM:Name>eplain</TPM:Name>
<TPM:Type>Package</TPM:Type>
- <TPM:Date>2006/01/11 23:03:17</TPM:Date>
+ <TPM:Date>1970/01/01 00:00:00</TPM:Date>
<TPM:Version>3.0</TPM:Version>
<TPM:Creator>popineau</TPM:Creator>
<TPM:Title>Extended plain tex macros.</TPM:Title>
@@ -17,137 +17,7 @@ tables, two-column output, footnotes and commutative diagrams.
<TPM:Author>Karl Berry, Oleg Katsitadze</TPM:Author>
<TPM:Size>2005365</TPM:Size>
<TPM:Build/>
- <TPM:RunFiles size="185624">
-texmf-dist/tex/eplain/base/arrow.tex
-texmf-dist/tex/eplain/base/btxmac.tex
-texmf-dist/tex/eplain/base/eplain.tex
-texmf-dist/tex/eplain/config/eplain.ini
-texmf-dist/tex/eplain/config/xeplain.ini
-texmf-dist/tpm/eplain.tpm
- </TPM:RunFiles>
- <TPM:DocFiles size="1488493">
-texmf-dist/doc/eplain/base/AUTHORS
-texmf-dist/doc/eplain/base/COPYING
-texmf-dist/doc/eplain/base/ChangeLog
-texmf-dist/doc/eplain/base/INSTALL
-texmf-dist/doc/eplain/base/Makefile
-texmf-dist/doc/eplain/base/NEWS
-texmf-dist/doc/eplain/base/PROJECTS
-texmf-dist/doc/eplain/base/README
-texmf-dist/doc/eplain/base/arrow.texi
-texmf-dist/doc/eplain/base/btxdoc.bib
-texmf-dist/doc/eplain/base/btxdoc.tex
-texmf-dist/doc/eplain/base/csindex.texi
-texmf-dist/doc/eplain/base/eplain.html
-texmf-dist/doc/eplain/base/eplain.pdf
-texmf-dist/doc/eplain/base/eplain.texi
-texmf-dist/doc/eplain/base/hlink.texi
-texmf-dist/doc/eplain/base/index.texi
-texmf-dist/doc/eplain/base/install.texi
-texmf-dist/doc/eplain/base/intro.texi
-texmf-dist/doc/eplain/base/invoke.texi
-texmf-dist/doc/eplain/base/progdef.texi
-texmf-dist/doc/eplain/base/userdef.texi
- </TPM:DocFiles>
- <TPM:SourceFiles size="331248">
-texmf-dist/source/eplain/base/add-date
-texmf-dist/source/eplain/base/add-version
-texmf-dist/source/eplain/base/etex.tex
-texmf-dist/source/eplain/base/fix-checksum
-texmf-dist/source/eplain/base/merge
-texmf-dist/source/eplain/base/packages.zip
-texmf-dist/source/eplain/base/test/allref.tex
-texmf-dist/source/eplain/base/test/boxes.tex
-texmf-dist/source/eplain/base/test/boxit.tex
-texmf-dist/source/eplain/base/test/catcode.tex
-texmf-dist/source/eplain/base/test/center.tex
-texmf-dist/source/eplain/base/test/cite.bib
-texmf-dist/source/eplain/base/test/cite.tex
-texmf-dist/source/eplain/base/test/citeall.tex
-texmf-dist/source/eplain/base/test/citealph.tex
-texmf-dist/source/eplain/base/test/citeapa.tex
-texmf-dist/source/eplain/base/test/citebegin.tex
-texmf-dist/source/eplain/base/test/citecust.tex
-texmf-dist/source/eplain/base/test/citenote.tex
-texmf-dist/source/eplain/base/test/citex.tex
-texmf-dist/source/eplain/base/test/colfootn.tex
-texmf-dist/source/eplain/base/test/colrule.tex
-texmf-dist/source/eplain/base/test/column.tex
-texmf-dist/source/eplain/base/test/column2.tex
-texmf-dist/source/eplain/base/test/column3.tex
-texmf-dist/source/eplain/base/test/commdiags.tex
-texmf-dist/source/eplain/base/test/contents.tex
-texmf-dist/source/eplain/base/test/displine.tex
-texmf-dist/source/eplain/base/test/double.tex
-texmf-dist/source/eplain/base/test/double2.tex
-texmf-dist/source/eplain/base/test/dvipdfm.tex
-texmf-dist/source/eplain/base/test/ecommdiag.tex
-texmf-dist/source/eplain/base/test/emergncy.tex
-texmf-dist/source/eplain/base/test/env.tex
-texmf-dist/source/eplain/base/test/eqdef.tex
-texmf-dist/source/eplain/base/test/eqref.tex
-texmf-dist/source/eplain/base/test/example.eps
-texmf-dist/source/eplain/base/test/filexist.tex
-texmf-dist/source/eplain/base/test/flynn.tex
-texmf-dist/source/eplain/base/test/footnote.tex
-texmf-dist/source/eplain/base/test/frac.tex
-texmf-dist/source/eplain/base/test/gcol.tex
-texmf-dist/source/eplain/base/test/hlcite.tex
-texmf-dist/source/eplain/base/test/hlfoot.tex
-texmf-dist/source/eplain/base/test/hlidx.mst
-texmf-dist/source/eplain/base/test/hlidx.tex
-texmf-dist/source/eplain/base/test/hlink.tex
-texmf-dist/source/eplain/base/test/ian.tex
-texmf-dist/source/eplain/base/test/index.tex
-texmf-dist/source/eplain/base/test/jan.tex
-texmf-dist/source/eplain/base/test/justify.tex
-texmf-dist/source/eplain/base/test/knuth.bib
-texmf-dist/source/eplain/base/test/label.tex
-texmf-dist/source/eplain/base/test/latexcite.tex
-texmf-dist/source/eplain/base/test/liang.tex
-texmf-dist/source/eplain/base/test/list.tex
-texmf-dist/source/eplain/base/test/listing.tex
-texmf-dist/source/eplain/base/test/logo.tex
-texmf-dist/source/eplain/base/test/loop.tex
-texmf-dist/source/eplain/base/test/loopnext.tex
-texmf-dist/source/eplain/base/test/mag.tex
-texmf-dist/source/eplain/base/test/makecol.tex
-texmf-dist/source/eplain/base/test/margin.tex
-texmf-dist/source/eplain/base/test/matrix.tex
-texmf-dist/source/eplain/base/test/mdisplay.tex
-texmf-dist/source/eplain/base/test/names.tex
-texmf-dist/source/eplain/base/test/noarrow.tex
-texmf-dist/source/eplain/base/test/nobib.tex
-texmf-dist/source/eplain/base/test/nonouter.tex
-texmf-dist/source/eplain/base/test/optional.tex
-texmf-dist/source/eplain/base/test/outer.tex
-texmf-dist/source/eplain/base/test/page.tex
-texmf-dist/source/eplain/base/test/path.tex
-texmf-dist/source/eplain/base/test/pcol.tex
-texmf-dist/source/eplain/base/test/pdftex.tex
-texmf-dist/source/eplain/base/test/psfont.map
-texmf-dist/source/eplain/base/test/rex.tex
-texmf-dist/source/eplain/base/test/rule.tex
-texmf-dist/source/eplain/base/test/sidx.tex
-texmf-dist/source/eplain/base/test/subdef.tex
-texmf-dist/source/eplain/base/test/tenenb.tex
-texmf-dist/source/eplain/base/test/tenenb2.tex
-texmf-dist/source/eplain/base/test/test.tex
-texmf-dist/source/eplain/base/test/time.tex
-texmf-dist/source/eplain/base/test/truemarg.tex
-texmf-dist/source/eplain/base/test/uscore.bib
-texmf-dist/source/eplain/base/test/uscore.tex
-texmf-dist/source/eplain/base/test/usepackage.tex
-texmf-dist/source/eplain/base/test/verb2.tex
-texmf-dist/source/eplain/base/test/verbatim.tex
-texmf-dist/source/eplain/base/test/vlach.tex
-texmf-dist/source/eplain/base/test/whitespc.tex
-texmf-dist/source/eplain/base/test/xampl.tex
-texmf-dist/source/eplain/base/test/xref.tex
-texmf-dist/source/eplain/base/util/idxuniq
-texmf-dist/source/eplain/base/util/trimsee
-texmf-dist/source/eplain/base/xeplain.tex
- </TPM:SourceFiles>
+ <TPM:RunFiles size="6685">texmf-dist/tpm/eplain.tpm</TPM:RunFiles>
<TPM:Requires>
<TPM:TLCore name="bin-eplain"/>
</TPM:Requires>