diff options
Diffstat (limited to 'Master/texmf-dist/doc/eplain/base/eplain.html')
-rw-r--r-- | Master/texmf-dist/doc/eplain/base/eplain.html | 6644 |
1 files changed, 6644 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/eplain/base/eplain.html b/Master/texmf-dist/doc/eplain/base/eplain.html new file mode 100644 index 00000000000..638a3492141 --- /dev/null +++ b/Master/texmf-dist/doc/eplain/base/eplain.html @@ -0,0 +1,6644 @@ +<html lang="en"> +<head> +<title>Expanded Plain TeX</title> +<meta http-equiv="Content-Type" content="text/html"> +<meta name="description" content="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 +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.--> +<meta http-equiv="Content-Style-Type" content="text/css"> +<style type="text/css"><!-- + pre.display { font-family:inherit } + pre.format { font-family:inherit } + pre.smalldisplay { font-family:inherit; font-size:smaller } + pre.smallformat { font-family:inherit; font-size:smaller } + pre.smallexample { font-size:smaller } + pre.smalllisp { font-size:smaller } + span.sc { font-variant:small-caps } + span.roman { font-family:serif; font-weight:normal; } + span.sansserif { font-family:sans-serif; font-weight:normal; } +--></style> +</head> +<body> +<h1 class="settitle">Expanded Plain TeX</h1> +<div class="node"> +<p><hr> +<a name="Top"></a> +Next: <a rel="next" accesskey="n" href="#Introduction">Introduction</a>, +Up: <a rel="up" accesskey="u" href="#dir">(dir)</a> + +</div> + +<h2 class="unnumbered">Eplain</h2> + +<p>This manual documents the Eplain macros, version 3.0, +September 2005. 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. + +<ul class="menu"> +<li><a accesskey="1" href="#Introduction">Introduction</a>: Eplain's purpose and philosophy. +<li><a accesskey="2" href="#Installation">Installation</a>: Installing Eplain. +<li><a accesskey="3" href="#Invoking-Eplain">Invoking Eplain</a>: Using Eplain from a TeX file. +<li><a accesskey="4" href="#User-definitions">User definitions</a>: Macros to be used in a document. +<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></ul> +<p>--- The Detailed Node Listing --- + +<p>User definitions + +</p> +<ul class="menu"> +<li><a href="#Diagnostics">Diagnostics</a>: Tracing information. +<li><a href="#Rules">Rules</a>: Changing the default rule dimensions. +<li><a href="#Citations">Citations</a>: Using BibTeX and Eplain to make bibliographies. +<li><a href="#Displays">Displays</a>: Changing the formatting of math displays. +<li><a href="#Time-of-day">Time of day</a>: Producing the time of day. +<li><a href="#Lists">Lists</a>: Producing numbered and unordered lists. +<li><a href="#Verbatim-listing">Verbatim listing</a>: Producing text just as it appears. +<li><a href="#Contents">Contents</a>: Making a table of contents. +<li><a href="#Cross_002dreferences">Cross-references</a>: Symbolically referring to pages or equations. +<li><a href="#Page-references">Page references</a>: Symbolic references to page numbers. +<li><a href="#Equation-references">Equation references</a>: Symbolic references to equation numbers. +<li><a href="#Indexing">Indexing</a>: Creating and typesetting indexes. +<li><a href="#Justification">Justification</a>: Left- or right-justification, or centering. +<li><a href="#Tables">Tables</a>: Producing ordered tables. +<li><a href="#Margins">Margins</a>: Changing the margins directly. +<li><a href="#Multiple-columns">Multiple columns</a>: Getting output in two columns. +<li><a href="#Footnotes">Footnotes</a>: Autonumbered footnotes; changing formatting. +<li><a href="#Fractions">Fractions</a>: A better way to produce fractions in text. +<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></ul> +<p>Citations + +</p> +<ul class="menu"> +<li><a href="#Formatting-citations">Formatting citations</a>: Changing the way citations are printed. +<li><a href="#Formatting-bibliographies">Formatting bibliographies</a>: Changing the way bibliographies are printed. + +</li></ul> +<p>Displays + +</p> +<ul class="menu"> +<li><a href="#Formatting-displays">Formatting displays</a>: General formatting of displays. + +</li></ul> +<p>Lists + +</p> +<ul class="menu"> +<li><a href="#Formatting-lists">Formatting lists</a>: Changing how the lists look. + +</li></ul> +<p>Cross-references + +</p> +<ul class="menu"> +<li><a href="#Defining-generic-references">Defining generic references</a> +<li><a href="#Using-generic-references">Using generic references</a> + +</li></ul> +<p>Equation references + +</p> +<ul class="menu"> +<li><a href="#Formatting-equation-references">Formatting equation references</a> +<li><a href="#Subequation-references">Subequation references</a> + +</li></ul> +<p>Indexing + +</p> +<ul class="menu"> +<li><a href="#Indexing-terms">Indexing terms</a>: Specifying what to index. +<li><a href="#Typesetting-an-index">Typesetting an index</a>: Printing the sorted output. +<li><a href="#Customizing-indexing">Customizing indexing</a>: Creating commands and specifying extra actions. + +</li></ul> +<p>Indexing terms + +</p> +<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="#Proofing-index-terms">Proofing index terms</a>: Noting index entries in the margins. + +</li></ul> +<p>Hyperlinks + +</p> +<ul class="menu"> +<li><a href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a> +<li><a href="#Explicit-hyperlinks">Explicit hyperlinks</a> +<li><a href="#Implicit-hyperlinks">Implicit hyperlinks</a> +<li><a href="#Hyperlink-drivers">Hyperlink drivers</a> +<li><a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a> +<li><a href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a> + +</li></ul> +<p>Implicit hyperlinks + +</p> +<ul class="menu"> +<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 +<li><a href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a>: definexref, ref +<li><a href="#Page-reference-hyperlinks">Page reference hyperlinks</a>: xrdef, xref +<li><a href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a>: eq +<li><a href="#Index-hyperlinks">Index hyperlinks</a>: idx +<li><a href="#Footnote-hyperlinks">Footnote hyperlinks</a>: foot, footback +<li><a href="#Contents-hyperlinks">Contents hyperlinks</a> + +</li></ul> +<p>Index hyperlinks + +</p> +<ul class="menu"> +<li><a href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a> +<li><a href="#Page-destinations-for-index-terms">Page destinations for index terms</a> +<li><a href="#Choosing-destination-placement">Choosing destination placement</a> +<li><a href="#Index-page-list-and-page-range-parsers">Index page list and page range parsers</a> +<li><a href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a> + +</li></ul> +<p>Hyperlink drivers + +</p> +<ul class="menu"> +<li><a href="#Options-supported-by-all-drivers">Options supported by all drivers</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 drivers pdftex and dvipdfm:: + +</p> +<ul class="menu"> +<li><a href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a> +<li><a href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a> +<li><a href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a> +<li><a href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a> + +</li></ul> +<p>Setting hyperlink types and options + +</p> +<ul class="menu"> +<li><a href="#Setting-default-types-and-options">Setting default types and options</a> +<li><a href="#Setting-group-types">Setting group types</a> +<li><a href="#Setting-group-options">Setting group options</a> + +</li></ul> +<p>Turning hyperlinks on/off + +</p> +<ul class="menu"> +<li><a href="#Turning-low_002dlevel-commands-on_002foff">Turning low-level commands on/off</a> +<li><a href="#Turning-hyperlinks-on_002foff-for-a-group">Turning hyperlinks on/off for a group</a> + +</li></ul> +<p>Arrow theoretic diagrams + +</p> +<ul class="menu"> +<li><a href="#Slanted-lines-and-vectors">Slanted lines and vectors</a> +<li><a href="#Commutative-diagrams">Commutative diagrams</a> + +</li></ul> +<p>Commutative diagrams + +</p> +<ul class="menu"> +<li><a href="#Arrows-and-morphisms">Arrows and morphisms</a> +<li><a href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a> +<li><a href="#Commutative-diagram-parameters">Commutative diagram parameters</a> + +</li></ul> +<p>Programming definitions + +</p> +<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="#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. +<li><a href="#Obeying-spaces">Obeying spaces</a>: Making whitespace count anywhere. +<li><a href="#Writing-out-numbers">Writing out numbers</a>: Making `1' into `one'. +<li><a href="#Mode_002dspecific-penalties">Mode-specific penalties</a> +<li><a href="#Auxiliary-files">Auxiliary files</a>: Testing for their existence. +<li><a href="#User_002ddefined-environments">User-defined environments</a>: User-defined environments. +<li><a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a> + +</li></ul> +<p>Expansion + +</p> +<ul class="menu"> +<li><a href="#g_t_005ccsn-and-_005cece">\csn and \ece</a> +<li><a href="#g_t_005cedefappend">\edefappend</a> +<li><a href="#Hooks">Hooks</a>: Manipulating and executing named actions. +<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_005cfuturenonspacelet">\futurenonspacelet</a> + + </ul> + +<!-- This is part of the Eplain manual. Public domain. --> +<div class="node"> +<p><hr> +<a name="Introduction"></a> +Next: <a rel="next" accesskey="n" href="#Installation">Installation</a>, +Previous: <a rel="previous" accesskey="p" href="#Top">Top</a>, +Up: <a rel="up" accesskey="u" href="#Top">Top</a> + +</div> + +<h2 class="chapter">1 Introduction</h2> + +<p><a name="index-Eplain_002c-purpose-of-1"></a> +<a name="index-xeplain_002etex-2"></a>The <dfn>Eplain</dfn> 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 (<samp><span class="file">xeplain.tex</span></samp>) for +that. + + <p>Eplain is not intended to provide “generic” typesetting capabilities, as +do LaTeX (written by Leslie Lamport) +<a name="index-g_t_0040LaTeX_007b_007d-3"></a><a name="index-Lamport_002c-Leslie-4"></a>or Texinfo +<a name="index-Texinfo-5"></a>(written by Richard Stallman and others). +<a name="index-Stallman_002c-Richard-6"></a><a name="index-rms-7"></a>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. + + <p>For example, Eplain does not have a command <code>\section</code>, which +would format section headings in an “appropriate” way, such as +LaTeX's <code>\section</code>. 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. + + <p>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 +<a name="index-Berry_002c-Karl-8"></a>is not aware of any generally available macro packages that (1) <!-- /@w -->do +not force their typographic style on an author, and yet (2) <!-- /@w -->provide +such capabilities. + + <p>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 TeXbook</cite> 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. + + <p>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. + + <p>You can send bug reports or suggestions to +<a href="mailto:tex-eplain@tug.org">tex-eplain@tug.org</a>. The current version number of Eplain is +defined as the macro <code>\fmtversion</code> +<a name="index-version-number-9"></a><a name="index-fmtversion-10"></a>at the end of the source file <samp><span class="file">eplain.tex</span></samp>. When corresponding, +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. --> +<div class="node"> +<p><hr> +<a name="Installation"></a> +Next: <a rel="next" accesskey="n" href="#Invoking-Eplain">Invoking Eplain</a>, +Previous: <a rel="previous" accesskey="p" href="#Introduction">Introduction</a>, +Up: <a rel="up" accesskey="u" href="#Top">Top</a> + +</div> + +<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>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 +source file with <code>\input</code>. You do this by issuing a sequence of +Unix commands something like this: + +<pre class="example"> prompt$ touch eplain.aux + prompt$ initex + This is TeX, ... + **&plain eplain + (eplain.tex) + *\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 +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 +<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">&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 ^&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> +<a name="Invoking-Eplain"></a> +Next: <a rel="next" accesskey="n" href="#User-definitions">User definitions</a>, +Previous: <a rel="previous" accesskey="p" href="#Installation">Installation</a>, +Up: <a rel="up" accesskey="u" href="#Top">Top</a> + +</div> + +<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: + +<pre class="example"> \input eplain +</pre> + <p class="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. + + <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 +eliminate the time spent reading the macro source file. You do this +by responding <code>&eplain</code> to TeX's `<samp><span class="samp">**</span></samp>' prompt. For +example: + +<pre class="example"> initex + This is TeX, ... + **&eplain myfile +</pre> + <p>Depending on the implementation of TeX which you are using, you might +also be able to invoke TeX as <samp><span class="file">eplain</span></samp> and have the format file +automatically read. + + <p>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</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 +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. + + <p>Eplain consists of several source files: + <dl> +<dt><samp><span class="file">xeplain.tex</span></samp><dd>most of the macros; + + <br><dt><samp><span class="file">arrow.tex</span></samp><dd>commutative diagram macros (see <a href="#Arrow-theoretic-diagrams">Arrow theoretic diagrams</a>), written by +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; + + <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 +by Philip Taylor; + + <br><dt><samp><span class="file">texnames.sty</span></samp><dd>abbreviations for various TeX-related names (see <a href="#Logos">Logos</a>), edited +by Nelson Beebe. + + </dl> + +<p class="noindent">The file <samp><span class="file">eplain.tex</span></samp> is all of these files merged +together, with comments removed. + + <p>All of these files except <samp><span class="file">xeplain.tex</span></samp> can be input individually, +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 +<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><a name="index-noarrow-22"></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 +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>): +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 +<code>\nobibtex</code> before reading Eplain, as described above. + + <p>If you have <samp><span class="file">amsppt.sty</span></samp> loaded and use <code>\ref</code>, Eplain writes +a warning on your terminal. If you want to use the AMSTeX +<code>\ref</code>, do <code>\let\ref = \amsref</code> after reading Eplain. +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 +<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: +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 +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 +<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. + +<!-- This is part of the Eplain manual. Public domain. --> +<div class="node"> +<p><hr> +<a name="User-definitions"></a> +Next: <a rel="next" accesskey="n" href="#Hyperlinks">Hyperlinks</a>, +Previous: <a rel="previous" accesskey="p" href="#Invoking-Eplain">Invoking Eplain</a>, +Up: <a rel="up" accesskey="u" href="#Top">Top</a> + +</div> + +<h2 class="chapter">4 User definitions</h2> + +<p>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. + +<ul class="menu"> +<li><a accesskey="1" href="#Diagnostics">Diagnostics</a>: Tracing information. +<li><a accesskey="2" href="#Rules">Rules</a>: Changing the default rule dimensions. +<li><a accesskey="3" href="#Citations">Citations</a>: Using BibTeX and Eplain to make bibliographies. +<li><a accesskey="4" href="#Displays">Displays</a>: Changing the formatting of math displays. +<li><a accesskey="5" href="#Time-of-day">Time of day</a>: Producing the time of day. +<li><a accesskey="6" href="#Lists">Lists</a>: Producing numbered and unordered lists. +<li><a accesskey="7" href="#Verbatim-listing">Verbatim listing</a>: Producing text just as it appears. +<li><a accesskey="8" href="#Contents">Contents</a>: Making a table of contents. +<li><a accesskey="9" href="#Cross_002dreferences">Cross-references</a>: Symbolic references to equations, figures, etc. +<li><a href="#Page-references">Page references</a>: Symbolic references to page numbers. +<li><a href="#Equation-references">Equation references</a>: Symbolic references to equation numbers. +<li><a href="#Indexing">Indexing</a>: Creating and typesetting indexes. +<li><a href="#Justification">Justification</a>: Ragged left, ragged right, centered. +<li><a href="#Tables">Tables</a>: Producing ordered tables. +<li><a href="#Margins">Margins</a>: Changing the margins directly. +<li><a href="#Multiple-columns">Multiple columns</a>: Getting output in two columns. +<li><a href="#Footnotes">Footnotes</a>: Autonumbered footnotes; changing formatting. +<li><a href="#Fractions">Fractions</a>: A better way to produce fractions in text. +<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="#Loading-LaTeX-packages">Loading LaTeX packages</a>: Support for LaTeX packages under plain TeX. +</ul> + +<div class="node"> +<p><hr> +<a name="Diagnostics"></a> +Next: <a rel="next" accesskey="n" href="#Rules">Rules</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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 +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 +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 +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.) + + <p>You can turn off all tracing with <code>\tracingoff</code>. +<a name="index-tracingoff-35"></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> +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 +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, +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.}% +</pre> + <div class="node"> +<p><hr> +<a name="Rules"></a> +Next: <a rel="next" accesskey="n" href="#Citations">Citations</a>, +Previous: <a rel="previous" accesskey="p" href="#Diagnostics">Diagnostics</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<h3 class="section">4.2 Rules</h3> + +<p>The default dimensions of rules are defined in chapter <!-- /@w -->21 of the +<cite>The TeXbook</cite>. To sum up what is given there, the “thickness” +of rules is +<a name="index-rule-thickness-41"></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. + + <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 +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> + +<div class="node"> +<p><hr> +<a name="Citations"></a> +Next: <a rel="next" accesskey="n" href="#Displays">Displays</a>, +Previous: <a rel="previous" accesskey="p" href="#Rules">Rules</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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 +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, +Eplain adopts the use of BibTeX, and virtually the same interface as +LaTeX. + + <p>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 <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 +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 +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 +to run TeX again<small class="dots">...</small>) An annotated example of the whole process is +given below. + + <p>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 <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>. + + <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) +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 +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 +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>. + + <p>Another command, <code>\nocite</code>, +<a name="index-nocite-59"></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 +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, +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 +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 +<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 +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. +You can restore the default by saying <code>\xrefwarningtrue</code>. + + <p>Here is a TeX input file that illustrates the various commands. + +<pre class="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. +</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> +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>' +represents the shell prompt.) + +<pre class="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) +</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>The output looks something like (because we used the <tt>plain</tt> +bibliography style): + + <blockquote> +Two citations to Knuthian works: [2,1 note]. + + <p><b>References</b> + + <p>[1] Ronald L. Graham, Donald E. Knuth, and Oren Patashnik. <i>Concrete +Mathematics</i>. Addison-Wesley, Reading, Massachusetts, 1989. + + <p>[2] Donald E. Knuth. <i>Surreal Numbers</i>. Addison-Wesley, Reading, +Massachusetts, 1974. +</blockquote> + + <p>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 <code>alpha</code>.) +<a name="index-alphanumeric-references-69"></a><a name="index-references_002c-alphanumeric-70"></a> + +<ul class="menu"> +<li><a accesskey="1" href="#Formatting-citations">Formatting citations</a>: Changing the way citations are printed. +<li><a accesskey="2" href="#Formatting-bibliographies">Formatting bibliographies</a>: Changing the way bibliographies are printed. +</ul> + +<div class="node"> +<p><hr> +<a name="Formatting-citations"></a> +Next: <a rel="next" accesskey="n" href="#Formatting-bibliographies">Formatting bibliographies</a>, +Up: <a rel="up" accesskey="u" href="#Citations">Citations</a> + +</div> + +<h4 class="subsection">4.3.1 Formatting citations</h4> + +<p><a name="index-citations_002c-formatting-71"></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 +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. + + <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 +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 +<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 +<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. +</dl> + + <p>Here is an example, showing you could produce citations as +superscripted labels, with the optional notes in parentheses. + +<pre class="example"> \def\printcitestart{\unskip $^\bgroup} + \def\printbetweencitations{,} + \def\printcitefinish{\egroup$} + \def\printcitenote#1{\hbox{\sevenrm\space (#1)}} +</pre> + <div class="node"> +<p><hr> +<a name="Formatting-bibliographies"></a> +Previous: <a rel="previous" accesskey="p" href="#Formatting-citations">Formatting citations</a>, +Up: <a rel="up" accesskey="u" href="#Citations">Citations</a> + +</div> + +<h4 class="subsection">4.3.2 Formatting bibliographies</h4> + +<p><a name="index-bibliography_002c-formatting-the-76"></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 +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 +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 +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>\bblem</code><dd><a name="index-bblem-82"></a>The font used for printing the titles and other “emphasized” 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 +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 +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 +<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 +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>: +<code>\parskip</code>, which produces extra space between the items; and +<code>\biblabelextraspace</code>, which is described above. +(By the way, <code>\hookappend</code> won't work with <code>\bblhook</code>, despite +the names. Just use <code>\def</code>.) + + </dl> + + <p>If you are really desperate, you can also hand-edit the <tt>.bbl</tt> file +that BibTeX produces to do anything you wish. + +<div class="node"> +<p><hr> +<a name="Displays"></a> +Next: <a rel="next" accesskey="n" href="#Time-of-day">Time of day</a>, +Previous: <a rel="previous" accesskey="p" href="#Citations">Citations</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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> +By default, TeX centers displayed material. (Displayed material is +just whatever you put between <code>$$</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</code>, +<a name="index-leftdisplays-91"></a>which indents displayed material by <code>\parindent</code> plus +<code>\leftskip</code>, plus <code>\leftdisplayindent</code>. +<a name="index-leftdisplayindent-92"></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 +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 +by inserting <code>\hfill</code> glue, as explained in <cite>The TeXbook</cite>. + +<ul class="menu"> +<li><a accesskey="1" href="#Formatting-displays">Formatting displays</a>: General formatting of displays. +</ul> + +<div class="node"> +<p><hr> +<a name="Formatting-displays"></a> +Up: <a rel="up" accesskey="u" href="#Displays">Displays</a> + +</div> + +<h4 class="subsection">4.4.1 Formatting displays</h4> + +<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 +in TeX's <code>\everydisplay</code> parameter), and to define +<code>\generaldisplay</code>. +<a name="index-generaldisplay-98"></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> + +<div class="node"> +<p><hr> +<a name="Time-of-day"></a> +Next: <a rel="next" accesskey="n" href="#Lists">Lists</a>, +Previous: <a rel="previous" accesskey="p" href="#Displays">Displays</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<h3 class="section">4.5 Time of day</h3> + +<p><a name="index-time-of-day-100"></a><a name="index-date-101"></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. + + <p><code>\fullmonthname</code> +<a name="index-fullmonthname-103"></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.' + + <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.'. +(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'. + +<div class="node"> +<p><hr> +<a name="Lists"></a> +Next: <a rel="next" accesskey="n" href="#Verbatim-listing">Verbatim listing</a>, +Previous: <a rel="previous" accesskey="p" href="#Time-of-day">Time of day</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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> +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 +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 +(“square bullets”). A nested <code>\unorderedlist</code> labels items with +em-dashes. Doubly (and deeper) nested unordered lists label items with +`*'s. + + </dl> + + <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 +paragraph. + + <p>You can give <code>\li</code> 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</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>. + + <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 +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. + + The second paragraph of the second item. + \endnumberedlist +</pre> + <ul class="menu"> +<li><a accesskey="1" href="#Formatting-lists">Formatting lists</a>: Changing how the lists look. +</ul> + +<div class="node"> +<p><hr> +<a name="Formatting-lists"></a> +Up: <a rel="up" accesskey="u" href="#Lists">Lists</a> + +</div> + +<h4 class="subsection">4.6.1 Formatting lists</h4> + +<p><a name="index-lists_002c-formatting-119"></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. + + <br><dt><code>\interitemskipamount</code><dd><a name="index-interitemskipamount-122"></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 +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 +the two parameters differently? Because (a) <!-- /@w -->it is more useful to +make the list indentation depend on the paragraph indentation; +(b) <!-- /@w -->footnotes aren't formatted right if <code>\parindent</code> is reset +to zero. + + </dl> + + <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. + + <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 +<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: + + <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. + + <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 +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'. + + </dl> + + <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 +item; and <code>\endlist</code> +<a name="index-endlist-138"></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> + +<div class="node"> +<p><hr> +<a name="Verbatim-listing"></a> +Next: <a rel="next" accesskey="n" href="#Contents">Contents</a>, +Previous: <a rel="previous" accesskey="p" href="#Lists">Lists</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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; +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 +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>. + + <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. + + <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 +the file is being read. You can redefine the macro +<code>\printlistinglineno</code> to change how they are printed. + + <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, +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.) + + <p>For example: + +<pre class="example"> \verbatim| ||\#%&!|endverbatim +</pre> + <p class="noindent">produces <code> |\#%&!</code>. + + <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>' +with <code>\verbatimescapechar </code><var>char</var>; for example, this changes +it to `<samp><span class="samp">@</span></samp>'. + +<pre class="example"> \verbatimescapechar \@ +</pre> + <p class="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</code> is used as <code>\catcode `</code><var>char</var>, so +the exact rules follow that for <code>\catcode</code>. + + <p>Because <code>\verbatim</code> must change the category code of special +characters, calling inside a macro definition of your own does not work +properly. For example: + +<pre class="example"> \def\mymacro{\verbatim &#%|endverbatim}% Doesn't work! +</pre> + <p>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>). + +<div class="node"> +<p><hr> +<a name="Contents"></a> +Next: <a rel="next" accesskey="n" href="#Cross_002dreferences">Cross-references</a>, +Previous: <a rel="previous" accesskey="p" href="#Verbatim-listing">Verbatim listing</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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 +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. + + <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., +`<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. + + <p><a name="index-writenumberedtocentry-156"></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 +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 <em>want</em> full expansion of the third +argument, you don't get it—you must expand it yourself, before you +call <code>\writenumberedtocentry</code>. + + <p>For example: + +<pre class="example"> \writenumberedtocentry{chapter}{A $\sin$ wave}{\the\chapno} + \writetocentry{section}{A section title} +</pre> + <p class="noindent">Supposing <code>\the\chapno</code> expanded to `<samp><span class="samp">3</span></samp>' and that the +<code>\write</code>'s occurred on pages eight and nine, respectively, the +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>. +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>, +<code>\tocsectionentry</code>, and <code>\tocsubsectionentry</code>, just to prevent +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 +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 +<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 +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</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 +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 + +<pre class="example"> \definecontentsfile{toc} +</pre> + <p class="noindent">The <var>abbrev</var> is used both for the file extension and in +the control sequence names. + +<div class="node"> +<p><hr> +<a name="Cross-references"></a> +<a name="Cross_002dreferences"></a> +Next: <a rel="next" accesskey="n" href="#Page-references">Page references</a>, +Previous: <a rel="previous" accesskey="p" href="#Contents">Contents</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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; +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 +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 <tt>.aux</tt> file at the first reference; after +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 +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 $&^_</span></samp>' is a valid label (assuming the category +codes of plain TeX), but `<samp><span class="samp">%#\{</span></samp>' has no valid characters. + + <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>. + +<ul class="menu"> +<li><a accesskey="1" href="#Defining-generic-references">Defining generic references</a> +<li><a accesskey="2" href="#Using-generic-references">Using generic references</a> +</ul> + +<div class="node"> +<p><hr> +<a name="Defining-generic-references"></a> +Next: <a rel="next" accesskey="n" href="#Using-generic-references">Using generic references</a>, +Up: <a rel="up" accesskey="u" href="#Cross_002dreferences">Cross-references</a> + +</div> + +<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 +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: + +<pre class="example"> \definexref{sec-intro}{3.1}{section} +</pre> + <p class="noindent">Of course, the label value is usually generated by another +macro using TeX count registers or some such. + + <p><code>\definexref</code> doesn't actually define <var>label</var>; instead, it +writes out the definition to the <tt>.aux</tt> file, where Eplain will read +it on the next TeX run. + + <p>The <var>class</var> argument is used by the <code>\ref</code> and <code>\refs</code> +commands. See the next section. + +<div class="node"> +<p><hr> +<a name="Using-generic-references"></a> +Previous: <a rel="previous" accesskey="p" href="#Defining-generic-references">Defining generic references</a>, +Up: <a rel="up" accesskey="u" href="#Cross_002dreferences">Cross-references</a> + +</div> + +<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> +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 +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 +<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 +<code>\...word</code>. + + </dl> + + <p>The purpose of the <code>\...word</code> macro is to produce the word +`Section' or `Figure' or whatever that usually precedes the actual +reference number. + + <p>Here is an example: + +<pre class="example"> \def\sectionword{Section} + \definexref{sec-intro}{3.1}{section} + \definexref{sec-next}{3.2}{section} + See \refs{sec-intro} and \refn{sec-next} ... +</pre> + <p class="noindent">This produces `See Sections 3.1 and 3.2 <small class="dots">...</small>' + +<div class="node"> +<p><hr> +<a name="Page-references"></a> +Next: <a rel="next" accesskey="n" href="#Equation-references">Equation references</a>, +Previous: <a rel="previous" accesskey="p" href="#Cross_002dreferences">Cross-references</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<h3 class="section">4.10 Page references</h3> + +<p>Eplain provides two commands for handling references to page numbers, +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 +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. <!-- /@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. <!-- /@w -->' prefix is defined by <code>\xrefpageword</code>. +<a name="index-xrefpageword-182"></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>. + +<div class="node"> +<p><hr> +<a name="Equation-references"></a> +Next: <a rel="next" accesskey="n" href="#Indexing">Indexing</a>, +Previous: <a rel="previous" accesskey="p" href="#Page-references">Page references</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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 +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 +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>, +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 +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 +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. + + <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> +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 +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 +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 +general cross-references. + + <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> +<li><a accesskey="2" href="#Subequation-references">Subequation references</a> +</ul> + +<div class="node"> +<p><hr> +<a name="Formatting-equation-references"></a> +Next: <a rel="next" accesskey="n" href="#Subequation-references">Subequation references</a>, +Up: <a rel="up" accesskey="u" href="#Equation-references">Equation references</a> + +</div> + +<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 +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 +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 +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: + +<pre class="example"> \def\eqconstruct#1{\the\chapternumber.#1} +</pre> + <p class="noindent">(If you are keeping the chapter number in a count register named +<code>\chapternumber</code>, naturally.) + + <p>The reason for having both <code>\eqconstruct</code> and <code>\eqprint</code> may +not be immediately apparent. The difference is that <code>\eqconstruct</code> +affects the text that cross-reference label is defined to be, while +<code>\eqprint</code> affects only what is typeset on the page. The example +just below might help. + + <p>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*)'. + + <p>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: + +<pre class="example"> $$...\eqdef{a-eq}$$ + ... + $$...\eqdef[\eqrefn{a-eq}*]{a-eq-var}$$ + In \eqref{a-eq-var}, we expand on \eqref{a-eq}, ... +</pre> + <p>We use <code>\eqrefn</code> in the cross-reference text, not +<code>\eqref</code>, so that <code>\eqprint</code> is called only once. + +<div class="node"> +<p><hr> +<a name="Subequation-references"></a> +Previous: <a rel="previous" accesskey="p" href="#Formatting-equation-references">Formatting equation references</a>, +Up: <a rel="up" accesskey="u" href="#Equation-references">Equation references</a> + +</div> + +<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 +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: +“<small class="dots">...</small> in the system of equations (2)<small class="dots">...</small>”. + + <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, +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 +<code>\eqsubdefn</code>, and reset to zero at every <code>\eqdef</code> or +<code>\eqdefn</code>. + + <p>You use <code>\eqref</code> to refer to subequations as well as main +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 “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: +<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 <number>. + \advance\subref by 96 % `a' is character code 97. + #1\char\subref + } +</pre> + <p class="noindent">Sadly, we must define a new count register, <code>\subref</code>, +instead of using the scratch count register <code>\count255</code>, because +`<samp><span class="samp">#1</span></samp>' might include other macro calls which use <code>\count255</code>. + +<div class="node"> +<p><hr> +<a name="Indexing"></a> +Next: <a rel="next" accesskey="n" href="#Justification">Justification</a>, +Previous: <a rel="previous" accesskey="p" href="#Equation-references">Equation references</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<h3 class="section">4.12 Indexing</h3> + +<p><a name="index-indexing-205"></a><a name="index-sorting-an-index-206"></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>. + + <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 +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> + + <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., +<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 +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 +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-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 +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 +example, + +<pre class="example"> \defineindex{m} +</pre> + <p class="noindent">defines the command <code>\mdx</code> to write to the file +<samp><span class="file">foo.mdx</span></samp>. Eplain simply does <code>\defineindex{i}</code> to define +the default commands. + +<ul class="menu"> +<li><a accesskey="1" href="#Indexing-terms">Indexing terms</a>: Specifying what to index. +<li><a accesskey="2" href="#Typesetting-an-index">Typesetting an index</a>: Printing the sorted output. +<li><a accesskey="3" href="#Customizing-indexing">Customizing indexing</a>: Creating commands and specifying extra actions. +</ul> + +<div class="node"> +<p><hr> +<a name="Indexing-terms"></a> +Next: <a rel="next" accesskey="n" href="#Typesetting-an-index">Typesetting an index</a>, +Up: <a rel="up" accesskey="u" href="#Indexing">Indexing</a> + +</div> + +<h4 class="subsection">4.12.1 Indexing terms</h4> + +<p><a name="index-indexing-terms-215"></a><a name="index-silent-indexing-216"></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 +with `<samp><span class="samp">s</span></samp>' (for “silent”). In either case, the name always includes +`<samp><var>I</var><span class="samp">dx</span></samp>', where <var>I</var> is the index letter, also described +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 +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. + +<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. +</ul> + +<div class="node"> +<p><hr> +<a name="Indexing-commands"></a> +Next: <a rel="next" accesskey="n" href="#Modifying-index-entries">Modifying index entries</a>, +Up: <a rel="up" accesskey="u" href="#Indexing-terms">Indexing terms</a> + +</div> + +<h5 class="subsubsection">4.12.1.1 Indexing commands</h5> + +<p><a name="index-indexing-commands-221"></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 +<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: + + <pre class="example"> \sidx{truth}[beauty of] + The beauty of truth is \idx{death}. + </pre> + <p>Subterms at the second and further levels can also be +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> +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>. +<code>\idxname{</code><var>First M.</var><code>}{</code><var>von Last</var><code>}</code> also produces <var>First M. von +Last</var> as output. (These commands are useful special cases of <code>\idx</code> +and <code>\sidx</code>.) Example: + + <pre class="example"> \sidxname{Richard}{Stark} + \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 +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 +<code>\</code><var>cs</var><code>{term}</code>. This provides for the usual ways of changing +the typesetting of index entries. Example: + + <pre class="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. + </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 +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 +<var>term</var><code> \</code><var>cs</var><code>{subterm}</code>, in the unlikely event that your +syntax is convoluted enough to make this useful. Example: + + <pre class="example"> \def\title#1{{\sl #1}} + \sidxsubmarked{Anderson, Laurie}\title{Strange Angels} + The \idxsubmarked{Anderson}\title{Carmen} is a strange twist. + </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 +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: + +<pre class="example"> \sidx{Ap-weight@$A_\pi$-weight} +</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 +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 +<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 +<code>\if@aftersctnhead</code> set true when you're at a section heading, you +could do: + +<pre class="example"> \hookaction{afterindexterm}{\if@aftersctnhead \nobreak \fi} +</pre> + <div class="node"> +<p><hr> +<a name="Modifying-index-entries"></a> +Next: <a rel="next" accesskey="n" href="#Proofing-index-terms">Proofing index terms</a>, +Previous: <a rel="previous" accesskey="p" href="#Indexing-commands">Indexing commands</a>, +Up: <a rel="up" accesskey="u" href="#Indexing-terms">Indexing terms</a> + +</div> + +<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> +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</code> and <code>end</code> can be +specified together with <code>pagemarkup=</code><var>cs</var> (separate them with +a comma without a following space, like this: +<code>[begin,pagemarkup=defn]</code>). + + <p>These work via MakeIndex's “encapsulation” feature. See <a href="#Customizing-indexing">Customizing indexing</a>, if you're not using the default characters for the +MakeIndex operators. The other optional argument (specifying a subterm) +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 +entries must match exactly for MakeIndex to recognize them. +Example: + + <pre class="example"> \sidx[begin]{future}[Cohen, Leonard] + ... + \sidx[end]{future}[Cohen, Leonard] + </pre> + <p class="noindent">will typeset as something like + + <pre class="display"> future, + Cohen, Leonard, 65–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 +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: + + <pre class="example"> \sidx[see]{analysis}[archetypal]{archetypal criticism} + </pre> + <p class="noindent">becomes + + <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 +index entries of the referencing term. Example: + + <pre class="example"> \sidx[seealso]{archetypal criticism}[elements of]{dichotomies} + </pre> + <p class="noindent">becomes + + <pre class="display"> archetypal criticism, + elements of, 75, 97, 114, <i>see also</i> dichotomies + </pre> + <p>(Aside for the academically curious: The archetypally critical book I +took these dichotomous examples from is Laurence Berman's <cite>The +Musical Image</cite>, which I happened to co-design and typeset.) + + <br><dt><code>pagemarkup=</code><var>cs</var><dd>This puts <code>\</code><var>cs</var> before the page number in the typeset index, +thus allowing you to underline definitive entries, italicize examples, +and the like. You do <em>not</em> precede the control sequence <var>cs</var> +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: + + <pre class="example"> \def\defn#1{{\sl #1}} + \sidx[pagemarkeup=defn]{indexing} + </pre> + <p class="noindent">becomes something like + + <pre class="example"> indexing, <code>\defn{75}</code> + </pre> + </dl> + +<div class="node"> +<p><hr> +<a name="Proofing-index-terms"></a> +Previous: <a rel="previous" accesskey="p" href="#Modifying-index-entries">Modifying index entries</a>, +Up: <a rel="up" accesskey="u" href="#Indexing-terms">Indexing terms</a> + +</div> + +<h5 class="subsubsection">4.12.1.3 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> +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 +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 +<code>\indexproofterm</code> just puts it into an <code>\hbox</code>, first doing +<code>\indexprooffont</code>, which Eplain defines to select the font +<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 +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 +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, +if you have your own output routine, that redefines or doesn't use +<code>\makeheadline</code>, it's up to you to call <code>\indexproofunbox</code> at +the appropriate time. + +<div class="node"> +<p><hr> +<a name="Typesetting-an-index"></a> +Next: <a rel="next" accesskey="n" href="#Customizing-indexing">Customizing indexing</a>, +Previous: <a rel="previous" accesskey="p" href="#Indexing-terms">Indexing terms</a>, +Up: <a rel="up" accesskey="u" href="#Indexing">Indexing</a> + +</div> + +<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> +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 +<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 +<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 +<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 +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 +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> +of <code>\aboveitemskipamount</code>, <code>0pt plus2pt</code> by default. Page +breaks are encouraged before main entries (<code>\penalty -100</code>), but +prohibited afterwards—Eplain has no provision for “continued” +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> +<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 +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 +entries in the <samp><span class="file">.ind</span></samp> file. Eplain makes this equivalent to +<code>\bigbreak</code>. + +<div class="node"> +<p><hr> +<a name="Customizing-indexing"></a> +Previous: <a rel="previous" accesskey="p" href="#Typesetting-an-index">Typesetting an index</a>, +Up: <a rel="up" accesskey="u" href="#Indexing">Indexing</a> + +</div> + +<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 +change this, you can add the following to your MakeIndex style +(<samp><span class="file">.ist</span></samp>) file: + +<pre class="example"> delim_0 "\\afterindexterm " + delim_1 "\\afterindexterm " + delim_2 "\\afterindexterm " +</pre> + <p class="noindent">Eplain makes <code>\afterindexterm</code> equivalent to +<code>\quad</code>. + + <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' + + <br><dt><code>\idxrangeendword</code><dd><a name="index-idxrangeendword-292"></a>`end' + + <br><dt><code>\idxseecmdword</code><dd><a name="index-idxseecmdword-293"></a>`see' + + <br><dt><code>\idxseealsocmdword</code><dd><a name="index-idxseealsocmdword-294"></a>`seealso' + + </dl> + + <p>You can also change the magic characters Eplain puts into the +<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>' + + <br><dt><code>\idxencapoperator</code><dd><a name="index-idxencapoperator-296"></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>\idxendrangemark</code><dd><a name="index-idxendrangemark-298"></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 “see also” +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 “see” and “see also” 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 +<code>\indexsee</code> and <code>\indexseealso</code> actually produce the “see +<small class="dots">...</small>” 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</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 +produced by MakeIndex in front of “see <small class="dots">...</small>” 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 +filter out these commas from the output of MakeIndex. For example, +suppose you want the following style for your “see <small class="dots">...</small>” entries: + +<pre class="display"> analysis, + archetypal (<i>see</i> archetypal criticism) + archetypal criticism, + elements of, 75, 97, 114 (<i>see also</i> dichotomies) +</pre> + <p class="noindent">You would need to redefine these macros in your TeX +file: + +<pre class="example"> \def\indexsee#1#2{({\seevariant \indexseeword\/ }#1)} + \def\indexseealso#1#2{({\seevariant \indexseealsowords\/ }#1)} +</pre> + <p class="noindent">and then filter out the commas in front of the “see <small class="dots">...</small>” +entries by running the following command to produce the <samp><span class="file">.ind</span></samp> +file (assuming the name of the <samp><span class="file">.idx</span></samp> file is <samp><span class="file">myfile.idx</span></samp> +and the <samp><span class="file">trimsee</span></samp> script is placed in the current directory): + +<pre class="example"> prompt$ cat myfile.idx | makeindex | ./trimsee > myfile.ind +</pre> + <p>By default, <samp><span class="file">trimsee</span></samp> uses default page list separators and +default “see <small class="dots">...</small>” command names. If you set up MakeIndex to use +different page list separator or change the names of <code>\indexsee</code> +and <code>\indexseealso</code> commands, it is possible to adjust the +<samp><span class="file">trimsee</span></samp> script through its command line options, which are the +following: + + <dl> +<dt><samp><span class="option">-i </span><var>is</var></samp><dd>Use <var>is</var> as a regular expression matching separator before “see +<small class="dots">...</small>” commands in the input (default: `<samp><span class="samp">, \+</span></samp>'). + + <br><dt><samp><span class="option">-o </span><var>os</var></samp><dd>Use <var>os</var> as a separator to replace <var>is</var> before “see <small class="dots">...</small>” +commands (default: `<samp> </samp>'). + + <br><dt><samp><span class="option">-s </span><var>see</var></samp><dd>Use <var>see</var> as a regular expression matching “see <small class="dots">...</small>” +commands (default: `<samp><span class="samp">\\indexsee</span></samp>'). + + <br><dt><samp><span class="option">-h</span></samp><dt><samp><span class="option">--help</span></samp><dd>Print a usage message. + + <br><dt><samp><span class="option">-v</span></samp><dt><samp><span class="option">--version</span></samp><dd>Print version. +</dl> + + <p><samp><span class="file">trimsee</span></samp> reads input from the standard input, and directs its +output to the standard output. + +<div class="node"> +<p><hr> +<a name="Justification"></a> +Next: <a rel="next" accesskey="n" href="#Tables">Tables</a>, +Previous: <a rel="previous" accesskey="p" href="#Indexing">Indexing</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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 +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> +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 +end-of-line in the input file also starts a new line in the output file. + + <p>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</code>, will have <em>no effect</em> 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). + + <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. + + <p>Here is an example: +<pre class="example"> {\center First line. + + Second line, with a blank line before. + } +</pre> + <p>This produces: + +<div align="center">First line.</div> +<div align="center"></div> +<div align="center">Second line, with a blank line before.</div> + + <p>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: + +<pre class="example"> \def\title{\begingroup\titlefont\center} + \def\endtitle{\endgroup} +</pre> + <div class="node"> +<p><hr> +<a name="Tables"></a> +Next: <a rel="next" accesskey="n" href="#Margins">Margins</a>, +Previous: <a rel="previous" accesskey="p" href="#Justification">Justification</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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 +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. + + <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 +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. + + <p><code>\makecolumns</code> 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</code> command itself). + + <p><code>\parindent</code> defines the space to the left of the +table. <code>\hsize</code> 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. + + <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 +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> +should be decreased. + + <p>If you happen to give <code>\makecolumns</code> 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</code> 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. + + <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 + two + three + four + five + six + Text after the table. +</pre> + <p>This produces `one', `two', and `three' in the first column, and +`four', `five', and `six' in the second. + +<div class="node"> +<p><hr> +<a name="Margins"></a> +Next: <a rel="next" accesskey="n" href="#Multiple-columns">Multiple columns</a>, +Previous: <a rel="previous" accesskey="p" href="#Tables">Tables</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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 +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 +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. +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. +</dl> + + <p>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</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. + + <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 +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: + + <dl> +<dt><code>\paperheight</code><dd><a name="index-paperheight-335"></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. +</dl> + + <p>If your output page has different dimensions than this, you must +reassign to these parameters, as in + +<pre class="example"> \paperheight = 11truein + \paperwidth = 17truein +</pre> + <div class="node"> +<p><hr> +<a name="Multiple-columns"></a> +Next: <a rel="next" accesskey="n" href="#Footnotes">Footnotes</a>, +Previous: <a rel="previous" accesskey="p" href="#Margins">Margins</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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 +<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 +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 +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 “column eject”, 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 +page; to implement multicolumns, Eplain multiplies <code>\vsize</code> 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. + + <p><a name="index-gutter-351"></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 +<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 +<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 +<code>\belowcolumnskip</code> +<a name="index-belowcolumnskip-354"></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 +you have additional insertion classes, you will need to change +the implementation. + + <p>Also, Eplain makes insertions the full page width. There is no +provision for column-width insertions. + +<div class="node"> +<p><hr> +<a name="Footnotes"></a> +Next: <a rel="next" accesskey="n" href="#Fractions">Fractions</a>, +Previous: <a rel="previous" accesskey="p" href="#Multiple-columns">Multiple columns</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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, +incremented on each footnote. The <code>\numberedfootnote</code> +<a name="index-numberedfootnote-357"></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 +<code>\footnote{</code><var>footnote text</var><code>}</code>, instead of as +<code>\numberedfootnote{</code><var>footnote text</var><code>}</code>. + + <p>Eplain keeps the current footnote number in the count register +<code>\footnotenumber</code>. 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</code>. + + <p>Plain TeX separates the footnote marker from the footnote text by +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. + + <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. + + <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 +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 +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>, +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. + + <p>The space above the rule and below the text on the page is controlled +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>. + +<div class="node"> +<p><hr> +<a name="Fractions"></a> +Next: <a rel="next" accesskey="n" href="#Paths">Paths</a>, +Previous: <a rel="previous" accesskey="p" href="#Footnotes">Footnotes</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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. +So Eplain includes it. + + <p><code>\frac</code> typesets the numerator and denominator in +<code>\scriptfont0</code>, 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</code> taking delimited arguments; +see page <!-- /@w -->203 of <cite>The TeXbook</cite> for an explanation of +delimited macro arguments.) + + <p>For example, <code>\frac 23/{64}</code> turns `23/64' into +. + +<div class="node"> +<p><hr> +<a name="Paths"></a> +Next: <a rel="next" accesskey="n" href="#Logos">Logos</a>, +Previous: <a rel="previous" accesskey="p" href="#Fractions">Fractions</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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> +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</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 +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 +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 |~!@$%^&*()_+`-=#{}[]:";'<>,.?\/| +</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 +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 +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>. + +<div class="node"> +<p><hr> +<a name="Logos"></a> +Next: <a rel="next" accesskey="n" href="#Boxes">Boxes</a>, +Previous: <a rel="previous" accesskey="p" href="#Paths">Paths</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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> +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 +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 +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 +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>. + +<div class="node"> +<p><hr> +<a name="Boxes"></a> +Next: <a rel="next" accesskey="n" href="#Checking-for-PDF-output">Checking for PDF output</a>, +Previous: <a rel="previous" accesskey="p" href="#Logos">Logos</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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 +(see <a href="#Lists">Lists</a>) is available by itself: just say <code>\blackbox</code>. +<a name="index-blackbox-393"></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 +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</code> to define the +dimensions of the rectangle it produces. (The contents of <code>\box0</code> +are ignored.) + + <p>Here is an example. This small raised open box is suitable for +putting next to numbers in, e.g., a table of contents. + +<pre class="example"> \def\openbox{% + \ht0 = 1.75pt \dp0 = 1.75pt \wd0 = 3.5pt + \raise 2.75pt \makeblankbox{.2pt}{.2pt} + } +</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 +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: + +<pre class="example"> \boxit{\hbox{This text is boxed.}} +</pre> + <p>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</code> to zero inside <code>\boxit</code>, +since it is very unlikely you would want indentation there. (If you do, +you can always reset it yourself.) + + <p><code>\boxit</code> uses <code>\ehrule</code> and <code>\evrule</code> so that you can +easily adjust the thicknesses of the box rules. See <a href="#Rules">Rules</a>. + +<div class="node"> +<p><hr> +<a name="Checking-for-PDF-output"></a> +Next: <a rel="next" accesskey="n" href="#Loading-LaTeX-packages">Loading LaTeX packages</a>, +Previous: <a rel="previous" accesskey="p" href="#Boxes">Boxes</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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 +<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 +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: + +<pre class="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 +</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 +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 +<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>. + +<div class="node"> +<p><hr> +<a name="Loading-LaTeX-packages"></a> +Previous: <a rel="previous" accesskey="p" href="#Checking-for-PDF-output">Checking for PDF output</a>, +Up: <a rel="up" accesskey="u" href="#User-definitions">User definitions</a> + +</div> + +<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 +(<samp><span class="file">.sty</span></samp> files—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 +packages which are known to work are listed below (see <a href="#Packages-known-to-work">Packages known to work</a>). If you discover a working package which is not in +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 +<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>). +Eplain extends <samp><span class="file">miniltx.tex</span></samp> to provide some additional features, +e.g., support for package options. + +<ul class="menu"> +<li><a accesskey="1" href="#The-_005cusepackage-command">The \usepackage command</a>: Command to load packages. +<li><a accesskey="2" href="#Environment-for-loading-packages">Environment for loading packages</a>: Environment for the \usepackage commands. +<li><a accesskey="3" href="#Packages-known-to-work">Packages known to work</a>: Supported packages. +<li><a accesskey="4" href="#Packages-known-not-to-work">Packages known not to work</a>: Packages known not to work with Eplain. +</ul> + +<div class="node"> +<p><hr> +<a name="The-%5cusepackage-command"></a> +<a name="The-_005cusepackage-command"></a> +Next: <a rel="next" accesskey="n" href="#Environment-for-loading-packages">Environment for loading packages</a>, +Up: <a rel="up" accesskey="u" href="#Loading-LaTeX-packages">Loading LaTeX packages</a> + +</div> + +<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 +that of LaTeX's <code>\usepackage</code> command: + +<pre class="example"> \usepackage[<var>options</var>]{<var>packages</var>}[<var>version</var>] +</pre> + <p class="noindent">where <var>options</var> is a comma-separated list of package +options, <var>packages</var> is a comma-separated list of packages to load +(without the <samp><span class="file">.sty</span></samp> suffix), and <var>version</var> is a package +version number given as a date in the format `<samp><span class="samp">YYYY/MM/DD</span></samp>'. If an +older version of the package is found, a warning is issued. If +several packages are loaded within a single <code>\usepackage</code> +command, the <var>options</var> 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). + + <p>For example: + +<pre class="example"> \usepackage[foo,bar]{pack1,pack2}[2005/08/29] +</pre> + <p class="noindent">will load packages `<samp><span class="samp">pack1</span></samp>' and `<samp><span class="samp">pack2</span></samp>', each with +the options `<samp><span class="samp">foo</span></samp>' and `<samp><span class="samp">bar</span></samp>', and will check that each of the +packages are dated 2005/08/29 or newer. + +<div class="node"> +<p><hr> +<a name="Environment-for-loading-packages"></a> +Next: <a rel="next" accesskey="n" href="#Packages-known-to-work">Packages known to work</a>, +Previous: <a rel="previous" accesskey="p" href="#The-_005cusepackage-command">The \usepackage command</a>, +Up: <a rel="up" accesskey="u" href="#Loading-LaTeX-packages">Loading LaTeX packages</a> + +</div> + +<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 +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 +preamble; therefore, Eplain requires that all packages be loaded inside +a <code>\beginpackages...\endpackages</code> block, for example: + +<pre class="example"> \beginpackages + \usepackage[foo,bar]{pack1} + \usepackage{pack2} + \endpackages +</pre> + <p class="noindent">This requirement enables Eplain to execute the “delayed” +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><hr> +<a name="Packages-known-to-work"></a> +Next: <a rel="next" accesskey="n" href="#Packages-known-not-to-work">Packages known not to work</a>, +Previous: <a rel="previous" accesskey="p" href="#Environment-for-loading-packages">Environment for loading packages</a>, +Up: <a rel="up" accesskey="u" href="#Loading-LaTeX-packages">Loading LaTeX packages</a> + +</div> + +<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 +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> + + <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 “picture mode”, 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> + + <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 +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-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 +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. + + <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> + + <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 +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>. +</dl> + +<div class="node"> +<p><hr> +<a name="Packages-known-not-to-work"></a> +Previous: <a rel="previous" accesskey="p" href="#Packages-known-to-work">Packages known to work</a>, +Up: <a rel="up" accesskey="u" href="#Loading-LaTeX-packages">Loading LaTeX packages</a> + +</div> + +<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: + + <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> + + <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> +</dl> + +<!-- This is part of the Eplain manual. Public domain. --> +<div class="node"> +<p><hr> +<a name="Hyperlinks"></a> +Next: <a rel="next" accesskey="n" href="#Arrow-theoretic-diagrams">Arrow theoretic diagrams</a>, +Previous: <a rel="previous" accesskey="p" href="#User-definitions">User definitions</a>, +Up: <a rel="up" accesskey="u" href="#Top">Top</a> + +</div> + +<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 +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 +provided. + +<ul class="menu"> +<li><a accesskey="1" href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a> +<li><a accesskey="2" href="#Explicit-hyperlinks">Explicit hyperlinks</a> +<li><a accesskey="3" href="#Implicit-hyperlinks">Implicit hyperlinks</a> +<li><a accesskey="4" href="#Hyperlink-drivers">Hyperlink drivers</a> +<li><a accesskey="5" href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a> +<li><a accesskey="6" href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a> +</ul> + +<div class="node"> +<p><hr> +<a name="Introduction-to-hyperlinks"></a> +Next: <a rel="next" accesskey="n" href="#Explicit-hyperlinks">Explicit hyperlinks</a>, +Up: <a rel="up" accesskey="u" href="#Hyperlinks">Hyperlinks</a> + +</div> + +<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. +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 +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>. + + <p>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 +<samp><span class="file">.pdf</span></samp> files directly from the TeX source, skipping the +<samp><span class="file">.dvi</span></samp> generation and processing step. + + <p>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</dfn> come +into play. + + <p>In order for Eplain to generate proper commands, Eplain has to know +two things: which engine or <samp><span class="file">.dvi</span></samp> processor you are using, and +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—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>. + + <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>). + + <p>If necessary, you can explicitly specify the driver name: + +<pre class="example"> \enablehyperlinks[pdftex] +</pre> + <p class="noindent">will start producing hyperlinks under the assumption that +you are using pdfTeX. + + <p>Eplain does not produce any hyperlinks until you explicitly enable +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. + +<h4 class="subheading">Concepts and Terminology</h4> + +<p>In general, hyperlinks work as follows. You mark some place in your +document as a hyperlink destination, associating a <dfn>hyperlink +label</dfn> 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 (<a href="#Explicit-hyperlinks">Explicit hyperlinks</a>, and <a href="#Implicit-hyperlinks">Implicit hyperlinks</a>) +describe the macros you can use to define destinations and create +links pointing to those destinations. + + <p>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</dfn>. We will use the terms <dfn>links</dfn> and +<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 +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> +driver provides is the `<samp><span class="samp">xyz</span></samp>' type; when the user follows a link +pointing to an `<samp><span class="samp">xyz</span></samp>' destination, the exact location marked by +that destination is displayed. Another destination type provided by +the <code>pdftex</code> driver is the `<samp><span class="samp">fit</span></samp>' type; when the user follows +a link pointing to a `<samp><span class="samp">fit</span></samp>' destination, the page containing that +destination is zoomed to fit into the window in which the document is +displayed. + + <p>Similarly, drivers support various link types. For example, with the +<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). + + <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 +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 +a document, for a link pointing to a destination in another document). + + <p>See <a href="#Hyperlink-drivers">Hyperlink drivers</a>, for the description of hyperlink types and +options supported by the drivers. See <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a>, for the information on how to set hyperlink options. + +<div class="node"> +<p><hr> +<a name="Explicit-hyperlinks"></a> +Next: <a rel="next" accesskey="n" href="#Implicit-hyperlinks">Implicit hyperlinks</a>, +Previous: <a rel="previous" accesskey="p" href="#Introduction-to-hyperlinks">Introduction to hyperlinks</a>, +Up: <a rel="up" accesskey="u" href="#Hyperlinks">Hyperlinks</a> + +</div> + +<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 +document. The simplest command is <code>\hldest</code>, which marks the +current position in your document as a destination: + +<pre class="example"> \hldest{<var>type</var>}{<var>options</var>}{<var>label</var>} +</pre> + <p class="noindent">Here <var>type</var> is one of the destination types supported by +the hyperlink driver (see <a href="#Hyperlink-drivers">Hyperlink drivers</a>), <var>options</var> is a +comma-separated list of option assignments, and <var>label</var> 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</code> driver, the command + +<pre class="example"> \hldest{xyz}{zoom=2000}{index} +</pre> + <p class="noindent">creates a destination of type `<samp><span class="samp">xyz</span></samp>' (“the current +position”), 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 +intervening material into a link: + +<pre class="example"> \hlstart{<var>type</var>}{<var>options</var>}{<var>label</var>} ... \hlend +</pre> + <p class="noindent">Here <var>type</var>, <var>options</var> and <var>label</var> have the same +meaning as for <code>\hldest</code>. Continuing the previous example, + +<pre class="example"> \hlstart{name}{bstyle=U,bwidth=2}{index} Index\hlend +</pre> + <p class="noindent">typesets the word `Index' as a link with underline border of +width <!-- /@w -->2 <!-- /@w -->PostScript points, pointing to the named destination +<code>index</code> defined in the previous example. (The other options, like +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>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 +<var>options</var> once, so you can save a list of options in a macro and +pass it for the <var>options</var>. For example: + +<pre class="example"> \def\linkopts{bstyle=U,bwidth=2} + \hlstart{name}{\linkopts}{index}Index\hlend +</pre> + <p class="noindent">is functionally equivalent to the previous example. + +<div class="node"> +<p><hr> +<a name="Implicit-hyperlinks"></a> +Next: <a rel="next" accesskey="n" href="#Hyperlink-drivers">Hyperlink drivers</a>, +Previous: <a rel="previous" accesskey="p" href="#Explicit-hyperlinks">Explicit hyperlinks</a>, +Up: <a rel="up" accesskey="u" href="#Hyperlinks">Hyperlinks</a> + +</div> + +<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 +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 +<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 +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. + + <p>See <a href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a>, for information on how to +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> + <p>And here are the destgroups: + +<pre class="display"> bib, li, definexref, xrdef, eq, idx, foot, footback. +</pre> + <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> +</ul> + +<div class="node"> +<p><hr> +<a name="URL-hyperlinks"></a> +Next: <a rel="next" accesskey="n" href="#Citation-hyperlinks">Citation hyperlinks</a>, +Up: <a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlinks</a> + +</div> + +<h4 class="subsection">5.3.1 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 +<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. + + <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>). + +<div class="node"> +<p><hr> +<a name="Citation-hyperlinks"></a> +Next: <a rel="next" accesskey="n" href="#List-hyperlinks">List hyperlinks</a>, +Previous: <a rel="previous" accesskey="p" href="#URL-hyperlinks">URL hyperlinks</a>, +Up: <a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlinks</a> + +</div> + +<h4 class="subsection">5.3.2 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 +(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 +<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. + + <p>Both commands use the citation label as the hyperlink label. + +<div class="node"> +<p><hr> +<a name="List-hyperlinks"></a> +Next: <a rel="next" accesskey="n" href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a>, +Previous: <a rel="previous" accesskey="p" href="#Citation-hyperlinks">Citation hyperlinks</a>, +Up: <a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlinks</a> + +</div> + +<h4 class="subsection">5.3.3 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>), +which defines a destination if you supply the optional argument +(cross-reference label). This label is also used as the hyperlink +label. + +<div class="node"> +<p><hr> +<a name="Cross-reference-hyperlinks"></a> +<a name="Cross_002dreference-hyperlinks"></a> +Next: <a rel="next" accesskey="n" href="#Page-reference-hyperlinks">Page reference hyperlinks</a>, +Previous: <a rel="previous" accesskey="p" href="#List-hyperlinks">List hyperlinks</a>, +Up: <a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlinks</a> + +</div> + +<h4 class="subsection">5.3.4 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 +(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 +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 +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. + + <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 +argument, which is treated the same way as the optional argument to +<code>\refn</code>. In addition, <code>\ref</code> 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 +<a name="index-reftie-507"></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>. + + <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 +does not make the class word part of the link, which is appropriate for +its intended use. + +<div class="node"> +<p><hr> +<a name="Page-reference-hyperlinks"></a> +Next: <a rel="next" accesskey="n" href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a>, +Previous: <a rel="previous" accesskey="p" href="#Cross_002dreference-hyperlinks">Cross-reference hyperlinks</a>, +Up: <a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlinks</a> + +</div> + +<h4 class="subsection">5.3.5 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>). +<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 +<code>\refspace</code>), <code>\xrefpageword</code> and the cross-reference (page +number) into a link, using the cross-reference label as the hyperlink +label. + +<div class="node"> +<p><hr> +<a name="Equation-reference-hyperlinks"></a> +Next: <a rel="next" accesskey="n" href="#Index-hyperlinks">Index hyperlinks</a>, +Previous: <a rel="previous" accesskey="p" href="#Page-reference-hyperlinks">Page reference hyperlinks</a>, +Up: <a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlinks</a> + +</div> + +<h4 class="subsection">5.3.6 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. +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 +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 +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 +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 +label generated for the last empty-labeled equation. + +<div class="node"> +<p><hr> +<a name="Index-hyperlinks"></a> +Next: <a rel="next" accesskey="n" href="#Footnote-hyperlinks">Footnote hyperlinks</a>, +Previous: <a rel="previous" accesskey="p" href="#Equation-reference-hyperlinks">Equation reference hyperlinks</a>, +Up: <a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlinks</a> + +</div> + +<h4 class="subsection">5.3.7 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>, +<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>). + + <p><a name="index-makeindex-545"></a>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 +<a name="index-g_t_002eidx-_0040r_007bfiles_007d-546"></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> + <p class="noindent">where <var>entry</var> is the index entry (converted into the +internal format that MakeIndex understands), <var>cs</var> is the markup +command you specified with the <code>pagemarkup=</code><var>cs</var> optional +argument to the indexing commands (see <a href="#Modifying-index-entries">Modifying index entries</a>), +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 (“encapsulates” 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 +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. + + <p>Eplain provides two approaches to linking page numbers in the index to +locations of index terms in the text. + +<ul class="menu"> +<li><a accesskey="1" href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a> +<li><a accesskey="2" href="#Page-destinations-for-index-terms">Page destinations for index terms</a> +<li><a accesskey="3" href="#Choosing-destination-placement">Choosing destination placement</a> +<li><a accesskey="4" href="#Index-page-list-and-page-range-parsers">Index page list and page range parsers</a> +<li><a accesskey="5" href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a> +</ul> + +<div class="node"> +<p><hr> +<a name="Exact-destinations-for-index-terms"></a> +Next: <a rel="next" accesskey="n" href="#Page-destinations-for-index-terms">Page destinations for index terms</a>, +Up: <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> + +<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 +the <code>\indexentry</code> command. The <code>\indexentry</code> line that Eplain +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 +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 +will now appear as + +<pre class="example"> \hlidx{<var>label</var>}{<var>cs</var>}{<var>pageno</var>} +</pre> + <p class="noindent">The result of this command is +<code>\</code><var>cs</var><code>{</code><var>pageno</var><code>}</code>, wrapped up into a link pointing to +<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 +`<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 +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 +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. +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 +example: + +<pre class="example"> prompt$ ./idxuniq file.idx | makeindex > file.ind +</pre> + <p class="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; <samp><span class="file">idxuniq</span></samp> will not filter out the second entry). + +<div class="node"> +<p><hr> +<a name="Page-destinations-for-index-terms"></a> +Next: <a rel="next" accesskey="n" href="#Choosing-destination-placement">Choosing destination placement</a>, +Previous: <a rel="previous" accesskey="p" href="#Exact-destinations-for-index-terms">Exact destinations for index terms</a>, +Up: <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> + +<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 +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 +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>'. + + <p>With this approach, the <code>\indexentry</code> line which Eplain writes to +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 +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 + +<pre class="example"> \hlidxpage{<var>cs</var>}{<var>pageno</var>} +</pre> + <p>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. + + <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 +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 +because MakeIndex combines two consecutive page numbers in one call to +the page number encapsulator, so <code>\hlidxpage</code> can be passed, e.g., +`<samp><span class="samp">1, 2</span></samp>' for the <var>pageno</var>. In this last case, <code>\hlidxpage</code> +splits the two page numbers, applies <code>\</code><var>cs</var> 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>\</code><var>cs</var>). + + <p>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><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 +with the commands + +<pre class="example"> \setidxpagelistdelimiter{<var>list-delim</var>} + \setidxpagerangedelimiter{<var>page-delim</var>} +</pre> + <p class="noindent">(see <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a>). + +<div class="node"> +<p><hr> +<a name="Choosing-destination-placement"></a> +Next: <a rel="next" accesskey="n" href="#Index-page-list-and-page-range-parsers">Index page list and page range parsers</a>, +Previous: <a rel="previous" accesskey="p" href="#Page-destinations-for-index-terms">Page destinations for index terms</a>, +Up: <a rel="up" accesskey="u" href="#Index-hyperlinks">Index hyperlinks</a> + +</div> + +<h5 class="subsubsection">5.3.7.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 +selected in the +<a name="index-enablehyperlinks-568"></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 +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>. + + <p>For example: + +<pre class="example"> \enablehyperlinks[idxexact] +</pre> + <p class="noindent">selects the first approach (“exact index links”). + +<div class="node"> +<p><hr> +<a name="Index-page-list-and-page-range-parsers"></a> +Next: <a rel="next" accesskey="n" href="#Hyperlinks-in-see-and-see-also-entries">Hyperlinks in see and see also entries</a>, +Previous: <a rel="previous" accesskey="p" href="#Choosing-destination-placement">Choosing destination placement</a>, +Up: <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> + +<p>The macros that Eplain uses to parse page lists and page ranges, +<code>\idxparselist</code> and <code>\idxparserange</code>, can sometimes be useful +when defining page number encapsulators. See <a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a>, for the description of these commands and an example of their +usage. + +<div class="node"> +<p><hr> +<a name="Hyperlinks-in-see-and-see-also-entries"></a> +Previous: <a rel="previous" accesskey="p" href="#Index-page-list-and-page-range-parsers">Index page list and page range parsers</a>, +Up: <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> + +<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 “see” and “see +also” 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, +this can be implemented with <code>\hldest</code> and <code>\hlstart</code> +(see <a href="#Explicit-hyperlinks">Explicit hyperlinks</a>); for example: + +<pre class="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} +</pre> + <div class="node"> +<p><hr> +<a name="Footnote-hyperlinks"></a> +Next: <a rel="next" accesskey="n" href="#Contents-hyperlinks">Contents hyperlinks</a>, +Previous: <a rel="previous" accesskey="p" href="#Index-hyperlinks">Index hyperlinks</a>, +Up: <a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlinks</a> + +</div> + +<h4 class="subsection">5.3.8 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 +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 +`<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 +footnote. + +<div class="node"> +<p><hr> +<a name="Contents-hyperlinks"></a> +Previous: <a rel="previous" accesskey="p" href="#Footnote-hyperlinks">Footnote hyperlinks</a>, +Up: <a rel="up" accesskey="u" href="#Implicit-hyperlinks">Implicit hyperlinks</a> + +</div> + +<h4 class="subsection">5.3.9 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 +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. + +<div class="node"> +<p><hr> +<a name="Hyperlink-drivers"></a> +Next: <a rel="next" accesskey="n" href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a>, +Previous: <a rel="previous" accesskey="p" href="#Implicit-hyperlinks">Implicit hyperlinks</a>, +Up: <a rel="up" accesskey="u" href="#Hyperlinks">Hyperlinks</a> + +</div> + +<h3 class="section">5.4 Hyperlink drivers</h3> + +<p>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. + + <p>Some of the descriptions below come from <cite>Portable Document Format +Reference Manual Version <!-- /@w -->1.3</cite>, March <!-- /@w -->11, 1999. + +<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> +</ul> + +<div class="node"> +<p><hr> +<a name="Options-supported-by-all-drivers"></a> +Next: <a rel="next" accesskey="n" href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a>, +Up: <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 +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> + <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 +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 +<code>1.7\normalbaselineskip</code>) makes the setting appropriate for +different point sizes, in case your document uses more than one. + + <p>The default setting is <code>\normalbaselineskip</code>. 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</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. + + <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> + <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 +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> +and <var>color</var> are the definitions of the <code>colormodel</code> and +<code>color</code> options, respectively. However, if <var>colormodel</var> is +empty, the optional argument to <code>\color</code> is omitted; and if +<var>color</var> is empty, the <code>\color</code> command is omitted altogether. +The default setting is <var>colormodel</var><code>=cmyk</code> and +<var>color</var><code>=0.28,1,1,0.35</code>. + + <p>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</code>, 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</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 + \hlopts{colormodel=gray,color=.4} + </pre> + </dl> + +<div class="node"> +<p><hr> +<a name="Hyperlink-drivers-pdftex-and-dvipdfm"></a> +Next: <a rel="next" accesskey="n" href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a>, +Previous: <a rel="previous" accesskey="p" href="#Options-supported-by-all-drivers">Options supported by all drivers</a>, +Up: <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> + +<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 +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. + +<ul class="menu"> +<li><a accesskey="1" href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a> +<li><a accesskey="2" href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a> +<li><a accesskey="3" href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a> +<li><a accesskey="4" href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a> +</ul> + +<div class="node"> +<p><hr> +<a name="Destination-types-for-pdftex-and-dvipdfm"></a> +Next: <a rel="next" accesskey="n" href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a>, +Up: <a rel="up" accesskey="u" href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a> + +</div> + +<h5 class="subsubsection">5.4.2.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> + <dl> +<dt><code>xyz</code><dd><a name="index-xyz-_0040r_007b_0028destination-type_0029_007d-624"></a>“Current position”. 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 +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 +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. + + <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. + + <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 +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. + + <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 +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. + + <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. + + <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 +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. + + <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 +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 +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 <!-- /@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> + <p>Example for <code>dvipdfm</code>: + + <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 +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>—you can just call the raw command. + + <p>Example for <code>pdftex</code>: + + <pre class="example"> \makeatletter + \def\mydest{\pdfdest name{\@hllabel} xyz} + \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]}} + \hldesttype{raw} + \hldestopts{cmd=mydest} + \resetatcatcode + </pre> + </dl> + +<div class="node"> +<p><hr> +<a name="Destination-options-for-pdftex-and-dvipdfm"></a> +Next: <a rel="next" accesskey="n" href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a>, +Previous: <a rel="previous" accesskey="p" href="#Destination-types-for-pdftex-and-dvipdfm">Destination types for pdftex and dvipdfm</a>, +Up: <a rel="up" accesskey="u" href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a> + +</div> + +<h5 class="subsubsection">5.4.2.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 +<code>dvipdfm</code> differ in the way the fit rectangle is specified +(relative coordinates for <code>pdftex</code>, absolute coordinates for +<code>dvipdfm</code>). + +<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 +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. + + <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). +Zero or empty means leave magnification unchanged, which is the +default. + + <p>Example: <code>\hldest{xyz}{zoom=2000}{dest123}</code> +</dl> + +<h5 class="subsubheading"><code>pdftex</code>-specific destination options</h5> + +<p>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). + + <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. + + <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>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. + + <p>Example: + + <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 <!-- /@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 +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 +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 +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 +destination types. + + <p>Example: + + <pre class="example"> \hldest{fitr}{left=72,bottom=72,right=720,top=360}{dest123} + </pre> + </dl> + +<div class="node"> +<p><hr> +<a name="Link-types-for-pdftex-and-dvipdfm"></a> +Next: <a rel="next" accesskey="n" href="#Link-options-for-pdftex-and-dvipdfm">Link options for pdftex and dvipdfm</a>, +Previous: <a rel="previous" accesskey="p" href="#Destination-options-for-pdftex-and-dvipdfm">Destination options for pdftex and dvipdfm</a>, +Up: <a rel="up" accesskey="u" href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a> + +</div> + +<h5 class="subsubsection">5.4.2.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> +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 +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. + +<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 “named destination”. The label is the destination name. +All destinations created with <code>\hldest</code> are named destinations. +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 <!-- /@w -->1). +Page fitting is specified by the +<a name="index-pagefit-_0040r_007b_0028hyperlink-option_0029_007d-706"></a><code>pagefit</code> option. + + <p>Example: + + <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 +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 +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 +from <!-- /@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 +opened in the same window or in a new window. + + <p>Example: + <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 +<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>—you can just call the raw command. + + <p>Example for <code>pdftex</code>: + + <pre class="example"> % Redirect all \url links to the first page + \def\mycmd{\pdfstartlink goto page 1 {/Fit}} + \hltype[url]{raw} + \hlopts[url]{cmd=mycmd} + </pre> + <p>Example for <code>dvipdfm</code>: + + <pre class="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} + </pre> + </dl> + +<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 “numbered destination”. The label is the destination +number. + + <p>Example: <code>\hlstart{num}{}{123}Link to 123\hlend</code> +</dl> + +<div class="node"> +<p><hr> +<a name="Link-options-for-pdftex-and-dvipdfm"></a> +Previous: <a rel="previous" accesskey="p" href="#Link-types-for-pdftex-and-dvipdfm">Link types for pdftex and dvipdfm</a>, +Up: <a rel="up" accesskey="u" href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a> + +</div> + +<h5 class="subsubsection">5.4.2.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 +<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, +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 +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: + + <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). + + <br><dt><code>B</code><dd>The border is drawn in a beveled style. + + <br><dt><code>I</code><dd>The border is drawn in an inset style. + + <br><dt><code>U</code><dd>The border is drawn as a line on the bottom of the link rectangle. +</dl> + + <p>The default is `<samp><span class="samp">S</span></samp>'. + + <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 <!-- /@w -->points per inch). The default is <!-- /@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 +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. + + <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. + + <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. + + <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: + + <dl> +<dt><code>I</code><dd>The rectangle specified by the bounding box of the link is inverted. + + <br><dt><code>N</code><dd>No highlighting is done. + + <br><dt><code>O</code><dd>The border of the link is inverted. + + <br><dt><code>P</code><dd>The region underneath the bounding box of the link is drawn inset into +the page. +</dl> + + <p>The default is `<samp><span class="samp">I</span></samp>'. + + <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 +opened in the same window or in a new window. The settings are: + + <dl> +<dt><code>0</code><dd>Open in the same window. +<br><dt><span class="roman">non-</span><code>0</code><dd>Open in a new window. +<br><dt><span class="roman">empty</span><dd>Behavior according to the viewer settings. +</dl> + + <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. + + <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 +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. + + <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. +</dl> + +<h5 class="subsubheading"><code>pdftex</code>-specific link options</h5> + +<p>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). + + <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. + + <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>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. + + <p>Example: + + <pre class="example"> \hlstart{name}{width=5in,height=20pc,depth=0pt}{dest123} + Link\hlend + </pre> + </dl> + +<div class="node"> +<p><hr> +<a name="Hyperlink-driver-nolinks"></a> +Previous: <a rel="previous" accesskey="p" href="#Hyperlink-drivers-pdftex-and-dvipdfm">Hyperlink drivers pdftex and dvipdfm</a>, +Up: <a rel="up" accesskey="u" href="#Hyperlink-drivers">Hyperlink drivers</a> + +</div> + +<h4 class="subsection">5.4.3 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>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>). + + <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 +to prevent a cross-referencing macro from generating a link at a certain +spot in your document.) + + <p>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</code>. This ensures that spacing and page-breaking are the +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 +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. + + <p>In contrast, the <code>nolinks</code> 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 +<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.) + + <p>Another reason for using <code>nolinks</code> is that in horizontal mode +<code>\hldest</code> places destinations inside boxes of zero width, height, +and depth. When you say <code>\hldestoff</code>, <code>\hldest</code> 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</code> driver helps by +defining <code>\hldest</code> to produce the empty boxes. + +<div class="node"> +<p><hr> +<a name="Setting-hyperlink-types-and-options"></a> +Next: <a rel="next" accesskey="n" href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a>, +Previous: <a rel="previous" accesskey="p" href="#Hyperlink-drivers">Hyperlink drivers</a>, +Up: <a rel="up" accesskey="u" href="#Hyperlinks">Hyperlinks</a> + +</div> + +<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 +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 +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 +setting the “group” types and options. When not set, the defaults are +used. + + <p>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...\endgroup</code> block; when the group ends, the +previous settings are restored. + +<ul class="menu"> +<li><a accesskey="1" href="#Setting-default-types-and-options">Setting default types and options</a> +<li><a accesskey="2" href="#Setting-group-types">Setting group types</a> +<li><a accesskey="3" href="#Setting-group-options">Setting group options</a> +</ul> + +<div class="node"> +<p><hr> +<a name="Setting-default-types-and-options"></a> +Next: <a rel="next" accesskey="n" href="#Setting-group-types">Setting group types</a>, +Up: <a rel="up" accesskey="u" href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a> + +</div> + +<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 +following commands: + +<pre class="example"> \hltype{<var>type</var>} + \hldesttype{<var>type</var>} +</pre> + <p class="noindent">where <var>type</var> is one of the +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: + +<pre class="example"> \hlopts{<var>options</var>} + \hldestopts{<var>options</var>} +</pre> + <p class="noindent">where <var>options</var> is a comma-separated list of option +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><hr> +<a name="Setting-group-types"></a> +Next: <a rel="next" accesskey="n" href="#Setting-group-options">Setting group options</a>, +Previous: <a rel="previous" accesskey="p" href="#Setting-default-types-and-options">Setting default types and options</a>, +Up: <a rel="up" accesskey="u" href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a> + +</div> + +<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 + +<pre class="example"> \hltype[<var>groups</var>]{<var>type</var>} + \hldesttype[<var>groups</var>]{<var>type</var>} +</pre> + <p class="noindent">where <var>groups</var> is a comma-separated list of groups, +<code>\hltype</code> and <code>\hldesttype</code> set the type for each group from +<var>groups</var> to <var>type</var>. 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><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 “groups” 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: + +<pre class="example"> \hltype[eq,]{<var>type</var>} +</pre> + <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 +defined groups. For example, the command + +<pre class="example"> \hldesttype[*,]{<var>type</var>} +</pre> + <p class="noindent">sets the destination type to <var>type</var> for each group, +as well as the default destination type. + +<div class="node"> +<p><hr> +<a name="Setting-group-options"></a> +Previous: <a rel="previous" accesskey="p" href="#Setting-group-types">Setting group types</a>, +Up: <a rel="up" accesskey="u" href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a> + +</div> + +<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 +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 +<code>\hlopts</code> and <code>\hldestopts</code> commands with an optional +argument: + +<pre class="example"> \hlopts[<var>groups</var>]{<var>options</var>} + \hldestopts[<var>groups</var>]{<var>options</var>} + \hlopts![<var>groups</var>]{<var>options</var>} + \hldestopts![<var>groups</var>]{<var>options</var>} +</pre> + <p class="noindent">where <var>groups</var> is a comma-separated list of groups and +<var>options</var> is a comma-separated list of option assignments. The +two special “groups”, 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 +<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 +<var>groups</var> is discarded and the new list is set to <var>options</var>. + + <p>The “overriding” nature of the `<samp><span class="samp">!</span></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><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 +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 +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: + +<pre class="example"> $$\hldestopts[eq]{raise=2.5\normalbaselineskip} + ... + $$ +</pre> + <p class="noindent">The display commands (`<samp><span class="samp">$$</span></samp>') implicitly put the entire +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—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, +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: + +<pre class="example"> raise=1.7\normalbaselineskip +</pre> + <p class="noindent">This setting usually accommodates the large operators, which often +appear in displayed math. + +<div class="node"> +<p><hr> +<a name="Turning-hyperlinks-on%2foff"></a> +<a name="Turning-hyperlinks-on_002foff"></a> +Previous: <a rel="previous" accesskey="p" href="#Setting-hyperlink-types-and-options">Setting hyperlink types and options</a>, +Up: <a rel="up" accesskey="u" href="#Hyperlinks">Hyperlinks</a> + +</div> + +<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 +the low-level commands, or for each group individually. + + <p>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...\endgroup</code> block; when the group ends, the +previous settings are restored. + +<ul class="menu"> +<li><a accesskey="1" href="#Turning-low_002dlevel-commands-on_002foff">Turning low-level commands on/off</a> +<li><a accesskey="2" href="#Turning-hyperlinks-on_002foff-for-a-group">Turning hyperlinks on/off for a group</a> +</ul> + +<div class="node"> +<p><hr> +<a name="Turning-low-level-commands-on%2foff"></a> +<a name="Turning-low_002dlevel-commands-on_002foff"></a> +Next: <a rel="next" accesskey="n" href="#Turning-hyperlinks-on_002foff-for-a-group">Turning hyperlinks on/off for a group</a>, +Up: <a rel="up" accesskey="u" href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a> + +</div> + +<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 +<code>\hldest</code> can be turned on/off with the following commands: + +<pre class="example"> \hldeston + \hldestoff + \hlon + \hloff +</pre> + <p class="noindent">See <a href="#Hyperlink-driver-nolinks">Hyperlink driver nolinks</a>, for the implications of using +these commands to disable hyperlinks for the entire document. + +<div class="node"> +<p><hr> +<a name="Turning-hyperlinks-on%2foff-for-a-group"></a> +<a name="Turning-hyperlinks-on_002foff-for-a-group"></a> +Previous: <a rel="previous" accesskey="p" href="#Turning-low_002dlevel-commands-on_002foff">Turning low-level commands on/off</a>, +Up: <a rel="up" accesskey="u" href="#Turning-hyperlinks-on_002foff">Turning hyperlinks on/off</a> + +</div> + +<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, +you can give a list of the groups as an optional argument to these +commands: + +<pre class="example"> \hldeston[<var>groups</var>] + \hldestoff[<var>groups</var>] + \hlon[<var>groups</var>] + \hloff[<var>groups</var>] +</pre> + <p class="noindent">where <var>groups</var> is the list of linkgroups/destgroups. This +list can contain two special groups. The empty group switches the +low-level commands (see <a href="#Turning-low_002dlevel-commands-on_002foff">Turning low-level commands on/off</a>), and the +star (`<samp><span class="samp">*</span></samp>') group operates on all defined groups. + + <p>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: + +<pre class="example"> \hloff + \hloff[eq] + \hlon +</pre> + <p class="noindent">all links are on except for the `eq' linkgroup. + +<!-- arrow.texi - documentation for Eplain's commutative diagrams. --> +<!-- Copyright (C) 1991, 1992 Steven Smith. --> +<!-- This is part of the Eplain manual. --> +<!-- This file is free software; you can redistribute it and/or modify --> +<!-- it under the terms of the GNU General Public License as published by --> +<!-- the Free Software Foundation; either version 2, or (at your option) --> +<!-- any later version. --> +<!-- This file is distributed in the hope that it will be useful, --> +<!-- but WITHOUT ANY WARRANTY; without even the implied warranty of --> +<!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --> +<!-- GNU General Public License for more details. --> +<!-- You should have received a copy of the GNU General Public License --> +<!-- along with this file; if not, write to the Free Software --> +<!-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA --> +<!-- 02110-1301, USA. --> +<!-- \input texinfo --> +<!-- setfilename arrow.info --> +<!-- settitle Arrow Theoretic Diagrams --> +<!-- Input arrow macros without altering texinfo's \catcodes. --> +<!-- Use the arrow macros in an `@iftex @tex ... @end iftex' environment. --> +<div class="node"> +<p><hr> +<a name="Arrow-theoretic-diagrams"></a> +Next: <a rel="next" accesskey="n" href="#Programming-definitions">Programming definitions</a>, +Previous: <a rel="previous" accesskey="p" href="#Hyperlinks">Hyperlinks</a>, +Up: <a rel="up" accesskey="u" href="#Top">Top</a> + +</div> + +<h2 class="chapter">6 Arrow theoretic diagrams</h2> + +<p>This chapter describes definitions for producing commutative diagrams. + + <p>Steven Smith wrote this documentation (and the macros). + +<ul class="menu"> +<li><a accesskey="1" href="#Slanted-lines-and-vectors">Slanted lines and vectors</a> +<li><a accesskey="2" href="#Commutative-diagrams">Commutative diagrams</a> +</ul> + +<div class="node"> +<p><hr> +<a name="Slanted-lines-and-vectors"></a> +Next: <a rel="next" accesskey="n" href="#Commutative-diagrams">Commutative diagrams</a>, +Up: <a rel="up" accesskey="u" href="#Arrow-theoretic-diagrams">Arrow theoretic diagrams</a> + +</div> + +<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. +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 +60 pt. + + <p>Note that if an <code>\hbox</code> is placed around <code>\drawline</code> or +<code>\drawvector</code>, then the width of the <code>\hbox</code> 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}</code>, which has zero width. If the specified +direction lies in the 1st or 2d quadrant (e.g., <code>(1,1)</code> or +<code>(-2,3)</code>), then the <code>\hbox</code> will have positive height and zero +depth. Conversely, if the specified direction lies in the 3d or 4th +quadrant (e.g., <code>(-1,-1)</code> or <code>(2,-3)</code>), then the <code>\hbox</code> +will have positive depth and zero height. + + <p>There are a finite number of directions that can be specified. For +<code>\drawline</code>, the absolute value of each integer defining the +direction must be less than or equal to six, i.e., <code>(7,-1)</code> is +incorrect, but <code>(6,-1)</code> is acceptable. For <code>\drawvector</code>, 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)</code> instead of +<code>(4,2)</code>. Also, specify <code>(1,0)</code> instead of, say, <code>(3,0)</code> +for horizontal lines and likewise for vertical lines. + + <p>Finally, these macros depend upon the LaTeX font <code>line10</code>. 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. + +<div class="node"> +<p><hr> +<a name="Commutative-diagrams"></a> +Previous: <a rel="previous" accesskey="p" href="#Slanted-lines-and-vectors">Slanted lines and vectors</a>, +Up: <a rel="up" accesskey="u" href="#Arrow-theoretic-diagrams">Arrow theoretic diagrams</a> + +</div> + +<h3 class="section">6.2 Commutative diagrams</h3> + +<p><a name="index-commutative-diagrams-877"></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 +facilitate the construction of commutative diagrams. All macros +described in this section must be used in math mode. + +<ul class="menu"> +<li><a accesskey="1" href="#Arrows-and-morphisms">Arrows and morphisms</a> +<li><a accesskey="2" href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a> +<li><a accesskey="3" href="#Commutative-diagram-parameters">Commutative diagram parameters</a> +</ul> + +<div class="node"> +<p><hr> +<a name="Arrows-and-morphisms"></a> +Next: <a rel="next" accesskey="n" href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a>, +Up: <a rel="up" accesskey="u" href="#Commutative-diagrams">Commutative diagrams</a> + +</div> + +<h4 class="subsection">6.2.1 Arrows and morphisms</h4> + +<p><a name="index-arrows-878"></a><a name="index-morphisms-879"></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 +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 +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>'. +<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 +<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>. + + <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), +<code>\varrowlength</code>, +<a name="index-varrowlength-889"></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, +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 +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 +on parameters that follows below. + + <p>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</code>: + + <dl> +<dt><code>\mapright</code><dd><a name="index-mapright-902"></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>\hline</code><dd><a name="index-hline-904"></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>\bimapleft</code><dd><a name="index-bimapleft-906"></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>\adjmapleft</code><dd><a name="index-adjmapleft-908"></a><code>$X\adjmapleft Y$</code> + + <br><dt><code>\bihline</code><dd><a name="index-bihline-909"></a><code>$X\bihline Y$</code> +</dl> + + <p>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</code>: + + <dl> +<dt><code>\mapdown</code><dd><a name="index-mapdown-910"></a>(a down arrow) + + <br><dt><code>\mapup</code><dd><a name="index-mapup-911"></a>(an up arrow) + + <br><dt><code>\vline</code><dd><a name="index-vline-912"></a>(vertical line) + + <br><dt><code>\bimapdown</code><dd><a name="index-bimapdown-913"></a>(two down arrows) + + <br><dt><code>\bimapup</code><dd><a name="index-bimapup-914"></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>\adjmapup</code><dd><a name="index-adjmapup-916"></a>(two adjoint arrows; up then down) + + <br><dt><code>\bivline</code><dd><a name="index-bivline-917"></a>(two vertical lines) +</dl> + + <p>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</code>: + + <dl> +<dt><code>\arrow</code><dd><a name="index-arrow-918"></a>(a slanted arrow) + + <br><dt><code>\sline</code><dd><a name="index-sline-919"></a>(a slanted line) + + <br><dt><code>\biarrow</code><dd><a name="index-biarrow-920"></a>(two straight arrows) + + <br><dt><code>\adjarrow</code><dd><a name="index-adjarrow-921"></a>(two adjoint arrows) + + <br><dt><code>\bisline</code><dd><a name="index-bisline-922"></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, +override <code>\channelwidth</code> by controlling the horizontal and vertical +shifting from the first arrow to the second. + + <p>There are no adornments on these arrows to distinguish inclusions from +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> +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> + +<div class="node"> +<p><hr> +<a name="Construction-of-commutative-diagrams"></a> +Next: <a rel="next" accesskey="n" href="#Commutative-diagram-parameters">Commutative diagram parameters</a>, +Previous: <a rel="previous" accesskey="p" href="#Arrows-and-morphisms">Arrows and morphisms</a>, +Up: <a rel="up" accesskey="u" href="#Commutative-diagrams">Commutative diagrams</a> + +</div> + +<h4 class="subsection">6.2.2 Construction of commutative diagrams</h4> + +<p>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 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 +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 + +<pre class="example"> $$\commdiag{Y&\mapright^f&E\cr \mapdown&\arrow(3,2)\lft{f_t}&\mapdown\cr + Y\times I&\mapright^{\bar f_t}&X}$$ +</pre> + <p>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</cite>) +<a name="index-Warner_002c-Frank-W_002e-931"></a><a name="index-universal-mapping-property-932"></a>is produced with the code + +<pre class="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}$$ +</pre> + <p>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</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 + +<pre class="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}$$ +</pre> + <p>Other commutative diagram examples appear in the file +<code>commdiags.tex</code>, which is distributed with this package. + + <p>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 +<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 +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 +parameters below.) + + <p>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</code> primitive to insert a <code>\vskip</code> immediately above or +below the offending line, e.g., +`<samp><span class="samp">$$\commdiag{\noalign{\vskip6pt}X&\mapright^\int&Y\cr ...}</span></samp>'. + + <p>The macro <code>\commdiag</code> 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</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 +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 +diagram +<a name="index-cube-943"></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 + \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}$$ +</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 +<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 +desired amount. Hence, the <code>\gridcommdiag</code> method, albeit more +powerful, is less automatic than the simpler <code>\commdiag</code> method. +Furthermore, the ad hoc macro <code>\cross</code> 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</code> and +<code>\vmorphposn</code>. + + <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 +of 1/2, and is set with the code + +<pre class="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}$$ +</pre> + <p>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>, <code>\r</code>, and <code>\l</code>. Note also that +superscripts were used to adjust the position of the vertices +Many diagrams may be typeset with the predefined macros that appear +here; however, ingenuity is often required to handle special cases. + +<div class="node"> +<p><hr> +<a name="Commutative-diagram-parameters"></a> +Previous: <a rel="previous" accesskey="p" href="#Construction-of-commutative-diagrams">Construction of commutative diagrams</a>, +Up: <a rel="up" accesskey="u" href="#Commutative-diagrams">Commutative diagrams</a> + +</div> + +<h4 class="subsection">6.2.3 Commutative diagram parameters</h4> + +<p>The following is a list describing the parameters used in the +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. + + <br><dt><code>\varrowlength</code><dd><a name="index-varrowlength-950"></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>\hmorphposn</code><dd><a name="index-hmorphposn-952"></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. + + <br><dt><code>\vmorphposn</code><dd><a name="index-vmorphposn-957"></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. + + <br><dt><code>\morphdist</code><dd><a name="index-morphdist-962"></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>\hchannel, \vchannel</code><dd><a name="index-hchannel-964"></a><a name="index-vchannel-965"></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 +\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 +<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 +<code>\gridcommdiag</code>. + + </dl> + +<!-- bye --> +<!-- This is part of the Eplain manual. Public domain. --> +<div class="node"> +<p><hr> +<a name="Programming-definitions"></a> +Next: <a rel="next" accesskey="n" href="#Macro-index">Macro index</a>, +Previous: <a rel="previous" accesskey="p" href="#Arrow-theoretic-diagrams">Arrow theoretic diagrams</a>, +Up: <a rel="up" accesskey="u" href="#Top">Top</a> + +</div> + +<h2 class="chapter">7 Programming definitions</h2> + +<p>The definitions in this section are only likely to be useful when you +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="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. +<li><a accesskey="7" href="#Obeying-spaces">Obeying spaces</a>: Making whitespace count anywhere. +<li><a accesskey="8" href="#Writing-out-numbers">Writing out numbers</a>: Making `1' into `one'. +<li><a accesskey="9" href="#Mode_002dspecific-penalties">Mode-specific penalties</a> +<li><a href="#Auxiliary-files">Auxiliary files</a>: Testing for their existence. +<li><a href="#User_002ddefined-environments">User-defined environments</a>: User-defined environments. +<li><a href="#Page-list-and-page-range-parsers">Page list and page range parsers</a> +</ul> + +<div class="node"> +<p><hr> +<a name="Category-codes"></a> +Next: <a rel="next" accesskey="n" href="#Allocation-macros">Allocation macros</a>, +Up: <a rel="up" accesskey="u" href="#Programming-definitions">Programming definitions</a> + +</div> + +<h3 class="section">7.1 Category codes</h3> + +<p><a name="index-category-codes-969"></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 “intentionally kept the category codes numeric”, 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> +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 +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 +</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 +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 +defines +<code>\resetatcatcode</code> +<a name="index-resetatcatcode-980"></a>to restore the category code to whatever it was before the call to +<code>\makeatletter</code>. For example: + +<pre class="example"> \makeatletter + \def\@hidden@macro{This macro cannot normally be + called / redefined by the user} + \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 +<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 +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: + +<pre class="example"> \def\mymacro{... \letreturn\myreturn ... } + \mymacro hello + there +</pre> + <p class="noindent">The end-of-line between `<samp><span class="samp">hello</span></samp>' and `<samp><span class="samp">there</span></samp>' causes +<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 “special” into “other” +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 +<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. + +<div class="node"> +<p><hr> +<a name="Allocation-macros"></a> +Next: <a rel="next" accesskey="n" href="#Iteration">Iteration</a>, +Previous: <a rel="previous" accesskey="p" href="#Category-codes">Category codes</a>, +Up: <a rel="up" accesskey="u" href="#Programming-definitions">Programming definitions</a> + +</div> + +<h3 class="section">7.2 Allocation macros</h3> + +<p><a name="index-allocation-macros-989"></a><a name="index-register-allocation-990"></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 “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</code>, +<a name="index-outer-992"></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 +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><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> +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> +<pre class="example"> \innerdef <var>\innername</var> {<var>outername</var>} +</pre> + <p>The first argument (<var>\innername</var>) to <code>\innerdef</code> is the +control sequence that you want to define. Any previous definition of +<var>\innername</var> is replaced. The second argument +(<var>outername</var>) is the <em>characters</em> in the name of the outer +control sequence. (You can't use the actual control sequence name, +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 +example, these two calls are equivalent: + +<pre class="example"> \innerdef\innerproclaim{proclaim} + \innerinnerdef{proclaim} +</pre> + <div class="node"> +<p><hr> +<a name="Iteration"></a> +Next: <a rel="next" accesskey="n" href="#Macro-arguments">Macro arguments</a>, +Previous: <a rel="previous" accesskey="p" href="#Allocation-macros">Allocation macros</a>, +Up: <a rel="up" accesskey="u" href="#Programming-definitions">Programming definitions</a> + +</div> + +<h3 class="section">7.3 Iteration</h3> + +<p><a name="index-iteration-1007"></a><a name="index-for-loops-1008"></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: + +<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 +before or after the commas in the list, or after the <code>:=</code>, are +<em>not</em> ignored. + + <p><code>\for</code> expands the iterated values fully (with <code>\edef</code>), so +this is equivalent to the above: + +<pre class="example"> \def\namelist{karl,kathy}% + \for\name:=\namelist\do ... +</pre> + <div class="node"> +<p><hr> +<a name="Macro-arguments"></a> +Next: <a rel="next" accesskey="n" href="#Converting-to-characters">Converting to characters</a>, +Previous: <a rel="previous" accesskey="p" href="#Iteration">Iteration</a>, +Up: <a rel="up" accesskey="u" href="#Programming-definitions">Programming definitions</a> + +</div> + +<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 +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, +respectively. + + <p>For example, if you want to produce a “short” table of +<a name="index-table-of-contents_002c-short-1015"></a>contents—one that includes only chapters, say—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: + +<pre class="example"> \let\tocchapterentry = \shorttocchapter + \let\tocsectionentry = \gobbletwo + \let\tocsubsectionentry = \gobbletwo + \readtocfile +</pre> + <p class="noindent">(Of course, this assumes you only have chapters, sections, and +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, +<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 +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>.) + + <p>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</code>. + + <p>You test for an optional argument by using <code>\@getoptionalarg</code>. +<!-- 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</code> expands to it; otherwise, +<code>\@optionalarg</code> is <code>\empty</code>. You must therefore have the +category code of <kbd>@</kbd> set to 11 (letter). Here is an example: + +<pre class="example"> \catcode`@=\letter + \def\cmd{\@getoptionalarg\finishcmd} + \def\finishcmd{% + \ifx\@optionalarg\empty + % <span class="roman">No optional argument present.</span> + \else + % <span class="roman">One was present.</span> + \fi + } +</pre> + <p>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. + +<div class="node"> +<p><hr> +<a name="Converting-to-characters"></a> +Next: <a rel="next" accesskey="n" href="#Expansion">Expansion</a>, +Previous: <a rel="previous" accesskey="p" href="#Macro-arguments">Macro arguments</a>, +Up: <a rel="up" accesskey="u" href="#Programming-definitions">Programming definitions</a> + +</div> + +<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. +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 +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 +of any sequence of character tokens, regardless of category code. +Labels can therefore include any characters except for `<samp><span class="samp">\</span></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 +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>; <code>#2</code> is the title that the user +has given. + +<pre class="example"> ... + \def\temp{#2}% + ... + \write\tocfile{% + ... + \sanitize\temp + ... + }% +</pre> + <div class="node"> +<p><hr> +<a name="Expansion"></a> +Next: <a rel="next" accesskey="n" href="#Obeying-spaces">Obeying spaces</a>, +Previous: <a rel="previous" accesskey="p" href="#Converting-to-characters">Converting to characters</a>, +Up: <a rel="up" accesskey="u" href="#Programming-definitions">Programming definitions</a> + +</div> + +<h3 class="section">7.6 Expansion</h3> + +<p>This section describes some miscellanous macros for expansion, etc. + +<ul class="menu"> +<li><a accesskey="1" href="#g_t_005ccsn-and-_005cece">\csn and \ece</a>: Abbreviations for \csname expansions. +<li><a accesskey="2" href="#g_t_005cedefappend">\edefappend</a> +<li><a accesskey="3" href="#Hooks">Hooks</a>: Manipulating and executing named actions. +<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> +</ul> + +<div class="node"> +<p><hr> +<a name="%5ccsn-and-%5cece"></a> +<a name="g_t_005ccsn-and-_005cece"></a> +Next: <a rel="next" accesskey="n" href="#g_t_005cedefappend">\edefappend</a>, +Up: <a rel="up" accesskey="u" href="#Expansion">Expansion</a> + +</div> + +<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> +<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 + +<pre class="example"> \expandafter <var>token</var> \csname <var>name</var> \endcsname +</pre> + <p class="noindent">For example, + +<pre class="example"> \def\fontabbrevdef#1#2{\ece\def{@#1font}{#2}} + \fontabbrevdef{normal}{ptmr} +</pre> + <p class="noindent">defines a control sequence <code>\@normalfont</code> to expand to +<code>ptmr</code>. + +<div class="node"> +<p><hr> +<a name="%5cedefappend"></a> +<a name="g_t_005cedefappend"></a> +Next: <a rel="next" accesskey="n" href="#Hooks">Hooks</a>, +Previous: <a rel="previous" accesskey="p" href="#g_t_005ccsn-and-_005cece">\csn and \ece</a>, +Up: <a rel="up" accesskey="u" href="#Expansion">Expansion</a> + +</div> + +<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 +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). + + <p>For example: + +<pre class="example"> \def\foo{abc} + \def\bar{xyz} + \edefappend\foo{\bar karl} +</pre> + <p class="noindent">results in <code>\foo</code> being defined as `<samp><span class="samp">abcxyzkarl</span></samp>'. + +<div class="node"> +<p><hr> +<a name="Hooks"></a> +Next: <a rel="next" accesskey="n" href="#Properties">Properties</a>, +Previous: <a rel="previous" accesskey="p" href="#g_t_005cedefappend">\edefappend</a>, +Up: <a rel="up" accesskey="u" href="#Expansion">Expansion</a> + +</div> + +<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 +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 ...</code> token lists are all +examples of hooks. + + <p>Eplain provides several macros for adding actions to hooks. They all +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 +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 +above, but first it adds + + <pre class="example"> \global\let <var>\cs</var> \relax + </pre> + <p class="noindent">to the definition of <var>\cs</var>. (This implies <var>\cs</var> must +be a true expandable macro, not a control sequence <code>\let</code> to a +primitive or some other such thing.) Thus, <var>\cs</var> is expanded the +next time the hook <var>name</var> is run, but it will disappear after that. + + <p>The <code>\global</code> is useful because <code>\hookactiononce</code> 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. +</dl> + + <p><a name="index-hookrun-1029"></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. + + <p>Here is a skeleton of general <code>\begin</code> and <code>\end</code> macros that +run hooks, and a couple of calls to define actions. The use of +<code>\hookprepend</code> for the begin action and <code>\hookappend</code> 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</code> and +<code>\hookappend</code> also). + +<pre class="example"> \def\begin#1{ ... \hookrun{begin} ... } + \def\end#1{ ... \hookrun{end} ... } + \hookprepend{begin}\start_underline + \hookappend{end}\finish_underline +</pre> + <div class="node"> +<p><hr> +<a name="Properties"></a> +Next: <a rel="next" accesskey="n" href="#g_t_005cexpandonce">\expandonce</a>, +Previous: <a rel="previous" accesskey="p" href="#Hooks">Hooks</a>, +Up: <a rel="up" accesskey="u" href="#Expansion">Expansion</a> + +</div> + +<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, +traditionally called an <dfn>atom</dfn>. Both atom and property names are +control sequence names. + + <p>Eplain provides two macros for dealing with property lists: +<code>\setproperty</code> and <code>\getproperty</code>. + + +<a name="index-setproperty-1032"></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 +<var>atom</var>. If <var>propname</var> is undefined, it expands to nothing +(i.e., <code>\empty</code>). + + </dl> + + <p>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. + + <p>The following example typesets `<samp><span class="samp">xyz</span></samp>'. + +<pre class="example"> \setproperty{a}{pr}{xyz} + \getproperty{a}{pr} +</pre> + <div class="node"> +<p><hr> +<a name="%5cexpandonce"></a> +<a name="g_t_005cexpandonce"></a> +Next: <a rel="next" accesskey="n" href="#g_t_005cifundefined">\ifundefined</a>, +Previous: <a rel="previous" accesskey="p" href="#Properties">Properties</a>, +Up: <a rel="up" accesskey="u" href="#Expansion">Expansion</a> + +</div> + +<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, +<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>. + + <p>For example, the following defines <code>\temp</code> to be <code>\foo</code>, not +`<samp><span class="samp">abc</span></samp>'. + +<pre class="example"> \def\foo{abc} + \def\bar{\foo} + \edef\temp{\expandonce\bar} +</pre> + <div class="node"> +<p><hr> +<a name="%5cifundefined"></a> +<a name="g_t_005cifundefined"></a> +Next: <a rel="next" accesskey="n" href="#g_t_005cfuturenonspacelet">\futurenonspacelet</a>, +Previous: <a rel="previous" accesskey="p" href="#g_t_005cexpandonce">\expandonce</a>, +Up: <a rel="up" accesskey="u" href="#Expansion">Expansion</a> + +</div> + +<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 +<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 +used in places where TeX might skip tokens “at high speed”, e.g., +within another conditional—TeX can't match up the <code>\if</code>'s and +<code>\fi</code>'s. + + <p>This macro was taken directly from <cite>The TeXbook</cite>, page 308. + +<div class="node"> +<p><hr> +<a name="%5cfuturenonspacelet"></a> +<a name="g_t_005cfuturenonspacelet"></a> +Previous: <a rel="previous" accesskey="p" href="#g_t_005cifundefined">\ifundefined</a>, +Up: <a rel="up" accesskey="u" href="#Expansion">Expansion</a> + +</div> + +<h4 class="subsection">7.6.7 <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 +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 +arguments, and it assigns the next nonspace token to the first, and then +expands the second. For example: + +<pre class="example"> \futurenonspacelet\temp\finishup + \def\finishup{\ifx\temp ...} +</pre> + <div class="node"> +<p><hr> +<a name="Obeying-spaces"></a> +Next: <a rel="next" accesskey="n" href="#Writing-out-numbers">Writing out numbers</a>, +Previous: <a rel="previous" accesskey="p" href="#Expansion">Expansion</a>, +Up: <a rel="up" accesskey="u" href="#Programming-definitions">Programming definitions</a> + +</div> + +<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> +<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 +blank space. + + <p>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>\ </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 +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 “right thing” with tabs, don't. Use a utility +program like <i>expand</i> instead.) +<a name="index-tabs-1047"></a> + +<div class="node"> +<p><hr> +<a name="Writing-out-numbers"></a> +Next: <a rel="next" accesskey="n" href="#Mode_002dspecific-penalties">Mode-specific penalties</a>, +Previous: <a rel="previous" accesskey="p" href="#Obeying-spaces">Obeying spaces</a>, +Up: <a rel="up" accesskey="u" href="#Programming-definitions">Programming definitions</a> + +</div> + +<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 +`ten' for the numbers 0–10, and numerals for all others. + +<div class="node"> +<p><hr> +<a name="Mode-specific-penalties"></a> +<a name="Mode_002dspecific-penalties"></a> +Next: <a rel="next" accesskey="n" href="#Auxiliary-files">Auxiliary files</a>, +Previous: <a rel="previous" accesskey="p" href="#Writing-out-numbers">Writing out numbers</a>, +Up: <a rel="up" accesskey="u" href="#Programming-definitions">Programming definitions</a> + +</div> + +<h3 class="section">7.9 Mode-specific penalties</h3> + +<p>TeX's built-in <code>\penalty</code> 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</code> +<a name="index-vpenalty-1050"></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 +mode is horizontal, and <code>\hpenalty</code> inserts <code>\leavevmode</code> if +the current mode is vertical. (Thus, <code>\vpenalty</code> cannot be used in +math mode.) + +<div class="node"> +<p><hr> +<a name="Auxiliary-files"></a> +Next: <a rel="next" accesskey="n" href="#User_002ddefined-environments">User-defined environments</a>, +Previous: <a rel="previous" accesskey="p" href="#Mode_002dspecific-penalties">Mode-specific penalties</a>, +Up: <a rel="up" accesskey="u" href="#Programming-definitions">Programming definitions</a> + +</div> + +<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 +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: + +<pre class="example"> \testfileexistence{toc}% + \iffileexists + \input \jobname.toc + \fi +</pre> + <p><code>\testfileexistence</code> takes an optional parameter; when +given, it will override <code>\jobname</code> for the root part of the file +name. For example, if you want to test for the file +<samp><span class="file">answers.aux</span></samp>, you can do this with the following: + +<pre class="example"> \testfileexistence[answers]{aux}% + \iffileexists + \input answers.aux + \fi +</pre> + <div class="node"> +<p><hr> +<a name="User-defined-environments"></a> +<a name="User_002ddefined-environments"></a> +Next: <a rel="next" accesskey="n" href="#Page-list-and-page-range-parsers">Page list and page range parsers</a>, +Previous: <a rel="previous" accesskey="p" href="#Auxiliary-files">Auxiliary files</a>, +Up: <a rel="up" accesskey="u" href="#Programming-definitions">Programming definitions</a> + +</div> + +<h3 class="section">7.11 User-defined environments</h3> + +<p><a name="index-environments_002c-user_002ddefined-1056"></a>Plain TeX does not provide “named” 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 +so that if you forget an <code>\environment</code> or an +<code>\endenvironment</code>, you will (probably) get an error message about +it. + + <p>For example: + +<pre class="example"> \def\itpar{ + \environment{@italicpar} + \it\par + } + \def\enditpar{ + \par + \endenvironment{@italicpar}% + } +</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! + \enditpar +</pre> + <p>The above sort of environment allows nesting. But environments +shouldn't always be allowed to nest. Put the control sequence +<code>\checkenv</code> at the beginning of a macro that is going to define an +environment that should not be nested. + +<div class="node"> +<p><hr> +<a name="Page-list-and-page-range-parsers"></a> +Previous: <a rel="previous" accesskey="p" href="#User_002ddefined-environments">User-defined environments</a>, +Up: <a rel="up" accesskey="u" href="#Programming-definitions">Programming definitions</a> + +</div> + +<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 +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 +<code>\empty</code>; when a list (range) is detected, they set +<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 +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 +with the commands + +<pre class="example"> \setidxpagelistdelimiter{<var>list-delim</var>} + \setidxpagerangedelimiter{<var>page-delim</var>} +</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>, +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 +italicizes and properly underlines page ranges by underlining only the +page numbers and not the delimiter: + + <p><a name="index-idxpagerangedelimiter-1068"></a> +<pre class="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}% + } +</pre> + <p class="noindent">Note that the <code>\ituline</code> macro is not aware of page +lists. This is not needed if you use hyperlinks in the index, because +<code>\hlidx</code> and <code>\hlidxpage</code> will break up the page lists before +calling the user's page encapsulator (see <a href="#Page-destinations-for-index-terms">Page destinations for index terms</a>), so <code>\ituline</code> 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</code> with an additional call to <code>\idxparselist</code>. + +<!-- Public domain. --> +<div class="node"> +<p><hr> +<a name="Macro-index"></a> +Next: <a rel="next" accesskey="n" href="#Concept-index">Concept index</a>, +Previous: <a rel="previous" accesskey="p" href="#Programming-definitions">Programming definitions</a>, +Up: <a rel="up" accesskey="u" href="#Top">Top</a> + +</div> + +<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-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. --> +<!-- makeinfo complains about bad links if we make them implicit. Strange. --> +<div class="node"> +<p><hr> +<a name="Concept-index"></a> +Previous: <a rel="previous" accesskey="p" href="#Macro-index">Macro index</a>, +Up: <a rel="up" accesskey="u" href="#Top">Top</a> + +</div> + +<h2 class="unnumbered">Concept index</h2> + + + +<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-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-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-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-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-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-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-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-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> + |