diff options
Diffstat (limited to 'Master/texmf/doc/info/eplain.info')
-rw-r--r-- | Master/texmf/doc/info/eplain.info | 8187 |
1 files changed, 0 insertions, 8187 deletions
diff --git a/Master/texmf/doc/info/eplain.info b/Master/texmf/doc/info/eplain.info deleted file mode 100644 index 5b27ad3c3ae..00000000000 --- a/Master/texmf/doc/info/eplain.info +++ /dev/null @@ -1,8187 +0,0 @@ -This is eplain.info, produced by texi2any version 4.13.96+dev from -eplain.texi. - -This manual documents the Eplain macros, version 3.5, February 2013. -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 originally written by Karl Berry, starting in 1989. Steven -Smith wrote the documentation for the commutative diagram macros; this -chapter is under the GNU General Public License. Adam Lewenberg has made -additions and corrections. Oleg Katsitadze wrote the section on LaTeX -packages and the chapter on hyperlinks, and updates throughout. -INFO-DIR-SECTION TeX -START-INFO-DIR-ENTRY -* Eplain: (eplain). Expanding on plain Tex. -END-INFO-DIR-ENTRY - - -File: eplain.info, Node: Top, Next: Introduction, Up: (dir) - -Eplain -****** - -This manual documents the Eplain macros, version 3.5, February 2013. -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 originally written by Karl Berry, starting in 1989. -Steven Smith wrote the documentation for the commutative diagram macros; -this chapter is under the GNU General Public License. Adam Lewenberg -has made additions and corrections. Oleg Katsitadze wrote the section -on LaTeX packages and the chapter on hyperlinks, and updates throughout. - - The Eplain home page is <http://tug.org/eplain>. - -* Menu: - -* Introduction:: Eplain's purpose and philosophy. -* Installation:: Installing Eplain. -* Invoking Eplain:: Using Eplain from a TeX file. -* User definitions:: Macros to be used in a document. -* Hyperlinks:: Producing documents with hyperlinks. -* Arrow theoretic diagrams:: Macros for commutative diagrams. -* Programming definitions:: Macros to be used in writing other macros. -* Demo files:: Sample documents demonstrating Eplain. -* Macro index:: Entries for TeX and Eplain control sequences. -* Concept index:: General index. - - -- The Detailed Node Listing -- - -User definitions - -* Diagnostics:: Tracing information. -* Rules:: Changing the default rule dimensions. -* Citations:: Using BibTeX and Eplain to make bibliographies. -* Displays:: Changing the formatting of math displays. -* Time of day:: Producing the time of day. -* Lists:: Producing numbered and unordered lists. -* Verbatim listing:: Producing text just as it appears. -* Contents:: Making a table of contents. -* Cross-references:: Symbolically referring to pages or equations. -* Page references:: Symbolic references to page numbers. -* Equation references:: Symbolic references to equation numbers. -* Indexing:: Creating and typesetting indexes. -* Justification:: Left- or right-justification, or centering. -* Tables:: Producing ordered tables. -* Margins:: Changing the margins directly. -* Multiple columns:: Getting output in two columns. -* Footnotes:: Autonumbered footnotes; changing formatting. -* Fractions:: A better way to produce fractions in text. -* Paths:: Allowing line breaks in pathnames. -* Logos:: Various logos. -* Boxes:: Producing filled or open rectangles. -* Checking for PDF output:: Checking for pdfTeX in PDF mode. -* Loading LaTeX packages:: Support for LaTeX packages under plain TeX. - -Citations - -* Formatting citations:: Changing the way citations are printed. -* Formatting bibliographies:: Changing the way bibliographies are printed. - -Displays - -* Formatting displays:: General formatting of displays. - -Lists - -* Formatting lists:: Changing how the lists look. - -Contents - -* Writing the .toc file:: -* Reading the .toc file:: -* Changing the .toc file's root name:: -* Alternative contents files:: - -Cross-references - -* Defining generic references:: -* Using generic references:: - -Equation references - -* Formatting equation references:: -* Subequation references:: - -Indexing - -* Indexing terms:: Specifying what to index. -* Typesetting an index:: Printing the sorted output. -* Customizing indexing:: Creating commands and specifying extra actions. - -Indexing terms - -* Indexing commands:: Making index entries. -* Modifying index entries:: Ranges, see/see also, page number typesetting. -* Index entries with special characters:: -* Proofing index terms:: Noting index entries in the margins. - -Loading LaTeX packages - -* The \usepackage command:: Command to load packages. -* Environment for loading packages:: Environment for the \usepackage commands. -* Packages known to work:: Supported packages. -* Packages known not to work:: Packages known not to work with Eplain. - -Hyperlinks - -* Introduction to hyperlinks:: -* Explicit hyperlinks:: -* Implicit hyperlinks:: -* Hyperlink drivers:: -* Setting hyperlink types and options:: -* Turning hyperlinks on/off:: - -Implicit hyperlinks - -* General hyperlinks:: hrefint, hrefext -* URL hyperlinks:: url -* Citation hyperlinks:: cite, bib -* List hyperlinks:: li -* Cross-reference hyperlinks:: definexref, ref -* Page reference hyperlinks:: xrdef, xref -* Equation reference hyperlinks:: eq -* Index hyperlinks:: idx -* Footnote hyperlinks:: foot, footback -* Contents hyperlinks:: - -Index hyperlinks - -* Exact destinations for index terms:: -* Page destinations for index terms:: -* Choosing destination placement:: -* Index page list and page range parsers:: -* Hyperlinks in see and see also entries:: - -Hyperlink drivers - -* Options supported by all drivers:: -* Hyperlink driver hypertex:: -* Hyperlink drivers pdftex and dvipdfm:: -* Hyperlink driver nolinks:: - -Hyperlink driver hypertex:: - -* Destination types for hypertex:: -* Destination options for hypertex:: -* Link types for hypertex:: -* Link options for hypertex:: - -Hyperlink drivers pdftex and dvipdfm:: - -* Destination types for pdftex and dvipdfm:: -* Destination options for pdftex and dvipdfm:: -* Link types for pdftex and dvipdfm:: -* Link options for pdftex and dvipdfm:: - -Setting hyperlink types and options - -* Setting default types and options:: -* Setting group types:: -* Setting group options:: - -Turning hyperlinks on/off - -* Turning low-level commands on/off:: -* Turning hyperlinks on/off for a group:: - -Arrow theoretic diagrams - -* Slanted lines and vectors:: -* Commutative diagrams:: - -Commutative diagrams - -* Arrows and morphisms:: -* Construction of commutative diagrams:: -* Commutative diagram parameters:: - -Programming definitions - -* Category codes:: Changing category codes. -* Allocation macros:: Non-outer versions of \newcount et al. -* Iteration:: Doing 'for' and 'while' loops in TeX. -* Macro arguments:: Reading and ignoring them. -* Converting to characters:: Normalizing control sequences and spaces. -* Expansion:: Controlling expansion. -* Obeying spaces:: Making whitespace count anywhere. -* Writing out numbers:: Making '1' into 'one'. -* Mode-specific penalties:: -* Auxiliary files:: Testing for their existence. -* User-defined environments:: User-defined environments. -* Page list and page range parsers:: - -Expansion - -* \csn and \ece:: -* \edefappend:: -* Hooks:: Manipulating and executing named actions. -* Properties:: Associating information with a csname. -* \expandonce:: -* \ifundefined:: -* \ifempty:: -* \ifinteger and \isinteger:: -* \futurenonspacelet:: - -Demo files - -* Hyperlinks (xhyper.tex):: -* Highlighting TeX comments in listings (lscommnt.tex):: - - -File: eplain.info, Node: Introduction, Next: Installation, Prev: Top, Up: Top - -1 Introduction -************** - -The "Eplain" macro package expands on and extends the definitions in -plain TeX. Its home on the web is <http://tug.org/eplain>. - - This manual describes the definitions that you, as either an author -or a macro writer, might like to use. It doesn't discuss the -implementation; see comments in the source code ('xeplain.tex') for -that. - - Eplain is not intended to provide "generic" typesetting capabilities, -as do LaTeX (written by Leslie Lamport) or Texinfo (written by Richard -Stallman and others). Instead, it provides definitions that are -intended to be useful regardless of the high-level commands that you use -when you actually prepare your manuscript. - - For example, Eplain does not have a command '\section', which would -format section headings in an "appropriate" way, such as LaTeX's -'\section'. The philosophy of Eplain is that some people will always -need or want to go beyond the macro designer's idea of "appropriate". -Such canned macros are fine--as long as you are willing to accept the -resulting output. If you don't like the results, or if you are trying -to match a different format, you are out of luck. - - On the other hand, almost everyone would like capabilities such as -cross-referencing by labels, so that you don't have to put actual page -numbers in the manuscript. The author of Eplain is not aware of any -generally available macro packages that (1) do not force their -typographic style on an author, and yet (2) provide such capabilities. - - Besides such generic macros as cross-referencing, Eplain contains -another set of definitions: ones that change the conventions of plain -TeX's output. For example, math displays in TeX are, by default, -centered. If you want your displays to come out left-justified, you -have to plow through 'The TeXbook' to find some way to do it, and then -adapt the code to your own needs. Eplain tries to take care of the -messy details of such things, while still leaving the detailed -appearance of the output up to you. - - Finally, numerous definitions turned out to be useful as Eplain was -developed. They are also documented in this manual, on the chance that -people writing other macros will be able to use them. - - You can send bug reports or suggestions to <tex-eplain@tug.org>. The -current version number of Eplain is defined as the macro '\fmtversion' -at the end of the source file 'eplain.tex'. When corresponding, please -refer to it. - - To get on this mailing list yourself, email -<tex-eplain-request@tug.org> with a message whose body contains a line - - subscribe YOU@YOUR.PREFERRED.ADDRESS - -or visit <http://tug.org/mailman/listinfo/tex-eplain>. - - David Walden had reported his experience with Eplain as a new user. -The article is available online at -<http://tug.org/pracjourn/2005-4/walden>. An introductory article -(written for TUGboat) is also available online at -<http://tug.org/eplain/misc/tb84katsi.pdf>. - - -File: eplain.info, Node: Installation, Next: Invoking Eplain, Prev: Introduction, Up: Top - -2 Installation -************** - -Your TeX installation should already contain a version of Eplain -('eplain.tex') in its main 'texmf' tree (usually under -'/usr/share/texmf/tex/eplain/' on Unix systems). To install a newer -version of Eplain, put the new 'eplain.tex' (included in Eplain -distributions) in the 'tex/eplain/' subdirectory of your local 'texmf' -tree. The newer version you install in the local tree should override -the older one in the main tree. - - The location of the local 'texmf' tree obviously depends on your -operating system and TeX installation. On Unix systems the usual -location is '/usr/local/share/texmf/'. If you don't have write -permissions for '/usr/local/share/texmf/', many installations read the -'texmf' tree in the user's home directory; 'eplain.tex' then should go -under '~/texmf/tex/eplain/'. For more information about TeX directory -structure, please see -<http://www.tex.ac.uk/cgi-bin/texfaq2html?label=tds>. - - If you prefer to install 'eplain.tex' in a non-standard place, set an -environment variable ('TEXINPUTS' for the Web2C port of TeX to Unix) to -tell TeX how to find it. - - If you want, you can also create a format ('.fmt') file for Eplain, -which will eliminate the time spent reading the macro source file with -'\input'. You do this by issuing a sequence of Unix commands something -like this: - - prompt$ touch eplain.aux - prompt$ initex - This is TeX, ... - **&plain eplain - (eplain.tex) - *\dump - ... MESSAGES ... - -You must make sure that 'eplain.aux' exists _before_ you run 'initex'; -otherwise, warning messages about undefined labels will never be issued. - - You then have to install the resulting 'eplain.fmt' in your local -'texmf' tree or set an environment variable to tell TeX how to find it. -For the Web2C port of TeX to Unix, format files are usually installed -under '/usr/local/share/texmf/web2c/' or '/var/lib/texmf/web2c/'; the -environment variable is 'TEXFORMATS'. - - -File: eplain.info, Node: Invoking Eplain, Next: User definitions, Prev: Installation, Up: Top - -3 Invoking Eplain -***************** - -The simplest way to use Eplain is simply to put: - - \input eplain - -at the beginning of your input file. The macro file is small enough -that reading it does not take an unbearably long time--at least on -contemporary machines. - - In addition, if a format ('.fmt') file has been created for Eplain -(see the previous section), you can eliminate the time spent reading the -macro source file. You do this by responding '&eplain' to TeX's '**' -prompt. For example: - - initex - This is TeX, ... - **&eplain myfile - - Depending on the implementation of TeX which you are using, you might -also be able to invoke TeX as 'eplain' and have the format file -automatically read. - - If you write something which you will be distributing to others, you -won't know if the Eplain format will be loaded already. If it is, then -doing '\input eplain' will waste time; if it isn't, then you must load -it. To solve this, Eplain defines the control sequence '\eplain' to be -the letter 't' (a convention borrowed from Lisp; it doesn't actually -matter what the definition is, only that the definition exists). -Therefore, you can do the following: - - \ifx\eplain\undefined \input eplain \fi - -where '\undefined' must never acquire a definition. - - Eplain consists of several source files: -'xeplain.tex' - most of the macros; - -'arrow.tex' - commutative diagram macros (*note Arrow theoretic diagrams::), - written by Steven Smith; - -'btxmac.tex' - bibliography-related macros (*note Citations::); - -'ifpdf.sty' - sets the switch '\ifpdf', which can be used to detect pdfTeX in PDF - mode (*note Checking for PDF output::), written by Heiko Oberdiek; - -'path.sty' - macro for allowing line breaks at punctuation characters within - long pathnames, electronic mail addresses, etc., (*note Paths::), - written by Philip Taylor; - -'texnames.sty' - abbreviations for various TeX-related names (*note Logos::), edited - by Nelson Beebe. - -The file 'eplain.tex' is all of these files merged together, with -comments removed. The original sources can be found in Eplain source -zip archive in your TeX distribution, on CTAN or on Eplain's home page -at <http://tug.org/eplain>. - - All of these files except 'xeplain.tex' can be input individually, if -all you want are the definitions in that file. - - Also, since the bibliography macros are fairly extensive, you might -not want to load them, to conserve TeX's memory. Therefore, if the -control sequence '\nobibtex' is defined, then the bibliography -definitions are skipped. You must set '\nobibtex' before 'eplain.tex' -is read, naturally. For example, you could start your input file like -this: - - \let\nobibtex = t - \input eplain - -By default, '\nobibtex' is undefined, and so the bibliography -definitions _are_ made. - - Likewise, define '\noarrow' if you don't want to include the -commutative diagram macros from 'arrow.tex', perhaps because you already -have conflicting ones. - - If you don't want to read or write an 'aux' file at all, for any kind -of cross-referencing, define '\noauxfile' before reading 'eplain.tex'. -This also turns off all warnings about undefined labels. - - Eplain conflicts with AMSTeX (to be precise, with 'amsppt.sty'): the -macros '\cite' and '\ref' are defined by both. - - If you want to use AMSTeX's '\cite', the solution is to define -'\nobibtex' before reading Eplain, as described above. - - If you have 'amsppt.sty' loaded and use '\ref', Eplain writes a -warning on your terminal. If you want to use the AMSTeX '\ref', do -'\let\ref = \amsref' after reading Eplain. To avoid the warning, do -'\let\ref = \eplainref' after reading Eplain and before using '\ref'. - - Sometimes you may need to run TeX more then once on your '.tex' file -in order to produce and typeset indexes, resolve undefined -cross-references and/or citations. The shell script 'texi2dvi' from the -Texinfo documentation system (see <http://www.gnu.org/software/texinfo>) -can automate this process: it runs BibTeX, MakeIndex and TeX as many -times as needed to complete the compilation process. You will need to -set the 'LATEX' environment variable to 'tex'. For example, in a -Bourne-compatible shell, the following command will do all the work: - - prompt$ LATEX=tex texi2dvi file.tex - -(Despite the name, 'texi2dvi' can also produce '.pdf' files; just set -'LATEX=pdftex'.) See the output from the command 'texi2dvi --help' for -invoking information and a full list of options. - - -File: eplain.info, Node: User definitions, Next: Hyperlinks, Prev: Invoking Eplain, Up: Top - -4 User definitions -****************** - -This chapter describes definitions that are meant to be used directly in -a document. When appropriate, ways to change the default formatting are -described in subsections. - -* Menu: - -* Diagnostics:: Tracing information. -* Rules:: Changing the default rule dimensions. -* Citations:: Using BibTeX and Eplain to make bibliographies. -* Displays:: Changing the formatting of math displays. -* Time of day:: Producing the time of day. -* Lists:: Producing numbered and unordered lists. -* Verbatim listing:: Producing text just as it appears. -* Contents:: Making a table of contents. -* Cross-references:: Symbolic references to equations, figures, etc. -* Page references:: Symbolic references to page numbers. -* Equation references:: Symbolic references to equation numbers. -* Indexing:: Creating and typesetting indexes. -* Justification:: Ragged left, ragged right, centered. -* Tables:: Producing ordered tables. -* Margins:: Changing the margins directly. -* Multiple columns:: Getting output in two columns. -* Footnotes:: Autonumbered footnotes; changing formatting. -* Fractions:: A better way to produce fractions in text. -* Paths:: Allowing line breaks in pathnames. -* Logos:: Various logos. -* Boxes:: Producing filled or open rectangles. -* Checking for PDF output:: Checking for pdfTeX in PDF mode. -* Loading LaTeX packages:: Support for LaTeX packages under plain TeX. - - -File: eplain.info, Node: Diagnostics, Next: Rules, Up: User definitions - -4.1 Diagnostics -=============== - -Plain TeX provides the '\tracingall' command, to turn on the maximum -amount of tracing possible in TeX. The (usually voluminous) output from -'\tracingall' goes both on the terminal and into the transcript file. -It is sometimes easier to have the output go only to the transcript -file, so you can peruse it at your leisure and not obscure other output -to the terminal. So, Eplain provides the command '\loggingall'. (For -some reason, this command is available in Metafont, but not in TeX.) - - It is also sometimes useful to see the complete contents of boxes. -'\tracingboxes' does this. (It doesn't affect whether or not the -contents are shown on the terminal.) - - You can turn off all tracing with '\tracingoff'. - - You can also turn logging on and off globally, so you don't have to -worry about whether or not you're inside a group at the time of command. -These variants are named '\gloggingall' and '\gtracingall'. - - Finally, if you write your own help messages (see '\newhelp' in 'The -TeXbook'), you want a convenient way to break lines in them. This is -what TeX's '\newlinechar' parameter is for; however, plain TeX doesn't -set '\newlinechar'. Therefore, Eplain defines it to be the character -'^^J'. - - For example, one of Eplain's own error messages is defined as -follows: - - \newhelp\envhelp{Perhaps you forgot to end the previous^^J% - environment? I'm finishing off the current group,^^J% - hoping that will fix it.}% - - -File: eplain.info, Node: Rules, Next: Citations, Prev: Diagnostics, Up: User definitions - -4.2 Rules -========= - -The default dimensions of rules are defined in chapter 21 of the 'The -TeXbook'. To sum up what is given there, the "thickness" of rules is -0.4pt by default. Eplain defines three parameters that let you change -this dimension: '\hruledefaultheight', '\hruledefaultdepth', and -'\vruledefaultwidth'. By default, they are defined as 'The TeXbook' -describes. - - But it would be wrong to redefine '\hrule' and '\vrule'. For one -thing, some macros in plain TeX depend on the default dimensions being -used; for another, rules are used quite heavily, and the performance -impact of making it a macro can be noticeable. Therefore, to take -advantage of the default rule parameters, you must use '\ehrule' and -'\evrule'. - - -File: eplain.info, Node: Citations, Next: Displays, Prev: Rules, Up: User definitions - -4.3 Citations -============= - -Bibliographies are part of almost every technical document. To handle -them conveniently, you need two things: a program to do the tedious -formatting, and a way to cite references by labels, rather than by -numbers. The BibTeX program, written by Oren Patashnik, takes care of -the first item; the citation commands in LaTeX, written to be used with -BibTeX, take care of the second. Therefore, Eplain adopts the use of -BibTeX, and virtually the same interface as LaTeX. - - The general idea is that you put citation commands in the text of -your document, and commands saying where the bibliography data is. When -you run TeX, these commands produce output on the file with the same -root name as your document (by default) and the extension '.aux'. -BibTeX reads this file. You should put the bibliography data in a file -or files with the extension '.bib'. BibTeX writes out a file with the -same root name as your document and extension '.bbl'. Eplain reads this -file the next time you run your document through TeX. (It takes -multiple passes to get everything straight, because usually after seeing -your bibliography typeset, you want to make changes in the '.bib' file, -which means you have to run BibTeX again, which means you have to run -TeX again...) An annotated example of the whole process is given below. - - If your document has more than one bibliography--for example, if it -is a collection of papers--you can tell Eplain to use a different root -name for the '.bbl' file by defining the control sequence -'\bblfilebasename'. The default definition is simply '\jobname'. - - On the other hand, if your document's bibliography is very simple, -you may prefer to create the '.bbl' file yourself, by hand, instead of -using BibTeX. An annotated example of this approach is also given -below. - - See the document 'BibTeXing' (whose text is in the file 'btxdoc.tex', -which should be in the Eplain distribution you got) for information on -how to write your .bib files. Both the BibTeX and the Eplain -distributions contain several examples, also. - - The '\cite' command produces a citation in the text of your document. -The exact printed form the citation will take is under your control -(*note Formatting citations::). '\cite' takes one required argument, a -comma-separated list of cross-reference labels (*note -Cross-references::, for exactly what characters are allowed in such -labels). Warning: spaces in this list are taken as part of the -following label name, which is probably not what you expect. The -'\cite' command also produces a command in the .aux file that tells -BibTeX to retrieve the given reference(s) from the .bib file. '\cite' -also takes one optional argument, which you specify within square -brackets, as in LaTeX. This text is simply typeset after the citations. -(See the example below.) - - Eplain can create hypertext links for citations pointing to the -relevant bibliography entries (*note Citation hyperlinks::). - - Another command, '\nocite', puts the given reference(s) into the -bibliography, but produces nothing in the text. - - The '\bibliography' command is next. It serves two purposes: -producing the typeset bibliography, and telling BibTeX the root names of -the .bib files. Therefore, the argument to '\bibliography' is a comma -separated list of the .bib files (without the '.bib'). Again, spaces in -this list are significant. - - You tell BibTeX the particular style in which you want your -bibliography typeset with one more command: '\bibliographystyle'. The -argument to this is a single filename STYLE, which tells BibTeX to look -for a file STYLE.bst. See the document 'Designing BibTeX styles' (whose -text is in the 'btxhak.tex') for information on how to write your own -styles. - - Eplain automatically reads the citations from the .aux file when your -job starts. - - If you don't want to see the messages about undefined citations, you -can say '\xrefwarningfalse' before making any citations. Eplain -automatically does this if the .aux file does not exist. You can -restore the default by saying '\xrefwarningtrue'. - - Here is a TeX input file that illustrates the various commands. - - \input eplain % Reads the .aux file. - Two citations to Knuthian works: - \cite[note]{surreal,concrete-math}. - \beginsection{References.}\par % Title for the bibliography. - \bibliography{knuth} % Use knuth.bib for the labels. - \bibliographystyle{plain} % Number the references. - \end % End of the document. - - If we suppose that this file was named 'citex.tex' and that the -bibliography data is in 'knuth.bib' (as the above '\bibliography' -command says), the following commands do what's required. ('$ ' -represents the shell prompt.) - - $ tex citex (produces undefined citation messages) - $ bibtex citex (read knuth.bib and citex.aux, write citex.bbl) - $ tex citex (read citex.bbl, still have undefined citations) - $ tex citex (one more time, to resolve the references) - -The 'texi2dvi' program can help you automate this process (*note -Invoking Eplain::). - - For simple documents you might choose to write the '.bbl' file -yourself, instead of running BibTeX. For this scenario, the following -commands should suffice: - - $ tex citex (read citex.bbl, produces undefined citation messages) - $ tex citex (one more time, to resolve the references) - - The output looks something like (because we used the plain -bibliography style): - - Two citations to Knuthian works: [2,1 note]. - - References - - [1] Ronald L. Graham, Donald E. Knuth, and Oren Patashnik. Concrete - Mathematics. Addison-Wesley, Reading, Massachusetts, 1989. - - [2] Donald E. Knuth. Surreal Numbers. Addison-Wesley, Reading, - Massachusetts, 1974. - - See the BibTeX documentation for information on how to write the -bibliography databases, and the bibliography styles that are available. -(If you want your references printed with names, as in [Knu74], instead -of numbered, the bibliography style is 'alpha'.) - -* Menu: - -* Formatting citations:: Changing the way citations are printed. -* Formatting bibliographies:: Changing the way bibliographies are printed. -* Commands from LaTeX:: LaTeX commands defined by 'btxmac'. - - -File: eplain.info, Node: Formatting citations, Next: Formatting bibliographies, Up: Citations - -4.3.1 Formatting citations --------------------------- - -You may wish to change Eplain's formatting of citations; i.e., the -result of your '\cite' commands. By default, the citation labels are -printed one after another, separated by commas and enclosed in brackets, -using the main text font. Some formats require other styles, such as -superscripted labels. You can accomodate such formats by redefining the -following macros. - -'\printcitestart' -'\printcitefinish' - Eplain expands these macros at the begining and end of the list of - citations for each '\cite' command. By default, they produce a '[' - and ']', respectively. - -'\printbetweencitations' - If a '\cite' command has multiple citations, as in - '\cite{acp,texbook}', Eplain expands this macro in between each - pair of citations. By default, it produces a comma followed by a - space. - -'\printcitenote' - This macro takes one argument, which is the optional note to the - '\cite' command. If the '\cite' command had no note, this macro - isn't used. Otherwise, it should print the note. By default, the - note is preceded with a comma and a space. - - Here is an example, showing you could produce citations as -superscripted labels, with the optional notes in parentheses. - - \def\printcitestart{\unskip $^\bgroup} - \def\printbetweencitations{,} - \def\printcitefinish{\egroup$} - \def\printcitenote#1{\hbox{\sevenrm\space (#1)}} - - -File: eplain.info, Node: Formatting bibliographies, Next: Commands from LaTeX, Prev: Formatting citations, Up: Citations - -4.3.2 Formatting bibliographies -------------------------------- - -You may wish to change Eplain's formatting of the bibliography, -especially with respect to the fonts that are used. Therefore, Eplain -provides the following control sequences: - -'\biblabelwidth' - This control sequence represents a '\dimen' register, and its value - is the width of the widest label in the bibliography. Although it - is unlikely you will ever want to redefine it, you might want to - use it if you redefine '\biblabelprint', below. - -'\biblabelprint' - This macro takes one argument, the label to print. By default, the - label is put in a box of width '\biblabelwidth', and is followed by - an enspace. When you want to change the spacing around the labels, - this is the right macro to redefine. - -'\biblabelcontents' - This macro also takes one argument, the label to print. By default, - the label is printed using the font '\bblrm' (below), and enclosed - in brackets. When you want to change the appearance of the label, - but not the spacing around it, this is the right macro to redefine. - -'\biblabelprecontents' -'\biblabelpostcontents' - Macros expanded before and after '\biblabelcontents', respectively. - For example, to get left-justified numeric labels (they are - right-justified by default): - - \def\biblabelprecontents{\relax} - \def\biblabelpostcontents{\hss} - -'\bblrm' - The default font used for printing the bibliography. - -'\bblem' - The font used for printing the titles and other "emphasized" - material. - -'\bblemph' - Typesets its argument using '\bblem', then inserts an italic - correction. - -'\bblsc' - In some styles, authors' names are printed in a caps-and-small-caps - font. In those cases, this font is used. - -'\bblnewblock' - This is invoked between each of the parts of a bibliography entry. - The default is to leave some extra space between the parts; you - could redefine it to start each part on a new line (for example). A - part is simply a main element of the entry; for example, the author - is a part. (It was LaTeX that introduced the (misleading, as far as - I am concerned) term 'block' for this.) - -'\biblabelextraspace' - Bibliography entries are typeset with a hanging indentation of - '\biblabelwidth' plus this. The default is '.5em', where the em - width is taken from the '\bblrm' font. If you want to change this, - you should do it inside '\bblhook'. - -'\bblhook' - This is expanded before reading the .bbl file. By default, it does - nothing. You could, for example, define it to set the bibliography - fonts, or produce the heading for the references. Two spacing - parameters must be changed inside '\bblhook': '\parskip', which - produces extra space between the items; and '\biblabelextraspace', - which is described above. (By the way, '\hookappend' won't work - with '\bblhook', despite the names. Just use '\def'.) - - If you are desperate, of course you can also hand-edit the .bbl file -that BibTeX produces to do anything you wish. - - -File: eplain.info, Node: Commands from LaTeX, Prev: Formatting bibliographies, Up: Citations - -4.3.3 Commands from LaTeX -------------------------- - -Because of the historical connection between BibTeX and LaTeX, in -practice many bibliography styles and bibliographies use LaTeX commmands -that are not part of bibliography handling, per se. - - To support this, 'btxmac.tex' (and thus Eplain) define the following. -In all cases, an existing definition (e.g., from 'miniltx.tex', *note -Loading LaTeX packages: Loading LaTeX packages.) will not be -overwritten. Here is the list: - -'\newcommand' -'\renewcommand' -'\providecommand' - Defining new commands in various ways. The Eplain versions do not - support the *-form of these; use 'miniltx' for that. - -'\em' -'\emph' -'\sc' -'\textbf' - Selecting fonts. - -'\mbox' - A horizontal box. - -'\newblock' - Starts elements of a bibliography entry. - - For full information about these, see the LaTeX manual and sources. - - -File: eplain.info, Node: Displays, Next: Time of day, Prev: Citations, Up: User definitions - -4.4 Displays -============ - -By default, TeX centers displayed material. (Displayed material is just -whatever you put between '$$''s--it's not necessarily mathematics.) Many -layouts would be better served if the displayed material was -left-justified. Therefore, Eplain provides the command '\leftdisplays', -which indents displayed material by '\parindent' plus '\leftskip', plus -'\leftdisplayindent'. - - You can go back to centering displays with '\centereddisplays'. (It -is usually poor typography to have both centered and left-justified -displays in a single publication, though.) - - '\leftdisplays' also changes the plain TeX commands that deal with -alignments inside math displays, '\displaylines', '\eqalignno', and -'\leqalignno', to produce left-justified text. You can still override -this formatting by inserting '\hfill' glue, as explained in 'The -TeXbook'. - - Eplain defines '\eqnum' and '\eqalignnum' which can be set up to -produce either left-aligned or right-aligned equation numbers. -'\lefteqnumbers' ('\righteqnumbers') will define '\eqnum' to expand to -'\eqno' ('\leqno'), and '\eqalignnum' to expand to '\eqalignno' -('\leqalignno'). Default is '\righteqnumbers' (right-aligned equation -numbers). - -* Menu: - -* Formatting displays:: General formatting of displays. - - -File: eplain.info, Node: Formatting displays, Up: Displays - -4.4.1 Formatting displays -------------------------- - -If you want some other kind of formatting, you can write a definition of -your own, analogous to '\leftdisplays'. You need only make sure that -'\leftdisplaysetup' is called at the beginning of every display -(presumably by invoking it in TeX's '\everydisplay' parameter). - - '\leftdisplays' expands the old value of '\everydisplay' before -calling '\leftdisplaysetup', so that any changes you have made to it -won't be lost. That old token list as available as the value of the -token register '\previouseverydisplay'. - - -File: eplain.info, Node: Time of day, Next: Lists, Prev: Displays, Up: User definitions - -4.5 Time of day -=============== - -TeX provides the day, month, and year as numeric quantities (unless your -TeX implementation is woefully deficient). Eplain provides some control -sequences to make them a little more friendly to humans. - - '\monthname' produces the name of the current month, abbreviated to -three letters. - - '\fullmonthname' produces the name of the current month, -unabbreviated (in English). - - '\timestring' produces the current time, as in '1:14 p.m.' - - '\timestamp' produces the current date and time, as in '23 Apr 64 -1:14 p.m.'. (Except the spacing is slightly different.) - - '\today' produces the current date, as in '23 April 1964'. - - -File: eplain.info, Node: Lists, Next: Verbatim listing, Prev: Time of day, Up: User definitions - -4.6 Lists -========= - -Many documents require lists of items, either numbered or simply -enumerated. Plain TeX defines one macro to help with creating lists, -'\item', but that is insufficient in many cases. Therefore, Eplain -provides two pairs of commands: - -'\numberedlist ... \endnumberedlist' -'\orderedlist ... \endorderedlist' - These commands (they are synonyms) produce a list with the items - numbered sequentially, starting from one. A nested '\numberedlist' - labels the items with lowercase letters, starting with 'a'. Another - nested '\numberedlist' labels the items with roman numerals. Yet - more deeply nested numbered lists label items with '*'. - -'\unorderedlist ... \endunorderedlist' - This produces a list with the items labelled with small black boxes - ("square bullets"). A nested '\unorderedlist' labels items with - em-dashes. Doubly (and deeper) nested unordered lists label items - with '*'s. - - The two kinds of lists can be nested within each other, as well. - - In both kinds of lists, you begin an item with '\li'. An item may -continue for several paragraphs. Each item starts a paragraph. - - You can give '\li' an optional argument, a cross-reference label. -It's defined to be the "marker" for the current item. This is useful if -the list items are numbered. You can produce the value of the label with -'\xrefn'. *Note Cross-references::. - - Eplain can create hypertext links for the markers produced by -'\xrefn' pointing to the relevant list item (*note List hyperlinks::). - - You can also say '\listcompact' right after '\numberedlist' or -'\unorderedlist'. The items in the list will then not have any extra -space between them (*note Formatting lists::). You might want to do this -if the items in this particular list are short. - - Here is an example: - - \numberedlist\listcompact - \li The first item. - \li The second item. - - The second paragraph of the second item. - \endnumberedlist - -* Menu: - -* Formatting lists:: Changing how the lists look. - - -File: eplain.info, Node: Formatting lists, Up: Lists - -4.6.1 Formatting lists ----------------------- - -Several registers define the spacing associated with lists. It is likely -that their default values won't suit your particular layout. - -'\abovelistskipamount, \belowlistskipamount' - The vertical glue inserted before and after every list, - respectively. - -'\interitemskipamount' - The vertical glue inserted before each item except the first. - '\listcompact' resets this to zero, as mentioned above. - -'\listleftindent, \listrightindent' - '\listrightindent' is the amount of space by which the list is - indented on the right; i.e., it is added to '\rightskip'. - '\listleftindent' is the amount of space, _relative to_ - '\parindent', by which the list is indented on the left. Why treat - the two parameters differently? Because (a) it is more useful to - make the list indentation depend on the paragraph indentation; - (b) footnotes aren't formatted right if '\parindent' is reset to - zero. - - The three vertical glues are inserted by macros, and preceded by -penalties: '\abovelistskip' does '\vpenalty\abovelistpenalty' and then -'\vskip\abovelistskip'. '\belowlistskip' and '\interitemskip' are -analogous. - - In addition, the macro '\listmarkerspace' is called to separate the -item label from the item text. This is set to '\enspace' by default. - - If you want to change the labels on the items, you can redefine these -macros: '\numberedmarker' or '\unorderedmarker'. The following registers -might be useful if you do: - -'\numberedlistdepth, \unorderedlistdepth' - These keep track of the depth of nesting of the two kinds of lists. - -'\itemnumber, \itemletter' - These keep track of the number of items that have been seen in the - current numbered list. They are both integer registers. The - difference is that '\itemnumber' starts at one, and '\itemletter' - starts at 97, i.e., lowercase 'a'. - - You can also redefine the control sequences that are used internally, -if you want to do something radically different: '\beginlist' is invoked -to begin both kinds of lists; '\printitem' is invoked to print the label -(and space following the label) for each item; and '\endlist' is invoked -to end both kinds of lists. - - -File: eplain.info, Node: Verbatim listing, Next: Contents, Prev: Lists, Up: User definitions - -4.7 Verbatim listing -==================== - -It is sometimes useful to include a file verbatim in your document; for -example, part of a computer program. The '\listing' command is given one -argument, a filename, and produces the contents of that file in your -document. '\listing' expands '\listingfont' to set the current font. The -default value of '\listingfont' is '\tt'. - - You can take arbitrary actions before reading the file by defining -the macro '\setuplistinghook'. This is expanded just before the file is -input. - - If you want to have line numbers on the output, you can say -'\let\setuplistinghook = \linenumberedlisting'. The line numbers are -stored in the count register '\lineno' while the file is being read. You -can redefine the macro '\printlistinglineno' to change how they are -printed. - - Normally, the '\listing' command will add a final empty line at the -end of the output, even if the file does not end in a newline. To -suppress this final line, you can say '\let\setuplistinghook = -\nolastlinelisting'. This also works with line numbers (say -'\def\setuplistinghook{\linenumberedlisting \nolastlinelisting}'), but -only if '\printlistinglineno' consists exclusively of boxes at the top -level (i.e., any '\kern's or glue should be wrapped up in a box). - - You can use the form feed control character (ASCII code 12, typed as -'CTRL-L') in the file to force a page break in the output. - - You can produce in-line verbatim text in your document with -'\verbatim'. End the text with '|endverbatim'. If you need a '|' in the -text, double it. If the first character of the verbatim text is a space, -use '| '. ('| ' will work elsewhere in the argument, too, but isn't -necessary.) - - For example: - - \verbatim| ||\#%&!|endverbatim - -produces ' |\#%&!'. - - Line breaks and spaces in the verbatim text are preserved. - - You can change the verbatim escape character from the default '|' -with '\verbatimescapechar CHAR'; for example, this changes it to '@'. - - \verbatimescapechar \@ - -The backslash is not necessary in some cases, but is in others, -depending on the catcode of the character. The argument to -'\verbatimescapechar' is used as '\catcode `CHAR', so the exact rules -follow that for '\catcode'. - - To reset the category code of all special characters to 12 ("other"), -'\verbatim' uses '\uncatcodespecials' (*note Category codes::). If you -make additional characters "special", you should extend '\dospecials' to -include those characters, lest they be given special treatment inside -verbatim environments. For example, - - \catcode`\A=\active - % Try commenting out the following line. - \expandafter\def\expandafter\dospecials\expandafter{\dospecials\do\A} - \verbatimA#$%_^|endverbatim - - Because '\verbatim' must change the category code of special -characters, calling inside a macro definition of your own does not work -properly. For example: - - \def\mymacro{\verbatim &#%|endverbatim}% Doesn't work! - -To accomplish this, you must change the category codes yourself before -making the macro definition. Perhaps '\uncatcodespecials' will help you -(*note Category codes::). - - -File: eplain.info, Node: Contents, Next: Cross-references, Prev: Verbatim listing, Up: User definitions - -4.8 Contents -============ - -Producing a table of contents that is both useful and aesthetic is one -of the most difficult design problems in any work. Naturally, Eplain -does not pretend to solve the design problem. Collecting the raw data -for a table of contents, however, is much the same across documents. -Eplain uses an auxiliary file with extension '.toc' (and the same root -name as your document) to save the information. - -* Menu: - -* Writing the .toc file:: -* Reading the .toc file:: -* Changing the .toc file's root name:: -* Alternative contents files:: - - -File: eplain.info, Node: Writing the .toc file, Next: Reading the .toc file, Up: Contents - -4.8.1 Writing the .toc file ---------------------------- - -To write an entry for the table of contents, you say -'\writetocentry{PART}{TEXT}', where PART is the type of part this entry -is, e.g., 'chapter', and TEXT is the text of the title. '\writetocentry' -puts an entry into the .toc file that looks like -'\tocPARTentry{TEXT}{PAGE NUMBER}' (unless PART is an integer, see -below). The TEXT is written unexpanded. - - A related command, '\writenumberedtocentry', takes one additional -argument, the first token of which is expanded at the point of the -'\writenumberedtocentry', but the rest of the argument is not expanded. -The usual application is when the parts of the document are numbered. On -the other hand, the one-level expansion allows you to use the argument -for other things as well (author's names in a proceedings, say), and not -have accents or other control sequences expanded. The downside is that -if you _want_ full expansion of the third argument, you don't get -it--you must expand it yourself, before you call -'\writenumberedtocentry'. - - For example: - - \writenumberedtocentry{chapter}{A $\sin$ wave}{\the\chapno} - \writetocentry{section}{A section title} - -Supposing '\the\chapno' expanded to '3' and that the '\write''s occurred -on pages eight and nine, respectively, the above writes the following to -the .toc file: - - \tocchapterentry{A $\sin$ wave}{3}{8} - \tocsectionentry{A section title}{9} - - A variation on '\writenumberedtocentry' is '\writenumberedtocline', -differing only in the order of the parameters it takes and writes for -the '\tocPARTentry' control sequences. To continue the previous example: - - \writenumberedtocline{chapter}{\the\chapno}{A $\sin$ wave} - -writes the following to the .toc file: - - \tocchapterentry{3}{A $\sin$ wave}{8} - -Such ordering of the parameters allows the '\tocPARTentry' macros to -typeset the text of the entry without actually reading it as an -argument. This is required for entries which need to change character -catcodes, e.g., to produce verbatim text (*note Verbatim listing::). - - Each of '\writetocentry', '\writenumberedtocentry' and -'\writenumberedtocline' processes a numeric PART argument specially. If -you pass PART expanding to an integer, these macros write into the .toc -file an entry that starts with '\tocentry{PART}'. Thus, you can define a -single '\tocentry' macro which formats all entries for a table of -contents. To continue the previous examples: - - \writenumberedtocentry{1}{A $\sin$ wave}{\the\chapno} - \writenumberedtocline{1}{\the\chapno}{A $\sin$ wave} - \writetocentry{2}{A section title} - -writes the following to the .toc file: - - \tocentry{1}{A $\sin$ wave}{3}{8} - \tocentry{1}{3}{A $\sin$ wave}{8} - \tocentry{2}{A section title}{9} - - -File: eplain.info, Node: Reading the .toc file, Next: Changing the .toc file's root name, Prev: Writing the .toc file, Up: Contents - -4.8.2 Reading the .toc file ---------------------------- - -You read the .toc file with the command '\readtocfile'. Naturally, -whatever '\toc... entry' commands that were written to the file must be -defined when '\readtocfile' is invoked. Eplain has minimal definitions -for '\tocchapterentry', '\tocsectionentry', and '\tocsubsectionentry', -just to prevent undefined control sequence errors in common cases. They -aren't suitable for anything but preliminary proofs. - - Each of '\writetocentry', '\writenumberedtocentry' and -'\writenumberedtocline' opens the .toc file for writing, thereby -deleting the information from the previous run. You should therefore -arrange that '\readtocfile' be called _before_ the first call to a -'\writetoc...' macro. '\readtocfile' does not itself delete the -information from the .toc file, so that you can call it several times, -e.g., to create both a short and normal table of contents. (To produce -this in particular, define '\tocsectionentry' to produce nothing while -you are reading .toc file for a short table of contents (*note Macro -arguments::).) - - On the other hand, if you don't want to rewrite the .toc file at all, -perhaps because you are only running TeX on part of your manuscript, you -can set '\rewritetocfilefalse'. - - -File: eplain.info, Node: Changing the .toc file's root name, Next: Alternative contents files, Prev: Reading the .toc file, Up: Contents - -4.8.3 Changing the .toc file's root name ----------------------------------------- - -By default, the '.toc' file has the root '\jobname'. If your document -has more than one contents--for example, if it is a collection of -papers, some of which have their own contents--you can tell Eplain to -use a different root name by defining the control sequence -'\tocfilebasename'. - - Note that '\writetocentry', '\writenumberedtocentry' and -'\writenumberedtocline' will open the contents file for writing only at -the first call, using the value of '\tocfilebasename' at that time. -Changing the value of '\tocfilebasename' afterwards will not affect -which file gets _written_, although it will affect which file gets -_read_ by '\readcontentsfile'. In case you need to write several -contents files from a single TeX job, use '\definecontentsfile' (*note -Alternative contents files::). - - -File: eplain.info, Node: Alternative contents files, Prev: Changing the .toc file's root name, Up: Contents - -4.8.4 Alternative contents files --------------------------------- - -In addition to the usual table of contents, you may want to have a list -of figures, list of tables, or other such contents-like list. You can do -this with '\definecontentsfile{ABBREV}'. All of the above commands are -actually a special case that Eplain predefines with - - \definecontentsfile{toc} - -The ABBREV is used both for the file extension and in the control -sequence names. - - -File: eplain.info, Node: Cross-references, Next: Page references, Prev: Contents, Up: User definitions - -4.9 Cross-references -==================== - -It is often useful to refer the reader to other parts of your document; -but putting literal page, section, equation, or whatever numbers in the -text is certainly a bad thing. - - Eplain therefore provides commands for symbolic cross-references. It -uses an auxiliary file with extension .aux (and the same root name as -your document) to keep track of the information. Therefore, it takes two -passes to get the cross-references right--one to write them out, and one -to read them in. Eplain automatically reads the .aux file at the first -reference; after reading it, Eplain reopens it for writing. - - You can control whether or not Eplain warns you about undefined -labels. *Note Citations::. - - Labels in Eplain's cross-reference commands can use characters of -category code eleven (letter), twelve (other), ten (space), three (math -shift), four (alignment tab), seven (superscript), or eight (subscript). -For example, '(a1 $&^_' is a valid label (assuming the category codes of -plain TeX), but '%#\{' has no valid characters. - - You can also do symbolic cross-references for bibliographic citations -and list items. *Note Citations::, and *note Lists::. - - Eplain can create hypertext links for the cross-references (*note -Cross-reference hyperlinks::). - -* Menu: - -* Defining generic references:: -* Using generic references:: - - -File: eplain.info, Node: Defining generic references, Next: Using generic references, Up: Cross-references - -4.9.1 Defining generic references ---------------------------------- - -Eplain provides the command '\definexref' for general cross-references. -It takes three arguments: the name of the label (see section above for -valid label names), the value of the label (which can be anything), and -the "class" of the reference--whether it's a section, or theorem, or -what. For example: - - \definexref{sec-intro}{3.1}{section} - -Of course, the label value is usually generated by another macro using -TeX count registers or some such. - - '\definexref' doesn't actually define LABEL; instead, it writes out -the definition to the .aux file, where Eplain will read it on the next -TeX run. - - The CLASS argument is used by the '\ref' and '\refs' commands. See -the next section. - - -File: eplain.info, Node: Using generic references, Prev: Defining generic references, Up: Cross-references - -4.9.2 Using generic references ------------------------------- - -To retrieve the value of the label defined via '\definexref' (see the -previous section), Eplain provides the following macros: - -'\refn{LABEL}' -'\xrefn{LABEL}' - '\refn' and '\xrefn' (they are synonyms) produce the bare - definition of LABEL. If LABEL isn't defined, issue a warning, and - produce LABEL itself instead, in typewriter. (The warning isn't - given if '\xrefwarningfalse'.) - -'\ref{LABEL}' - Given the class C for LABEL (see the description of '\definexref' - in the previous section), expand the control sequence '\C word' (if - it's defined) followed by a tie. Then call '\refn' on LABEL. - (Example below.) - -'\refs{LABEL}' - Like '\ref', but append the letter 's' to the '\...word'. - - The purpose of the '\...word' macro is to produce the word 'Section' -or 'Figure' or whatever that usually precedes the actual reference -number. - - Here is an example: - - \def\sectionword{Section} - \definexref{sec-intro}{3.1}{section} - \definexref{sec-next}{3.2}{section} - See \refs{sec-intro} and \refn{sec-next} ... - -This produces 'See Sections 3.1 and 3.2 ...' - - -File: eplain.info, Node: Page references, Next: Equation references, Prev: Cross-references, Up: User definitions - -4.10 Page references -==================== - -Eplain provides two commands for handling references to page numbers, -one for definition and one for use. - -'\xrdef{LABEL}' - Define LABEL to be the current page number. This produces no - printed output, and ignores following spaces. - -'\xref{LABEL}' - Produce the text 'p. PAGENO', which is the usual form for - cross-references. The PAGENO is actually LABEL's definition; if - LABEL isn't defined, the text of the label itself is printed. The - 'p. ' prefix is defined by '\xrefpageword'. Its default definition - is 'p.\thinspace'. - - Eplain can create hypertext links for the page references (*note Page -reference hyperlinks::). - - -File: eplain.info, Node: Equation references, Next: Indexing, Prev: Page references, Up: User definitions - -4.11 Equation references -======================== - -Instead of referring to pages, it's most useful if equation labels refer -to equation numbers. Therefore, Eplain reserves a '\count' register, -'\eqnumber', for the current equation number, and increments it at each -numbered equation. - - Here are the commands to define equation labels and then refer to -them: - -'\eqdef{LABEL}' - This defines LABEL to be the current value of '\eqnumber', and, if - the current context is not inner, then produces a '\eqnum' command - (*note Displays::). (The condition makes it possible to use - '\eqdef' in an '\eqalignno' construction, for example.) The text of - the equation number is produced using '\eqprint'. *Note Formatting - equation references::. - - If LABEL is empty, you still get an equation number (although - naturally you can't reliably refer to it). This is useful if you - want to put numbers on all equations in your document, and you - don't want to think up unique labels. - - To refer to the last equation with the empty label, you just use - the empty label in one of the equation reference macros (see - below). This can be handy when you want to refer to an equation - shortly after its definition, say, in the sentence following the - displayed equation, and do not intend to refer to the equation - later. But use this trick with extreme caution: if later you change - the text and insert another empty definition between the original - definition and the reference, the reference will start to refer to - the new empty-labeled equation. - -'\eqdefn{LABEL}' - This is like '\eqdef', except it always omits the '\eqnum' command. - It can therefore be used in places where '\eqdef' can't; for - example, in a non-displayed equation. The text of the equation - number is not produced, so you can also use it in the (admittedly - unusual) circumstance when you want to define an equation label but - not print that label. - -'\eqref{LABEL}' - This produces a formatted reference to LABEL. If LABEL is undefined - (perhaps because it is a forward reference), it just produces the - text of the label itself. Otherwise, it calls '\eqprint'. - -'\eqrefn{LABEL}' - This produces the cross-reference text for LABEL. That is, it is - like '\eqref', except it doesn't call '\eqprint'. - - Equation labels can contain the same characters that are valid in -general cross-references. - - Eplain can create hypertext links for the equation references (*note -Equation reference hyperlinks::). - -* Menu: - -* Formatting equation references:: -* Subequation references:: - - -File: eplain.info, Node: Formatting equation references, Next: Subequation references, Up: Equation references - -4.11.1 Formatting equation references -------------------------------------- - -Both defining an equation label and referring to it should usually -produce output. This output is produced with the '\eqprint' macro, which -takes one argument, the equation number being defined or referred to. By -default, this just produces '(NUMBER)', where NUMBER is the equation -number. To produce the equation number in a different font, or with -different surrounding symbols, or whatever, you can redefine '\eqprint'. -For example, the following definition would print all equation numbers -in italics. (The extra braces define a group, to keep the font change -from affecting surrounding text.) - - \def\eqprint#1{{\it (#1)}} - - In addition to changing the formatting of equation numbers, you might -want to add more structure to the equation number; for example, you -might want to include the chapter number, to get equation numbers like -'(1.2)'. To achieve this, you redefine '\eqconstruct'. For example: - - \def\eqconstruct#1{\the\chapternumber.#1} - -(If you are keeping the chapter number in a count register named -'\chapternumber', naturally.) - - The reason for having both '\eqconstruct' and '\eqprint' may not be -immediately apparent. The difference is that '\eqconstruct' affects the -text that cross-reference label is defined to be, while '\eqprint' -affects only what is typeset on the page. The example just below might -help. - - Usually, you want equation labels to refer to equation numbers. But -sometimes you might want a more complicated text. For example, you might -have an equation '(1)', and then have a variation several pages later -which you want to refer to as '(1*)'. - - Therefore, Eplain allows you to give an optional argument (i.e., -arbitrary text in square brackets) before the cross-reference label to -'\eqdef'. Then, when you refer to the equation, that text is produced. -Here's how to get the example just mentioned: - - $$...\eqdef{a-eq}$$ - ... - $$...\eqdef[\eqrefn{a-eq}*]{a-eq-var}$$ - In \eqref{a-eq-var}, we expand on \eqref{a-eq}, ... - -We use '\eqrefn' in the cross-reference text, not '\eqref', so that -'\eqprint' is called only once. - - As another example, consider the following requirement: we want to -include chapter number in all equation references, and additionally we -want to include the part number when referencing an equation from any -part other than the one where the equation appears. For example, -references to the third equation in chapter 2 of part 1 should be -typeset as '(2.3)' throughout part 1, but as '(I.2.3)' in any other -part. Let's assume we have the current chapter and part numbers in count -registers '\chapnum' and '\partnum', respectively. - - The idea is to have '\eqconstruct' store the part number of the -equation (that is, the part number _at the time of definition_), so that -later '\eqprint' can compare the stored number with the current part -number (that is, the part number _at the time of reference_). The -complicating factor is that internally, the result of '\eqconstruct' is -both expanded and written out to the '.aux' file, _and_ used to typeset -the equation number, so the commands that store the part number should -behave correctly in both situations. This is difficult to achieve with -expandable commands; therefore, to avoid expansion problems, we are -going to use only TeX primitives, which are non-expandable: - - \newcount\eqpartnum - - \def\eqconstruct#1{% - \global\eqpartnum=\the\partnum\relax - \number\chapnum.#1% - } - - \def\eqprint#1{% - \setbox0=\hbox{#1}% - (\ifnum\partnum=\eqpartnum \else - \uppercase\expandafter{\romannumeral\eqpartnum}.% - \fi - \box0)% - }% - -In '\eqconstruct', besides constructing the base equation number (e.g., -'1.2'), we also store the part number of the equation in the count -register '\eqpartnum' ('\the\partnum' is expanded when the equation -number is written to the '.aux' file, so the equation label definition -in the '.aux' file will contain the actual part number). In '\eqprint', -we need to know the equation's part number before we typeset the base -equation number, therefore we first put the argument in a box, thus -causing '\eqpartnum' to be set. - - -File: eplain.info, Node: Subequation references, Prev: Formatting equation references, Up: Equation references - -4.11.2 Subequation references ------------------------------ - -Eplain also provides for one level of substructure for equations. That -is, you might want to define a related group of equations with numbers -like '2.1' and '2.2', and then be able to refer to the group as a whole: -"... in the system of equations (2)...". - - The commands to do this are '\eqsubdef' and '\eqsubdefn'. They take -one LABEL argument like their counterparts above, and generally behave -in the same way. The difference is in how they construct the equation -number: instead of using just '\eqnumber', they also use another -counter, '\subeqnumber'. This counter is advanced by one at every -'\eqsubdef' or '\eqsubdefn', and reset to zero at every '\eqdef' or -'\eqdefn'. - - You use '\eqref' to refer to subequations as well as main equations. - - To put the two together to construct the text that the label will -produce, they use a macro '\eqsubreftext'. This macros takes two -arguments, the "main" equation number (which, because the equation label -can be defined as arbitrary text, as described in the previous section, -might be anything at all) and the "sub" equation number (which is always -just a number). Eplain's default definition just puts a period between -them: - - \def\eqsubreftext#1#2{#1.#2}% - -You can redefine '\eqsubreftext' to print however you like. For example, -this definition makes the labels print as '2a', '2b', and so on. - - \newcount\subref - \def\eqsubreftext#1#2{% - \subref = #2 % The space stops a <number>. - \advance\subref by 96 % `a' is character code 97. - #1\char\subref - } - -Sadly, we must define a new count register, '\subref', instead of using -the scratch count register '\count255', because '#1' might include other -macro calls which use '\count255'. - - -File: eplain.info, Node: Indexing, Next: Justification, Prev: Equation references, Up: User definitions - -4.12 Indexing -============= - -Eplain provides support for generating raw material for an index, and -for typesetting a sorted index. A separate program must do the actual -collection and sorting of terms, because TeX itself has no support for -sorting. - - Eplain can create hypertext links pointing from the index to the -index terms (*note Index hyperlinks::). - - Eplain's indexing commands were designed to work with the program -MakeIndex, available from CTAN hosts in -'tex-archive/indexing/makeindex'; MakeIndex is also commonly included in -prepackaged TeX distributions. It is beyond the scope of this manual to -explain how to run MakeIndex, and all of its many options. See -<http://www.ctan.org/tex-archive/indexing/makeindex>. - - The basic strategy for indexing works like this: - - 1. For a document 'foo.tex', Eplain's indexing commands (e.g., '\idx'; - see the section 'Indexing terms' below) write the raw index - material to 'foo.idx'. - - 2. MakeIndex reads 'foo.idx', collects and sorts the index, and writes - the result to 'foo.ind'. - - 3. Eplain reads and typesets 'foo.ind' on a subsequent run of TeX. See - the section 'Typesetting an index' below. - -The 'texi2dvi' program can help you automate this process (*note -Invoking Eplain::). - - If your document needs more than one index, each must have its own -file. Therefore, Eplain provides the command '\defineindex', which takes -an argument that is a single letter, which replaces 'i' in the filenames -and in the indexing command names described below. For example, - - \defineindex{m} - -defines the command '\mdx' to write to the file 'foo.mdx'. Eplain simply -does '\defineindex{i}' to define the default commands. - - Note that MakeIndex does not use the above naming scheme for multiple -indexes. Unless instructed otherwise, MakeIndex always writes its output -to a file with extension '.ind'. For example, if you define an -additional index with the command '\defineindex{j}', you'll need to run -MakeIndex like this: - - $ makeindex book.jdx -o book.jnd - - For each index defined with '\defineindex{N}', Eplain provides a -switch '\ifNdx' which controls whether indexing commands write index -entries to the corresponding index file. However, even when index term -writing is disabled, indexing commands still do all other processing of -their arguments, including typesetting of proof index terms (*note -Proofing index terms::. - - For example, if you write '\idxfalse' near the beginning of a -document 'foo.tex' (before the first indexing command), Eplain will not -open the default index file ('foo.idx') and the corresponding indexing -commands ('\idx', '\sidx', etc.) will not write index entries there. -This may be useful for draft compilations of a manuscript, e.g., to -avoid the overhead of index file input/output. - -* Menu: - -* Indexing terms:: Specifying what to index. -* Typesetting an index:: Printing the sorted output. -* Customizing indexing:: Creating commands and specifying extra actions. - - -File: eplain.info, Node: Indexing terms, Next: Typesetting an index, Up: Indexing - -4.12.1 Indexing terms ---------------------- - -Indexing commands in Eplain come in pairs: one command that only writes -the index entry to the '.idx' file (see above section), and one that -also typesets the term being indexed. The former always starts with 's' -(for "silent"). In either case, the name always includes 'Idx', where I -is the index letter, also described above. Eplain defines the index 'i' -itself, so that's what we'll use in the names below. - - The silent form of the commands take a subterm as a trailing optional -argument. For example, '\sidx{truth}[definition of]' on page 75 makes an -index entry that will eventually be typeset (by default) as - - truth - definition of, 75 - - Also, the silent commands ignore trailing spaces. The non-silent ones -do not. - -* Menu: - -* Indexing commands:: Making index entries. -* Modifying index entries:: Ranges, see/see also, page number typesetting. -* Index entries with special characters:: -* Proofing index terms:: Noting index entries in the margins. - - -File: eplain.info, Node: Indexing commands, Next: Modifying index entries, Up: Indexing terms - -4.12.1.1 Indexing commands -.......................... - -Here are the commands. - - * '\sidx{TERM}[SUBTERM]' makes an index entry for TERM, optionally - with subterm SUBTERM. '\idx{TERM}' also produces TERM as output. - Example: - - \sidx{truth}[beauty of] - The beauty of truth is \idx{death}. - - Subterms at the second and further levels can also be specified in - SUBTERM, using the '\idxsubentryseparator' character to separate - them. This character is by default '!'. - - * '\sidxname{FIRST M.}{VON LAST}[SUBTERM]' makes an index entry for - 'VON LAST, FIRST M.'. You can change the ', ' by redefining - '\idxnameseparator'. '\idxname{FIRST M.}{VON LAST}' also produces - FIRST M. VON LAST as output. (These commands are useful special - cases of '\idx' and '\sidx'.) Example: - - \sidxname{Richard}{Stark} - \idxname{Donald}{Westlake} has written many kinds of novels, under - almost as many names. - - * '\sidxmarked\CS{TERM}[SUBTERM]' makes an index entry for - 'TERM[SUBTERM]', but TERM will be put in the index as '\CS{term}', - but still sorted as just TERM. '\idxmarked\CS{TERM}' also typesets - '\CS{term}'. This provides for the usual ways of changing the - typesetting of index entries. Example: - - \def\article#1{``#1''} - \sidxmarked\article{Miss Elsa and Aunt Sophie} - Peter Drucker's \idxmarked\article{The Polanyis} is a remarkable - essay about a remarkable family. - - * '\sidxsubmarked{TERM}\CS{subterm}' makes an index entry for TERM, - SUBTERM as usual, but also puts SUBTERM in the index as - '\CS{term}'. '\idxsubmarked{TERM}\CS{subterm}' also typesets 'TERM - \CS{subterm}', in the unlikely event that your syntax is convoluted - enough to make this useful. Example: - - \def\title#1{{\sl #1}} - \sidxsubmarked{Anderson, Laurie}\title{Strange Angels} - The \idxsubmarked{Anderson}\title{Carmen} is a strange twist. - - The commands above rely on MakeIndex's feature for separating sorting -of an index entry's from its typesetting. You can use this directly by -specifying an index entry as 'SORT@TYPESET'. For example: - - \sidx{Ap-weight@$A_\pi$-weight} - -will sort as 'Ap-weight', but print with the proper math. The '@' here -is MakeIndex's default character for this purpose. See -<http://www.ctan.org/tex-archive/indexing/makeindex>. To make an index -entry with an '@' in it, you have to escape it with a backslash; Eplain -provides no macros for doing this. - - After any index command, Eplain runs '\hookaction{afterindexterm}'. -Because the index commands always add a whatsit item to the current -list, you may wish to preserve a penalty or space past the new item. For -example, given a conditional '\if@aftersctnhead' set true when you're at -a section heading, you could do: - - \hookaction{afterindexterm}{\if@aftersctnhead \nobreak \fi} - - -File: eplain.info, Node: Modifying index entries, Next: Index entries with special characters, Prev: Indexing commands, Up: Indexing terms - -4.12.1.2 Modifying index entries -................................ - -All the index commands described in the previous section take an initial -optional argument before the index term, which modify the index entry's -meaning in various ways. You can specify only one of the following in -any given command, except that 'begin' and 'end' can be specified -together with 'pagemarkup=CS' (separate them with a comma without a -following space, like this: '[begin,pagemarkup=defn]'). - - These work via MakeIndex's "encapsulation" feature. *Note Customizing -indexing::, if you're not using the default characters for the MakeIndex -operators. The other optional argument (specifying a subterm) is -independent of these. - - Here are the possibilities: - -'begin' -'end' - These mark an index entry as the beginning or end of a range. The - index entries must match exactly for MakeIndex to recognize them. - Example: - - \sidx[begin]{future}[Cohen, Leonard] - ... - \sidx[end]{future}[Cohen, Leonard] - - will typeset as something like - - future, - Cohen, Leonard, 65-94 - -'see' - This marks an index entry as pointing to another; the real index - term is an additional (non-optional) argument to the command. Thus - you can anticipate a term readers may wish to look up, yet which - you have decided not to index. Example: - - \sidx[see]{analysis}[archetypal]{archetypal criticism} - - becomes - - analysis, - archetypal, see archetypal criticism - -'seealso' - Similar to 'see' (the previous item), but also allows for normal - index entries of the referencing term. The normal index entries - have to be created separately--'seealso' does _not_ contribute a - page number to the index entry. For example, if you have indexed a - term on pages 75, 97 and 114, and then add a 'seealso' entry for - the term: - - \sidx[seealso]{archetypal criticism}[elements of]{dichotomies} - - the index will contain - - archetypal criticism, - elements of, 75, 97, 114, see also dichotomies - - (Aside for the academically curious: The archetypally critical book - I took these dichotomous examples from is Laurence Berman's 'The - Musical Image', which I happened to co-design and typeset.) - -'pagemarkup=CS' - This puts '\CS' before the page number in the typeset index, thus - allowing you to underline definitive entries, italicize examples, - and the like. You do _not_ precede the control sequence CS with a - backslash. (That just leads to expansive difficulties.) Naturally - it is up to you to define the control sequences you want to use. - Example: - - \def\defn#1{{\sl #1}} - \sidx[pagemarkeup=defn]{indexing} - - becomes something like - - indexing, \defn{75} - - -File: eplain.info, Node: Index entries with special characters, Next: Proofing index terms, Prev: Modifying index entries, Up: Indexing terms - -4.12.1.3 Index entries with special characters -.............................................. - -Indexing terms with special characters can become quite cumbersome -because you have to keep both TeX and MakeIndex happy at the same time. -For example, while '!' has no special meaning for TeX, it is a subentry -separator for MakeIndex, therefore you'd have to escape occurrences of -literal '!' in index terms. Things get even more interesting with -characters which are special in both TeX and MakeIndex. - - This in turn has some implications for the non-silent forms of the -indexing commands (*note Indexing terms::), since TeX and MakeIndex use -different conventions for escaping characters. For example, this will -not typeset the exclamation point correctly within the text, while it -will come out right inside the index, after MakeIndex strips the quoting -character ('"'): - - \idx{"!} - -This would have to be rewritten using the silent command: - - !\sidx{"!} - -In general, it is a good idea to eschew the non-silent commands whenever -index term contains anything unusual. - - To understand this keep in mind that indexing commands read the terms -verbatim so that the terms can embed almost any character, and that's -what gets written into the '.idx' file. The non-silent forms then -typeset the term by rescanning the verbatim copy, hence for the -non-silent commands the term, besides being a valid MakeIndex input, -must also represent a valid TeX input. The silent commands don't have -this restriction--their terms only need to become valid TeX input -_after_ MakeIndex processes the '.idx' file and writes the '.ind' file. -This is what makes the non-silent commands less powerful and more -troublesome when dealing with special characters. - - Here's an example showing that terms for the silent commands can -contain almost any character: - - \sidx[see]{comments}[with %@with \verbatim %"|endverbatim] - {commenting with \verbatim %"|endverbatim} - -We didn't have to escape '%' in the sort string for MakeIndex, while we -had to put it inside the verbatim environment (*note Verbatim listing::) -in the part which MakeIndex will pass back to TeX. Also, we had to -escape the '|' character because it is special for MakeIndex. If you -have trouble understanding the reasons for the different types of -escaping used, it is best to examine the '.idx' and '.ind' files -resulting from processing the above input. - - As was mentioned, index terms can embed "almost any character", so -now we'll describe the exceptions. - - The following characters are reset to their usual meanings because -they are not useful verbatim: multiple consequent spaces are converted -into a single space; ASCII tab characters are treated as spaces; ASCII -return is treated as end-of-line (this means, among other things, that -long terms can be broken across several lines). - - You have to be careful with the begin- and end-group characters ('{' -and '}' by default). If they are matched, you don't have to do anything -special. For example: - - \sidx {braces {, }@braces - \verbatim {"|endverbatim, \verbatim }"|endverbatim} - -However, if they are not matched you have two problems on hand. The -first one is TeX--you have to instruct TeX to use something else as -begin- and/or end-group characters. Eplain provides an easy way to do -this: just define '\idxargopen' and/or '\idxargclose' to the begin- and -end-group characters you are going to use with indexing macros, and use -braces inside index terms without any restrictions. Here's an example: - - \def\idxargopen{`\<} - \def\idxargclose{`\>} - \sidx <left brace "{@left brace \verbatim "{"|endverbatim> - -In this example we've also dealt with the second problem--braces are -MakeIndex's grouping characters as well (by default), so we have escaped -unmatched braces with '"'. - - And the final note: if you need a subentry containing brackets ('[' -and ']'), avoid the optional argument of '\sidx' and friends, and use -instead MakeIndex's subentry separator to create the subentry with the -brackets in it: - - \sidx{entry!subentry with a bracket [} - - -File: eplain.info, Node: Proofing index terms, Prev: Index entries with special characters, Up: Indexing terms - -4.12.1.4 Proofing index terms -............................. - -As you are reading through a manuscript, it is helpful to see what terms -have been indexed, so you can add others, catch miscellaneous errors, -etc. (Speaking from bitter experience, I can say it is extremely -error-prone to leave all indexing to the end of the writing, since it -involves adding many TeX commands to the source files.) - - So Eplain puts index terms in the margin of each page, if you set -'\indexproofingtrue'. It is 'false' by default. The terms are typeset by -the macro '\indexproofterm', which takes a single argument, the term to -be typeset. Eplain's definition of '\indexproofterm' just puts it into -an '\hbox', first doing '\indexprooffont', which Eplain defines to -select the font 'cmtt8'. With this definition long terms run off the -page, but since this is just for proofreading anyway, it seems -acceptable. - - On the other hand, we certainly don't want the index term to run into -the text of the page, so Eplain uses the right-hand side of the page -rather than the left-hand page (assuming a language read left to right -here). So '\ifodd\pageno', Eplain kerns by '\outsidemargin', otherwise -by '\insidemargin'. If those macros are undefined, '\indexsetmargins' -defines them to be one inch plus '\hoffset'. - - To get the proofing index entries on the proper page, Eplain defines -a new insertion class '\@indexproof'. To unbox any index proofing -material, Eplain redefines '\makeheadline' to call '\indexproofunbox' -before the original '\makeheadline'. Thus, if you have your own output -routine, that redefines or doesn't use '\makeheadline', it's up to you -to call '\indexproofunbox' at the appropriate time. - - -File: eplain.info, Node: Typesetting an index, Next: Customizing indexing, Prev: Indexing terms, Up: Indexing - -4.12.2 Typesetting an index ---------------------------- - -The command '\readindexfile{i}' reads and typesets the '.ind' file that -MakeIndex outputs (from the '.idx' file which the indexing commands in -the previous sections write). Eplain defines a number of commands that -support the default MakeIndex output. - - More precisely, '\readindexfile' reads -'\indexfilebasename.INDEX-LETTERnd', where the INDEX-LETTER is the -argument. '\indexfilebasename' is '\jobname' by default, but if you have -different indexes in different parts of a book, you may wish to change -it, just as with bibliographies (*note Citations::). - - MakeIndex was designed to work with LaTeX; therefore, by default the -'.ind' file starts with '\begin{theindex}' and ends with -'\end{theindex}'. If no '\begin' has been defined, Eplain defines one to -ignore its argument and set up for typesetting the index (see below), -and also defines a '\end' to ignore its argument. (In a group, -naturally, since there is a primitive '\end'). - - Eplain calls '\indexfonts', sets '\parindent = 0pt', and does -'\doublecolumns' (*note Multiple columns::) at the '\begin{theindex}'. -'\indexfonts' does nothing by default; it's just there for you to -override. (Indexes are usually typeset in smaller type than the main -text.) - - It ends the setup with '\hookrun{beginindex}', so you can override -anything you like in that hook (*note Hooks::). For example: - - \hookaction{beginindex}{\triplecolumns} - - MakeIndex turns each main index entry into an '\item', subentries -into '\subitem', and subsubentries into '\subsubitem'. By default, the -first line of main entries are not indented, and subentries are indented -1em per level. Main entries are preceded by a '\vskip' of -'\aboveitemskipamount', '0pt plus2pt' by default. Page breaks are -encouraged before main entries ('\penalty -100'), but prohibited -afterwards--Eplain has no provision for "continued" index entries. - - All levels do the following: - - \hangindent = 1em - \raggedright - \hyphenpenalty = 10000 - - Each entry ends with '\hookrun{indexitem}', so you can change any of -this. For example, to increase the allowable rag: - - \hookaction{indexitem}{\advance\rightskip by 2em} - - Finally, MakeIndex outputs '\indexspace' between each group of -entries in the '.ind' file. Eplain makes this equivalent to '\bigbreak'. - - -File: eplain.info, Node: Customizing indexing, Prev: Typesetting an index, Up: Indexing - -4.12.3 Customizing indexing ---------------------------- - -By default, MakeIndex outputs ', ' after each term in the index. To -change this, you can add the following to your MakeIndex style ('.ist') -file: - - delim_0 "\\afterindexterm " - delim_1 "\\afterindexterm " - delim_2 "\\afterindexterm " - -Eplain makes '\afterindexterm' equivalent to '\quad'. - - You can also change the keywords Eplain recognizes (*note Modifying -index entries::): - -'\idxrangebeginword' - 'begin' - -'\idxrangeendword' - 'end' - -'\idxseecmdword' - 'see' - -'\idxseealsocmdword' - 'seealso' - - You can also change the magic characters Eplain puts into the '.idx' -file, in case you've changed them in the '.ist' file: - -'\idxsubentryseparator' - '!' - -'\idxencapoperator' - '|' - -'\idxbeginrangemark' - '(' - -'\idxendrangemark' - ')' - - There is no macro for the 'actual' ('@' by default) character, -because it's impossible to make it expand properly. - - You can change the (imaginary) page number that "see also" entries -sort as by redefining '\idxmaxpagenum'. This is 99999 by default, which -is one digit too many for old versions of MakeIndex. - - The words output by Eplain for "see" and "see also" index entries are -defined by '\indexseeword' and '\indexseealsowords' respectively. You -can change the typeface used for these words by redefining -'\seevariant'. And finally, the macros '\indexsee' and '\indexseealso' -actually produce the "see ..." entries, so you can redefine them if you -want something entirely different. If you do redefine them, make them -take two parameters, the term being referenced and the '\idxmaxpagenum' -(the latter should normally be ignored). See the example below. - - Unfortunately, it is impossible to reliably control the commas -produced by MakeIndex in front of "see ..." entries in the '.ind' file, -either at MakeIndex level or at Eplain level. However, the 'sed' script -contained in 'trimsee' distributed with Eplain in the 'util' directory -can be used to filter out these commas from the output of MakeIndex. For -example, suppose you want the following style for your "see ..." -entries: - - analysis, - archetypal (see archetypal criticism) - archetypal criticism, - elements of, 75, 97, 114 (see also dichotomies) - -You would need to redefine these macros in your TeX file: - - \def\indexsee#1#2{({\seevariant \indexseeword\/ }#1)} - \def\indexseealso#1#2{({\seevariant \indexseealsowords\/ }#1)} - -and then filter out the commas in front of the "see ..." entries by -running the following command to produce the '.ind' file (assuming the -name of the '.idx' file is 'myfile.idx' and the 'trimsee' script is -placed in the current directory): - - prompt$ cat myfile.idx | makeindex | ./trimsee > myfile.ind - - By default, 'trimsee' uses default page list separators and default -"see ..." command names. If you set up MakeIndex to use different page -list separator or change the names of '\indexsee' and '\indexseealso' -commands, it is possible to adjust the 'trimsee' script through its -command line options, which are the following: - -'-i IS' - Use IS as a regular expression matching separator before "see ..." - commands in the input (default: ', \+'). - -'-o OS' - Use OS as a separator to replace IS before "see ..." commands - (default: ' '). - -'-s SEE' - Use SEE as a regular expression matching "see ..." commands - (default: '\\indexsee'). - -'-h' -'--help' - Print a usage message. - -'-v' -'--version' - Print version. - - 'trimsee' reads input from the standard input, and directs its output -to the standard output. - - -File: eplain.info, Node: Justification, Next: Tables, Prev: Indexing, Up: User definitions - -4.13 Justification -================== - -Eplain defines three commands to conveniently justify multiple lines of -text: '\flushright', '\flushleft', and '\center'. - - They all work in the same way; let's take '\center' as the example. -To start centering lines, you say '\center' inside a group; to stop, you -end the group. Between the two commands, each end-of-line in the input -file also starts a new line in the output file. - - The entire block of text is broken into paragraphs at blank lines, so -all the TeX paragraph-shaping parameters apply in the usual way. This is -convenient, but it implies something else that isn't so convenient: -changes to any linespacing parameters, such as '\baselineskip', will -have _no effect_ on the paragraph in which they are changed. TeX does -not handle linespacing changes within a paragraph (because it doesn't -know where the line breaks are until the end of the paragraph). - - The space between paragraphs is by default one blank line's worth. -You can adjust this space by assigning to '\blanklineskipamount'; this -(vertical) glue is inserted after each blank line. - - Here is an example: - - {\center First line. - - Second line, with a blank line before. - } - -This produces: - - First line. - Second line, with a blank line before. - - You may wish to use the justification macros inside of your own -macros. Just be sure to put them in a group. For example, here is how a -title macro might be defined: - - \def\title{\begingroup\titlefont\center} - \def\endtitle{\endgroup} - - -File: eplain.info, Node: Tables, Next: Margins, Prev: Justification, Up: User definitions - -4.14 Tables -=========== - -Eplain provides a single command, '\makecolumns', to make generating one -particular kind of table easier. More ambitious LaTeX styles and macro -packages tackle more difficult applications. The 'autorows' feature of -the Memoir package provides similar functionality to this. - - Many tables are homogenous, i.e., all the entries are semantically -the same. The arrangement into columns is to save space on the page, not -to encode different meanings. In this kind of the table, it is useful to -have the column breaks chosen automatically, so that you can add or -delete entries without worrying about the column breaks. - - '\makecolumns' takes two arguments: the number of entries in the -table, and the number of columns to break them into. As you can see from -the example below, the first argument is delimited by a slash, and the -second by a colon and a space (or end-of-line). The entries for the -table then follow, one per line (not including the line with the -'\makecolumns' command itself). - - '\parindent' defines the space to the left of the table. '\hsize' -defines the width of the table. So you can adjust the position of the -table on the page by assignments to these parameters, probably inside a -group. - - You can also control the penalty at a page break before the -'\makecolumns' by setting the parameter '\abovecolumnspenalty'. Usually, -the table is preceded by some explanatory text. You wouldn't want a page -break to occur after the text and before the table, so Eplain sets it to -'10000'. But if the table produced by '\makecolumns' is standing on its -own, '\abovecolumnspenalty' should be decreased. - - If you happen to give '\makecolumns' a smaller number of entries than -you really have, some text beyond the (intended) end of the table will -be incorporated into the table, probably producing an error message, or -at least some strange looking entries. And if you give '\makecolumns' a -larger number of entries than you really have, some of the entries will -be typeset as straight text, probably also looking somewhat out of -place. - - Here is an example: - - % Arrange 6 entries into 2 columns: - \makecolumns 6/2: % This line doesn't have an entry. - one - two - three - four - five - six - Text after the table. - -This produces 'one', 'two', and 'three' in the first column, and 'four', -'five', and 'six' in the second. - - -File: eplain.info, Node: Margins, Next: Multiple columns, Prev: Tables, Up: User definitions - -4.15 Margins -============ - -TeX's primitives describe the type area in terms of an offset from the -upper left corner, and the width and height of the type. Some people -prefer to think in terms of the "margins" at the top, bottom, left, and -right of the page, and most composition systems other than TeX conceive -of the page laid out in this way. Therefore, Eplain provides commands to -directly assign and increment the margins. - -'\topmargin = DIMEN' -'\bottommargin = DIMEN' -'\leftmargin = DIMEN' -'\rightmargin = DIMEN' - These commands set the specified margin to the DIMEN given. The '=' - and the spaces around it are optional. The control sequences here - are not TeX registers, despite appearances; therefore, commands - like '\showthe\topmargin' will not do what you expect. - -'\advancetopmargin by DIMEN' -'\advancebottommargin by DIMEN' -'\advanceleftmargin by DIMEN' -'\advancerightmargin by DIMEN' - These commands change the specified margin by the DIMEN given. - - Regardless of whether you use the assignment or the advance commands, -Eplain always changes the type area in response, not the other margins. -For example, when TeX starts, the left and right margins are both one -inch. If you then say '\leftmargin = 2in', the right margin will remain -at one inch, and the width of the lines (i.e., '\hsize') will decrease -by one inch. - - When you use any of these commands, Eplain computes the old value of -the particular margin, by how much you want to change it, and then -resets the values of TeX's primitive parameters to correspond. -Unfortunately, Eplain cannot compute the right or bottom margin without -help: you must tell it the full width and height of the final output -page. It defines two new parameters for this: - -'\paperheight' - The height of the output page; default is 11truein. - -'\paperwidth' - The width of the output page; default is 8.5truein. - - If your output page has different dimensions than this, you must -reassign to these parameters, as in - - \paperheight = 11truein - \paperwidth = 17truein - - -File: eplain.info, Node: Multiple columns, Next: Footnotes, Prev: Margins, Up: User definitions - -4.16 Multiple columns -===================== - -Eplain provides for double, triple, and quadruple column output: say -'\doublecolumns', '\triplecolumns', or '\quadcolumns', and from that -point on, the manuscript will be set in columns. To go back to one -column, say '\singlecolumn'. - - You may need to invoke '\singlecolumn' to balance the columns on the -last page of output. - - To do a "column eject", i.e., move to the top of the next column, do -'\columnfill'. This does not actually force an eject, however: it merely -inserts an unbreakable space of (essentially) size '\@normalvsize' minus -'\pagetotal' (where '\@normalvsize' is the usual height of the page; to -implement multicolumns, Eplain multiplies '\vsize' itself by the number -of columns). In most circumstances, a column break will be forced after -this space (during the column splitting operation when the whole page is -output). Bugs are easily possible, unfortunately. - - The columns are separated by the value of the dimen parameter -'\gutter'. Default value is two picas. If you want to add vertical -material between the columns, use '\gutterbox'. For example, to put a -vertical line between columns, define '\gutterbox' as - - \def\gutterbox{\vbox to \dimen0{\vfil\hbox{\vrule height\dimen0}\vfil}}% - -The dimension counter '\dimen0' contains the height of the column. - - All the '\...columns' macros insert the value of the glue parameter -'\abovecolumnskip' before the multicolumn text, and the value of the -glue parameter '\belowcolumnskip' after it. The default value for both -of these parameters is '\bigskipamount', i.e., one linespace in plain -TeX. - - The macros take into account only the insertion classes defined by -plain TeX; namely, footnotes and '\topinsert's. If you have additional -insertion classes, you will need to change the implementation. - - Also, Eplain makes insertions the full page width. There is no -provision for column-width insertions. - - -File: eplain.info, Node: Footnotes, Next: Fractions, Prev: Multiple columns, Up: User definitions - -4.17 Footnotes -============== - -The most common reference mark for footnotes is a raised number, -incremented on each footnote. The '\numberedfootnote' macro provides -this. It takes one argument, the footnote text. - - If your document uses only numbered footnotes, you could make typing -'\numberedfootnote' more convenient with a command such as: - - \let\footnote = \numberedfootnote - -After doing this, you can type your footnotes as '\footnote{FOOTNOTE -TEXT}', instead of as '\numberedfootnote{FOOTNOTE TEXT}'. - - Eplain keeps the current footnote number in the count register -'\footnotenumber'. So, to reset the footnote number to zero, as you -might want to do at, for example, the beginning of a chapter, you could -say '\footnotenumber=0'. - - Plain TeX separates the footnote marker from the footnote text by an -en space (it uses the '\textindent' macro). In Eplain, you can change -this space by setting the dimension register '\footnotemarkseparation'. -The default is still an en. - - You can produce a space between footenotes by setting the glue -register '\interfootnoteskip'. The default is zero. - - '\parskip' is also set to zero by default before the beginning of -each footnote (but not for the text of the footnote). - - You can also control footnote formatting in a more general way: -Eplain expands the token register '\everyfootnote' before a footnote is -typeset, but after the default values for all the parameters have been -established. For example, if you want your footnotes to be printed in -seven-point type, indented by one inch, you could say: - - \everyfootnote = {\sevenrm \leftskip = 1in} - - By default, an '\hrule' is typeset above each group of footnotes on a -page. You can control the dimensions of this rule by setting the -dimension registers '\footnoterulewidth' and '\footnoteruleheight'. The -space between the rule and the first footnote on the page is determined -by the dimension register '\belowfootnoterulespace'. If you don't want -any rule at all, set '\footenoteruleheight=0pt', and, most likely, -'\belowfootnoterulespace=0pt'. The defaults for these parameters typeset -the rule in the same way as plain TeX: the rule is 0.4 points high, 2 -true inches wide, with 2.6 points below it. - - The space above the rule and below the text on the page is controlled -by the glue register '\skip\footins'. The default is a plain TeX -'\bigskip'. - - Eplain can create hypertext links for the footnote marks (*note -Footnote hyperlinks::). - - -File: eplain.info, Node: Fractions, Next: Paths, Prev: Footnotes, Up: User definitions - -4.18 Fractions -============== - -Exercise 11.6 of 'The TeXbook' describes a macro '\frac' for setting -fractions, but '\frac' never made it into plain TeX. So Eplain includes -it. - - '\frac' typesets the numerator and denominator in '\scriptfont0', -slightly raised and lowered. The numerator and denominator are separated -by a slash. The denominator must be enclosed in braces if it's more than -one token long, but the numerator need not be. (This is a consequence of -'\frac' taking delimited arguments; see page 203 of 'The TeXbook' for an -explanation of delimited macro arguments.) - - For example, '\frac 23/{64}' turns '23/64' into 23/64 (you can't see -the difference in the Info file). - - -File: eplain.info, Node: Paths, Next: Logos, Prev: Fractions, Up: User definitions - -4.19 Paths -========== - -When you typeset long pathnames, electronic mail addresses, or other -such "computer" names, you would like TeX to break lines at punctuation -characters within the name, rather than trying to find hyphenation -points within the words. For example, it would be better to break the -email address 'letters@alpha.gnu.ai.mit.edu' at the '@' or a '.', rather -than at the hyphenation points in 'letters' and 'alpha'. - - If you use the '\path' macro to typeset the names, TeX will find -these good breakpoints. The argument to '\path' is delimited by any -character other other than '\' which does not appear in the name itself. -'|' is often a good choice, as in: - - \path|letters@alpha.gnu.ai.mit.edu| - - You can control the exact set of characters at which breakpoints will -be allowed by calling '\discretionaries'. This takes the same sort of -delimited argument; any character in the argument will henceforth be a -valid breakpoint within '\path'. The default set is essentially all the -punctuation characters: - - \discretionaries |~!@$%^&*()_+`-=#{}[]:";'<>,.?\/| - - If for some reason you absolutely must use '\' as the delimiter -character for '\path', you can set '\specialpathdelimiterstrue'. (Other -delimiter characters can still be used.) TeX then processes the '\path' -argument about four times more slowly. - - The '\path' macro comes from 'path.sty', written by Nelson Beebe and -Philip Taylor and available at -<http://www.ctan.org/tex-archive/macros/latex/contrib/misc/path.sty>. - - -File: eplain.info, Node: Logos, Next: Boxes, Prev: Paths, Up: User definitions - -4.20 Logos -========== - -Eplain redefines the '\TeX' macro of plain TeX to end with '\null', so -that the proper spacing is produced when '\TeX' is used at the end of a -sentence. The other ...TeX macros listed here do this, also. - - Eplain defines '\AMSLaTeX', '\AMSTeX', '\BibTeX' '\eTeX', '\ExTeX', -'\LAMSTeX', '\LaTeX', '\MF', '\SLiTeX', '\XeLaTeX', and '\XeTeX' to -produce their respective logos. (Sorry, the logos are not shown here.) -Some spelling variants of these are also supported. - - Most of these macros come from 'texnames.sty', compiled by Nelson -Beebe and available at -<http://www.ctan.org/tex-archive/info/biblio/texnames.sty>. - - -File: eplain.info, Node: Boxes, Next: Checking for PDF output, Prev: Logos, Up: User definitions - -4.21 Boxes -========== - -The solid rectangle that Eplain uses as a marker in unordered lists -(*note Lists::) is available by itself: just say '\blackbox'. - - You can create black boxes of arbitrary size with '\hrule' or -'\vrule'. - - You can also get unfilled rectangles with '\makeblankbox'. This takes -two explicit arguments: the height and depth of the rules that define -the top and bottom of the rectangle. (The two arguments are added to get -the width of the left and right borders, so that the thickness of the -border is the same on all four sides.) It also uses, as implicit -arguments, the dimensions of '\box0' to define the dimensions of the -rectangle it produces. (The contents of '\box0' are ignored.) - - Here is an example. This small raised open box is suitable for -putting next to numbers in, e.g., a table of contents. - - \def\openbox{% - \ht0 = 1.75pt \dp0 = 1.75pt \wd0 = 3.5pt - \raise 2.75pt \makeblankbox{.2pt}{.2pt} - } - - Finally, you can put a box around arbitrary text with '\boxit'. This -takes one argument, which must itself be a (TeX) box, and puts a printed -box around it, separated by '\boxitspace' white space (3 points by -default) on all four sides. For example: - - \boxit{\hbox{This text is boxed.}} - - The reason that the argument must be a box is that when the text is -more than one line long, TeX cannot figure out the line length for -itself. Eplain does set '\parindent' to zero inside '\boxit', since it -is very unlikely you would want indentation there. (If you do, you can -always reset it yourself.) - - '\boxit' uses '\ehrule' and '\evrule' so that you can easily adjust -the thicknesses of the box rules. *Note Rules::. - - -File: eplain.info, Node: Checking for PDF output, Next: Loading LaTeX packages, Prev: Boxes, Up: User definitions - -4.22 Checking for PDF output -============================ - -pdfTeX is a TeX variant that can output both '.dvi' and '.pdf' (Adobe's -Portable Document Format) files (see -<http://www.ctan.org/tex-archive/systems/pdftex>). You might sometimes -want to know whether the target format is '.pdf' or '.dvi'. The '\ifpdf' -switch can be used to detect pdfTeX in PDF mode: - - \ifpdf - This text is produced when pdfTeX is in PDF mode. - \else - This text is produced when pdfTeX is in DVI mode, - or when some program other than pdfTeX is used. - \fi - - Keep in mind that '\ifpdf' is set based on the value of the -'\pdfoutput' primitive of pdfTeX at the time Eplain is loaded. If you -change the value of '\pdfoutput' after you load Eplain, '\ifpdf' will -not reflect the change. - - Eplain defines '\ifpdf' by incorporating Heiko Oberdiek's -'ifpdf.sty', which is available at -<http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/ifpdf.sty>. - - -File: eplain.info, Node: Loading LaTeX packages, Prev: Checking for PDF output, Up: User definitions - -4.23 Loading LaTeX packages -=========================== - -Eplain provides a limited support for loading LaTeX packages ('.sty' -files--not '.cls'). This will mostly work for packages which were -designed with plain TeX compatibility in mind, which means that most -LaTeX packages cannot be loaded. The packages which are known to work -are listed below (*note Packages known to work::). If you discover a -working package which is not in the list, please report it to the Eplain -mailing list (*note Introduction::). - - To set up a pseudo-LaTeX environment for the packages, Eplain uses -'miniltx.tex' -(<http://www.ctan.org/tex-archive/macros/plain/graphics/miniltx.tex>) -from the LaTeX graphics collection, written by David Carlisle and -Sebastian Rahtz (the collection is available at -<http://www.ctan.org/tex-archive/macros/latex/required/graphics>). -Eplain extends 'miniltx.tex' to provide some additional features, e.g., -support for package options. - -* Menu: - -* The \usepackage command:: Command to load packages. -* Environment for loading packages:: Environment for the \usepackage commands. -* Packages known to work:: Packages supported with Eplain. -* Packages known not to work:: Packages known not to work with Eplain. - - -File: eplain.info, Node: The \usepackage command, Next: Environment for loading packages, Up: Loading LaTeX packages - -4.23.1 The '\usepackage' command --------------------------------- - -'\usepackage' loads a LaTeX package. Its syntax is similar to that of -LaTeX's '\usepackage' command: - - \usepackage[OPTIONS]{PACKAGES}[VERSION] - -where OPTIONS is a comma-separated list of package options, PACKAGES is -a comma-separated list of packages to load (without the '.sty' suffix), -and VERSION is a package version number given as a date in the format -'YYYY/MM/DD'. If an older version of the package is found, a warning is -issued. If several packages are loaded within a single '\usepackage' -command, the OPTIONS will be applied to each of the packages. As usual, -parameters in square brackets are optional and can be omitted (together -with the square brackets). - - For example: - - \usepackage[foo,bar]{pack1,pack2}[2005/08/29] - -will load packages 'pack1' and 'pack2', each with the options 'foo' and -'bar', and will check that each of the packages are dated 2005/08/29 or -newer. - - -File: eplain.info, Node: Environment for loading packages, Next: Packages known to work, Prev: The \usepackage command, Up: Loading LaTeX packages - -4.23.2 Environment for loading packages ---------------------------------------- - -Some packages request that certain commands are executed after all -packages have been loaded. In LaTeX, this means that the commands are -executed at the beginning of the document, after the so-called -"preamble". Neither plain TeX nor Eplain have a concept of preamble; -therefore, Eplain requires that all packages be loaded inside a -'\beginpackages...\endpackages' block. For example: - - \beginpackages - \usepackage[foo,bar]{pack1} - \usepackage{pack2} - \endpackages - -This requirement enables Eplain to execute the "delayed" commands at the -end of the '\beginpackages...\endpackages' block. - - For the same reason, it is advisable to specify only one such block -per document, just like there is only one preamble in LaTeX. - - Both the 'miniltx.tex' file used by Eplain and some LaTeX packages -redefine TeX's primitive '\input' to be a macro. Under plain TeX, users -probably expect the primitive '\input'. Therefore, at the beginning of -the '\beginpackages...\endpackages' block Eplain saves the meaning of -'\input' as '\eplaininput' and restores the original '\input' at the end -of the block. This usually means that the primitive '\input' is -restored, unless you (or some other macro package you've loaded -directly) have redefined it before calling '\beginpackages'. In case you -need to access the package-provided '\input', Eplain saves it as -'\packageinput'. - - Along the same lines, Eplain restores the catcode of '@' at -'\endpackages' to whatever it was before (using '\resetatcatcode', as -defined by 'miniltx.tex'). This is needed because 'miniltx.tex', read by -'\beginpackages', does not restore the catcode of '@', but leaves it as -11 (letter). - - Sometimes you may encounter packages which make conflicting -redefinitions of '\input'. Common symptoms are TeX spewing -incomprehensible error messages or hanging in a loop at a call to -'\input'. This sometimes cna be cured by restoring '\input' to -'\eplaininput' before loading each package. For example: - - \beginpackages - \usepackage{pack1} - \let\input\eplaininput - \usepackage{pack2} - \endpackages - - -File: eplain.info, Node: Packages known to work, Next: Packages known not to work, Prev: Environment for loading packages, Up: Loading LaTeX packages - -4.23.3 Packages known to work ------------------------------ - -The following table lists packages that had been tested and are known to -work with Eplain, and locations where you can find manuals for these -packages. Some of the short descriptions of the packages were taken from -the documentation for those packages. - -autopict ('2001/06/04 v1.1j Picture mode autoload file') - <http://tug.org/eplain/misc/ltpictur.pdf> - - This is the LaTeX "picture mode", started by '\begin{picture}' and - ended by '\end{picture}' (in LaTeX, this package is not explicitly - loaded since it is part of the LaTeX kernel). It provides commands - to draw simple figures inside your document without resorting to - any external tools. - -color ('1999/02/16 v1.0i Standard LaTeX Color (DPC)') -graphics ('2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR)') -graphicx ('1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)') - <http://www.ctan.org/tex-archive/macros/latex/required/graphics/grfguide.pdf> - - These packages are from the LaTeX graphics collection. They provide - commands for changing text/page colors, text rotation and scaling, - and much more. - - *Warning 1:* If you encounter problems loading one of these - packages under pdfTeX (more specifically, when pdfTeX reads - 'supp-mis.tex'), the cause may be an outdated 'supp-mis.tex' (part - of ConTeXt, a typesetting system for TeX) installed on your system. - The problem was fixed in 'supp-mis.tex' version 2004.10.26. You can - obtain up-to-date versions of 'supp-mis.tex' and the accompanying - 'supp-pdf.tex' from - <http://www.ctan.org/tex-archive/macros/pdftex/graphics>. To - convince TeX to use the new files, you have the following options - in the decreasing order of preference: - - 1. put the new files in the same directory with your document; - - 2. overwrite the outdated files installed by your TeX - distribution; - - 3. install the new 'supp-mis.tex' and 'supp-pdf.tex' files in the - relevant subdirectory of your local 'texmf' tree (for info on - TeX directory structure see - <http://www.tex.ac.uk/cgi-bin/texfaq2html?label=tds>); - - 4. upgrade your ConTeXt installation. - - Note that option 1 is the safest but provides the fix only for your - current document. Options 2 and 3 will usually suffice for Eplain - but may break ConTeXt. Option 4 is the most general but is more - complicated than the first three. Be sure to backup any files you - overwrite. Also keep in mind that upgrading your TeX distribution - may overwrite files you install in the system 'texmf' tree. - *End of warning 1.* - - *Warning 2:* If you encounter problems using the '\pagecolor' - command from the 'color.sty' package under pdfTeX, the cause may be - an outdated pdfTeX color and graphics driver 'pdftex.def'. The - problem was fixed in 'pdftex.def' version 0.03p. You can obtain an - up-to-date version from - <http://www.ctan.org/tex-archive/graphics/pdftex/pdftex.def>. - *End of warning 2.* - - The 'graphics'/'graphicx' packages have the option 'draft' which - instructs '\includegraphics' not to include the graphics but - instead typeset a box with the dimensions of the graphics and the - name of the graphics file in typewriter type at the center of the - box. These packages expect the LaTeX-provided command '\ttfamily' - to switch to the typewrite type. This command is not defined by - 'miniltx.tex', therefore Eplain defines it and makes it equivalent - to plain TeX's '\tt'. - - *Note Hyperlinks (xhyper.tex)::, for the demonstration of text - rotation and graphics inclusion using the 'graphicx' package, and - using the 'color' package to colorize hypertext links. - - Klaus Ho"ppner has written a nice introduction to the LaTeX - graphics packages and different graphics formats. You can download - it from - <http://www.tug.org/pracjourn/2005-3/hoeppner> - -epstopdf ('2009/07/16 v2.2 Conversion with epstopdf on the fly (HO)') - <http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek> - - This package does on-the-fly conversion of Encapsulated PostScript - (EPS) graphics into Portable Document Format (PDF) graphics for - inclusion with the '\includegraphics' command from the - 'graphics'/'graphicx' packages, so that you do not have to - explicitly call the 'epstopdf' script. - -psfrag ('1998/04/11 v3.04 PSfrag (MCG)') - <http://www.ctan.org/tex-archive/macros/latex/contrib/psfrag/pfgguide.pdf> - - PSfrag allows the user to precisely overlay Encapsulated PostScript - (EPS) files with arbitrary (La)TeX constructions. In order to - accomplish this, the user places a simple text "tag" in the - graphics file, as a "position marker" of sorts. Then, using simple - (La)TeX commands, the user instructs PSfrag to remove that tag from - the figure, and replace it with a properly sized, aligned, and - rotated (La)TeX equation. - -soul ('2003/11/17 v2.4 letterspacing/underlining (mf)') - <http://www.ctan.org/tex-archive/macros/latex/contrib/soul> - - This package provides hyphenatable letterspacing (spacing out), - underlining, and some derivatives. The package is optimized for - LaTeX, but works with plain TeX--you don't actually need to load it - with the '\usepackage' command, just say '\input soul.sty'. If you - intend to use the highlighting macros of 'soul', don't forget to - load the 'color' package. - -url ('2005/06/27 ver 3.2 Verb mode for urls, etc.') - <http://www.ctan.org/tex-archive/macros/latex/contrib/misc/url.sty> - - This package provides a form of '\verbatim' that allows line breaks - at certain characters or combinations of characters, accepts - reconfiguration, and can usually be used in the argument to another - command. It is intended for email addresses, hypertext links, - directories/paths, etc., which normally have no spaces. - - Eplain can create hypertext links with the '\url' command (*note - URL hyperlinks::). - - Be sure to get a version dated at least 2005/06/27, as older - versions have problems in plain TeX. - - -File: eplain.info, Node: Packages known not to work, Prev: Packages known to work, Up: Loading LaTeX packages - -4.23.4 Packages known not to work ---------------------------------- - -The following packages are known not to work with Eplain: - -hyperref - <http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref> - - This package depends heavily on LaTeX, so that it is mostly - unusable outside of LaTeX. Eplain provides its own macros for - creating hyperlinks, see *note Hyperlinks::. - -pict2e ('2005/07/15 v0.2r Improved picture commands (HjG,RN)') - <http://www.ctan.org/tex-archive/macros/latex/contrib/pict2e> - -xcolor ('2005/06/06 v2.03 LaTeX color extensions (UK)') - <http://www.ctan.org/tex-archive/macros/latex/contrib/xcolor> - - -File: eplain.info, Node: Hyperlinks, Next: Arrow theoretic diagrams, Prev: User definitions, Up: Top - -5 Hyperlinks -************ - -This chapter describes the support which Eplain provides for hypertext -links ("hyperlinks" for short). Hyperlinks can be created implicitly by -the cross-reference, indexing and other macros in Eplain. Macros for -constructing explicit hyperlinks are also provided. - -* Menu: - -* Introduction to hyperlinks:: -* Explicit hyperlinks:: -* Implicit hyperlinks:: -* Hyperlink drivers:: -* Setting hyperlink types and options:: -* Turning hyperlinks on/off:: - - -File: eplain.info, Node: Introduction to hyperlinks, Next: Explicit hyperlinks, Up: Hyperlinks - -5.1 Introduction to hyperlinks -============================== - -The original TeX engine has no built-in support for hyperlinks (a.k.a. -hypertext links). Many of the present-day file formats with hyperlinking -capabilities did not even exist at the time TeX was written. However, -TeX's '\special' primitive can be used to instruct TeX to write special -directives into its '.dvi' output file. These directives are not -interpreted by TeX in any way; they are intended for programs which -process the '.dvi' files produced by TeX, be it printing or converting -to other formats, such as '.ps' or '.pdf'. - - Another approach is to extend the original TeX engine with the -ability to generate one of the hyperlinking formats; TeX's set of -primitives can be extended to include hyperlink commands. This is the -approach used by the pdfTeX engine, which is capable of producing '.pdf' -files directly from the TeX source, skipping the '.dvi' generation and -processing step. - - It turns out that the sets of commands for different formats are -mostly not interchangeable, as each of the file formats has its own -quirks and capabilities. And this is where Eplain "hyperlink drivers" -come into play. - - In order for Eplain to generate proper commands, Eplain has to know -two things: which engine or '.dvi' processor you are using, and the set -of commands it understands. - - The knowledge about the commands that the various processors -understand is programmed into Eplain's hyperlink drivers. Eplain -provides three drivers: 'hypertex' (implementation of the HyperTeX -standard, see <http://arxiv.org/hypertex>), and 'pdftex' and 'dvipdfm' -(named after the programs which process the hyperlink commands, pdfTeX -and dvipdfm). Therefore, Eplain can only produce HyperTeX commands and -hyperlink commands for one of these two programs--except that the -extended 'dvipdfmx' program can be used as well as the original -'dvipdfm', since they are compatible. - - To tell Eplain which '.dvi' processor or extended TeX engine you are -using, use the command '\enablehyperlinks'. - - For example: - - \enablehyperlinks - -instructs Eplain to attempt to automatically detect which driver to use, -as follows: if it detects pdfTeX in PDF mode, it loads the 'pdftex' -driver. If it does not detect pdfTeX in PDF mode, the 'hypertex' driver -is loaded. The detection is based on the '\ifpdf' switch (*note Checking -for PDF output::). - - If necessary, you can explicitly specify the driver name: - - \enablehyperlinks[pdftex] - -will start producing hyperlinks under the assumption that you are using -pdfTeX. - - Eplain does not produce any hyperlinks until you explicitly enable -them with '\enablehyperlinks'. For one thing, this keeps Eplain -backward-compatible with previous releases without hyperlink support. -For another, you may be using a program other than pdfTeX or 'dvipdfm', -which does not understand their hyperlink commands or the HyperTeX -commands. - -Concepts and Terminology ------------------------- - -In general, hyperlinks work as follows. You mark some place in your -document as a hyperlink destination, associating a "hyperlink label" -with that destination. Next, somewhere within your document, you create -a hyperlink, using a label to identify the destination you want this -link to point to. A hyperlink is a region in the document (which can -take many forms, for example, text or a picture); when a user clicks on -that region, they will be taken to a place in the document marked by the -corresponding destination. The following two sections (*note Explicit -hyperlinks::, and *note Implicit hyperlinks::) describe the macros you -can use to define destinations and create links pointing to those -destinations. - - In the rest of this chapter, we will often need to refer to links and -destinations jointly, in which case we will use the term "hyperlinks". -We will use the terms "links" and "destinations" in cases when we need -to refer specifically to links or destinations. - - Hyperlink drivers provide several kinds of links and destinations. We -will refer to them as "link types" and "destination types". - - For example, one of the destination types that the 'pdftex' driver -provides is the 'xyz' type; when the user follows a link pointing to an -'xyz' destination, the exact location marked by that destination is -displayed. Another destination type provided by the 'pdftex' driver is -the 'fit' type; when the user follows a link pointing to a 'fit' -destination, the page containing that destination is zoomed to fit into -the window in which the document is displayed. - - Similarly, drivers support various link types. For example, with the -'pdftex' driver, the usual link type used to refer to destinations in -the current document is called 'name'. You can also create a link -pointing to another local document (by using the 'filename' link type) -or to a URL (by using the 'url' link type). - - In addition, each hyperlink driver supports a number of destination -and link "options". By setting these options you can customize hyperlink -parameters (e.g., the thickness of the border drawn around a hyperlink) -or pass information to hyperlinks (for example, file name of a document, -for a link pointing to a destination in another document). - - *Note Hyperlink drivers::, for the description of hyperlink types and -options supported by the drivers. *Note Setting hyperlink types and -options::, for the information on how to set hyperlink options. - - -File: eplain.info, Node: Explicit hyperlinks, Next: Implicit hyperlinks, Prev: Introduction to hyperlinks, Up: Hyperlinks - -5.2 Explicit hyperlinks -======================= - -Explicit hyperlinks are created by you, in the source of your document. -The simplest command is '\hldest', which marks the current position in -your document as a destination: - - \hldest{TYPE}{OPTIONS}{LABEL} - -Here TYPE is one of the destination types supported by the hyperlink -driver (*note Hyperlink drivers::), OPTIONS is a comma-separated list of -option assignments, and LABEL is the hyperlink label to associate with -this destination. This label will identify the destination when creating -links pointing to this destination. For example, with the 'pdftex' -driver, the command - - \hldest{xyz}{zoom=2000}{index} - -creates a destination of type 'xyz' ("the current position"), sets the -magnification ratio for this destination to be 200%, and associates the -label 'index' with the destination. - - Another command, '\hlstart', paired with '\hlend', turns all -intervening material into a link: - - \hlstart{TYPE}{OPTIONS}{LABEL} ... \hlend - -Here TYPE, OPTIONS and LABEL have the same meaning as for '\hldest'. -Continuing the previous example, - - \hlstart{name}{bstyle=U,bwidth=2}{index} Index\hlend - -typesets the word 'Index' as a link with underline border of -width 2 PostScript points, pointing to the named destination 'index' -defined in the previous example. (The other options, like highlight mode -and border color, are determined by the defaults, *note Setting default -types and options::). - - The LABEL argument of both '\hldest' and '\hlstart' can contain -special characters (such as '#', '%', '&', '~', etc.) without any -escaping. This is especially important for URL links supported by some -drivers (*note Hyperlink drivers::). - - Both '\hldest' and '\hlstart' ignore following spaces. - - Both '\hldest' and '\hlstart' expand the first token of OPTIONS once, -so you can save a list of options in a macro and pass it for the -OPTIONS. For example: - - \def\linkopts{bstyle=U,bwidth=2} - \hlstart{name}{\linkopts}{index}Index\hlend - -is functionally equivalent to the previous example. - - *Note Hyperlinks (xhyper.tex)::, for a demonstration of the usage of -explicit hyperlinks. - - -File: eplain.info, Node: Implicit hyperlinks, Next: Hyperlink drivers, Prev: Explicit hyperlinks, Up: Hyperlinks - -5.3 Implicit hyperlinks -======================= - -"Implicit hyperlinks" are hyperlinks created implicitly by various -Eplain macros, such as the macros for citations, cross-references, -indexing, etc. - - All such macros are divided into "link groups" and "destination -groups" (or "linkgroups" and "destgroups" for short) so that parameters -can be set individually for each group. For example, all equation macros -which define a destination are assigned to the 'eq' destgroup; equation -macros which create a link are assigned to the 'eq' linkgroup. By -setting parameters for the 'eq' linkgroup (destgroup), you can uniformly -customize all links (destinations) related to equation references, -without interfering with settings for the other groups. - - *Note Setting hyperlink types and options::, for information on how -to set parameters for a group. - - Here is the list of the linkgroups: - - hrefint, hrefext, url, cite, ref, xref, eq, idx, foot, footback. - - And here are the destgroups: - - bib, li, definexref, xrdef, eq, idx, foot, footback. - - *Note Hyperlinks (xhyper.tex)::, for a demonstration of the usage of -implicit hyperlinks. - - The following subsections describe each of the linkgroups and -destgroups and the hyperlink support provided. - -* Menu: - -* General hyperlinks:: hrefint, hrefext -* URL hyperlinks:: url -* Citation hyperlinks:: cite, bib -* List hyperlinks:: li -* Cross-reference hyperlinks:: definexref, ref -* Page reference hyperlinks:: xrdef, xref -* Equation reference hyperlinks:: eq -* Index hyperlinks:: idx -* Footnote hyperlinks:: foot, footback -* Contents hyperlinks:: - - -File: eplain.info, Node: General hyperlinks, Next: URL hyperlinks, Up: Implicit hyperlinks - -5.3.1 General hyperlinks: hrefint, hrefext ------------------------------------------- - -'\href{URL}{TEXT}' typesets TEXT as a link to URL. It basically does -what the explicit hyperlink macros do (*note Explicit hyperlinks::), but -is more convenient (at the expense of flexibility). - - If URL starts with '#', the rest of URL is assumed to be a local -hyperlink destination name (destination within the same document). -Parameters for these links can be set by customizing the 'hrefint' -linkgroup. For example: - - See \href{#intro}{Introduction} - -will make 'Introduction' into an internal link, which might have been -created, e.g., with '\xrdef{intro}'. - - If URL does not start with '#', it is assumed to be a URL link. -Parameters for these links can be set by customizing the 'hrefext' -linkgroup. The special characters (such as '#' and '~') in the URL don't -need to be escaped. For example: - - \href{http://tug.org/eplain/doc/eplain.html#Hyperlinks}{Hyperlinks - in Eplain} - \href{mailto:tex-eplain@tug.org}{Eplain mailing list} - -*Note URL hyperlinks::, for another way to create URL hyperlinks. - - The TEXT argument of '\href' can contain verbatim text (*note -Verbatim listing::) or other macros which manipulate character catcodes. -For example: - - \href{#WeirdChars}{The weird chars \verbatim #&%$~|endverbatim} - - '\href' does not currently handle other link types, such as 'file:' -and 'run:' links. - - -File: eplain.info, Node: URL hyperlinks, Next: Citation hyperlinks, Prev: General hyperlinks, Up: Implicit hyperlinks - -5.3.2 URL hyperlinks: url -------------------------- - -The 'url' linkgroup covers the '\url' command from the LaTeX package -'url' (*note Packages known to work::), as well as any new '\url'-like -commands you define. The type for this linkgroup is set to 'url' by the -drivers which support this link type. 'url' links use the parameter to -the '\url' command as the URL to point to. - - You may be using the '\url' command to typeset something other than a -URL, e.g., a path, for which you do not want a link to be created; in -that case, you can disable the 'url' linkgroup with the command -'\hloff[url]' (*note Turning hyperlinks on/off for a group::). - - By default, URL (and other types of) links are boxed, so that they -are visually marked even if you do not load the LaTeX 'color' package -(*note Loading LaTeX packages::) and therefore link text is not colored. -You can see the effect by compiling the following code snippet (be sure -to get a modern 'url.sty', older versions do not work in plain TeX; -*note Packages known to work::): - - \input eplain - \beginpackages - \usepackage{url} - \endpackages - - \enablehyperlinks - - \url{http://foo/bar} - - \url{mailto:foobar@example.org} - - \bye - - If the hyperlink driver you use supports the link option 'bwidth' -(*note Hyperlink drivers::), you can produce colored links with no -border around them. Try this: - - \input eplain - \beginpackages - \usepackage{url} - \usepackage{color} - \endpackages - - \enablehyperlinks - \hlopts{bwidth=0} - - \url{http://foo/bar} - - \url{mailto:foobar@example.org} - - \bye - -The command '\hlopts{bwidth=0}' sets border width to zero as the default -for all links, and loading the 'color' package automatically colors -links using the default color (*note Options supported by all -drivers::). If you want the border width setting to apply to URL links -only, say '\hlopts[url]{bwidth=0}' (*note Setting hyperlink types and -options::). - - -File: eplain.info, Node: Citation hyperlinks, Next: List hyperlinks, Prev: URL hyperlinks, Up: Implicit hyperlinks - -5.3.3 Citation hyperlinks: cite, bib ------------------------------------- - -The 'cite' linkgroup includes only the '\cite' command (*note -Citations::). '\cite' turns each of the references in the list into a -link pointing to the respective bibliography entry produced by the -'\bibliography' command. - - The 'bib' destgroup includes the macros related to the -'\bibliography' command (*note Citations::). '\bibliography' inputs a -'.bbl' file, which contains a list of bibliography entries. For each of -the entries, a destination is defined. - - Both commands use the citation label as the hyperlink label. - - -File: eplain.info, Node: List hyperlinks, Next: Cross-reference hyperlinks, Prev: Citation hyperlinks, Up: Implicit hyperlinks - -5.3.4 List hyperlinks: li -------------------------- - -The 'li' destgroup consists of the '\li' command (*note Lists::), which -defines a destination if you supply the optional argument -(cross-reference label). This label is also used as the hyperlink label. - - -File: eplain.info, Node: Cross-reference hyperlinks, Next: Page reference hyperlinks, Prev: List hyperlinks, Up: Implicit hyperlinks - -5.3.5 Cross-reference hyperlinks: definexref, ref -------------------------------------------------- - -The 'definexref' destgroup is for the '\definexref' command (*note -Defining generic references::). '\definexref' defines a destination -using the cross-reference label (the first argument) as the hyperlink -label. - - The 'ref' linkgroup includes '\refn' and '\xrefn' (they are -synonyms), '\ref', and '\refs' (*note Using generic references::). - - '\refn' turns the cross-reference it produces into a link, using the -cross-reference label as the hyperlink label. If an optional argument is -present, it is tied by '\reftie' to the reference and become part of the -link. - - '\ref' works similarly to '\refn'. It takes an optional argument, -which is treated the same way as the optional argument to '\refn'. In -addition, '\ref' can produce a "class word". Both the optional argument -and the class word become part of the link, when present. The -cross-reference is tied by '\reftie' to the preceding word. The optional -argument is separated from the class word by '\refspace'. - - Unlike '\ref', '\refs' does not take an optional argument and does -not make the class word part of the link, which is appropriate for its -intended use. - - -File: eplain.info, Node: Page reference hyperlinks, Next: Equation reference hyperlinks, Prev: Cross-reference hyperlinks, Up: Implicit hyperlinks - -5.3.6 Page reference hyperlinks: xrdef, xref --------------------------------------------- - -The 'xrdef' destgroup is for '\xrdef' (*note Page references::). -'\xrdef' defines a destination using cross-reference label as the -hyperlink label. - - The 'xref' linkgroup includes the '\xref' command (*note Page -references::). '\xref' turns its optional argument (followed by -'\refspace'), '\xrefpageword' and the cross-reference (page number) into -a link, using the cross-reference label as the hyperlink label. - - -File: eplain.info, Node: Equation reference hyperlinks, Next: Index hyperlinks, Prev: Page reference hyperlinks, Up: Implicit hyperlinks - -5.3.7 Equation reference hyperlinks: eq ---------------------------------------- - -All commands that define equation labels are part of the 'eq' destgroup. -These are '\eqdef', '\eqdefn', '\eqsubdef' and '\eqsubdefn' (*note -Equation references::). All these commands use the equation label as the -hyperlink label. However, if the equation label is empty, they make up a -(hopefully) unique hyperlink label for the destination. This label will -be used for the link when you refer to this empty-labeled equation with -one of the equation reference macros. - - The command '\phantomeqlabel' is called to generate hyperlink labels -for the empty-labeled equations. By default, it produces the labels in -the format 'PHEQNUMBER', where NUMBER comes from the count register -'\phantomeqnumber'; this count register is incremented at every -empty-labeled equation definition. - - The commands '\eqref' and '\eqrefn' (*note Equation references::) -form the 'eq' linkgroup. These commands take an optional argument, -which, when present, is tied with '\reftie' to the equation reference -and becomes part of the link. The equation label is used for the -hyperlink label; if the label is empty, the link is for the label -generated for the last empty-labeled equation. - - -File: eplain.info, Node: Index hyperlinks, Next: Footnote hyperlinks, Prev: Equation reference hyperlinks, Up: Implicit hyperlinks - -5.3.8 Index hyperlinks: idx ---------------------------- - -All indexing commands ('\idx', '\idxname', '\idxmarked', '\idxsubmarked' -and their silent equivalents, *note Indexing commands::) form the 'idx' -destgroup. The 'idx' linkgroup consists of the macros which are used to -typeset the index when you say '\readindexfile{INDEX-LETTER}' (*note -Typesetting an index::). - - To create the links in index entries, Eplain uses MakeIndex's -"encapsulation" feature. When you use an indexing macro to mark an index -term, Eplain writes out a line to the '.idx' file of the following -general form: - - \indexentry{ENTRY|PAGEMARKUP}{PAGENO} - -where ENTRY is the index entry (converted into the internal format that -MakeIndex understands), CS is the markup command you specified with the -'pagemarkup=CS' optional argument to the indexing commands (*note -Modifying index entries::), and PAGENO is the page number on which the -term appeared. When processing the '.idx' file, MakeIndex makes the page -number an argument to the page markup command ("encapsulates" the page -number), so the page number in the '.ind' file appears as '\CS{PAGENO}'. -Eplain internally replaces the CS command name with its own command, -which, in addition to calling the original '\CS' encapsulator, turns the -page number into a link. - - Eplain provides two approaches to linking page numbers in the index -to locations of index terms in the text. - -* Menu: - -* Exact destinations for index terms:: -* Page destinations for index terms:: -* Choosing destination placement:: -* Index page list and page range parsers:: -* Hyperlinks in see and see also entries:: - - -File: eplain.info, Node: Exact destinations for index terms, Next: Page destinations for index terms, Up: Index hyperlinks - -5.3.8.1 Exact destinations for index terms -.......................................... - -In this approach, each command that marks an index term defines a unique -destination and passes its label on to the '.idx' file as part of the -'\indexentry' command. The '\indexentry' line that Eplain writes to the -'.idx' file becomes - - \indexentry{ENTRY|hlidx{LABEL}{CS}}{PAGENO} - -where '\hlidx' is the command that is defined by Eplain to take three -arguments: a hyperlink label (LABEL), a name of page number encapsulator -(CS) and a page number (PAGENO). In the '.ind' file that MakeIndex will -generate, the page number will now appear as - - \hlidx{LABEL}{CS}{PAGENO} - -The result of this command is '\CS{PAGENO}', wrapped up into a link -pointing to LABEL destination. - - The hyperlink labels for the index terms are generated by the -'\hlidxlabel' command, by default in the format 'IDXNUMBER', where -NUMBER is the value of the count register '\hlidxlabelnumber'. This -count register is incremented at each index term. - - The advantage of this approach, as compared to the second approach -described below, is that links in the index point to exact locations of -the indexed terms on the page. The disadvantage of this approach is that -MakeIndex will regard _all_ index entries as distinct, because each one -contains a (unique) hyperlink label. This disadvantage can be partially -overcome by the script 'idxuniq' distributed with Eplain in the 'util' -directory. This script filters out '\indexentry' lines differing only in -the hyperlink label but identical otherwise. You should process the -'.idx' with this script before passing it on to MakeIndex. For example: - - prompt$ ./idxuniq file.idx | makeindex > file.ind - -Still, this solution is not ideal, as the page-range formation ability -of MakeIndex will not work, and there will be problems of apparently -identical index entries clashing (e.g., when a range-end entry appears -on the same page as another entry with the same definition; 'idxuniq' -will not filter out the second entry). - - -File: eplain.info, Node: Page destinations for index terms, Next: Choosing destination placement, Prev: Exact destinations for index terms, Up: Index hyperlinks - -5.3.8.2 Page destinations for index terms -......................................... - -In the second approach, Eplain does not write out any destination labels -for the index terms. Instead, Eplain writes out a wrapper for page -number encapsulator which can parse the page number and generate a link -pointing to the _page_ on which the term appeared. On top of each page -containing an index term, Eplain defines a destination with label -produced by '\hlidxpagelabel'. The '\hlidxpagelabel' command takes a -single argument (page number NUMBER) and by default produces the label -in the format 'IDXPGNUMBER'. - - With this approach, the '\indexentry' line which Eplain writes to the -'.idx' file looks like this: - - \indexentry{ENTRY|hlidxpage{CS}}{PAGENO} - -where '\hlidxpage' is the command that is defined by Eplain to take two -arguments: a name of page number encapsulator (CS) and a page number -(PAGENO). In the '.ind' file that MakeIndex will generate, the page -number will appear as - - \hlidxpage{CS}{PAGENO} - - The advantage of this approach is that all features of MakeIndex are -intact. The drawback is that links in the index do not point to exact -locations of indexed terms on a page, but to the top of a page on which -the term appears. - - Another disadvantage is that this approach depends on the page range -and page list separators which MakeIndex was configured to output. -'\hlidxpage' must be able to parse the first page number in a page range -like '1--4'. In addition, page list parsing is needed because MakeIndex -combines two consecutive page numbers in one call to the page number -encapsulator, so '\hlidxpage' can be passed, e.g., '1, 2' for the -PAGENO. In this last case, '\hlidxpage' splits the two page numbers, -applies '\CS' to each of them, and makes each of the page numbers a link -to the appropriate page. Note that this will alter typesetting slightly, -because now the page list separator (a comma followed by a space, by -default) is not typeset using the page number encapsulator ('\CS'). - - Eplain's defaults for the page list and page number delimiters are -the same as those in MakeIndex, a comma followed by a space (', ') and -two dashes ('--'), respectively. If you customize MakeIndex to use -different delimiters, you must not forget to let Eplain know about them -with the commands - - \setidxpagelistdelimiter{LIST-DELIM} - \setidxpagerangedelimiter{PAGE-DELIM} - -(*note Page list and page range parsers::). - - -File: eplain.info, Node: Choosing destination placement, Next: Index page list and page range parsers, Prev: Page destinations for index terms, Up: Index hyperlinks - -5.3.8.3 Choosing destination placement -...................................... - -The approach that Eplain should use for the index terms can be selected -in the '\enablehyperlinks' command. The optional argument it accepts is -a comma-separated list of options. The 'idxexact' option selects the -first approach, 'idxpage' the second, and 'idxnone' disables hyperlink -support for the index terms altogether, in case you want to stop Eplain -from writing its link wrappers into the '.idx' file. The default is -'idxpage'. - - For example: - - \enablehyperlinks[idxexact] - -selects the first approach ("exact index links"). - - -File: eplain.info, Node: Index page list and page range parsers, Next: Hyperlinks in see and see also entries, Prev: Choosing destination placement, Up: Index hyperlinks - -5.3.8.4 Index page list and page range parsers -.............................................. - -The macros that Eplain uses to parse page lists and page ranges, -'\idxparselist' and '\idxparserange', can sometimes be useful when -defining page number encapsulators. *Note Page list and page range -parsers::, for the description of these commands and an example of their -usage. - - -File: eplain.info, Node: Hyperlinks in see and see also entries, Prev: Index page list and page range parsers, Up: Index hyperlinks - -5.3.8.5 Hyperlinks in see and see also entries -.............................................. - -There is no automatic support for hyperlinks with "see" and "see also" -index entries, as there is not enough information to trace the -parameters of '\indexsee' and '\indexseealso' to corresponding index -entries. But if desired, this can be implemented with '\hldest' and -'\hlstart' (*note Explicit hyperlinks::); for example: - - \sidx{semantic theory of truth@% - \leavevmode\hldest{}{}{idx:theo truth}semantic theory of truth} - ... - \sidx[seealso]{truth}[definition of]% - {\hlstart{}{}{idx:theo truth}semantic theory of truth\hlend} - - -File: eplain.info, Node: Footnote hyperlinks, Next: Contents hyperlinks, Prev: Index hyperlinks, Up: Implicit hyperlinks - -5.3.9 Footnote hyperlinks: foot, footback ------------------------------------------ - -The 'foot' link and destination groups include the '\numberedfootnote' -and '\footnote' macros (*note Footnotes::). The 'footback' groups -include the same macros, but control parameters for links and -destinations created inside the footnote to point back to the footnote -mark within the text body. - - The macros use hyperlink labels generated by '\hlfootlabel' and -'\hlfootbacklabel'. The default formats for the labels are 'FOOTNUMBER' -and 'FOOTBNUMBER', respectively, where NUMBER is the value of the count -register '\hlfootlabelnumber'. This register is incremented at every -footnote. - - Generally, footnote hyperlinks are not of much use, because the -footnotes are usually placed on the same page as the footnote mark. -Therefore, footnote hyperlinks are disabled by default. Here is how you -can turn them on selectively, without affecting the other kinds of -hyperlinks (*note Turning hyperlinks on/off for a group::): - - \hldeston[foot,footback] - \hlon[foot,footback] - - -File: eplain.info, Node: Contents hyperlinks, Prev: Footnote hyperlinks, Up: Implicit hyperlinks - -5.3.10 Contents hyperlinks --------------------------- - -There is currently no special support for hyperlinks in the table of -contents (*note Contents::), but implementing them with the '\hldest' -and '\hlstart ... \hlend' commands (*note Explicit hyperlinks::) should -be possible. - - -File: eplain.info, Node: Hyperlink drivers, Next: Setting hyperlink types and options, Prev: Implicit hyperlinks, Up: Hyperlinks - -5.4 Hyperlink drivers -===================== - -This section describes the hyperlink drivers: the types of hyperlinks -they support, and the options they accept. During the first reading, you -may only want to skim through this section. - - Some of the descriptions below come from 'Portable Document Format -Reference Manual Version 1.3', March 11, 1999. - -* Menu: - -* Options supported by all drivers:: -* Hyperlink driver hypertex:: -* Hyperlink drivers pdftex and dvipdfm:: -* Hyperlink driver nolinks:: - - -File: eplain.info, Node: Options supported by all drivers, Next: Hyperlink driver hypertex, Up: Hyperlink drivers - -5.4.1 Options supported by all drivers --------------------------------------- - -This subsection describes the destination and link options which are -supported by all hyperlink drivers. - -Destination options supported by all drivers -............................................ - -'raise' - Specifies how much to raise destinations above the baseline. When - set to zero or empty, destinations are placed at the baseline. - - It is usually convenient to set this option to some variable - parameter, so that the height to which destinations are raised is - automatically adjusted according to the current context. For - example, setting it to '\normalbaselineskip' (or some fraction of - it, like '1.7\normalbaselineskip') makes the setting appropriate - for different point sizes, in case your document uses more than - one. - - The default setting is '\normalbaselineskip'. Initially, the - destgroups do not define this option, so they fall back on the - default, except for the 'eq' destgroup, for which this option is - set to '1.7\normalbaselineskip', to accommodate the usual cases of - large operators in displayed math. - - Example: '\hldestopts[eq]{raise=2.5\normalbaselineskip}' - -Link options supported by all drivers -..................................... - -'colormodel' -'color' - These two options define the color to be used for rendering the - link text. The colors are used only when a '\color' command is - defined, e.g., by loading the LaTeX 'color' package (*note Packages - known to work::). The '\color' command is called as - '\color[COLORMODEL]{COLOR}', where COLORMODEL and COLOR are the - definitions of the 'colormodel' and 'color' options, respectively. - However, if COLORMODEL is empty, the optional argument to '\color' - is omitted; and if COLOR is empty, the '\color' command is omitted - altogether. The default setting is 'COLORMODEL=cmyk' and - 'COLOR=0.28,1,1,0.35'. - - When specifying colors with several components delimited by commas - (e.g., RGB and CMYK colors in the LaTeX 'color' package), it is not - possible to specify the components directly in the option list of - '\hlopts', because comma is the option list delimiter. With the - 'color' package, it is possible to specify such colors by defining - a custom color with '\definecolor' and using the new color name - with an empty COLORMODEL (see examples below). - - Examples: - - \hlopts{colormodel=,color=blue}% predefined color - \definecolor{mycolor}{rgb}{.3,.8,.95} - \hlopts{colormodel=,color=mycolor}% custom color - \hlopts{colormodel=gray,color=.4} - - -File: eplain.info, Node: Hyperlink driver hypertex, Next: Hyperlink drivers pdftex and dvipdfm, Prev: Options supported by all drivers, Up: Hyperlink drivers - -5.4.2 Hyperlink driver 'hypertex' ---------------------------------- - -HyperTeX is a standard for inclusion of hyperlink information in TeX -(and LaTeX) documents (see <http://arxiv.org/hypertex>). This standard -defines a set of hyperlink tags implemented as '\special' commands -written into the DVI file. The major advantage of such standard is that -a single '.dvi' file containing HyperTeX commands can be viewed by any -HyperTeX-enabled viewer (e.g., any more or less modern version of -'xdvi') or converted to other file formats (e.g., PDF) by any -HyperTeX-enabled DVI converter (e.g., 'dvipdfmx' or 'dvips' with -Ghostscript's 'ps2pdf' script). - - The downside to the standard is that it is by design "the common -factor" of other formats supporting hyperlinks, so many features of a -particular file format cannot be supported by HyperTeX. Therefore, if -you need to use special features of a particular format, HyperTeX is not -a good choice. For the PDF file format, Eplain provides the 'pdftex' and -'dvipdfm' drivers which provide fine control over the PDF options (*note -Hyperlink drivers pdftex and dvipdfm::). - - For more information on programs which support the HyperTeX standard, -please see - - <http://arxiv.org/hypertex> - <http://www.tug.org/tex-archive/support/hypertex/hypertex> - -For convenience, we list a few HyperTeX-enabled converters: - -'dvips' - Note that you need to pass the '-z' option to 'dvips' to tell it to - preserve the information about the hyperlinks. To generate a '.pdf' - file with hyperlinks, you can use the 'ps2pdf' script of - Ghostscript. For example, if 'foo.tex' is a TeX file using HyperTeX - commands, then - - prompt$ tex foo.tex - prompt$ dvips -z foo.dvi -o - prompt$ ps2pdf foo.ps - - will produce 'foo.pdf' with hyperlinks. - -'dvipdfm' -'dvipdfmx' - No special command line arguments are required, these programs - automatically detect the HyperTeX commands. - - One more note is in place: support for the HyperTeX commands varies -from one previewer/converter to another, so you might need to experiment -to see if what you need is supported by the program(s) you intend to -use. For example, dvips(k) as of version 5.92b converts all internal -hyperlinks into page links pointing to a page containing the -destination, so that "exact" linking to destinations is not possible -(this was confirmed to be a bug and most probably has already been fixed -in later versions of dvips(k)); dvipdfm as of version 0.13.2c and -dvipdfmx as of version 20040411 do not correctly parse links to external -local files, and produce a URL link instead of a file link. - -* Menu: - -* Destination types for hypertex:: -* Destination options for hypertex:: -* Link types for hypertex:: -* Link options for hypertex:: - - -File: eplain.info, Node: Destination types for hypertex, Next: Destination options for hypertex, Up: Hyperlink driver hypertex - -5.4.2.1 Destination types for 'hypertex' -........................................ - -'xyz' - "Current position". This is the default type. - - Example: '\hldest{xyz}{}{dest123}' - -'raw' - The destination specification (in the form of a HyperTeX - '\special') is taken from the command sequence '\CS', where CS is - the value of the 'cmd' option. In the definition of '\CS', use - '\@hllabel' to refer to the hyperlink label. This option is - intended to be used with destgroups (*note Setting hyperlink types - and options::), as it does not make sense in a direct call to - '\hldest'--you can just call the raw command. - - Example: - - \makeatletter - \def\mydest{\special{html:<a name="\@hllabel">}% - \special{html:</a>}} - \resetatcatcode - \indent\hldest{raw}{cmd=mydest}{SpecialDest} - Special destination. - - -File: eplain.info, Node: Destination options for hypertex, Next: Link types for hypertex, Prev: Destination types for hypertex, Up: Hyperlink driver hypertex - -5.4.2.2 Destination options for 'hypertex' -.......................................... - -'cmd' - Name of the macro (without the leading '\') containing a HyperTeX - '\special' for the 'raw' destination. - - *Note Destination types for hypertex::, the description of the - 'raw' destination, for an example. - - -File: eplain.info, Node: Link types for hypertex, Next: Link options for hypertex, Prev: Destination options for hypertex, Up: Hyperlink driver hypertex - -5.4.2.3 Link types for 'hypertex' -................................. - -'name' - Go to a "named destination". The label is the destination name. All - destinations in HyperTeX are named destinations. This is the - default type. - - Example: '\hlstart{name}{}{dest123}Link to dest123\hlend' - -'url' - Go to a URL. The label is the URL. - - Example: - - \hlstart{url}{}{http://tug.org/eplain/}Eplain home\hlend - -'filename' - Go to a named destination in another file. The label is the - destination name. The file name is specified by the 'file' option. - The file name extension can be specified separately by the 'ext' - option. The idea is to set the 'ext' option globally at the - beginning of the document to avoid hard-coding the extension - together with the file name within each link--HyperTeX is not - restricted to any single output format, it can be DVI, PDF, - possibly other formats. - - Example: - - \hlopts{ext=.pdf} - \hlstart{filename}{file=book}{dest123} - Link to dest123 in file `book.pdf'\hlend - -'raw' - The link specification (in the form of a HyperTeX '\special') is - taken from the command sequence '\CS', where CS is the value of the - 'cmd' option. In the definition of '\CS', use '\@hllabel' to refer - to the hyperlink label. Use the predefined command '\hlhash' to - insert the '#' characters. This option is intended to be used with - linkgroups (*note Setting hyperlink types and options::), as it - does not make sense in a direct call to '\hlstart'--you can just - call the raw command. - - Example: - - \makeatletter - \def\mylink{\special{html:<a href="\hlhash\@hllabel">}} - \resetatcatcode - \hlstart{raw}{cmd=mylink}{SpecialDest} - Link to the special destination.\hlend - - -File: eplain.info, Node: Link options for hypertex, Prev: Link types for hypertex, Up: Hyperlink driver hypertex - -5.4.2.4 Link options for 'hypertex' -................................... - -'cmd' - Name of the macro (without the leading '\') containing a HyperTeX - '\special' for the 'raw' link. - - *Note Link types for hypertex::, the description of the 'raw' link, - for an example. - -'file' - File name for the 'filename' link type. See also the 'ext' option. - - *Note Link types for hypertex::, the description of the 'filename' - link, for an example. - -'ext' - File name extension for the 'filename' link type. The idea is to - set the 'ext' option globally at the beginning of the document to - avoid hard-coding the extension together with the file name within - each link--HyperTeX is not restricted to any single output format, - it can be DVI, PDF, possibly other formats. - - *Note Link types for hypertex::, the description of the 'filename' - link, for an example. - - -File: eplain.info, Node: Hyperlink drivers pdftex and dvipdfm, Next: Hyperlink driver nolinks, Prev: Hyperlink driver hypertex, Up: Hyperlink drivers - -5.4.3 Hyperlink drivers 'pdftex' and 'dvipdfm' ----------------------------------------------- - -This subsection describes link and destination types and options -supported by the 'pdftex' and 'dvipdfm' drivers. Many of the hyperlink -types and options are common to both drivers, so we describe them -together. - -* Menu: - -* Destination types for pdftex and dvipdfm:: -* Destination options for pdftex and dvipdfm:: -* Link types for pdftex and dvipdfm:: -* Link options for pdftex and dvipdfm:: - - -File: eplain.info, Node: Destination types for pdftex and dvipdfm, Next: Destination options for pdftex and dvipdfm, Up: Hyperlink drivers pdftex and dvipdfm - -5.4.3.1 Destination types for 'pdftex' and 'dvipdfm' -.................................................... - -'xyz' - "Current position". The option 'zoom' specifies magnification to - use (zero or empty means leave magnification unchanged, which is - the default). This is the default type. - - For 'dvipdfm': the options 'left' and 'top' specify position - coordinates to use (empty options mean current position coordinate, - which is the default). - - Example: '\hldest{xyz}{zoom=2000}{dest123}' - -'fit' - Fit the page to the window. - - Example: '\hldest{fit}{}{dest123}' - -'fith' - Fit the width of the page to the window. - - For 'dvipdfm': the 'top' option specifies vertical position - (default is empty, meaning current position). - - Example: '\hldest{fith}{}{dest123}' - -'fitv' - Fit the height of the page to the window. - - For 'dvipdfm': The option 'left' specifies horizontal position - (default is empty, meaning current position). - - Example: '\hldest{fitv}{}{dest123}' - -'fitb' - Fit the page's bounding box to the window. - - Example: '\hldest{fitb}{}{dest123}' - -'fitbh' - Fit the width of the page's bounding box to the window. - - For 'dvipdfm': the option 'top' specifies vertical position - (default is empty, meaning current position). - - Example: '\hldest{fitbh}{}{dest123}' - -'fitbv' - Fit the height of the page's bounding box to the window. - - For 'dvipdfm': the option 'left' specifies horizontal position - (default is empty, meaning current position). - - Example: '\hldest{fitbv}{}{dest123}' - -'fitr' - For 'pdftex': fit the rectangle specified by the options 'width', - 'height' and 'depth' (as a TeX rule specification) in the window. - For dimensions set to empty, the corresponding value of the parent - box is used (these are the defaults). - - For 'dvipdfm': fit the rectangle specified by the options 'left', - 'bottom', 'right' and 'top' (in PostScript points, 72 points per - inch) in the window. For dimensions set to empty, current position - coordinate is substituted (these are the defaults). - - Example for 'pdftex': - - \hldest{fitr}{width=\hsize, - height=.5\vsize,depth=0pt}{dest123} - - Example for 'dvipdfm': - - \hldest{fitr}{left=72,bottom=72, - right=720,top=360}{dest123} - -'raw' - The destination specification (in the form of a pdfTeX command or a - dvipdfm '\special') is taken from the command sequence '\CS', where - CS is the value of the 'cmd' option. In the definition of '\CS', - use '\@hllabel' to refer to the hyperlink label. This option is - intended to be used with destgroups (*note Setting hyperlink types - and options::), as it does not make sense in a direct call to - '\hldest'--you can just call the raw command. - - Example for 'pdftex': - - \makeatletter - \def\mydest{\pdfdest name{\@hllabel} xyz} - \resetatcatcode - \hldesttype{raw} - \hldestopts{cmd=mydest} - - Example for 'dvipdfm': - - \makeatletter - \def\mydest{\special{pdf: dest (\@hllabel) - [@thispage /XYZ @xpos @ypos 0]}} - \resetatcatcode - \hldesttype{raw} - \hldestopts{cmd=mydest} - - -File: eplain.info, Node: Destination options for pdftex and dvipdfm, Next: Link types for pdftex and dvipdfm, Prev: Destination types for pdftex and dvipdfm, Up: Hyperlink drivers pdftex and dvipdfm - -5.4.3.2 Destination options for 'pdftex' and 'dvipdfm' -...................................................... - -With respect to the destination options, the 'pdftex' and 'dvipdfm' -differ in the way the fit rectangle is specified (relative coordinates -for 'pdftex', absolute coordinates for 'dvipdfm'). - -Common destination options -.......................... - -'cmd' - Name of the macro (without the leading '\') containing a pdfTeX - command or a dvipdfm '\special' for the 'raw' destination. - - *Note Destination types for pdftex and dvipdfm::, the description - of the 'raw' destination, for an example. - -'zoom' - Magnification ratio times 1000 (like TeX's scale factor). Zero or - empty means leave magnification unchanged, which is the default. - - Example: '\hldest{xyz}{zoom=2000}{dest123}' - -'pdftex'-specific destination options -..................................... - -The dimension options below must be specified as a TeX rule -specification. When set to empty, the corresponding value of the parent -box is used (this is the default for all dimension options). - -'depth' - Depth of the fit rectangle for the 'fitr' destination. - -'height' - Height of the fit rectangle for the 'fitr' destination. - -'width' - Width of the fit rectangle for the 'fitr' destination. - - Example: - - \hldest{fitr}{width=\hsize, - height=.5\vsize,depth=0pt}{dest123} - -'dvipdfm'-specific destination options -...................................... - -The dimension options below must be specified in PostScript points -(72 points per inch), as a number without the 'bp' unit name. When set -to empty, the current position coordinate is used (this is the default -for all dimension options). - -'bottom' - Bottom position coordinate of a box specification for the various - destination types. - -'left' - Left position coordinate of a box specification for the various - destination types. - -'right' - Right position coordinate of a box specification for the various - destination types. - -'top' - Top position coordinate of a box specification for the various - destination types. - - Example: - - \hldest{fitr}{left=72,bottom=72, - right=720,top=360}{dest123} - - -File: eplain.info, Node: Link types for pdftex and dvipdfm, Next: Link options for pdftex and dvipdfm, Prev: Destination options for pdftex and dvipdfm, Up: Hyperlink drivers pdftex and dvipdfm - -5.4.3.3 Link types for 'pdftex' and 'dvipdfm' -............................................. - -Link types are the same for the 'pdftex' and 'dvipdfm' drivers, except -that the 'pdftex' driver provides one additional link type 'num' (link -to a numbered destination). dvipdfm does not support numbered -destinations, therefore it does not have this link type. Note that all -destinations created by Eplain hyperlink macros are named destinations; -to define a numbered destination, you have to use low-level pdfTeX -commands. - -Common link types -................. - -'name' - Go to a "named destination". The label is the destination name. All - destinations created with '\hldest' are named destinations (*note - Explicit hyperlinks::). This is the default type. - - Example: '\hlstart{name}{}{dest123}Link to dest123\hlend' - -'url' - Go to a URL. The label is the URL. - - Example: '\hlstart{url}{}{http://tug.org/eplain/}Eplain home\hlend' - -'page' - Go to a page. The label is the page number (counting from 1). Page - fitting is specified by the 'pagefit' option. - - Example: - - \hlstart{page}{pagefit=/FitH 600}{123} - Link to page~123\hlend - -'filename' - Go to a named destination in another file. The label is the - destination name. The file name is specified by the 'file' option. - Page fitting is specified by the 'pagefit' option. The 'newwin' - option specifies whether the destination document is opened in the - same window or in a new window. - - Example: - - \hlstart{filename}{file=book.pdf,newwin=1}{dest123} - Link to dest123 in file `book.pdf'\hlend - -'filepage' - Go to a page in another file. The label is the page number - (counting from 1). The file name is specified by the 'file' option. - Page fitting is specified by the 'pagefit' option. The 'newwin' - option specifies whether the destination document is opened in the - same window or in a new window. - - Example: - - \hlstart{filepage}{file=book.pdf,newwin=, - pagefit=/FitR 50 100 300 500}{1} - Link to page~1 in file `book.pdf'\hlend - -'raw' - The link specification (in the form of a pdfTeX command or a - dvipdfm '\special' primitive) is taken from the command sequence - '\CS', where CS is the value of the 'cmd' option. In the definition - of '\CS', use '\@hllabel' to refer to the hyperlink label. This - option is intended to be used with linkgroups (*note Setting - hyperlink types and options::), as it does not make sense in a - direct call to '\hlstart'--you can just call the raw command. - - Example for 'pdftex': - - % Redirect all \url links to the first page - \def\mycmd{\pdfstartlink goto page 1 {/Fit}} - \hltype[url]{raw} - \hlopts[url]{cmd=mycmd} - - Example for 'dvipdfm': - - % Redirect all \url links to the first page - \def\mycmd{\special{pdf: beginann <</Type/Annot /Subtype/Link - /Dest[0 /Fit]>>}} - \hltype[url]{raw} - \hlopts[url]{cmd=mycmd} - -'pdftex'-specific link types -............................ - -'num' - Go to a "numbered destination". The label is the destination - number. - - Example: '\hlstart{num}{}{123}Link to 123\hlend' - - -File: eplain.info, Node: Link options for pdftex and dvipdfm, Prev: Link types for pdftex and dvipdfm, Up: Hyperlink drivers pdftex and dvipdfm - -5.4.3.4 Link options for 'pdftex' and 'dvipdfm' -............................................... - -Link options are mostly the same for the 'pdftex' and 'dvipdfm' drivers. -The 'pdftex' driver has additional options to specify link dimensions. - -Common link options -................... - -'bcolor' - Border color. An array of three numbers in the range 0 to 1, - representing a color in DeviceRGB. - - Example: '\hlstart{name}{bcolor=.1 .5 1}{dest123}Link\hlend' - -'bdash' - Array of numbers representing on and off stroke lengths for drawing - dashes. - - Example: '\hlstart{name}{bstyle=D,bdash=2 4}{dest123}Link\hlend' - -'bstyle' - Link border style: - - 'S' - The border is drawn as a solid line. - - 'D' - The border is drawn with a dashed line (the dash pattern is - specified by the 'bdash' option). - - 'B' - The border is drawn in a beveled style. - - 'I' - The border is drawn in an inset style. - - 'U' - The border is drawn as a line on the bottom of the link - rectangle. - - The default is 'S'. - - Example: '\hlstart{name}{bstyle=D,bdash=2 4}{dest123}Link\hlend' - -'bwidth' - Border width in PostScript points (72 points per inch). The default - is 1. - - Example: '\hlstart{name}{bwidth=2}{dest123}Link\hlend' - -'cmd' - Name of the macro (without the leading '\') containing a pdfTeX - command or a dvipdfm '\special' for the 'raw' link. - - *Note Link types for pdftex and dvipdfm::, the description of the - 'raw' link, for an example. - -'file' - File name for the 'filename' and 'filepage' link types. - - *Note Link types for pdftex and dvipdfm::, the descriptions of the - 'filename' and 'filepage' links, for an example. - -'hlight' - Link border highlight modes: - - 'I' - The rectangle specified by the bounding box of the link is - inverted. - - 'N' - No highlighting is done. - - 'O' - The border of the link is inverted. - - 'P' - The region underneath the bounding box of the link is drawn - inset into the page. - - The default is 'I'. - - Example: '\hlstart{name}{bstyle=S,hlight=O}{dest123}Link\hlend' - -'newwin' - For the 'filename' and 'filepage' links, specifies whether the - destination document is opened in the same window or in a new - window. The settings are: - - '0' - Open in the same window. - 'non-0' - Open in a new window. - 'empty' - Behavior according to the viewer settings. - - The default is empty. - - *Note Link types for pdftex and dvipdfm::, the descriptions of the - 'filename' and 'filepage' links, for an example. - -'pagefit' - For the 'page' and 'filepage links', specifies how the page must be - fitted to the window. 'pagefit' specification is written to the PDF - file as is, so it must conform to the PDF standard. - - *Note Link types for pdftex and dvipdfm::, the descriptions of the - 'page' and 'filepage' links, for an example. - -'pdftex'-specific link options -.............................. - -The dimension options below must be specified as a TeX rule -specification. When set to empty, the corresponding value of the parent -box is used (this is the default for all dimension options). - -'depth' - Depth of the link. - -'height' - Height of the link. - -'width' - Width of the link. - - Example: - - \hlstart{name}{width=5in,height=20pc,depth=0pt}{dest123} - Link\hlend - - -File: eplain.info, Node: Hyperlink driver nolinks, Prev: Hyperlink drivers pdftex and dvipdfm, Up: Hyperlink drivers - -5.4.4 Hyperlink driver 'nolinks' --------------------------------- - -Select this driver to suppress all hyperlinks in your document. - - Selecting this driver is quite different from not selecting any -driver at all, or from selecting some driver and then turning hyperlinks -off for the entire document with '\hloff' and '\hldestoff' (*note -Turning hyperlinks on/off::). - - The purpose of '\hldestoff' and '\hloff' is to mark (parts) of your -document where hyperlinks should never appear. (Imagine you want to -prevent a cross-referencing macro from generating a link at a certain -spot in your document.) - - If instead you have prepared a document with hyperlinks and just want -to compile a version without them, it is better to select the driver -'nolinks'. This ensures that spacing and page-breaking are the same as -what you were getting with hyperlinks enabled. - - The reason for this is that hyperlinks are produced by the '\special' -primitives or low-level hyperlink commands. Each such command is placed -inside a "whatsit" (an internal TeX object), which may introduce -legitimate breakpoints at places where none would exist without the -whatsits. The macros '\hldestoff' and '\hloff' disable the hyperlink -macros completely, so that no whatsits are produced. - - In contrast, the 'nolinks' driver does not completely disable -hyperlink macros. Instead, it defines them to merely write to the log -file (what gets written is unimportant). This also produces whatsits, -thus imitating the whatsits from the hyperlink commands. (This trick was -borrowed from the LaTeX 'color' package.) - - Another reason for using 'nolinks' is that in horizontal mode -'\hldest' places destinations inside boxes of zero width, height, and -depth. When you say '\hldestoff', '\hldest' will omit both destination -definitions and these boxes. The missing boxes can again cause the -typesetting to be inconsistent with that with destinations enabled. Here -again, the 'nolinks' driver helps by defining '\hldest' to produce the -empty boxes. - - So, if you are planning to produce versions of your PDF document both -with and without hyperlinks, here is the recommended way to enable the -hyperlinks under pdfTeX: - - \ifpdf - \enablehyperlinks - \else - \enablehyperlinks[nolinks]% - \fi - - -File: eplain.info, Node: Setting hyperlink types and options, Next: Turning hyperlinks on/off, Prev: Hyperlink drivers, Up: Hyperlinks - -5.5 Setting hyperlink types and options -======================================= - -You can define default types for links and destinations, which will be -used when you do not specify a type in '\hlstart' or '\hldest'. -Similarly, you can define default values for the options; the default -value for an option is used when you do not set the option in the -argument to '\hlstart' or '\hldest'. - - The parameters for implicit links and destinations can be customized -by setting the "group" types and options. When not set, the defaults are -used. - - All these settings are local to the current (TeX) group, so if you -want to set an option temporarily, you can do so inside a -'\begingroup...\endgroup' block; when the group ends, the previous -settings are restored. - -* Menu: - -* Setting default types and options:: -* Setting group types:: -* Setting group options:: - - -File: eplain.info, Node: Setting default types and options, Next: Setting group types, Up: Setting hyperlink types and options - -5.5.1 Setting default types and options ---------------------------------------- - -The default types for links and destinations can be set with the -following commands: - - \hltype{TYPE} - \hldesttype{TYPE} - -where TYPE is one of the link/destination types supported by the -selected hyperlink driver (*note Hyperlink drivers::). - - Default values for the options can be set with the following -commands: - - \hlopts{OPTIONS} - \hldestopts{OPTIONS} - -where OPTIONS is a comma-separated list of option assignments in the -format 'OPTION=VALUE'. Again, what options are allowed depends on the -selected hyperlink driver. - - Many people regard the default boxed links as not aesthetic and -intruding on page layout. The reason why boxed links are the default is -that the links are not colored until you load the LaTeX 'color' package -(*note Loading LaTeX packages::) or use other means to define the -'\color' command; therefore, not producing any kind of link border may -result in the links not being marked in any way. However, when the links -are actually colored, there is no need to produce the link boxes -anymore; to avoid the boxes, you can set the default border width to -zero (if the driver you use supports the link option 'bwidth'; *note -Hyperlink drivers::): - - \hlopts{bwidth=0} - - -File: eplain.info, Node: Setting group types, Next: Setting group options, Prev: Setting default types and options, Up: Setting hyperlink types and options - -5.5.2 Setting group types -------------------------- - -When called with an optional argument, as in - - \hltype[GROUPS]{TYPE} - \hldesttype[GROUPS]{TYPE} - -where GROUPS is a comma-separated list of groups, '\hltype' and -'\hldesttype' set the type for each group from GROUPS to TYPE. The -default type is used for all groups with an empty type (this is the -initial setting for all groups, except that the type for the 'url' -linkgroup is set to 'url' by the drivers which support this link type). - - There are two special "groups" which can be used inside the GROUPS -list. An empty group sets the default type. This allows to set the -default type and group types in one command, for example: - - \hltype[eq,]{TYPE} - -sets the link type for the 'eq' linkgroup and the default link type to -TYPE. - - Another special group is a star ('*') group, which signifies all -defined groups. For example, the command - - \hldesttype[*,]{TYPE} - -sets the destination type to TYPE for each group, as well as the default -destination type. - - -File: eplain.info, Node: Setting group options, Prev: Setting group types, Up: Setting hyperlink types and options - -5.5.3 Setting group options ---------------------------- - -Option values for each group are stored as a list of option assignments. -This list does not have to contain every supported option. Values for -options missing from this list are taken from the default option values. - - To manipulate the list of option values for the groups, you use the -'\hlopts' and '\hldestopts' commands with an optional argument: - - \hlopts[GROUPS]{OPTIONS} - \hldestopts[GROUPS]{OPTIONS} - \hlopts![GROUPS]{OPTIONS} - \hldestopts![GROUPS]{OPTIONS} - -where GROUPS is a comma-separated list of groups and OPTIONS is a -comma-separated list of option assignments. The two special "groups", -the empty group and the star ('*') group, have the same meaning as for -'\hltype' and '\hldesttype'. When used without the exclamation mark, -'\hlopts' and '\hldestopts' preserve the current list of options for the -groups, and only update the options listed in OPTIONS. If you add the -exclamation mark, the current list of options for each group in GROUPS -is discarded and the new list is set to OPTIONS. - - The "overriding" nature of the '!' is appropriate when you give a -complete specification of the options for a group, e.g., at the -beginning of your document. On the other hand, when you want to adjust -some option(s) and leave others intact, you should use the macros -without the '!'. - - For example, with displayed mathematical formulas, you often need to -adjust the 'raise' option for the 'eq' destgroup, because the formulas -often contain large parentheses and brackets. But when doing so, you -want to leave the other settings unchanged. To achieve this, call -'\hldestopts' without the '!', for example: - - $$\hldestopts[eq]{raise=2.5\normalbaselineskip} - ... - $$ - -The display commands ('$$') implicitly put the entire formula inside a -(TeX) group ('\begingroup...\endgroup'), so you do not need to isolate -the setting of the 'raise' option--it will be restored after the closing -'$$'. - - Initially, Eplain sets the option lists for almost all groups to -empty, so that the groups fall back on the default values for all -options. The one exception to this rule is the 'eq' destgroup, whose -initial option list contains one setting: - - raise=1.7\normalbaselineskip - -This setting usually accommodates the large operators, which often -appear in displayed math. - - -File: eplain.info, Node: Turning hyperlinks on/off, Prev: Setting hyperlink types and options, Up: Hyperlinks - -5.6 Turning hyperlinks on/off -============================= - -Links and/or destinations can be turned on or off globally by disabling -the low-level commands, or for each group individually. - - All these settings are local to the current (TeX) group, so if you -want to enable or disable links/destinations temporarily, you can do so -inside a '\begingroup...\endgroup' block; when the group ends, the -previous settings are restored. - -* Menu: - -* Turning low-level commands on/off:: -* Turning hyperlinks on/off for a group:: - - -File: eplain.info, Node: Turning low-level commands on/off, Next: Turning hyperlinks on/off for a group, Up: Turning hyperlinks on/off - -5.6.1 Turning low-level commands on/off ---------------------------------------- - -The low-level commands '\hlstart', '\hlend' and '\hldest' can be turned -on/off with the following commands: - - \hldeston - \hldestoff - \hlon - \hloff - -*Note Hyperlink driver nolinks::, for the implications of using these -commands to disable hyperlinks for the entire document. - - -File: eplain.info, Node: Turning hyperlinks on/off for a group, Prev: Turning low-level commands on/off, Up: Turning hyperlinks on/off - -5.6.2 Turning hyperlinks on/off for a group -------------------------------------------- - -If you want to disable links/destinations produced by certain groups, -you can give a list of the groups as an optional argument to these -commands: - - \hldeston[GROUPS] - \hldestoff[GROUPS] - \hlon[GROUPS] - \hloff[GROUPS] - -where GROUPS is the list of linkgroups/destgroups. This list can contain -two special groups. The empty group switches the low-level commands -(*note Turning low-level commands on/off::), and the star ('*') group -operates on all defined groups. - - Note that turning off the low-level commands disables all hyperlinks -globally, including groups which have them enabled. Turning off certain -linkgroups/destgroups records the fact that the macros in the group -should not produce links/destinations. To illustrate the distinction, -assume that all links are on; after the following sequence of commands: - - \hloff - \hloff[eq] - \hlon - -all links are on except for the 'eq' linkgroup. - - -File: eplain.info, Node: Arrow theoretic diagrams, Next: Programming definitions, Prev: Hyperlinks, Up: Top - -6 Arrow theoretic diagrams -************************** - -This chapter describes definitions for producing commutative diagrams. - - Steven Smith wrote this documentation (and the macros). - -* Menu: - -* Slanted lines and vectors:: -* Commutative diagrams:: - - -File: eplain.info, Node: Slanted lines and vectors, Next: Commutative diagrams, Up: Arrow theoretic diagrams - -6.1 Slanted lines and vectors -============================= - -The macros '\drawline' and '\drawvector' provide the capability found in -LaTeX's picture mode to draw slanted lines and vectors of certain -directions. Both of these macros take three arguments: two integer -arguments to specify the direction of the line or vector, and one -argument to specify its length. For example, '\drawvector(-4,1){60pt}' -produces the vector - - (A vector in the 2d quadrant of length 60 pt appears here.) - - which lies in the 2d quadrant, has a slope of minus 1/4, and a width -of 60 pt. - - Note that if an '\hbox' is placed around '\drawline' or -'\drawvector', then the width of the '\hbox' will be the positive -dimension specified in the third argument, except when a vertical line -or vector is specified, e.g., '\drawline(0,1){1in}', which has zero -width. If the specified direction lies in the 1st or 2d quadrant (e.g., -'(1,1)' or '(-2,3)'), then the '\hbox' will have positive height and -zero depth. Conversely, if the specified direction lies in the 3d or 4th -quadrant (e.g., '(-1,-1)' or '(2,-3)'), then the '\hbox' will have -positive depth and zero height. - - There are a finite number of directions that can be specified. For -'\drawline', the absolute value of each integer defining the direction -must be less than or equal to six, i.e., '(7,-1)' is incorrect, but -'(6,-1)' is acceptable. For '\drawvector', the absolute value of each -integer must be less than or equal to four. Furthermore, the two -integers cannot have common divisors; therefore, if a line with slope 2 -is desired, say '(2,1)' instead of '(4,2)'. Also, specify '(1,0)' -instead of, say, '(3,0)' for horizontal lines and likewise for vertical -lines. - - Finally, these macros depend upon the LaTeX font 'line10'. If your -site doesn't have this font, ask your system administrator to get it. -Future enhancements will include macros to draw dotted lines and dotted -vectors of various directions. - - -File: eplain.info, Node: Commutative diagrams, Prev: Slanted lines and vectors, Up: Arrow theoretic diagrams - -6.2 Commutative diagrams -======================== - -The primitive commands '\drawline' and '\drawvector' can be used to -typeset arrow theoretic diagrams. This section describes (1) macros to -facilitate typesetting arrows and morphisms, and (2) macros to -facilitate the construction of commutative diagrams. All macros -described in this section must be used in math mode. - -* Menu: - -* Arrows and morphisms:: -* Construction of commutative diagrams:: -* Commutative diagram parameters:: - - -File: eplain.info, Node: Arrows and morphisms, Next: Construction of commutative diagrams, Up: Commutative diagrams - -6.2.1 Arrows and morphisms --------------------------- - -The macros '\mapright' and '\mapleft' produce right and left pointing -arrows, respectively. Use superscript ('^') to place a morphism above -the arrow, e.g., '\mapright^\alpha'; use subscript ('_') to place a -morphism below the arrow, e.g., '\mapright_{\tilde l}'. Superscripts and -subscripts may be used simulataneously, e.g., '\mapright^\pi_{\rm -epimor.}'. - - Similarly, the macros '\mapup' and '\mapdown' produce up and down -pointing arrows, respectively. Use '\rt' to place a morphism to the -right of the arrow, e.g., '\mapup\rt{\rm id}'; use '\lft' to place a -morphism to the left of the arrow, e.g., '\mapup\lft\omega'. '\lft' and -'\rt' may be used simultaneously, e.g., '\mapdown\lft\pi\rt{\rm -monomor.}'. - - Slanted arrows are produced by the macro '\arrow', which takes a -direction argument (e.g., '\arrow(3,-4)'). Use '\rt' and '\lft' to place -morphisms to the right and left, respectively, of the arrow. A slanted -line (no arrowhead) is produced with the macro '\sline', whose syntax is -identical to that of '\arrow'. - - The length of these macros is predefined by the default TeX -dimensions '\harrowlength', for horizontal arrows (or lines), -'\varrowlength', for vertical arrows (or lines), and '\sarrowlength', -for slanted arrows (or lines). To change any of these dimensions, say, -e.g., '\harrowlength=40pt'. As with all other TeX dimensions, the change -may be as global or as local as you like. Furthermore, the placement of -morphisms on the arrows is controlled by the dimensions '\hmorphposn', -'\vmorphposn', and '\morphdist'. The first two dimensions control the -horizontal and vertical position of the morphism from its default -position; the latter dimension controls the distance of the morphism -from the arrow. If you have more than one morphism per arrow (i.e., a -'^'/'_' or '\lft'/'\rt' construction), use the parameters -'\hmorphposnup', '\hmorphposndn', '\vmorphposnup', '\vmorphposndn', -'\hmorphposnrt', '\hmorphposnlft', '\vmorphposnrt', and -'\vmorphposnlft'. The default values of all these dimensions are -provided in the section on parameters that follows below. - - There is a family of macros to produce horizontal lines, arrows, and -adjoint arrows. The following macros produce horizontal maps and have -the same syntax as '\mapright': - -'\mapright' - '$X\mapright Y$' = (a right arrow). - -'\mapleft' - '$X\mapleft Y$' = (a left arrow). - -'\hline' - '$X\hline Y$' = (horizontal line) - -'\bimapright' - '$X\bimapright Y$' = (two right arrows). - -'\bimapleft' - '$X\bimapleft Y$' = (two left arrows) - -'\adjmapright' - '$X\adjmapright Y$' = (two adjoint arrows; left over right) - -'\adjmapleft' - '$X\adjmapleft Y$' = (two adjoint arrows; right over left) - -'\bihline' - '$X\bihline Y$' = (two horizontal lines) - - There is also a family of macros to produce vertical lines, arrows, -and adjoint arrows. The following macros produce vertical maps and have -the same syntax as '\mapdown': - -'\mapdown' - (a down arrow) - -'\mapup' - (an up arrow) - -'\vline' - (vertical line) - -'\bimapdown' - (two down arrows) - -'\bimapup' - (two up arrows) - -'\adjmapdown' - (two adjoint arrows; down then up) - -'\adjmapup' - (two adjoint arrows; up then down) - -'\bivline' - (two vertical lines) - - Finally, there is a family of macros to produce slanted lines, -arrows, and adjoint arrows. The following macros produce slanted maps -and have the same syntax as '\arrow': - -'\arrow' - (a slanted arrow) - -'\sline' - (a slanted line) - -'\biarrow' - (two straight arrows) - -'\adjarrow' - (two adjoint arrows) - -'\bisline' - (two straight lines) - - The width between double arrows is controlled by the parameter -'\channelwidth'. The parameters '\hchannel' and '\vchannel', if nonzero, -override '\channelwidth' by controlling the horizontal and vertical -shifting from the first arrow to the second. - - There are no adornments on these arrows to distinguish inclusions -from epimorphisms from monomorphisms. Many texts, such as Lang's book -'Algebra', use as a tasteful alternative the symbol 'inc' (in roman) -next to an arrow to denote inclusion. - - Future enhancements will include a mechanism to draw curved arrows -found in, e.g., the Snake Lemma, by employing a version of the '\path' -macros of Appendix D of 'The TeXbook'. - - -File: eplain.info, Node: Construction of commutative diagrams, Next: Commutative diagram parameters, Prev: Arrows and morphisms, Up: Commutative diagrams - -6.2.2 Construction of commutative diagrams ------------------------------------------- - -There are two approaches to the construction of commutative diagrams -described here. The first approach, and the simplest, treats commutative -diagrams like fancy matrices, as Knuth does in Exercise 18.46 of 'The -TeXbook'. This case is covered by the macro '\commdiag', which is an -altered version of the Plain TeX macro '\matrix'. An example suffices to -demonstrate this macro. The following commutative diagram (illustrating -the covering homotopy property; Bott and Tu, 'Differential Forms in -Algebraic Topology') - - (A commutative diagram appears here in the printed output.) - - is produced with the code - - $$\commdiag{Y&\mapright^f&E\cr \mapdown&\arrow(3,2)\lft{f_t}&\mapdown\cr - Y\times I&\mapright^{\bar f_t}&X}$$ - - Of course, the parameters may be changed to produce a different -effect. The following commutative diagram (illustrating the universal -mapping property; Warner, 'Foundations of Differentiable Manifolds and -Lie Groups') - - (A commutative diagram appears here in the printed output.) - - is produced with the code - - $$\varrowlength=20pt - \commdiag{V\otimes W\cr \mapup\lft\phi&\arrow(3,-1)\rt{\tilde l}\cr - V\times W&\mapright^l&U\cr}$$ - - A diagram containing isosceles triangles is achieved by placing the -apex of the triangle in the center column, as shown in the example -(illustrating all constant minimal realizations of a linear system; -Brockett, 'Finite Dimensional Linear Systems') - - (A commutative diagram appears here in the printed output.) - - which is produced with the code - - $$\sarrowlength=.42\harrowlength - \commdiag{&R^m\cr &\arrow(-1,-1)\lft{\bf B}\quad \arrow(1,-1)\rt{\bf G}\cr - R^n&\mapright^{\bf P}&R^n\cr - \mapdown\lft{e^{{\bf A}t}}&&\mapdown\rt{e^{{\bf F}t}}\cr - R^n&\mapright^{\bf P}&R^n\cr - &\arrow(1,-1)\lft{\bf C}\quad \arrow(-1,-1)\rt{\bf H}\cr - &R^q\cr}$$ - - Other commutative diagram examples appear in the file -'commdiags.tex', which is distributed with this package. - - In these examples the arrow lengths and line slopes were carefully -chosen to blend with each other. In the first example, the default -settings for the arrow lengths are used, but a direction for the arrow -must be chosen. The ratio of the default horizontal and vertical arrow -lengths is approximately the golden mean gamma=1.618...; the arrow -direction closest to this mean is '(3,2)'. In the second example, a -slope of -1/3 is desired and the default horizontal arrow length is 60 -pt; therefore, choose a vertical arrow length of 20 pt. You may affect -the interline glue settings of '\commdiag' by redefining the macro -'\commdiagbaselines'. (cf. Exercise 18.46 of 'The TeXbook' and the -section on parameters below.) - - The width, height, and depth of all morphisms are hidden so that the -morphisms' size do not affect arrow positions. This can cause a large -morphism at the top or bottom of a diagram to impinge upon the text -surrounding the diagram. To overcome this problem, use TeX's '\noalign' -primitive to insert a '\vskip' immediately above or below the offending -line, e.g., '$$\commdiag{\noalign{\vskip6pt}X&\mapright^\int&Y\cr ...}'. - - The macro '\commdiag' is too simple to be used for more complicated -diagrams, which may have intersecting or overlapping arrows. A second -approach, borrowed from Francis Borceux's 'Diagram' macros for LaTeX, -treats the commutative diagram like a grid of identically shaped boxes. -To compose the commutative diagram, first draw an equally spaced grid, -e.g., - - . . . . . . - . . . . . . - . . . . . . - . . . . . . - - on a piece of scratch paper. Then draw each element (vertices and -arrows) of the commutative diagram on this grid, centered at each grid -point. Finally, use the macro '\gridcommdiag' to implement your design -as a TeX alignment. For example, the cubic diagram - - (A commutative diagram appears here.) - - that appears in Francis Borceux's documentation can be implemented on -a 7 by 7 grid, and is achieved with the code - - $$\harrowlength=48pt \varrowlength=48pt \sarrowlength=20pt - \def\cross#1#2{\setbox0=\hbox{$#1$}% - \hbox to\wd0{\hss\hbox{$#2$}\hss}\llap{\unhbox0}} - \gridcommdiag{&&B&&\mapright^b&&D\cr - &\arrow(1,1)\lft a&&&&\arrow(1,1)\lft d\cr - A&&\cross{\hmorphposn=12pt\mapright^c}{\vmorphposn=-12pt\mapdown\lft f} - &&C&&\mapdown\rt h\cr\cr - \mapdown\lft e&&F&&\cross{\hmorphposn=-12pt\mapright_j} - {\vmorphposn=12pt\mapdown\rt g}&&H\cr - &\arrow(1,1)\lft i&&&&\arrow(1,1)\rt l\cr - E&&\mapright_k&&G\cr}$$ - - The dimensions '\hgrid' and '\vgrid' control the horizontal and -vertical spacing of the grid used by '\gridcommdiag'. The default -setting for both of these dimensions is 15 pt. Note that in the example -of the cube the arrow lengths must be adjusted so that the arrows -overlap into neighboring boxes by the desired amount. Hence, the -'\gridcommdiag' method, albeit more powerful, is less automatic than the -simpler '\commdiag' method. Furthermore, the ad hoc macro '\cross' is -introduced to allow the effect of overlapping arrows. Finally, note that -the positions of four of the morphisms are adjusted by setting -'\hmorphposn' and '\vmorphposn'. - - One is not restricted to a square grid. For example, the proof of -Zassenhaus's Butterfly Lemma can be illustrated by the diagram -(appearing in Lang's book 'Algebra') - - (A commutative diagram appears here.) - - This diagram may be implemented on a 9 by 12 grid with an aspect -ratio of 1/2, and is set with the code - - $$\hgrid=16pt \vgrid=8pt \sarrowlength=32pt - \def\cross#1#2{\setbox0=\hbox{$#1$}% - \hbox to\wd0{\hss\hbox{$#2$}\hss}\llap{\unhbox0}} - \def\l#1{\llap{$#1$\hskip.5em}} - \def\r#1{\rlap{\hskip.5em$#1$}} - \gridcommdiag{&&U&&&&V\cr &&\bullet&&&&\bullet\cr - &&\sarrowlength=16pt\sline(0,1)&&&&\sarrowlength=16pt\sline(0,1)\cr - &&\l{u(U\cap V)}\bullet&&&&\bullet\r{(U\cap V)v}\cr - &&&\sline(2,-1)&&\sline(2,1)\cr - &&\cross{=}{\sline(0,1)}&&\bullet&&\cross{=}{\sline(0,1)}\cr\cr - &&\l{^{\textstyle u(U\cap v)}}\bullet&&\cross{=}{\sline(0,1)}&& - \bullet\r{^{\textstyle(u\cap V)v}}\cr - &\sline(2,1)&&\sline(2,-1)&&\sline(2,1)&&\sline(2,-1)\cr - \l{u}\bullet&&&&\bullet&&&&\bullet\r{v}\cr - &\sline(2,-1)&&\sline(2,1)&&\sline(2,-1)&&\sline(2,1)\cr - &&\bullet&&&&\bullet\cr &&u\cap V&&&&U\cap v\cr}$$ - - Again, the construction of this diagram requires careful choices for -the arrow lengths and is facilitated by the introduction of the ad hoc -macros '\cross', '\r', and '\l'. Note also that superscripts were used -to adjust the position of the vertices u(U intersection v) and (u -intersection V)v. Many diagrams may be typeset with the predefined -macros that appear here; however, ingenuity is often required to handle -special cases. - - -File: eplain.info, Node: Commutative diagram parameters, Prev: Construction of commutative diagrams, Up: Commutative diagrams - -6.2.3 Commutative diagram parameters ------------------------------------- - -The following is a list describing the parameters used in the -commutative diagram macros. These dimensions may be changed globally or -locally. - -'\harrowlength' - (Default: 60 pt) The length of right or left arrows. - -'\varrowlength' - (Default: 0.618'\harrowlength') The length of up or down arrows. - -'\sarrowlength' - (Default: 60 pt) The horizontal length of slanted arrows. - -'\hmorphposn' - (Default: 0 pt) The horizontal position of the morphism with - respect to its default position. There are also the dimensions - '\hmorphposnup', '\hmorphposndn', '\hmorphposnrt', and - '\hmorphposnlft' for '^'/'_' or '\lft'/'\rt' constructions. - -'\vmorphposn' - (Default: 0 pt) The vertical position of the morphism with respect - to its default position. There are also the dimensions - '\vmorphposnup', '\vmorphposndn', '\vmorphposnrt', and - '\vmorphposnlft' for '^'/'_' or '\lft'/'\rt' constructions. - -'\morphdist' - (Default: 4 pt) The distance of morphisms from slanted lines or - arrows. - -'\channelwidth' - (Default: 3 pt) The distance between double lines or arrows. - -'\hchannel, \vchannel' - (Defaults: 0 pt) Overrides '\channelwidth'. The horizontal and - vertical shifts between double lines or arrows. - -'\commdiagbaselines' - (Default: '\baselineskip=15pt \lineskip=3pt \lineskiplimit=3pt ') - The parameters used by '\commdiag' for setting interline glue. - -'\hgrid' - (Default: 15 pt) The horizontal spacing of the grid used by - '\gridcommdiag'. - -'\vgrid' - (Default: 15 pt) The vertical spacing of the grid used by - '\gridcommdiag'. - - -File: eplain.info, Node: Programming definitions, Next: Demo files, Prev: Arrow theoretic diagrams, Up: Top - -7 Programming definitions -************************* - -The definitions in this section are only likely to be useful when you -are writing nontrivial macros, not when writing a document. - -* Menu: - -* Category codes:: Changing category codes. -* Allocation macros:: Non-outer versions of \newcount et al. -* Iteration:: Doing 'for' and 'while' loops in TeX. -* Macro arguments:: Reading and ignoring them. -* Converting to characters:: Normalizing control sequences and spaces. -* Expansion:: Controlling expansion. -* Obeying spaces:: Making whitespace count anywhere. -* Writing out numbers:: Making '1' into 'one'. -* Mode-specific penalties:: -* Auxiliary files:: Testing for their existence. -* User-defined environments:: User-defined environments. -* Page list and page range parsers:: - - -File: eplain.info, Node: Category codes, Next: Allocation macros, Up: Programming definitions - -7.1 Category codes -================== - -Plain TeX defines '\active' (as the number 13) for use in changing -category codes. Although the author of 'The TeXbook' has "intentionally -kept the category codes numeric", two other categories are commonly -used: letters (category code 11) and others (12). Therefore, Eplain -defines '\letter' and '\other'. - - Sometimes it is cleaner to make a character active without actually -writing a '\catcode' command. The '\makeactive' command takes a -character as an argument to make active (and ignores following spaces). -For example, here are two commands which both make '\' active: - - \makeactive\\ \makeactive92 - - Sometimes you might want to temporarily change the category code of -the '@' character to '\letter', so that you can use or define macros -which are normally inaccessible to the user. For such situations, Eplain -provides the '\makeatletter' command. It sets the category code of '@' -to '\letter' (11) and defines '\resetatcatcode' to restore the category -code to whatever it was before the call to '\makeatletter'. For example: - - \makeatletter - \def\@hidden@macro{This macro cannot normally be - called / redefined by the user} - \resetatcatcode - -There is also '\makeatother' which works similarly but sets the category -code of '@' to '\other' (12). - - Usually, when you give a definition to an active character, you have -to do so inside a group where you temporarily make the character active, -and then give it a global definition (cf. the definition of -'\obeyspaces' in 'The TeXbook'). This is inconvenient if you are writing -a long macro, or if the character already has a global definition you do -not wish to transcend. Eplain provides '\letreturn', which defines the -usual end-of-line character to be the argument. For example: - - \def\mymacro{... \letreturn\myreturn ... } - \mymacro hello - there - -The end-of-line between 'hello' and 'there' causes '\myreturn' to be -expanded. - - 'The TeXbook' describes '\uncatcodespecials', which makes all -characters which are normally "special" into "other" characters, but the -definition never made it into plain TeX. Eplain therefore defines it. -For notes on the usage, *note Verbatim listing::. - - Finally, '\percentchar' expands into a literal '%' character. This is -useful when you '\write' TeX output to a file, and want to avoid -spurious spaces. For example, Eplain writes a '\percentchar' after the -definition of cross-references. The macros '\lbracechar' and -'\rbracechar' expand similarly. - - -File: eplain.info, Node: Allocation macros, Next: Iteration, Prev: Category codes, Up: Programming definitions - -7.2 Allocation macros -===================== - -Plain TeX provides macros that allocate registers of each primitive type -in TeX, to prevent different sets of macros from using the same register -for two different things. The macros are all named starting with 'new', -e.g., '\newcount' allocates a new "count" (integer) register. Such -allocations are usually needed only at the top level of some macro -definition file; therefore, plain TeX makes the allocation registers -'\outer', to help find errors. (The error this helps to find is a -missing right brace in some macro definition.) - - Sometimes, however, it is useful to allocate a register as part of -some macro. An outer control sequence cannot be used as part of a macro -definition (or in a few other contexts: the parameter text of a -definition, an argument to a definition, the preamble of an alignment, -or in conditional text that is being skipped). Therefore, Eplain defines -"inner" versions of all the allocation macros, named with the prefix -'inner': '\innernewbox', '\innernewcount', '\innernewdimen', -'\innernewfam', '\innernewhelp', '\innernewif', '\innernewinsert', -'\innernewlanguage', '\innernewread', -'\innernewskip', '\innernewtoks', '\innernewwrite'. - - You can also define non-outer versions of other macros in the same -way that Eplain defines the above. The basic macro is called -'\innerdef': - - \innerdef \INNERNAME {OUTERNAME} - - The first argument (\INNERNAME) to '\innerdef' is the control -sequence that you want to define. Any previous definition of \INNERNAME -is replaced. The second argument (OUTERNAME) is the _characters_ in the -name of the outer control sequence. (You can't use the actual control -sequence name, since it's outer!) - - If the outer control sequence is named \CS, and you want to define -'innerCS' as the inner one, you can use '\innerinnerdef', which is just -an abbreviation for a call to '\innerdef'. For example, these two calls -are equivalent: - - \innerdef\innerproclaim{proclaim} - \innerinnerdef{proclaim} - - -File: eplain.info, Node: Iteration, Next: Macro arguments, Prev: Allocation macros, Up: Programming definitions - -7.3 Iteration -============= - -You can iterate through a comma-separated list of items with '\for'. -Here is an example: - - \for\name:=karl,kathy\do{% - \message{\name}% - }% - -This writes 'karl' and 'kathy' to the terminal. Spaces before or after -the commas in the list, or after the ':=', are _not_ ignored. To strip -leading spaces off the items, use '\For': - - \For\name:= - karl, - kathy\do{% - \message{\name}% - }% - -Note that trailing spaces are still _not_ ignored. - - Both '\for' and '\For' expand the first token of the item list fully, -so this is equivalent to the above: - - \def\namelist{karl,kathy}% - \for\name:=\namelist\do ... - -However, this won't work, either with '\for' or with '\For': - - \def\namelist{karl,kathy}% - \For\name:= \namelist\do ... - -because '\for' and '\For' expand the first token after ':=' which is -space, not '\namelist'. - - Eplain provides another kind of loops, which is an extension of plain -TeX's '\loop'. If you say: - - \loop - LOOP-TEXT - \if CONDITION - IF-TEXT - \repeat - -then LOOP-TEXT will be repeated as long as CONDITION is satisfied ('\if' -can be any of the TeX's conditional commands, without the matching -'\fi'). Eplain extends this with the optional else clause: - - \loop - LOOP-TEXT - \if CONDITION - IF-TEXT - \else - ELSE-TEXT - \repeat - -Here, LOOP-TEXT will be repeated as long as CONDITION is _not_ -satisfied. This extension is from Victor Eijkhout's TeX by Topic -(page 104). - - -File: eplain.info, Node: Macro arguments, Next: Converting to characters, Prev: Iteration, Up: Programming definitions - -7.4 Macro arguments -=================== - -It is occasionally useful to redefine a macro that takes arguments to do -nothing. Eplain defines '\gobble', '\gobbletwo', and '\gobblethree' to -swallow one, two, and three arguments, respectively. - - For example, if you want to produce a "short" table of contents--one -that includes only chapters, say--the easiest thing to do is read the -entire '.toc' file (*note Contents::), and just ignore the commands that -produce section or subsection entries. To be specific: - - \let\tocchapterentry = \shorttocchapter - \let\tocsectionentry = \gobbletwo - \let\tocsubsectionentry = \gobbletwo - \readtocfile - -(Of course, this assumes you only have chapters, sections, and -subsections in your document.) - - In addition, Eplain defines '\eattoken' to swallow the single -following token, using '\let'. Thus, '\gobble' followed by '{...}' -ignores the entire brace-enclosed text. '\eattoken' followed by the same -ignores only the opening left brace. - - Eplain defines a macro '\identity' which takes one argument and -expands to that argument. This may be useful if you want to provide a -function for the user to redefine, but don't need to do anything by -default. (For example, the default definition of '\eqconstruct' (*note -Formatting equation references::) is '\identity'.) - - You may also want to read an optional argument. The established -convention is that optional arguments are put in square brackets, so -that is the syntax Eplain recognizes. Eplain ignores space tokens before -an optional argument, via '\futurenonspacelet'. - - You test for an optional argument by using '\@getoptionalarg'. It -takes one argument, a control sequence to expand after reading the -argument, if present. If an optional argument is present, the control -sequence '\@optionalarg' expands to it; otherwise, '\@optionalarg' is -'\empty'. You must therefore have the category code of '@' set to 11 -(letter). Here is an example: - - \catcode`@=\letter - \def\cmd{\@getoptionalarg\finishcmd} - \def\finishcmd{% - \ifx\@optionalarg\empty - % No optional argument present. - \else - % One was present. - \fi - } - - It's possible to define macros that appear to accept optional -arguments intermixed with mandatory arguments in any imaginable way. For -example: - - \makeatletter - % \mo{m}[o] - \def\mo#1{\def\mo@arg{#1}\@getoptionalarg\fin@mo} - \def\fin@mo{\vskip1pc - ARG: \mo@arg \par - OPTARG: \@optionalarg \par - } - % \mom{m}[o]{m} - \def\mom#1{\def\mom@arg{#1}\@getoptionalarg\fin@mom} - \def\fin@mom#1{\vskip1pc - ARG1: \mom@arg \par - OPTARG: \@optionalarg \par - ARG2: #1\par - } - % \omo[o]{m}[o] - \def\omo{\@getoptionalarg\fin@omo} - \def\fin@omo#1{\let\omo@optarg\@optionalarg - \def\omo@arg{#1}\@getoptionalarg\@fin@omo} - \def\@fin@omo{\vskip1pc - OPTARG1: \omo@optarg \par - ARG: \omo@arg \par - OPTARG2: \@optionalarg \par - } - \makeatother - - If an optional argument contains another optional argument, the inner -one will need to be enclosed in braces, so TeX does not mistake the end -of the first for the end of the second. - - -File: eplain.info, Node: Converting to characters, Next: Expansion, Prev: Macro arguments, Up: Programming definitions - -7.5 Converting to characters -============================ - -Eplain defines '\xrlabel' to produce control sequence names for -cross-reference labels, et al. This macro expands to its argument with -an '_' appended. (It does this because the usual use of '\xrlabel' is to -generate a control sequence name, and we naturally want to avoid -conflicts between control sequence names.) - - Because '\xrlabel' is fully expandable, to make a control sequence -name out of the result you need only do - - \csname \xrlabel{LABEL}\endcsname - -The '\csname' primitive makes a control sequence name out of any -sequence of character tokens, regardless of category code. Labels can -therefore include any characters except for '\', '{', '}', and '#', all -of which are used in macro definitions themselves. - - '\sanitize' takes a control sequence as an argument and converts the -expansion of the control sequence into a list of character tokens. This -is the behavior you want when writing information like chapter titles to -an output file. For example, here is part of the definition of -'\writenumberedtocentry'; '#2' is the title that the user has given. - - ... - \def\temp{#2}% - ... - \write\tocfile{% - ... - \sanitize\temp - ... - }% - - -File: eplain.info, Node: Expansion, Next: Obeying spaces, Prev: Converting to characters, Up: Programming definitions - -7.6 Expansion -============= - -This section describes some miscellanous macros for expansion, etc. - -* Menu: - -* \csn and \ece:: Abbreviations for \csname expansions. -* \edefappend:: -* Hooks:: Manipulating and executing named actions. -* Properties:: Associating information with a csname. -* \expandonce:: -* \ifundefined:: -* \ifempty:: -* \ifinteger and \isinteger:: -* \futurenonspacelet:: - - -File: eplain.info, Node: \csn and \ece, Next: \edefappend, Up: Expansion - -7.6.1 '\csn' and '\ece' ------------------------ - -'\csn'{NAME} simply abbreviates '\csname' NAME '\endcsname', thus saving -some typing. The extra level of expansion does take some time, though, -so I don't recommend it for an inner loop. - - '\ece'{TOKEN}{NAME} abbreviates - - \expandafter TOKEN \csname NAME \endcsname - -For example, - - \def\fontabbrevdef#1#2{\ece\def{@#1font}{#2}} - \fontabbrevdef{normal}{ptmr} - -defines a control sequence '\@normalfont' to expand to 'ptmr'. - - -File: eplain.info, Node: \edefappend, Next: Hooks, Prev: \csn and \ece, Up: Expansion - -7.6.2 '\edefappend' -------------------- - -'\edefappend' is a way of adding on to an existing definition. It takes -two arguments: the first is the control sequence name, the second the -new tokens to append to the definition. The second argument is fully -expanded (in the '\edef' that redefines the control sequence). - - For example: - - \def\foo{abc} - \def\bar{xyz} - \edefappend\foo{\bar karl} - -results in '\foo' being defined as 'abcxyzkarl'. - - -File: eplain.info, Node: Hooks, Next: Properties, Prev: \edefappend, Up: Expansion - -7.6.3 Hooks ------------ - -A "hook" is simply a name for a group of actions which is executed in -certain places--presumably when it is most useful to allow customization -or modification. TeX already provides many builtin hooks; for example, -the '\every ...' token lists are all examples of hooks. - - Eplain provides several macros for adding actions to hooks. They all -take two arguments: the name of the hook and the new actions. - -'hookaction NAME ACTIONS' -'hookappend NAME ACTIONS' -'hookprepend NAME ACTIONS' - Each of these adds ACTIONS to the hook NAME. (Any - previously-defined actions are retained.) NAME is not a control - sequence, but rather the characters of the name. - -'hookactiononce NAME \CS' - '\hookactiononce' adds CS to NAME, like the macros above, but first - it adds - - \global\let \CS \relax - - to the definition of \CS. (This implies \CS must be a true - expandable macro, not a control sequence '\let' to a primitive or - some other such thing.) Thus, \CS is expanded the next time the - hook NAME is run, but it will disappear after that. - - The '\global' is useful because '\hookactiononce' is most useful - when the grouping structure of the TeX code could be anything. - Neither this nor the other hook macros do global assignments to the - hook variable itself, so TeX's usual grouping rules apply. - - The companion macro to defining hook actions is '\hookrun', for -running them. This takes a single argument, the name of the hook. If no -actions for the hook are defined, no error ensues. - - Here is a skeleton of general '\begin' and '\end' macros that run -hooks, and a couple of calls to define actions. The use of -'\hookprepend' for the begin action and '\hookappend' for the end action -ensures that the actions are executed in proper sequence with other -actions (as long as the other actions use '\hookprepend' and -'\hookappend' also). - - \def\begin#1{ ... \hookrun{begin} ... } - \def\end#1{ ... \hookrun{end} ... } - \hookprepend{begin}\start_underline - \hookappend{end}\finish_underline - - -File: eplain.info, Node: Properties, Next: \expandonce, Prev: Hooks, Up: Expansion - -7.6.4 Properties ----------------- - -A "property" is a name/value pair associated with another symbol, -traditionally called an "atom". Both atom and property names are control -sequence names. - - Eplain provides two macros for dealing with property lists: -'\setproperty' and '\getproperty'. - -'\setproperty ATOM PROPNAME VALUE' - '\setproperty' defines the property PROPERTY on the atom ATOM to be - VALUE. ATOM and PROPNAME can be anything acceptable to '\csname'. - VALUE can be anything. - -'\getproperty ATOM PROPNAME' - '\getproperty' expands to the value stored for PROPNAME on ATOM. If - PROPNAME is undefined, it expands to nothing (i.e., '\empty'). - - The idea of properties originated in Lisp (I believe). There, the -implementation truly does associate properties with atoms. In TeX, where -we have no builtin support for properties, the association is only -conceptual. - - The following example typesets 'xyz'. - - \setproperty{a}{pr}{xyz} - \getproperty{a}{pr} - - -File: eplain.info, Node: \expandonce, Next: \ifundefined, Prev: Properties, Up: Expansion - -7.6.5 '\expandonce' -------------------- - -'\expandonce' is defined as '\expandafter\noexpand'. Thus, '\expandonce -TOKEN' expands TOKEN once, instead of to TeX primitives. This is most -useful in an '\edef'. - - For example, the following defines '\temp' to be '\foo', not 'abc'. - - \def\foo{abc} - \def\bar{\foo} - \edef\temp{\expandonce\bar} - - -File: eplain.info, Node: \ifundefined, Next: \ifempty, Prev: \expandonce, Up: Expansion - -7.6.6 '\ifundefined' --------------------- - -'\ifundefined{CS} T \else F \fi' expands the T text if the control -sequence '\CS' is undefined or has been '\let' to '\relax', and the F -text otherwise. - - Since '\ifundefined' is not a primitive conditional, it cannot be -used in places where TeX might skip tokens "at high speed", e.g., within -another conditional--TeX can't match up the '\if''s and '\fi''s. - - This macro was taken directly from 'The TeXbook', page 308. - - -File: eplain.info, Node: \ifempty, Next: \ifinteger and \isinteger, Prev: \ifundefined, Up: Expansion - -7.6.7 '\ifempty' ----------------- - -'\ifempty{ARG} T \else F \fi' expands the T text if ARG is the empty -string, and the F text otherwise. This macro is useful when you need to -test for empty arguments to your macros, for example: - - \def\foo#1{\ifempty{#1} T \else F \fi} - - Since '\ifempty' is not a primitive conditional, it cannot be used in -places where TeX might skip tokens "at high speed", e.g., within another -conditional--TeX can't match up the '\if''s and '\fi''s. - - Note that the following code - - \def\empty{} - \ifempty\empty\message{empty}\else\message{not empty}\fi - -will produce the message 'not empty'. - - -File: eplain.info, Node: \ifinteger and \isinteger, Next: \futurenonspacelet, Prev: \ifempty, Up: Expansion - -7.6.8 '\ifinteger' and '\isinteger' ------------------------------------ - -'\ifinteger{ARG} T \else F \fi' expands the T text if ARG is an integer, -and the F text otherwise. This macro can detect positive and negative -integers. - - Since '\ifinteger' is not a primitive conditional, it cannot be used -in places where TeX might skip tokens "at high speed", e.g., within -another conditional--TeX can't match up the '\if''s and '\fi''s. For -such situations Eplain provides '\isinteger', which can be used as -follows: - - \if\isinteger{ARG} T \else F \fi - - Although '\ifinteger' and '\isinteger' work well with regular input, -they are not bullet-proof. For example, the following code - - \ifinteger{12_ab}integer\else not integer\fi - -will expand to 'ab_integer' (and thus would not even compile outside -math mode). - - These macros come from TeX Frequently Asked Question -(<http://www.tex.ac.uk/cgi-bin/texfaq2html>). - - -File: eplain.info, Node: \futurenonspacelet, Prev: \ifinteger and \isinteger, Up: Expansion - -7.6.9 '\futurenonspacelet' --------------------------- - -The '\futurelet' primitive allows you to look at the next token from the -input. Sometimes, though, you want to look ahead ignoring any spaces. -This is what '\futurenonspacelet' does. It is otherwise the same as -'\futurelet': you give it two control sequences as arguments, and it -assigns the next nonspace token to the first, and then expands the -second. For example: - - \futurenonspacelet\temp\finishup - \def\finishup{\ifx\temp ...} - - -File: eplain.info, Node: Obeying spaces, Next: Writing out numbers, Prev: Expansion, Up: Programming definitions - -7.7 Obeying spaces -================== - -'\obeywhitespace' makes both end-of-lines and space characters in the -input be respected in the output. Unlike plain TeX's '\obeyspaces', even -spaces at the beginnings of lines turn into blank space. - - By default, the size of the space that is produced by a space -character is the natural space of the current font, i.e., what '\ ' -produces. - - Ordinarily, a blank line in the input produces as much blank vertical -space as a line of text would occupy. You can adjust this by assigning -to the parameter '\blanklineskipamount': if you set this negative, the -space produced by a blank line will be smaller; if positive, larger. - - Tabs are not affected by this routine. In particular, if tabs occur -at the beginning of a line, they will disappear. (If you are trying to -make TeX do the "right thing" with tabs, don't. Use a utility program -like expand instead.) - - -File: eplain.info, Node: Writing out numbers, Next: Mode-specific penalties, Prev: Obeying spaces, Up: Programming definitions - -7.8 Writing out numbers -======================= - -'\numbername' produces the written-out form of its argument, i.e., -'zero' through 'ten' for the numbers 0-10, and numerals for all others. - - -File: eplain.info, Node: Mode-specific penalties, Next: Auxiliary files, Prev: Writing out numbers, Up: Programming definitions - -7.9 Mode-specific penalties -=========================== - -TeX's built-in '\penalty' command simply appends to the current list, no -matter what kind of list it is. You might intend a particular penalty to -always be a "vertical" penalty, however, i.e., appended to a vertical -list. Therefore, Eplain provides '\vpenalty' and '\hpenalty' which first -leave the other mode and then do '\penalty'. - - More precisely, '\vpenalty' inserts '\par' if the current mode is -horizontal, and '\hpenalty' inserts '\leavevmode' if the current mode is -vertical. (Thus, '\vpenalty' cannot be used in math mode.) - - -File: eplain.info, Node: Auxiliary files, Next: User-defined environments, Prev: Mode-specific penalties, Up: Programming definitions - -7.10 Auxiliary files -==================== - -It is common to write some information out to a file to be used on a -subsequent run. But when it is time to read the file again, you only -want to do so if the file actually exists. '\testfileexistence' is given -an argument which is appended to '\jobname', and sets the conditional -'\iffileexists' appropriately. For example: - - \testfileexistence{toc}% - \iffileexists - \input \jobname.toc - \fi - - '\testfileexistence' takes an optional parameter; when given, it will -override '\jobname' for the root part of the file name. For example, if -you want to test for the file 'answers.aux', you can do this with the -following: - - \testfileexistence[answers]{aux}% - \iffileexists - \input answers.aux - \fi - - -File: eplain.info, Node: User-defined environments, Next: Page list and page range parsers, Prev: Auxiliary files, Up: Programming definitions - -7.11 User-defined environments -============================== - -Plain TeX does not provide "named" block structures, only the anonymous -'\begingroup' and '\endgroup' pair. The disadvantage of this is that -when there are several such groups and one is mismatched, it can be -difficult to find the error. Eplain provides a named block structure so -that if you forget an '\environment' or an '\endenvironment', you will -(probably) get an error message about it. - - For example: - - \def\itpar{ - \environment{@italicpar} - \it\par - } - \def\enditpar{ - \par - \endenvironment{@italicpar}% - } - -which could then be used to set italicized paragraphs: - - \itpar - If I reprehend anything in this world, it is the use of my oracular - tongue, and a nice derangement of epitaphs! - \enditpar - - The above sort of environment allows nesting. But environments -shouldn't always be allowed to nest. Put the control sequence -'\checkenv' at the beginning of a macro that is going to define an -environment that should not be nested. - - -File: eplain.info, Node: Page list and page range parsers, Prev: User-defined environments, Up: Programming definitions - -7.12 Page list and page range parsers -===================================== - -The macros which Eplain uses to parse the page lists and ranges in the -index, '\idxparselist' and '\idxparserange' (*note Page destinations for -index terms::), are sometimes useful when defining page number -encapsulators. They take one argument, text to parse. When a page list -(range) is not present, they set '\idxpagei' to be '\empty'; when a list -(range) is detected, they set '\idxpagei' and '\idxpageii' to the first -and the second page numbers, respectively. - - Eplain's defaults for the page list and page range delimiters are the -same as those in MakeIndex, a comma followed by a space (', ') and two -dashes ('--'), respectively. If you customize MakeIndex to use different -delimiters, you must not forget to let Eplain know about them with the -commands - - \setidxpagelistdelimiter{LIST-DELIM} - \setidxpagerangedelimiter{PAGE-DELIM} - -These commands save the LIST-DELIM and PAGE-DELIM delimiters in -'\idxpagelistdelimiter' and '\idxpagerangedelimiter', respectively. - - For example, you may want to define a page number markup command -which italicizes and properly underlines page ranges by underlining only -the page numbers and not the delimiter: - - \def\ituline#1{% - {\it - \idxparserange{#1}% - \ifx\idxpagei\empty - % The argument is a single page number. - \underbar{#1}% - \else - % The argument is a page range. - \underbar{\idxpagei}\idxpagerangedelimiter\underbar{\idxpageii}% - \fi}% - } - -Note that the '\ituline' macro is not aware of page lists. This is not -needed if you use hyperlinks in the index, because '\hlidx' and -'\hlidxpage' will break up the page lists before calling the user's page -encapsulator (*note Page destinations for index terms::), so '\ituline' -will never see the lists. If, however, you need to design a macro which -also takes care of the lists, you can extend '\ituline' with an -additional call to '\idxparselist'. - - -File: eplain.info, Node: Demo files, Next: Macro index, Prev: Programming definitions, Up: Top - -8 Demo files -************ - -This chapter contains listings of source files, along with the output -they produce (where appropriate), which illustrate various aspects of -Eplain. The files can be found in the 'demo' subdirectory of Eplain -distribution. These demos, both the sources and the compiled PDF and PS -files, are also available from <http://tug.org/eplain/demo>. - -* Menu: - -* Hyperlinks (xhyper.tex):: -* Highlighting TeX comments in listings (lscommnt.tex):: - - -File: eplain.info, Node: Hyperlinks (xhyper.tex), Next: Highlighting TeX comments in listings (lscommnt.tex), Up: Demo files - -8.1 Hyperlinks ('xhyper.tex') -============================= - - - -% (This file is public domain.) -% -% This file demonstrates the following features of Eplain: -% -% - explicit and implicit hyperlinks; -% - symbolic cross-references; -% - inserting external graphics using |\includegraphics| from -% the \LaTeX\ package |graphicx.sty|. -% - rotating text using |\rotatebox| from |graphicx.sty|. -% -% The compiled demo can be downloaded from -% -% http://tug.org/eplain/demo -% -% In order to compile this file yourself, you will need the CTAN lion -% drawing by Duane Bibby from -% -% ftp://tug.ctan.org/ftpmaint/CTAN_lion/ctan_lion_350x350.png -% -% (thanks, |www.ctan.org|). Place the image file in the same -% directory with this file, and change to that directory. Now, to -% produce a PDF, run twice the command -% -% pdftex xhyper.tex -% -% During the first run, Eplain will write the information about the -% cross-references into |xhyper.aux|, and during the second run this -% information will be read by Eplain to typeset the references. -% -% Demo case: -% -% Suppose you are using pdf\TeX, have a figure you want to insert -% scaled to $200\,pt$ horizontally, and you want this figure to -% completely fill the PDF viewer's window whenever the reader -% selects a link pointing to this figure. Additionally, you want to -% typeset some text as live hyperlinks, clicking on which will start -% a Web browser and open a URL. - -\input eplain - -% Load \LaTeX\ packages. -\beginpackages - % |url.sty| provides the |\url| command which we will use to typeset - % a URL. We request that |url.sty| be the version from June~27, - % 2005, or later, because earlier versions had problems interacting - % with plain \TeX. - \usepackage{url}[2005/06/27] - % |color.sty| provides support for colored text; all hyperlinks are - % automatically colored by Eplain when this package is loaded. We give - % the |dvipsnames| option because we want to use named colors from the - % |dvips| graphics driver. - \usepackage[dvipsnames]{color} - % Finally, we load |graphicx.sty|, for the macros |\includegraphics| - % and |\rotatebox|. - \usepackage{graphicx} -\endpackages - -% Remember that hyperlinks are off by default. Therefore, we need to -% enable them. -\enablehyperlinks - -% Customize some hyperlink options. First, we set border width to~$0$ -% for all links to get rid of the default boxes around links (we -% prefer colored links over the boxed links). Next, we say that all -% links created by the |url| hyperlink group (which means the |\url| -% command from |url.sty|) must be colored using the named color -% |BlueViolet|. -\hlopts{bwidth=0} -\hlopts[url]{colormodel=named,color=BlueViolet} - -% Inhibit page numbering (we have only one page). -\nopagenumbers - -% Define a class word for the cross-reference class |figure|. This -% word, when defined, will be automatically prepended by Eplain to the -% reference created by |\ref| (read on to see its use). -\def\figureword{fig.} - -% Allocate a count register for the figure's number, and a box -% register which we'll use to measure dimensions of the image. -\newcount\fignumber -\newbox\imgbox - -% Now comes the fun part--constructing the figure for the image of the -% \CTAN\ lion. We define a macro -% -% \fig{LABEL}{FILENAME}{CAPTION}{WIDTH} -% -% which creates a figure using LABEL for the cross-reference and -% hyperlink label, reading the image from file FILENAME, using CAPTION -% to name the figure, and WIDTH to scale the image horizontally. -\def\fig#1#2#3#4{% - % Leave some space above the figure. This will also ensure that we - % are in the vertical mode before we produce a |\vbox|. - \medskip - % Advance the figure number. |\global| ensures that the change to - % the count register is global, even when |\fig| is buried inside a - % group. - \global\advance\fignumber by 1 - % We use |\includegraphics| (from |graphicx.sty|) to load the image, - % scaled to the specified width, into our ``measuring'' box - % |\imgbox|. - \setbox\imgbox = \hbox{\includegraphics[width=#4]{#2}}% - % To make the demo even more exciting, let's put the figure's - % caption to the left of the image into the |\indent| space of the - % new paragraph, and rotate the caption~$90^\circ$. - \textindent{% - \rotatebox{90}{F{\sc IGURE}~\the\fignumber. #3}% - }% - % Continue the paragraph by constructing a |\vbox| with the image of - % the lion. We use |\definexref| to define the cross-reference - % label. - \vbox{% - % In addition to the cross-reference label, |\definexref| will - % create a hyperlink destination with the same label. Therefore, - % we customize this destination to do what we need. We say that - % destination type for the hyperlink group |definexref| (to which - % |\definexref| belongs) should be |fitr|. This destination type - % will magnify the rectangle specified by the options |width|, - % |height| and |depth| to the PDF viewer's window. Therefore, we - % set those options accordingly with |\hldestopts| (notice the use - % of |depth| instead of |height|---we will want the rectangle to - % extend {\it downward}, to cover the image which will come - % next). Notice that these settings will be isolated within the - % current group (i.e., the |\vbox| we're constructing). - \hldesttype[definexref]{fitr}% - \hldestopts[definexref]{width=\wd\imgbox,height=0pt,depth=\ht\imgbox}% - % We define a symbolic label so that we can later refer - % to the figure with |\ref|. The command |\definexref| does - % exactly that. The last argument to |\definexref| specifies - % class of the label, which determines the word used by |\ref| in - % front of the reference text (remember that we've defined - % |\figureword| above). - \definexref{#1}{\the\fignumber}{figure}% - % Finally, produce the image which we've been stashing in the box - % register |\imgbox|. - \box\imgbox - }% - \medskip -} - -% Create the figure. -\fig{CTANlion}{ctan_lion_350x350}{Lion in the archives}{200pt} - -% Finished with the fun part, we can relax and typeset some -% hyperlinks. The easiest way to do that is to use the |\ref| -% cross-reference command. We can even pass an optional argument -% (|the lion in|), which will be placed before the class word (|fig.|) -% and become part of the link (to make sure the reader does not have -% to aim too hard). -Show me \ref[the lion in]{CTANlion}. - -% If you are the restless kind, here's another way to create a -% hyperlink to the image: we create a link explicitly by using -% |\hlstart ... \hlend|. We don't specify the link type, therefore -% the default type |name| will be used (these are ``named links'', -% i.e., links pointing to destinations identified by labels). In the -% options argument, we specify that the border of the link should be -% inverted when the user clicks the link (|hlight=O|), and also set -% special color for this link, overriding the default dark-red. The -% label for the destination is the same as the cross-reference label, -% |CTANlion|. -Show me -\hlstart{}{hlight=O,colormodel=named,color=OliveGreen}{CTANlion} - the CTAN lion\hlend. - -% Let's now point somewhere outside our document. Eplain homepage is -% a good target. In the similar spirit, let's consider two -% approaches. The easy one is to use the |\url| command from -% |url.sty|. Remember that we have customized the color of |url| -% hyperlinks, so this one will show up with a different color than the -% default dark-red. -Take me to \url{http://tug.org/eplain}. - -% The second approach is to create an explicit URL link. We specify -% yet another border highlighting mode, |P|, which means that the -% region underneath the bounding box of the link will be drawn inset -% into the page. Also, let's set the color of the hyperlink to an RGB -% color |0.4,0.1,0.4|. Since we cannot use commas to separate the -% color elements inside the options parameter to |\hlstart| (commas -% there separate options), we have to first create a user-defined -% color with |\definecolor| from |color.sty|, and use that in -% |\hlstart|. -\definecolor{mycolor}{rgb}{0.4,0.1,0.4} - -Take me to -\hlstart{url}{hlight=P,colormodel=,color=mycolor}{http://tug.org/eplain} - Eplain homepage\hlend. - -\bye - - -File: eplain.info, Node: Highlighting TeX comments in listings (lscommnt.tex), Prev: Hyperlinks (xhyper.tex), Up: Demo files - -8.2 Highlighting TeX comments in listings ('lscommnt.tex') -========================================================== - - - -% (This file is public domain.) -% Demonstrate how Eplain can be used to include a TeX source file -% verbatim, typesetting comments in colored italic typewriter type. - -% Load Eplain and LaTeX's color.sty package. -\input eplain -\beginpackages \usepackage{color} \endpackages -\nopagenumbers % Disable page numbers. -\font\commentfont = cmitt10 % Font for the comments (italic \tt). -% We'll define some `protected' macros with `@' in their names. -\makeatletter -% Define an equivalent of Eplain's \letreturn, to be able to assign -% various actions to the (active) percent character. -\begingroup \makeactive\% - \gdef\letpercent{\let%} -\endgroup -% The listing hook to be called in \setuplistinghook, see below. It -% makes `%' active and assigns it a `start comment' action. -\def\hlightcommentslisting{\makeactive\% \letpercent\start@comment}% -% This is what `%' is aliased to before a comment is started. -\def\start@comment{% - \leavevmode % Needed in the very first line of the input to process - % the new par (possibly inserting line number) before we - % kick in with the color and stuff. - \begingroup % Isolate color and font changes and the redefinitions. - \commentfont - \color[cmyk]{0.28,1,1,0.35}% - \percentchar % Produce the actual `%' and - \letpercent\percentchar % make all following `%'s do the same. - \letreturn\end@comment % Call \end@comment at end-of-line. -} -% \end@comment (alias for ^^M inside a comment) will end the comment -% started by \start@comment. We make ^^M active temporarily so that -% the active version of ^^M gets "frozen" into \end@comment. -\begingroup \makeactive\^^M % Avoid ^^M's from here on. - \gdef\end@comment{\endgroup ^^M}% -\endgroup -\resetatcatcode % Make `@' again inaccessible for use in macro names. - -% Define \setuplistinghook to setup comments highlighting, line -% numbering and omitting the last (empty) line of input. -\def\setuplistinghook{\hlightcommentslisting \linenumberedlisting - \nolastlinelisting} -% Isn't this fun? This file typesets itself, with the extra bonus of -% the pretty-printed comments and numbered source lines! -\listing{lscommnt} -\bye - - -File: eplain.info, Node: Macro index, Next: Concept index, Prev: Demo files, Up: Top - -Macro index -*********** - - -* Menu: - -* @hllabel: Destination types for hypertex. - (line 14) -* @hllabel <1>: Link types for hypertex. - (line 39) -* @hllabel <2>: Destination types for pdftex and dvipdfm. - (line 84) -* @hllabel <3>: Link types for pdftex and dvipdfm. - (line 67) -* @indexproof insertion class: Proofing index terms. - (line 28) -* abovecolumnskip: Multiple columns. (line 33) -* abovecolumnspenalty: Tables. (line 30) -* abovelistpenalty: Formatting lists. (line 29) -* abovelistskip: Formatting lists. (line 29) -* abovelistskipamount: Formatting lists. (line 10) -* adjarrow: Arrows and morphisms. - (line 113) -* adjmapdown: Arrows and morphisms. - (line 91) -* adjmapleft: Arrows and morphisms. - (line 66) -* adjmapright: Arrows and morphisms. - (line 63) -* adjmapup: Arrows and morphisms. - (line 94) -* advancebottommargin: Margins. (line 26) -* advanceleftmargin: Margins. (line 26) -* advancerightmargin: Margins. (line 26) -* advancetopmargin: Margins. (line 26) -* afterindexterm: Customizing indexing. - (line 6) -* afterindexterm hook: Indexing commands. (line 62) -* AMSLaTeX: Logos. (line 10) -* AMSTeX: Logos. (line 10) -* arrow: Arrows and morphisms. - (line 20) -* arrow <1>: Arrows and morphisms. - (line 104) -* bblem: Formatting bibliographies. - (line 41) -* bblemph: Formatting bibliographies. - (line 45) -* bblfilebasename: Citations. (line 30) -* bblhook: Formatting bibliographies. - (line 67) -* bblnewblock: Formatting bibliographies. - (line 53) -* bblrm: Formatting bibliographies. - (line 38) -* bblsc: Formatting bibliographies. - (line 49) -* bcolor (hyperlink option): Link options for pdftex and dvipdfm. - (line 13) -* bdash (hyperlink option): Link options for pdftex and dvipdfm. - (line 19) -* bdash (hyperlink option) <1>: Link options for pdftex and dvipdfm. - (line 32) -* begin for index entries: Modifying index entries. - (line 22) -* beginindex hook: Typesetting an index. - (line 30) -* beginlist: Formatting lists. (line 50) -* beginpackages: Environment for loading packages. - (line 6) -* begin{picture}: Packages known to work. - (line 14) -* begin{theindex}: Typesetting an index. - (line 17) -* belowcolumnskip: Multiple columns. (line 34) -* belowfootnoterulespace: Footnotes. (line 46) -* belowlistskip: Formatting lists. (line 30) -* belowlistskipamount: Formatting lists. (line 10) -* biarrow: Arrows and morphisms. - (line 110) -* biblabelcontents: Formatting bibliographies. - (line 23) -* biblabelextraspace: Formatting bibliographies. - (line 61) -* biblabelpostcontents: Formatting bibliographies. - (line 30) -* biblabelprecontents: Formatting bibliographies. - (line 30) -* biblabelprint: Formatting bibliographies. - (line 17) -* biblabelwidth: Formatting bibliographies. - (line 11) -* bibliography: Citations. (line 61) -* bibliography (hyperlinks): Citation hyperlinks. (line 11) -* bibliographystyle: Citations. (line 68) -* BibTeX: Logos. (line 10) -* bihline: Arrows and morphisms. - (line 69) -* bimapdown: Arrows and morphisms. - (line 85) -* bimapleft: Arrows and morphisms. - (line 60) -* bimapright: Arrows and morphisms. - (line 57) -* bimapup: Arrows and morphisms. - (line 88) -* bisline: Arrows and morphisms. - (line 116) -* bivline: Arrows and morphisms. - (line 97) -* blackbox: Boxes. (line 7) -* blanklineskipamount in justified text: Justification. (line 23) -* blanklineskipamount in obeyed text: Obeying spaces. (line 16) -* bottom (destination option): Destination types for pdftex and dvipdfm. - (line 65) -* bottom (destination option) <1>: Destination options for pdftex and dvipdfm. - (line 56) -* bottommargin: Margins. (line 17) -* boxit: Boxes. (line 28) -* boxitspace: Boxes. (line 30) -* bstyle (hyperlink option): Link options for pdftex and dvipdfm. - (line 25) -* bwidth (hyperlink option): Link options for pdftex and dvipdfm. - (line 49) -* catcode: Category codes. (line 13) -* center: Justification. (line 7) -* centereddisplays: Displays. (line 13) -* channelwidth: Arrows and morphisms. - (line 119) -* channelwidth <1>: Commutative diagram parameters. - (line 36) -* cite: Citations. (line 42) -* cite (hyperlinks): Citation hyperlinks. (line 6) -* cmd (destination option): Destination types for hypertex. - (line 14) -* cmd (destination option) <1>: Destination options for hypertex. - (line 7) -* cmd (destination option) <2>: Destination types for pdftex and dvipdfm. - (line 83) -* cmd (destination option) <3>: Destination options for pdftex and dvipdfm. - (line 14) -* cmd (hyperlink option): Link types for hypertex. - (line 39) -* cmd (hyperlink option) <1>: Link options for hypertex. - (line 7) -* cmd (hyperlink option) <2>: Link types for pdftex and dvipdfm. - (line 66) -* cmd (hyperlink option) <3>: Link options for pdftex and dvipdfm. - (line 56) -* color (hyperlink option): Options supported by all drivers. - (line 37) -* colormodel (hyperlink option): Options supported by all drivers. - (line 37) -* columnfill: Multiple columns. (line 14) -* commdiag: Construction of commutative diagrams. - (line 9) -* commdiagbaselines: Construction of commutative diagrams. - (line 64) -* commdiagbaselines <1>: Commutative diagram parameters. - (line 43) -* csn: \csn and \ece. (line 6) -* definecolor: Hyperlinks (xhyper.tex). - (line 7) -* definecontentsfile: Alternative contents files. - (line 6) -* defineindex: Indexing. (line 36) -* definexref: Defining generic references. - (line 6) -* definexref <1>: Hyperlinks (xhyper.tex). - (line 7) -* definexref (hyperlinks): Cross-reference hyperlinks. - (line 6) -* depth (destination option): Destination types for pdftex and dvipdfm. - (line 61) -* depth (destination option) <1>: Destination options for pdftex and dvipdfm. - (line 34) -* depth (hyperlink option): Link options for pdftex and dvipdfm. - (line 122) -* discretionaries: Paths. (line 20) -* displaylines: Displays. (line 18) -* dospecials: Verbatim listing. (line 57) -* doublecolumns: Multiple columns. (line 7) -* drawline: Slanted lines and vectors. - (line 6) -* drawvector: Slanted lines and vectors. - (line 6) -* dvipdfm (hyperlink driver): Hyperlink drivers pdftex and dvipdfm. - (line 6) -* eattoken: Macro arguments. (line 23) -* ece: \csn and \ece. (line 10) -* edefappend: \edefappend. (line 6) -* ehrule: Rules. (line 17) -* em: Commands from LaTeX. (line 25) -* emph: Commands from LaTeX. (line 25) -* enablehyperlinks: Introduction to hyperlinks. - (line 42) -* enablehyperlinks <1>: Choosing destination placement. - (line 7) -* enablehyperlinks <2>: Hyperlink driver nolinks. - (line 48) -* end for index entries: Modifying index entries. - (line 22) -* endlist: Formatting lists. (line 52) -* endnumberedlist: Lists. (line 13) -* endorderedlist: Lists. (line 13) -* endpackages: Environment for loading packages. - (line 6) -* endunorderedlist: Lists. (line 20) -* end{picture}: Packages known to work. - (line 14) -* end{theindex}: Typesetting an index. - (line 17) -* eplain: Invoking Eplain. (line 30) -* eplaininput: Environment for loading packages. - (line 24) -* eqalignno: Displays. (line 18) -* eqalignno <1>: Displays. (line 23) -* eqalignnum: Displays. (line 23) -* eqconstruct: Formatting equation references. - (line 21) -* eqdef: Equation references. (line 15) -* eqdef (hyperlinks): Equation reference hyperlinks. - (line 6) -* eqdefn: Equation references. (line 38) -* eqdefn (hyperlinks): Equation reference hyperlinks. - (line 6) -* eqno: Displays. (line 23) -* eqnum: Displays. (line 23) -* eqnum <1>: Equation references. (line 15) -* eqnum <2>: Equation references. (line 38) -* eqnumber: Equation references. (line 8) -* eqprint: Formatting equation references. - (line 12) -* eqref: Equation references. (line 46) -* eqref <1>: Equation reference hyperlinks. - (line 20) -* eqrefn: Equation references. (line 51) -* eqrefn <1>: Equation reference hyperlinks. - (line 20) -* eqsubdef: Subequation references. - (line 11) -* eqsubdef (hyperlinks): Equation reference hyperlinks. - (line 6) -* eqsubdefn: Subequation references. - (line 11) -* eqsubdefn (hyperlinks): Equation reference hyperlinks. - (line 6) -* eqsubreftext: Subequation references. - (line 22) -* eTeX: Logos. (line 10) -* everyfootnote: Footnotes. (line 35) -* evrule: Rules. (line 18) -* expandonce: \expandonce. (line 6) -* ext (hyperlink option): Link types for hypertex. - (line 23) -* ext (hyperlink option) <1>: Link options for hypertex. - (line 20) -* ExTeX: Logos. (line 10) -* file (hyperlink option): Link types for hypertex. - (line 22) -* file (hyperlink option) <1>: Link options for hypertex. - (line 14) -* file (hyperlink option) <2>: Link types for pdftex and dvipdfm. - (line 40) -* file (hyperlink option) <3>: Link types for pdftex and dvipdfm. - (line 52) -* file (hyperlink option) <4>: Link options for pdftex and dvipdfm. - (line 63) -* fileexists (conditional): Auxiliary files. (line 10) -* filename (hyperlink type): Link types for hypertex. - (line 21) -* filename (hyperlink type) <1>: Link types for pdftex and dvipdfm. - (line 39) -* filepage (hyperlink type): Link types for pdftex and dvipdfm. - (line 51) -* fit (destination type): Destination types for pdftex and dvipdfm. - (line 18) -* fitb (destination type): Destination types for pdftex and dvipdfm. - (line 39) -* fitbh (destination type): Destination types for pdftex and dvipdfm. - (line 44) -* fitbv (destination type): Destination types for pdftex and dvipdfm. - (line 52) -* fith (destination type): Destination types for pdftex and dvipdfm. - (line 23) -* fitr (destination type): Destination types for pdftex and dvipdfm. - (line 60) -* fitv (destination type): Destination types for pdftex and dvipdfm. - (line 31) -* flushleft: Justification. (line 7) -* flushright: Justification. (line 7) -* fmtversion: Introduction. (line 50) -* footnote (hyperlinks): Footnote hyperlinks. (line 7) -* footnotemarkseparation: Footnotes. (line 25) -* footnoteruleheight: Footnotes. (line 44) -* footnoterulewidth: Footnotes. (line 44) -* for: Iteration. (line 6) -* For: Iteration. (line 15) -* frac: Fractions. (line 6) -* fullmonthname: Time of day. (line 13) -* futurenonspacelet: \futurenonspacelet. (line 6) -* getproperty: Properties. (line 18) -* gloggingall: Diagnostics. (line 22) -* gobble: Macro arguments. (line 7) -* gobbletwo: Macro arguments. (line 7) -* gridcommdiag: Construction of commutative diagrams. - (line 88) -* gtracingall: Diagnostics. (line 22) -* gutter: Multiple columns. (line 23) -* gutterbox: Multiple columns. (line 24) -* hangindent for index entries: Typesetting an index. - (line 45) -* harrowlength: Arrows and morphisms. - (line 27) -* harrowlength <1>: Commutative diagram parameters. - (line 11) -* hchannel: Commutative diagram parameters. - (line 39) -* height (destination option): Destination types for pdftex and dvipdfm. - (line 60) -* height (destination option) <1>: Destination options for pdftex and dvipdfm. - (line 37) -* height (hyperlink option): Link options for pdftex and dvipdfm. - (line 125) -* hgrid: Construction of commutative diagrams. - (line 108) -* hgrid <1>: Commutative diagram parameters. - (line 47) -* hldest: Explicit hyperlinks. (line 6) -* hldest <1>: Destination types for hypertex. - (line 17) -* hldest <2>: Destination types for pdftex and dvipdfm. - (line 86) -* hldest <3>: Setting hyperlink types and options. - (line 7) -* hldestoff: Hyperlink driver nolinks. - (line 10) -* hldestoff <1>: Turning low-level commands on/off. - (line 6) -* hldeston: Turning low-level commands on/off. - (line 6) -* hldestopts: Setting default types and options. - (line 15) -* hldestopts <1>: Setting group options. - (line 10) -* hldestopts <2>: Hyperlinks (xhyper.tex). - (line 7) -* hldesttype: Setting default types and options. - (line 6) -* hldesttype <1>: Setting group types. (line 6) -* hldesttype <2>: Hyperlinks (xhyper.tex). - (line 7) -* hlend: Explicit hyperlinks. (line 25) -* hlend <1>: Hyperlinks (xhyper.tex). - (line 7) -* hlfootbacklabel: Footnote hyperlinks. (line 12) -* hlfootlabel: Footnote hyperlinks. (line 12) -* hlfootlabelnumber: Footnote hyperlinks. (line 15) -* hlhash: Link types for hypertex. - (line 40) -* hlidx: Exact destinations for index terms. - (line 13) -* hlidxlabel: Exact destinations for index terms. - (line 23) -* hlidxlabelnumber: Exact destinations for index terms. - (line 25) -* hlidxpage: Page destinations for index terms. - (line 20) -* hlidxpagelabel: Page destinations for index terms. - (line 11) -* hlight (hyperlink option): Link options for pdftex and dvipdfm. - (line 69) -* hlightcommentslisting: Highlighting TeX comments in listings (lscommnt.tex). - (line 7) -* hline: Arrows and morphisms. - (line 54) -* hloff: Hyperlink driver nolinks. - (line 10) -* hloff <1>: Turning low-level commands on/off. - (line 6) -* hlon: Turning low-level commands on/off. - (line 6) -* hlopts: Setting default types and options. - (line 15) -* hlopts <1>: Setting group options. - (line 10) -* hlopts <2>: Hyperlinks (xhyper.tex). - (line 7) -* hlstart: Explicit hyperlinks. (line 25) -* hlstart <1>: Link types for hypertex. - (line 43) -* hlstart <2>: Link types for pdftex and dvipdfm. - (line 70) -* hlstart <3>: Setting hyperlink types and options. - (line 7) -* hlstart <4>: Hyperlinks (xhyper.tex). - (line 7) -* hltype: Setting default types and options. - (line 6) -* hltype <1>: Setting group types. (line 6) -* hmorphposn: Arrows and morphisms. - (line 32) -* hmorphposn <1>: Commutative diagram parameters. - (line 20) -* hmorphposndn: Arrows and morphisms. - (line 38) -* hmorphposndn <1>: Commutative diagram parameters. - (line 22) -* hmorphposnlft: Arrows and morphisms. - (line 39) -* hmorphposnlft <1>: Commutative diagram parameters. - (line 23) -* hmorphposnrt: Arrows and morphisms. - (line 39) -* hmorphposnrt <1>: Commutative diagram parameters. - (line 22) -* hmorphposnup: Arrows and morphisms. - (line 38) -* hmorphposnup <1>: Commutative diagram parameters. - (line 22) -* hoffset: Proofing index terms. - (line 21) -* hookaction: Hooks. (line 14) -* hookactiononce: Hooks. (line 21) -* hookappend: Hooks. (line 15) -* hookprepend: Hooks. (line 16) -* hookrun: Hooks. (line 37) -* href: General hyperlinks. (line 6) -* hruledefaultdepth: Rules. (line 9) -* hruledefaultheight: Rules. (line 9) -* hsize: Margins. (line 32) -* hypertex (hyperlink driver): Hyperlink driver hypertex. - (line 6) -* hyphenpenalty for index entries: Typesetting an index. - (line 45) -* identity: Macro arguments. (line 28) -* idx: Indexing commands. (line 8) -* idx (hyperlinks): Index hyperlinks. (line 6) -* idxargclose: Index entries with special characters. - (line 73) -* idxargopen: Index entries with special characters. - (line 73) -* idxbeginrangemark: Customizing indexing. - (line 41) -* idxencapoperator: Customizing indexing. - (line 38) -* idxendrangemark: Customizing indexing. - (line 44) -* idxexact: Choosing destination placement. - (line 8) -* idxmarked: Indexing commands. (line 29) -* idxmarked (hyperlinks): Index hyperlinks. (line 6) -* idxname: Indexing commands. (line 19) -* idxname (hyperlinks): Index hyperlinks. (line 6) -* idxnameseparator: Indexing commands. (line 19) -* idxnone: Choosing destination placement. - (line 9) -* idxpage: Choosing destination placement. - (line 9) -* idxpagei: Page list and page range parsers. - (line 6) -* idxpageii: Page list and page range parsers. - (line 6) -* idxpagelistdelimiter: Page list and page range parsers. - (line 23) -* idxpagenum: Customizing indexing. - (line 49) -* idxpagerangedelimiter: Page list and page range parsers. - (line 23) -* idxpagerangedelimiter <1>: Page list and page range parsers. - (line 30) -* idxparselist: Page list and page range parsers. - (line 6) -* idxparserange: Page list and page range parsers. - (line 6) -* idxrangebeginword: Customizing indexing. - (line 20) -* idxrangeendword: Customizing indexing. - (line 23) -* idxseealsocmdword: Customizing indexing. - (line 29) -* idxseecmdword: Customizing indexing. - (line 26) -* idxsubentryseparator: Customizing indexing. - (line 35) -* idxsubmarked: Indexing commands. (line 40) -* idxsubmarked (hyperlinks): Index hyperlinks. (line 6) -* ifempty: \ifempty. (line 6) -* iffileexists: Auxiliary files. (line 10) -* ifidx: Indexing. (line 54) -* ifindexproofing: Proofing index terms. - (line 12) -* ifinteger: \ifinteger and \isinteger. - (line 6) -* ifpdf: Checking for PDF output. - (line 10) -* ifpdf <1>: Introduction to hyperlinks. - (line 51) -* ifrewritetocfile: Reading the .toc file. - (line 26) -* ifundefined: \ifundefined. (line 6) -* includegraphics: Hyperlinks (xhyper.tex). - (line 7) -* indexfilebasename: Typesetting an index. - (line 11) -* indexfonts: Typesetting an index. - (line 24) -* indexitem hook: Typesetting an index. - (line 49) -* indexprooffont: Proofing index terms. - (line 12) -* indexproofingfalse: Proofing index terms. - (line 12) -* indexproofingtrue: Proofing index terms. - (line 12) -* indexproofterm: Proofing index terms. - (line 12) -* indexproofunbox: Proofing index terms. - (line 28) -* indexsee: Customizing indexing. - (line 53) -* indexsee <1>: Hyperlinks in see and see also entries. - (line 8) -* indexseealso: Customizing indexing. - (line 53) -* indexseealso <1>: Hyperlinks in see and see also entries. - (line 8) -* indexseealsowords: Customizing indexing. - (line 53) -* indexseeword: Customizing indexing. - (line 53) -* indexsetmargins: Proofing index terms. - (line 21) -* indexspace: Typesetting an index. - (line 54) -* innerdef: Allocation macros. (line 28) -* innerinnerdef: Allocation macros. (line 39) -* innernewbox: Allocation macros. (line 21) -* innernewcount: Allocation macros. (line 21) -* innernewdimen: Allocation macros. (line 21) -* innernewfam: Allocation macros. (line 22) -* innernewhelp: Allocation macros. (line 22) -* innernewif: Allocation macros. (line 22) -* innernewinsert: Allocation macros. (line 22) -* innernewlanguage: Allocation macros. (line 23) -* innernewread: Allocation macros. (line 24) -* innernewskip: Allocation macros. (line 24) -* innernewtoks: Allocation macros. (line 24) -* innernewwrite: Allocation macros. (line 24) -* input: Environment for loading packages. - (line 24) -* insidemargin: Proofing index terms. - (line 21) -* interfootnoteskip: Footnotes. (line 29) -* interitemskip: Formatting lists. (line 30) -* interitemskipamount: Formatting lists. (line 14) -* isinteger: \ifinteger and \isinteger. - (line 13) -* item in indexes: Typesetting an index. - (line 35) -* itemletter: Formatting lists. (line 44) -* itemnumber: Formatting lists. (line 44) -* ituline: Page list and page range parsers. - (line 26) -* jobname: Citations. (line 17) -* jobname <1>: Typesetting an index. - (line 11) -* jobname <2>: Auxiliary files. (line 9) -* LAMSTeX: Logos. (line 11) -* LaTeX: Logos. (line 11) -* lbracechar: Category codes. (line 57) -* left (destination option): Destination types for pdftex and dvipdfm. - (line 11) -* left (destination option) <1>: Destination types for pdftex and dvipdfm. - (line 33) -* left (destination option) <2>: Destination types for pdftex and dvipdfm. - (line 54) -* left (destination option) <3>: Destination types for pdftex and dvipdfm. - (line 65) -* left (destination option) <4>: Destination options for pdftex and dvipdfm. - (line 60) -* leftdisplayindent: Displays. (line 11) -* leftdisplays: Displays. (line 9) -* leftdisplaysetup: Formatting displays. (line 8) -* lefteqnumbers: Displays. (line 23) -* leftmargin: Margins. (line 17) -* leqalignno: Displays. (line 19) -* leqalignno <1>: Displays. (line 23) -* leqno: Displays. (line 23) -* letreturn: Category codes. (line 40) -* letter: Category codes. (line 10) -* lft: Arrows and morphisms. - (line 15) -* li: Lists. (line 27) -* li (hyperlinks): List hyperlinks. (line 6) -* linenumberedlisting: Verbatim listing. (line 17) -* linenumberedlisting <1>: Highlighting TeX comments in listings (lscommnt.tex). - (line 7) -* listcompact: Lists. (line 38) -* listing: Verbatim listing. (line 7) -* listing <1>: Highlighting TeX comments in listings (lscommnt.tex). - (line 7) -* listingfont: Verbatim listing. (line 10) -* listleftindent: Formatting lists. (line 18) -* listmarkerspace: Formatting lists. (line 33) -* listrightindent: Formatting lists. (line 18) -* loggingall: Diagnostics. (line 11) -* loop: Iteration. (line 40) -* makeactive: Category codes. (line 13) -* makeatletter: Category codes. (line 22) -* makeatother: Category codes. (line 31) -* makeblankbox: Boxes. (line 12) -* makecolumns: Tables. (line 6) -* makeheadline: Proofing index terms. - (line 28) -* mapdown: Arrows and morphisms. - (line 13) -* mapdown <1>: Arrows and morphisms. - (line 76) -* mapleft: Arrows and morphisms. - (line 6) -* mapleft <1>: Arrows and morphisms. - (line 51) -* mapright: Arrows and morphisms. - (line 6) -* mapright <1>: Arrows and morphisms. - (line 48) -* mapup: Arrows and morphisms. - (line 13) -* mapup <1>: Arrows and morphisms. - (line 79) -* matrix: Construction of commutative diagrams. - (line 10) -* mbox: Commands from LaTeX. (line 28) -* MF: Logos. (line 11) -* monthname: Time of day. (line 10) -* morphdist: Arrows and morphisms. - (line 33) -* morphdist <1>: Commutative diagram parameters. - (line 32) -* name (hyperlink type): Link types for hypertex. - (line 7) -* name (hyperlink type) <1>: Link types for pdftex and dvipdfm. - (line 18) -* new...: Allocation macros. (line 8) -* newblock: Commands from LaTeX. (line 31) -* newcommand: Commands from LaTeX. (line 18) -* newwin (hyperlink option): Link types for pdftex and dvipdfm. - (line 41) -* newwin (hyperlink option) <1>: Link types for pdftex and dvipdfm. - (line 53) -* newwin (hyperlink option) <2>: Link options for pdftex and dvipdfm. - (line 90) -* noarrow: Invoking Eplain. (line 84) -* noauxfile: Invoking Eplain. (line 89) -* nobibtex: Invoking Eplain. (line 73) -* nocite: Citations. (line 58) -* nolastlinelisting: Verbatim listing. (line 25) -* nolastlinelisting <1>: Highlighting TeX comments in listings (lscommnt.tex). - (line 7) -* nolinks (hyperlink driver): Hyperlink driver nolinks. - (line 6) -* normalbaselineskip: Options supported by all drivers. - (line 19) -* num (hyperlink type): Link types for pdftex and dvipdfm. - (line 91) -* numberedfootnote: Footnotes. (line 7) -* numberedfootnote (hyperlinks): Footnote hyperlinks. (line 6) -* numberedlist: Lists. (line 13) -* numberedlistdepth: Formatting lists. (line 41) -* numberedmarker: Formatting lists. (line 37) -* numbername: Writing out numbers. (line 6) -* obeywhitespace: Obeying spaces. (line 6) -* orderedlist: Lists. (line 13) -* other: Category codes. (line 10) -* outer: Allocation macros. (line 12) -* outsidemargin: Proofing index terms. - (line 21) -* page (hyperlink type): Link types for pdftex and dvipdfm. - (line 30) -* pagefit (hyperlink option): Link types for pdftex and dvipdfm. - (line 31) -* pagefit (hyperlink option) <1>: Link types for pdftex and dvipdfm. - (line 41) -* pagefit (hyperlink option) <2>: Link types for pdftex and dvipdfm. - (line 53) -* pagefit (hyperlink option) <3>: Link options for pdftex and dvipdfm. - (line 107) -* pageno: Proofing index terms. - (line 21) -* pagetotal: Multiple columns. (line 14) -* paperheight: Margins. (line 43) -* paperwidth: Margins. (line 46) -* parindent in indexes: Typesetting an index. - (line 24) -* path: Paths. (line 13) -* pdfoutput: Checking for PDF output. - (line 20) -* pdftex (hyperlink driver): Hyperlink drivers pdftex and dvipdfm. - (line 6) -* percentchar: Category codes. (line 54) -* phantomeqlabel: Equation reference hyperlinks. - (line 14) -* phantomeqnumber: Equation reference hyperlinks. - (line 14) -* previouseverydisplay: Formatting displays. (line 14) -* printbetweencitations: Formatting citations. - (line 20) -* printcitefinish: Formatting citations. - (line 15) -* printcitenote: Formatting citations. - (line 26) -* printcitestart: Formatting citations. - (line 15) -* printitem: Formatting lists. (line 51) -* printlistinglineno: Verbatim listing. (line 19) -* printlistinglineno <1>: Verbatim listing. (line 27) -* providecommand: Commands from LaTeX. (line 18) -* quadcolumns: Multiple columns. (line 7) -* raggedright for index entries: Typesetting an index. - (line 45) -* raise (hyperlink option): Options supported by all drivers. - (line 13) -* raise (hyperlink option) <1>: Setting group options. - (line 33) -* raw (destination type): Destination types for hypertex. - (line 12) -* raw (destination type) <1>: Destination types for pdftex and dvipdfm. - (line 81) -* raw (hyperlink type): Link types for hypertex. - (line 37) -* raw (hyperlink type) <1>: Link types for pdftex and dvipdfm. - (line 64) -* rbracechar: Category codes. (line 58) -* readindexfile: Typesetting an index. - (line 6) -* readindexfile (hyperlinks): Index hyperlinks. (line 9) -* readtocfile: Reading the .toc file. - (line 6) -* ref: Using generic references. - (line 16) -* ref <1>: Hyperlinks (xhyper.tex). - (line 7) -* ref (hyperlinks): Cross-reference hyperlinks. - (line 19) -* refn: Using generic references. - (line 9) -* refn (hyperlinks): Cross-reference hyperlinks. - (line 14) -* refs: Using generic references. - (line 22) -* refs (hyperlinks): Cross-reference hyperlinks. - (line 26) -* refspace: Cross-reference hyperlinks. - (line 24) -* refspace <1>: Page reference hyperlinks. - (line 10) -* reftie: Cross-reference hyperlinks. - (line 16) -* reftie <1>: Cross-reference hyperlinks. - (line 23) -* reftie <2>: Equation reference hyperlinks. - (line 20) -* renewcommand: Commands from LaTeX. (line 18) -* repeat: Iteration. (line 42) -* resetatcatcode: Environment for loading packages. - (line 35) -* resetatcatcode <1>: Category codes. (line 23) -* rewritetocfile (conditional): Reading the .toc file. - (line 26) -* right (destination option): Destination types for pdftex and dvipdfm. - (line 66) -* right (destination option) <1>: Destination options for pdftex and dvipdfm. - (line 64) -* righteqnumbers: Displays. (line 23) -* rightmargin: Margins. (line 17) -* rotatebox: Hyperlinks (xhyper.tex). - (line 7) -* rt: Arrows and morphisms. - (line 14) -* sanitize: Converting to characters. - (line 22) -* sarrowlength: Arrows and morphisms. - (line 28) -* sarrowlength <1>: Commutative diagram parameters. - (line 17) -* sc: Commands from LaTeX. (line 25) -* see for index entries: Modifying index entries. - (line 36) -* see for index entries <1>: Customizing indexing. - (line 62) -* seealso for index entries: Modifying index entries. - (line 49) -* seevariant: Customizing indexing. - (line 53) -* setidxpagelistdelimiter: Page list and page range parsers. - (line 14) -* setidxpagerangedelimiter: Page list and page range parsers. - (line 14) -* setproperty: Properties. (line 13) -* setuplistinghook: Verbatim listing. (line 13) -* setuplistinghook <1>: Highlighting TeX comments in listings (lscommnt.tex). - (line 7) -* sidx: Indexing commands. (line 8) -* sidxmarked: Indexing commands. (line 29) -* sidxname: Indexing commands. (line 19) -* sidxsubmarked: Indexing commands. (line 40) -* singlecolumn: Multiple columns. (line 9) -* sline: Arrows and morphisms. - (line 23) -* sline <1>: Arrows and morphisms. - (line 107) -* SLiTeX: Logos. (line 11) -* special: Introduction to hyperlinks. - (line 9) -* specialpathdelimiters (conditional): Paths. (line 28) -* subeqnumber: Subequation references. - (line 15) -* subitem in indexes: Typesetting an index. - (line 35) -* subsubitem in indexes: Typesetting an index. - (line 35) -* testfileexistence: Auxiliary files. (line 8) -* TeX: Logos. (line 6) -* textbf: Commands from LaTeX. (line 25) -* timestamp: Time of day. (line 18) -* timestring: Time of day. (line 16) -* toc...entry: Writing the .toc file. - (line 9) -* toc...entry <1>: Writing the .toc file. - (line 54) -* tocfilebasename: Changing the .toc file's root name. - (line 10) -* today: Time of day. (line 21) -* top (destination option): Destination types for pdftex and dvipdfm. - (line 11) -* top (destination option) <1>: Destination types for pdftex and dvipdfm. - (line 25) -* top (destination option) <2>: Destination types for pdftex and dvipdfm. - (line 46) -* top (destination option) <3>: Destination types for pdftex and dvipdfm. - (line 66) -* top (destination option) <4>: Destination options for pdftex and dvipdfm. - (line 68) -* topmargin: Margins. (line 17) -* tracingall: Diagnostics. (line 8) -* tracingboxes: Diagnostics. (line 16) -* tracingoff: Diagnostics. (line 18) -* triplecolumns: Multiple columns. (line 7) -* tt: Packages known to work. - (line 77) -* ttfamily: Packages known to work. - (line 73) -* uncatcodespecials: Verbatim listing. (line 57) -* uncatcodespecials <1>: Category codes. (line 49) -* unorderedlist: Lists. (line 20) -* unorderedlistdepth: Formatting lists. (line 41) -* unorderedmarker: Formatting lists. (line 37) -* url: Hyperlinks (xhyper.tex). - (line 7) -* url (hyperlink type): Link types for hypertex. - (line 14) -* url (hyperlink type) <1>: Link types for pdftex and dvipdfm. - (line 25) -* url (hyperlinks): URL hyperlinks. (line 6) -* usepackage: The \usepackage command. - (line 6) -* varrowlength: Arrows and morphisms. - (line 28) -* varrowlength <1>: Commutative diagram parameters. - (line 14) -* vchannel: Commutative diagram parameters. - (line 39) -* verbatim: Verbatim listing. (line 34) -* verbatimescapechar: Verbatim listing. (line 47) -* vgrid: Construction of commutative diagrams. - (line 108) -* vgrid <1>: Commutative diagram parameters. - (line 51) -* vline: Arrows and morphisms. - (line 82) -* vmorphposn: Arrows and morphisms. - (line 33) -* vmorphposn <1>: Commutative diagram parameters. - (line 26) -* vmorphposndn: Arrows and morphisms. - (line 38) -* vmorphposndn <1>: Commutative diagram parameters. - (line 28) -* vmorphposnlft: Arrows and morphisms. - (line 40) -* vmorphposnlft <1>: Commutative diagram parameters. - (line 29) -* vmorphposnrt: Arrows and morphisms. - (line 39) -* vmorphposnrt <1>: Commutative diagram parameters. - (line 28) -* vmorphposnup: Arrows and morphisms. - (line 38) -* vmorphposnup <1>: Commutative diagram parameters. - (line 28) -* vpenalty: Mode-specific penalties. - (line 9) -* vruledefaultwidth: Rules. (line 10) -* width (destination option): Destination types for pdftex and dvipdfm. - (line 60) -* width (destination option) <1>: Destination options for pdftex and dvipdfm. - (line 40) -* width (hyperlink option): Link options for pdftex and dvipdfm. - (line 128) -* writenumberedtocentry: Writing the .toc file. - (line 13) -* writenumberedtocline: Writing the .toc file. - (line 36) -* writetocentry: Writing the .toc file. - (line 7) -* XeLaTeX: Logos. (line 11) -* XeTeX: Logos. (line 11) -* xrdef: Page references. (line 10) -* xrdef (hyperlinks): Page reference hyperlinks. - (line 6) -* xref: Page references. (line 14) -* xref (hyperlinks): Page reference hyperlinks. - (line 10) -* xrefn: Using generic references. - (line 10) -* xrefn (hyperlinks): Cross-reference hyperlinks. - (line 14) -* xrefpageword: Page references. (line 18) -* xrefpageword <1>: Page reference hyperlinks. - (line 10) -* xrefwarning conditional: Using generic references. - (line 14) -* xrefwarningfalse: Citations. (line 78) -* xrlabel: Converting to characters. - (line 6) -* xyz (destination type): Destination types for hypertex. - (line 7) -* xyz (destination type) <1>: Destination types for pdftex and dvipdfm. - (line 7) -* zoom (destination option): Destination types for pdftex and dvipdfm. - (line 7) -* zoom (destination option) <1>: Destination options for pdftex and dvipdfm. - (line 21) - - -File: eplain.info, Node: Concept index, Prev: Macro index, Up: Top - -Concept index -************* - - -* Menu: - -* *-form of LaTeX commands: Commands from LaTeX. (line 18) -* .aux file: Citations. (line 17) -* .aux file <1>: Cross-references. (line 11) -* .bbl file: Citations. (line 21) -* .bib file: Citations. (line 20) -* .bst files: Citations. (line 70) -* .cls files: Loading LaTeX packages. - (line 6) -* .eps files: Packages known to work. - (line 91) -* .eps files <1>: Packages known to work. - (line 100) -* .fmt file: Installation. (line 27) -* .fmt file <1>: Invoking Eplain. (line 14) -* .idx files: Indexing. (line 23) -* .idx files <1>: Index hyperlinks. (line 14) -* .ind files: Indexing. (line 27) -* .ind files <1>: Index hyperlinks. (line 25) -* .pdf files: Checking for PDF output. - (line 6) -* .pdf files <1>: Packages known to work. - (line 91) -* .pdf files <2>: Introduction to hyperlinks. - (line 13) -* .ps files: Introduction to hyperlinks. - (line 13) -* .sty files: Loading LaTeX packages. - (line 6) -* .toc file: Contents. (line 10) -* active characters: Category codes. (line 12) -* after index terms: Customizing indexing. - (line 6) -* alignments: Tables. (line 6) -* all groups, specifying: Setting group types. (line 26) -* allocation macros: Allocation macros. (line 6) -* alphanumeric references: Citations. (line 128) -* AMSLaTeX: Logos. (line 10) -* amsppt.sty: Invoking Eplain. (line 92) -* AMSTeX: Logos. (line 10) -* AMSTeX conflicts: Invoking Eplain. (line 92) -* arguments, ignoring: Macro arguments. (line 6) -* arrows: Arrows and morphisms. - (line 6) -* atom: Properties. (line 6) -* autopict.sty: Packages known to work. - (line 12) -* avoiding boxed links: URL hyperlinks. (line 17) -* avoiding boxed links <1>: Setting default types and options. - (line 25) -* axuiliary files, existence of: Auxiliary files. (line 6) -* backslash character: Category codes. (line 15) -* balancing of columns with '\singlecolumn': Multiple columns. - (line 11) -* Berry, Karl: Introduction. (line 30) -* beveled hyperlink border: Link options for pdftex and dvipdfm. - (line 25) -* bibliographies: Citations. (line 6) -* bibliography fonts: Formatting bibliographies. - (line 38) -* bibliography items, extra space between: Formatting bibliographies. - (line 67) -* bibliography, formatting the: Formatting bibliographies. - (line 6) -* bibliography, hyperlinks: Citation hyperlinks. (line 11) -* bibtex: Invoking Eplain. (line 103) -* BibTeX: Citations. (line 9) -* BibTeX <1>: Logos. (line 10) -* black boxes: Boxes. (line 6) -* Borceux, Francis: Construction of commutative diagrams. - (line 79) -* border color, hyperlink: Link options for pdftex and dvipdfm. - (line 13) -* border style, hyperlink: Link options for pdftex and dvipdfm. - (line 19) -* border style, hyperlink <1>: Link options for pdftex and dvipdfm. - (line 25) -* border width, hyperlink: Link options for pdftex and dvipdfm. - (line 49) -* Bott, Raoul: Construction of commutative diagrams. - (line 13) -* boxed links, avoiding: URL hyperlinks. (line 17) -* boxed links, avoiding <1>: Setting default types and options. - (line 25) -* boxes, open: Boxes. (line 12) -* braces, inside index entries: Index entries with special characters. - (line 63) -* brackets, inside index entries: Index entries with special characters. - (line 85) -* Brockett, Roger W.: Construction of commutative diagrams. - (line 38) -* Butterfly Lemma: Construction of commutative diagrams. - (line 121) -* Carlisle, David: Loading LaTeX packages. - (line 14) -* catcode of '@': Environment for loading packages. - (line 35) -* category codes: Category codes. (line 6) -* centering: Justification. (line 6) -* characters, converting to: Converting to characters. - (line 6) -* characters, special: Verbatim listing. (line 57) -* citations: Citations. (line 6) -* citations, formatting: Formatting citations. - (line 6) -* citations, hyperlinks: Citation hyperlinks. (line 6) -* citations, undefined: Citations. (line 48) -* cmtt8: Proofing index terms. - (line 12) -* color: Packages known to work. - (line 25) -* color, demo: Hyperlinks (xhyper.tex). - (line 7) -* color, hyperlink border: Link options for pdftex and dvipdfm. - (line 13) -* color, hyperlinks: URL hyperlinks. (line 17) -* color, hyperlinks <1>: Options supported by all drivers. - (line 37) -* color, hyperlinks <2>: Setting default types and options. - (line 25) -* color, problems with pdfTeX: Packages known to work. - (line 29) -* color.sty: Packages known to work. - (line 21) -* color.sty <1>: URL hyperlinks. (line 18) -* color.sty <2>: Hyperlink driver nolinks. - (line 34) -* color.sty <3>: Setting default types and options. - (line 27) -* color.sty <4>: Hyperlinks (xhyper.tex). - (line 7) -* colored links: URL hyperlinks. (line 17) -* colored links <1>: Options supported by all drivers. - (line 37) -* colored links <2>: Setting default types and options. - (line 25) -* column balancing with '\singlecolumn': Multiple columns. (line 11) -* column eject: Multiple columns. (line 14) -* commas after index terms: Customizing indexing. - (line 6) -* commas in cross-referencing index entries: Customizing indexing. - (line 62) -* comments, highlighting in listings: Highlighting TeX comments in listings (lscommnt.tex). - (line 7) -* commutative diagrams: Commutative diagrams. - (line 6) -* contents: Contents. (line 6) -* contents, and verbatim text: Writing the .toc file. - (line 49) -* contents, hyperlinks: Contents hyperlinks. (line 6) -* ConTeXt: Packages known to work. - (line 29) -* continued index entries: Typesetting an index. - (line 35) -* covering homotopy property: Construction of commutative diagrams. - (line 13) -* cross-references: Cross-references. (line 6) -* cross-references, defining general: Defining generic references. - (line 6) -* cross-references, defining general <1>: Using generic references. - (line 6) -* cross-references, demo: Hyperlinks (xhyper.tex). - (line 7) -* cross-references, hyperlinks: Cross-reference hyperlinks. - (line 6) -* cross-referencing index entries: Modifying index entries. - (line 36) -* cross-referencing index entries <1>: Customizing indexing. - (line 62) -* 'CTRL-L', and verbatim listing: Verbatim listing. (line 30) -* cube: Construction of commutative diagrams. - (line 89) -* customizing indexing: Customizing indexing. - (line 6) -* dashed hyperlink border: Link options for pdftex and dvipdfm. - (line 19) -* dashed hyperlink border <1>: Link options for pdftex and dvipdfm. - (line 25) -* date: Time of day. (line 6) -* default hyperlink options: Setting hyperlink types and options. - (line 6) -* default hyperlink options <1>: Setting group types. (line 17) -* default hyperlink type: Setting hyperlink types and options. - (line 6) -* default hyperlink type <1>: Setting group types. (line 17) -* defining general references: Defining generic references. - (line 6) -* defining general references <1>: Using generic references. - (line 6) -* definitions, global: Category codes. (line 37) -* demo files: Demo files. (line 6) -* destgroup: Implicit hyperlinks. (line 10) -* destgroup options: Setting hyperlink types and options. - (line 12) -* destgroup options <1>: Setting group options. - (line 6) -* destgroup options, demo: Hyperlinks (xhyper.tex). - (line 7) -* destgroup type: Setting hyperlink types and options. - (line 12) -* destgroup type <1>: Setting group types. (line 6) -* destgroup type, demo: Hyperlinks (xhyper.tex). - (line 7) -* destgroup 'bib': Citation hyperlinks. (line 11) -* destgroup 'definexref': Cross-reference hyperlinks. - (line 6) -* destgroup 'eq': Equation reference hyperlinks. - (line 6) -* destgroup 'foot': Footnote hyperlinks. (line 6) -* destgroup 'footback': Footnote hyperlinks. (line 6) -* destgroup 'idx': Index hyperlinks. (line 6) -* destgroup 'li': List hyperlinks. (line 6) -* destgroup 'xrdef': Page reference hyperlinks. - (line 6) -* destination group: Implicit hyperlinks. (line 10) -* destination options: Introduction to hyperlinks. - (line 105) -* destination options, common: Options supported by all drivers. - (line 12) -* destination options, 'dvipdfm': Destination options for pdftex and dvipdfm. - (line 6) -* destination options, 'hypertex': Destination options for hypertex. - (line 6) -* destination options, 'pdftex': Destination options for pdftex and dvipdfm. - (line 6) -* destination type: Introduction to hyperlinks. - (line 88) -* destination types, 'dvipdfm': Destination types for pdftex and dvipdfm. - (line 6) -* destination types, 'hypertex': Destination types for hypertex. - (line 6) -* destination types, 'pdftex': Destination types for pdftex and dvipdfm. - (line 6) -* destinations, default options: Setting hyperlink types and options. - (line 6) -* destinations, default options <1>: Setting group types. (line 17) -* destinations, default type: Setting hyperlink types and options. - (line 6) -* destinations, default type <1>: Setting group types. (line 17) -* destinations, dimensions: Destination options for pdftex and dvipdfm. - (line 34) -* destinations, dimensions <1>: Destination options for pdftex and dvipdfm. - (line 37) -* destinations, dimensions <2>: Destination options for pdftex and dvipdfm. - (line 40) -* destinations, dimensions <3>: Destination options for pdftex and dvipdfm. - (line 56) -* destinations, dimensions <4>: Destination options for pdftex and dvipdfm. - (line 60) -* destinations, dimensions <5>: Destination options for pdftex and dvipdfm. - (line 64) -* destinations, dimensions <6>: Destination options for pdftex and dvipdfm. - (line 68) -* destinations, disabling: Hyperlink driver nolinks. - (line 6) -* destinations, disabling <1>: Turning hyperlinks on/off. - (line 6) -* destinations, group options: Setting hyperlink types and options. - (line 12) -* destinations, group options <1>: Setting group options. - (line 6) -* destinations, group options, demo: Hyperlinks (xhyper.tex). - (line 7) -* destinations, group type: Setting hyperlink types and options. - (line 12) -* destinations, group type <1>: Setting group types. (line 6) -* destinations, group type, demo: Hyperlinks (xhyper.tex). - (line 7) -* destinations, in another file: Link types for hypertex. - (line 21) -* destinations, in another file <1>: Link types for pdftex and dvipdfm. - (line 39) -* destinations, in another file <2>: Link types for pdftex and dvipdfm. - (line 51) -* destinations, large operators: Options supported by all drivers. - (line 27) -* destinations, large operators <1>: Setting group options. - (line 33) -* destinations, magnification: Destination options for pdftex and dvipdfm. - (line 21) -* destinations, named: Link types for hypertex. - (line 7) -* destinations, named <1>: Link types for pdftex and dvipdfm. - (line 18) -* destinations, numbered: Link types for pdftex and dvipdfm. - (line 91) -* destinations, page: Link types for pdftex and dvipdfm. - (line 30) -* destinations, raising: Options supported by all drivers. - (line 13) -* destinations, URL: Link types for hypertex. - (line 14) -* destinations, URL <1>: Link types for pdftex and dvipdfm. - (line 25) -* detecting numbers: \ifinteger and \isinteger. - (line 6) -* diagnostics: Diagnostics. (line 6) -* Diagram, macros for LaTeX: Construction of commutative diagrams. - (line 79) -* dimensions, hyperlink: Link options for pdftex and dvipdfm. - (line 122) -* dimensions, hyperlink <1>: Link options for pdftex and dvipdfm. - (line 125) -* dimensions, hyperlink <2>: Link options for pdftex and dvipdfm. - (line 128) -* dimensions, hyperlink destination: Destination options for pdftex and dvipdfm. - (line 34) -* dimensions, hyperlink destination <1>: Destination options for pdftex and dvipdfm. - (line 37) -* dimensions, hyperlink destination <2>: Destination options for pdftex and dvipdfm. - (line 40) -* dimensions, hyperlink destination <3>: Destination options for pdftex and dvipdfm. - (line 56) -* dimensions, hyperlink destination <4>: Destination options for pdftex and dvipdfm. - (line 60) -* dimensions, hyperlink destination <5>: Destination options for pdftex and dvipdfm. - (line 64) -* dimensions, hyperlink destination <6>: Destination options for pdftex and dvipdfm. - (line 68) -* disabling hyperlinks: Hyperlink driver nolinks. - (line 6) -* disabling hyperlinks <1>: Turning hyperlinks on/off. - (line 6) -* disabling indexes: Indexing. (line 54) -* displayed math and hyperlinks: Options supported by all drivers. - (line 27) -* displayed math and hyperlinks <1>: Setting group options. - (line 33) -* displays, left-justifying: Displays. (line 6) -* do...while loops: Iteration. (line 6) -* double column output: Multiple columns. (line 6) -* double columns in indexes: Typesetting an index. - (line 24) -* 'draft', option for 'graphics.sty': Packages known to work. - (line 69) -* driver 'dvipdfm': Hyperlink drivers pdftex and dvipdfm. - (line 6) -* driver 'hypertex': Hyperlink driver hypertex. - (line 6) -* driver 'nolinks': Hyperlink driver nolinks. - (line 6) -* driver 'pdftex': Hyperlink drivers pdftex and dvipdfm. - (line 6) -* drivers, hyperlink: Introduction to hyperlinks. - (line 6) -* dvipdfm: Introduction to hyperlinks. - (line 36) -* dvipdfm <1>: Hyperlink driver hypertex. - (line 13) -* dvipdfm <2>: Hyperlink driver hypertex. - (line 47) -* 'dvipdfm', destination options: Destination options for pdftex and dvipdfm. - (line 6) -* 'dvipdfm', destination types: Destination types for pdftex and dvipdfm. - (line 6) -* 'dvipdfm', hyperlink driver: Hyperlink drivers pdftex and dvipdfm. - (line 6) -* 'dvipdfm', link options: Link options for pdftex and dvipdfm. - (line 6) -* 'dvipdfm', link types: Link types for pdftex and dvipdfm. - (line 6) -* dvips: Hyperlink driver hypertex. - (line 13) -* dvips <1>: Hyperlink driver hypertex. - (line 32) -* Eijkhout, Victor: Iteration. (line 61) -* eject in multicolumns: Multiple columns. (line 14) -* electronic mail addresses, breaking: Paths. (line 6) -* electronic mail addresses, breaking <1>: Packages known to work. - (line 121) -* empty argument, checking for: \ifempty. (line 6) -* empty equation labels: Equation references. (line 22) -* empty equation labels, referring to: Equation references. (line 27) -* empty string, checking for: \ifempty. (line 6) -* Encapsulated PostScript: Packages known to work. - (line 91) -* Encapsulated PostScript <1>: Packages known to work. - (line 100) -* environments, user-defined: User-defined environments. - (line 6) -* Eplain, installing: Installation. (line 6) -* Eplain, invoking: Invoking Eplain. (line 6) -* Eplain, purpose of: Introduction. (line 6) -* Eplain, upgrading: Installation. (line 6) -* eplain.aux: Installation. (line 40) -* eplain.fmt: Installation. (line 27) -* EPS: Packages known to work. - (line 91) -* EPS <1>: Packages known to work. - (line 100) -* epstopdf: Packages known to work. - (line 91) -* epstopdf.sty: Packages known to work. - (line 89) -* equation labels, characters valid in: Equation references. (line 54) -* equation numbers, formatting of: Formatting equation references. - (line 6) -* equation numbers, left-alignment: Displays. (line 6) -* equations, giving numbers to all: Equation references. (line 22) -* equations, groups of: Subequation references. - (line 6) -* equations, hyperlinks: Equation reference hyperlinks. - (line 6) -* equations, numbering: Equation references. (line 6) -* equations, references to: Equation references. (line 6) -* error messages: Diagnostics. (line 24) -* error on '\input': Environment for loading packages. - (line 41) -* escape character, changing verbatim: Verbatim listing. (line 47) -* eTeX: Logos. (line 10) -* exact index hyperlinks: Exact destinations for index terms. - (line 28) -* expansion, one-level: \expandonce. (line 6) -* explicit hyperlinks: Explicit hyperlinks. (line 6) -* explicit hyperlinks, demo: Hyperlinks (xhyper.tex). - (line 7) -* ExTeX: Logos. (line 10) -* file, hyperlink to: Link types for hypertex. - (line 21) -* file, hyperlink to <1>: Link types for pdftex and dvipdfm. - (line 39) -* file, hyperlink to <2>: Link types for pdftex and dvipdfm. - (line 51) -* 'file:' links: General hyperlinks. (line 37) -* filenames, breaking: Paths. (line 6) -* filenames, breaking <1>: Packages known to work. - (line 121) -* files, verbatim listing of: Verbatim listing. (line 6) -* files, verbatim listing of, demo: Highlighting TeX comments in listings (lscommnt.tex). - (line 7) -* filtering index entries with hyperlinks: Exact destinations for index terms. - (line 33) -* footnotes, hyperlinks: Footnote hyperlinks. (line 6) -* footnotes, numbered: Footnotes. (line 6) -* for loops: Iteration. (line 6) -* form feed character, and verbatim listing: Verbatim listing. - (line 30) -* format file: Installation. (line 27) -* formatting index entries: Typesetting an index. - (line 35) -* fractions: Fractions. (line 6) -* Ghostscript: Hyperlink driver hypertex. - (line 13) -* Ghostscript <1>: Hyperlink driver hypertex. - (line 35) -* gobbling arguments: Macro arguments. (line 6) -* golden mean: Construction of commutative diagrams. - (line 59) -* golden mean <1>: Construction of commutative diagrams. - (line 59) -* Graham, Ronald L.: Citations. (line 91) -* graphics collection, LaTeX: Loading LaTeX packages. - (line 14) -* graphics collection, LaTeX <1>: Packages known to work. - (line 25) -* graphics collection, LaTeX <2>: Hyperlink driver nolinks. - (line 34) -* graphics collection, LaTeX, demo: Hyperlinks (xhyper.tex). - (line 7) -* graphics, omitting typesetting of: Packages known to work. - (line 69) -* graphics, problems with pdfTeX: Packages known to work. - (line 29) -* graphics.sty: Packages known to work. - (line 22) -* graphicx.sty: Packages known to work. - (line 23) -* graphicx.sty <1>: Hyperlinks (xhyper.tex). - (line 7) -* grid: Construction of commutative diagrams. - (line 79) -* group option list: Setting group options. - (line 48) -* group options, hyperlink: Setting hyperlink types and options. - (line 12) -* group options, hyperlink <1>: Setting group options. - (line 6) -* group options, hyperlink, demo: Hyperlinks (xhyper.tex). - (line 7) -* group type, hyperlink: Setting hyperlink types and options. - (line 12) -* group type, hyperlink <1>: Setting group types. (line 6) -* group type, hyperlink, demo: Hyperlinks (xhyper.tex). - (line 7) -* group '' (empty): Setting group types. (line 17) -* group '*': Setting group types. (line 26) -* group 'bib': Citation hyperlinks. (line 11) -* group 'cite': Citation hyperlinks. (line 6) -* group 'definexref': Cross-reference hyperlinks. - (line 6) -* group 'eq': Equation reference hyperlinks. - (line 6) -* group 'eq' <1>: Equation reference hyperlinks. - (line 20) -* group 'eq' <2>: Setting group options. - (line 34) -* group 'foot': Footnote hyperlinks. (line 6) -* group 'footback': Footnote hyperlinks. (line 6) -* group 'hrefext': General hyperlinks. (line 21) -* group 'hrefint': General hyperlinks. (line 12) -* group 'idx': Index hyperlinks. (line 6) -* group 'li': List hyperlinks. (line 6) -* group 'ref': Cross-reference hyperlinks. - (line 11) -* group 'url': URL hyperlinks. (line 6) -* group 'xrdef': Page reference hyperlinks. - (line 6) -* group 'xref': Page reference hyperlinks. - (line 10) -* group, destination: Implicit hyperlinks. (line 10) -* group, disabling hyperlinks: Turning hyperlinks on/off for a group. - (line 6) -* group, link: Implicit hyperlinks. (line 10) -* group, preserving option list: Setting group options. - (line 21) -* groups, specifying all: Setting group types. (line 26) -* hanging on '\input': Environment for loading packages. - (line 41) -* help messages: Diagnostics. (line 24) -* highlight modes, hyperlink: Link options for pdftex and dvipdfm. - (line 69) -* highlighting: Packages known to work. - (line 111) -* highlighting, in listings: Highlighting TeX comments in listings (lscommnt.tex). - (line 7) -* Ho"ppner, Klaus: Packages known to work. - (line 83) -* hooks: Hooks. (line 6) -* hyperlink border color: Link options for pdftex and dvipdfm. - (line 13) -* hyperlink color: URL hyperlinks. (line 17) -* hyperlink color <1>: Options supported by all drivers. - (line 37) -* hyperlink color <2>: Setting default types and options. - (line 25) -* hyperlink destination, dimensions: Destination options for pdftex and dvipdfm. - (line 34) -* hyperlink destination, dimensions <1>: Destination options for pdftex and dvipdfm. - (line 37) -* hyperlink destination, dimensions <2>: Destination options for pdftex and dvipdfm. - (line 40) -* hyperlink destination, dimensions <3>: Destination options for pdftex and dvipdfm. - (line 56) -* hyperlink destination, dimensions <4>: Destination options for pdftex and dvipdfm. - (line 60) -* hyperlink destination, dimensions <5>: Destination options for pdftex and dvipdfm. - (line 64) -* hyperlink destination, dimensions <6>: Destination options for pdftex and dvipdfm. - (line 68) -* hyperlink destination, magnification: Destination options for pdftex and dvipdfm. - (line 21) -* hyperlink destination, named: Link types for hypertex. - (line 7) -* hyperlink destination, named <1>: Link types for pdftex and dvipdfm. - (line 18) -* hyperlink destination, numbered: Link types for pdftex and dvipdfm. - (line 91) -* hyperlink destination, page: Link types for pdftex and dvipdfm. - (line 30) -* hyperlink destination, raising: Options supported by all drivers. - (line 13) -* hyperlink dimensions: Link options for pdftex and dvipdfm. - (line 122) -* hyperlink dimensions <1>: Link options for pdftex and dvipdfm. - (line 125) -* hyperlink dimensions <2>: Link options for pdftex and dvipdfm. - (line 128) -* hyperlink driver 'dvipdfm': Hyperlink drivers pdftex and dvipdfm. - (line 6) -* hyperlink driver 'hypertex': Hyperlink driver hypertex. - (line 6) -* hyperlink driver 'nolinks': Hyperlink driver nolinks. - (line 6) -* hyperlink driver 'pdftex': Hyperlink drivers pdftex and dvipdfm. - (line 6) -* hyperlink drivers: Introduction to hyperlinks. - (line 6) -* hyperlink group, disabling hyperlinks: Turning hyperlinks on/off for a group. - (line 6) -* hyperlink group, preserving option list: Setting group options. - (line 21) -* hyperlink options, common: Options supported by all drivers. - (line 6) -* hyperlinks, bibliography: Citation hyperlinks. (line 11) -* hyperlinks, border style: Link options for pdftex and dvipdfm. - (line 19) -* hyperlinks, border style <1>: Link options for pdftex and dvipdfm. - (line 25) -* hyperlinks, border width: Link options for pdftex and dvipdfm. - (line 49) -* hyperlinks, citations: Citation hyperlinks. (line 6) -* hyperlinks, cross-references: Cross-reference hyperlinks. - (line 6) -* hyperlinks, default options: Setting hyperlink types and options. - (line 6) -* hyperlinks, default options <1>: Setting group types. (line 17) -* hyperlinks, default type: Setting hyperlink types and options. - (line 6) -* hyperlinks, default type <1>: Setting group types. (line 17) -* hyperlinks, demo: Hyperlinks (xhyper.tex). - (line 7) -* hyperlinks, disabling: Hyperlink driver nolinks. - (line 6) -* hyperlinks, disabling <1>: Turning hyperlinks on/off. - (line 6) -* hyperlinks, equations: Equation reference hyperlinks. - (line 6) -* hyperlinks, explicit: Explicit hyperlinks. (line 6) -* hyperlinks, explicit, demo: Hyperlinks (xhyper.tex). - (line 7) -* hyperlinks, filtering index entries: Exact destinations for index terms. - (line 33) -* hyperlinks, footnotes: Footnote hyperlinks. (line 6) -* hyperlinks, group option list: Setting group options. - (line 48) -* hyperlinks, group options: Setting hyperlink types and options. - (line 12) -* hyperlinks, group options <1>: Setting group options. - (line 6) -* hyperlinks, group options, demo: Hyperlinks (xhyper.tex). - (line 7) -* hyperlinks, group type: Setting hyperlink types and options. - (line 12) -* hyperlinks, group type <1>: Setting group types. (line 6) -* hyperlinks, highlight mode: Link options for pdftex and dvipdfm. - (line 69) -* hyperlinks, implicit: Implicit hyperlinks. (line 6) -* hyperlinks, implicit, demo: Hyperlinks (xhyper.tex). - (line 7) -* hyperlinks, index: Index hyperlinks. (line 6) -* hyperlinks, index destination placement: Choosing destination placement. - (line 6) -* hyperlinks, index, exact: Exact destinations for index terms. - (line 28) -* hyperlinks, large operators: Options supported by all drivers. - (line 27) -* hyperlinks, large operators <1>: Setting group options. - (line 33) -* hyperlinks, lists: List hyperlinks. (line 6) -* hyperlinks, opening in a new window: Link options for pdftex and dvipdfm. - (line 90) -* hyperlinks, page references: Page reference hyperlinks. - (line 6) -* hyperlinks, preserving page-breaking: Hyperlink driver nolinks. - (line 6) -* hyperlinks, preserving spacing: Hyperlink driver nolinks. - (line 6) -* hyperlinks, see and see also index entries: Hyperlinks in see and see also entries. - (line 6) -* hyperlinks, table of contents: Contents hyperlinks. (line 6) -* hyperlinks, to another file: Link types for hypertex. - (line 21) -* hyperlinks, to another file <1>: Link types for pdftex and dvipdfm. - (line 39) -* hyperlinks, to another file <2>: Link types for pdftex and dvipdfm. - (line 51) -* hyperlinks, URL: General hyperlinks. (line 20) -* hyperlinks, URL <1>: URL hyperlinks. (line 6) -* hyperlinks, URL <2>: Link types for hypertex. - (line 14) -* hyperlinks, URL <3>: Link types for pdftex and dvipdfm. - (line 25) -* hyperref.sty: Packages known not to work. - (line 9) -* 'hypertex', destination options: Destination options for hypertex. - (line 6) -* 'hypertex', destination types: Destination types for hypertex. - (line 6) -* 'hypertex', hyperlink driver: Hyperlink driver hypertex. - (line 6) -* 'hypertex', link options: Link options for hypertex. - (line 6) -* 'hypertex', link types: Link types for hypertex. - (line 6) -* hypertext links: Hyperlinks. (line 6) -* identifying numbers: \ifinteger and \isinteger. - (line 6) -* idxuniq: Exact destinations for index terms. - (line 33) -* ignoring arguments: Macro arguments. (line 6) -* implicit hyperlinks: Implicit hyperlinks. (line 6) -* implicit hyperlinks, demo: Hyperlinks (xhyper.tex). - (line 7) -* inaccessible macros: Category codes. (line 19) -* index entries and ranges: Modifying index entries. - (line 22) -* index entries containing braces: Index entries with special characters. - (line 63) -* index entries containing brackets: Index entries with special characters. - (line 85) -* index entries with special characters: Index entries with special characters. - (line 6) -* index entries' page numbers, modifying: Modifying index entries. - (line 6) -* index entries, and cross-referencing: Modifying index entries. - (line 36) -* index entries, and cross-referencing <1>: Customizing indexing. - (line 62) -* index entries, proofing: Proofing index terms. - (line 6) -* index entries, with verbatim text: Index entries with special characters. - (line 40) -* index entry continuations: Typesetting an index. - (line 35) -* index entry formatting: Typesetting an index. - (line 35) -* index entry general sorting: Indexing commands. (line 50) -* index fonts: Typesetting an index. - (line 24) -* index groupings: Typesetting an index. - (line 54) -* index hyperlink: Index hyperlinks. (line 6) -* index typesetting: Typesetting an index. - (line 6) -* index, and verbatim text: Index entries with special characters. - (line 40) -* index, choosing destination placement: Choosing destination placement. - (line 6) -* index, destination placement: Choosing destination placement. - (line 6) -* index, exact hyperlinks: Exact destinations for index terms. - (line 28) -* index, hyperlinks in see and see also entries: Hyperlinks in see and see also entries. - (line 6) -* index, parsing page numbers: Page destinations for index terms. - (line 32) -* index, placement of destinations: Choosing destination placement. - (line 6) -* index, selecting destination placement: Choosing destination placement. - (line 6) -* index, underlining page numbers: Page list and page range parsers. - (line 26) -* indexes, disabling: Indexing. (line 54) -* indexes, multiple: Indexing. (line 36) -* indexing: Indexing. (line 6) -* indexing and trailing spaces: Indexing terms. (line 20) -* indexing commands: Indexing commands. (line 6) -* indexing terms: Indexing terms. (line 6) -* insertion classes: Multiple columns. (line 38) -* inset hyperlink border: Link options for pdftex and dvipdfm. - (line 25) -* installation: Installation. (line 6) -* integers, detecting: \ifinteger and \isinteger. - (line 6) -* italic correction: Formatting bibliographies. - (line 45) -* item labels, changing: Formatting lists. (line 53) -* iteration: Iteration. (line 6) -* justification: Justification. (line 6) -* Knuth, Donald Ervin: Citations. (line 91) -* Knuth, Donald Ervin <1>: Category codes. (line 7) -* labels on items, changing: Formatting lists. (line 53) -* labels, characters valid in: Cross-references. (line 20) -* labels, empty equation: Equation references. (line 22) -* labels, empty equation, referring to: Equation references. (line 27) -* Lamport, Leslie: Introduction. (line 15) -* LAMSTeX: Logos. (line 11) -* Lang, Serge: Arrows and morphisms. - (line 126) -* Lang, Serge <1>: Construction of commutative diagrams. - (line 121) -* large operators and hyperlinks: Options supported by all drivers. - (line 27) -* large operators and hyperlinks <1>: Setting group options. - (line 33) -* LaTeX: Introduction. (line 15) -* LaTeX <1>: Citations. (line 10) -* LaTeX <2>: Logos. (line 11) -* LaTeX <3>: Slanted lines and vectors. - (line 7) -* LaTeX commands, in 'btxmac.tex': Commands from LaTeX. (line 6) -* LaTeX graphics collection: Loading LaTeX packages. - (line 14) -* LaTeX graphics collection <1>: Packages known to work. - (line 25) -* LaTeX graphics collection <2>: Hyperlink driver nolinks. - (line 34) -* LaTeX graphics collection, demo: Hyperlinks (xhyper.tex). - (line 7) -* LaTeX packages: Loading LaTeX packages. - (line 6) -* LaTeX packages <1>: Packages known to work. - (line 6) -* LaTeX packages <2>: Packages known not to work. - (line 6) -* LaTeX packages, restoring '\input': Environment for loading packages. - (line 24) -* left-alignment of equation numbers: Displays. (line 6) -* left-justification: Justification. (line 6) -* left-justification of displays: Displays. (line 6) -* letterspacing: Packages known to work. - (line 111) -* linear systems theory: Construction of commutative diagrams. - (line 38) -* lines: Slanted lines and vectors. - (line 15) -* link group: Implicit hyperlinks. (line 10) -* link options: Introduction to hyperlinks. - (line 105) -* link options, common: Options supported by all drivers. - (line 35) -* link options, 'dvipdfm': Link options for pdftex and dvipdfm. - (line 6) -* link options, 'hypertex': Link options for hypertex. - (line 6) -* link options, 'pdftex': Link options for pdftex and dvipdfm. - (line 6) -* link type: Introduction to hyperlinks. - (line 88) -* link types, 'dvipdfm': Link types for pdftex and dvipdfm. - (line 6) -* link types, 'hypertex': Link types for hypertex. - (line 6) -* link types, 'pdftex': Link types for pdftex and dvipdfm. - (line 6) -* link, group options: Setting hyperlink types and options. - (line 12) -* link, group options <1>: Setting group options. - (line 6) -* link, group options, demo: Hyperlinks (xhyper.tex). - (line 7) -* link, group type: Setting hyperlink types and options. - (line 12) -* link, group type <1>: Setting group types. (line 6) -* linkgroup: Implicit hyperlinks. (line 10) -* linkgroup options: Setting hyperlink types and options. - (line 12) -* linkgroup options <1>: Setting group options. - (line 6) -* linkgroup options, demo: Hyperlinks (xhyper.tex). - (line 7) -* linkgroup type: Setting hyperlink types and options. - (line 12) -* linkgroup type <1>: Setting group types. (line 6) -* linkgroup 'cite': Citation hyperlinks. (line 6) -* linkgroup 'eq': Equation reference hyperlinks. - (line 20) -* linkgroup 'eq' <1>: Setting group options. - (line 34) -* linkgroup 'foot': Footnote hyperlinks. (line 6) -* linkgroup 'footback': Footnote hyperlinks. (line 6) -* linkgroup 'hrefext': General hyperlinks. (line 21) -* linkgroup 'hrefint': General hyperlinks. (line 12) -* linkgroup 'idx': Index hyperlinks. (line 6) -* linkgroup 'ref': Cross-reference hyperlinks. - (line 11) -* linkgroup 'url': URL hyperlinks. (line 6) -* linkgroup 'xref': Page reference hyperlinks. - (line 10) -* links, hypertext: Hyperlinks. (line 6) -* list of figures: Alternative contents files. - (line 6) -* list of tables: Alternative contents files. - (line 6) -* listing files: Verbatim listing. (line 6) -* listing files, demo: Highlighting TeX comments in listings (lscommnt.tex). - (line 7) -* lists: Lists. (line 6) -* lists, formatting: Formatting lists. (line 6) -* lists, hyperlinks: List hyperlinks. (line 6) -* loading packages, environment for: Environment for loading packages. - (line 6) -* logos: Logos. (line 6) -* lookahead without spaces: \futurenonspacelet. (line 6) -* loops: Iteration. (line 6) -* lscommnt.tex: Highlighting TeX comments in listings (lscommnt.tex). - (line 7) -* magnification, hyperlink destination: Destination options for pdftex and dvipdfm. - (line 21) -* makeindex: Invoking Eplain. (line 103) -* makeindex <1>: Indexing. (line 14) -* makeindex <2>: Index hyperlinks. (line 12) -* margins, changing: Margins. (line 6) -* margins, index terms in: Proofing index terms. - (line 6) -* mathematics displays, formatting: Displays. (line 6) -* mathematics displays, hyperlinks: Options supported by all drivers. - (line 27) -* mathematics displays, hyperlinks <1>: Setting group options. - (line 33) -* Metafont: Logos. (line 11) -* miniltx.tex: Loading LaTeX packages. - (line 14) -* minimal realizations: Construction of commutative diagrams. - (line 38) -* modifying index entries' page numbers: Modifying index entries. - (line 6) -* morphisms: Arrows and morphisms. - (line 6) -* multiple column output: Multiple columns. (line 6) -* multiple indexes: Indexing. (line 36) -* named destination: Link types for hypertex. - (line 7) -* named destination <1>: Link types for pdftex and dvipdfm. - (line 18) -* names, of TeX variants: Logos. (line 6) -* new window, opening hyperlink in: Link options for pdftex and dvipdfm. - (line 90) -* newlinechar: Diagnostics. (line 26) -* newlines, obeying: Obeying spaces. (line 6) -* 'nolinks', hyperlink driver: Hyperlink driver nolinks. - (line 6) -* numbered destination: Link types for pdftex and dvipdfm. - (line 91) -* numbered lists: Lists. (line 6) -* numbered references: Citations. (line 91) -* numbers, detecting: \ifinteger and \isinteger. - (line 6) -* numbers, written form of: Writing out numbers. (line 6) -* Oberdiek, Heiko: Checking for PDF output. - (line 24) -* omitting hyperlinks: Hyperlink driver nolinks. - (line 6) -* omitting hyperlinks <1>: Turning hyperlinks on/off. - (line 6) -* omitting typesetting of graphics: Packages known to work. - (line 69) -* open boxes: Boxes. (line 12) -* option list, group: Setting group options. - (line 48) -* option list, preserving for group: Setting group options. - (line 21) -* options, destination, common: Options supported by all drivers. - (line 12) -* options, destination, 'dvipdfm': Destination options for pdftex and dvipdfm. - (line 6) -* options, destination, 'hypertex': Destination options for hypertex. - (line 6) -* options, destination, 'pdftex': Destination options for pdftex and dvipdfm. - (line 6) -* options, link and destination: Introduction to hyperlinks. - (line 105) -* options, link, common: Options supported by all drivers. - (line 35) -* options, link, 'dvipdfm': Link options for pdftex and dvipdfm. - (line 6) -* options, link, 'hypertex': Link options for hypertex. - (line 6) -* options, link, 'pdftex': Link options for pdftex and dvipdfm. - (line 6) -* ordered list: Lists. (line 6) -* output routine and index proofing: Proofing index terms. - (line 28) -* overstriking: Packages known to work. - (line 111) -* packages, LaTeX: Loading LaTeX packages. - (line 6) -* packages, LaTeX <1>: Packages known to work. - (line 6) -* packages, LaTeX <2>: Packages known not to work. - (line 6) -* page destination: Link types for pdftex and dvipdfm. - (line 30) -* page list, parsing: Page destinations for index terms. - (line 32) -* page range, parsing: Page destinations for index terms. - (line 32) -* page reference hyperlink: Page reference hyperlinks. - (line 6) -* page-breaking, preserving with hyperlinks: Hyperlink driver nolinks. - (line 6) -* parsing page numbers: Page destinations for index terms. - (line 32) -* Patashnik, Oren: Citations. (line 9) -* pathnames, breaking: Paths. (line 6) -* pathnames, breaking <1>: Packages known to work. - (line 121) -* PDF: Packages known to work. - (line 91) -* PDF output: Checking for PDF output. - (line 6) -* pdftex: Invoking Eplain. (line 114) -* pdftex <1>: Checking for PDF output. - (line 6) -* pdftex <2>: Introduction to hyperlinks. - (line 35) -* 'pdftex', destination options: Destination options for pdftex and dvipdfm. - (line 6) -* 'pdftex', destination types: Destination types for pdftex and dvipdfm. - (line 6) -* 'pdftex', hyperlink driver: Hyperlink drivers pdftex and dvipdfm. - (line 6) -* 'pdftex', link options: Link options for pdftex and dvipdfm. - (line 6) -* 'pdftex', link types: Link types for pdftex and dvipdfm. - (line 6) -* pdfTeX, problems using color and graphics: Packages known to work. - (line 29) -* pdfTeX, problems with 'supp-mis.tex': Packages known to work. - (line 29) -* pict2e.sty: Packages known not to work. - (line 16) -* picture mode: Packages known to work. - (line 14) -* picture mode <1>: Slanted lines and vectors. - (line 7) -* Portable Document Format: Packages known to work. - (line 91) -* PostScript point: Destination types for pdftex and dvipdfm. - (line 66) -* PostScript point <1>: Destination options for pdftex and dvipdfm. - (line 50) -* PostScript point <2>: Link options for pdftex and dvipdfm. - (line 49) -* proofing index terms: Proofing index terms. - (line 6) -* properties: Properties. (line 6) -* ps2pdf: Hyperlink driver hypertex. - (line 14) -* ps2pdf <1>: Hyperlink driver hypertex. - (line 35) -* psfrag.sty: Packages known to work. - (line 98) -* quadruple column output: Multiple columns. (line 6) -* Rahtz, Sebastian: Loading LaTeX packages. - (line 14) -* raising hyperlink destinations: Options supported by all drivers. - (line 13) -* raising hyperlink destinations <1>: Setting group options. - (line 33) -* ranges and index entry: Modifying index entries. - (line 22) -* recognizing numbers: \ifinteger and \isinteger. - (line 6) -* rectangles: Boxes. (line 6) -* references, alphanumeric: Citations. (line 128) -* references, defining general: Defining generic references. - (line 6) -* references, defining general <1>: Using generic references. - (line 6) -* references, numbered: Citations. (line 91) -* register allocation: Allocation macros. (line 6) -* restoring '\input', LaTeX packages: Environment for loading packages. - (line 24) -* return character: Category codes. (line 40) -* right-justification: Justification. (line 6) -* rms: Introduction. (line 16) -* rotation: Packages known to work. - (line 25) -* rotation, demo: Hyperlinks (xhyper.tex). - (line 7) -* rule thickness: Rules. (line 7) -* 'run:' links: General hyperlinks. (line 38) -* scaling: Packages known to work. - (line 25) -* scaling, demo: Hyperlinks (xhyper.tex). - (line 7) -* sed: Customizing indexing. - (line 64) -* see also index entries and hyperlinks: Hyperlinks in see and see also entries. - (line 6) -* see also index entries and sorting: Customizing indexing. - (line 49) -* see, and index entries: Modifying index entries. - (line 36) -* see, and index entries <1>: Customizing indexing. - (line 62) -* see, and index entries, hyperlinks: Hyperlinks in see and see also entries. - (line 6) -* silent indexing: Indexing terms. (line 6) -* skipping tokens: \ifundefined. (line 10) -* skipping tokens <1>: \ifempty. (line 12) -* SLiTeX: Logos. (line 11) -* Snake Lemma: Arrows and morphisms. - (line 130) -* solid hyperlink border: Link options for pdftex and dvipdfm. - (line 25) -* sorting an index: Indexing. (line 6) -* sorting of index entries: Indexing commands. (line 50) -* soul.sty: Packages known to work. - (line 109) -* space above index entries: Typesetting an index. - (line 35) -* spaces, ignoring: \futurenonspacelet. (line 6) -* spaces, obeying: Obeying spaces. (line 6) -* spaces, trailing and indexing commands: Indexing terms. (line 20) -* spacing out: Packages known to work. - (line 111) -* spacing, preserving with hyperlinks: Hyperlink driver nolinks. - (line 6) -* special characters: Verbatim listing. (line 57) -* special characters, in index entries: Index entries with special characters. - (line 6) -* special characters, in table of contents: Writing the .toc file. - (line 49) -* Stallman, Richard: Introduction. (line 16) -* striking out: Packages known to work. - (line 111) -* style, hyperlink border: Link options for pdftex and dvipdfm. - (line 25) -* subequations, referring to: Subequation references. - (line 6) -* subterm in indexing: Indexing terms. (line 13) -* supp-mis.tex, problems with pdfTeX: Packages known to work. - (line 29) -* supp-pdf.tex: Packages known to work. - (line 29) -* table of contents: Contents. (line 6) -* table of contents, and verbatim text: Writing the .toc file. - (line 49) -* table of contents, hyperlinks: Contents hyperlinks. (line 6) -* table of contents, short: Reading the .toc file. - (line 19) -* table of contents, short <1>: Macro arguments. (line 10) -* tables: Tables. (line 6) -* tabs: Obeying spaces. (line 22) -* TeX by Topic: Iteration. (line 61) -* TeX Frequently Asked Question: \ifinteger and \isinteger. - (line 26) -* TEXFORMATS: Installation. (line 43) -* texi2dvi: Invoking Eplain. (line 103) -* texi2dvi <1>: Citations. (line 102) -* texi2dvi <2>: Indexing. (line 33) -* Texinfo: Introduction. (line 15) -* TEXINPUTS: Installation. (line 23) -* time of day: Time of day. (line 6) -* 'toc' files, writing several: Changing the .toc file's root name. - (line 12) -* tracing: Diagnostics. (line 6) -* trailing spaces and indexing commands: Indexing terms. (line 20) -* trimsee: Customizing indexing. - (line 65) -* triple column output: Multiple columns. (line 6) -* Tu, Loring W.: Construction of commutative diagrams. - (line 13) -* TUGboat: Introduction. (line 64) -* type, link and destination: Introduction to hyperlinks. - (line 88) -* types, destination, 'dvipdfm': Destination types for pdftex and dvipdfm. - (line 6) -* types, destination, 'hypertex': Destination types for hypertex. - (line 6) -* types, destination, 'pdftex': Destination types for pdftex and dvipdfm. - (line 6) -* types, link, 'dvipdfm': Link types for pdftex and dvipdfm. - (line 6) -* types, link, 'hypertex': Link types for hypertex. - (line 6) -* types, link, 'pdftex': Link types for pdftex and dvipdfm. - (line 6) -* typesetting an index: Typesetting an index. - (line 6) -* undefined control sequence, checking for: \ifundefined. (line 10) -* undefined labels, warnings about: Installation. (line 40) -* underline hyperlink border: Link options for pdftex and dvipdfm. - (line 25) -* underlining: Packages known to work. - (line 111) -* underlining page numbers in index: Page list and page range parsers. - (line 26) -* universal mapping property: Construction of commutative diagrams. - (line 25) -* unordered lists: Lists. (line 6) -* upgrading: Installation. (line 6) -* URL for 'ifpdf.sty': Checking for PDF output. - (line 24) -* URL for MakeIndex: Indexing. (line 14) -* URL for 'path.sty': Paths. (line 33) -* URL for pdfTeX: Checking for PDF output. - (line 6) -* URL for 'texnames.sty': Logos. (line 15) -* URL hyperlink: General hyperlinks. (line 20) -* URL hyperlink <1>: URL hyperlinks. (line 6) -* URL hyperlink <2>: Link types for hypertex. - (line 14) -* URL hyperlink <3>: Link types for pdftex and dvipdfm. - (line 25) -* url.sty: Packages known to work. - (line 119) -* url.sty <1>: URL hyperlinks. (line 6) -* url.sty <2>: Hyperlinks (xhyper.tex). - (line 7) -* user-inaccessible macros: Category codes. (line 19) -* vectors: Slanted lines and vectors. - (line 15) -* verbatim listing: Verbatim listing. (line 6) -* verbatim listing, demo: Highlighting TeX comments in listings (lscommnt.tex). - (line 7) -* verbatim text, in index: Index entries with special characters. - (line 40) -* verbatim text, in table of contents: Writing the .toc file. - (line 49) -* version number: Introduction. (line 50) -* Walden, David: Introduction. (line 61) -* Warner, Frank W.: Construction of commutative diagrams. - (line 25) -* whatsits made by hyperlinks: Hyperlink driver nolinks. - (line 25) -* whatsits made by index entries: Indexing commands. (line 62) -* while loops: Iteration. (line 6) -* whitespace: Obeying spaces. (line 6) -* width, hyperlink border: Link options for pdftex and dvipdfm. - (line 49) -* writing several 'toc' files: Changing the .toc file's root name. - (line 12) -* xcolor.sty: Packages known not to work. - (line 19) -* xdvi: Hyperlink driver hypertex. - (line 11) -* XeLaTeX: Logos. (line 11) -* xeplain.tex: Introduction. (line 6) -* XeTeX: Logos. (line 11) -* xhyper.tex: Hyperlinks (xhyper.tex). - (line 7) -* Zassenhaus, Hans: Construction of commutative diagrams. - (line 121) -* zooming, hyperlink destination: Destination options for pdftex and dvipdfm. - (line 21) - - - -Tag Table: -Node: Top809 -Node: Introduction8254 -Node: Installation11274 -Node: Invoking Eplain13326 -Node: User definitions17923 -Node: Diagnostics19750 -Node: Rules21315 -Node: Citations22146 -Node: Formatting citations28574 -Node: Formatting bibliographies30111 -Node: Commands from LaTeX33347 -Node: Displays34321 -Node: Formatting displays35708 -Node: Time of day36341 -Node: Lists37100 -Node: Formatting lists39240 -Node: Verbatim listing41523 -Node: Contents44743 -Node: Writing the .toc file45412 -Node: Reading the .toc file48274 -Node: Changing the .toc file's root name49677 -Node: Alternative contents files50693 -Node: Cross-references51257 -Node: Defining generic references52743 -Node: Using generic references53619 -Node: Page references54903 -Node: Equation references55722 -Node: Formatting equation references58487 -Node: Subequation references62837 -Node: Indexing64753 -Node: Indexing terms67861 -Node: Indexing commands68973 -Node: Modifying index entries71992 -Node: Index entries with special characters74962 -Node: Proofing index terms79204 -Node: Typesetting an index81017 -Node: Customizing indexing83483 -Node: Justification87179 -Node: Tables88849 -Node: Margins91340 -Node: Multiple columns93493 -Node: Footnotes95530 -Node: Fractions98105 -Node: Paths98888 -Node: Logos100490 -Node: Boxes101220 -Node: Checking for PDF output103006 -Node: Loading LaTeX packages104094 -Node: The \usepackage command105451 -Node: Environment for loading packages106537 -Node: Packages known to work108877 -Node: Packages known not to work115252 -Node: Hyperlinks116013 -Node: Introduction to hyperlinks116594 -Node: Explicit hyperlinks122130 -Node: Implicit hyperlinks124415 -Node: General hyperlinks126236 -Node: URL hyperlinks127758 -Node: Citation hyperlinks129858 -Node: List hyperlinks130585 -Node: Cross-reference hyperlinks130976 -Node: Page reference hyperlinks132347 -Node: Equation reference hyperlinks133008 -Node: Index hyperlinks134398 -Node: Exact destinations for index terms136156 -Node: Page destinations for index terms138323 -Node: Choosing destination placement140941 -Node: Index page list and page range parsers141730 -Node: Hyperlinks in see and see also entries142282 -Node: Footnote hyperlinks143080 -Node: Contents hyperlinks144274 -Node: Hyperlink drivers144657 -Node: Options supported by all drivers145291 -Node: Hyperlink driver hypertex148087 -Node: Destination types for hypertex151031 -Node: Destination options for hypertex152065 -Node: Link types for hypertex152547 -Node: Link options for hypertex154554 -Node: Hyperlink drivers pdftex and dvipdfm155576 -Node: Destination types for pdftex and dvipdfm156221 -Node: Destination options for pdftex and dvipdfm159700 -Node: Link types for pdftex and dvipdfm162151 -Node: Link options for pdftex and dvipdfm165665 -Node: Hyperlink driver nolinks169303 -Node: Setting hyperlink types and options171706 -Node: Setting default types and options172707 -Node: Setting group types174133 -Node: Setting group options175322 -Node: Turning hyperlinks on/off177803 -Node: Turning low-level commands on/off178441 -Node: Turning hyperlinks on/off for a group178954 -Node: Arrow theoretic diagrams180107 -Node: Slanted lines and vectors180485 -Node: Commutative diagrams182558 -Node: Arrows and morphisms183167 -Node: Construction of commutative diagrams187623 -Node: Commutative diagram parameters194779 -Node: Programming definitions196595 -Node: Category codes197601 -Node: Allocation macros200246 -Node: Iteration202381 -Node: Macro arguments204033 -Node: Converting to characters207400 -Node: Expansion208785 -Node: \csn and \ece209408 -Node: \edefappend209973 -Node: Hooks210520 -Node: Properties212694 -Node: \expandonce213773 -Node: \ifundefined214221 -Node: \ifempty214785 -Node: \ifinteger and \isinteger215527 -Node: \futurenonspacelet216562 -Node: Obeying spaces217157 -Node: Writing out numbers218181 -Node: Mode-specific penalties218504 -Node: Auxiliary files219233 -Node: User-defined environments220152 -Node: Page list and page range parsers221365 -Node: Demo files223497 -Node: Hyperlinks (xhyper.tex)224063 -Node: Highlighting TeX comments in listings (lscommnt.tex)232412 -Node: Macro index234868 -Node: Concept index302707 - -End Tag Table |