summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/hyperref
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/hyperref
Initial commit
Diffstat (limited to 'macros/latex/contrib/hyperref')
-rw-r--r--macros/latex/contrib/hyperref/ChangeLog.txt3066
-rw-r--r--macros/latex/contrib/hyperref/README.md182
-rw-r--r--macros/latex/contrib/hyperref/backref.dtx947
-rw-r--r--macros/latex/contrib/hyperref/backref.pdfbin0 -> 118807 bytes
-rw-r--r--macros/latex/contrib/hyperref/bmhydoc.sty115
-rw-r--r--macros/latex/contrib/hyperref/doc/cmmi10-22.gifbin0 -> 917 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/cmsy10-21.gifbin0 -> 956 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/manual.css248
-rw-r--r--macros/latex/contrib/hyperref/doc/manual.html7437
-rw-r--r--macros/latex/contrib/hyperref/doc/manual.pdfbin0 -> 284815 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/manual2.html18
-rw-r--r--macros/latex/contrib/hyperref/doc/manual3.html24
-rw-r--r--macros/latex/contrib/hyperref/doc/manual4.html18
-rw-r--r--macros/latex/contrib/hyperref/doc/manual5.html18
-rw-r--r--macros/latex/contrib/hyperref/doc/manual6.html18
-rw-r--r--macros/latex/contrib/hyperref/doc/options.pdfbin0 -> 30271 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/paper.pdfbin0 -> 132446 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/slides.pdfbin0 -> 384001 bytes
-rw-r--r--macros/latex/contrib/hyperref/hluatex.dtx2034
-rw-r--r--macros/latex/contrib/hyperref/hylatex.ltx43
-rw-r--r--macros/latex/contrib/hyperref/hyperref.dtx27659
-rw-r--r--macros/latex/contrib/hyperref/hyperref.ins101
-rw-r--r--macros/latex/contrib/hyperref/hyperref.pdfbin0 -> 2398592 bytes
-rw-r--r--macros/latex/contrib/hyperref/manifest.txt122
-rw-r--r--macros/latex/contrib/hyperref/minitoc-hyper.sty2304
-rw-r--r--macros/latex/contrib/hyperref/nameref.dtx903
-rw-r--r--macros/latex/contrib/hyperref/nameref.pdfbin0 -> 115974 bytes
-rw-r--r--macros/latex/contrib/hyperref/ntheorem-hyper.sty920
-rw-r--r--macros/latex/contrib/hyperref/psdmapshortnames.pl133
-rw-r--r--macros/latex/contrib/hyperref/xr-hyper.sty120
30 files changed, 46430 insertions, 0 deletions
diff --git a/macros/latex/contrib/hyperref/ChangeLog.txt b/macros/latex/contrib/hyperref/ChangeLog.txt
new file mode 100644
index 0000000000..e828778718
--- /dev/null
+++ b/macros/latex/contrib/hyperref/ChangeLog.txt
@@ -0,0 +1,3066 @@
+2019-06-12 6.88h Ulrike Fischer
+ * added code to allow \Hy@DisableOption to escape groups
+ https://github.com/ho-tex/hyperref/issues/97
+
+2019-04-27 6.88g Ulrike Fischer
+ * added \mu to psdextra.def
+ https://github.com/ho-tex/hyperref/pull/90
+ * removed setting of /Producer from all drivers
+ https://github.com/ho-tex/hyperref/issues/91
+
+
+2018-12-24 6.88f Ulrike Fischer
+ * gobble \thanks in pdftitle
+ https://github.com/ho-tex/hyperref/issues/81
+
+2018-11-30 6.88e Ulrike Fischer
+ * added ignorespaces to footnotetext to address
+ https://github.com/ho-tex/oberdiek/issues/50
+
+2018-11-27 6.88d Ulrike Fischer
+ * removed wrong producer warning for xetex and (x)dvipdfm(x)
+ (issue 76)
+
+2018-11-22 6.88c Ulrike Fischer
+ * Added support for pdflinkmargin for xetex (issue 15)
+
+2018-11-17 6.88b David Carlisle
+ * Ensure Producer field in PDF shows LuaTeX version with two digits (Ulrike Fischer)
+
+2018-09-30 6.88a David Carlisle
+ * Reorganise README and ChangeLog moving most of README into the manual
+ and maintaining README.md as markdown and ChangeLog.txt as text
+ * Document NoHyper in the manual (copied from hyperref.dtx) for github issue 55
+ * hyperref.dtx: Add \protected@file@percent for github issue 70
+ * Adjust default pdfcreator and add addtopdfcreator key for githb issue 53
+ * Use \scdefault not always sc as font shape for frenchlinks, github issue 64.
+ * Greek Autoref support, issue #52
+
+2018-04-02 6.87a David Carlisle
+ * 6.87a
+ * Silence babel messages in pdfstringdef issue #59
+
+2018-02-06 6.86b David Carlisle
+ * 6.86b
+ * Fix packaging of luatex.dtx (reported on tex.sx)
+ * Don't include test directory on ctan (still on github)
+
+2017-09-29 6.86a David Carlisle
+ * 6.86a
+ * bump version and fix documentation markup
+ * fixes to xsl and other minor build adjustments
+ * send driver message just to log, issue #9
+ * add \and to the list of commands locally made safe in pdf title info, issue #44
+ * for issue #50 add pdf source zip from texmf-dist/doc/latex/hyperref-docsrc
+
+2017-09-29 6.85a David Carlisle
+ * 6.85a
+ * Make driver auto detect info not message (so just log not terminal) issue #9
+ * Make \and locally "; " while making pdf info string issue #44
+
+2017-09-29 6.85a Ulrike Fischer
+ * 6.85a
+ * don't define \noboundary as text command / issue 37 (#45)
+ * changed default pdfversion from 2 to 5, along the default settings in the current tex systems
+ * change with pdfa version to 4 only if the current version is smaller, see issue #38
+ * removed \noboundary from puarenc.def, see issue #37
+ * Issue #38: change version to 1.4 with pdfa only if it is smaller (#43)
+ * changed default pdfversion from 2 to 5, along the default settings in the current tex systems
+ * change with pdfa version to 4 only if the current version is smaller, see issue #38
+ * issue #25, added \HyPsd@EscapeTeX#1% to correctly escape non-ascii in heading (#42)
+ * code to amend issue #40 (missing pdfhighlight option for xetex/dvipdfmx) (#41)
+ * corrected typo in hpdftex.def
+ * exchanged code for pdfhighlight by \Hy@setpdfhighlight in hpdftex.def
+ * exchanged code for pdfhighlight by \Hy@setpdfhighlight in hluatex.def
+ * added \Hy@setpdfhighlight to hdvipdfm/hxetex.def
+
+2017-03-14 6.85a David Carlisle
+ * 6.85a
+ * Declare \newtie in PU encoding (composites with \newtie are
+ already declared). Declaring composites with an undeclared accent does
+ not work and will be flagged as an error in the next LaTeX release.
+ * Modify the regex in pdfremotestartview for github issue 28
+ https://github.com/ho-tex/hyperref/issues/28
+
+2017-01-26 6.84a David Carlisle
+ * 6.84a
+ * Fix driver check to allow luatex as well as pdftex in pdf mode.
+ * Documentation improvements
+
+2016-06-24 6.83q David Carlisle
+ * 6.83q
+ * cleveref support
+
+2016-05-21 6.83p David Carlisle
+ * 6.83p, nameref 2.44, backref 1.39
+ * document github support
+ * escape Field values (issue #5, thanks to Ulrike Fischer for fix).
+ * fix to checkbox/Radio code (issue #6, thanks to Ulrike Fischer for fix).
+ * Fix for links in amsmath \text (issue #13)
+ * Fix white space at end of line before a theorem (issue #11)
+
+2016-05-18 6.83o David Carlisle
+ * 6.83o
+ * merge pull request from H. Yamashita pass driver options to color package.
+ * replace call to luatex85 package by new luatex back end option
+ * Catalan autoref translation contributed in issue #4
+
+2016-05-05 6.83n David Carlisle
+ * 6.83n
+ * Load luatex85 package for luatex compatibility
+
+2012-11-06 6.83m Heiko Oberdiek
+ * 6.83m
+ * Option `pdflang': Default is `\relax' that suppresses
+ the entry in the PDF catalogue. An empty value (undetermined
+ language) is written to the PDF catalogue.
+ * Option `pdflang': Checks for well-formedness added
+ (if \pdfmatch is available).
+ * Option `hyperindex': The latest encapsulating command is repeated
+ for the close range entries, if it is not already given. That improves
+ compatibility to `xindy'. (Formatting commands remain unsupported.)
+
+2012-10-31 6.83l Heiko Oberdiek
+ * 6.83l
+ * Workaround for bug in `frenchb.ldf' 2010/08/21 v2.5a added that
+ destroys `\pdfstringdefDisableCommands' in `\AtBeginDocument'.
+ * nameref 2.43:
+ * Support for theorem names in class `beamer'.
+ * Some support for `description' labels in class `beamer', if
+ `\label' is inside the optional argument of `\item'.
+
+2012-10-15 6.83k Heiko Oberdiek
+ * 6.83k
+ * If `hyperref' is loaded in the document class and `htlatex' is used,
+ then `hyperref' passes options for `tex4ht' found in \@documentclasshook
+ to `tex4ht'.
+ * \hyper@link@ suppresses links with empty target.
+
+2012-10-13 6.83j Heiko Oberdiek
+ * 6.83j
+ * PDF forms/hpdftex.def: Field option `calculatesortkey' added
+ (pdfTeX/LuateX only) to specify the calculation order for
+ calculated fields.
+ * Option `pdflinkmargin' implemented for pdfmark drivers.
+
+2012-10-12 6.83i Heiko Oberdiek
+ * 6.83i
+ * PDF forms: /CO (calculation order) is set for fields with
+ calculations. Only document order is supported currently.
+ * pdfmark.def: /Fields is set like in the other PDF form drivers.
+
+2012-10-11 6.83h Heiko Oberdiek
+ * 6.83h
+ * If `hyperref' is loaded in the document class, then it misses
+ the detection of package `tex4ht' of `htlatex' because it is
+ loaded after the documentclass. Therefore another test for
+ `\HCode' is added that is defined by `htlatex'.
+ * The setting of additional information entries is done globally
+ like the other standard options (pdfauthor, pdftitle, ...)
+ for the information dictionary. (Bug report:
+ http://tex.stackexchange.com/q/75684/16967)
+
+2012-09-27 6.83g Heiko Oberdiek
+ * 6.83g
+ * Fix for \hyper@link@.
+
+2012-09-26 6.83f Heiko Oberdiek
+ * 6.83f
+ * Option `customdriver' added.
+
+2012-09-24 6.83e Heiko Oberdiek
+ * 6.83e
+ * Fix for \hyper@link@.
+
+2012-09-23 6.83d Heiko Oberdiek
+ * 6.83d
+ * Table of contents: If the page number is empty, then the
+ link is suppressed to avoid tiny link boxes.
+ * puenc.def/psdextra.def: Wrong names \(text)capricorn
+ renamed to \(text)capricornus (wasysym).
+ * hyperref.sty: \hyper@link@ recoded.
+ * hpdftex.def: Fix for option `ocgcolorlinks' to prevent removing
+ other page resources.
+ * LuaTeX: Workaround for LuaTeX bug 773 added that can be triggered
+ by \pdfstringdef.
+
+2012-08-21 6.83c Heiko Oberdiek
+ * 6.83c
+ * Package `parskip': The changes of \@starttoc of package `parskip'
+ 2001/04/09 are supported (setting \parskip to zero).
+ * Optional page object references added to field annotations.
+ (hpdftex.def: only if package `zref-abspage' is loaded.)
+ * Bug fix for bug in bug fix of 6.82w. The active `Q' was redefined
+ and not restored after usage (breaks package `flexisym').
+ (Thanks Dominic J\"anichen and Ulrike Fischer.)
+
+2012-08-18 6.83b Heiko Oberdiek
+ * 6.83b
+ * pd1enc.def: \ij and \IJ fixed, now they expand to `ij' and `IJ'
+ (these glyphs are not available in PDFDocEncoding).
+ * Shorthands of babel deactivated in \hyper@makecurrent (destination names)
+ and the destination name of \contentsline.
+ * \XeTeXLinkBox with \XeTeXLinkMargin added for XeTeX if the link
+ does not contain character glyphs.
+
+2012-08-13 6.83a Heiko Oberdiek
+ * 6.83a
+ * Syntax fixes in additions for puenc.def.
+ (Thanks Yury Donskoy for bug report.)
+ * Fix for option `psdextra'.
+ * puenc.def: further additions.
+
+2012-08-11 6.82z Heiko Oberdiek
+ * 6.82z
+ * Fix in parent counter lookup, meaning of \@elt is restored
+ after usage. (Thanks Victor Ivrii for bug report.)
+ * puenc.def: fixes and additions.
+
+2012-08-03 6.82y Heiko Oberdiek
+ * 6.82y
+ * Unique destination names: Lookup for parent counters added
+ for counters that are defined before hyperref is loaded and
+ \theH<counter> is not provided.
+ * Fixes: File `psdextra.def` was loaded always with option `unicode',
+ restriction of set option `psdextra' was missing. Also the
+ catcode was not explicitely set to `letter', when the file is loaded.
+ (Thanks Daniel Halperin for bug report.)
+
+2012-07-31 6.82x Heiko Oberdiek
+ * 6.82x
+ * nameref 2.42: Definition for \strip@period provided.
+ It was removed in 2.41, but it is needed by package `subfig'.
+
+2012-07-30 6.82w Heiko Oberdiek
+ * 6.82w
+ * Bug fix in \pdfstringdef: Active characters defined with
+ \protected are catched and converted to characters with
+ catcode 12 (other).
+ * hpdftex.def: Before setting the version number it is checked,
+ whether objects are already written. Also \pdfobjcompresslevel
+ is disabled for versions < 5.
+ * puenc.def: Hebrew letters added.
+
+2012-07-29 6.82v Heiko Oberdiek
+ * 6.82v
+ * Bug fix (introduced in 6.82r): Information entries did not
+ get written in some drivers (xetex, dvipdfm, ...).
+
+2012-07-28 6.82u Heiko Oberdiek
+ * 6.82u
+ * Option `destlabel' and \HyperDestRename added.
+ * nameref 2.41:
+ * The hook \label@hook is added to \label.
+ * \strip@period is fixed (unnecessary addition of \relax)
+ and renamed to \NR@strip@period.
+
+2012-07-26 6.82t Heiko Oberdiek
+ * 6.82t
+ * Some fixes in PU encoding, especially \textbackslash.
+
+2012-07-25 6.82s Heiko Oberdiek
+ * 6.82s
+ * \pdfstringdef: \ensuremath added to avoid warnings
+ about "removing `math shift'".
+ * backref 1.38: Explicit package dependency for `ltxcmds' added.
+
+2012-07-24 6.82r Heiko Oberdiek
+ * 6.82r
+ * Package pifont: \ding in Unicode bookmarks supported.
+ * puenc.def: lots of symbols added.
+ * New experimental option `psdextra' that loads file `psdextra.def'
+ with defines the original short character names (mostly math)
+ to the names with prefix `text' because of NFSS.
+ * puarenc.def: \noboundary fixed.
+ * Definitions of \theH<counter> made global (GL).
+ * Bug fix in hpdftex.def for links across the first and second page:
+ \Hy@FixNotFirstPage is disabled for package `atbegshi' >= 2011/10/05.
+ * backref 1.37:
+ * \backrefsetup added.
+ * Options `enable' and `disable' added.
+
+2012-05-13 6.82q Heiko Oberdiek
+ * 6.82q
+ * \HyNew@float@makebox added for package `caption'
+ (feature request from Axel Sommerfeldt).
+
+2012-02-28 6.82p Heiko Oberdiek
+ * 6.82p
+ * pdfmark: Missing border color setting for \Acrobatmenu added.
+ * dvipdfmx/xetex: Fix for \Acrobatmenu if \@menubordercolor is \relax.
+ * Some warnings for entries of the information dictionary added,
+ if the driver does not support them.
+ * Test file testinfo.tex added that sets all entries of
+ the information dictionary.
+
+2012-02-06 6.82o Heiko Oberdiek
+ * 6.82o
+ * At the begin and end of an equation an \hbox might be
+ present that affects math spacing (for example, if the
+ equation starts with an unary minus). By putting \hbox
+ in \mathopen/\mathclose, now only a math punctuation at
+ the end of the equation will add some space afterwords.
+ Environment eqnarray is fixed in a similar way, also
+ its anchor position is fixed.
+
+2011-12-06 6.82n Heiko Oberdiek
+ * 6.82n
+ * Redefinition of \theHchapter/\theHsection in \appendix
+ uses \Hy@AlphNoErr instead of \Alph to provide values
+ for the cases unsupported in \Alph.
+
+2011-12-04 6.82m Heiko Oberdiek
+ * 6.82m
+ * \...footnotetext commands might contain unbalanced conditionals.
+
+2011-11-21 6.82l Heiko Oberdiek
+ * 6.82l
+ * Bug fix in page labels (bug introduced in 6.82a).
+ * Field/borderwidth: Also a dimen can be given
+ instead of a number with default unit bp.
+ (Feature request of GL.)
+ * Fix for \TextField and \TextCheckField:
+ \leavevmode is inserted before the formular field
+ to avoid the error that \pdfstartlink cannot be
+ used in vertical mode. (Bug reported by GL.)
+
+2011-11-19 6.82k Heiko Oberdiek
+ * 6.82k
+ * The macros \theH<counter> are defined using
+ \providecommmand to allow previous definitions
+ (feature request from Axel Sommerfeldt).
+
+2011-10-01 6.82j Heiko Oberdiek
+ * 6.82j
+ * Patch of \TX@endtabularx modified in order to support
+ biblatex's patching (reported by Marc Baudoin).
+
+2011-09-28 6.82i Heiko Oberdiek
+ * 6.82i
+ * Internal boolean switches renamed if the boolean switch differs from
+ its option. This simplifies the implementation of \Hy@boolkey,
+ \IfHyperBooleanExists and \IfHyperBoolean.
+ * Package tabularx: Footnote linking is only disabled inside
+ environment tabularx.
+
+2011-08-19 6.82h Heiko Oberdiek
+ * 6.82h
+ * dvipdfm/xetex: pdfpagetransition, pdfpageduration, pdfpagehidden
+ implemented.
+ * \IfHyperBooleanExists and \IfHyperBoolean added.
+ * The label form of \hyperref[...]{...} does not set
+ a broken link if the reference is not defined.
+
+2011-04-17 6.82g Heiko Oberdiek
+ * 6.82g
+ * Make use of package `hobsub-hyperref'.
+ * Patch for package `ltxcmds' removed by requiring the fixed version
+ (see v6.81t).
+ * Drivers dvipdfm/xetex: missing \leavevmode added for links.
+
+2011-04-09 6.82f Heiko Oberdiek
+ * 6.82f
+ * Definition of \Hy@xspace@end moved to an earlier place.
+
+2011-04-07 6.82e Heiko Oberdiek
+ * 6.82e
+ * \xspace without space at end of links and anchors.
+
+2011-03-09 6.82d Heiko Oberdiek
+ * 6.82d
+ * dvipdfm/xetex: missing launch actions added for \href.
+
+2011-02-28 6.82c Heiko Oberdiek
+ * 6.82c
+ * Fix for references with dvips/breaklinks=true in math mode.
+ (Bug found by Gady Kozma).
+
+2011-02-07 6.82b Heiko Oberdiek
+ * 6.82b
+ * Fix for class `slides' with option `pageanchors'
+ and anchor name shortened if page is not used.
+
+2011-02-05 6.82a Heiko Oberdiek
+ * 6.82a
+ * Options `hidelinks', `allcolors' and `allbordercolors' added.
+ * \pdfstringdef: \begin, \end, \foreignlanguage catched.
+ * Options `pdfpagelabels' and `pageanchor': some support
+ for class with its page counters (slide/overlay/note/page) added.
+ * Option `pageanchor': Double string escaping removed
+ for default setting hypertexnames=true, plainpages=false.
+
+2010-12-16 6.81z Heiko Oberdiek
+ * 6.81z
+ * Fix for bug #135 `amsclass: wrong formatting of theorems'
+ (thanks to Dan Luecking for his analysis).
+
+2010-12-15 6.81y Heiko Oberdiek
+ * 6.81y
+ * Allowing driver tex4ht if XeTeX is running (htxelatex).
+
+2010-12-14 6.81x Heiko Oberdiek
+ * 6.81x
+ * Destination names (\hyper@makecurrent) now use
+ the original definition of \@arabic to avoid
+ trouble with redefined \@arabic (polyglossia/arabic).
+
+2010-12-03 6.81w Heiko Oberdiek
+ * 6.81w
+ * Fix for draftmode, because .out file wasn't written.
+
+2010-11-26 6.81v Heiko Oberdiek
+ * 6.81v
+ * Fix for driver hpdftex.def (undefined \pdf@draftmode).
+
+2010-11-22 6.81u Heiko Oberdiek
+ * 6.81u
+ * Driver hpdftex.def: Use of \pdfdraftmode.
+ * Driver pdfmark.def: Math mode respected in links.
+ * Some unnecessary code removed in \LT@p@ftntext (GL).
+
+2010-10-30 6.81t Heiko Oberdiek
+ * 6.81t
+ * Radio buttons: small fix, escaping values and adding /DV.
+ * Temporary fix for \ltx@LocalAppendToMacro until next bundle update.
+
+2010-10-19 6.81s Heiko Oberdiek
+ * 6.81s
+ * Version check added for driver files.
+ * Field options `altname' and `mappingname' added.
+
+2010-09-25 6.81r Heiko Oberdiek
+ * 6.81r
+ * \SpecialDvipdfmxOutlineOpen is set in case of XeTeX.
+
+2010-09-17 6.81q Heiko Oberdiek
+ * 6.81q
+ * Broken error messages because of broken \Hy@Error fixed.
+
+2010-09-17 6.81p Heiko Oberdiek
+ * 6.81p
+ * Sanitizing (babel shorthands) of anchor names in
+ \hyper@anchor and \hyper@anchorstart.
+
+2010-09-16 6.81o Heiko Oberdiek
+ * 6.81o
+ * Broken option `pdfborder' fixed (since 6.81n).
+
+2010-09-13 6.81n Heiko Oberdiek
+ * 6.81n
+ * New option `driverfallback'. It takes a driver option for
+ the case that a driver is not given and cannot be autodetected.
+ (Feature request by Markus Kohm.)
+ * Unused option `hyperref' removed.
+ * Driver options are now `void' options that do not accept any values.
+
+2010-09-11 6.81m Heiko Oberdiek
+ * 6.81m
+ * New option `pdfremotestartview'.
+ * \href with new optional argument with
+ keys `page' and `pdfremotestartview', `pdfnewwindow', `ismap',
+ `nextactionraw'.
+ * Fix for urls in \href: Prefix 'file:' is not added.
+
+2010-09-11 6.81l Heiko Oberdiek
+ * 6.81l
+ * Fix spacefactor corrections of 6.81i for math mode.
+ * Fixing GoToR actions if \href contains `file:///' or
+ `file://localhost/'.
+
+2010-09-10 6.81k Heiko Oberdiek
+ * 6.81k
+ * PDF forms: Missing JavaScript actions added for check boxes,
+ push, submit and reset buttons.
+ * PDF forms: Warnings are given, if HTML field options are used.
+
+2010-09-04 6.81j Heiko Oberdiek
+ * 6.81j
+ * \Hy@EveryPageAnchor fixed to avoid Overfull \hbox warnings
+ with some drivers.
+
+2010-09-04 6.81i Heiko Oberdiek
+ * 6.81i
+ * Various drivers: Destinations made transparent for \spacefactor.
+ * Various drivers: Links made transparent for \spacefactor.
+ * Various drivers: Fixes for option `raiselinks' without color.
+
+2010-09-01 6.81h Heiko Oberdiek
+ * 6.81h
+ * Fix for clash with package `varioref', that redefines
+ \refstepcounter with loss of hyperref's additions.
+ * Additions for README.
+
+2010-08-30 Heiko Oberdiek
+ * backref 1.36: Typo in warning fixed.
+
+2010-06-18 6.81g Heiko Oberdiek
+ * 6.81g
+ * pdfmark: Disabling of \escapechar is removed during reading
+ the .out file. With package xkeyval the \pdfmark causes
+ lots of character `2' in the output.
+ * kvsetkeys: \setkeys is replaced by \kvsetkeys.
+
+2010-06-04 6.81f Heiko Oberdiek
+ * 6.81f
+ * Beautifying error text of utf8x.def of \utf@viii@undeferr.
+ * pdfmark.def: Avoid \leavevmode and \hbox of \pdf@rect
+ for destinations with empty target area. It fixes spacing
+ in situations like "\section{A}\hypertarget{foobar}{}\section{B}".
+ (Bug detected by Thomas Beuthe.)
+
+2010-05-13 6.81e Heiko Oberdiek
+ * 6.81e
+ * Real epsilon for \eTeX and \LaTeXe in Unicode bookmarks.
+
+2010-05-12 6.81d Heiko Oberdiek
+ * 6.81d
+ * Fix for russian. (Bug found by Victor Kozyakin.)
+
+2010-05-11 6.81c Heiko Oberdiek
+ * 6.81c
+ * Fix for funny \@alph and \@Alph definitions for use
+ in anchor names.
+ * \@fnsymbol uses replacement in anchor names.
+
+2010-05-10 6.81b Heiko Oberdiek
+ * 6.81b
+ * Bookmarks: memoir's \booknumberline supported.
+
+2010-05-04 6.81a Heiko Oberdiek
+ * 6.81a
+ * Patch for longtable takes package arydshln into account.
+
+2010-05-01 6.80z Heiko Oberdiek
+ * 6.80z
+ * Language definitions for \autoref are provided automatically
+ without global or package language options if babel is loaded
+ before.
+
+2010-04-30 6.80y Heiko Oberdiek
+ * 6.80y
+ * pdfencoding=auto: Escape TeX characters in .out file after
+ successful conversion to PDFDocEncoding (or subset).
+ * nameref 2.40: Support of environment `description'.
+
+2010-04-17 6.80x Heiko Oberdiek
+ * 6.80x
+ * Define \@currentHref as "Doc-Start" right at the beginning
+ for a better support of \label lost in the preamble.
+ * nameref 2.39: \@currentHref and \@currentlabelname are not overwritten.
+
+2010-04-16 6.80w Heiko Oberdiek
+ * 6.80w
+ * nameref fix for memoir disabled.
+ * nameref 2.38: Support for theorems.
+
+2010-04-15 6.80v Heiko Oberdiek
+ * 6.80v
+ * Support for star form of \nameref added in hyperref.
+ * nameref 2.37
+ * Support for forgotten star form \part* added.
+ * Support for memoir fixed: non-star forms of \section, \chapter.
+
+2010-03-30 6.80u Heiko Oberdiek
+ * 6.80u
+ * \pdfstringdef: Fix for unexpandable shorthand `"-'
+ of `russianb.ldf'. (Bug found by Uladzimir Pylinski.)
+
+2010-03-29 6.80t Heiko Oberdiek
+ * 6.80t
+ * Support for package `amsthm' fixed.
+ (Bug found by Dana Lahat.)
+
+2010-03-28 6.80s Heiko Oberdiek
+ * 6.80s
+ * \@currentHlabel is no longer used.
+ * \HyperGlobalCurrentHref and \HyperLocalCurrentHref added.
+ (Not yet supported in footnotes.)
+ * Fix in bookmarks/.out file: some special characters protected.
+ * \href: detection of file links fixed if the file base name
+ contains dots (bug found by Uladzimir Pylinski).
+ * Some changes to allow `hyperref' to be loaded via
+ \AtBeginDocument (experimental).
+
+2010-03-19 6.80r Heiko Oberdiek
+ * 6.80r
+ * Experimental boolean option `localanchorname' added.
+ * Warning text corrected for empty anchor.
+ * Some \@ifundefined replaced by \ltx@IfUndefined
+ (avoids definition of macros like \thechapter as \relax).
+
+2010-03-18 6.80q Heiko Oberdiek
+ * 6.80q
+ * hpdftex.def, option `verbose': end of links are
+ recorded in the .log file at shipout time.
+ This helps to find the link in case of the pdfTeX error
+ `\pdfendlink ended up in different nesting level ...'
+
+2010-03-16 6.80p Heiko Oberdiek
+ * 6.80p
+ * Bookmark output for \CJKnumber fixed.
+ * Bookmark implementation of \CJKnumber changed.
+ \CJK@one is suppressed before \CJK@ten, if the
+ number starts with this.
+
+2010-03-13 6.80o Heiko Oberdiek
+ * 6.80o
+ * Typo fixed in CJK bookmark code (Jinsong Zhao).
+
+2010-03-11 6.80n Heiko Oberdiek
+ * 6.80n: \undefined relaced by \@undefined.
+ * backref 1.35: \undefined replaced by \@undefined.
+
+2010-03-10 6.80m Heiko Oberdiek
+ * 6.80m
+ * If package `ucs' is loaded \PrerenderUnicode is called
+ for information entries.
+
+2010-03-09 6.80l Heiko Oberdiek
+ * 6.80l
+ * Support of CJKnumb.sty's \CJKnumber and \CJKdigits in bookmarks,
+ if encoding is Unicode.
+
+2010-03-04 6.80k Heiko Oberdiek
+ * 6.80k
+ * \pdfstringdef: generic font commands (\selectfont,
+ \usefont, \fontencoding, ...) disabled.
+
+2010-03-03 6.80j Heiko Oberdiek
+ * 6.80j
+ * pdfmark.def: better support of hyphenation if breaklinks=false.
+
+2010-03-01 6.80i Heiko Oberdiek
+ * 6.80i
+ * hpdftex.def: form fields array collects field references
+ via .aux file to avoid recording field references of field
+ inside canceled boxes.
+ * README updated.
+
+2010-02-25 6.80h Heiko Oberdiek
+ * 6.80h
+ * Compatibility for KOMA-Script's \footref.
+
+2010-02-24 6.80g Heiko Oberdiek
+ * 6.80g
+ * Option `verbose': anchors and internal links are recorded in
+ the .log file for all drivers.
+
+2010-02-21 6.80f Heiko Oberdiek
+ * 6.80f
+ * Unicode support is loaded only if unicode is set to true.
+ Previously the option regardless of setting triggered
+ the loading of unicode support (or an error, if after
+ \begin{document}).
+
+2010-02-08 6.80e Heiko Oberdiek
+ * 6.80e
+ * \ref and \pageref robust again before \begin{document}.
+ (Bug report by Gerrit Schmitz.)
+ * Project/repository moved to Puszcza
+ (https://puszcza.gnu.org.ua/projects/hyperref).
+
+2010-01-25 6.80d Heiko Oberdiek
+ * 6.80d
+ * License update to LPPL 1.3+
+ * nameref 2.36, backref 1.34: LPPL 1.3+
+
+2010-01-16 6.80c Heiko Oberdiek
+ * 6.80c
+ * Problem with package `titlesec' fixed (reported by GL in comp.text.tex).
+ * backref 1.33:
+ * \backrefentrycount added.
+ * Internal calculations for \backrefalt and \backrefentrycount
+ are disabled, if these features are not used.
+
+2010-01-11 6.80b Heiko Oberdiek
+ * 6.80b
+ * Options `pdfinfo' and `pdftrapped' added.
+
+2010-01-09 Heiko Oberdiek
+ * backref 1.32:
+ * Brazilian Portuguese added (Rog\'erio Brito).
+ * Some language aliases added.
+
+2010-01-08 6.80a Heiko Oberdiek
+ * 6.80a
+ * Missing \expandafter added for fix in 6.79z.
+ `\.' now works again for other languages than Spanish
+ in bookmarks.
+
+2009-12-28 6.79z Heiko Oberdiek
+ * 6.79z
+ * \pdfstringdef/spanish.ldf: \. breaks \pdfstringdef,
+ therefore it is restored as dot accent (\es@save@dot).
+ \... is not supported. Use \texorpdfstring{\...}{\dots} instead.
+
+2009-12-23 6.79y Heiko Oberdiek
+ * 6.79y
+ * Global papersize options (a4paper, ...) ignored.
+
+2009-12-22 6.79x Heiko Oberdiek
+ * 6.79x
+ * Checking \@outlinefile before writing (workaround for
+ beamer bug in beamerbasecompatibility 1.63).
+
+2009-12-18 6.79w Heiko Oberdiek
+ * 6.79w
+ * Again anchor setting in unnumbered sections fixed.
+ \@currentHref gets overwritten by float objects right
+ after inline section commands like \paragraph, \subparagraph.
+ Reported by Lev Bishop.
+ Now the reference name (\@currentHref) is passed by value
+ (expanded) to the anchor setting code.
+ * nameref 2.35: Required date for package `gettitlestring' updated.
+
+2009-12-17 6.79v Heiko Oberdiek
+ * 6.79v
+ * Fix for `pdfencoding=auto', the code accidently got
+ deleted for the other drivers than XeTeX.
+ * `pdfencoding=auto' for XeTeX now adds a method to suppress the
+ warning "Failed to convert input string to UTF16...", see README.
+
+2009-12-16 6.79u Heiko Oberdiek
+ * 6.79u
+ * Babel patch of 6.77o rewritten that babel can be loaded
+ after hyperref.
+
+2009-12-15 6.79t Heiko Oberdiek
+ * 6.79t
+ * hxetex: Using encoding `ascii-print' for
+ `pdfencoding=auto'.
+
+2009-12-15 6.79s Heiko Oberdiek
+ * 6.79s
+ * Removed paper options of 6.79o now generate a warning
+ instead of an error.
+
+2009-12-15 6.79r Heiko Oberdiek
+ * 6.79r
+ * hxetex: default is now `pdfencoding=auto' because of
+ bug of AR7/Linux regarding page labels.
+
+2009-12-15 6.79p Heiko Oberdiek
+ * 6.79p
+ * hxetex: PDFDocEncoding is not supported, only
+ option `unicode', `pdfencoding=unicode' or `pdfencoding=auto'.
+ In the latter case, PDFDocEncoding is only used, if the
+ string is an ascii string (7-bit characters).
+ No idea, how to get rid of the warning
+ "Failed to convert input string to UTF16...".
+ The strings are already in UTF16, thus an additional conversion
+ have to fail.
+ * Missing package dependency added: intcalc (Vladimir Volovich).
+
+2009-12-14 6.79o Heiko Oberdiek
+ * 6.79o
+ * Paper options `a4paper', `a5paper' are ignored.
+ Setting the page size is done by using \paperwidth
+ and \paperheight. Or in case of memoir \stockwidth and
+ \stockheight are used. Evaluation time for setting the page size
+ is at begin of document or first page (driver dependant).
+ * XeTeX has its own driver file `hxetex.def' (based on hdvipdfm.def).
+ * hxetex.def uses pdfTeX's \pdfpagewidth and \pagepageheight
+ for setting the media size.
+
+2009-12-10 6.79n Heiko Oberdiek
+ * 6.79n
+ * Use of package `rerunfilecheck'.
+ * backref 1.31: Use of package `rerunfilecheck'.
+
+2009-12-09 6.79m Heiko Oberdiek
+ * 6.79m
+ * \clear@document (REVTeX} is not used in favor of \AtVeryEndDocument
+ (Arthur Ogawa).
+ * backref 1.30: Use of package `atveryend'.
+
+2009-12-08 6.79l Heiko Oberdiek
+ * 6.79l
+ * \Hy@SectionAnchor disabled in bookmarks.
+ * \clearpage is not added in \AtEndDocument any more by using
+ package `atveryend' instead to prevent problems with column
+ balancing in revtex (reported by Arthur Ogawa).
+ * \@caption uses \NR@gettitle from package `nameref' if available.
+ * nameref 2.34:
+ * Redefinition of \@caption is restricted to
+ the case if hyperref 6.79l or later is not loaded.
+ * Use of package `gettitlestring' for postprocessing
+ the title strings.
+
+2009-11-27 Heiko Oberdiek
+ * nameref 2.33: \phantomsection and \addcontentsline are disabled during
+ title string expansion.
+
+2009-11-27 6.79k Heiko Oberdiek
+ * 6.79k
+ * Fix of anchor setting: The anchor setting is filtered out
+ for title extracting classes and packages (memoir, titleref,
+ zref-titleref, nameref 2.32.
+ * nameref 2.32: the title string is expanded to filter out
+ unwanted stuff (same way as memoir, titleref, zref-titleref).
+
+2009-11-27 6.79j Heiko Oberdiek
+ * 6.79j
+ * Fix of anchor setting for section titles in 6.79h is made
+ a little more robust.
+
+2009-11-26 6.79i Heiko Oberdiek
+ * 6.79i
+ * Support for empty category parameter fixed for \hyperref and \hyperdef.
+ * \hyperdef fixed (.aux file entry).
+
+2009-11-25 6.79h Heiko Oberdiek
+ * 6.79h
+ * Fix of anchor setting for section titles.
+ * chapters, parts (Markus Kohm),
+ * unnumbered sections.
+ Now the workarounds with \phantomsection like
+ \cleardoublepage\phantomsection\printindex
+ should not be necessary any longer.
+ * nohyperref: star from \ref and \pageref ignored (Henrik Tidefelt).
+
+2009-11-20 6.79g Heiko Oberdiek
+ * 6.79g
+ * \pdfstringdef: Support for unicode characters added
+ for XeTeX and LuaTeX.
+
+2009-11-15 6.79f Heiko Oberdiek
+ * 6.79f
+ * Forms: Bug in \HyField@PDFChoices fixed, wrong order of
+ export and display value (Donald P. Story).
+
+2009-11-14 6.79e Heiko Oberdiek
+ * 6.79e
+ * Rerun warning added for bookmarks, based on MD5 sum and file size.
+ (This feature requires pdfTeX or LuaTeX.)
+ * backref 1.29:
+ * Rerun warning added, based on MD5 sum and file size.
+ (This feature requires pdfTeX or LuaTeX.)
+
+2009-10-31 6.79d Heiko Oberdiek
+ * 6.79d
+ * Full support of makeindex's encap feature (e.g. \index{alpha|textbf}).
+ \hyperpage and the formatting command are cascaded via
+ \hyperindexformat. Internally \index{alpha|textbf} is transferred
+ to \index{alpha|hyperindexformat{\textbf}}. \hyperindexformat calls
+ the formatting command in its first argument with the page range
+ as argument that is put into \hyperpage. The formatting command
+ may call \hyperpage itself, it will be disabled automatically
+ to prevent nested \hyperpage commands.
+
+2009-10-28 6.79c Heiko Oberdiek
+ * 6.79c
+ * Fix for a wrong byte "0xA0", accidently introduced in 6.79b.
+ * Adding bookmark sequence numbers in comments to the bookmark
+ auxiliary file (Vladimier Volovich).
+ * Manual fix: pdfpicktrackbypdfsize -> pdfpicktraybypdfsize
+ (Gregor Zimmermann).
+
+2009-10-19 6.79b Heiko Oberdiek
+ * 6.79b
+ * Respect \stockwidth and \stockheight for drivers `dvips'
+ and `dvipdfm'.
+
+2009-10-09 6.79a Heiko Oberdiek
+ * 6.79a
+ * Field option `radiosymbol' added.
+ * Both `checkboxsymbol' and `radiosymbol' support \ding
+ (see package `pifont' from bundle `psnfss2e').
+
+2009-10-02 6.78w Heiko Oberdiek
+ * 6.78w
+ * Recognize `amsmidx' as multiple index package (David M. Jones).
+ * Manual fixes (Herbert Voss).
+
+2009-09-22 6.78v Heiko Oberdiek
+ * 6.78v
+ * PDF objects needed for formulars are only allocated if
+ environment `Form' is used (hpdftex, hdvipdfm).
+
+2009-09-10 6.78u Heiko Oberdiek
+ * 6.78u
+ * Support for open outlines is turned on for XeTeX >= 0.9995.
+ Thus option `dvipdfmx-outline-open' is not necessary in this case.
+ I don't know about older versions of XeTeX.
+ * Additions to the manual (aliascnt, bookmarks).
+
+2009-08-04 6.78t Heiko Oberdiek
+ * 6.78t
+ * Fix: Option `bookmarksdepth' with name value now also works
+ as package option.
+
+2009-05-23 6.78s Heiko Oberdiek
+ * 6.78s
+ * Fix: "\let\textlatin\@firstofone from \addcontentsline.
+
+2009-05-01 6.78r Heiko Oberdiek
+ * 6.78r
+ * \pdfstringdef:
+ * Typo in definition of \new@ifnextchar fixed (Ulrike Fischer),
+ * and \kernel@ifnextchar disabled (Dan Luecking).
+ * dvipdfm(x)/xetex: This driver family does not support nested
+ annotations. Therefore annotations inside annotations are
+ disabled automatically.
+
+2009-04-04 6.78q Heiko Oberdiek
+ * 6.78q
+ * Better error message for \MakeUppercase and \MakeLowercase
+ in \pdfstringdef (bookmarks).
+ * Expandable simulation of \ignorespaces in bookmarks.
+ * The values of boolean options are now expanded (\Hy@boolkey).
+ * Warnings added for links with empty destination name.
+
+2009-02-22 6.78p Heiko Oberdiek
+ * 6.78p
+ * hpdftex.def: Problem fixed, if a link is broken across the
+ first and the next page.
+
+2009-02-02 6.78o Heiko Oberdiek
+ * 6.78o
+ * Workaround for package `linguex' added (it redefines the
+ accent macros \b, \c, \d).
+
+2008-12-26 6.78n Heiko Oberdiek
+ * 6.78n
+ * Support of active `&' and \& in \href (\hyper@normalise).
+
+2008-11-18 6.78m Heiko Oberdiek
+ * 6.78m
+ * The fix for fancyvrb in hyperef 1998-03-21 is not compatible with
+ and necessary for fancyvrb 1998-05-20 or later. Therefore the
+ fix is disabled for these versions.
+ * Option `ocgcolorlinks': Fix for driver `dvipdfm'.
+ * Improved anchor setting for package `amsthm' (Daniel M\"ullner).
+
+2008-09-29 6.78l Heiko Oberdiek
+ * 6.78l
+ * Bookmarks: `--' and `---' are automatically replaced by \textendash
+ and \textemdash in bookmark strings. However older AR versions
+ (until AR5/Linux) might miss these glyphs.
+ * Encoding name in warnings `Token not allowed' fixed.
+
+2008-09-27 6.78k Heiko Oberdiek
+ * 6.78k
+ * Fix for `slovak' and other babel languages that make `^' and other
+ characters active. This disturbs loading of package `color' and
+ perhaps `nameref' that are loaded later at begin document.
+
+2008-09-13 6.78j Heiko Oberdiek
+ * 6.78j
+ * Forms/hpdftex.def: Missing /Fields entry is set in the same way
+ as it is done by the other drivers.
+
+2008-09-12 6.78i Heiko Oberdiek
+ * 6.78i
+ * \pdfstringdef: accent support of encoding PU reimplemented
+ in a cleaner way.
+
+2008-09-11 6.78h Heiko Oberdiek
+ * 6.78h
+ * \pdfstringdef:
+ * Warning in case of unsupported composite characters fixed.
+ * Unknown composite characters use Unicode combining accents
+ if possible.
+ * Supported range in PU encoding improved, especially
+ extended latin sets, cyrillic, and standard LICRs.
+ * Various fixes in encodig files (pd1enc.def, puenc.def).
+
+2008-08-20 6.78g Heiko Oberdiek
+ * 6.78g
+ * Patch for \pdfstringdef of Manuel P\'egouri\'e-Gonnard
+ for package `xargs'.
+ * Option pdfversion accepts versions until 1.9.
+
+2008-08-14 6.78f Heiko Oberdiek
+ * 6.78f
+ * \nohyperref added to support custom entries in style files
+ of MakeIndex (delim_r, suffix_*), see README.
+
+2008-07-23 6.78e Heiko Oberdiek
+ * 6.78e
+ * Driver hdvipdfm.def: Missing code for option `setpagesize' added.
+ * README: Entry for package geometry/dvipdfm added.
+
+2008-07-17 6.78d Heiko Oberdiek
+ * 6.78d
+ * Bug fix in disabled onclick field for PDF/A (Radhakrishnan CV).
+
+2008-07-16 6.78c Heiko Oberdiek
+ * 6.78c
+ * \HyperDestNameFilter added.
+ (Feature request by Matthias Franz.)
+ * htex4ht.cfg: \MP corrected.
+
+2008-07-15 6.78b Heiko Oberdiek
+ * 6.78b
+ * Option `colorlinks': border properties are not cleared immediately,
+ but at evaluation time in \AtBeginDocument. This allows a setting
+ of colorlinks in hyperref.cfg and using colorlinks=false in the
+ document without getting lost of the link borders.
+ (Problem reported by Axel Berger.)
+
+2008-07-12 6.78a Heiko Oberdiek
+ * 6.78a
+ * Driver options: Algorithm for finding the driver is changed:
+ * Code for detecting the driver is more robust
+ (not confused by \newcount\pdfoutput, solves a problem with beamer).
+ * Driver hpdftex.def is used/forced if and only if pdfTeX is running
+ in PDF mode. Thus hyperref now behaves like the other packages that
+ do not change PDF mode.
+ * Also some other driver options are checked.
+ * Driver hpdftex.def:
+ * Setting of \pdfcompresslevel is removed.
+ * \PassOptionsToPackage{pdftex}{color} is removed.
+ * Option dvipdf with driver hdvipdf.def is removed.
+ (Nobody missed it since 2006-08-01 v6.75a.)
+
+2008-07-05 6.77v Heiko Oberdiek
+ * 6.77v
+ * Fix: Use normal meaning of babel's shorthand characters in
+ markup text of links. (Bug found by Ign\'acio Fernandez Galv\'an.)
+
+2008-04-24 6.77u Heiko Oberdiek
+ * 6.77u
+ * Fix in action code for PDF/A, introduced in 6.77p (e.g. \PushButton).
+
+2008-04-22 6.77t Heiko Oberdiek
+ * 6.77t
+ * Fix: \nameref in bookmarks.
+ * Fix for dvipsone: unknown `?pdfmark'.
+
+2008-04-20 6.77s Heiko Oberdiek
+ * 6.77s
+ * Additions to PU encoding: \textzerosuperior, ..., \textninesuperior,
+ \textzeroinferior, ..., \textnineinferior
+
+2008-04-19 6.77r Heiko Oberdiek
+ * 6.77r
+ * Option pdfa: pdf version is set to 1.4.
+ * Experimental option `ocgcolorlinks': Same as `colorlinks',
+ but prints without color. Optional Color Groups of PDF 1.5
+ are used. Main disadvantage: the links cannot be wrapped
+ across lines, because they are put in an \hbox. Currently
+ only drivers `pdftex' and `dvipdfm' are supported.
+
+2008-04-17 6.77q Heiko Oberdiek
+ * 6.77q
+ * Fix for small problem with XeLaTeX (\string^^f4).
+
+2008-04-16 6.77p Heiko Oberdiek
+ * 6.77p
+ * Patch for missing anchor settings with amsmath (multline) by
+ Ross Moore.
+ * New option `pdfa' to improve compatibility with PDF/A,
+ see README.
+
+2008-04-15 6.77o Heiko Oberdiek
+ * 6.77o
+ * Babel 2008/03/16 v3.8j disables shorthands for bookmarks.
+ This reduces the probability of warnings, but at the cost
+ of ugly bookmarks. Therefore hyperref tries to undo this.
+ See LaTeX bug-report `babel/4017'.
+ * Fix for bulgarian.ldf's \@Alph and \@alph for \hyper@makecurrent.
+ * Patch for missing anchor settings with amsmath (multline) by
+ Ross Moore.
+
+2008-04-13 6.77n Heiko Oberdiek
+ * 6.77n
+ * New option `linktoc' added, see README.
+
+2008-04-12 6.77m Heiko Oberdiek
+ * 6.77m
+ * Surrogate support for bookmarks (utf8.def, including utf8
+ sequences starting with ^^f4).
+ * Fix: unicode disabled for pdfmoddate and pdfcreationdate.
+ * Fix for footnote support of fancyvrb (Manuel P\'egouri\'e-Gonnard).
+ * Fix for anchor name settings inside numbered lists.
+ * Russian update with comments (Olga Lapko).
+
+2008-04-05 6.77l Heiko Oberdiek
+ * 6.77l
+ * \CheckSum fixed.
+ * hyperref-tds.zip renamed to hyperref.tds.zip.
+
+2008-04-02 6.77k Heiko Oberdiek
+ * 6.77k
+ * Macro \SliTeX supported by \pdfstringdef.
+
+2008-02-06 6.77j Heiko Oberdiek
+ * 6.77j
+ * Bug (typo) in \PushButton fixed (inserted in 6.77a).
+ * Bug (typo) in hdviwindo.def fixed (Fran\c cois Charette).
+
+2008-01-09 6.77i Heiko Oberdiek
+ * 6.77i
+ * Russian names for \autoref added (Olga Lapko).
+
+2007-12-16 6.77h Heiko Oberdiek
+ * 6.77h
+ * \Hy@pstringdef(baseurl, ...) with \edef~{\string~}
+
+2007-11-20 6.77g Heiko Oberdiek
+ * 6.77g
+ * Forms: /MK suppressed if empty.
+
+2007-11-17 6.77f Heiko Oberdiek
+ * 6.77f
+ * Bug fix for dviwindo: misspelled \Hy@DisableOption (Philip Ratcliffe).
+
+2007-11-12 6.77e Heiko Oberdiek
+ * 6.77e
+ * LuaTeX: Package `pdftexcmds' for \pdfescapestring.
+ * Default producer setting recognices XeTeX and LuaTeX.
+
+2007-11-08 6.77d Heiko Oberdiek
+ * 6.77d
+ * If `pdfstartpage' or `pdfstartview' is empty,
+ the catalog key /OpenAction is omitted.
+
+2007-11-05 6.77c Heiko Oberdiek
+ * 6.77c
+ * Fix for memoir: \stockwith -> \stockwidth.
+
+2007-10-30 6.77b Heiko Oberdiek
+ * 6.77b
+ * Option `pdfnewwindow': setting to `true' or `false' sets the
+ entry /NewWindow in the action object. The entry is absent,
+ if the `pdfnewwindow' is not used or its value is empty
+ (then the user preference is used).
+
+2007-10-29 6.77a Heiko Oberdiek
+ * 6.77a
+ * New PDF form field options for flag setting, see README.
+ * The ugly hooking in \@begindvi is removed in favor of
+ using package `atbegshi'.
+ * \@hyperfixhead don't exist anymore.
+ * Patch of fancybox is obsolete.
+ * \AtBeginDvi replaced by \AtBeginShipoutFirst
+ * Obscure \HYPERPAGEANCHOR is removed.
+ * If \paperwidth and \paperheight contain invalid values, then
+ \special{papersize=...} is suppressed and a warning is given.
+ * revtex4/driver pdftex: pdfpagelabels uses \clear@document as hook
+ instead of LaTeX's \AtEndDocument. This avoids \clearpage that
+ confuses revtex4's balancing of the last page.
+ * revtex4: Fix for setting label `LastPage'.
+ * Fix for package float's \restylefloat* by Axel Sommerfeldt.
+ * Bug fix (debian 351260) in 6.75a breaks `hypertexnames=false'.
+ Fixed (Axel Sommerfeldt).
+ * Bug fix: The scope of \HyperRaiseLinkLength is limited to
+ \HyperRaiseLinkHook.
+ * Bug fix: broken \autoref if option `draft' is given.
+ * Bug fix: longtable + hypertexnames=false (bug found by Axel Sommerfeldt).
+ * \pdfstringdef: \@mkboth disabled.
+ * Definition of \pagenumbering removed.
+ * Fix of problem with babel's shorthands in bibliography.
+ * Hungarian names for \autoref added (Miglinszki P\'eter).
+ * Fix for form field's multiline (old bug, introduced in v6.73h):
+ The default height for multiline entries was calculated before
+ the option was evaluated. The default height of multiline entries
+ can be configured by \DefaultHeightofTextMultiline.
+ Default is 4\baselineskip.
+ * \nolinkurl supports escaped characters the same way as \url
+ (Joseph Wright).
+ * backref 1.28: Avoids duplicate \newwrite calls.
+
+2007-06-14 6.76i Heiko Oberdiek
+ * 6.76i
+ * `pdfencoding=auto' a little more efficient.
+
+2007-06-12 6.76h Heiko Oberdiek
+ * 6.76h
+ * Fix for default of \theHequation (class `foils'
+ do not know counter `section').
+ * New option `pdfencoding' added (uses package `stringenc').
+
+2007-05-29 6.76g Heiko Oberdiek
+ * 6.76g
+ * The color of launch annotations are set by options
+ `runcolor' and `runbordercolor'. (Previously `filecolor'
+ was used.)
+ * Support for package `showkeys' added for \autoref.
+ * Fix for line breaks right after \url or \href.
+ * nameref 2.31: Support for caption of package `listings'.
+ * nameref 2.31: Some fixes in \NR@@vpageref.
+
+2007-05-09 6.76f Heiko Oberdiek
+ * 6.76f
+ * Use of package `etexcmds' for \unexpanded.
+
+2007-05-03 6.76e Heiko Oberdiek
+ * 6.76e
+ * hyperref: ConTeXt's base/syst-gen.tex redefines e-TeX's \unexpanded.
+ * Some support for amsmath's environment `subequations'.
+ * nameref 2.30: \label is supported after longtable's \caption.
+
+2007-04-25 6.76d Heiko Oberdiek
+ * 6.76d
+ * Option dvipdfmx-outline-open/\SpecialDvipdfmxOutlineOpen
+ adjusted to new CVS version of dvipdfmx.
+
+2007-04-18 6.76c Heiko Oberdiek
+ * 6.76c
+ * Fix for star forms of \ref commands.
+ * Fixes for \autopageref.
+
+2007-04-11 6.76b Heiko Oberdiek
+ * 6.76b
+ * Line end cleanup, removal of spaces.
+ * Minor fixes in form part.
+
+2007-04-09 6.76a Heiko Oberdiek
+ * 6.76a
+ * Color options implemented by package `hycolor'.
+ * pdfborder: Patch for ghostscript added to remove resolution
+ dependency. Unclear is the behaviour of Acrobat Distiller,
+ dvipsone, and textures.
+ The values for pdfborder should be specified in the way
+ they should appear in the PDF file. Default: pdborder={0 0 1}
+ * \autopageref added.
+ * New field option `rotation' added.
+ * Field options bordercolor and backgroundcolor:
+ * An empty value is permitted.
+ * If the value does not start with a number ('0', '1', '.'),
+ then it is processed as xcolor specification.
+ * Fix for drivers dvipdfm/pdfmark: launch annotation now uses
+ `runbordercolor' instead of `filebordercolor'.
+ * PD1 encoding: Replacements for older AR versions removed:
+ \l, \L, \v z, \v Z, \i, \textfractionmark, \textfi, \textfl
+ * \pdfstringdef: a little faster.
+ * \href followed by `%' and line break works now.
+ * Option dvipdfmx-outline-open or \chardef\SpecialDvipdfmxOutlineOpen=1
+ enables support for open outline entries
+ (dvipdfmx, since cvs version 2007-03-29).
+ Caution: this feature is experimental and can change.
+ * Italian translation of \autoref names added (Cristian Battaglia).
+ * Support for \greeknumeral and \Greeknumeral in Bookmarks
+ (with option unicode).
+ * Replacement for \greeknumeral and \Greeknumeral in anchor names.
+ * pdfmark: Destinations without rectangle (D.P.Story)
+ * Fixes for fancybox.
+ * Fixes for chapterbib (Donald Arsenau).
+ * Some support for Spanish shorthands in bookmarks added.
+ * varioref (hyperref + nameref):
+ * Support for \Ref and \Vref.
+ * \vref puts the whole reference text in a link.
+ * Fix for babel shorthand characters.
+ * Small fixes for undefined references.
+ * tex4ht: \hyperlinkfileprefix{} added (Eitan Gurari).
+ * Some support for hypcap added (idea of Axel Sommerfeldt).
+ * Unused form field option `fillcolor' removed.
+ * Unused option `pagecolor' removed.
+ * Practically unused option `pagebordercolor' removed.
+ * \PDFPage removed, because it's undocumented, is not
+ free from errors and is not supported by all drivers.
+ * nameref 2.29: beamer support added.
+
+2007-02-27 6.75t Heiko Oberdiek
+ * 6.75t
+ * Suppressing links with empty link area.
+ (Avoids invalid PDF files in case of pdfmark drivers,
+ bug found by Thorsten Schwander.)
+
+2007-02-16 6.75s Heiko Oberdiek
+ * 6.75s
+ * Fix for \autoref in bookmarks that was broken since the
+ star form support of 6.75g. (Bug found by Matthias Franz.)
+
+2007-02-07 6.75r Heiko Oberdiek
+ * 6.75r
+ * dvipdfm, option pdfview: Parameters of XYZ fixed (Jin-Hwan Cho).
+ * dvipdfm, option pdfview: The implementation was very poor.
+ Now XYZ, Fit{,B,H,BH,V,BV} are supported. FitR and parameters
+ remain unsupported.
+
+2007-01-25 6.75q Heiko Oberdiek
+ * 6.75q
+ * If colorlinks is set to true, pdfborder is set to suppress
+ the border. Now also pdfborderstyle is cleared.
+
+2007-01-23 6.75p Heiko Oberdiek
+ * 6.75p
+ * Bug fix: disable pdfpagelabels if \thepage is undefined.
+ * Forms: color specifications can also be given by color names,
+ if package xcolor is loaded.
+
+2007-01-18 6.75o Heiko Oberdiek
+ * 6.75o
+ * XeTeX: new option added and default driver detection extended.
+
+2007-01-17 6.75n Heiko Oberdiek
+ * 6.75n
+ * ChoiceMenu fix: parameter value is now used if given.
+
+2007-01-14 6.75m Heiko Oberdiek
+ * 6.75m
+ * \autoref uses the name for appendix if it references sections
+ that follow \appendix in classes without \chapter.
+ * Support for beyond-BMP characters in unicode bookmarks
+ (Dohyun Kim <nomosnomos@gmail.com>)
+
+2007-01-06 6.75l Heiko Oberdiek
+ * 6.75l
+ * Updated default value of option pdfproducer for pdfTeX 1.40.0.
+
+2006-12-30 6.75k Heiko Oberdiek
+ * 6.75k
+ * puarenc.def: Additions to PU encoding for Arabi by Youssef Jabri.
+ * New option arabic that loads puarenc.def.
+
+2006-12-27 Heiko Oberdiek
+ * nameref 2.28: \protected@edef isn't robust enough for removing
+ \label in name strings. Now \label is disabled during referencing.
+
+2006-12-21 6.75j Heiko Oberdiek
+ * 6.75j
+ * Fix for bug in \Hy@safe@actives..., introduced in 6.75g.
+ * nameref 2.27: now \label uses \protected@edef for the nameref
+ to remove \label commands while writing into the .aux file.
+
+2006-12-21 6.75i Heiko Oberdiek
+ * 6.75i
+ * Fix: \unichar in bookmarks with Unicode encoding.
+
+2006-11-30 6.75h Heiko Oberdiek
+ * New options for pdf viewer preferences:
+ pdfdirection, pdfviewarea, pdfviewclip,
+ pdfprintarea, pdfprintclip, pdfduplex, pdfpicktraybypdfsize,
+ pdfprintpagerange, pdfnumcopies.
+ New option for pdf catalog:
+ pdflang (except VTeX)
+ * Internal change: \pdf@pagelayout renamed to \@pdfpagelayout.
+ * Internal change: \@pdfpagemode without slash.
+
+2006-11-15 6.75g Heiko Oberdiek
+ * New option pdfprintscaling.
+ * Star version of \autoref* analogous to \ref*.
+ * Support of memoir: package memhfixc is automatically loaded.
+
+2006-10-06 Heiko Oberdiek
+ * backref 1.27: fix for \backrefspanish.
+
+2006-09-12 6.75f Heiko Oberdiek
+ * 6.75f
+ * Documentation fix: options pdfdisplaydoctitle and
+ pdfnonfullscreenpagemode
+
+2006-09-06 6.75e Heiko Oberdiek
+ * 6.75e
+ * dvipdfm: \leavevmode for links added.
+ * dvipdfm: option dvipdfmx added (alias for dvipdfm).
+ * pdfmark.def: Bug fix, clash with \Hy@temp.
+
+2006-08-29 6.75d Heiko Oberdiek
+ * 6.75d
+ * Fix: If option unicode option is given, page anchors
+ are wrong. Fixed by disabling unicode for page anchor names.
+ * Listing(s) support: \providecommand instead of \def.
+
+2006-08-16 6.75c Heiko Oberdiek
+ * 6.75c
+ * Supporting both options "vietnamese" and "vietnam".
+
+2006-08-15 6.75b Heiko Oberdiek
+ * 6.75b
+ * VnTeX support by Han The Thanh. New option: vietam.
+ * Fix for bug with varioref, introduced in 6.75a.
+ * Entry "algorithm" updated in README.
+ * nameref 2.26: required date added for package refcount.
+
+2006-08-01 6.75a Heiko Oberdiek
+ * 6.75a
+ * hyperref-tds.zip provided with files sorted in a TDS tree.
+ * New option defaults:
+ * plainpages=false
+ * pdfpagelabels=true
+ * Package kvoptions defines \ProcessOptionsWithKV under
+ the name \ProcessKeyvalOptions. It replaces
+ hyperref's macro \ProcessOptionsWithKV.
+ * Some code for extracting reference information is put
+ into package refcount that is now loaded by nameref
+ and hyperref.
+ * Option bookmarksdepth: The depth of the outline entries
+ can now set separatly from counter "tocdepth",
+ see README.
+ * New option: pdfescapeform, see README.
+ * \hyper@normalise for action attribute in forms.
+ * \ProcessOptionsWithKV: \let\CurrentOption\@empty added.
+ * "bordercolor" options now support package xcolor (>=1.11).
+ * "color" options also support the optional argument (color
+ model) of \color.
+ * New option "pdfborderstyle" that allows the setting of the
+ border style dictionary. (Be aware that the support of this
+ feature by PDF viewers is limited.)
+ Example: underlined links can be obtained by
+ pdfborderstyle={/S/U}
+ * Direct low level bookmark support for \usepackage[utf8]{inputenc}
+ and "uftf8x" of package "ucs". Byte sequences until three
+ bytes are supported and e-TeX is required.
+ (No support for surrogates).
+ * Fix in \addcontentsline, if option verbose is set.
+ * Better bookmark support for FrenchPro package
+ by use of \if@mid@expandable (Bernard Gaulle <gaulle@idris.fr>).
+ * Options "pdfcreationdate" and "pdfmoddate" added.
+ * README: Section "Limitations" added with "Broken Link Support".
+ * Default driver setting: added missed code of corresponding
+ options (Thanks for Arnaud Giersch <arnauld.giersch at free.fr>).
+ * \penalty10000 added in \Hy@raisedlink to cancel the
+ effect of \smash in preventing hyphenation, e.g. a footnote
+ after a word.
+ * \@classoptionslist can be \relax (see psnfss/3773).
+ * \new@ifnextchar also disabled for bookmarks and
+ constructs such as \let\if...\if{true,false} are catched,
+ see latex/3662.
+ * Bug fix: The case "\part without number by counter secnumdepth"
+ was forgotten for the bookmarks (thanks to Rachel Elizabeth Dillon).
+ * Bug fix: \vpageref defines undefined references with
+ empty anchor name that breaks \autoref.
+ * Fix: Wrong message about setting of draft fixed,
+ if option final is used.
+ * Pdfmark driver: better removal of pdfmark stuff,
+ especially generated by forms, if the postscript
+ application does not define pdfmark, e.g. because the
+ output is not pdf (gs >= 8.0).
+ * New version numbering scheme of pdfTeX >= 1.30.
+ * Fix for \hyper@normalise, if & is used inside \href
+ in tabular environments.
+ * Fix: Setting pdfproducer in \usepackage's option part
+ did'nt have an effect, because it was overwritten by
+ the default setting.
+ * Fix: pageanchor=false disabled \@hyperfixhead and thus
+ many other features unrelated to pageanchor itself.
+ (Thanks to Hendri Adriaens for report and analysis.)
+ Now pageanchor can be changed during the document, too.
+ * Protection of strings that are written as PS/PDF strings.
+ * Hook \Hy@setouterhbox for package setouterhbox.
+ * Option plainpages: \thepage is run through \pdfstringdef.
+ Helps in the case of spanish roman numbers.
+ * Deprecate warning for option 'dvipdf'.
+ * \ding replaced by its code for dropping the dependency on
+ package pifont and a compatibility problem with package
+ pinyin (Werner Lemberg).
+ * \hyper@normalise: "\\" is escape for "\" (\href, ...).
+ * Bug fix (debian 351260) in float support by Braun Gabor.
+ * Fix: Write register for bookmarks is only allocated if needed.
+ * Empty Unicode strings without Unicode header bytes.
+ * Fix for pdfmark+unicode+pdfpagelabels.
+ * Bug fix for empty destination names of pdfmark based drivers.
+ * Documentation: option hyperfootnotes added.
+ * French texts (\HyLang@french) provided by Marc-Antoine Parent.
+ * README: compatibility entries for packages ellipsis, verse.
+ * \hyper@normalize: support of active dollar.
+ * puenc.def: some fixes, reported by Ralf Stubner.
+ * Makefile no longer provided.
+ * nameref 2.25, backref 1.26: Documenation fix: \HyperrefOverview
+ is undefined if bmhydoc.sty is not loaded.
+ * nameref 2.24: Patch for ifthen moved from hyperref to nameref.
+ * nameref 2.24: Definitions of \filedate and \fileversion removed.
+ * nameref 2.23: Support for captions added.
+ * nameref 2.22:
+ Fix: \@safe@activestrue limited to label name.
+ * backref 1.25: New feature \ifbackrefparscan/\backrefprint
+ * backref 1.25: Definitions of \filedate and \fileversion removed.
+ * backref 1.24: [#1] --> [{#1}]
+ * Documentation: README.pdf and ChangeLog.pdf added.
+
+2003-12-03 Heiko Oberdiek
+ * nameref 2.21
+ * \ref and \pageref are defined at any case, if hyperref
+ is not loaded.
+
+2003-11-30 6.74m Heiko Oberdiek
+ * 6.74m
+ * \textcolor disabled in bookmarks.
+
+2003-11-15 6.74l Heiko Oberdiek
+ * 6.74l
+ * Typo fixed by Werner Lemberg: s/CJK@punktcharx/CJK@punctcharx/
+
+2003-10-30 Heiko Oberdiek
+ * nameref 2.20: titlesec support added.
+
+2003-10-12 6.74k Heiko Oberdiek
+ * 6.74k
+ * Fix for more than one footnote in longtable's
+ columns of type "p".
+
+2003-10-06 6.74j Heiko Oberdiek
+ * 6.74j
+ * Bug fix: automatic link type detection failed for
+ url field in references (eg. imported labels by xr-hyper).
+
+2003-09-15 6.74i Heiko Oberdiek
+ * 6.74i
+ * Bug fix (\if-commands after \ifx of 6.74h's "fleqn" detection).
+
+2003-07-27 6.74h Heiko Oberdiek
+ * 6.74h
+ * The lost source for the manual is rewritten by Steve Peter
+ and updated by Karl Berry.
+ * Bug fix of 6.74f does not work for amsmath's option "fleqn",
+ the \label does not detect the equation number, therefore
+ the fix is disabled, if "fleqn" is detected.
+
+2003-07-22 6.74g Heiko Oberdiek
+ * 6.74g
+ * Bug fixed in pdfmark.def: definition of \strip@pt@and@otherjunk
+ moved before \endinput by implicit=false.
+
+2003-07-10 6.74f Heiko Oberdiek
+ * 6.74f
+ * Fix for wrong vertical spacing between amsmath's
+ equation environments (Dmitri Chubarov <chubarik@gorodok.net>).
+
+2003-06-01 6.74e Heiko Oberdiek
+ * 6.74e
+ * README: Hint for hypcap added.
+ * pdfmark.def: "cvn" added for named GoToR destination
+ (Reinhard Jahraus).
+
+2003-05-12 6.74d Heiko Oberdiek
+ * 6.74d
+ * An empty dictionary /ViewerPreferences is now suppressed.
+
+2003-05-12 6.74c Heiko Oberdiek
+ * 6.74c
+ * \@addtoreset: \edef replaced by \xdef.
+
+2003-04-28 6.74b Heiko Oberdiek
+ * 6.74b
+ * Patch for float.sty compatibility (Anselm Lingnau/Marco Kuhlmann).
+ * Tried better anchor setting for floats that are controlled
+ by float.sty. Several captions inside one float are not supported.
+
+2003-04-27 6.74a Heiko Oberdiek
+ * 6.74a
+ * \newcounter{foo}[bar]: using \theHbar, if available.
+
+2003-04-14 6.73z Heiko Oberdiek
+ * 6.73z
+ * New option "pdfdisplaydoctitle" (PDF 1.4).
+ * New option "pdfnonfullscreenpagemode".
+
+2003-03-31 6.73y Heiko Oberdiek
+ * 6.73y
+ * Also the KOMA-Script classes redefine \LT@array, therefore
+ longtable fix extended.
+
+2003-03-25 6.73x Heiko Oberdiek
+ * 6.73x
+ * Behaviour of warning "bookmark level for unknown ..." changed:
+ * The missing \toclevel@... command is globally defined
+ to avoid further warnings.
+ * If this entry is not used for the bookmarks, the
+ warning is changed into a \PackageInfo.
+ * Language support for Afrikaans added.
+
+2003-03-21 6.73w Heiko Oberdiek
+ * 6.73w
+ * Errors corrected in documentation part.
+
+2003-03-21 6.73v Heiko Oberdiek
+ * 6.73v
+ * \hyperpage now ignores spaces and empty arguments.
+
+2003-03-21 6.73u Heiko Oberdiek
+ * 6.73u
+ * Option "encap", other encap character for use with hyperindex
+ can be given.
+
+2003-03-20 6.73t Heiko Oberdiek
+ * 6.73t
+ * hyperref now uses the same method for language support as
+ backref 1.23.
+ * Change from \captions<lang> to \extras<lang>.
+ * backref 1.23
+ Babel support for language strings added
+ (suggestion of Danie Els).
+
+2003-03-20 6.73s Heiko Oberdiek
+ * 6.73s
+ * Default for \itemautorefname added.
+ * backref 1.22
+ Bug fixes and additions of Danie Els <dnjels@sun.ac.za>:
+ * Typo fixed in \backreflastsep.
+ * Package natbib support, if hyperref is not loaded.
+ * Language Afrikaans added.
+ * hyperref.ins:
+ hyperref.drv and hycheck.tex are put outside the scope
+ of \usedir.
+
+2003-03-19 6.73r Heiko Oberdiek
+ * 6.73r
+ * \hyper@link@: \@safe@activestrue used for internal name
+ * backref 1.21:
+ * Continued with inserting of \@safe@activestrue.
+ * \backrefxxxdupe added for comparision and detection
+ of dupes.
+ * \backrefalt added with more powerful interface with macros
+ \backrefsep, \backreftwosep, and \backreflastsep.
+ * Language options added.
+ * More documentation.
+
+2003-03-18 6.73q Heiko Oberdiek
+ * 6.73q
+ * Suppressing /URI entry if \@baseurl is empty (hpdftex, hdvipsone).
+ * /URI moved to Cataloge (hdvipsone).
+ * Some locations of "file:" replaced by \Hy@linkfileprefix.
+
+2003-03-18 6.73p Heiko Oberdiek
+ * 6.73p
+ * Patch for longtable added (problem reported by Thomas Beuthe).
+
+2003-02-11 6.73o Heiko Oberdiek
+ * 6.73o
+ * Support for babel's shorthands in \autoref fixed.
+ * Support for \autoref in bookmarks added.
+ * Option final added similar to graphics.sty, article.cls, ...
+ * \hyperref[#1] does now use babel's \@safe@activestrue.
+
+2003-01-22 6.73n Heiko Oberdiek
+ * 6.73n
+ * Unsafe key value pair: Action=<<...#2...#3...>>
+ replaced by: Action={<<...#2...#3...>>}
+ because it breaks, if #2 or #3 contain a comma.
+
+2003-01-22 6.73m Heiko Oberdiek
+ * 6.73m
+ * Support for \@makecaption of class IEEEtran with
+ three arguments removed, because version V1.6b uses
+ the standard LaTeX interface with two arguments.
+
+2003-01-20 6.73l Heiko Oberdiek
+ * 6.73l
+ * Footnote fix: Initialization of \Hy@footnote@currentHref
+ added (Thorsten Schwander <schwander@horse.lanl.gov>).
+
+2003-01-17 6.73k Heiko Oberdiek
+ * 6.73k
+ * Footnote fix: \label commands inside \footnote do
+ not need nameref support (\@currentlabelname).
+
+2003-01-17 6.73j Heiko Oberdiek
+ * 6.73j
+ * Fix for footnote code: a \label after \footnote
+ commands refers to the previous section or similar
+ and not to the footnote.
+
+2002-12-15 6.73i Heiko Oberdiek
+ * 6.73i
+ * \texteuro fixed for PU encoding,
+ Maksym Polyakov <polyama@myrealbox.com>.
+
+2002-12-10 6.73h Heiko Oberdiek
+ * 6.73h
+ * Bugreport of Michael W Daniels <daniels@ling.ohio-state.edu>:
+ height in \TextField is not respected, if multiline is set.
+ * Fixed by moving the height setting code in the default
+ section.
+ * Also "4\DefaultHeightofText" replaced by a more robust
+ construct.
+
+2002-12-05 6.73g Heiko Oberdiek
+ * 6.73g
+ * \edef instead of \def for comparison with value of option
+ bookmarkstype (in \@@writetorep), the following should
+ work: bookmarkstype=lof
+
+2002-12-03 6.73f Heiko Oberdiek
+ * 6.73f
+ * Option "setpagesize" added also for VTeX's \mediawidth/height.
+ * VTeX: \mediawidth/height is only set with positive dimen values.
+
+2002-11-29 6.73e Heiko Oberdiek
+ * 6.73e
+ * Option "setpagesize" added.
+
+2002-11-14 6.73d Heiko Oberdiek
+ * 6.73d
+ * Support for \@addtoreset added, similar to
+ \numberwithin (idea of Markus Kohm in
+ de.comp.text.tex).
+
+2002-11-07 6.73c Heiko Oberdiek
+ * 6.73c
+ * Added "hyperpage" also after "closing range"
+ (\index{...|)hyperpage}), because it is allowed
+ for makeindex and necessary for XIndy.
+
+2002-11-01 6.73b Heiko Oberdiek
+ * 6.73b
+ * \Hy@raisedlink for caption without option nesting.
+ * Support for \@makecaption of class IEEEtran that
+ uses three arguments.
+
+2002-10-24 6.73a Heiko Oberdiek
+ * 6.73a
+ * vtexpdfmark: pdfborder={0 0 1} (Walter Schmidt).
+
+2002-10-22 6.72z Heiko Oberdiek
+ * 6.72z
+ * A small remainder of option 4 removed.
+ * options.tex: option pdfpagelabels added,
+ option 4 removed.
+
+2002-09-12 6.72y Heiko Oberdiek
+ * 6.72y
+ * Addition to \hyper@normalise: \_, \textunderscore,
+ \textasciitilde.
+
+2002-09-04 6.72x Heiko Oberdiek
+ * 6.72x
+ * \ReadBookmarks is disabled if bookmarks=false is given.
+ * \Hy@raisedlink introduced into \hyper@natanchorstart
+ (Thanks to Macro Kuhlmann <mk@mcqm.net>).
+
+2002-08-24 6.72w Heiko Oberdiek
+ * 6.72w
+ * "\let\pdfoutput\@undefined" removed.
+ * Bug fix: option bookmarksnumbered is now respected,
+ if package slidesec is used.
+
+2002-08-04 6.72v Heiko Oberdiek
+ * 6.72v
+ * Koma classes: optional argument for \maketitle.
+
+2002-08-03 6.72u Heiko Oberdiek
+ * 6.72u
+ * \appendix: \Hy@org@appendix moved to the end
+ and renamed to \HyOrg@appendix.
+
+2002-07-25 6.72t Heiko Oberdiek
+ * 6.72t
+ * Support for footnotes in p-columns of longtables.
+
+2002-06-06 6.72s Heiko Oberdiek
+ * 6.72s
+ * \Hy@defaultdriver used, so that "hypertex" can
+ be redefined in hyperref.cfg (eg. "dvips").
+
+2002-06-05 Heiko Oberdiek
+ * backref 1.20
+ * Babel's \@safe@activestrue inserted to bibitem commands.
+ But problems with \cite remains (frenchb.ldf).
+
+2002-05-27 6.72r Heiko Oberdiek
+ * 6.72r
+ * Problem with varioref's \vref@pagenum fixed
+ (Thanks to Felix Neubauer <felix.neubauer@gmx.net>).
+
+2002-05-10 6.72q Heiko Oberdiek
+ * 6.72q
+ * Some spaces in PDF output of driver pdftex removed.
+
+2002-05-09 6.72p Heiko Oberdiek
+ * 6.72p
+ * Option `pdfusetitle' now correctly disabled.
+
+2002-04-20 6.72o Heiko Oberdiek
+ * 6.72o
+ * Bug fix of 6.72n is wrong:
+ Octal escape sequences (\000) are not detected by the method
+ with \meaning. Now another method, based on \dospecials, is
+ used to protect active characters while reading the .out file.
+
+2002-04-19 6.72n Heiko Oberdiek
+ * 6.72n
+ * Bug fixed in \ReadBookmarks of driver vtex:
+ the text arguments in the .out file are
+ now protected.
+
+2002-04-15 6.72m Heiko Oberdiek
+ * 6.72m
+ * Adaption to subfigure 2002/03/26 v2.1.2. It uses
+ \AtBeginDocument{...\newcommand{\toclevel@subfigure}...}.
+
+2002-04-12 6.72l Heiko Oberdiek
+ * 6.72l
+ * Fix from Werner Lemberg <wl@gnu.org> for
+ bookmarks with Big5 encoded strings,
+ preprocessed by package cjk.
+
+2002-04-09 6.72k Heiko Oberdiek
+ * 6.72k
+ * \protected@edef instead of \edef in \hyper@link@.
+
+2002-03-27 6.72j Heiko Oberdiek
+ * 6.72j
+ * Tried to fix the problem that links to
+ bibliography points to baseline if pdfTeX is
+ used by inserting \Hy@raisedlink.
+ * \Hy@raisedlink disabled for pdfmark drivers,
+ because they use a PostScript method.
+
+2002-03-15 6.72i Heiko Oberdiek
+ * 6.72i
+ * \toclevel@subfigure and \toclevel@subtable fixed.
+
+2002-03-15 6.72h Heiko Oberdiek
+ * 6.72h
+ * New structure on tug server.
+ * Makefile: target "distrib" removed.
+ * Textures update by Ross Moore <ross@maths.mq.edu.au>.
+
+2002-03-14 6.72g Heiko Oberdiek
+ * 6.72g
+ * Added fix for subfigure 2002/02/14 v2.1.
+ Loading order: nameref, subfigure, hyperref.
+
+2002-03-08 6.72f Heiko Oberdiek
+ * 6.72f
+ * dvipdfm: pdfstartpage and pdfstartview fixed
+ (Akira Kakuto <kakuto@fuk.kindai.ac.jp>).
+
+2002-02-16 6.72e Heiko Oberdiek
+ * 6.72e
+ * \pdfstringdef: \cyr disabled for russian.ldf
+ * \pdfstringdef: shorthands for macedonian.ldf
+ * VTeX 7.54: pdfnewwindow supported in \hyper@linkfile.
+
+2002-01-14 6.72d Heiko Oberdiek
+ * 6.72d
+ * Bug fix: \Hy@title, \Hy@author.
+
+2002-01-08 6.72c Heiko Oberdiek
+ * 6.72c
+ * pdfmark.def: /URI moved from /DOCVIEW to {Catalog}.
+ * pdfmark.def: Unused \@dobaseurl removed.
+
+2002-01-07 6.72b Heiko Oberdiek
+ * 6.72b
+ * Support of \stockwidth and \stockheight (memoir class).
+
+2002-01-06 6.72a Heiko Oberdiek
+ * 6.72a
+ * Annotation's additinal-actions dictionary for form fields:
+ Supported: keystroke (/K), validate (/V), format (/F)
+ and now added: onfocus (/Fo), onblur (/Bl),
+ onmousedown (/D), onmouseup (/U),
+ onenter (/E), onexit(/X)
+ * Additional-actions dictionary added in \PDFForm@List and
+ \PDFForm@Radio.
+ * \PDFForm@Text: "/Ff 1" added, if only \ifFld@readonly is set.
+
+2001-12-23 6.71z Heiko Oberdiek
+ * 6.71z
+ * Some \providecommand replaced by \providecommand*.
+ * Babel's \@number of file lrbabel.def inserts
+ unexpandable tokens into the expansion of \arabic.
+ At some places dummy for \@number inserted, where
+ anchor and link names are expanded.
+
+2001-12-21 6.71y Heiko Oberdiek
+ * 6.71y
+ * Support for chapterbib added, provided by
+ Julian Gilbey <J.D.Gilbey@qmul.ac.uk>.
+
+2001-12-06 6.71x Heiko Oberdiek
+ * 6.71x
+ * Added fix by Denis Girou for pst-key.tex (1998,
+ derived from old keyval.dtx). Any initial brace group
+ in the value field is removed.
+
+2001-11-14 6.71w Heiko Oberdiek
+ * 6.71w
+ * Added suggestion of Didier Verna <didier@lrde.epita.fr>:
+ The fix for multind is also applied for package index.
+
+2001-11-12 6.71v Heiko Oberdiek
+ * 6.71v
+ * The feature of 6.71r with automatic detection of
+ title and author can be enabled by option
+ pdfusetitle. The default is disabled.
+ * If pdfusetitle is enabled, an optional argument
+ is detected for \title and \author (amsart class).
+
+2001-11-05 6.71u Heiko Oberdiek
+ * 6.71u
+ * \literalps@out for dviwindo (D.P. Story).
+
+2001-11-04 6.71t Heiko Oberdiek
+ * 6.71t
+ * The patch for harvard is delayed by \AtBeginDocument
+ to solve a problem with the package load order, if
+ html.sty is present (Command \harvarditem already
+ defined).
+ * The fix for the Adobe bug introduced in 6.71n
+ is changed completely, because Adobe's suggestion
+ generates an extra empty page at the end.
+ (\literalps@out for dviwindo is currently only a dummy.)
+
+2001-10-30 6.71s Heiko Oberdiek
+ * 6.71s
+ * If "\\" or "\newline" are used in \title or
+ \author and reused for the pdf information
+ entries, then they are replaced by a space
+ or a comma and space, see hyperref.dtx.
+
+2001-10-11 6.71r Heiko Oberdiek
+ * 6.71r
+ * Detection of \author and \title added for
+ defaults of pdf information entries.
+
+2001-09-20 6.71q Heiko Oberdiek
+ * 6.71q
+ * Fix for Adobe bug of 6.71n:
+ * VTeX in PS mode with GeX: \immediate\special{!=...}
+
+2001-09-18 6.71p Heiko Oberdiek
+ * 6.71p
+ * Fix for Adobe bug of 6.71n improved:
+ * Support for dviwindo added (D.P. Story).
+ * Check for product added (product is level 2).
+
+2001-09-18 6.71o Heiko Oberdiek
+ * 6.71o
+ * Warning, if \hypercalcbp is used without
+ package calc or e-TeX.
+ * Use of \hypercalcbp removed to avoid the above warning.
+ * \usepackage{calc} added in testams.tex.
+
+2001-09-18 6.71n Heiko Oberdiek
+ * 6.71n
+ * If package tex4ht is loaded, option tex4ht
+ is added to hyperref's option list
+ (Eitan Gurari <gurari@cis.ohio-state.edu>).
+ * Bug fix added for Adobe Distiller 5
+ (Adobe bug number 466320, thanks to
+ D.P. Story and M. Vulis).
+ * testams.tex fixed.
+
+2001-08-19 6.71m Heiko Oberdiek
+ * 6.71m
+ * VTeX's \OpMode=3 is accepted the same way as 1 and 2.
+
+2001-08-19 6.71l Heiko Oberdiek
+ * 6.71l
+ * OS part in VTeX's /Producer default corrected.
+
+2001-08-19 6.71k Heiko Oberdiek
+ * 6.71k
+ * Default of /Producer string:
+ * updated for pdfTeX >= 1.00a,
+ * pdfeTeX detection added,
+ * \VTeXOS added for VTeX >= 7.45.
+
+2001-08-16 6.71j Heiko Oberdiek
+ * 6.71j
+ * Translation of \autoref names to brazil/portuges by
+ Willie Dresler Leiva <dreslerleiva@hotmail.com>.
+ * test/test0.dvi removed.
+ * test/test7.tex: \usepackage{times} to get smaller test7.pdf.
+ * Makefile: targets clean and distrib updated, $(RM) introduced.
+
+2001-08-10 6.71i Heiko Oberdiek
+ * 6.71i
+ * Compatibility problem with xypic, introduced by
+ version 6.71g, fixed.
+
+2001-07-03 Heiko Oberdiek
+ * Two small fixes of Makefile, provided by
+ Martin Maechler <maechler@stat.math.ethz.ch>.
+
+2001-06-18 6.71h Heiko Oberdiek
+ * 6.71h
+ * Option pdfpagemode with empty argument sets
+ default behaviour (an alternative would be "UseNone")
+ in order to avoid the wrong name "/".
+
+2001-05-26 6.71g Heiko Oberdiek
+ * 6.71g
+ * Contributions by Ross Moore <ross@ics.mq.edu.au> and
+ Daniel Steffen:
+ a. patch to htexture.def that adjusts the PDF@SetupDoc
+ so that it includes the setup information from pdfmark.def
+ as well as the tokens needed by Textures itself.
+ b. changes to the \AtBeginDocument usage to implement
+ compatibility with the ldump.sty package.
+ * Bug fix in multind support (forgotten backslash).
+ * Fix for driver pdftex: \pdfpagewidth and \pdfpageheight
+ are not set, if \paperwidth or \paperheight are zero,
+ because it is likely that the settings of pdftex.cfg
+ are better than the heuristics of pdfTeX, if the dimen
+ lengths are zero.
+
+2001-04-13 6.71f Heiko Oberdiek
+ * 6.71f
+ * Feature request of Jens-Uwe Morawski <morawski@gmx.net>:
+ \thispdfpagelabel introduced.
+
+2001-04-05 6.71e Heiko Oberdiek
+ * 6.71e
+ * \@begindvi changed:
+ * \Hy@begindvi for hyperref stuff in \@begindvi introduced,
+ * small bug fix (first page with options
+ pdfpagelabels + pageanchor=false).
+
+2001-04-05 6.71d Heiko Oberdiek
+ * 6.71d
+ * Fix for \@@Radio in hdvipdfm.def for AR5, provided
+ by D. P. Story <story@uakron.edu>.
+ * Spell error corrected (\Hy@captionsspanish).
+ * The fix of 6.71b for VTeX paper size was introduced
+ to solve problem with prosper, but because of new problem
+ with pdfscreen, the fix is redone.
+
+2001-02-20 6.71c Heiko Oberdiek
+ * 6.71c
+ * Bug fix, introduced in 6.71b.
+
+2001-02-20 6.71b Heiko Oberdiek
+ * 6.71b
+ * Fixes by Markus Kohm:
+ * Applying the \@addchap hack for scrreprt.
+ * Disabling the \@addchap hack for komascript
+ versions since 2001/01/01, because these
+ versions contain hyperref support.
+ * The \@ssect, \@schapter, ... hacks are also applied
+ to driver hypertex.
+ * Fixes by Alex (VTeX):
+ * Correction of paper size setting.
+ * /Replace transition supported.
+
+2001-01-27 Heiko Oberdiek
+ * nameref 2.19:
+ option final of showkeys now detected.
+
+2000-11-05 6.71a Heiko Oberdiek
+ * 6.71a
+ * Two errorneous garbage lines removed, they cause
+ an infinite loop with \autoref{<equation|footnote>}.
+
+2000-10-04 6.71 Sebastian Rahtz
+ * 6.71 CTAN release
+
+2000-09-29 6.70y Heiko Oberdiek
+ * 6.70y
+ * Check of empty /Dest and /DestAnchor values
+ improved (\pdfmark).
+
+2000-09-22 6.70x Heiko Oberdiek
+ * 6.70x
+ * Next typo fixed (option american).
+
+2000-09-22 6.70w Heiko Oberdiek
+ * 6.70w
+ * \DeclareRobustCommand: \href, \url, \hyperimage,
+ \hyperref
+ * Typo fixed (option american).
+
+2000-09-07 6.70v Heiko Oberdiek
+ * 6.70v
+ * Fix for option CJKbookmarks.
+
+2000-09-06 6.70u Heiko Oberdiek
+ * 6.70u
+ * Fix of \pdf@rect and \@hyperfixhead for seminar
+ * Default for \special@paper with values for
+ packages typearea or geometry.
+ * Fix for seminar: true values for \pdf{h,v}origin
+ and \pdfpage{width,height} (Thanks to
+ Stephan Lehmke).
+ * File `test/seminar.con' replaced by environment
+ `filecontents' in file `testslide.tex'.
+
+2000-09-05 6.70t Heiko Oberdiek
+ * 6.70t
+ * Fixes for packages listings and listing.
+ * Some \setbox...=\hbox replaced by color safer
+ constructs.
+ * Patch for bookmarks with package cjk, enabled
+ with option `CJKbookmarks'.
+
+2000-08-31 6.70s Heiko Oberdiek
+ * 6.70s
+ * URLs, broken by bibTeX, work now:
+ \url{%
+ http://www.%
+ dante.de/%
+ }
+ ("%^^M" are detected and removed, thanks
+ Stefan Ulrich <ulrich@cis.uni-muenchen.de>
+ for his suggestion.)
+ * Checks added to hycheck.tex
+ * \caption checks whether \@captype is defined.
+
+2000-08-30 6.70r Heiko Oberdiek
+ * 6.70r
+ * Shorter PostScript names (/H.X) for drivers of dvips type.
+ * Bug fix (hvpdfmark.def): /pdf@voff
+ * New test file `hycheck.tex'.
+ * Bug fix: latex/2318 fix added to \@caption.
+ * Bug fix: \numberwithin
+
+2000-07-30 6.70q Heiko Oberdiek
+ * 6.70q
+ * VTeX: further fixes.
+
+2000-07-17 6.70p Heiko Oberdiek
+ * 6.70p
+ * \test@reftype fixed (used for \autoref).
+ * autorefnames: german fixed, spanish added.
+ * VTeX: additions and fixes from Alex Kostin.
+
+2000-07-04 6.70o Heiko Oberdiek
+ * 6.70o
+ * Test files testbm{oe,sc,zc,yi,l}.tex merged to testbma.tex.
+ * Added correct \@hyper@launch for hvtex.def (Alex Kostin).
+
+2000-07-03 6.70n Heiko Oberdiek
+ * 6.70n
+ * Default for \Hy@pageheight changed from A4 to
+ setting via \hypercalcbp and \paperheight.
+
+2000-07-02 6.70m Heiko Oberdiek
+ * 6.70m
+ * Feature added: \hypercalcbp (see hyperref.dtx).
+
+2000-07-02 6.70l Heiko Oberdiek
+ * 6.70l
+ * Bugfix in onopen of 6.70k undoned. It will
+ be fixed in VTeX itself.
+
+2000-07-01 6.70k Heiko Oberdiek
+ * 6.70k
+ * Own section for vtexpdfmark driver and
+ PostScript code fixed.
+ * Bug in hvtex.def fixed: missing space in onopen special.
+
+2000-07-01 6.70j Heiko Oberdiek
+ * 6.70j
+ * hyperref.ins for vtexpdfmark corrected.
+
+2000-07-01 6.70i Heiko Oberdiek
+ * 6.70i
+ * Start of new VTeX driver that support pdfmark specials.
+ Option `vtexpdfmark', file `vtexmrk.def'
+ (contributed by Michael Vulis).
+ * hyperref.ins: hvtexmrk.def added.
+
+2000-06-30 6.70h Heiko Oberdiek
+ * 6.70h
+ * nohyperref: \hyperpage disabled.
+ * Defaults for \autoref's names only define \...autorefname.
+ * Problem with \hyper@hash fixed.
+ * \nolinkurl added (variant of \url, that does not make
+ a link, eg. for use in the second argument of \href).
+ * Problem fixed, that warning ``Label(s) may have changed.''
+ always appears with `babel' and `\bibcite'.
+ * Update of htextures.def by Ross Moore <ross@ics.mq.edu.au>:
+ * the blue rectangles no longer appear with `colorlinks',
+ * pdfmark support,
+ * the built-in support for hypertex specials is
+ utilised.
+ * Update of hvtex.def by Michael Vulis
+ <support@micropress-inc.com>:
+ * Bug in \Acrobatmenu fixed.
+ * Transition effects added (written by Alex Kostin).
+ * pdfmark.def: Character slash `/' now works
+ in destination names (eg: "cite.OMG:formal/98-12-01").
+
+2000-05-08 6.70g Heiko Oberdiek
+ * 6.70g
+ * \autoref names: To solve the uppercase problem,
+ first the names \...autorefname are used in \autoref.
+ Language options added for english and german languages.
+
+2000-05-08 6.70f Heiko Oberdiek
+ * 6.70f, nameref: 2.18
+ * Anchor of foonotes raised.
+ * showkey support (nameref.dtx: \label, \ref, \pageref, \nameref,
+ not checked and tested is \cite).
+ * \@xfootnotetext calls \H@@mpfootnotetext, if called in minipage.
+ * Bug \href{foo.pdf#bar} fixed, introduced in 6.70c.
+ * Bug harvard/backref fixed ({\thepage}{\current@label}).
+
+2000-04-12 6.70e Heiko Oberdiek
+ * 6.70e
+ * Empty reference causes crash of distiller, therefore
+ empty references replaced by UNDEFINED
+ (pdftex, pdfmark, dvips, vtex, dvipdfm).
+
+2000-04-11 6.70d Heiko Oberdiek
+ * 6.70d
+ * hvtexhtm detected as default driver.
+ * Bug fix (undefined \pageref within \ifthenelse).
+
+2000-03-31 6.70c Heiko Oberdiek
+ * 6.70c
+ * \hyper@normalise: %, \%, #, \# expands to catcode `other'
+ characters, \url{http://foo.bar/%2e_~#hash} should work.
+ * \pdfBorderAttrs removed and replaced by
+ "/Border [\@pdfborder]".
+ If option colorlinks is set, the border is set to zero
+ immediately, not \AtBeginDocument (for people who
+ want to have both borders and colored links).
+
+2000-03-31 6.70b Heiko Oberdiek
+ * 6.70b
+ * Definition of \x remains unchanged (bug introduced in 6.67g).
+ * Packages titlesec and titletoc support by Javier Bezos
+ <jbezos@arrakis.es>.
+ * \MP added (\pdfbookmarkstring, htex4ht.cfg).
+ * All files of hyperref.dtx now identify themselves
+ by \Provides{File,Package}.
+ * Start with nohyperref.sty (SR), toc-level addtions by HO.
+ * Updated: testbm{gl,u}.tex
+
+2000-03-23 6.70a Heiko Oberdiek
+ * 6.70a
+ * New option: pdfpageduration for the /Dur key
+ in the pdf page object, the value is empty or
+ contains the length in seconds (real).
+ Supported drivers: pdftex, pdfmark.
+ * New option: pdfpagehidden for the /Hid key
+ in the pdf page object, the value is a boolean.
+ Supported drivers: pdftex, pdfmark.
+
+2000-03-22 6.70 Sebastian Rahtz
+ * 6.70 CTAN release (TeX Live 5)
+
+2000-03-22 6.69f Heiko Oberdiek
+ * 6.69f
+ * \@ifundefined{thechapter} changed to \@ifundefined{chapter}
+ because of compatibility with french.sty.
+ * xr-hyper.sty: \xdef changed to \protected@xdef
+ (Stephan Lehmke <Stephan.Lehmke@cs.uni-dortmund.de>).
+ * hvtex.def: default for pdfview changed to xyz.
+
+2000-03-07 6.69e Heiko Oberdiek
+ * 6.69e
+ * Fix for babel/3174 (\@save@activestrue in \hyper@normalise).
+
+2000-03-02 6.69d Heiko Oberdiek
+ * 6.69d
+ * Fix for \texttilde with babel's spanish, estonian, galician
+ * Expandable versions without link of \ref and \pageref:
+ \hypergetref and \hypergetpageref.
+ * \ifthenelse: \ref and \pageref use the \hyperget... variants.
+ * \hyper@chars added in \hyper@anchor of drivers
+ hypertex, vtexhtml, and vtex.
+ * Forms: checkboxsymbol introduced (Michael Wiedmann
+ <michael.wiedmann@detewe.de>).
+ * Redefinitions in \appendix are made globally
+ (Tim J Harding <Tim.Harding@quadstone.com>).
+ * If \chapter is undefined, it remains now undefined.
+
+2000-01-22 6.69c Heiko Oberdiek
+ * 6.69c
+ * D. P. Story <story@uakron.edu> has adapted forms
+ part of pdfTeX to dvipdfm.
+
+2000-01-21 6.69b Heiko Oberdiek
+ * 6.69b
+ * \@writetorep: destination and level check added.
+ * \addcontentsline: \phantomsection added, if no destination.
+
+2000-01-19 6.69a Heiko Oberdiek
+ * 6.69a
+ * Bug fixed: tabularx+\maketitle+\footnote.
+ * LPPL 1.2, manifest.txt updated.
+
+2000-01-18 6.69 Sebastian Rahtz
+ * 6.69 CTAN release
+ * Missing test files added.
+
+2000-01-17 6.68a Heiko Oberdiek
+ * 6.68a
+ * pdfpagescrop works now with dvipdfm (D. P. Story
+ <story@uakron.edu>).
+
+2000-01-13 6.68 Sebastian Rahtz
+ * 6.68 CTAN release
+
+2000-01-11 6.67h Heiko Oberdiek
+ * 6.67h
+ * pdfpagemode: /None corrected to /UseNone.
+ * \pdfstringdef: \halign disabled (because of errors by #).
+ * Option draft: bookmarks are disabled (thanks to Michael Vulis).
+ * Outdated bookmark documentation removed.
+ * hvtex.def: \media{width,height} supported.
+ * Space after \@pdfhighlight inserted (hpdftex.def).
+ * Bug fixed in redefinition of \@chapter.
+ * Small bug fixed in \Hy@boolkey.
+
+1999-12-01 6.67g Heiko Oberdiek
+ * 6.67g
+ * test/phys332-{1,2}.jpg renamed to test/phys{1,2}.jpg
+ * Improved \catcode check and settings at the beginning
+ of hyperref.sty.
+ * [#1]-Bug fixed by [{#1}] in the definition of \htmlref
+ and \@newctr and in many uses of \pdfmark.
+
+1999-11-24 6.67f Heiko Oberdiek
+ * 6.67f
+ * Test files checked by Sebastian Rahtz.
+ * Unwanted spaces removed (dviwindo, outline).
+ * Redone: \def\texorpdfstring to \newcommand*
+ * Other implementation of \HyPSD@tocsection by Michael Downes.
+ * ps2pdf: Default for pdfborder: 0 0 1
+ * \belowpdfbookmark added (setting bookmark below current
+ level without changing it).
+ * \@ChoiceMenu: coiled "{\if}\fi" cleared to "{\if\fi}".
+ * Fix for \citeN and \shortciteN of package chicago.
+
+1999-11-09 6.67e Heiko Oberdiek
+ * 6.67e
+ * Detection of VTeX PS mode (OpMode=2).
+ * Added \tocsection fix for AMS classes
+ (thanks to Michael Downes/Tom Kacvinsky).
+ * Changed \newcommand*{\texorpdfstring} to \def\texorpdfstring
+ (a wish of Tom Kacvinsky).
+ * INSTALLDIRVAR added to makefile (default: TEXMFMAIN).
+
+1999-11-09 6.67d Heiko Oberdiek
+ * 6.67d
+ * Unwanted space removed in \hyper@linkstart (hvtex.def).
+ * <hvtex,hvtexhtml> renamed to <vtex,vtexhtml>
+ * If no driver is given, VTeX in PDF mode is now detected.
+
+1999-11-08 6.67c Heiko Oberdiek
+ * 6.67c
+ * hog.{eps,pdf} added for test0.tex
+ * Bug in \Acrobatmenu of hvtex.def fixed.
+
+1999-11-04 6.67b Heiko Oberdiek
+ * 6.67b
+ * New feature: With option `pdfpagelabels' the
+ /PageLabels entry in the /Catalog object of PDF 1.3
+ is supported.
+ With `pdftex' and `vtex' one TeX run suffices,
+ other pdf driver, that work via \special, need
+ two TeX runs.
+ * Option `4' removed, because it is not used.
+
+1999-10-23 6.67a Heiko Oberdiek
+ * 6.67a
+ * \Hy@boolkey with optional argument for option name, if it
+ is different.
+ * hpdftex.def: \pdfrefform\OBJ@acroform, ... added.
+
+1999-10-18 6.67 Heiko Oberdiek
+ * 6.67 public release on CTAN
+
+1999-10-14 6.66m Heiko Oberdiek
+ * 6.66m
+ * makefile fixes.
+
+1999-10-13 6.66l Heiko Oberdiek
+ * 6.66l
+ * dvipdfm driver updated by Sebastian Rahtz.
+ * LPPL 1.1, manifest.txt added.
+ * \hyperlinkfileprefix for Ross Moore.
+ * Option baseurl disabled after first use.
+ * Option debug = verbose.
+ * Used global options are removed from the unused option list.
+ * \pdfstringdef: \leavevmode disabled,
+ \guill@spacing (frenchb.ldf) properly defined.
+ * Directory structure: test/ and doc/
+ * Slides and paper of Heiko's talk at EuroTeX'99 added in doc/.
+
+1999-10-07 6.66k Heiko Oberdiek
+ * 6.66k
+ * hyperref.ins: eight times faster by \generate (docstrip 2.4)
+ (Suggestion by Werner Lemberg <wl@gnu.org>).
+ * backref.dtx 1.19:
+ * \backcite ignores entries that are already present.
+ * Some cosmetic clean up.
+ * nameref.dtx 2.17: Some cosmetic clean up.
+ * \Hy@boolkey with error checking.
+ * Code for options backref and pagebackref rewritten.
+ * Options are disabled after use.
+
+1999-10-05 6.66j Heiko Oberdiek
+ * 6.66j
+ * foiltex: \ext@table, \ext@figure defined.
+
+1999-10-05 6.66i Heiko Oberdiek
+ * 6.66i
+ * \pdfstringdef: support of shorthands of some babel
+ languages added.
+ * \ij, \IJ added in PD1 and PU encoding for Dutch.
+
+1999-10-05 6.66h Heiko Oberdiek
+ * 6.66h
+ * Making destination for \addcontentsline in
+ \@chapter, if \c@secnumdepth<0, \frontmatter, or \backmatter.
+ * `(' and `)' added to \Hy@{Set,Restore}Catcodes.
+
+1999-10-01 6.66g Heiko Oberdiek
+ * 6.66g
+ * \index{test|(} supported.
+
+1999-09-28 6.66f Heiko Oberdiek
+ * 6.66f
+ * options.tex with bookmarkstype
+ * Bug in \autoref fixed: chapter/appendix detection
+ * \\ and \newline produces a warning in \pdfstringdef
+ * draft=false should work.
+
+1999-09-14 6.66e Heiko Oberdiek
+ * 6.66e
+ * Unwanted space in \HyPsd@LetUnexpandableSpace removed.
+
+1999-09-13 6.66d Heiko Oberdiek
+ * 6.66d
+ * \@footnotemark is also disabled, if package
+ tabularx is loaded.
+
+1999-09-10 6.66c Heiko Oberdiek
+ * 6.66c
+ * Bug fix: Definition of \Hy@SaveLastSkip is moved before \MaybeStopEarly.
+
+1999-09-10 6.66b Heiko Oberdiek
+ * 6.66b
+ * Starting with option warnings, if the option is
+ set at a wrong place.
+ * Support for package multind.
+ * \textnumero added to testbmu.tex.
+
+1999-09-08 6.66a Heiko Oberdiek
+ * 6.66a
+ * Catcodes are set at begin of package and restored at the end.
+ (Bug fix: ltxdoc.cls makes '|' active...)
+
+1999-09-08 6.66 Sebastian Rahtz
+ * Release 6.66
+
+1999-09-01 6.65e Heiko Oberdiek
+ * 6.65e
+ * Test for \XR@addURL instead of the package name, because
+ they exist different versions of xr and xr-hyper.
+
+1999-08-31 6.65d Heiko Oberdiek
+ * 6.65d
+ * Bug fixed (use of \renewcommand in \pdfstringdefDisableCommands)
+ * Weak support for \ref and \pageref in bookmarks added.
+ * Made bookmark code less slow (testbmu.tex compiles 20% faster):
+ \HyPsd@ConvertToUnicode rewritten, \HyPsd@string introduced, ...
+ * Bug detected by Ian Bruce: hyperref has a different spacing
+ with theorem environments.
+ Cause: The \lastskip value is destroyd by the specials that
+ set the anchor.
+ Fix: Saving the \lastskip value before the specials, and after
+ setting \nobreak\{h,v}skip-\lastskip\{h,v}skip\lastskip.
+ See \Hy@SaveLastskip - \Hy@RestoreLastskip.
+ (most drivers: \hyper@anchor, \hyper@anchorstart - \hyper@anchorend;
+ pdftex: \new@pdflink; dvipdfm: \@pdfm@dest)
+ * \CYRCHDSC and \cyrchdsc corrected to \CYRCHRDSC and \cyrchrdsc
+ (Thanks to Vladimir Volovich <vvv@vvv.vsu.ru>)
+ * Bug fixed: \HAR@checkcitations redefined to add \hyper@@link.
+ Without this the "Changed labels" warning would always appear.
+
+1999-08-24 6.65c Heiko Oberdiek
+ * 6.65c
+ * Unicode bookmark support 0x0000..0x04FF.
+ * testbmu.tex: detailed test file for Unicode bookmarks.
+ * Default setting of \@pdfborder with \providecommand,
+ so package option `pdfborder' does work now.
+ * \hv@pdf@char: support of octal codes with VTeX
+ versions greater or equal 6.50.
+ * Typo in option 'vtex' corrected.
+ * Again backref 1.18.
+ * Various drivers (dviwindo, hypertex, ...): \leavevmode in
+ \hyper@linkurl, \hyper@linkfile, ... added where missing.
+ * testform2.tex renamed to testfor2.tex (8+3 file name).
+
+1999-08-17 6.65b Heiko Oberdiek
+ * 6.65b
+ * Unicode bookmark support, starting with Cyrillic.
+
+1999-08-14 6.65a Heiko Oberdiek
+ * 6.65a
+ * Module pdfstringdef: bug (\space) and typo fixed.
+
+1999-08-12 6.65 Sebastian Rahtz
+ * RELEASE 6.65
+
+1999-08-10 6.64h Sebastian Rahtz
+ * 6.64h
+ * Moved some sections to before \MaybeStopEarly. Otherwise
+ implicit=false mode never saw some important stuff.
+ * hyperref.dtx: added \href to list of ignored commands in
+ bookmarks. cleaned up VTEX stuff as per diagnosis by Heiko
+
+1999-08-06 6.64g Sebastian Rahtz
+ * 6.64g
+ * hyperref.dtx: typos and little fixes from Heiko
+ * added another special thing for typexml
+
+1999-07-29 Sebastian Rahtz
+ * version 6.64c. hyperref.dtx: some typos corrected, and form
+ primitives of pdftex
+
+1999-07-28 Sebastian Rahtz
+ * cut out any footnote work if tabularx is
+ loaded. add some form stuff from D P Story
+
+1999-07-28 Sebastian Rahtz
+ * version 6.64b
+ * hyperref.dtx:
+ Changes from Heiko:
+ Module pdfstringdef:
+ * Small bug in \HyPsd@ProtectSpaces/HyPsd@RemoveMask fixed.
+ * \@ifnextchar because of \futurelet disabled.
+ * Disabling of \@ifstar removed, because it calls \@ifnextchar.
+ * \@protected@testopt disabled to show the problematic macro in
+ the warning message (commands with an optional argument).
+ * \pdfstringdefWarn#1 prints a warning message with token #1,
+ it can be used in code that disables macros by the user.
+ * \pdfstringdefDisableCommands#1 is a easier interface for
+ the hook \pdfstringdefPreHook. It appends its argument to the
+ meaning of \pdfstringdefPreHook. The character @ can be used
+ in command names.
+ * \penalty is removed silently.
+ * \kern and \hskip are detected with a warning:
+ * At the beginning or, if the value is less than 1ex,
+ they are removed.
+ * Else they are replaced by a space.
+
+ Fix for \pdfpage(s)attr:
+ * Setting the /CropBox with \pdfpagesattr:
+ The old meaning of \pdfpagesattr is appended.
+ * Initial value of \@pdfpagestransition is \relax
+ to differentiate between a unused or empty option.
+ * \hyper@pagetransition (hpdftex):
+ * The old entry /Trans is removed from \pdfpageattr.
+ * The remaining old meaning retains and
+ * the new /Trans is appended.
+ * \hyper@pagetransition (pdfmark):
+ * \if-switch for \relax added to get the old behaviour.
+ ? (1) Need to delete an old entry?
+ ? If 1=yes, how to delete?
+
+1999-07-21 Sebastian Rahtz
+ * version 6.64a, corrected typos in VTEX stuff
+
+1999-07-19 6.64 Sebastian Rahtz
+ * RELEASE 6.64
+ * hyperref.dtx: support pdftex > 0.14 with new primitive names
+ * hyperref.dtx: bookmark patches from Stephan Haller, to allow
+ local changes of open status
+ * hyperref.dtx: small patche for \seteqlabel. obscure problem in
+ amstex compatibility mode, found by Michael Downes.
+ * hyperref.dtx: patches to VTEX bookmark processing, from Taco
+ Hoekwater, following patches by Denis Girou.
+
+1999-07-08 6.63 Sebastian Rahtz
+ * RELEASE 6.63
+ * hyperref.dtx: added "typexml" option for typexml package
+ * Some cleanups from Heiko
+
+1999-06-29 6.62 Sebastian Rahtz
+ * RELEASE 6.62
+ * hyperref.dtx: (from Heiko), gobble \discretionary in bookmarks
+
+1999-06-27 6.61 Sebastian Rahtz
+ * RELEASE 6.61
+ * hyperref.dtx: for Babel compatibility, use its \@safe@actives
+ switch in cross-refs (also in nameref.dtx), plus be nicer about
+ * in \pdfstringdef (from Heiko). Move \phantomsection to main package.
+
+1999-06-11 6.60 Sebastian Rahtz
+ * RELEASE 6.60
+ * nameref.dtx: changed \Sectionformat to a \providecommand, as it
+ now comes \AtBeginDocument
+
+1999-06-10 Sebastian Rahtz
+ * hyperref.dtx: * Increment of version letter to 6.58f
+ * hyperref.dtx: add \phantomsection, to make a section-like anchor
+ Missing {} after \@ifpackageloaded{subfigure}
+ * nameref.dtx define \section@level for pdfscreen
+ From Heiko:
+ * lastpage fix (added page anchor name, ...).
+ * documentation for lastpage support added.
+ * \pdfstringdef: \Generic{Error,Warn,Info} disabled while
+ expanding.
+ * \pdfstringdef: french fix changed to get rid of hard coded
+ numbers for the guillemets.
+
+1999-06-09 Sebastian Rahtz
+ * hyperref.dtx: * Increment of version letter to 6.58b
+ Loads of cleanups by Heiko:
+ * \def\@pdfpagecrop{} removed, because it isn't used further
+ * Loading of \Hy@driver part replaced (see previous email)
+ * Old name \Hy@PDFDef found, replaced by \pdfstringdef
+ * Module \pdfstringdef: Use of prefix "\HyPsd@" (it's shorter
+ and easier to read than "\Hy@psd@".
+ * \let\add@accent\HyPsd@add@accent instead of the definition
+ in \pdfstringdef (saving run time).
+ * Corrected to \begin{macro}{\HyPsd@ITALCORR}.
+ * old ifbookmark replaced by texorpdfstring in description.
+ * Missing lines added in pd1enc.def (\",\r,\v,\.,\c)
+ * Bugs in \define@key{Field}{maxlen}{\Fld@maxlen=#1}
+ and \define@key{Field}{menulength}{%
+ * Changed \orig@appendix to \Hy@orig@appendix.
+ \orig@maketitle to \Hy@orig@maketitle.
+ * Replaced \global\def --> \gdef
+ * Replaced \global\edef --> \xdef
+ * Starting with identing (length 2) and checking the line length.
+
+1999-06-08 Sebastian Rahtz
+ * hyperref.dtx. make "subfigure" force hypertexnames=false; remove
+ exactdef option (obsolete), and set default of 0 for bookmark
+ level of unknown objects (\toclevel@...)
+ * a lot of cleaning up of code layout, requested by Heiko, and bug
+ fixing related to \addcontentsline
+
+1999-05-30 Sebastian Rahtz
+ * backref.dtx: added debugging/verbose output
+ * hyperref.dtx: considerable reworking of \addcontentsline, with
+ wide-reaching effects
+ * Some more PD1 fixes from Heiko. Stop using \@foo, too common a
+ choice by others
+ * Some fixes for TeX4ht, from Eitan Gurari
+
+1999-05-19 6.57 Sebastian Rahtz
+ * RELEASE 6.57
+ * hyperref.dtx: a good many missing or extra spaces in and around
+ line endings were found by Heiko and corrected.
+
+1999-05-18 Sebastian Rahtz
+ * hyperref.dtx: fixes to \textLF etc from Heiko
+
+1999-05-17 Sebastian Rahtz
+ * hyperref.dtx: Raise equation anchors by \baselineskip;
+ dangerous, but its the only hope for XYZ views
+ * Some fixes for tex4ht from Eitan Gurari
+ * stop defaulting papersize \special
+ * make bookmarks use tocdepth not secnumdepth
+ * Some fixes for AMS equations, will probably break something!
+ * some characters changed, and some added, in PD1
+ encoding, to allow for silly behaviour of Acrobat, and to help
+ Poles (via Wojciech A. Myszka <W.Myszka@immt.pwr.wroc.pl>)
+
+ * backref.dtx: added support for chicago.sty (requested by Alan Reese)
+
+1999-05-14 Sebastian Rahtz
+ * hyperref.dtx: added new option hypertexnames. if it is *false*,
+ unique arbitrary names are given for anchors and links, to avoid
+ any conflict caused by counters being redefined etc. Long overdue.
+ * Guillemet fix from Heiko.
+
+1999-04-13 6.56 Sebastian Rahtz
+ * RELEASE 6.56
+ * hyperref.dtx: missed a \if@filesw (Heiko spotted), and removed
+ the <repere> section
+
+1999-04-12 6.55 Sebastian Rahtz
+ * RELEASE 6.55
+ * hyperref.dtx: when the run: type of URL is used, a \relax creeps
+ into the output with pdfmark drivers. corrected.
+ * Add some missing \if@filesw code (from Heiko)
+ * Proper dummy initialisation of \pdfbookmark
+ * Correct serious error over detecting whether seminar is being used
+ (added new test, and defined \ifhy@seminarslides)
+ * If implicit=false is used, ensure that \PDF@FinishDoc (to add
+ DOCINFO stuff) is still done, \AtBeginDocument (it was tied to the
+ redefinition of \@thehead)
+
+1999-03-31 6.54 Sebastian Rahtz
+ * RELEASE 6.54
+ * hyperref.dtx: fixes from Heiko in pdf doc encoding stuff
+
+1999-03-30 6.53 Sebastian Rahtz
+ * RELEASE 6.53
+ * hyperref.dtx: complete replacement of Heiko's part by nicely
+ documented dtx....
+
+ Name changes:
+ \newif\ifPDFbookmark ==> \newif\ifHy@pdfstring (internal name)
+ \ifbookmark ==> \texorpdfstring (user command)
+ \Hy@PDFDef ==> \pdfstringdef (user or package command)
+
+ Heiko summarizes the features of this \Hy@PDFDef:
+ * PD1 encoding
+ * Unknown glyphs don't cause an infinite error loop now (see
+ bug report few weeks ago in pdftex@tug.org).
+ * Grouping characters can be used, they are removed silently,
+ so things like "\TeX{}" can be written.
+ * With this version of \Hy@PDFDef the option exactdef can be
+ removed now because of the warning messages.
+ * All non-expandible commands like unknown glyphs or stomach
+ commands are catched by this version: a comprehensive
+ warning message is produced and the tokens are removed.
+ * xspace support.
+ * Support for unbalanced parentheses, hyparen.sty is now obsolete.
+
+1999-03-26 6.52 Sebastian Rahtz
+ * RELEASE 6.52
+ * hyperref.dtx: Wherever "naturalnames" is used, disable
+ \textlatin (from Babel 3.6k). Thanks to Felix Neubauer
+ <Felix.Neubauer@gmx.net>
+ * Fixes for seminar (Denis Girou <denis.girou@idris.fr>)
+
+1999-03-12 6.51 Sebastian Rahtz
+ * RELEASE 6.51 (unreleased)
+ * hyperref.dtx: yet more bookmark magic from Heiko Oberdiek!
+
+1999-02-21 Sebastian Rahtz
+ * hyperref.dtx: trap a URL type of "run:" and attempt to use it to
+ launch an application. In dvips, dvipdfm and pdftex drivers; it
+ seems to work in Windows. By default it translates to file:
+
+1999-02-17 Sebastian Rahtz
+ * Changed the copyright notice
+ * hyperref.dtx: some (more) corrections from Heiko
+
+1999-02-16 6.50 Sebastian Rahtz
+ * RELEASE 6.50
+ * hyperref.dtx: some corrections from Heiko
+
+1999-02-14 6.49 Sebastian Rahtz
+ * RELEASE 6.49
+ * hyperref.dtx: remove grouping around PDF@SetupDoc, allowing
+ \pdfpagesttr in pdftex to work properly (ie CropBox)
+ move PD@FinishDoc to happen at start of dvi (in page header);
+ this allows for documents ending in \clearpage in which case the
+ stuff never happened. sigh.
+
+1999-02-06 6.48 Sebastian Rahtz
+ * RELEASE 6.48
+ * hyperref.dtx: add option "naturalnames", which makes hyperref use
+ eg \thesection instead of \theHsection. may help some people.
+ * Add option "verbose" to provide a debugging hook.
+ * Set some more commands to no-op in bookmarks.
+ * Remove all pdfinfo from PDF@SetupDoc, and transfer to new
+ PDF@FinishDoc, which happens \AtEndDocument. This allows
+ \maketitle to do \hypersetup{pdftitle=\@title} etc
+ * Rearranged some lines of code.
+
+1999-02-01 6.47 Sebastian Rahtz
+ * RELEASE 6.47
+ * hyperref.dtx: removed code from dvipdfm by mistake. restored.
+
+1999-01-27 6.46 Sebastian Rahtz
+ * RELEASE 6.46
+ * hyperref.dtx: add support for colorlinks to dvipdfm driver
+ (missed out by mistake before), and \AcrobatMenu
+
+1999-01-20 Sebastian Rahtz
+ * hyperref.dtx: changed \texttilde to \textasciitilde; removed
+ \textbeta
+
+1998-12-17 6.45 Sebastian Rahtz
+ * RELEASE 6.45
+ * hyperref.dtx: make \footnotemark and \footnotetext use original
+ non-hyper definitions. from pzezza@facec.cce.unifi.it.
+
+1998-12-07 6.44 Sebastian Rahtz
+ * RELEASE 6.44
+ * hyperref.dtx: corrected bookmark writing errors. again...
+ removed some spurious \makeat s. removed a spurious { in tex4ht
+
+1998-12-01 6.43 Sebastian Rahtz
+ * RELEASE 6.43
+ * hyperref.dtx: fixes for \addcontentsline from
+ kevin@rodin.wustl.edu (Kevin Ruland)
+ - make \EndOfPackage things happen \AtBeginDocument instead, for
+ consistency
+ - fixes to hy@temp from Heiko
+ - added optional first parameter to \BOOKMARK in order to provide
+ dvipdfm with what it wants
+
+1998-11-27 Sebastian Rahtz
+ * hyperref.dtx: added dvipdfm driver from
+ Mark Wicks <mwicks@kettering.edu>.
+ cleaned up more bookmark code (from Heiko)
+
+1998-11-11 6.42 Sebastian Rahtz
+ * RELEASE 6.42
+ * hyperref.dtx: replaced bookmark and docinfo writing with new code
+ from Heiko Oberdiek which seems to do a better job
+ * Support for lastpage package.
+
+1998-11-03 6.41 Sebastian Rahtz
+ * RELEASE 6.41
+ * hyperref.dtx: cleaned up test for existence of pdftex again, to
+ avoid trampling on other packages. Thomas Esser and David Carlisle
+ pointed out the mess.
+
+1998-11-01 6.40 Sebastian Rahtz
+ * RELEASE 6.40
+ * hyperref.dtx: checked various drivers, and had to introduce mew
+ docstrip guards to add some pdfmark to dviwindo. dvipdf broken, so
+ removed from hyperref.ins. Thanks to Thomas Esser for testing so
+ quickly.
+
+1998-10-30 6.39 Sebastian Rahtz
+ * RELEASE 6.39
+ * hyperref.dtx: serious error in where colorlinks and frenchlinks
+ were checked. now all at EndOfPackage, after driver load.
+
+1998-10-23 6.38 Sebastian Rahtz
+ * RELEASE 6.38
+ * hyperref.dtx: rework handling of driver options so that driver
+ is only loaded at the end, with whatever is the latest name given
+ in config file, document etc. (Thanks to Thomas Esser for suggestion)
+
+1998-10-17 6.37 Sebastian Rahtz
+ * RELEASE 6.37
+ * hyperref.dtx: back out change of link to use Action dictionary,
+ it seems to break some Distiller setups, and Ghostscript
+
+1998-10-06 Sebastian Rahtz
+ * hyperref.dtx: make all eqnarray stop being an anchor, as it may
+ break over pages.
+ * Whoops. PDF@SetupDoc was after \MayBeStopEarly...
+
+1998-09-24 6.36 Sebastian Rahtz
+ * RELEASE 6.36
+ * hyperref.dtx: even if bookmark writing disable, \pdfbookmark still
+ needs to make anchors
+
+1998-09-22 Sebastian Rahtz
+ * hyperref.dtx: xdef not edef in \@writetorep (thanks to Christian
+ Kumpf <kumpf@igd.fhg.de>)
+
+1998-09-12 Sebastian Rahtz
+ * hyperref.dtx: added option pdfnumberbookmarks to include section
+ numbers in PDF bookmarks
+
+1998-09-07 6.35 Sebastian Rahtz
+ * RELEASE 6.35
+ * hyperref.dtx: added DOCVIEW stuff to dviwindo driver
+ better check for playing in head, means no more overfull hbox
+ messages
+
+1998-09-04 Sebastian Rahtz
+ * hyperref.dtx: added DOCVIEW stuff to dvipsone driver (pointed
+ out by D P Story)
+
+1998-09-03 Sebastian Rahtz
+ * hyperref.dtx:
+ a) added new option linktocpage to make TOC have links on page
+ numbers
+ b) rewrote or checked all uses of \colorlink, so that they
+ have a corresponding \hy@endcolorlink (was \hyper@resetcolor),
+ and so are in a \begingroup ... \endgroup group (requested by
+ Patrick Daly, for consistency if nothing else). Renamed
+ \colorlink to \hy@colorlink
+
+1998-09-02 6.34 Sebastian Rahtz
+ * RELEASE 6.34
+ * hyperref.dtx: chivvied around pdfview so that it worked, and did
+ not override hyperref.cfg. concept of \@pdfviewparam for size
+ parameters
+
+1998-08-11 6.33 Sebastian Rahtz
+ * RELEASE 6.33
+ * hyperref.dtx: fix up some forms problems for Laurent Guillope
+
+1998-08-08 Sebastian Rahtz
+ * hyperref.dtx: add option `implicit' to allow (with value of
+ false) for no redefinition of LaTeX internals. Re-ordered some
+ code sections to allow for this.
+
+1998-08-02 Sebastian Rahtz
+ * hyperref.dtx: corrected some typos and mistakes in form support
+
+1998-07-20 Sebastian Rahtz
+ * hyperref.dtx: change check of empty head (from test by Denis
+ Roegel)
+
+1998-07-06 6.32 Sebastian Rahtz
+ * RELEASE 6.32
+ * backref.dtx: better test for natbib-like styles
+ * hyperref.dtx: add natbib link break macro
+ * dvipsone: use same pdfsetup as dviwindo
+
+1998-06-27 6.31 Sebastian Rahtz
+ * RELEASE 6.31
+ * hyperref.dtx: correct order of part and writetorep
+ * hyperref.dtx: more fixes from MicroPress for their driver. zero
+ width hidden fields -> width of 1sp. Piet van Oostrum's additions
+ to bookmark writing code.
+ * add support for "pdfstartview={}", to get `default'
+ magnification. hyper@linkfile for pdftex always does a user action
+ now
+ * Patrick Daly's addition of \ifvmode\nobreak\fi in pdftex start
+ anchor fixes his section problems, but is not entirely general.
+
+1998-06-25 Sebastian Rahtz
+ * hyperref.dtx: fix NoHyper bug *properly* this time.
+
+1998-06-25 6.30 Sebastian Rahtz
+ * RELEASE 6.30
+ * hyperref.dtx: zero width hidden fields. support pdfstartview of
+ {}. allow NewWindow false with pdfnewwindow option. correct bug in
+ default value of centerwindow and fitwindow. fix bug in NoHyper.
+ fix bug in \pageref*.
+ * Add \autoref macro to generate tagged references.
+
+1998-06-24 6.29 Sebastian Rahtz
+ * RELEASE 6.29
+ * hyperref.dtx: add \ref* and \pageref* to produce unlinked
+ references, and fix bug in label@hyperref.
+ add page transitions for pdftex driver
+
+1998-06-23 Sebastian Rahtz
+ * hyperref.dtx: add support for page transitions in pdfmark driver
+ * hyperref.dtx: add key pdfpagelayout
+ * hyperref.dtx: revise form lists, now support Display=Value syntax
+ * hyperref.dtx: change test for whether natbib-like code is
+ present (if NAT@parse is defined), since things like aguplus dont
+ load natbib per se, but use the same code.
+
+1998-06-21 Sebastian Rahtz
+ * hyperref.dtx: if form list value starts with a [, its assumed to
+ be an array of two strings, display and use values.
+ * hyperref.dtx: add `readonly' key for pdf forms, and hidden for
+ HTML
+ * hyperref.dtx: restructure form drivers to isolate common code
+ for pdftex and pdfmark.
+
+1998-06-20 Sebastian Rahtz
+ * hyperref.dtx: add `hidden' key for forms
+
+1998-06-19 6.28 Sebastian Rahtz
+ * RELEASE 6.28
+ * hyperref.dtx: use pdftex version and revision numbers
+ * hyperref.dtx: corrected stupid error which meant that the
+ bookmark file was not being opened.
+
+1998-06-16 6.27 Sebastian Rahtz
+ * RELEASE 6.27
+ * hyperref.dtx: finished pdftex forms, and reworked several
+ aspects of forms in general.
+
+1998-06-15 Sebastian Rahtz
+ * hyperref.dtx: use \filename@parse to decide whether a file: URL
+ is a local open or a URL. makes ../../xxx work.
+ * VTEX drivers driven by single `vtex' option which checks
+ \OpMode
+
+1998-06-13 Sebastian Rahtz
+ * hyperref.dtx: merge in material from MicroPress to provide support
+ for VTEX's two new modes of operation, PDF and HTML. Drivers hvtex
+ and hvtexhtml.
+
+1998-06-12 6.26 Sebastian Rahtz
+ * (private) RELEASE 6.26
+ addition from DPC to provide better support for encoding in
+ .out files (must use inputenc)
+ * (private) RELEASE 6.25
+ * hyperref.dtx:
+ removed quotes from names in dviwindo (DP Story)
+ comma after file destination in dviwindo (DP Story)
+ rejig parsing of file: to cope with ../foo/bar, at the
+ cost of files having to be at least two characters long. ../..
+ doesn't work either :-}
+
+1998-06-05 6.24 Sebastian Rahtz
+ * (private) RELEASE 6.24
+ * hyperref.dtx: unset \@tempa at start of ProcessKVOptions (David
+ Carlisle)
+ * hyperref.dtx: pdftex base url syntax wrong; and if baseurl
+ provided, need to strip file: from URL (corrections by
+ daly@linpwd.mpae.gwdg.de (P.W.Daly, MPAe, Lindau, Germany)
+
+1998-05-27 6.23 Sebastian Rahtz
+ * (private) RELEASE 6.23
+ * hyperref.dtx: remove spurious space in pdfview in pdftex driver
+
+1998-05-16 6.22 Sebastian Rahtz
+ * (private) RELEASE 6.22
+ * hyperref.dtx: in draft mode, need fifth and secondoffive to be
+ really secondoffive
+
+1998-05-08 6.21 Sebastian Rahtz
+ * (private) RELEASE 6.21
+ * hyperref.dtx: added new key "pdfhighlight" to set Acrobat
+ behaviour when a link is pressed. Make destinations use the Action
+ dictionary. Added first cut at forms support.
+
+1998-03-25 6.20 Sebastian Rahtz
+ * (private) RELEASE 6.20
+ * RELEASE 6.19
+ * pdftex seems to have changed, added goto page for openaction
+ * hyperref.dtx: put / in front of pdfstartview
+ still changing textures driver
+
+1998-03-22 6.18 Sebastian Rahtz
+ * RELEASE 6.18
+
+1998-03-21 Sebastian Rahtz
+ * hyperref.dtx: add conditional code for fancyvrb, to stop
+ links being made to fancyvrb lines.
+ * experimental textures driver
+ * pdftex as 0.12 the default; use guard pdftexold to select 0.11
+ behaviour
+
+1998-03-07 6.17 Sebastian Rahtz
+ * RELEASE 6.17
+ * hyperref.dtx: patches from Piotr Krysiuk
+ <pkrysiuk@mimuw.edu.pl> to make it run under LaTeX 209
+ compatibility mode
+
+1998-03-05 Sebastian Rahtz
+ * hyperref.dtx: put braces around URL in pdfmark driver, to stop
+ keyval splitting at an = sign within the URL (bug report from Ahmed
+ Hindawi <hindawi@ephouse.com>)
+
+1998-03-03 Sebastian Rahtz
+ * hyperref.dtx: add first cut at tex4ht driver
+ * hyperref.dtx: changes for pdftex 0.12 driver (syntax changes)
+
+1998-02-28 6.16 Sebastian Rahtz
+ * (private) RELEASE 6.16
+ * hyperref.dtx: AMSLaTeX does everything twice; pdftex actually
+ *executes* the hyper code twice, so that destinations are defined
+ twice. Make use of \ifmeasuring@ to avoid this.
+
+1998-02-25 6.15 Sebastian Rahtz
+ * RELEASE 6.15
+ * Sigh. Messed up counters again. Fixed. It had better be right
+ this time.
+ * RELEASE 6.14
+ * hyperref.dtx: added key bookmarksopen to dictate whether or not
+ the bookmark tree is expanded (from Brian Ripley)
+ * cleaned up the *horrible* mess created by me over items, which
+ mean that I had turned off the incrementing....
+ * typo in \pdfbookmark corrected
+
+1998-02-23 6.13 Sebastian Rahtz
+ * RELEASE 6.13
+ * changes to \item had totally wrecked natbib :-}
+ * added keys for PDF creator and producer
+ * re-fix \@footnotemark in \maketitle
+ * reverse parameters of \htmladdnormallink
+
+1998-02-20 6.12 Sebastian Rahtz
+ * RELEASE 6.12
+ * RELEASE 6.11
+ * hyperref.dtx: play around with items again for Tanmoy. ugh, all
+ sorts of changes to stop bibitems getting 3 destinations defined.
+
+1998-01-26 Sebastian Rahtz
+ * hyperref.dtx: define \@makefnmark instead of \@footnotemark, to
+ take advantage of white space and hyphenation fudges (from DPC)
+ * backref.dtx: remove white space in for loop of \backcite
+
+1998-01-22 6.10 Sebastian Rahtz
+ * RELEASE 6.10
+ * more dealing with \url, allowing for _
+
+1998-01-21 6.9 Sebastian Rahtz
+ * release 6.9
+ * fixed some small bugs (though more remain) and added
+ \Acrobatmenu command.
+
+1997-12-11 Sebastian Rahtz
+ * hyperref.dtx: altered algorithm of tocdepth for pdf bookmarks;
+ rewrote nesting again. still concerned about global allocation
+ of `current' tokens, and lack of nesting in PS file.
+
+1997-12-09 Sebastian Rahtz
+ * hyperref.dtx: rewrote handling of (non) nesting. the innards of
+ an anchor are now processing inside {\stop@hyper...} which
+ hopefully makes all hyper commands no-ops. ripley@stats.ox.ac.uk
+ (Prof Brian Ripley) found several things which forced me to do
+ *something* (ie a \cite inside a \caption gave the destination of
+ the cite to the caption)
+ * Daniel T. Cobra <cobra@gyron.acate.com.br> gave me a new
+ incompatibility with ps2pdf
+
+1997-11-24 6.7 Sebastian Rahtz
+ * RELEASE 6.7
+ * started hyperref ChangeLog. cleanup of copyright for Debian inclusion
diff --git a/macros/latex/contrib/hyperref/README.md b/macros/latex/contrib/hyperref/README.md
new file mode 100644
index 0000000000..36a9643c82
--- /dev/null
+++ b/macros/latex/contrib/hyperref/README.md
@@ -0,0 +1,182 @@
+# README for hyperref bundle
+2019-06-12
+
+
+## INTRODUCTION
+
+
+This package is used to emend cross-referencing commands in LaTeX to
+produce some sort of \special commands; there are backends for the
+\special set defined for HyperTeX dvi processors, for embedded pdfmark
+commands for processing by Acrobat Distiller (dvips and dvipsone), for
+dviwindo, for pdfTeX, for dvipdfm, for TeX4ht, and for VTEX's pdf and HTML
+backends.
+
+Included are:
+
+ 1. `hyperef' The main hyperlinking functionality.
+ 2. `backref' a package by David Carlisle to provide links back from
+ bibliography to the main text; these are hypertext links after using
+ hyperref.
+ 3. nameref' a package to allow reference to the *names* of sections rather
+ than their numbers.
+
+## DOWNLOAD
+
+
+`hyperref' is available on CTAN:
+ CTAN:macros/latex/contrib/hyperref/
+
+Also a ZIP file is provided that contains the files, already sorted
+in a TDS tree:
+ CTAN:install/macros/latex/contrib/hyperref.tds.zip
+
+"CTAN:" means one of the `Comprehensive TeX Archive Network'
+nodes or one of its mirrors. This is explained in
+ https://texfaq.org/FAQ-archives
+
+The main repository of hyperref is located at github
+ https://github.com/ho-tex/hyperref
+
+
+## INSTALLATION
+
+
+### Installation with ZIP file in TDS format
+
+The ZIP file `hyperref.tds.zip' contains the files sorted
+in a TDS tree. Thus you can directly unpack the ZIP file
+inside a TDS tree. (See CTAN:tds.zip for an explanation of TDS.)
+Example:
+```
+ cd /...somewhere.../texmf
+ unzip /...downloadpath.../hyperref.tds.zip
+```
+Do not forget to refresh the file name database of this TDS tree,
+Example:
+```
+ texhash /...somewhere.../texmf
+```
+
+### Manual installation
+
+ 1. Download the hyperref files from CTAN or the TUG server.
+ If necessary, unpack them.
+ 2. If directory `beta' exists, replace the files by the counterparts
+ in this directory, if you want to use the latest versions.
+ 3. Generate the package and driver files:
+ tex hyperref.ins
+ 4. Install the files `*.sty', `*.def', and `*.cfg' in your TDS tree:
+ cp *.sty *.def *.cfg TDS:tex/latex/hyperref/
+ Replace `TDS:' by the prefix of your TDS tree (texmf directory).
+ The exception is bmhydoc.sty, it belongs to the source files
+ (TDS:source/latex/hyperref/).
+ 5. Copy the documentation files to "TDS:doc/latex/hyperref/":
+ manual.pdf, README.md, ChangeLog.txt,
+ slides.pdf, paper.pdf, options.pdf, hyperref.pdf, backref.pdf,
+ nameref.pdf (Also the HTML version of the manual can be put there.)
+ 6. Update the databases if necessary, eg. for teTeX:
+ mktexlsr .../texmf
+
+## AUTHORS/MAINTAINERS
+
+
+ * Sebastian Rahtz (died 2016)
+ * Heiko Oberdiek
+ * David Carlisle (via GitHub ho-tex origanisation)
+
+
+## BUG REPORTS
+
+
+A bug report should contain:
+
+ * Comprehensive problem description. This includes error or
+ warning messages.
+ * \errorcontextlines=\maxdimen can be added in the TeX code
+ to get more informations in TeX error messages.
+ * Minimal test file that shows the problem, but does not
+ contain any unnecessary packages and code.
+ * Used drivers/programs.
+ * Version information about used packages and programs.
+ * If you are using LaTeX, then add "\listfiles". Then
+ a list of version informations is printed at the end
+ of the LaTeX run.
+ * Please no other files than the minimal test file.
+ The other files .log, .dvi, .ps, .pdf are seldom necessary,
+ so send them only on request.
+
+## Bug address
+
+A bug tracker is available at github:
+ https://github.com/ho-tex/oberdiek/issues
+
+Alternatively bug reports can be send to the support group public email list:
+ <ho-tex [at] tug [dot] org>
+
+## Vietnamese part
+
+Responsible for the Vietnamese translations of the
+\autoref names and puvnenc.def are:
+ Han The Thanh <hanthethanh [at] gmail [dot] com>
+ Reinhard Kotucha <reinhard [dot] kotucha at web [dot] de>
+
+## Arabic part
+
+Responsible for the additions to PU encoding for Arabi is
+ Youssef Jabri <yjabri [at] ensa [dot] univ-oujda [dot] ac [dot] ma>
+
+
+## KNOWN PROBLEMS
+
+
+ * (half-done) hyper images (link from thumbnail in text)
+ * Relative links are not sorted out or documented well.
+ For PDF generation:
+ * With baseurl: all links are considered relative to this URL.
+ * Without baseurl: a relative link without "file:" can be
+ achieved by:
+ ```
+ \begingroup
+ \hypersetup{linkfileprefix={}}%
+ \href{../foo/bar.html}{bar.html}
+ \endgroup
+ ```
+ * ...
+
+
+## TODO
+
+ * modules
+ * bookmark organisation
+ * documentation
+ * PDF threads
+ * more for PDF forms
+ * per object setting
+ * vary gap between text and box
+ * PostScript driver: the current implementation doesn't relly support
+ nested links. The start positions should be remembered in a stack,
+ but there are complications with page breaks.
+ * ...
+
+
+## VERSIONS IN TEX DISTRIBUTIONS
+
+| TeX Live | hyperref | comment |
+| -------- | -------- | ------- |
+| TL 2016 | 2016/05/05 v6.83n | (at time of first release) |
+| TL 2011 | 2011/04/17 v6.82g | (at time of first release) |
+| TL 2010 | 2010/06/18 v6.81g | (at time of first release) |
+| TL 2009 | 2009/10/09 v6.79a | (at time of first release) |
+| TL 2008 | 2008/08/14 v6.78f | (at time of first release) |
+| TL 2007 | 2007/02/07 v6.75r | |
+| TL 2005 | 2003/11/30 v6.74m | |
+| TL 2004 | 2003/11/30 v6.74m | |
+| TL 2003 | 2003/09/15 v6.74i | |
+| TL 7 (2002) | 2002/05/27 v6.72r | |
+| TL 6b (2001) | 2001/05/26 v6.71g | |
+| TL 5d (2000) | 2000/07/02 v6.70m | |
+| TL 5c (2000) | 2000/05/08 v6.70f | |
+| TL 4 (1999) | 1999/04/13 v6.56 | |
+| TL 3 (1998) | 1998/03/25 v6.19 | |
+
diff --git a/macros/latex/contrib/hyperref/backref.dtx b/macros/latex/contrib/hyperref/backref.dtx
new file mode 100644
index 0000000000..dd31e66d71
--- /dev/null
+++ b/macros/latex/contrib/hyperref/backref.dtx
@@ -0,0 +1,947 @@
+% \iffalse
+%% File: backref.dtx
+%% Copyright (C) 1995-2000 David Carlisle, Sebastian Rahtz, Heiko Oberdiek
+%% 2001-2012 Heiko Oberdiek
+%% 2016 Oberdiek Package Suport Group
+%% https://github.com/ho-tex/hyperref/issues
+%%
+%% This file is part of the `Hyperref Bundle'.
+%% -------------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% The list of all files belonging to the `Hyperref Bundle' is
+%% given in the file `manifest.txt'.
+%
+%<*dtx>
+\ProvidesFile{backref.dtx}
+%</dtx>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{backref}
+%<driver>\ProvidesFile{backref.drv}
+% \fi
+% \ProvidesFile{backref.dtx}
+ [2016/05/21 v1.39 Bibliographical back referencing]%
+%
+% \CheckSum{768}
+%
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[numbered]{hypdoc}
+\usepackage{bmhydoc}
+\usepackage{backref}
+\EnableCrossrefs
+\CodelineIndex
+\begin{document}
+ \GetFileInfo{backref.sty}%
+ \title{%
+ Back referencing from bibliographical citations%
+ \thanks{%
+ This file has version number \fileversion, %
+ last revised \filedate.%
+ }%
+ }%
+ \author{David Carlisle and Sebastian Rahtz (deceased)}%
+ \date{\filedate}%
+ \maketitle
+ \makeatletter
+ \@ifundefined{HyperrefOverview}{}{%
+ \HyperrefOverview*%
+ }%
+ \tableofcontents
+ \DocInput{backref.dtx}%
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \MakeShortVerb{|}
+%
+% \section{Introduction}
+%
+% \section{Usage}
+%
+% \subsection{Options}
+%
+% The supported options are given as package options.
+% Few options (e.g. |verbose|, |enable|, |disable|)
+% can be changed after the package is loaded by
+% the macro \cs{backrefsetup}, e.g.:
+% \begin{quote}
+%\begin{verbatim}
+%\usepackage[verbose]{backref}
+%\backrefsetup{verbose=false}
+%\end{verbatim}
+% \end{quote}
+% This macro is available since version 2012/07/24 v1.37.
+%
+% \subsubsection{Options for type of back references}
+%
+% In short the following options set the type of back
+% references. Default is option |pageref|.
+% \begin{quote}
+% \begin{tabular}{@{}ll@{}}
+% |ref| & section number\\
+% |pageref| & page number\\
+% |hyperref| & section number as hyper link\\
+% |hyperpageref| & page number as hyper link
+% \end{tabular}
+% \end{quote}
+% The options that start with |hyper| are intended for
+% the use with package |hyperref|. In this case package
+% |backref| will be loaded automatically if the |hyperref|
+% options |backref| or |pagebackref| are given. Package
+% |hyperref| then loads package |backref| with the appropriate
+% option:
+% \begin{quote}
+% \begin{tabular}{@{}ll@{}}
+% |hyperref| option & |backref| option set by |hyperref|\\
+% \hline
+% |backref| & |hyperref|\\
+% |backref=section| & |hyperref|\\
+% |backref=slide| & |hyperref|\\
+% |backref=page| & |hyperpageref|\\
+% |pagebackref| & |hyperpageref|
+% \end{tabular}
+% \end{quote}
+%
+% \subsubsection{Language options}
+%
+% Currently supported options are |english| (|american|, |australian|,
+% |british|, |canadian|, |newzealand|, |UKenglish|, |USenglish|),
+% |german| (|ngerman|, |austrian|, |naustrian|),
+% |french| (|acadian|, |canadien|, |frenchb|, |francais|),
+% |spanish|, and |brazil| (|brazilian|).
+% Default is |english|.
+%
+% \subsubsection{Other options}
+%
+% \begin{description}
+% \item[|verbose|:]
+% A message is written into the |.aux| file for each
+% reference that is found for back citing.
+% \item[|enable|, |disable|:]
+% If a citation should not be back cited, then
+% the recording can be turned off by option |disable|
+% and enabled again afterwards, e.g.:
+% \begin{quote}
+%\begin{verbatim}
+%\bookmarksetup{disable}\cite{...}\bookmarksetup{enable}
+%\end{verbatim}
+% \end{quote}
+% Both options are added in version 2012/07/24 v1.37.
+% \end{description}
+%
+% \subsection{Detecting the end of a bibliography entry}
+%
+% Package |backref| has to be able to detect the end of an entry
+% in the bibliography, therefore each \cmd{\bibitem} entry must
+% be ended by an empty line (or a |\par| token).
+% \nopagebreak
+%
+% Example:
+%\begin{quote}
+%\begin{verbatim}
+%\begin{thebibliography}{9}
+%\bibitem[bib:abc] First entry.
+%
+%\bibitem[bib:foo] Second entry.
+%
+%\end{thebibliography}
+%\end{verbatim}
+%\end{quote}
+% Then package |backref| can automatically add hooks
+% for the back references list at the end of the entries.
+%
+% \DescribeMacro{\backrefparscanfalse}
+% \DescribeMacro{\backrefparscantrue}
+% Sometimes it is not appropriate if the entry is read as
+% argument. For example, catcode changes for verbatim stuff
+% do not have the desired effect. Therefore the scan for
+% the \cs{par} token can be disabled by \cs{backrefparscanfalse}
+% before \cs{bibitem} and enabled by \cs{backrefparscantrue}
+% afterwards.
+%
+% \DescribeMacro{\backrefprint}
+% If the scan for the end of the entry is disabled, then package
+% |backref| does not know where to put the back references
+% list. The list is printed by the macro \cs{backrefprint}, thus
+% just call it at the right place. Example:
+%\begin{quote}
+%\begin{verbatim}
+%\backrefparscanfalse % disable scan for entry ending
+%\bibitem[...]{...}
+% ... \verb|...| ... % potentially dangerous stuff
+% ... \url{...} ...
+% \backrefprint % print back reference list here
+%\backrefparscantrue % enable scan again
+%\end{verbatim}
+%\end{quote}
+%
+% \subsection{Formatting of the back references list}
+%
+% The back references list is separated from the entry
+% by \cmd{\newblock},
+% if the used bibliography package supports this. The package options
+% control the kind of back references (page numbers, sections numbers),
+% whereas the hooks control the formatting.
+%
+% There are two hooks \cmd{\backref} and a new hook \cmd{\backrefalt},
+% available since version 1.21 of package |backref|. The former one
+% is enabled by default.
+%
+% \subsubsection{Formatting hook \cs{backref}}
+%
+% Macro \cmd{\backref} has a a comma separated
+% list of backref references as first and only argument.
+% With hyperref options only this list will be printed. Without
+% hyperref there is an introductionary text, controlled by
+% macros \cmd{\backrefpagesname} or \cmd{\backrefsectionsname}.
+%
+% \subsubsection{Formatting hook \cs{backrefalt}}
+%
+% \cmd{\backrefalt} is a new interface since version 1.21 of package
+% |backref|. It takes four arguments:
+% \begin{enumerate}
+% \item Number of citations without dupes.
+% \item Back references list without dupes.
+% \item Number of all citations (with dupes).
+% \item Back reference list with all entries (with dupes).
+% \end{enumerate}
+% The latter options consider equal entries as one entry.
+% Now \cmd{\backrefalt} can easily be defined with text that
+% depends on the number of citations, for example:
+%\begin{quote}
+%\begin{verbatim}
+%\usepackage[backref]{backref}
+%\renewcommand*{\backref}[1]{}% for backref < 1.33 necessary
+%\renewcommand*{\backrefalt}[4]{%
+% \ifcase #1 %
+% No citations.%
+% \or
+% One citation in section #2.%
+% \else
+% #1 citations in sections #2.%
+% \fi
+%}
+%\end{verbatim}
+%\end{quote}
+% The separation between the list entries are controlled by
+% the following macros:
+% \begin{itemize}
+% \item \cmd{\backrefsep}: inserted between entries except for the
+% next cases, default is ``\verb*|, |''.
+% \item \cmd{\backreftwosep}: inserted between entries in
+% a list of two entries, default is ``\verb*| and~|''.
+% \item \cmd{\backreflastsep}: inserted between the last two
+% entries of a list with more than two entries, default is
+% ``\verb*|, and~|''.
+% \end{itemize}
+% Examples:
+% \begin{quote}
+% \meta{entry1}\\
+% \meta{entry1} \cmd{\backreftwosep} \meta{entry2}\\
+% \meta{entry1} \cmd{\backrefsep} \meta{entry2}
+% \cmd{\backreflastsep} \meta{entry3}
+% \end{quote}
+% Since version 1.33 it is not necessary to redefine
+% \backref, it is automatically disabled if \backrefalt
+% is redefined.
+%
+% \subsubsection{Refinement \cs{backrefentrycount}}
+%
+% Since version 1.33 the entries of the distinct list of
+% interface \cs{backrefalt} are wrapped in
+% \cs{backrefentrycount}. The macro is called with two
+% arguments. The first is the backref entry and the second
+% one the citation count of this entry. As default the
+% macro passes the first argument through and ignores the
+% count argument. But it can be redefined, e.g.
+%\begin{quote}
+%\begin{verbatim}
+%\renewcommand*{\backrefalt}[4]{...}% see above
+%\renewcommand*{\backrefentrycount}[2]{%
+% #1%
+% \ifnum#2>1 %
+% ~(#2)%
+% \fi
+%}
+%\end{verbatim}
+%\end{quote}
+% In case of duplicates, the distinct entry is
+% appended by the number of citations in parentheses.
+%
+% \StopEventually{}
+%
+% \section{The macros}
+% Internal command names of this package start with |\BR@|,
+% commands, that store the original meaning of commands, which
+% will be redefined, are prefixed with |\BRorg@|.
+%
+% \subsection{Package identification}
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \subsection{Options}
+%
+% \begin{macrocode}
+\RequirePackage{kvoptions}[2011/06/30]
+\RequirePackage{kvsetkeys}[2009/07/30]
+\RequirePackage{ltxcmds}[2009/12/12]
+\SetupKeyvalOptions{%
+ family=backref,%
+ prefix=BR@,%
+}
+% \end{macrocode}
+% \begin{macro}{\backrefsetup}
+% \begin{macrocode}
+\newcommand*{\backrefsetup}{\kvsetkeys{backref}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Option verbose}
+% If package hyperref is loaded, then its setting is used as
+% default for the verbose switch.
+% \begin{macrocode}
+\DeclareBoolOption[%
+ \ltx@ifundefined{ifHy@verbose}{%
+ false%
+ }{%
+ \ifx\ifHy@verbose\iftrue true\else false\fi
+ }%
+]{verbose}
+% \end{macrocode}
+%
+% \subsubsection{Options for way of working}
+%
+% What is printed depends on how the 3 available items of
+% information are used (page number, section number, label).
+% \begin{macrocode}
+\long\def\page@backref#1#2#3{#1}
+\long\def\section@backref#1#2#3{#2}
+\long\def\hyper@section@backref#1#2#3{\hyperlink{#3}{#2}}
+\long\def\hyper@page@backref#1#2#3{\hyperlink{page.#1}{#1}}
+% \end{macrocode}
+% Now the options follows, that can be used without
+% package hyperref.
+% \begin{macrocode}
+\DeclareVoidOption{pageref}{%
+ \def\backref{\backrefpagesname\ }%
+ \let\backrefxxx\page@backref
+}
+\DeclareVoidOption{ref}{%
+ \def\backref{\backrefsectionsname\ }%
+ \let\backrefxxx\section@backref
+}
+% \end{macrocode}
+% Set up back-referencing to be hyper links, by page or section.
+% \begin{macrocode}
+\DeclareVoidOption{hyperref}{%
+ \def\backref{}\let\backrefxxx\hyper@section@backref
+}
+\DeclareVoidOption{hyperpageref}{%
+ \def\backref{}\let\backrefxxx\hyper@page@backref
+}
+% \end{macrocode}
+% Recording the back references in the auxiliary file can
+% be enabled and disabled by the following options.
+% \begin{macrocode}
+\DeclareBoolOption[true]{enable}
+\DeclareComplementaryOption{disable}{enable}
+% \end{macrocode}
+%
+% \subsubsection{Language options}
+%
+% \begin{macrocode}
+\def\backrefenglish{%
+ \def\backrefpagesname{pages}%
+ \def\backrefsectionsname{sections}%
+ \def\backrefsep{, }%
+ \def\backreftwosep{ and~}%
+ \def\backreflastsep{, and~}%
+}
+\def\backrefgerman{%
+ \def\backrefpagesname{Seiten}%
+ \def\backrefsectionsname{Abschnitte}%
+ \def\backrefsep{, }%
+ \def\backreftwosep{ und~}%
+ \def\backreflastsep{ und~}%
+}
+\def\backreffrench{%
+ \def\backrefpagesname{pages}%
+ \def\backrefsectionsname{sections}%
+ \def\backrefsep{, }%
+ \def\backreftwosep{ et~}%
+ \def\backreflastsep{ et~}%
+}
+\def\backrefspanish{%
+ \def\backrefpagesname{p\'aginas}%
+ \def\backrefsectionsname{secciones}%
+ \def\backrefsep{, }%
+ \def\backreftwosep{ y~}%
+ \def\backreflastsep{ y~}%
+}
+\def\backrefbrazil{%
+ \def\backrefpagesname{p\'aginas}%
+ \def\backrefsectionsname{se\c c\~oes}%
+ \def\backrefsep{, }%
+ \def\backreftwosep{ e~}%
+ \def\backreflastsep{ e~}%
+}
+\def\backrefafrikaans{%
+ \def\backrefpagesname{bladsye}%
+ \def\backrefsectionsname{afdelings}%
+ \def\backrefsep{, }%
+ \def\backreftwosep{ en~}%
+ \def\backreflastsep{ en~}%
+}%
+% \end{macrocode}
+% Instead of package babel's definition of \cmd{\addto} the
+% implementation of package varioref is used. Additionally
+% argument |#1| is checked for \cmd{\relax}.
+% \begin{macrocode}
+\def\BR@addto#1#2{%
+ #2%
+ \@temptokena{#2}%
+ \ifx#1\relax
+ \let#1\@empty
+ \fi
+ \ifx#1\@undefined
+ \edef#1{\the\@temptokena}%
+ \else
+ \toks@\expandafter{#1}%
+ \edef#1{\the\toks@\the\@temptokena}%
+ \fi
+ \@temptokena{}\toks@\@temptokena
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\BR@DeclareLang#1#2{%
+ \begingroup
+ \edef\x##1##2{%
+ \noexpand\ifx##2\relax
+ \errmessage{No definitions for language `#2' found!}%
+ \noexpand\fi
+ \endgroup
+ \noexpand\DeclareVoidOption{#1}{%
+ \noexpand\BR@addto{\noexpand##1}{\noexpand##2}%
+ }%
+ }%
+ \expandafter\x\csname extras#1\expandafter\endcsname
+ \csname backref#2\expandafter\endcsname
+}
+\BR@DeclareLang{english}{english}
+\BR@DeclareLang{american}{english}
+\BR@DeclareLang{australian}{english}
+\BR@DeclareLang{british}{english}
+\BR@DeclareLang{canadian}{english}
+\BR@DeclareLang{newzealand}{english}
+\BR@DeclareLang{UKenglish}{english}
+\BR@DeclareLang{USenglish}{english}
+\BR@DeclareLang{german}{german}
+\BR@DeclareLang{ngerman}{german}
+\BR@DeclareLang{austrian}{german}
+\BR@DeclareLang{naustrian}{german}
+\BR@DeclareLang{french}{french}
+\BR@DeclareLang{acadian}{french}
+\BR@DeclareLang{canadien}{french}
+\BR@DeclareLang{frenchb}{french}
+\BR@DeclareLang{francais}{french}
+\BR@DeclareLang{spanish}{spanish}
+\BR@DeclareLang{brazil}{brazil}
+\BR@DeclareLang{brazilian}{brazil}
+\BR@DeclareLang{afrikaans}{afrikaans}
+% \end{macrocode}
+% Default is the english version:
+% \begin{macrocode}
+\backrefenglish
+% \end{macrocode}
+%
+% \subsubsection{Process options}
+%
+% \begin{macrocode}
+\backrefsetup{pageref}
+\ProcessKeyvalOptions*
+% \end{macrocode}
+%
+% \begin{macro}{\BR@DisableOption}
+% \begin{macrocode}
+\def\BR@DisableOption#1{%
+ \DisableKeyvalOption[%
+ action=warning,%
+ package=backref,%
+ ]{backref}{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\BR@DisableOption{ref}
+\BR@DisableOption{pageref}
+\BR@DisableOption{hyperref}
+\BR@DisableOption{hyperpageref}
+% \end{macrocode}
+%
+% \subsection{The bibliography}
+%
+% \begin{macro}{\ifbackrefparscan}
+% \begin{macrocode}
+\newif\ifbackrefparscan
+\backrefparscantrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifBR@BackrefAlt}
+% \begin{macrocode}
+\newif\ifBR@BackrefAlt
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\BR@bibitem}
+% \begin{macrocode}
+\def\BR@bibitem{%
+ \ifbackrefparscan
+ \expandafter\@ifnextchar\expandafter[\expandafter
+ \BR@@lbibitem\expandafter\BR@@bibitem
+ \else
+ \expandafter\@ifnextchar\expandafter[\expandafter
+ \BR@@@lbibitem\expandafter\BR@@@bibitem
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\def\BR@@lbibitem[#1]#2#3\par{%
+ \let\backrefprint\BR@backrefprint
+ \BRorg@bibitem[{#1}]{#2}#3%
+ \BR@backref{#2}%
+}%
+\def\BR@@bibitem#1#2\par{%
+ \let\backrefprint\BR@backrefprint
+ \BRorg@bibitem{#1}#2%
+ \BR@backref{#1}%
+}
+\def\BR@@@lbibitem[#1]#2{%
+ \def\backrefprint{\BR@backref{#2}}%
+ \BRorg@bibitem[{#1}]{#2}%
+}
+\def\BR@@@bibitem#1{%
+ \def\backrefprint{\BR@backref{#1}}%
+ \BRorg@bibitem{#1}%
+}
+\def\BR@backrefprint{%
+ \PackageError{backref}{%
+ \string\backrefprint\space is only available after \string\bibitem
+ \MessageBreak
+ with setting \string\backrefparscanfalse
+ }\@ehc
+}
+\let\backrefprint\BR@backrefprint
+\def\BR@backref#1{%
+ \newblock
+ \begingroup
+ \csname @safe@activestrue\endcsname
+ \expandafter\providecommand\csname brc@#1\endcsname{0}%
+ \expandafter\providecommand\csname brcd@#1\endcsname{0}%
+ \csname @safe@activesfalse\expandafter\endcsname
+ \ifBR@BackrefAlt
+ \ifx\backrefentrycount\BR@BackrefEntryCountUnused
+ \else
+ \BR@PopulateEntryCount{#1}%
+ \fi
+ \expandafter\backrefalt\csname brc@#1\expandafter\endcsname
+ \csname brl@#1\expandafter\endcsname
+ \csname brcd@#1\expandafter\endcsname
+ \csname brld@#1\endcsname
+ \else
+ \expandafter\backref\csname br@#1\expandafter\endcsname
+ \fi
+ \endgroup
+ \par
+}
+\@ifundefined{newblock}{\def\newblock{\par}}{}
+\let\BR@Unused\@empty
+\def\BR@BackrefAltUnused#1#2#3#4{\BR@Unused}
+\@ifundefined{backrefalt}{%
+ \let\backrefalt\BR@BackrefAltUnused
+}{}
+\def\BR@BackrefEntryCountUnused#1#2{\BR@Unused#1}
+\@ifundefined{backrefentrycount}{%
+ \let\backrefentrycount\BR@BackrefEntryCountUnused
+}{}
+% \end{macrocode}
+%
+% \subsection{Reading .brf file}
+%
+% \begin{macro}{\backcite}
+% The file |\jobname.brf| collects the back cite informations
+% as calls of \cmd{\backcite} with the informations
+% in the arguments.
+%
+% The first argument of macro \cmd{\backcite} is the citation
+% label, the second parameter contains the page number
+% (\cmd{\thepage}), the current label of the citation
+% (\cmd{\@currentlabel}), and the current anchor name
+% (\cmd{\@currentHref}). Example for a citation at the
+% first page in second section:
+%\begin{verbatim}
+%\backcite {bib:abc}{{1}{2}{section.2}}
+%\end{verbatim}
+%
+% While the file |\jobname.brf| is read, the informations are
+% collected and stored in macros whose names are build by the
+% citation label \meta{label}:
+% \begin{quote}
+% \begin{tabular}{@{}ll@{}}
+% |\br@|\meta{label} & list, entries separated by comma without dupes\\
+% |\brc@|\meta{label} & number of citations without dupes\\
+% |\brl@|\meta{label} & backref list without dupes\\
+% |\brcd@|\meta{label} & number of all citations (with dupes)\\
+% |\brld@|\meta{label} & backref list with all entries (with dupes)
+% \end{tabular}
+% \end{quote}
+% What are ``dupes''? An instance: you have three references to
+% an entry in the bibliography on the first page:
+%\begin{verbatim}
+%\backcite {bib:abc}{{1}{1}{section.1}}
+%\backcite {bib:abc}{{1}{1}{section.1}}
+%\backcite {bib:abc}{{1}{2}{section.2}}
+%\end{verbatim}
+% Then the whole backref list with option |pageref| would print, e.g.:
+% \begin{quote}
+% Entry for |bib:abc|. Cited on pages 1, 1, 1.
+% \end{quote}
+% Without dupes the entries with the same page number would be removed,
+% e.g.:
+% \begin{quote}
+% Entry for |bib:abc|. Cited on page 1.
+% \end{quote}
+% Also the third entry is removed, because it has the same page number.
+% For the comparison only these pieces of information are considered
+% that will be used later by \cmd{\backrefxxx}. With option
+% |pageref| macro \cmd{\backrefxxx} becomes \cmd{\page@backref} that
+% throws away the second and third argument and only uses the first
+% argument with the page number. To be more precise, the first
+% expansion of \cmd{\backrefxxx} is used in comparison. If some
+% arguments are used here, but later omitted, then this will not
+% be detected.
+%
+% \begin{macro}{\backrefxxxdupe}
+% With option |hyperref| you will get two entries
+% in the following example because the second entry differs in the
+% link information, so the result will be the same section number,
+% but as different links.
+%\begin{verbatim}
+%\backref {bib:abc}{{1}{1}{section.1}}
+%\backref {bib:abc}{{1}{1}{equation.1}}
+%\end{verbatim}
+% Macro \cmd{\backrefxxxdupe} will be used
+% in the comparison test if it is defined. Thus you can provide a
+% definition in this case as follows:
+%\begin{verbatim}
+%\newcommand*{\backrefxxxdupe}[3]{#2}
+%\end{verbatim}
+% Then only the section number is interpreted, but not the anchor name.
+% \end{macro}
+%
+% To avoid same entries, it is checked before, whether the entry
+% already exists. Only the information needed by \cmd{\backrefxxx}
+% is compared.
+% \begin{macrocode}
+\def\backcite#1#2{%
+ \@for\x:=#1\do{%
+ \begingroup
+ \csname @safe@activestrue\endcsname
+ \edef\x{\endgroup
+ \def\noexpand\x{\expandafter\@firstofone\x\@empty}%
+ }%
+ \x
+% \end{macrocode}
+% Now macro \cmd{\x} contains the citation label name.
+% \begin{macrocode}
+ \expandafter\ifx\csname br@\x\endcsname\relax
+% \end{macrocode}
+% Initialization, fill in the first entry.
+% \begin{macrocode}
+ \expandafter\protected@xdef\csname br@\x\endcsname{%
+ \protect\backrefxxx#2%
+ }%
+ \ifBR@BackrefAlt
+ \global\expandafter\let\csname brl@\x\expandafter\endcsname
+ \csname br@\x\endcsname
+ \global\expandafter\let\csname brld@\x\expandafter\endcsname
+ \csname br@\x\endcsname
+ \expandafter\gdef\csname brc@\x\endcsname{1}%
+ \expandafter\gdef\csname brcd@\x\endcsname{1}%
+ \fi
+ \else
+% \end{macrocode}
+% Fill in further entry. But check for dupe first.
+% \begin{macrocode}
+ \begingroup
+ \@ifundefined{backrefxxxdupe}{}{\let\backrefxxx\backrefxxxdupe}%
+ \expandafter\def\expandafter\reserved@a\expandafter{%
+ \backrefxxx#2%
+ }%
+ \let\BRorg@backrefxxx\backrefxxx
+ \global\let\BR@found=N%
+ \long\def\backrefxxx##1##2##3{%
+ \expandafter\def\expandafter\reserved@b\expandafter{%
+ \BRorg@backrefxxx{##1}{##2}{##3}%
+ }%
+ \ifx\reserved@a\reserved@b
+ \global\let\BR@found=Y%
+ \fi
+ }%
+ \setbox\@tempboxa\hbox{\csname br@\x\endcsname}%
+ \endgroup
+ \let\backrefsep\relax
+ \def\backreftwosep{\backrefsep}%
+ \def\backreflastsep{\backrefsep}%
+ \if N\BR@found
+ \expandafter\protected@xdef\csname br@\x\endcsname{%
+ \csname br@\x\endcsname, %
+ \protect\backrefxxx#2%
+ }%
+ \ifBR@BackrefAlt
+ \expandafter\protected@xdef\csname brl@\x\endcsname{%
+ \csname brl@\x\endcsname
+ \ifnum\@nameuse{brc@\x}=1 %
+ \noexpand\backreftwosep
+ \else
+ \noexpand\backreflastsep
+ \fi
+ \protect\backrefxxx#2%
+ }%
+ \count@=\@nameuse{brc@\x}\relax
+ \advance\count@ by 1 %
+ \expandafter\xdef\csname brc@\x\endcsname{\the\count@}%
+ \fi
+ \fi
+ \ifBR@BackrefAlt
+ \expandafter\protected@xdef\csname brld@\x\endcsname{%
+ \csname brld@\x\endcsname
+ \ifnum\@nameuse{brcd@\x}=1 %
+ \noexpand\backreftwosep
+ \else
+ \noexpand\backreflastsep
+ \fi
+ \protect\backrefxxx#2%
+ }%
+ \count@=\@nameuse{brcd@\x}\relax
+ \advance\count@ by 1 %
+ \expandafter\xdef\csname brcd@\x\endcsname{\the\count@}%
+ \fi
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\BR@PopulateEntryCount}
+% \begin{macrocode}
+\def\BR@PopulateEntryCount#1{%
+ \begingroup
+ \toks@{}%
+ \def\backrefsep{%
+ \toks@\expandafter{\the\toks@\backrefsep}%
+ }%
+ \def\backreftwosep{%
+ \toks@\expandafter{\the\toks@\backreftwosep}%
+ }%
+ \def\backreflastsep{%
+ \toks@\expandafter{\the\toks@\backreflastsep}%
+ }%
+ \def\protect{}%
+ \let\BR@backrefxxx\backrefxxx
+ \let\backrefxxx\BR@PopulateBackrefxxx
+ \def\BR@name{#1}%
+ \csname brl@#1\endcsname
+ \expandafter\xdef\csname brl@#1\endcsname{\the\toks@}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\BR@PopulateBackrefxxx}
+% \begin{macrocode}
+\def\BR@PopulateBackrefxxx#1#2#3{%
+ \expandafter\def\expandafter\BR@tempa\expandafter{%
+ \BR@backrefxxx{#1}{#2}{#3}%
+ }%
+ \begingroup
+ \count@=\z@
+ \def\backrefsep{}%
+ \def\backreftwosep{}%
+ \def\backreflastsep{}%
+ \let\backrefxxx\BR@@PopulateBackrefxxx
+ \csname brld@\BR@name\endcsname
+ \toks\tw@={\backrefxxx{#1}{#2}{#3}}%
+ \edef\x{\endgroup
+ \toks@{%
+ \the\toks@
+ \noexpand\backrefentrycount{%
+ \the\toks\tw@
+ }{\the\count@}%
+ }%
+ }%
+ \x
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\BR@@PopulateBackrefxxx}
+% \begin{macrocode}
+\def\BR@@PopulateBackrefxxx#1#2#3{%
+ \expandafter\def\expandafter\BR@tempb\expandafter{%
+ \BR@backrefxxx{#1}{#2}{#3}%
+ }%
+ \ifx\BR@tempa\BR@tempb
+ \advance\count@\@ne
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Initialization}
+%
+% \begin{macrocode}
+\def\@currentHref{}
+\AtBeginDocument{%
+ \let\BRorg@bibitem\bibitem
+ \let\bibitem\BR@bibitem
+ \let\BRorg@thebibliography\thebibliography
+ \def\thebibliography{%
+ \BR@starttoc
+ \BRorg@thebibliography
+ }%
+ \@ifundefined{NAT@parse}{%
+ \global\let\BRorg@citex\@citex
+ \global\let\@citex\BR@citex
+ }{%
+ \@ifpackageloaded{hyperref}{}{%
+ \def\hyper@natlinkstart#1{\Hy@backout{#1}}%
+ }%
+ \PackageInfo{backref}{** backref set up for natbib **}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\BR@starttoc}
+% \begin{macrocode}
+\def\BR@starttoc{%
+ \ifx\backrefalt\BR@BackrefAltUnused
+ \global\BR@BackrefAltfalse
+ \else
+ \global\BR@BackrefAlttrue
+ \fi
+ \begingroup
+ \makeatletter
+ \@input{\jobname.brf}%
+ \if@filesw
+ \@ifundefined{tf@brf}{%
+ \expandafter\newwrite\csname tf@brf\endcsname
+ }{}%
+ \@ifundefined{tf@brf@open}{%
+ \BR@RerunFileCheck
+ \immediate\openout\csname tf@brf\endcsname\jobname.brf\relax
+ \gdef\tf@brf@open{}%
+ }{}%
+ \fi
+ \@nobreakfalse
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Collecting back cite informations}
+%
+% \begin{macro}{\BR@citex}
+% \begin{macrocode}
+\def\BR@citex[#1]#2{%
+ \BRorg@citex[{#1}]{#2}%
+ \Hy@backout{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Grr. for chicago.sty
+% \begin{macrocode}
+\@ifpackageloaded{chicago}{%
+ \let\BRorg@citedatax\@citedatax
+ \def\@citedatax[#1]#2{%
+ \BRorg@citedatax[{#1}]{#2}%
+ \Hy@backout{#2}%
+ }%
+}{}
+% \end{macrocode}
+% \begin{macro}{\Hy@backout}
+% \begin{macrocode}
+\def\Hy@backout#1{%
+ \@bsphack
+ \ifBR@enable
+ \ifBR@verbose
+ \PackageInfo{backref}{Back cite \string`#1\string'}%
+ \fi
+ \ifx\@empty\@currentlabel
+ \protected@write\@auxout{}{%
+ \string\@writefile{brf}{%
+ \string\backcite{#1}{{\thepage}{(document)}{Doc-Start}}%
+ }%
+ }%
+ \else
+ \protected@write\@auxout{}{%
+ \string\@writefile{brf}{%
+ \string\backcite{#1}{{\thepage}{\@currentlabel}{\@currentHref}}%
+ }%
+ }%
+ \fi
+ \else
+ \ifBR@verbose
+ \PackageInfo{backref}{Disabled back cite \string`#1\string'}%
+ \fi
+ \fi
+ \@esphack
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Rerun warning}
+%
+% \begin{macro}{\BR@RerunFileCheck}
+% The following code computes a MD5 sum and the file size of the
+% |.brf| file at the begin and the end of the document and compares
+% them. A rerun warning is given, if they do not match.
+% This method requires pdf\TeX\ or Lua\TeX. The method fails,
+% if the MD5 sum and the file size are the same for
+% a changed |.brf| file (it's probably very seldom).
+% \begin{macrocode}
+\RequirePackage{rerunfilecheck}[2009/12/10]
+\def\BR@RerunFileCheck{%
+ \RerunFileCheck{\jobname.brf}{%
+ \@ifundefined{tf@brf@open}{%
+ }{%
+ \immediate\closeout\tf@brf
+ }%
+ }{%
+ Rerun to get bibliographical references right%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/hyperref/backref.pdf b/macros/latex/contrib/hyperref/backref.pdf
new file mode 100644
index 0000000000..828f753f3c
--- /dev/null
+++ b/macros/latex/contrib/hyperref/backref.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/bmhydoc.sty b/macros/latex/contrib/hyperref/bmhydoc.sty
new file mode 100644
index 0000000000..e6491796ca
--- /dev/null
+++ b/macros/latex/contrib/hyperref/bmhydoc.sty
@@ -0,0 +1,115 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bmhydoc}
+ [2019/01/08 Bookmark section with hyperref documentation (HO)]
+
+% This package adds bookmark entries that are added at the end
+% and lists and links the PDF files of the hyperref documentation.
+% Only pdfTeX in PDF mode is supported by this package.
+%
+% History
+%
+% 2005/08/27
+% * First version
+% 2006/02/08
+% * Comments added
+% * \HyperrefOverview
+% 2007/03/19
+% * Use package bookmark that also support other drivers
+% than pdfTeX.
+% 2009/11/22
+% * Bug fix: correction of "this file".
+
+\RequirePackage{pifont}
+\RequirePackage[atend]{bookmark}[2007/04/04]
+
+\BookmarkAtEnd{%
+ \bookmarksetup{%
+ startatroot,%
+ open,%
+ openlevel=2%
+ }%
+}
+
+\newcommand*{\@bmhydoc}[4][]{%
+ \BookmarkAtEnd{%
+ \bookmark[%
+ gotor={#3},%
+ color={[rgb]{0,0,1}},%
+ level={#2},%
+ view={XYZ null null null},%
+ #1,%
+ ]{#4}%
+ }%
+}
+\AtEndDocument{%
+ \@bmhydoc[open=false]{0}{manual.pdf}{Hyperref manual}
+% \@bmhydoc{1}{README.pdf}{README}
+% \@bmhydoc{1}{ChangeLog.pdf}{ChangeLog}
+ \@bmhydoc{1}{options.pdf}{Options}
+ \@bmhydoc{1}{slides.pdf}{Bookmark talk, slides}
+ \@bmhydoc{2}{paper.pdf}{Bookmark talk, paper}
+ \@bmhydoc{1}{hyperref.pdf}{Sources: hyperref.dtx}
+ \@bmhydoc{2}{backref.pdf}{backref.dtx}
+ \@bmhydoc{2}{nameref.pdf}{nameref.dtx}
+}
+
+\newcommand*{\HyperrefOverview}{%
+ \def\bmhydoc@title{Documentation overview for \texttt{hyperref}}%
+ \@ifstar{%
+ % \phantomsection
+ % \addcontentsline{toc}{section}{\bmhydoc@title}%
+ \section*{\bmhydoc@title}%
+ \@HyperrefOverview
+ }{%
+ \section{\bmhydoc@title}%
+ \@HyperrefOverview
+ }%
+}
+\def\@HyperrefOverview{%
+ The documentation for package \texttt{hyperref} consists
+ of several files:
+ \begingroup
+ \newcommand*{\entry}[2]{%
+ \item[\href{file:##1}{##2}]%
+ \ignorespaces
+ }%
+ \begin{description}
+ \entry{manual.pdf}{\textbf{Manual}}
+ The \textbf{USER MANUAL} (also available as HTML).
+ \entry{ChangeLog.txt}{ChangeLog}
+ This file records the version history
+ (also available as text file).
+ \entry{options.pdf}{Options}
+ This file provides a short option summary.
+ \entry{slides.pdf}{Bookmark talk, slides}
+ Slides for the talk ``PDF information and navigation elements with
+ hyperref, pdfTeX and thumbpdf'' at Euro\TeX~1999.
+ \entry{paper.pdf}{Bookmark talk, paper}
+ The paper version of the talk.
+ \end{description}
+ Source code documentation:
+ \begin{description}
+ \entry{hyperref.pdf}{hyperref.dtx}
+ This is the source code documentation for hyperref%
+ \@thisfile{hyperref}.
+ \entry{backref.pdf}{backref.dtx}
+ ``Back referencing from bibliographical citations''%
+ \@thisfile{backref}
+ \entry{nameref.pdf}{nameref.dtx}
+ ``Section name references in \LaTeX''%
+ \@thisfile{nameref}%
+ \end{description}
+ \endgroup
+}
+\edef\@jobname{\jobname}
+\def\@thisfile#1{%
+ \begingroup
+ \edef\x{#1}%
+ \@onelevel@sanitize\x
+ \ifx\x\@jobname
+ \marginpar{\hfill\ding{43}}%
+ \space(this file)%
+ \fi
+ \endgroup
+}
+\endinput
diff --git a/macros/latex/contrib/hyperref/doc/cmmi10-22.gif b/macros/latex/contrib/hyperref/doc/cmmi10-22.gif
new file mode 100644
index 0000000000..ab41b85ae2
--- /dev/null
+++ b/macros/latex/contrib/hyperref/doc/cmmi10-22.gif
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/cmsy10-21.gif b/macros/latex/contrib/hyperref/doc/cmsy10-21.gif
new file mode 100644
index 0000000000..dd190e44e9
--- /dev/null
+++ b/macros/latex/contrib/hyperref/doc/cmsy10-21.gif
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/manual.css b/macros/latex/contrib/hyperref/doc/manual.css
new file mode 100644
index 0000000000..0943cab494
--- /dev/null
+++ b/macros/latex/contrib/hyperref/doc/manual.css
@@ -0,0 +1,248 @@
+
+/* start css.sty */
+.ec-lmr-17{font-size:170%;}
+.ec-lmss-17{font-size:170%; font-family: sans-serif;}
+.ec-lmss-17{ font-family: sans-serif;}
+.ec-lmss-17{ font-family: sans-serif;}
+.ec-lmss-17{ font-family: sans-serif;}
+.ec-lmss-17{ font-family: sans-serif;}
+.ec-lmss-17{ font-family: sans-serif;}
+.ec-lmss-17{ font-family: sans-serif;}
+.ec-lmss-17{ font-family: sans-serif;}
+.ec-lmss-17{ font-family: sans-serif;}
+.ec-lmss-17{ font-family: sans-serif;}
+.ec-lmss-17{ font-family: sans-serif;}
+.ec-lmss-17{ font-family: sans-serif;}
+.ec-lmss-17{ font-family: sans-serif;}
+.ec-lmr-12{font-size:120%;}
+.ec-lmvtt-10{ font-family: monospace;}
+.ec-lmvtt-10{ font-family: monospace;}
+.ec-lmvtt-10{ font-family: monospace;}
+.ec-lmvtt-10{ font-family: monospace;}
+.ec-lmvtt-10{ font-family: monospace;}
+.ec-lmvtt-10{ font-family: monospace;}
+.ec-lmvtt-10{ font-family: monospace;}
+.ec-lmvtt-10{ font-family: monospace;}
+.ec-lmvtt-10{ font-family: monospace;}
+.ec-lmvtt-10{ font-family: monospace;}
+.ec-lmvtt-10{ font-family: monospace;}
+.ec-lmvtt-10{ font-family: monospace;}
+.ec-lmvtt-10{ font-family: monospace;}
+.lmsy7-{font-size:70%;}
+.ec-lmri-10{ font-style:italic;}
+.ec-lmri-10{ font-style:italic;}
+.ec-lmri-10{ font-style:italic;}
+.ec-lmri-10{ font-style:italic;}
+.ec-lmri-10{ font-style:italic;}
+.ec-lmri-10{ font-style:italic;}
+.ec-lmri-10{ font-style:italic;}
+.ec-lmri-10{ font-style:italic;}
+.ec-lmri-10{ font-style:italic;}
+.ec-lmri-10{ font-style:italic;}
+.ec-lmri-10{ font-style:italic;}
+.ec-lmri-10{ font-style:italic;}
+.ec-lmri-10{ font-style:italic;}
+.ec-lmss-10{ font-family: sans-serif;}
+.ec-lmss-10{ font-family: sans-serif;}
+.ec-lmss-10{ font-family: sans-serif;}
+.ec-lmss-10{ font-family: sans-serif;}
+.ec-lmss-10{ font-family: sans-serif;}
+.ec-lmss-10{ font-family: sans-serif;}
+.ec-lmss-10{ font-family: sans-serif;}
+.ec-lmss-10{ font-family: sans-serif;}
+.ec-lmss-10{ font-family: sans-serif;}
+.ec-lmss-10{ font-family: sans-serif;}
+.ec-lmss-10{ font-family: sans-serif;}
+.ec-lmss-10{ font-family: sans-serif;}
+.ec-lmss-10{ font-family: sans-serif;}
+.ec-lmr-9{font-size:90%;}
+.ec-lmr-8{font-size:80%;}
+.ec-lmbx-10{ font-weight: bold;}
+.ec-lmbx-10{ font-weight: bold;}
+.ec-lmbx-10{ font-weight: bold;}
+.ec-lmbx-10{ font-weight: bold;}
+.ec-lmbx-10{ font-weight: bold;}
+.ec-lmbx-10{ font-weight: bold;}
+.ec-lmbx-10{ font-weight: bold;}
+.ec-lmbx-10{ font-weight: bold;}
+.ec-lmbx-10{ font-weight: bold;}
+.ec-lmbx-10{ font-weight: bold;}
+.ec-lmbx-10{ font-weight: bold;}
+.ec-lmbx-10{ font-weight: bold;}
+.ec-lmbx-10{ font-weight: bold;}
+.ec-lmss-8{font-size:80%; font-family: sans-serif;}
+.ec-lmss-8{ font-family: sans-serif;}
+.ec-lmss-8{ font-family: sans-serif;}
+.ec-lmss-8{ font-family: sans-serif;}
+.ec-lmss-8{ font-family: sans-serif;}
+.ec-lmss-8{ font-family: sans-serif;}
+.ec-lmss-8{ font-family: sans-serif;}
+.ec-lmss-8{ font-family: sans-serif;}
+.ec-lmss-8{ font-family: sans-serif;}
+.ec-lmss-8{ font-family: sans-serif;}
+.ec-lmss-8{ font-family: sans-serif;}
+.ec-lmss-8{ font-family: sans-serif;}
+.ec-lmss-8{ font-family: sans-serif;}
+.ec-lmvtk-10{ font-family: monospace;}
+.ec-lmvtk-10{ font-family: monospace;}
+.ec-lmvtk-10{ font-family: monospace;}
+.ec-lmvtk-10{ font-family: monospace;}
+.ec-lmvtk-10{ font-family: monospace;}
+.ec-lmvtk-10{ font-family: monospace;}
+.ec-lmvtk-10{ font-family: monospace;}
+.ec-lmvtk-10{ font-family: monospace;}
+.ec-lmvtk-10{ font-family: monospace;}
+.ec-lmvtk-10{ font-family: monospace;}
+.ec-lmvtk-10{ font-family: monospace;}
+.ec-lmvtk-10{ font-family: monospace;}
+.ec-lmvtk-10{ font-family: monospace;}
+.ec-lmvtto-10{ font-style: oblique; font-family: monospace;}
+.ec-lmvtto-10{ font-style: oblique; font-family: monospace;}
+.ec-lmvtto-10{ font-style: oblique; font-family: monospace;}
+.ec-lmvtto-10{ font-style: oblique; font-family: monospace;}
+.ec-lmvtto-10{ font-style: oblique; font-family: monospace;}
+.ec-lmvtto-10{ font-style: oblique; font-family: monospace;}
+.ec-lmvtto-10{ font-style: oblique; font-family: monospace;}
+.ec-lmvtto-10{ font-style: oblique; font-family: monospace;}
+.ec-lmvtto-10{ font-style: oblique; font-family: monospace;}
+.ec-lmvtto-10{ font-style: oblique; font-family: monospace;}
+.ec-lmvtto-10{ font-style: oblique; font-family: monospace;}
+.ec-lmvtto-10{ font-style: oblique; font-family: monospace;}
+.ec-lmvtto-10{ font-style: oblique; font-family: monospace;}
+p.noindent { text-indent: 0em }
+td p.noindent { text-indent: 0em; margin-top:0em; }
+p.nopar { text-indent: 0em; }
+p.indent{ text-indent: 1.5em }
+@media print {div.crosslinks {visibility:hidden;}}
+a img { border-top: 0; border-left: 0; border-right: 0; }
+center { margin-top:1em; margin-bottom:1em; }
+td center { margin-top:0em; margin-bottom:0em; }
+.Canvas { position:relative; }
+img.math{vertical-align:middle;}
+li p.indent { text-indent: 0em }
+li p:first-child{ margin-top:0em; }
+li p:last-child, li div:last-child { margin-bottom:0.5em; }
+li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
+.enumerate1 {list-style-type:decimal;}
+.enumerate2 {list-style-type:lower-alpha;}
+.enumerate3 {list-style-type:lower-roman;}
+.enumerate4 {list-style-type:upper-alpha;}
+div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
+.obeylines-h,.obeylines-v {white-space: nowrap; }
+div.obeylines-v p { margin-top:0; margin-bottom:0; }
+.overline{ text-decoration:overline; }
+.overline img{ border-top: 1px solid black; }
+td.displaylines {text-align:center; white-space:nowrap;}
+.centerline {text-align:center;}
+.rightline {text-align:right;}
+div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; }
+.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+div.fbox {display:table}
+div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+div.minipage{width:100%;}
+div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
+div.center div {text-align: left;}
+div.flushright, div.flushright div.flushright {text-align: right;}
+div.flushright div {text-align: left;}
+div.flushleft {text-align: left;}
+.underline{ text-decoration:underline; }
+.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
+.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+.framebox-c {text-align:center;}
+.framebox-l {text-align:left;}
+.framebox-r {text-align:right;}
+span.thank-mark{ vertical-align: super }
+span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
+div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
+table.tabular td p{margin-top:0em;}
+table.tabular {margin-left: auto; margin-right: auto;}
+td p:first-child{ margin-top:0em; }
+td p:last-child{ margin-bottom:0em; }
+div.td00{ margin-left:0pt; margin-right:0pt; }
+div.td01{ margin-left:0pt; margin-right:5pt; }
+div.td10{ margin-left:5pt; margin-right:0pt; }
+div.td11{ margin-left:5pt; margin-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+td.td00{ padding-left:0pt; padding-right:0pt; }
+td.td01{ padding-left:0pt; padding-right:5pt; }
+td.td10{ padding-left:5pt; padding-right:0pt; }
+td.td11{ padding-left:5pt; padding-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+.hline hr, .cline hr{ height : 1px; margin:0px; }
+.tabbing-right {text-align:right;}
+span.TEX {letter-spacing: -0.125em; }
+span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
+a span.TEX span.E {text-decoration: none; }
+span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
+span.LATEX span.TEX{ position:relative; left: -0.4em; }
+div.float, div.figure {margin-left: auto; margin-right: auto;}
+div.float img {text-align:center;}
+div.figure img {text-align:center;}
+.marginpar,.reversemarginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
+.marginpar p,.reversemarginpar p{margin-top:0.4em; margin-bottom:0.4em;}
+.reversemarginpar{float:left;}
+table.equation {width:100%;}
+.equation td{text-align:center; }
+td.equation { margin-top:1em; margin-bottom:1em; }
+td.equation-label { width:5%; text-align:center; }
+td.eqnarray4 { width:5%; white-space: normal; }
+td.eqnarray2 { width:5%; }
+table.eqnarray-star, table.eqnarray {width:100%;}
+div.eqnarray{text-align:center;}
+div.array {text-align:center;}
+div.pmatrix {text-align:center;}
+table.pmatrix {width:100%;}
+span.pmatrix img{vertical-align:middle;}
+div.pmatrix {text-align:center;}
+table.pmatrix {width:100%;}
+span.bar-css {text-decoration:overline;}
+img.cdots{vertical-align:middle;}
+.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
+.index-item, .index-subitem, .index-subsubitem {display:block}
+div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
+div.caption span.id{font-weight: bold; white-space: nowrap; }
+h1.partHead{text-align: center}
+p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
+p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
+.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
+.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
+.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;}
+.verse{white-space:nowrap; margin-left:2em}
+div.maketitle {text-align:center;}
+h2.titleHead{text-align:center;}
+div.maketitle{ margin-bottom: 2em; }
+div.author, div.date {text-align:center;}
+div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
+div.author{white-space: nowrap;}
+.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
+.abstract p {margin-left:5%; margin-right:5%;}
+div.abstract {width:100%;}
+div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
+table.tabular td p{margin-top:0em;}
+table.tabular {margin-left: auto; margin-right: auto;}
+td p:first-child{ margin-top:0em; }
+td p:last-child{ margin-bottom:0em; }
+div.td00{ margin-left:0pt; margin-right:0pt; }
+div.td01{ margin-left:0pt; margin-right:5pt; }
+div.td10{ margin-left:5pt; margin-right:0pt; }
+div.td11{ margin-left:5pt; margin-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+td.td00{ padding-left:0pt; padding-right:0pt; }
+td.td01{ padding-left:0pt; padding-right:5pt; }
+td.td10{ padding-left:5pt; padding-right:0pt; }
+td.td11{ padding-left:5pt; padding-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+.hline hr, .cline hr{ height : 1px; margin:0px; }
+div.array {text-align:center;}
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+div.longtable{text-align:center;}
+table.longtable{margin-left:auto; margin-right: auto;}
+span.HoLogo-LaTeX span.HoLogo-a{position:relative;top:-.5ex;margin-left:-.36em;margin-right:-.15em;font-size:85%;}
+span.HoLogo-TeX span.HoLogo-e{position:relative;top:.5ex;margin-left:-.1667em;margin-right:-.125em;}
+a span.HoLogo-TeX span.HoLogo-e{text-decoration:none;}
+span.HoLogo-XeTeX span.HoLogo-TeX{margin-left:-.15em;}
+span.HoLogo-Xe span.HoLogo-e{position:relative;top:.5ex;left-margin:-.1em;}
+span.HoLogo-LaTeX2e span.HoLogo-2{padding-left:.15em;}
+span.HoLogo-LaTeX2e span.HoLogo-e{position:relative;top:.35ex;text-decoration:none;}
+/* end css.sty */
+
diff --git a/macros/latex/contrib/hyperref/doc/manual.html b/macros/latex/contrib/hyperref/doc/manual.html
new file mode 100644
index 0000000000..cff0ea5bcc
--- /dev/null
+++ b/macros/latex/contrib/hyperref/doc/manual.html
@@ -0,0 +1,7437 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html >
+<head><title>Hypertext marks in LATEX: a manual for hyperref</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<!-- html -->
+<meta name="src" content="manual.tex">
+<link rel="stylesheet" type="text/css" href="manual.css">
+</head><body
+>
+ <div class="maketitle">
+
+
+
+
+
+<h2 class="titleHead">Hypertext marks in <span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span>: a manual for hyperref</h2>
+ <div class="author" ><span
+class="ec-lmr-12">Sebastian Rahtz </span><br class="and" /><span
+class="ec-lmr-12">Heiko Oberdiek</span></div><br />
+<div class="date" ><span
+class="ec-lmr-12">September 2018</span></div>
+ </div>
+ <h3 class="likesectionHead"><a
+ id="x1-1000"></a>Contents</h3>
+ <div class="tableofcontents">
+ <span class="sectionToc" >1 <a
+href="#x1-20001" id="QQ2-1-2">Introduction</a></span>
+<br /> <span class="sectionToc" >2 <a
+href="#x1-30002" id="QQ2-1-3">Implicit behavior</a></span>
+<br /> <span class="sectionToc" >3 <a
+href="#x1-40003" id="QQ2-1-4">Package options</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >3.1 <a
+href="#x1-50003.1" id="QQ2-1-5">General options</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >3.2 <a
+href="#x1-60003.2" id="QQ2-1-6">Options for destination names</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >3.3 <a
+href="#x1-70003.3" id="QQ2-1-7">Configuration options</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >3.4 <a
+href="#x1-80003.4" id="QQ2-1-8">Backend drivers</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >3.5 <a
+href="#x1-90003.5" id="QQ2-1-9">Extension options</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >3.6 <a
+href="#x1-100003.6" id="QQ2-1-10">PDF-specific display options</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >3.7 <a
+href="#x1-110003.7" id="QQ2-1-11">PDF display and information options</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >3.8 <a
+href="#x1-120003.8" id="QQ2-1-12">Option <span
+class="ec-lmvtt-10">pdfinfo</span></a></span>
+<br /> &#x00A0;<span class="subsectionToc" >3.9 <a
+href="#x1-130003.9" id="QQ2-1-13">Big alphabetical list</a></span>
+<br /> <span class="sectionToc" >4 <a
+href="#x1-140004" id="QQ2-1-14">Additional user macros</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >4.1 <a
+href="#x1-150004.1" id="QQ2-1-15">Bookmark macros</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >4.1.1 <a
+href="#x1-160004.1.1" id="QQ2-1-16">Setting bookmarks</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >4.1.2 <a
+href="#x1-170004.1.2" id="QQ2-1-17">Replacement macros</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >4.2 <a
+href="#x1-180004.2" id="QQ2-1-18">Utility macros</a></span>
+<br /> <span class="sectionToc" >5 <a
+href="#x1-190005" id="QQ2-1-19">New Features</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.1 <a
+href="#x1-200005.1" id="QQ2-1-20">Option &#8216;pdflinkmargin&#8217;</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.2 <a
+href="#x1-210005.2" id="QQ2-1-21">Field option &#8216;calculatesortkey&#8217;</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.3 <a
+href="#x1-220005.3" id="QQ2-1-22">Option &#8216;localanchorname&#8217;</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.4 <a
+href="#x1-230005.4" id="QQ2-1-23">Option &#8216;customdriver&#8217;</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.5 <a
+href="#x1-240005.5" id="QQ2-1-24">Option &#8216;psdextra&#8217;</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.6 <a
+href="#x1-250005.6" id="QQ2-1-25">\XeTeXLinkBox</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.7 <a
+href="#x1-260005.7" id="QQ2-1-26">\IfHyperBooleanExists and \IfHyperBoolean</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.8 <a
+href="#x1-270005.8" id="QQ2-1-27">\unichar</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.9 <a
+href="#x1-280005.9" id="QQ2-1-28">\ifpdfstringunicode</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.10 <a
+href="#x1-290005.10" id="QQ2-1-29">Customizing index style file with \nohyperpage</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.11 <a
+href="#x1-300005.11" id="QQ2-1-30">Experimental option &#8216;ocgcolorlinks&#8217;</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.12 <a
+href="#x1-310005.12" id="QQ2-1-31">Option &#8216;pdfa&#8217;</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.13 <a
+href="#x1-320005.13" id="QQ2-1-32">Option &#8216;linktoc&#8217; added</a></span>
+
+<br /> &#x00A0;<span class="subsectionToc" >5.14 <a
+href="#x1-330005.14" id="QQ2-1-33">Option &#8216;pdfnewwindow&#8217; changed</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.15 <a
+href="#x1-340005.15" id="QQ2-1-34">Flag options for PDF forms</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.16 <a
+href="#x1-350005.16" id="QQ2-1-35">Option &#8216;pdfversion&#8217;</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.17 <a
+href="#x1-360005.17" id="QQ2-1-36">Field option &#8216;name&#8217;</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.18 <a
+href="#x1-370005.18" id="QQ2-1-37">Option &#8216;pdfencoding&#8217;</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.19 <a
+href="#x1-380005.19" id="QQ2-1-38">Color options/package hycolor</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.20 <a
+href="#x1-390005.20" id="QQ2-1-39">Option pdfusetitle</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.21 <a
+href="#x1-400005.21" id="QQ2-1-40">Starred form of \autoref</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.22 <a
+href="#x1-410005.22" id="QQ2-1-41">Link border style</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.23 <a
+href="#x1-420005.23" id="QQ2-1-42">Option "bookmarksdepth"</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.24 <a
+href="#x1-430005.24" id="QQ2-1-43">Option "pdfescapeform"</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.25 <a
+href="#x1-440005.25" id="QQ2-1-44">Default driver setting</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.26 <a
+href="#x1-450005.26" id="QQ2-1-45">Backref entries</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >5.27 <a
+href="#x1-460005.27" id="QQ2-1-46">\phantomsection</a></span>
+<br /> <span class="sectionToc" >6 <a
+href="#x1-470006" id="QQ2-1-47">Acrobat-specific behavior</a></span>
+<br /> <span class="sectionToc" >7 <a
+href="#x1-480007" id="QQ2-1-48">PDF and HTML forms</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >7.1 <a
+href="#x1-490007.1" id="QQ2-1-49">Forms environment parameters</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >7.2 <a
+href="#x1-500007.2" id="QQ2-1-50">Forms optional parameters</a></span>
+<br /> <span class="sectionToc" >8 <a
+href="#x1-510008" id="QQ2-1-51">Defining a new driver</a></span>
+<br /> <span class="sectionToc" >9 <a
+href="#x1-520009" id="QQ2-1-52">Special support for other packages</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >9.1 <a
+href="#x1-530009.1" id="QQ2-1-53">Package Compatibility</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.1 <a
+href="#x1-540009.1.1" id="QQ2-1-54">algorithm</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.2 <a
+href="#x1-550009.1.2" id="QQ2-1-55">amsmath</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.3 <a
+href="#x1-560009.1.3" id="QQ2-1-56">amsrefs</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.4 <a
+href="#x1-570009.1.4" id="QQ2-1-57">arydshln, longtable</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.5 <a
+href="#x1-580009.1.5" id="QQ2-1-58">babel/magyar.ldf</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.6 <a
+href="#x1-590009.1.6" id="QQ2-1-59">babel/spanish.ldf</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.7 <a
+href="#x1-600009.1.7" id="QQ2-1-60">bibentry</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.8 <a
+href="#x1-610009.1.8" id="QQ2-1-61">bigfoot</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.9 <a
+href="#x1-620009.1.9" id="QQ2-1-62">chappg</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.10 <a
+href="#x1-630009.1.10" id="QQ2-1-63">cite</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.11 <a
+href="#x1-640009.1.11" id="QQ2-1-64">count1to</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.12 <a
+href="#x1-650009.1.12" id="QQ2-1-65">dblaccnt</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.13 <a
+href="#x1-660009.1.13" id="QQ2-1-66">easyeqn</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.14 <a
+href="#x1-670009.1.14" id="QQ2-1-67">ellipsis</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.15 <a
+href="#x1-680009.1.15" id="QQ2-1-68">float</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.16 <a
+href="#x1-690009.1.16" id="QQ2-1-69">endnotes</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.17 <a
+href="#x1-700009.1.17" id="QQ2-1-70">foiltex</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.18 <a
+href="#x1-710009.1.18" id="QQ2-1-71">footnote</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.19 <a
+href="#x1-720009.1.19" id="QQ2-1-72">geometry</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.20 <a
+href="#x1-730009.1.20" id="QQ2-1-73">IEEEtran.cls</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.21 <a
+href="#x1-740009.1.21" id="QQ2-1-74">index</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.22 <a
+href="#x1-750009.1.22" id="QQ2-1-75">lastpage</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.23 <a
+href="#x1-760009.1.23" id="QQ2-1-76">linguex</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.24 <a
+href="#x1-770009.1.24" id="QQ2-1-77">ltabptch</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.25 <a
+href="#x1-780009.1.25" id="QQ2-1-78">mathenv</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.26 <a
+href="#x1-790009.1.26" id="QQ2-1-79">minitoc-hyper</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.27 <a
+href="#x1-800009.1.27" id="QQ2-1-80">multind</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.28 <a
+href="#x1-810009.1.28" id="QQ2-1-81">natbib</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.29 <a
+href="#x1-820009.1.29" id="QQ2-1-82">nomencl</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.30 <a
+href="#x1-830009.1.30" id="QQ2-1-83">parskip</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.31 <a
+href="#x1-840009.1.31" id="QQ2-1-84">prettyref</a></span>
+
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.32 <a
+href="#x1-850009.1.32" id="QQ2-1-85">ntheorem</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.33 <a
+href="#x1-860009.1.33" id="QQ2-1-86">setspace</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.34 <a
+href="#x1-870009.1.34" id="QQ2-1-87">sidecap</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.35 <a
+href="#x1-880009.1.35" id="QQ2-1-88">subfigure</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.36 <a
+href="#x1-890009.1.36" id="QQ2-1-89">titleref</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.37 <a
+href="#x1-900009.1.37" id="QQ2-1-90">tabularx</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.38 <a
+href="#x1-910009.1.38" id="QQ2-1-91">titlesec</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.39 <a
+href="#x1-920009.1.39" id="QQ2-1-92">ucs/utf8x.def</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.40 <a
+href="#x1-930009.1.40" id="QQ2-1-93">varioref</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.41 <a
+href="#x1-940009.1.41" id="QQ2-1-94">verse</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.42 <a
+href="#x1-950009.1.42" id="QQ2-1-95">vietnam</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >9.1.43 <a
+href="#x1-960009.1.43" id="QQ2-1-96">XeTeX</a></span>
+<br /> <span class="sectionToc" >10 <a
+href="#x1-9700010" id="QQ2-1-97">Limitations</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >10.1 <a
+href="#x1-9800010.1" id="QQ2-1-98">Wrapped/broken link support</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >10.2 <a
+href="#x1-9900010.2" id="QQ2-1-99">Links across pages</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >10.3 <a
+href="#x1-10000010.3" id="QQ2-1-100">Footnotes</a></span>
+<br /> <span class="sectionToc" >11 <a
+href="#x1-10100011" id="QQ2-1-101">Hints</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >11.1 <a
+href="#x1-10200011.1" id="QQ2-1-102">Spaces in option values</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >11.2 <a
+href="#x1-10300011.2" id="QQ2-1-103">Index with makeindex</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >11.3 <a
+href="#x1-10400011.3" id="QQ2-1-104">Warning "bookmark level for unknown &#x003C;foobar&#x003E; defaults to 0"</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >11.4 <a
+href="#x1-10500011.4" id="QQ2-1-105">Link anchors in figures</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >11.5 <a
+href="#x1-10600011.5" id="QQ2-1-106">Additional unicode characters in bookmarks and pdf information entries:</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >11.6 <a
+href="#x1-10700011.6" id="QQ2-1-107">Footnotes</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >11.7 <a
+href="#x1-10800011.7" id="QQ2-1-108">Subordinate counters</a></span>
+<br /> <span class="sectionToc" >12 <a
+href="#x1-10900012" id="QQ2-1-109">History and acknowledgments</a></span>
+<br /> <span class="sectionToc" >13 <a
+href="#x1-11000013" id="QQ2-1-110">GNU Free Documentation License</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >13.1 <a
+href="#x1-11200013.1" id="QQ2-1-112">Applicability and definitions</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >13.2 <a
+href="#x1-11300013.2" id="QQ2-1-113">Verbatim copying</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >13.3 <a
+href="#x1-11400013.3" id="QQ2-1-114">Copying in quantity</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >13.4 <a
+href="#x1-11500013.4" id="QQ2-1-115">Modifications</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >13.5 <a
+href="#x1-11600013.5" id="QQ2-1-116">Combining documents</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >13.6 <a
+href="#x1-11700013.6" id="QQ2-1-117">Collections of documents</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >13.7 <a
+href="#x1-11800013.7" id="QQ2-1-118">Aggregation with independent works</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >13.8 <a
+href="#x1-11900013.8" id="QQ2-1-119">Translation</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >13.9 <a
+href="#x1-12000013.9" id="QQ2-1-120">Termination</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >13.10 <a
+href="#x1-12100013.10" id="QQ2-1-121">Future revisions of this license</a></span>
+ </div>
+<!--l. 187--><p class="noindent" >
+ <h3 class="sectionHead"><span class="titlemark">1 </span> <a
+ id="x1-20001"></a>Introduction</h3>
+<!--l. 189--><p class="noindent" >The package derives from, and builds on, the work of the Hyper<span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span> project, described at
+<a
+href="http://xxx.lanl.gov/hypertex/" class="url" ><span
+class="ec-lmvtt-10">http://xxx.lanl.gov/hypertex/</span></a>. It extends the functionality of all the <span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span> cross-referencing
+commands (including the table of contents, bibliographies etc) to produce <span
+class="ec-lmvtt-10">\special </span>commands which a
+driver can turn into hypertext links; it also provides new commands to allow the user to write <span
+class="ec-lmri-10">ad hoc</span>
+hypertext links, including those to external documents and URLs.
+<!--l. 197--><p class="indent" > This manual provides a brief overview of the <span
+class="ec-lmss-10">hyperref </span>package. For more details, you should read the
+additional documentation distributed with the package, as well as the complete documentation by
+processing <span
+class="ec-lmvtt-10">hyperref.dtx</span>. You should also read the chapter on <span
+class="ec-lmss-10">hyperref </span>in <span
+class="ec-lmri-10">The </span><span class="HoLogo-LaTeX"><span
+class="ec-lmri-10">L</span><span class="HoLogo-a"><span
+class="ec-lmri-10">A</span></span><span class="HoLogo-TeX"><span
+class="ec-lmri-10">T</span><span class="HoLogo-e"><span
+class="ec-lmri-10">E</span></span><span
+class="ec-lmri-10">X</span></span></span> <span
+class="ec-lmri-10">Web Companion</span>,
+where you will find additional examples.
+
+
+<!--l. 204--><p class="indent" > The Hyper<span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span> specification<span class="footnote-mark"><a
+href="manual2.html#fn1x0"><sup class="textsuperscript">1</sup></a></span><a
+ id="x1-2001f1"></a>
+says that conformant viewers/translators must recognize the following set of <span
+class="ec-lmvtt-10">\special </span>constructs:
+ <dl class="description"><dt class="description">
+<span
+class="ec-lmbx-10">href:</span> </dt><dd
+class="description"><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">html:&#x003C;a</span><span
+class="ec-lmvtt-10">&#x00A0;href</span><span
+class="ec-lmvtt-10">&#x00A0;=</span><span
+class="ec-lmvtt-10">&#x00A0;"href_string"&#x003E;</span></span></span>
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">name:</span> </dt><dd
+class="description"><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">html:&#x003C;a</span><span
+class="ec-lmvtt-10">&#x00A0;name</span><span
+class="ec-lmvtt-10">&#x00A0;=</span><span
+class="ec-lmvtt-10">&#x00A0;"name_string"&#x003E;</span></span></span>
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">end:</span> </dt><dd
+class="description"><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">html:&#x003C;/a&#x003E;</span></span></span>
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">image:</span> </dt><dd
+class="description"><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">html:&#x003C;img</span><span
+class="ec-lmvtt-10">&#x00A0;src</span><span
+class="ec-lmvtt-10">&#x00A0;=</span><span
+class="ec-lmvtt-10">&#x00A0;"href_string"&#x003E;</span></span></span>
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">base_name:</span> </dt><dd
+class="description"><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">html:&#x003C;base</span><span
+class="ec-lmvtt-10">&#x00A0;href</span><span
+class="ec-lmvtt-10">&#x00A0;=</span><span
+class="ec-lmvtt-10">&#x00A0;"href_string"&#x003E;</span></span></span></dd></dl>
+<!--l. 216--><p class="indent" > The <span
+class="ec-lmri-10">href</span>, <span
+class="ec-lmri-10">name </span>and <span
+class="ec-lmri-10">end </span>commands are used to do the basic hypertext operations of establishing links
+between sections of documents. The <span
+class="ec-lmri-10">image </span>command is intended (as with current HTML
+viewers) to place an image of arbitrary graphical format on the page in the current location.
+The <span
+class="ec-lmri-10">base_name </span>command is be used to communicate to the DVI viewer the full (URL)
+location of the current document so that files specified by relative URLs may be retrieved
+correctly.
+<!--l. 225--><p class="indent" > The <span
+class="ec-lmri-10">href </span>and <span
+class="ec-lmri-10">name </span>commands must be paired with an <span
+class="ec-lmri-10">end </span>command later in the <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;file&#8212;the
+<span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;commands between the two ends of a pair form an <span
+class="ec-lmri-10">anchor </span>in the document. In the case of an <span
+class="ec-lmri-10">href</span>
+command, the <span
+class="ec-lmri-10">anchor </span>is to be highlighted in the <span
+class="ec-lmri-10">DVI viewer</span>, and when clicked on will cause the scene to
+shift to the destination specified by <span
+class="ec-lmri-10">href_string</span>. The <span
+class="ec-lmri-10">anchor </span>associated with a name command represents
+a possible location to which other hypertext links may refer, either as local references (of
+the form <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">href="#name_string"</span></span></span> with the <span
+class="ec-lmri-10">name_string </span>identical to the one in the name
+command) or as part of a URL (of the form <span
+class="ec-lmri-10">URL#name_string</span>). Here <span
+class="ec-lmri-10">href_string </span>is a valid URL
+or local identifier, while <span
+class="ec-lmri-10">name_string </span>could be any string at all: the only caveat is that &#8216;<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">"</span></span></span>&#8217;
+characters should be escaped with a backslash (<span
+class="lmsy-10">\</span>), and if it looks like a URL name it may cause
+problems.
+<!--l. 241--><p class="indent" > However, the drivers intended to produce <span
+class="ec-lmri-10">only </span>PDF use literal PostScript or PDF <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\special</span></span></span>
+commands. The commands are defined in configuration files for different drivers, selected by package
+options; at present, the following drivers are supported:
+ <dl class="description"><dt class="description">
+<span
+class="ec-lmbx-10">hypertex</span> </dt><dd
+class="description">DVI processors conforming to the Hyper<span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;guidelines (i.e.&#x00A0;<span
+class="ec-lmss-10">xdvi</span>, <span
+class="ec-lmss-10">dvips </span>(with the <span
+class="ec-lmss-10">-z</span>
+ option), <span
+class="ec-lmss-10">Oz</span><span class="TEX"><span
+class="ec-lmss-10">T</span><span
+class="E"><span
+class="ec-lmss-10">E</span></span><span
+class="ec-lmss-10">X</span></span>, and <span
+class="ec-lmss-10">Textures</span>)
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">dvips</span> </dt><dd
+class="description">produces <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\special</span></span></span> commands tailored for <span
+class="ec-lmss-10">dvips</span>
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">dvipsone</span> </dt><dd
+class="description">produces <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\special</span></span></span> commands tailored for <span
+class="ec-lmss-10">dvipsone</span>
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">ps2pdf</span> </dt><dd
+class="description">a special case of output suitable for processing by earlier versions of Ghostscript&#8217;s PDF
+ writer; this is basically the same as that for <span
+class="ec-lmss-10">dvips</span>, but a few variations remained before
+ version 5.21
+
+
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">tex4ht</span> </dt><dd
+class="description">produces <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\special</span></span></span> commands for use with <span class="TEX"><span
+class="ec-lmss-10">T</span><span
+class="E"><span
+class="ec-lmss-10">E</span></span><span
+class="ec-lmss-10">X</span></span><span
+class="ec-lmss-10">4ht</span>
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">pdftex</span> </dt><dd
+class="description">pdf<span class="TEX">T<span
+class="E">E</span>X</span>, Hàn Thê´ Thành&#8217;s <span class="TEX">T<span
+class="E">E</span>X</span> variant that writes PDF directly
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">luatex</span> </dt><dd
+class="description">lua<span class="TEX">T<span
+class="E">E</span>X</span>, Unicode <span class="TEX">T<span
+class="E">E</span>X</span> variant that writes PDF directly
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">dvipdfm</span> </dt><dd
+class="description">produces <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\special</span></span></span> commands for Mark Wicks&#8217; DVI to PDF driver <span
+class="ec-lmss-10">dvipdfm</span>
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">dvipdfmx</span> </dt><dd
+class="description">produces <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\special</span></span></span> commands for driver <span
+class="ec-lmss-10">dvipdfmx</span>, a successor of <span
+class="ec-lmss-10">dvipdfm</span>
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">dviwindo</span> </dt><dd
+class="description">produces <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\special</span></span></span> commands that Y&amp;Y&#8217;s Windows previewer interprets as hypertext
+ jumps within the previewer
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">vtex</span> </dt><dd
+class="description">produces <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\special</span></span></span> commands that MicroPress&#8217; HTML and PDF-producing <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;variants
+ interpret as hypertext jumps within the previewer
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">textures</span> </dt><dd
+class="description">produces <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\special</span></span></span> commands that <span
+class="ec-lmss-10">Textures </span>interprets as hypertext jumps within the
+ previewer
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">xetex</span> </dt><dd
+class="description">produces <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\special</span></span></span> commands for Xe<span class="TEX">T<span
+class="E">E</span>X</span></dd></dl>
+<!--l. 267--><p class="indent" > Output from <span
+class="ec-lmss-10">dvips </span>or <span
+class="ec-lmss-10">dvipsone </span>must be processed using Acrobat Distiller to obtain a PDF
+file.<span class="footnote-mark"><a
+href="manual3.html#fn2x0"><sup class="textsuperscript">2</sup></a></span><a
+ id="x1-2002f2"></a>
+The result is generally preferable to that produced by using the <span
+class="ec-lmss-10">hypertex </span>driver, and then
+processing with <span
+class="ec-lmss-10">dvips -z</span>, but the DVI file is not portable. The main advantage of using the
+Hyper<span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;<span
+class="ec-lmvtt-10">\special </span>commands is that you can also use the document in hypertext DVI viewers, such as
+<span
+class="ec-lmss-10">xdvi</span>.
+ <dl class="description"><dt class="description">
+<span
+class="ec-lmbx-10">driverfallback</span> </dt><dd
+class="description">If a driver is not given and cannot be autodetected, then use the driver option, given as
+ value to this option <span
+class="ec-lmss-10">driverfallback</span>. Example:
+ <div class="quote">
+ <!--l. 283--><p class="noindent" ><span
+class="ec-lmvtt-10">driverfallback=dvipdfm</span></div>
+ <!--l. 285--><p class="noindent" >Autodetected drivers (<span
+class="ec-lmss-10">pdftex</span>, <span
+class="ec-lmss-10">xetex</span>, <span
+class="ec-lmss-10">vtex</span>, <span
+class="ec-lmss-10">vtexpdfmark</span>) are recognized from within <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;and
+ therefore cannot be given as value to option <span
+class="ec-lmss-10">driverfallback</span>. However a DVI driver program is run
+ after the <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;run is finished. Thus it cannot be detected at <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;macro level. Then package
+ <span
+class="ec-lmss-10">hyperref </span>uses the driver, given by <span
+class="ec-lmss-10">driverfallback</span>. If the driver is already specified or can be
+ autodetected, then option <span
+class="ec-lmss-10">driverfallback </span>is ignored.</dd></dl>
+
+
+ <h3 class="sectionHead"><span class="titlemark">2 </span> <a
+ id="x1-30002"></a>Implicit behavior</h3>
+<!--l. 298--><p class="noindent" >This package can be used with more or less any normal <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;document by specifying in the
+document preamble
+
+
+ <div class="verbatim" id="verbatim-1">
+\usepackage{hyperref}
+</div>
+<!--l. 303--><p class="nopar" >
+<!--l. 305--><p class="indent" > Make sure it comes <span
+class="ec-lmri-10">last </span>of your loaded packages, to give it a fighting chance of not being over-written,
+since its job is to redefine many <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;commands. Hopefully you will find that all cross-references
+work correctly as hypertext. For example, <span
+class="ec-lmvtt-10">\section </span>commands will produce a bookmark and a link,
+whereas <span
+class="ec-lmvtt-10">\section* </span>commands will only show links when paired with a corresponding <span
+class="ec-lmvtt-10">\addcontentsline</span>
+command.
+<!--l. 313--><p class="indent" > In addition, the <span
+class="ec-lmvtt-10">hyperindex </span>option (see below) attempts to make items in the index by hyperlinked
+back to the text, and the option <span
+class="ec-lmvtt-10">backref </span>inserts extra &#8216;back&#8217; links into the bibliography for each entry.
+Other options control the appearance of links, and give extra control over PDF output. For example,
+<span
+class="ec-lmvtt-10">colorlinks</span>, as its name well implies, colors the links instead of using boxes; this is the option used in this
+document.
+<!--l. 322--><p class="noindent" >
+ <h3 class="sectionHead"><span class="titlemark">3 </span> <a
+ id="x1-40003"></a>Package options</h3>
+<!--l. 324--><p class="noindent" >All user-configurable aspects of <span
+class="ec-lmss-10">hyperref </span>are set using a single &#8216;key=value&#8217; scheme (using the <span
+class="ec-lmss-10">keyval</span>
+package) with the key <span
+class="ec-lmvtt-10">Hyp</span>. The options can be set either in the optional argument to the
+<span
+class="ec-lmvtt-10">\usepackage </span>command, or using the <span
+class="ec-lmvtt-10">\hypersetup </span>macro. When the package is loaded, a file
+<span
+class="ec-lmvtt-10">hyperref.cfg </span>is read if it can be found, and this is a convenient place to set options on a site-wide
+basis.
+<!--l. 332--><p class="indent" > Note however that some options (for example <span
+class="ec-lmvtt-10">unicode</span>) can only be used as packge options, and not
+in <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hypersetup</span></span></span> as the option settings are processed as the package is read.
+<!--l. 336--><p class="indent" > As an example, the behavior of a particular file could be controlled by:
+ <ul class="itemize1">
+ <li class="itemize">a site-wide <span
+class="ec-lmvtt-10">hyperref.cfg </span>setting up the look of links, adding backreferencing, and setting a
+ PDF display default:
+
+
+ <div class="verbatim" id="verbatim-2">
+ \hypersetup{backref,
+ &#x00A0;<br />pdfpagemode=FullScreen,
+ &#x00A0;<br />colorlinks=true}
+</div>
+ <!--l. 346--><p class="nopar" >
+ </li>
+ <li class="itemize">A global option in the file, which is passed down to <span
+class="ec-lmss-10">hyperref</span>:
+
+
+ <div class="verbatim" id="verbatim-3">
+ \documentclass[dvips]{article}
+</div>
+ <!--l. 353--><p class="nopar" >
+ </li>
+ <li class="itemize">File-specific options in the <span
+class="ec-lmvtt-10">\usepackage </span>commands, which override the ones set in
+ <span
+class="ec-lmvtt-10">hyperref.cfg</span>:
+
+
+ <div class="verbatim" id="verbatim-4">
+ \usepackage[colorlinks=false]{hyperref}
+ &#x00A0;<br />\hypersetup{pdftitle={A&#x00A0;Perfect&#x00A0;Day}}
+</div>
+ <!--l. 361--><p class="nopar" ></li></ul>
+<!--l. 364--><p class="indent" > As seen in the previous example, information entries (pdftitle, pdfauthor, &#x2026;) should be set after the
+package is loaded. Otherwise <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;expands the values of these options prematurely. Also
+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;strips spaces in options. Especially option &#8216;pdfborder&#8217; requires some care. Curly braces protect
+the value, if given as package option. They are not necessary in <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hypersetup</span></span></span>.
+
+
+ <div class="verbatim" id="verbatim-5">
+\usepackage[pdfborder={0&#x00A0;0&#x00A0;0}]{hyperref}
+&#x00A0;<br />\hypersetup{pdfborder=0&#x00A0;0&#x00A0;0}
+</div>
+<!--l. 374--><p class="nopar" >
+<!--l. 376--><p class="indent" > Package &#8216;kvoptions-patch&#8217; patches <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;to make it aware of key value options and to prevent
+premature value expansions.
+<!--l. 379--><p class="indent" > Some options can be given at any time, but many are restricted: before <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\begin{document}</span></span></span>, only in
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\usepackage[...]{hyperref}</span></span></span>, before first use, etc.
+<!--l. 383--><p class="indent" > In the key descriptions that follow, many options do not need a value, as they default to the value
+true if used. These are the ones classed as &#8216;boolean&#8217;. The values true and false can always be specified,
+however.
+<!--l. 387--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">3.1 </span> <a
+ id="x1-50003.1"></a>General options</h4>
+<!--l. 389--><p class="noindent" >Firstly, the options to specify general behavior and page size.
+<!--l. 392--><p class="noindent" >
+<a
+ id="x1-5001r1"></a> <!--l. 393--><div class="longtable"> <table id="TBL-2" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-2-1g"><col
+id="TBL-2-1"><col
+id="TBL-2-2"><col
+id="TBL-2-3"><col
+id="TBL-2-4"></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">draft </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-1-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-1-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-1-4"
+class="td11"> all hypertext options are turned off </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-1"
+class="td11"> <span
+class="ec-lmvtt-10">final </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-3"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-4"
+class="td11"> all hypertext options are turned on </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-1"
+class="td11"> <span
+class="ec-lmvtt-10">debug </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-4"
+class="td11"> extra diagnostic messages are printed in </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-1"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-4"
+class="td11"> the log file </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-1"
+class="td11"> <span
+class="ec-lmvtt-10">verbose </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-4"
+class="td11"> same as debug </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-1"
+class="td11"> <span
+class="ec-lmvtt-10">implicit </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-3"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-4"
+class="td11"> redefines <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;internals </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-1"
+class="td11"> <span
+class="ec-lmvtt-10">setpagesize </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-3"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-4"
+class="td11"> sets page size by special driver commands </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-8-1"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-9-1"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-10-1"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-11-1"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-11-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-11-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-11-4"
+class="td11"></td></tr>
+ </table></div>
+<!--l. 402--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">3.2 </span> <a
+ id="x1-60003.2"></a>Options for destination names</h4>
+<!--l. 404--><p class="noindent" >Destinations names (also anchor, target or link names) are internal names that identify a position on a
+page in the document. They are used in link targets for inner document links or the bookmarks, for
+example.
+<!--l. 409--><p class="indent" > Usually anchor are set, if <span
+class="ec-lmvtt-10">\refstepcounter </span>is called. Thus there is a counter name and value. Both are
+used to construct the destination name. By default the counter value follows the counter name separated
+by a dot. Example for the fourth chapter:
+ <div class="quote">
+ <!--l. 415--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">chapter.4</span></span></span></div>
+<!--l. 417--><p class="noindent" >This scheme is used by:
+ <dl class="description"><dt class="description">
+<span
+class="ec-lmvtk-10">\autoref</span> </dt><dd
+class="description">displays the description label for the reference depending on the counter name.
+
+ </dd><dt class="description">
+<span
+class="ec-lmvtk-10">\hyperpage</span> </dt><dd
+class="description">is used by the index to get page links. Page anchor setting (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">pageanchor</span></span></span>) must not
+ be turned off.</dd></dl>
+<!--l. 426--><p class="indent" > It is very important that the destination names are unique, because two destinations must not share
+the same name. The counter value <span
+class="ec-lmvtt-10">\the&#x003C;counter&#x003E; </span>is not always unique for the counter. For example,
+table and figures can be numbered inside the chapter without having the chapter number in their
+number. Therefore <span
+class="ec-lmss-10">hyperref </span>has introduced <span
+class="ec-lmvtt-10">\theH&#x003C;counter&#x003E; </span>that allows a unique counter value without
+messing up with the appearance of the counter number. For example, the number of the
+second table in the third chapter might be printed as <span
+class="ec-lmvtt-10">2</span>, the result of <span
+class="ec-lmvtt-10">\thetable</span>. But the
+destination name <span
+class="ec-lmvtt-10">table.2.4 </span>is unique because it has used <span
+class="ec-lmvtt-10">\theHtable </span>that gives <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">2.4</span></span></span> in this
+case.
+<!--l. 439--><p class="indent" > Often the user do not need to set <span
+class="ec-lmvtt-10">\theH&#x003C;counter&#x003E;</span>. Defaults for standard cases (chapter, &#x2026;) are
+provided. And after <span
+class="ec-lmss-10">hyperref </span>is loaded, new counters with parent counters also define <span
+class="ec-lmvtt-10">\theH&#x003C;counter&#x003E;</span>
+automatically, if <span
+class="ec-lmvtt-10">\newcounter</span>, <span
+class="ec-lmvtt-10">\@addtoreset </span>or <span
+class="ec-lmvtt-10">\numberwithin </span>of package <span
+class="ec-lmss-10">amsmath </span>are
+used.
+<!--l. 445--><p class="indent" > Usually problems with duplicate destination names can be solved by an appropriate definition of
+<span
+class="ec-lmvtt-10">\theH&#x003C;counter&#x003E;</span>. If option <span
+class="ec-lmvtt-10">hypertexnames </span>is disabled, then a unique artificial number is used instead of
+the counter value. In case of page anchors the absolute page anchor is used. With option <span
+class="ec-lmvtt-10">plainpages </span>the
+page anchors use the arabic form. In both latter cases <span
+class="ec-lmvtt-10">\hyperpage </span>for index links is affected and might
+not work properly.
+<!--l. 453--><p class="indent" > If an unnumbered entity gets an anchor (starred forms of chapters, sections, &#x2026;) or <span
+class="ec-lmvtt-10">\phantomsection </span>is
+used, then the dummy counter name <span
+class="ec-lmvtt-10">section* </span>and an artificial unique number is used.
+<!--l. 458--><p class="indent" > If the final PDF file is going to be merged with another file, than the destination names might clash,
+because both documents might contain <span
+class="ec-lmvtt-10">chapter.1 </span>or <span
+class="ec-lmvtt-10">page.1</span>. Also <span
+class="ec-lmss-10">hyperref </span>sets anchor with name
+<span
+class="ec-lmvtt-10">Doc-Start </span>at the begin of the document. This can be resolved by redefining <span
+class="ec-lmvtt-10">\HyperDestNameFilter</span>.
+Package <span
+class="ec-lmss-10">hyperref </span>calls this macro each time, it uses a destination name. The macro must be expandable
+and expects the destination name as only argument. As example, the macro is redefined to add a prefix
+to all destination names:
+ <div class="quote">
+
+
+ <div class="verbatim" id="verbatim-6">
+\renewcommand*{\HyperDestNameFilter}[1]{\jobname-#1}
+</div>
+ <!--l. 471--><p class="nopar" ></div>
+<!--l. 473--><p class="noindent" >In document <span
+class="ec-lmvtt-10">docA </span>the destination name <span
+class="ec-lmvtt-10">chapter.2 </span>becomes <span
+class="ec-lmvtt-10">docA-chapter.2</span>.
+<!--l. 476--><p class="indent" > Destination names can also be used from the outside in URIs(, if the driver has not removed or
+changed them), for example:
+ <div class="quote">
+
+
+ <div class="verbatim" id="verbatim-7">
+http://somewhere/path/file.pdf#nameddest=chapter.4
+</div>
+ <!--l. 481--><p class="nopar" ></div>
+<!--l. 483--><p class="noindent" >However using a number seems unhappy. If another chapter is added before, the number changes. But it is
+very difficult to pass a new name for the destination to the anchor setting process that is usually
+deep hidden in the internals. The first name of <span
+class="ec-lmvtt-10">\label </span>after the anchor setting seems a good
+approximation:
+ <div class="quote">
+
+
+ <div class="verbatim" id="verbatim-8">
+&#x00A0;&#x00A0;\section{Introduction}
+&#x00A0;<br />&#x00A0;&#x00A0;\label{intro}
+</div>
+ <!--l. 492--><p class="nopar" ></div>
+<!--l. 494--><p class="noindent" >Option <span
+class="ec-lmvtt-10">destlabel </span>checks for each <span
+class="ec-lmvtt-10">\label</span>, if there is a new destination name active and replaces the
+destination name by the label name. Because the destination name is already in use because of the
+anchor setting, the new name is recorded in the <span
+class="ec-lmvtt-10">.aux </span>file and used in the subsequent <span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span>
+run. The renaming is done by a redefinition of <span
+class="ec-lmvtt-10">\HyperDestNameFilter</span>. That leaves the old
+destination names intact (e.g., they are needed for <span
+class="ec-lmvtt-10">\autoref</span>). This redefinition is also available as
+<span
+class="ec-lmvtt-10">\HyperDestLabelReplace</span>, thus that an own redefinition can use it. The following example also adds a
+prefix for <span
+class="ec-lmri-10">all </span>destination names:
+ <div class="quote">
+
+
+ <div class="verbatim" id="verbatim-9">
+\renewcommand*{\HyperDestNameFilter}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\jobname-\HyperDestLabelReplace{#1}%
+&#x00A0;<br />}
+</div>
+ <!--l. 509--><p class="nopar" ></div>
+<!--l. 511--><p class="noindent" >The other case that only files prefixed that do not have a corresponding <span
+class="ec-lmvtt-10">\label </span>is more complicate, because
+<span
+class="ec-lmvtt-10">\HyperDestLabelReplace </span>needs the unmodified destination name as argument. This is solved by an
+expandable string test (<span
+class="ec-lmvtt-10">\pdfstrcmp </span>of pdf<span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span> or <span
+class="ec-lmvtt-10">\strcmp </span>of <span class="HoLogo-XeTeX"><span class="HoLogo-Xe">X<span class="HoLogo-e">&#x018e;</span></span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span>, package <span
+class="ec-lmss-10">pdftexcmds </span>also supports
+Lua<span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span>):
+ <div class="quote">
+
+
+ <div class="verbatim" id="verbatim-10">
+\usepackage{pdftexcmds}
+&#x00A0;<br />\makeatletter
+&#x00A0;<br />\renewcommand*{\HyperDestNameFilter}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\ifcase\pdf@strcmp{#1}{\HyperDestLabelReplace{#1}}&#x00A0;%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\jobname-#1%
+&#x00A0;<br />&#x00A0;&#x00A0;\else
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\HyperDestLabelReplace{#1}%
+&#x00A0;<br />&#x00A0;&#x00A0;\fi
+&#x00A0;<br />}
+&#x00A0;<br />\makeatother
+</div>
+ <!--l. 529--><p class="nopar" ></div>
+<!--l. 532--><p class="indent" > With option <span
+class="ec-lmvtt-10">destlabel </span>destinations can also named manually, if the destination is not yet
+renamed:
+ <div class="quote">
+ <!--l. 535--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\HyperDestRename{</span></span></span><span
+class="lmsy-10">&#x27E8;</span><span
+class="ec-lmvtto-10">destination</span><span
+class="lmsy-10">&#x27E9;</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="lmsy-10">&#x27E8;</span><span
+class="ec-lmvtto-10">newname</span><span
+class="lmsy-10">&#x27E9;</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span></div>
+<!--l. 538--><p class="indent" > Hint: Anchors can also be named and set by <span
+class="ec-lmvtt-10">\hypertarget</span>.
+<!--l. 541--><p class="noindent" >
+<a
+ id="x1-6001r2"></a> <!--l. 542--><div class="longtable"> <table id="TBL-3" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-3-1g"><col
+id="TBL-3-1"><col
+id="TBL-3-2"><col
+id="TBL-3-3"><col
+id="TBL-3-4"></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-3-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">destlabel </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-4"
+class="td11"> destinations are named by first <span
+class="ec-lmvtt-10">\label </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-1"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-4"
+class="td11"> after anchor creation </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-1"
+class="td11"> <span
+class="ec-lmvtt-10">hypertexnames </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-3"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-4"
+class="td11"> use guessable names for links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-1"
+class="td11"> <span
+class="ec-lmvtt-10">naturalnames </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-4"
+class="td11"> use <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>-computed names for links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-1"
+class="td11"> <span
+class="ec-lmvtt-10">plainpages </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-4"
+class="td11"> Forces page anchors to be named by the Arabic form </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-1"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-4"
+class="td11"> of the page number, rather than the formatted form. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-7-1"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-8-1"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-9-1"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-10-1"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-11-1"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-11-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-11-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-11-4"
+class="td11"></td></tr>
+ </table></div>
+<!--l. 550--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">3.3 </span> <a
+ id="x1-70003.3"></a>Configuration options</h4>
+<!--l. 552--><p class="noindent" >
+<a
+ id="x1-7001r3"></a> <!--l. 553--><div class="longtable"> <table id="TBL-4" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-4-1g"><col
+id="TBL-4-1"><col
+id="TBL-4-2"><col
+id="TBL-4-3"><col
+id="TBL-4-4"></colgroup>
+
+
+<tr
+ style="vertical-align:baseline;" id="TBL-4-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">raiselinks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-3"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-4-1-4"
+class="td11">
+ <!--l. 553--><p class="noindent" >In the hypertex driver, the height of links is
+ normally calculated by the driver as simply
+ the base line of contained text; this options
+ forces <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\special</span></span></span> commands to reflect the real
+ height of the link (which could contain a
+ graphic) </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-1"
+class="td11"> <span
+class="ec-lmvtt-10">breaklinks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-4-2-4"
+class="td11">
+ <!--l. 556--><p class="noindent" >Allows link text to break across lines; since
+ this cannot be accommodated in PDF, it is
+ only set true by default if the pdftex driver is
+ used. This makes links on multiple lines into
+ different PDF links to the same target. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-1"
+class="td11"> <span
+class="ec-lmvtt-10">pageanchor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-3"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-4-3-4"
+class="td11">
+ <!--l. 559--><p class="noindent" >Determines whether every page is given an
+ implicit anchor at the top left corner. If this is
+ turned off, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\printindex</span></span></span> will not contain valid
+ hyperlinks. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-1"
+class="td11"> <span
+class="ec-lmvtt-10">nesting </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-4-4-4"
+class="td11">
+ <!--l. 562--><p class="noindent" >Allows links to be nested; no drivers currently
+ support this. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-1"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-1"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-7-1"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-8-1"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-8-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-8-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-4-8-4"
+class="td11"></td></tr>
+ </table></div>
+<!--l. 565--><p class="indent" > Note for option <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">breaklinks</span></span></span>: The correct value is automatically set according to the driver features. It
+can be overwritten for drivers that do not support broken links. However, at any case, the link area will
+be wrong and displaced.
+<!--l. 570--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">3.4 </span> <a
+ id="x1-80003.4"></a>Backend drivers</h4>
+<!--l. 572--><p class="noindent" >If no driver is specified, the package tries to find a driver in the following order:
+ <ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-8002x1">Autodetection, some <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;processors can be detected at <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;macro level (pdf<span class="TEX">T<span
+class="E">E</span>X</span>,
+ Xe<span class="TEX">T<span
+class="E">E</span>X</span>, V<span class="TEX">T<span
+class="E">E</span>X</span>).
+ </li>
+ <li
+ class="enumerate" id="x1-8004x2">Option <span
+class="ec-lmss-10">driverfallback</span>. If this option is set, its value is taken as driver option.
+ </li>
+ <li
+ class="enumerate" id="x1-8006x3">Macro <span
+class="ec-lmvtt-10">\Hy@defaultdriver</span>. The macro takes a driver file name (without file extension).
+ </li>
+ <li
+ class="enumerate" id="x1-8008x4">Package default is <span
+class="ec-lmss-10">hypertex</span>.</li></ol>
+<!--l. 583--><p class="noindent" >Many distributions are using a driver file <span
+class="ec-lmvtt-10">hypertex.cfg </span>that define <span
+class="ec-lmvtt-10">\Hy@defaultdriver </span>with <span
+class="ec-lmvtt-10">hdvips</span>. This
+is recommended because driver <span
+class="ec-lmss-10">dvips </span>provides much more features than <span
+class="ec-lmss-10">hypertex </span>for PDF
+generation.
+<a
+ id="x1-8009r4"></a> <!--l. 589--><div class="longtable"> <table id="TBL-5" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-5-1g"><col
+id="TBL-5-1"><col
+id="TBL-5-2"></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-5-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-1"
+class="td01"><span
+class="ec-lmvtt-10">driverfallback </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-1-2"
+class="td10">
+ <!--l. 589--><p class="noindent" >Its value is used as driver option </td>
+
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-1"
+class="td01"> </td><td style="white-space:normal; text-align:left;" id="TBL-5-2-2"
+class="td10">
+ <!--l. 590--><p class="noindent" >if the driver is not given or autodetected. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-1"
+class="td01"><span
+class="ec-lmvtt-10">dvipdfm </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-3-2"
+class="td10">
+ <!--l. 591--><p class="noindent" >Sets up <span
+class="ec-lmss-10">hyperref </span>for use with the <span
+class="ec-lmss-10">dvipdfm </span>driver. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-1"
+class="td01"><span
+class="ec-lmvtt-10">dvipdfmx </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-4-2"
+class="td10">
+ <!--l. 592--><p class="noindent" >Sets up <span
+class="ec-lmss-10">hyperref </span>for use with the <span
+class="ec-lmss-10">dvipdfmx </span>driver. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-1"
+class="td01"><span
+class="ec-lmvtt-10">dvips </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-5-2"
+class="td10">
+ <!--l. 593--><p class="noindent" >Sets up <span
+class="ec-lmss-10">hyperref </span>for use with the <span
+class="ec-lmss-10">dvips </span>driver. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-6-1"
+class="td01"><span
+class="ec-lmvtt-10">dvipsone </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-6-2"
+class="td10">
+ <!--l. 594--><p class="noindent" >Sets up <span
+class="ec-lmss-10">hyperref </span>for use with the <span
+class="ec-lmss-10">dvipsone </span>driver. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-7-1"
+class="td01"><span
+class="ec-lmvtt-10">dviwindo </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-7-2"
+class="td10">
+ <!--l. 595--><p class="noindent" >Sets up <span
+class="ec-lmss-10">hyperref </span>for use with the <span
+class="ec-lmss-10">dviwindo </span>Windows previewer. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-8-1"
+class="td01"><span
+class="ec-lmvtt-10">hypertex </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-8-2"
+class="td10">
+ <!--l. 596--><p class="noindent" >Sets up <span
+class="ec-lmss-10">hyperref </span>for use with the Hyper<span class="TEX">T<span
+class="E">E</span>X</span>-compliant drivers. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-9-1"
+class="td01"><span
+class="ec-lmvtt-10">latex2html </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-9-2"
+class="td10">
+ <!--l. 597--><p class="noindent" >Redefines a few macros for compatibility with <span
+class="ec-lmss-10">latex2html</span>. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-10-1"
+class="td01"><span
+class="ec-lmvtt-10">nativepdf </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-10-2"
+class="td10">
+ <!--l. 598--><p class="noindent" >An alias for <span
+class="ec-lmss-10">dvips</span> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-11-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfmark </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-11-2"
+class="td10">
+ <!--l. 599--><p class="noindent" >An alias for <span
+class="ec-lmss-10">dvips</span> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-12-1"
+class="td01"><span
+class="ec-lmvtt-10">pdftex </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-12-2"
+class="td10">
+ <!--l. 600--><p class="noindent" >Sets up <span
+class="ec-lmss-10">hyperref </span>for use with the <span
+class="ec-lmss-10">pdftex </span>program. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-13-1"
+class="td01"><span
+class="ec-lmvtt-10">ps2pdf </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-13-2"
+class="td10">
+ <!--l. 601--><p class="noindent" >Redefines a few macros for compatibility with Ghostscript&#8217;s PDF writer,
+ otherwise identical to <span
+class="ec-lmss-10">dvips</span>. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-14-1"
+class="td01"><span
+class="ec-lmvtt-10">tex4ht </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-14-2"
+class="td10">
+ <!--l. 604--><p class="noindent" >For use with <span class="TEX"><span
+class="ec-lmss-10">T</span><span
+class="E"><span
+class="ec-lmss-10">E</span></span><span
+class="ec-lmss-10">X</span></span><span
+class="ec-lmss-10">4ht</span> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-15-1"
+class="td01"><span
+class="ec-lmvtt-10">textures </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-15-2"
+class="td10">
+ <!--l. 605--><p class="noindent" >For use with <span
+class="ec-lmss-10">Textures</span> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-16-1"
+class="td01"><span
+class="ec-lmvtt-10">vtex </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-16-2"
+class="td10">
+ <!--l. 606--><p class="noindent" >For use with MicroPress&#8217; <span
+class="ec-lmss-10">VTeX</span>; the PDF and HTML backends are detected
+ automatically. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-17-1"
+class="td01"><span
+class="ec-lmvtt-10">vtexpdfmark </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-17-2"
+class="td10">
+ <!--l. 608--><p class="noindent" >For use with <span
+class="ec-lmss-10">VTeX</span>&#8217;s PostScript backend. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-18-1"
+class="td01"><span
+class="ec-lmvtt-10">xetex </span></td><td style="white-space:normal; text-align:left;" id="TBL-5-18-2"
+class="td10">
+ <!--l. 609--><p class="noindent" >For use with Xe<span class="TEX">T<span
+class="E">E</span>X</span>(using backend for dvipdfm). </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-19-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-20-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-21-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-22-1"
+class="td01"> </td><td style="white-space:normal; text-align:left;" id="TBL-5-22-2"
+class="td10"></td></tr>
+ </table></div>
+<!--l. 613--><p class="indent" > If you use <span
+class="ec-lmss-10">dviwindo</span>, you may need to redefine the macro <span
+class="ec-lmvtt-10">\wwwbrowser </span>(the default is
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">C:\netscape\netscape</span></span></span>) to tell <span
+class="ec-lmss-10">dviwindo </span>what program to launch. Thus, users of Internet Explorer might
+add something like this to hyperref.cfg:
+
+
+ <div class="verbatim" id="verbatim-11">
+\renewcommand{\wwwbrowser}{C:\string\Program\space
+&#x00A0;<br />&#x00A0;&#x00A0;Files\string\Plus!\string\Microsoft\space
+&#x00A0;<br />&#x00A0;&#x00A0;Internet\string\iexplore.exe}
+</div>
+<!--l. 622--><p class="nopar" >
+<!--l. 624--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">3.5 </span> <a
+ id="x1-90003.5"></a>Extension options</h4>
+<a
+ id="x1-9001r5"></a> <!--l. 626--><div class="longtable"> <table id="TBL-6" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-6-1g"><col
+id="TBL-6-1"><col
+id="TBL-6-2"><col
+id="TBL-6-3"><col
+id="TBL-6-4"></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-6-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-1"
+class="td01"><span
+class="ec-lmvtt-10">extension </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-2"
+class="td11"> text </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-6-1-4"
+class="td10">
+ <!--l. 626--><p class="noindent" >Set the file extension (e.g.&#x00A0;<span
+class="ec-lmss-10">dvi</span>)
+ which will be appended to file links
+ created if you use the <span
+class="ec-lmss-10">xr </span>package. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-1"
+class="td01"><span
+class="ec-lmvtt-10">hyperfigures </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-6-2-4"
+class="td10">
+ <!--l. 629--><p class="noindent" > </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-1"
+class="td01"><span
+class="ec-lmvtt-10">backref </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-2"
+class="td11"> text </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-3-4"
+class="td10">
+ <!--l. 629--><p class="noindent" >Adds &#8216;backlink&#8217; text to the end
+ of each item in the bibliography,
+ as a list of section numbers. This
+ can only work properly <span
+class="ec-lmri-10">if </span>there is
+ a blank line after each <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\bibitem</span></span></span>.
+ Supported values are <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">section</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">slide</span></span></span>,
+ <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">page</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">none</span></span></span>, or <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">false</span></span></span>. If no value is
+ given, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">section</span></span></span> is taken as default. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-1"
+class="td01"><span
+class="ec-lmvtt-10">pagebackref </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-4-4"
+class="td10">
+ <!--l. 633--><p class="noindent" >Adds &#8216;backlink&#8217; text to the end of
+ each item in the bibliography, as a
+ list of page numbers. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-1"
+class="td01"><span
+class="ec-lmvtt-10">hyperindex </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-3"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-5-4"
+class="td10">
+ <!--l. 635--><p class="noindent" >Makes the page numbers of index
+ entries into hyperlinks. Relays on
+ unique page anchors (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">pageanchor</span></span></span>,
+ &#x2026;) </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-6-1"
+class="td01"><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">pageanchors</span></span></span> <span
+class="ec-lmvtt-10">and </span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">plainpages=false</span></span></span><span
+class="ec-lmvtt-10">. </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-7-1"
+class="td01"><span
+class="ec-lmvtt-10">hyperfootnotes </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-7-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-7-3"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-7-4"
+class="td10">
+ <!--l. 638--><p class="noindent" >Makes the footnote marks into
+ hyperlinks to the footnote text.
+ Easily broken &#x2026; </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-8-1"
+class="td01"><span
+class="ec-lmvtt-10">encap </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-8-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-8-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-6-8-4"
+class="td10">
+ <!--l. 640--><p class="noindent" >Sets encap character for hyperindex</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-9-1"
+class="td01"><span
+class="ec-lmvtt-10">linktoc </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-9-2"
+class="td11"> text </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-9-3"
+class="td11"> <span
+class="ec-lmri-10">section </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-9-4"
+class="td10">
+ <!--l. 641--><p class="noindent" >make text (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">section</span></span></span>), page number
+ (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">page</span></span></span>), both (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">all</span></span></span>) or nothing (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">none</span></span></span>)
+ be link on TOC, LOF and LOT </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-10-1"
+class="td01"><span
+class="ec-lmvtt-10">linktocpage </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-10-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-10-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-10-4"
+class="td10">
+ <!--l. 642--><p class="noindent" >make page number, not text, be link
+ on TOC, LOF and LOT </td>
+
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-11-1"
+class="td01"><span
+class="ec-lmvtt-10">breaklinks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-11-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-11-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-11-4"
+class="td10">
+ <!--l. 643--><p class="noindent" >allow links to break over lines by
+ making links over multiple lines into
+ PDF links to the same target </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-12-1"
+class="td01"><span
+class="ec-lmvtt-10">colorlinks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-12-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-12-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-12-4"
+class="td10">
+ <!--l. 645--><p class="noindent" >Colors the text of links and anchors.
+ The colors chosen depend on the
+ the type of link. At present the
+ only types of link distinguished are
+ citations, page references, URLs,
+ local file references, and other links.
+ Unlike colored boxes, the colored
+ text remains when printing. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-13-1"
+class="td01"><span
+class="ec-lmvtt-10">linkcolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-13-2"
+class="td11"> color </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-13-3"
+class="td11"> <span
+class="ec-lmri-10">red </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-13-4"
+class="td10">
+ <!--l. 650--><p class="noindent" >Color for normal internal links. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-14-1"
+class="td01"><span
+class="ec-lmvtt-10">anchorcolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-14-2"
+class="td11"> color </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-14-3"
+class="td11"> <span
+class="ec-lmri-10">black </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-14-4"
+class="td10">
+ <!--l. 651--><p class="noindent" >Color for anchor text. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-15-1"
+class="td01"><span
+class="ec-lmvtt-10">citecolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-15-2"
+class="td11"> color </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-15-3"
+class="td11"> <span
+class="ec-lmri-10">green </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-15-4"
+class="td10">
+ <!--l. 652--><p class="noindent" >Color for bibliographical citations in
+ text. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-16-1"
+class="td01"><span
+class="ec-lmvtt-10">filecolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-16-2"
+class="td11"> color </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-16-3"
+class="td11"> <span
+class="ec-lmri-10">cyan </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-16-4"
+class="td10">
+ <!--l. 653--><p class="noindent" >Color for URLs which open local
+ files. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-17-1"
+class="td01"><span
+class="ec-lmvtt-10">menucolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-17-2"
+class="td11"> color </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-17-3"
+class="td11"> <span
+class="ec-lmri-10">red </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-17-4"
+class="td10">
+ <!--l. 654--><p class="noindent" >Color for Acrobat menu items. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-18-1"
+class="td01"><span
+class="ec-lmvtt-10">runcolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-18-2"
+class="td11"> color </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-18-3"
+class="td11"> <span
+class="ec-lmri-10">filecolor </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-18-4"
+class="td10">
+ <!--l. 655--><p class="noindent" >Color for run links (launch
+ annotations). </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-19-1"
+class="td01"><span
+class="ec-lmvtt-10">urlcolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-19-2"
+class="td11"> color </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-19-3"
+class="td11"> <span
+class="ec-lmri-10">magenta </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-19-4"
+class="td10">
+ <!--l. 656--><p class="noindent" >Color for linked URLs. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-20-1"
+class="td01"><span
+class="ec-lmvtt-10">allcolors </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-20-2"
+class="td11"> color </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-20-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-6-20-4"
+class="td10">
+ <!--l. 657--><p class="noindent" >Set all color options (without border
+ and field options). </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-21-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-21-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-21-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-6-21-4"
+class="td10"></td></tr>
+<tr
+ style="vertical-align:baseline;" id="TBL-6-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-22-1"
+class="td01"><span
+class="ec-lmvtt-10">frenchlinks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-22-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-22-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-6-22-4"
+class="td10">
+ <!--l. 658--><p class="noindent" >Use small caps instead of color for
+ links. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-23-1"
+class="td01"><span
+class="ec-lmvtt-10">hidelinks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-23-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-23-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-6-23-4"
+class="td10">
+ <!--l. 659--><p class="noindent" >Hide links (removing color and
+ border). </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-24-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-25-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-26-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-27-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-28-1"
+class="td01"> </td></tr>
+ </table></div>
+<!--l. 662--><p class="noindent" >Note that all color names must be defined before use, following the normal system of the standard
+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;<span
+class="ec-lmss-10">color </span>package.
+<!--l. 665--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">3.6 </span> <a
+ id="x1-100003.6"></a>PDF-specific display options</h4>
+<a
+ id="x1-10001r6"></a> <!--l. 667--><div class="longtable"> <table id="TBL-7" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-7-1g"><col
+id="TBL-7-1"><col
+id="TBL-7-2"><col
+id="TBL-7-3"><col
+id="TBL-7-4"></colgroup>
+
+
+<tr
+ style="vertical-align:baseline;" id="TBL-7-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-1-1"
+class="td01"><span
+class="ec-lmvtt-10">bookmarks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-1-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-1-3"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-7-1-4"
+class="td10">
+ <!--l. 667--><p class="noindent" >A set of Acrobat bookmarks are written, in a
+ manner similar to the table of contents, requiring
+ two passes of <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>. Some postprocessing of
+ the bookmark file (file extension <span
+class="ec-lmvtt-10">.out</span>) may
+ be needed to translate <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;codes, since
+ bookmarks must be written in PDFEncoding. To
+ aid this process, the <span
+class="ec-lmvtt-10">.out </span>file is not rewritten
+ by <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;if it is edited to contain a line
+ <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\let\WriteBookmarks\relax</span></span></span> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-1"
+class="td01"><span
+class="ec-lmvtt-10">bookmarksopen </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-7-2-4"
+class="td10">
+ <!--l. 673--><p class="noindent" >If Acrobat bookmarks are requested, show them
+ with all the subtrees expanded. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-1"
+class="td01"><span
+class="ec-lmvtt-10">bookmarksopenlevel </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-2"
+class="td11"> parameter </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-7-3-4"
+class="td10">
+ <!--l. 675--><p class="noindent" >level (<span
+class="ec-lmvtt-10">\maxdimen</span>) to which bookmarks are open</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-1"
+class="td01"><span
+class="ec-lmvtt-10">bookmarksnumbered </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-7-4-4"
+class="td10">
+ <!--l. 676--><p class="noindent" >If Acrobat bookmarks are requested, include
+ section numbers. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-1"
+class="td01"><span
+class="ec-lmvtt-10">bookmarkstype </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-2"
+class="td11"> text </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-3"
+class="td11"> <span
+class="ec-lmri-10">toc </span></td><td style="white-space:normal; text-align:left;" id="TBL-7-5-4"
+class="td10">
+ <!--l. 677--><p class="noindent" >to specify which &#8216;toc&#8217; file to mimic </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-1"
+class="td01"><span
+class="ec-lmvtt-10">CJKbookmarks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-7-6-4"
+class="td10">
+ <!--l. 679--><p class="noindent" >This option should be used to produce CJK
+ bookmarks. Package <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">hyperref</span></span></span> supports both
+ normal and preprocessed mode of the <span
+class="ec-lmss-10">CJK</span>
+ package; during the creation of bookmarks,
+ it simply replaces CJK&#8217;s macros with special
+ versions which expand to the corresponding
+ character codes. Note that without the &#8216;unicode&#8217;
+ option of hyperref you get PDF files which
+ actually violate the PDF specification because
+ non-Unicode character codes are used &#8211; some
+ PDF readers localized for CJK languages (most
+ notably Acroread itself) support this. Also note
+ that option &#8216;CJKbookmarks&#8217; cannot be used
+ together with option &#8216;unicode&#8217;.
+ <!--l. 691--><p class="noindent" >No mechanism is provided to
+ translate non-Unicode bookmarks to Unicode; for
+ portable PDF documents only Unicode encoding
+ should be used. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-7-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfhighlight </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-7-2"
+class="td11"> name </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-7-3"
+class="td11"> <span
+class="ec-lmri-10">/I </span></td><td style="white-space:normal; text-align:left;" id="TBL-7-7-4"
+class="td10">
+ <!--l. 694--><p class="noindent" >How link buttons behave when selected; /I is
+ for inverse (the default); the other possibilities
+ are /N (no effect), /O (outline), and /P (inset
+ highlighting). </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-8-1"
+class="td01"><span
+class="ec-lmvtt-10">citebordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-8-2"
+class="td11"> RGB color </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-8-3"
+class="td11"> <span
+class="ec-lmri-10">0 1 0 </span></td><td style="white-space:normal; text-align:left;" id="TBL-7-8-4"
+class="td10">
+ <!--l. 697--><p class="noindent" >The color of the box around citations </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-9-1"
+class="td01"><span
+class="ec-lmvtt-10">filebordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-9-2"
+class="td11"> RGB color </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-9-3"
+class="td11"> <span
+class="ec-lmri-10">0 .5 .5 </span></td><td style="white-space:normal; text-align:left;" id="TBL-7-9-4"
+class="td10">
+ <!--l. 698--><p class="noindent" >The color of the box around links to files </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-10-1"
+class="td01"><span
+class="ec-lmvtt-10">linkbordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-10-2"
+class="td11"> RGB color </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-10-3"
+class="td11"> <span
+class="ec-lmri-10">1 0 0 </span></td><td style="white-space:normal; text-align:left;" id="TBL-7-10-4"
+class="td10">
+ <!--l. 699--><p class="noindent" >The color of the box around normal links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-11-1"
+class="td01"><span
+class="ec-lmvtt-10">menubordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-11-2"
+class="td11"> RGB color </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-11-3"
+class="td11"> <span
+class="ec-lmri-10">1 0 0 </span></td><td style="white-space:normal; text-align:left;" id="TBL-7-11-4"
+class="td10">
+ <!--l. 700--><p class="noindent" >The color of the box around Acrobat menu links</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-12-1"
+class="td01"><span
+class="ec-lmvtt-10">urlbordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-12-2"
+class="td11"> RGB color </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-12-3"
+class="td11"> <span
+class="ec-lmri-10">0 1 1 </span></td><td style="white-space:normal; text-align:left;" id="TBL-7-12-4"
+class="td10">
+ <!--l. 701--><p class="noindent" >The color of the box around links to URLs </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-13-1"
+class="td01"><span
+class="ec-lmvtt-10">runbordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-13-2"
+class="td11"> RGB color </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-13-3"
+class="td11"> <span
+class="ec-lmri-10">0 .7 .7 </span></td><td style="white-space:normal; text-align:left;" id="TBL-7-13-4"
+class="td10">
+ <!--l. 702--><p class="noindent" >Color of border around &#8216;run&#8217; links </td>
+
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-14-1"
+class="td01"><span
+class="ec-lmvtt-10">allbordercolors </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-14-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-14-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-7-14-4"
+class="td10">
+ <!--l. 703--><p class="noindent" >Set all border color options </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-15-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfborder </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-15-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-15-3"
+class="td11"> <span
+class="ec-lmri-10">0 0 1 </span></td><td style="white-space:normal; text-align:left;" id="TBL-7-15-4"
+class="td10">
+ <!--l. 704--><p class="noindent" >The style of box around links; defaults to a box
+ with lines of 1pt thickness, but the colorlinks
+ option resets it to produce no border. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-16-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-17-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-18-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-19-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-19-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-19-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-7-19-4"
+class="td10"></td></tr>
+ </table></div>
+<!--l. 708--><p class="noindent" >Note that the color of link borders can be specified <span
+class="ec-lmri-10">only </span>as 3 numbers in the range 0..1, giving an RGB
+color. You cannot use colors defined in <span class="TEX">T<span
+class="E">E</span>X</span>. Since version 6.76a this is no longer true. Especially with
+the help of package <span
+class="ec-lmss-10">xcolor </span>the usual color specifications of package <span
+class="ec-lmss-10">(x)color </span>can be used. For further
+information see description of package <span
+class="ec-lmss-10">hycolor</span>.
+<!--l. 715--><p class="indent" > The bookmark commands are stored in a file called <span
+class="ec-lmri-10">jobname</span><span
+class="ec-lmvtt-10">.out</span>. The files is not processed by
+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;so any markup is passed through. You can postprocess this file as needed; as an aid
+for this, the <span
+class="ec-lmvtt-10">.out </span>file is not overwritten on the next <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;run if it is edited to contain the
+line
+
+
+ <div class="verbatim" id="verbatim-12">
+\let\WriteBookmarks\relax
+</div>
+<!--l. 722--><p class="nopar" >
+<!--l. 724--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">3.7 </span> <a
+ id="x1-110003.7"></a>PDF display and information options</h4>
+<a
+ id="x1-11001r7"></a> <!--l. 726--><div class="longtable"> <table id="TBL-8" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-8-1g"><col
+id="TBL-8-1"><col
+id="TBL-8-2"><col
+id="TBL-8-3"><col
+id="TBL-8-4"></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-8-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-1-1"
+class="td01"><span
+class="ec-lmvtt-10">baseurl </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-1-2"
+class="td11">
+ <!--l. 726--><p class="noindent" >URL </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-1-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-1-4"
+class="td10">
+ <!--l. 726--><p class="noindent" >Sets the base URL of the PDF document </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfpagemode </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-2-2"
+class="td11">
+ <!--l. 727--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-2-4"
+class="td10">
+ <!--l. 727--><p class="noindent" >Determines how the file is opening in
+ Acrobat; the possibilities are <span
+class="ec-lmvtt-10">UseNone</span>,
+ <span
+class="ec-lmvtt-10">UseThumbs </span>(show thumbnails), <span
+class="ec-lmvtt-10">UseOutlines</span>
+ (show bookmarks), <span
+class="ec-lmvtt-10">FullScreen</span>, <span
+class="ec-lmvtt-10">UseOC </span>(PDF
+ 1.5), and <span
+class="ec-lmvtt-10">UseAttachments </span>(PDF 1.6). If no
+ mode if explicitly chosen, but the bookmarks
+ option is set, <span
+class="ec-lmvtt-10">UseOutlines </span>is used. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-1"
+class="td01"><span
+class="ec-lmvtt-10">pdftitle </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-3-2"
+class="td11">
+ <!--l. 732--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-3-4"
+class="td10">
+ <!--l. 732--><p class="noindent" >Sets the document information Title field </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfauthor </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-4-2"
+class="td11">
+ <!--l. 733--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-4-4"
+class="td10">
+ <!--l. 733--><p class="noindent" >Sets the document information Author field </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfsubject </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-5-2"
+class="td11">
+ <!--l. 734--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-5-4"
+class="td10">
+ <!--l. 734--><p class="noindent" >Sets the document information Subject field </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-6-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfcreator </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-6-2"
+class="td11">
+ <!--l. 735--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-6-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-6-4"
+class="td10">
+ <!--l. 735--><p class="noindent" >Sets the document information Creator field </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-7-1"
+class="td01"><span
+class="ec-lmvtt-10">addtopdfproducer </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-7-2"
+class="td11">
+ <!--l. 736--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-7-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-7-4"
+class="td10">
+ <!--l. 736--><p class="noindent" >Adds additional text to the document
+ information Producer field </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-8-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfkeywords </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-8-2"
+class="td11">
+ <!--l. 737--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-8-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-8-4"
+class="td10">
+ <!--l. 737--><p class="noindent" >Sets the document information Keywords field</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-9-1"
+class="td01"><span
+class="ec-lmvtt-10">pdftrapped </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-9-2"
+class="td11">
+ <!--l. 738--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-9-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-9-4"
+class="td10">
+ <!--l. 738--><p class="noindent" >Sets the document information Trapped entry.</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-10-1"
+class="td01"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-10-2"
+class="td11">
+ <!--l. 739--><p class="noindent" > </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-10-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-10-4"
+class="td10">
+ <!--l. 739--><p class="noindent" >Possible values are <span
+class="ec-lmvtt-10">True</span>, <span
+class="ec-lmvtt-10">False </span>and <span
+class="ec-lmvtt-10">Unknown</span>.</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-11-1"
+class="td01"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-11-2"
+class="td11">
+ <!--l. 740--><p class="noindent" > </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-11-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-11-4"
+class="td10">
+ <!--l. 740--><p class="noindent" >An empty value means, the entry is not set. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-12-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfinfo </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-12-2"
+class="td11">
+ <!--l. 741--><p class="noindent" >key
+ value
+ list </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-12-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-12-4"
+class="td10">
+ <!--l. 741--><p class="noindent" >Alternative interface for setting the document
+ information. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-13-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfview </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-13-2"
+class="td11">
+ <!--l. 743--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-13-3"
+class="td11"> <span
+class="ec-lmri-10">XYZ </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-13-4"
+class="td10">
+ <!--l. 743--><p class="noindent" >Sets the default PDF &#8216;view&#8217; for each link </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-14-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfstartpage </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-14-2"
+class="td11">
+ <!--l. 744--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-14-3"
+class="td11"> <span
+class="ec-lmri-10">1 </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-14-4"
+class="td10">
+ <!--l. 744--><p class="noindent" >Determines on which page the PDF file is
+ opened. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-15-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfstartview </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-15-2"
+class="td11">
+ <!--l. 745--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-15-3"
+class="td11"> <span
+class="ec-lmri-10">Fit </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-15-4"
+class="td10">
+ <!--l. 745--><p class="noindent" >Set the startup page view </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-16-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfremotestartview </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-16-2"
+class="td11">
+ <!--l. 746--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-16-3"
+class="td11"> <span
+class="ec-lmri-10">Fit </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-16-4"
+class="td10">
+ <!--l. 746--><p class="noindent" >Set the startup page view of remote PDF files</td>
+
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-17-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfpagescrop </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-17-2"
+class="td11">
+ <!--l. 747--><p class="noindent" >n
+ n
+ n
+ n </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-17-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-17-4"
+class="td10">
+ <!--l. 747--><p class="noindent" >Sets the default PDF crop box for pages. This
+ should be a set of four numbers </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-18-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfcenterwindow </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-18-2"
+class="td11">
+ <!--l. 748--><p class="noindent" >boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-18-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-18-4"
+class="td10">
+ <!--l. 748--><p class="noindent" >position the document window in the center
+ of the screen </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-19-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfdirection </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-19-2"
+class="td11">
+ <!--l. 749--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-19-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-19-4"
+class="td10">
+ <!--l. 749--><p class="noindent" >direction setting </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-20-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfdisplaydoctitle </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-20-2"
+class="td11">
+ <!--l. 750--><p class="noindent" >boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-20-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-20-4"
+class="td10">
+ <!--l. 750--><p class="noindent" >display document title instead of file name in
+ title bar </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-21-1"
+class="td01"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-21-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-21-3"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-21-4"
+class="td10"></td></tr>
+<tr
+ style="vertical-align:baseline;" id="TBL-8-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-22-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfduplex </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-22-2"
+class="td11">
+ <!--l. 752--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-22-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-22-4"
+class="td10">
+ <!--l. 752--><p class="noindent" >paper handling option for print dialog </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-23-1"
+class="td01"><span
+class="ec-lmvtt-10">pdffitwindow </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-23-2"
+class="td11">
+ <!--l. 753--><p class="noindent" >boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-23-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-23-4"
+class="td10">
+ <!--l. 753--><p class="noindent" >resize document window to fit document size </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-24-1"
+class="td01"><span
+class="ec-lmvtt-10">pdflang </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-24-2"
+class="td11">
+ <!--l. 754--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-24-3"
+class="td11"> <span
+class="ec-lmri-10">relax </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-24-4"
+class="td10">
+ <!--l. 754--><p class="noindent" >PDF language identifier (RFC 3066) </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-25-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfmenubar </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-25-2"
+class="td11">
+ <!--l. 755--><p class="noindent" >boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-25-3"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-25-4"
+class="td10">
+ <!--l. 755--><p class="noindent" >make PDF viewer&#8217;s menu bar visible </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-26-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfnewwindow </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-26-2"
+class="td11">
+ <!--l. 756--><p class="noindent" >boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-26-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-26-4"
+class="td10">
+ <!--l. 756--><p class="noindent" >make links that open another PDF file start a
+ new window </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-27-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfnonfullscreenpagemode </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-27-2"
+class="td11">
+ <!--l. 758--><p class="noindent" >boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-27-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-27-4"
+class="td10">
+ <!--l. 758--><p class="noindent" >page mode setting on exiting full-screen mode</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-28-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfnumcopies </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-28-2"
+class="td11">
+ <!--l. 760--><p class="noindent" >integer </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-28-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-28-4"
+class="td10">
+ <!--l. 760--><p class="noindent" >number of printed copies </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-29-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfpagelayout </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-29-2"
+class="td11">
+ <!--l. 761--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-29-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-29-4"
+class="td10">
+ <!--l. 761--><p class="noindent" >set layout of PDF pages </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-30-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfpagelabels </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-30-2"
+class="td11">
+ <!--l. 762--><p class="noindent" >boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-30-3"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-30-4"
+class="td10">
+ <!--l. 762--><p class="noindent" >set PDF page labels </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-31-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfpagetransition </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-31-2"
+class="td11">
+ <!--l. 763--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-31-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-31-4"
+class="td10">
+ <!--l. 763--><p class="noindent" >set PDF page transition style </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-32-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfpicktraybypdfsize </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-32-2"
+class="td11">
+ <!--l. 764--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-32-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-32-4"
+class="td10">
+ <!--l. 764--><p class="noindent" >set option for print dialog </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-33-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfprintarea </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-33-2"
+class="td11">
+ <!--l. 765--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-33-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-33-4"
+class="td10">
+ <!--l. 765--><p class="noindent" >set /PrintArea of viewer preferences </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-34-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfprintclip </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-34-2"
+class="td11">
+ <!--l. 766--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-34-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-34-4"
+class="td10">
+ <!--l. 766--><p class="noindent" >set /PrintClip of viewer preferences </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-35-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfprintpagerange </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-35-2"
+class="td11">
+ <!--l. 767--><p class="noindent" >n
+ n
+ (n
+ n)* </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-35-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-35-4"
+class="td10">
+ <!--l. 768--><p class="noindent" >set /PrintPageRange of viewer preferences </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-36-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfprintscaling </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-36-2"
+class="td11">
+ <!--l. 770--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-36-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-36-4"
+class="td10">
+ <!--l. 770--><p class="noindent" >page scaling option for print dialog (option
+ /PrintScaling of viewer preferences, PDF 1.6);
+ valid values are <span
+class="ec-lmvtt-10">None </span>and <span
+class="ec-lmvtt-10">AppDefault</span> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-37-1"
+class="td01"><span
+class="ec-lmvtt-10">pdftoolbar </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-37-2"
+class="td11">
+ <!--l. 775--><p class="noindent" >boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-37-3"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-37-4"
+class="td10">
+ <!--l. 775--><p class="noindent" >make PDF toolbar visible </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-38-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfviewarea </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-38-2"
+class="td11">
+ <!--l. 776--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-38-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-38-4"
+class="td10">
+ <!--l. 776--><p class="noindent" >set /ViewArea of viewer preferences </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-39-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfviewclip </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-39-2"
+class="td11">
+ <!--l. 777--><p class="noindent" >text </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-39-3"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-39-4"
+class="td10">
+ <!--l. 777--><p class="noindent" >set /ViewClip of viewer preferences </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-40-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfwindowui </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-40-2"
+class="td11">
+ <!--l. 778--><p class="noindent" >boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-40-3"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-40-4"
+class="td10">
+ <!--l. 778--><p class="noindent" >make PDF user interface elements visible </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-41-1"
+class="td01"><span
+class="ec-lmvtt-10">unicode </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-41-2"
+class="td11">
+ <!--l. 779--><p class="noindent" >boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-41-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-8-41-4"
+class="td10">
+ <!--l. 779--><p class="noindent" >Unicode encoded PDF strings </td>
+
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-42-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-43-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-44-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-45-1"
+class="td01"> </td></tr>
+ </table></div>
+<!--l. 782--><p class="noindent" >Each link in Acrobat carries its own magnification level, which is set using PDF coordinate space, which
+is not the same as <span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s. The unit is bp and the origin is in the lower left corner. See also <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hypercalcbp</span></span></span>
+that is explained on page <a
+href="#x1-180004.2">46<!--tex4ht:ref: hypercalcbp --></a>. pdf<span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;works by supplying default values for <span
+class="ec-lmvtt-10">XYZ </span>(horizontal <span
+class="lmsy-10">&#x00D7;</span>
+vertical <span
+class="lmsy-10">&#x00D7; </span>zoom) and <span
+class="ec-lmvtt-10">FitBH</span>. However, drivers using <span
+class="ec-lmvtt-10">pdfmark </span>do not supply defaults, so
+<span
+class="ec-lmss-10">hyperref </span>passes in a value of -32768, which causes Acrobat to set (usually) sensible defaults.
+The following are possible values for the <span
+class="ec-lmvtt-10">pdfview</span>, <span
+class="ec-lmvtt-10">pdfstartview </span>and <span
+class="ec-lmvtt-10">pdfremotestartview</span>
+parameters.
+<a
+ id="x1-11002r8"></a> <!--l. 795--><div class="longtable"> <table id="TBL-9" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-9-1g"><col
+id="TBL-9-1"><col
+id="TBL-9-2"><col
+id="TBL-9-3"></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-9-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-1-1"
+class="td01"><span
+class="ec-lmvtt-10">XYZ </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-1-2"
+class="td11"> <span
+class="ec-lmri-10">left top zoom </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-1-3"
+class="td10">
+ <!--l. 795--><p class="noindent" >Sets a coordinate and a zoom factor. If any one
+ is null, the source link value is used. <span
+class="ec-lmri-10">null null</span>
+ <span
+class="ec-lmri-10">null </span>will give the same values as the current
+ page. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-1"
+class="td01"><span
+class="ec-lmvtt-10">Fit </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-9-2-3"
+class="td10">
+ <!--l. 797--><p class="noindent" >Fits the page to the window. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-1"
+class="td01"><span
+class="ec-lmvtt-10">FitH </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-2"
+class="td11"> <span
+class="ec-lmri-10">top </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-3-3"
+class="td10">
+ <!--l. 798--><p class="noindent" >Fits the width of the page to the window. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-1"
+class="td01"><span
+class="ec-lmvtt-10">FitV </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-2"
+class="td11"> <span
+class="ec-lmri-10">left </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-4-3"
+class="td10">
+ <!--l. 799--><p class="noindent" >Fits the height of the page to the window. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-1"
+class="td01"><span
+class="ec-lmvtt-10">FitR </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-2"
+class="td11"> <span
+class="ec-lmri-10">left bottom right top </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-5-3"
+class="td10">
+ <!--l. 800--><p class="noindent" >Fits the rectangle specified by the four
+ coordinates to the window. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-1"
+class="td01"><span
+class="ec-lmvtt-10">FitB </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-9-6-3"
+class="td10">
+ <!--l. 801--><p class="noindent" >Fits the page bounding box to the window. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-7-1"
+class="td01"><span
+class="ec-lmvtt-10">FitBH </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-7-2"
+class="td11"> <span
+class="ec-lmri-10">top </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-7-3"
+class="td10">
+ <!--l. 802--><p class="noindent" >Fits the width of the page bounding box to
+ the window. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-8-1"
+class="td01"><span
+class="ec-lmvtt-10">FitBV </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-8-2"
+class="td11"> <span
+class="ec-lmri-10">left </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-8-3"
+class="td10">
+ <!--l. 803--><p class="noindent" >Fits the height of the page bounding box to
+ the window. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-9-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-10-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-11-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-12-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-13-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-13-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-9-13-3"
+class="td10"></td></tr>
+ </table></div>
+<!--l. 806--><p class="indent" > The <span
+class="ec-lmvtt-10">pdfpagelayout </span>can be one of the following values.
+<a
+ id="x1-11003r9"></a> <!--l. 809--><div class="longtable"> <table id="TBL-10" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-10-1g"><col
+id="TBL-10-1"><col
+id="TBL-10-2"></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-10-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-1-1"
+class="td01"><span
+class="ec-lmvtt-10">SinglePage </span></td><td style="white-space:normal; text-align:left;" id="TBL-10-1-2"
+class="td10">
+ <!--l. 809--><p class="noindent" >Displays a single page; advancing flips the page </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-1"
+class="td01"><span
+class="ec-lmvtt-10">OneColumn </span></td><td style="white-space:normal; text-align:left;" id="TBL-10-2-2"
+class="td10">
+ <!--l. 810--><p class="noindent" >Displays the document in one column; continuous scrolling. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-1"
+class="td01"><span
+class="ec-lmvtt-10">TwoColumnLeft </span></td><td style="white-space:normal; text-align:left;" id="TBL-10-3-2"
+class="td10">
+ <!--l. 811--><p class="noindent" >Displays the document in two columns, odd-numbered pages to
+ the left. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-1"
+class="td01"><span
+class="ec-lmvtt-10">TwoColumnRight </span></td><td style="white-space:normal; text-align:left;" id="TBL-10-4-2"
+class="td10">
+ <!--l. 812--><p class="noindent" >Displays the document in two columns, odd-numbered pages to
+ the right. </td>
+
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-1"
+class="td01"><span
+class="ec-lmvtt-10">TwoPageLeft </span></td><td style="white-space:normal; text-align:left;" id="TBL-10-5-2"
+class="td10">
+ <!--l. 813--><p class="noindent" >Displays two pages, odd-numbered pages to the left (since PDF
+ 1.5). </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-1"
+class="td01"><span
+class="ec-lmvtt-10">TwoPageRight </span></td><td style="white-space:normal; text-align:left;" id="TBL-10-6-2"
+class="td10">
+ <!--l. 814--><p class="noindent" >Displays two pages, odd-numbered pages to the right (since PDF
+ 1.5). </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-7-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-8-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-9-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-10-1"
+class="td01"> </td><td style="white-space:normal; text-align:left;" id="TBL-10-10-2"
+class="td10"></td></tr>
+ </table></div>
+<!--l. 817--><p class="indent" > Finally, the <span
+class="ec-lmvtt-10">pdfpagetransition </span>can be one of the following values, where <span
+class="ec-lmri-10">/Di </span>stands for direction of
+motion in degrees, generally in 90<sup><span
+class="lmsy7-">&#x2218;</span></sup>&#x00A0;steps, <span
+class="ec-lmri-10">/Dm </span>is a horizontal (<span
+class="ec-lmvtt-10">/H</span>) or vertical (<span
+class="ec-lmvtt-10">/V</span>) dimension
+(e.g.&#x00A0;<span
+class="ec-lmvtt-10">Blinds /Dm /V</span>), and <span
+class="ec-lmri-10">/M </span>is for motion, either in (<span
+class="ec-lmvtt-10">/I</span>) or out (<span
+class="ec-lmvtt-10">/O</span>).
+<a
+ id="x1-11004r10"></a> <!--l. 825--><div class="longtable"> <table id="TBL-11" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-11-1g"><col
+id="TBL-11-1"><col
+id="TBL-11-2"><col
+id="TBL-11-3"></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-1-1"
+class="td01"><span
+class="ec-lmvtt-10">Blinds </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-1-2"
+class="td11"> /Dm </td><td style="white-space:normal; text-align:left;" id="TBL-11-1-3"
+class="td10">
+ <!--l. 825--><p class="noindent" >Multiple lines distributed evenly across the screen sweep
+ in the same direction to reveal the new page. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-11-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-1"
+class="td01"><span
+class="ec-lmvtt-10">Box </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-2"
+class="td11"> /M </td><td style="white-space:normal; text-align:left;" id="TBL-11-2-3"
+class="td10">
+ <!--l. 827--><p class="noindent" >A box sweeps in or out. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-11-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-1"
+class="td01"><span
+class="ec-lmvtt-10">Dissolve </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-11-3-3"
+class="td10">
+ <!--l. 828--><p class="noindent" >The page image dissolves in a piecemeal fashion to reveal
+ the new page. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-1"
+class="td01"><span
+class="ec-lmvtt-10">Glitter </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-2"
+class="td11"> /Di </td><td style="white-space:normal; text-align:left;" id="TBL-11-4-3"
+class="td10">
+ <!--l. 829--><p class="noindent" >Similar to Dissolve, except the effect sweeps across the
+ screen. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-1"
+class="td01"><span
+class="ec-lmvtt-10">Split </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-2"
+class="td11"> /Dm /M </td><td style="white-space:normal; text-align:left;" id="TBL-11-5-3"
+class="td10">
+ <!--l. 830--><p class="noindent" >Two lines sweep across the screen to reveal the new page.</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-6-1"
+class="td01"><span
+class="ec-lmvtt-10">Wipe </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-6-2"
+class="td11"> /Di </td><td style="white-space:normal; text-align:left;" id="TBL-11-6-3"
+class="td10">
+ <!--l. 831--><p class="noindent" >A single line sweeps across the screen to reveal the new
+ page. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-11-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-7-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-11-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-8-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-11-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-9-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-11-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-10-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-10-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-11-10-3"
+class="td10"></td></tr>
+ </table></div>
+<!--l. 834--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">3.8 </span> <a
+ id="x1-120003.8"></a>Option <span
+class="ec-lmvtt-10">pdfinfo</span></h4>
+<!--l. 836--><p class="noindent" >The information entries can be set using <span
+class="ec-lmvtt-10">pdftitle</span>, <span
+class="ec-lmvtt-10">pdfsubject</span>, &#x2026;. Option <span
+class="ec-lmvtt-10">pdfinfo </span>provides an alternative
+interface. It takes a key value list. The key names are the names that appear in the PDF information
+dictionary directly. Known keys such as <span
+class="ec-lmvtt-10">Title</span>, <span
+class="ec-lmvtt-10">Subject</span>, <span
+class="ec-lmvtt-10">Trapped </span>and other are mapped to options
+<span
+class="ec-lmvtt-10">pdftitle</span>, <span
+class="ec-lmvtt-10">subject</span>, <span
+class="ec-lmvtt-10">trapped</span>, &#x2026;Unknown keys are added to the information dictionary. Their values are text
+strings (see PDF specification). Example:
+ <div class="quote">
+
+
+ <div class="verbatim" id="verbatim-13">
+\hypersetup{
+&#x00A0;<br />&#x00A0;&#x00A0;pdfinfo={
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;Title={My&#x00A0;Title},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;Subject={My&#x00A0;Subject},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;NewKey={Foobar},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;%&#x00A0;...
+&#x00A0;<br />&#x00A0;&#x00A0;}
+&#x00A0;<br />}
+</div>
+ <!--l. 855--><p class="nopar" ></div>
+<!--l. 858--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">3.9 </span> <a
+ id="x1-130003.9"></a>Big alphabetical list</h4>
+<!--l. 860--><p class="noindent" >The following is a complete listing of available options for <span
+class="ec-lmss-10">hyperref</span>, arranged alphabetically.
+<a
+ id="x1-13001r11"></a> <!--l. 864--><div class="longtable"> <table id="TBL-12" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-12-1g"><col
+id="TBL-12-1"><col
+id="TBL-12-2"><col
+id="TBL-12-3"></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-1-1"
+class="td01"><span
+class="ec-lmvtt-10">anchorcolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-1-2"
+class="td11"> <span
+class="ec-lmri-10">black </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-1-3"
+class="td10">
+ <!--l. 864--><p class="noindent" >set color of anchors </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-1"
+class="td01"><span
+class="ec-lmvtt-10">backref </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-2-3"
+class="td10">
+ <!--l. 865--><p class="noindent" >do bibliographical back references </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-1"
+class="td01"><span
+class="ec-lmvtt-10">baseurl </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-3-3"
+class="td10">
+ <!--l. 866--><p class="noindent" >set base URL for document </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-1"
+class="td01"><span
+class="ec-lmvtt-10">bookmarks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-2"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-4-3"
+class="td10">
+ <!--l. 867--><p class="noindent" >make bookmarks </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-5-1"
+class="td01"><span
+class="ec-lmvtt-10">bookmarksnumbered </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-5-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-5-3"
+class="td10">
+ <!--l. 868--><p class="noindent" >put section numbers in bookmarks </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-6-1"
+class="td01"><span
+class="ec-lmvtt-10">bookmarksopen </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-6-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-6-3"
+class="td10">
+ <!--l. 869--><p class="noindent" >open up bookmark tree </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-7-1"
+class="td01"><span
+class="ec-lmvtt-10">bookmarksopenlevel </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-7-2"
+class="td11"> <span
+class="ec-lmvtt-10">\maxdimen </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-7-3"
+class="td10">
+ <!--l. 870--><p class="noindent" >level to which bookmarks are open </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-8-1"
+class="td01"><span
+class="ec-lmvtt-10">bookmarkstype </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-8-2"
+class="td11"> <span
+class="ec-lmri-10">toc </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-8-3"
+class="td10">
+ <!--l. 871--><p class="noindent" >to specify which &#8216;toc&#8217; file to mimic </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-9-1"
+class="td01"><span
+class="ec-lmvtt-10">breaklinks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-9-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-9-3"
+class="td10">
+ <!--l. 872--><p class="noindent" >allow links to break over lines </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-10-1"
+class="td01"><span
+class="ec-lmvtt-10">CJKbookmarks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-10-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-10-3"
+class="td10">
+ <!--l. 873--><p class="noindent" >to produce CJK bookmarks </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-11-1"
+class="td01"><span
+class="ec-lmvtt-10">citebordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-11-2"
+class="td11"> <span
+class="ec-lmri-10">0 1 0 </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-11-3"
+class="td10">
+ <!--l. 874--><p class="noindent" >color of border around cites </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-12-1"
+class="td01"><span
+class="ec-lmvtt-10">citecolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-12-2"
+class="td11"> <span
+class="ec-lmri-10">green </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-12-3"
+class="td10">
+ <!--l. 875--><p class="noindent" >color of citation links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-13-1"
+class="td01"><span
+class="ec-lmvtt-10">colorlinks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-13-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-13-3"
+class="td10">
+ <!--l. 876--><p class="noindent" >color links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-14-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-14-2"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-14-3"
+class="td10">
+ <!--l. 877--><p class="noindent" >(<span
+class="ec-lmss-10">tex4ht</span>, <span
+class="ec-lmss-10">dviwindo</span>) </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-15-1"
+class="td01"><span
+class="ec-lmvtt-10">debug </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-15-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-15-3"
+class="td10">
+ <!--l. 878--><p class="noindent" >provide details of anchors defined; same as
+ verbose </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-16-1"
+class="td01"><span
+class="ec-lmvtt-10">destlabel </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-16-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-16-3"
+class="td10">
+ <!--l. 879--><p class="noindent" >destinations are named by the first <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\label</span></span></span>
+ after the anchor creation </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-17-1"
+class="td01"><span
+class="ec-lmvtt-10">draft </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-17-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-17-3"
+class="td10">
+ <!--l. 880--><p class="noindent" >do not do any hyperlinking </td>
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-18-1"
+class="td01"><span
+class="ec-lmvtt-10">dvipdfm </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-18-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-18-3"
+class="td10">
+ <!--l. 881--><p class="noindent" >use <span
+class="ec-lmss-10">dvipdfm </span>backend </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-19-1"
+class="td01"><span
+class="ec-lmvtt-10">dvipdfmx </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-19-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-19-3"
+class="td10">
+ <!--l. 882--><p class="noindent" >use <span
+class="ec-lmss-10">dvipdfmx </span>backend </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-20-1"
+class="td01"><span
+class="ec-lmvtt-10">dvips </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-20-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-20-3"
+class="td10">
+ <!--l. 883--><p class="noindent" >use <span
+class="ec-lmss-10">dvips </span>backend </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-21-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-21-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-21-3"
+class="td10"></td></tr>
+<tr
+ style="vertical-align:baseline;" id="TBL-12-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-22-1"
+class="td01"><span
+class="ec-lmvtt-10">dvipsone </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-22-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-22-3"
+class="td10">
+ <!--l. 884--><p class="noindent" >use <span
+class="ec-lmss-10">dvipsone </span>backend </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-23-1"
+class="td01"><span
+class="ec-lmvtt-10">dviwindo </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-23-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-23-3"
+class="td10">
+ <!--l. 885--><p class="noindent" >use <span
+class="ec-lmss-10">dviwindo </span>backend </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-24-1"
+class="td01"><span
+class="ec-lmvtt-10">encap </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-24-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-24-3"
+class="td10">
+ <!--l. 886--><p class="noindent" >to set encap character for hyperindex </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-25-1"
+class="td01"><span
+class="ec-lmvtt-10">extension </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-25-2"
+class="td11"> <span
+class="ec-lmri-10">dvi </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-25-3"
+class="td10">
+ <!--l. 887--><p class="noindent" >suffix of linked files </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-26-1"
+class="td01"><span
+class="ec-lmvtt-10">filebordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-26-2"
+class="td11"> <span
+class="ec-lmri-10">0 .5 .5 </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-26-3"
+class="td10">
+ <!--l. 888--><p class="noindent" >color of border around file links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-27-1"
+class="td01"><span
+class="ec-lmvtt-10">filecolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-27-2"
+class="td11"> <span
+class="ec-lmri-10">cyan </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-27-3"
+class="td10">
+ <!--l. 889--><p class="noindent" >color of file links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-28-1"
+class="td01"><span
+class="ec-lmvtt-10">final </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-28-2"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-28-3"
+class="td10">
+ <!--l. 890--><p class="noindent" >opposite of option draft </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-29-1"
+class="td01"><span
+class="ec-lmvtt-10">frenchlinks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-29-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-29-3"
+class="td10">
+ <!--l. 891--><p class="noindent" >use small caps instead of color for links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-30-1"
+class="td01"><span
+class="ec-lmvtt-10">hyperfigures </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-30-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-30-3"
+class="td10">
+ <!--l. 892--><p class="noindent" >make figures hyper links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-31-1"
+class="td01"><span
+class="ec-lmvtt-10">hyperfootnotes </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-31-2"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-31-3"
+class="td10">
+ <!--l. 893--><p class="noindent" >set up hyperlinked footnotes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-32-1"
+class="td01"><span
+class="ec-lmvtt-10">hyperindex </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-32-2"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-32-3"
+class="td10">
+ <!--l. 894--><p class="noindent" >set up hyperlinked indices </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-33-1"
+class="td01"><span
+class="ec-lmvtt-10">hypertex </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-33-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-33-3"
+class="td10">
+ <!--l. 895--><p class="noindent" >use <span
+class="ec-lmss-10">Hyper</span><span class="TEX"><span
+class="ec-lmss-10">T</span><span
+class="E"><span
+class="ec-lmss-10">E</span></span><span
+class="ec-lmss-10">X</span></span> backend </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-34-1"
+class="td01"><span
+class="ec-lmvtt-10">hypertexnames </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-34-2"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-34-3"
+class="td10">
+ <!--l. 896--><p class="noindent" >use guessable names for links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-35-1"
+class="td01"><span
+class="ec-lmvtt-10">implicit </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-35-2"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-35-3"
+class="td10">
+ <!--l. 897--><p class="noindent" >redefine <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;internals </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-36-1"
+class="td01"><span
+class="ec-lmvtt-10">latex2html </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-36-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-36-3"
+class="td10">
+ <!--l. 898--><p class="noindent" >use <span class="LATEX"><span
+class="ec-lmss-10">L</span><span class="A"><span
+class="ec-lmss-10">A</span></span><span class="TEX"><span
+class="ec-lmss-10">T</span><span
+class="E"><span
+class="ec-lmss-10">E</span></span><span
+class="ec-lmss-10">X</span></span></span><span
+class="ec-lmss-10">2HTML </span>backend </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-37-1"
+class="td01"><span
+class="ec-lmvtt-10">linkbordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-37-2"
+class="td11"> <span
+class="ec-lmri-10">1 0 0 </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-37-3"
+class="td10">
+ <!--l. 899--><p class="noindent" >color of border around links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-38-1"
+class="td01"><span
+class="ec-lmvtt-10">linkcolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-38-2"
+class="td11"> <span
+class="ec-lmri-10">red </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-38-3"
+class="td10">
+ <!--l. 900--><p class="noindent" >color of links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-39-1"
+class="td01"><span
+class="ec-lmvtt-10">linktoc </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-39-2"
+class="td11"> <span
+class="ec-lmri-10">section </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-39-3"
+class="td10">
+ <!--l. 901--><p class="noindent" >make text be link on TOC, LOF and LOT </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-40-1"
+class="td01"><span
+class="ec-lmvtt-10">linktocpage </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-40-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-40-3"
+class="td10">
+ <!--l. 902--><p class="noindent" >make page number, not text, be link on TOC,
+ LOF and LOT </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-41-1"
+class="td01"><span
+class="ec-lmvtt-10">menubordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-41-2"
+class="td11"> <span
+class="ec-lmri-10">1 0 0 </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-41-3"
+class="td10">
+ <!--l. 903--><p class="noindent" >color of border around menu links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-42-1"
+class="td01"> </td></tr>
+<tr
+ style="vertical-align:baseline;" id="TBL-12-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-43-1"
+class="td01"><span
+class="ec-lmvtt-10">menucolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-43-2"
+class="td11"> <span
+class="ec-lmri-10">red </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-43-3"
+class="td10">
+ <!--l. 904--><p class="noindent" >color for menu links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-44-1"
+class="td01"><span
+class="ec-lmvtt-10">nativepdf </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-44-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-44-3"
+class="td10">
+ <!--l. 905--><p class="noindent" >an alias for <span
+class="ec-lmss-10">dvips</span> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-45-1"
+class="td01"><span
+class="ec-lmvtt-10">naturalnames </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-45-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-45-3"
+class="td10">
+ <!--l. 906--><p class="noindent" >use <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>-computed names for links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-46-1"
+class="td01"><span
+class="ec-lmvtt-10">nesting </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-46-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-46-3"
+class="td10">
+ <!--l. 907--><p class="noindent" >allow nesting of links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-47-1"
+class="td01"><span
+class="ec-lmvtt-10">pageanchor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-47-2"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-47-3"
+class="td10">
+ <!--l. 908--><p class="noindent" >put an anchor on every page </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-48-1"
+class="td01"><span
+class="ec-lmvtt-10">pagebackref </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-48-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-48-3"
+class="td10">
+ <!--l. 909--><p class="noindent" >backreference by page number </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-49-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfauthor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-49-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-49-3"
+class="td10">
+ <!--l. 910--><p class="noindent" >text for PDF Author field </td>
+
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-50-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfborder </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-50-2"
+class="td11"> <span
+class="ec-lmri-10">0 0 1 </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-50-3"
+class="td10">
+ <!--l. 911--><p class="noindent" >width of PDF link border </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-51-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-51-2"
+class="td11"> <span
+class="ec-lmri-10">0 0 0 </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-51-3"
+class="td10">
+ <!--l. 912--><p class="noindent" >(<span
+class="ec-lmvtt-10">colorlinks)</span> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-52-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfcenterwindow </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-52-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-52-3"
+class="td10">
+ <!--l. 913--><p class="noindent" >position the document window in the center
+ of the screen </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-53-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-53-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfcreator </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-53-2"
+class="td11"> <span
+class="ec-lmri-10">LaTeX with </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-53-3"
+class="td10">
+ <!--l. 914--><p class="noindent" >text for PDF Creator field </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-54-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-54-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-54-2"
+class="td11"> <span
+class="ec-lmri-10">hyperref </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-54-3"
+class="td10">
+ <!--l. 916--><p class="noindent" > </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-55-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-55-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfdirection </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-55-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-55-3"
+class="td10">
+ <!--l. 916--><p class="noindent" >direction setting </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-56-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-56-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfdisplaydoctitle </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-56-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-56-3"
+class="td10">
+ <!--l. 917--><p class="noindent" >display document title instead of file name in
+ title bar </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-57-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-57-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfduplex </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-57-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-57-3"
+class="td10">
+ <!--l. 919--><p class="noindent" >paper handling option for print dialog </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-58-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-58-1"
+class="td01"><span
+class="ec-lmvtt-10">pdffitwindow </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-58-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-58-3"
+class="td10">
+ <!--l. 921--><p class="noindent" >resize document window to fit document size </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-59-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-59-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfhighlight </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-59-2"
+class="td11"> <span
+class="ec-lmri-10">/I </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-59-3"
+class="td10">
+ <!--l. 922--><p class="noindent" >set highlighting of PDF links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-60-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-60-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfinfo </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-60-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-60-3"
+class="td10">
+ <!--l. 923--><p class="noindent" >alternative interface for setting document
+ information </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-61-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-61-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfkeywords </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-61-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-61-3"
+class="td10">
+ <!--l. 924--><p class="noindent" >text for PDF Keywords field </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-62-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-62-1"
+class="td01"><span
+class="ec-lmvtt-10">pdflang </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-62-2"
+class="td11"> <span
+class="ec-lmri-10">relax </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-62-3"
+class="td10">
+ <!--l. 925--><p class="noindent" >PDF language identifier (RFC 3066) </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-63-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-63-1"
+class="td01"> </td></tr>
+<tr
+ style="vertical-align:baseline;" id="TBL-12-64-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-64-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfmark </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-64-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-64-3"
+class="td10">
+ <!--l. 926--><p class="noindent" >an alias for <span
+class="ec-lmss-10">dvips</span> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-65-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-65-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfmenubar </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-65-2"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-65-3"
+class="td10">
+ <!--l. 927--><p class="noindent" >make PDF viewer&#8217;s menu bar visible </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-66-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-66-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfnewwindow </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-66-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-66-3"
+class="td10">
+ <!--l. 928--><p class="noindent" >make links that open another PDF </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-67-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-67-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-67-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-67-3"
+class="td10">
+ <!--l. 929--><p class="noindent" >file start a new window </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-68-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-68-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfnonfullscreenpagemode </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-68-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-68-3"
+class="td10">
+ <!--l. 931--><p class="noindent" >page mode setting on exiting full-screen mode</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-69-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-69-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfnumcopies </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-69-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-69-3"
+class="td10">
+ <!--l. 933--><p class="noindent" >number of printed copies </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-70-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-70-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfpagelayout </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-70-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-70-3"
+class="td10">
+ <!--l. 934--><p class="noindent" >set layout of PDF pages </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-71-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-71-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfpagemode </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-71-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-71-3"
+class="td10">
+ <!--l. 935--><p class="noindent" >set default mode of PDF display </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-72-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-72-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfpagelabels </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-72-2"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-72-3"
+class="td10">
+ <!--l. 936--><p class="noindent" >set PDF page labels </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-73-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-73-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfpagescrop </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-73-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-73-3"
+class="td10">
+ <!--l. 937--><p class="noindent" >set crop size of PDF document </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-74-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-74-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfpagetransition </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-74-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-74-3"
+class="td10">
+ <!--l. 938--><p class="noindent" >set PDF page transition style </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-75-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-75-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfpicktraybypdfsize </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-75-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-75-3"
+class="td10">
+ <!--l. 940--><p class="noindent" >set option for print dialog </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-76-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-76-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfprintarea </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-76-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-76-3"
+class="td10">
+ <!--l. 941--><p class="noindent" >set /PrintArea of viewer preferences </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-77-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-77-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfprintclip </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-77-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-77-3"
+class="td10">
+ <!--l. 942--><p class="noindent" >set /PrintClip of viewer preferences </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-78-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-78-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfprintpagerange </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-78-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-78-3"
+class="td10">
+ <!--l. 943--><p class="noindent" >set /PrintPageRange of viewer preferences </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-79-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-79-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfprintscaling </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-79-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-79-3"
+class="td10">
+ <!--l. 944--><p class="noindent" >page scaling option for print dialog </td>
+
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-80-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-80-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfproducer </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-80-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-80-3"
+class="td10">
+ <!--l. 945--><p class="noindent" >text for PDF Producer field </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-81-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-81-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfremotestartview </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-81-2"
+class="td11"> <span
+class="ec-lmri-10">Fit </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-81-3"
+class="td10">
+ <!--l. 946--><p class="noindent" >starting view of remote PDF documents </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-82-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-82-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfstartpage </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-82-2"
+class="td11"> <span
+class="ec-lmri-10">1 </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-82-3"
+class="td10">
+ <!--l. 947--><p class="noindent" >page at which PDF document opens </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-83-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-83-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfstartview </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-83-2"
+class="td11"> <span
+class="ec-lmri-10">Fit </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-83-3"
+class="td10">
+ <!--l. 948--><p class="noindent" >starting view of PDF document </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-84-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-84-1"
+class="td01"> </td></tr>
+<tr
+ style="vertical-align:baseline;" id="TBL-12-85-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-85-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfsubject </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-85-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-85-3"
+class="td10">
+ <!--l. 949--><p class="noindent" >text for PDF Subject field </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-86-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-86-1"
+class="td01"><span
+class="ec-lmvtt-10">pdftex </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-86-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-86-3"
+class="td10">
+ <!--l. 950--><p class="noindent" >use <span
+class="ec-lmss-10">pdf</span><span class="TEX"><span
+class="ec-lmss-10">T</span><span
+class="E"><span
+class="ec-lmss-10">E</span></span><span
+class="ec-lmss-10">X</span></span> backend </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-87-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-87-1"
+class="td01"><span
+class="ec-lmvtt-10">pdftitle </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-87-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-87-3"
+class="td10">
+ <!--l. 951--><p class="noindent" >text for PDF Title field </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-88-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-88-1"
+class="td01"><span
+class="ec-lmvtt-10">pdftoolbar </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-88-2"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-88-3"
+class="td10">
+ <!--l. 952--><p class="noindent" >make PDF toolbar visible </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-89-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-89-1"
+class="td01"><span
+class="ec-lmvtt-10">pdftrapped </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-89-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-89-3"
+class="td10">
+ <!--l. 953--><p class="noindent" >Sets the document information Trapped entry.
+ Possible values are <span
+class="ec-lmvtt-10">True</span>, <span
+class="ec-lmvtt-10">False </span>and <span
+class="ec-lmvtt-10">Unknown</span>.
+ An empty value means, the entry is not set. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-90-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-90-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfview </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-90-2"
+class="td11"> <span
+class="ec-lmri-10">XYZ </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-90-3"
+class="td10">
+ <!--l. 956--><p class="noindent" >PDF &#8216;view&#8217; when on link traversal </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-91-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-91-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfviewarea </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-91-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-91-3"
+class="td10">
+ <!--l. 957--><p class="noindent" >set /ViewArea of viewer preferences </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-92-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-92-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfviewclip </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-92-2"
+class="td11"> <span
+class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-92-3"
+class="td10">
+ <!--l. 958--><p class="noindent" >set /ViewClip of viewer preferences </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-93-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-93-1"
+class="td01"><span
+class="ec-lmvtt-10">pdfwindowui </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-93-2"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-93-3"
+class="td10">
+ <!--l. 959--><p class="noindent" >make PDF user interface elements visible </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-94-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-94-1"
+class="td01"><span
+class="ec-lmvtt-10">plainpages </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-94-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-94-3"
+class="td10">
+ <!--l. 960--><p class="noindent" >do page number anchors as plain Arabic </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-95-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-95-1"
+class="td01"><span
+class="ec-lmvtt-10">ps2pdf </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-95-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-95-3"
+class="td10">
+ <!--l. 961--><p class="noindent" >use <span
+class="ec-lmss-10">ps2pdf </span>backend </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-96-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-96-1"
+class="td01"><span
+class="ec-lmvtt-10">raiselinks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-96-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-96-3"
+class="td10">
+ <!--l. 962--><p class="noindent" >raise up links (for <span
+class="ec-lmss-10">Hyper</span><span class="TEX"><span
+class="ec-lmss-10">T</span><span
+class="E"><span
+class="ec-lmss-10">E</span></span><span
+class="ec-lmss-10">X</span></span> backend) </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-97-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-97-1"
+class="td01"><span
+class="ec-lmvtt-10">runbordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-97-2"
+class="td11"> <span
+class="ec-lmri-10">0 .7 .7 </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-97-3"
+class="td10">
+ <!--l. 963--><p class="noindent" >color of border around &#8216;run&#8217; links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-98-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-98-1"
+class="td01"><span
+class="ec-lmvtt-10">runcolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-98-2"
+class="td11"> <span
+class="ec-lmri-10">filecolor </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-98-3"
+class="td10">
+ <!--l. 964--><p class="noindent" >color of &#8216;run&#8217; links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-99-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-99-1"
+class="td01"><span
+class="ec-lmvtt-10">setpagesize </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-99-2"
+class="td11"> <span
+class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-99-3"
+class="td10">
+ <!--l. 965--><p class="noindent" >set page size by special driver commands </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-100-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-100-1"
+class="td01"><span
+class="ec-lmvtt-10">tex4ht </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-100-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-100-3"
+class="td10">
+ <!--l. 966--><p class="noindent" >use <span class="TEX"><span
+class="ec-lmss-10">T</span><span
+class="E"><span
+class="ec-lmss-10">E</span></span><span
+class="ec-lmss-10">X</span></span><span
+class="ec-lmss-10">4ht </span>backend </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-101-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-101-1"
+class="td01"><span
+class="ec-lmvtt-10">textures </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-101-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-101-3"
+class="td10">
+ <!--l. 967--><p class="noindent" >use <span
+class="ec-lmss-10">Textures </span>backend </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-102-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-102-1"
+class="td01"><span
+class="ec-lmvtt-10">unicode </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-102-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-102-3"
+class="td10">
+ <!--l. 968--><p class="noindent" >Unicode encoded pdf strings </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-103-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-103-1"
+class="td01"><span
+class="ec-lmvtt-10">urlbordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-103-2"
+class="td11"> <span
+class="ec-lmri-10">0 1 1 </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-103-3"
+class="td10">
+ <!--l. 969--><p class="noindent" >color of border around URL links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-104-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-104-1"
+class="td01"><span
+class="ec-lmvtt-10">urlcolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-104-2"
+class="td11"> <span
+class="ec-lmri-10">magenta </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-104-3"
+class="td10">
+ <!--l. 970--><p class="noindent" >color of URL links </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-105-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-105-1"
+class="td01"> </td></tr>
+<tr
+ style="vertical-align:baseline;" id="TBL-12-106-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-106-1"
+class="td01"><span
+class="ec-lmvtt-10">verbose </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-106-2"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-12-106-3"
+class="td10">
+ <!--l. 971--><p class="noindent" >be chatty </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-107-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-107-1"
+class="td01"><span
+class="ec-lmvtt-10">vtex </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-107-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-107-3"
+class="td10">
+ <!--l. 972--><p class="noindent" >use <span
+class="ec-lmss-10">VTeX </span>backend </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-108-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-108-1"
+class="td01"><span
+class="ec-lmvtt-10">xetex </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-108-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-12-108-3"
+class="td10">
+ <!--l. 973--><p class="noindent" >use <span
+class="ec-lmss-10">Xe</span><span class="TEX"><span
+class="ec-lmss-10">T</span><span
+class="E"><span
+class="ec-lmss-10">E</span></span><span
+class="ec-lmss-10">X</span></span> backend </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-109-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-109-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-110-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-110-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-111-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-111-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-112-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-112-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-113-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-113-1"
+class="td01"> </td></tr>
+ </table></div>
+
+<!--l. 976--><p class="noindent" >
+ <h3 class="sectionHead"><span class="titlemark">4 </span> <a
+ id="x1-140004"></a>Additional user macros</h3>
+<!--l. 978--><p class="noindent" >If you need to make references to URLs, or write explicit links, the following low-level user macros are
+provided:
+<!--l. 981--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-13" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-13-1g"><col
+id="TBL-13-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\href</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">[</span></span></span><span
+class="ec-lmri-10">options</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">]</span></span></span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">URL</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 985--><p class="noindent" >The <span
+class="ec-lmri-10">text </span>is made a hyperlink to the <span
+class="ec-lmri-10">URL</span>; this must be a full URL (relative to the base URL, if that is
+defined). The special characters # and &#x02DC; do <span
+class="ec-lmri-10">not </span>need to be escaped in any way (unless the command is
+used in the argument of another command).
+<!--l. 990--><p class="indent" > The optional argument <span
+class="ec-lmri-10">options </span>recognizes the hyperref options <span
+class="ec-lmvtt-10">pdfremotestartview</span>, <span
+class="ec-lmvtt-10">pdfnewwindow</span>
+and the following key value options:
+ <dl class="description"><dt class="description">
+<span
+class="ec-lmvtk-10">page</span><span
+class="ec-lmbx-10">:</span> </dt><dd
+class="description">Specifies the start page number of remote PDF documents. First page is <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">1</span></span></span>.
+ </dd><dt class="description">
+<span
+class="ec-lmvtk-10">ismap</span><span
+class="ec-lmbx-10">:</span> </dt><dd
+class="description">Boolean key, if set to <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">true</span></span></span>, the URL should appended by the coordinates as query
+ parameters by the PDF viewer.
+ </dd><dt class="description">
+<span
+class="ec-lmvtk-10">nextactionraw</span><span
+class="ec-lmbx-10">:</span> </dt><dd
+class="description">The value of key <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">/Next</span></span></span> of action dictionaries, see PDF specification.</dd></dl>
+<!--l. 1003--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-14" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-14-1g"><col
+id="TBL-14-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\url</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">URL</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td></tr></table> </div></span>
+<!--l. 1007--><p class="noindent" >Similar to <span
+class="ec-lmvtt-10">\href</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">URL</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmvtt-10">\nolinkurl</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">URL</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}}</span></span></span>. Depending on the driver <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\href</span></span></span> also tries to detect the link
+type. Thus the result can be a url link, file link, &#x2026;
+<!--l. 1012--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-15" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-15-1g"><col
+id="TBL-15-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\nolinkurl</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">URL</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td></tr></table> </div></span>
+<!--l. 1016--><p class="noindent" >Write <span
+class="ec-lmri-10">URL </span>in the same way as <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\url</span></span></span>, without creating a hyperlink.
+<!--l. 1019--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-16" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-16-1g"><col
+id="TBL-16-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\hyperbaseurl</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">URL</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1023--><p class="noindent" >A base <span
+class="ec-lmri-10">URL </span>is established, which is prepended to other specified URLs, to make it easier to write
+portable documents.
+<!--l. 1026--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-17" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-17-1g"><col
+id="TBL-17-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\hyperimage</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">imageURL</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1030--><p class="noindent" >The link to the image referenced by the URL is inserted, using <span
+class="ec-lmri-10">text </span>as the anchor.
+<!--l. 1033--><p class="indent" > For drivers that produce HTML, the image itself is inserted by the browser, with the <span
+class="ec-lmri-10">text </span>being
+ignored completely.
+
+
+<!--l. 1036--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-18" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-18-1g"><col
+id="TBL-18-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\hyperdef</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">category</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">name</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1040--><p class="noindent" >A target area of the document (the <span
+class="ec-lmri-10">text</span>) is marked, and given the name <span
+class="ec-lmri-10">category.name</span>
+<!--l. 1043--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-19" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-19-1g"><col
+id="TBL-19-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\hyperref</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">URL</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">category</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">name</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1047--><p class="noindent" ><span
+class="ec-lmri-10">text </span>is made into a link to <span
+class="ec-lmri-10">URL#category.name</span>
+<!--l. 1049--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-20" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-20-1g"><col
+id="TBL-20-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\hyperref</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">[</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">]{</span></span></span><span
+class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1053--><p class="noindent" ><span
+class="ec-lmri-10">text </span>is made into a link to the same place as <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\ref{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> would be linked.
+<!--l. 1057--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-21" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-21-1g"><col
+id="TBL-21-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-21-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\hyperlink</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">name</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1060--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-22" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-22-1g"><col
+id="TBL-22-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-22-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\hypertarget</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">name</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1064--><p class="noindent" >A simple internal link is created with <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hypertarget</span></span></span>, with two parameters of an anchor <span
+class="ec-lmri-10">name</span>, and anchor
+<span
+class="ec-lmri-10">text</span>. <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyperlink</span></span></span> has two arguments, the name of a hypertext object defined somewhere by <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hypertarget</span></span></span>,
+and the <span
+class="ec-lmri-10">text </span>which be used as the link on the page.
+<!--l. 1070--><p class="indent" > Note that in HTML parlance, the <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyperlink</span></span></span> command inserts a notional # in front of each link,
+making it relative to the current testdocument; <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\href</span></span></span> expects a full URL.
+<!--l. 1074--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-23" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-23-1g"><col
+id="TBL-23-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-23-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\phantomsection </span></td>
+ </tr></table> </div></span>
+<!--l. 1078--><p class="noindent" >This sets an anchor at this location. It works similar to <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hypertarget{}{}</span></span></span> with an automatically chosen
+anchor name. Often it is used in conjunction with <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\addcontentsline</span></span></span> for sectionlike things (index,
+bibliography, preface). <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\addcontentsline</span></span></span> refers to the latest previous location where an anchor is set.
+Example:
+ <div class="quote">
+
+
+ <div class="verbatim" id="verbatim-14">
+\cleardoublepage
+&#x00A0;<br />\phantomsection
+&#x00A0;<br />\addcontentsline{toc}{chapter}{\indexname}
+&#x00A0;<br />\printindex
+</div>
+ <!--l. 1091--><p class="nopar" ></div>
+<!--l. 1093--><p class="noindent" >Now the entry in the table of contents (and bookmarks) for the index points to the start of the index page,
+not to a location before this page.
+<!--l. 1097--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-24" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-24-1g"><col
+id="TBL-24-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-24-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\autoref</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td></tr></table> </div></span>
+<!--l. 1101--><p class="noindent" >This is a replacement for the usual <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\ref</span></span></span> command that places a contextual label in front of the reference.
+This gives your users a bigger target to click for hyperlinks (e.g.&#x00A0;&#8216;section 2&#8217; instead of merely the number
+&#8216;2&#8217;).
+<!--l. 1107--><p class="indent" > The label is worked out from the context of the original <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\label</span></span></span> command by <span
+class="ec-lmss-10">hyperref </span>by using the
+macros listed below (shown with their default values). The macros can be (re)defined in documents using
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\(re)newcommand</span></span></span>; note that some of these macros are already defined in the standard document
+classes. The mixture of lowercase and uppercase initial letters is deliberate and corresponds to the
+author&#8217;s practice.
+<!--l. 1115--><p class="indent" > For each macro below, <span
+class="ec-lmss-10">hyperref </span>checks <span
+class="ec-lmvtt-10">\*autorefname </span>before <span
+class="ec-lmvtt-10">\*name</span>. For instance, it looks for
+<span
+class="ec-lmvtt-10">\figureautorefname </span>before <span
+class="ec-lmvtt-10">\figurename</span>.
+<a
+ id="x1-14001r12"></a> <!--l. 1120--><div class="longtable"> <table id="TBL-25" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-25-1g"><col
+id="TBL-25-1"><col
+id="TBL-25-2"></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-25-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-1-1"
+class="td01"><span
+class="ec-lmri-10">Macro </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-1-2"
+class="td10">
+ <!--l. 1120--><p class="noindent" ><span
+class="ec-lmri-10">Default</span> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-1"
+class="td01"><span
+class="ec-lmvtt-10">\figurename </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-2-2"
+class="td10">
+ <!--l. 1121--><p class="noindent" >Figure </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-3-1"
+class="td01"><span
+class="ec-lmvtt-10">\tablename </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-3-2"
+class="td10">
+ <!--l. 1122--><p class="noindent" >Table </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-4-1"
+class="td01"><span
+class="ec-lmvtt-10">\partname </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-4-2"
+class="td10">
+ <!--l. 1123--><p class="noindent" >Part </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-5-1"
+class="td01"><span
+class="ec-lmvtt-10">\appendixname </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-5-2"
+class="td10">
+ <!--l. 1124--><p class="noindent" >Appendix </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-6-1"
+class="td01"><span
+class="ec-lmvtt-10">\equationname </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-6-2"
+class="td10">
+ <!--l. 1125--><p class="noindent" >Equation </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-7-1"
+class="td01"><span
+class="ec-lmvtt-10">\Itemname </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-7-2"
+class="td10">
+ <!--l. 1126--><p class="noindent" >item </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-8-1"
+class="td01"><span
+class="ec-lmvtt-10">\chaptername </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-8-2"
+class="td10">
+ <!--l. 1127--><p class="noindent" >chapter </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-9-1"
+class="td01"><span
+class="ec-lmvtt-10">\sectionname </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-9-2"
+class="td10">
+ <!--l. 1128--><p class="noindent" >section </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-10-1"
+class="td01"><span
+class="ec-lmvtt-10">\subsectionname </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-10-2"
+class="td10">
+ <!--l. 1129--><p class="noindent" >subsection </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-11-1"
+class="td01"><span
+class="ec-lmvtt-10">\subsubsectionname </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-11-2"
+class="td10">
+ <!--l. 1130--><p class="noindent" >subsubsection </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-12-1"
+class="td01"><span
+class="ec-lmvtt-10">\paragraphname </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-12-2"
+class="td10">
+ <!--l. 1131--><p class="noindent" >paragraph </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-13-1"
+class="td01"><span
+class="ec-lmvtt-10">\Hfootnotename </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-13-2"
+class="td10">
+ <!--l. 1132--><p class="noindent" >footnote </td>
+
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-14-1"
+class="td01"><span
+class="ec-lmvtt-10">\AMSname </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-14-2"
+class="td10">
+ <!--l. 1133--><p class="noindent" >Equation </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-15-1"
+class="td01"><span
+class="ec-lmvtt-10">\theoremname </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-15-2"
+class="td10">
+ <!--l. 1134--><p class="noindent" >Theorem </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-16-1"
+class="td01"><span
+class="ec-lmvtt-10">\page </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-16-2"
+class="td10">
+ <!--l. 1135--><p class="noindent" >page </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-17-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-18-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-19-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-20-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-21-1"
+class="td01"> </td><td style="white-space:normal; text-align:left;" id="TBL-25-21-2"
+class="td10"></td></tr>
+ </table></div>
+<!--l. 1138--><p class="indent" > Example for a redefinition if <span
+class="ec-lmss-10">babel </span>is used:
+ <div class="quote">
+
+
+ <div class="verbatim" id="verbatim-15">
+\usepackage[ngerman]{babel}
+&#x00A0;<br />\addto\extrasngerman{%
+&#x00A0;<br />&#x00A0;&#x00A0;\def\subsectionautorefname{Unterkapitel}%
+&#x00A0;<br />}
+</div>
+ <!--l. 1145--><p class="nopar" ></div>
+<!--l. 1148--><p class="indent" > Hint: <span
+class="ec-lmvtt-10">\autoref </span>works via the counter name that the reference is based on. Sometimes <span
+class="ec-lmvtt-10">\autoref</span>
+chooses the wrong name, if the counter is used for different things. For example, it happens with
+<span
+class="ec-lmvtt-10">\newtheorem </span>if a lemma shares a counter with theorems. Then package <span
+class="ec-lmss-10">aliascnt </span>provides a method to
+generate a simulated second counter that allows the differentiation between theorems and
+lemmas:
+ <div class="quote">
+
+
+ <div class="verbatim" id="verbatim-16">
+\documentclass{article}
+&#x00A0;<br />
+&#x00A0;<br />\usepackage{aliascnt}
+&#x00A0;<br />\usepackage{hyperref}
+&#x00A0;<br />
+&#x00A0;<br />\newtheorem{theorem}{Theorem}
+&#x00A0;<br />
+&#x00A0;<br />\newaliascnt{lemma}{theorem}
+&#x00A0;<br />\newtheorem{lemma}[lemma]{Lemma}
+&#x00A0;<br />\aliascntresetthe{lemma}
+&#x00A0;<br />
+&#x00A0;<br />\providecommand*{\lemmaautorefname}{Lemma}
+&#x00A0;<br />
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />
+&#x00A0;<br />We&#x00A0;will&#x00A0;use&#x00A0;\autoref{a}&#x00A0;to&#x00A0;prove&#x00A0;\autoref{b}.
+&#x00A0;<br />
+&#x00A0;<br />\begin{lemma}\label{a}
+&#x00A0;<br />&#x00A0;&#x00A0;Nobody&#x00A0;knows.
+&#x00A0;<br />\end{lemma}
+&#x00A0;<br />
+&#x00A0;<br />\begin{theorem}\label{b}
+&#x00A0;<br />&#x00A0;&#x00A0;Nobody&#x00A0;is&#x00A0;right.
+&#x00A0;<br />\end{theorem}.
+&#x00A0;<br />
+&#x00A0;<br />\end{document}
+</div>
+ <!--l. 1183--><p class="nopar" ></div>
+<!--l. 1186--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-26" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-26-1g"><col
+id="TBL-26-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-26-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\autopageref</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1190--><p class="noindent" >It replaces <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\pageref</span></span></span> and adds the name for page in front of the page reference. First <span
+class="ec-lmvtt-10">\pageautorefname</span>
+is checked before <span
+class="ec-lmvtt-10">\pagename</span>.
+<!--l. 1195--><p class="indent" > For instances where you want a reference to use the correct counter, but not to create a link, there
+are starred forms:
+<!--l. 1198--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-27" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-27-1g"><col
+id="TBL-27-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-27-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\ref*</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td></tr></table> </div></span>
+<!--l. 1202--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-28" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-28-1g"><col
+id="TBL-28-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-28-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\pageref*</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1206--><p class="noindent" >
+
+
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-29" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-29-1g"><col
+id="TBL-29-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-29-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\autoref*</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td></tr></table> </div></span>
+<!--l. 1210--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-30" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-30-1g"><col
+id="TBL-30-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-30-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\autopageref*</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1214--><p class="indent" > A typical use would be to write
+
+
+ <div class="verbatim" id="verbatim-17">
+\hyperref[other]{that&#x00A0;nice&#x00A0;section&#x00A0;(\ref*{other})&#x00A0;we&#x00A0;read&#x00A0;before}
+</div>
+<!--l. 1217--><p class="nopar" >
+<!--l. 1219--><p class="indent" > We want <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\ref*{other}</span></span></span> to generate the correct number, but not to form a link, since we do this
+ourselves with <span
+class="ec-lmvtt-10">\hyperref</span>.
+<!--l. 1222--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-31" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-31-1g"><col
+id="TBL-31-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-31-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\pdfstringdef</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">macroname</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span class="TEX"><span
+class="ec-lmri-10">T</span><span
+class="E"><span
+class="ec-lmri-10">E</span></span><span
+class="ec-lmri-10">X</span></span><span
+class="ec-lmri-10">string</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1226--><p class="indent" > <span
+class="ec-lmvtt-10">\pdfstringdef </span>returns a macro containing the PDF string. (Currently this is done globally, but do not
+rely on it.) All the following tasks, definitions and redefinitions are made in a group to keep them
+local:
+ <ul class="itemize1">
+ <li class="itemize">Switching to PD1 or PU encoding
+ </li>
+ <li class="itemize">Defining the &#8220;octal sequence commands&#8221; (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\345</span></span></span>): <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\edef\3{\string\3}</span></span></span>
+ </li>
+ <li class="itemize">Special glyphs of <span class="TEX">T<span
+class="E">E</span>X</span>: <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\{</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\%</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\&amp;</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\space</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\dots</span></span></span>, etc.
+ </li>
+ <li class="itemize">National glyphs (<span
+class="ec-lmss-10">german.sty</span>, <span
+class="ec-lmss-10">french.sty</span>, etc.)
+ </li>
+ <li class="itemize">Logos: <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\TeX</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\eTeX</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\MF</span></span></span>, etc.
+ </li>
+ <li class="itemize">Disabling commands that do not provide useful functionality in bookmarks: <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\label</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\index</span></span></span>,
+ <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\glossary</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\discretionary</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\def</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\let</span></span></span>, etc.
+ </li>
+ <li class="itemize"><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#8217;s font commands like <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\textbf</span></span></span>, etc.
+ </li>
+ <li class="itemize">Support for <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\xspace</span></span></span> provided by the <span
+class="ec-lmss-10">xspace </span>package</li></ul>
+<!--l. 1242--><p class="indent" > In addition, parentheses are protected to avoid the danger of unsafe unbalanced parentheses in
+the PDF string. For further details, see Heiko Oberdiek&#8217;s Euro<span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;paper distributed with
+<span
+class="ec-lmss-10">hyperref</span>.
+<!--l. 1246--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-32" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-32-1g"><col
+id="TBL-32-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-32-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\begin</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{NoHyper}</span></span></span>&#x2026;<span
+class="ec-lmvtt-10">\end</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{NoHyper}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1249--><p class="indent" > Sometimes we just don&#8217;t want the wretched package interfering with us. Define an environment we
+can put in manually, or include in a style file, which stops the hypertext functions doing anything.
+This is used, for instance, in the Elsevier classes, to stop <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">hyperref</span></span></span> playing havoc in the front
+matter.
+
+
+<!--l. 1255--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">4.1 </span> <a
+ id="x1-150004.1"></a>Bookmark macros</h4>
+<!--l. 1257--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">4.1.1 </span> <a
+ id="x1-160004.1.1"></a>Setting bookmarks</h5>
+<!--l. 1259--><p class="noindent" >Usually <span
+class="ec-lmss-10">hyperref </span>automatically adds bookmarks for <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\section</span></span></span> and similar macros. But they can also set
+manually.
+<!--l. 1262--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-33" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-33-1g"><col
+id="TBL-33-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-33-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\pdfbookmark</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">[</span></span></span><span
+class="ec-lmri-10">level</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">]{</span></span></span>text<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">name</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1265--><p class="indent" > creates a bookmark with the specified text and at the given level (default is 0). As name for the
+internal anchor name is used (in conjunction with level). Therefore the name must be unique (similar to
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\label</span></span></span>).
+<!--l. 1269--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-34" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-34-1g"><col
+id="TBL-34-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-34-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\currentpdfbookmark</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">name</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1272--><p class="indent" > creates a bookmark at the current level.
+<!--l. 1274--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-35" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-35-1g"><col
+id="TBL-35-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-35-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\subpdfbookmark</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">name</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1277--><p class="indent" > creates a bookmark one step down in the bookmark hierarchy. Internally the current level is increased
+by one.
+<!--l. 1280--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-36" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-36-1g"><col
+id="TBL-36-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-36-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-36-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\belowpdfbookmark</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">name</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1283--><p class="indent" > creates a bookmark below the current bookmark level. However after the command the current
+bookmark level has not changed.
+<!--l. 1286--><p class="noindent" ><span
+class="ec-lmbx-10">Hint: </span>Package <span
+class="ec-lmss-10">bookmark </span>replaces <span
+class="ec-lmss-10">hyperref</span>&#8217;s bookmark organization by a new algorithm:
+ <ul class="itemize1">
+ <li class="itemize">Usually only one <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run is needed.
+ </li>
+ <li class="itemize">More control over the bookmark appearance (color, font).
+ </li>
+ <li class="itemize">Different bookmark actions are supported (external file links, URLs, &#x2026;).</li></ul>
+<!--l. 1294--><p class="noindent" >Therefore I recommend using this package.
+<!--l. 1296--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">4.1.2 </span> <a
+ id="x1-170004.1.2"></a>Replacement macros</h5>
+<!--l. 1298--><p class="noindent" ><span
+class="ec-lmss-10">hyperref </span>takes the text for bookmarks from the arguments of commands like <span
+class="ec-lmvtt-10">\section</span>, which can
+contain things like math, colors, or font changes, none of which will display in bookmarks as
+is.
+
+
+<!--l. 1302--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-37" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-37-1g"><col
+id="TBL-37-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-37-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-37-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\texorpdfstring</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span class="TEX"><span
+class="ec-lmri-10">T</span><span
+class="E"><span
+class="ec-lmri-10">E</span></span><span
+class="ec-lmri-10">X</span></span><span
+class="ec-lmri-10">string</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">PDFstring</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1306--><p class="indent" > For example,
+
+
+ <div class="verbatim" id="verbatim-18">
+\section{Pythagoras:
+&#x00A0;<br />&#x00A0;&#x00A0;\texorpdfstring{$&#x00A0;a^2&#x00A0;+&#x00A0;b^2&#x00A0;=&#x00A0;c^2&#x00A0;$}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;a\texttwosuperior\&#x00A0;+&#x00A0;b\texttwosuperior\&#x00A0;=
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;c\texttwosuperior
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />}
+&#x00A0;<br />\section{\texorpdfstring{\textcolor{red}}{}{Red}&#x00A0;Mars}
+</div>
+<!--l. 1315--><p class="nopar" >
+<!--l. 1317--><p class="indent" > <span
+class="ec-lmvtt-10">\pdfstringdef </span>executes the hook before it expands the string. Therefore, you can use this hook to
+perform additional tasks or to disable additional commands.
+
+
+ <div class="verbatim" id="verbatim-19">
+\expandafter\def\expandafter\pdfstringdefPreHook
+&#x00A0;<br />\expandafter{%
+&#x00A0;<br />&#x00A0;&#x00A0;\pdfstringdefPreHook
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand{\mycommand}[1]{}%
+&#x00A0;<br />}
+</div>
+<!--l. 1327--><p class="nopar" >
+<!--l. 1329--><p class="indent" > However, for disabling commands, an easier way is via <span
+class="ec-lmvtt-10">\pdfstringdefDisableCommands</span>, which adds
+its argument to the definition of <span
+class="ec-lmvtt-10">\pdfstringdefPreHook </span>(&#8216;@&#8217; can here be used as letter in command
+names):
+
+
+ <div class="verbatim" id="verbatim-20">
+\pdfstringdefDisableCommands{%
+&#x00A0;<br />&#x00A0;&#x00A0;\let~\textasciitilde
+&#x00A0;<br />&#x00A0;&#x00A0;\def\url{\pdfstringdefWarn\url}%
+&#x00A0;<br />&#x00A0;&#x00A0;\let\textcolor\@gobble
+&#x00A0;<br />}
+</div>
+<!--l. 1340--><p class="nopar" >
+<!--l. 1342--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">4.2 </span> <a
+ id="x1-180004.2"></a>Utility macros</h4>
+<!--l. 1345--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-38" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-38-1g"><col
+id="TBL-38-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-38-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-38-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\hypercalcbp</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">dimen specification</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 1348--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hypercalcbp</span></span></span> takes a <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;dimen specification and converts it to bp and returns the number
+without the unit. This is useful for options <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">pdfview</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">pdfstartview</span></span></span> and <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">pdfremotestartview</span></span></span>.
+Example:
+ <div class="quote">
+
+
+ <div class="verbatim" id="verbatim-21">
+\hypersetup{
+&#x00A0;<br />&#x00A0;&#x00A0;pdfstartview={FitBH&#x00A0;\hypercalcbp{\paperheight-\topmargin-1in
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;-\headheight-\headsep}
+&#x00A0;<br />}
+</div>
+ <!--l. 1360--><p class="nopar" ></div>
+<!--l. 1362--><p class="noindent" >The origin of the PDF coordinate system is the lower left corner.
+<!--l. 1364--><p class="indent" > Note, for calculations you need either package <span
+class="ec-lmss-10">calc </span>or <span
+class="lmmi-10">&#x03B5;</span>-<span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span>. Nowadays the latter should
+automatically be enabled for <span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span> formats. Users without <span
+class="lmmi-10">&#x03B5;</span>-<span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span>, please, look in the source
+documentation <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">hyperref.dtx</span></span></span> for further limitations.
+<!--l. 1370--><p class="indent" > Also <span
+class="ec-lmvtt-10">\hypercalcbp </span>cannot be used in option specifications of <span
+class="ec-lmvtt-10">\documentclass </span>and <span
+class="ec-lmvtt-10">\usepackage</span>,
+because <span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span> expands the option lists of these commands. However package <span
+class="ec-lmss-10">hyperref </span>is not yet loaded
+and an undefined control sequence error would arise.
+<!--l. 1377--><p class="noindent" >
+ <h3 class="sectionHead"><span class="titlemark">5 </span> <a
+ id="x1-190005"></a>New Features<span class="footnote-mark"><a
+href="manual4.html#fn3x0"><sup class="textsuperscript">3</sup></a></span><a
+ id="x1-19001f3"></a> </h3>
+ <h4 class="subsectionHead"><span class="titlemark">5.1 </span> <a
+ id="x1-200005.1"></a>Option &#8216;pdflinkmargin&#8217;</h4>
+<!--l. 1382--><p class="noindent" >Option &#8216;pdflinkmargin&#8217; is an experimental option for specifying a link margin, if the driver supports this.
+Default is 1 pt for supporting drivers.
+<!--l. 1387--><p class="indent" >
+ <dl class="description"><dt class="description">
+<span
+class="ec-lmbx-10">pdfTeX</span> </dt><dd
+class="description">
+ <ul class="itemize1">
+ <li class="itemize">The link area also depends on the surrounding box.
+ </li>
+ <li class="itemize">Settings have local effect.
+ </li>
+ <li class="itemize">When a page is shipped out, pdfTeX uses the current setting of the link margin for all
+ links on the page.</li></ul>
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">pdfmark</span> </dt><dd
+class="description">
+ <ul class="itemize1">
+ <li class="itemize">Settings have global effect.</li></ul>
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">xetex</span> </dt><dd
+class="description">
+
+
+ <ul class="itemize1">
+ <li class="itemize">Settings must be done in the preamble or the first page and then have global effect.
+ The key inserts the new (x)dvipdfmx special <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\special{dvipdfmx:config</span><span
+class="ec-lmvtt-10">&#x00A0;g</span><span
+class="ec-lmvtt-10">&#x00A0;#1}</span></span></span> (with
+ the unit removed).</li></ul>
+ </dd><dt class="description">
+<span
+class="ec-lmbx-10">Other drivers</span> </dt><dd
+class="description">Unsupported.</dd></dl>
+<!--l. 1412--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.2 </span> <a
+ id="x1-210005.2"></a>Field option &#8216;calculatesortkey&#8217;</h4>
+<!--l. 1414--><p class="noindent" >Fields with calculated values are calculated in document order by default. If calculated field values
+depend on other calculated fields that appear later in the document, then the correct calculation order
+can be specified with option &#8216;calculatesortkey&#8217;. Its value is used as key to lexicographically sort the
+calculated fields. The sort key do not need to be unique. Fields that share the same key are sorted in
+document order.
+<!--l. 1424--><p class="indent" > Currently the field option &#8216;calculatesortkey&#8217; is only supported by the driver for pdfTeX.
+<!--l. 1428--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.3 </span> <a
+ id="x1-220005.3"></a>Option &#8216;localanchorname&#8217;</h4>
+<!--l. 1430--><p class="noindent" >When an anchor is set (e.g. via <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\refstepcounter</span></span></span>, then the anchor name is globally set to the current
+anchor name.
+<!--l. 1434--><p class="indent" > For example:
+
+
+ <div class="verbatim" id="verbatim-22">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\section{Foobar}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\begin{equation}\end{equation}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\label{sec:foobar}
+</div>
+<!--l. 1439--><p class="nopar" > With the default global setting (localanchorname=false) a reference to &#8216;sec:foobar&#8217; jumps to the
+equation before. With option &#8216;localanchorname&#8217; the anchor of the equation is forgotten after the
+environment and the reference &#8216;sec:foobar&#8217; jumps to the section title.
+<!--l. 1447--><p class="indent" > Option &#8216;localanchorname&#8217; is an experimental option, there might be situations, where the anchor
+name is not available as expected.
+<!--l. 1452--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.4 </span> <a
+ id="x1-230005.4"></a>Option &#8216;customdriver&#8217;</h4>
+<!--l. 1454--><p class="noindent" >The value of option &#8216;customdriver&#8217; is the name of an external driver file without extension &#8216;.def&#8217;. The file
+must have <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\ProvidesFile</span></span></span> with a version date and number that match the date and number of &#8216;hyperref&#8217;,
+otherwise a warning is given.
+<!--l. 1459--><p class="indent" > Because the interface, what needs to be defined in the driver, is not well defined and
+quite messy, the option is mainly intended to ease developing, testing, debugging the driver
+part.
+<!--l. 1464--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.5 </span> <a
+ id="x1-240005.5"></a>Option &#8216;psdextra&#8217;</h4>
+<!--l. 1466--><p class="noindent" >LaTeX&#8217;s NFSS is used to assist the conversion of arbitrary TeX strings to PDF strings (bookmarks, PDF
+information entries). Many math command names (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\geq</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\notin</span></span></span>, ...) are not in control of NFSS,
+therefore they are defined with prefix &#8216;text&#8217; (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\textgeq</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\textnotin</span></span></span>, ...). They can be mapped to short
+names during the processing to PDF strings. The disadvantage is that they are many hundreds macros
+that need to be redefined for each PDF string conversion. Therefore this can be enabled or disabled
+as option &#8216;psdextra&#8217;. On default the option is turned off (set to &#8216;false&#8217;). Turning the option
+on means that the short names are available. Then <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\geq</span></span></span> can directly be used instead of
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\textgeq</span></span></span>.
+<!--l. 1480--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.6 </span> <a
+ id="x1-250005.6"></a>\XeTeXLinkBox</h4>
+<!--l. 1482--><p class="noindent" >When XeTeX generates a link annotation, it does not look at the boxes (as the other drivers), but only
+at the character glyphs. If there are no glyphs (images, rules, ...), then it does not generate a link
+annotation. Macro <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\XeTeXLinkBox</span></span></span> puts its argument in a box and adds spaces at the lower left and
+upper right corners. An additional margin can be specified by setting it to the dimen register
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\XeTeXLinkMargin</span></span></span>. The default is 2pt.
+<!--l. 1491--><p class="indent" > Example:
+
+
+ <div class="verbatim" id="verbatim-23">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;%&#x00A0;xelatex
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\documentclass{article}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\setlength{\XeTeXLinkMargin}{1pt}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\begin{document}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\section{Hello&#x00A0;World}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\newpage
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\label{sec:hello}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\hyperref[sec:hello]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\XeTeXLinkBox{\rule{10mm}{10mm}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\end{document}
+</div>
+<!--l. 1507--><p class="nopar" >
+<!--l. 1509--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.7 </span> <a
+ id="x1-260005.7"></a>\IfHyperBooleanExists and \IfHyperBoolean</h4>
+
+
+ <div class="verbatim" id="verbatim-24">
+&#x00A0;\IfHyperBooleanExists{OPTION}{YES}{NO}
+</div>
+<!--l. 1512--><p class="nopar" > If a hyperref OPTION is a boolean, that means it takes values &#8216;true&#8217; or &#8216;false&#8217;, then <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\IfHyperBooleanExists</span></span></span>
+calls YES, otherwise NO.
+
+
+ <div class="verbatim" id="verbatim-25">
+&#x00A0;\IfHyperBoolean{OPTION}{YES}{NO}
+</div>
+<!--l. 1519--><p class="nopar" > Macro <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\IfHyperBoolean</span></span></span> calls YES, if OPTION exists as boolean and is enabled. Otherwise NO is
+executed.
+<!--l. 1525--><p class="indent" > Both macros are expandable. Additionally option &#8216;stoppedearly&#8217; is available. It is enabled if
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\MaybeStopEarly</span></span></span> or <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\MaybeStopNow</span></span></span> end hyperref prematurely.
+<!--l. 1530--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.8 </span> <a
+ id="x1-270005.8"></a>\unichar</h4>
+<!--l. 1532--><p class="noindent" >If a Unicode character is not supported by puenc.def, it can be given by using <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\unichar</span></span></span>. Its name
+and syntax is inherited from package &#8216;ucs&#8217;. However it is defined independently for use in
+hyperref&#8217;s <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\pdfstringdef</span></span></span> (that converts arbitrary TeX code to PDF strings or tries to do
+this).
+<!--l. 1540--><p class="indent" > Macro <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\unichar</span></span></span> takes a TeX number as argument, examples for U+263A (WHITE SMILING
+FACE):
+
+
+ <div class="verbatim" id="verbatim-26">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\unichar{"263A}%&#x00A0;hexadecimal&#x00A0;notation
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\unichar{9786}%&#x00A0;decimal&#x00A0;notation
+</div>
+<!--l. 1545--><p class="nopar" > &#8216;"&#8217; must not be a babel shorthand character or otherwise active. Otherwise prefix it with
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\string</span></span></span>:
+
+
+ <div class="verbatim" id="verbatim-27">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\unichar{\string"263A}%&#x00A0;converts&#x00A0;&#8216;"&#8217;&#x00A0;to&#x00A0;&#8216;"&#8217;&#x00A0;with&#x00A0;catcode&#x00A0;12&#x00A0;(other)
+</div>
+<!--l. 1550--><p class="nopar" > Users of (n)german packages or babel options may use <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\dq</span></span></span> instead:
+
+
+ <div class="verbatim" id="verbatim-28">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\unichar{\dq&#x00A0;263A}%&#x00A0;\dq&#x00A0;is&#x00A0;double&#x00A0;quote&#x00A0;with&#x00A0;catcode&#x00A0;12&#x00A0;(other)
+</div>
+<!--l. 1554--><p class="nopar" >
+<!--l. 1557--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.9 </span> <a
+ id="x1-280005.9"></a>\ifpdfstringunicode</h4>
+<!--l. 1559--><p class="noindent" >Some features of the PDF specification needs PDF strings. Examples are bookmarks or the entries in the
+information dictionary. The PDF specification allows two encodings &#8216;PDFDocEncoding&#8217; (8-bit encoding)
+and &#8216;Unicode&#8217; (UTF-16). The user can help using <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\texorpdfstring</span></span></span> to replace complicate TeX constructs
+by a representation for the PDF string. However <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\texorpdfstring</span></span></span> does not distinguish the two encodings.
+This gap closes <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\ifpdfstringunicode</span></span></span>. It is only allowed in the second argument of <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\texorpdfstring</span></span></span> and
+takes two arguments, the first allows the full range of Unicode. The second is limited to the characters
+available in PDFDocEncoding.
+<!--l. 1573--><p class="indent" > As example we take a macro definition for the Vietnamese name of Han The Thanh. Correctly
+written it needs some accented characters, one character even with a double accent. Class &#8216;tugboat.cls&#8217;
+defines a macro for the typesetted name:
+
+
+ <div class="verbatim" id="verbatim-29">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\def\Thanh{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;H\&#8216;an~%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Th\^e\llap{\raise&#x00A0;0.5ex\hbox{\&#8217;{}}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;~Th\&#8216;anh%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
+</div>
+<!--l. 1583--><p class="nopar" > It&#8217;s not entirely correct, the second accent over the &#8216;e&#8217; is not an acute, but a hook. However standard
+LaTeX does not provide such an accent.
+<!--l. 1588--><p class="indent" > Now we can extend the defintion to support hyperref. The first and the last word are already
+supported automatically. Characters with two or more accents are a difficult business in LaTeX, because
+the NFSS2 macros of the LaTeX kernel do not support more than one accent. Therefore also puenc.def
+misses support for them. But we can provide it using <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\unichar</span></span></span>. The character in question
+is:
+
+
+ <div class="verbatim" id="verbatim-30">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;%&#x00A0;U+1EC3&#x00A0;LATIN&#x00A0;SMALL&#x00A0;LETTER&#x00A0;E&#x00A0;WITH&#x00A0;CIRCUMFLEX&#x00A0;AND&#x00A0;HOOK&#x00A0;ABOVE
+</div>
+<!--l. 1597--><p class="nopar" > Thus we can put this together:
+
+
+ <div class="verbatim" id="verbatim-31">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\def\Thanh{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;H\&#8216;an~%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\texorpdfstring{Th\^e\llap{\raise&#x00A0;0.5ex\hbox{\&#8217;{}}}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;{\ifpdfstringunicode{Th\unichar{"1EC3}}{Th\^e}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;~Th\&#8216;anh%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
+</div>
+<!--l. 1606--><p class="nopar" > For PDFDocEncoding (PD1) the variant above has dropped the second accent. Alternatively we could
+provide a representation without accents instead of wrong accents:
+
+
+ <div class="verbatim" id="verbatim-32">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\def\Thanh{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\texorpdfstring{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;H\&#8216;an~%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Th\^e\llap{\raise&#x00A0;0.5ex\hbox{\&#8217;{}}}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;~Th\&#8216;anh%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifpdfstringunicode{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;H\&#8216;an&#x00A0;Th\unichar{"1EC3}&#x00A0;Th\&#8216;anh%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Han&#x00A0;The&#x00A0;Thanh%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
+</div>
+<!--l. 1624--><p class="nopar" >
+<!--l. 1626--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.10 </span> <a
+ id="x1-290005.10"></a>Customizing index style file with \nohyperpage</h4>
+<!--l. 1628--><p class="noindent" >Since version 2008/08/14 v6.78f.
+<!--l. 1632--><p class="indent" > For hyperlink support in the index, hyperref inserts <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyperpage</span></span></span> into the index macros. After
+processing with Makeindex, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyperpage</span></span></span> analyzes its argument to detect page ranges and page comma
+lists. However, only the standard settings are supported directly:
+
+
+ <div class="verbatim" id="verbatim-33">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;delim_r&#x00A0;"--"
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;delim_n&#x00A0;",&#x00A0;"
+</div>
+<!--l. 1639--><p class="nopar" > (See manual page/documentation of Makeindex that explains the keys that can be used in style files for
+Makeindex.) Customized versions of <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">delim_r,</span><span
+class="ec-lmvtt-10">&#x00A0;delim_n,</span><span
+class="ec-lmvtt-10">&#x00A0;suffix_2p,</span><span
+class="ec-lmvtt-10">&#x00A0;suffix_3p,</span><span
+class="ec-lmvtt-10">&#x00A0;suffix_mp</span></span></span> needs
+markup that <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyperpage</span></span></span> can detect and knows that this stuff does not belong to a page number. Makro
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\nohyperpage</span></span></span> serves as this markup. Put the customized code for these keys inside <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\nohyperpage</span></span></span>,
+e.g.:
+
+
+ <div class="verbatim" id="verbatim-34">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;suffix_2p&#x00A0;"\\nohyperpage{f.}"
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;suffix_3p&#x00A0;"\\nohyperpage{ff.}"
+</div>
+<!--l. 1651--><p class="nopar" > (Depending on the typesetting tradition some space "<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\\</span></span></span>," or "<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">~</span></span></span>" should be put before the first f inside
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\nohyperpage</span></span></span>.)
+<!--l. 1656--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.11 </span> <a
+ id="x1-300005.11"></a>Experimental option &#8216;ocgcolorlinks&#8217;</h4>
+<!--l. 1658--><p class="noindent" >The idea are colored links, when viewed, but printed without colors. This new experimental option
+&#8216;ocgcolorlinks&#8217; uses Optional Content Groups, a feature introduced in PDF 1.5.
+ <ul class="itemize1">
+ <li class="itemize">The option must be given for package loading: <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\usepackage[ocgcolorlinks]{hyperref}</span></span></span>
+ </li>
+ <li class="itemize">Main disadvantage: Links cannot be broken across lines. PDF reference 1.7: 4.10.2 "Making
+ Graphical Content Optional": Graphics state operations, such as setting the color, ..., are
+ still applied. Therefore the link text is put in a box and set twice, with and without color.
+ </li>
+ <li class="itemize">The feature can be switched of by <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hypersetup{ocgcolorlinks=false}</span></span></span> inside the document.
+ </li>
+ <li class="itemize">Supported drivers: pdftex, dvipdfm
+ </li>
+ <li class="itemize">The PDF version should be at least 1.5. It is automatically set for pdfTeX. Users of dvipdfmx
+ set the version on the command line: dvipdfmx -V 5</li></ul>
+<!--l. 1678--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.12 </span> <a
+ id="x1-310005.12"></a>Option &#8216;pdfa&#8217;</h4>
+<!--l. 1680--><p class="noindent" >The new option &#8216;pdfa&#8217; tries to avoid violations of PDF/A in code generated by hyperref. However, the
+result is usually not in PDF/A, because many features aren&#8217;t controlled by hyperref (XMP metadata,
+fonts, colors, driver dependend low level stuff, ...).
+<!--l. 1687--><p class="indent" > Currently, option &#8216;pdfa&#8217; sets and disables the following items:
+ <ul class="itemize1">
+ <li class="itemize">Enabled annotation flags: Print, NoZoom, NoRotate [PDF/A 6.5.3].
+ </li>
+ <li class="itemize">Disabled annotation flags: Hidden, Invisible, NoView [PDF/A 6.5.3].
+ </li>
+ <li class="itemize">Disabled: Launch action (<a
+href="run:..." >[</a>PDF/A 6.6.1].
+ </li>
+ <li class="itemize">Restricted: Named actions (NextPage, PrevPage, FirstPage, LastPage) [PDF/A 6.6.1].
+
+
+ </li>
+ <li class="itemize">Many things are disabled in PDF formulars:
+ <ul class="itemize2">
+ <li class="itemize">JavaScript actions [PDF/A 6.6.1]
+ </li>
+ <li class="itemize">Trigger events (additional actions) [PDF/A 6.6.2]
+ </li>
+ <li class="itemize">Push button (because of JavaScript)
+ </li>
+ <li class="itemize">Interactive Forms: Flag NeedAppearances is the default &#8216;false&#8217; (Because of this,
+ hyperref&#8217;s implementation of Forms looks ugly). [PDF/A 6.9]</li></ul>
+ </li></ul>
+<!--l. 1707--><p class="indent" > The default value of the new option &#8216;pdfa&#8217; is &#8216;false&#8217;. It influences the loading of the package and
+cannot be changed after hyperref is loaded (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\usepackage{hyperref}</span></span></span>).
+<!--l. 1713--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.13 </span> <a
+ id="x1-320005.13"></a>Option &#8216;linktoc&#8217; added</h4>
+<!--l. 1715--><p class="noindent" >The new option &#8216;linktoc&#8217; allows more control which part of an entry in the table of contents is made into
+a link:
+ <ul class="itemize1">
+ <li class="itemize">&#8216;linktoc=none&#8217; (no links)
+ </li>
+ <li class="itemize">&#8216;linktoc=section&#8217; (default behaviour, same as &#8216;linktocpage=false&#8217;)
+ </li>
+ <li class="itemize">&#8216;linktoc=page&#8217; (same as &#8216;linktocpage=true&#8217;)
+ </li>
+ <li class="itemize">&#8216;linktoc=all&#8217; (both the section and page part are links)</li></ul>
+<!--l. 1724--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.14 </span> <a
+ id="x1-330005.14"></a>Option &#8216;pdfnewwindow&#8217; changed</h4>
+<!--l. 1726--><p class="noindent" >Before 6.77b:
+ <ul class="itemize1">
+ <li class="itemize">pdfnewwindow=true &#8211;&#x003E; /NewWindow true
+ </li>
+ <li class="itemize">pdfnewwindow=false &#8211;&#x003E; (absent)
+ </li>
+ <li class="itemize">unused pdfnewwindow &#8211;&#x003E; (absent)</li></ul>
+<!--l. 1732--><p class="noindent" >Since 6.77b:
+ <ul class="itemize1">
+ <li class="itemize">pdfnewwindow=true &#8211;&#x003E; /NewWindow true
+
+ </li>
+ <li class="itemize">pdfnewwindow=false &#8211;&#x003E; /NewWindow false
+ </li>
+ <li class="itemize">pdfnewwindow= &#8211;&#x003E; (absent)
+ </li>
+ <li class="itemize">unused pdfnewwindow &#8211;&#x003E; (absent)</li></ul>
+<!--l. 1742--><p class="indent" > Rationale: There is a difference between setting to &#8216;false&#8217; and an absent entry. In the former case the
+new document replaces the old one, in the latter case the PDF viewer application should respect the user
+preference.
+<!--l. 1748--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.15 </span> <a
+ id="x1-340005.15"></a>Flag options for PDF forms</h4>
+<!--l. 1750--><p class="noindent" >PDF form field macros (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\TextField</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\CheckBox</span></span></span>, ...) support boolean flag options. The option name is
+the lowercase version of the names in the PDF specification (1.7):
+<!--l. 1754--><p class="indent" > <a
+href="http://www.adobe.com/devnet/pdf/pdf_reference.html" class="url" ><span
+class="ec-lmvtt-10">http://www.adobe.com/devnet/pdf/pdf_reference.html</span></a>
+<!--l. 1756--><p class="indent" > <a
+href="http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference.pdf" class="url" ><span
+class="ec-lmvtt-10">http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference.pdf</span></a>
+<!--l. 1758--><p class="indent" > Options (convert to lowercase) except flags in square brackets:
+ <ul class="itemize1">
+ <li class="itemize">Table 8.16 Annotation flags (page 608):
+ <!--l. 1763--><p class="noindent" ><div class="obeylines-v">
+ 1 Invisible
+ <br />2 Hidden (PDF 1.2)
+ <br />3 Print (PDF 1.2)
+ <br />4 NoZoom (PDF 1.3)
+ <br />5 NoRotate (PDF 1.3)
+ <br />6 NoView (PDF 1.3)
+ <br />[7 ReadOnly (PDF 1.3)] ignored for widget annotations, see table 8.70
+ <br />8 Locked (PDF 1.4)
+ <br />9 ToggleNoView (PDF 1.5)
+ <br />10 LockedContents (PDF 1.7)</div>
+ </li>
+ <li class="itemize">Table 8.70 Field flags common to all field types (page 676):
+ <!--l. 1777--><p class="noindent" ><div class="obeylines-v">
+ 1 ReadOnly
+ <br />2 Required
+ <br />3 NoExport</div>
+ </li>
+ <li class="itemize">Table 8.75 Field flags specific to button fields (page 686):
+ <!--l. 1784--><p class="noindent" ><div class="obeylines-v">
+ 15 NoToggleToOff (Radio buttons only)
+
+ <br />16 Radio (set: radio buttons, clear: check box, pushbutton: clear)
+ <br />17 Pushbutton
+ <br />26 RadiosInUniso (PDF 1.5)</div>
+ </li>
+ <li class="itemize">Table 8.77 Field flags specific to text fields (page 691):
+ <!--l. 1792--><p class="noindent" ><div class="obeylines-v">
+ 13 Multiline
+ <br />14 Password
+ <br />21 FileSelect (PDF 1.4)
+ <br />23 DoNotSpellCheck (PDF 1.4)
+ <br />24 DoNotScroll (PDF 1.4)
+ <br />25 Comb (PDF 1.5)
+ <br />26 RichText (PDF 1.5)</div>
+ </li>
+ <li class="itemize">Table 8.79 Field flags specific to choice fields (page 693):
+ <!--l. 1803--><p class="noindent" ><div class="obeylines-v">
+ 18 Combo (set: combo box, clear: list box)
+ <br />19 Edit (only useful if Combo is set)
+ <br />20 (Sort) for authoring tools, not PDF viewers
+ <br />22 MultiSelect (PDF 1.4)
+ <br />23 DoNotSpellCheck (PDF 1.4) (only useful if Combo and Edit are set)
+ <br />27 CommitOnSelChange (PDF 1.5)</div>
+ </li>
+ <li class="itemize">Table 8.86 Flags for submit-form actions (page 704):
+ <!--l. 1813--><p class="noindent" ><div class="obeylines-v">
+ [1 Include/Exclude] unsupported, use &#8216;noexport&#8217; (table 8.70) instead
+ <br />2 IncludeNoValueFields
+ <br />[3 ExportFormat] handled by option &#8216;export&#8217;
+ <br />4 GetMethod
+ <br />5 SubmitCoordinates
+ <br />[6 XFDF (PDF 1.4)] handled by option &#8216;export&#8217;
+ <br />7 IncludeAppendSaves (PDF 1.4)
+ <br />8 IncludeAnnotations (PDF 1.4)
+ <br />[9 SubmitPDF (PDF 1.4)] handled by option &#8216;export&#8217;
+ <br />10 CanonicalFormat (PDF 1.4)
+ <br />11 ExclNonUserAnnots (PDF 1.4)
+ <br />12 ExclFKey (PDF 1.4)
+ <br />14 EmbedForm (PDF 1.5)</div>
+ </li></ul>
+
+
+<!--l. 1830--><p class="indent" > New option &#8216;export&#8217; sets the export format of a submit action. Valid values are (upper- or
+lowercase):
+ <ul class="itemize1">
+ <li class="itemize">FDF
+ </li>
+ <li class="itemize">HTML
+ </li>
+ <li class="itemize">XFDF
+ </li>
+ <li class="itemize">PDF (not supported by Acrobat Reader)</li></ul>
+<!--l. 1839--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.16 </span> <a
+ id="x1-350005.16"></a>Option &#8216;pdfversion&#8217;</h4>
+<!--l. 1841--><p class="noindent" >This is an experimental option. It notifies &#8216;hyperref&#8217; about the intended PDF version. Currently this is
+used in code for PDF forms (implementation notes 116 and 122 of PDF spec 1.7).
+<!--l. 1847--><p class="indent" > Values: 1.2, 1.3, 1.4, 1.5, 1.6, 1.7. Values below 1.2 are not supported, because most drivers expect
+higher PDF versions.
+<!--l. 1852--><p class="indent" > The option must be used early, not after <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\usepackage{hyperref}</span></span></span>.
+<!--l. 1855--><p class="indent" > In theory this option should also set the PDF version, but this is not generally supported.
+ <ul class="itemize1">
+ <li class="itemize">pdfTeX below 1.10a:
+ unsupported. pdfTeX &#x003E;= 1.10a and &#x003C; 1.30: <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\pdfoptionpdfminorversion</span></span></span> pdfTeX &#x003E;= 1.30:
+ <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\pdfminorversion</span></span></span>
+ </li>
+ <li class="itemize">dvipdfm: configuration file, example: TeX Live 2007, texmf/dvipdfm/config/config, entry &#8216;V
+ 2&#8217;.
+ </li>
+ <li class="itemize">dvipdfmx: configuration file, example: TeX Live 2007, texmf/dvipdfm/dvipdfmx.cfg, entry
+ &#8216;V 4&#8217;.
+ </li>
+ <li class="itemize">Ghostscript: option -dCompatibilityLevel (this is set in &#8216;ps2pdf12&#8217;, &#8216;ps2pdf13&#8217;, &#8216;ps2pdf14&#8217;).</li></ul>
+<!--l. 1870--><p class="indent" > The current PDF version is used as default if this version can be detected (only pdfTeX &#x003E;= 1.10a).
+Otherwise the lowest version 1.2 is assumed. Thus &#8216;hyperref&#8217; tries to avoid PDF code that breaks this
+version, but is free to use ignorable higher PDF features.
+<!--l. 1877--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.17 </span> <a
+ id="x1-360005.17"></a>Field option &#8216;name&#8217;</h4>
+<!--l. 1879--><p class="noindent" >Many form objects uses the label argument for several purposes:
+ <ul class="itemize1">
+ <li class="itemize">Layouted label.
+ </li>
+ <li class="itemize">As name in HTML structures.</li></ul>
+
+<!--l. 1885--><p class="noindent" >Code that is suitable for layouting with TeX can break in the structures of the output format. If option
+&#8216;name&#8217; is given, then its value is used as name in the different output structures. Thus the value should
+consist of letters only.
+<!--l. 1892--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.18 </span> <a
+ id="x1-370005.18"></a>Option &#8216;pdfencoding&#8217;</h4>
+<!--l. 1894--><p class="noindent" >The PDF format allows two encodings for bookmarks and entries in the information dictionary:
+PDFDocEncoding and Unicode as UTF-16BE. Option "pdfencoding" selects between these
+encodings:
+ <ul class="itemize1">
+ <li class="itemize">"pdfdoc" uses PDFDocEncoding. It uses just one byte per character, but the supported
+ characters are limited (244 in PDF-1.7).
+ </li>
+ <li class="itemize">"unicode" sets Unicode. It is encoded as UTF-16BE. Two bytes are used for most characters,
+ surrogates need four bytes.
+ </li>
+ <li class="itemize">"auto" PDFDocEncoding if the string does not contain characters outside the encoding and
+ Unicode otherwise.</li></ul>
+<!--l. 1906--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.19 </span> <a
+ id="x1-380005.19"></a>Color options/package hycolor</h4>
+<!--l. 1908--><p class="noindent" >See documentation of package &#8216;hycolor&#8217;.
+<!--l. 1911--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.20 </span> <a
+ id="x1-390005.20"></a>Option pdfusetitle</h4>
+<!--l. 1913--><p class="noindent" >If option pdfusetitle is set then hyperref tries to derive the values for pdftitle and pdfauthor
+from <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\title</span></span></span> and <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\author</span></span></span>. An optional argument for <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\title</span></span></span> and <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\author</span></span></span> is supported (class
+amsart).
+<!--l. 1919--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.21 </span> <a
+ id="x1-400005.21"></a>Starred form of \autoref</h4>
+<!--l. 1921--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\autoref*</span></span></span> generates a reference without link as <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\ref*</span></span></span> or <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\pageref*</span></span></span>.
+<!--l. 1924--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.22 </span> <a
+ id="x1-410005.22"></a>Link border style</h4>
+<!--l. 1926--><p class="noindent" >Links can be underlined instead of the default rectangle or options "colorlinks", "frenchlinks". This is
+done by option <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">pdfborderstyle={/S/U/W</span><span
+class="ec-lmvtt-10">&#x00A0;1}</span></span></span>
+<!--l. 1930--><p class="indent" > Some remarks:
+ <ul class="itemize1">
+ <li class="itemize">AR7/Linux seems to have a bug, that don&#8217;t use the default value "1" for the width, but zero,
+ thus that the underline is not visible without "/W 1". The same applies for dashed boxes,
+ eg.: pdfborderstyle=/S/D/D[3 2]/W 1
+
+ </li>
+ <li class="itemize">The syntax is described in the PDF specification, look for "border style", eg. Table 8.13
+ "Entries in a border style dictionary" (specification for version 1.6)
+ </li>
+ <li class="itemize">The border style is removed by pdfborderstyle= This is automatically done if option
+ colorlinks is enabled.
+ </li>
+ <li class="itemize">Be aware that not all PDF viewers support this feature, not even Acrobat Reader itself:
+ <!--l. 1951--><p class="noindent" >Some support:
+ <ul class="itemize2">
+ <li class="itemize">AR7/Linux: "underline" and "dashed", but the border width must be given.
+ </li>
+ <li class="itemize">xpdf 3.00: "underline" and "dashed"</li></ul>
+ <!--l. 1958--><p class="noindent" >Unsupported:
+ <ul class="itemize2">
+ <li class="itemize">AR5/Linux
+ </li>
+ <li class="itemize">ghostscript 8.50</li></ul>
+ </li></ul>
+<!--l. 1965--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.23 </span> <a
+ id="x1-420005.23"></a>Option "bookmarksdepth"</h4>
+<!--l. 1967--><p class="noindent" >The depth of the bookmarks can be controlled by the new option "bookmarksdepth". The option acts
+globally and distinguishes three cases:
+ <ul class="itemize1">
+ <li class="itemize">"bookmarksdepth" without value Then hyperref uses the current value of counter "tocdepth".
+ This is the compatible behaviour and the default.
+ </li>
+ <li class="itemize">"bookmarksdepth=&#x003C;number&#x003E;", the value is number (also negative): The depth for the
+ bookmarks are set to this number.
+ </li>
+ <li class="itemize">"bookmarksdepth=&#x003C;name&#x003E;" The &#x003C;name&#x003E; is a document division name (part, chapter, ...). It
+ must not start with a digit or minus to avoid mixing up with the number case. Internally hyperref
+ uses the value of macro "<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\toclevel@&#x003C;name&#x003E;</span></span></span>". Examples:
+
+
+ <div class="verbatim" id="verbatim-35">
+ &#x00A0;&#x00A0;&#x00A0;&#x00A0;\hypersetup{bookmarksdepth=paragraph}
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\hypersetup{bookmarksdepth=4}&#x00A0;%&#x00A0;same&#x00A0;as&#x00A0;before
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\hypersetup{bookmarksdepth}&#x00A0;%&#x00A0;counter&#x00A0;"tocdepth"&#x00A0;is&#x00A0;used
+</div>
+ <!--l. 1986--><p class="nopar" ></li></ul>
+<!--l. 1989--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.24 </span> <a
+ id="x1-430005.24"></a>Option "pdfescapeform"</h4>
+<!--l. 1991--><p class="noindent" >There are many places where arbitrary strings end up as PS or PDF strings. The PS/PDF strings in
+parentheses form require the protection of some characters, e.g. unmatched left or right parentheses need
+escaping or the escape character itself (backslash). Since 2006/02/12 v6.75a the PS/PDF driver
+should do this automatically. However I assume a problem with compatibility, especially
+regarding the form part where larger amounts of JavaScript code can be present. It would
+be a pain to remove all the escaping, because an additional escaping layer can falsify the
+code.
+<!--l. 2003--><p class="indent" > Therefore a new option pdfescapeform was introduced:
+ <ul class="itemize1">
+ <li class="itemize">pdfescapeform=false Escaping for the formulars are disabled, this is the compatibility
+ behaviour, therefore this is the default.
+ </li>
+ <li class="itemize">pdfescapeform=true Then the PS/PDF drivers do all the necessary escaping. This is the
+ logical choice and the recommended setting. For example, the user writes JavaScript as
+ JavaScript and do not care about escaping characters for PS/PDF output.</li></ul>
+<!--l. 2016--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.25 </span> <a
+ id="x1-440005.25"></a>Default driver setting</h4>
+<!--l. 2018--><p class="noindent" >(hyperref &#x003E;= 6.72s) If no driver is given, hyperref tries its best to guess the most suitable
+driver. Thus it loads "hpdftex", if pdfTeX is detected running in PDF mode. Or it loads the
+corresponding VTeX driver for VTeX&#8217;s working modes. Unhappily many driver programs run
+after the TeX compiler, so hyperref does not have a chance (dvips, dvipdfm, ...). In this
+case driver "hypertex" is loaded that supports the HyperTeX features that are recognized by
+xdvi for example. This behaviour, however, can easily be changed in the configuration file
+"hyperref.cfg":
+
+
+ <div class="verbatim" id="verbatim-36">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\providecommand*{\Hy@defaultdriver}{hdvips}
+</div>
+<!--l. 2031--><p class="nopar" > for dvips, or
+
+
+ <div class="verbatim" id="verbatim-37">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\providecommand*{\Hy@defaultdriver}{hypertex}
+</div>
+<!--l. 2035--><p class="nopar" > for the default behaviour of hyperref.
+<!--l. 2038--><p class="indent" > See also the new option &#8216;driverfallback&#8217;.
+<!--l. 2040--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.26 </span> <a
+ id="x1-450005.26"></a>Backref entries</h4>
+<!--l. 2042--><p class="noindent" >Alternative interface for formatting of backref entries, example:
+
+
+ <div class="verbatim" id="verbatim-38">
+\documentclass[12pt,UKenglish]{article}
+&#x00A0;<br />
+&#x00A0;<br />\usepackage{babel}
+&#x00A0;<br />\usepackage[pagebackref]{hyperref}
+&#x00A0;<br />
+&#x00A0;<br />%&#x00A0;Some&#x00A0;language&#x00A0;options&#x00A0;are&#x00A0;detected&#x00A0;by&#x00A0;package&#x00A0;backref.
+&#x00A0;<br />%&#x00A0;This&#x00A0;affects&#x00A0;the&#x00A0;following&#x00A0;macros:
+&#x00A0;<br />%&#x00A0;&#x00A0;&#x00A0;\backrefpagesname
+&#x00A0;<br />%&#x00A0;&#x00A0;&#x00A0;\backrefsectionsname
+&#x00A0;<br />%&#x00A0;&#x00A0;&#x00A0;\backrefsep
+&#x00A0;<br />%&#x00A0;&#x00A0;&#x00A0;\backreftwosep
+&#x00A0;<br />%&#x00A0;&#x00A0;&#x00A0;\backreflastsep
+&#x00A0;<br />
+&#x00A0;<br />\renewcommand*{\backref}[1]{
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;default&#x00A0;interface
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;#1:&#x00A0;backref&#x00A0;list
+&#x00A0;<br />&#x00A0;&#x00A0;%
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;We&#x00A0;want&#x00A0;to&#x00A0;use&#x00A0;the&#x00A0;alternative&#x00A0;interface,
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;therefore&#x00A0;the&#x00A0;definition&#x00A0;is&#x00A0;empty&#x00A0;here.
+&#x00A0;<br />}
+&#x00A0;<br />\renewcommand*{\backrefalt}[4]{%
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;alternative&#x00A0;interface
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;#1:&#x00A0;number&#x00A0;of&#x00A0;distinct&#x00A0;back&#x00A0;references
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;#2:&#x00A0;backref&#x00A0;list&#x00A0;with&#x00A0;distinct&#x00A0;entries
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;#3:&#x00A0;number&#x00A0;of&#x00A0;back&#x00A0;references&#x00A0;including&#x00A0;duplicates
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;#4:&#x00A0;backref&#x00A0;list&#x00A0;including&#x00A0;duplicates
+&#x00A0;<br />&#x00A0;&#x00A0;\par
+&#x00A0;<br />&#x00A0;&#x00A0;#3&#x00A0;citation(s)&#x00A0;on&#x00A0;#1&#x00A0;page(s):&#x00A0;#2,\par
+&#x00A0;<br />&#x00A0;&#x00A0;\ifnum#1=1&#x00A0;%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifnum#3=1&#x00A0;%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;1&#x00A0;citation&#x00A0;on&#x00A0;page&#x00A0;%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\else
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;#3&#x00A0;citations&#x00A0;on&#x00A0;page&#x00A0;%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\fi
+&#x00A0;<br />&#x00A0;&#x00A0;\else
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;#3&#x00A0;citations&#x00A0;on&#x00A0;#1&#x00A0;pages&#x00A0;%
+&#x00A0;<br />&#x00A0;&#x00A0;\fi
+&#x00A0;<br />&#x00A0;&#x00A0;#2,\par
+&#x00A0;<br />&#x00A0;&#x00A0;\ifnum#3=1&#x00A0;%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;1&#x00A0;citation&#x00A0;located&#x00A0;at&#x00A0;page&#x00A0;%
+&#x00A0;<br />&#x00A0;&#x00A0;\else
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;#3&#x00A0;citations&#x00A0;located&#x00A0;at&#x00A0;pages&#x00A0;%
+&#x00A0;<br />&#x00A0;&#x00A0;\fi
+&#x00A0;<br />&#x00A0;&#x00A0;#4.\par
+&#x00A0;<br />}
+&#x00A0;<br />
+&#x00A0;<br />%&#x00A0;The&#x00A0;list&#x00A0;of&#x00A0;distinct&#x00A0;entries&#x00A0;can&#x00A0;be&#x00A0;further&#x00A0;refined:
+&#x00A0;<br />\renewcommand*{\backrefentrycount}[2]{%
+
+
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;#1:&#x00A0;the&#x00A0;original&#x00A0;backref&#x00A0;entry
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;#2:&#x00A0;the&#x00A0;count&#x00A0;of&#x00A0;citations&#x00A0;of&#x00A0;this&#x00A0;entry,
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;in&#x00A0;case&#x00A0;of&#x00A0;duplicates&#x00A0;greater&#x00A0;than&#x00A0;one
+&#x00A0;<br />&#x00A0;&#x00A0;#1%
+&#x00A0;<br />&#x00A0;&#x00A0;\ifnum#2&#x003E;1&#x00A0;%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;~(#2)%
+&#x00A0;<br />&#x00A0;&#x00A0;\fi
+&#x00A0;<br />}
+&#x00A0;<br />
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\section{Hello}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\cite{ref1,&#x00A0;ref2,&#x00A0;ref3,&#x00A0;ref4}
+&#x00A0;<br />&#x00A0;&#x00A0;\section{World}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\cite{ref1,&#x00A0;ref3}
+&#x00A0;<br />&#x00A0;&#x00A0;\newpage
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\section{Next&#x00A0;section}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\cite{ref1}
+&#x00A0;<br />&#x00A0;&#x00A0;\newpage
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\section{Last&#x00A0;section}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\cite{ref1,&#x00A0;ref2}
+&#x00A0;<br />&#x00A0;&#x00A0;\newpage
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\pdfbookmark[1]{Bibliography}{bib}
+&#x00A0;<br />&#x00A0;&#x00A0;\begin{thebibliography}{99}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\bibitem{ref1}&#x00A0;Dummy&#x00A0;entry&#x00A0;one.
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\bibitem{ref2}&#x00A0;Dummy&#x00A0;entry&#x00A0;two.
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\bibitem{ref3}&#x00A0;Dummy&#x00A0;entry&#x00A0;three.
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\bibitem{ref4}&#x00A0;Dummy&#x00A0;entry&#x00A0;four.
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\end{thebibliography}
+&#x00A0;<br />
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 2131--><p class="nopar" >
+<!--l. 2133--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">5.27 </span> <a
+ id="x1-460005.27"></a>\phantomsection</h4>
+<!--l. 2135--><p class="noindent" >Set an anchor at this location. It is often used in conjunction with <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\addcontentsline</span></span></span> for sectionlike things
+(index, bibliography, preface). <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\addcontentsline</span></span></span> refers to the latest previous location where an anchor is
+set.
+
+
+ <div class="verbatim" id="verbatim-39">
+&#x00A0;&#x00A0;\cleardoublepage
+&#x00A0;<br />&#x00A0;&#x00A0;\phantomsection
+&#x00A0;<br />&#x00A0;&#x00A0;\addcontentsline{toc}{chapter}{\indexname}
+&#x00A0;<br />&#x00A0;&#x00A0;\printindex
+</div>
+<!--l. 2145--><p class="nopar" >
+<!--l. 2147--><p class="indent" > Now the entry in the table of contents (and bookmarks) for the index points to the start of the index
+page, not to a location before this page.
+<!--l. 2153--><p class="noindent" >
+ <h3 class="sectionHead"><span class="titlemark">6 </span> <a
+ id="x1-470006"></a>Acrobat-specific behavior</h3>
+<!--l. 2154--><p class="noindent" >If you want to access the menu options of Acrobat Reader or Exchange, the following macro is provided
+in the appropriate drivers:
+<!--l. 2157--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-39" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-39-1g"><col
+id="TBL-39-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-39-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-39-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\Acrobatmenu</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">menuoption</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 2161--><p class="noindent" >The <span
+class="ec-lmri-10">text </span>is used to create a button which activates the appropriate <span
+class="ec-lmri-10">menuoption</span>. The following table lists
+the option names you can use&#8212;comparison of this with the menus in Acrobat Reader or Exchange will
+show what they do. Obviously some are only appropriate to Exchange.
+<a
+ id="x1-47001r13"></a> <!--l. 2165--><div class="longtable"> <table id="TBL-40" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-40-1g"><col
+id="TBL-40-1"><col
+id="TBL-40-2"></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-40-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-1-1"
+class="td01">File </td><td style="white-space:normal; text-align:left;" id="TBL-40-1-2"
+class="td10">
+ <!--l. 2165--><p class="noindent" >Open,
+ Close,
+ Scan,
+ Save,
+ SaveAs,
+ Optimizer:SaveAsOpt,
+ Print,
+ PageSetup,
+ Quit </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-2-1"
+class="td01">File<span
+class="lmsy-10">&#x2192;</span>Import </td><td style="white-space:normal; text-align:left;" id="TBL-40-2-2"
+class="td10">
+ <!--l. 2166--><p class="noindent" >ImportImage,
+ ImportNotes,
+ AcroForm:ImportFDF </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-3-1"
+class="td01">File<span
+class="lmsy-10">&#x2192;</span>Export </td><td style="white-space:normal; text-align:left;" id="TBL-40-3-2"
+class="td10">
+ <!--l. 2167--><p class="noindent" >ExportNotes,
+ AcroForm:ExportFDF </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-4-1"
+class="td01">File<span
+class="lmsy-10">&#x2192;</span>DocumentInfo </td><td style="white-space:normal; text-align:left;" id="TBL-40-4-2"
+class="td10">
+ <!--l. 2168--><p class="noindent" >GeneralInfo,
+ OpenInfo,
+ FontsInfo,
+ SecurityInfo,
+ Weblink:Base,
+ AutoIndex:DocInfo </td>
+
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-5-1"
+class="td01">File<span
+class="lmsy-10">&#x2192;</span>Preferences </td><td style="white-space:normal; text-align:left;" id="TBL-40-5-2"
+class="td10">
+ <!--l. 2169--><p class="noindent" >GeneralPrefs,
+ NotePrefs,
+ FullScreenPrefs,
+ Weblink:Prefs,
+ AcroSearch:Preferences(Windows)
+ or,
+ AcroSearch:Prefs(Mac),
+ Cpt:Capture </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-6-1"
+class="td01">Edit </td><td style="white-space:normal; text-align:left;" id="TBL-40-6-2"
+class="td10">
+ <!--l. 2171--><p class="noindent" >Undo,
+ Cut,
+ Copy,
+ Paste,
+ Clear,
+ SelectAll,
+ Ole:CopyFile,
+ TouchUp:TextAttributes,
+ TouchUp:FitTextToSelection,
+ TouchUp:ShowLineMarkers,
+ TouchUp:ShowCaptureSuspects,
+ TouchUp:FindSuspect, </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-7-1"
+class="td01"> </td><td style="white-space:normal; text-align:left;" id="TBL-40-7-2"
+class="td10">
+ <!--l. 2174--><p class="noindent" >Properties </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-8-1"
+class="td01">Edit<span
+class="lmsy-10">&#x2192;</span>Fields </td><td style="white-space:normal; text-align:left;" id="TBL-40-8-2"
+class="td10">
+ <!--l. 2175--><p class="noindent" >AcroForm:Duplicate,
+ AcroForm:TabOrder </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-9-1"
+class="td01">Document </td><td style="white-space:normal; text-align:left;" id="TBL-40-9-2"
+class="td10">
+ <!--l. 2176--><p class="noindent" >Cpt:CapturePages,
+ AcroForm:Actions,
+ CropPages,
+ RotatePages,
+ InsertPages,
+ ExtractPages,
+ ReplacePages,
+ DeletePages,
+ NewBookmark,
+ SetBookmarkDest,
+ CreateAllThumbs,
+ DeleteAllThumbs </td>
+
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-10-1"
+class="td01">View </td><td style="white-space:normal; text-align:left;" id="TBL-40-10-2"
+class="td10">
+ <!--l. 2179--><p class="noindent" >ActualSize,
+ FitVisible,
+ FitWidth,
+ FitPage,
+ ZoomTo,
+ FullScreen,
+ FirstPage,
+ PrevPage,
+ NextPage,
+ LastPage,
+ GoToPage,
+ GoBack,
+ GoForward,
+ SinglePage,
+ OneColumn,
+ TwoColumns,
+ ArticleThreads,
+ PageOnly,
+ ShowBookmarks,
+ ShowThumbs </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-11-1"
+class="td01">Tools </td><td style="white-space:normal; text-align:left;" id="TBL-40-11-2"
+class="td10">
+ <!--l. 2182--><p class="noindent" >Hand,
+ ZoomIn,
+ ZoomOut,
+ SelectText,
+ SelectGraphics,
+ Note,
+ Link,
+ Thread,
+ AcroForm:Tool,
+ Acro_Movie:MoviePlayer,
+ TouchUp:TextTool,
+ Find,
+ FindAgain,
+ FindNextNote,
+ CreateNotesFile </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-12-1"
+class="td01">Tools<span
+class="lmsy-10">&#x2192;</span>Search </td><td style="white-space:normal; text-align:left;" id="TBL-40-12-2"
+class="td10">
+ <!--l. 2185--><p class="noindent" >AcroSrch:Query,
+ AcroSrch:Indexes,
+ AcroSrch:Results,
+ AcroSrch:Assist,
+ AcroSrch:PrevDoc,
+ AcroSrch:PrevHit,
+ AcroSrch:NextHit,
+ AcroSrch:NextDoc </td>
+
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-13-1"
+class="td01">Window </td><td style="white-space:normal; text-align:left;" id="TBL-40-13-2"
+class="td10">
+ <!--l. 2187--><p class="noindent" >ShowHideToolBar,
+ ShowHideMenuBar,
+ ShowHideClipboard,
+ Cascade,
+ TileHorizontal,
+ TileVertical,
+ CloseAll </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-14-1"
+class="td01">Help </td><td style="white-space:normal; text-align:left;" id="TBL-40-14-2"
+class="td10">
+ <!--l. 2189--><p class="noindent" >HelpUserGuide,
+ HelpTutorial,
+ HelpExchange,
+ HelpScan,
+ HelpCapture,
+ HelpPDFWriter,
+ HelpDistiller,
+ HelpSearch,
+ HelpCatalog,
+ HelpReader,
+ Weblink:Home </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-15-1"
+class="td01">Help(Windows) </td><td style="white-space:normal; text-align:left;" id="TBL-40-15-2"
+class="td10">
+ <!--l. 2191--><p class="noindent" >About </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-16-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-17-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-18-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-40-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-19-1"
+class="td01"> </td><td style="white-space:normal; text-align:left;" id="TBL-40-19-2"
+class="td10"></td></tr>
+ </table></div>
+<!--l. 2194--><p class="noindent" >
+ <h3 class="sectionHead"><span class="titlemark">7 </span> <a
+ id="x1-480007"></a>PDF and HTML forms</h3>
+<!--l. 2195--><p class="noindent" >You must put your fields inside a <span
+class="ec-lmvtt-10">Form </span>environment (only one per file).
+<!--l. 2197--><p class="indent" > There are six macros to prepare fields:
+<!--l. 2199--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-41" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-41-1g"><col
+id="TBL-41-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-41-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-41-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\TextField</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">[</span></span></span><span
+class="ec-lmri-10">parameters</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">]{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 2203--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-42" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-42-1g"><col
+id="TBL-42-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-42-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-42-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\CheckBox</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">[</span></span></span><span
+class="ec-lmri-10">parameters</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">]{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 2207--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-43" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-43-1g"><col
+id="TBL-43-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-43-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-43-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\ChoiceMenu</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">[</span></span></span><span
+class="ec-lmri-10">parameters</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">]{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">choices</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 2211--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-44" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-44-1g"><col
+id="TBL-44-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-44-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-44-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\PushButton</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">[</span></span></span><span
+class="ec-lmri-10">parameters</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">]{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 2215--><p class="noindent" >
+
+
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-45" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-45-1g"><col
+id="TBL-45-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-45-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\Submit</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">[</span></span></span><span
+class="ec-lmri-10">parameters</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">]{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 2219--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-46" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-46-1g"><col
+id="TBL-46-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-46-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-46-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\Reset</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">[</span></span></span><span
+class="ec-lmri-10">parameters</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">]{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 2223--><p class="indent" > The way forms and their labels are laid out is determined by:
+<!--l. 2224--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-47" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-47-1g"><col
+id="TBL-47-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-47-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-47-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\LayoutTextField</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">field</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 2228--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-48" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-48-1g"><col
+id="TBL-48-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-48-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-48-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\LayoutChoiceField</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">field</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 2232--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-49" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-49-1g"><col
+id="TBL-49-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-49-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-49-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\LayoutCheckField</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">field</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 2236--><p class="indent" > These macros default to #1 #2
+<!--l. 2238--><p class="indent" > What is actually shown in as the field is determined by:
+<!--l. 2239--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-50" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-50-1g"><col
+id="TBL-50-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-50-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-50-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\MakeRadioField</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">width</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">height</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 2243--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-51" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-51-1g"><col
+id="TBL-51-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-51-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-51-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\MakeCheckField</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">width</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">height</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 2246--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-52" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-52-1g"><col
+id="TBL-52-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-52-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-52-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\MakeTextField</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">width</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">height</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 2249--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-53" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-53-1g"><col
+id="TBL-53-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-53-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-53-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\MakeChoiceField</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">width</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}{</span></span></span><span
+class="ec-lmri-10">height</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td>
+ </tr></table> </div></span>
+<!--l. 2253--><p class="noindent" >
+<span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-54" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-54-1g"><col
+id="TBL-54-1"></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-54-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-54-1-1"
+class="td11"> <span
+class="ec-lmvtt-10">\MakeButtonField</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span> </td></tr></table> </div></span>
+<!--l. 2257--><p class="indent" > These macros default to <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\vbox</span><span
+class="ec-lmvtt-10">&#x00A0;to</span><span
+class="ec-lmvtt-10">&#x00A0;#2{\hbox</span><span
+class="ec-lmvtt-10">&#x00A0;to</span><span
+class="ec-lmvtt-10">&#x00A0;#1{\hfill}\vfill}</span></span></span>, except the last, which defaults
+to #1; it is used for buttons, and the special <span
+class="ec-lmvtt-10">\Submit </span>and <span
+class="ec-lmvtt-10">\Reset </span>macros.
+<!--l. 2261--><p class="indent" > You may also want to redefine the following macros:
+
+
+ <div class="verbatim" id="verbatim-40">
+\def\DefaultHeightofSubmit{12pt}
+&#x00A0;<br />\def\DefaultWidthofSubmit{2cm}
+&#x00A0;<br />\def\DefaultHeightofReset{12pt}
+&#x00A0;<br />\def\DefaultWidthofReset{2cm}
+&#x00A0;<br />\def\DefaultHeightofCheckBox{0.8\baselineskip}
+&#x00A0;<br />\def\DefaultWidthofCheckBox{0.8\baselineskip}
+&#x00A0;<br />\def\DefaultHeightofChoiceMenu{0.8\baselineskip}
+&#x00A0;<br />\def\DefaultWidthofChoiceMenu{0.8\baselineskip}
+&#x00A0;<br />\def\DefaultHeightofText{\baselineskip}
+&#x00A0;<br />\def\DefaultHeightofTextMultiline{4\baselineskip}
+&#x00A0;<br />\def\DefaultWidthofText{3cm}
+</div>
+<!--l. 2274--><p class="nopar" >
+<!--l. 2276--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">7.1 </span> <a
+ id="x1-490007.1"></a>Forms environment parameters</h4>
+<a
+ id="x1-49001r14"></a> <!--l. 2280--><div class="longtable"> <table id="TBL-55" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-55-1g"><col
+id="TBL-55-1"><col
+id="TBL-55-2"><col
+id="TBL-55-3"></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-55-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-55-1-1"
+class="td01"><span
+class="ec-lmvtt-10">action </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-55-1-2"
+class="td11"> <span
+class="ec-lmri-10">URL </span></td><td style="white-space:normal; text-align:left;" id="TBL-55-1-3"
+class="td10">
+ <!--l. 2280--><p class="noindent" >The URL that will receive the form data if a <span
+class="ec-lmss-10">Submit </span>button
+ is included in the form </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-55-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-55-2-1"
+class="td01"><span
+class="ec-lmvtt-10">encoding </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-55-2-2"
+class="td11"> <span
+class="ec-lmri-10">name </span></td><td style="white-space:normal; text-align:left;" id="TBL-55-2-3"
+class="td10">
+ <!--l. 2281--><p class="noindent" >The encoding for the string set to the URL; FDF-encoding
+ is usual, and <span
+class="ec-lmvtt-10">html </span>is the only valid value </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-55-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-55-3-1"
+class="td01"><span
+class="ec-lmvtt-10">method </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-55-3-2"
+class="td11"> <span
+class="ec-lmri-10">name </span></td><td style="white-space:normal; text-align:left;" id="TBL-55-3-3"
+class="td10">
+ <!--l. 2283--><p class="noindent" >Used only when generating HTML; values can be <span
+class="ec-lmvtt-10">post </span>or
+ <span
+class="ec-lmvtt-10">get</span> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-55-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-55-4-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-55-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-55-5-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-55-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-55-6-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-55-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-55-7-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-55-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-55-8-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-55-8-2"
+class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-55-8-3"
+class="td10"></td></tr>
+ </table></div>
+<!--l. 2286--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">7.2 </span> <a
+ id="x1-500007.2"></a>Forms optional parameters</h4>
+<!--l. 2287--><p class="noindent" >Note that all colors must be expressed as RGB triples, in the range 0..1 (i.e.&#x00A0;<span
+class="ec-lmvtt-10">color=0 0</span>
+<span
+class="ec-lmvtt-10">0.5</span>)
+<a
+ id="x1-50001r15"></a> <!--l. 2292--><div class="longtable"> <table id="TBL-56" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-56-1g"><col
+id="TBL-56-1"><col
+id="TBL-56-2"><col
+id="TBL-56-3"><col
+id="TBL-56-4"></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-56-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-1-1"
+class="td01"><span
+class="ec-lmvtt-10">accesskey </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-1-2"
+class="td11"> key </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-1-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-1-4"
+class="td10"> (as per HTML) </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-2-1"
+class="td01"><span
+class="ec-lmvtt-10">align </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-2-2"
+class="td11"> number </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-2-3"
+class="td11"> <span
+class="ec-lmri-10">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-2-4"
+class="td10"> alignment within text field; 0 is left-aligned, </td>
+<td id="TBL-56-2-5"
+class="td00"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-3-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-4-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-4-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-4-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-4-4"
+class="td10"> 1 is centered, 2 is right-aligned. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-5-1"
+class="td01"><span
+class="ec-lmvtt-10">altname </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-5-2"
+class="td11"> name </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-5-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-5-4"
+class="td10"> alternative name, </td>
+<td id="TBL-56-5-5"
+class="td00"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-6-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-7-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-7-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-7-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-7-4"
+class="td10"> the name shown in the user interface </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-8-1"
+class="td01"><span
+class="ec-lmvtt-10">backgroundcolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-8-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-8-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-8-4"
+class="td10"> color of box </td>
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-9-1"
+class="td01"><span
+class="ec-lmvtt-10">bordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-9-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-9-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-9-4"
+class="td10"> color of border </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-10-1"
+class="td01"><span
+class="ec-lmvtt-10">bordersep </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-10-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-10-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-10-4"
+class="td10"> box border gap </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-11-1"
+class="td01"><span
+class="ec-lmvtt-10">borderwidth </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-11-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-11-3"
+class="td11"> <span
+class="ec-lmri-10">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-11-4"
+class="td10"> width of box border, the value is a dimension </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-12-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-12-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-12-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-12-4"
+class="td10"> or a number with default unit bp </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-13-1"
+class="td01"><span
+class="ec-lmvtt-10">calculate </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-13-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-13-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-13-4"
+class="td10"> JavaScript code to calculate the value of the field</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-14-1"
+class="td01"><span
+class="ec-lmvtt-10">charsize </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-14-2"
+class="td11"> dimen </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-14-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-14-4"
+class="td10"> font size of field text </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-15-1"
+class="td01"><span
+class="ec-lmvtt-10">checkboxsymbol </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-15-2"
+class="td11"> char </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-15-3"
+class="td11"> <span
+class="ec-lmri-10">4 (</span><span
+class="pzdr-">&#x2714;</span><span
+class="ec-lmri-10">) </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-15-4"
+class="td10"> symbol used for check boxes (ZapfDingbats), </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-16-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-16-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-16-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-16-4"
+class="td10"> the value is a character or <span
+class="ec-lmvtt-10">\ding</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmvtto-10">number</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span>, </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-17-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-17-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-17-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-17-4"
+class="td10"> see package <span
+class="ec-lmss-10">pifont </span>from bundle <span
+class="ec-lmss-10">psnfss </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-18-1"
+class="td01"><span
+class="ec-lmvtt-10">checked </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-18-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-18-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-18-4"
+class="td10"> whether option selected by default </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-19-1"
+class="td01"><span
+class="ec-lmvtt-10">color </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-19-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-19-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-19-4"
+class="td10"> color of text in box </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-20-1"
+class="td01"><span
+class="ec-lmvtt-10">combo </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-20-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-20-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-20-4"
+class="td10"> choice list is &#8216;combo&#8217; style </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-21-1"
+class="td01"><span
+class="ec-lmvtt-10">default </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-21-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-21-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-21-4"
+class="td10"> default value </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-22-1"
+class="td01"><span
+class="ec-lmvtt-10">disabled </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-22-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-22-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-22-4"
+class="td10"> field disabled </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-23-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-23-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-23-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-23-4"
+class="td10"></td></tr>
+<tr
+ style="vertical-align:baseline;" id="TBL-56-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-24-1"
+class="td01"><span
+class="ec-lmvtt-10">format </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-24-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-24-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-24-4"
+class="td10"> JavaScript code to format the field </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-25-1"
+class="td01"><span
+class="ec-lmvtt-10">height </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-25-2"
+class="td11"> dimen </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-25-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-25-4"
+class="td10"> height of field box </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-26-1"
+class="td01"><span
+class="ec-lmvtt-10">hidden </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-26-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-26-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-26-4"
+class="td10"> field hidden </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-27-1"
+class="td01"><span
+class="ec-lmvtt-10">keystroke </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-27-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-27-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-27-4"
+class="td10"> JavaScript code to control the keystrokes on entry</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-28-1"
+class="td01"><span
+class="ec-lmvtt-10">mappingname </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-28-2"
+class="td11"> name </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-28-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-28-4"
+class="td10"> the mapping name to be used when exporting </td>
+<td id="TBL-56-28-5"
+class="td00"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-29-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-30-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-30-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-30-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-30-4"
+class="td10"> the field data </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-31-1"
+class="td01"><span
+class="ec-lmvtt-10">maxlen </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-31-2"
+class="td11"> number </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-31-3"
+class="td11"> <span
+class="ec-lmri-10">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-31-4"
+class="td10"> number of characters allowed in text field </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-32-1"
+class="td01"><span
+class="ec-lmvtt-10">menulength </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-32-2"
+class="td11"> number </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-32-3"
+class="td11"> <span
+class="ec-lmri-10">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-32-4"
+class="td10"> number of elements shown in list </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-33-1"
+class="td01"><span
+class="ec-lmvtt-10">multiline </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-33-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-33-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-33-4"
+class="td10"> whether text box is multiline </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-34-1"
+class="td01"><span
+class="ec-lmvtt-10">name </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-34-2"
+class="td11"> name </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-34-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-34-4"
+class="td10"> name of field (defaults to label) </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-35-1"
+class="td01"><span
+class="ec-lmvtt-10">onblur </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-35-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-35-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-35-4"
+class="td10"> JavaScript code </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-36-1"
+class="td01"><span
+class="ec-lmvtt-10">onchange </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-36-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-36-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-36-4"
+class="td10"> JavaScript code </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-37-1"
+class="td01"><span
+class="ec-lmvtt-10">onclick </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-37-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-37-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-37-4"
+class="td10"> JavaScript code </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-38-1"
+class="td01"><span
+class="ec-lmvtt-10">ondblclick </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-38-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-38-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-38-4"
+class="td10"> JavaScript code </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-39-1"
+class="td01"><span
+class="ec-lmvtt-10">onfocus </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-39-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-39-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-39-4"
+class="td10"> JavaScript code </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-40-1"
+class="td01"><span
+class="ec-lmvtt-10">onkeydown </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-40-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-40-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-40-4"
+class="td10"> JavaScript code </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-41-1"
+class="td01"><span
+class="ec-lmvtt-10">onkeypress </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-41-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-41-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-41-4"
+class="td10"> JavaScript code </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-42-1"
+class="td01"><span
+class="ec-lmvtt-10">onkeyup </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-42-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-42-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-42-4"
+class="td10"> JavaScript code </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-43-1"
+class="td01"><span
+class="ec-lmvtt-10">onmousedown </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-43-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-43-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-43-4"
+class="td10"> JavaScript code </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-44-1"
+class="td01"><span
+class="ec-lmvtt-10">onmousemove </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-44-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-44-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-44-4"
+class="td10"> JavaScript code </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-45-1"
+class="td01"> </td></tr>
+<tr
+ style="vertical-align:baseline;" id="TBL-56-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-46-1"
+class="td01"><span
+class="ec-lmvtt-10">onmouseout </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-46-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-46-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-46-4"
+class="td10"> JavaScript code </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-47-1"
+class="td01"><span
+class="ec-lmvtt-10">onmouseover </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-47-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-47-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-47-4"
+class="td10"> JavaScript code </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-48-1"
+class="td01"><span
+class="ec-lmvtt-10">onmouseup </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-48-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-48-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-48-4"
+class="td10"> JavaScript code </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-49-1"
+class="td01"><span
+class="ec-lmvtt-10">onselect </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-49-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-49-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-49-4"
+class="td10"> JavaScript code </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-50-1"
+class="td01"><span
+class="ec-lmvtt-10">password </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-50-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-50-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-50-4"
+class="td10"> text field is &#8216;password&#8217; style </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-51-1"
+class="td01"><span
+class="ec-lmvtt-10">popdown </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-51-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-51-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-51-4"
+class="td10"> choice list is &#8216;popdown&#8217; style </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-52-1"
+class="td01"><span
+class="ec-lmvtt-10">radio </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-52-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-52-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-52-4"
+class="td10"> choice list is &#8216;radio&#8217; style </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-53-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-53-1"
+class="td01"><span
+class="ec-lmvtt-10">radiosymbol </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-53-2"
+class="td11"> char </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-53-3"
+class="td11"> <span
+class="ec-lmri-10">H (</span><span
+class="pzdr-">&#x2605;</span><span
+class="ec-lmri-10">) </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-53-4"
+class="td10"> symbol used for radio fields (ZapfDingbats),</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-54-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-54-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-54-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-54-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-54-4"
+class="td10"> the value is a character or <span
+class="ec-lmvtt-10">\ding</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">{</span></span></span><span
+class="ec-lmvtto-10">number</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">}</span></span></span>, </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-55-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-55-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-55-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-55-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-55-4"
+class="td10"> see package <span
+class="ec-lmss-10">pifont </span>from bundle <span
+class="ec-lmss-10">psnfss </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-56-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-56-1"
+class="td01"><span
+class="ec-lmvtt-10">readonly </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-56-2"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-56-3"
+class="td11"> <span
+class="ec-lmri-10">false </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-56-4"
+class="td10"> field is readonly </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-57-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-57-1"
+class="td01"><span
+class="ec-lmvtt-10">rotation </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-57-2"
+class="td11"> number </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-57-3"
+class="td11"> <span
+class="ec-lmri-10">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-57-4"
+class="td10"> rotation of the widget annotation </td>
+<td id="TBL-56-57-5"
+class="td00"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-58-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-58-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-59-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-59-1"
+class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-59-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-59-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-59-4"
+class="td10"> (degree, counterclockwise, multiple of 90) </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-60-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-60-1"
+class="td01"><span
+class="ec-lmvtt-10">tabkey </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-60-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-60-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-60-4"
+class="td10"> (as per HTML) </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-61-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-61-1"
+class="td01"><span
+class="ec-lmvtt-10">validate </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-61-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-61-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-61-4"
+class="td10"> JavaScript code to validate the entry </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-62-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-62-1"
+class="td01"><span
+class="ec-lmvtt-10">value </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-62-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-62-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-62-4"
+class="td10"> initial value </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-63-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-63-1"
+class="td01"><span
+class="ec-lmvtt-10">width </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-56-63-2"
+class="td11"> dimen </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-63-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-63-4"
+class="td10"> width of field box </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-64-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-64-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-65-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-65-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-66-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-66-1"
+class="td01"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-56-67-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-67-1"
+class="td01"> </td></tr>
+ </table></div>
+<!--l. 2351--><p class="noindent" >
+ <h3 class="sectionHead"><span class="titlemark">8 </span> <a
+ id="x1-510008"></a>Defining a new driver</h3>
+<!--l. 2352--><p class="noindent" >A hyperref driver has to provide definitions for eight macros:
+<!--l. 2355--><p class="noindent" >1. <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyper@anchor</span></span></span>
+
+
+<!--l. 2357--><p class="noindent" >2. <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyper@link</span></span></span>
+<!--l. 2359--><p class="noindent" >3. <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyper@linkfile</span></span></span>
+<!--l. 2361--><p class="noindent" >4. <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyper@linkurl</span></span></span>
+<!--l. 2363--><p class="noindent" >5. <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyper@anchorstart</span></span></span>
+<!--l. 2365--><p class="noindent" >6. <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyper@anchorend</span></span></span>
+<!--l. 2367--><p class="noindent" >7. <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyper@linkstart</span></span></span>
+<!--l. 2369--><p class="noindent" >8. <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyper@linkend</span></span></span>
+<!--l. 2372--><p class="indent" > The draft option defines the macros as follows
+
+
+ <div class="verbatim" id="verbatim-41">
+\let\hyper@@anchor\@gobble
+&#x00A0;<br />\gdef\hyper@link##1##2##3{##3}%
+&#x00A0;<br />\def\hyper@linkurl##1##2{##1}%
+&#x00A0;<br />\def\hyper@linkfile##1##2##3{##1}%
+&#x00A0;<br />\let\hyper@anchorstart\@gobble
+&#x00A0;<br />\let\hyper@anchorend\@empty
+&#x00A0;<br />\let\hyper@linkstart\@gobbletwo
+&#x00A0;<br />\let\hyper@linkend\@empty
+</div>
+<!--l. 2382--><p class="nopar" >
+<!--l. 2384--><p class="noindent" >
+ <h3 class="sectionHead"><span class="titlemark">9 </span> <a
+ id="x1-520009"></a>Special support for other packages</h3>
+<!--l. 2386--><p class="noindent" >Package <span
+class="ec-lmss-10">hyperref </span>aims to cooperate with other packages, but there are several possible sources for
+conflict, such as
+ <ul class="itemize1">
+ <li class="itemize">Packages that manipulate the bibliographic mechanism. Peter William&#8217;s <span
+class="ec-lmss-10">harvard </span>package is
+ supported. However, the recommended package is Patrick Daly&#8217;s <span
+class="ec-lmss-10">natbib </span>package that has
+ specific <span
+class="ec-lmss-10">hyperref </span>hooks to allow reliable interaction. This package covers a very wide variety
+ of layouts and citation styles, all of which work with <span
+class="ec-lmss-10">hyperref</span>.
+ </li>
+ <li class="itemize">Packages that typeset the contents of the <span
+class="ec-lmvtt-10">\label </span>and <span
+class="ec-lmvtt-10">\ref </span>macros, such as <span
+class="ec-lmss-10">showkeys</span>. Since the
+ <span
+class="ec-lmss-10">hyperref </span>package redefines these commands, you must set <span
+class="ec-lmvtt-10">implicit=false </span>for these packages
+ to work.
+ </li>
+ <li class="itemize">Packages that do anything serious with the index.</li></ul>
+<!--l. 2406--><p class="indent" > The <span
+class="ec-lmss-10">hyperref </span>package is distributed with variants on two useful packages designed to work especially
+well with it. These are <span
+class="ec-lmss-10">xr </span>and <span
+class="ec-lmss-10">minitoc</span>, which support crossdocument links using <span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span>&#8217;s normal
+<span
+class="ec-lmvtt-10">\label</span>/<span
+class="ec-lmvtt-10">\ref </span>mechanisms and per-chapter tables of contents, respectively.
+<!--l. 2413--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">9.1 </span> <a
+ id="x1-530009.1"></a>Package Compatibility</h4>
+<!--l. 2415--><p class="noindent" >Currently only package loading orders are available:
+<!--l. 2419--><p class="indent" > Note: hyperref loads package "nameref" at <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\begin{document}</span></span></span>. Sometimes this is too late, thus this
+package must be loaded earlier.
+<!--l. 2424--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.1 </span> <a
+ id="x1-540009.1.1"></a>algorithm</h5>
+
+
+ <div class="verbatim" id="verbatim-42">
+&#x00A0;\usepackage{float}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage[chapter]{algorithm}%&#x00A0;eg.
+</div>
+<!--l. 2429--><p class="nopar" >
+<!--l. 2431--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.2 </span> <a
+ id="x1-550009.1.2"></a>amsmath</h5>
+<!--l. 2433--><p class="noindent" >The environments equation and eqnarray are not supported too well. For example, there might be
+spacing problems (eqnarray isn&#8217;t recommended anyway, see CTAN:info/l2tabu/, the situation for
+equation is unclear, because nobody is interested in investigating). Consider using the environments that
+package amsmath provide, e.g. gather for equation. The environment equation can even redefined to use
+gather:
+
+
+ <div class="verbatim" id="verbatim-43">
+&#x00A0;&#x00A0;\usepackage{amsmath}
+&#x00A0;<br />&#x00A0;&#x00A0;\let\equation\gather
+&#x00A0;<br />&#x00A0;&#x00A0;\let\endequation\endgather
+</div>
+<!--l. 2444--><p class="nopar" >
+<!--l. 2446--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.3 </span> <a
+ id="x1-560009.1.3"></a>amsrefs</h5>
+<!--l. 2448--><p class="noindent" >Package loading order:
+
+
+ <div class="verbatim" id="verbatim-44">
+&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{amsrefs}
+</div>
+<!--l. 2453--><p class="nopar" >
+<!--l. 2455--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.4 </span> <a
+ id="x1-570009.1.4"></a>arydshln, longtable</h5>
+<!--l. 2457--><p class="noindent" >Package longtable must be put before hyperref and arydshln, hyperref after arydshln generates an error,
+thus the resulting package order is then:
+
+
+ <div class="verbatim" id="verbatim-45">
+&#x00A0;&#x00A0;\usepackage{longtable}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepacakge{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{arydshln}
+</div>
+<!--l. 2465--><p class="nopar" >
+<!--l. 2467--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.5 </span> <a
+ id="x1-580009.1.5"></a>babel/magyar.ldf</h5>
+<!--l. 2469--><p class="noindent" >The old version 2005/03/30 v1.4j will not work. You need at least version 1.5, maintained by Péter
+Szabó, see CTAN:language/hungarian/babel/.
+<!--l. 2474--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.6 </span> <a
+ id="x1-590009.1.6"></a>babel/spanish.ldf</h5>
+<!--l. 2476--><p class="noindent" >Babel&#8217;s spanish.ldf redefines &#8216;<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\.</span></span></span>&#8217; to support &#8216;<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\...</span></span></span>&#8217;. In bookmarks (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\pdfstringdef</span></span></span>) only &#8216;<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\.</span></span></span>&#8217; is supported. If
+&#8216;<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\...</span></span></span>&#8217; is needed, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\texorpdfstring{\...}{\dots}</span></span></span> can be used instead.
+<!--l. 2483--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.7 </span> <a
+ id="x1-600009.1.7"></a>bibentry</h5>
+<!--l. 2485--><p class="noindent" >Workaround:
+
+
+ <div class="verbatim" id="verbatim-46">
+&#x00A0;&#x00A0;\makeatletter
+&#x00A0;<br />&#x00A0;&#x00A0;\let\saved@bibitem\@bibitem
+&#x00A0;<br />&#x00A0;&#x00A0;\makeatother
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{bibentry}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\begin{document}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\begingroup
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\makeatletter
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\let\@bibitem\saved@bibitem
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\nobibliography{database}
+&#x00A0;<br />&#x00A0;&#x00A0;\endgroup
+</div>
+<!--l. 2502--><p class="nopar" >
+<!--l. 2504--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.8 </span> <a
+ id="x1-610009.1.8"></a>bigfoot</h5>
+<!--l. 2506--><p class="noindent" >Hyperref does not support package &#8216;bigfoot&#8217;. And package &#8216;bigfoot&#8217; does not support hyperref&#8217;s footnotes
+and disables them (hyperfootnotes=false).
+<!--l. 2511--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.9 </span> <a
+ id="x1-620009.1.9"></a>chappg</h5>
+<!--l. 2513--><p class="noindent" >Package &#8216;chappg&#8217; uses <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\@addtoreset</span></span></span> that is redefined by &#8216;hyperref&#8217;. The package order is
+therefore:
+
+
+ <div class="verbatim" id="verbatim-47">
+&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{chappg}
+</div>
+<!--l. 2519--><p class="nopar" >
+<!--l. 2521--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.10 </span> <a
+ id="x1-630009.1.10"></a>cite</h5>
+<!--l. 2523--><p class="noindent" >This is from Mike Shell: cite.sty cannot currently be used with hyperref. However, I can do a workaround
+via:
+
+
+ <div class="verbatim" id="verbatim-48">
+&#x00A0;\makeatletter
+&#x00A0;<br />&#x00A0;\def\NAT@parse{\typeout{This&#x00A0;is&#x00A0;a&#x00A0;fake&#x00A0;Natbib&#x00A0;command&#x00A0;to&#x00A0;fool&#x00A0;Hyperref.}}
+&#x00A0;<br />&#x00A0;\makeatother
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;\usepackage[hypertex]{hyperref}
+</div>
+<!--l. 2533--><p class="nopar" >
+<!--l. 2535--><p class="indent" > so that hyperref will not redefine any of the biblabel stuff - so cite.sty will work as normal -
+although the citations will not be hyperlinked, of course (But this may not be an issue for many
+people).
+<!--l. 2540--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.11 </span> <a
+ id="x1-640009.1.11"></a>count1to</h5>
+<!--l. 2542--><p class="noindent" >Package &#8216;count1to&#8217; adds several <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\@addtoreset</span></span></span> commands that confuse &#8216;hyperref&#8217;. Therefore <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\theH&#x003C;...&#x003E;</span></span></span>
+has to be fixed:
+
+
+ <div class="verbatim" id="verbatim-49">
+&#x00A0;&#x00A0;\usepackage{count1to}
+&#x00A0;<br />&#x00A0;&#x00A0;\AtBeginDocument{%&#x00A0;*after*&#x00A0;\usepackage{count1to}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\theHsection}{\theHchapter.\arabic{section}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\theHsubsection}{\theHsection.\arabic{subsection}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\theHsubsubsection}{\theHsubsection.\arabic{subsubsection}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\theHparagraph}{\theHsubsubsection.\arabic{paragraph}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\theHsubparagraph}{\theHparagraph.\arabic{subparagraph}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}
+</div>
+<!--l. 2554--><p class="nopar" >
+<!--l. 2556--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.12 </span> <a
+ id="x1-650009.1.12"></a>dblaccnt</h5>
+<!--l. 2558--><p class="noindent" >pd1enc.def or puenc.def should be loaded before:
+
+
+ <div class="verbatim" id="verbatim-50">
+&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{dblaccnt}
+</div>
+<!--l. 2562--><p class="nopar" > or see entry for "vietnam".
+<!--l. 2566--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.13 </span> <a
+ id="x1-660009.1.13"></a>easyeqn</h5>
+<!--l. 2567--><p class="noindent" >Not compatible, breaks.
+<!--l. 2570--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.14 </span> <a
+ id="x1-670009.1.14"></a>ellipsis</h5>
+<!--l. 2572--><p class="noindent" >This packages redefines <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\textellipsis</span></span></span> after package hyperref (pd1enc.def/puenc.def should be loaded
+before):
+
+
+ <div class="verbatim" id="verbatim-51">
+&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{ellipsis}
+</div>
+<!--l. 2577--><p class="nopar" >
+<!--l. 2579--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.15 </span> <a
+ id="x1-680009.1.15"></a>float</h5>
+
+
+ <div class="verbatim" id="verbatim-52">
+&#x00A0;\usepackage{float}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{hyperref}
+</div>
+<!--l. 2583--><p class="nopar" >
+ <ul class="itemize1">
+ <li class="itemize">Several <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\caption</span></span></span> commands are not supported inside one float object.
+ </li>
+ <li class="itemize">Anchor are set at top of the float object, if its style is controlled by float.sty.</li></ul>
+<!--l. 2590--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.16 </span> <a
+ id="x1-690009.1.16"></a>endnotes</h5>
+<!--l. 2591--><p class="noindent" >Unsupported.
+<!--l. 2593--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.17 </span> <a
+ id="x1-700009.1.17"></a>foiltex</h5>
+<!--l. 2594--><p class="noindent" >Update to version 2008/01/28 v2.1.4b: Since version 6.77a hyperref does not hack into <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\@begindvi</span></span></span>, it
+uses package &#8216;atbegshi&#8217; instead, that hooks into <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\shipout</span></span></span>. Thus the patch of &#8216;foils.cls&#8217; regarding hyperref
+is now obsolete and causes an undefined error message about <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\@hyperfixhead</span></span></span>. This is fixed in FoilTeX
+2.1.4b.
+<!--l. 2602--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.18 </span> <a
+ id="x1-710009.1.18"></a>footnote</h5>
+<!--l. 2604--><p class="noindent" >This package is not supported, you have to disable hyperref&#8217;s footnote support by using option
+"hyperfootnotes=false".
+<!--l. 2608--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.19 </span> <a
+ id="x1-720009.1.19"></a>geometry</h5>
+<!--l. 2610--><p class="noindent" >Driver &#8216;dvipdfm&#8217; and program &#8216;dvipdfm&#8217; might generate a warning: Sorry. Too late to change page size
+Then prefer the program &#8216;dvipdfmx&#8217; or use one of the following workarounds to move the <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\special</span></span></span> of
+geometry to an earlier location:
+
+
+ <div class="verbatim" id="verbatim-53">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\documentclass[dvipdfm]{article}%&#x00A0;or&#x00A0;other&#x00A0;classes
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{atbegshi}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\AtBeginDocument{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\let\OrgAtBeginDvi\AtBeginDvi
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\let\AtBeginDvi\AtBeginShipoutFirst
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage[
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;paperwidth=170mm,
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;paperheight=240mm
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;]{geometry}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\AtBeginDocument{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\let\AtBeginDvi\OrgAtBeginDvi
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;or
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\documentclass[dvipdfm]{article}%&#x00A0;or&#x00A0;other&#x00A0;classes
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{atbegshi}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\let\AtBeginDvi\AtBeginShipoutFirst
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage[
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;paperwidth=170mm,
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;paperheight=240mm
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;]{geometry}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
+</div>
+<!--l. 2642--><p class="nopar" >
+<!--l. 2644--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.20 </span> <a
+ id="x1-730009.1.20"></a>IEEEtran.cls</h5>
+<!--l. 2646--><p class="noindent" >version &#x003E;= V1.6b (because of <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\@makecaption</span></span></span>, see ChangeLog)
+<!--l. 2649--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.21 </span> <a
+ id="x1-740009.1.21"></a>index</h5>
+<!--l. 2651--><p class="noindent" >version &#x003E;= 1995/09/28 v4.1 (because of <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\addcontentsline</span></span></span> redefinition)
+<!--l. 2654--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.22 </span> <a
+ id="x1-750009.1.22"></a>lastpage</h5>
+<!--l. 2656--><p class="noindent" >Compatible.
+<!--l. 2659--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.23 </span> <a
+ id="x1-760009.1.23"></a>linguex</h5>
+
+
+ <div class="verbatim" id="verbatim-54">
+&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{linguex}
+</div>
+<!--l. 2663--><p class="nopar" >
+<!--l. 2665--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.24 </span> <a
+ id="x1-770009.1.24"></a>ltabptch</h5>
+
+
+ <div class="verbatim" id="verbatim-55">
+&#x00A0;\usepackage{longtable}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{ltabptch}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{hyperref}
+</div>
+<!--l. 2670--><p class="nopar" >
+<!--l. 2672--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.25 </span> <a
+ id="x1-780009.1.25"></a>mathenv</h5>
+<!--l. 2674--><p class="noindent" >Unsupported.
+<!--l. 2678--><p class="indent" > Both &#8216;mathenv&#8217; and &#8216;hyperref&#8217; messes around with environment &#8216;eqnarray&#8217;. You can load &#8216;mathenv&#8217;
+after &#8216;hyperref&#8217; to avoid an error message. But <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\label</span></span></span> will not work inside environment &#8216;eqnarray&#8217;
+properly, for example.
+<!--l. 2685--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.26 </span> <a
+ id="x1-790009.1.26"></a>minitoc-hyper</h5>
+<!--l. 2687--><p class="noindent" >This package is obsolete, use the uptodate original package minitoc instead.
+<!--l. 2691--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.27 </span> <a
+ id="x1-800009.1.27"></a>multind</h5>
+
+
+ <div class="verbatim" id="verbatim-56">
+&#x00A0;\usepackage{multind}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{hyperref}
+</div>
+<!--l. 2695--><p class="nopar" >
+<!--l. 2697--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.28 </span> <a
+ id="x1-810009.1.28"></a>natbib</h5>
+
+
+ <div class="verbatim" id="verbatim-57">
+&#x00A0;\usepackage{natbib}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{hyperref}
+</div>
+<!--l. 2701--><p class="nopar" >
+<!--l. 2703--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.29 </span> <a
+ id="x1-820009.1.29"></a>nomencl</h5>
+<!--l. 2704--><p class="noindent" >Example for introducing links for the page numbers:
+
+
+ <div class="verbatim" id="verbatim-58">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\pagedeclaration}[1]{\unskip,&#x00A0;\hyperpage{#1}}
+</div>
+<!--l. 2707--><p class="nopar" >
+<!--l. 2710--><p class="indent" > For equations the following might work:
+
+
+ <div class="verbatim" id="verbatim-59">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\eqdeclaration}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\hyperlink{equation.#1}{(Equation~#1)}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;But&#x00A0;the&#x00A0;mapping&#x00A0;from&#x00A0;the&#x00A0;equation&#x00A0;number&#x00A0;to&#x00A0;the&#x00A0;anchor&#x00A0;name
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;is&#x00A0;not&#x00A0;available&#x00A0;in&#x00A0;general.
+</div>
+<!--l. 2717--><p class="nopar" >
+<!--l. 2719--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.30 </span> <a
+ id="x1-830009.1.30"></a>parskip</h5>
+
+
+ <div class="verbatim" id="verbatim-60">
+&#x00A0;\usepackage{parskip}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{hyperref}[2012/08/20]
+</div>
+<!--l. 2723--><p class="nopar" >
+<!--l. 2726--><p class="indent" > Both packages want to redefine <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\@starttoc</span></span></span>.
+<!--l. 2729--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.31 </span> <a
+ id="x1-840009.1.31"></a>prettyref</h5>
+
+
+ <div class="verbatim" id="verbatim-61">
+%%%&#x00A0;example&#x00A0;for&#x00A0;prettyref&#x00A0;%%%
+&#x00A0;<br />\documentclass{article}
+&#x00A0;<br />\usepackage{prettyref}
+&#x00A0;<br />\usepackage[pdftex]{hyperref}
+&#x00A0;<br />
+&#x00A0;<br />%\newrefformat{FIG}{Figure~\ref{#1}}%&#x00A0;without&#x00A0;hyperref
+&#x00A0;<br />\newrefformat{FIG}{\hyperref[{#1}]{Figure~\ref*{#1}}}
+&#x00A0;<br />
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />&#x00A0;&#x00A0;This&#x00A0;is&#x00A0;a&#x00A0;reference&#x00A0;to&#x00A0;\prettyref{FIG:ONE}.
+&#x00A0;<br />&#x00A0;&#x00A0;\newpage
+&#x00A0;<br />&#x00A0;&#x00A0;\begin{figure}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\caption{This&#x00A0;is&#x00A0;my&#x00A0;figure}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\label{FIG:ONE}
+&#x00A0;<br />&#x00A0;&#x00A0;\end{figure}
+&#x00A0;<br />\end{document}
+&#x00A0;<br />%%%&#x00A0;example&#x00A0;for&#x00A0;prettyref&#x00A0;%%%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;
+</div>
+<!--l. 2748--><p class="nopar" >
+<!--l. 2750--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.32 </span> <a
+ id="x1-850009.1.32"></a>ntheorem</h5>
+
+
+ <div class="verbatim" id="verbatim-62">
+&#x00A0;ntheorem-hyper.sty&#x00A0;is&#x00A0;an&#x00A0;old&#x00A0;patched&#x00A0;version&#x00A0;of&#x00A0;ntheorem.sty.
+&#x00A0;<br />&#x00A0;&#x00A0;Newer&#x00A0;versions&#x00A0;of&#x00A0;ntheorem&#x00A0;know&#x00A0;the&#x00A0;option&#x00A0;hyperref:
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage[hyperref]{ntheorem}
+&#x00A0;<br />&#x00A0;&#x00A0;But&#x00A0;there&#x00A0;are&#x00A0;still&#x00A0;unsolved&#x00A0;problems&#x00A0;(options&#x00A0;thref,&#x00A0;...).
+</div>
+<!--l. 2757--><p class="nopar" >
+<!--l. 2759--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.33 </span> <a
+ id="x1-860009.1.33"></a>setspace</h5>
+
+
+ <div class="verbatim" id="verbatim-63">
+&#x00A0;\usepackage{setspace}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{hyperref}
+</div>
+<!--l. 2763--><p class="nopar" >
+<!--l. 2765--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.34 </span> <a
+ id="x1-870009.1.34"></a>sidecap</h5>
+
+
+ <div class="verbatim" id="verbatim-64">
+&#x00A0;Before&#x00A0;2002/05/24&#x00A0;v1.5h:
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{nameref}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{sidecap}
+</div>
+<!--l. 2771--><p class="nopar" >
+<!--l. 2773--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.35 </span> <a
+ id="x1-880009.1.35"></a>subfigure</h5>
+
+
+ <div class="verbatim" id="verbatim-65">
+&#x00A0;1995/03/06&#x00A0;v2.0:
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{subfigure}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;%&#x00A0;hypertexnames&#x00A0;is&#x00A0;set&#x00A0;to&#x00A0;false.
+&#x00A0;<br />&#x00A0;&#x00A0;v2.1:
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{nameref}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{subfigure}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;or
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{subfigure}
+&#x00A0;<br />&#x00A0;&#x00A0;v2.1.2:
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;please&#x00A0;update
+&#x00A0;<br />&#x00A0;&#x00A0;v2.1.3:
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{subfigure}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;or&#x00A0;vice&#x00A0;versa?
+</div>
+<!--l. 2792--><p class="nopar" >
+<!--l. 2794--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.36 </span> <a
+ id="x1-890009.1.36"></a>titleref</h5>
+
+
+ <div class="verbatim" id="verbatim-66">
+&#x00A0;\usepackage{nameref}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{titleref}%&#x00A0;without&#x00A0;usetoc
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{hyperref}
+</div>
+<!--l. 2799--><p class="nopar" >
+<!--l. 2801--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.37 </span> <a
+ id="x1-900009.1.37"></a>tabularx</h5>
+<!--l. 2803--><p class="noindent" >Linked footnotes are not supported inside environment &#8216;tabularx&#8217;, because they uses the optional
+argument of <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\footnotetext</span></span></span>, see section &#8216;Limitations&#8217;. Before version 2011/09/28 6.82i hyperref had
+disabled footnotes entirely by &#8216;hyperfootnotes=false&#8217;.
+<!--l. 2809--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.38 </span> <a
+ id="x1-910009.1.38"></a>titlesec</h5>
+<!--l. 2811--><p class="noindent" >"nameref" supports titlesec, but hyperref does not (unsolved is the anchor setting, missing with
+unnumbered section, perhaps problems with page breaks with numbered ones).
+<!--l. 2816--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.39 </span> <a
+ id="x1-920009.1.39"></a>ucs/utf8x.def</h5>
+<!--l. 2818--><p class="noindent" >The first time a multibyte UTF8 sequence is called, it does some calculations and stores the result in a
+macro for speeding up the next calls of that UTF8 sequence. However this makes the first call
+non-expandable and will break if used in information entries or bookmarks. Package "ucs" offers
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\PrerenderUnicode</span></span></span> or <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\PreloadUnicodePage</span></span></span> to solve this:
+
+
+ <div class="verbatim" id="verbatim-67">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{ucs}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage[utf8x]{inputenc}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}%&#x00A0;or&#x00A0;with&#x00A0;option&#x00A0;unicode
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\PrerenderUnicode{^^c3^^b6}%&#x00A0;or&#x00A0;\PrerenderUnicodePage{1}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\hypersetup{pdftitle={Umlaut&#x00A0;example:&#x00A0;^^c3^^b6}}
+</div>
+<!--l. 2831--><p class="nopar" > The notation with two carets avoids trouble with 8-bit bytes for the README file, you can use the
+characters directly.
+<!--l. 2836--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.40 </span> <a
+ id="x1-930009.1.40"></a>varioref</h5>
+<!--l. 2837--><p class="noindent" >There are too many problems with varioref. Nobody has time to sort them out. Therefore this package is
+now unsupported.
+<!--l. 2841--><p class="indent" > Perhaps you are lucky and some of the features of varioref works with the following loading
+order:
+
+
+ <div class="verbatim" id="verbatim-68">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{nameref}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{varioref}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
+</div>
+<!--l. 2847--><p class="nopar" >
+<!--l. 2850--><p class="indent" > Also some babel versions can be problematic. For exmample, 2005/05/21 v3.8g contains a patch for
+varioref that breaks the hyperref support for varioref.
+<!--l. 2856--><p class="indent" > Also unsupported:
+ <ul class="itemize1">
+ <li class="itemize"><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\Ref</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\Vref</span></span></span> do not uppercase the first letter.
+ </li>
+ <li class="itemize"><span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\vpageref[]{...}</span></span></span> On the same page a previous space is not suppressed.</li></ul>
+<!--l. 2863--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.41 </span> <a
+ id="x1-940009.1.41"></a>verse</h5>
+<!--l. 2865--><p class="noindent" >Version 2005/08/22 v2.22 contains support for hyperref.
+<!--l. 2867--><p class="indent" > For older versions see example from de.comp.text.tex (2005/08/11, slightly modified):
+
+
+ <div class="verbatim" id="verbatim-69">
+&#x00A0;&#x00A0;\documentclass{article}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;package&#x00A0;order&#x00A0;does&#x00A0;not&#x00A0;matter
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{verse}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\makeatletter
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;make&#x00A0;unique&#x00A0;poemline&#x00A0;anchors
+&#x00A0;<br />&#x00A0;&#x00A0;\newcounter{verse@env}
+&#x00A0;<br />&#x00A0;&#x00A0;\setcounter{verse@env}{0}
+&#x00A0;<br />&#x00A0;&#x00A0;\let\org@verse\verse
+&#x00A0;<br />&#x00A0;&#x00A0;\def\verse{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\stepcounter{verse@env}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\org@verse
+&#x00A0;<br />&#x00A0;&#x00A0;}
+&#x00A0;<br />&#x00A0;&#x00A0;\def\theHpoemline{\arabic{verse@env}.\thepoemline}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;add&#x00A0;anchor&#x00A0;for&#x00A0;before&#x00A0;\addcontentsline&#x00A0;in&#x00A0;\@vsptitle
+&#x00A0;<br />&#x00A0;&#x00A0;\let\org@vsptitle\@vsptitle
+&#x00A0;<br />&#x00A0;&#x00A0;\def\@vsptitle{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\phantomsection
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\org@vsptitle
+&#x00A0;<br />&#x00A0;&#x00A0;}
+&#x00A0;<br />&#x00A0;&#x00A0;\makeatother
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\begin{document}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\poemtitle{Poem&#x00A0;1}
+&#x00A0;<br />&#x00A0;&#x00A0;\begin{verse}
+&#x00A0;<br />&#x00A0;&#x00A0;An&#x00A0;one-liner.
+&#x00A0;<br />&#x00A0;&#x00A0;\end{verse}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\newpage
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\poemtitle{Poem&#x00A0;2}
+&#x00A0;<br />&#x00A0;&#x00A0;\begin{verse}
+&#x00A0;<br />&#x00A0;&#x00A0;Another&#x00A0;one-liner.
+&#x00A0;<br />&#x00A0;&#x00A0;\end{verse}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\end{document}
+</div>
+<!--l. 2911--><p class="nopar" >
+<!--l. 2913--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.42 </span> <a
+ id="x1-950009.1.42"></a>vietnam</h5>
+
+
+ <div class="verbatim" id="verbatim-70">
+&#x00A0;%&#x00A0;pd1enc.def&#x00A0;should&#x00A0;be&#x00A0;loaded&#x00A0;before&#x00A0;package&#x00A0;dblaccnt:
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage[PD1,OT1]{fontenc}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{vietnam}
+&#x00A0;<br />&#x00A0;&#x00A0;\usepackage{hyperref}
+</div>
+<!--l. 2919--><p class="nopar" >
+<!--l. 2921--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">9.1.43 </span> <a
+ id="x1-960009.1.43"></a>XeTeX</h5>
+<!--l. 2923--><p class="noindent" >Default for the encoding of bookmarks is &#8216;pdfencoding=auto&#8217;. That means the strings are always treated
+as unicode strings. Only if the string restricts to the printable ASCII set, it is written as ASCII string.
+The reason is that the <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\special</span></span></span> does not support PDFDocEncoding.
+<!--l. 2931--><p class="indent" > XeTeX uses the program xdvipdfmx for PDF output generation. This program behaves a little
+different from dvipdfm, because of the supported Unicode characters. Strings for bookmarks or
+information entries can be output directly. The big chars (char code &#x003E; 255) are written in UTF-8 and
+xdvipdfmx tries to convert them to UTF-16BE. However hyperref already provides PDF strings encoded
+in UTF-16BE, thus the result is a warning
+<!--l. 2940--><p class="indent" > "Failed to convert input string to UTF16..."
+<!--l. 2942--><p class="indent" > The best way would be, if xdvipdfm could detect the byte order marker (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\376\377</span></span></span>) and skips the
+conversion if that marker is present.
+<!--l. 2946--><p class="indent" > For the time being I added the following to hyperref, when option &#8216;pdfencoding=auto&#8217; is set (default
+for XeTeX): The string is converted back to big characters thus that the string is written as UTF-8. But
+I am very unhappy with this solution. Main disadvantage: Two versions of <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\pdfstringdef</span></span></span> are
+needed:
+<!--l. 2953--><p class="indent" > a) The string is converted back to big characters for the "tainted keys" of xdvipdfmx
+(<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">spc_pdfm.c:</span><span
+class="ec-lmvtt-10">&#x00A0;default_taintkeys</span></span></span>). The subset hyperref uses is /Title, /Author, /Subject,
+/Keywords, /Creator, /Producer, /T. Any changes of this set in xdvipdfmx cannot be detected by
+hyperref.
+<!--l. 2959--><p class="indent" > b) Without conversion for the other strings , providing UTF16be directly. Examples: Prefix of page
+labels, some elements of formulars.
+<!--l. 2963--><p class="indent" > Thus <span
+class="ec-lmbx-10">each </span>application that uses <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\pdfstringdef</span></span></span> now must check, if it defines a string
+for some of the tained keys. If yes, then the call of <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\pdfstringdef</span></span></span> should be preceded by
+"<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\csname</span><span
+class="ec-lmvtt-10">&#x00A0;HyPsd@XeTeXBigCharstrue\endcsname</span></span></span>". Example: package bookmark.
+<!--l. 2971--><p class="noindent" >
+ <h3 class="sectionHead"><span class="titlemark">10 </span> <a
+ id="x1-9700010"></a>Limitations<span class="footnote-mark"><a
+href="manual5.html#fn4x0"><sup class="textsuperscript">4</sup></a></span><a
+ id="x1-97001f4"></a> </h3>
+ <h4 class="subsectionHead"><span class="titlemark">10.1 </span> <a
+ id="x1-9800010.1"></a>Wrapped/broken link support</h4>
+<!--l. 2974--><p class="noindent" >Only few drivers support automatically wrapped/broken links, e.g. pdftex, dvipdfm, hypertex. Other
+drivers lack this feature, e.g. dvips, dvipsone.
+<!--l. 2978--><p class="indent" > Workarounds:
+
+
+ <ul class="itemize1">
+ <li class="itemize">For long section or caption titles in the table of contents or list of figures/tables option
+ "linktocpage" can be used. Then the page number will be a link, and the overlong section
+ title is not forced into an one line link with overfull <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hbox</span></span></span> warning.
+ </li>
+ <li class="itemize">"<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\url</span></span></span>"s are caught by package "breakurl".
+ </li>
+ <li class="itemize">The option "breaklinks" is intended for internal use. But it can be used to force link wrapping,
+ e.g. when printing a document. However, when such a document is converted to PDF and
+ viewed with a PDF viewer, the active link area will be misplaced.
+ <!--l. 2992--><p class="noindent" >Another limitation: some penalties are "optimized" by TeX, thus there are missing break
+ points, especially within <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\url</span></span></span>. (See thread "hyperref.sty, breaklinks and url.sty 3.2" in
+ comp.text.tex 2005-09).</li></ul>
+<!--l. 2998--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">10.2 </span> <a
+ id="x1-9900010.2"></a>Links across pages</h4>
+<!--l. 3000--><p class="noindent" >In general they have problems:
+ <ul class="itemize1">
+ <li class="itemize">Some driver doesn&#8217;t support them at all (see above).
+ </li>
+ <li class="itemize">The driver allows it, but the link result might include the footer and/or header, or an error
+ message can occur sometimes.</li></ul>
+<!--l. 3008--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">10.3 </span> <a
+ id="x1-10000010.3"></a>Footnotes</h4>
+<!--l. 3010--><p class="noindent" >LaTeX allows the separation of the footnote mark and the footnote text (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\footnotemark</span></span></span>,
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\footnotetext</span></span></span>). This interface might be enough for visual typesetting. But the relation between
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\footnotemark</span></span></span> to <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\footnotetext</span></span></span> is not as strong as <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\ref</span></span></span> to <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\label</span></span></span>. Therefore it is not clear in general
+which <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\footnotemark</span></span></span> references which <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\footnotetext</span></span></span>. But that is necessary to implement hyperlinking.
+Thus the implementation of hyperref does not support the optional argument of <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\footnotemark\verb</span></span></span>
+and <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\footnotetext</span></span></span>.
+<!--l. 3021--><p class="noindent" >
+ <h3 class="sectionHead"><span class="titlemark">11 </span> <a
+ id="x1-10100011"></a>Hints<span class="footnote-mark"><a
+href="manual6.html#fn5x0"><sup class="textsuperscript">5</sup></a></span><a
+ id="x1-101001f5"></a> </h3>
+ <h4 class="subsectionHead"><span class="titlemark">11.1 </span> <a
+ id="x1-10200011.1"></a>Spaces in option values</h4>
+<!--l. 3025--><p class="noindent" >Unhappily LaTeX strips spaces from options if they are given in <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\documentclass</span></span></span> or <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\usepackage</span></span></span> (or
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\RequirePackage</span></span></span>), e.g.:
+
+
+ <div class="verbatim" id="verbatim-71">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage[pdfborder=0&#x00A0;0&#x00A0;1]{hyperref}
+</div>
+<!--l. 3029--><p class="nopar" > Package hyperref now gets
+
+
+ <div class="verbatim" id="verbatim-72">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;pdfborder=001
+</div>
+<!--l. 3033--><p class="nopar" > and the result is an invalid PDF file. As workaround braces can be used:
+
+
+ <div class="verbatim" id="verbatim-73">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage[pdfborder={0&#x00A0;0&#x00A0;1}]{hyperref}
+</div>
+<!--l. 3038--><p class="nopar" > Some options can also be given in <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hypersetup</span></span></span>
+
+
+ <div class="verbatim" id="verbatim-74">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\hypersetup{pdfborder=0&#x00A0;0&#x00A0;1}
+</div>
+<!--l. 3042--><p class="nopar" > In <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hypersetup</span></span></span> the options are directly processed as key value options (see package keyval) without
+space stripping in the value part.
+<!--l. 3048--><p class="indent" > Alternatively, LaTeX&#8217;s option handling system can be adapted to key value options by
+one of the packages "kvoptions-patch" (from project "kvoptions") or "xkvltxp" (from project
+"xsetkeys").
+<!--l. 3053--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">11.2 </span> <a
+ id="x1-10300011.2"></a>Index with makeindex</h4>
+ <ul class="itemize1">
+ <li class="itemize">Package hyperref adds <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyperpage</span></span></span> commands by the encap mechanism (see documentation
+ of Makeindex), if option hyperindex is set (default). <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyperpage</span></span></span> uses the page anchors that
+ are set by hyperref at each page (default). However in the default case page numbers are used
+ in anchor names in arabic form. If the page numbers in other formats are used (book class
+ with <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\frontmatter</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\romannumbering</span></span></span>, ...), then the page anchors are not unique. Therefore
+ option "plainpages=false" is recommended.
+ </li>
+ <li class="itemize">The encap mechanism of Makeindex allows to use one command only (see documentation of
+ Makeindex). If the user sets such a command, hyperref suppresses its <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyperpage</span></span></span> command. With
+ logical markup this situation can easily be solved:
+
+
+ <div class="verbatim" id="verbatim-75">
+ &#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{makeidx}
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\makeindex
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage[hyperindex]{hyperref}
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\newcommand*{\main}[1]{\textbf{\hyperpage{#1}}}
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;...
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\index{Some&#x00A0;example|main}
+</div>
+ <!--l. 3077--><p class="nopar" >
+ </li>
+ <li class="itemize">Scientic Word/Scientific WorkPlace users can use package robustindex with hyperindex=false.
+ </li>
+ <li class="itemize">Other encap characters can be set by option "encap". Example for use of "?":
+
+
+ <div class="verbatim" id="verbatim-76">
+ &#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage[encap=?]{hyperref}
+</div>
+ <!--l. 3084--><p class="nopar" >
+ </li>
+ <li class="itemize">An other possibility is the insertion of <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyperpage</span></span></span> by a style file for makeindex. For this case,
+ hyperref&#8217;s insertion will be disabled by "hyperindex=false". <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\hyperpage</span></span></span> will be defined regardless
+ of setting of hyperindex.
+
+
+ <div class="verbatim" id="verbatim-77">
+ %%%&#x00A0;cut&#x00A0;%%%&#x00A0;hyperindex.ist&#x00A0;%%%&#x00A0;cut&#x00A0;%%%
+ &#x00A0;<br />delim_0&#x00A0;",&#x00A0;\\hyperpage{"
+ &#x00A0;<br />delim_1&#x00A0;",&#x00A0;\\hyperpage{"
+ &#x00A0;<br />delim_2&#x00A0;",&#x00A0;\\hyperpage{"
+ &#x00A0;<br />delim_n&#x00A0;"},&#x00A0;\\hyperpage{"
+ &#x00A0;<br />delim_t&#x00A0;"}"
+ &#x00A0;<br />encap_prefix&#x00A0;"}\\"
+ &#x00A0;<br />encap_infix&#x00A0;"{\\hyperpage{"
+ &#x00A0;<br />encap_suffix&#x00A0;"}"
+ &#x00A0;<br />%%%&#x00A0;cut&#x00A0;%%%&#x00A0;hyperindex.ist&#x00A0;%%%&#x00A0;cut&#x00A0;%%%
+</div>
+ <!--l. 3100--><p class="nopar" ></li></ul>
+<!--l. 3103--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">11.3 </span> <a
+ id="x1-10400011.3"></a>Warning "bookmark level for unknown &#x003C;foobar&#x003E; defaults to 0"</h4>
+<!--l. 3105--><p class="noindent" >Getting rid of it:
+
+
+ <div class="verbatim" id="verbatim-78">
+\makeatletter
+&#x00A0;<br />\providecommand*{\toclevel@&#x003C;foobar&#x003E;}{0}
+&#x00A0;<br />\makeatother
+</div>
+<!--l. 3110--><p class="nopar" >
+<!--l. 3112--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">11.4 </span> <a
+ id="x1-10500011.4"></a>Link anchors in figures</h4>
+<!--l. 3114--><p class="noindent" >The caption command increments the counter and here is the place where hyperref set the corresponding
+anchor. Unhappily the caption is set below the figure, so the figure is not visible if a link jumps to a
+figure. In this case, try package "hypcap.sty" that implements a method to circumvent the
+problem.
+<!--l. 3122--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">11.5 </span> <a
+ id="x1-10600011.5"></a>Additional unicode characters in bookmarks and pdf information entries:</h4>
+
+
+ <div class="verbatim" id="verbatim-79">
+\documentclass[pdftex]{article}
+&#x00A0;<br />\usepackage[unicode]{hyperref}
+</div>
+<!--l. 3126--><p class="nopar" >
+<!--l. 3128--><p class="indent" > Support for additional unicode characters:
+<!--l. 3130--><p class="indent" > Example: <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\.{a}</span></span></span> and <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\d{a}</span></span></span>
+<!--l. 3132--><p class="indent" > 1. Get a list with unicode data, eg:
+<!--l. 3134--><p class="indent" > http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
+<!--l. 3136--><p class="indent" > 2. Identify the characters (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\.{a}</span></span></span>, <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\d{a}</span></span></span>):
+
+
+ <div class="verbatim" id="verbatim-80">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;0227;LATIN&#x00A0;SMALL&#x00A0;LETTER&#x00A0;A&#x00A0;WITH&#x00A0;DOT&#x00A0;ABOVE;...
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;1EA1;LATIN&#x00A0;SMALL&#x00A0;LETTER&#x00A0;A&#x00A0;WITH&#x00A0;DOT&#x00A0;BELOW;...
+</div>
+<!--l. 3140--><p class="nopar" >
+<!--l. 3142--><p class="indent" > 3. Calculate the octal code:
+<!--l. 3144--><p class="indent" > The first characters of the line in the file are hex values, convert each byte and prepend them with a
+backslash. (This will go into the PDF file.)
+
+
+ <div class="verbatim" id="verbatim-81">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;0227&#x00A0;-&#x003E;&#x00A0;\002\047
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;1EA1&#x00A0;-&#x003E;&#x00A0;\036\241
+</div>
+<!--l. 3151--><p class="nopar" >
+<!--l. 3153--><p class="indent" > 4. Transform into a form understood by hyperref:
+<!--l. 3155--><p class="indent" > Hyperref must know where the first byte starts, this is marked by "9" (8 and 9 cannot occur in octal
+numbers):
+
+
+ <div class="verbatim" id="verbatim-82">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\002\047&#x00A0;-&#x003E;&#x00A0;\9002\047
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\036\241&#x00A0;-&#x003E;&#x00A0;\9036\241
+</div>
+<!--l. 3162--><p class="nopar" >
+<!--l. 3164--><p class="indent" > Optional: "8" is used for abbreviations:
+
+
+ <div class="verbatim" id="verbatim-83">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\900&#x00A0;=&#x00A0;\80,&#x00A0;\901&#x00A0;=&#x00A0;\81,&#x00A0;\902&#x00A0;=&#x00A0;\82,&#x00A0;...
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\9002\047&#x00A0;-&#x003E;&#x00A0;\82\047
+</div>
+<!--l. 3170--><p class="nopar" >
+<!--l. 3172--><p class="indent" > 5. Declare the character with LaTeX:
+
+
+ <div class="verbatim" id="verbatim-84">
+\DeclareTextCompositeCommand{\.}{PU}{a}{\82\047}
+&#x00A0;<br />\DeclareTextCompositeCommand{\d}{PU}{a}{\9036\241}
+&#x00A0;<br />
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\section{\={a},&#x00A0;\d{a},&#x00A0;\&#8217;{a},&#x00A0;\.{a}}
+&#x00A0;<br />\end{document}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;
+</div>
+<!--l. 3181--><p class="nopar" >
+<!--l. 3183--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">11.6 </span> <a
+ id="x1-10700011.6"></a>Footnotes</h4>
+<!--l. 3185--><p class="noindent" >The footnote support is rather limited. It is beyond the scope to use <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\footnotemark</span></span></span> and <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\footnotetext</span></span></span>
+out of order or reusing <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\footnotemark</span></span></span>. Here you can either disable hyperref&#8217;s footnote support by
+"hyperfootnotes=false" or fiddle with internal macros, nasty examples:
+
+
+ <div class="verbatim" id="verbatim-85">
+\documentclass{article}
+&#x00A0;<br />\usepackage{hyperref}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />Hello%
+&#x00A0;<br />\footnote{The&#x00A0;first&#x00A0;footnote}
+&#x00A0;<br />World%
+&#x00A0;<br />\addtocounter{footnote}{-1}%
+&#x00A0;<br />\addtocounter{Hfootnote}{-1}%
+&#x00A0;<br />\footnotemark.
+&#x00A0;<br />\end{document}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;or
+&#x00A0;<br />
+&#x00A0;<br />\documentclass{article}
+&#x00A0;<br />
+&#x00A0;<br />\usepackage{hyperref}
+&#x00A0;<br />
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />
+&#x00A0;<br />\makeatletter
+&#x00A0;<br />
+&#x00A0;<br />A%
+&#x00A0;<br />&#x00A0;&#x00A0;\footnotemark
+&#x00A0;<br />&#x00A0;&#x00A0;\let\saved@Href@A\Hy@footnote@currentHref
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;remember&#x00A0;link&#x00A0;name
+&#x00A0;<br />B%
+&#x00A0;<br />&#x00A0;&#x00A0;\footnotemark
+&#x00A0;<br />&#x00A0;&#x00A0;\let\saved@Href@B\Hy@footnote@currentHref
+&#x00A0;<br />b%
+&#x00A0;<br />&#x00A0;&#x00A0;\addtocounter{footnote}{-1}%
+&#x00A0;<br />&#x00A0;&#x00A0;\addtocounter{Hfootnote}{-1}%&#x00A0;generate&#x00A0;the&#x00A0;same&#x00A0;anchor
+&#x00A0;<br />&#x00A0;&#x00A0;\footnotemark
+&#x00A0;<br />C%
+&#x00A0;<br />&#x00A0;&#x00A0;\footnotemark
+&#x00A0;<br />&#x00A0;&#x00A0;\let\saved@Href@C\Hy@footnote@currentHref
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;\addtocounter{footnote}{-2}%
+&#x00A0;<br />&#x00A0;&#x00A0;\let\Hy@footnote@currentHref\saved@Href@A
+&#x00A0;<br />\footnotetext{AAAA}%
+&#x00A0;<br />&#x00A0;&#x00A0;\addtocounter{footnote}{1}%
+&#x00A0;<br />&#x00A0;&#x00A0;\let\Hy@footnote@currentHref\saved@Href@B
+&#x00A0;<br />\footnotetext{BBBBB}%
+&#x00A0;<br />&#x00A0;&#x00A0;\addtocounter{footnote}{1}%
+&#x00A0;<br />&#x00A0;&#x00A0;\let\Hy@footnote@currentHref\saved@Href@C
+&#x00A0;<br />\footnotetext{CCCC}%
+&#x00A0;<br />
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 3239--><p class="nopar" >
+
+<!--l. 3241--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">11.7 </span> <a
+ id="x1-10800011.7"></a>Subordinate counters</h4>
+<!--l. 3243--><p class="noindent" >Some counters do not have unique values and require the value of other counters to be unique. For
+example, sections or figures might be numbered within chapters or <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\newtheorem</span></span></span> is used with an
+optional counter argument. Internally LaTeX uses <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\@addtoreset</span></span></span> to reset a counter in dependency to
+another counter. Package hyperref hooks into <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\@addtoreset</span></span></span> to catch this situation. Also <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\numberwithin</span></span></span>
+of package amsmath is caught by hyperref.
+<!--l. 3253--><p class="indent" > However, if the definition of subordinate counters take place before hyperref is loaded, the old
+meaning of <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\@addtoreset</span></span></span> is called without hyperref&#8217;s additions. Then the companion counter macro
+<span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\theH&#x003C;counter&#x003E;</span></span></span> can be redefined accordingly. Or move the definition of subordinate counters after
+hyperref is loaded.
+<!--l. 3259--><p class="indent" > Example for <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\newtheorem</span></span></span>, problematic case:
+
+
+ <div class="verbatim" id="verbatim-86">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\newtheorem{corA}{CorollaryA}[section]
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
+</div>
+<!--l. 3263--><p class="nopar" > Solution a)
+
+
+ <div class="verbatim" id="verbatim-87">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\newtheorem{corA}{CorollaryA}[section}
+</div>
+<!--l. 3268--><p class="nopar" > Solution b)
+
+
+ <div class="verbatim" id="verbatim-88">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\newtheorem{corA}{CorollaryA}[section]
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\newcommand*{\theHcorA}{\theHsection.\number\value{corA}}
+</div>
+<!--l. 3274--><p class="nopar" >
+<!--l. 3276--><p class="noindent" >
+ <h3 class="sectionHead"><span class="titlemark">12 </span> <a
+ id="x1-10900012"></a>History and acknowledgments</h3>
+<!--l. 3278--><p class="noindent" >The original authors of <span
+class="ec-lmss-10">hyperbasics.tex </span>and <span
+class="ec-lmss-10">hypertex.sty</span>, from which this package descends, are
+Tanmoy Bhattacharya and Thorsten Ohl. Package <span
+class="ec-lmss-10">hyperref </span>started as a simple port of their
+work to <span class="HoLogo-LaTeX2e"><span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span><span class="HoLogo-2">2</span><span class="HoLogo-e"><span
+class="lmmi-10">&#x03B5;</span></span></span> standards, but eventually I rewrote nearly everything, because I didn&#8217;t
+understand a lot of the original, and was only interested in getting it to work with <span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span>. I
+would like to thank Arthur Smith, Tanmoy Bhattacharya, Mark Doyle, Paul Ginsparg, David
+Carlisle, T.&#x00A0;V.&#x00A0;Raman and Leslie Lamport for comments, requests, thoughts and code to
+get the package into its first useable state. Various other people are mentioned at the point
+in the source where I had to change the code in later versions because of problems they
+found.
+<!--l. 3291--><p class="indent" > Tanmoy found a great many of the bugs, and (even better) often provided fixes, which has
+made the package more robust. The days spent on Rev<span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;are entirely due to him! The
+investigations of Bill Moss into the later versions including native PDF support uncovered a
+good many bugs, and his testing is appreciated. Hans Hagen provided a lot of insight into
+PDF.
+<!--l. 3299--><p class="indent" > Berthold Horn provided help, encouragement and sponsorship for the <span
+class="ec-lmss-10">dvipsone </span>and <span
+class="ec-lmss-10">dviwindo </span>drivers.
+Sergey Lesenko provided the changes needed for <span
+class="ec-lmss-10">dvipdf</span>, and Hàn Thê´ Thành supplied all
+the information needed for <span
+class="ec-lmss-10">pdftex</span>. Patrick Daly kindly updated his <span
+class="ec-lmss-10">natbib </span>package to allow
+easy integration with <span
+class="ec-lmss-10">hyperref</span>. Michael Mehlich&#8217;s <span
+class="ec-lmss-10">hyper </span>package (developed in parallel with
+<span
+class="ec-lmss-10">hyperref</span>) showed me solutions for some problems. Hopefully the two packages will combine one
+day.
+<!--l. 3308--><p class="indent" > The forms creation section owes a great deal to: T.&#x00A0;V.&#x00A0;Raman, for encouragement, support and
+ideas; Thomas Merz, whose book <span
+class="ec-lmri-10">Web Publishing with Acrobat/PDF </span>provided crucial insights;
+D.&#x00A0;P.&#x00A0;Story, whose detailed article about pdfmarks and forms solved many practical problems; and Hans
+Hagen, who explained how to do it in <span
+class="ec-lmss-10">pdftex</span>.
+<!--l. 3314--><p class="indent" > Steve Peter recreated the manual source in July 2003 after it had been lost.
+<!--l. 3317--><p class="indent" > Especial extra thanks to David Carlisle for the <span
+class="ec-lmss-10">backref </span>module, the ps2pdf and dviwindo support,
+frequent general rewrites of my bad code, and for working on changes to the <span
+class="ec-lmss-10">xr </span>package to suit
+<span
+class="ec-lmss-10">hyperref</span>.
+
+
+ <h3 class="sectionHead"><span class="titlemark">13 </span> <a
+ id="x1-11000013"></a>GNU Free Documentation License</h3>
+<!--l. 6--><p class="noindent" >Version 1.2, November 2002
+<!--l. 9--><p class="indent" > Copyright <span
+class="lmsy-10">©</span>&#x00A0;2000,2001,2002 Free Software Foundation, Inc.<br
+class="newline" />59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br
+class="newline" />Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is
+not allowed.
+<!--l. 15--><p class="noindent" >
+ <h4 class="likesubsectionHead"><a
+ id="x1-11100013"></a>Preamble</h4>
+<!--l. 17--><p class="noindent" >The purpose of this License is to make a manual, textbook, or other functional and useful document
+&#8220;free&#8221; in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with
+or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for
+the author and publisher a way to get credit for their work, while not being considered responsible for
+modifications made by others.
+<!--l. 25--><p class="indent" > This License is a kind of &#8220;copyleft&#8221;, which means that derivative works of the document must
+themselves be free in the same sense. It complements the GNU General Public License, which is a
+copyleft license designed for free software.
+<!--l. 30--><p class="indent" > We have designed this License in order to use it for manuals for free software, because free software
+needs free documentation: a free program should come with manuals providing the same
+freedoms that the software does. But this License is not limited to software manuals; it can
+be used for any textual work, regardless of subject matter or whether it is published as a
+printed book. We recommend this License principally for works whose purpose is instruction or
+reference.
+<!--l. 39--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">13.1 </span> <a
+ id="x1-11200013.1"></a>Applicability and definitions</h4>
+<!--l. 42--><p class="noindent" >This License applies to any manual or other work, in any medium, that contains a notice placed by
+the copyright holder saying it can be distributed under the terms of this License. Such a
+notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under
+the conditions stated herein. The &#8220;Document&#8221;, below, refers to any such manual or work.
+Any member of the public is a licensee, and is addressed as &#8220;you&#8221;. You accept the license
+if you copy, modify or distribute the work in a way requiring permission under copyright
+law.
+<!--l. 52--><p class="indent" > A &#8220;Modified Version&#8221; of the Document means any work containing the Document or a
+portion of it, either copied verbatim, or with modifications and/or translated into another
+language.
+<!--l. 56--><p class="indent" > A &#8220;Secondary Section&#8221; is a named appendix or a front-matter section of the Document that deals
+exclusively with the relationship of the publishers or authors of the Document to the Document&#8217;s overall
+subject (or to related matters) and contains nothing that could fall directly within that overall subject.
+(Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical connection with the subject or with
+related matters, or of legal, commercial, philosophical, ethical or political position regarding
+them.
+<!--l. 67--><p class="indent" > The &#8220;Invariant Sections&#8221; are certain Secondary Sections whose titles are designated, as being those of
+Invariant Sections, in the notice that says that the Document is released under this License. If a section
+does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The
+Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections
+then there are none.
+
+
+<!--l. 75--><p class="indent" > The &#8220;Cover Texts&#8221; are certain short passages of text that are listed, as Front-Cover Texts or
+Back-Cover Texts, in the notice that says that the Document is released under this License.
+A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25
+words.
+<!--l. 80--><p class="indent" > A &#8220;Transparent&#8221; copy of the Document means a machine-readable copy, represented in a format
+whose specification is available to the general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or
+(for drawings) some widely available drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an
+otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or
+discourage subsequent modification by readers is not Transparent. An image format is not
+Transparent if used for any substantial amount of text. A copy that is not &#8220;Transparent&#8221; is called
+&#8220;Opaque&#8221;.
+<!--l. 93--><p class="indent" > Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo
+input format, <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;input format, SGML or XML using a publicly available DTD, and
+standard-conforming simple HTML, PostScript or PDF designed for human modification.
+Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include
+proprietary formats that can be read and edited only by proprietary word processors, SGML
+or XML for which the DTD and/or processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word processors for output purposes
+only.
+<!--l. 104--><p class="indent" > The &#8220;Title Page&#8221; means, for a printed book, the title page itself, plus such following pages as are
+needed to hold, legibly, the material this License requires to appear in the title page. For works in
+formats which do not have any title page as such, &#8220;Title Page&#8221; means the text near the
+most prominent appearance of the work&#8217;s title, preceding the beginning of the body of the
+text.
+<!--l. 111--><p class="indent" > A section &#8220;Entitled XYZ&#8221; means a named subunit of the Document whose title either is precisely
+XYZ or contains XYZ in parentheses following text that translates XYZ in another language.
+(Here XYZ stands for a specific section name mentioned below, such as &#8220;Acknowledgements&#8221;,
+&#8220;Dedications&#8221;, &#8220;Endorsements&#8221;, or &#8220;History&#8221;.) To &#8220;Preserve the Title&#8221; of such a section when you
+modify the Document means that it remains a section &#8220;Entitled XYZ&#8221; according to this
+definition.
+<!--l. 119--><p class="indent" > The Document may include Warranty Disclaimers next to the notice which states that this
+License applies to the Document. These Warranty Disclaimers are considered to be included by
+reference in this License, but only as regards disclaiming warranties: any other implication
+that these Warranty Disclaimers may have is void and has no effect on the meaning of this
+License.
+<!--l. 127--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">13.2 </span> <a
+ id="x1-11300013.2"></a>Verbatim copying</h4>
+<!--l. 130--><p class="noindent" >You may copy and distribute the Document in any medium, either commercially or noncommercially,
+provided that this License, the copyright notices, and the license notice saying this License applies to the
+Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this
+License. You may not use technical measures to obstruct or control the reading or further copying of the
+copies you make or distribute. However, you may accept compensation in exchange for copies.
+If you distribute a large enough number of copies you must also follow the conditions in
+section&#x00A0;<a
+href="#x1-11400013.3">13.3<!--tex4ht:ref: copying --></a>.
+<!--l. 141--><p class="indent" > You may also lend copies, under the same conditions stated above, and you may publicly display
+copies.
+
+
+<!--l. 145--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">13.3 </span> <a
+ id="x1-11400013.3"></a>Copying in quantity</h4>
+<!--l. 148--><p class="noindent" >If you publish printed copies (or copies in media that commonly have printed covers) of the Document,
+numbering more than 100, and the Document&#8217;s license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front
+cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly
+identify you as the publisher of these copies. The front cover must present the full title with all
+words of the title equally prominent and visible. You may add other material on the covers in
+addition. Copying with changes limited to the covers, as long as they preserve the title of
+the Document and satisfy these conditions, can be treated as verbatim copying in other
+respects.
+<!--l. 161--><p class="indent" > If the required texts for either cover are too voluminous to fit legibly, you should put the first ones
+listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+<!--l. 166--><p class="indent" > If you publish or distribute Opaque copies of the Document numbering more than 100, you must
+either include a machine-readable Transparent copy along with each Opaque copy, or state in or with
+each Opaque copy a computer-network location from which the general network-using public has access
+to download using public-standard network protocols a complete Transparent copy of the Document, free
+of added material. If you use the latter option, you must take reasonably prudent steps, when you
+begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will
+remain thus accessible at the stated location until at least one year after the last time you
+distribute an Opaque copy (directly or through your agents or retailers) of that edition to the
+public.
+<!--l. 179--><p class="indent" > It is requested, but not required, that you contact the authors of the Document well before
+redistributing any large number of copies, to give them a chance to provide you with an updated version
+of the Document.
+<!--l. 184--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">13.4 </span> <a
+ id="x1-11500013.4"></a>Modifications</h4>
+<!--l. 187--><p class="noindent" >You may copy and distribute a Modified Version of the Document under the conditions of sections&#x00A0;<a
+href="#x1-11300013.2">13.2<!--tex4ht:ref: verbatim --></a>
+and <a
+href="#x1-11400013.3">13.3<!--tex4ht:ref: copying --></a> above, provided that you release the Modified Version under precisely this License, with the
+Modified Version filling the role of the Document, thus licensing distribution and modification of the
+Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified
+Version:
+<!--l. 196--><p class="indent" >
+ <ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-115002x1">Use in the Title Page (and on the covers, if any) a title distinct from that of the Document,
+ and from those of previous versions (which should, if there were any, be listed in the History
+ section of the Document). You may use the same title as a previous version if the original
+ publisher of that version gives permission.
+ </li>
+ <li
+ class="enumerate" id="x1-115004x2">List on the Title Page, as authors, one or more persons or entities responsible for authorship
+ of the modifications in the Modified Version, together with at least five of the principal
+ authors of the Document (all of its principal authors, if it has fewer than five), unless they
+ release you from this requirement.
+ </li>
+ <li
+ class="enumerate" id="x1-115006x3">State on the Title page the name of the publisher of the Modified Version, as the publisher.
+
+
+ </li>
+ <li
+ class="enumerate" id="x1-115008x4">Preserve all the copyright notices of the Document.
+ </li>
+ <li
+ class="enumerate" id="x1-115010x5">Add an appropriate copyright notice for your modifications adjacent to the other copyright
+ notices.
+ </li>
+ <li
+ class="enumerate" id="x1-115012x6">Include, immediately after the copyright notices, a license notice giving the public permission
+ to use the Modified Version under the terms of this License, in the form shown in the
+ Addendum below.
+ </li>
+ <li
+ class="enumerate" id="x1-115014x7">Preserve in that license notice the full lists of Invariant Sections and required Cover Texts
+ given in the Document&#8217;s license notice.
+ </li>
+ <li
+ class="enumerate" id="x1-115016x8">Include an unaltered copy of this License.
+ </li>
+ <li
+ class="enumerate" id="x1-115018x9">Preserve the section Entitled &#8220;History&#8221;, Preserve its Title, and add to it an item stating at
+ least the title, year, new authors, and publisher of the Modified Version as given on the Title
+ Page. If there is no section Entitled &#8220;History&#8221; in the Document, create one stating the title,
+ year, authors, and publisher of the Document as given on its Title Page, then add an item
+ describing the Modified Version as stated in the previous sentence.
+ </li>
+ <li
+ class="enumerate" id="x1-115020x10">Preserve the network location, if any, given in the Document for public access to a
+ Transparent copy of the Document, and likewise the network locations given in the Document
+ for previous versions it was based on. These may be placed in the &#8220;History&#8221; section. You
+ may omit a network location for a work that was published at least four years before the
+ Document itself, or if the original publisher of the version it refers to gives permission.
+ </li>
+ <li
+ class="enumerate" id="x1-115022x11">For any section Entitled &#8220;Acknowledgements&#8221; or &#8220;Dedications&#8221;, Preserve the Title of the
+ section, and preserve in the section all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+ </li>
+ <li
+ class="enumerate" id="x1-115024x12">Preserve all the Invariant Sections of the Document, unaltered in their text and in their
+ titles. Section numbers or the equivalent are not considered part of the section titles.
+ </li>
+ <li
+ class="enumerate" id="x1-115026x13">Delete any section Entitled &#8220;Endorsements&#8221;. Such a section may not be included in the
+ Modified Version.
+ </li>
+ <li
+ class="enumerate" id="x1-115028x14">Do not retitle any existing section to be Entitled &#8220;Endorsements&#8221; or to conflict in title with
+ any Invariant Section.
+ </li>
+ <li
+ class="enumerate" id="x1-115030x15">Preserve any Warranty Disclaimers.
+ </li></ol>
+
+
+<!--l. 247--><p class="indent" > If the Modified Version includes new front-matter sections or appendices that qualify as Secondary
+Sections and contain no material copied from the Document, you may at your option designate some or
+all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in
+the Modified Version&#8217;s license notice. These titles must be distinct from any other section
+titles.
+<!--l. 254--><p class="indent" > You may add a section Entitled &#8220;Endorsements&#8221;, provided it contains nothing but endorsements of
+your Modified Version by various parties&#8211;for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a standard.
+<!--l. 260--><p class="indent" > You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as
+a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any
+one entity. If the Document already includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of, you may not add another; but you
+may replace the old one, on explicit permission from the previous publisher that added the old
+one.
+<!--l. 270--><p class="indent" > The author(s) and publisher(s) of the Document do not by this License give permission to use their
+names for publicity for or to assert or imply endorsement of any Modified Version.
+<!--l. 275--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">13.5 </span> <a
+ id="x1-11600013.5"></a>Combining documents</h4>
+<!--l. 278--><p class="noindent" >You may combine the Document with other documents released under this License, under the terms
+defined in section&#x00A0;<a
+href="#x1-11500013.4">13.4<!--tex4ht:ref: modifications --></a> above for modified versions, provided that you include in the combination all of
+the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant
+Sections of your combined work in its license notice, and that you preserve all their Warranty
+Disclaimers.
+<!--l. 286--><p class="indent" > The combined work need only contain one copy of this License, and multiple identical Invariant
+Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name
+but different contents, make the title of each such section unique by adding at the end of it, in
+parentheses, the name of the original author or publisher of that section if known, or else a unique
+number. Make the same adjustment to the section titles in the list of Invariant Sections in the license
+notice of the combined work.
+<!--l. 295--><p class="indent" > In the combination, you must combine any sections Entitled &#8220;History&#8221; in the various original
+documents, forming one section Entitled &#8220;History&#8221;; likewise combine any sections Entitled
+&#8220;Acknowledgements&#8221;, and any sections Entitled &#8220;Dedications&#8221;. You must delete all sections Entitled
+&#8220;Endorsements&#8221;.
+<!--l. 302--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">13.6 </span> <a
+ id="x1-11700013.6"></a>Collections of documents</h4>
+<!--l. 305--><p class="noindent" >You may make a collection consisting of the Document and other documents released under this License,
+and replace the individual copies of this License in the various documents with a single copy that is
+included in the collection, provided that you follow the rules of this License for verbatim copying of each
+of the documents in all other respects.
+<!--l. 311--><p class="indent" > You may extract a single document from such a collection, and distribute it individually under this
+License, provided you insert a copy of this License into the extracted document, and follow this License
+in all other respects regarding verbatim copying of that document.
+<!--l. 317--><p class="noindent" >
+
+
+ <h4 class="subsectionHead"><span class="titlemark">13.7 </span> <a
+ id="x1-11800013.7"></a>Aggregation with independent works</h4>
+<!--l. 320--><p class="noindent" >A compilation of the Document or its derivatives with other separate and independent documents or
+works, in or on a volume of a storage or distribution medium, is called an &#8220;aggregate&#8221; if the copyright
+resulting from the compilation is not used to limit the legal rights of the compilation&#8217;s users beyond what
+the individual works permit. When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves derivative works of the
+Document.
+<!--l. 329--><p class="indent" > If the Cover Text requirement of section&#x00A0;<a
+href="#x1-11400013.3">13.3<!--tex4ht:ref: copying --></a> is applicable to these copies of the Document, then if
+the Document is less than one half of the entire aggregate, the Document&#8217;s Cover Texts may be placed
+on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the
+Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+<!--l. 338--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">13.8 </span> <a
+ id="x1-11900013.8"></a>Translation</h4>
+<!--l. 341--><p class="noindent" >Translation is considered a kind of modification, so you may distribute translations of the Document
+under the terms of section&#x00A0;<a
+href="#x1-11500013.4">13.4<!--tex4ht:ref: modifications --></a>. Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include translations of some or all Invariant
+Sections in addition to the original versions of these Invariant Sections. You may include a translation of
+this License, and all the license notices in the Document, and any Warranty Disclaimers,
+provided that you also include the original English version of this License and the original
+versions of those notices and disclaimers. In case of a disagreement between the translation
+and the original version of this License or a notice or disclaimer, the original version will
+prevail.
+<!--l. 355--><p class="indent" > If a section in the Document is Entitled &#8220;Acknowledgements&#8221;, &#8220;Dedications&#8221;, or &#8220;History&#8221;, the
+requirement (section&#x00A0;<a
+href="#x1-11500013.4">13.4<!--tex4ht:ref: modifications --></a>) to Preserve its Title (section&#x00A0;<a
+href="#x1-11200013.1">13.1<!--tex4ht:ref: applicability --></a>) will typically require changing the actual
+title.
+<!--l. 362--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">13.9 </span> <a
+ id="x1-12000013.9"></a>Termination</h4>
+<!--l. 365--><p class="noindent" >You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under
+this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However, parties who have received copies, or
+rights, from you under this License will not have their licenses terminated so long as such parties remain
+in full compliance.
+<!--l. 374--><p class="noindent" >
+ <h4 class="subsectionHead"><span class="titlemark">13.10 </span> <a
+ id="x1-12100013.10"></a>Future revisions of this license</h4>
+<!--l. 377--><p class="noindent" >The Free Software Foundation may publish new, revised versions of the GNU Free Documentation
+License from time to time. Such new versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+<!--l. 383--><p class="indent" > Each version of the License is given a distinguishing version number. If the Document specifies that a
+particular numbered version of this License &#8220;or any later version&#8221; applies to it, you have the option of
+following the terms and conditions either of that specified version or of any later version that has been
+published (not as a draft) by the Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not as a draft) by the Free Software
+Foundation.
+
+
+<!--l. 393--><p class="noindent" >
+ <h4 class="likesubsectionHead"><a
+ id="x1-12200013.10"></a>Addendum: how to use this license for your documents</h4>
+<!--l. 395--><p class="noindent" >To use this License in a document you have written, include a copy of the License in the document and
+put the following copyright and license notices just after the title page:
+<!--l. 399--><p class="indent" >
+ <div class="quote">
+ <!--l. 400--><p class="noindent" >Copyright <span
+class="lmsy-10">©</span>&#x00A0;YEAR YOUR NAME. Permission is granted to copy, distribute and/or
+ modify this document under the terms of the GNU Free Documentation License,
+ Version 1.2 or any later version published by the Free Software Foundation; with no
+ Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the
+ license is included in the section entitled &#8220;GNU Free Documentation License&#8221;.</div>
+<!--l. 409--><p class="indent" > If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the &#8220;with...Texts.&#8221;
+line with this:
+<!--l. 412--><p class="indent" > with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and
+with the Back-Cover Texts being LIST.
+<!--l. 415--><p class="indent" > If you have Invariant Sections without Cover Texts, or some other combination of the three, merge
+those two alternatives to suit the situation.
+<!--l. 419--><p class="indent" > If your document contains nontrivial examples of program code, we recommend releasing these
+examples in parallel under your choice of free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+
+
+</body></html>
+
+
+
+
diff --git a/macros/latex/contrib/hyperref/doc/manual.pdf b/macros/latex/contrib/hyperref/doc/manual.pdf
new file mode 100644
index 0000000000..1cdd6376ea
--- /dev/null
+++ b/macros/latex/contrib/hyperref/doc/manual.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/manual2.html b/macros/latex/contrib/hyperref/doc/manual2.html
new file mode 100644
index 0000000000..4d185dc32f
--- /dev/null
+++ b/macros/latex/contrib/hyperref/doc/manual2.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html >
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<!-- html -->
+<meta name="src" content="manual.tex">
+<link rel="stylesheet" type="text/css" href="manual.css">
+</head><body
+>
+ <div class="footnote-text">
+ <!--l. 205--><p class="indent" > <span class="footnote-mark"><a
+ id="fn1x0"> <sup class="textsuperscript">1</sup></a></span><span
+class="ec-lmr-8">This is borrowed from an article by Arthur Smith.</span></div>
+
+</body></html>
diff --git a/macros/latex/contrib/hyperref/doc/manual3.html b/macros/latex/contrib/hyperref/doc/manual3.html
new file mode 100644
index 0000000000..9fe14317ea
--- /dev/null
+++ b/macros/latex/contrib/hyperref/doc/manual3.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html >
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<!-- html -->
+<meta name="src" content="manual.tex">
+<link rel="stylesheet" type="text/css" href="manual.css">
+</head><body
+>
+ <div class="footnote-text">
+ <!--l. 270--><p class="indent" > <span class="footnote-mark"><a
+ id="fn2x0"> <sup class="textsuperscript">2</sup></a></span><span
+class="ec-lmr-8">Make sure you turn off the partial font downloading supported by </span><span
+class="ec-lmss-8">dvips </span><span
+class="ec-lmr-8">and </span><span
+class="ec-lmss-8">dvipsone </span><span
+class="ec-lmr-8">in favor of Distiller&#8217;s own</span>
+ <span
+class="ec-lmr-8">system.</span></div>
+
+</body></html>
diff --git a/macros/latex/contrib/hyperref/doc/manual4.html b/macros/latex/contrib/hyperref/doc/manual4.html
new file mode 100644
index 0000000000..fd0e5d8fc2
--- /dev/null
+++ b/macros/latex/contrib/hyperref/doc/manual4.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html >
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<!-- html -->
+<meta name="src" content="manual.tex">
+<link rel="stylesheet" type="text/css" href="manual.css">
+</head><body
+>
+ <div class="footnote-text">
+ <span class="footnote-mark"><a
+ id="fn3x0"> <sup class="textsuperscript">3</sup></a></span><span
+class="ec-lmr-8">This section moved from the README file, needs more integration into the manual</span></div>
+
+</body></html>
diff --git a/macros/latex/contrib/hyperref/doc/manual5.html b/macros/latex/contrib/hyperref/doc/manual5.html
new file mode 100644
index 0000000000..9dac190d9b
--- /dev/null
+++ b/macros/latex/contrib/hyperref/doc/manual5.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html >
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<!-- html -->
+<meta name="src" content="manual.tex">
+<link rel="stylesheet" type="text/css" href="manual.css">
+</head><body
+>
+ <div class="footnote-text">
+ <span class="footnote-mark"><a
+ id="fn4x0"> <sup class="textsuperscript">4</sup></a></span><span
+class="ec-lmr-8">This section moved from the README file, needs more integration into the manual</span></div>
+
+</body></html>
diff --git a/macros/latex/contrib/hyperref/doc/manual6.html b/macros/latex/contrib/hyperref/doc/manual6.html
new file mode 100644
index 0000000000..b0bc75179c
--- /dev/null
+++ b/macros/latex/contrib/hyperref/doc/manual6.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html >
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
+<!-- html -->
+<meta name="src" content="manual.tex">
+<link rel="stylesheet" type="text/css" href="manual.css">
+</head><body
+>
+ <div class="footnote-text">
+ <span class="footnote-mark"><a
+ id="fn5x0"> <sup class="textsuperscript">5</sup></a></span><span
+class="ec-lmr-8">This section moved from the README file, needs more integration into the manual</span></div>
+
+</body></html>
diff --git a/macros/latex/contrib/hyperref/doc/options.pdf b/macros/latex/contrib/hyperref/doc/options.pdf
new file mode 100644
index 0000000000..30ed7fe003
--- /dev/null
+++ b/macros/latex/contrib/hyperref/doc/options.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/paper.pdf b/macros/latex/contrib/hyperref/doc/paper.pdf
new file mode 100644
index 0000000000..5b5977bf89
--- /dev/null
+++ b/macros/latex/contrib/hyperref/doc/paper.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/slides.pdf b/macros/latex/contrib/hyperref/doc/slides.pdf
new file mode 100644
index 0000000000..1d98335b32
--- /dev/null
+++ b/macros/latex/contrib/hyperref/doc/slides.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/hluatex.dtx b/macros/latex/contrib/hyperref/hluatex.dtx
new file mode 100644
index 0000000000..364e9d60c2
--- /dev/null
+++ b/macros/latex/contrib/hyperref/hluatex.dtx
@@ -0,0 +1,2034 @@
+% \iffalse
+%% Source File: hluatex.dtx
+%% Copyright 2016 Oberdiek Package Support Group
+%%
+%%
+%% Derived from hpdftex.def
+%%
+%% This file may be distributed under the terms of the LPPL.
+%% See README for details.
+%
+%<*driver>
+\documentclass{ltxdoc}
+\ifx\Umathchardef\undefined\usepackage[T1]{fontenc}\fi
+\begin{document}
+ \GetFileInfo{hluatex.def}%
+ \title{hluatex.def}
+ \date{}%
+ \author{Oberdiek Package Support Group}
+ \maketitle
+ \DocInput{hluatex.dtx}%
+\end{document}
+%</driver>
+% \fi
+% \StopEventually{}
+%
+% \begin{macrocode}
+%<*luatex>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% remains of luatex85 package
+\protected\def\pdfcatalog {\pdfextension catalog }
+
+\protected\def\pdflastannot {\numexpr\pdffeedback lastannot\relax}
+\protected\def\pdflastlink {\numexpr\pdffeedback lastlink\relax}
+\protected\def\pdflastobj {\numexpr\pdffeedback lastobj\relax}
+
+
+\protected\edef\pdflinkmargin {\pdfvariable linkmargin}
+\protected\def\pdfliteral {\pdfextension literal}
+
+\protected\def\pdfobj {\pdfextension obj }
+\protected\edef\pdfcompresslevel {\pdfvariable compresslevel}
+\protected\edef\pdfpageattr {\pdfvariable pageattr}
+
+\protected\edef\pdfpageresources {\pdfvariable pageresources}
+\protected\edef\pdfpagesattr {\pdfvariable pagesattr}
+
+\protected\def\pdfrefobj {\pdfextension refobj }
+
+\protected\def\pdfstartlink {\pdfextension startlink }
+\protected\def\pdfendlink {\pdfextension endlink\relax}
+
+\protected\def\pdfoutline {\pdfextension outline }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\pdf@ifdraftmode{%
+ \let\Hy@PutCatalog\ltx@gobble
+}{%
+ \let\Hy@PutCatalog\pdfcatalog
+}
+\ifHy@pdfpagelabels
+ \def\HyPL@StorePageLabel#1{%
+ \toks@\expandafter{\HyPL@Labels}%
+ \xdef\HyPL@Labels{%
+ \the\toks@
+ \the\Hy@abspage<<#1>>%
+ }%
+ }%
+ \RequirePackage{atveryend}[2009/12/07]%
+ \AtVeryEndDocument{%
+ \HyPL@SetPageLabels
+ }%
+\fi
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdf@escapestring\endcsname\relax
+ \begingroup
+ \catcode`\|=0 %
+ \@makeother\\%
+ |@firstofone{|endgroup
+ |def|Hy@pstringdef#1#2{%
+ |begingroup
+ |edef~{|string~}%
+ |xdef|Hy@gtemp{#2}%
+ |endgroup
+ |let#1|Hy@gtemp
+ |@onelevel@sanitize#1%
+ |edef#1{|expandafter|Hy@ExchangeBackslash#1\|@nil}%
+ |edef#1{|expandafter|Hy@ExchangeLeftParenthesis#1(|@nil}%
+ |edef#1{|expandafter|Hy@ExchangeRightParenthesis#1)|@nil}%
+ }%
+ |def|Hy@ExchangeBackslash#1\#2|@nil{%
+ #1%
+ |ifx|\#2|\%%
+ |else
+ \\%
+ |ltx@ReturnAfterFi{%
+ |Hy@ExchangeBackslash#2|@nil
+ }%
+ |fi
+ }%
+ }%
+ \def\Hy@ExchangeLeftParenthesis#1(#2\@nil{%
+ #1%
+ \ifx\\#2\\%
+ \else
+ \@backslashchar(%
+ \ltx@ReturnAfterFi{%
+ \Hy@ExchangeLeftParenthesis#2\@nil
+ }%
+ \fi
+ }%
+ \def\Hy@ExchangeRightParenthesis#1)#2\@nil{%
+ #1%
+ \ifx\\#2\\%
+ \else
+ \@backslashchar)%
+ \ltx@ReturnAfterFi{%
+ \Hy@ExchangeRightParenthesis#2\@nil
+ }%
+ \fi
+ }%
+\else
+ \def\Hy@pstringdef#1#2{%
+ \begingroup
+ \edef~{\string~}%
+ \xdef\Hy@gtemp{\pdf@escapestring{#2}}%
+ \endgroup
+ \let#1\Hy@gtemp
+ }%
+\fi
+\providecommand*{\XR@ext}{pdf}
+\Hy@setbreaklinks{true}
+\def\HyPat@ObjRef{%
+ [0-9]*[1-9][0-9]* 0 R%
+}
+
+\edef\Hy@pdfminorversion{\pdfvariable minorversion}%
+ \ifHy@ocgcolorlinks
+ \ifnum\Hy@pdfminorversion<5 %
+ \kvsetkeys{Hyp}{pdfversion=1.5}%
+ \fi
+ \fi
+ \ifHy@setpdfversion
+ \ifnum\Hy@pdfversion<5 %
+ \ltx@IfUndefined{pdfobjcompresslevel}{%
+ }{%
+ \ifHy@verbose
+ \Hy@InfoNoLine{%
+ PDF object streams are disabled, because they are%
+ \MessageBreak
+ not supported in requested PDF version %
+ 1.\Hy@pdfversion
+ }%
+ \fi
+ \pdfobjcompresslevel=\ltx@zero
+ }%
+ \fi
+ \ifnum\Hy@pdfminorversion=\Hy@pdfversion\relax
+ \else
+ \let\Hy@temp\ltx@empty
+ \def\Hy@temp@A#1#2{%
+ \ifnum#1>\ltx@zero
+ \edef\Hy@temp{%
+ \Hy@temp
+ \space\space
+ \the#1\space #2%
+ \ifnum#1=\ltx@one\else s\fi
+ \MessageBreak
+ }%
+ \fi
+ }%
+ \Hy@temp@A\pdflastobj{PDF object}%
+ \Hy@temp@A\lastsavedboxresourceindex{form XObject}%
+ \Hy@temp@A\lastsavedimageresourceindex{image XObject}%
+ \Hy@temp@A\pdflastannot{annotation}%
+ \ltx@IfUndefined{pdflastlink}{%
+ }{%
+ \Hy@temp@A\pdflastlink{link}%
+ }%
+ \ifx\Hy@temp\ltx@empty
+ \Hy@pdfminorversion=\Hy@pdfversion\relax
+ \else
+ \let\Hy@temp@A\ltx@empty
+ \ifnum\Hy@pdfversion=4 %
+ \IfFileExists{pdf14.sty}{%
+ \def\Hy@temp@A{%
+ \MessageBreak
+ Or \string\RequirePackage{pdf14} can be used%
+ \MessageBreak
+ before \string\documentclass\space as shortcut%
+ }%
+ }{}%
+ \fi
+ \Hy@WarningNoLine{%
+ The PDF version number could not be set,\MessageBreak
+ because some PDF objects are already written:%
+ \MessageBreak
+ \Hy@temp
+ The version should be set as early as possible:%
+ \MessageBreak
+ \space\space
+ \expandafter\string\Hy@pdfminorversion=\Hy@pdfversion
+ \string\relax
+ \ifnum\Hy@pdfversion<5 %
+ \ltx@ifundefined{pdfobjcompresslevel}{%
+ }{%
+ \MessageBreak
+ \space\space
+ \string\pdfobjcompresslevel=0\string\relax
+ }%
+ \fi
+ \Hy@temp@A
+ }%
+ \fi
+ \fi
+ \PackageInfo{hyperref}{%
+ \expandafter\string\Hy@pdfminorversion
+ :=\number\Hy@pdfversion\space
+ }%
+ \fi
+ \edef\Hy@pdfversion{\number\Hy@pdfminorversion}%
+
+\Hy@DisableOption{pdfversion}%
+\ifHy@ocgcolorlinks
+ \pdf@ifdraftmode{}{%
+ \immediate\pdfobj{%
+ <<%
+ /Type/OCG%
+ /Name(View)%
+ /Usage<<%
+ /Print<<%
+ /PrintState/OFF%
+ >>%
+ /View<<%
+ /ViewState/ON%
+ >>%
+ >>%
+ >>%
+ }%
+ \edef\OBJ@OCG@view{\the\pdflastobj\space 0 R}%
+ \immediate\pdfobj{%
+ <<%
+ /Type/OCG%
+ /Name(Print)%
+ /Usage<<%
+ /Print<<%
+ /PrintState/ON%
+ >>%
+ /View<<%
+ /ViewState/OFF%
+ >>%
+ >>%
+ >>%
+ }%
+ \edef\OBJ@OCG@print{\the\pdflastobj\space 0 R}%
+ \immediate\pdfobj{%
+ [%
+ \OBJ@OCG@view\space\OBJ@OCG@print
+ ]%
+ }%
+ \edef\OBJ@OCGs{\the\pdflastobj\space 0 R}%
+ \pdfcatalog{%
+ /OCProperties<<%
+ /OCGs \OBJ@OCGs
+ /D<<%
+ /OFF[\OBJ@OCG@print]%
+ /AS[%
+ <<%
+ /Event/View%
+ /OCGs \OBJ@OCGs
+ /Category[/View]%
+ >>%
+ <<%
+ /Event/Print%
+ /OCGs \OBJ@OCGs
+ /Category[/Print]%
+ >>%
+ <<%
+ /Event/Export%
+ /OCGs \OBJ@OCGs
+ /Category[/Print]%
+ >>%
+ ]%
+ >>%
+ >>%
+ }%
+ \begingroup
+ \edef\x{\endgroup
+ \pdfpageresources{%
+ \the\pdfpageresources
+ /Properties<<%
+ /OCView \OBJ@OCG@view
+ /OCPrint \OBJ@OCG@print
+ >>%
+ }%
+ }%
+ \x
+ }%
+ \Hy@AtBeginDocument{%
+ \def\Hy@colorlink#1{%
+ \begingroup
+ \ifHy@ocgcolorlinks
+ \def\Hy@ocgcolor{#1}%
+ \setbox0=\hbox\bgroup\color@begingroup
+ \else
+ \HyColor@UseColor#1%
+ \fi
+ }%
+ \def\Hy@endcolorlink{%
+ \ifHy@ocgcolorlinks
+ \color@endgroup\egroup
+ \mbox{%
+ \pdfliteral page{/OC/OCPrint BDC}%
+ \rlap{\copy0}%
+ \pdfliteral page{EMC/OC/OCView BDC}%
+ \begingroup
+ \expandafter\HyColor@UseColor\Hy@ocgcolor
+ \box0 %
+ \endgroup
+ \pdfliteral page{EMC}%
+ }%
+ \fi
+ \endgroup
+ }%
+ }%
+\else
+ \Hy@DisableOption{ocgcolorlinks}%
+\fi
+\def\setpdflinkmargin#1{%
+ \begingroup
+ \setlength{\dimen@}{#1}%
+ \expandafter\endgroup
+ \expandafter\pdflinkmargin\the\dimen@\relax
+}
+\ifx\pdfstartlink\@undefined% less than version 14
+ \let\pdfstartlink\pdfannotlink
+ \let\pdflinkmargin\@tempdima
+ \let\saveboxresource\pdfform
+ \let\lastsavedboxresourceindex\pdflastform
+ \let\useboxresource\pdfrefform
+\else
+ \pdflinkmargin1pt %
+\fi
+\providecommand*\@pdfview{XYZ}
+\Hy@WrapperDef\new@pdflink#1{%
+ \ifhmode
+ \@savsf\spacefactor
+ \fi
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \Hy@pstringdef\Hy@pstringDest{\HyperDestNameFilter{#1}}%
+ \Hy@DestName\Hy@pstringDest\@pdfview
+ \Hy@RestoreLastskip
+ \ifhmode
+ \spacefactor\@savsf
+ \fi
+}
+\let\pdf@endanchor\@empty
+\def\Hy@DestName#1#2{%
+ \pdfextension dest name{#1}#2\relax
+}
+\providecommand*\@pdfborder{0 0 1}
+\providecommand*\@pdfborderstyle{}
+\def\Hy@undefinedname{UNDEFINED}
+\def\find@pdflink#1#2{%
+ \leavevmode
+ \protected@edef\Hy@testname{#2}%
+ \ifx\Hy@testname\@empty
+ \Hy@Warning{%
+ Empty destination name,\MessageBreak
+ using `\Hy@undefinedname'%
+ }%
+ \let\Hy@testname\Hy@undefinedname
+ \else
+ \Hy@pstringdef\Hy@testname{%
+ \expandafter\HyperDestNameFilter\expandafter{\Hy@testname}%
+ }%
+ \fi
+ \Hy@StartlinkName{%
+ \ifHy@pdfa /F 4\fi
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \ifx\CurrentBorderColor\relax
+ \else
+ /C[\CurrentBorderColor]%
+ \fi
+ }\Hy@testname
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
+}
+\def\Hy@StartlinkName#1#2{%
+ \pdfstartlink attr{#1}goto name{#2}\relax
+}
+\def\close@pdflink{%
+ \Hy@endcolorlink
+ \Hy@VerboseLinkStop
+ \pdfendlink
+}
+\def\hyper@anchor#1{%
+ \new@pdflink{#1}\anchor@spot\pdf@endanchor
+}
+\def\hyper@anchorstart#1{%
+ \new@pdflink{#1}%
+ \Hy@activeanchortrue
+}
+\def\hyper@anchorend{%
+ \pdf@endanchor
+ \Hy@activeanchorfalse
+}
+\def\hyper@linkstart#1#2{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \ltx@IfUndefined{@#1bordercolor}{%
+ \let\CurrentBorderColor\relax
+ }{%
+ \edef\CurrentBorderColor{\csname @#1bordercolor\endcsname}%
+ }%
+ \find@pdflink{#1}{#2}%
+}
+\def\hyper@linkend{\close@pdflink}
+\def\hyper@link#1#2#3{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \ltx@IfUndefined{@#1bordercolor}{%
+ \let\CurrentBorderColor\relax
+ }{%
+ \edef\CurrentBorderColor{\csname @#1bordercolor\endcsname}%
+ }%
+ \find@pdflink{#1}{#2}#3\Hy@xspace@end
+ \close@pdflink
+}
+\let\CurrentBorderColor\@linkbordercolor
+\def\hyper@linkurl#1#2{%
+ \begingroup
+ \Hy@pstringdef\Hy@pstringURI{#2}%
+ \hyper@chars
+ \leavevmode
+ \pdfstartlink
+ attr{%
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \ifx\@urlbordercolor\relax
+ \else
+ /C[\@urlbordercolor]%
+ \fi
+ }%
+ user{%
+ /Subtype/Link%
+ \ifHy@pdfa /F 4\fi
+ /A<<%
+ /Type/Action%
+ /S/URI%
+ /URI(\Hy@pstringURI)%
+ \ifHy@href@ismap
+ /IsMap true%
+ \fi
+ \Hy@href@nextactionraw
+ >>%
+ }%
+ \relax
+ \Hy@colorlink\@urlcolor#1\Hy@xspace@end
+ \close@pdflink
+ \endgroup
+}
+\def\hyper@linkfile#1#2#3{% anchor text, filename, linkname
+ \begingroup
+ \def\Hy@pstringF{#2}%
+ \Hy@CleanupFile\Hy@pstringF
+ \Hy@pstringdef\Hy@pstringF\Hy@pstringF
+ \Hy@pstringdef\Hy@pstringD{#3}%
+ \Hy@MakeRemoteAction
+ \leavevmode
+ \pdfstartlink
+ attr{%
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \ifx\@filebordercolor\relax
+ \else
+ /C[\@filebordercolor]%
+ \fi
+ }%
+ user {%
+ /Subtype/Link%
+ \ifHy@pdfa /F 4\fi
+ /A<<%
+ /F(\Hy@pstringF)%
+ /S/GoToR%
+ \Hy@SetNewWindow
+ \ifx\\#3\\%
+ /D[\Hy@href@page\@pdfremotestartview]%
+ \else
+ /D(\Hy@pstringD)%
+ \fi
+ \Hy@href@nextactionraw
+ >>%
+ }%
+ \relax
+ \Hy@colorlink\@filecolor#1\Hy@xspace@end
+ \close@pdflink
+ \endgroup
+}
+\def\@hyper@launch run:#1\\#2#3{% filename, anchor text linkname
+ \begingroup
+ \Hy@pstringdef\Hy@pstringF{#1}%
+ \Hy@pstringdef\Hy@pstringP{#3}%
+ \leavevmode
+ \pdfstartlink
+ attr{%
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \ifx\@runbordercolor\relax
+ \else
+ /C[\@runbordercolor]%
+ \fi
+ }%
+ user {%
+ /Subtype/Link%
+ \ifHy@pdfa /F 4\fi
+ /A<<%
+ /F(\Hy@pstringF)%
+ /S/Launch%
+ \Hy@SetNewWindow
+ \ifx\\#3\\%
+ \else
+ /Win<</P(\Hy@pstringP)/F(\Hy@pstringF)>>%
+ \fi
+ \Hy@href@nextactionraw
+ >>%
+ }%
+ \relax
+ \Hy@colorlink\@runcolor#2\Hy@xspace@end
+ \close@pdflink
+ \endgroup
+}
+
+
+\def\PDF@SetupDoc{%
+ \ifx\@pdfpagescrop\@empty
+ \else
+ \edef\process@me{%
+ \pdfpagesattr={%
+ /CropBox[\@pdfpagescrop]%
+ \expandafter\ifx\expandafter\\\the\pdfpagesattr\\%
+ \else
+ ^^J\the\pdfpagesattr
+ \fi
+ }%
+ }%
+ \process@me
+ \fi
+ \Hy@pstringdef\Hy@pstringB{\@baseurl}%
+ \pdfcatalog{%
+ /PageMode/\@pdfpagemode
+ \ifx\@baseurl\@empty
+ \else
+ /URI<</Base(\Hy@pstringB)>>%
+ \fi
+ }%
+ \ifx\@pdfstartpage\@empty
+ \else
+ \ifx\@pdfstartview\@empty
+ \else
+ openaction goto page\@pdfstartpage{\@pdfstartview}%
+ \fi
+ \fi
+ \edef\Hy@temp{%
+ \ifHy@pdftoolbar\else /HideToolbar true\fi
+ \ifHy@pdfmenubar\else /HideMenubar true\fi
+ \ifHy@pdfwindowui\else /HideWindowUI true\fi
+ \ifHy@pdffitwindow /FitWindow true\fi
+ \ifHy@pdfcenterwindow /CenterWindow true\fi
+ \ifHy@pdfdisplaydoctitle /DisplayDocTitle true\fi
+ \Hy@UseNameKey{NonFullScreenPageMode}\@pdfnonfullscreenpagemode
+ \Hy@UseNameKey{Direction}\@pdfdirection
+ \Hy@UseNameKey{ViewArea}\@pdfviewarea
+ \Hy@UseNameKey{ViewClip}\@pdfviewclip
+ \Hy@UseNameKey{PrintArea}\@pdfprintarea
+ \Hy@UseNameKey{PrintClip}\@pdfprintclip
+ \Hy@UseNameKey{PrintScaling}\@pdfprintscaling
+ \Hy@UseNameKey{Duplex}\@pdfduplex
+ \ifx\@pdfpicktraybypdfsize\@empty
+ \else
+ /PickTrayByPDFSize \@pdfpicktraybypdfsize
+ \fi
+ \ifx\@pdfprintpagerange\@empty
+ \else
+ /PrintPageRange[\@pdfprintpagerange]%
+ \fi
+ \ifx\@pdfnumcopies\@empty
+ \else
+ /NumCopies \@pdfnumcopies
+ \fi
+ }%
+ \pdfcatalog{%
+ \ifx\Hy@temp\@empty
+ \else
+ /ViewerPreferences<<\Hy@temp>>%
+ \fi
+ \Hy@UseNameKey{PageLayout}\@pdfpagelayout
+ \ifx\@pdflang\relax
+ \else
+ /Lang(\@pdflang)%
+ \fi
+ }%
+}
+\def\PDF@FinishDoc{%
+ \pdf@ifdraftmode{}{%
+ \Hy@UseMaketitleInfos
+ \HyInfo@GenerateAddons
+ \pdfextension info{%
+ /Author(\@pdfauthor)%
+ /Title(\@pdftitle)%
+ /Subject(\@pdfsubject)%
+ /Creator(\@pdfcreator)%
+ \ifx\@pdfcreationdate\@empty
+ \else
+ /CreationDate(\@pdfcreationdate)%
+ \fi
+ \ifx\@pdfmoddate\@empty
+ \else
+ /ModDate(\@pdfmoddate)%
+ \fi
+ \ifx\@pdfproducer\relax
+ \else
+ /Producer(\@pdfproducer)%
+ \fi
+ /Keywords(\@pdfkeywords)%
+ \ifx\@pdftrapped\@empty
+ \else
+ /Trapped/\@pdftrapped
+ \fi
+ \HyInfo@Addons
+ }%
+ }%
+ \Hy@DisableOption{pdfauthor}%
+ \Hy@DisableOption{pdftitle}%
+ \Hy@DisableOption{pdfsubject}%
+ \Hy@DisableOption{pdfcreator}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfmoddate}%
+ \Hy@DisableOption{pdfproducer}%
+ \Hy@DisableOption{pdfkeywords}%
+ \Hy@DisableOption{pdftrapped}%
+ \Hy@DisableOption{pdfinfo}%
+}
+\def\hyper@pagetransition{%
+ \ifx\@pdfpagetransition\relax
+ \else
+ \expandafter\Hy@RemoveTransPageAttr
+ \the\pdfpageattr^^J/Trans{}>>\END
+ \ifx\@pdfpagetransition\@empty
+ \else
+ \edef\@processme{%
+ \global\pdfpageattr{%
+ \the\pdfpageattr
+ ^^J/Trans << /S /\@pdfpagetransition\space >>%
+ }%
+ }%
+ \@processme
+ \fi
+ \fi
+}
+\gdef\Hy@RemoveTransPageAttr#1^^J/Trans#2#3>>#4\END{%
+ \ifx\\#2\\%
+ \global\pdfpageattr{#1}%
+ \else
+ \Hy@RemoveTransPageAttr#1#4\END
+ \fi
+}
+\def\hyper@pageduration{%
+ \ifx\@pdfpageduration\relax
+ \else
+ \expandafter
+ \Hy@RemoveDurPageAttr\the\pdfpageattr^^J/Dur{} \END
+ \ifx\@pdfpageduration\@empty
+ \else
+ \edef\@processme{%
+ \global\pdfpageattr{%
+ \the\pdfpageattr
+ ^^J/Dur \@pdfpageduration\space
+ }%
+ }%
+ \@processme
+ \fi
+ \fi
+}
+\gdef\Hy@RemoveDurPageAttr#1^^J/Dur#2#3 #4\END{%
+ \ifx\\#2\\%
+ \global\pdfpageattr{#1}%
+ \else
+ \Hy@RemoveDurPageAttr#1#4\END
+ \fi
+}
+\def\hyper@pagehidden{%
+ \ifHy@useHidKey
+ \expandafter
+ \Hy@RemoveHidPageAttr\the\pdfpageattr^^J/Hid{} \END
+ \ifHy@pdfpagehidden
+ \edef\@processme{%
+ \global\pdfpageattr{%
+ \the\pdfpageattr
+ ^^J/Hid true % SPACE
+ }%
+ }%
+ \@processme
+ \fi
+ \fi
+}
+\gdef\Hy@RemoveHidPageAttr#1^^J/Hid#2#3 #4\END{%
+ \ifx\\#2\\%
+ \global\pdfpageattr{#1}%
+ \else
+ \Hy@RemoveHidPageAttr#1#4\END
+ \fi
+}
+\pdf@ifdraftmode{}{%
+ \g@addto@macro\Hy@EveryPageHook{%
+ \hyper@pagetransition
+ \hyper@pageduration
+ \hyper@pagehidden
+ }%
+}
+\Hy@AtBeginDocument{%
+ \ifHy@setpagesize
+ \expandafter\@firstofone
+ \else
+ \expandafter\@gobble
+ \fi
+ {%
+ \@ifclassloaded{seminar}{%
+ \setlength{\pdfvariable horigin}{1truein}%
+ \setlength{\pdfvariable vorigin}{1truein}%
+ \ifportrait
+ \ifdim\paperwidth=\z@
+ \else
+ \setlength{\pagewidth}{\strip@pt\paperwidth truept}%
+ \fi
+ \ifdim\paperheight=\z@
+ \else
+ \setlength{\pageheight}{\strip@pt\paperheight truept}%
+ \fi
+ \else
+ \ifdim\paperheight=\z@
+ \else
+ \setlength{\pagewidth}{\strip@pt\paperheight truept}%
+ \fi
+ \ifdim\paperwidth=\z@
+ \else
+ \setlength{\pageheight}{\strip@pt\paperwidth truept}%
+ \fi
+ \fi
+ }{%
+ \ltx@IfUndefined{stockwidth}{%
+ \ifdim\paperwidth>\z@
+ \setlength{\pagewidth}{\paperwidth}%
+ \fi
+ \ifdim\paperheight>\z@
+ \setlength{\pageheight}{\paperheight}%
+ \fi
+ }{%
+ \ifdim\stockwidth>\z@
+ \setlength{\pagewidth}{\stockwidth}%
+ \fi
+ \ifdim\stockheight>\z@
+ \setlength{\pageheight}{\stockheight}%
+ \fi
+ }%
+ }%
+ }%
+ \Hy@DisableOption{setpagesize}%
+}
+\def\Acrobatmenu#1#2{%
+ \Hy@Acrobatmenu{#1}{#2}{%
+ \leavevmode
+ \EdefEscapeName\Hy@temp@menu{#1}%
+ \pdfstartlink
+ attr{%
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \ifx\@menubordercolor\relax
+ \else
+ /C[\@menubordercolor]%
+ \fi
+ }%
+ user{%
+ /Subtype/Link%
+ \ifHy@pdfa /F 4\fi
+ /A<<%
+ /S/Named%
+ /N/\Hy@temp@menu
+ \Hy@href@nextactionraw
+ >>%
+ }%
+ \relax
+ \Hy@colorlink\@menucolor#2%
+ \close@pdflink
+ }%
+}
+\def\Hy@FixNotFirstPage{%
+ \gdef\Hy@FixNotFirstPage{%
+ \setbox\AtBeginShipoutBox=\hbox{%
+ \copy\AtBeginShipoutBox
+ }%
+ }%
+}
+\ltx@ifpackagelater{atbegshi}{2011/10/05}{%
+}{%
+ \AtBeginShipout{\Hy@FixNotFirstPage}%
+}
+\def\@Gauge[#1]#2#3#4{% parameters, label, minimum, maximum
+ \Hy@Message{Sorry, pdftex does not support FORM gauges}%
+}
+\def\MakeFieldObject#1#2{\sbox0{#1}%
+ \immediate\saveboxresource0 %
+ \expandafter\edef\csname #2Object\endcsname{%
+ \the\lastsavedboxresourceindex\space 0 R%
+ }%
+}%
+\let\HyField@afields\ltx@empty
+\let\HyField@cofields\ltx@empty
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdflastlink\endcsname\relax
+ \let\HyField@AddToFields\relax
+ \PackageInfo{hyperref}{%
+ You need pdfTeX 1.40.0 for setting the /Fields entry.%
+ \MessageBreak
+ Adobe Reader/Acrobat accepts an empty /Field array,%
+ \MessageBreak
+ but other PDF viewers might complain%
+ }%
+\else
+ \let\HyField@AuxAddToFields\ltx@gobble
+ \let\HyField@AuxAddToCoFields\ltx@gobbletwo
+ \def\HyField@AfterAuxOpen{\Hy@AtBeginDocument}%
+ \def\HyField@ABD@AuxAddToCoFields#1#2{%
+ \begingroup
+ \Hy@safe@activestrue
+ \let\ltx@secondoftwo\relax
+ \ifx\HyField@cofields\ltx@empty
+ \xdef\HyField@cofields{%
+ \ltx@secondoftwo{#1}{ #2 0 R}%
+ }%
+ \else
+ \let\ltx@secondoftwo\relax
+ \def\HyField@AddCoField##1##2##3{%
+ \ifx##1\ltx@empty
+ \ltx@secondoftwo{#1}{ #2 0 R}%
+ \expandafter\ltx@gobble
+ \else
+ \ifnum\pdf@strcmp{##2}{#1}>\ltx@zero
+ \ltx@secondoftwo{#1}{ #2 0 R}%
+ \ltx@secondoftwo{##2}{##3}%
+ \expandafter\expandafter\expandafter\ltx@gobble
+ \else
+ \ltx@secondoftwo{##2}{##3}%
+ \fi
+ \fi
+ \HyField@AddCoField
+ }%
+ \xdef\HyField@cofields{%
+ \expandafter\HyField@AddCoField
+ \HyField@cofields\ltx@empty\ltx@empty\ltx@empty
+ }%
+ \fi
+ \endgroup
+ }%
+ \Hy@AtBeginDocument{%
+ \if@filesw
+ \immediate\write\@mainaux{%
+ \string\providecommand\string\HyField@AuxAddToFields[1]{}%
+ }%
+ \immediate\write\@mainaux{%
+ \string\providecommand\string\HyField@AuxAddToCoFields[2]{}%
+ }%
+ \fi
+ \let\HyField@AfterAuxOpen\@firstofone
+ \def\HyField@AuxAddToFields#1{%
+ \xdef\HyField@afields{%
+ \ifx\HyField@afields\@empty
+ \else
+ \HyField@afields
+ \space
+ \fi
+ #1 0 R%
+ }%
+ }%
+ \let\HyField@AuxAddToCoFields\HyField@ABD@AuxAddToCoFields
+ }%
+ \def\HyField@AddToFields{%
+ \expandafter\HyField@@AddToFields\expandafter{%
+ \the\pdflastlink
+ }%
+ \ifx\Fld@calculate@code\ltx@empty
+ \else
+ \begingroup
+ \Hy@safe@activestrue
+ \edef\Hy@temp{%
+ \endgroup
+ \if@filesw
+ \write\@mainaux{%
+ \string\HyField@AuxAddToCoFields{%
+ \Fld@calculate@sortkey
+ }{%
+ \the\pdflastlink
+ }%
+ }%
+ \fi
+ }%
+ \Hy@temp
+ \fi
+ }%
+ \def\HyField@@AddToFields#1{%
+ \HyField@AfterAuxOpen{%
+ \if@filesw
+ \write\@mainaux{%
+ \string\HyField@AuxAddToFields{#1}%
+ }%
+ \fi
+ }%
+ }%
+\fi
+\def\@Form[#1]{%
+ \@ifundefined{textcolor}{\let\textcolor\@gobble}{}%
+ \kvsetkeys{Form}{#1}%
+ \pdf@ifdraftmode{}{%
+ \Hy@FormObjects
+ \pdfrefobj\OBJ@pdfdocencoding
+ \pdfrefobj\OBJ@ZaDb
+ \pdfrefobj\OBJ@Helv
+ \AtVeryEndDocument{%
+ \immediate\pdfobj{%
+ <<%
+ /Fields[\HyField@afields]%
+ \ifx\HyField@cofields\ltx@empty
+ \else
+ /CO[\romannumeral-`\Q\HyField@cofields]%
+ \fi
+ /DR<<%
+ /Font<<%
+ /ZaDb \OBJ@ZaDb\space 0 R%
+ /Helv \OBJ@Helv\space 0 R%
+ >>%
+ >>%
+ /DA(/Helv 10 Tf 0 g)%
+ \ifHy@pdfa
+ \else
+ \ifHyField@NeedAppearances
+ /NeedAppearances true%
+ \fi
+ \fi
+ >>%
+ }%
+ \edef\OBJ@acroform{\the\pdflastobj}%
+ \pdfcatalog{/AcroForm \OBJ@acroform\space 0 R}%
+ }%
+ }%
+ \MakeFieldObject{%
+ \begingroup
+ \fontfamily{pzd}%
+ \fontencoding{U}%
+ \fontseries{m}%
+ \fontshape{n}%
+ \selectfont
+ \char123 %
+ \endgroup
+ }{Ding}%
+ \MakeFieldObject{%
+ \fbox{\textcolor{yellow}{\textsf{Submit}}}%
+ }{Submit}%
+ \MakeFieldObject{%
+ \fbox{\textcolor{yellow}{\textsf{SubmitP}}}%
+ }{SubmitP}%
+}
+\let\@endForm\ltx@empty
+\let\HyAnn@AbsPageLabel\ltx@empty
+\let\Fld@pageobjref\ltx@empty
+\ltx@IfUndefined{pdfpageref}{%
+}{%
+ \ltx@ifpackageloaded{zref-abspage}{%
+ \newcount\HyAnn@Count
+ \HyAnn@Count=\ltx@zero
+ \def\HyAnn@AbsPageLabel{%
+ \global\advance\HyAnn@Count by\ltx@one
+ \zref@labelbyprops{HyAnn@\the\HyAnn@Count}{abspage}%
+ \zref@refused{HyAnn@\the\HyAnn@Count}%
+ }%
+ \def\Fld@pageobjref{%
+ \zref@ifrefundefined{HyAnn@\the\HyAnn@Count}{%
+ }{%
+ \zref@ifrefcontainsprop{HyAnn@\the\HyAnn@Count}{abspage}{%
+ /P \pdfpageref
+ \zref@extractdefault{HyAnn@\the\HyAnn@Count}{abspage}{1} %
+ \space 0 R%
+ }{%
+ }%
+ }%
+ }%
+ }{%
+ }%
+}
+\def\@TextField[#1]#2{% parameters, label
+ \def\Fld@name{#2}%
+ \let\Fld@default\ltx@empty
+ \let\Fld@value\@empty
+ \def\Fld@width{\DefaultWidthofText}%
+ \def\Fld@height{%
+ \ifFld@multiline
+ \DefaultHeightofTextMultiline
+ \else
+ \DefaultHeightofText
+ \fi
+ }%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofText,#1%
+ }%
+ \PDFForm@Name
+ \HyField@FlagsText
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \ifx\Fld@value\@empty\def\Fld@value{\Fld@default}\fi
+ \LayoutTextField{#2}{%
+ \leavevmode
+ \HyAnn@AbsPageLabel
+ \Hy@escapeform\PDFForm@Text
+ \pdfstartlink user {\PDFForm@Text}\relax
+ \MakeTextField{\Fld@width}{\Fld@height}\pdfendlink
+ \HyField@AddToFields
+ }%
+ \endgroup
+}
+\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices
+ \def\Fld@name{#2}%
+ \let\Fld@default\relax
+ \let\Fld@value\relax
+ \def\Fld@width{\DefaultWidthofChoiceMenu}%
+ \def\Fld@height{\DefaultHeightofChoiceMenu}%
+ \begingroup
+ \Fld@menulength=0 %
+ \@tempdima\z@
+ \@for\@curropt:=#3\do{%
+ \expandafter\Fld@checkequals\@curropt==\\%
+ \Hy@StepCount\Fld@menulength
+ \settowidth{\@tempdimb}{\@currDisplay}%
+ \ifdim\@tempdimb>\@tempdima\@tempdima\@tempdimb\fi
+ }%
+ \advance\@tempdima by 15\p@
+ \begingroup
+ \HyField@SetKeys{#1}%
+ \edef\x{\endgroup
+ \noexpand\expandafter
+ \noexpand\HyField@SetKeys
+ \noexpand\expandafter{%
+ \expandafter\noexpand\csname DefaultOptionsof%
+ \ifFld@radio
+ Radio%
+ \else
+ \ifFld@combo
+ \ifFld@popdown
+ PopdownBox%
+ \else
+ ComboBox%
+ \fi
+ \else
+ ListBox%
+ \fi
+ \fi
+ \endcsname
+ }%
+ }\x
+ \HyField@SetKeys{#1}%
+ \PDFForm@Name
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \ifx\Fld@value\relax
+ \let\Fld@value\Fld@default
+ \fi
+ \LayoutChoiceField{#2}{%
+ \ifFld@radio
+ \HyField@FlagsRadioButton
+ \@@Radio{#3}%
+ \else
+ \begingroup
+ \HyField@FlagsChoice
+ \ifdim\Fld@width<\@tempdima
+ \ifdim\@tempdima<1cm\@tempdima1cm\fi
+ \edef\Fld@width{\the\@tempdima}%
+ \fi
+ \ifFld@combo
+ \else
+ \@tempdima=\the\Fld@menulength\Fld@charsize
+ \advance\@tempdima by \Fld@borderwidth bp %
+ \advance\@tempdima by \Fld@borderwidth bp %
+ \edef\Fld@height{\the\@tempdima}%
+ \fi
+ \@@Listbox{#3}%
+ \endgroup
+ \fi
+ }%
+ \endgroup
+}
+\def\@@Radio#1{%
+ \Fld@listcount=0 %
+ \EdefEscapeName\Fld@default{\Fld@default}%
+ \@for\@curropt:=#1\do{%
+ \expandafter\Fld@checkequals\@curropt==\\%
+ \EdefEscapeName\@currValue{\@currValue}%
+ \Hy@StepCount\Fld@listcount
+ \@currDisplay\space
+ \leavevmode
+ \HyAnn@AbsPageLabel
+ \Hy@escapeform\PDFForm@Radio
+ \pdfstartlink user {%
+ \PDFForm@Radio
+ /AP<<%
+ /N<<%
+ /\@currValue\space \DingObject
+ >>%
+ >>%
+ }%
+ \relax
+ \MakeRadioField{\Fld@width}{\Fld@height}\pdfendlink
+ \ifnum\Fld@listcount=1 %
+ \HyField@AddToFields
+ \fi
+ \space % deliberate space between radio buttons
+ }%
+}
+\newcount\Fld@listcount
+\def\@@Listbox#1{%
+ \HyField@PDFChoices{#1}%
+ \leavevmode
+ \HyAnn@AbsPageLabel
+ \Hy@escapeform\PDFForm@List
+ \pdfstartlink user {\PDFForm@List}\relax
+ \MakeChoiceField{\Fld@width}{\Fld@height}%
+ \pdfendlink
+ \HyField@AddToFields
+}
+\def\@PushButton[#1]#2{% parameters, label
+ \def\Fld@name{#2}%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofPushButton,#1%
+ }%
+ \PDFForm@Name
+ \ifHy@pdfa
+ \Hy@Error{%
+ PDF/A: Push button with JavaScript is prohibited%
+ }\@ehc
+ \LayoutPushButtonField{%
+ \leavevmode
+ \MakeButtonField{#2}%
+ }%
+ \else
+ \HyField@FlagsPushButton
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \LayoutPushButtonField{%
+ \leavevmode
+ \HyAnn@AbsPageLabel
+ \Hy@escapeform\PDFForm@Push
+ \pdfstartlink user {\PDFForm@Push}\relax
+ \MakeButtonField{#2}%
+ \pdfendlink
+ \HyField@AddToFields
+ }%
+ \fi
+ \endgroup
+}
+\def\@Submit[#1]#2{%
+ \def\Fld@width{\DefaultWidthofSubmit}%
+ \def\Fld@height{\DefaultHeightofSubmit}%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofSubmit,#1%
+ }%
+ \HyField@FlagsPushButton
+ \HyField@FlagsSubmit
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \leavevmode
+ \HyAnn@AbsPageLabel
+ \Hy@escapeform\PDFForm@Submit
+ \pdfstartlink user {%
+ \PDFForm@Submit
+ /AP<</N \SubmitObject/D \SubmitPObject>>%
+ }%
+ \relax
+ \MakeButtonField{#2}%
+ \pdfendlink
+ \HyField@AddToFields
+ \endgroup
+}
+\def\@Reset[#1]#2{%
+ \def\Fld@width{\DefaultWidthofReset}%
+ \def\Fld@height{\DefaultHeightofReset}%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofReset,#1%
+ }%
+ \leavevmode
+ \ifHy@pdfa
+ \Hy@Error{%
+ PDF/A: Reset action is prohibited%
+ }\@ehc
+ \MakeButtonField{#2}%
+ \else
+ \HyField@FlagsPushButton
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \HyAnn@AbsPageLabel
+ \Hy@escapeform\PDFForm@Reset
+ \pdfstartlink user {\PDFForm@Reset}\relax
+ \MakeButtonField{#2}%
+ \pdfendlink
+ \HyField@AddToFields
+ \fi
+ \endgroup
+}
+\def\@CheckBox[#1]#2{% parameters, label
+ \def\Fld@name{#2}%
+ \def\Fld@default{0}%
+ \begingroup
+ \def\Fld@width{\DefaultWidthofCheckBox}%
+ \def\Fld@height{\DefaultHeightofCheckBox}%
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofCheckBox,#1%
+ }%
+ \PDFForm@Name
+ \HyField@FlagsCheckBox
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \LayoutCheckField{#2}{%
+ \leavevmode
+ \HyAnn@AbsPageLabel
+ \Hy@escapeform\PDFForm@Check
+ \pdfstartlink user {\PDFForm@Check}\relax
+ \MakeCheckField{\Fld@width}{\Fld@height}%
+ \pdfendlink
+ \HyField@AddToFields
+ }%
+ \endgroup
+}
+\def\Hy@FormObjects{%
+ \pdfobj {%
+ <<%
+ /Type/Encoding%
+ /Differences[%
+ 24/breve/caron/circumflex/dotaccent/hungarumlaut/ogonek%
+ /ring/tilde %
+ 39/quotesingle %
+ 96/grave %
+ 128/bullet/dagger/daggerdbl/ellipsis/emdash/endash/florin%
+ /fraction/guilsinglleft/guilsinglright/minus/perthousand%
+ /quotedblbase/quotedblleft/quotedblright/quoteleft%
+ /quoteright/quotesinglbase/trademark/fi/fl/Lslash/OE%
+ /Scaron/Ydieresis/Zcaron/dotlessi/lslash/oe/scaron/zcaron %
+ 164/currency %
+ 166/brokenbar %
+ 168/dieresis/copyright/ordfeminine %
+ 172/logicalnot/.notdef/registered/macron/degree/plusminus%
+ /twosuperior/threesuperior/acute/mu %
+ 183/periodcentered/cedilla/onesuperior/ordmasculine %
+ 188/onequarter/onehalf/threequarters %
+ 192/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE%
+ /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave%
+ /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute%
+ /Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave%
+ /Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls%
+ /agrave/aacute/acircumflex/atilde/adieresis/aring/ae%
+ /ccedilla/egrave/eacute/ecircumflex/edieresis/igrave%
+ /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute%
+ /ocircumflex/otilde/odieresis/divide/oslash/ugrave%
+ /uacute/ucircumflex/udieresis/yacute/thorn/ydieresis%
+ ]%
+ >>%
+ }%
+ \xdef\OBJ@pdfdocencoding{\the\pdflastobj}%
+ \pdfobj{%
+ <<%
+ /Type/Font%
+ /Subtype/Type1%
+ /Name/ZaDb%
+ /BaseFont/ZapfDingbats%
+ >>%
+ }%
+ \xdef\OBJ@ZaDb{\the\pdflastobj}%
+ \pdfobj{%
+ <<%
+ /Type/Font%
+ /Subtype/Type1%
+ /Name/Helv%
+ /BaseFont/Helvetica%
+ /Encoding \OBJ@pdfdocencoding\space 0 R%
+ >>%
+ }%
+ \xdef\OBJ@Helv{\the\pdflastobj}%
+ \global\let\Hy@FormObjects\relax
+}
+\providecommand*{\Fld@pageobjref}{}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdf@escapestring\endcsname\relax
+ \let\Hy@escapestring\@firstofone
+ \def\Hy@escapeform#1{%
+ \ifHy@pdfescapeform
+ \def\Hy@escapestring##1{%
+ \noexpand\Hy@escapestring{\noexpand##1}%
+ }%
+ \edef\Hy@temp{#1}%
+ \expandafter\Hy@@escapeform\Hy@temp\Hy@escapestring{}\@nil
+ \def\Hy@escapestring##1{%
+ \@ifundefined{Hy@esc@\string##1}{%
+ ##1%
+ \ThisShouldNotHappen
+ }{%
+ \csname Hy@esc@\string##1\endcsname
+ }%
+ }%
+ \else
+ \let\Hy@escapestring\@firstofone
+ \fi
+ }%
+ \def\Hy@@escapeform#1\Hy@escapestring#2#3\@nil{%
+ \ifx\\#3\\%
+ \else
+ \expandafter
+ \Hy@pstringdef\csname Hy@esc@\string#2\endcsname{#2}%
+ \ltx@ReturnAfterFi{%
+ \Hy@@escapeform#3\@nil
+ }%
+ \fi
+ }%
+\else
+ \def\Hy@escapeform#1{%
+ \ifHy@pdfescapeform
+ \let\Hy@escapestring\pdfescapestring
+ \else
+ \let\Hy@escapestring\@firstofone
+ \fi
+ }%
+ \Hy@escapeform{}%
+\fi
+\def\PDFForm@Name{%
+ \PDFForm@@Name\Fld@name
+ \ifx\Fld@altname\relax
+ \else
+ \PDFForm@@Name\Fld@altname
+ \fi
+ \ifx\Fld@mappingname\relax
+ \else
+ \PDFForm@@Name\Fld@mappingname
+ \fi
+}
+\def\PDFForm@@Name#1{%
+ \begingroup
+ \ifnum\Hy@pdfversion<5 % implementation note 117, PDF spec 1.7
+ \ifHy@unicode
+ \Hy@unicodefalse
+ \fi
+ \fi
+ \HyPsd@XeTeXBigCharstrue
+ \pdfstringdef\Hy@gtemp#1%
+ \endgroup
+ \let#1\Hy@gtemp
+}
+\def\Fld@@additionalactions{%
+ \ifx\Fld@keystroke@code\@empty
+ \else
+ /K<</S/JavaScript/JS(\Hy@escapestring{\Fld@keystroke@code})>>%
+ \fi
+ \ifx\Fld@format@code\@empty
+ \else
+ /F<</S/JavaScript/JS(\Hy@escapestring{\Fld@format@code})>>%
+ \fi
+ \ifx\Fld@validate@code\@empty
+ \else
+ /V<</S/JavaScript/JS(\Hy@escapestring{\Fld@validate@code})>>%
+ \fi
+ \ifx\Fld@calculate@code\@empty
+ \else
+ /C<</S/JavaScript/JS(\Hy@escapestring{\Fld@calculate@code})>>%
+ \fi
+ \ifx\Fld@onfocus@code\@empty
+ \else
+ /Fo<</S/JavaScript/JS(\Hy@escapestring{\Fld@onfocus@code})>>%
+ \fi
+ \ifx\Fld@onblur@code\@empty
+ \else
+ /Bl<</S/JavaScript/JS(\Hy@escapestring{\Fld@onblur@code})>>%
+ \fi
+ \ifx\Fld@onmousedown@code\@empty
+ \else
+ /D<</S/JavaScript/JS(\Hy@escapestring{\Fld@onmousedown@code})>>%
+ \fi
+ \ifx\Fld@onmouseup@code\@empty
+ \else
+ /U<</S/JavaScript/JS(\Hy@escapestring{\Fld@onmouseup@code})>>%
+ \fi
+ \ifx\Fld@onenter@code\@empty
+ \else
+ /E<</S/JavaScript/JS(\Hy@escapestring{\Fld@onenter@code})>>%
+ \fi
+ \ifx\Fld@onexit@code\@empty
+ \else
+ /X<</S/JavaScript/JS(\Hy@escapestring{\Fld@onexit@code})>>%
+ \fi
+}
+\def\Fld@additionalactions{%
+ \if-\Fld@@additionalactions-%
+ \else
+ \ifHy@pdfa
+ \else
+ /AA<<\Fld@@additionalactions>>%
+ \fi
+ \fi
+}
+\def\Fld@annotnames{%
+ /T(\Fld@name)%
+ \ifx\Fld@altname\relax
+ \else
+ /TU(\Fld@altname)%
+ \fi
+ \ifx\Fld@mappingname\relax
+ \else
+ /TM(\Fld@mappingname)%
+ \fi
+}
+\def\PDFForm@Check{%
+ /Subtype/Widget%
+ \Fld@annotflags
+ \Fld@pageobjref
+ \Fld@annotnames
+ /FT/Btn%
+ \Fld@flags
+ /Q \Fld@align
+ /BS<</W \Fld@borderwidth /S/\Fld@borderstyle>>%
+ /AP<< /N <</Yes<<>>>> >> %new string /Yes is from below
+ /MK<<%
+ \ifnum\Fld@rotation=\z@
+ \else
+ /R \Fld@rotation
+ \fi
+ \ifx\Fld@bordercolor\relax
+ \else
+ /BC[\Fld@bordercolor]%
+ \fi
+ \ifx\Fld@bcolor\relax
+ \else
+ /BG[\Fld@bcolor]%
+ \fi
+ /CA(\Hy@escapestring{\Fld@cbsymbol})%
+ >>%
+ /DA(/ZaDb \strip@pt\Fld@charsize\space Tf%
+ \ifx\Fld@color\@empty\else\space\Fld@color\fi)%
+ /H/P%
+ \ifFld@checked /V/Yes/AS/Yes\else /V/Off/AS/Off\fi
+ \Fld@additionalactions
+}
+\ifHy@pdfa
+\else
+ \def\PDFForm@Push{%
+ /Subtype/Widget%
+ \Fld@annotflags
+ \Fld@pageobjref
+ \Fld@annotnames
+ /FT/Btn%
+ \Fld@flags
+ /H/P%
+ /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>%
+ \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi
+ \ifx\Fld@bordercolor\relax\else 1\fi
+ \space
+ \else
+ /MK<<%
+ \ifnum\Fld@rotation=\z@
+ \else
+ /R \Fld@rotation
+ \fi
+ \ifx\Fld@bordercolor\relax
+ \else
+ /BC[\Fld@bordercolor]%
+ \fi
+ >>%
+ \fi
+ /A<</S/JavaScript/JS(\Hy@escapestring{\Fld@onclick@code})>>%
+ \Fld@additionalactions
+ }%
+\fi
+\def\PDFForm@List{%
+ /Subtype/Widget%
+ \Fld@annotflags
+ \Fld@pageobjref
+ \Fld@annotnames
+ /FT/Ch%
+ \Fld@flags
+ /Q \Fld@align
+ /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>%
+ \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi
+ \ifx\Fld@bordercolor\relax\else 1\fi
+ \ifx\fld@bcolor\relax \else 1\fi
+ \space
+ \else
+ /MK<<%
+ \ifnum\Fld@rotation=\z@
+ \else
+ /R \Fld@rotation
+ \fi
+ \ifx\Fld@bordercolor\relax
+ \else
+ /BC[\Fld@bordercolor]%
+ \fi
+ \ifx\Fld@bcolor\relax
+ \else
+ /BG[\Fld@bcolor]%
+ \fi
+ >>%
+ \fi
+ /DA(/Helv \strip@pt\Fld@charsize\space Tf%
+ \ifx\Fld@color\@empty\else\space\Fld@color\fi)%
+ \Fld@choices
+ \Fld@additionalactions
+}
+\def\PDFForm@Radio{%
+ /Subtype/Widget%
+ \Fld@annotflags
+ \Fld@pageobjref
+ \Fld@annotnames
+ /FT/Btn%
+ \Fld@flags
+ /H/P%
+ /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>%
+ /MK<<%
+ \ifnum\Fld@rotation=\z@
+ \else
+ /R \Fld@rotation
+ \fi
+ \ifx\Fld@bordercolor\relax
+ \else
+ /BC[\Fld@bordercolor]%
+ \fi
+ \ifx\Fld@bcolor\relax
+ \else
+ /BG[\Fld@bcolor]%
+ \fi
+ /CA(\Hy@escapestring{\Fld@radiosymbol})%
+ >>%
+ /DA(/ZaDb \strip@pt\Fld@charsize\space Tf%
+ \ifx\Fld@color\@empty\else\space\Fld@color\fi)%
+ \ifx\Fld@default\@empty
+ /V/Off%
+ /DV/Off%
+ \else
+ /V/\Fld@default
+ /DV/\Fld@default
+ \fi
+ \Fld@additionalactions
+}
+\def\PDFForm@Text{%
+ /Subtype/Widget%
+ \Fld@annotflags
+ \Fld@pageobjref
+ \Fld@annotnames
+ /FT/Tx%
+ \Fld@flags
+ /Q \Fld@align
+ /BS<</W \Fld@borderwidth\space /S /\Fld@borderstyle>>%
+ \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi
+ \ifx\Fld@bordercolor\relax\else 1\fi
+ \ifx\Fld@bcolor\relax \else 1\fi
+ \space
+ \else
+ /MK<<%
+ \ifnum\Fld@rotation=\z@
+ \else
+ /R \Fld@rotation
+ \fi
+ \ifx\Fld@bordercolor\relax
+ \else
+ /BC[\Fld@bordercolor]%
+ \fi
+ \ifx\Fld@bcolor\relax
+ \else
+ /BG[\Fld@bcolor]%
+ \fi
+ >>%
+ \fi
+ /DA(/Helv \strip@pt\Fld@charsize\space Tf%
+ \ifx\Fld@color\@empty\else\space\Fld@color\fi)%
+ /DV(\Hy@escapestring{\Fld@default})%
+ /V(\Hy@escapestring{\Fld@value})%
+ \Fld@additionalactions
+ \ifnum\Fld@maxlen>\z@/MaxLen \Fld@maxlen \fi
+}
+\def\PDFForm@Submit{%
+ /Subtype/Widget%
+ \Fld@annotflags
+ \Fld@pageobjref
+ \Fld@annotnames
+ /FT/Btn%
+ \Fld@flags
+ /H/P%
+ /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>%
+ \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi
+ \ifx\Fld@bordercolor\relax\else 1\fi
+ \space
+ \else
+ /MK<<%
+ \ifnum\Fld@rotation=\z@
+ \else
+ /R \Fld@rotation
+ \fi
+ \ifx\Fld@bordercolor\relax
+ \else
+ /BC[\Fld@bordercolor]%
+ \fi
+ >>%
+ \fi
+ /A<<%
+ /S/SubmitForm%
+ /F<<%
+ /FS/URL%
+ /F(\Hy@escapestring{\Form@action})%
+ >>%
+ \Fld@submitflags
+ >>%
+ \Fld@additionalactions
+}
+\ifHy@pdfa
+\else
+ \def\PDFForm@Reset{%
+ /Subtype/Widget%
+ \Fld@annotflags
+ \Fld@pageobjref
+ \Fld@annotnames
+ /FT/Btn%
+ \Fld@flags
+ /H/P%
+ /DA(/Helv \strip@pt\Fld@charsize\space Tf 0 0 1 rg)%
+ \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi
+ \ifx\Fld@bordercolor\relax\else 1\fi
+ \space
+ \else
+ /MK<<%
+ \ifnum\Fld@rotation=\z@
+ \else
+ /R \Fld@rotation
+ \fi
+ \ifx\Fld@bordercolor\relax
+ \else
+ /BC[\Fld@bordercolor]%
+ \fi
+ >>%
+ \fi
+ /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>%
+ /A<</S/ResetForm>>%
+ \Fld@additionalactions
+ }%
+\fi
+\def\Hy@writebookmark#1#2#3#4#5{%
+ % section number, text, label, level, file
+ \ifx\WriteBookmarks\relax%
+ \else
+ \ifnum#4>\Hy@bookmarksdepth\relax
+ \else
+ \@@writetorep{#1}{#2}{#3}{#4}{#5}%
+ \fi
+ \fi
+}
+\def\Hy@currentbookmarklevel{0}
+\def\Hy@numberline#1{#1 }
+\def\@@writetorep#1#2#3#4#5{%
+ \begingroup
+ \edef\Hy@tempa{#5}%
+ \ifx\Hy@tempa\Hy@bookmarkstype
+ \edef\Hy@level{#4}%
+ \ifx\Hy@levelcheck Y%
+ \@tempcnta\Hy@level\relax
+ \advance\@tempcnta by -1 %
+ \ifnum\Hy@currentbookmarklevel<\@tempcnta
+ \advance\@tempcnta by -\Hy@currentbookmarklevel\relax
+ \advance\@tempcnta by 1 %
+ \Hy@Warning{%
+ Difference (\the\@tempcnta) between bookmark levels is %
+ greater \MessageBreak than one, level fixed%
+ }%
+ \@tempcnta\Hy@currentbookmarklevel
+ \advance\@tempcnta by 1 %
+ \edef\Hy@level{\the\@tempcnta}%
+ \fi
+ \else
+ \global\let\Hy@levelcheck Y%
+ \fi
+ \global\let\Hy@currentbookmarklevel\Hy@level
+ \@tempcnta\Hy@level\relax
+ \expandafter\xdef\csname Parent\Hy@level\endcsname{#3}%
+ \advance\@tempcnta by -1 %
+ \edef\Hy@tempa{#3}%
+ \edef\Hy@tempb{\csname Parent\the\@tempcnta\endcsname}%
+ \ifx\Hy@tempa\Hy@tempb
+ \Hy@Warning{%
+ The anchor of a bookmark and its parent's must not%
+ \MessageBreak be the same. Added a new anchor%
+ }%
+ \phantomsection
+ \fi
+ \ifHy@bookmarksnumbered
+ \let\numberline\Hy@numberline
+ \let\booknumberline\Hy@numberline
+ \let\partnumberline\Hy@numberline
+ \let\chapternumberline\Hy@numberline
+ \else
+ \let\numberline\@gobble
+ \let\booknumberline\@gobble
+ \let\partnumberline\@gobble
+ \let\chapternumberline\@gobble
+ \fi
+ \HyPsd@XeTeXBigCharstrue
+ \pdfstringdef\Hy@tempa{#2}%
+ \HyPsd@SanitizeForOutFile\Hy@tempa
+ \if@filesw
+ \stepcounter{bookmark@seq@number}%
+ \@ifundefined{@outlinefile}{%
+ }{%
+ \protected@write\@outlinefile{}{%
+ \protect\BOOKMARK
+ [\Hy@level][\@bookmarkopenstatus{\Hy@level}]{#3}%
+ {\Hy@tempa}{\Hy@tempb}%
+ \@percentchar\space\thebookmark@seq@number
+ }%
+ }%
+ \fi
+ \fi
+ \endgroup
+}
+\newcounter{bookmark@seq@number}
+\begingroup
+ \lccode`(=`{%
+ \lccode`)=`}%
+ \lccode`1=\z@
+ \lccode`2=\z@
+ \lccode`3=\z@
+ \lccode`5=\z@
+ \lccode`7=\z@
+ \lccode`\#=\z@
+ \lccode`\`=\z@
+ \lccode`\{=\z@
+ \lccode`\}=\z@
+\lowercase{%
+ \endgroup
+ \def\HyPsd@SanitizeForOutFile#1{%
+ \@onelevel@sanitize\Hy@tempa
+ \escapechar`\\%
+ \edef\Hy@tempa{%
+ \expandafter\HyPsd@SanitizeOut@BraceLeft\Hy@tempa(\@nil
+ }%
+ \edef\Hy@tempa{%
+ \expandafter\HyPsd@SanitizeOut@BraceRight\Hy@tempa)\@nil
+ }%
+ }%
+ \def\HyPsd@SanitizeOut@BraceLeft#1(#2\@nil{%
+ #1%
+ \ifx\\#2\\%
+ \expandafter\ltx@gobble
+ \else
+ \expandafter\ltx@firstofone
+ \fi
+ {%
+ \string\173%
+ \HyPsd@SanitizeOut@BraceLeft#2\@nil
+ }%
+ }%
+ \def\HyPsd@SanitizeOut@BraceRight#1)#2\@nil{%
+ #1%
+ \ifx\\#2\\%
+ \expandafter\ltx@gobble
+ \else
+ \expandafter\ltx@firstofone
+ \fi
+ {%
+ \string\175%
+ \HyPsd@SanitizeOut@BraceRight#2\@nil
+ }%
+ }%
+}
+\newcommand{\currentpdfbookmark}{%
+ \pdfbookmark[\Hy@currentbookmarklevel]%
+}
+\newcommand{\subpdfbookmark}{%
+ \@tempcnta\Hy@currentbookmarklevel
+ \Hy@StepCount\@tempcnta
+ \expandafter\pdfbookmark\expandafter[\the\@tempcnta]%
+}
+\newcommand{\belowpdfbookmark}[2]{%
+ \@tempcnta\Hy@currentbookmarklevel
+ \Hy@StepCount\@tempcnta
+ \expandafter\pdfbookmark\expandafter[\the\@tempcnta]{#1}{#2}%
+ \advance\@tempcnta by -1 %
+ \xdef\Hy@currentbookmarklevel{\the\@tempcnta}%
+}
+\renewcommand\pdfbookmark[3][0]{%
+ \Hy@writebookmark{}{#2}{#3.#1}{#1}{toc}%
+ \hyper@anchorstart{#3.#1}\hyper@anchorend
+}
+\def\BOOKMARK{%
+ \@ifnextchar[{\@BOOKMARK}{\@@BOOKMARK[1][-]}%
+}
+\def\@BOOKMARK[#1]{%
+ \@ifnextchar[{\@@BOOKMARK[{#1}]}{\@@BOOKMARK[{#1}][-]}%
+}
+\RequirePackage{rerunfilecheck}[2009/12/10]
+\def\Hy@OutlineRerunCheck{%
+ \RerunFileCheck{\jobname.out}{%
+ \immediate\closeout\@outlinefile
+ }{%
+ Rerun to get outlines right\MessageBreak
+ or use package `bookmark'%
+ }%
+}
+\def\ReadBookmarks{%
+ \pdf@ifdraftmode{}{%
+ \begingroup
+ \def\do##1{%
+ \ifnum\catcode`##1=\active
+ \@makeother##1%
+ \else
+ \ifnum\catcode`##1=6 %
+ \@makeother##1%
+ \fi
+ \fi
+ }%
+ \dospecials
+ \Hy@safe@activestrue
+ \escapechar=`\\%
+ \def\@@BOOKMARK[##1][##2]##3##4##5{%
+ \calc@bm@number{##5}%
+ }%
+ \InputIfFileExists{\jobname.out}{}{}%
+ \ifx\WriteBookmarks\relax
+ \global\let\WriteBookmarks\relax
+ \fi
+ \def\@@BOOKMARK[##1][##2]##3##4##5{%
+ \def\Hy@temp{##4}%
+ \Hy@pstringdef\Hy@pstringName{\HyperDestNameFilter{##3}}%
+ \Hy@OutlineName{}\Hy@pstringName{%
+ ##2\check@bm@number{##3}%
+ }{%
+ \expandafter\strip@prefix\meaning\Hy@temp
+ }%
+ }%
+ \begingroup
+ \def\WriteBookmarks{0}%
+ \InputIfFileExists{\jobname.out}{}{}%
+ \endgroup
+ %{\escapechar\m@ne\InputIfFileExists{\jobname.out}{}{}}%
+ \endgroup
+ }%
+ \ifx\WriteBookmarks\relax
+ \else
+ \if@filesw
+ \newwrite\@outlinefile
+ \Hy@OutlineRerunCheck
+ \immediate\openout\@outlinefile=\jobname.out\relax
+ \ifHy@typexml
+ \immediate\write\@outlinefile{<relaxxml>\relax}%
+ \fi
+ \fi
+ \fi
+}
+\def\Hy@OutlineName#1#2#3#4{%
+ \pdfextension outline goto name{#2}count#3{#4}%
+}
+\def\check@bm@number#1{%
+ \expandafter\ifx\csname B_#1\endcsname\relax
+ 0%
+ \else
+ \csname B_#1\endcsname
+ \fi
+}
+\def\calc@bm@number#1{%
+ \@tempcnta=\check@bm@number{#1}\relax
+ \advance\@tempcnta by 1 %
+ \expandafter\xdef\csname B_#1\endcsname{\the\@tempcnta}%
+}
+\ifHy@implicit
+\else
+ \expandafter\endinput
+\fi
+\newlength\Hy@SectionHShift
+\def\Hy@SectionAnchorHref#1{%
+ \ifx\protect\@typeset@protect
+ \Hy@@SectionAnchor{#1}%
+ \fi
+}
+\DeclareRobustCommand*{\Hy@@SectionAnchor}[1]{%
+ \leavevmode
+ \hbox to 0pt{%
+ \kern-\Hy@SectionHShift
+ \Hy@raisedlink{%
+ \hyper@anchorstart{#1}\hyper@anchorend
+ }%
+ \hss
+ }%
+}
+\let\H@old@ssect\@ssect
+\def\@ssect#1#2#3#4#5{%
+ \Hy@MakeCurrentHrefAuto{section*}%
+ \setlength{\Hy@SectionHShift}{#1}%
+ \begingroup
+ \toks@{\H@old@ssect{#1}{#2}{#3}{#4}}%
+ \toks\tw@\expandafter{%
+ \expandafter\Hy@SectionAnchorHref\expandafter{\@currentHref}%
+ #5%
+ }%
+ \edef\x{\endgroup
+ \the\toks@{\the\toks\tw@}%
+ }\x
+}
+\let\H@old@schapter\@schapter
+\def\@schapter#1{%
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \Hy@MakeCurrentHrefAuto{\Hy@chapapp*}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ \endgroup
+ \H@old@schapter{#1}%
+}
+\ltx@IfUndefined{@chapter}{}{%
+ \let\Hy@org@chapter\@chapter
+ \def\@chapter{%
+ \def\Hy@next{%
+ \Hy@MakeCurrentHrefAuto{\Hy@chapapp*}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ }%
+ \ifnum\c@secnumdepth>\m@ne
+ \ltx@IfUndefined{if@mainmatter}%
+ \iftrue{\csname if@mainmatter\endcsname}%
+ \let\Hy@next\relax
+ \fi
+ \fi
+ \Hy@next
+ \Hy@org@chapter
+ }%
+}
+\let\H@old@part\@part
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname chapter\endcsname\relax
+ \let\Hy@secnum@part\z@
+\else
+ \let\Hy@secnum@part\m@ne
+\fi
+\def\@part{%
+ \ifnum\Hy@secnum@part>\c@secnumdepth
+ \phantomsection
+ \fi
+ \H@old@part
+}
+\let\H@old@spart\@spart
+\def\@spart#1{%
+ \Hy@MakeCurrentHrefAuto{part*}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ \H@old@spart{#1}%
+}
+\let\H@old@sect\@sect
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {%
+ \Hy@MakeCurrentHrefAuto{section*}%
+ \setlength{\Hy@SectionHShift}{#3}%
+ \begingroup
+ \toks@{\H@old@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]}%
+ \toks\tw@\expandafter{%
+ \expandafter\Hy@SectionAnchorHref\expandafter{\@currentHref}%
+ #8%
+ }%
+ \edef\x{\endgroup
+ \the\toks@{\the\toks\tw@}%
+ }\x
+ }{%
+ \H@old@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}%
+ }%
+}
+\expandafter\def\csname Parent-4\endcsname{}
+\expandafter\def\csname Parent-3\endcsname{}
+\expandafter\def\csname Parent-2\endcsname{}
+\expandafter\def\csname Parent-1\endcsname{}
+\expandafter\def\csname Parent0\endcsname{}
+\expandafter\def\csname Parent1\endcsname{}
+\expandafter\def\csname Parent2\endcsname{}
+\expandafter\def\csname Parent3\endcsname{}
+\expandafter\def\csname Parent4\endcsname{}
+\def\Hy@tempa{%
+ \def\@addchap[##1]##2{%
+ \typeout{##2}%
+ \if@twoside
+ \@mkboth{##1}{}%
+ \else
+ \@mkboth{}{##1}%
+ \fi
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \Hy@MakeCurrentHrefAuto{\Hy@chapapp*}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ \if@twocolumn
+ \@topnewpage[\@makeschapterhead{##2}]%
+ \else
+ \@makeschapterhead{##2}%
+ \@afterheading
+ \fi
+ \addcontentsline{toc}{chapter}{##1}%
+ }%
+}
+\@ifclassloaded{scrbook}{%
+ \@ifclasslater{scrbook}{2001/01/01}{%
+ \let\Hy@tempa\@empty
+ }{}%
+}{%
+ \@ifclassloaded{scrreprt}{%
+ \@ifclasslater{scrreprt}{2001/01/01}{%
+ \let\Hy@tempa\@empty
+ }{}%
+ }{%
+ \let\Hy@tempa\@empty
+ }%
+}%
+\Hy@tempa
+%%
+%% End of file `hluatex.def'.
+%</luatex>
+% \end{macrocode}
+\endinput
+%
diff --git a/macros/latex/contrib/hyperref/hylatex.ltx b/macros/latex/contrib/hyperref/hylatex.ltx
new file mode 100644
index 0000000000..7eb223db30
--- /dev/null
+++ b/macros/latex/contrib/hyperref/hylatex.ltx
@@ -0,0 +1,43 @@
+%
+% hylatex.ltx
+% Tanmoy Bhattacharya and Sebastian Rahtz, June 1995
+%
+% Use this file to make a format which includes the
+% hyperref package in every LaTeX job.
+%
+% In web2c 7-based TeX world, we create the format file with
+% tex -ini \&latex hylatex.ltx
+% and then use with
+% tex \&hylatex
+%
+% In teTeX (TeX version 3.14159 (C version 6.1), LaTeX2e <1996/12/01>
+% patch level 1), I create the format file with
+% initex \&latex hylatex.ltx
+% and then use with
+% virtex \&hylatex
+%
+% This method is not supported by the LaTeX2e team, so
+% I will try to find a better way. \AtBeginDocument does not
+% work for reasons which I do not understand.
+%
+\makeatletter
+\expandafter\everyjob\expandafter{\the\everyjob
+ \typeout{ ********* Hyperref Macros loaded ******* }}
+%
+\expandafter\let\csname REAL document\endcsname\document
+%
+\def\document{%
+ \endgroup
+%
+% NOTE:
+% This setup sets up no options by default;
+% change to suit your needs, by writing a hyperref.cfg control
+% file.
+%
+ \RequirePackage{hyperref}
+ \begingroup
+ \@endpefalse\csname REAL document\endcsname
+}
+\makeatother
+\dump
+
diff --git a/macros/latex/contrib/hyperref/hyperref.dtx b/macros/latex/contrib/hyperref/hyperref.dtx
new file mode 100644
index 0000000000..ec3f7c3e2e
--- /dev/null
+++ b/macros/latex/contrib/hyperref/hyperref.dtx
@@ -0,0 +1,27659 @@
+% \iffalse
+%% File: hyperref.dtx Copyright 1995-2001 Sebastian Rahtz,
+%% with portions written by David Carlisle and Heiko Oberdiek,
+%% 2001-2012 Heiko Oberdiek.
+%% 2016-2018 Oberdiek Package Suport Group
+%% https://github.com/ho-tex/hyperref/issues
+%%
+%% This file is part of the `Hyperref Bundle'.
+%% -------------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% The list of all files belonging to the `Hyperref Bundle' is
+%% given in the file `manifest.txt'.
+%%
+%<package|nohyperref|driver|check>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+%<package>\ProvidesPackage{hyperref}
+%<nohyperref>\ProvidesPackage{nohyperref}
+%<driver>\ProvidesFile{hyperref.drv}
+%<check>\ProvidesFile{hycheck.tex}
+%<hypertex>\ProvidesFile{hypertex.def}
+%<pdftex>\ProvidesFile{hpdftex.def}
+%<luatex>\ProvidesFile{hluatex.def}
+%<pdfmark>\ProvidesFile{pdfmark.def}
+%<vtexpdfmark>\ProvidesFile{hvtexmrk.def}
+%<dvips>\ProvidesFile{hdvips.def}
+%<dvipsone>\ProvidesFile{hdvipson.def}
+%<textures>\ProvidesFile{htexture.def}
+%<dviwindo>\ProvidesFile{hdviwind.def}
+%<dvipdfm>\ProvidesFile{hdvipdfm.def}
+%<xetex>\ProvidesFile{hxetex.def}
+%<vtex>\ProvidesFile{hvtex.def}
+%<vtexhtml>\ProvidesFile{hvtexhtml.def}
+%<tex4ht>\ProvidesFile{htex4ht.def}
+%<tex4htcfg>\ProvidesFile{htex4ht.cfg}
+%<pd1enc>\ProvidesFile{pd1enc.def}
+%<puenc>\ProvidesFile{puenc.def}
+%<puvnenc>\ProvidesFile{puvnenc.def}
+%<puarenc>\ProvidesFile{puarenc.def}
+%<psdextra>\ProvidesFile{psdextra.def}
+%<!none> [2019/06/12 v6.88h %
+%<package> Hypertext links for LaTeX]
+%<nohyperref> Dummy hyperref (SR)]
+%<driver> Hyperref documentation driver file]
+%<check> Hyperref test file]
+%<hypertex> Hyperref driver for HyperTeX specials]
+%<hypertex>\Hy@VersionCheck{hypertex.def}
+%<pdftex> Hyperref driver for pdfTeX]
+%<pdftex>\Hy@VersionCheck{hpdftex.def}
+%<luatex> Hyperref driver for luaTeX]
+%<luatex>\Hy@VersionCheck{hluatex.def}
+%<pdfmark> Hyperref definitions for pdfmark specials]
+%<pdfmark>\Hy@VersionCheck{pdfmark.def}
+%<vtexpdfmark> Hyperref driver for VTeX in PDF/PS mode (pdfmark specials)]
+%<vtexpdfmark>\Hy@VersionCheck{hvtexmrk.def}
+%<dvips> Hyperref driver for dvips]
+%<dvips>\Hy@VersionCheck{hdvips.def}
+%<dvipsone> Hyperref driver for dvipsone]
+%<dvipsone>\Hy@VersionCheck{hdvipson.def}
+%<textures> Hyperref driver for Textures]
+%<textures>\Hy@VersionCheck{htexture.def}
+%<dviwindo> Hyperref driver for dviwindo]
+%<dviwindo>\Hy@VersionCheck{hdviwind.def}
+%<dvipdfm> Hyperref driver for dvipdfm]
+%<dvipdfm>\Hy@VersionCheck{hdvipdfm.def}
+%<xetex> Hyperref driver for XeTeX]
+%<xetex>\Hy@VersionCheck{hxetex.def}
+%<vtex> Hyperref driver for VTeX in PDF/PS mode]
+%<vtex>\Hy@VersionCheck{hvtex.def}
+%<vtexhtml> Hyperref driver for VTeX in HTML mode]
+%<vtexhtml>\Hy@VersionCheck{hvtexhtm.def}
+%<tex4ht> Hyperref driver for TeX4ht]
+%<tex4ht>\Hy@VersionCheck{htex4ht.def}
+%<tex4htcfg> Hyperref configuration file for TeX4ht]
+%<pd1enc> Hyperref: PDFDocEncoding definition (HO)]
+%<puenc> Hyperref: PDF Unicode definition (HO)]
+%<puvnenc> Hyperref: Additions to puenc.def for VnTeX]
+%<puarenc> Hyperref: Additions to puenc.def for Arabi]
+%<psdextra> Hyperref: Additions to PDF string support]
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{array}
+\usepackage{ifluatex,ifxetex}
+\ifnum 0\ifluatex 1\else\ifxetex 1\fi\fi=0 %
+ \usepackage[T1]{fontenc}%
+ \renewcommand*{\ttdefault}{lmvtt}%
+\else
+ \usepackage{fontspec}%
+ \renewcommand*{\ttdefault}{lmvtt}%
+\fi
+\usepackage[%
+ colorlinks,%
+ hyperindex=false,% done by hypdoc
+ pdfusetitle,%
+ pdfpagelabels%
+]{hyperref}
+\usepackage[numbered]{hypdoc}
+\usepackage{bmhydoc}
+\pdfstringdefDisableCommands{%
+ \let\\\textbackslash
+}%
+\EnableCrossrefs
+\CodelineIndex
+\setlength{\hfuzz}{2pt}
+\begin{document}
+ %
+ % title
+ %
+ \GetFileInfo{hyperref.sty}%
+ \title{Hypertext marks in \LaTeX}%
+ \author{Sebastian Rahtz (deceased)\\%
+ Heiko Oberdiek (maintainer)\\%
+ \texttt{https://github.com/ho-tex/hyperref/issues}}%
+ % \date{processed \today}%
+ \date{\filedate\space\fileversion}%
+ \maketitle
+ %
+ % overview
+ %
+ \makeatletter
+ \@ifundefined{HyperrefOverview}{}{%
+ \HyperrefOverview\relax
+ \newpage
+ }%
+ %
+ % table of contents
+ %
+ \section{\contentsname}%
+ \makeatletter
+ \@starttoc{toc}%
+ \newpage
+ %
+ % source code documentation
+ %
+ \let\Email\nolinkurl
+ \DocInput{hyperref.dtx}%
+ %
+ % index
+ %
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \MakeShortVerb{|}
+% \StopEventually{}
+%
+% \DoNotIndex{\def,\edef,\gdef,\xdef,\global,\long,\let}
+% \DoNotIndex{\expandafter,\string,\the,\ifx,\else,\fi}
+% \DoNotIndex{\csname,\endcsname,\relax,\begingroup,\endgroup}
+% \DoNotIndex{\DeclareTextCommand,\DeclareTextCompositeCommand}
+% \DoNotIndex{\space,\@empty,\special}
+% \DoNotIndex{\\,\0,\1,\2,\8}
+% \makeatletter
+% \let\SavedTheIndex\theindex
+% \def\theindex{^^A
+% \clearpage
+% \addtolength{\textwidth}{\marginparwidth}^^A
+% \addtolength{\textwidth}{\marginparsep}^^A
+% \setlength{\linewidth}{\textwidth}^^A
+% \setlength{\hsize}{\textwidth}^^A
+% \setlength{\oddsidemargin}{\paperwidth}^^A
+% \addtolength{\oddsidemargin}{-\textwidth}^^A
+% \setlength{\oddsidemargin}{.5\oddsidemargin}^^A
+% \addtolength{\oddsidemargin}{-1in}^^A
+% \setlength{\evensidemargin}{\oddsidemargin}^^A
+% \SavedTheIndex
+% }
+% \g@addto@macro\theindex{^^A
+% \parfillskip=0pt plus 1fil
+% }
+% \makeatother
+%
+% \providecommand*{\eTeX}{\mbox{$\varepsilon$-\TeX}}
+%
+% \section{File hycheck.tex}
+%
+% Many commands of \LaTeX\ or other packages cannot be
+% overloaded, but have to be redefined by hyperref directly.
+% If these commands change in newer versions, these
+% changes are not noticed by hyperref.
+% With this test file this situation can be checked.
+% It defines the command \cmd{\checkcommand} that
+% is more powerful than \LaTeX's \cmd{\CheckCommand},
+% because it takes \cmd{\DeclareRobustCommand} and
+% optional parameters better into account.
+%
+% \begin{macrocode}
+%<*check>
+\documentclass{article}
+\makeatletter
+% \end{macrocode}
+%
+% \begin{macro}{\checklatex}
+% Optional argument: release date of \LaTeX.
+% \begin{macrocode}
+\newcommand*{\checklatex}[1][]{%
+ \typeout{}%
+ \typeout{* Format: `LaTeX2e' #1}%
+ \typeout{\space\space Loaded: `\fmtname' \fmtversion}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\checkpackage}
+% The argument of \cmd{\checkpackage} is the package name
+% without extension optionally followed by a release date.
+% \begin{macrocode}
+\newcommand*{\checkpackage}[1]{%
+ \def\HyC@package{#1}%
+ \let\HyC@date\@empty
+ \@ifnextchar[\HyC@getDate\HyC@checkPackage
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyC@getDate}
+% The release date is scanned.
+% \begin{macrocode}
+\def\HyC@getDate[#1]{%
+ \def\HyC@date{#1}%
+ \HyC@checkPackage
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyC@checkPackage}
+% \begin{macrocode}
+\def\HyC@checkPackage{%
+ \typeout{}%
+ \begingroup
+ \edef\x{\endgroup
+ \noexpand\RequirePackage{\HyC@package}%
+ \ifx\HyC@date\@empty\relax\else[\HyC@date]\fi%
+ }%
+ \x
+ \typeout{}%
+ \typeout{%
+ * Package `\HyC@package'%
+ \ifx\HyC@date\@empty
+ \else
+ \space\HyC@date
+ \fi
+ }%
+ \@ifundefined{ver@\HyC@package.sty}{%
+ }{%
+ \typeout{%
+ \space\space Loaded: `\HyC@package' %
+ \csname ver@\HyC@package.sty\endcsname
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\checkcommand}
+% The macro \cmd{\checkcommand} parses the next
+% tokens as a \LaTeX\ definition and compares
+% this definition with the current meaning of
+% that command.
+% \begin{macrocode}
+\newcommand*{\checkcommand}[1]{%
+ \begingroup
+ \ifx\long#1\relax
+ \expandafter\HyC@checklong
+ \else
+ \def\HyC@defcmd{#1}%
+ \expandafter\let\expandafter\HyC@next
+ \csname HyC@\expandafter\@gobble\string#1\endcsname
+ \expandafter\HyC@checkcommand
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyC@checklong}
+% The definition command \cmd{\def} or \cmd{\edef}
+% is read.
+% \begin{macrocode}
+\def\HyC@checklong#1{%
+ \def\HyC@defcmd{\long#1}%
+ \expandafter\let\expandafter\HyC@next
+ \csname HyC@\expandafter\@gobble\string#1\endcsname
+ \HyC@checkcommand
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyC@checkcommand}
+% The optional star of \LaTeX's definitions is parsed.
+% \begin{macrocode}
+\def\HyC@checkcommand{%
+ \ifx\HyC@next\relax
+ \PackageError{hycheck}{%
+ Unknown command `\expandafter\strip@prefix\meaning\HyC@cmd'%
+ }\@ehd
+ \expandafter\endinput
+ \fi
+ \@ifstar{%
+ \def\HyC@star{*}%
+ \HyC@check
+ }{%
+ \let\HyC@star\@empty
+ \HyC@check
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyC@check}
+% The macro \cmd{\HyC@check} reads the
+% definition command.
+% \begin{macrocode}
+\def\HyC@check#1{%
+ \def\HyC@cmd{#1}%
+ \let\HyC@org@cmd#1%
+ \let#1\relax
+ \let\HyC@param\@empty
+ \HyC@Toks{}%
+ \let\HyC@org@optcmd\HyC@noValue
+ \let\HyC@org@robustcmd\HyC@noValue
+ \let\HyC@org@robustoptcmd\HyC@noValue
+ \HyC@next
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyC@noValue}
+% \begin{macrocode}
+\def\HyC@noValue{NoValue}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyC@newcommand}
+% The code for \cmd{\newcommand}.
+% \begin{macrocode}
+\def\HyC@newcommand{%
+ \let\HyC@@cmd\HyC@cmd
+ \@ifnextchar[\HyC@nc@opt\HyC@nc@noopt
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyC@Toks}
+% A register for storing the default value of an
+% optional argument.
+% \begin{macrocode}
+\newtoks\HyC@Toks
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyC@nc@noopt}
+% This macro \cmd{\HyC@nc@noopt} is called, if the
+% parser has reached the definition text.
+% \begin{macrocode}
+\long\def\HyC@nc@noopt#1{%
+ \edef\x{%
+ \expandafter\noexpand\HyC@defcmd
+ \HyC@star
+ \expandafter\noexpand\HyC@cmd
+ \HyC@param\the\HyC@Toks
+ }%
+ \x{#1}%
+ \HyC@doCheck
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyC@nc@opt}
+% This macro scans the first optional argument
+% of a \LaTeX\ definition (number of arguments).
+% \begin{macrocode}
+\def\HyC@nc@opt[#1]{%
+ \def\HyC@param{[{#1}]}%
+ \@ifnextchar[\HyC@nc@default\HyC@nc@noopt
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyC@nc@default}
+% Macro \cmd{\HyC@nc@default} scans the
+% default for an optional argument.
+% \begin{macrocode}
+\def\HyC@nc@default[#1]{%
+ \HyC@Toks={[{#1}]}%
+ \edef\HyC@optcmd{%
+ \expandafter\noexpand
+ \csname\expandafter\string\HyC@@cmd\endcsname
+ }%
+ \expandafter\let\expandafter\HyC@org@optcmd\HyC@optcmd
+ \HyC@nc@noopt
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyC@DeclareRobustCommand}
+% \cmd{\DeclareRobustCommand}|{\cmd}| makes the command
+% \cmd{\cmd} robust, that then calls |\cmd|\verb*| |
+% with an space at the end of the command name, defined by
+% \cmd{\newcommand}. Therefore the further parsing
+% is done by \cmd{\HyC@nc@opt} or \cmd{\Hy@nc@noopt}
+% of the \cmd{\HyC@newcommand} chain.
+% \begin{macrocode}
+\def\HyC@DeclareRobustCommand{%
+ \edef\HyC@robustcmd{%
+ \expandafter\noexpand
+ \csname\expandafter\expandafter\expandafter\@gobble
+ \expandafter\string\HyC@cmd\space\endcsname
+ }%
+ \expandafter\let\expandafter\HyC@org@robustcmd\HyC@robustcmd
+ \expandafter\let\HyC@robustcmd\relax
+ \let\HyC@@cmd\HyC@robustcmd
+ \@ifnextchar[\HyC@nc@opt\HyC@nc@noopt
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyC@def}
+% \begin{macro}{\HyC@edef}
+% The parameter text of \cmd{\def} or \cmd{\edef} is
+% stored in the token register \cmd{\HyC@Toks}.
+% \begin{macrocode}
+\def\HyC@def#1#{%
+ \HyC@Toks={#1}%
+ \HyC@nc@noopt
+}
+\let\HyC@edef\HyC@def
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\HyC@doCheck}
+% This command performs the checks and prints the result.
+% \begin{macrocode}
+\def\HyC@doCheck{%
+ \typeout{* Checking `\HyC@string\HyC@cmd':}%
+ \HyC@checkItem{cmd}%
+ \HyC@checkItem{robustcmd}%
+ \HyC@checkItem{optcmd}%
+ \HyC@checkItem{robustoptcmd}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyC@checkItem}
+% A single check.
+% \begin{macrocode}
+\def\HyC@checkItem#1{%
+ \expandafter\ifx\csname HyC@org@#1\endcsname\HyC@noValue
+ \else
+ \expandafter\expandafter\expandafter\ifx
+ \csname HyC@#1\expandafter\endcsname
+ \csname HyC@org@#1\endcsname
+ \expandafter\HyC@checkOk\csname HyC@#1\endcsname
+ \else
+ \expandafter\HyC@checkFailed
+ \csname HyC@#1\expandafter\endcsname
+ \csname HyC@org@#1\endcsname
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyC@string}
+% \begin{macro}{\HyC@meaning}
+% Some shorthands.
+% \begin{macrocode}
+\def\HyC@string#1{\expandafter\string#1}
+\def\HyC@meaning#1{\expandafter\meaning#1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\HyC@checkOk}
+% The result, if the check succeeds.
+% \begin{macrocode}
+\def\HyC@checkOk#1{%
+ \typeout{\space\space`\HyC@string#1' ok.}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyC@checkFailed}
+% The result, if the check fails.
+% \begin{macrocode}
+\def\HyC@checkFailed#1#2{%
+ \typeout{\space\space`\HyC@string#1' failed.}%
+ \typeout{\space\space* original: \meaning#2}%
+ \typeout{\space\space* expected: \HyC@meaning#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+% **************************************************
+%</check>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+% \section{Package options and setup}\label{options}
+%
+%
+% \subsection{Save catcodes}
+% There are many packages that change the standard catcodes.
+%
+% First we save the original meaning of |`| and |=|
+% in the token register |\toks@|, because we need the two
+% characters in the macros \cmd{\Hy@SetCatcodes} and
+% \cmd{\Hy@RestoreCatcodes}.
+% \begin{macrocode}
+\begingroup
+ \@makeother\`%
+ \@makeother\=%
+ \edef\x{%
+ \edef\noexpand\x{%
+ \endgroup
+ \noexpand\toks@{%
+ \catcode 96=\noexpand\the\catcode`\noexpand\`\relax
+ \catcode 61=\noexpand\the\catcode`\noexpand\=\relax
+ }%
+ }%
+ \noexpand\x
+ }%
+\x
+\@makeother\`
+\@makeother\=
+% \end{macrocode}
+% \begin{macro}{\Hy@SetCatcodes}
+% \begin{macrocode}
+\def\Hy@SetCatcodes{%
+ \@makeother\`%
+ \@makeother\=%
+ \catcode`\$=3 %
+ \catcode`\&=4 %
+ \catcode`\^=7 %
+ \catcode`\_=8 %
+ \@makeother\|%
+ \@makeother\:%
+ \@makeother\(%
+ \@makeother\)%
+ \@makeother\[%
+ \@makeother\]%
+ \@makeother\/%
+ \@makeother\!%
+ \@makeother\<%
+ \@makeother\>%
+ \@makeother\.%
+ \@makeother\;%
+ \@makeother\+%
+ \@makeother\-%
+ \@makeother\"%
+ \@makeother\'%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@RestoreCatcodes}
+% \begin{macrocode}
+\begingroup
+ \def\x#1{\catcode`\noexpand#1=\the\catcode`#1\relax}%
+ \xdef\Hy@RestoreCatcodes{%
+ \the\toks@
+ \x\$%
+ \x\&%
+ \x\^%
+ \x\_%
+ \x\|%
+ \x\:%
+ \x\(%
+ \x\)%
+ \x\[%
+ \x\]%
+ \x\/%
+ \x\!%
+ \x\<%
+ \x\>%
+ \x\.%
+ \x\;%
+ \x\+%
+ \x\-%
+ \x\"%
+ \x\'%
+ }%
+\endgroup
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\Hy@SetCatcodes
+% \end{macrocode}
+%
+% It needs the December 95 release of \LaTeX, because it uses
+% |\protected@write|, and it defines commands in options; and the page
+% setup internal code changed at that point. It'll probably break
+% with the later releases!
+%
+% Use package |hobsub-hyperref| for faster package loading.
+% \begin{macrocode}
+\IfFileExists{hobsub-hyperref.sty}{%
+ \RequirePackage{hobsub-hyperref}[2011/01/30]%
+}{}
+% \end{macrocode}
+% \begin{macrocode}
+\RequirePackage{ltxcmds}[2010/11/12]
+\RequirePackage{ifpdf}[2006/02/20]
+\RequirePackage{pdftexcmds}[2009/04/10]
+\@ifpackagelater{pdftexcmds}{2010/11/04}{}{%
+ \ltx@IfUndefined{pdfdraftmode}{%
+ \let\pdf@ifdraftmode\ltx@secondoftwo
+ }{%
+ \ifpdf
+ \def\pdf@ifdraftmode{%
+ \ifnum\pdfdraftmode=\ltx@one
+ \expandafter\ltx@firstoftwo
+ \else
+ \expandafter\ltx@secondoftwo
+ \fi
+ }%
+ \else
+ \let\pdf@ifdraftmode\ltx@secondoftwo
+ \fi
+ }%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\RequirePackage{infwarerr}[2010/04/08]
+\RequirePackage{keyval}[1997/11/10]
+\RequirePackage{kvsetkeys}[2007/09/29]
+\RequirePackage{kvdefinekeys}[2011/04/07]
+\RequirePackage{pdfescape}[2007/11/11]
+\RequirePackage{ifvtex}
+\RequirePackage{ifxetex}[2006/08/21]
+\RequirePackage{hycolor}
+\RequirePackage{letltxmacro}[2008/06/13]
+\RequirePackage{auxhook}[2009/12/14]
+\def\Hy@Error{\@PackageError{hyperref}}
+\def\Hy@Warning{\@PackageWarning{hyperref}}
+\def\Hy@WarningNoLine{\@PackageWarningNoLine{hyperref}}
+\def\Hy@Info{\@PackageInfo{hyperref}}
+\def\Hy@InfoNoLine{\@PackageInfoNoLine{hyperref}}
+\def\Hy@Message#1{%
+ \GenericWarning{%
+ (hyperref)\@spaces\@spaces\@spaces\@spaces
+ }{%
+ Package hyperref Message: #1\ltx@gobble
+ }%
+}
+% \end{macrocode}
+%
+% \subsection{Version check}
+%
+% \begin{macro}{\Hy@VersionChecked}
+% \begin{macrocode}
+\chardef\Hy@VersionChecked=0 %
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@VersionCheck}
+% \begin{macrocode}
+\def\Hy@VersionCheck#1{%
+ \begingroup
+ \ltx@IfUndefined{ver@hyperref.sty}{%
+ \Hy@Error{%
+ This should not happen!\MessageBreak
+ Missing hyperref version%
+ }\@ehd
+ }{%
+ \ltx@IfUndefined{ver@#1}{%
+ \Hy@Error{%
+ This should not happen!\MessageBreak
+ Missing version of `#1'%
+ }\@ehd
+ }{%
+ \def\x##1##2##3{%
+ \expandafter\expandafter\expandafter\Hy@@VersionCheck
+ \expandafter\expandafter\expandafter##2%
+ \csname ver@##3\endcsname##1##1\@nil
+ }%
+ \x{ }\y{hyperref.sty}%
+ \x{ }\z{#1}%
+ \ifx\y\z
+ \else
+ \edef\a{#1}%
+ \edef\b{\HyOpt@CustomDriver.def}%
+ \ifx\a\b
+ \Hy@WarningNoLine{%
+ Version mismatch (custom driver)!\MessageBreak
+ * \y: hyperref.sty\MessageBreak
+ * \z: \a
+ }%
+ \else
+ \Hy@Error{%
+ Version mismatch!\MessageBreak
+ * \y: hyperref.sty\MessageBreak
+ * \z: \a
+ }\@ehd
+ \fi
+ \fi
+ }%
+ }%
+ \endgroup
+ \chardef\Hy@VersionChecked=1 %
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@@VersionCheck}
+% \begin{macrocode}
+\def\Hy@@VersionCheck #1#2 #3 #4\@nil{%
+ \def#1{#2 #3}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Checks with regular expressions}
+%
+% \begin{macrocode}
+\ltx@IfUndefined{pdfmatch}{%
+ \def\Hy@Match#1#2#3#4#5{}%
+}{%
+ \def\Hy@Match#1#2#3{%
+ \begingroup
+ \edef\^{\ltx@backslashchar\string^}%
+ \edef\.{\ltx@backslashchar.}%
+ \edef\[{\ltx@backslashchar[}% ]]
+ \edef\${\ltx@backslashchar$}%
+ \edef\({\ltx@backslashchar(}%
+ \edef\){\ltx@backslashchar)}%
+ \edef\|{\ltx@backslashchar|}%
+ \edef\*{\ltx@backslashchar*}%
+ \edef\+{\ltx@backslashchar+}%
+ \edef\?{\ltx@backslashchar?}%
+ \edef\{{\ltx@backslashchar\ltx@leftbracechar}%
+ \edef\}{\ltx@rightbracechar}%
+ \edef\\{\ltx@backslashchar\ltx@backslashchar}%
+ \let\ \ltx@space
+ \ifcase\pdfmatch#2{#3}{#1} %
+ \endgroup
+ \expandafter\ltx@secondoftwo
+ \or
+ \endgroup
+ \expandafter\ltx@firstoftwo
+ \else
+ \Hy@Warning{%
+ Internal error: Wrong pattern!\MessageBreak
+ --> #3 <--\MessageBreak
+ Pattern check ignored%
+ }%
+ \endgroup
+ \expandafter\ltx@firstoftwo
+ \fi
+ }%
+ \ltx@ifpackagelater{ltxcmds}{2010/09/11}{}{%
+ \begingroup
+ \lccode`0=`\{\relax
+ \lowercase{\endgroup
+ \def\ltx@leftbracechar{0}%
+ }%
+ \begingroup
+ \lccode`0=`\}\relax
+ \lowercase{\endgroup
+ \def\ltx@rightbracechar{0}%
+ }%
+ }%
+}
+% \end{macrocode}
+%
+% \subsection{Compatibility with format dumps}
+%
+% \begin{macro}{\AfterBeginDocument}
+% For use with pre-compiled formats, created using the
+% |ldump| package, there needs to be 2 hooks for adding
+% material delayed until |\begin{document}|.
+% These are called \cmd{\AfterBeginDocument} and
+% \cmd{\AtBeginDocument}.
+% If |ldump| is not loaded, then a single hook suffices
+% for normal \LaTeX{} processing.
+%
+% The default definition of |\AfterBeginDocument| cannot
+% be done by |\let| because of problems with |xypic|.
+% \begin{macrocode}
+\@ifundefined{AfterBeginDocument}{%
+ \def\AfterBeginDocument{\AtBeginDocument}%
+}{}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@AtBeginDocument}
+% For the case that package `hyperref' is loaded
+% using \cs{AtBeginDocument}, we have to wrap the calls
+% of \cs{AtBeginDocument}/\cs{AfterBeginDocument} in
+% \cs{AtEndOfPackage}. However, packages must be
+% loaded in \cs{AtEndOfPackage} \emph{before} package
+% `kvoptions' has to perform its option cleanup.
+% Therefore we use a hook.
+% \begin{macrocode}
+\def\Hy@AtBeginDocument{%
+ \ltx@LocalAppendToMacro\Hy@AtBeginDocumentHook
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@AtEndOfPackage}
+% \begin{macrocode}
+\def\Hy@AtEndOfPackage{%
+ \ltx@LocalAppendToMacro\Hy@AtEndOfPackageHook
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@AtBeginDocumentHook}
+% \begin{macrocode}
+\let\Hy@AtBeginDocumentHook\ltx@empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@AtEndOfPackageHook}
+% \begin{macrocode}
+\let\Hy@AtEndOfPackageHook\ltx@empty
+% \end{macrocode}
+% \end{macro}
+% Install the hook, before package `kvoptions' is loaded.
+% \begin{macrocode}
+\AtEndOfPackage{%
+ \Hy@AtEndOfPackageHook
+ \let\Hy@AtEndOfPackageHook\@undefined
+ \AfterBeginDocument{%
+ \Hy@AtBeginDocumentHook{}%
+ \let\Hy@AtBeginDocumentHook\@undefined
+ }%
+}
+% \end{macrocode}
+%
+% Package kvoptions is used for processing options that are
+% given as key value pairs. The package provides
+% |\ProcessKeyvalOptions|, formerly known as
+% |\ProcessOptionsWithKV|.
+% \begin{macrocode}
+\RequirePackage{kvoptions}[2009/07/21]
+% \end{macrocode}
+%
+% \subsection{Switches}
+% \begin{macrocode}
+\newif\ifHy@stoppedearly
+\newif\ifHy@typexml
+\newif\ifHy@activeanchor
+\newif\ifHy@backref
+\newif\ifHy@bookmarks
+\newif\ifHy@bookmarksnumbered
+\newif\ifHy@bookmarksopen
+\newif\ifHy@breaklinks
+\newif\ifHy@pdfcenterwindow
+\newif\ifHy@CJKbookmarks
+\newif\ifHy@colorlinks
+\newif\ifHy@destlabel
+\newif\ifHy@draft
+\let\Hy@finaltrue\Hy@draftfalse
+\let\Hy@finalfalse\Hy@drafttrue
+\newif\ifHy@pdfescapeform
+\newif\ifHy@hyperfigures
+\newif\ifHy@pdffitwindow
+\newif\ifHy@frenchlinks
+\newif\ifHy@hyperfootnotes
+\newif\ifHy@hyperindex
+\newif\ifHy@hypertexnames
+\newif\ifHy@implicit
+\newif\ifHy@linktocpage
+\newif\ifHy@localanchorname
+\newif\ifHy@pdfmenubar
+\newif\ifHy@naturalnames
+\newif\ifHy@nesting
+\newif\ifHy@pdfnewwindowset
+\newif\ifHy@pdfnewwindow
+\newif\ifHy@ocgcolorlinks
+\newif\ifHy@pageanchor
+\newif\ifHy@pdfpagelabels
+\newif\ifHy@pdfpagehidden
+\newif\ifHy@pdfstring
+\newif\ifHy@plainpages
+\newif\ifHy@psize
+\newif\ifHy@raiselinks
+\newif\ifHy@seminarslides
+\newif\ifHy@setpagesize
+\newif\ifHy@texht
+\newif\ifHy@psdextra
+\newif\ifHy@pdftoolbar
+\newif\ifHy@unicode
+\newif\ifHy@pdfusetitle
+\newif\ifHy@verbose
+\let\Hy@debugtrue\Hy@verbosetrue
+\let\Hy@debugfalse\Hy@verbosefalse
+\newif\ifHy@pdfwindowui
+\newif\ifHy@pdfdisplaydoctitle
+\newif\ifHy@pdfa
+% \end{macrocode}
+% Defaults for the switches are now set.
+% \begin{macrocode}
+\Hy@backreffalse
+\Hy@bookmarksnumberedfalse
+\Hy@bookmarksopenfalse
+\Hy@bookmarkstrue
+\Hy@breaklinksfalse
+\Hy@pdfcenterwindowfalse
+\Hy@CJKbookmarksfalse
+\Hy@destlabelfalse
+\Hy@pdfescapeformfalse
+\Hy@hyperfiguresfalse
+\Hy@pdffitwindowfalse
+\Hy@hyperfootnotestrue
+\Hy@hyperindextrue
+\Hy@hypertexnamestrue
+\Hy@implicittrue
+\Hy@linktocpagefalse
+\Hy@localanchornamefalse
+\Hy@pdfmenubartrue
+\Hy@naturalnamesfalse
+\Hy@nestingfalse
+\Hy@pdfnewwindowsetfalse
+\Hy@pdfnewwindowfalse
+\Hy@pageanchortrue
+\Hy@pdfpagelabelstrue
+\Hy@pdfpagehiddenfalse
+\Hy@pdfstringfalse
+\Hy@plainpagesfalse
+\Hy@raiselinksfalse
+\Hy@setpagesizetrue
+\Hy@texhtfalse
+\Hy@psdextrafalse
+\Hy@pdftoolbartrue
+\Hy@typexmlfalse
+\Hy@unicodefalse
+\Hy@pdfusetitlefalse
+\Hy@verbosefalse
+\Hy@pdfwindowuitrue
+\Hy@pdfdisplaydoctitlefalse
+\Hy@pdfafalse
+% \end{macrocode}
+%
+% \section{Common help macros}
+%
+% \begin{macro}{\Hy@StepCount}
+% \begin{macrocode}
+\def\Hy@StepCount#1{\advance#1 by 1 }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@GlobalStepCount}
+% \begin{macrocode}
+\def\Hy@GlobalStepCount#1{\global\advance#1 by 1 }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\newdimen\@linkdim
+\let\Hy@driver\ltx@empty
+\let\MaybeStopEarly\relax
+\newcount\Hy@linkcounter
+\newcount\Hy@pagecounter
+\Hy@linkcounter0
+\Hy@pagecounter0
+% \end{macrocode}
+%
+% \subsection{Macros for recursions}
+%
+% \begin{macrocode}
+\let\Hy@ReturnEnd\@empty
+\long\def\Hy@ReturnAfterFiFiEnd#1\fi#2\Hy@ReturnEnd{\fi\fi#1}
+\long\def\Hy@ReturnAfterElseFiFiEnd#1\else#2\Hy@ReturnEnd{\fi\fi#1}
+% \end{macrocode}
+%
+% \subsection{Babel's protection of shorthand characters}
+%
+% \begin{macro}{\Hy@safe@activestrue}
+% \begin{macro}{\Hy@safe@activesfalse}
+% Babel's switch setting commands cannot used directly,
+% because they can be undefined if babel is not loaded.
+% \begin{macrocode}
+\def\Hy@safe@activestrue{\csname @safe@activestrue\endcsname}
+\def\Hy@safe@activesfalse{\csname @safe@activesfalse\endcsname}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Coordinate transformations}
+%
+% At some places numbers in pdf units are
+% expected (eg: FitBH, ...). The following macros
+% perform the transformation from TeX units (pt)
+% to PDF units (bp).
+%
+% \begin{macro}{\hypercalcbp}
+% The user macro \cmd{\hypercalcbp} can be used, for example,
+% inside option values:
+%\begin{verbatim}
+%pdfstartview={FitBH \hypercalcbp{\paperheight-\topmargin-1in}}
+%\end{verbatim}
+% \begin{itemize}
+% \item
+% It cannot be used inside \cmd{\usepackage}, because
+% LaTeX expands the options before package hyperref
+% is loaded and \cmd{\hypercalcbp} is defined.
+% \item
+% With e-TeX extensions an expandable implementation
+% is very easy; \cmd{\hypercalcbp} can be used
+% everywhere and is expanded at use.
+% \item
+% Without e-TeX's features \cmd{\hypercalcbp} cannot be
+% implemented expandable (practically) and have to
+% be supported by \cmd{\hypercalcbpdef}.
+% Limitations:
+% \begin{itemize}
+% \item Works only in options that use \cmd{\hypercalcbpdef}
+% (currently only |pdfstartview|).
+% \item For calculations package |calc| has to be loaded.
+% \item The expansion of the argument is done at definition time.
+% \end{itemize}
+% \end{itemize}
+% Example (\TeX):
+%\begin{verbatim}
+%\usepackage{calc}
+%\usepackage[...]{hyperref}
+%\hypersetup{
+% pdfstartview={FitBH \hypercalcbp{\paperheight-\topmargin-1in
+% -\headheight-\headsep}
+%}
+%\end{verbatim}
+% \begin{macro}{\hypercalcbp}
+% \begin{macrocode}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname dimexpr\endcsname\relax
+ \def\hypercalcbpdef#1#2{%
+ \begingroup
+ \toks@{}%
+ \HyCal@scan#2\hypercalcbp\@nil
+ \expandafter\endgroup
+ \expandafter\def\expandafter#1\expandafter{\the\toks@}%
+ }%
+ \def\HyCal@scan#1\hypercalcbp#2\@nil{%
+ \toks@\expandafter{\the\toks@ #1}%
+ \ifx\\#2\\%
+ \else
+ \ltx@ReturnAfterFi{%
+ \HyCal@do#2\@nil
+ }%
+ \fi
+ }%
+ \def\HyCal@do#1#2\@nil{%
+ \@ifpackageloaded{calc}{}{%
+ \Hy@Warning{%
+ For calculations \string\hypercalcbp\space needs\MessageBreak
+ package calc or e-TeX%
+ }%
+ }%
+ \setlength{\dimen@}{#1}%
+ \setlength{\dimen@}{0.99626401\dimen@}%
+ \edef\x{%
+ \toks@{%
+ \the\toks@
+ \strip@pt\dimen@
+ }%
+ }\x
+ \HyCal@scan#2\@nil
+ }%
+\else
+ \def\hypercalcbp#1{%
+ \strip@pt\dimexpr 0.99626401\dimexpr(#1)\relax\relax
+ }%
+ \def\hypercalcbpdef{\def}%
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Dealing with PDF strings}\label{sec:pdfstring}
+% The PDF string stuff done by Heiko Oberdiek.
+%
+% Naming convention: All internal commands that are only
+% needed by \cs{pdfstringdef} are prefixed with \cs{HyPsd@}.
+%
+% \subsection{Description of PDF strings}
+% The PDF specification defines several places to hold
+% text strings (bookmark names, document information,
+% text annotations, etc.).
+% The PDF strings have following properties:
+% \begin{itemize}
+% \item They are surrounded by parentheses. The hexadecimal form
+% is not supported.
+% \item Like PostScript language strings they use the same
+% escaping mechanism:\\
+% \begin{tabular}{ll}
+% |\\|& the backslash itself\\
+% \cs{)}, \cs{(}& unbalanced parentheses\\
+% \cs{n}, \cs{r}, \cs{t}, \cs{b}, \cs{f}& special white space
+% escape sequences\\
+% |\|\textit{|ddd|}& octal character code \textit{|ddd|}
+% \end{tabular}
+% \item Strings are stored either in PDFDocEncoding, which is a superset of
+% ISOLatin1 and is compatible with Unicode with character codes
+% below 256, or in Unicode.
+% \end{itemize}
+%
+% \subsection{Definition of
+% \texorpdfstring{\cs{pdfstringdef}}{\\pdfstringdef}}
+% The central macro for dealing with PDF strings is \cs{pdfstringdef}.
+% It defines a command |#1| to be the result of the conversion
+% from the string in |#2| to a legal PDFDocEncoded string.
+% Currently the definition is global, but this can be changed in
+% the future.
+%
+% Important: In \TeX's view PDF strings are written to a file and
+% are expanded only in its mouth. Stomach commands that cannot
+% be expanded further aren't executed, they are written verbatim.
+% But the PDF reader that reads such a string isn't a \TeX{}
+% interpreter!
+%
+% The macro \cs{pdfstringdef} consists of three main parts:
+% \begin{enumerate}
+% \item Preprocessing. Here the expansion is prepared. The encoding
+% is set and many commands are redefined, so that they work
+% appropriate.
+% \item Expansion. The \TeX{} string is expanded the first time
+% to get a PDF string.
+% \item Postprocessing. The result of the expansion is checked and
+% converted to the final form.
+% \end{enumerate}
+%
+% \begin{macro}{\pdfstringdef}
+% \cs{pdfstringdef} works on the tokens in |#2| and converts them to
+% a PDF string as far as possible:
+% \begin{itemize}
+% \item The result should obey the rules of the PDF specification
+% for strings.
+% \item The string can safely processed by \TeX, because the
+% tokens have only catcodes 10 until 12.
+% \end{itemize}
+% The result is stored in the command token given in |#1|.
+% \begin{macrocode}
+\def\pdfstringdef#1#2{%
+% \end{macrocode}
+% Many redefinitions are needed, so all the work is done in a group.
+% \begin{macrocode}
+ \begingroup
+% \end{macrocode}
+%
+% \subsubsection{Preprocessing}
+% \paragraph{Octal escape sequences.}
+% To avoid problems with eight bit or non printable characters, the octal
+% escape notation is supported. So most glyphs in the encoding definitions
+% for PD1 and PU produce these octal escape sequences.
+% All three octal digits have to be used:
+% \begin{itemize}
+% \item Wrong results are avoided, if digits follow that are not part of the
+% octal sequence.
+% \item Macros rely on the fact that the octal sequences always consist of
+% three digits (vtex driver, Unicode support).
+% \end{itemize}
+% The escape sequences start with a backslash. By \cs{string} it will be
+% printed. Therefore it is ensured that the \TeX{} escape character indeed
+% prints as a normal backslash.
+% Eventually this line can be removed, because this is standard
+% \LaTeX{} behaviour.
+% \begin{macrocode}
+ \escapechar`\\%
+% \end{macrocode}
+% From the view of \TeX{} a octal sequence consists of the command tokens
+% \cs{0} until \cs{3} and two digits.
+% For saving tokens \cs{0}, \cs{1}, \cs{2}, and \cs{3} are directly
+% used without a preceding \cs{string} in the glyph definitions.
+% This is done here locally
+% by defining the \cs{0} until \cs{3} commands. So the user
+% can use octal escape sequences directly, the disadvantage is
+% that a previous definition of this short commands does not apply.
+% \begin{macrocode}
+ \edef\0{\string\0}%
+ \edef\1{\string\1}%
+ \edef\2{\string\2}%
+ \edef\3{\string\3}%
+% \end{macrocode}
+% \paragraph{Setting font encoding.}
+% The unicode encoding
+% uses \cs{8} and \cs{9} as marker for the higher byte.
+% \cs{8} is an abbreviation for the higher bytes 0 until 7
+% that can be expressed by one digit. \cs{8} will be
+% converted to \cs{00}. However \cs{9} only marks the next
+% three digits as higher byte and will be removed later.
+%
+% The encoding is set by \cs{enc@update} for optimizing reasons.
+% \begin{macrocode}
+ \ifHy@unicode
+ \edef\8{\string\8}%
+ \edef\9{\string\9}%
+ \fontencoding{PU}%
+ \HyPsd@UTFviii
+ \def\ifpdfstringunicode##1##2{##1}%
+ \else
+ \fontencoding{PD1}%
+ \def\ifpdfstringunicode##1##2{##2}%
+ \fi
+ \let\utf@viii@undeferr\HyPsd@utf@viii@undeferr
+ \enc@update
+% \end{macrocode}
+%
+% \paragraph{Internal encoding commands.}
+% \cs{pdfstringdef} interpretes text strings which are not allowed
+% to contain mathematical stuff. The text glyph commands will produce
+% a warning, if called in math mode. But this warning disturbs while
+% expanding. Therefore we check for math mode here, before
+% \cs{@inmathwarn} will be disabled (see below).
+% \begin{macrocode}
+ \@inmathwarn\pdfstringdef
+% \end{macrocode}
+% If a glyph is used, that isn't in the PD1/PU encoding there will
+% be an infinite error loop, because the NFSS encoding stuff
+% have to be expanded unprotected (\cs{edef}), so that the
+% assigments of \cs{@changed@cmd} don't take place.
+% To patch this behaviour I only found \cs{@inmathwarn}
+% as a usable hook. While an \cs{edef} a warning message by
+% \cs{@inmathwarn} or \cs{TextSymbolUnavailable} cannot be give out,
+% so \cs{@inmathwarn} should be disabled. And with the help of it
+% the assignments in \cs{@changed@cmd} can easily be caught
+% (see below).
+% \begin{macrocode}
+ \let\@inmathwarn\HyPsd@inmathwarn
+% \end{macrocode}
+%
+% Unknown composite characters are built with \cs{add@accent},
+% so it is redefined to provide a warning.
+% \begin{macrocode}
+ \let\add@accent\HyPsd@add@accent
+% \end{macrocode}
+%
+% \paragraph{Commands that don't use NFSS directly.}
+% There are several commands that prints characters in the
+% printable ASCII area that don't obey the NFSS, so they have
+% to be redefined here.
+% UF 29.09.2017: added a mapping for \cs{noboundary}, see issue |#37|
+% \url{https://github.com/ho-tex/hyperref/issues/37}
+% No test for PU, if some definition for PD1 is added it will work too.
+% \begin{macrocode}
+ \let\{\textbraceleft
+ \let\}\textbraceright
+ \let\\\textbackslash
+ \let\#\textnumbersign
+ \let\$\textdollar
+ \let\%\textpercent
+ \let\&\textampersand
+% \let\~\textasciitilde
+ \let\_\textunderscore
+ \let\P\textparagraph
+ \let\ldots\textellipsis
+ \let\dots\textellipsis
+ \ltx@IfUndefined{textEncodingNoboundary}%
+ {}{\let\noboundary\textEncodingNoboundary}%
+% \end{macrocode}
+%
+% \paragraph{Newline}
+% \cmd{\newline} or \cmd{\\} do not work in bookmarks, in text
+% annotations they should expand to \cmd{\r}. In pdf strings
+% \cmd{\\} stands for a backslash. Therefore the commands
+% are disabled now. The user can redefine them for a result
+% what he want:
+% \begin{description}
+% \item[backslash:]
+% |\pdfstringdefDisableCommands{\let\\\textbackslash}|
+% \item[new line:]
+% |\pdfstringdefDisableCommands{\let\\\textCR}|
+% \item[disabled:]
+% |\pdfstringdefDisableCommands{\let\\\empty}|
+% \end{description}
+% At any case, however, the optional argument or the star
+% cannot be scanned in a 100\% sure manner.
+% \begin{macrocode}
+ \def\\{\pdfstringdefWarn\\}%
+ \def\newline{\pdfstringdefWarn\newline}%
+% \end{macrocode}
+%
+% \paragraph{Logos.}
+% Because the box shifting
+% used in the \TeX{} logo does not work while writing to a file,
+% the standard \TeX{} logos are redefined.
+% \begin{macrocode}
+ \def\TeX{TeX}%
+ \def\LaTeX{La\TeX}%
+ \def\LaTeXe{%
+ \LaTeX2%
+ \ifHy@unicode\textepsilon\else e\fi
+ }%
+ \def\eTeX{%
+ \ifHy@unicode\textepsilon\else e\fi
+ -\TeX%
+ }%
+ \def\SliTeX{Sli\TeX}%
+ \def\MF{Metafont}%
+ \def\MP{Metapost}%
+% \end{macrocode}
+%
+% \paragraph{Standard font commands.}
+% Because font changes do not work, the standard font
+% switching commands are disabled.
+% \begin{macrocode}
+ \let\fontencoding\@gobble
+ \let\fontfamily\@gobble
+ \let\fontseries\@gobble
+ \let\fontshape\@gobble
+ \let\fontsize\@gobbletwo
+ \let\selectfont\@empty
+ \let\usefont\@gobblefour
+ \let\emph\@firstofone
+ \let\textnormal\@firstofone
+ \let\textrm\@firstofone
+ \let\textsf\@firstofone
+ \let\texttt\@firstofone
+ \let\textbf\@firstofone
+ \let\textmd\@firstofone
+ \let\textit\@firstofone
+ \let\textsc\@firstofone
+ \let\textsl\@firstofone
+ \let\textup\@firstofone
+ \let\normalfont\@empty
+ \let\rmfamily\@empty
+ \let\sffamily\@empty
+ \let\ttfamily\@empty
+ \let\bfseries\@empty
+ \let\mdseries\@empty
+ \let\itshape\@empty
+ \let\scshape\@empty
+ \let\slshape\@empty
+ \let\upshape\@empty
+ \let\em\@empty
+ \let\rm\@empty
+ \let\Huge\@empty
+ \let\LARGE\@empty
+ \let\Large\@empty
+ \let\footnotesize\@empty
+ \let\huge\@empty
+ \let\large\@empty
+ \let\normalsize\@empty
+ \let\scriptsize\@empty
+ \let\small\@empty
+ \let\tiny\@empty
+ \let\mathversion\@gobble
+ \let\phantom\@gobble
+ \let\vphantom\@gobble
+ \let\hphantom\@gobble
+% \end{macrocode}
+%
+% \paragraph{Package pifont.}
+% \begin{macrocode}
+ \let\ding\HyPsd@ding
+ \let\Cube\HyPsd@DieFace
+%* \HyPsd@DieFace -> \epsdice (epsdice)
+%* \HyPsd@DieFace -> \fcdice (hhcount)
+% \end{macrocode}
+%
+% \paragraph{Environments.}
+% \begin{macrocode}
+ \def\begin#1{\csname#1\endcsname}%
+ \def\end#1{\csname end#1\endcsname}%
+% \end{macrocode}
+%
+% \paragraph{Package color.}
+% \begin{macrocode}
+ \def\textcolor##1##{\@secondoftwo}%
+% \end{macrocode}
+%
+% \paragraph{Upper- and lowercase.}
+% \begin{macrocode}
+ \def\MakeUppercase{\MakeUppercaseUnsupportedInPdfStrings}%
+ \def\MakeLowercase{\MakeLowercaseUnsupportedInPdfStrings}%
+% \end{macrocode}
+%
+% \paragraph{Support of math commands without prefix \texttt{text}.}
+% This is controlled by option ``psdextra'' and only
+% activated with Unicode PDF strings.
+% \begin{macrocode}
+ \ifHy@psdextra
+ \ifHy@unicode
+ \csname psdmapshortnames\endcsname
+ \csname psdaliasnames\endcsname
+ \fi
+ \fi
+% \end{macrocode}
+%
+% \paragraph{Package babel.}
+% Whereever ``naturalnames'' is used, disable \cs{textlatin}
+% (from Babel 3.6k). Thanks to Felix Neubauer
+% (Email: \Email{Felix.Neubauer@gmx.net}).
+% \begin{macrocode}
+ \let\foreignlanguage\@secondoftwo
+ \let\textlatin\@firstofone
+ \ltx@IfUndefined{language@group}{}{%
+ \let\bbl@info\@gobble
+ \csname HyPsd@babel@\language@group\endcsname
+ }%
+ \HyPsd@GreekPatch
+ \HyPsd@SpanishPatch
+ \HyPsd@RussianPatch
+% \end{macrocode}
+% \begin{macrocode}
+ \HyPsd@BabelPatch
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \let\@safe@activestrue\relax
+ \let\@safe@activesfalse\relax
+% \end{macrocode}
+%
+% Disable \cs{cyr}, used in russianb.ldf.
+% \begin{macrocode}
+ \let\cyr\relax
+% \end{macrocode}
+%
+% Redefine \cs{es@roman}, used in spanish.ldf.
+% \begin{macrocode}
+ \let\es@roman\@Roman
+% \end{macrocode}
+%
+% \paragraph{Package german.}
+% \begin{macrocode}
+ \let\glqq\textglqq
+ \let\grqq\textgrqq
+ \let\glq\textglq
+ \let\grq\textgrq
+ \let\flqq\textflqq
+ \let\frqq\textfrqq
+ \let\flq\textflq
+ \let\frq\textfrq
+% \end{macrocode}
+%
+% \paragraph{Package french.} The support is deferred, because
+% it needs |\GenericError| to be disabled (see below).
+%
+% \paragraph{Package FrenchPro.} This package uses:
+% \begin{quote}
+% |\if@mid@expandable{|not fully expandable code|}{|fully expandable code|}|
+% \end{quote}
+% \begin{macrocode}
+ \let\if@mid@expandable\@firstoftwo
+% \end{macrocode}
+%
+% \paragraph{AMS classes.}
+% \begin{macrocode}
+ \HyPsd@AMSclassfix
+% \end{macrocode}
+%
+% \paragraph{Redefinition of \cs{hspace}}
+% \cs{hspace} don't work in bookmarks, the following fix
+% tries to set a space if the argument is a positive length.
+% \begin{macrocode}
+ \let\hspace\HyPsd@hspace
+% \end{macrocode}
+%
+% \paragraph{Commands of referencing and indexing systems.}
+% Some \LaTeX{} commands that are legal in \cs{section} commands
+% have to be disabled here.
+% \begin{macrocode}
+ \let\label\@gobble
+ \let\index\@gobble
+ \let\glossary\@gobble
+ \let\href\HyPsd@href
+ \let\@mkboth\@gobbletwo
+% \end{macrocode}
+%
+% The \cs{ref} and \cs{pageref} is much more complicate because of their
+% star form.
+% \begin{macrocode}
+ \let\ref\HyPsd@ref
+ \let\pageref\HyPsd@pageref
+ \let\nameref\HyPsd@nameref
+ \let\autoref\HyPsd@autoref
+% \end{macrocode}
+%
+% \paragraph{Miscellaneous commands.}
+% \begin{macrocode}
+ \let\leavevmode\@empty
+ \let\mbox\@empty
+% \end{macrocode}
+% \cs{halign} causes error messages because of the template
+% character |#|.
+% \begin{macrocode}
+ \def\halign{\pdfstringdefWarn\halign\@gobble}%
+% \end{macrocode}
+% \begin{macrocode}
+ \let\ignorespaces\HyPsd@ignorespaces
+% \end{macrocode}
+% \begin{macrocode}
+ \let\Hy@SectionAnchorHref\@gobble
+% \end{macrocode}
+% \begin{macrocode}
+ \let\ensuremath\@firstofone
+% \end{macrocode}
+%
+% \paragraph{Patch for cjk bookmarks.}
+% \begin{macrocode}
+ \HyPsd@CJKhook
+% \end{macrocode}
+%
+% \paragraph{User hook.}
+% The switch \cs{Hy@pdfstring} is turned on. So user commands
+% can detect that they are processed not to be typesetted within
+% \TeX's stomach,
+% but to be expanded by the mouth to give a PDF string.
+% At this place before interpreting the string in |#2| additional
+% redefinitions can by added by the hook \cs{pdfstringdefPreHook}.
+%
+% The position in the middle of the redefinitions is a compromise:
+% The user should be able to provide his own (perhaps better)
+% redefinitions, but some commands should have their original
+% meaning, because they can be used in the hook (\cs{bgroup},
+% or \cs{@protected@testopt}, and \cs{@ifnextchar}
+% for \cs{renewcommand}).
+% \begin{macrocode}
+ \Hy@pdfstringtrue
+ \pdfstringdefPreHook
+% \end{macrocode}
+%
+% \paragraph{Spaces.}
+% For checking the token of the string, spaces must be masked, because
+% they cannot by caught by undelimited arguments.
+% \begin{macrocode}
+ \HyPsd@LetUnexpandableSpace\space
+ \HyPsd@LetUnexpandableSpace\ %
+ \HyPsd@LetUnexpandableSpace~%
+ \HyPsd@LetUnexpandableSpace\nobreakspace
+% \end{macrocode}
+%
+% \paragraph{Package xspace.}
+% \begin{macrocode}
+ \ltx@IfUndefined{@xspace}{%
+ \let\xspace\HyPsd@ITALCORR
+ }{%
+ \let\xspace\HyPsd@XSPACE
+ }%
+ \let\/\HyPsd@ITALCORR
+ \let\bgroup\/%
+ \let\egroup\/%
+% \end{macrocode}
+%
+% \paragraph{Redefinitions of miscellaneous commands.}
+% Hyphenation does not make sense.
+% \begin{macrocode}
+ \let\discretionary\@gobbletwo
+% \end{macrocode}
+%
+% \cs{@ifstar} is defined in \LaTeX\ as follows:
+%\begin{verbatim}
+%\def\@ifstar#1{\@ifnextchar *{\@firstoftwo{#1}}}
+%\end{verbatim}
+% \cs{@ifnextchar} doesn't work, because it uses stomach
+% commands like \cs{let} and \cs{futurelet}. But it
+% doesn't break. Whereas |\@firstoftwo{#1}}| gives an
+% error message because \cs{@firstoftwo} misses its second
+% argument.
+%
+% A mimicry of \cs{@ifnextchar} only with expandible commands
+% would be very extensive and the result would be only an
+% approximation. So here a cheaper solution follows
+% in order to get rid of the error message at least:
+% \begin{macrocode}
+ \def\@ifnextchar{\HyPsd@ifnextchar\@ifnextchar}%
+ \def\kernel@ifnextchar{\HyPsd@ifnextchar\kernel@ifnextchar}%
+ \def\new@ifnextchar{\HyPsd@ifnextchar\new@ifnextchar}%
+ \let\@protected@testopt\HyPsd@protected@testopt
+% \end{macrocode}
+% Support for package `xargs':
+% \begin{macrocode}
+ \let\@protected@testopt@xargs\HyPsd@protected@testopt
+% \end{macrocode}
+%
+% \subsubsection{Expansion}
+% There are several possibilities to
+% expand tokens within \LaTeX:
+% \begin{description}
+% \item[\cs{protected@edef}:]
+% The weakest form isn't usable, because
+% it does not expand the font encoding commands. They are
+% made roboust and protect themselves.
+% \item[\cs{csname}:] First the string is
+% expanded whithin a \cs{csname} and \cs{endcsname}.
+% Then the command name is converted to characters
+% with catcode 12 by \cs{string} and the first
+% escape character removed by \cs{@gobble}.
+% This method has the great \emph{advantage} that
+% stomach tokens that aren't allowed in PDF strings are detected
+% by \TeX{} and reported as errors in order to force the user
+% to write correct things. So he get no wrong results by
+% forgetting the proofreading of his text.
+% But the \emph{disadvantage} is that old wrong code cannot
+% processed without errors. Mainly the error message is very cryptic
+% and for the normal user hard to understand. \TeX{} provides
+% no way to catch the error caused by \cs{csname} or allows to
+% support the user with a descriptive error message. Therefore
+% the experienced user had to enable this behaviour by an
+% option |exactdef| in previous versions less or equal 6.50.
+% \item[\cs{edef}] This version uses this standard form for expansion.
+% It is stronger than \LaTeX's \cs{protected@edef}.
+% So the font encoding mechanism works and the glyph commands
+% are converted to the correct tokens for PDF strings whith the
+% definitions of the PD1 encoding.
+% Because the protecting mechanism of \LaTeX{} doesn't work
+% within an \cs{edef}, there are situations thinkable where
+% code can break. For example, assignments and definitions aren't
+% performed and so undefined command errors or argument
+% parsing errors can occur. But this is only a compatibility problem
+% with old texts. Now there are possibilities to write
+% code that gives correct PDF strings (see \cs{texorpdfstring}).
+% In the most cases unexpandable commands and tokens
+% (math shift, grouping characters) remains. They
+% don't cause an error like with \cs{csname}. However a PDF reader
+% isn't \TeX{}, so these tokens are viewed verbatim. So
+% this version detects them now, and removes them with an
+% descriptive warning for the user. As additional features
+% xspace support is possible and grouping characters can be
+% used without problems, because they are removed silently.
+% \end{description}
+%
+% \paragraph{Generic messages.}
+% While expanding via \cs{xdef} the |\Generic...| messages
+% don't work and causes problems (error messages, invalid |.out|
+% file). So they are disabled while expanding and removed silently,
+% because a user warning would be too expensive (memory and runtime,
+% |\pdfstringdef| is slow enough).
+% \begin{macrocode}
+ \begingroup
+ \let\GenericError\@gobblefour
+ \let\GenericWarning\@gobbletwo
+ \let\GenericInfo\@gobbletwo
+% \end{macrocode}
+%
+% \paragraph{Package french.}
+% This fix only works, if \cs{GenericError} is disabled.
+% \begin{macrocode}
+ \ifx\nofrenchguillemets\@undefined
+ \else
+ \nofrenchguillemets
+ \fi
+% \end{macrocode}
+%
+% \paragraph{Definition commands and expansion.}
+% Redefining the defining commands (see sec. \ref{defcmd}).
+% The original meaning of \cs{xdef} is saved in \cs{Hy@temp}.
+% \begin{macrocode}
+ \let\Hy@temp\xdef
+ \let\def\HyPsd@DefCommand
+ \let\gdef\HyPsd@DefCommand
+ \let\edef\HyPsd@DefCommand
+ \let\xdef\HyPsd@DefCommand
+ \let\futurelet\HyPsd@LetCommand
+ \let\let\HyPsd@LetCommand
+ \Hy@temp#1{#2}%
+ \endgroup
+% \end{macrocode}
+%
+% \subsubsection{Postprocessing}
+% If the string is empty time can be saved by omitting the
+% postprocessing process.
+% \begin{macrocode}
+ \ifx#1\@empty
+ \else
+% \end{macrocode}
+%
+% \paragraph{Protecting spaces and removing grouping characters.}
+% In order to check the tokens we must separate them. This will be
+% done with \TeX's argument parsing. With this method
+% we must the following item takes into account, that makes
+% makes things a litte more complicate:
+% \begin{itemize}
+% \item \TeX{} does not accept a space as an undelimited argument,
+% it cancels space tokens while looking for an undelimited
+% argument. Therefore we must protect the spaces now.
+% \item An argument can be a single token or a group of many tokens.
+% And within curly braces tokens aren't find by \TeX's
+% argument scanning process. Third curly braces as grouping characters
+% cannot be expanded further, so they don't vanish by the string
+% expansion above. So these characters with catcode 1 and 2 are
+% removed in the following and replaced by an marker for the xspace
+% support.
+% \item \TeX{} silently removes the outmost pair of braces of an
+% argument. To prevent this on unwanted places, in the following
+% the character \verb+|+ is appended to the string to make an outer
+% brace to an inner one.
+% \end{itemize}
+% First the top level spaces are protected by replacing. Then the
+% string is scanned to detect token groups. Each token group
+% will now be space protected and again scanned for another
+% token groups.
+% \begin{macrocode}
+ \HyPsd@ProtectSpaces#1%
+ \let\HyPsd@String\@empty
+ \expandafter\HyPsd@RemoveBraces\expandafter{#1|}%
+ \global\let#1\HyPsd@String
+% \end{macrocode}
+%
+% \paragraph{Check tokens.}
+% After removing the spaces and the grouping characters
+% the string now should only consists of the following tokens/catcodes:\\
+% \begin{tabular}{rl}
+% 0&command names with start with an escape character.\\
+% 3&math shift\\
+% 4&alignment tabs\\
+% 6&parameter, but this is unlikely.\\
+% 7&superscript\\
+% 8&subscript\\
+% 11&letter\\
+% 12&other\\
+% 13&commands that are active characters.
+% \end{tabular}
+%
+% After \cs{HyPsd@CheckCatcodes} the command \cs{HyPsd@RemoveMask} is
+% reused to remove the group protection character \verb+|+.
+% This character is needed to ensure that the string at least
+% consists of one token if \cs{HyPsd@CheckCatcodes}
+% is called.
+%
+% Because of internal local assignments and tabulars
+% group braces are used.
+% \begin{macrocode}
+ \let\HyPsd@SPACEOPTI\relax
+ {%
+ \let\HyPsd@String\@empty
+ \expandafter\HyPsd@CheckCatcodes#1\HyPsd@End
+ \global\let#1\HyPsd@String
+ }%
+ \expandafter\HyPsd@RemoveMask\expandafter
+ |\expandafter\@empty#1\HyPsd@End#1%
+% \end{macrocode}
+% \cs{HyPsd@CheckCatcodes} should no have removed the tokens with
+% catcode 3, 4, 7, and 8. Because a parameter token (6) would
+% cause to many errors before, there should now be only tokens
+% with catcodes 11 or 12. So I think there is no need for
+% a safety step like:
+%\begin{verbatim}
+%\xdef#1{\expandafter\strip@prefix\meaning#1}%
+%\end{verbatim}
+% \paragraph{Looking for wrong glyphs.}
+% The case that glyphs aren't defined in the PD1 encoding
+% is caught above in such a way, that the glyph name and
+% a marker is inserted into the string. Now we can safely
+% scan the string for this marker and provide a descriptive
+% warning.
+% \begin{macrocode}
+ \expandafter
+ \HyPsd@Subst\expandafter{\HyPsd@GLYPHERR}{\relax}#1%
+ \let\HyPsd@String\@empty
+ \expandafter\HyPsd@GlyphProcess#1\relax\@empty
+ \global\let#1\HyPsd@String
+% \end{macrocode}
+%
+% \paragraph{Backslash.}
+% The double backslash disturbs parsing octal sequenzes, for
+% example in an string like |abc\\051| the sequence \cs{051}
+% is detected although the second \cs{} belongs to the
+% first backslash.
+% \begin{macrocode}
+ \HyPsd@StringSubst{\\}{\textbackslash}#1%
+% \end{macrocode}
+%
+% \paragraph{Spaces.}
+% All spaces have already the form \cs{040}.
+% The last postprocessing step will
+% be an optimizing of the spaces, so we already introduce
+% already the necessary command \cs{HyPsd@SPACEOPTI}.
+% But first it is defined to be \cs{relax} in order to
+% prevent a too early expansion by an \cs{edef}.
+% Secondly a \cs{relax} serves as a marker for
+% a token that is detected by \cs{xspace}.
+%
+% The code of |frenchb.ldf| can produce an additional
+% space before \cs{guillemotright}, because \cs{lastskip}
+% and \cs{unskip} do not work. Therefore it is removed here.
+% \begin{macrocode}
+ \ifHy@unicode
+ \expandafter\HyPsd@StringSubst\csname 80\040\endcsname
+ \HyPsd@SPACEOPTI#1%
+ \edef\Hy@temp@A{\HyPsd@SPACEOPTI\HyPsd@SPACEOPTI\80\273}%
+ \expandafter\HyPsd@Subst\expandafter{\Hy@temp@A}%
+ {\HyPsd@SPACEOPTI\80\273}#1%
+ \else
+ \HyPsd@StringSubst{\040}\HyPsd@SPACEOPTI#1%
+ \expandafter\HyPsd@Subst\expandafter{%
+ \expandafter\HyPsd@SPACEOPTI\expandafter\HyPsd@SPACEOPTI
+ \string\273}{\HyPsd@SPACEOPTI\273}#1%
+ \fi
+% \end{macrocode}
+%
+% \paragraph{Right parenthesis.}
+% Also \cs{xspace} detects a right parenthesis.
+% For the \cs{xspace} support and the following
+% parenthesis check the different parenthesis
+% notations |)|, \cs{)}, and \cs{051} are converted
+% to one type \cs{)} and before \cs{HyPsd@empty}
+% with the meaning of \cs{relax} is introduced for
+% \cs{xspace}. By redefining to \cs{@empty} \cs{HyPsd@empty}
+% can easily removed later.
+% \begin{macrocode}
+ \ifHy@unicode
+ \HyPsd@StringSubst{\)}{\80\051}#1%
+ \HyPsd@Subst){\80\051}#1%
+ \let\HyPsd@empty\relax
+ \expandafter\HyPsd@StringSubst\csname 80\051\endcsname
+ {\HyPsd@empty\80\051}#1%
+ \else
+ \HyPsd@StringSubst{\)}{\051}#1%
+ \HyPsd@Subst){\051}#1%
+ \let\HyPsd@empty\relax
+ \HyPsd@StringSubst{\051}{\HyPsd@empty\string\)}#1%
+ \fi
+% \end{macrocode}
+%
+% \paragraph{Support for package \texttt{xspace}.}
+% \cs{xspace} looks for the next token and decides if it
+% expands to a space or not. Following tokens prevent its
+% transformation to a space: Beginning and end of group,
+% handled above by replacing by an italic correction,
+% several punctuation marks, a closing parentheses, and
+% several spaces.
+%
+% Without package |xspace| there are tokens with catcode 11 and 12,
+% \cs{HyPsd@empty} and \cs{HyPsd@SPACEOPTI}. With package |xspace|
+% marker for the italic correction \cs{/} and \cs{xspace} come with.
+% In the package |xspace| case the two markers are replaced by
+% commands and an \cs{edef} performs the \cs{xspace} processing.
+%
+% In the opposite of the original \cs{xspace} \cs{HyPsd@xspace} uses
+% an argument instead of a \cs{futurelet}, so we have to provide
+% such an argument, if \cs{HyPsd@xspace} comes last. Because
+% \cs{HyPsd@Subst} with several equal tokens (|--|) needs a safe
+% last token, in both cases
+% the string gets an additional \cs{HyPsd@empty}.
+% \begin{macrocode}
+ \expandafter\HyPsd@Subst\expandafter{\/}\HyPsd@empty#1%
+ \ltx@IfUndefined{@xspace}{%
+ }{%
+ \let\HyPsd@xspace\relax
+ \expandafter\HyPsd@Subst\expandafter
+ {\HyPsd@XSPACE}\HyPsd@xspace#1%
+ \let\HyPsd@xspace\HyPsd@doxspace
+ }%
+ \xdef#1{#1\HyPsd@empty}%
+% \end{macrocode}
+%
+% \paragraph{Ligatures.}
+% \TeX{} forms ligatures in its stomach, but the PDF strings are
+% treated only by \TeX's mouth. The PDFDocEncoding contains
+% some ligatures, but the current
+% version 3 of the AcrobatReader lacks the |fi| and |fl| glyphs, and
+% the Linux version lacks the |emdash| and |endash| glyphs.
+% So the necessary code is provided here, but currently disabled,
+% hoping that version 4 of the AcrobatReader is better.
+% To break the ligatures the user can use an empty group,
+% because it leads to an insertion of an \cs{HyPsd@empty}.
+% If this ligature code will be enabled some day, then the italic
+% correction should also break the ligatures. Currently this occurs
+% only, if package |xspace| is loaded.
+%
+% Since newer AcrobatReader versions now show the en- and emdash in
+% a correct way (AR7/Linux, AR8/Linux), the substitution code
+% for them is enabled starting with version 6.78l.
+% \begin{macrocode}
+ \HyPsd@Subst{---}\textemdash#1%
+ \HyPsd@Subst{--}\textendash#1%
+% \HyPsd@Subst{fi}\textfi#1%
+% \HyPsd@Subst{fl}\textfl#1%
+ \HyPsd@Subst{!`}\textexclamdown#1%
+ \HyPsd@Subst{?`}\textquestiondown#1%
+% \end{macrocode}
+% With the next \cs{edef} we get rid of the token \cs{HyPsd@empty}.
+% \begin{macrocode}
+ \let\HyPsd@empty\@empty
+% \end{macrocode}
+%
+% \paragraph{Left parentheses.}
+% Left parentheses are now converted to safe forms to avoid
+% problems with unmatched ones (\cs{(} with PDFDocEncoding,
+% the octal sequence with Unicode.
+%
+% An optimization is possible. Matched parentheses can replaced
+% by a |()| pair. But this code is removed to save \TeX{} memory
+% and time.
+% \begin{macrocode}
+ \ifHy@unicode
+ \HyPsd@StringSubst\(\textparenleft#1%
+ \HyPsd@Subst(\textparenleft#1%
+ \else
+ \HyPsd@StringSubst\({\050}#1%
+ \HyPsd@Subst({\050}#1%
+ \HyPsd@StringSubst{\050}{\string\(}#1%
+ \fi
+% \end{macrocode}
+%
+% \paragraph{Optimizing spaces.}
+% Spaces are often used, but they have a very long form \cs{040}.
+% They are converted back to real spaces, but not all, so that
+% no space follows after another. In the bookmark case several
+% spaces are written to the |.out| file, but if the entries
+% are read back, several spaces are merged to a single one.
+%
+% With Unicode the spaces are replaced by their octal sequences.
+% \begin{macrocode}
+ \ifHy@unicode
+ \edef\HyPsd@SPACEOPTI{\80\040}%
+ \else
+ \let\HyPsd@SPACEOPTI\HyPsd@spaceopti
+ \fi
+ \xdef#1{#1\@empty}%
+ \fi
+% \end{macrocode}
+%
+% \paragraph{Converting to Unicode.}
+% At last the eight bit letters have to be converted to Unicode,
+% the masks \cs{8} and \cs{9} are removed and the Unicode
+% marker is added.
+% \begin{macrocode}
+ \endgroup
+ \begingroup
+ \ifHy@unicode
+ \HyPsd@ConvertToUnicode#1%
+% \end{macrocode}
+%
+% \paragraph{Try conversion back to PDFDocEncoding.}
+%
+% \begin{macrocode}
+ \ifx\HyPsd@pdfencoding\HyPsd@pdfencoding@auto
+ \ltx@IfUndefined{StringEncodingConvertTest}{%
+ }{%
+ \EdefUnescapeString\HyPsd@temp#1%
+ \ifxetex
+ \let\HyPsd@UnescapedString\HyPsd@temp
+ \StringEncodingConvertTest\HyPsd@temp\HyPsd@temp
+ {utf16be}{ascii-print}{%
+ \EdefEscapeString\HyPsd@temp\HyPsd@temp
+ \global\let#1\HyPsd@temp
+ \HyPsd@EscapeTeX#1%
+ \Hy@unicodefalse
+ }{%
+ \HyPsd@ToBigChars#1%
+ \HyPsd@EscapeTeX#1%
+ }%
+ \else
+ \StringEncodingConvertTest\HyPsd@temp\HyPsd@temp
+ {utf16be}{pdfdoc}{%
+ \EdefEscapeString\HyPsd@temp\HyPsd@temp
+ \global\let#1\HyPsd@temp
+ \HyPsd@EscapeTeX#1%
+ \Hy@unicodefalse
+ }{}%
+ \fi
+ }%
+ \fi
+ \fi
+ \HyPsd@XeTeXBigCharsfalse
+% \end{macrocode}
+%
+% \paragraph{User hook.}
+% The hook \cs{pdfstringdefPostHook} can be used
+% for the purpose to postprocess the string further.
+% \begin{macrocode}
+ \pdfstringdefPostHook#1%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Hy@pdfstringdef}
+% \begin{macrocode}
+\def\Hy@pdfstringdef#1#2{%
+ \pdfstringdef\Hy@gtemp{#2}%
+ \let#1\Hy@gtemp
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Encodings}
+%
+% \subsubsection{Xe\TeX}
+%
+% \begin{macrocode}
+\edef\Hy@temp{\catcode0=\the\catcode0\relax}
+\catcode\z@=12 %
+\ifxetex
+ \expandafter\@firstofone
+\else
+ \let\HyPsd@XeTeXBigCharstrue\@empty
+ \let\HyPsd@XeTeXBigCharsfalse\@empty
+ \expandafter\@gobble
+\fi
+{%
+ \newif\ifHyPsd@XeTeXBigChars
+ \def\HyPsd@XeTeXBigCharsfalse{%
+ \global\let\ifHyPsd@XeTeXBigChars\iffalse
+ }%
+ \def\HyPsd@XeTeXBigCharstrue{%
+ \global\let\ifHyPsd@XeTeXBigChars\iftrue
+ }%
+ \def\HyPsd@ToBigChars#1{%
+ \ifHyPsd@XeTeXBigChars
+ \EdefEscapeHex\HyPsd@UnescapedString{%
+ \expandafter\@gobbletwo\HyPsd@UnescapedString
+ }%
+ \begingroup
+ \toks@{}%
+ \escapechar=92\relax
+ \let\x\HyPsd@ToBigChar
+ \expandafter\HyPsd@ToBigChar\HyPsd@UnescapedString
+ \relax\relax\relax\relax\relax\relax\relax
+ \edef\x{%
+ \endgroup
+ \gdef\noexpand#1{\the\toks@}%
+ }%
+ \x
+ \fi
+ }%
+ \def\HyPsd@ToBigChar#1#2#3#4{%
+ \ifx\relax#1\relax
+ \let\x\relax
+ \else
+ \count@="#1#2#3#4\relax
+ \let\y\@empty
+ \lccode\z@=\count@
+ \ifnum\count@=40 % (
+ \let\y\@backslashchar
+ \else
+ \ifnum\count@=41 % )
+ \let\y\@backslashchar
+ \else
+ \ifnum\count@=92 % backslash
+ \let\y\@backslashchar
+ \else
+ \ifnum\count@=10 % newline
+ \edef\y##1{\string\n}%
+ \else
+ \ifnum\count@=13 % carriage return
+ \edef\y##1{\string\r}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \lowercase{%
+ \toks@\expandafter{%
+ \the\expandafter\toks@
+ \y
+ ^^@%
+ }%
+ }%
+ \fi
+ \x
+ }%
+}
+\Hy@temp
+% \end{macrocode}
+%
+% \subsubsection{Workaround for package linguex}
+%
+% \begin{macrocode}
+\@ifpackageloaded{linguex}{%
+ \let\HyLinguex@OrgB\b
+ \let\HyLinguex@OrgC\c
+ \let\HyLinguex@OrgD\d
+ \def\HyLinguex@Restore{%
+ \let\b\HyLinguex@OrgB
+ \let\c\HyLinguex@OrgC
+ \let\d\HyLinguex@OrgD
+ }%
+ \Hy@AtEndOfPackage{%
+ \pdfstringdefDisableCommands{%
+ \ltx@IfUndefined{oldb}{}{\let\b\oldb}%
+ \ltx@IfUndefined{oldc}{}{\let\c\oldc}%
+ \ltx@IfUndefined{oldd}{}{\let\d\oldd}%
+ }%
+ }%
+}{%
+ \let\HyLinguex@Restore\relax
+}%
+% \end{macrocode}
+%
+% \subsubsection{Catcodes saving and restoring for \texttt{.def} files}
+%
+% \begin{macro}{\Hy@SaveCatcodeSettings}
+% \begin{macrocode}
+\def\Hy@SaveCatcodeSettings#1{%
+ \expandafter\edef\csname Hy@cat@#1\endcsname{%
+ \endlinechar=\the\endlinechar\relax
+ \catcode32 \the\catcode32\relax % (space)
+ \catcode34 \the\catcode34\relax % "
+ \catcode35 \the\catcode35\relax % #
+ \catcode37 \the\catcode37\relax % (percent)
+ \catcode40 \the\catcode40\relax % (
+ \catcode41 \the\catcode41\relax % )
+ \catcode42 \the\catcode42\relax % *
+ \catcode46 \the\catcode46\relax % .
+ \catcode58 \the\catcode58\relax % :
+ \catcode60 \the\catcode60\relax % <
+ \catcode61 \the\catcode61\relax % =
+ \catcode62 \the\catcode62\relax % >
+ \catcode64 \the\catcode64\relax % @
+ \catcode91 \the\catcode91\relax % [
+ \catcode92 \the\catcode92\relax % \
+ \catcode93 \the\catcode93\relax % ]
+ \catcode123 \the\catcode123\relax % {
+ \catcode124 \the\catcode124\relax % |
+ \catcode125 \the\catcode125\relax % }
+ }%
+ \endlinechar=-1 %
+ \catcode32 10 % (space)
+ \catcode34 12 % "
+ \catcode35 6 % #
+ \catcode37 14 % (percent)
+ \catcode40 12 % (
+ \catcode41 12 % )
+ \catcode42 12 % *
+ \catcode46 12 % .
+ \catcode58 12 % :
+ \catcode60 12 % <
+ \catcode61 12 % =
+ \catcode62 12 % >
+ \catcode91 12 % [
+ \catcode92 0 % \
+ \catcode93 12 % ]
+ \catcode123 1 % {
+ \catcode124 12 % |
+ \catcode125 2 % }
+ \makeatletter
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@RestoreCatcodeSettings}
+% \begin{macrocode}
+\def\Hy@RestoreCatcodeSettings#1{%
+ \csname Hy@cat@#1\endcsname
+ \expandafter\let\csname Hy@cat@#1\endcsname\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{PD1 encoding}
+% The PD1 encoding implements the PDFDocEncoding for use with
+% \LaTeXe's NFSS. Because the informational strings are not set by
+% \TeX's typesetting mechanism but for interpreting by the PDF reader,
+% the glyphs of the PD1 encoding are implemented to be safely written
+% to a file (PDF output file, |.out| file).
+%
+% The PD1 encoding can be specified as an option of the 'fontenc' package
+% or loaded here. It does not matter what font family is selected,
+% as \TeX{} does not process it anyway. So use CM.
+% \begin{macrocode}
+\@ifundefined{T@PD1}{%
+ \Hy@SaveCatcodeSettings{pd1}%
+ \input{pd1enc.def}%
+ \Hy@RestoreCatcodeSettings{pd1}%
+ \HyLinguex@Restore
+}{}
+\DeclareFontFamily{PD1}{pdf}{}
+\DeclareFontShape{PD1}{pdf}{m}{n}{ <-> cmr10 }{}
+\DeclareFontSubstitution{PD1}{pdf}{m}{n}
+% \end{macrocode}
+%
+% \subsubsection{PU encoding}
+% The PU encoding implements the Unicode encoding for use with
+% \LaTeX's NFSS. Because of large memory requirements the
+% encoding file for Unicode support is only loaded, if option
+% |unicode| is specified as package option.
+% \begin{macro}{\HyPsd@LoadUnicode}
+% Because the file |puenc.def| takes a lot of memory, the loading
+% is defined in the macro \cs{HyPsd@LoadUnicode} called by
+% the package option |unicode|.
+% \begin{macrocode}
+\def\HyPsd@LoadUnicode{%
+ \@ifundefined{T@PU}{%
+ \Hy@SaveCatcodeSettings{pu}%
+ \input{puenc.def}%
+ \Hy@RestoreCatcodeSettings{pu}%
+ \HyLinguex@Restore
+ }{}%
+ \DeclareFontFamily{PU}{pdf}{}%
+ \DeclareFontShape{PU}{pdf}{m}{n}{ <-> cmr10 }{}%
+ \DeclareFontSubstitution{PU}{pdf}{m}{n}%
+ \HyPsd@LoadExtra
+ \let\HyPsd@LoadUnicode\relax
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@LoadExtra}
+% \begin{macrocode}
+\def\HyPsd@LoadExtra{%
+ \ifHy@psdextra
+ \ltx@iffileloaded{puenc.def}{%
+ \Hy@SaveCatcodeSettings{psdextra}%
+ \input{psdextra.def}%
+ \Hy@RestoreCatcodeSettings{psdextra}%
+ \let\HyPsd@LoadExtra\relax
+ }{}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Additional user commands}
+%
+% \subsubsection{^^A
+% \texorpdfstring{\cs{texorpdfstring}}{\\texorpdfstring}^^A
+% }
+% \begin{macro}{\texorpdfstring}
+% While expanding the string in \cs{pdfstringdef} the switch
+% \cs{ifHy@pdfstring} is set. This is used by the
+% full expandible macro \cs{texorpdfstring}. It expects
+% two arguments, the first contains the string that will be
+% set and processed by \TeX's stomach, the second
+% contains the replacement for PDF strings.
+% \begin{macrocode}
+\def\texorpdfstring{%
+ \ifHy@pdfstring
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Hooks for
+% \texorpdfstring{\cs{pdfstringdef}}{\\pdfstringdef}^^A
+% }
+% \begin{macro}{\pdfstringdefPreHook}
+% \begin{macro}{\pdfstringdefPostHook}
+% Default definition of the hooks for \cs{pdfstringdef}.
+% The construct \cs{@ifundefined} with \cs{let} is a little bit
+% faster than \cs{providecommand}.
+% \begin{macrocode}
+\@ifundefined{pdfstringdefPreHook}{%
+ \let\pdfstringdefPreHook\@empty
+}{}
+\@ifundefined{pdfstringdefPostHook}{%
+ \let\pdfstringdefPostHook\@gobble
+}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pdfstringdefDisableCommands}
+% In \cmd{\pdfstringdefPreHook} the user can add
+% code that is executed before the string, that have
+% to be converted by \cmd{\pdfstringdef}, is expanded.
+% So replacements for problematic macros can be given.
+% The code in \cmd{\pdfstringdefPreHook} should not
+% be replaced perhaps by an \cmd{\renewcommand},
+% because a previous meaning gets lost.
+%
+% Macro \cmd{\pdfstringdefDisableCommands} avoids this,
+% because it reuses the old meaning of the hook and appends
+% the new code to \cmd{\pdfstringdefPreHook}, e.g.:
+%\begin{verbatim}
+%\pdfstringdefDisableCommands{%
+% \let~\textasciitilde
+% \def\url{\pdfstringdefWarn\url}%
+% \let\textcolor\@gobble
+%}%
+%\end{verbatim}
+% In the argument of \cmd{\pdfstringdefDisableCommands} the
+% character |@| can be used in command names. So it is easy
+% to use useful \LaTeX{} commands like \cmd{\@gobble} or
+% \cmd{\@firstofone}.
+% \begin{macrocode}
+\def\pdfstringdefDisableCommands{%
+ \begingroup
+ \makeatletter
+ \HyPsd@DisableCommands
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@DisableCommands}
+% \begin{macrocode}
+\long\def\HyPsd@DisableCommands#1{%
+ \ltx@GlobalAppendToMacro\pdfstringdefPreHook{#1}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% (Partial) fix for bug in \texttt{frenchb.ldf} 2010/08/21 v2.5a that
+% destroys \cs{pdfstringdefDisableCommands} after usage
+% in \cs{AtBeginDocument}.
+% \begin{macrocode}
+\let\HyPsd@pdfstringdefDisableCommands\pdfstringdefDisableCommands
+\AtBeginDocument{%
+ \@ifundefined{pdfstringdefDisableCommands}{%
+ \let\pdfstringdefDisableCommands\HyPsd@pdfstringdefDisableCommands
+ }{}%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\pdfstringdefWarn}
+% The purpose of \cmd{\pdfstringdefWarn} is to produce
+% a warning message, so the user can see, that something
+% can go wrong with the conversion to PDF strings.
+%
+% The prefix |\<>-| is added to the token. \cmd{\noexpand}
+% protects the probably undefined one during the first
+% expansion step. Then \cmd{\HyPsd@CheckCatcodes} can
+% detect the not allowed token, \cmd{\HyPsd@CatcodeWarning}
+% prints a warning message, after \cmd{\HyPsd@RemovePrefix}
+% has removed the prefix.
+%
+% \cmd{\pdfstringdefWarn} is intended for document authors or
+% package writers, examples for use can be seen in the definition
+% of \cmd{\HyPsd@ifnextchar} or \cmd{\HyPsd@protected@testopt}.
+% \begin{macrocode}
+\def\pdfstringdefWarn#1{%
+ \expandafter\noexpand\csname<>-\string#1\endcsname
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Help macros for expansion}
+%
+% \subsubsection{\cs{ignorespaces}}
+%
+% \begin{macro}{\HyPsd@ignorespaces}
+% With the help of a trick using \cs{romannumeral} the
+% effect of \cs{ignorespaces} can be simulated a little,
+% In a special case using an alphabetic constant
+% \cs{romannumeral} eats an optional space. If the constant
+% is zero, then the \cs{romannumeral} expression vanishes.
+% The following macro uses this trick twice, thus \cs{HyPsd@ignorespaces}
+% eats up to two following spaces.^^A
+% \begin{macrocode}
+\begingroup
+ \catcode0=12 %
+ \def\x{\endgroup
+ \def\HyPsd@ignorespaces{%
+ \romannumeral\expandafter`\expandafter^^@%
+ \romannumeral`^^@%
+ }%
+ }%
+\x
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Babel languages}
+%
+% Since version 2008/03/16 v3.8j babel uses inside \cs{AtBeginDocument}:
+%\begin{quote}
+%\begin{verbatim}
+%\pdfstringdefDisableCommands{%
+% \languageshorthands{system}%
+%}
+%\end{verbatim}
+%\end{quote}
+% As consequence the shorthands are shown in the bookmarks,
+% not its result. Therefore \cs{languageshorthands} is
+% disabled before the user hook. If there is a need to
+% use the command, then \cs{HyOrg@languageshorthands}
+% can be used inside \cs{pdfstringdefDisableCommands}.
+% \begin{macrocode}
+\def\HyPsd@BabelPatch{%
+ \let\HyOrg@languageshorthands\languageshorthands
+ \let\languageshorthands\HyPsd@LanguageShorthands
+}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdf@strcmp\endcsname\relax
+ \let\HyPsd@langshort@system\@empty
+ \def\HyPsd@LanguageShorthands#1{%
+ \expandafter\ifx\csname HyPsd@langshort@#1\endcsname
+ \HyPsd@langshort@system
+ \expandafter\@gobble
+ \else
+ \expandafter\@firstofone
+ \fi
+ {%
+ \HyOrg@languageshorthands{#1}%
+ }%
+ }%
+\else
+ \def\HyPsd@LanguageShorthands#1{%
+ \ifnum\pdf@strcmp{#1}{system}=\z@
+ \expandafter\@gobble
+ \else
+ \expandafter\@firstofone
+ \fi
+ {%
+ \HyOrg@languageshorthands{#1}%
+ }%
+ }%
+\fi
+\def\Hy@temp{%
+ \@ifpackageloaded{babel}{%
+ \@ifpackagelater{babel}{2008/03/16}{%
+ \let\Hy@temp\@empty
+ }{%
+ \def\HyPsd@BabelPatch{%
+ \let\HyOrg@languageshorthands\languageshorthands
+ }%
+ }%
+ }{}%
+}
+\Hy@temp
+\expandafter\Hy@AtBeginDocument\expandafter{\Hy@temp}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newif\ifHy@next
+% \end{macrocode}
+%
+% Nothing to do for english.
+% \begin{macrocode}
+\ltx@IfUndefined{danish@sh@"@sel}{}{%
+ \def\HyPsd@babel@danish{%
+ \declare@shorthand{danish}{"|}{}%
+ \declare@shorthand{danish}{"~}{-}%
+ }%
+}
+\ltx@IfUndefined{dutch@sh@"@sel}{}{%
+ \def\HyPsd@babel@dutch{%
+ \declare@shorthand{dutch}{"|}{}%
+ \declare@shorthand{dutch}{"~}{-}%
+ }%
+}
+\ltx@IfUndefined{finnish@sh@"@sel}{}{%
+ \def\HyPsd@babel@finnish{%
+ \declare@shorthand{finnish}{"|}{}%
+ }%
+}
+\ltx@IfUndefined{french@sh@:@sel}{}{%
+ \def\HyPsd@babel@frenchb{%
+ \def\guill@spacing{ }%
+ }%
+}
+\ltx@IfUndefined{german@sh@"@sel}{}{%
+ \def\HyPsd@babel@german{%
+ \declare@shorthand{german}{"f}{f}%
+ \declare@shorthand{german}{"|}{}%
+ \declare@shorthand{german}{"~}{-}%
+ }%
+}
+\ltx@IfUndefined{macedonian@sh@"@sel}{}{%
+ \def\HyPsd@babel@macedonian{%
+ \declare@shorthand{macedonian}{"|}{}%
+ \declare@shorthand{macedonian}{"~}{-}%
+ }%
+}{}
+\ltx@IfUndefined{ngerman@sh@"@sel}{}{%
+ \def\HyPsd@babel@ngerman{%
+ \declare@shorthand{ngerman}{"|}{}%
+ \declare@shorthand{ngerman}{"~}{-}%
+ }%
+}
+\ltx@IfUndefined{portuges@sh@"@sel}{}{%
+ \def\HyPsd@babel@portuges{%
+ \declare@shorthand{portuges}{"|}{}%
+ }%
+}
+\ltx@IfUndefined{russian@sh@"@sel}{}{%
+ \def\HyPsd@babel@russian{%
+ \declare@shorthand{russian}{"|}{}%
+ \declare@shorthand{russian}{"~}{-}%
+ }%
+}
+\ltx@IfUndefined{slovene@sh@"@sel}{}{%
+ \def\HyPsd@babel@slovene{%
+ \declare@shorthand{slovene}{"|}{}%
+ }%
+}
+% \end{macrocode}
+% Nested quoting environments are not supported (|<<|, |>>|).
+% \begin{macrocode}
+\ltx@IfUndefined{spanish@sh@>@sel}{}{%
+ \def\HyPsd@babel@spanish{%
+ \declare@shorthand{spanish}{<<}{\guillemotleft}%
+ \declare@shorthand{spanish}{>>}{\guillemotright}%
+ \declare@shorthand{spanish}{"=}{-}%
+ \declare@shorthand{spanish}{"~}{-}%
+ \declare@shorthand{spanish}{"!}{\textexclamdown}%
+ \declare@shorthand{spanish}{"?}{\textquestiondown}%
+ }%
+}
+\ltx@IfUndefined{swedish@sh@"@sel}{}{%
+ \def\HyPsd@babel@swedish{%
+ \declare@shorthand{swedish}{"|}{}%
+ \declare@shorthand{swedish}{"~}{-}%
+ }%
+}
+\ltx@IfUndefined{ukrainian@sh@"@sel}{}{%
+ \def\HyPsd@babel@ukrainian{%
+ \declare@shorthand{ukrainian}{"|}{}%
+ \declare@shorthand{ukrainian}{"~}{-}%
+ }%
+}
+\ltx@IfUndefined{usorbian@sh@"@sel}{}{%
+ \def\HyPsd@babel@usorbian{%
+ \declare@shorthand{usorbian}{"f}{f}%
+ \declare@shorthand{usorbian}{"|}{}%
+ }%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\ltx@IfUndefined{greek@sh@\string~@sel}{%
+ \let\HyPsd@GreekPatch\@empty
+}{%
+ \def\HyPsd@GreekPatch{%
+ \let\greeknumeral\HyPsd@greeknumeral
+ \let\Greeknumeral\HyPsd@Greeknumeral
+ }%
+}
+\def\HyPsd@greeknumeral#1{%
+ \HyPsd@GreekNum\@firstoftwo{#1}%
+}
+\def\HyPsd@Greeknumeral#1{%
+ \HyPsd@GreekNum\@secondoftwo{#1}%
+}
+\def\HyPsd@GreekNum#1#2{%
+ \ifHy@unicode
+ \ifnum#2<\@ne
+ \@arabic{#2}%
+ \else
+ \ifnum#2<1000000 %
+ \HyPsd@@GreekNum#1{#2}%
+ \else
+ \@arabic{#2}%
+ \fi
+ \fi
+ \else
+ \@arabic{#2}%
+ \fi
+}
+\def\HyPsd@@GreekNum#1#2{%
+ \ifnum#2<\@m
+ \ifnum#2<10 %
+ \expandafter\HyPsd@GreekNumI
+ \expandafter\@gobble\expandafter#1\number#2%
+ \else
+ \ifnum#2<100 %
+ \expandafter\HyPsd@GreekNumII
+ \expandafter\@gobble\expandafter#1\number#2%
+ \else
+ \expandafter\HyPsd@GreekNumIII
+ \expandafter\@gobble\expandafter#1\number#2%
+ \fi
+ \fi
+ \ifnum#2>\z@
+ \textnumeralsigngreek
+ \fi
+ \else
+ \ifnum#2<\@M
+ \expandafter\HyPsd@GreekNumIV\expandafter#1\number#2%
+ \else
+ \ifnum#2<100000 %
+ \expandafter\HyPsd@GreekNumV\expandafter#1\number#2%
+ \else
+ \expandafter\HyPsd@GreekNumVI\expandafter#1\number#2%
+ \fi
+ \fi
+ \fi
+}
+\def\HyPsd@GreekNumI#1#2#3{%
+ #1{%
+ \ifnum#3>\z@
+ \textnumeralsignlowergreek
+ \fi
+ }%
+ \expandafter#2%
+ \ifcase#3 %
+ {}{}%
+ \or\textalpha\textAlpha
+ \or\textbeta\textBeta
+ \or\textgamma\textGamma
+ \or\textdelta\textDelta
+ \or\textepsilon\textEpsilon
+ \or\textstigmagreek\textStigmagreek
+ \or\textzeta\textZeta
+ \or\texteta\textEta
+ \or\texttheta\textTheta
+ \else
+ {}{}%
+ \fi
+}
+\def\HyPsd@GreekNumII#1#2#3#4{%
+ #1{%
+ \ifnum#3>\z@
+ \textnumeralsignlowergreek
+ \fi
+ }%
+ \expandafter#2%
+ \ifcase#3 %
+ {}{}%
+ \or\textiota\textIota
+ \or\textkappa\textKappa
+ \or\textlambda\textLambda
+ \or\textmu\textMu
+ \or\textnu\textNu
+ \or\textxi\textXi
+ \or\textomicron\textOmicron
+ \or\textpi\textPi
+ \or\textkoppagreek\textKoppagreek
+ \else
+ {}{}%
+ \fi
+ \HyPsd@GreekNumI#1#2#4%
+}
+\def\HyPsd@GreekNumIII#1#2#3#4#5{%
+ #1{%
+ \ifnum#3>\z@
+ \textnumeralsignlowergreek
+ \fi
+ }%
+ \expandafter#2%
+ \ifcase#3 %
+ {}{}%
+ \or\textrho\textRho
+ \or\textsigma\textSigma
+ \or\texttau\textTau
+ \or\textupsilon\textUpsilon
+ \or\textphi\textPhi
+ \or\textchi\textChi
+ \or\textpsi\textPsi
+ \or\textomega\textOmega
+ \or\textsampigreek\textSampigreek
+ \else
+ {}{}%
+ \fi
+ \HyPsd@GreekNumII#1#2#4#5%
+}
+\def\HyPsd@GreekNumIV#1#2#3#4#5{%
+ \HyPsd@GreekNumI\@firstofone#1#2%
+ \HyPsd@@GreekNum#1{#3#4#5}%
+}
+\def\HyPsd@GreekNumV#1#2#3#4#5#6{%
+ \HyPsd@GreekNumII\@firstofone#1#2#3%
+ \HyPsd@@GreekNum#1{#4#5#6}%
+}
+\def\HyPsd@GreekNumVI#1#2#3#4#5#6#7{%
+ \HyPsd@GreekNumIII\@firstofone#1#2#3#4%
+ \HyPsd@@GreekNum#1{#5#6#7}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\HyPsd@SpanishPatch{%
+ \ltx@IfUndefined{es@save@dot}{%
+ }{%
+ \let\.\es@save@dot
+ }%
+}
+% \end{macrocode}
+% Shorthand |"-| of `russianb.ldf' is not expandable,
+% therefore it is disabled and replaced by |-|.
+% \begin{macrocode}
+\def\HyPsd@RussianPatch{%
+ \ltx@IfUndefined{russian@sh@"@-@}{%
+ }{%
+ \@namedef{russian@sh@"@-@}{-}%
+ }%
+}
+% \end{macrocode}
+%
+% \subsubsection{CJK patch}
+%
+% \begin{macrocode}
+\RequirePackage{intcalc}[2007/09/27]
+% \end{macrocode}
+%
+% \begin{macro}{\HyPsd@CJKhook}
+% \begin{macrocode}
+\def\HyPsd@CJKhook{%
+ \ltx@ifpackageloaded{CJK}{%
+ \let\CJK@kern\relax
+ \let\CJKkern\relax
+ \let\CJK@CJK\relax
+ \ifHy@CJKbookmarks
+ \HyPsd@CJKhook@bookmarks
+ \fi
+ \HyPsd@CJKhook@unicode
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{CJK bookmarks}
+%
+% \begin{macro}{\HyPsd@CJKhook}
+% Some internal commands of package cjk are redefined
+% to avoid error messages. For a rudimental support
+% of CJK bookmarks the active characters are
+% redefined so that they print themselves.
+%
+% After preprocessing of Big5 encoded data the
+% following string for a double-byte character
+% is emitted:
+%\begin{verbatim}
+%^^7f<arg1>^^7f<arg2>^^7f
+%\end{verbatim}
+% \verb|<arg1>| is the first byte in the range (always $>$ 0x80);
+% \verb|<arg2>| is the second byte in decimal notation
+% ($\ge$ 0x40).
+% \begin{macrocode}
+\begingroup
+ \catcode"7F=\active
+ \toks@{%
+ \let\CJK@ignorespaces\empty
+ \def\CJK@char#1{\@gobbletwo}%
+ \let\CJK@charx\@gobblefour
+ \let\CJK@punctchar\@gobblefour
+ \def\CJK@punctcharx#1{\@gobblefour}%
+ \catcode"7F=\active
+ \def^^7f#1^^7f#2^^7f{%
+ \string #1\HyPsd@DecimalToOctal{#2}%
+ }%
+ % ... ?
+ \ifHy@unicode
+ \def\Hy@cjkpu{\80}%
+ \else
+ \let\Hy@cjkpu\@empty
+ \fi
+ \HyPsd@CJKActiveChars
+ }%
+ \count@=127 %
+ \@whilenum\count@<255 \do{%
+ \advance\count@ by 1 %
+ \lccode`\~=\count@
+ \lowercase{%
+ \toks@\expandafter{\the\toks@ ~}%
+ }%
+ }%
+ \toks@\expandafter{\the\toks@ !}%
+ \xdef\HyPsd@CJKhook@bookmarks{%
+ \the\toks@
+ }%
+\endgroup
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@CJKActiveChars}
+% The macro \cmd{\HyPsd@CJKActiveChars} is only defined
+% to limit the memory consumption of \cmd{\HyPsd@CJKhook}.
+% \begin{macrocode}
+\def\HyPsd@CJKActiveChars#1{%
+ \ifx#1!%
+ \let\HyPsd@CJKActiveChars\relax
+ \else
+ \edef#1{\noexpand\Hy@cjkpu\string#1}%
+ \fi
+ \HyPsd@CJKActiveChars
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@DecimalToOctal}
+% A character, given by the decimal number is converted
+% to a PDF character.
+% \begin{macrocode}
+\def\HyPsd@DecimalToOctal#1{%
+ \ifcase #1 %
+ \000\or \001\or \002\or \003\or \004\or \005\or \006\or \007%
+ \or \010\or \011\or \012\or \013\or \014\or \015\or \016\or \017%
+ \or \020\or \021\or \022\or \023\or \024\or \025\or \026\or \027%
+ \or \030\or \031\or \032\or \033\or \034\or \035\or \036\or \037%
+ \or \040\or \041\or \042\or \043\or \044\or \045\or \046\or \047%
+ \or \050\or \051\or \052\or \053\or \054\or \055\or \056\or \057%
+ \or 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7%
+ \or 8\or 9\or \072\or \073\or \074\or \075\or \076\or \077%
+ \or @\or A\or B\or C\or D\or E\or F\or G%
+ \or H\or I\or J\or K\or L\or M\or N\or O%
+ \or P\or Q\or R\or S\or T\or U\or V\or W%
+ \or X\or Y\or Z\or \133\or \134\or \135\or \136\or \137%
+ \or \140\or a\or b\or c\or d\or e\or f\or g%
+ \or h\or i\or j\or k\or l\or m\or n\or o%
+ \or p\or q\or r\or s\or t\or u\or v\or w%
+ \or x\or y\or z\or \173\or \174\or \175\or \176\or \177%
+ \or \200\or \201\or \202\or \203\or \204\or \205\or \206\or \207%
+ \or \210\or \211\or \212\or \213\or \214\or \215\or \216\or \217%
+ \or \220\or \221\or \222\or \223\or \224\or \225\or \226\or \227%
+ \or \230\or \231\or \232\or \233\or \234\or \235\or \236\or \237%
+ \or \240\or \241\or \242\or \243\or \244\or \245\or \246\or \247%
+ \or \250\or \251\or \252\or \253\or \254\or \255\or \256\or \257%
+ \or \260\or \261\or \262\or \263\or \264\or \265\or \266\or \267%
+ \or \270\or \271\or \272\or \273\or \274\or \275\or \276\or \277%
+ \or \300\or \301\or \302\or \303\or \304\or \305\or \306\or \307%
+ \or \310\or \311\or \312\or \313\or \314\or \315\or \316\or \317%
+ \or \320\or \321\or \322\or \323\or \324\or \325\or \326\or \327%
+ \or \330\or \331\or \332\or \333\or \334\or \335\or \336\or \337%
+ \or \340\or \341\or \342\or \343\or \344\or \345\or \346\or \347%
+ \or \350\or \351\or \352\or \353\or \354\or \355\or \356\or \357%
+ \or \360\or \361\or \362\or \363\or \364\or \365\or \366\or \367%
+ \or \370\or \371\or \372\or \373\or \374\or \375\or \376\or \377%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{CJK unicode}
+%
+% \begin{macro}{\HyPsd@CJKhook@unicode}
+% \begin{macrocode}
+\def\HyPsd@CJKhook@unicode{%
+ \let\Unicode\HyPsd@CJK@Unicode
+ \let\CJKnumber\HyPsd@CJKnumber
+ \let\CJKdigits\HyPsd@CJKdigits
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@CJK@Unicode}
+% \begin{macrocode}
+\def\HyPsd@CJK@Unicode#1#2{%
+ \ifnum#1<256 %
+ \HyPsd@DecimalToOctalFirst{#1}%
+ \HyPsd@DecimalToOctalSecond{#2}%
+ \else
+ \933%
+ \expandafter\expandafter\expandafter\HyPsd@HighA
+ \intcalcDiv{#1}{4}!%
+ \933%
+ \ifcase\intcalcMod{#1}{4} %
+ 4\or 5\or 6\or 7%
+ \fi
+ \HyPsd@DecimalToOctalSecond{#2}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\def\HyPsd@HighA#1!{%
+ \expandafter\expandafter\expandafter\HyPsd@HighB
+ \IntCalcDiv#1!64!!%
+ \expandafter\expandafter\expandafter\HyPsd@HighD
+ \IntCalcMod#1!64!!%
+}
+\def\HyPsd@HighB#1!{%
+ \expandafter\expandafter\expandafter\HyPsd@HighC
+ \IntCalcDec#1!!%
+}
+\def\HyPsd@HighC#1!{%
+ \IntCalcDiv#1!4!%
+ \@backslashchar
+ \IntCalcMod#1!4!%
+}
+\def\HyPsd@HighD#1!{%
+ \ifcase\IntCalcDiv#1!8! %
+ 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7%
+ \fi
+ \ifcase\IntCalcMod#1!8! %
+ 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7%
+ \fi
+}
+\def\HyPsd@DecimalToOctalFirst#1{%
+ \9%
+ \ifcase#1 %
+ 000\or 001\or 002\or 003\or 004\or 005\or 006\or 007%
+ \or 010\or 011\or 012\or 013\or 014\or 015\or 016\or 017%
+ \or 020\or 021\or 022\or 023\or 024\or 025\or 026\or 027%
+ \or 030\or 031\or 032\or 033\or 034\or 035\or 036\or 037%
+ \or 040\or 041\or 042\or 043\or 044\or 045\or 046\or 047%
+ \or 050\or 051\or 052\or 053\or 054\or 055\or 056\or 057%
+ \or 060\or 061\or 062\or 063\or 064\or 065\or 066\or 067%
+ \or 070\or 071\or 072\or 073\or 074\or 075\or 076\or 077%
+ \or 100\or 101\or 102\or 103\or 104\or 105\or 106\or 107%
+ \or 120\or 111\or 112\or 113\or 114\or 115\or 116\or 117%
+ \or 120\or 121\or 122\or 123\or 124\or 125\or 126\or 127%
+ \or 130\or 131\or 132\or 133\or 134\or 135\or 136\or 137%
+ \or 140\or 141\or 142\or 143\or 144\or 145\or 146\or 147%
+ \or 150\or 151\or 152\or 153\or 154\or 155\or 156\or 157%
+ \or 160\or 161\or 162\or 163\or 164\or 165\or 166\or 167%
+ \or 170\or 171\or 172\or 173\or 174\or 175\or 176\or 177%
+ \or 200\or 201\or 202\or 203\or 204\or 205\or 206\or 207%
+ \or 210\or 211\or 212\or 213\or 214\or 215\or 216\or 217%
+ \or 220\or 221\or 222\or 223\or 224\or 225\or 226\or 227%
+ \or 230\or 231\or 232\or 233\or 234\or 235\or 236\or 237%
+ \or 240\or 241\or 242\or 243\or 244\or 245\or 246\or 247%
+ \or 250\or 251\or 252\or 253\or 254\or 255\or 256\or 257%
+ \or 260\or 261\or 262\or 263\or 264\or 265\or 266\or 267%
+ \or 270\or 271\or 272\or 273\or 274\or 275\or 276\or 277%
+ \or 300\or 301\or 302\or 303\or 304\or 305\or 306\or 307%
+ \or 310\or 311\or 312\or 313\or 314\or 315\or 316\or 317%
+ \or 320\or 321\or 322\or 323\or 324\or 325\or 326\or 327%
+ \or 330\or 331\or 332\or 333\or 334\or 335\or 336\or 337%
+ \or 340\or 341\or 342\or 343\or 344\or 345\or 346\or 347%
+ \or 350\or 351\or 352\or 353\or 354\or 355\or 356\or 357%
+ \or 360\or 361\or 362\or 363\or 364\or 365\or 366\or 367%
+ \or 370\or 371\or 372\or 373\or 374\or 375\or 376\or 377%
+ \fi
+}
+\def\HyPsd@DecimalToOctalSecond#1{%
+ \ifcase #1 %
+ \000\or \001\or \002\or \003\or \004\or \005\or \006\or \007%
+ \or \010\or \011\or \012\or \013\or \014\or \015\or \016\or \017%
+ \or \020\or \021\or \022\or \023\or \024\or \025\or \026\or \027%
+ \or \030\or \031\or \032\or \033\or \034\or \035\or \036\or \037%
+ \or \040\or \041\or \042\or \043\or \044\or \045\or \046\or \047%
+ \or \050\or \051\or \052\or \053\or \054\or \055\or \056\or \057%
+ \or \060\or \061\or \062\or \063\or \064\or \065\or \066\or \067%
+ \or \070\or \071\or \072\or \073\or \074\or \075\or \076\or \077%
+ \or \100\or \101\or \102\or \103\or \104\or \105\or \106\or \107%
+ \or \110\or \111\or \112\or \113\or \114\or \115\or \116\or \117%
+ \or \120\or \121\or \122\or \123\or \124\or \125\or \126\or \127%
+ \or \130\or \131\or \132\or \133\or \134\or \135\or \136\or \137%
+ \or \140\or \141\or \142\or \143\or \144\or \145\or \146\or \147%
+ \or \150\or \151\or \152\or \153\or \154\or \155\or \156\or \157%
+ \or \160\or \161\or \162\or \163\or \164\or \165\or \166\or \167%
+ \or \170\or \171\or \172\or \173\or \174\or \175\or \176\or \177%
+ \or \200\or \201\or \202\or \203\or \204\or \205\or \206\or \207%
+ \or \210\or \211\or \212\or \213\or \214\or \215\or \216\or \217%
+ \or \220\or \221\or \222\or \223\or \224\or \225\or \226\or \227%
+ \or \230\or \231\or \232\or \233\or \234\or \235\or \236\or \237%
+ \or \240\or \241\or \242\or \243\or \244\or \245\or \246\or \247%
+ \or \250\or \251\or \252\or \253\or \254\or \255\or \256\or \257%
+ \or \260\or \261\or \262\or \263\or \264\or \265\or \266\or \267%
+ \or \270\or \271\or \272\or \273\or \274\or \275\or \276\or \277%
+ \or \300\or \301\or \302\or \303\or \304\or \305\or \306\or \307%
+ \or \310\or \311\or \312\or \313\or \314\or \315\or \316\or \317%
+ \or \320\or \321\or \322\or \323\or \324\or \325\or \326\or \327%
+ \or \330\or \331\or \332\or \333\or \334\or \335\or \336\or \337%
+ \or \340\or \341\or \342\or \343\or \344\or \345\or \346\or \347%
+ \or \350\or \351\or \352\or \353\or \354\or \355\or \356\or \357%
+ \or \360\or \361\or \362\or \363\or \364\or \365\or \366\or \367%
+ \or \370\or \371\or \372\or \373\or \374\or \375\or \376\or \377%
+ \fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\HyPsd@CJKnumber#1{%
+ \ifnum#1<\z@
+ \CJK@minus
+ \expandafter\HyPsd@@CJKnumber\expandafter{\number-\number#1}%
+ \else
+ \expandafter\HyPsd@@CJKnumber\expandafter{\number#1}%
+ \fi
+}
+\def\HyPsd@@CJKnumber#1{%
+ \ifcase#1 %
+ \CJK@zero\or\CJK@one\or\CJK@two\or\CJK@three\or\CJK@four\or
+ \CJK@five\or\CJK@six\or\CJK@seven\or\CJK@eight\or\CJK@nine\or
+ \CJK@ten\or\CJK@ten\CJK@one\or\CJK@ten\CJK@two\or
+ \CJK@ten\CJK@three\or\CJK@ten\CJK@four\or\CJK@ten\CJK@five\or
+ \CJK@ten\CJK@six\or\CJK@ten\CJK@seven\or\CJK@ten\CJK@eight\or
+ \CJK@ten\CJK@nine
+ \else
+ \ifnum#1<10000 %
+ \HyPsd@CJKnumberFour#1!\@empty{20}%
+ \@empty
+ \else
+ \ifnum#1<100000000 %
+ \expandafter\expandafter\expandafter\HyPsd@CJKnumberFour
+ \IntCalcDiv#1!10000!%
+ !{}{20}%
+ \CJK@tenthousand
+ \expandafter\expandafter\expandafter\HyPsd@CJKnumberFour
+ \IntCalcMod#1!10000!%
+ !\CJK@zero{10}%
+ \@empty
+ \else
+ \expandafter\HyPsd@CJKnumberLarge
+ \number\IntCalcDiv#1!100000000!\expandafter!%
+ \number\IntCalcMod#1!100000000!!%
+ \fi
+ \fi
+ \fi
+}
+\def\HyPsd@CJKnumberLarge#1!#2!{%
+ \HyPsd@CJKnumberFour#1!{}{20}%
+ \CJK@hundredmillion
+ \ifnum#2=\z@
+ \else
+ \expandafter\expandafter\expandafter\HyPsd@CJKnumberFour
+ \IntCalcDiv#2!10000!%
+ !\CJK@zero{10}%
+ \CJK@tenthousand
+ \expandafter\expandafter\expandafter\HyPsd@CJKnumberFour
+ \IntCalcMod#2!10000!%
+ !\CJK@zero{10}%
+ \@empty
+ \fi
+}
+\def\HyPsd@CJKnumberFour#1!#2#3{%
+ \ifnum#1=\z@
+ \expandafter\@gobble
+ \else
+ \ifnum#1<1000 %
+ #2%
+ \HyPsd@CJKnumberThree#1!{}{#3}%
+ \else
+ \HyPsd@@CJKnumber{\IntCalcDiv#1!1000!}%
+ \CJK@thousand
+ \expandafter\expandafter\expandafter\HyPsd@CJKnumberThree
+ \IntCalcMod#1!1000!%
+ !\CJK@zero{10}%
+ \fi
+ \fi
+}
+\def\HyPsd@CJKnumberThree#1!#2#3{%
+ \ifnum#1=\z@
+ \else
+ \ifnum#1<100 %
+ #2%
+ \HyPsd@CJKnumberTwo#1!{}{#3}%
+ \else
+ \HyPsd@@CJKnumber{\IntCalcDiv#1!100!}%
+ \CJK@hundred
+ \expandafter\expandafter\expandafter\HyPsd@CJKnumberTwo
+ \IntCalcMod#1!100!%
+ !\CJK@zero{10}%
+ \fi
+ \fi
+}
+\def\HyPsd@CJKnumberTwo#1!#2#3{%
+ \ifnum#1=\z@
+ \else
+ \ifnum#1<#3 %
+ #2%
+ \HyPsd@@CJKnumber{#1}%
+ \else
+ \HyPsd@@CJKnumber{\IntCalcDiv#1!10!}%
+ \CJK@ten
+ \ifnum\IntCalcMod#1!10!=\z@
+ \else
+ \HyPsd@@CJKnumber{\IntCalcMod#1!10!}%
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\HyPsd@CJKdigits#1{%
+ \ifx*#1\relax
+ \expandafter\HyPsd@@CJKdigits\expandafter\CJK@zero
+ \else
+ \HyPsd@@CJKdigits\CJK@null{#1}%
+ \fi
+}
+\def\HyPsd@@CJKdigits#1#2{%
+ \ifx\\#2\\%
+ \else
+ \HyPsd@@@CJKdigits#1#2\@nil
+ \fi
+}%
+\def\HyPsd@@@CJKdigits#1#2#3\@nil{%
+ \HyPsd@CJKdigit#1{#2}%
+ \ifx\\#3\\%
+ \expandafter\@gobble
+ \else
+ \expandafter\@firstofone
+ \fi
+ {%
+ \HyPsd@@@CJKdigits#1#3\@nil
+ }%
+}
+\def\HyPsd@CJKdigit#1#2{%
+ \ifcase#2 %
+ #1\or
+ \CJK@one\or\CJK@two\or\CJK@three\or\CJK@four\or
+ \CJK@five\or\CJK@six\or\CJK@seven\or\CJK@eight\or\CJK@nine
+ \fi
+}
+% \end{macrocode}
+%
+% \subsubsection{\texorpdfstring{\cs{@inmathwarn}}{\\@inmathwarn}-Patch}
+% \begin{macro}{\HyPsd@inmathwarn}
+% The patch of \cs{@inmathwarn} is needed to get rid of the
+% infinite error loop with glyphs of other encodings
+% (see the explanation above). Potentially the patch is
+% dangerous, if the code in |ltoutenc.dtx| changes.
+% Checked with \LaTeXe{} versions [1998/06/01] and
+% [1998/12/01]. I expect that versions below [1995/12/01]
+% don't work.
+%
+% To understand the patch easier, the original code of
+% \cs{@current@cmd} and \cs{@changed@cmd} follows
+% (\LaTeXe{} release [1998/12/01]).
+% In the normal case \cs{pdfstringdef} is executed in a context
+% where \cs{protect} has the meaning of \cs{@typesetprotect}
+% (=\cs{relax}).
+%\begin{verbatim}
+%\def\@current@cmd#1{%
+% \ifx\protect\@typeset@protect
+% \@inmathwarn#1%
+% \else
+% \noexpand#1\expandafter\@gobble
+% \fi}
+%\def\@changed@cmd#1#2{%
+% \ifx\protect\@typeset@protect
+% \@inmathwarn#1%
+% \expandafter\ifx\csname\cf@encoding\string#1\endcsname\relax
+% \expandafter\ifx\csname ?\string#1\endcsname\relax
+% \expandafter\def\csname ?\string#1\endcsname{%
+% \TextSymbolUnavailable#1%
+% }%
+% \fi
+% \global\expandafter\let
+% \csname\cf@encoding \string#1\expandafter\endcsname
+% \csname ?\string#1\endcsname
+% \fi
+% \csname\cf@encoding\string#1%
+% \expandafter\endcsname
+% \else
+% \noexpand#1%
+% \fi}
+%\gdef\TextSymbolUnavailable#1{%
+% \@latex@error{%
+% Command \protect#1 unavailable in encoding \cf@encoding%
+% }\@eha}
+%\def\@inmathwarn#1{%
+% \ifmmode
+% \@latex@warning{Command \protect#1 invalid in math mode}%
+% \fi}
+%\end{verbatim}
+% \begin{macrocode}
+\def\HyPsd@inmathwarn#1#2{%
+ \ifx#2\expandafter
+ \expandafter\ifx\csname\cf@encoding\string#1\endcsname\relax
+ \HyPsd@GLYPHERR
+ \expandafter\@gobble\string#1%
+ >%
+ \expandafter\expandafter\expandafter\HyPsd@EndWithElse
+ \else
+ \expandafter\expandafter\expandafter\HyPsd@GobbleFiFi
+ \fi
+ \else
+ \expandafter#2%
+ \fi
+}
+\def\HyPsd@GobbleFiFi#1\fi#2\fi{}
+\def\HyPsd@EndWithElse#1\else{\else}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyPsd@add@accent}
+% \begin{macrocode}
+\def\HyPsd@add@accent#1#2{%
+ \HyPsd@GLYPHERR\expandafter\@gobble\string#1+\string#2>%
+ #2%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Unexpandable spaces}
+%
+% \begin{macro}{\HyPsd@LetUnexpandableSpace}
+% In \cmd{\HyPsd@@ProtectSpaces} the space tokens are replaced
+% by not expandable commands, that work like spaces:
+% \begin{itemize}
+% \item So they can caught by undelimited arguments.
+% \item And they work in number, dimen, and skip
+% assignments.
+% \end{itemize}
+% These properties are used in \cmd{\HyPsd@CheckCatcodes}.
+% \begin{macrocode}
+\def\HyPsd@LetUnexpandableSpace#1{%
+ \expandafter\futurelet\expandafter#1\expandafter\@gobble\space\relax
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@UnexpandableSpace}
+% \cmd{\HyPsd@UnexpandableSpace} is used
+% in \cmd{\HyPsd@@ProtectSpaces}.
+% In \cmd{HyPsd@@ProtectSpaces} the space tokens are replaced
+% by unexpandable commands \cmd{\HyPsd@UnexpandableSpace},
+% but that have the effect of spaces.
+% \begin{macrocode}
+\HyPsd@LetUnexpandableSpace\HyPsd@UnexpandableSpace
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Marker for commands}
+% \begin{macro}{\HyPsd@XSPACE}
+% \begin{macro}{\HyPsd@ITALCORR}
+% \begin{macro}{\HyPsd@GLYPHERR}
+% Some commands and informations cannot be utilized before
+% the string expansion and the checking process.
+% Command names are filtered out, so we need another way
+% to transport the information: An unusual |#| with catcode
+% 12 marks the beginning of the extra information.
+% \begin{macrocode}
+\edef\HyPsd@XSPACE{\string#\string X}
+\edef\HyPsd@ITALCORR{\string#\string I}
+\edef\HyPsd@GLYPHERR{\string#\string G}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{\texorpdfstring{\cs{hspace}}{\\hspace} fix}
+% \begin{macro}{\HyPsd@hspace}
+% \begin{macrocode}
+\def\HyPsd@hspace#1{\HyPsd@@hspace#1*\END}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@@hspace}
+% \cs{HyPsd@@hspace} checks whether \cs{hspace}
+% is called in its star form.
+% \begin{macrocode}
+\def\HyPsd@@hspace#1*#2\END{%
+ \ifx\\#2\\%
+ \HyPsd@hspacetest{#1}%
+ \else
+ \expandafter\HyPsd@hspacetest
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@hspacetest}
+% \cs{HyPsd@hyspacetest} replaces the \cs{hspace} by a space, if
+% the length is greater than zero.
+% \begin{macrocode}
+\def\HyPsd@hspacetest#1{\ifdim#1>\z@\space\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Fix for AMS classes}
+%
+% \begin{macrocode}
+\ltx@IfUndefined{tocsection}{%
+ \let\HyPsd@AMSclassfix\relax
+}{%
+ \def\HyPsd@AMSclassfix{%
+ \let\tocpart\HyPsd@tocsection
+ \let\tocchapter\HyPsd@tocsection
+ \let\tocappendix\HyPsd@tocsection
+ \let\tocsection\HyPsd@tocsection
+ \let\tocsubsection\HyPsd@tocsection
+ \let\tocsubsubsection\HyPsd@tocsection
+ \let\tocparagraph\HyPsd@tocsection
+ }%
+ \def\HyPsd@tocsection#1#2#3{%
+ \if @#2@\else\if @#1@\else#1 \fi#2. \fi
+ #3%
+ }%
+}
+% \end{macrocode}
+%
+% \subsubsection{Reference commands}
+%
+% \begin{macro}{\HyPsd@href}
+% \begin{macrocode}
+\def\HyPsd@href#1#{\@secondoftwo}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyPsd@ref}
+% Macro \cs{HyPsd@ref} calls the macro \cs{HyPsd@@ref} for star checking.
+% The same methods like in \cs{HyPsd@hspace} is used.
+% \begin{macrocode}
+\def\HyPsd@ref#1{\HyPsd@@ref#1*\END}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@@ref}
+% Macro \cs{HyPsd@@ref} checks if a star is present.
+% \begin{macrocode}
+\def\HyPsd@@ref#1*#2\END{%
+ \ifx\\#2\\%
+ \HyPsd@@@ref{#1}%
+ \else
+ \expandafter\HyPsd@@@ref
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@@@ref}
+% \cs{HyPsd@@@ref} does the work and extracts the first argument.
+% \begin{macrocode}
+\def\HyPsd@@@ref#1{%
+ \expandafter\ifx\csname r@#1\endcsname\relax
+ ??%
+ \else
+ \expandafter\expandafter\expandafter
+ \@car\csname r@#1\endcsname\@nil
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyPsd@pageref}
+% Macro \cs{HyPsd@pageref} calls the macro \cs{HyPsd@@pageref} for star checking.
+% The same methods like in \cs{HyPsd@hspace} is used.
+% \begin{macrocode}
+\def\HyPsd@pageref#1{\HyPsd@@pageref#1*\END}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@@pageref}
+% Macro \cs{HyPsd@@pageref} checks if a star is present.
+% \begin{macrocode}
+\def\HyPsd@@pageref#1*#2\END{%
+ \ifx\\#2\\%
+ \HyPsd@@@pageref{#1}%
+ \else
+ \expandafter\HyPsd@@@pageref
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@@@pageref}
+% \cs{HyPsd@@@pageref} does the work and extracts the second argument.
+% \begin{macrocode}
+\def\HyPsd@@@pageref#1{%
+ \expandafter\ifx\csname r@#1\endcsname\relax
+ ??%
+ \else
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\@car
+ \expandafter\expandafter\expandafter\@gobble
+ \csname r@#1\endcsname{}\@nil
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyPsd@nameref}
+% Macro \cs{HyPsd@nameref} calls the macro \cs{HyPsd@@nameref} for star checking.
+% The same methods like in \cs{HyPsd@hspace} is used.
+% \begin{macrocode}
+\def\HyPsd@nameref#1{\HyPsd@@nameref#1*\END}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@@nameref}
+% Macro \cs{HyPsd@@nameref} checks if a star is present.
+% \begin{macrocode}
+\def\HyPsd@@nameref#1*#2\END{%
+ \ifx\\#2\\%
+ \HyPsd@@@nameref{#1}%
+ \else
+ \expandafter\HyPsd@@@nameref
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@@@nameref}
+% \cs{HyPsd@@@nameref} does the work and extracts the third argument.
+% \begin{macrocode}
+\def\HyPsd@@@nameref#1{%
+ \expandafter\ifx\csname r@#1\endcsname\relax
+ ??%
+ \else
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\@car
+ \expandafter\expandafter\expandafter\@gobbletwo
+ \csname r@#1\endcsname{}{}\@nil
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyPsd@autoref}
+% Macro \cs{HyPsd@autoref} calls the macro \cs{HyPsd@@autoref} for star checking.
+% The same methods like in \cs{HyPsd@hspace} is used.
+% \begin{macrocode}
+\def\HyPsd@autoref#1{\HyPsd@@autoref#1*\END}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@@autoref}
+% Macro \cs{HyPsd@@autoref} checks if a star is present.
+% \begin{macrocode}
+\def\HyPsd@@autoref#1*#2\END{%
+ \ifx\\#2\\%
+ \HyPsd@@@autoref{#1}%
+ \else
+ \expandafter\HyPsd@@@autoref
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@@@autoref}
+% \cs{HyPsd@@@autoref} does the work and extracts the second argument.
+% \begin{macrocode}
+\def\HyPsd@@@autoref#1{%
+ \expandafter\ifx\csname r@#1\endcsname\relax
+ ??%
+ \else
+ \expandafter\expandafter\expandafter\HyPsd@autorefname
+ \csname r@#1\endcsname{}{}{}{}\@nil
+ \expandafter\expandafter\expandafter
+ \@car\csname r@#1\endcsname\@nil
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@autorefname}
+% At least a basic definition for getting the \cs{autoref} name.
+% \begin{macrocode}
+\def\HyPsd@autorefname#1#2#3#4#5\@nil{%
+ \ifx\\#4\\%
+ \else
+ \HyPsd@@autorefname#4.\@nil
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@@autorefname}
+% \begin{macrocode}
+\def\HyPsd@@autorefname#1.#2\@nil{%
+ \ltx@IfUndefined{#1autorefname}{%
+ \ltx@IfUndefined{#1name}{%
+ }{%
+ \csname#1name\endcsname\space
+ }%
+ }{%
+ \csname#1autorefname\endcsname\space
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Redefining the defining commands}
+% \label{defcmd}
+% Definitions aren't allowed, because they aren't executed in
+% an only expanding context. So the command to be defined
+% isn't defined and can perhaps be undefined. This would causes
+% TeX to stop with an error message.
+% With a deep trick it is possible to define commands in such
+% a context: \cs{csname} does the job, it defines the command
+% to be \cs{relax}, if it has no meaning.
+%
+% Active characters cannot be defined with this trick. It is
+% possible to define all undefined active characters
+% (perhaps that they have the meaning of \cs{relax}).
+% To avoid side effects this should be done in \cs{pdfstringdef}
+% shortly before the \cs{xdef} job. But checking and defining
+% all possible active characters of the full range (0 until 255)
+% would take a while. \cs{pdfstringdef} is slow enough, so
+% this isn't done.
+%
+% \cs{HyPsd@DefCommand} and \cs{HyPsd@LetCommand} expands to the
+% commands \cs{<def>-command} and \cs{<let>-command}
+% with the meaning of \cs{def} and \cs{let}. So it is detected by
+% \cs{HyPsd@CheckCatcodes} and the command name \cs{<def>-command}
+% or \cs{<let>-command} should indicate a forbidden definition
+% command.
+%
+% The command to be defined is converted to a string and back
+% to a command name with the help of \cs{csname}. If the
+% command is already defined, \cs{noexpand} prevents a
+% further expansion, even though the command would
+% expand to legal stuff. If the command don't have the meaning
+% of \cs{relax}, \cs{HyPsd@CheckCatcodes} will produce a warning.
+% (The command itself can be legal, but the warning is legitimate
+% because of the position after a defining command.)
+%
+% The difference between \cs{HyPsd@DefCommand} and
+% \cs{HyPsdLetCommand} is that the first one also cancels this
+% arguments, the parameter and definition text. The right side
+% of the \cs{let} commands cannot be canceled with an undelimited
+% parameter because of a possible space token after \cs{futurelet}.
+%
+% To avoid unmachted \cs{if...} tokens, the cases
+% \verb|\let\if...\iftrue| and \verb|\let\if...\iffalse|
+% are checked and ignored.
+%
+% \begin{macro}{\HyPsd@DefCommand}
+% \begin{macro}{\HyPsd@LetCommand}
+% \begin{macrocode}
+\begingroup
+ \def\x#1#2{%
+ \endgroup
+ \let#1\def
+ \def\HyPsd@DefCommand##1##2##{%
+ #1%
+ \expandafter\noexpand
+ \csname\expandafter\@gobble\string##1\@empty\endcsname
+ \@gobble
+ }%
+ \let#2\let
+ \def\HyPsd@@LetCommand##1{%
+ \expandafter\ifx\csname##1\expandafter\endcsname
+ \csname iftrue\endcsname
+ \pdfstringdefWarn\let
+ \expandafter\@gobble
+ \else
+ \expandafter\ifx\csname##1\expandafter\endcsname
+ \csname iffalse\endcsname
+ \pdfstringdefWarn\let
+ \expandafter\expandafter\expandafter\@gobble
+ \else
+ #2%
+ \expandafter\noexpand
+ \csname##1\expandafter\expandafter\expandafter\endcsname
+ \fi
+ \fi
+ }%
+ }%
+\expandafter\x\csname <def>-command\expandafter\endcsname
+ \csname <let>-command\endcsname
+\def\HyPsd@LetCommand#1{%
+ \expandafter\expandafter\expandafter\HyPsd@@LetCommand
+ \expandafter\expandafter\expandafter{%
+ \expandafter\@gobble\string#1\@empty
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{^^A
+% \texorpdfstring{\cs{ifnextchar}}{\\ifnextchar}^^A
+% }
+% \begin{macro}{\HyPsd@ifnextchar}
+% In \cs{pdfstringdef} \cs{@ifnextchar} is disabled
+% via a \cs{let} command to save time. First a
+% warning message is given, then the three arguments
+% are canceled. \cs{@ifnextchar} cannot work in a correct
+% manner, because it uses \cs{futurelet}, but this is a
+% stomach feature, that doesn't work in an expanding context.
+% There are several variants of \cs{@ifnextchar}:
+% \begin{itemize}
+% \item \cs{@ifnextchar}
+% \item \cs{kernel@ifnextchar}
+% \item \cs{new@ifnextchar} from package \verb|amsgen.sty|
+% (bug report latex/3662).
+% \end{itemize}
+% \begin{macrocode}
+\def\HyPsd@ifnextchar#1{%
+ \pdfstringdefWarn#1%
+ \expandafter\@gobbletwo\@gobble
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{^^A
+% \texorpdfstring{\cs{@protected@testoptifnextchar}}^^A
+% {\\@protected@testopt}^^A
+% }
+% \begin{macro}{\HyPsd@protected@testopt}
+% Macros with optional arguments doesn't work properly, because
+% they call \cmd{\@ifnextchar} to detect the optional argument
+% (see the explanation of \cmd{\HyPsd@ifnextchar}).
+% But a warning, that \cmd{\@ifnextchar} doesn't work, doesn't
+% help the user very much. Therefore \cmd{\@protected@testopt}
+% is also disabled, because its first argument is the problematic
+% macro with the optional argument and it is called before
+% \cmd{\@ifnextchar}.
+% \begin{macrocode}
+\def\HyPsd@protected@testopt#1{%
+ \pdfstringdefWarn#1%
+ \@gobbletwo
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Help macros for postprocessing}
+%
+% \subsubsection{Generic warning.}
+% \begin{macro}{\HyPsd@Warning}
+% For several reasons \cs{space} is masked and does not have its
+% normal meaning. But it is used in warning messages, so it is
+% redefined locally:
+% \begin{macrocode}
+\def\HyPsd@Warning#1{%
+ \begingroup
+ \let\space\ltx@space
+ \Hy@Warning{#1}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Protecting spaces}
+%
+% \begin{macrocode}
+\RequirePackage{etexcmds}[2007/09/09]
+\ifetex@unexpanded
+ \expandafter\@secondoftwo
+\else
+ \expandafter\@firstoftwo
+\fi
+{%
+% \end{macrocode}
+%
+% \begin{macro}{\HyPsd@ProtectSpaces}
+% \cs{HyPsd@ProtectSpaces} calls with the expanded
+% string \cs{HyPsd@@ProtectSpacesFi}. The expanded string is
+% protected by \verb+|+ at the beginning and end of
+% the expanded string. Because of this there can be no group
+% at the beginning or end of the string and grouping characters
+% are not removed by the call of \cs{HyPsd@@ProtectSpacesFi}.
+% \begin{macrocode}
+ \def\HyPsd@ProtectSpaces#1{%
+ \iftrue
+ \expandafter\HyPsd@@ProtectSpacesFi
+ \expandafter|\expandafter\@empty#1| \HyPsd@End#1%
+ \fi
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@@ProtectSpacesFi}
+% The string can contain command tokens, so it is better
+% to use an \cs{def} instead of an \cs{edef}.
+% \begin{macrocode}
+ \def\HyPsd@@ProtectSpacesFi#1 #2\HyPsd@End#3\fi{%
+ \fi
+ \ifx\scrollmode#2\scrollmode
+ \HyPsd@RemoveMask#1\HyPsd@End#3%
+ \else
+ \gdef#3{#1\HyPsd@UnexpandableSpace#2}%
+ \expandafter\HyPsd@@ProtectSpacesFi#3\HyPsd@End#3%
+ \fi
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Remove mask.}
+% \begin{macro}{\HyPsd@RemoveMask}
+% \cs{HyPsd@RemoveMask} removes the protecting \verb+|+.
+% It is used by \cs{HyPsd@@ProtectSpacesFi} and by the code in
+% \cs{pdfstringdef} that removes the grouping chararcters.
+% \begin{macrocode}
+ \def\HyPsd@RemoveMask|#1|\HyPsd@End#2{%
+ \toks@\expandafter{#1}%
+ \xdef#2{\the\toks@}%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+}{%
+ \let\HyPsd@fi\fi
+ \def\HyPsd@ProtectSpaces#1{%
+ \xdef#1{%
+ \iftrue
+ \expandafter\HyPsd@@ProtectSpacesFi
+ \expandafter|\expandafter\@empty#1| %
+ \HyPsd@fi
+ }%
+ \expandafter\HyPsd@RemoveMask#1\HyPsd@End#1%
+ }%
+ \def\HyPsd@@ProtectSpacesFi#1 #2\HyPsd@fi{%
+ \fi
+ \etex@unexpanded{#1}%
+ \ifx\scrollmode#2\scrollmode
+ \else
+ \HyPsd@@ProtectSpacesFi\HyPsd@UnexpandableSpace#2%
+ \HyPsd@fi
+ }%
+ \def\HyPsd@RemoveMask|#1|\HyPsd@End#2{%
+ \xdef#2{\etex@unexpanded\expandafter{#1}}%
+ }%
+}
+% \end{macrocode}
+%
+% \subsubsection{Remove grouping braces}
+% \begin{macro}{\HyPsd@RemoveBraces}
+% |#1| contains the expanded string, the result will
+% be locally written in command \cs{HyPsd@String}.
+% \begin{macrocode}
+\def\HyPsd@RemoveBraces#1{%
+ \ifx\scrollmode#1\scrollmode
+ \else
+ \HyPsd@@RemoveBracesFi#1\HyPsd@End{#1}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@@RemoveBraces}
+% \cs{HyPsd@@RemoveBraces} is called with the expanded string,
+% the end marked by \cs{HyPsd@End}, the expanded string again, but
+% enclosed in braces and the string command. The first expanded
+% string is scanned by the parameter text |#1#2|.
+% By a comparison with the original form in |#3| we can decide
+% whether |#1| is a single token or a group. To avoid the
+% case that |#2| is a group, the string is extended by a \verb+|+
+% before.
+%
+% While removing the grouping braces an italic correction
+% marker is inserted for supporting package |xspace| and
+% letting ligatures broken.
+%
+% Because the string is already expanded, the \cs{if} commands
+% should disappeared. So we can move some parts out
+% of the argument of \cs{ltx@ReturnAfterFi}.
+% \begin{macrocode}
+\def\HyPsd@@RemoveBracesFi#1#2\HyPsd@End#3\fi{%
+ \fi
+ \def\Hy@temp@A{#1#2}%
+ \def\Hy@temp@B{#3}%
+ \ifx\Hy@temp@A\Hy@temp@B
+ \expandafter\def\expandafter\HyPsd@String\expandafter{%
+ \HyPsd@String#1%
+ }%
+ \ifx\scrollmode#2\scrollmode
+ \else
+ \Hy@ReturnAfterFiFiEnd{%
+ \HyPsd@RemoveBraces{#2}%
+ }%
+ \fi
+ \else
+ \def\Hy@temp@A{#1}%
+ \HyPsd@AppendItalcorr\HyPsd@String
+ \ifx\Hy@temp@A\@empty
+ \Hy@ReturnAfterElseFiFiEnd{%
+ \HyPsd@RemoveBraces{#2}%
+ }%
+ \else
+ \HyPsd@ProtectSpaces\Hy@temp@A
+ \HyPsd@AppendItalcorr\Hy@temp@A
+ \Hy@ReturnAfterFiFiEnd{%
+ \expandafter\HyPsd@RemoveBraces\expandafter
+ {\Hy@temp@A#2}%
+ }%
+ \fi
+ \fi
+ \Hy@ReturnEnd
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@AppendItalcorr}
+% \begin{macro}{\HyPsd@@AppendItalcorr}
+% The string can contain commands yet, so it is better
+% to use \cs{def} instead of a shorter \cs{edef}.
+% The two help macros limit the count of \cs{expandafter}.
+% \begin{macrocode}
+\def\HyPsd@AppendItalcorr#1{%
+ \expandafter\HyPsd@@AppendItalcorr\expandafter{\/}#1%
+}
+\def\HyPsd@@AppendItalcorr#1#2{%
+ \expandafter\def\expandafter#2\expandafter{#2#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Catcode check}
+%
+% \paragraph{Workaround for LuaTeX.}
+% \cs{HyPsd@CheckCatcodes} might trigger a bug
+% of LuaTeX (0.60.2, 0.70.1, 0.70.2, ...) in the
+% comparison with \cs{ifcat}, see
+% \url{http://tracker.luatex.org/view.php?id=773}.
+% \begin{macrocode}
+\ltx@IfUndefined{directlua}{%
+}{%
+ \expandafter\ifx\csname\endcsname\relax\fi
+}
+% \end{macrocode}
+%
+% \paragraph{Check catcodes.}
+% \begin{macro}{\HyPsd@CheckCatcodes}
+% Because \cs{ifcat} expands its arguments, this is
+% prevented by \cs{noexpand}. In case of command tokens
+% and active characters \cs{ifcat} now sees a \cs{relax}.
+% After protecting spaces and removing braces |#1| should
+% be a single token, no group of several tokens, nor an
+% empty group. (So the \cs{expandafter}\cs{relax} between
+% \cs{ifcat} and \cs{noexpand} is only for safety and
+% it should be possible to remove it.)
+%
+% \cs{protect} and \cs{relax} should be removed silently.
+% But it is too dangerous and breaks some code giving them
+% the meaning of \cs{@empty}. So commands with the meaning
+% of \cs{protect} are removed here. (\cs{protect} should
+% have the meaning of \cs{@typeset@protect} that
+% is equal to \cs{relax}).
+%
+% For the comparison with active characters, \texttt{\textasciitilde}
+% cannot be used because it has the meaning of a blank space here.
+% And active characters need to be checked, if they have been defined
+% using \cs{protected}.
+% \begin{macrocode}
+\begingroup
+ \catcode`\Q=\active
+ \let Q\ltx@empty
+ \gdef\HyPsd@CheckCatcodes#1#2\HyPsd@End{%
+ \global\let\HyPsd@Rest\relax
+ \ifcat\relax\noexpand#1\relax
+ \ifx#1\protect
+ \else
+ \ifx#1\penalty
+ \setbox\z@=\hbox{%
+ \afterassignment\HyPsd@AfterCountRemove
+ \count@=#2\HyPsd@End
+ }%
+ \else
+ \ifx#1\kern
+ \setbox\z@=\hbox{%
+ \afterassignment\HyPsd@AfterDimenRemove
+ \dimen@=#2\HyPsd@End
+ }%
+ \else
+ \ifx#1\hskip
+ \setbox\z@=\hbox{%
+ \afterassignment\HyPsd@AfterSkipRemove
+ \skip@=#2\HyPsd@End
+ }%
+ \else
+ \HyPsd@CatcodeWarning{#1}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \else
+ \ifcat\noexpand#1\noexpandQ% active character
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\HyPsd@String
+ \expandafter\expandafter\expandafter{%
+ \expandafter\HyPsd@String\string#1%
+ }%
+ \else
+ \ifcat#1A% letter
+ \expandafter\def\expandafter\HyPsd@String\expandafter{%
+ \HyPsd@String#1%
+ }%
+ \else
+ \ifcat#1 % SPACE
+ \expandafter\def\expandafter\HyPsd@String\expandafter{%
+ \HyPsd@String\HyPsd@SPACEOPTI
+ }%
+ \else
+ \ifcat$#1%
+ \HyPsd@CatcodeWarning{math shift}%
+ \else
+ \ifcat&#1%
+ \HyPsd@CatcodeWarning{alignment tab}%
+ \else
+ \ifcat^#1%
+ \HyPsd@CatcodeWarning{superscript}%
+ \else
+ \ifcat_#1%
+ \HyPsd@CatcodeWarning{subscript}%
+ \else
+ \expandafter\def\expandafter\HyPsd@String\expandafter{%
+ \HyPsd@String#1%
+ }%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifx\HyPsd@Rest\relax
+ \ifx\scrollmode#2\scrollmode
+ \else
+ \Hy@ReturnAfterFiFiEnd{%
+ \HyPsd@CheckCatcodes#2\HyPsd@End
+ }%
+ \fi
+ \else
+ \ifx\HyPsd@Rest\@empty
+ \else
+ \Hy@ReturnAfterFiFiEnd{%
+ \expandafter\HyPsd@CheckCatcodes\HyPsd@Rest\HyPsd@End
+ }%
+ \fi
+ \fi
+ \Hy@ReturnEnd
+ }%
+\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Remove counts, dimens, skips.}
+% \begin{macro}{\HyPsd@AfterCountRemove}
+% Counts like \cs{penalty} are removed silently.
+% \begin{macrocode}
+\def\HyPsd@AfterCountRemove#1\HyPsd@End{%
+ \gdef\HyPsd@Rest{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@AfterDimenRemove}
+% If the value of the dimen (\cs{kern}) is zero, it can be
+% removed silently. All other values are difficult to interpret.
+% Negative values do not work in bookmarks. Should positive
+% values be removed or should they be replaced by space(s)?
+% The following code replaces positive values greater than
+% |1ex| with a space and removes them else.
+% \begin{macrocode}
+\def\HyPsd@AfterDimenRemove#1\HyPsd@End{%
+ \ifdim\ifx\HyPsd@String\@empty\z@\else\dimen@\fi>1ex %
+ \HyPsd@ReplaceSpaceWarning{\string\kern\space\the\dimen@}%
+ \gdef\HyPsd@Rest{\HyPsd@UnexpandableSpace #1}%
+ \else
+ \ifdim\dimen@=\z@
+ \else
+ \HyPsd@RemoveSpaceWarning{\string\kern\space\the\dimen@}%
+ \fi
+ \gdef\HyPsd@Rest{#1}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@AfterSkipRemove}
+% The glue part of skips do not work in PDF strings and are ignored.
+% Skips (\cs{hskip}), that are not zero, have the same
+% interpreting problems like dimens (see above).
+% \begin{macrocode}
+\def\HyPsd@AfterSkipRemove#1\HyPsd@End{%
+ \ifdim\ifx\HyPsd@String\@empty\z@\else\skip@\fi>1ex %
+ \HyPsd@ReplaceSpaceWarning{\string\hskip\space\the\skip@}%
+ \gdef\HyPsd@Rest{\HyPsd@UnexpandableSpace #1}%
+ \else
+ \ifdim\skip@=\z@
+ \else
+ \HyPsd@RemoveSpaceWarning{\string\kern\space\the\skip@}%
+ \fi
+ \gdef\HyPsd@Rest{#1}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Catcode warnings.}
+% \begin{macro}{\HyPsd@CatcodeWarning}
+% \cs{HyPsd@CatcodeWarning} produces a warning for the user.
+% \begin{macrocode}
+\def\HyPsd@CatcodeWarning#1{%
+ \HyPsd@Warning{%
+ Token not allowed in a PDF string (%
+ \ifHy@unicode
+ Unicode%
+ \else
+ PDFDocEncoding%
+ \fi
+ ):%
+ \MessageBreak removing `\HyPsd@RemoveCmdPrefix#1'%
+ }%
+}
+\begingroup
+ \catcode`\|=0 %
+ \catcode`\\=12 %
+% \end{macrocode}
+% \SpecialEscapechar{\|}
+% \vspace{-2\MacrocodeTopsep}
+% \vspace{-\parskip}
+% \vspace{-\partopsep}
+% \begin{macrocode}
+ |gdef|HyPsd@RemoveCmdPrefix#1{%
+ |expandafter|HyPsd@@RemoveCmdPrefix
+ |string#1|@empty\<>-|@empty|@empty
+ }%
+ |gdef|HyPsd@@RemoveCmdPrefix#1\<>-#2|@empty#3|@empty{#1#2}%
+|endgroup
+% \end{macrocode}
+% \SpecialEscapechar{\\}
+% \end{macro}
+% \begin{macro}{\HyPsd@RemoveSpaceWarning}
+% \begin{macrocode}
+\def\HyPsd@RemoveSpaceWarning#1{%
+ \HyPsd@Warning{%
+ Token not allowed in a PDF string (%
+ \ifHy@unicode
+ Unicode%
+ \else
+ PDFDocEncoding%
+ \fi
+ ):%
+ \MessageBreak #1\MessageBreak
+ removed%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@ReplaceSpaceWarning}
+% \begin{macrocode}
+\def\HyPsd@ReplaceSpaceWarning#1{%
+ \HyPsd@Warning{%
+ Token not allowed in a PDF string (%
+ \ifHy@unicode
+ Unicode%
+ \else
+ PDFDocEncoding%
+ \fi
+ ):%
+ \MessageBreak #1\MessageBreak
+ replaced by space%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Check for wrong glyphs}
+% A wrong glyph is marked with \cs{relax}, the glyph
+% name follows, delimited by |>|. \cs{@empty} ends
+% the string.
+% \begin{macrocode}
+\def\HyPsd@GlyphProcess#1\relax#2\@empty{%
+ \expandafter\def\expandafter\HyPsd@String\expandafter{%
+ \HyPsd@String#1%
+ }%
+ \ifx\\#2\\%
+ \else
+ \ltx@ReturnAfterFi{%
+ \HyPsd@GlyphProcessWarning#2\@empty
+ }%
+ \fi
+}
+\def\HyPsd@GlyphProcessWarning#1>#2\@empty{%
+ \HyPsd@@GlyphProcessWarning#1++>%
+ \HyPsd@GlyphProcess#2\@empty
+}
+\def\HyPsd@@GlyphProcessWarning#1+#2+#3>{%
+ \ifx\\#2\\%
+ \HyPsd@Warning{%
+ Glyph not defined in %
+ P\ifHy@unicode U\else D1\fi\space encoding,\MessageBreak
+ removing `\@backslashchar#1'%
+ }%
+ \else
+ \HyPsd@Warning{%
+ Composite letter `\@backslashchar#1+#2'\MessageBreak
+ not defined in P\ifHy@unicode U\else D1\fi\space encoding,%
+ \MessageBreak
+ removing `\@backslashchar#1'%
+ }%
+ \fi
+}
+% \end{macrocode}
+%
+% \paragraph{Spaces.}
+% \begin{macro}{\HyPsd@spaceopti}
+% In the string the spaces are represented by \cs{HyPsd@spaceopti}
+% tokens. Within an \cs{edef} it prints itself as
+% a simple space and looks for its next argument.
+% If another space follows, so it replaces the next \cs{HyPsd@spaceopti}
+% by an protected space \cs{040}.
+% \begin{macrocode}
+\def\HyPsd@spaceopti#1{ % first space
+ \ifx\HyPsd@spaceopti#1%
+ \040%
+ \else
+ #1%
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Replacing tokens}
+% \begin{macro}{\HyPsd@Subst}
+% To save tokens \cs{HyPsd@StringSubst} is an wrapper for the
+% command \cs{HyPsd@Subst} that does all the work:
+% In string stored in command |#3| it replaces the tokens
+% |#1| with |#2|.\\
+% \begin{tabular}{ll}
+% |#1|& Exact the tokens that should be replaced.\\
+% |#2|& The replacement (don't need to be expanded).\\
+% |#3|& Command with the string.
+% \end{tabular}
+% \begin{macrocode}
+\def\HyPsd@Subst#1#2#3{%
+ \def\HyPsd@@ReplaceFi##1#1##2\END\fi{%
+ \fi
+ ##1%
+ \ifx\scrollmode##2\scrollmode
+ \else
+ #2%
+ \HyPsd@@ReplaceFi##2\END
+ \fi
+ }%
+ \xdef#3{%
+ \iftrue
+ \expandafter\HyPsd@@ReplaceFi#3#1\END
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@StringSubst}
+% To save tokens in \cs{pdfstringdef} \cs{HyPsd@StringSubst} is a wrapper,
+% that expands argument |#1| before calling \cs{HyPsd@Subst}.
+% \begin{macrocode}
+\def\HyPsd@StringSubst#1{%
+ \expandafter\HyPsd@Subst\expandafter{\string#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyPsd@EscapeTeX}
+% \begin{macrocode}
+\begingroup
+ \lccode`\!=`\%%
+ \lccode`\|=`\\%
+ \lccode`\(=`\{%
+ \lccode`\)=`\}%
+ \lccode`0=\ltx@zero
+ \lccode`1=\ltx@zero
+ \lccode`3=\ltx@zero
+ \lccode`4=\ltx@zero
+ \lccode`5=\ltx@zero
+ \lccode`7=\ltx@zero
+\lowercase{\endgroup
+ \def\HyPsd@EscapeTeX#1{%
+ \HyPsd@Subst!{|045}#1%
+ \HyPsd@Subst({|173}#1%
+ \HyPsd@Subst){|175}#1%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Support for package \texttt{xspace}}
+% \begin{macro}{\HyPsd@doxspace}
+% \cs{xspace} does not work, because it uses a \cs{futurelet}
+% that cannot be executed in \TeX's mouth. So this implementation
+% uses an argument to examine the next token. In a previous version
+% I reused \cs{@xspace}, but this version is shorter and easier
+% to understand.
+% \begin{macrocode}
+\def\HyPsd@doxspace#1{%
+ \ifx#1\relax\else
+ \ifx#1.\else
+ \ifx#1:\else
+ \ifx#1,\else
+ \ifx#1;\else
+ \ifx#1!\else
+ \ifx#1?\else
+ \ifx#1/\else
+ \ifx#1-\else
+ \ifx#1'\else
+ \HyPsd@SPACEOPTI
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ #1%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Converting to Unicode}
+% Eight bit characters are converted to the sixteen bit ones,
+% \cs{8} is replaced by \cs{00}, and \cs{9} is removed.
+% The result should be a valid Unicode PDF string without the
+% Unicode marker at the beginning.
+% \begin{macrocode}
+\begingroup
+ \catcode`\|=0 %
+ \catcode`\\=12 %
+% \end{macrocode}
+% \SpecialEscapechar{\|}
+% \begin{macro}{\HyPsd@ConvertToUnicode}
+% \begin{macrocode}
+ |gdef|HyPsd@ConvertToUnicode#1{%
+ |xdef#1{%
+ |expandafter|HyPsd@DoConvert#1|@empty|@empty|@empty
+ }%
+ |ifx#1|@empty
+ |else
+ |xdef#1{%
+ \376\377%
+ #1%
+ }%
+ |fi
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@DoConvert}
+% \begin{macrocode}
+ |gdef|HyPsd@DoConvert#1{%
+ |ifx#1|@empty
+ |else
+ |ltx@ReturnAfterFi{%
+ |ifx#1\%%
+ \%%
+ |expandafter|HyPsd@DoEscape
+ |else
+ |HyPsd@Char{#1}%
+ |expandafter|HyPsd@DoConvert
+ |fi
+ }%
+ |fi
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@DoEscape}
+% \begin{macrocode}
+ |gdef|HyPsd@DoEscape#1{%
+ |ifx#19%
+ |expandafter|HyPsd@GetTwoBytes
+ |else
+ |ltx@ReturnAfterFi{%
+ |ifx#18%
+ 00%
+ |expandafter|HyPsd@GetTwoBytes
+ |else
+ #1%
+ |expandafter|HyPsd@GetOneByte
+ |fi
+ }%
+ |fi
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@GetTwoBytes}
+% \begin{macrocode}
+ |gdef|HyPsd@GetTwoBytes#1\#2#3#4{%
+ #1\#2#3#4%
+ |HyPsd@DoConvert
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@GetOneBye}
+% \begin{macrocode}
+ |gdef|HyPsd@GetOneByte#1#2{%
+ #1#2%
+ |HyPsd@DoConvert
+ }%
+|endgroup
+% \end{macrocode}
+% \end{macro}
+% \SpecialEscapechar{\\}
+% \begin{macro}{\HyPsd@@GetNextTwoTokens}
+% \TeX{} does only allow nine parameters, so we need another macro
+% to get more arguments.
+% \begin{macrocode}
+\def\HyPsd@GetNextTwoTokens#1#2#3\END#4{%
+ \xdef#4{#4#1#2}%
+ \HyPsd@@ConvertToUnicode#3\END#4%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@Char}
+% \begin{macrocode}
+\begingroup
+ \catcode0=9 %
+ \catcode`\^=7 %
+ \catcode`\^^^=12 %
+ \def\x{^^^^0000}%
+\expandafter\endgroup
+\ifx\x\@empty
+ \def\HyPsd@Char#1{%
+ \ifnum`#1<128 %
+ \@backslashchar 000#1%
+ \else
+ \ifnum`#1<65536 %
+ \expandafter\HyPsd@CharTwoByte\number`#1!%
+ \else
+ \expandafter\expandafter\expandafter\HyPsd@CharSurrogate
+ \intcalcSub{`#1}{65536}!%
+ \fi
+ \fi
+ }%
+ \def\HyPsd@CharTwoByte#1!{%
+ \expandafter\expandafter\expandafter\HyPsd@CharOctByte
+ \IntCalcDiv#1!256!!%
+ \expandafter\expandafter\expandafter\HyPsd@CharOctByte
+ \IntCalcMod#1!256!!%
+ }%
+ \def\HyPsd@CharOctByte#1!{%
+ \@backslashchar
+ \IntCalcDiv#1!64!%
+ \intcalcDiv{\IntCalcMod#1!64!}{8}%
+ \IntCalcMod#1!8!%
+ }%
+ \def\HyPsd@CharSurrogate#1!{%
+ \@backslashchar 33%
+ \IntCalcDiv#1!262144!%
+ \expandafter\expandafter\expandafter\HyPsd@CharOctByte
+ \intcalcDiv{\IntCalcMod#1!262144!}{1024}!%
+ \@backslashchar 33%
+ \expandafter\expandafter\expandafter\IntCalcAdd
+ \intcalcDiv{\IntCalcMod#1!1024!}{256}!4!%
+ \expandafter\expandafter\expandafter\HyPsd@CharOctByte
+ \IntCalcMod#1!256!!%
+ }%
+\else
+ \def\HyPsd@Char#1{%
+ \@backslashchar 000#1%
+ }%
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Support for UTF-8 input encoding}
+%
+% After |\usepackage[utf8]{inputenc}| there are macros that
+% expect the UTF-8 octets as arguments. Therefore we can
+% calculate the PDF octal sequences directly. Because the
+% PDF format is limited to UCS-2, conversion macros are
+% needed for UTF-8 sequences with two and three octets only.
+%
+% This calculation must be done in an expandable context,
+% so we use e\TeX here for performance reasons. Unhappily
+% the results of divisions are rounded. Thus a
+% circumvention via |\dimexpr| is used, e.g.:
+% \begin{quote}
+% |\numexpr 123/4\relax| is replaced by\\
+% |\number\dimexpr.25\dimexpr 123sp\relax\relax|
+% \end{quote}
+% \begin{macrocode}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname numexpr\endcsname\relax
+ \let\HyPsd@UTFviii\relax
+\else
+ \begingroup
+ \lccode`\~=`^^f4\relax
+ \lowercase{\endgroup
+ \def\HyPsd@UTFviii{%
+ \let\UTFviii@two@octets\HyPsd@UTFviii@two
+ \let\UTFviii@three@octets\HyPsd@UTFviii@three
+ \let\UTFviii@four@octets\HyPsd@UTFviii@four
+ \ifx~\HyPsd@UTFviii@ccxliv@undef
+ \let~\HyPsd@UTFviii@ccxliv@def
+ \fi
+ \let\unichar\HyPsd@unichar
+ }%
+ }%
+ \def\HyPsd@UTFviii@ccxliv@undef{\@inpenc@undefined@{utf8}}%
+ \edef\HyPsd@UTFviii@ccxliv@def{%
+ \noexpand\UTFviii@four@octets\string ^^f4%
+ }%
+% \end{macrocode}
+%
+% The two octet form of UTF-8 |110aaabb| (A) and |10cccddd| (B)
+% must be converted into octal numbers |00a| and |bcd|. The
+% result is |\8a\bcd| (with a, b, c, d as octal numbers).
+% The conversion equations.
+% \begin{eqnarray}
+% a &:= A/4 - 48\\
+% b &:= A - 4*(A/4)\\
+% c &:= B/8 - 8*((8*(B/8))/8)\\
+% d &:= B - 8*(B/8)\\
+% \end{eqnarray}
+% ^^A #1 = A/4 #2 = A
+% ^^A #3 = B/8 #4 = B
+% \begin{macrocode}
+ \def\HyPsd@UTFviii@two#1#2{%
+ \expandafter\HyPsd@UTFviii@@two
+ \number\dimexpr.25\dimexpr`#1sp\expandafter\relax\expandafter|%
+ \number`#1\expandafter|%
+ \number\dimexpr.125\dimexpr`#2sp\expandafter\relax\expandafter|%
+ \number`#2 \@nil
+ }%
+ \def\HyPsd@UTFviii@@two#1|#2|#3|#4\@nil{%
+ \expandafter\8%
+ \number\numexpr #1-48\expandafter\relax
+ \csname\number\numexpr #2-4*#1\relax\expandafter\endcsname
+ \number\numexpr #3-8*%
+ \number\dimexpr.125\dimexpr#3sp\relax\relax\expandafter\relax
+ \number\numexpr #4-8*#3\relax
+ }%
+% \end{macrocode}
+%
+% Three octet form: |1110aabb| (A), |10bcccdd| (B), and |10eeefff|
+% (C). The result is |\9abc\def| (with a, \dots, f as octal numbers).
+% The conversion equations:
+% \begin{eqnarray}
+% a &:= A/4 - 56\\
+% b &:= 2*(A - 4*(A/4)) + ((B-128 < 32) ? 0 : 1)\\
+% c &:= B/4 - 32 - ((B-128 < 32) ? 0 : 8)\\
+% d &:= B - 4*(B/4)\\
+% e &:= C/8 - 16\\
+% f &:= C - 8*(C/8)\\
+% \end{eqnarray}
+% ^^A #1 = A/4 #2 = A
+% ^^A #3 = (B-128 < 32) ? 0 : 1
+% ^^A #4 = B/4 #5 = B
+% ^^A #6 = C/8 #7 = C
+% \begin{macrocode}
+ \def\HyPsd@UTFviii@three#1#2#3{%
+ \expandafter\HyPsd@UTFviii@@three
+ \number\dimexpr.25\dimexpr`#1sp\expandafter\relax\expandafter|%
+ \number`#1\expandafter|%
+ \number\ifnum\numexpr`#2-128\relax <32 0\else 1\fi\expandafter|%
+ \number\dimexpr.25\dimexpr`#2sp\expandafter\relax\expandafter|%
+ \number`#2\expandafter|%
+ \number\dimexpr.125\dimexpr`#3sp\expandafter\relax\expandafter|%
+ \number`#3 \@nil
+ }%
+ \def\HyPsd@UTFviii@@three#1|#2|#3|#4|#5|#6|#7\@nil{%
+ \expandafter\9%
+ \number\numexpr #1-56\expandafter\relax
+ \number\numexpr 2*(#2-4*#1)+#3\expandafter\relax
+ \number\numexpr #4 - 32 -\ifcase#3 0\else 8\fi\expandafter\relax
+ \csname\number\numexpr #5-4*#4\relax\expandafter\endcsname
+ \number\numexpr #6-16\expandafter\relax
+ \number\numexpr #7-8*#6\relax
+ }%
+% \end{macrocode}
+%
+% Surrogates: 4 octets in UTF-8, a surrogate pair in UTF-16.
+% High surrogate range: U+D800--U+DBFF, low surrogate range:
+% U+DC00-U+DFFF.
+%
+%\begin{quote}
+%\begin{verbatim}
+%UTF-8: 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx
+%wwww = uuuuu - 1
+%UTF-16: 110110ww wwzzzzyy 110111yy yyxxxxxx
+%octal: 011 011 0ww 0ww zzz zyy 011 011 1yy 0yy xxx xxx
+%\end{verbatim}
+%\end{quote}
+% \begin{macrocode}
+ \def\HyPsd@UTFviii@four#1#2{%
+ \expandafter\HyPsd@@UTFviii@four\number
+ \numexpr-1+(`#1-240)*4+\dimexpr.0625\dimexpr`#2sp-128sp%
+ \expandafter|\number
+ \numexpr`#2-16*\dimexpr.0625\dimexpr`#2sp|%
+ }%
+ \def\HyPsd@@UTFviii@four#1|#2|#3{%
+ \933\number\dimexpr.25\dimexpr#1sp\relax\relax
+ \csname\number\numexpr#1-4*\dimexpr.25\dimexpr#1sp\endcsname
+ \ifodd#2 %
+ \number\numexpr(#2-1)/2\relax
+ \else
+ \number\numexpr#2/2\relax
+ \fi
+ \number\numexpr\ifodd#2 4+\fi
+ \dimexpr.0625\dimexpr`#3sp-128sp\relax\relax\relax
+ \933%
+ \expandafter\HyPsd@@@UTFviii@four\number
+ \numexpr`#3-16*\dimexpr.0625\dimexpr`#3sp|%
+ }%
+ \def\HyPsd@@@UTFviii@four#1|#2{%
+ \number\numexpr4+\dimexpr.25\dimexpr#1sp\relax\relax\relax
+ \csname\number\numexpr#1-4*\dimexpr.25\dimexpr#1sp\endcsname
+ \number\dimexpr.125\dimexpr`#2sp-128sp\relax\relax
+ \number\numexpr`#2-8*\dimexpr.125\dimexpr`#2sp\relax\relax\relax
+ }%
+% \end{macrocode}
+%
+% Input encoding |utf8x| of package |ucs| uses macro \cmd{\unichar}.
+% Values greater than |"FFFF| are not supported.
+% \begin{macrocode}
+ \def\HyPsd@unichar#1{%
+ \ifHy@unicode
+ \ifnum#1>"10FFFF %
+ \HyPsd@UnicodeReplacementCharacter % illegal
+ \else
+ \ifnum#1>"FFFF %
+% \end{macrocode}
+% High-surrogate code point.
+% (|"D800| = |55296|, |\p@| = |1pt| = |65536sp|)
+% \begin{macrocode}
+ \expandafter\HyPsd@unichar\expandafter{%
+ \number\numexpr 55296+%
+ \dimexpr.0009765625\dimexpr\number#1sp-\p@
+ \relax\relax\relax
+ }%
+% \end{macrocode}
+% Low-surrogate code point.
+% (|"DC00| = 56320, |"DC00| - |65536| = |-9216|)
+% \begin{macrocode}
+ \expandafter\HyPsd@unichar\expandafter{%
+ \number\numexpr#1-9216%
+ -1024*\dimexpr.0009765625\dimexpr\number#1sp-\p@
+ \relax\relax\relax
+ }%
+ \else
+ \ifnum#1>"7FF %
+ \9%
+ \expandafter\HyPsd@unichar@first@byte\expandafter{%
+ \number
+ \dimexpr.00390625\dimexpr\number#1sp\relax\relax
+ }%
+ \else
+ \8%
+ \number\dimexpr.00390625\dimexpr\number#1sp\relax\relax
+ \fi
+ \expandafter\HyPsd@unichar@second@byte\expandafter{%
+ \number
+ \numexpr#1-256*\number
+ \dimexpr.00390625\dimexpr\number#1sp\relax\relax\relax
+ }%
+ \fi
+ \fi
+ \else
+ .% unsupported (Unicode -> PDF Doc Encoding)
+ \fi
+ }%
+ \def\HyPsd@UnicodeReplacementCharacter{\9377\375}%
+ \def\HyPsd@unichar@first@byte#1{%
+ \number\dimexpr.015625\dimexpr#1sp\relax\relax
+ \expandafter\HyPsd@unichar@octtwo\expandafter{%
+ \number
+ \numexpr#1-64*\number\dimexpr.015625\dimexpr#1sp%
+ \relax\relax\relax
+ }%
+ }%
+ \def\HyPsd@unichar@second@byte#1{%
+ \csname\number\dimexpr.015625\dimexpr#1sp\relax\relax\endcsname
+ \expandafter\HyPsd@unichar@octtwo\expandafter{%
+ \number
+ \numexpr#1-64*\number\dimexpr.015625\dimexpr#1sp%
+ \relax\relax\relax
+ }%
+ }%
+ \def\HyPsd@unichar@octtwo#1{%
+ \number\dimexpr.125\dimexpr#1sp\relax\relax
+ \number\numexpr#1-8*\number\dimexpr.125\dimexpr#1sp%
+ \relax\relax\relax
+ }%
+% \end{macrocode}
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\HyPsd@utf@viii@undeferr}
+% \cs{utf@viii@undeferr} comes from file |utf8x.def| from
+% package |ucs|.
+% \begin{macrocode}
+\def\HyPsd@utf@viii@undeferr#1#2#3#4#5#6{%
+ \ifx\@gobble#1%
+ \else
+ [Please insert \textbackslash PrerenderUnicode%
+ \textbraceleft#1\textbraceright\space
+ into preamble]%
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Support for die faces (ifsym et. al.)}
+%
+% \begin{macro}{\HyPsd@DieFace}
+% Die faces are provided by
+% \begin{quote}
+% \begin{tabular}{@{}ll@{}}
+% Package & Macro\\
+% \hline
+% ifsym & \cs{Cube}\\
+% epsdice & \cs{epsdice}\\
+% hhcount & \cs{fcdice}
+% \end{tabular}
+% \end{quote}
+% \cs{Cube} and \cs{epsdice} restrict the range to the
+% numbers one to six. \cs{fcdice} generates for larger numbers
+% several dice faces with the sum matching the number.
+% The implementation for the PDF strings follows \cs{fcdice}.
+% \begin{macrocode}
+\def\HyPsd@DieFace#1{%
+ \ifHy@unicode
+ \ifnum#1<1 %
+ \HyPsd@UnicodeReplacementCharacter
+ \else
+ \ifnum#1>6 %
+ \9046\205%
+ \expandafter\expandafter\expandafter
+ \HyPsd@DieFaceLarge\intcalcSub{#1}{6}!%
+ \else
+ \9046\20\intcalcDec{#1}%
+ \fi
+ \fi
+ \else
+ .% Die faces are not part of PDFDocEncoding
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@DieFaceLarge}
+% \begin{macrocode}
+\def\HyPsd@DieFaceLarge#1!{%
+ \ifnum#1>6 %
+ \expandafter\ltx@firstoftwo
+ \else
+ \expandafter\ltx@secondoftwo
+ \fi
+ {%
+ \9046\205%
+ \expandafter\expandafter\expandafter
+ \HyPsd@DieFaceLarge\IntCalcSub#1!6!!%
+ }{%
+ \9046\20\IntCalcDec#1!%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Support for moon phases of package china2e}
+%
+% \begin{macrocode}
+\def\HyPsd@MoonPha#1{%
+ \ifcase\intcalcNum{#1} %
+ \HyPsd@UnicodeReplacementCharacter
+ \or % 1
+% U+1F31A NEW MOON WITH FACE; \MoonPha{1} (china2e)
+ \9330\074\9337\032%
+ \or % 2
+ \HyPsd@UnicodeReplacementCharacter
+ \or % 3
+% U+1F31D FULL MOON WITH FACE; \MoonPha{3} (china2e)
+ \9330\074\9337\035%
+ \or % 4
+% U+1F31C LAST QUARTER MOON WITH FACE; \MoonPha{4} (china2e)
+ \9330\074\9337\034%
+ \else
+ \HyPsd@UnicodeReplacementCharacter
+ \fi
+}
+%* \HyPsd@MoonPha -> \MoonPha
+% \end{macrocode}
+%
+% \subsubsection{Support for package pifont}
+%
+% \begin{macro}{\HyPsd@ding}
+% \begin{macrocode}
+\def\HyPsd@ding#1{%
+ \ifHy@unicode
+ \ifnum#1<32 %
+ \HyPsd@UnicodeReplacementCharacter
+ \else
+ \ifnum#1>254 %
+ \HyPsd@UnicodeReplacementCharacter
+ \else
+ \ifnum#1<127 %
+ \expandafter\expandafter\expandafter
+ \HyPsd@@ding\intcalcNum{#1}!%
+ \else
+ \ifnum#1>160 %
+ \expandafter\expandafter\expandafter
+ \HyPsd@@ding\intcalcNum{#1}!%
+ \else
+ \HyPsd@UnicodeReplacementCharacter
+ \fi
+ \fi
+ \fi
+ \fi
+ \else
+ .% Dingbats are not part of PDFDocEncoding
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPsd@@ding}
+% \begin{macrocode}
+\def\HyPsd@@ding#1!{%
+ \ltx@ifundefined{HyPsd@ding@#1}{%
+ \ifnum#1<127 %
+ \9047%
+ \HyPsd@DecimalToOctalSecond{\IntCalcSub#1!32!}%
+ \else
+ \ifnum#1<168 %
+ \9047\14\IntCalcSub#1!160!%
+ \else
+ \ifnum#1>181 %
+ \9047\HyPsd@DecimalToOctalSecond{\IntCalcSub#1!64!}%
+ \else
+ % 172..181 -> U+2460..U+2469
+ \9044\HyPsd@DecimalToOctalSecond{\IntCalcSub#1!76!}%
+ \fi
+ \fi
+ \fi
+ }{%
+ \csname HyPsd@ding@#1\endcsname
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\@namedef{HyPsd@ding@32}{\space}
+% U+260E BLACK TELEPHONE
+\@namedef{HyPsd@ding@37}{\9046\016}% U+260E
+% U+261B BLACK RIGHT POINTING INDEX
+\@namedef{HyPsd@ding@42}{\9046\033}% U+261B
+% U+261E WHITE RIGHT POINTING INDEX
+\@namedef{HyPsd@ding@43}{\9046\036}% U+261E
+% U+2605 BLACK STAR
+\@namedef{HyPsd@ding@72}{\9046\005}% U+2605
+% U+25CF BLACK CIRCLE
+\@namedef{HyPsd@ding@108}{\9045\317}% U+25CF
+% U+25A0 BLACK SQUARE
+\@namedef{HyPsd@ding@110}{\9045\240}% U+25A0
+% U+25B2 BLACK UP-POINTING TRIANGLE
+\@namedef{HyPsd@ding@115}{\9045\262}% U+25B2
+% U+25BC BLACK DOWN-POINTING TRIANGLE
+\@namedef{HyPsd@ding@116}{\9045\274}% U+25BC
+% U+25C6 BLACK DIAMOND
+\@namedef{HyPsd@ding@117}{\9045\306}% U+25C6
+% U+25D7 RIGHT HALF BLACK CIRCLE
+\@namedef{HyPsd@ding@119}{\9045\327}% U+25D7
+\@namedef{HyPsd@ding@168}{\textclubsuitblack}%
+\@namedef{HyPsd@ding@169}{\textdiamondsuitblack}%
+\@namedef{HyPsd@ding@170}{\textheartsuitblack}%
+\@namedef{HyPsd@ding@171}{\textspadesuitblack}%
+\@namedef{HyPsd@ding@213}{\textrightarrow}%
+\@namedef{HyPsd@ding@214}{\textleftrightarrow}%
+\@namedef{HyPsd@ding@215}{\textupdownarrow}%
+\@namedef{HyPsd@ding@240}{\HyPsd@UnicodeReplacementCharacter}
+% \end{macrocode}
+%
+% \section{Support of other packages}
+%
+% \subsection{Class memoir}
+%
+% \begin{macrocode}
+\@ifclassloaded{memoir}{%
+ \Hy@AtEndOfPackage{\RequirePackage{memhfixc}}%
+}{}
+% \end{macrocode}
+%
+% \subsection{Package subfigure}
+% Added fix for version 2.1. Here \cmd{\sub@label} is defined.
+% \begin{macrocode}
+\@ifpackageloaded{subfigure}{%
+ \ltx@IfUndefined{sub@label}{%
+ \Hy@hypertexnamesfalse
+ }{%
+ \renewcommand*{\sub@label}[1]{%
+ \@bsphack
+ \subfig@oldlabel{#1}%
+ \if@filesw
+ \begingroup
+ \edef\@currentlabstr{%
+ \expandafter\strip@prefix\meaning\@currentlabelname
+ }%
+ \protected@write\@auxout{}{%
+ \string\newlabel{sub@#1}{%
+ {\@nameuse{@@thesub\@captype}}%
+ {\thepage}%
+ {%
+ \expandafter\strip@period\@currentlabstr
+ \relax.\relax\@@@%
+ }%
+ {\@currentHref}%
+ {}%
+ }%
+ }%
+ \endgroup
+ \fi
+ \@esphack
+ }%
+ \@ifpackagelater{subfigure}{2002/03/26}{}{%
+ \providecommand*{\toclevel@subfigure}{1}%
+ \providecommand*{\toclevel@subtable}{1}%
+ }%
+ }%
+}{}
+% \end{macrocode}
+%
+% \subsection{Package xr and xr-hyper}
+% The beta version of xr that supports \cmd{\XR@addURL} is called
+% \verb|xr-hyper|. Therefore we test for the macro itself and not
+% for the package name:
+% \begin{macrocode}
+\ltx@IfUndefined{XR@addURL}{%
+}{%
+% \end{macrocode}
+% If reading external aux files check whether they have a non zero
+% fourth field in |\newlabel| and if so, add the URL as the fifth field.
+% \begin{macrocode}
+ \def\XR@addURL#1{\XR@@dURL#1{}{}{}{}\\}%
+ \def\XR@@dURL#1#2#3#4#5\\{%
+ {#1}{#2}%
+ \if!#4!%
+ \else
+ {#3}{#4}{\XR@URL}%
+ \fi
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Hy@true{true}
+\def\Hy@false{false}
+% \end{macrocode}
+%
+% Providing dummy definitions.
+% \begin{macrocode}
+\let\literalps@out\@gobble
+\newcommand\pdfbookmark[3][]{}
+\def\Acrobatmenu#1#2{\leavevmode#2}
+\def\Hy@writebookmark#1#2#3#4#5{}%
+% \end{macrocode}
+%
+% \section{Help macros for links}
+% Anchors get created on the baseline of where they occur. If an
+% XYZ PDF view is set, this means that the link places the top of the
+% screen \emph{on the baseline} of the target. If this is an equation,
+% for instance, it means that you cannot see anything. Some links, of
+% course, are created at the start of environments, and so it works. To
+% allow for this, anchors are raised, where possible, by some small
+% amount. This defaults to |\baselineskip|, but users can set it to
+% something else in two ways (thanks to Heiko Oberdiek for suggesting this):
+% \begin{enumerate}
+% \item Redefine |\HyperRaiseLinkDefault| to be eg the height of a |\strut|
+% \item Redefine |\HyperRaiseLinkHook| to do something complicated;
+% it must give a value to |\HyperRaiseLinkLength|, which is what
+% actually gets used
+% \end{enumerate}
+% \begin{macrocode}
+\let\HyperRaiseLinkHook\@empty
+\def\HyperRaiseLinkDefault{\baselineskip}
+% \end{macrocode}
+% |\HyperRaiseLinkHook| allows the user to reassign
+% |\HyperRaiseLinkLength|.
+% \begin{macrocode}
+\newcount\Hy@SavedSpaceFactor
+\def\Hy@SaveSpaceFactor{%
+ \global\Hy@SavedSpaceFactor=\ifhmode\spacefactor\else\z@\fi
+}
+\def\Hy@RestoreSpaceFactor{%
+ \relax
+ \ifhmode
+ \ifnum\Hy@SavedSpaceFactor>\z@
+ \spacefactor=\Hy@SavedSpaceFactor
+ \fi
+ \fi
+}
+\def\Hy@SaveSavedSpaceFactor{%
+ \edef\Hy@RestoreSavedSpaceFactor{%
+ \global\Hy@SavedSpaceFactor=\the\Hy@SavedSpaceFactor\relax
+ }%
+}
+\def\Hy@raisedlink#1{%
+ \ifvmode
+ #1%
+ \else
+ \Hy@SaveSpaceFactor
+ \penalty\@M
+ \smash{%
+ \begingroup
+ \let\HyperRaiseLinkLength\@tempdima
+ \setlength\HyperRaiseLinkLength\HyperRaiseLinkDefault
+ \HyperRaiseLinkHook
+ \expandafter\endgroup
+ \expandafter\raise\the\HyperRaiseLinkLength\hbox{%
+ \Hy@RestoreSpaceFactor
+ #1%
+ \Hy@SaveSpaceFactor
+ }%
+ }%
+ \Hy@RestoreSpaceFactor
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macro}{\Hy@SaveLastskip}
+% \begin{macro}{\Hy@RestoreLastskip}
+% Inserting a \cmd{\special} command to set a
+% destination destroys the \cmd{\lastskip} value.
+%
+% \begin{macrocode}
+\def\Hy@SaveLastskip{%
+ \let\Hy@RestoreLastskip\relax
+ \ifvmode
+ \ifdim\lastskip=\z@
+ \let\Hy@RestoreLastskip\nobreak
+ \else
+ \begingroup
+ \skip@=-\lastskip
+ \edef\x{%
+ \endgroup
+ \def\noexpand\Hy@RestoreLastskip{%
+ \noexpand\ifvmode
+ \noexpand\nobreak
+ \vskip\the\skip@
+ \vskip\the\lastskip\relax
+ \noexpand\fi
+ }%
+ }%
+ \x
+ \fi
+ \else
+ \ifhmode
+ \ifdim\lastskip=\z@
+ \let\Hy@RestoreLastskip\nobreak
+ \else
+ \begingroup
+ \skip@=-\lastskip
+ \edef\x{%
+ \endgroup
+ \def\noexpand\Hy@RestoreLastskip{%
+ \noexpand\ifhmode
+ \noexpand\nobreak
+ \hskip\the\skip@
+ \hskip\the\lastskip\relax
+ \noexpand\fi
+ }%
+ }%
+ \x
+ \fi
+ \fi
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Options}
+%
+% \begin{macrocode}
+\SetupKeyvalOptions{%
+ family=Hyp,%
+ prefix=HyOpt%
+}
+% \end{macrocode}
+%
+% \subsection{Help macros}
+%
+% \begin{macro}{\IfHyperBooleanExists}
+% \begin{macrocode}
+\def\IfHyperBooleanExists#1{%
+ \ltx@ifundefined{Hy@#1false}\ltx@secondoftwo{%
+ \ltx@ifundefined{KV@Hyp@#1@default}\ltx@secondoftwo\ltx@firstoftwo
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\@namedef{KV@Hyp@stoppedearly@default}{}
+% \end{macrocode}
+%
+% \begin{macro}{\IfHyperBoolean}
+% \begin{macrocode}
+\def\IfHyperBoolean#1{%
+ \IfHyperBooleanExists{#1}{%
+ \csname ifHy@#1\endcsname
+ \expandafter\ltx@firstoftwo
+ \else
+ \expandafter\ltx@secondoftwo
+ \fi
+ }\ltx@secondoftwo
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Hy@boolkey}
+% \begin{macrocode}
+\def\Hy@boolkey#1#2{%
+ \edef\Hy@tempa{#2}%
+ \lowercase\expandafter{%
+ \expandafter\def\expandafter\Hy@tempa\expandafter{\Hy@tempa}%
+ }%
+ \ifx\Hy@tempa\@empty
+ \let\Hy@tempa\Hy@true
+ \fi
+ \ifx\Hy@tempa\Hy@true
+ \else
+ \ifx\Hy@tempa\Hy@false
+ \else
+ \let\Hy@tempa\relax
+ \fi
+ \fi
+ \ifx\Hy@tempa\relax
+ \Hy@WarnOptionValue{#2}{#1}{`true' or 'false'}%
+ \else
+ \Hy@Info{Option `#1' set `\Hy@tempa'}%
+ \csname Hy@#1\Hy@tempa\endcsname
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@WarnOptionValue}
+% \begin{macrocode}
+\def\Hy@WarnOptionValue#1#2#3{%
+ \Hy@Warning{%
+ Unexpected value `#1'\MessageBreak
+ of option `#2' instead of\MessageBreak
+ #3%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Hy@DisableOption}
+% \begin{macrocode}
+\def\Hy@realDisableOption#1{%
+ \ltx@ifundefined{KV@Hyp@#1@default}{%
+ \define@key{Hyp}{#1}%
+ }{%
+ \define@key{Hyp}{#1}[]%
+ }%
+ {\Hy@WarnOptionDisabled{#1}}%
+}
+
+\def\Hy@DisableOption#1{%
+ \ifnum\currentgrouplevel>0
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {%
+ \expandafter\gdef\csname Hy@smuggleout#1\endcsname{\Hy@DisableOption{#1}}%
+ \expandafter\aftergroup\csname Hy@smuggleout#1\endcsname
+ }
+ {\Hy@realDisableOption{#1}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Hy@WarnOptionDisabled}
+% \begin{macrocode}
+\def\Hy@WarnOptionDisabled#1{%
+ \Hy@Warning{%
+ Option `#1' has already been used,\MessageBreak
+ setting the option has no effect%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Hy@CheckOptionValue}
+% Some options take a string value out of a limited set of values.
+% Macro \cs{Hy@CheckOptionValue} checks whether the given value |#1|
+% for option |#2| is a member of the value list |#3|.
+% \begin{macrocode}
+\def\Hy@CheckOptionValue#1#2#3{%
+ \begingroup
+ \edef\x{#1}%
+ \@onelevel@sanitize\x
+ \let\y=y%
+ \def\do##1##2{%
+ \def\z{##1}%
+ \@onelevel@sanitize\z
+ \ifx\x\z
+ \let\y=n%
+ \let\do\@gobbletwo
+ \fi
+ }%
+ #3%
+ \ifx\y y%
+ \def\do##1##2{%
+ * `##1'%
+ \ifx\\##2\\\else\space(##2)\fi
+ \MessageBreak
+ }%
+ \Hy@Warning{%
+ Values of option `#2':\MessageBreak
+ #3%
+ * An empty value disables the option.\MessageBreak
+ Unknown value `\x'%
+ }%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Hy@DefNameKey}
+% \noindent
+% |#1|: option name\\
+% |#2|: \cs{do} list with known values, first
+% argument of \cs{do} is value, second argument is a comment.
+% \begin{macrocode}
+\def\Hy@DefNameKey#1{%
+ \expandafter\Hy@@DefNameKey\csname @#1\endcsname{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@@DefNameKey}
+% \noindent
+% |#1|: macro for value storage\\
+% |#2|: option name\\
+% |#3|: \cs{do} list with known values.
+% \begin{macrocode}
+\def\Hy@@DefNameKey#1#2#3{%
+ \define@key{Hyp}{#2}{%
+ \edef#1{##1}%
+ \ifx#1\@empty
+ \else
+ \Hy@CheckOptionValue{##1}{#2}{#3}%
+ \fi
+ }%
+ \let#1\@empty
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@UseNameKey}
+% \begin{macrocode}
+\def\Hy@UseNameKey#1#2{%
+ \ifx#2\@empty
+ \else
+ /#1/#2%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Defining the options}
+% \begin{macrocode}
+\define@key{Hyp}{implicit}[true]{%
+ \Hy@boolkey{implicit}{#1}%
+}
+\define@key{Hyp}{draft}[true]{%
+ \Hy@boolkey{draft}{#1}%
+}
+\define@key{Hyp}{final}[true]{%
+ \Hy@boolkey{final}{#1}%
+}
+\let\KV@Hyp@nolinks\KV@Hyp@draft
+% \end{macrocode}
+% \begin{macrocode}
+\def\Hy@ObsoletePaperOption#1{%
+ \Hy@WarningNoLine{%
+ Option `#1' is no longer used%
+ }%
+ \define@key{Hyp}{#1}[true]{}%
+}
+\def\Hy@temp#1{%
+ \define@key{Hyp}{#1}[true]{%
+ \Hy@ObsoletePaperOption{#1}%
+ }%
+}
+\Hy@temp{a4paper}
+\Hy@temp{a5paper}
+\Hy@temp{b5paper}
+\Hy@temp{letterpaper}
+\Hy@temp{legalpaper}
+\Hy@temp{executivepaper}
+% \end{macrocode}
+% \begin{macrocode}
+\define@key{Hyp}{setpagesize}[true]{%
+ \Hy@boolkey{setpagesize}{#1}%
+}
+\define@key{Hyp}{debug}[true]{%
+ \Hy@boolkey{debug}{#1}%
+}
+\define@key{Hyp}{linktocpage}[true]{%
+ \Hy@boolkey{linktocpage}{#1}%
+ \ifHy@linktocpage
+ \let\Hy@linktoc\Hy@linktoc@page
+ \else
+ \let\Hy@linktoc\Hy@linktoc@section
+ \fi
+}
+\chardef\Hy@linktoc@none=0 %
+\chardef\Hy@linktoc@section=1 %
+\chardef\Hy@linktoc@page=2 %
+\chardef\Hy@linktoc@all=3 %
+\ifHy@linktocpage
+ \let\Hy@linktoc\Hy@linktoc@page
+\else
+ \let\Hy@linktoc\Hy@linktoc@section
+\fi
+\define@key{Hyp}{linktoc}{%
+ \@ifundefined{Hy@linktoc@#1}{%
+ \Hy@Warning{%
+ Unexpected value `#1' of\MessageBreak
+ option `linktoc' instead of `none',\MessageBreak
+ `section', `page' or `all'%
+ }%
+ }{%
+ \expandafter\let\expandafter\Hy@linktoc
+ \csname Hy@linktoc@#1\endcsname
+ }%
+}
+\define@key{Hyp}{extension}{\def\XR@ext{#1}}
+\let\XR@ext\relax
+\define@key{Hyp}{verbose}[true]{%
+ \Hy@boolkey{verbose}{#1}%
+}
+\define@key{Hyp}{typexml}[true]{%
+ \Hy@boolkey{typexml}{#1}%
+}
+% \end{macrocode}
+% If we are going to PDF via HyperTeX |\special| commands,
+% the dvips (-z option) processor does not know
+% the \emph{height} of a link, as it works solely on the
+% position of the closing |\special|. If we use this option,
+% the |\special| is raised up by the right amount, to fool
+% the dvi processor.
+% \begin{macrocode}
+\define@key{Hyp}{raiselinks}[true]{%
+ \Hy@boolkey{raiselinks}{#1}%
+}
+% \end{macrocode}
+% Most PDF-creating drivers do not allow links to be broken
+% \begin{macrocode}
+\def\Hy@setbreaklinks#1{%
+ \csname breaklinks#1\endcsname
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\Hy@breaklinks@unsupported{%
+ \ifx\Hy@setbreaklinks\@gobble
+ \ifHy@breaklinks
+ \Hy@WarningNoLine{%
+ You have enabled option `breaklinks'.\MessageBreak
+ But driver `\Hy@driver.def' does not suppport this.\MessageBreak
+ Expect trouble with the link areas of broken links%
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\define@key{Hyp}{breaklinks}[true]{%
+ \Hy@boolkey{breaklinks}{#1}%
+ \let\Hy@setbreaklinks\@gobble
+}
+% \end{macrocode}
+% \begin{macrocode}
+\define@key{Hyp}{localanchorname}[true]{%
+ \Hy@boolkey{localanchorname}{#1}%
+}
+% \end{macrocode}
+% Determines whether an automatic anchor is put on each page
+% \begin{macrocode}
+\define@key{Hyp}{pageanchor}[true]{%
+ \Hy@boolkey{pageanchor}{#1}%
+}
+% \end{macrocode}
+% Are the page links done as plain arabic numbers, or do
+% they follow the formatting of the package? The latter loses
+% if you put in typesetting like |\textbf| or the like.
+% \begin{macrocode}
+\define@key{Hyp}{plainpages}[true]{%
+ \Hy@boolkey{plainpages}{#1}%
+}
+% \end{macrocode}
+% Are the names for anchors made as per the HyperTeX system,
+% or do they simply use what \LaTeX\ provides?
+% \begin{macrocode}
+\define@key{Hyp}{naturalnames}[true]{%
+ \Hy@boolkey{naturalnames}{#1}%
+}
+% \end{macrocode}
+% Completely ignore the names as per the HyperTeX system,
+% and use unique counters.
+% \begin{macrocode}
+\define@key{Hyp}{hypertexnames}[true]{%
+ \Hy@boolkey{hypertexnames}{#1}%
+}
+% \end{macrocode}
+% Currently, |dvips| doesn't allow anchors nested within targets,
+% so this option tries to stop that happening. Other processors
+% may be able to cope.
+% \begin{macrocode}
+\define@key{Hyp}{nesting}[true]{%
+ \Hy@boolkey{nesting}{#1}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\define@key{Hyp}{destlabel}[true]{%
+ \Hy@boolkey{destlabel}{#1}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\define@key{Hyp}{unicode}[true]{%
+ \Hy@boolkey{unicode}{#1}%
+ \ifHy@unicode
+ \def\HyPsd@pdfencoding{unicode}%
+ \HyPsd@LoadUnicode
+ \else
+ \def\HyPsd@pdfencoding{pdfdoc}%
+ \fi
+}
+\Hy@AtBeginDocument{%
+ \ifx\HyPsd@LoadUnicode\relax
+ \else
+ \def\HyPsd@LoadUnicode{%
+ \Hy@Error{%
+ Unicode support for bookmarks is not available.\MessageBreak
+ Activate unicode support by using one of the options\MessageBreak
+ `unicode', `pdfencoding=unicode', `pdfencoding=auto'\MessageBreak
+ in the preamble%
+ }\@ehc
+ \global\let\HyPsd@LoadUnicode\relax
+ \global\Hy@unicodefalse
+ \global\let\Hy@unicodetrue\Hy@unicodefalse
+ }%
+ \fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\define@key{Hyp}{pdfencoding}{%
+ \edef\HyPsd@temp{#1}%
+ \ifx\HyPsd@temp\HyPsd@pdfencoding@pdfdoc
+ \let\HyPsd@pdfencoding\HyPsd@temp
+ \Hy@unicodefalse
+ \else
+ \ifcase\ifx\HyPsd@temp\HyPsd@pdfencoding@unicode
+ \z@
+ \else
+ \ifx\HyPsd@temp\HyPsd@pdfencoding@auto
+ \z@
+ \else
+ \@ne
+ \fi
+ \fi
+ \let\HyPsd@pdfencoding\HyPsd@temp
+ \hypersetup{unicode}%
+ \ifHy@unicode
+ \def\HyPsd@pdfencoding{#1}%
+ \ifx\HyPsd@pdfencoding\HyPsd@pdfencoding@auto
+ \HyPsd@LoadStringEnc
+ \fi
+ \else
+ \Hy@Warning{Cannot switch to unicode bookmarks}%
+ \let\HyPsd@pdfencoding\HyPsd@pdfencoding@pdfdoc
+ \fi
+ \else
+ \@onelevel@sanitize\HyPsd@temp
+ \Hy@Warning{%
+ Values of option `pdfencoding':\MessageBreak
+ `pdfdoc', `unicode', `auto'.\MessageBreak
+ Ignoring unknown value `\HyPsd@temp'%
+ }%
+ \fi
+ \fi
+}
+\def\HyPsd@pdfencoding@auto{auto}
+\def\HyPsd@pdfencoding@pdfdoc{pdfdoc}
+\def\HyPsd@pdfencoding@unicode{unicode}
+\let\HyPsd@pdfencoding\Hy@pdfencoding@pdfdoc
+\def\HyPsd@LoadStringEnc{%
+ \RequirePackage{stringenc}[2009/12/15]%
+ \let\HyPsd@LoadStringEnc\relax
+}
+\Hy@AtBeginDocument{%
+ \@ifpackageloaded{stringenc}{%
+ \let\HyPsd@LoadStringEnc\relax
+ }{%
+ \def\HyPsd@LoadStringEnc{%
+ \Hy@WarningNoLine{%
+ Missing package `stringenc'. Use `pdfencoding=auto'\MessageBreak
+ in the preamble or load the package there%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\define@key{Hyp}{psdextra}[true]{%
+ \Hy@boolkey{psdextra}{#1}%
+ \HyPsd@LoadExtra
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\hypersetup{\kvsetkeys{Hyp}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newif\ifHy@setpdfversion
+\define@key{Hyp}{pdfversion}{%
+ \@ifundefined{Hy@pdfversion@#1}{%
+ \PackageWarning{hyperref}{%
+ Unsupported PDF version `#1'.\MessageBreak
+ Valid values: 1.2 until 1.9%
+ }%
+ }{%
+ \Hy@setpdfversiontrue
+ \edef\Hy@pdfversion{\@nameuse{Hy@pdfversion@#1}}%
+ }%
+}
+\@namedef{Hy@pdfversion@1.2}{2}%
+\@namedef{Hy@pdfversion@1.3}{3}%
+\@namedef{Hy@pdfversion@1.4}{4}%
+\@namedef{Hy@pdfversion@1.5}{5}%
+\@namedef{Hy@pdfversion@1.6}{6}%
+\@namedef{Hy@pdfversion@1.7}{7}%
+\@namedef{Hy@pdfversion@1.8}{8}%
+\@namedef{Hy@pdfversion@1.9}{9}%
+\def\Hy@pdfversion{5}
+% \end{macrocode}
+%
+% \section{Options for different drivers}\label{drivers}
+%
+% \begin{macrocode}
+\newif\ifHy@DviMode
+\let\Hy@DviErrMsg\ltx@empty
+\ifpdf
+ \def\Hy@DviErrMsg{pdfTeX or LuaTeX is running in PDF mode}%
+\else
+ \ifxetex
+ \def\Hy@DviErrMsg{XeTeX is running}%
+ \else
+ \ifvtex
+ \ifvtexdvi
+ \Hy@DviModetrue
+ \else
+ \def\Hy@DviErrMsg{VTeX is running, but not in DVI mode}%
+ \fi
+ \else
+ \Hy@DviModetrue
+ \fi
+ \fi
+\fi
+\def\HyOpt@CheckDvi#1{%
+ \ifHy@DviMode
+ \expandafter\ltx@firstofone
+ \else
+ \Hy@Error{%
+ Wrong DVI mode driver option `#1',\MessageBreak
+ because \Hy@DviErrMsg
+ }\@ehc
+ \expandafter\ltx@gobble
+ \fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareVoidOption{tex4ht}{%
+ \Hy@texhttrue
+ \kvsetkeys{Hyp}{colorlinks=true}%
+ \def\BeforeTeXIVht{\RequirePackage{color}}%
+ \def\Hy@driver{htex4ht}%
+ \def\MaybeStopEarly{%
+ \Hy@Message{Stopped early}%
+ \Hy@AtBeginDocument{%
+ \PDF@FinishDoc
+ \gdef\PDF@FinishDoc{}%
+ }%
+ \endinput
+ }%
+}
+\DeclareVoidOption{pdftex}{%
+ \ifpdf
+ \def\Hy@driver{hpdftex}%
+ \PassOptionsToPackage{pdftex}{color}%
+ \else
+ \Hy@Error{%
+ Wrong driver option `pdftex',\MessageBreak
+ because pdfTeX in PDF mode is not detected%
+ }\@ehc
+ \fi
+}
+\DeclareVoidOption{luatex}{%
+ \ifpdf
+ \ifx\pdfextension\@undefined
+ \def\Hy@driver{hpdftex}%
+ \PassOptionsToPackage{pdftex}{color}%
+ \else
+ \def\Hy@driver{hluatex}%
+ \PassOptionsToPackage{luatex}{color}%
+ \fi
+ \else
+ \Hy@Error{%
+ Wrong driver option `luatex',\MessageBreak
+ because luaTeX in PDF mode is not detected%
+ }\@ehc
+ \fi
+}
+\DeclareVoidOption{nativepdf}{%
+ \HyOpt@CheckDvi{nativepdf}{%
+ \def\Hy@driver{hdvips}%
+ \PassOptionsToPackage{dvips}{color}%
+ }%
+}
+\DeclareVoidOption{dvipdfm}{%
+ \HyOpt@CheckDvi{dvipdfm}{%
+ \def\Hy@driver{hdvipdfm}%
+ }%
+}
+\DeclareVoidOption{dvipdfmx}{%
+ \HyOpt@CheckDvi{dvipdfmx}{%
+ \def\Hy@driver{hdvipdfm}%
+ \PassOptionsToPackage{dvipdfmx}{color}%
+ }%
+}
+\define@key{Hyp}{dvipdfmx-outline-open}[true]{%
+ \expandafter\ifx\csname if#1\expandafter\endcsname
+ \csname iftrue\endcsname
+ \chardef\SpecialDvipdfmxOutlineOpen\@ne
+ \else
+ \chardef\SpecialDvipdfmxOutlineOpen\z@
+ \fi
+}
+\DeclareVoidOption{xetex}{%
+ \ifxetex
+ \def\Hy@driver{hxetex}%
+ \else
+ \Hy@Error{%
+ Wrong driver option `xetex',\MessageBreak
+ because XeTeX is not detected%
+ }\@ehc
+ \fi
+}
+\DeclareVoidOption{pdfmark}{%
+ \HyOpt@CheckDvi{pdfmark}{%
+ \def\Hy@driver{hdvips}%
+ }%
+}
+\DeclareVoidOption{dvips}{%
+ \HyOpt@CheckDvi{dvips}{%
+ \def\Hy@driver{hdvips}%
+ \PassOptionsToPackage{dvips}{color}%
+ }%
+}
+\DeclareVoidOption{hypertex}{%
+ \HyOpt@CheckDvi{hypertex}{%
+ \def\Hy@driver{hypertex}%
+ }%
+}
+\let\Hy@MaybeStopNow\relax
+\DeclareVoidOption{vtex}{%
+ \ifvtex
+ \ifnum 0\ifnum\OpMode<1 1\fi \ifnum\OpMode>3 1\fi =0 %
+ \def\Hy@driver{hvtex}%
+ \else
+ \ifnum\OpMode=10\relax
+ \def\Hy@driver{hvtexhtm}%
+ \def\MaybeStopEarly{%
+ \Hy@Message{Stopped early}%
+ \Hy@AtBeginDocument{%
+ \PDF@FinishDoc
+ \gdef\PDF@FinishDoc{}%
+ }%
+ \endinput
+ }%
+ \else
+ \Hy@Error{%
+ Wrong driver option `vtex',\MessageBreak
+ because of wrong OpMode (\the\OpMode)%
+ }\@ehc
+ \fi
+ \fi
+ \else
+ \Hy@Error{%
+ Wrong driver option `vtex',\MessageBreak
+ because VTeX is not running%
+ }\@ehc
+ \fi
+}
+\DeclareVoidOption{vtexpdfmark}{%
+ \ifvtex
+ \ifnum 0\ifnum\OpMode<1 1\fi \ifnum\OpMode>3 1\fi =0 %
+ \def\Hy@driver{hvtexmrk}%
+ \else
+ \Hy@Error{%
+ Wrong driver option `vtexpdfmark',\MessageBreak
+ because of wrong OpMode (\the\OpMode)%
+ }\@ehc
+ \fi
+ \else
+ \Hy@Error{%
+ Wrong driver option `vtexpdfmark,\MessageBreak
+ because VTeX is not running%
+ }\@ehc
+ \fi
+}
+\DeclareVoidOption{dviwindo}{%
+ \HyOpt@CheckDvi{dviwindo}{%
+ \def\Hy@driver{hdviwind}%
+ \kvsetkeys{Hyp}{colorlinks}%
+ \PassOptionsToPackage{dviwindo}{color}%
+ }%
+}
+\DeclareVoidOption{dvipsone}{%
+ \HyOpt@CheckDvi{dvipsone}{%
+ \def\Hy@driver{hdvipson}%
+ \PassOptionsToPackage{dvipsone}{color}%
+ }%
+}
+\DeclareVoidOption{textures}{%
+ \HyOpt@CheckDvi{textures}{%
+ \def\Hy@driver{htexture}%
+ }%
+}
+\DeclareVoidOption{latex2html}{%
+ \HyOpt@CheckDvi{latex2html}{%
+ \Hy@AtBeginDocument{\@@latextohtmlX}%
+ }%
+}
+% \end{macrocode}
+% No more special treatment for ps2pdf. Let it sink or swim.
+% \begin{macrocode}
+\DeclareVoidOption{ps2pdf}{%
+ \HyOpt@CheckDvi{ps2pdf}{%
+ \def\Hy@driver{hdvips}%
+ \PassOptionsToPackage{dvips}{color}%
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\let\HyOpt@DriverFallback\ltx@empty
+\define@key{Hyp}{driverfallback}{%
+ \ifHy@DviMode
+ \def\HyOpt@DriverFallback{#1}%
+ \Hy@Match\HyOpt@DriverFallback{}{%
+ ^(|dvipdfm|dvipdfmx|dvips|dvipsone|dviwindo|hypertex|ps2pdf|%
+ latex2html|tex4ht)$%
+ }{}{%
+ \Hy@Warning{%
+ Invalid driver `#1' for option\MessageBreak
+ `driverfallback'%
+ }%
+ \let\HyOpt@DriverFallback\ltx@empty
+ }%
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\let\HyOpt@CustomDriver\ltx@empty
+\define@key{Hyp}{customdriver}{%
+ \IfFileExists{#1.def}{%
+ \def\HyOpt@CustomDriver{#1}%
+ }{%
+ \Hy@Warning{%
+ Missing driver file `#1.def',\MessageBreak
+ ignoring custom driver%
+ }%
+ }%
+}
+% \end{macrocode}
+%
+% \section{Options to add extra features}\label{features}
+% Make included figures (assuming they use the standard graphics
+% package) be hypertext links. Off by default. Needs more work.
+% \begin{macrocode}
+\define@key{Hyp}{hyperfigures}[true]{%
+ \Hy@boolkey{hyperfigures}{#1}%
+}
+% \end{macrocode}
+%
+% The automatic footnote linking can be disabled
+% by option hyperfootnotes.
+% \begin{macrocode}
+\define@key{Hyp}{hyperfootnotes}[true]{%
+ \Hy@boolkey{hyperfootnotes}{#1}%
+}
+% \end{macrocode}
+%
+% Set up back-referencing to be hyper links, by page,
+% slide or section number,
+% \begin{macrocode}
+\def\back@none{none}
+\def\back@section{section}
+\def\back@page{page}
+\def\back@slide{slide}
+\define@key{Hyp}{backref}[section]{%
+ \lowercase{\def\Hy@tempa{#1}}%
+ \ifx\Hy@tempa\@empty
+ \let\Hy@tempa\back@section
+ \fi
+ \ifx\Hy@tempa\Hy@false
+ \let\Hy@tempa\back@none
+ \fi
+ \ifx\Hy@tempa\back@slide
+ \let\Hy@tempa\back@section
+ \fi
+ \ifx\Hy@tempa\back@page
+ \PassOptionsToPackage{hyperpageref}{backref}%
+ \Hy@backreftrue
+ \else
+ \ifx\Hy@tempa\back@section
+ \PassOptionsToPackage{hyperref}{backref}%
+ \Hy@backreftrue
+ \else
+ \ifx\Hy@tempa\back@none
+ \Hy@backreffalse
+ \else
+ \Hy@WarnOptionValue{#1}{backref}{%
+ `section', `slide', `page', `none',\MessageBreak
+ or `false'}%
+ \fi
+ \fi
+ \fi
+}
+\define@key{Hyp}{pagebackref}[true]{%
+ \edef\Hy@tempa{#1}%
+ \lowercase\expandafter{%
+ \expandafter\def\expandafter\Hy@tempa\expandafter{\Hy@tempa}%
+ }%
+ \ifx\Hy@tempa\@empty
+ \let\Hy@tempa\Hy@true
+ \fi
+ \ifx\Hy@tempa\Hy@true
+ \PassOptionsToPackage{hyperpageref}{backref}%
+ \Hy@backreftrue
+ \else
+ \ifx\Hy@tempa\Hy@false
+ \Hy@backreffalse
+ \else
+ \Hy@WarnOptionValue{#1}{pagebackref}{`true' or `false'}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% Make index entries be links back to the relevant pages. By default
+% this is turned on, but may be stopped.
+% \begin{macrocode}
+\define@key{Hyp}{hyperindex}[true]{%
+ \Hy@boolkey{hyperindex}{#1}%
+}
+% \end{macrocode}
+% Configuration of encap char.
+% \begin{macrocode}
+\define@key{Hyp}{encap}[\|]{%
+ \def\HyInd@EncapChar{#1}%
+}
+% \end{macrocode}
+%
+% \section{Language options}
+%
+% The \cmd{\autoref} feature depends on the language.
+% \begin{macrocode}
+\def\HyLang@afrikaans{%
+ \def\equationautorefname{Vergelyking}%
+ \def\footnoteautorefname{Voetnota}%
+ \def\itemautorefname{Item}%
+ \def\figureautorefname{Figuur}%
+ \def\tableautorefname{Tabel}%
+ \def\partautorefname{Deel}%
+ \def\appendixautorefname{Bylae}%
+ \def\chapterautorefname{Hoofstuk}%
+ \def\sectionautorefname{Afdeling}%
+ \def\subsectionautorefname{Subafdeling}%
+ \def\subsubsectionautorefname{Subsubafdeling}%
+ \def\paragraphautorefname{Paragraaf}%
+ \def\subparagraphautorefname{Subparagraaf}%
+ \def\FancyVerbLineautorefname{Lyn}%
+ \def\theoremautorefname{Teorema}%
+ \def\pageautorefname{Bladsy}%
+}
+\def\HyLang@english{%
+ \def\equationautorefname{Equation}%
+ \def\footnoteautorefname{footnote}%
+ \def\itemautorefname{item}%
+ \def\figureautorefname{Figure}%
+ \def\tableautorefname{Table}%
+ \def\partautorefname{Part}%
+ \def\appendixautorefname{Appendix}%
+ \def\chapterautorefname{chapter}%
+ \def\sectionautorefname{section}%
+ \def\subsectionautorefname{subsection}%
+ \def\subsubsectionautorefname{subsubsection}%
+ \def\paragraphautorefname{paragraph}%
+ \def\subparagraphautorefname{subparagraph}%
+ \def\FancyVerbLineautorefname{line}%
+ \def\theoremautorefname{Theorem}%
+ \def\pageautorefname{page}%
+}
+\def\HyLang@french{%
+ \def\equationautorefname{\'Equation}%
+ \def\footnoteautorefname{note}%
+ \def\itemautorefname{item}%
+ \def\figureautorefname{Figure}%
+ \def\tableautorefname{Tableau}%
+ \def\partautorefname{Partie}%
+ \def\appendixautorefname{Appendice}%
+ \def\chapterautorefname{chapitre}%
+ \def\sectionautorefname{section}%
+ \def\subsectionautorefname{sous-section}%
+ \def\subsubsectionautorefname{sous-sous-section}%
+ \def\paragraphautorefname{paragraphe}%
+ \def\subparagraphautorefname{sous-paragraphe}%
+ \def\FancyVerbLineautorefname{ligne}%
+ \def\theoremautorefname{Th\'eor\`eme}%
+ \def\pageautorefname{page}%
+}
+\def\HyLang@german{%
+ \def\equationautorefname{Gleichung}%
+ \def\footnoteautorefname{Fu\ss note}%
+ \def\itemautorefname{Punkt}%
+ \def\figureautorefname{Abbildung}%
+ \def\tableautorefname{Tabelle}%
+ \def\partautorefname{Teil}%
+ \def\appendixautorefname{Anhang}%
+ \def\chapterautorefname{Kapitel}%
+ \def\sectionautorefname{Abschnitt}%
+ \def\subsectionautorefname{Unterabschnitt}%
+ \def\subsubsectionautorefname{Unterunterabschnitt}%
+ \def\paragraphautorefname{Absatz}%
+ \def\subparagraphautorefname{Unterabsatz}%
+ \def\FancyVerbLineautorefname{Zeile}%
+ \def\theoremautorefname{Theorem}%
+ \def\pageautorefname{Seite}%
+}
+\def\HyLang@italian{%
+ \def\equationautorefname{Equazione}%
+ \def\footnoteautorefname{nota}%
+ \def\itemautorefname{punto}%
+ \def\figureautorefname{Figura}%
+ \def\tableautorefname{Tabella}%
+ \def\partautorefname{Parte}%
+ \def\appendixautorefname{Appendice}%
+ \def\chapterautorefname{Capitolo}%
+ \def\sectionautorefname{sezione}%
+ \def\subsectionautorefname{sottosezione}%
+ \def\subsubsectionautorefname{sottosottosezione}%
+ \def\paragraphautorefname{paragrafo}%
+ \def\subparagraphautorefname{sottoparagrafo}%
+ \def\FancyVerbLineautorefname{linea}%
+ \def\theoremautorefname{Teorema}%
+ \def\pageautorefname{Pag.\@}%
+}
+\def\HyLang@magyar{%
+ \def\equationautorefname{Egyenlet}%
+ \def\footnoteautorefname{l\'abjegyzet}%
+ \def\itemautorefname{Elem}%
+ \def\figureautorefname{\'Abra}%
+ \def\tableautorefname{T\'abl\'azat}%
+ \def\partautorefname{R\'esz}%
+ \def\appendixautorefname{F\"uggel\'ek}%
+ \def\chapterautorefname{fejezet}%
+ \def\sectionautorefname{szakasz}%
+ \def\subsectionautorefname{alszakasz}%
+ \def\subsubsectionautorefname{alalszakasz}%
+ \def\paragraphautorefname{bekezd\'es}%
+ \def\subparagraphautorefname{albekezd\'es}%
+ \def\FancyVerbLineautorefname{sor}%
+ \def\theoremautorefname{T\'etel}%
+ \def\pageautorefname{oldal}%
+}
+\def\HyLang@portuges{%
+ \def\equationautorefname{Equa\c c\~ao}%
+ \def\footnoteautorefname{Nota de rodap\'e}%
+ \def\itemautorefname{Item}%
+ \def\figureautorefname{Figura}%
+ \def\tableautorefname{Tabela}%
+ \def\partautorefname{Parte}%
+ \def\appendixautorefname{Ap\^endice}%
+ \def\chapterautorefname{Cap\'itulo}%
+ \def\sectionautorefname{Se\c c\~ao}%
+ \def\subsectionautorefname{Subse\c c\~ao}%
+ \def\subsubsectionautorefname{Subsubse\c c\~ao}%
+ \def\paragraphautorefname{par\'agrafo}%
+ \def\subparagraphautorefname{subpar\'agrafo}%
+ \def\FancyVerbLineautorefname{linha}%
+ \def\theoremautorefname{Teorema}%
+ \def\pageautorefname{P\'agina}%
+}
+% \end{macrocode}
+%
+% Next commented section for Russian is provided by Olga Lapko.
+%
+% Next follow the checked reference names with commented variants and
+% explanations. All they are abbreviated and they won't create a
+% grammatical problems in the \emph{middle} of sentences.
+%
+% The most weak points in these abbreviations are the
+% |\equationautorefname|, |\theoremautorefname| and the
+% |\FancyVerbLineautorefname|. But those three, and also the
+% |\footnoteautorefname| are not \emph{too} often referenced.
+% Another rather weak point is the |\appendixautorefname|.
+% \begin{macrocode}
+\def\HyLang@russian{%
+% \end{macrocode}
+% The abbreviated reference to the equation:
+% it is not for ``the good face of the book'', but maybe it will be
+% better to get the company for the |\theoremautorefname|?
+% \begin{macrocode}
+ \def\equationautorefname{\cyr\cyrv\cyrery\cyrr.}%
+% \end{macrocode}
+% The name of the equation reference has common form for both
+% nominative and accusative but changes in other forms, like
+% ``of |\autoref{auto}|'' etc. The full name must follow full
+% name of the |\theoremautorefname|.
+% \begin{macrocode}
+% \def\equationautorefname{%
+% \cyr\cyrv\cyrery\cyrr\cyra\cyrzh\cyre\cyrn\cyri\cyre
+% }%
+% \end{macrocode}
+%
+% The variant of footnote has abbreviation form of the synonym
+% of the word ``footnote''. This variant of abbreviated synonym
+% has alternative status (maybe obsolete?).
+% \begin{macrocode}
+ \def\footnoteautorefname{%
+ \cyr\cyrp\cyro\cyrd\cyrs\cyrt\cyrr.\ \cyrp\cyrr\cyri\cyrm.%
+ }%
+% \end{macrocode}
+% Commented form of the full synonym for ``footnote''.
+% It has common form for both nominative and accusative but
+% changes in other forms, like ``of |\autoref{auto}|''
+% \begin{macrocode}
+% \def\footnoteautorefname{%
+% \cyr\cyrp\cyro\cyrd\cyrs\cyrt\cyrr\cyro\cyrch\cyrn\cyro\cyre\ %
+% \cyrp\cyrr\cyri\cyrm\cyre\cyrch\cyra\cyrn\cyri\cyre
+% }%
+% \end{macrocode}
+% Commented forms of the ``footnote'': have different forms, the
+% same is for the nominative and accusative. (The others needed?)
+% \begin{macrocode}
+% \def\Nomfootnoteautorefname{\cyr\cyrs\cyrn\cyro\cyrs\cyrk\cyra}%
+% \def\Accfootnoteautorefname{\cyr\cyrs\cyrn\cyro\cyrs\cyrk\cyru}%
+% \end{macrocode}
+%
+% Name of the list item, can be confused with the paragraph
+% reference name, but reader could understand meaning from context(?).
+% Commented variant has common form for both nominative and accusative
+% but changes in other forms, like ``of |\autoref{auto}|'' etc.
+% \begin{macrocode}
+ \def\itemautorefname{\cyr\cyrp.}%
+% \def\itemautorefname{\cyr\cyrp\cyru\cyrn\cyrk\cyrt}%
+% \end{macrocode}
+%
+% Names of the figure and table have stable (standard) abbreviation
+% forms. No problem in the middle of sentence.
+% \begin{macrocode}
+ \def\figureautorefname{\cyr\cyrr\cyri\cyrs.}%
+ \def\tableautorefname{\cyr\cyrt\cyra\cyrb\cyrl.}%
+% \end{macrocode}
+%
+% Names of the part, chapter, section(s) have stable (standard)
+% abbreviation forms. No problem in the middle of sentence.
+% \begin{macrocode}
+ \def\partautorefname{\cyr\cyrch.}%
+ \def\chapterautorefname{\cyr\cyrg\cyrl.}%
+ \def\sectionautorefname{\cyr\cyrr\cyra\cyrz\cyrd.}%
+% \end{macrocode}
+%
+% Name of the appendix can use this abbreviation, but it is not
+% standard for books, i.e, not for ``the good face of the book''.
+% Commented variant has common form for both nominative and
+% accusative but changes in other forms, like ``of
+% |\autoref{auto}|'' etc.
+% \begin{macrocode}
+ \def\appendixautorefname{\cyr\cyrp\cyrr\cyri\cyrl.}%
+% \def\appendixautorefname{%
+% \cyr\cyrp\cyrr\cyri\cyrl\cyro\cyrzh\cyre\cyrn\cyri\cyre
+% }%
+% \end{macrocode}
+%
+% The sectioning command have stable (almost standard) and common
+% abbreviation form for all levels (the meaning of these references
+% visible from the section number). No problem.
+% \begin{macrocode}
+ \def\subsectionautorefname{\cyr\cyrr\cyra\cyrz\cyrd.}%
+ \def\subsubsectionautorefname{\cyr\cyrr\cyra\cyrz\cyrd.}%
+% \end{macrocode}
+%
+% The names of references to paragraphs also have stable
+% (almost standard) and common abbreviation form for all
+% levels (the meaning of these references is visible from
+% the section number). No problem in the middle of sentence.
+% \begin{macrocode}
+ \def\paragraphautorefname{\cyr\cyrp.}%
+ \def\subparagraphautorefname{\cyr\cyrp.}%
+% \end{macrocode}
+% Commented variant can be used in books but since it
+% has common form for both nominative and accusative but it
+% changes in other forms, like ``of |\autoref{auto}|'' etc.
+% \begin{macrocode}
+% \def\paragraphautorefname{\cyr\cyrp\cyru\cyrn\cyrk\cyrt}%
+% \def\subparagraphautorefname{\cyr\cyrp\cyru\cyrn\cyrk\cyrt}%
+% \end{macrocode}
+%
+% The name of verbatim line. Here could be a standard of the
+% abbreviation (used very rare). But the author preprint
+% publications (which have not any editor or corrector)
+% can use this abbreviation for the page reference. So the
+% meaning of the line reference can be read as reference to
+% the page.
+% \begin{macrocode}
+ \def\FancyVerbLineautorefname{\cyr\cyrs\cyrt\cyrr.}%
+% \end{macrocode}
+% Commented names of the ``verbatim line'': have different forms,
+% also the nominative and accusative.
+% \begin{macrocode}
+% \def\NomFancyVerbLineautorefname{\cyr\cyrs\cyrt\cyrr\cyro\cyrk\cyra}%
+% \def\AccFancyVerbLineautorefname{\cyr\cyrs\cyrt\cyrr\cyro\cyrk\cyru}%
+% \end{macrocode}
+% The alternative, ve-e-e-ery professional abbreviation,
+% was used in typography markup for typesetters.
+% \begin{macrocode}
+% \def\FancyVerbLineautorefname{\cyr\cyrs\cyrt\cyrr\cyrk.}%
+% \end{macrocode}
+%
+% The names of theorem: if we want have ``the good face of
+% the book'', so the theorem reference must have the full name
+% (like equation reference). But \ldots
+% \begin{macrocode}
+ \def\theoremautorefname{\cyr\cyrt\cyre\cyro\cyrr.}%
+% \end{macrocode}
+% Commented forms of the ``theorem'': have different forms, also
+% the nominative and accusative.
+% \begin{macrocode}
+% \def\Nomtheoremautorefname{\cyr\cyrt\cyre\cyro\cyrr\cyre\cyrm\cyra}%
+% \def\Acctheoremautorefname{\cyr\cyrt\cyre\cyro\cyrr\cyre\cyrm\cyru}%
+% \end{macrocode}
+%
+% Name of the page stable (standard) abbreviation form. No problem.
+% \begin{macrocode}
+ \def\pageautorefname{\cyr\cyrs.}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\HyLang@spanish{%
+ \def\equationautorefname{Ecuaci\'on}%
+ \def\footnoteautorefname{Nota a pie de p\'agina}%
+ \def\itemautorefname{Elemento}%
+ \def\figureautorefname{Figura}%
+ \def\tableautorefname{Tabla}%
+ \def\partautorefname{Parte}%
+ \def\appendixautorefname{Ap\'endice}%
+ \def\chapterautorefname{Cap\'itulo}%
+ \def\sectionautorefname{Secci\'on}%
+ \def\subsectionautorefname{Subsecci\'on}%
+ \def\subsubsectionautorefname{Subsubsecci\'on}%
+ \def\paragraphautorefname{P\'arrafo}%
+ \def\subparagraphautorefname{Subp\'arrafo}%
+ \def\FancyVerbLineautorefname{L\'inea}%
+ \def\theoremautorefname{Teorema}%
+ \def\pageautorefname{P\'agina}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\HyLang@catalan{%
+\def\equationautorefname{Equaci\'o}%
+\def\footnoteautorefname{Nota al peu de p\`agina}%
+\def\itemautorefname{Element}%
+\def\figureautorefname{Figura}%
+\def\tableautorefname{Taula}%
+\def\partautorefname{Part}%
+\def\appendixautorefname{Ap\`endix}%
+\def\chapterautorefname{Cap\'itol}%
+\def\sectionautorefname{Secci\'o}%
+\def\subsectionautorefname{Subsecci\'o}%
+\def\subsubsectionautorefname{Subsubsecci\'o}%
+\def\paragraphautorefname{Par\`agraf}%
+\def\subparagraphautorefname{Subpar\`agraf}%
+\def\FancyVerbLineautorefname{L\'inia}%
+\def\theoremautorefname{Teorema}%
+\def\pageautorefname{P\`agina}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\HyLang@vietnamese{%
+ \def\equationautorefname{Ph\uhorn{}\ohorn{}ng tr\`inh}%
+ \def\footnoteautorefname{Ch\'u th\'ich}%
+ \def\itemautorefname{m\d{u}c}%
+ \def\figureautorefname{H\`inh}%
+ \def\tableautorefname{B\h{a}ng}%
+ \def\partautorefname{Ph\`\acircumflex{}n}%
+ \def\appendixautorefname{Ph\d{u} l\d{u}c}%
+ \def\chapterautorefname{ch\uhorn{}\ohorn{}ng}%
+ \def\sectionautorefname{m\d{u}c}%
+ \def\subsectionautorefname{m\d{u}c}%
+ \def\subsubsectionautorefname{m\d{u}c}%
+ \def\paragraphautorefname{\dj{}o\d{a}n}%
+ \def\subparagraphautorefname{\dj{}o\d{a}n}%
+ \def\FancyVerbLineautorefname{d\`ong}%
+ \def\theoremautorefname{\DJ{}\d{i}nh l\'y}%
+ \def\pageautorefname{Trang}%
+}
+% \end{macrocode}
+% Greek, see github issue 52
+% \begin{macrocode}
+\def\HyLang@greek{%
+ \def\equationautorefname{\textEpsilon\textxi\acctonos\textiota\textsigma\textomega\textsigma\texteta}%
+ \def\footnoteautorefname{\textupsilon\textpi\textomicron\textsigma\texteta\textmu\textepsilon\acctonos\textiota\textomega\textsigma\texteta}%
+ \def\itemautorefname{\textalpha\textnu\texttau\textiota\textkappa\textepsilon\acctonos\textiota\textmu\textepsilon\textnu\textomicron}%
+ \def\figureautorefname{\textSigma\textchi\acctonos\texteta\textmu\textalpha}%
+ \def\tableautorefname{\textPi\acctonos\textiota\textnu\textalpha\textkappa\textalpha}%
+ \def\partautorefname{\textMu\acctonos\textepsilon\textrho\textomicron\textvarsigma}%
+ \def\appendixautorefname{\textPi\textalpha\textrho\acctonos\textalpha\textrho\texttau\texteta\textmu\textalpha}%
+ \def\chapterautorefname{\textkappa\textepsilon\textphi\acctonos\textalpha\textlambda\textalpha\textiota\textomicron}%
+ \def\sectionautorefname{\textepsilon\textnu\acctonos\textomicron\texttau\texteta\texttau\textalpha}%
+ \def\subsectionautorefname{\textupsilon\textpi\textomicron\textepsilon\textnu\acctonos\textomicron\texttau\texteta\texttau\textalpha}%
+ \def\subsubsectionautorefname{\textupsilon\textpi\textomicron-\textupsilon\textpi\textomicron\textepsilon\textnu\acctonos\textomicron\texttau\texteta\texttau\textalpha}%
+ \def\paragraphautorefname{\textpi\textalpha\textrho\acctonos\textalpha\textgamma\textrho\textalpha\textphi\textomicron\textvarsigma}%
+ \def\subparagraphautorefname{\textupsilon\textpi\textomicron\textpi\textalpha\textrho\acctonos\textalpha\textgamma\textrho\textalpha\textphi\textomicron\textvarsigma}%
+ \def\FancyVerbLineautorefname{\textgamma\textrho\textalpha\textmu\textmu\acctonos\texteta}%
+ \def\theoremautorefname{\textTheta\textepsilon\acctonos\textomega\textrho\texteta\textmu\textalpha}%
+ \def\pageautorefname{\textsigma\textepsilon\textlambda\acctonos\textiota\textdelta\textalpha}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\HyLang@dutch{%
+ \def\equationautorefname{Vergelijking}%
+ \def\footnoteautorefname{voetnoot}%
+ \def\itemautorefname{punt}%
+ \def\figureautorefname{Figuur}%
+ \def\tableautorefname{Tabel}%
+ \def\partautorefname{Deel}%
+ \def\appendixautorefname{Bijlage}%
+ \def\chapterautorefname{hoofdstuk}%
+ \def\sectionautorefname{paragraaf}%
+ \def\subsectionautorefname{deelparagraaf}%
+ \def\subsubsectionautorefname{deel-deelparagraaf}%
+ \def\paragraphautorefname{alinea}%
+ \def\subparagraphautorefname{deelalinea}%
+ \def\FancyVerbLineautorefname{regel}%
+ \def\theoremautorefname{Stelling}%
+ \def\pageautorefname{pagina}%
+}
+% \end{macrocode}
+%
+% Instead of package babel's definition of \cmd{\addto} the
+% implementation of package varioref is used. Additionally
+% argument |#1| is checked for \cmd{\relax}.
+% \begin{macrocode}
+\def\HyLang@addto#1#2{%
+ #2%
+ \@temptokena{#2}%
+ \ifx#1\relax
+ \let#1\@empty
+ \fi
+ \ifx#1\@undefined
+ \edef#1{\the\@temptokena}%
+ \else
+ \toks@\expandafter{#1}%
+ \edef#1{\the\toks@\the\@temptokena}%
+ \fi
+ \@temptokena{}\toks@\@temptokena
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\HyLang@DeclareLang#1#2#3{%
+ \@ifpackagewith{babel}{#1}{%
+ \expandafter\HyLang@addto
+ \csname extras#1\expandafter\endcsname
+ \csname HyLang@#2\endcsname
+ \begingroup
+ \edef\x{\endgroup
+ #3%
+ }%
+ \x
+ \@namedef{HyLang@#1@done}{}%
+ }{}%
+ \begingroup
+ \edef\x##1##2{%
+ \noexpand\ifx##2\relax
+ \errmessage{No definitions for language #2' found!}%
+ \noexpand\fi
+ \endgroup
+ \noexpand\define@key{Hyp}{#1}[]{%
+ \noexpand\@ifundefined{HyLang@#1@done}{%
+ \noexpand\HyLang@addto{\noexpand##1}{\noexpand##2}%
+ #3%
+ \noexpand\@namedef{HyLang@#1@done}{}%
+ }{}%
+ }%
+ }%
+ \expandafter\x\csname extras#1\expandafter\endcsname
+ \csname HyLang@#2\endcsname
+}
+\HyLang@DeclareLang{english}{english}{}
+\HyLang@DeclareLang{UKenglish}{english}{}
+\HyLang@DeclareLang{british}{english}{}
+\HyLang@DeclareLang{USenglish}{english}{}
+\HyLang@DeclareLang{american}{english}{}
+\HyLang@DeclareLang{german}{german}{}
+\HyLang@DeclareLang{austrian}{german}{}
+\HyLang@DeclareLang{ngerman}{german}{}
+\HyLang@DeclareLang{naustrian}{german}{}
+\HyLang@DeclareLang{russian}{russian}{\noexpand\hypersetup{unicode}}
+\HyLang@DeclareLang{brazil}{portuges}{}
+\HyLang@DeclareLang{brazilian}{portuges}{}
+\HyLang@DeclareLang{portuguese}{portuges}{}
+\HyLang@DeclareLang{spanish}{spanish}{}
+\HyLang@DeclareLang{catalan}{catalan}{}
+\HyLang@DeclareLang{afrikaans}{afrikaans}{}
+\HyLang@DeclareLang{french}{french}{}
+\HyLang@DeclareLang{frenchb}{french}{}
+\HyLang@DeclareLang{francais}{french}{}
+\HyLang@DeclareLang{acadian}{french}{}
+\HyLang@DeclareLang{canadien}{french}{}
+\HyLang@DeclareLang{italian}{italian}{}
+\HyLang@DeclareLang{magyar}{magyar}{}
+\HyLang@DeclareLang{hungarian}{magyar}{}
+\HyLang@DeclareLang{greek}{greek}{}
+\HyLang@DeclareLang{dutch}{dutch}{}
+% \end{macrocode}
+% More work is needed in case of options |vietnamese| and |vietnam|.
+% \begin{macrocode}
+\DeclareVoidOption{vietnamese}{%
+ \HyLang@addto\extrasvietnamese\HyLang@vietnamese
+ \Hy@AtEndOfPackage{%
+ \@ifundefined{T@PU}{}{%
+ \input{puvnenc.def}%
+ }%
+ }%
+}
+\DeclareVoidOption{vietnam}{%
+ \HyLang@addto\extrasvietnam\HyLang@vietnamese
+ \Hy@AtEndOfPackage{%
+ \@ifundefined{T@PU}{}{%
+ \input{puvnenc.def}%
+ }%
+ }%
+}
+% \end{macrocode}
+% Similar for option |arabic| that just loads the additions
+% to PU encoding for Arabi.
+% \begin{macrocode}
+\DeclareVoidOption{arabic}{%
+ \Hy@AtEndOfPackage{%
+ \@ifundefined{T@PU}{}{%
+ \input{puarenc.def}%
+ }%
+ }%
+}
+% \end{macrocode}
+%
+% \section{Options to change appearance of links}\label{appearance}
+% Colouring links at the \LaTeX\ level is useful for debugging, perhaps.
+% \begin{macrocode}
+\define@key{Hyp}{colorlinks}[true]{%
+ \Hy@boolkey{colorlinks}{#1}%
+}
+\DeclareVoidOption{hidelinks}{%
+ \Hy@colorlinksfalse
+ \Hy@ocgcolorlinksfalse
+ \Hy@frenchlinksfalse
+ \def\Hy@colorlink##1{\begingroup}%
+ \def\Hy@endcolorlink{\endgroup}%
+ \def\@pdfborder{0 0 0}%
+ \let\@pdfborderstyle\ltx@empty
+}
+\define@key{Hyp}{ocgcolorlinks}[true]{%
+ \Hy@boolkey{ocgcolorlinks}{#1}%
+}
+\Hy@AtBeginDocument{%
+ \begingroup
+ \@ifundefined{OBJ@OCG@view}{%
+ \ifHy@ocgcolorlinks
+ \Hy@Warning{%
+ Driver does not support `ocgcolorlinks',\MessageBreak
+ using `colorlinks' instead%
+ }%
+ \fi
+ }{}%
+ \endgroup
+}
+\define@key{Hyp}{frenchlinks}[true]{%
+ \Hy@boolkey{frenchlinks}{#1}%
+}
+% \end{macrocode}
+%
+% \section{Bookmarking}
+%
+% \begin{macrocode}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname chapter\endcsname\relax
+ \def\toclevel@part{0}%
+\else
+ \def\toclevel@part{-1}%
+\fi
+\def\toclevel@chapter{0}
+\def\toclevel@section{1}
+\def\toclevel@subsection{2}
+\def\toclevel@subsubsection{3}
+\def\toclevel@paragraph{4}
+\def\toclevel@subparagraph{5}
+\def\toclevel@figure{0}
+\def\toclevel@table{0}
+\@ifpackageloaded{listings}{%
+ \providecommand*\theHlstlisting{\thelstlisting}%
+ \providecommand*\toclevel@lstlisting{0}%
+}{}
+\@ifpackageloaded{listing}{%
+ \providecommand*\theHlisting{\thelisting}%
+ \providecommand*\toclevel@listing{0}%
+}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\define@key{Hyp}{bookmarks}[true]{%
+ \Hy@boolkey{bookmarks}{#1}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\define@key{Hyp}{bookmarksopen}[true]{%
+ \Hy@boolkey{bookmarksopen}{#1}%
+}
+% \end{macrocode}
+%
+% The depth of the outlines is controlled by option
+% \verb|bookmarksdepth|.
+% The option acts globally and distinguishes three cases:
+% \begin{itemize}
+% \item \verb|bookmarksdepth|: Without value hyperref uses
+% counter \texttt{tocdepth} (compatible behaviour and default).
+% \item \verb|bookmarksdepth=<number>|: the depth is set to
+% \verb|<number>|.
+% \item \verb|bookmarksdepth=<name>|: The \verb|<name>| must
+% not start with a number or minus sign. It is a document
+% division name (part, chapter, section, \dots). Internally
+% the value of macro \verb|\toclevel@<name>| is used.
+% \end{itemize}
+% \begin{macrocode}
+\let\Hy@bookmarksdepth\c@tocdepth
+\define@key{Hyp}{bookmarksdepth}[]{%
+ \begingroup
+ \edef\x{#1}%
+ \ifx\x\empty
+ \global\let\Hy@bookmarksdepth\c@tocdepth
+ \else
+ \@ifundefined{toclevel@\x}{%
+ \@onelevel@sanitize\x
+ \edef\y{\expandafter\@car\x\@nil}%
+ \ifcase 0\expandafter\ifx\y-1\fi
+ \expandafter\ifnum\expandafter`\y>47 %
+ \expandafter\ifnum\expandafter`\y<58 1\fi\fi\relax
+ \Hy@Warning{Unknown document division name (\x)}%
+ \else
+ \setbox\z@=\hbox{%
+ \count@=\x
+ \xdef\Hy@bookmarksdepth{\the\count@}%
+ }%
+ \fi
+ }{%
+ \setbox\z@=\hbox{%
+ \count@=\csname toclevel@\x\endcsname
+ \xdef\Hy@bookmarksdepth{\the\count@}%
+ }%
+ }%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+%
+% `bookmarksopenlevel' to specify the open level. From Heiko Oberdiek.
+% \begin{macrocode}
+\define@key{Hyp}{bookmarksopenlevel}{%
+ \def\@bookmarksopenlevel{#1}%
+}
+\def\@bookmarksopenlevel{\maxdimen}
+% `bookmarkstype' to specify which `toc' file to mimic
+\define@key{Hyp}{bookmarkstype}{%
+ \def\Hy@bookmarkstype{#1}%
+}
+\def\Hy@bookmarkstype{toc}
+% \end{macrocode}
+% Richard Curnow <richard@curnow.demon.co.uk> suggested this
+% functionality. It adds section numbers etc to bookmarks.
+% \begin{macrocode}
+\define@key{Hyp}{bookmarksnumbered}[true]{%
+ \Hy@boolkey{bookmarksnumbered}{#1}%
+}
+% \end{macrocode}
+%
+% Option CJKbookmarks enables the patch for
+% CJK bookmarks.
+% \begin{macrocode}
+\define@key{Hyp}{CJKbookmarks}[true]{%
+ \Hy@boolkey{CJKbookmarks}{#1}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Hy@temp#1{%
+ \expandafter\Hy@@temp\csname @#1color\endcsname{#1}%
+}
+\def\Hy@@temp#1#2#3{%
+ \define@key{Hyp}{#2color}{%
+ \HyColor@HyperrefColor{##1}#1%
+ }%
+ \def#1{#3}%
+}
+\Hy@temp{link}{red}
+\Hy@temp{anchor}{black}
+\Hy@temp{cite}{green}
+\Hy@temp{file}{cyan}
+\Hy@temp{url}{magenta}
+\Hy@temp{menu}{red}
+\Hy@temp{run}{\@filecolor}
+\define@key{Hyp}{pagecolor}{%
+ \Hy@WarningPageColor
+}
+\def\Hy@WarningPageColor{%
+ \Hy@WarningNoLine{Option `pagecolor' is not available anymore}%
+ \global\let\Hy@WarningPageColor\relax
+}
+\define@key{Hyp}{allcolors}{%
+ \HyColor@HyperrefColor{#1}\@linkcolor
+ \HyColor@HyperrefColor{#1}\@anchorcolor
+ \HyColor@HyperrefColor{#1}\@citecolor
+ \HyColor@HyperrefColor{#1}\@filecolor
+ \HyColor@HyperrefColor{#1}\@urlcolor
+ \HyColor@HyperrefColor{#1}\@menucolor
+ \HyColor@HyperrefColor{#1}\@runcolor
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\hyperbaseurl#1{\def\@baseurl{#1}}
+\define@key{Hyp}{baseurl}{\hyperbaseurl{#1}}
+\let\@baseurl\@empty
+\def\hyperlinkfileprefix#1{\def\Hy@linkfileprefix{#1}}
+\define@key{Hyp}{linkfileprefix}{\hyperlinkfileprefix{#1}}
+\hyperlinkfileprefix{file:}
+% \end{macrocode}
+%
+% \section{PDF-specific options}\label{pdfopt}
+%
+% \begin{macro}{\@pdfpagetransition}
+% The value of option |pdfpagetransition| is stored in
+% \cmd{\@pdfpagetransition}. Its initial value is set
+% to \cmd{\relax} in order to be able to differentiate
+% between a not used option and an option with an empty
+% value.
+% \begin{macrocode}
+\let\@pdfpagetransition\relax
+\define@key{Hyp}{pdfpagetransition}{%
+ \def\@pdfpagetransition{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@pdfpageduration}
+% The value of option |pdfpageduration| is stored in
+% \cmd{\@pdfpageduration}. Its initial value is set
+% to \cmd{\relax} in order to be able to differentiate
+% between a not used option and an option with an empty
+% value.
+% \begin{macrocode}
+\let\@pdfpageduration\relax
+\define@key{Hyp}{pdfpageduration}{%
+ \def\@pdfpageduration{#1}%
+ \Hy@Match\@pdfpageduration{}{%
+ ^(|[0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+)$%
+ }{}{%
+ \Hy@Warning{%
+ Invalid value `\@pdfpageduration'\MessageBreak
+ of option `pdfpageduration'\MessageBreak
+ is replaced by an empty value%
+ }%
+ \let\@pdfpageduration\ltx@empty
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% The entry for the |/Hid| key in the page object is
+% only necessary, if it is used and set to true for
+% at least one time. If it is always false, then
+% the |/Hid| key is not written to the pdf page
+% object in order not to enlarge the pdf file.
+% \begin{macrocode}
+\newif\ifHy@useHidKey
+\Hy@useHidKeyfalse
+\define@key{Hyp}{pdfpagehidden}[true]{%
+ \Hy@boolkey{pdfpagehidden}{#1}%
+ \ifHy@pdfpagehidden
+ \global\Hy@useHidKeytrue
+ \fi
+}
+% \end{macrocode}
+%
+% The value of the |bordercolor| options are not processed
+% by the color package. Therefore the value consists of
+% space separated rgb numbers in the range 0 until 1.
+%
+% Package |xcolor| provides |\XC@bordercolor| since version 1.1.
+% If the two spaces in the color specification are missing,
+% then the value is processed as color specification from
+% package |xcolor| by using |\XC@bordercolor| (since
+% xcolor 2004/05/09 v1.11, versions 2005/03/24 v2.02 until
+% 2006/11/28 v2.10 do not work because of a bug that is
+% fixed in 2007/01/21 v2.11).
+% \begin{macrocode}
+\def\Hy@ColorList{cite,file,link,menu,run,url}
+\@for\Hy@temp:=\Hy@ColorList\do{%
+ \edef\Hy@temp{%
+ \noexpand\define@key{Hyp}{\Hy@temp bordercolor}{%
+ \noexpand\HyColor@HyperrefBorderColor
+ {##1}%
+ \expandafter\noexpand\csname @\Hy@temp bordercolor\endcsname
+ {hyperref}%
+ {\Hy@temp bordercolor}%
+ }%
+ }%
+ \Hy@temp
+}
+\define@key{Hyp}{pagebordercolor}{%
+ \Hy@WarningPageBorderColor
+}
+\def\Hy@WarningPageBorderColor{%
+ \Hy@WarningNoLine{Option `pagebordercolor' is not available anymore}%
+ \global\let\Hy@WarningPageBorderColor\relax
+}
+\define@key{Hyp}{allbordercolors}{%
+ \def\Hy@temp##1##2{%
+ \HyColor@HyperrefBorderColor{#1}##1{hyperref}{##2bordercolor}%
+ }%
+ \Hy@temp\@citebordercolor{cite}%
+ \Hy@temp\@filebordercolor{file}%
+ \Hy@temp\@linkbordercolor{link}%
+ \Hy@temp\@menubordercolor{menu}%
+ \Hy@temp\@runbordercolor{run}%
+ \Hy@temp\@urlbordercolor{url}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\define@key{Hyp}{pdfhighlight}{\def\@pdfhighlight{#1}}
+\Hy@DefNameKey{pdfhighlight}{%
+ \do{/I}{Invert}%
+ \do{/N}{None}%
+ \do{/O}{Outline}%
+ \do{/P}{Push}%
+}
+\def\Hy@setpdfhighlight{%
+ \ifx\@pdfhighlight\@empty
+ \else
+ /H\@pdfhighlight
+ \fi
+}
+\define@key{Hyp}{pdfborder}{%
+ \let\Hy@temp\@pdfborder
+ \def\@pdfborder{#1}%
+ \Hy@Match\@pdfborder{}{%
+ ^\HyPat@NonNegativeReal/ %
+ \HyPat@NonNegativeReal/ %
+ \HyPat@NonNegativeReal/%
+ ( ?\[\HyPat@NonNegativeReal/( \HyPat@NonNegativeReal/)*])?$%
+ }{}{%
+ \Hy@Warning{%
+ Invalid value `\@pdfborder'\MessageBreak
+ for option `pdfborder'.\MessageBreak
+ Option setting is ignored%
+ }%
+ \let\@pdfborder\Hy@temp
+ }%
+}
+\define@key{Hyp}{pdfborderstyle}{%
+ \let\Hy@temp\@pdfborderstyle
+ \def\@pdfborderstyle{#1}%
+ \Hy@Match\@pdfborderstyle{}{%
+ ^%
+ ( */Type */Border%
+ | */W +\HyPat@NonNegativeReal/%
+ | */S */[SDBIU]%
+ | */D *\[ *(\HyPat@NonNegativeReal/( \HyPat@NonNegativeReal/)?)?]%
+ )* *$%
+ }{}{%
+ \Hy@Warning{%
+ Invalid value `\@pdfborderstyle'\MessageBreak
+ for option `pdfborderstyle'.\MessageBreak
+ Option setting is ignored%
+ }%
+ \let\@pdfborderstyle\Hy@temp
+ }%
+}
+\def\Hy@setpdfborder{%
+ \ifx\@pdfborder\@empty
+ \else
+ /Border[\@pdfborder]%
+ \fi
+ \ifx\@pdfborderstyle\@empty
+ \else
+ /BS<<\@pdfborderstyle>>%
+ \fi
+}
+\Hy@DefNameKey{pdfpagemode}{%
+ \do{UseNone}{}%
+ \do{UseOutlines}{}%
+ \do{UseThumbs}{}%
+ \do{FullScreen}{}%
+ \do{UseOC}{PDF 1.5}%
+ \do{UseAttachments}{PDF 1.6}%
+}
+\Hy@DefNameKey{pdfnonfullscreenpagemode}{%
+ \do{UseNone}{}%
+ \do{UseOutlines}{}%
+ \do{UseThumbs}{}%
+ \do{FullScreen}{}%
+ \do{UseOC}{PDF 1.5}%
+ \do{UseAttachments}{PDF 1.6}%
+}
+\Hy@DefNameKey{pdfdirection}{%
+ \do{L2R}{Left to right}%
+ \do{R2L}{Right to left}%
+}
+\Hy@DefNameKey{pdfviewarea}{%
+ \do{MediaBox}{}%
+ \do{CropBox}{}%
+ \do{BleedBox}{}%
+ \do{TrimBox}{}%
+ \do{ArtBox}{}%
+}
+\Hy@DefNameKey{pdfviewclip}{%
+ \do{MediaBox}{}%
+ \do{CropBox}{}%
+ \do{BleedBox}{}%
+ \do{TrimBox}{}%
+ \do{ArtBox}{}%
+}
+\Hy@DefNameKey{pdfprintarea}{%
+ \do{MediaBox}{}%
+ \do{CropBox}{}%
+ \do{BleedBox}{}%
+ \do{TrimBox}{}%
+ \do{ArtBox}{}%
+}
+\Hy@DefNameKey{pdfprintclip}{%
+ \do{MediaBox}{}%
+ \do{CropBox}{}%
+ \do{BleedBox}{}%
+ \do{TrimBox}{}%
+ \do{ArtBox}{}%
+}
+\Hy@DefNameKey{pdfprintscaling}{%
+ \do{AppDefault}{}%
+ \do{None}{}%
+}
+\Hy@DefNameKey{pdfduplex}{%
+ \do{Simplex}{}%
+ \do{DuplexFlipShortEdge}{}%
+ \do{DuplexFlipLongEdge}{}%
+}
+\Hy@DefNameKey{pdfpicktraybypdfsize}{%
+ \do{true}{}%
+ \do{false}{}%
+}
+\define@key{Hyp}{pdfprintpagerange}{%
+ \def\@pdfprintpagerange{#1}%
+}
+\Hy@DefNameKey{pdfnumcopies}{%
+ \do{2}{two copies}%
+ \do{3}{three copies}%
+ \do{4}{four copies}%
+ \do{5}{five copies}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\define@key{Hyp}{pdfusetitle}[true]{%
+ \Hy@boolkey{pdfusetitle}{#1}%
+}
+\def\HyXeTeX@CheckUnicode{%
+ \ifxetex
+ \ifHy@unicode
+ \else
+ \Hy@WarningNoLine{%
+ XeTeX driver only supports unicode.\MessageBreak
+ Enabling option `unicode'%
+ }%
+ \kvsetkeys{Hyp}{unicode}%
+ \fi
+ \else
+ \let\HyXeTeX@CheckUnicode\relax
+ \fi
+}
+\def\HyPsd@PrerenderUnicode#1{%
+ \begingroup
+ \expandafter\ifx\csname PrerenderUnicode\endcsname\relax
+ \else
+ \sbox0{%
+ \let\GenericInfo\@gobbletwo
+ \let\GenericWarning\@gobbletwo
+ \let\GenericError\@gobblefour
+ \PrerenderUnicode{#1}%
+ }%
+ \fi
+ \endgroup
+}
+\define@key{Hyp}{pdftitle}{%
+ \HyXeTeX@CheckUnicode
+ \HyPsd@XeTeXBigCharstrue
+ \HyPsd@PrerenderUnicode{#1}%
+ \pdfstringdef\@pdftitle{#1}%
+}
+\define@key{Hyp}{pdfauthor}{%
+ \HyXeTeX@CheckUnicode
+ \HyPsd@XeTeXBigCharstrue
+ \HyPsd@PrerenderUnicode{#1}%
+ \pdfstringdef\@pdfauthor{#1}%
+}
+\define@key{Hyp}{pdfproducer}{%
+ \HyXeTeX@CheckUnicode
+ \HyPsd@XeTeXBigCharstrue
+ \HyPsd@PrerenderUnicode{#1}%
+ \pdfstringdef\@pdfproducer{#1}%
+}
+\define@key{Hyp}{pdfcreator}{%
+ \HyXeTeX@CheckUnicode
+ \HyPsd@XeTeXBigCharstrue
+ \HyPsd@PrerenderUnicode{#1}%
+ \pdfstringdef\@pdfcreator{#1}%
+}
+\define@key{Hyp}{addtopdfcreator}{%
+ \HyXeTeX@CheckUnicode
+ \HyPsd@XeTeXBigCharstrue
+ \HyPsd@PrerenderUnicode{#1}%
+ \pdfstringdef\@pdfcreator{\@pdfcreator, #1}%
+}
+\define@key{Hyp}{pdfcreationdate}{%
+ \begingroup
+ \Hy@unicodefalse
+ \pdfstringdef\@pdfcreationdate{#1}%
+ \endgroup
+}
+\define@key{Hyp}{pdfmoddate}{%
+ \begingroup
+ \Hy@unicodefalse
+ \pdfstringdef\@pdfmoddate{#1}%
+ \endgroup
+}
+\define@key{Hyp}{pdfsubject}{%
+ \HyXeTeX@CheckUnicode
+ \HyPsd@XeTeXBigCharstrue
+ \HyPsd@PrerenderUnicode{#1}%
+ \pdfstringdef\@pdfsubject{#1}%
+}
+\define@key{Hyp}{pdfkeywords}{%
+ \HyXeTeX@CheckUnicode
+ \HyPsd@XeTeXBigCharstrue
+ \HyPsd@PrerenderUnicode{#1}%
+ \pdfstringdef\@pdfkeywords{#1}%
+}
+\define@key{Hyp}{pdftrapped}{%
+ \lowercase{\edef\Hy@temp{#1}}%
+ \ifx\Hy@temp\HyInfo@trapped@true
+ \def\@pdftrapped{True}%
+ \else
+ \ifx\Hy@temp\HyInfo@trapped@false
+ \def\@pdftrapped{False}%
+ \else
+ \ifx\Hy@temp\HyInfo@trapped@unknown
+ \def\@pdftrapped{Unknown}%
+ \else
+ \ifx\Hy@temp\@empty
+ \else
+ \Hy@Warning{%
+ Unsupported value `#1'\MessageBreak
+ for option `pdftrapped'%
+ }%
+ \fi
+ \def\@pdftrapped{}%
+ \fi
+ \fi
+ \fi
+}
+\def\HyInfo@trapped@true{true}
+\def\HyInfo@trapped@false{false}
+\def\HyInfo@trapped@unknown{unknown}
+\def\HyInfo@TrappedUnsupported{%
+ \ifx\@pdftrapped\@empty
+ \else
+ \Hy@WarningNoLine{`pdftrapped' is not supported by this driver}%
+ \gdef\HyInfo@TrappedUnsupported{}%
+ \fi
+}
+\define@key{Hyp}{pdfinfo}{%
+ \kvsetkeys{pdfinfo}{#1}%
+}
+\def\Hy@temp#1{%
+ \lowercase{\Hy@temp@A{#1}}{#1}%
+}
+\def\Hy@temp@A#1#2{%
+ \define@key{pdfinfo}{#2}{%
+ \hypersetup{pdf#1={##1}}%
+ }%
+}
+\Hy@temp{Title}
+\Hy@temp{Author}
+\Hy@temp{Keywords}
+\Hy@temp{Subject}
+\Hy@temp{Creator}
+\Hy@temp{Producer}
+\Hy@temp{CreationDate}
+\Hy@temp{ModDate}
+\Hy@temp{Trapped}
+\newif\ifHyInfo@AddonUnsupported
+\kv@set@family@handler{pdfinfo}{%
+ \HyInfo@AddonHandler{#1}{#2}%
+}
+\let\HyInfo@do\relax
+\def\HyInfo@AddonHandler#1#2{%
+ \ifx\kv@value\relax
+ \Hy@Warning{%
+ Option `pdfinfo': ignoring key `\kv@key' without value%
+ }%
+ \else
+ \EdefEscapeName\HyInfo@KeyEscaped{\kv@key}%
+ \EdefUnescapeName\HyInfo@Key{\HyInfo@KeyEscaped}%
+ \expandafter\ifx\csname KV@pdfinfo@\HyInfo@Key\endcsname\relax
+ \ifHyInfo@AddonUnsupported
+ \Hy@Warning{%
+ This driver does not support additional\MessageBreak
+ information entries, therefore\MessageBreak
+ `\kv@key' is ignored%
+ }%
+ \else
+ \def\HyInfo@tmp##1{%
+ \kv@define@key{pdfinfo}{##1}{%
+ \HyXeTeX@CheckUnicode
+ \HyPsd@XeTeXBigCharstrue
+ \HyPsd@PrerenderUnicode{####1}%
+ \pdfstringdef\HyInfo@Value{####1}%
+ \global\expandafter
+ \let\csname HyInfo@Value@##1\endcsname
+ \HyInfo@Value
+ }%
+ }%
+ \expandafter\HyInfo@tmp\expandafter{\HyInfo@Key}%
+ \global\expandafter
+ \let\csname KV@pdfinfo@\HyInfo@Key\expandafter\endcsname
+ \csname KV@pdfinfo@\HyInfo@Key\endcsname
+ \xdef\HyInfo@AddonList{%
+ \HyInfo@AddonList
+ \HyInfo@do{\HyInfo@Key}%
+ }%
+ \kv@parse@normalized{%
+ \HyInfo@Key={#2}%
+ }{%
+ \kv@processor@default{pdfinfo}%
+ }%
+ \fi
+ \else
+ \kv@parse@normalized{%
+ \HyInfo@Key={#2}%
+ }{%
+ \kv@processor@default{pdfinfo}%
+ }%
+ \fi
+ \fi
+}
+\def\HyInfo@GenerateAddons{%
+ \ifHyInfo@AddonUnsupported
+ \def\HyInfo@Addons{}%
+ \else
+ \begingroup
+ \toks@{}%
+ \def\HyInfo@do##1{%
+ \EdefEscapeName\HyInfo@Key{##1}%
+ \edef\x{%
+ \toks@{%
+ \the\toks@
+ /\HyInfo@Key(\csname HyInfo@Value@##1\endcsname)%
+ }%
+ }%
+ \x
+ }%
+ \HyInfo@AddonList
+ \edef\x{\endgroup
+ \def\noexpand\HyInfo@Addons{\the\toks@}%
+ }%
+ \x
+ \fi
+}
+\global\let\HyInfo@AddonList\ltx@empty
+% \end{macrocode}
+% \begin{macrocode}
+\define@key{Hyp}{pdfview}{\calculate@pdfview#1 \\}
+\define@key{Hyp}{pdflinkmargin}{\setpdflinkmargin{#1}}
+\let\setpdflinkmargin\@gobble
+\def\calculate@pdfview#1 #2\\{%
+ \def\@pdfview{#1}%
+ \ifx\\#2\\%
+ \def\@pdfviewparams{ -32768}%
+ \else
+ \def\@pdfviewparams{ #2}%
+ \fi
+}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname numexpr\endcsname\relax
+ \def\Hy@number#1{%
+ \expandafter\@firstofone\expandafter{\number#1}%
+ }%
+\else
+ \def\Hy@number#1{%
+ \the\numexpr#1\relax
+ }%
+\fi
+\define@key{Hyp}{pdfstartpage}{%
+ \ifx\\#1\\%
+ \let\@pdfstartpage\ltx@empty
+ \else
+ \edef\@pdfstartpage{\Hy@number{#1}}%
+ \fi
+}%
+\define@key{Hyp}{pdfstartview}{%
+ \ifx\\#1\\%
+ \let\@pdfstartview\ltx@empty
+ \else
+ \hypercalcbpdef\@pdfstartview{/#1}%
+ \fi
+}
+\def\HyPat@NonNegativeReal/{%
+ \ *([0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+) *%
+}
+\define@key{Hyp}{pdfremotestartview}{%
+ \ifx\\#1\\%
+ \def\@pdfremotestartview{/Fit}%
+ \else
+ \hypercalcbpdef\@pdfremotestartview{#1}%
+ \edef\@pdfremotestartview{\@pdfremotestartview}%
+ \Hy@Match\@pdfremotestartview{}{%
+ ^(XYZ(%
+ ()| %
+ (null|-?\HyPat@NonNegativeReal/) %
+ (null|-?\HyPat@NonNegativeReal/) %
+ (null|\HyPat@NonNegativeReal/)%
+ )|% end of "XYZ"
+ Fit(%
+ ()|%
+ B|%
+ (H|V|BH|BV)(%
+ ()| %
+ (null|\HyPat@NonNegativeReal/)%
+ )|%
+ R %
+ \HyPat@NonNegativeReal/ %
+ \HyPat@NonNegativeReal/ %
+ \HyPat@NonNegativeReal/ %
+ \HyPat@NonNegativeReal/%
+ )% end of "Fit"
+ )$%
+ }{}{%
+ \Hy@Warning{%
+ Invalid value `\@pdfremotestartview'\MessageBreak
+ of `pdfremotestartview'\MessageBreak
+ is replaced by `Fit'%
+ }%
+ \let\@pdfremotestartview\@empty
+ }%
+ \ifx\@pdfremotestartview\@empty
+ \def\@pdfremotestartview{/Fit}%
+ \else
+ \edef\@pdfremotestartview{/\@pdfremotestartview}%
+ \fi
+ \fi
+}
+\define@key{Hyp}{pdfpagescrop}{\edef\@pdfpagescrop{#1}}
+\define@key{Hyp}{pdftoolbar}[true]{%
+ \Hy@boolkey{pdftoolbar}{#1}%
+}
+\define@key{Hyp}{pdfmenubar}[true]{%
+ \Hy@boolkey{pdfmenubar}{#1}%
+}
+\define@key{Hyp}{pdfwindowui}[true]{%
+ \Hy@boolkey{pdfwindowui}{#1}%
+}
+\define@key{Hyp}{pdffitwindow}[true]{%
+ \Hy@boolkey{pdffitwindow}{#1}%
+}
+\define@key{Hyp}{pdfcenterwindow}[true]{%
+ \Hy@boolkey{pdfcenterwindow}{#1}%
+}
+\define@key{Hyp}{pdfdisplaydoctitle}[true]{%
+ \Hy@boolkey{pdfdisplaydoctitle}{#1}%
+}
+\define@key{Hyp}{pdfa}[true]{%
+ \Hy@boolkey{pdfa}{#1}%
+}
+\define@key{Hyp}{pdfnewwindow}[true]{%
+ \def\Hy@temp{#1}%
+ \ifx\Hy@temp\@empty
+ \Hy@pdfnewwindowsetfalse
+ \else
+ \Hy@pdfnewwindowsettrue
+ \Hy@boolkey{pdfnewwindow}{#1}%
+ \fi
+}
+\def\Hy@SetNewWindow{%
+ \ifHy@pdfnewwindowset
+ /NewWindow %
+ \ifHy@pdfnewwindow true\else false\fi
+ \fi
+}
+\Hy@DefNameKey{pdfpagelayout}{%
+ \do{SinglePage}{}%
+ \do{OneColumn}{}%
+ \do{TwoColumnLeft}{}%
+ \do{TwoColumnRight}{}%
+ \do{TwoPageLeft}{PDF 1.5}%
+ \do{TwoPageRight}{PDF 1.5}%
+}
+\define@key{Hyp}{pdflang}{%
+ \edef\@pdflang{#1}%
+ \def\Hy@temp{\relax}%
+ \ifx\@pdflang\Hy@temp
+ \let\@pdflang\relax
+ \fi
+ \ifx\@pdflang\relax
+ \else
+ \ifx\@pdflang\ltx@empty
+ \else
+% \end{macrocode}
+% Test according to ABNF of RFC 3066.
+% \begin{macrocode}
+ \Hy@Match\@pdflang{icase}{%
+ ^%
+ [a-z]{1,8}%
+ (-[a-z0-9]{1,8})*%
+ $%
+ }{%
+% \end{macrocode}
+% Test according to ABNF of RFC 5646.
+% \begin{macrocode}
+ \Hy@Match\@pdflang{icase}{%
+ ^%
+ (%
+ % langtag
+ (% language
+ [a-z]{2,3}%
+ ([a-z]{3}(-[a-z]{3}){0,2})?% extlang
+ |[a-z]{4}% reserved for future use
+ |[a-z]{5,8}% registered language subtag
+ )%
+ (-[a-z]{4})?% script
+ (-([a-z]{2}|[0-9]{3}))?% region
+ (-([a-z]{5,8}|[0-9][a-z0-9]{3}))*% variant
+ (-[0-9a-wyz](-[a-z0-9]{2,8})+)*% extension
+ (-x(-[a-z0-9]{1,8})+)?% privateuse
+ % privateuse
+ |x-([a-z0-9]{1,8})+%
+ % grandfathered/irregular
+ |en-GB-oed%
+ |i-(ami|bnn|default|enochian|hak|klingon|lux|%
+ mingo|navajo|pwn|tao|tay|tsu)%
+ |sgn-(BE-FR|BE-NL|CH-DE)%
+ % grandfathered/regular
+ |art-lojban%
+ |cel-gaulish%
+ |no-(bok|nyn)%
+ |zh-(guoyu|hakka|min|min-nan|xiang)%
+ )%
+ $%
+ }{%
+% \end{macrocode}
+% Test for unique extensions.
+% \begin{macrocode}
+ \Hy@Match{-\@pdflang}{icase}{-[a-wyz0-9]-}{%
+ \Hy@Match\@pdflang{icase}{^x-}{}{%
+ % remove privateuse
+ \edef\Hy@temp{-\@pdflang}%
+ \Hy@Match\Hy@temp{icase}{%
+ ^%
+ (%
+ (-[a-wyz0-9]|-[a-z0-9]{2,8})*%
+ )%
+ -x-%
+ }{%
+ \edef\Hy@temp{%
+ \expandafter\strip@prefix\pdflastmatch1%
+ }%
+ }{}%
+ \Hy@Match\Hy@temp{icase}{%
+ (-[a-wyz0-9]-).*\ltx@backslashchar1%
+ }{%
+ \Hy@Warning{%
+ Invalid language identifier `#1'\MessageBreak
+ for option `pdflang', because it violates\MessageBreak
+ well-formedness defined in RFC 4646\MessageBreak
+ by duplicate singleton subtags%
+ }%
+ \let\@pdflang\relax
+ }{}%
+ }%
+ }{}%
+% \end{macrocode}
+% User-assigned country codes are forbidden in language tags (RFC 3066).
+% \begin{macrocode}
+ \ifx\@pdflang\relax
+ \else
+ \Hy@Match\@pdflang{icase}{%
+ ^%
+ [a-zA-Z]{2}-%
+ (%
+ aa|AA|%
+ [qQ][m-zM-Z]|%
+ [xX][a-zA-Z]|%
+ zz|ZZ%
+ )%
+ (-|$)%
+ }{%
+ \Hy@Warning{%
+ Invalid language identifier `#1'\MessageBreak
+ for option `pdflang' because of invalid country code%
+ \MessageBreak
+ in second subtag (RFC 3066)%
+ }%
+ \let\@pdflang\relax
+ }{}%
+ \fi
+ }{%
+ \Hy@Warning{%
+ Invalid language identifier `#1'\MessageBreak
+ for option `pdflang', because it violates\MessageBreak
+ well-formedness defined in RFC 5646%
+ }%
+ \let\@pdflang\relax
+ }%
+ }{%
+ \Hy@Warning{%
+ Invalid language identifier `#1'\MessageBreak
+ for option `pdflang' (RFC 3066)%
+ }%
+ \let\@pdflang\relax
+ }%
+ \fi
+ \fi
+}
+\define@key{Hyp}{pdfpagelabels}[true]{%
+ \Hy@boolkey{pdfpagelabels}{#1}%
+}
+\define@key{Hyp}{pdfescapeform}[true]{%
+ \Hy@boolkey{pdfescapeform}{#1}%
+}
+% \end{macrocode}
+% Default values:
+% \begin{macrocode}
+\def\@linkbordercolor{1 0 0}
+\def\@urlbordercolor{0 1 1}
+\def\@menubordercolor{1 0 0}
+\def\@filebordercolor{0 .5 .5}
+\def\@runbordercolor{0 .7 .7}
+\def\@citebordercolor{0 1 0}
+\def\@pdfhighlight{/I}
+\let\@pdftitle\ltx@empty
+\let\@pdfauthor\ltx@empty
+\let\@pdfproducer\relax
+\def\@pdfcreator{LaTeX with hyperref}
+\let\@pdfcreationdate\ltx@empty
+\let\@pdfmoddate\ltx@empty
+\let\@pdfsubject\ltx@empty
+\let\@pdfkeywords\ltx@empty
+\let\@pdftrapped\ltx@empty
+\let\@pdfpagescrop\ltx@empty
+\def\@pdfstartview{/Fit}
+\def\@pdfremotestartview{/Fit}
+\def\@pdfstartpage{1}
+\let\@pdfprintpagerange\ltx@empty
+\let\@pdflang\relax
+\let\PDF@SetupDoc\@empty
+\let\PDF@FinishDoc\@empty
+\let\phantomsection\@empty
+\let\special@paper\@empty
+\def\HyperDestNameFilter#1{#1}
+\Hy@AtBeginDocument{%
+ \begingroup
+ \edef\x{\@ifundefined{stockheight}\paperheight\stockheight}%
+ \dimen@=\x\relax
+ \ifdim\dimen@>\z@
+ \else
+ \dimen@=11in\relax
+ \Hy@WarningNoLine{%
+ Height of page (\expandafter\string\x) %
+ is invalid (\the\x),\MessageBreak
+ using 11in%
+ }%
+ \fi
+ \dimen@=0.99626401\dimen@
+ \xdef\Hy@pageheight{\strip@pt\dimen@}%
+ \endgroup
+}
+\def\HyInd@EncapChar{\|}
+% \end{macrocode}
+%
+% Allow the user to use |\ExecuteOptions| in the cfg file even though
+% this package does not use the normal option mechanism.
+% Use |\hyper@normalise| as a scratch macro, since it is going to
+% be defined in a couple of lines anyway.
+% \begin{macrocode}
+\let\hyper@normalise\ExecuteOptions
+\let\ExecuteOptions\hypersetup
+\Hy@RestoreCatcodes
+\InputIfFileExists{hyperref.cfg}{}{}
+\Hy@SetCatcodes
+\let\ExecuteOptions\hyper@normalise
+\ifx\Hy@MaybeStopNow\relax
+\else
+ \Hy@stoppedearlytrue
+ \expandafter\Hy@MaybeStopNow
+\fi
+\Hy@stoppedearlyfalse
+% \end{macrocode}
+% To add flexibility, we will not use the ordinary processing of
+% package options, but put them through the \emph{keyval} package.
+% This section was written by David Carlisle.
+%
+% \begin{macrocode}
+\SetupKeyvalOptions{family=Hyp}
+\DeclareLocalOptions{%
+ a4paper,a5paper,b5paper,letterpaper,legalpaper,executivepaper%
+}
+% \end{macrocode}
+%
+% Add option |tex4ht| if package |tex4ht| is loaded.
+% \begin{macrocode}
+\@ifpackagewith{hyperref}{tex4ht}{%
+}{%
+ \@ifpackageloaded{tex4ht}{%
+ \PassOptionsToPackage{tex4ht}{hyperref}%
+ }{%
+ \ltx@IfUndefined{HCode}{%
+ }{%
+ \begingroup
+ \def\Hy@pkg{tex4ht}%
+ \def\Hy@temp@A#1\RequirePackage[#2]#3#4\Hy@NIL{%
+ \def\Hy@param{#2#3}%
+ \ifx\Hy@param\ltx@empty
+ \expandafter\ltx@gobble
+ \else
+ \def\Hy@param{#3}%
+ \ifx\Hy@param\Hy@pkg
+ \PassOptionsToPackage{#2}{tex4ht}%
+ \expandafter\expandafter\expandafter\@gobble
+ \else
+ \expandafter\expandafter\expandafter\ltx@firstofone
+ \fi
+ \fi
+ {\Hy@temp@A#4\Hy@NIL}%
+ }%
+ \expandafter
+ \Hy@temp@A\@documentclasshook\RequirePackage[]{}\Hy@NIL
+ \endgroup
+ \PassOptionsToPackage{tex4ht}{hyperref}%
+ }%
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\let\ReadBookmarks\relax
+\ProcessKeyvalOptions{Hyp}
+% \end{macrocode}
+%
+% After processing options.
+%
+% \subsection{Package xspace support}
+%
+% \begin{macrocode}
+\def\Hy@xspace@end{}
+\ltx@IfUndefined{xspaceaddexceptions}{%
+ \Hy@AtBeginDocument{%
+ \ltx@IfUndefined{xspaceaddexceptions}{%
+ }{%
+ \def\Hy@xspace@end{%
+ \ltx@gobble{end for xspace}%
+ }%
+ \xspaceaddexceptions{%
+ \Hy@xspace@end,\hyper@linkend,\hyper@anchorend
+ }%
+ }%
+ }%
+}{%
+ \def\Hy@xspace@end{%
+ \ltx@gobble{end for xspace}%
+ }%
+ \xspaceaddexceptions{\Hy@xspace@end,\hyper@linkend,\hyper@anchorend}%
+}
+% \end{macrocode}
+%
+% \subsection{Option draft}
+%
+% \begin{macrocode}
+\Hy@AtBeginDocument{%
+ \ifHy@draft
+ \let\hyper@@anchor\@gobble
+ \gdef\hyper@link#1#2#3{#3\Hy@xspace@end}%
+ \def\hyper@anchorstart#1#2{#2\Hy@xspace@end}%
+ \def\hyper@anchorend{\Hy@xspace@end}%
+ \let\hyper@linkstart\@gobbletwo
+ \def\hyper@linkend{\Hy@xspace@end}%
+ \def\hyper@linkurl#1#2{#1\Hy@xspace@end}%
+ \def\hyper@linkfile#1#2#3{#1\Hy@xspace@end}%
+ \def\hyper@link@[#1]#2#3#4{#4\Hy@xspace@end}%
+ \def\Acrobatmenu#1#2{\leavevmode#2\Hy@xspace@end}%
+ \let\PDF@SetupDoc\@empty
+ \let\PDF@FinishDoc\@empty
+ \let\@fifthoffive\@secondoftwo
+ \let\@secondoffive\@secondoftwo
+ \let\ReadBookmarks\relax
+ \let\WriteBookmarks\relax
+ \Hy@WarningNoLine{Draft mode on}%
+ \fi
+ \Hy@DisableOption{draft}%
+ \Hy@DisableOption{nolinks}%
+ \Hy@DisableOption{final}%
+}
+% \end{macrocode}
+%
+% \subsection{PDF/A}
+%
+% \begin{macrocode}
+\Hy@DisableOption{pdfa}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ifHy@pdfa
+ \ifnum \Hy@pdfversion < 4
+ \kvsetkeys{Hyp}{pdfversion=1.4}%
+ \fi
+ \Hy@DisableOption{pdfversion}%
+ \def\Hy@Acrobatmenu#1#2{%
+ \leavevmode
+ \begingroup
+ \edef\x{#1}%
+ \@onelevel@sanitize\x
+ \ifx\x\Hy@NextPage
+ \let\y=Y%
+ \else
+ \ifx\x\Hy@PrevPage
+ \let\y=Y%
+ \else
+ \ifx\x\Hy@FirstPage
+ \let\y=Y%
+ \else
+ \ifx\x\Hy@LastPage
+ \let\y=Y%
+ \else
+ \let\y=N%
+ \fi
+ \fi
+ \fi
+ \fi
+ \expandafter\endgroup
+ \ifx\y Y%
+ \else
+ \Hy@Error{%
+ PDF/A: Named action `#1' is not permitted%
+ }\@ehc
+ {#2}%
+ \expandafter\@gobble
+ \fi
+ }%
+ \def\Hy@temp#1{%
+ \expandafter\def\csname Hy@#1\endcsname{#1}%
+ \expandafter\@onelevel@sanitize\csname Hy@#1\endcsname
+ }%
+ \Hy@temp{NextPage}%
+ \Hy@temp{PrevPage}%
+ \Hy@temp{FirstPage}%
+ \Hy@temp{LastPage}%
+\else
+ \def\Hy@Acrobatmenu#1#2{\leavevmode}%
+\fi
+% \end{macrocode}
+%
+% \subsection{Patch for babel's
+% \texorpdfstring{\cs{texttilde}}{\\texttilde}}
+% Babel does not define \cmd{\texttilde} in NFSS2 manner,
+% so the NFSS2 definitions of PD1 or PU encoding is not
+% compatible. To fix this, \cmd{\texttilde} is defined
+% in babel manner.
+% \begin{macrocode}
+\Hy@nextfalse
+\ltx@IfUndefined{spanish@sh@"@sel}{}{\Hy@nexttrue}
+\ltx@IfUndefined{galician@sh@"@sel}{}{\Hy@nexttrue}
+\ltx@IfUndefined{estonian@sh@"@sel}{}{\Hy@nexttrue}
+\ifHy@next
+ \let\texttilde\~%
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Hy@wrapper@babel#1#2{%
+ \begingroup
+ \Hy@safe@activestrue
+ \set@display@protect
+ \edef\x{#2}%
+ \@onelevel@sanitize\x
+ \toks@{#1}%
+ \edef\x{\endgroup\the\toks@{\x}}%
+ \x
+}
+\def\Hy@WrapperDef#1{%
+ \begingroup
+ \escapechar=\m@ne
+ \xdef\Hy@gtemp{%
+ \expandafter\noexpand\csname HyWrap@\string#1\endcsname
+ }%
+ \endgroup
+ \edef#1{%
+ \noexpand\Hy@wrapper@babel
+ \expandafter\noexpand\Hy@gtemp
+ }%
+ \expandafter\def\Hy@gtemp
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ifHy@hyperfigures
+ \Hy@Info{Hyper figures ON}%
+\else
+ \Hy@Info{Hyper figures OFF}%
+\fi
+\ifHy@nesting
+ \Hy@Info{Link nesting ON}%
+\else
+ \Hy@Info{Link nesting OFF}%
+\fi
+\ifHy@hyperindex
+ \Hy@Info{Hyper index ON}%
+\else
+ \Hy@Info{Hyper index OFF}%
+\fi
+\ifHy@plainpages
+ \Hy@Info{Plain pages ON}%
+\else
+ \Hy@Info{Plain pages OFF}%
+\fi
+\ifHy@backref
+ \Hy@Info{Backreferencing ON}%
+\else
+ \Hy@Info{Backreferencing OFF}%
+\fi
+\ifHy@typexml
+ \Hy@AtEndOfPackage{%
+ \RequirePackage{color}%
+ \RequirePackage{nameref}[2012/07/28]%
+ }%
+\fi
+\Hy@DisableOption{typexml}
+\ifHy@implicit
+ \Hy@InfoNoLine{Implicit mode ON; LaTeX internals redefined}%
+\else
+ \Hy@InfoNoLine{Implicit mode OFF; no redefinition of LaTeX internals}%
+ \def\MaybeStopEarly{%
+ \Hy@Message{Stopped early}%
+ \Hy@AtBeginDocument{%
+ \PDF@FinishDoc
+ \gdef\PDF@FinishDoc{}%
+ }%
+ \endinput
+ }%
+ \Hy@AtBeginDocument{%
+ \let\autoref\ref
+ \let\autopageref\pageref
+ \ifx\@pdfpagemode\@empty
+ \gdef\@pdfpagemode{UseNone}%
+ \fi
+ \global\Hy@backreffalse
+ }%
+ \Hy@AtEndOfPackage{%
+ \global\let\ReadBookmarks\relax
+ \global\let\WriteBookmarks\relax
+ }%
+\fi
+\Hy@DisableOption{implicit}
+% \end{macrocode}
+%
+% \subsubsection{Driver loading}
+%
+% \begin{macrocode}
+\Hy@AtEndOfPackage{%
+ \@ifpackageloaded{tex4ht}{%
+ \def\Hy@driver{htex4ht}%
+ \Hy@texhttrue
+ }{}%
+% \end{macrocode}
+% Some drivers can be detected. Check for these drivers,
+% whether the given driver option is ok. Otherwise force
+% the right driver or use the default driver.
+% \begin{macrocode}
+ \ifx\Hy@driver\@empty
+ \else
+ \ifx\pdfextension\@undefined
+ \def\Hy@temp{hpdftex}%
+ \else
+ \def\Hy@temp{hluatex}%
+ \fi
+ \ifpdf
+ \ifx\Hy@driver\Hy@temp
+ \else
+ \Hy@WarningNoLine{%
+ Wrong driver `\Hy@driver.def';\MessageBreak
+ pdfTeX is running in PDF mode.\MessageBreak
+ Forcing driver `\Hy@temp.def'%
+ }%
+ \let\Hy@driver\Hy@temp
+ \fi
+ \else
+ \ifx\Hy@driver\Hy@temp
+ \Hy@WarningNoLine{%
+ Wrong driver `\Hy@driver.def';\MessageBreak
+ pdfTeX is not running in PDF mode.\MessageBreak
+ Using default driver%
+ }%
+ \let\Hy@driver\@empty
+ \fi
+ \fi
+ \fi
+ \ifHy@texht
+ \else
+ \ifx\Hy@driver\@empty
+ \else
+ \def\Hy@temp{hxetex}%
+ \ifxetex
+ \ifx\Hy@driver\Hy@temp
+ \else
+ \Hy@WarningNoLine{%
+ Wrong driver `\Hy@driver.def';\MessageBreak
+ XeTeX is running.\MessageBreak
+ Forcing driver `\Hy@temp.def' for XeTeX%
+ }%
+ \let\Hy@driver\Hy@temp
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifx\Hy@driver\@empty
+ \else
+ \def\Hy@temp{hvtexhtm}%
+ \ifvtexhtml
+ \ifx\Hy@driver\Hy@temp
+ \else
+ \Hy@WarningNoLine{%
+ Wrong driver `\Hy@driver.def';\MessageBreak
+ VTeX is running in HTML mode.\MessageBreak
+ Forcing driver `\Hy@temp.def'%
+ }%
+ \let\Hy@driver\Hy@temp
+ \fi
+ \else
+ \ifx\Hy@driver\Hy@temp
+ \Hy@WarningNoLine{%
+ Wrong driver `\Hy@driver.def';\MessageBreak
+ VTeX is not running in HTML mode.\MessageBreak
+ Using default driver%
+ }%
+ \let\Hy@driver\@empty
+ \fi
+ \fi
+ \fi
+% \end{macrocode}
+% If the driver is not given, find the right driver or
+% use the default driver.
+% \begin{macrocode}
+ \let\HyOpt@DriverType\ltx@empty
+ \ifx\HyOpt@CustomDriver\ltx@empty
+ \ifx\Hy@driver\@empty
+ \def\HyOpt@DriverType{ (autodetected)}%
+ \providecommand*{\Hy@defaultdriver}{hypertex}%
+ \ifpdf
+ \ifx\pdfextension\@undefined
+ \def\Hy@driver{hpdftex}%
+ \else
+ \def\Hy@driver{hluatex}%
+ \fi
+ \else
+ \ifxetex
+ \def\Hy@driver{hxetex}%
+ \else
+ \ifvtexhtml
+ \def\Hy@driver{hvtexhtm}%
+ \def\MaybeStopEarly{%
+ \Hy@Message{Stopped early}%
+ \Hy@AtBeginDocument{%
+ \PDF@FinishDoc
+ \gdef\PDF@FinishDoc{}%
+ }%
+ \endinput
+ }%
+ \else
+ \ifvtexpdf
+ \def\Hy@driver{hvtex}%
+ \else
+ \ifvtexps
+ \def\Hy@driver{hvtex}%
+ \else
+ \ifx\HyOpt@DriverFallback\ltx@empty
+ \let\Hy@driver\Hy@defaultdriver
+ \def\HyOpt@DriverType{ (default)}%
+ \else
+ \begingroup
+ \toks@\expandafter{\HyOpt@DriverFallback}%
+ \edef\x{\endgroup
+ \noexpand\kvsetkeys{Hyp}{\the\toks@}%
+ }%
+ \x
+ \ifx\Hy@driver\ltx@empty
+ \let\Hy@driver\Hy@defaultdriver
+ \def\HyOpt@DriverType{ (default)}%
+ \else
+ \def\HyOpt@DriverType{ (fallback)}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifx\Hy@driver\Hy@defaultdriver
+ \def\Hy@temp{hdviwind}%
+ \ifx\Hy@temp\Hy@driver
+ \kvsetkeys{Hyp}{colorlinks}%
+ \PassOptionsToPackage{dviwindo}{color}%
+ \fi
+ \fi
+ \fi
+ \else
+ \def\HyOpt@DriverType{ (custom)}%
+ \let\Hy@driver\HyOpt@CustomDriver
+ \fi
+ \Hy@InfoNoLine{Driver\HyOpt@DriverType: \Hy@driver}%
+ \chardef\Hy@VersionChecked=0 %
+ \input{\Hy@driver.def}%
+ \ifcase\Hy@VersionChecked
+ \Hy@VersionCheck{\Hy@driver.def}%
+ \fi
+ \let\@unprocessedoptions\relax
+ \Hy@RestoreCatcodes
+ \Hy@DisableOption{tex4ht}%
+ \Hy@DisableOption{pdftex}%
+ \Hy@DisableOption{nativepdf}%
+ \Hy@DisableOption{dvipdfm}%
+ \Hy@DisableOption{dvipdfmx}%
+ \Hy@DisableOption{dvipdfmx-outline-open}%
+ \Hy@DisableOption{pdfmark}%
+ \Hy@DisableOption{dvips}%
+ \Hy@DisableOption{hypertex}%
+ \Hy@DisableOption{vtex}%
+ \Hy@DisableOption{vtexpdfmark}%
+ \Hy@DisableOption{dviwindo}%
+ \Hy@DisableOption{dvipsone}%
+ \Hy@DisableOption{textures}%
+ \Hy@DisableOption{latex2html}%
+ \Hy@DisableOption{ps2pdf}%
+ \Hy@DisableOption{xetex}%
+ \Hy@DisableOption{driverfallback}%
+ \Hy@DisableOption{customdriver}%
+ \Hy@DisableOption{pdfversion}%
+}
+% \end{macrocode}
+% Support for open outlines is enabled for Xe\TeX\ >= 0.9995.
+% I don't know, if older versions also support this.
+% AFAIK older dvipdfmx versions will break, thus the
+% switch cannot be turned on by default.
+% \begin{macrocode}
+\newif\ifHy@DvipdfmxOutlineOpen
+\ifxetex
+ \ifdim\number\XeTeXversion\XeTeXrevision in<0.9995in %
+ \else
+ \chardef\SpecialDvipdfmxOutlineOpen\@ne
+ \Hy@DvipdfmxOutlineOpentrue
+ \fi
+\fi
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname SpecialDvipdfmxOutlineOpen\endcsname\relax
+\else
+ \ifnum\SpecialDvipdfmxOutlineOpen>\z@
+ \Hy@DvipdfmxOutlineOpentrue
+ \fi
+\fi
+% \end{macrocode}
+%
+% \subsubsection{Bookmarks}
+% \begin{macrocode}
+\def\WriteBookmarks{0}
+\def\@bookmarkopenstatus#1{%
+ \ifHy@bookmarksopen
+% \end{macrocode}
+% The purpose of the |\@firstofone|-number-space-construct
+% is that no |\relax| will be inserted by \TeX{} before the |\else|:
+% \begin{macrocode}
+ \ifnum#1<\expandafter\@firstofone\expandafter
+ {\number\@bookmarksopenlevel} % explicit space
+ \else
+ -%
+ \fi
+ \else
+ -%
+ \fi
+}
+\ifHy@bookmarks
+ \Hy@Info{Bookmarks ON}%
+ \ifx\@pdfpagemode\@empty
+ \def\@pdfpagemode{UseOutlines}%
+ \fi
+\else
+ \let\@bookmarkopenstatus\ltx@gobble
+ \Hy@Info{Bookmarks OFF}%
+ \Hy@AtEndOfPackage{%
+ \global\let\ReadBookmarks\relax
+ \global\let\WriteBookmarks\relax
+ }%
+ \ifx\@pdfpagemode\@empty
+ \def\@pdfpagemode{UseNone}%
+ \fi
+\fi
+\Hy@DisableOption{bookmarks}
+% \end{macrocode}
+%
+% Add wrapper for setting standard catcodes (babel's shorthands).
+% \begin{macrocode}
+\def\Hy@CatcodeWrapper#1{%
+ \let\Hy@EndWrap\ltx@empty
+ \def\TMP@EnsureCode##1##2{%
+ \edef\Hy@EndWrap{%
+ \Hy@EndWrap
+ \catcode##1 \the\catcode##1\relax
+ }%
+ \catcode##1 ##2\relax
+ }%
+ \TMP@EnsureCode{10}{12}% ^^J
+ \TMP@EnsureCode{33}{12}% !
+ \TMP@EnsureCode{34}{12}% "
+ \TMP@EnsureCode{36}{3}% $ (math)
+ \TMP@EnsureCode{38}{4}% & (alignment)
+ \TMP@EnsureCode{39}{12}% '
+ \TMP@EnsureCode{40}{12}% (
+ \TMP@EnsureCode{41}{12}% )
+ \TMP@EnsureCode{42}{12}% *
+ \TMP@EnsureCode{43}{12}% +
+ \TMP@EnsureCode{44}{12}% ,
+ \TMP@EnsureCode{45}{12}% -
+ \TMP@EnsureCode{46}{12}% .
+ \TMP@EnsureCode{47}{12}% /
+ \TMP@EnsureCode{58}{12}% :
+ \TMP@EnsureCode{59}{12}% ;
+ \TMP@EnsureCode{60}{12}% <
+ \TMP@EnsureCode{61}{12}% =
+ \TMP@EnsureCode{62}{12}% >
+ \TMP@EnsureCode{63}{12}% ?
+ \TMP@EnsureCode{91}{12}% [
+ \TMP@EnsureCode{93}{12}% ]
+ \TMP@EnsureCode{94}{7}% ^ (superscript)
+ \TMP@EnsureCode{95}{8}% _ (subscript)
+ \TMP@EnsureCode{96}{12}% `
+ \TMP@EnsureCode{124}{12}% |
+ \TMP@EnsureCode{126}{13}% ~ (active)
+ #1\relax
+ \Hy@EndWrap
+}
+% \end{macrocode}
+%
+% |\HyColor@UseColor| expects a macro as argument. It contains
+% the color specification.
+% \begin{macrocode}
+\Hy@AtBeginDocument{%
+ \ifHy@ocgcolorlinks
+ \kvsetkeys{Hyp}{colorlinks}%
+ \ifHy@pdfa
+ \Hy@Warning{%
+ PDF/A: Optional Content Groups are prohibited,\MessageBreak
+ using `colorlinks' instead of `ocgcolorlinks'%
+ }%
+ \Hy@ocgcolorlinksfalse
+ \fi
+ \fi
+ \ifHy@ocgcolorlinks
+ \else
+ \Hy@DisableOption{ocgcolorlinks}%
+ \fi
+ \ifHy@colorlinks
+ \def\@pdfborder{0 0 0}%
+ \let\@pdfborderstyle\@empty
+ \ifHy@typexml
+ \else
+ \Hy@CatcodeWrapper{%
+ \RequirePackage{color}%
+ }%
+ \fi
+ \def\Hy@colorlink#1{%
+ \begingroup
+ \HyColor@UseColor#1%
+ }%
+ \def\Hy@endcolorlink{\endgroup}%
+ \Hy@Info{Link coloring ON}%
+ \else
+ \ifHy@frenchlinks
+ \def\Hy@colorlink#1{\begingroup\fontshape{\scdefault}\selectfont}%
+ \def\Hy@endcolorlink{\endgroup}%
+ \Hy@Info{French linking ON}%
+ \else
+% \end{macrocode}
+% for grouping consistency:
+% \begin{macrocode}
+ \def\Hy@colorlink#1{\begingroup}%
+ \def\Hy@endcolorlink{\endgroup}%
+ \Hy@Info{Link coloring OFF}%
+ \fi
+ \fi
+ \Hy@DisableOption{colorlinks}%
+ \Hy@DisableOption{frenchlinks}%
+ \ifHy@texht
+ \long\def\@firstoffive#1#2#3#4#5{#1}%
+ \long\def\@secondoffive#1#2#3#4#5{#2}%
+ \long\def\@thirdoffive#1#2#3#4#5{#3}%
+ \long\def\@fourthoffive#1#2#3#4#5{#4}%
+ \long\def\@fifthoffive#1#2#3#4#5{#5}%
+ \providecommand*\@safe@activestrue{}%
+ \providecommand*\@safe@activesfalse{}%
+ \def\T@ref#1{%
+ \Hy@safe@activestrue
+ \expandafter\@setref\csname r@#1\endcsname\@firstoffive{#1}%
+ \Hy@safe@activesfalse
+ }%
+ \def\T@pageref#1{%
+ \Hy@safe@activestrue
+ \expandafter\@setref\csname r@#1\endcsname\@secondoffive{#1}%
+ \Hy@safe@activesfalse
+ }%
+ \else
+ \ifHy@typexml
+ \else
+ \Hy@CatcodeWrapper{%
+ \RequirePackage{nameref}[2012/07/28]%
+ }%
+ \fi
+ \fi
+ \DeclareRobustCommand\ref{%
+ \@ifstar\@refstar\T@ref
+ }%
+ \DeclareRobustCommand\pageref{%
+ \@ifstar\@pagerefstar\T@pageref
+ }%
+% \@ifclassloaded{memoir}{%
+% \ltx@IfUndefined{@mem@titlerefnolink}\ltx@secondoftwo{%
+% \ltx@IfUndefined{@mem@titleref}\ltx@secondoftwo\ltx@firstoftwo
+% }%
+% }\ltx@secondoftwo
+% {%
+% \DeclareRobustCommand*{\nameref}{%
+% \@ifstar\@mem@titlerefnolink\@mem@titleref
+% }%
+% }{%
+ \DeclareRobustCommand*{\nameref}{%
+ \@ifstar\@namerefstar\T@nameref
+ }%
+% }%
+}
+\Hy@AtBeginDocument{%
+ \ifHy@texht
+ \else
+ \Hy@CatcodeWrapper\ReadBookmarks
+ \fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\ifHy@backref
+ \RequirePackage{backref}%
+\else
+ \let\Hy@backout\@gobble
+\fi
+\Hy@DisableOption{backref}
+\Hy@DisableOption{pagebackref}
+% \end{macrocode}
+% \begin{macrocode}
+\Hy@activeanchorfalse
+% \end{macrocode}
+%
+% \section{User hypertext macros}\label{usermacros}
+%
+% We need to normalise all user commands taking a URL argument;
+% Within the argument the following special definitions apply:
+% |\#|, |\%|, |~| produce |#|, |%|, |~| respectively.
+% for consistency |\~| produces |~| as well.
+% At the \emph{top level only} ie not within the argument of another
+% command, you can use |#| and |%| unescaped, to produce themselves.
+% even if, say, |#| is entered as |#| it will be converted to |\#|
+% so it does not die if written to an aux file etc. |\#| will write
+% as |#| locally while making |\special|s.
+% \begin{macrocode}
+\begingroup
+ \endlinechar=-1 %
+ \catcode`\^^A=14 %
+ \catcode`\^^M\active
+ \catcode`\%\active
+ \catcode`\#\active
+ \catcode`\_\active
+ \catcode`\$\active
+ \catcode`\&\active
+ \gdef\hyper@normalise{^^A
+ \begingroup
+ \catcode`\^^M\active
+ \def^^M{ }^^A
+ \catcode`\%\active
+ \let%\@percentchar
+ \let\%\@percentchar
+ \catcode`\#\active
+ \def#{\hyper@hash}^^A
+ \def\#{\hyper@hash}^^A
+ \@makeother\&^^A
+ \edef&{\string&}^^A
+ \edef\&{\string&}^^A
+ \edef\textunderscore{\string_}^^A
+ \let\_\textunderscore
+ \catcode`\_\active
+ \let_\textunderscore
+ \let~\hyper@tilde
+ \let\~\hyper@tilde
+ \let\textasciitilde\hyper@tilde
+ \let\\\@backslashchar
+ \edef${\string$}^^A
+ \Hy@safe@activestrue
+ \hyper@n@rmalise
+ }^^A
+ \catcode`\#=6 ^^A
+ \gdef\Hy@ActiveCarriageReturn{^^M}^^A
+ \gdef\hyper@n@rmalise#1#2{^^A
+ \def\Hy@tempa{#2}^^A
+ \ifx\Hy@tempa\Hy@ActiveCarriageReturn
+ \ltx@ReturnAfterElseFi{^^A
+ \hyper@@normalise{#1}^^A
+ }^^A
+ \else
+ \ltx@ReturnAfterFi{^^A
+ \hyper@@normalise{#1}{#2}^^A
+ }^^A
+ \fi
+ }^^A
+ \gdef\hyper@@normalise#1#2{^^A
+ \edef\Hy@tempa{^^A
+ \endgroup
+ \noexpand#1{\Hy@RemovePercentCr#2%^^M\@nil}^^A
+ }^^A
+ \Hy@tempa
+ }^^A
+ \gdef\Hy@RemovePercentCr#1%^^M#2\@nil{^^A
+ #1^^A
+ \ifx\limits#2\limits
+ \else
+ \ltx@ReturnAfterFi{^^A
+ \Hy@RemovePercentCr #2\@nil
+ }^^A
+ \fi
+ }^^A
+\endgroup
+\providecommand*\hyper@chars{%
+ \let\#\hyper@hash
+ \let\%\@percentchar
+ \Hy@safe@activestrue
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\hyperlink#1#2{%
+ \hyper@@link{}{#1}{#2}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Hy@VerboseLinkStart#1#2{%
+ \ifHy@verbose
+ \begingroup
+ \Hy@safe@activestrue
+ \xdef\Hy@VerboseGlobalTemp{(#1) `#2'}%
+ \Hy@Info{Reference \Hy@VerboseGlobalTemp}%
+ \xdef\Hy@VerboseGlobalTemp{%
+ \Hy@VerboseGlobalTemp, %
+ line \the\inputlineno
+ }%
+ \endgroup
+ \let\Hy@VerboseLinkInfo\Hy@VerboseGlobalTemp
+ \@onelevel@sanitize\Hy@VerboseLinkInfo
+ \fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\Hy@VerboseLinkInfo{<VerboseLinkInfo>}
+\def\Hy@VerboseLinkStop{%
+ \ifHy@verbose
+ \begingroup
+ \edef\x{\endgroup
+ \write\m@ne{%
+ Package `hyperref' Info: %
+ End of reference \Hy@VerboseLinkInfo.%
+ }%
+ }%
+ \x
+ \fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\Hy@VerboseAnchor#1{%
+ \ifHy@verbose
+ \begingroup
+ \Hy@safe@activestrue
+ \Hy@Info{Anchor `\HyperDestNameFilter{#1}'}%
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Hy@AllowHyphens{%
+ \relax
+ \ifhmode
+ \penalty\@M
+ \hskip\z@skip
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareRobustCommand*{\href}[1][]{%
+ \begingroup
+ \setkeys{href}{#1}%
+ \@ifnextchar\bgroup\Hy@href{\hyper@normalise\href@}%
+}
+\def\Hy@href#{%
+ \hyper@normalise\href@
+}
+\begingroup
+ \catcode`\$=6 %
+ \catcode`\#=12 %
+ \gdef\href@$1{\expandafter\href@split$1##\\}%
+ \gdef\href@split$1#$2#$3\\$4{%
+ \hyper@@link{$1}{$2}{$4}%
+ \endgroup
+ }%
+\endgroup
+% \end{macrocode}
+% Option `page'.
+% \begin{macrocode}
+\define@key{href}{page}{%
+ \def\Hy@href@page{#1}%
+}
+\let\Hy@href@page\@empty
+\newcount\c@Hy@tempcnt
+\def\theHy@tempcnt{\the\c@Hy@tempcnt}
+\def\Hy@MakeRemoteAction{%
+ \ifx\Hy@href@page\@empty
+ \def\Hy@href@page{0}%
+ \else
+ \setcounter{Hy@tempcnt}{\Hy@href@page}%
+ \ifnum\c@Hy@tempcnt<\@ne
+ \Hy@Warning{%
+ Invalid page number (\theHy@tempcnt)\MessageBreak
+ for remote PDF file.\MessageBreak
+ Using page 1%
+ }%
+ \def\Hy@href@page{0}%
+ \else
+ \global\advance\c@Hy@tempcnt\m@ne
+ \edef\Hy@href@page{\theHy@tempcnt}%
+ \fi
+ \fi
+% \end{macrocode}
+% If a next action is set, then also a new window
+% should be opened. Otherwise AR reclaims that it
+% closes the current file with discarding the next actions.
+% \begin{macrocode}
+ \ifx\Hy@href@nextactionraw\@empty
+ \else
+ \Hy@pdfnewwindowsettrue
+ \Hy@pdfnewwindowtrue
+ \fi
+}
+% \end{macrocode}
+% Option `pdfremotestartview'.
+% \begin{macrocode}
+\define@key{href}{pdfremotestartview}{%
+ \setkeys{Hyp}{pdfremotestartview={#1}}%
+}
+% \end{macrocode}
+% Option `pdfnewwindow'.
+% \begin{macrocode}
+\let\KV@href@pdfnewwindow\KV@Hyp@pdfnewwindow
+\let\KV@href@pdfnewwindow@default\KV@Hyp@pdfnewwindow@default
+% \end{macrocode}
+% Option `ismap'.
+% \begin{macrocode}
+\newif\ifHy@href@ismap
+\define@key{href}{ismap}[true]{%
+ \ltx@IfUndefined{Hy@href@ismap#1}{%
+ \Hy@Error{%
+ Invalid value (#1) for key `ismap'.\MessageBreak
+ Permitted values are `true' or `false'.\MessageBreak
+ Ignoring `ismap'%
+ }\@ehc
+ }{%
+ \csname Hy@href@ismap#1\endcsname
+ }%
+}
+% \end{macrocode}
+% Option `nextactionraw'.
+% \begin{macrocode}
+\let\Hy@href@nextactionraw\@empty
+\define@key{href}{nextactionraw}{%
+ \edef\Hy@href@nextactionraw{#1}%
+ \ifx\Hy@href@nextactionraw\@empty
+ \else
+ \Hy@Match\Hy@href@nextactionraw{}{%
+ ^(\HyPat@ObjRef/|<<.*/S[ /].+>>|%
+ \[( ?\HyPat@ObjRef/|<<.*/S[ /].+>>)+ ?])$%
+ }{}{%
+ \Hy@Warning{Invalid value for `nextactionraw':\MessageBreak
+ \Hy@href@nextactionraw\MessageBreak
+ The action is discarded%
+ }%
+ }%
+ \ifx\Hy@href@nextactionraw\@empty
+ \else
+ \edef\Hy@href@nextactionraw{/Next \Hy@href@nextactionraw}%
+ \fi
+ \fi
+}
+\def\HyPat@ObjRef/{.+}
+% \end{macrocode}
+% Load package |url.sty| and save the meaning of
+% the original \cmd{\url} in \cmd{\nolinkurl}.
+% \begin{macrocode}
+\RequirePackage{url}
+\let\HyOrg@url\url
+\def\Hurl{\begingroup \Url}
+\DeclareRobustCommand*{\nolinkurl}{\hyper@normalise\nolinkurl@}
+\def\nolinkurl@#1{\Hurl{#1}}
+\DeclareRobustCommand*{\url}{\hyper@normalise\url@}
+\def\url@#1{\hyper@linkurl{\Hurl{#1}}{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareRobustCommand*{\hyperimage}{\hyper@normalise\hyper@image}
+\providecommand\hyper@image[2]{#2}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\hypertarget#1#2{%
+ \ifHy@nesting
+ \hyper@@anchor{#1}{#2}%
+ \else
+ \hyper@@anchor{#1}{\relax}#2%
+ \fi
+}
+% \end{macrocode}
+% |\hyperref| is more complicated, as it includes the concept of a
+% category of link, used to make the name. This is not really used in this
+% package. |\hyperdef| sets up an anchor in the same way. They each have
+% three parameters of category, linkname, and marked text, and |\hyperref|
+% also has a first parameter of URL.
+% If there is an optional first parameter to |\hyperdef|,
+% it is the name of a \LaTeX\ label which can be used in
+% a short form of |\hyperref| later, to avoid
+% remembering the name and category.
+% \begin{macrocode}
+\DeclareRobustCommand*{\hyperref}{%
+ \@ifnextchar[{\Hy@babelnormalise\label@hyperref}\@hyperref
+}
+\def\Hy@babelnormalise#1[#2]{%
+ \begingroup
+ \Hy@safe@activestrue
+ \edef\Hy@tempa{%
+ \endgroup
+ \noexpand#1[{#2}]%
+ }%
+ \Hy@tempa
+}
+\def\@hyperref{\hyper@normalise\@@hyperref}
+\def\@@hyperref#1#2#3{%
+ \edef\ref@one{\ifx\\#2\\\else#2.\fi#3}%
+ \expandafter\tryhyper@link\ref@one\\{#1}%
+}
+\def\tryhyper@link#1\\#2{%
+ \hyper@@link{#2}{#1}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\hyperdef{\@ifnextchar[{\label@hyperdef}{\@hyperdef}}
+\def\@hyperdef#1#2#3{%, category, name, text
+ \ifx\\#1\\%
+ \def\Hy@AnchorName{#2}%
+ \else
+ \def\Hy@AnchorName{#1.#2}%
+ \fi
+ \ifHy@nesting
+ \expandafter\hyper@@anchor\expandafter{\Hy@AnchorName}{#3}%
+ \else
+ \expandafter\hyper@@anchor\expandafter{\Hy@AnchorName}{\relax}#3%
+ \fi
+}
+% \end{macrocode}
+% We also have a need to give a \LaTeX\ \emph{label} to a
+% hyper reference, to ease the pain of referring to it later.
+% \verb|\hyperrefundefinedlink| may be redefined by a user
+% to add colour or other formatting.
+% \begin{macrocode}
+\let\hyperrefundefinedlink\@firstofone
+\def\label@hyperref[#1]{%
+ \expandafter\label@@hyperref\csname r@#1\endcsname{#1}%
+}%
+\def\label@@hyperref#1#2#3{%
+ \ifx#1\relax
+ \protect\G@refundefinedtrue
+ \@latex@warning{%
+ Hyper reference `#2' on page \thepage \space undefined%
+ }%
+ \begingroup
+ \hyperrefundefinedlink{#3}%
+ \endgroup
+ \else
+ \hyper@@link{\expandafter\@fifthoffive#1}%
+ {\expandafter\@fourthoffive#1\@empty\@empty}{#3}%
+ \fi
+}
+\def\label@hyperdef[#1]#2#3#4{% label name, category, name,
+ % anchor text
+ \@bsphack
+ \ifx\\#2\\%
+ \def\Hy@AnchorName{#3}%
+ \else
+ \def\Hy@AnchorName{#2.#3}%
+ \fi
+ \if@filesw
+ \protected@write\@auxout{}{%
+ \string\newlabel{#1}{{}{}{}{\Hy@AnchorName}{}}%
+ }%
+ \fi
+ \@esphack
+ \ifHy@nesting
+ \expandafter\hyper@@anchor\expandafter{\Hy@AnchorName}{#4}%
+ \else
+ \expandafter\hyper@@anchor\expandafter{\Hy@AnchorName}{\relax}#4%
+ \fi
+}
+% \end{macrocode}
+%
+% \subsection{Link box support for XeTeX}
+%
+% \begin{macrocode}
+\newdimen\XeTeXLinkMargin
+\setlength{\XeTeXLinkMargin}{2pt}
+\ifxetex
+ \font\XeTeXLink@font=pzdr at 1sp\relax
+ \newcommand*{\XeTeXLink@space}{%
+ \begingroup
+ \XeTeXLink@font
+ \@xxxii
+ \endgroup
+ }%
+ \newcommand{\XeTeXLinkBox}[1]{%
+ \begingroup
+ \leavevmode
+ \sbox\z@{#1}%
+ \begingroup
+ \dimen@=\dp\z@
+ \advance\dimen@\XeTeXLinkMargin
+ \setbox\tw@=\llap{%
+ \hb@xt@\XeTeXLinkMargin{%
+ \lower\dimen@\hbox{\XeTeXLink@space}%
+ \hss
+ }%
+ }%
+ \dp\tw@=\dp\z@
+ \ht\tw@=\ht\z@
+ \copy\tw@
+ \endgroup
+ \copy\z@
+ \dimen@=\ht\z@
+ \advance\dimen@\XeTeXLinkMargin
+ \setbox\tw@=\rlap{%
+ \hb@xt@\XeTeXLinkMargin{%
+ \hss
+ \raise\dimen@\hbox{\XeTeXLink@space}%
+ }%
+ }%
+ \dp\tw@=\dp\z@
+ \ht\tw@=\ht\z@
+ \copy\tw@
+ \endgroup
+ }%
+\else
+ \newcommand*{\XeTeXLinkBox}[1]{%
+ \begingroup
+ \leavevmode
+ \sbox\z@{#1}%
+ \copy\z@
+ \endgroup
+ }%
+\fi
+% \end{macrocode}
+%
+% \section{Underlying basic hypertext macros}\label{coremacros}
+%
+% Links have an optional type, a filename (possibly a URL),
+% an internal name, and some marked text. (Caution: the internal
+% name may contain babel shorthand characters.)
+% If the second parameter is empty, its an internal link,
+% otherwise we need to open another file or a URL.
+% A link start has a type, and a URL.
+% \begin{macrocode}
+\def\hyper@@link{\let\Hy@reserved@a\relax
+ \@ifnextchar[{\hyper@link@}{\hyper@link@[link]}%
+}
+% #1: type
+% #2: URL
+% #3: destination name
+% #4: text
+\def\hyper@link@[#1]#2#3#4{%
+ \ltx@ifempty{#4}{% link text
+ \Hy@Warning{Suppressing empty link}%
+ }{%
+ \begingroup
+ \protected@edef\Hy@tempa{#2}%
+ \edef\Hy@tempb{#3}%
+ \ifx\Hy@tempa\ltx@empty
+ \ifx\Hy@tempb\ltx@empty
+ \Hy@Warning{Suppressing link with empty target}%
+ \toks@{%
+ \endgroup
+ \ltx@secondoftwo
+ }%
+ \else
+ \toks@{%
+ \endgroup
+ \hyper@link{#1}%
+ }%
+ \fi
+ \else
+ \toks@{%
+ \endgroup
+ \expandafter\hyper@readexternallink#2\\{#1}%
+ }%
+ \fi
+ \Hy@safe@activesfalse
+ \toks@\expandafter{%
+ \the\expandafter\toks@
+ \expandafter{\Hy@tempb}{#4}%
+ }%
+ \the\toks@
+ }%
+}
+% \end{macrocode}
+% The problem here is that the first (URL) parameter may be a
+% local \texttt{file:} reference
+% (in which case some browsers treat it differently)
+% or a genuine URL, in which case we'll have to activate
+% a real Web browser.
+% Note that a simple name is also a URL, as that is interpreted
+% as a relative file name. We have to worry about |#| signs in a local
+% file as well.
+%
+% \begin{macrocode}
+\def\hyper@readexternallink#1\\#2#3#4{%
+ \begingroup
+ \let\\\relax
+ \expandafter\endgroup
+ \expandafter\@@hyper@@readexternallink#1\\{#2}{#3}{#4}%
+}
+\def\@@hyper@@readexternallink#1\\#2#3#4{%
+% \end{macrocode}
+% Parameters are:
+% \begin{enumerate}
+% \item The URL or file name
+% \item The type
+% \item The internal name
+% \item The link string
+% \end{enumerate}
+% We need to get the 1st parameter properly expanded,
+% so we delimit the arguments rather than passing it inside a group.
+% \begin{macrocode}
+ \@hyper@readexternallink{#2}{#3}{#4}#1::\\{#1}%
+}
+% \end{macrocode}
+% Now (potentially), we are passed:
+% 1) The link type
+% 2) The internal name,
+% 3) the link string,
+% 4) the URL type (http, mailto, file etc),
+% 5) the URL details
+% 6) anything after a real : in the URL
+% 7) the whole URL again
+% \begin{macrocode}
+\def\@pdftempwordfile{file}%
+\def\@pdftempwordrun{run}%
+\def\@hyper@readexternallink#1#2#3#4:#5:#6\\#7{%
+% \end{macrocode}
+% If there are no colons at all (|#6| is blank), its a local
+% file; if the URL type (|#4|) is blank, its probably a Mac filename,
+% so treat it like a \texttt{file:} URL. The only flaw is if
+% its a relative Mac path, with several colon-separated elements ---
+% then we lose. Such names must be prefixed with an explicit |dvi:|
+% \begin{macrocode}
+ \ifx\\#6\\%
+ \@hyper@linkfile file:#7\\{#3}{#2}{#7}%
+ \else
+ \ifx\\#4\\%
+ \@hyper@linkfile file:#7\\{#3}{#2}{#7}%
+ \else
+% \end{macrocode}
+% If the URL type is `file', pass it for local opening
+% \begin{macrocode}
+ \def\@pdftempa{#4}%
+ \ifx\@pdftempa\@pdftempwordfile
+ \@hyper@linkfile#7\\{#3}{#2}{#7}%
+ \else
+% \end{macrocode}
+% if it starts `run:', its to launch an application.
+% \begin{macrocode}
+ \ifx\@pdftempa\@pdftempwordrun
+ \ifHy@pdfa
+ \Hy@Error{%
+ PDF/A: Launch action is prohibited%
+ }\@ehc
+ \begingroup
+ \leavevmode
+ #2%
+ \endgroup
+ \else
+ \@hyper@launch#7\\{#3}{#2}%
+ \fi
+ \else
+% \end{macrocode}
+% otherwise its a URL
+% \begin{macrocode}
+ \hyper@linkurl{#3}{#7\ifx\\#2\\\else\hyper@hash#2\fi}%
+ \fi
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% By default, turn |run:| into |file:|
+% \begin{macrocode}
+\def\@hyper@launch run:#1\\#2#3{% filename, anchor text, linkname
+ \hyper@linkurl{#2}{%
+ \Hy@linkfileprefix
+ #1%
+ \ifx\\#3\\%
+ \else
+ \hyper@hash
+ #3%
+ \fi
+ }%
+}
+% \end{macrocode}
+% D P Story <story@uakron.edu> pointed out that relative paths
+% starting .. fell over. Switched to using |\filename@parse| to
+% solve this.
+% \begin{macrocode}
+\def\@hyper@linkfile file:#1\\#2#3#4{%
+ %file url,link string, name, original uri
+ \filename@parse{#1}%
+ \ifx\filename@ext\relax
+ \edef\filename@ext{\XR@ext}%
+ \fi
+ \def\use@file{\filename@area\filename@base.\filename@ext}%
+ \Hy@IfStringEndsWith\filename@ext\XR@ext{%
+ \hyper@linkfile{#2}{\use@file}{#3}%
+ }{%
+ \ifx\@baseurl\@empty
+ \hyper@linkurl{#2}{%
+ #4\ifx\\#3\\\else\hyper@hash#3\fi
+ }%
+ \else
+ \hyper@linkurl{#2}{\use@file\ifx\\#3\\\else\hyper@hash#3\fi}%
+ \fi
+ }%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\Hy@IfStringEndsWith#1#2{%
+ \begingroup
+ \edef\x{#1}%
+ \@onelevel@sanitize\x
+ \edef\x{.\x$}%
+ \edef\y{#2}%
+ \@onelevel@sanitize\y
+ \edef\y{.\y$}%
+ \expandafter\def\expandafter\z\expandafter##\expandafter1\y##2\@nil{%
+ \endgroup
+ \ifx\relax##2\relax
+ \expandafter\ltx@secondoftwo
+ \else
+ \expandafter\ltx@firstoftwo
+ \fi
+ }%
+ \expandafter\expandafter\expandafter\z\expandafter\x\y\@nil
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\Hy@StringLocalhost{localhost}
+\@onelevel@sanitize\Hy@StringLocalhost
+\def\Hy@CleanupFile#1{%
+ \edef#1{#1}%
+ \expandafter\Hy@@CleanupFile#1\hbox///\hbox\@nil{#1}%
+}
+\def\Hy@@CleanupFile#1//#2/#3\hbox#4\@nil#5{%
+ \begingroup
+ \toks@{\endgroup}%
+ \def\x{#1}%
+ \ifx\x\@empty
+ \def\x{#2}%
+ \ifx\x\@empty
+ \toks@{\endgroup\def#5{/#3}}%
+ \else
+ \@onelevel@sanitize\x
+ \ifx\x\Hy@StringLocalhost
+ \toks@{\endgroup\def#5{/#3}}%
+ \fi
+ \fi
+ \fi
+ \the\toks@
+}
+% \end{macrocode}
+% Anchors have a name, and marked text.
+% We have to be careful with the marked text, as if we break
+% off part of something to put a |\special| around it, all hell breaks
+% loose. Therefore, we check the category code of the first token,
+% and only proceed if its safe. Tanmoy sorted this out.
+%
+% A curious case arises if the original parameter
+% was in braces. That means that |#2| comes here a multiple
+% letters, and the |noexpand| just looks at the first one,
+% putting the rest in the output. Yuck.
+% \begin{macrocode}
+\long\def\hyper@@anchor#1#2{\@hyper@@anchor#1\relax#2\relax}
+\long\def\@hyper@@anchor#1\relax#2#3\relax{%
+ \ifx\\#1\\%
+ #2\Hy@Warning{Ignoring empty anchor}%
+ \else
+ \def\anchor@spot{#2#3}%
+ \let\put@me@back\@empty
+ \ifx\relax#2\relax
+ \else
+ \ifHy@nesting
+ \else
+ \ifcat a\noexpand#2\relax
+ \else
+ \ifcat 0\noexpand#2 \relax
+ \else
+% \typeout{Anchor start is not alphanumeric %
+% on input line\the\inputlineno%
+% }%
+ \let\anchor@spot\@empty
+ \def\put@me@back{#2#3}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifHy@activeanchor
+ \anchor@spot
+ \else
+ \hyper@anchor{#1}%
+ \fi
+ \expandafter\put@me@back
+ \fi
+ \let\anchor@spot\@empty
+}
+\let\anchor@spot\ltx@empty
+% \end{macrocode}
+%
+% \section{Option `destlabel'}
+%
+% \begin{macrocode}
+\ifHy@destlabel
+% \end{macrocode}
+%
+% \begin{macro}{\hyper@newdestlabel}
+% \begin{macrocode}
+ \def\hyper@newdestlabel#1#2{%
+ \begingroup
+ \Hy@safe@activestrue
+ \edef\x{\endgroup
+ \noexpand\@newl@bel{HyDL}{#1}{#2}%
+ }%
+ \x
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyper@destlabel@hook}
+% \begin{macrocode}
+ \providecommand*{\hyper@destlabel@hook}{}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Hy@DestRename}
+% \begin{macrocode}
+ \newcommand*{\Hy@DestRename}[2]{%
+ \ltx@IfUndefined{HyDL!#1}{%
+ \begingroup
+ \Hy@safe@activestrue
+ \edef\dest@name{#1}%
+ \edef\label@name{#2}%
+ \hyper@destlabel@hook
+ \Hy@IsNotEmpty{dest@name}{%
+ \Hy@IsNotEmpty{label@name}{%
+ \global\expandafter
+ \let\csname HyDL!#1\endcsname\ltx@empty
+ \if@filesw
+ \protected@write\@auxout{}{%
+ \string\hyper@newdestlabel
+ {#1}%
+ {\label@name}%
+ }%
+ \fi
+ }%
+ }%
+ \endgroup
+ }{}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyperDestRename}
+% \begin{macrocode}
+ \newcommand*{\HyperDestRename}[2]{%
+ \AtBeginDocument{%
+ \Hy@DestRename{#1}{#2}%
+ }%
+ }%
+ \AtBeginDocument{%
+ \let\HyperDestRename\Hy@DestRename
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@IsNotEmpty}
+% \begin{macrocode}
+ \def\Hy@IsNotEmpty#1{%
+ \ltx@IfUndefined{#1}\ltx@gobble{%
+ \expandafter\ifx\csname#1\endcsname\ltx@empty
+ \expandafter\ltx@gobble
+ \else
+ \expandafter\ltx@firstofone
+ \fi
+ }%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+ \ltx@GlobalAppendToMacro\label@hook{%
+ \HyperDestRename\@currentHref\label@name
+ }%
+% \end{macrocode}
+%
+% \begin{macro}{\HyperDestLabelReplace}
+% \begin{macrocode}
+ \def\HyperDestLabelReplace#1{%
+ \ltx@ifundefined{HyDL@#1}{%
+ #1%
+ }{%
+ \csname HyDL@#1\endcsname
+ }%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyperDestNameFilter}
+% \begin{macrocode}
+\let\HyperDestNameFilter\HyperDestLabelReplace
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\else
+% \end{macrocode}
+% \begin{macro}{\hyper@newdestlabel}
+% \begin{macrocode}
+ \let\hyper@newdestlabel\ltx@gobbletwo
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyperDestLabelReplace}
+% \begin{macrocode}
+ \let\HyperDestLabelReplace\ltx@firstofone
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyperDestRename}
+% \begin{macrocode}
+% \end{macrocode}
+ \let\HyperDestRename\ltx@gobbletwo
+% \end{macro}
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\Hy@DisableOption{destlabel}
+% \end{macrocode}
+%
+% Provide a dummy default definition of \cs{hyper@newdestlabel}
+% inside the .aux files.
+% \begin{macrocode}
+\AddLineBeginAux{%
+ \string\providecommand\string\hyper@newdestlabel[2]{}%
+}
+% \end{macrocode}
+%
+% \section{Compatibility with the \emph{\LaTeX{}2html} package}\label{latex2html}
+%
+% Map our macro names on to Nikos', so that documents prepared
+% for that system will work without change.
+%
+% Note, however, that the whole complicated structure for
+% segmenting documents is not supported; it is assumed that the user
+% will load |html.sty| first, and then |hyperref.sty|, so that the
+% definitions in |html.sty| take effect, and are then overridden
+% in a few circumstances by this package.
+% \begin{macrocode}
+\let\htmladdimg\hyperimage
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\htmladdnormallink#1#2{\href{#2}{#1}}
+\def\htmladdnormallinkfoot#1#2{\href{#2}{#1}\footnote{#2}}
+\def\htmlref#1#2{% anchor text, label
+ \label@hyperref[{#2}]{#1}%
+}
+% \end{macrocode}
+% This is really too much. The \LaTeX2html package defines its own
+% |\hyperref| command, with a different syntax. Was this always here?
+% Its weird, anyway. We interpret it in the `printed' way, since
+% we are about fidelity to the page.
+% \begin{macrocode}
+\def\@@latextohtmlX{%
+ \let\hhyperref\hyperref
+ \def\hyperref##1##2##3##4{% anchor text for HTML
+ % text to print before label in print
+ % label
+ % post-label text in print
+ ##2\ref{##4}##3%
+ }%
+}
+% \end{macrocode}
+%
+% \section{Forms creation}
+% Allow for creation of PDF or HTML forms. The effects here are
+% limited somewhat by the need to support both output formats,
+% so it may not be as clever as something which only wants
+% to make PDF forms.
+%
+% I (Sebastian) could not have started this without the
+% encouragement of T V Raman.
+%
+% \subsection{Field flags}
+%
+% The field flags are organized in a bit set.
+% \begin{macrocode}
+\RequirePackage{bitset}
+% \end{macrocode}
+%
+% Each flag has a option name, an \cs{if} switch,
+% and a bit position. The default is always `false', the
+% flag is clear.
+% This is also the default of the switch created by \cs{newif}.
+%
+% The names of the flags in the PDF specification (1.7)
+% are used as lowercase option names.
+% \begin{macro}{\HyField@NewFlag}
+% |#1|: type: |F| annot flags, |Ff| field flags\\
+% |#2|: PDF name\\
+% |#3|: PDF position
+% \begin{macrocode}
+\def\HyField@NewFlag#1#2{%
+ \lowercase{\HyField@NewOption{#2}}%
+ \lowercase{\HyField@NewBitsetFlag{#2}}{#2}{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyField@NewFlagOnly}
+% \begin{macrocode}
+\def\HyField@NewFlagOnly#1#2{%
+ \lowercase{\HyField@NewBitsetFlag{#2}}{#2}{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyField@NewOption}
+% |#1|: option name
+% \begin{macrocode}
+\def\HyField@NewOption#1{%
+ \expandafter\newif\csname ifFld@#1\endcsname
+ \define@key{Field}{#1}[true]{%
+ \lowercase{\Field@boolkey{##1}}{#1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyField@NewBitsetFlag}
+% Package `bitset' uses zero based positions, the
+% PDF specification starts with one.\\
+% |#1|: option\\
+% |#2|: PDF name\\
+% |#3|: type: |F| annot flags, |Ff| field flags\\
+% |#4|: PDF position
+% \begin{macrocode}
+\def\HyField@NewBitsetFlag#1#2#3#4{%
+ \begingroup
+ \count@=#4\relax
+ \advance\count@\m@ne
+ \def\x##1{%
+ \endgroup
+ \expandafter\def\csname HyField@#3@#1\endcsname{##1}%
+ \expandafter\ifx\csname HyField@#3@##1\endcsname\relax
+ \expandafter\edef\csname HyField@#3@##1\endcsname{%
+ (\number#4) #2%
+ }%
+ \else
+ \expandafter\edef\csname HyField@#3@##1\endcsname{%
+ \csname HyField@#3@##1\endcsname
+ /#2%
+ }%
+ \fi
+ }%
+ \expandafter\x\expandafter{\the\count@}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyField@UseFlag}
+% The bit set is |HyField@#1|
+% \begin{macrocode}
+\def\HyField@UseFlag#1#2{%
+ \lowercase{\HyField@@UseFlag{#2}}{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyField@@UseFlag}
+% \begin{macrocode}
+\def\HyField@@UseFlag#1#2{%
+ \bitsetSetValue{HyField@#2}{%
+ \csname HyField@#2@#1\endcsname
+ }{%
+ \csname ifFld@#1\endcsname 1\else 0\fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyField@SetFlag}
+% The bit set is |HyField@#1|
+% \begin{macrocode}
+\def\HyField@SetFlag#1#2{%
+ \lowercase{\HyField@@SetFlag{#2}}{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyField@@SetFlag}
+% \begin{macrocode}
+\def\HyField@@SetFlag#1#2{%
+ \bitsetSetValue{HyField@#2}{%
+ \csname HyField@#2@#1\endcsname
+ }{1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyField@PrintFlags}
+% \begin{macrocode}
+\def\HyField@PrintFlags#1#2{%
+ \ifHy@verbose
+ \begingroup
+ \let\Hy@temp\@empty
+ \let\MessageBreak\relax
+ \expandafter\@for\expandafter\x\expandafter:\expandafter=%
+ \bitsetGetSetBitList{HyField@#1}\do{%
+ \edef\Hy@temp{%
+ \Hy@temp
+ \csname HyField@#1@\x\endcsname\MessageBreak
+ }%
+ }%
+ \edef\x{\endgroup
+ \noexpand\Hy@Info{%
+ Field flags: %
+ \expandafter\ifx\@car#1\@nil S\else/\fi
+ #1 %
+ \bitsetGetDec{HyField@#1} %
+ (0x\bitsetGetHex{HyField@#1}{32})\MessageBreak
+ \Hy@temp
+ for #2%
+ }%
+ }\x
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Declarations of field flags}
+%
+% ``Table 8.70 Field flags common to all field types''
+% \begin{macrocode}
+\HyField@NewFlag{Ff}{ReadOnly}{1}
+\HyField@NewFlag{Ff}{Required}{2}
+\HyField@NewFlag{Ff}{NoExport}{3}
+% \end{macrocode}
+% ``Table 8.75 Field flags specific to button fields''
+% \begin{macrocode}
+\HyField@NewFlag{Ff}{NoToggleToOff}{15}
+\HyField@NewFlag{Ff}{Radio}{16}
+\HyField@NewFlag{Ff}{Pushbutton}{17}
+\HyField@NewFlag{Ff}{RadiosInUnison}{26}
+% \end{macrocode}
+% ``Table 8.77 Field flags specific to text fields''
+% \begin{macrocode}
+\HyField@NewFlag{Ff}{Multiline}{13}
+\HyField@NewFlag{Ff}{Password}{14}
+\HyField@NewFlag{Ff}{FileSelect}{21}% PDF 1.4
+\HyField@NewFlag{Ff}{DoNotSpellCheck}{23}% PDF 1.4
+\HyField@NewFlag{Ff}{DoNotScroll}{24}% PDF 1.4
+\HyField@NewFlag{Ff}{Comb}{25}% PDF 1.4
+\HyField@NewFlag{Ff}{RichText}{26}% PDF 1.5
+% \end{macrocode}
+% ``Table 8.79 field flags specific to choice fields''
+% \begin{macrocode}
+\HyField@NewFlag{Ff}{Combo}{18}
+\HyField@NewFlag{Ff}{Edit}{19}
+\HyField@NewFlag{Ff}{Sort}{20}
+\HyField@NewFlag{Ff}{MultiSelect}{22}% PDF 1.4
+% \HyField@NewFlag{Ff}{DoNotSpellCheck}{23}% PDF 1.4
+\HyField@NewFlag{Ff}{CommitOnSelChange}{27}% PDF 1.5
+% \end{macrocode}
+% Signature fields are not supported.
+%
+% Until 6.76i hyperref uses field option `combo' to set
+% three flags `Combo', `Edit', and `Sort'. Option `popdown' sets
+% flag `Combo' only.
+% \begin{macrocode}
+\newif\ifFld@popdown
+\define@key{Field}{popdown}[true]{%
+ \lowercase{\Field@boolkey{#1}}{popdown}%
+}
+% \end{macrocode}
+%
+% Annotation flags. The form objects are widget annotations.
+% There are two flags for readonly settings, the one in the annotation
+% flags is ignored, instead the other in the field flags is used.
+%
+% Flag |Print| is not much useful, because hyperref do not
+% use the appearance entry of the annotations for most fields.
+% \begin{macrocode}
+\HyField@NewFlag{F}{Invisible}{1}
+\HyField@NewFlag{F}{Hidden}{2}% PDF 1.2
+\HyField@NewFlag{F}{Print}{3}% PDF 1.2
+\HyField@NewFlag{F}{NoZoom}{4}% PDF 1.2
+\HyField@NewFlag{F}{NoRotate}{5}% PDF 1.3
+\HyField@NewFlag{F}{NoView}{6}% PDF 1.3
+\HyField@NewFlag{F}{Locked}{8}% PDF 1.4
+\HyField@NewFlag{F}{ToggleNoView}{9}% PDF 1.5
+\HyField@NewFlag{F}{LockedContents}{10}% PDF 1.7
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ifHy@pdfa
+ \def\HyField@PDFAFlagWarning#1#2{%
+ \Hy@Warning{%
+ PDF/A: Annotation flag `#1' must\MessageBreak
+ be set to `#2'%
+ }%
+ }%
+ \Fld@invisiblefalse
+ \def\Fld@invisibletrue{%
+ \HyField@PDFAFlagWarning{invisible}{false}%
+ }%
+ \Fld@hiddenfalse
+ \def\Fld@hiddentrue{%
+ \HyField@PDFAFlagWarning{hidden}{false}%
+ }%
+ \Fld@printtrue
+ \def\Fld@printfalse{%
+ \HyField@PDFAFlagWarning{print}{true}%
+ }%
+ \Fld@nozoomtrue
+ \def\Fld@nozoomfalse{%
+ \HyField@PDFAFlagWarning{nozoom}{true}%
+ }%
+ \Fld@norotatetrue
+ \def\Fld@norotatefalse{%
+ \HyField@PDFAFlagWarning{norotate}{true}%
+ }%
+ \Fld@noviewfalse
+ \def\Fld@noviewtrue{%
+ \HyField@PDFAFlagWarning{noview}{false}%
+ }%
+\fi
+% \end{macrocode}
+%
+% Submit flags. Flag 1 Include/Exclude is not supported,
+% use option noexport instead.
+% \begin{macrocode}
+\HyField@NewFlag{Submit}{IncludeNoValueFields}{2}
+\HyField@NewFlagOnly{Submit}{ExportFormat}{3}
+\HyField@NewFlag{Submit}{GetMethod}{4}
+\HyField@NewFlag{Submit}{SubmitCoordinates}{5}
+\HyField@NewFlagOnly{Submit}{XFDF}{6}
+\HyField@NewFlag{Submit}{IncludeAppendSaves}{7}
+\HyField@NewFlag{Submit}{IncludeAnnotations}{8}
+\HyField@NewFlagOnly{Submit}{SubmitPDF}{9}
+\HyField@NewFlag{Submit}{CanonicalFormat}{10}
+\HyField@NewFlag{Submit}{ExclNonUserAnnots}{11}
+\HyField@NewFlag{Submit}{ExclFKey}{12}
+\HyField@NewFlag{Submit}{EmbedForm}{14}
+% \end{macrocode}
+% \begin{macrocode}
+\define@key{Field}{export}{%
+ \lowercase{\def\Hy@temp{#1}}%
+ \@ifundefined{Fld@export@\Hy@temp}{%
+ \@onelevel@sanitize\Hy@temp
+ \Hy@Error{%
+ Unknown export format `\Hy@temp'.\MessageBreak
+ Known formats are `FDF', `HTML', `XFDF', and `PDF'%
+ }\@ehc
+ }{%
+ \let\Fld@export\Hy@temp
+ }%
+}
+\def\Fld@export{fdf}
+\@namedef{Fld@export@fdf}{0}%
+\@namedef{Fld@export@html}{1}%
+\@namedef{Fld@export@xfdf}{2}%
+\@namedef{Fld@export@pdf}{3}%
+% \end{macrocode}
+%
+% \subsubsection{Set submit flags}
+%
+% \begin{macro}{\HyField@FlagsSubmit}
+% \begin{macrocode}
+\def\HyField@FlagsSubmit{%
+ \bitsetReset{HyField@Submit}%
+ \ifcase\@nameuse{Fld@export@\Fld@export} %
+ % FDF
+ \HyField@UseFlag{Submit}{IncludeNoValueFields}%
+ \HyField@UseFlag{Submit}{SubmitCoordinates}%
+ \HyField@UseFlag{Submit}{IncludeAppendSaves}%
+ \HyField@UseFlag{Submit}{IncludeAnnotations}%
+ \HyField@UseFlag{Submit}{CanonicalFormat}%
+ \HyField@UseFlag{Submit}{ExclNonUserAnnots}%
+ \HyField@UseFlag{Submit}{ExclFKey}%
+ \HyField@UseFlag{Submit}{EmbedForm}%
+ \or % HTML
+ \HyField@SetFlag{Submit}{ExportFormat}%
+ \HyField@UseFlag{Submit}{IncludeNoValueFields}%
+ \HyField@UseFlag{Submit}{GetMethod}%
+ \HyField@UseFlag{Submit}{SubmitCoordinates}%
+ \HyField@UseFlag{Submit}{CanonicalFormat}%
+ \or % XFDF
+ \HyField@SetFlag{Submit}{XFDF}%
+ \HyField@UseFlag{Submit}{IncludeNoValueFields}%
+ \HyField@UseFlag{Submit}{SubmitCoordinates}%
+ \HyField@UseFlag{Submit}{CanonicalFormat}%
+ \or % PDF
+ \HyField@SetFlag{Submit}{SubmitPDF}%
+ \HyField@UseFlag{Submit}{GetMethod}%
+ \fi
+ \HyField@PrintFlags{Submit}{submit button field}%
+ \bitsetIsEmpty{HyField@Submit}{%
+ \let\Fld@submitflags\ltx@empty
+ }{%
+ \edef\Fld@submitflags{/Flags \bitsetGetDec{HyField@Submit}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Set annot flags in fields}
+%
+% \begin{macro}{\HyField@FlagsAnnot}
+% \begin{macrocode}
+\def\HyField@FlagsAnnot#1{%
+ \bitsetReset{HyField@F}%
+ \HyField@UseFlag{F}{Invisible}%
+ \HyField@UseFlag{F}{Hidden}%
+ \HyField@UseFlag{F}{Print}%
+ \HyField@UseFlag{F}{NoZoom}%
+ \HyField@UseFlag{F}{NoRotate}%
+ \HyField@UseFlag{F}{NoView}%
+ \HyField@UseFlag{F}{Locked}%
+ \HyField@UseFlag{F}{ToggleNoView}%
+ \HyField@UseFlag{F}{LockedContents}%
+ \HyField@PrintFlags{F}{#1}%
+ \bitsetIsEmpty{HyField@F}{%
+ \let\Fld@annotflags\ltx@empty
+ }{%
+ \edef\Fld@annotflags{/F \bitsetGetDec{HyField@F}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Pushbutton field}
+%
+% \begin{macro}{\HyField@FlagsPushButton}
+% \begin{macrocode}
+\def\HyField@FlagsPushButton{%
+ \HyField@FlagsAnnot{push button field}%
+ \bitsetReset{HyField@Ff}%
+ \HyField@UseFlag{Ff}{ReadOnly}%
+ \HyField@UseFlag{Ff}{Required}%
+ \HyField@UseFlag{Ff}{NoExport}%
+ \HyField@SetFlag{Ff}{Pushbutton}%
+ \HyField@PrintFlags{Ff}{push button field}%
+ \bitsetIsEmpty{HyField@Ff}{%
+ \let\Fld@flags\ltx@empty
+ }{%
+ \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Check box field}
+%
+% \begin{macro}{\HyField@FlagsCheckBox}
+% \begin{macrocode}
+\def\HyField@FlagsCheckBox{%
+ \HyField@FlagsAnnot{check box field}%
+ \bitsetReset{HyField@Ff}%
+ \HyField@UseFlag{Ff}{ReadOnly}%
+ \HyField@UseFlag{Ff}{Required}%
+ \HyField@UseFlag{Ff}{NoExport}%
+ \HyField@PrintFlags{Ff}{check box field}%
+ \bitsetIsEmpty{HyField@Ff}{%
+ \let\Fld@flags\ltx@empty
+ }{%
+ \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Radio button field}
+%
+% \begin{macro}{\HyField@FlagsRadioButton}
+% \begin{macrocode}
+\def\HyField@FlagsRadioButton{%
+ \HyField@FlagsAnnot{radio button field}%
+ \bitsetReset{HyField@Ff}%
+ \HyField@UseFlag{Ff}{ReadOnly}%
+ \HyField@UseFlag{Ff}{Required}%
+ \HyField@UseFlag{Ff}{NoExport}%
+ \HyField@UseFlag{Ff}{NoToggleToOff}%
+ \HyField@SetFlag{Ff}{Radio}%
+ \HyField@UseFlag{Ff}{RadiosInUnison}%
+ \HyField@PrintFlags{Ff}{radio button field}%
+ \bitsetIsEmpty{HyField@Ff}{%
+ \let\Fld@flags\ltx@empty
+ }{%
+ \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Text fields}
+%
+% \begin{macro}{\HyField@FlagsText}
+% \begin{macrocode}
+\def\HyField@FlagsText{%
+ \HyField@FlagsAnnot{text field}%
+ \bitsetReset{HyField@Ff}%
+ \HyField@UseFlag{Ff}{ReadOnly}%
+ \HyField@UseFlag{Ff}{Required}%
+ \HyField@UseFlag{Ff}{NoExport}%
+ \HyField@UseFlag{Ff}{Multiline}%
+ \HyField@UseFlag{Ff}{Password}%
+ \HyField@UseFlag{Ff}{FileSelect}%
+ \HyField@UseFlag{Ff}{DoNotSpellCheck}%
+ \HyField@UseFlag{Ff}{DoNotScroll}%
+ \ifFld@comb
+ \ifcase0\ifFld@multiline
+ \else\ifFld@password
+ \else\ifFld@fileselect
+ \else 1\fi\fi\fi\relax
+ \Hy@Error{%
+ Field option `comb' cannot used together with\MessageBreak
+ `multiline', `password', or `fileselect'%
+ }\@ehc
+ \else
+ \HyField@UseFlag{Ff}{Comb}%
+ \fi
+ \fi
+ \HyField@UseFlag{Ff}{RichText}%
+ \HyField@PrintFlags{Ff}{text field}%
+ \bitsetIsEmpty{HyField@Ff}{%
+ \let\Fld@flags\ltx@empty
+ }{%
+ \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Choice fields}
+%
+% \begin{macro}{\HyField@FlagsChoice}
+% \begin{macrocode}
+\def\HyField@FlagsChoice{%
+ \HyField@FlagsAnnot{choice field}%
+ \bitsetReset{HyField@Ff}%
+ \HyField@UseFlag{Ff}{ReadOnly}%
+ \HyField@UseFlag{Ff}{Required}%
+ \HyField@UseFlag{Ff}{NoExport}%
+ \HyField@UseFlag{Ff}{Combo}%
+ \ifFld@combo
+ \HyField@UseFlag{Ff}{Edit}%
+ \fi
+ \HyField@UseFlag{Ff}{Sort}%
+ \HyField@UseFlag{Ff}{MultiSelect}%
+ \ifFld@combo
+ \ifFld@edit
+ \HyField@UseFlag{Ff}{DoNotSpellCheck}%
+ \fi
+ \fi
+ \HyField@UseFlag{Ff}{CommitOnSelChange}%
+ \HyField@PrintFlags{Ff}{choice field}%
+ \bitsetIsEmpty{HyField@Ff}{%
+ \let\Fld@flags\ltx@empty
+ }{%
+ \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Choice field}
+%
+% \begin{macro}{\HyField@PDFChoices}
+% |#1|: list of choices in key value syntax, key = exported name,
+% value = displayed text.\\
+% Input: \cs{Fld@default}, \cs{Fld@value}, \cs{ifFld@multiselect}\\
+% Result: \cs{Fld@choices} with entries: |/Opt|, |/DV|, |/V|, |/I|.
+% \begin{macrocode}
+\def\HyField@PDFChoices#1{%
+ \begingroup
+ \global\let\Fld@choices\ltx@empty
+ \let\HyTmp@optlist\ltx@empty
+ \let\HyTmp@optitem\relax
+ \count@=0 %
+ \kv@parse{#1}{%
+ \Hy@pdfstringdef\kv@key\kv@key
+ \ifx\kv@value\relax
+ \ifnum\Hy@pdfversion<3 % implementation note 122, PDF spec 1.7
+ \xdef\Fld@choices{\Fld@choices[(\kv@key)(\kv@key)]}%
+ \else
+ \xdef\Fld@choices{\Fld@choices(\kv@key)}%
+ \fi
+ \else
+ \Hy@pdfstringdef\kv@value\kv@value
+ \xdef\Fld@choices{\Fld@choices[(\kv@value)(\kv@key)]}%
+ \fi
+ \edef\HyTmp@optlist{%
+ \HyTmp@optlist
+ \HyTmp@optitem{\the\count@}{\kv@key}0%
+ }%
+ \advance\count@ by 1 %
+ \@gobbletwo
+ }%
+ \xdef\Fld@choices{/Opt[\Fld@choices]}%
+ \ifFld@multiselect
+ \HyField@@PDFChoices{DV}\Fld@default
+ \HyField@@PDFChoices{V}\Fld@value
+ \else
+ \ifx\Fld@default\relax
+ \else
+ \pdfstringdef\Hy@gtemp\Fld@default
+ \xdef\Fld@choices{\Fld@choices/DV(\Hy@gtemp)}%
+ \fi
+ \ifx\Fld@value\relax
+ \else
+ \pdfstringdef\Hy@gtemp\Fld@value
+ \xdef\Fld@choices{\Fld@choices/V(\Hy@gtemp)}%
+ \fi
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyField@@PDFChoices}
+% \begin{macrocode}
+\def\HyField@@PDFChoices#1#2{%
+ \ifx#2\relax
+ \else
+ \count@=0 %
+ \def\HyTmp@optitem##1##2##3{%
+ \def\HyTmp@key{##2}%
+ \ifx\HyTmp@key\Hy@gtemp
+ \expandafter\def\expandafter\HyTmp@optlist\expandafter{%
+ \HyTmp@optlist
+ \HyTmp@optitem{##1}{##2}1%
+ }%
+ \let\HyTmp@found=Y%
+ \else
+ \expandafter\def\expandafter\HyTmp@optlist\expandafter{%
+ \HyTmp@optlist
+ \HyTmp@optitem{##1}{##2}##3%
+ }%
+ \fi
+ }%
+ \expandafter\comma@parse\expandafter{#2}{%
+ \pdfstringdef\Hy@gtemp\comma@entry
+ \let\HyTmp@found=N %
+ \expandafter\let\expandafter\HyTmp@optlist\expandafter\@empty
+ \HyTmp@optlist
+ \ifx\HyTmp@found Y%
+ \advance\count@ by 1 %
+ \else
+ \@onelevel@sanitize\comma@entry
+ \PackageWarning{hyperref}{%
+ \string\ChoiceBox: Ignoring value `\comma@entry',%
+ \MessageBreak
+ it cannot be found in the choices%
+ }%
+ \fi
+ \@gobble
+ }%
+ \def\HyTmp@optitem##1##2##3{%
+ \ifnum##3=1 %
+ (##2)%
+ \fi
+ }%
+ \ifcase\count@
+ \or
+ \xdef\Fld@choices{\Fld@choices/#1\HyTmp@optlist}%
+ \else
+ \xdef\Fld@choices{\Fld@choices/#1[\HyTmp@optlist]}%
+ \ifx#1V%
+ \def\HyTmp@optitem##1##2##3{%
+ \ifnum##3=1 %
+ \@firstofone{ ##1}%
+ \fi
+ }%
+ \edef\HyTmp@optlist{\HyTmp@optlist}%
+ \xdef\Fld@choices{%
+ \Fld@choices
+ /I[\expandafter\@firstofone\HyTmp@optlist]%
+ }%
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Forms}
+%
+% \begin{macro}{\HyField@SetKeys}
+% \begin{macrocode}
+\def\HyField@SetKeys{%
+ \kvsetkeys{Field}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\newif\ifFld@checked
+\newif\ifFld@disabled
+\Fld@checkedfalse
+\Fld@disabledfalse
+\newcount\Fld@menulength
+\newdimen\Field@Width
+\newdimen\Fld@charsize
+\Fld@charsize=10\p@
+\def\Fld@maxlen{0}
+\def\Fld@align{0}
+\def\Fld@color{0 0 0 rg}
+\def\Fld@bcolor{1 1 1}
+\def\Fld@bordercolor{1 0 0}
+\def\Fld@bordersep{1\p@}
+\def\Fld@borderwidth{1}
+\def\Fld@borderstyle{S}
+\def\Fld@cbsymbol{4}
+\def\Fld@radiosymbol{H}
+\def\Fld@rotation{0}
+\def\Form{\@ifnextchar[{\@Form}{\@Form[]}}
+\def\endForm{\@endForm}
+\newif\ifForm@html
+\Form@htmlfalse
+\def\Form@boolkey#1#2{%
+ \csname Form@#2\ifx\relax#1\relax true\else#1\fi\endcsname
+}
+\define@key{Form}{action}{%
+ \hyper@normalise\Hy@DefFormAction{#1}%
+}
+\def\Hy@DefFormAction{\def\Form@action}
+\def\enc@@html{html}
+\define@key{Form}{encoding}{%
+ \def\Hy@tempa{#1}%
+ \ifx\Hy@tempa\enc@@html
+ \Form@htmltrue
+ \def\Fld@export{html}%
+ \else
+ \Hy@Warning{%
+ Form `encoding' key with \MessageBreak
+ unknown value `#1'%
+ }%
+ \Form@htmlfalse
+ \fi
+}
+\define@key{Form}{method}{%
+ \lowercase{\def\Hy@temp{#1}}%
+ \@ifundefined{Form@method@\Hy@temp}{%
+ \@onelevel@sanitize\Hy@temp
+ \Hy@Error{%
+ Unknown method `\Hy@temp'.\MessageBreak
+ Known values are `post' and `get'%
+ }\@ehc
+ }{%
+ \let\Form@method\Hy@temp
+ \ifcase\@nameuse{Form@method@\Hy@temp} %
+ \Fld@getmethodfalse
+ \else
+ \Fld@getmethodtrue
+ \fi
+ }%
+}
+\def\Form@method{}
+\@namedef{Form@method@post}{0}
+\@namedef{Form@method@get}{1}
+% \end{macrocode}
+% \begin{macrocode}
+\newif\ifHyField@NeedAppearances
+\def\HyField@NeedAppearancesfalse{%
+ \global\let\ifHyField@NeedAppearances\iffalse
+}
+\def\HyField@NeedAppearancestrue{%
+ \global\let\ifHyField@NeedAppearances\iftrue
+}
+\HyField@NeedAppearancestrue
+\define@key{Form}{NeedAppearances}[true]{%
+ \edef\Hy@tempa{#1}%
+ \ifx\Hy@tempa\Hy@true
+ \HyField@NeedAppearancestrue
+ \else
+ \ifx\Hy@tempa\Hy@false
+ \HyField@NeedAppearancesfalse
+ \else
+ \Hy@Error{%
+ Unexpected value `\Hy@tempa'\MessageBreak
+ of option `NeedAppearances' instead of\MessageBreak
+ `true' or `false'%
+ }\@ehc
+ \fi
+ \fi
+}
+\def\Field@boolkey#1#2{%
+ \csname Fld@#2\ifx\relax#1\relax true\else#1\fi\endcsname
+}
+\ifHy@texht
+ \newtoks\Field@toks
+ \Field@toks={ }%
+ \def\Field@addtoks#1#2{%
+ \edef\@processme{\Field@toks{\the\Field@toks\space #1="#2"}}%
+ \@processme
+ }%
+\else
+ \def\Hy@WarnHTMLFieldOption#1{%
+ \Hy@Warning{%
+ HTML field option `#1'\MessageBreak
+ is ignored%
+ }%
+ }%
+\fi
+\def\Fld@checkequals#1=#2=#3\\{%
+ \def\@currDisplay{#1}%
+ \ifx\\#2\\%
+ \def\@currValue{#1}%
+ \else
+ \def\@currValue{#2}%
+ \fi
+}
+\define@key{Field}{loc}{%
+ \def\Fld@loc{#1}%
+}
+\define@key{Field}{checked}[true]{%
+ \lowercase{\Field@boolkey{#1}}{checked}%
+}
+\define@key{Field}{disabled}[true]{%
+ \lowercase{\Field@boolkey{#1}}{disabled}%
+}
+\ifHy@texht
+ \define@key{Field}{accesskey}{%
+ \Field@addtoks{accesskey}{#1}%
+ }%
+ \define@key{Field}{tabkey}{%
+ \Field@addtoks{tabkey}{#1}%
+ }%
+\else
+ \define@key{Field}{accesskey}{%
+ \Hy@WarnHTMLFieldOption{accesskey}%
+ }%
+ \define@key{Field}{tabkey}{%
+ \Hy@WarnHTMLFieldOption{tabkey}%
+ }%
+\fi
+\define@key{Field}{name}{%
+ \def\Fld@name{#1}%
+}
+\let\Fld@altname\relax
+\define@key{Field}{altname}{%
+ \def\Fld@altname{#1}%
+}
+\let\Fld@mappingname\relax
+\define@key{Field}{mappingname}{%
+ \def\Fld@mappingname{#1}%
+}
+\define@key{Field}{width}{%
+ \def\Fld@width{#1}%
+ \Field@Width#1\setbox0=\hbox{m}%
+}
+\define@key{Field}{maxlen}{%
+ \def\Fld@maxlen{#1}%
+}
+\define@key{Field}{menulength}{%
+ \Fld@menulength=#1\relax
+}
+\define@key{Field}{height}{%
+ \def\Fld@height{#1}%
+}
+\define@key{Field}{charsize}{%
+ \setlength{\Fld@charsize}{#1}%
+}
+\define@key{Field}{borderwidth}{%
+ \Hy@defaultbp\Fld@borderwidth{#1}%
+}
+\def\Hy@defaultbp#1#2{%
+ \begingroup
+ \afterassignment\Hy@defaultbpAux
+ \dimen@=#2bp\relax{#1}{#2}%
+}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname dimexpr\endcsname\relax
+ \def\Hy@defaultbpAux#1\relax#2#3{%
+ \ifx!#1!%
+ \endgroup
+ \def#2{#3}%
+ \else
+ \dimen@=.99626\dimen@
+ \edef\x{\endgroup
+ \def\noexpand#2{%
+ \strip@pt\dimen@
+ }%
+ }\x
+ \fi
+ }%
+\else
+ \def\Hy@defaultbpAux#1\relax#2#3{%
+ \ifx!#1!%
+ \endgroup
+ \def#2{#3}%
+ \else
+ \edef\x{\endgroup
+ \def\noexpand#2{%
+ \strip@pt\dimexpr\dimen@*800/803\relax
+ }%
+ }\x
+ \fi
+ }%
+\fi
+\define@key{Field}{borderstyle}{%
+ \let\Hy@temp\Fld@borderstyle
+ \def\Fld@borderstyle{#1}%
+ \Hy@Match\Fld@borderstyle{}{%
+ ^[SDBIU]$%
+ }{}{%
+ \Hy@Warning{%
+ Invalid value `\@pdfborderstyle'\MessageBreak
+ for option `pdfborderstyle'. Valid values:\MessageBreak
+ \space\space S (Solid), D (Dashed), B (Beveled),\MessageBreak
+ \space\space I (Inset), U (Underline)\MessageBreak
+ Option setting is ignored%
+ }%
+ \let\Fld@borderstyle\Hy@temp
+ }%
+}
+\define@key{Field}{bordersep}{%
+ \def\Fld@bordersep{#1}%
+}
+\define@key{Field}{default}{%
+ \def\Fld@default{#1}%
+}
+\define@key{Field}{align}{%
+ \def\Fld@align{#1}%
+}
+\define@key{Field}{value}{%
+ \Hy@pdfstringdef\Fld@value{#1}%
+}
+\define@key{Field}{checkboxsymbol}{%
+ \Fld@DingDef\Fld@cbsymbol{#1}%
+}
+\define@key{Field}{radiosymbol}{%
+ \Fld@DingDef\Fld@radiosymbol{#1}%
+}
+\def\Fld@DingDef#1#2{%
+ \let\Fld@temp\ltx@empty
+ \Fld@@DingDef#2\ding{}\@nil
+ \let#1\Fld@temp
+}
+\def\Fld@@DingDef#1\ding#2#3\@nil{%
+ \expandafter\def\expandafter\Fld@temp\expandafter{%
+ \Fld@temp
+ #1%
+ }%
+ \ifx\\#3\\%
+ \expandafter\@gobble
+ \else
+ \begingroup
+ \lccode`0=#2\relax
+ \lowercase{\endgroup
+ \expandafter\def\expandafter\Fld@temp\expandafter{%
+ \Fld@temp
+ 0%
+ }%
+ }%
+ \expandafter\@firstofone
+ \fi
+ {%
+ \Fld@@DingDef#3\@nil
+ }%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\define@key{Field}{rotation}{%
+ \def\Fld@rotation{#1}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\define@key{Field}{backgroundcolor}{%
+ \HyColor@FieldBColor{#1}\Fld@bcolor{hyperref}{backgroundcolor}%
+}
+\define@key{Field}{bordercolor}{%
+ \HyColor@FieldBColor{#1}\Fld@bordercolor{hyperref}{bordercolor}%
+}
+\define@key{Field}{color}{%
+ \HyColor@FieldColor{#1}\Fld@color{hyperref}{color}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\let\Fld@onclick@code\ltx@empty
+\let\Fld@format@code\ltx@empty
+\let\Fld@validate@code\ltx@empty
+\let\Fld@calculate@code\ltx@empty
+\let\Fld@keystroke@code\ltx@empty
+\let\Fld@onfocus@code\ltx@empty
+\let\Fld@onblur@code\ltx@empty
+\let\Fld@onmousedown@code\ltx@empty
+\let\Fld@onmouseup@code\ltx@empty
+\let\Fld@onenter@code\ltx@empty
+\let\Fld@onexit@code\ltx@empty
+\def\Hy@temp#1{%
+ \expandafter\Hy@@temp\csname Fld@#1@code\endcsname{#1}%
+}
+\def\Hy@@temp#1#2{%
+ \ifHy@pdfa
+ \define@key{Field}{#2}{%
+ \Hy@Error{%
+ PDF/A: Additional action `#2' is prohibited%
+ }\@ehc
+ }%
+ \else
+ \define@key{Field}{#2}{%
+ \def#1{##1}%
+ }%
+ \fi
+}
+\Hy@temp{keystroke}
+\Hy@temp{format}
+\Hy@temp{validate}
+\Hy@temp{calculate}
+\Hy@temp{onfocus}
+\Hy@temp{onblur}
+\Hy@temp{onenter}
+\Hy@temp{onexit}
+% \end{macrocode}
+% \begin{macrocode}
+\let\Fld@calculate@sortkey\ltx@empty
+\define@key{Field}{calculatesortkey}[1]{%
+ \def\Fld@calculate@sortkey{#1}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\ifHy@texht
+ \def\Hy@temp#1{%
+ \define@key{Field}{#1}{%
+ \Field@addtoks{#1}{##1}%
+ }%
+ }%
+\else
+ \def\Hy@temp#1{%
+ \define@key{Field}{#1}{%
+ \Hy@WarnHTMLFieldOption{#1}%
+ }%
+ }%
+\fi
+\Hy@temp{ondblclick}
+\Hy@temp{onmousedown}
+\Hy@temp{onmouseup}
+\Hy@temp{onmouseover}
+\Hy@temp{onmousemove}
+\Hy@temp{onmouseout}
+\Hy@temp{onkeydown}
+\Hy@temp{onkeyup}
+\Hy@temp{onselect}
+\Hy@temp{onchange}
+\Hy@temp{onkeypress}
+\ifHy@texht
+ \define@key{Field}{onclick}{%
+ \Field@addtoks{onclick}{#1}%
+ }%
+\else
+ \ifHy@pdfa
+ \define@key{Field}{onclick}{%
+ \Hy@Error{%
+ PDF/A: Action `onclick' is prohibited%
+ }\@ehc
+ }%
+ \else
+ \define@key{Field}{onclick}{%
+ \def\Fld@onclick@code{#1}%
+ }%
+ \fi
+\fi
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareRobustCommand\TextField{%
+ \@ifnextchar[{\@TextField}{\@TextField[]}%
+}
+\DeclareRobustCommand\ChoiceMenu{%
+ \@ifnextchar[{\@ChoiceMenu}{\@ChoiceMenu[]}%
+}
+\DeclareRobustCommand\CheckBox{%
+ \@ifnextchar[{\@CheckBox}{\@CheckBox[]}%
+}
+\DeclareRobustCommand\PushButton{%
+ \@ifnextchar[{\@PushButton}{\@PushButton[]}%
+}
+\DeclareRobustCommand\Gauge{%
+ \@ifnextchar[{\@Gauge}{\@Gauge[]}%
+}
+\DeclareRobustCommand\Submit{%
+ \@ifnextchar[{\@Submit}{\@Submit[]}%
+}
+\DeclareRobustCommand\Reset{%
+ \@ifnextchar[{\@Reset}{\@Reset[]}%
+}
+\def\LayoutTextField#1#2{% label, field
+ #1 #2%
+}
+\def\LayoutChoiceField#1#2{% label, field
+ #1 #2%
+}
+\def\LayoutCheckField#1#2{% label, field
+ #1 #2%
+}
+\def\LayoutPushButtonField#1{% button
+ #1%
+}
+\def\MakeRadioField#1#2{\vbox to #2{\hbox to #1{\hfill}\vfill}}
+\def\MakeCheckField#1#2{\vbox to #2{\hbox to #1{\hfill}\vfill}}
+\def\MakeTextField#1#2{\vbox to #2{\hbox to #1{\hfill}\vfill}}
+\def\MakeChoiceField#1#2{\vbox to #2{\hbox to #1{\hfill}\vfill}}
+\def\MakeButtonField#1{%
+ \sbox0{%
+ \hskip\Fld@borderwidth bp#1\hskip\Fld@borderwidth bp%
+ }%
+ \@tempdima\ht0 %
+ \advance\@tempdima by \Fld@borderwidth bp %
+ \advance\@tempdima by \Fld@borderwidth bp %
+ \ht0\@tempdima
+ \@tempdima\dp0 %
+ \advance\@tempdima by \Fld@borderwidth bp %
+ \advance\@tempdima by \Fld@borderwidth bp %
+ \dp0\@tempdima
+ \box0\relax
+}
+\def\DefaultHeightofSubmit{14pt}
+\def\DefaultWidthofSubmit{2cm}
+\def\DefaultHeightofReset{14pt}
+\def\DefaultWidthofReset{2cm}
+\def\DefaultHeightofCheckBox{\baselineskip}
+\def\DefaultWidthofCheckBox{\baselineskip}
+\def\DefaultHeightofChoiceMenu{\baselineskip}
+\def\DefaultWidthofChoiceMenu{\baselineskip}
+\def\DefaultHeightofText{\baselineskip}
+\def\DefaultHeightofTextMultiline{4\baselineskip}
+\def\DefaultWidthofText{3cm}
+\def\DefaultOptionsofSubmit{print,name=Submit,noexport}
+\def\DefaultOptionsofReset{print,name=Reset,noexport}
+\def\DefaultOptionsofPushButton{print}
+\def\DefaultOptionsofCheckBox{print}
+\def\DefaultOptionsofText{print}
+% \end{macrocode}
+% Default options for the types of \cs{ChoiceMenu}.
+% \begin{macrocode}
+\def\DefaultOptionsofListBox{print}
+\def\DefaultOptionsofComboBox{print,edit,sort}
+\def\DefaultOptionsofPopdownBox{print}
+\def\DefaultOptionsofRadio{print,notoggletooff}
+% \end{macrocode}
+%
+% \section{Setup}
+% \begin{macrocode}
+\ifHy@hyperfigures
+ \Hy@Info{Hyper figures ON}%
+\else
+ \Hy@Info{Hyper figures OFF}%
+\fi
+\ifHy@nesting
+ \Hy@Info{Link nesting ON}%
+\else
+ \Hy@Info{Link nesting OFF}%
+\fi
+\ifHy@hyperindex
+ \Hy@Info{Hyper index ON}%
+\else
+ \Hy@Info{Hyper index OFF}%
+\fi
+\ifHy@backref
+ \Hy@Info{backreferencing ON}%
+\else
+ \Hy@Info{backreferencing OFF}%
+\fi
+\ifHy@colorlinks
+ \Hy@Info{Link coloring ON}%
+\else
+ \Hy@Info{Link coloring OFF}%
+\fi
+\ifHy@ocgcolorlinks
+ \Hy@Info{Link coloring with OCG ON}%
+\else
+ \Hy@Info{Link coloring with OCG OFF}%
+\fi
+\ifHy@pdfa
+ \Hy@Info{PDF/A mode ON}%
+\else
+ \Hy@Info{PDF/A mode OFF}%
+\fi
+% \end{macrocode}
+% \section{Low-level utility macros}
+% We need unrestricted access to the |#|, |~| and |"| characters, so make
+% them nice macros.
+% \begin{macrocode}
+\edef\hyper@hash{\string#}
+\edef\hyper@tilde{\string~}
+\edef\hyper@quote{\string"}
+% \end{macrocode}
+% Support \cs{label} before |\begin{document}|.
+% \begin{macrocode}
+\def\@currentHref{Doc-Start}
+\let\Hy@footnote@currentHref\@empty
+% \end{macrocode}
+% We give the start of document a special label; this is used
+% in backreferencing-by-section, to allow for cites before
+% any sectioning commands. Set up PDF info.
+% \begin{macrocode}
+\Hy@AtBeginDocument{%
+ \Hy@pdfstringtrue
+ \PDF@SetupDoc
+ \let\PDF@SetupDoc\@empty
+ \Hy@DisableOption{pdfpagescrop}%
+ \Hy@DisableOption{pdfpagemode}%
+ \Hy@DisableOption{pdfnonfullscreenpagemode}%
+ \Hy@DisableOption{pdfdirection}%
+ \Hy@DisableOption{pdfviewarea}%
+ \Hy@DisableOption{pdfviewclip}%
+ \Hy@DisableOption{pdfprintarea}%
+ \Hy@DisableOption{pdfprintclip}%
+ \Hy@DisableOption{pdfprintscaling}%
+ \Hy@DisableOption{pdfduplex}%
+ \Hy@DisableOption{pdfpicktraybypdfsize}%
+ \Hy@DisableOption{pdfprintpagerange}%
+ \Hy@DisableOption{pdfnumcopies}%
+ \Hy@DisableOption{pdfstartview}%
+ \Hy@DisableOption{pdfstartpage}%
+ \Hy@DisableOption{pdftoolbar}%
+ \Hy@DisableOption{pdfmenubar}%
+ \Hy@DisableOption{pdfwindowui}%
+ \Hy@DisableOption{pdffitwindow}%
+ \Hy@DisableOption{pdfcenterwindow}%
+ \Hy@DisableOption{pdfdisplaydoctitle}%
+ \Hy@DisableOption{pdfpagelayout}%
+ \Hy@DisableOption{pdflang}%
+ \Hy@DisableOption{baseurl}%
+ \ifHy@texht\else\hyper@anchorstart{Doc-Start}\hyper@anchorend\fi
+ \Hy@pdfstringfalse
+}
+% \end{macrocode}
+
+% Ignore star from referencing macros:
+% \begin{macrocode}
+\LetLtxMacro\NoHy@OrgRef\ref
+\DeclareRobustCommand*{\ref}{%
+ \@ifstar\NoHy@OrgRef\NoHy@OrgRef
+}
+\LetLtxMacro\NoHy@OrgPageRef\pageref
+\DeclareRobustCommand*{\pageref}{%
+ \@ifstar\NoHy@OrgPageRef\NoHy@OrgPageRef
+}
+% \end{macrocode}
+%
+% \section{Localized nullifying of package}
+% Sometimes we just don't want the wretched package interfering
+% with us. Define an environment we can put in manually, or include
+% in a style file, which stops the hypertext functions doing anything.
+% This is used, for instance, in the Elsevier classes, to stop
+% |hyperref| playing havoc in the front matter.
+% \begin{macrocode}
+\def\NoHyper{%
+ \def\hyper@link@[##1]##2##3##4{##4\Hy@xspace@end}%
+ \def\hyper@@anchor##1##2{##2\Hy@xspace@end}%
+ \global\let\hyper@livelink\hyper@link
+ \gdef\hyper@link##1##2##3{##3\Hy@xspace@end}%
+ \let\hyper@anchor\ltx@gobble
+ \let\hyper@anchorstart\ltx@gobble
+ \def\hyper@anchorend{\Hy@xspace@end}%
+ \let\hyper@linkstart\ltx@gobbletwo
+ \def\hyper@linkend{\Hy@xspace@end}%
+ \def\hyper@linkurl##1##2{##1\Hy@xspace@end}%
+ \def\hyper@linkfile##1##2##3{##1\Hy@xspace@end}%
+ \let\Hy@backout\@gobble
+}
+\def\stop@hyper{%
+ \def\hyper@link@[##1]##2##3##4{##4\Hy@xspace@end}%
+ \let\Hy@backout\@gobble
+ \let\hyper@@anchor\ltx@gobble
+ \def\hyper@link##1##2##3{##3\Hy@xspace@end}%
+ \let\hyper@anchor\ltx@gobble
+ \let\hyper@anchorstart\ltx@gobble
+ \def\hyper@anchorend{\Hy@xspace@end}%
+ \let\hyper@linkstart\ltx@gobbletwo
+ \def\hyper@linkend{\Hy@xspace@end}%
+ \def\hyper@linkurl##1##2{##1\Hy@xspace@end}%
+ \def\hyper@linkfile##1##2##3{##1\Hy@xspace@end}%
+}
+\def\endNoHyper{%
+ \global\let\hyper@link\hyper@livelink
+}
+%</package>
+% \end{macrocode}
+%
+% \section{Package nohyperref}
+%
+% This package is introduced by Sebastian Rahtz.
+%
+% Package nohyperref is a dummy package that defines
+% some low level and some top-level commands.
+% It is done for jadetex, which calls hyperref
+% low-level commands, but it would also be useful with people using
+% normal hyperref, who really do not want the package loaded at all.
+%
+% Some low-level commands:
+% \begin{macrocode}
+%<*nohyperref>
+\RequirePackage{letltxmacro}[2008/06/13]
+\let\hyper@@anchor\@gobble
+\def\hyper@link#1#2#3{#3}%
+\let\hyper@anchorstart\@gobble
+\let\hyper@anchorend\@empty
+\let\hyper@linkstart\@gobbletwo
+\let\hyper@linkend\@empty
+\def\hyper@linkurl#1#2{#1}%
+\def\hyper@linkfile#1#2#3{#1}%
+\def\hyper@link@[#1]#2#3{}%
+\let\PDF@SetupDoc\@empty
+\let\PDF@FinishDoc\@empty
+\def\nohyperpage#1{#1}
+% \end{macrocode}
+% Some top-level commands:
+% \begin{macrocode}
+\def\Acrobatmenu#1#2{\leavevmode#2}
+\let\pdfstringdefDisableCommands\@gobbletwo
+\let\texorpdfstring\@firstoftwo
+\let\pdfbookmark\@undefined
+\newcommand\pdfbookmark[3][]{}
+\let\phantomsection\@empty
+\let\hypersetup\@gobble
+\let\hyperbaseurl\@gobble
+\newcommand*{\href}[3][]{#3}
+\let\hyperdef\@gobbletwo
+\let\hyperlink\@gobble
+\let\hypertarget\@gobble
+\def\hyperref{%
+ \@ifnextchar[\@gobbleopt{\expandafter\@gobbletwo\@gobble}%
+}
+\long\def\@gobbleopt[#1]{}
+\let\hyperpage\@empty
+% \end{macrocode}
+% Ignore star from referencing macros:
+% \begin{macrocode}
+\LetLtxMacro\NoHy@OrgRef\ref
+\DeclareRobustCommand*{\ref}{%
+ \@ifstar\NoHy@OrgRef\NoHy@OrgRef
+}
+\LetLtxMacro\NoHy@OrgPageRef\pageref
+\DeclareRobustCommand*{\pageref}{%
+ \@ifstar\NoHy@OrgPageRef\NoHy@OrgPageRef
+}
+%</nohyperref>
+% \end{macrocode}
+%
+% \section{The Mangling Of Aux and Toc Files}
+% Some extra tests so that the hyperref package may be removed or added
+% to a document without having to remove .aux and .toc files
+% (this section is by David Carlisle)
+% All the code is delayed to |\begin{document}|
+% \begin{macrocode}
+%<*package>
+\Hy@AtBeginDocument{%
+% \end{macrocode}
+% First the code to deal with removing the hyperref package from
+% a document.
+%
+% Write some stuff into the aux file so if the next run is done
+% without hyperref, then |\contentsline| and |\newlabel| are defined
+% to cope with the extra arguments.
+% \begin{macrocode}
+ \if@filesw
+ \ifHy@typexml
+ \immediate\closeout\@mainaux
+ \immediate\openout\@mainaux\jobname.aux\relax
+ \immediate\write\@auxout{<relaxxml>\relax}%
+ \fi
+ \immediate\write\@auxout{%
+ \string\providecommand\string\HyperFirstAtBeginDocument{%
+ \string\AtBeginDocument}^^J%
+ \string\HyperFirstAtBeginDocument{%
+ \string\ifx\string\hyper@anchor\string\@undefined^^J%
+ \string\global\string\let\string\oldcontentsline\string\contentsline^^J%
+ \string\gdef\string\contentsline%
+ \string#1\string#2\string#3\string#4{%
+ \string\oldcontentsline%
+ {\string#1}{\string#2}{\string#3}}^^J%
+ \string\global\string\let\string\oldnewlabel\string\newlabel^^J%
+ \string\gdef\string\newlabel\string#1\string#2{%
+ \string\newlabelxx{\string#1}\string#2}^^J%
+ \string\gdef\string\newlabelxx%
+ \string#1\string#2\string#3\string#4\string#5\string#6{%
+ \string\oldnewlabel{\string#1}{{\string#2}{\string#3}}}^^J%
+% \end{macrocode}
+%
+% But the new aux file will be read again at the end, with the normal
+% definitions expected, so better put things back as they were.
+% \begin{macrocode}
+ \string\AtEndDocument{%
+ \string\ifx\string\hyper@anchor\string\@undefined^^J%
+ \string\let\string\contentsline\string\oldcontentsline^^J%
+ \string\let\string\newlabel\string\oldnewlabel^^J%
+ \string\fi%
+ }^^J%
+% \end{macrocode}
+%
+% If the document is being run with hyperref put this definition
+% into the aux file, so we can spot it on the next run.
+% \begin{macrocode}
+ \string\fi%
+ }^^J%
+ \string\global\string\let\string\hyper@last\relax^^J%
+ \string\gdef\string\HyperFirstAtBeginDocument\string#1{\string#1}%
+ }%
+ \fi
+ \let\HyperFirstAtBeginDocument\ltx@firstofone
+% \end{macrocode}
+%
+% Now the code to deal with adding the hyperref package to a document
+% with aux and toc written the standard way.
+%
+% If hyperref was used last time, do nothing. If it was not used,
+% or an old version of hyperref was used, don't use that TOC at all
+% but generate a warning. Not ideal, but better than failing
+% with pre-5.0 hyperref TOCs.
+% \begin{macrocode}
+ \ifx\hyper@last\@undefined
+ \def\@starttoc#1{%
+ \begingroup
+ \makeatletter
+ \ltx@ifpackageloaded{parskip}{\parskip\z@}{}%
+ \IfFileExists{\jobname.#1}{%
+ \Hy@WarningNoLine{%
+ old #1 file detected, not used; run LaTeX again%
+ }%
+ }{}%
+ \if@filesw
+ \expandafter\newwrite\csname tf@#1\endcsname
+ \immediate\openout\csname tf@#1\endcsname \jobname.#1\relax
+ \fi
+ \@nobreakfalse
+ \endgroup
+ }%
+ \def\newlabel#1#2{\@newl@bel r{#1}{#2{}{}{}{}}}%
+ \fi
+}
+% \end{macrocode}
+%
+% \section{Title strings}
+%
+% If options |pdftitle| and |pdfauthor| are not used,
+% these informations for the pdf information dictionary
+% can be extracted by the \cmd{\title} and \cmd{\author}.
+% \begin{macrocode}
+\ifHy@pdfusetitle
+ \let\HyOrg@title\title
+ \let\HyOrg@author\author
+ \def\title{\@ifnextchar[{\Hy@scanopttitle}{\Hy@scantitle}}%
+ \def\Hy@scanopttitle[#1]{%
+ \gdef\Hy@title{#1}%
+ \HyOrg@title[{#1}]%
+ }%
+ \def\Hy@scantitle#1{%
+ \gdef\Hy@title{#1}%
+ \HyOrg@title{#1}%
+ }%
+ \def\author{\@ifnextchar[{\Hy@scanoptauthor}{\Hy@scanauthor}}%
+ \def\Hy@scanoptauthor[#1]{%
+ \gdef\Hy@author{#1}%
+ \HyOrg@author[{#1}]%
+ }%
+ \def\Hy@scanauthor#1{%
+ \gdef\Hy@author{#1}%
+ \HyOrg@author{#1}%
+ }%
+% \end{macrocode}
+%
+% The case, that \cmd{\title}, or \cmd{\author} are given before
+% hyperref is loaded, is much more complicate, because
+% LaTeX initializes the macros \cmd{\@title} and \cmd{\@author} with
+% LaTeX error and warning messages.
+% \begin{macrocode}
+ \begingroup
+ \def\process@me#1\@nil#2{%
+ \expandafter\let\expandafter\x\csname @#2\endcsname
+ \edef\y{\expandafter\strip@prefix\meaning\x}%
+ \def\c##1#1##2\@nil{%
+ \ifx\\##1\\%
+ \else
+ \expandafter\gdef\csname Hy@#2\expandafter\endcsname
+ \expandafter{\x}%
+ \fi
+ }%
+ \expandafter\c\y\relax#1\@nil
+ }%
+ \expandafter\process@me\string\@latex@\@nil{title}%
+ \expandafter\process@me\string\@latex@\@nil{author}%
+ \endgroup
+\fi
+\Hy@DisableOption{pdfusetitle}
+% \end{macrocode}
+%
+% Macro |\Hy@UseMaketitleInfos| is used in the driver files,
+% before the information entries are used.
+%
+% The newline macro |\newline| or |\\| is much more
+% complicate. In the title a good replacement can be
+% a space, but can be already a space after |\\| in
+% the title string. So this space is removed by
+% scanning for the next non-empty argument.
+%
+% In the macro |\author| the newline can perhaps
+% separate the different authors, so the newline
+% expands here to a comma with space.
+%
+% The possible arguments such as space or the optional
+% argument after the newline macros are not detected.
+%
+% A possible \thanks removes its argument.
+%
+% \begin{macrocode}
+\def\Hy@UseMaketitleString#1{%
+ \ltx@IfUndefined{Hy@#1}{}{%
+ \begingroup
+ \let\Hy@saved@hook\pdfstringdefPreHook
+ \pdfstringdefDisableCommands{%
+ \expandafter\let\expandafter\\\csname Hy@newline@#1\endcsname
+ \let\newline\\%
+ \def\and{; }%
+ \let\thanks\@gobble%
+ }%
+ \expandafter\ifx\csname @pdf#1\endcsname\@empty
+ \expandafter\pdfstringdef\csname @pdf#1\endcsname{%
+ \csname Hy@#1\endcsname\@empty
+ }%
+ \fi
+ \global\let\pdfstringdefPreHook\Hy@saved@hook
+ \endgroup
+ }%
+}
+\def\Hy@newline@title#1{ #1}
+\def\Hy@newline@author#1{, #1}
+\def\Hy@UseMaketitleInfos{%
+ \Hy@UseMaketitleString{title}%
+ \Hy@UseMaketitleString{author}%
+}
+% \end{macrocode}
+%
+% \section{Page numbers}
+% This stuff is done by Heiko Oberdiek.
+%
+% \section{Every page}
+%
+% \begin{macrocode}
+\RequirePackage{atbegshi}[2007/09/09]
+\let\Hy@EveryPageHook\ltx@empty
+\let\Hy@EveryPageBoxHook\ltx@empty
+\let\Hy@FirstPageHook\ltx@empty
+\AtBeginShipout{%
+ \Hy@EveryPageHook
+ \ifx\Hy@EveryPageBoxHook\ltx@empty
+ \else
+ \setbox\AtBeginShipoutBox=\vbox{%
+ \offinterlineskip
+ \Hy@EveryPageBoxHook
+ \box\AtBeginShipoutBox
+ }%
+ \fi
+}
+\ltx@iffileloaded{hpdftex.def}{%
+ \AtBeginShipout{%
+ \Hy@FirstPageHook
+ \global\let\Hy@FirstPageHook\ltx@empty
+ }%
+}{%
+ \AtBeginShipoutFirst{%
+ \Hy@FirstPageHook
+ }%
+}
+\g@addto@macro\Hy@FirstPageHook{%
+ \PDF@FinishDoc
+ \global\let\PDF@FinishDoc\ltx@empty
+}
+% \end{macrocode}
+%
+% \subsection{PDF /PageLabels}
+% Internal macros of this module are marked with |\HyPL@|.
+%
+% \begin{macrocode}
+\ifHy@pdfpagelabels
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname thepage\endcsname\relax
+ \Hy@pdfpagelabelsfalse
+ \Hy@WarningNoLine{%
+ Option `pdfpagelabels' is turned off\MessageBreak
+ because \string\thepage\space is undefined%
+ }%
+ \csname fi\endcsname
+ \csname iffalse\expandafter\endcsname
+ \fi
+% \end{macrocode}
+%
+% \begin{macro}{\thispdfpagelabel}
+% The command \cmd{\thispdfpagelabel} allows to label a special
+% page without the redefinition of \cmd{\thepage} for the page.
+% \begin{macrocode}
+ \def\thispdfpagelabel#1{%
+ \gdef\HyPL@thisLabel{#1}%
+ }%
+ \global\let\HyPL@thisLabel\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyPL@Labels}
+% The page labels are collected in \cmd{\HyPL@Labels} and
+% set at the end of the document.
+% \begin{macrocode}
+ \let\HyPL@Labels\ltx@empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@abspage}
+% We have to know the the absolute page number and introduce
+% a new counter for that.
+% \begin{macrocode}
+ \newcount\Hy@abspage
+ \Hy@abspage=0 %
+% \end{macrocode}
+% \end{macro}
+% For comparisons with the values of the previous page, some
+% variables are needed:
+% \begin{macrocode}
+ \def\HyPL@LastType{init}%
+ \def\HyPL@LastNumber{0}%
+ \let\HyPL@LastPrefix\ltx@empty
+% \end{macrocode}
+% Definitions for the PDF names of the \LaTeX{} pendents.
+% \begin{macrocode}
+ \def\HyPL@arabic{D}%
+ \def\HyPL@Roman{R}%
+ \def\HyPL@roman{r}%
+ \def\HyPL@Alph{A}%
+ \def\HyPL@alph{a}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \let\HyPL@SlidesSetPage\ltx@empty
+ \ltx@ifclassloaded{slides}{%
+ \def\HyPL@SlidesSetPage{%
+ \advance\c@page\ltx@one
+ \ifnum\value{page}>\ltx@one
+ \protected@edef\HyPL@SlidesOptionalPage{%
+ \Hy@SlidesFormatOptionalPage{\thepage}%
+ }%
+ \else
+ \let\HyPL@SlidesOptionalPage\ltx@empty
+ \fi
+ \advance\c@page-\ltx@one
+ \def\HyPL@page{%
+ \csname the\Hy@SlidesPage\endcsname
+ \HyPL@SlidesOptionalPage
+ }%
+ }%
+ }{}%
+% \end{macrocode}
+%
+% \begin{macro}{\HyPL@EveryPage}
+% If a page is shipout and the page number is known,
+% \cmd{\HyPL@EveryPage} has to be called. It stores the
+% current page label.
+% \begin{macrocode}
+ \def\HyPL@EveryPage{%
+ \begingroup
+ \ifx\HyPL@thisLabel\relax
+ \let\HyPL@page\thepage
+ \HyPL@SlidesSetPage
+ \else
+ \let\HyPL@page\HyPL@thisLabel
+ \global\let\HyPL@thisLabel\relax
+ \fi
+ \let\HyPL@Type\relax
+ \ifnum\c@page>0 %
+ \ifx\HyPL@SlidesSetPage\ltx@empty
+ \expandafter\HyPL@CheckThePage\HyPL@page\@nil
+ \fi
+ \fi
+ \let\Hy@temp Y%
+ \ifx\HyPL@Type\HyPL@LastType
+ \else
+ \let\Hy@temp N%
+ \fi
+ \ifx\HyPL@Type\relax
+ \pdfstringdef\HyPL@Prefix{\HyPL@page}%
+ \else
+ \pdfstringdef\HyPL@Prefix\HyPL@Prefix
+ \fi
+ \ifx\HyPL@Prefix\HyPL@LastPrefix
+ \else
+ \let\Hy@temp N%
+ \fi
+ \if Y\Hy@temp
+ \advance\c@page by -1 %
+ \ifnum\HyPL@LastNumber=\the\c@page\relax
+ \else
+ \let\Hy@temp N%
+ \fi
+ \Hy@StepCount\c@page
+ \fi
+ \if N\Hy@temp
+ \ifx\HyPL@Type\relax
+ \HyPL@StorePageLabel{/P(\HyPL@Prefix)}%
+ \else
+ \HyPL@StorePageLabel{%
+ \ifx\HyPL@Prefix\@empty
+ \else
+ /P(\HyPL@Prefix)%
+ \fi
+ /S/\csname HyPL\HyPL@Type\endcsname
+ \ifnum\the\c@page=1 %
+ \else
+ \space/St \the\c@page
+ \fi
+ }%
+ \fi
+ \fi
+ \xdef\HyPL@LastNumber{\the\c@page}%
+ \global\let\HyPL@LastType\HyPL@Type
+ \global\let\HyPL@LastPrefix\HyPL@Prefix
+ \endgroup
+ \Hy@GlobalStepCount\Hy@abspage
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyPL@CheckThePage}
+% Macro \cmd{\HyPL@CheckThePage} calls \cmd{\HyPL@@CheckThePage}
+% that does the job.
+% \begin{macrocode}
+ \def\HyPL@CheckThePage#1\@nil{%
+ \HyPL@@CheckThePage{#1}#1\csname\endcsname\c@page\@nil
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyPL@@CheckThePage}
+% The first check is, is \cmd{\thepage} is defined
+% such as in \LaTeX, e.\,g.: |\csname @arabic\endcsname\c@page|.
+% In the current implemenation the check fails, if there is
+% another \cmd{\csname} before.
+%
+% The second check tries to detect |\arabic{page}| at the
+% end of the definition text of \cmd{\thepage}.
+% \begin{macrocode}
+ \def\HyPL@@CheckThePage#1#2\csname#3\endcsname\c@page#4\@nil{%
+ \def\Hy@tempa{#4}%
+ \def\Hy@tempb{\csname\endcsname\c@page}%
+ \ifx\Hy@tempa\Hy@tempb
+ \expandafter\ifx\csname HyPL#3\endcsname\relax
+ \else
+ \def\HyPL@Type{#3}%
+ \def\HyPL@Prefix{#2}%
+ \fi
+ \else
+ \begingroup
+ \let\Hy@next\endgroup
+ \let\HyPL@found\@undefined
+ \def\arabic{\HyPL@Format{arabic}}%
+ \def\Roman{\HyPL@Format{Roman}}%
+ \def\roman{\HyPL@Format{roman}}%
+ \def\Alph{\HyPL@Format{Alph}}%
+ \def\alph{\HyPL@Format{alph}}%
+ \protected@edef\Hy@temp{#1}%
+ \ifx\HyPL@found\relax
+ \toks@\expandafter{\Hy@temp}%
+ \edef\Hy@next{\endgroup
+ \noexpand\HyPL@@@CheckThePage\the\toks@
+ \noexpand\HyPL@found\relax\noexpand\@nil
+ }%
+ \fi
+ \Hy@next
+ \fi
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyPL@Format}
+% The help macro \cmd{\HyPL@Format} is executed while
+% a \cmd{\protected@edef} in the second check
+% method of \cmd{\HyPL@@CheckPage}.
+% The first occurences of, for example, |\arabic{page}| is
+% marked by \cmd{\HyPL@found} that is also defined by
+% \cmd{\csname}.
+% \begin{macrocode}
+ \def\HyPL@Format#1#2{%
+ \ifx\HyPL@found\@undefined
+ \expandafter\ifx\csname c@#2\endcsname\c@page
+ \expandafter\noexpand\csname HyPL@found\endcsname{#1}%
+ \else
+ \expandafter\noexpand\csname#1\endcsname{#2}%
+ \fi
+ \else
+ \expandafter\noexpand\csname#1\endcsname{#2}%
+ \fi
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyPL@@@CheckThePage}
+% If the second check method is successful,
+% \cmd{\HyPL@@@CheckThePage} scans the result of
+% \cmd{\HyPL@Format} and stores the found values.
+% \begin{macrocode}
+ \def\HyPL@@@CheckThePage#1\HyPL@found#2#3\@nil{%
+ \def\Hy@tempa{#3}%
+ \def\Hy@tempb{\HyPL@found\relax}%
+ \ifx\Hy@tempa\Hy@tempb
+ \def\HyPL@Type{@#2}%
+ \def\HyPL@Prefix{#1}%
+ \fi
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyPL@StorePageLabel}
+% Dummy for drivers that does not support /PageLabel.
+% \begin{macrocode}
+ \providecommand*{\HyPL@StorePageLabel}[1]{}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyPL@Useless}
+% The |/PageLabels| entry does not make sense,
+% if the absolute page numbers and the page labels are the
+% same. Then \cmd{\HyPL@Labels} has the meaning of \cmd{\HyPL@Useless}.
+% \begin{macrocode}
+ \def\HyPL@Useless{0<</S/D>>}%
+ \@onelevel@sanitize\HyPL@Useless
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyPL@SetPageLabels}
+% The page labels are written to the PDF cataloge.
+% The command \cmd{\Hy@PutCatalog} is defined in the
+% driver files.
+% \begin{macrocode}
+ \def\HyPL@SetPageLabels{%
+ \@onelevel@sanitize\HyPL@Labels
+ \ifx\HyPL@Labels\@empty
+ \else
+ \ifx\HyPL@Labels\HyPL@Useless
+ \else
+ \Hy@PutCatalog{/PageLabels<</Nums[\HyPL@Labels]>>}%
+ \fi
+ \fi
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+ \g@addto@macro\Hy@EveryPageHook{\HyPL@EveryPage}%
+\fi
+% \end{macrocode}
+%
+% Option `pdfpagelabels' has been used and is now disabled.
+% \begin{macrocode}
+\Hy@DisableOption{pdfpagelabels}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \subsubsection{pdfTeX and VTeX}
+%
+% Because of pdfTeX's \cmd{\pdfcatalog} command
+% the /PageLabels entry can set at end of document
+% in the first run.
+%
+% \begin{macro}{\Hy@PutCatalog}
+% \begin{macrocode}
+%<*pdftex>
+\pdf@ifdraftmode{%
+ \let\Hy@PutCatalog\ltx@gobble
+}{%
+ \let\Hy@PutCatalog\pdfcatalog
+}
+%</pdftex>
+% \end{macrocode}
+% The code for VTeX is more complicate, because it does
+% not allow the direct access to the /Catalog object.
+% The command scans its argument and looks
+% for a /PageLabels entry.
+%
+% VTeX 6.59g is the first version, that
+% implements \verb|\special{!pdfpagelabels...}|.
+% For this version \cmd{\VTeXversion} reports 660.
+% \begin{macrocode}
+%<*vtex>
+\providecommand*{\XR@ext}{pdf}
+\edef\Hy@VTeXversion{%
+ \ifx\VTeXversion\@undefined
+ \z@
+ \else
+ \ifx\VTeXversion\relax
+ \z@
+ \else
+ \VTeXversion
+ \fi
+ \fi
+}
+\begingroup
+ \ifnum\Hy@VTeXversion<660 %
+ \gdef\Hy@PutCatalog#1{%
+ \Hy@WarningNoLine{%
+ VTeX 6.59g or above required for pdfpagelabels%
+ }%
+ }%
+ \else
+ \gdef\Hy@PutCatalog#1{%
+ \Hy@vt@PutCatalog#1/PageLabels<<>>\@nil
+ }%
+ \gdef\Hy@vt@PutCatalog#1/PageLabels<<#2>>#3\@nil{%
+ \ifx\\#2\\%
+ \else
+ \immediate\special{!pdfpagelabels #2}%
+ \fi
+ }%
+ \fi
+\endgroup
+%</vtex>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%<*pdftex|vtex>
+% \end{macrocode}
+%
+% \begin{macro}{\HyPL@StorePageLabel}
+% This macro adds the entry |#1| to \cmd{\HyPL@Labels}.
+% \begin{macrocode}
+\ifHy@pdfpagelabels
+ \def\HyPL@StorePageLabel#1{%
+ \toks@\expandafter{\HyPL@Labels}%
+ \xdef\HyPL@Labels{%
+ \the\toks@
+ \the\Hy@abspage<<#1>>%
+ }%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% Package \textsf{atveryend} is used to get behind the
+% final \cs{clearpage} and to avoid a \cs{clearpage}
+% in \cs{AtEndDocument}.
+% Then the PDF catalog entry for |\PageLabels| is set.
+% \begin{macrocode}
+ \RequirePackage{atveryend}[2009/12/07]%
+ \AtVeryEndDocument{%
+ \HyPL@SetPageLabels
+ }%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\fi
+%</pdftex|vtex>
+% \end{macrocode}
+%
+% \subsubsection{xetex}
+%
+% \begin{macrocode}
+%<*xetex>
+\HyPsd@LoadUnicode
+\Hy@unicodetrue
+\ifx\HyPsd@pdfencoding\HyPsd@pdfencoding@unicode
+\else
+ \let\HyPsd@pdfencoding\HyPsd@pdfencoding@auto
+\fi
+\HyPsd@LoadStringEnc
+\define@key{Hyp}{unicode}[true]{%
+ \Hy@boolkey{unicode}{#1}%
+ \ifHy@unicode
+ \else
+ \Hy@Warning{%
+ XeTeX driver only supports `unicode=true'. Ignoring\MessageBreak
+ option setting `unicode=false'%
+ }%
+ \Hy@unicodetrue
+ \fi
+}
+\define@key{Hyp}{pdfencoding}{%
+ \edef\HyPsd@temp{#1}%
+ \ifx\HyPsd@temp\HyPsd@pdfencoding@unicode
+ \let\HyPsd@pdfencoding\HyPsd@temp
+ \else
+ \ifx\HyPsd@temp\HyPsd@pdfencoding@auto
+ \let\HyPsd@pdfencoding\HyPsd@temp
+ \else
+ \Hy@Warning{%
+ XeTeX driver only supports\MessageBreak
+ `pdfencoding=unicode|auto'. Ignoring option\MessageBreak
+ setting `pdfencoding=\HyPsd@temp'%
+ }%
+ \fi
+ \fi
+}
+\let\HyXeTeX@CheckUnicode\relax
+% \end{macrocode}
+% Since 2016 (x)dvipdfmx has a special to control the spacing of annotation borders.
+% So let's make use of it:
+% \begin{macrocode}
+\def\setpdflinkmargin#1{%
+ \begingroup
+ \setlength{\dimen@}{#1}%
+ \special{dvipdfmx:config g \strip@pt\dimen@}%
+ \endgroup}
+%</xetex>
+% \end{macrocode}
+%
+% \subsubsection{pdfmarkbase, dvipdfm, xetex}
+%
+% \begin{macrocode}
+%<*pdfmarkbase>
+\begingroup
+ \@ifundefined{headerps@out}{}{%
+ \toks@\expandafter{\Hy@FirstPageHook}%
+ \xdef\Hy@FirstPageHook{%
+ \noexpand\headerps@out{%
+ systemdict /pdfmark known%
+ {%
+ userdict /?pdfmark systemdict /exec get put%
+ }{%
+ userdict /?pdfmark systemdict /pop get put %
+ userdict /pdfmark systemdict /cleartomark get put%
+ }%
+ ifelse%
+ }%
+ \the\toks@
+ }%
+ }%
+\endgroup
+%</pdfmarkbase>
+% \end{macrocode}
+%
+% \begin{macro}{\Hy@PutCatalog}
+% \begin{macrocode}
+%<dvipdfm|xetex>\def\Hy@PutCatalog#1{\@pdfm@mark{docview <<#1>>}}
+%<*pdfmarkbase>
+\def\Hy@PutCatalog#1{%
+ \pdfmark{pdfmark=/PUT,Raw={\string{Catalog\string} <<#1>>}}%
+}
+%</pdfmarkbase>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%<*pdfmarkbase|dvipdfm|xetex>
+\ifHy@pdfpagelabels
+% \end{macrocode}
+%
+% \begin{macro}{\HyPL@StorePageLabel}
+% This macro writes a string to the .aux file.
+% \begin{macrocode}
+ \def\HyPL@StorePageLabel#1{%
+ \if@filesw
+ \begingroup
+ \edef\Hy@tempa{\the\Hy@abspage<<#1>>}%
+ \immediate\write\@mainaux{%
+ \string\HyPL@Entry{\Hy@tempa}%
+ }%
+ \endgroup
+ \fi
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% Write a dummy definition of \cmd{\HyPL@Entry} for the case,
+% that the next run is done without hyperref.
+% A marker for the rerun warning is set and the /PageLabels
+% is written.
+% \begin{macrocode}
+ \Hy@AtBeginDocument{%
+ \if@filesw
+ \immediate\write\@mainaux{%
+ \string\providecommand\string*\string\HyPL@Entry[1]{}%
+ }%
+ \fi
+ \ifx\HyPL@Labels\@empty
+ \Hy@WarningNoLine{Rerun to get /PageLabels entry}%
+ \else
+ \HyPL@SetPageLabels
+ \fi
+ \let\HyPL@Entry\@gobble
+ }%
+% \end{macrocode}
+%
+% \begin{macro}{\HyPL@Entry}
+% \begin{macrocode}
+ \def\HyPL@Entry#1{%
+ \expandafter\gdef\expandafter\HyPL@Labels\expandafter{%
+ \HyPL@Labels
+ #1%
+ }%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\fi
+%</pdfmarkbase|dvipdfm|xetex>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ifx\MaybeStopEarly\relax
+\else
+ \Hy@stoppedearlytrue
+ \expandafter\MaybeStopEarly
+\fi
+\Hy@stoppedearlyfalse
+% \end{macrocode}
+%
+% \section{Automated \LaTeX\ hypertext cross-references}\label{latexxref}
+% Anything which can be referenced advances some counter; we overload
+% this to put in a hypertext starting point (with no visible anchor),
+% and make a note of that for later use in |\label|.
+% This will fail badly if |\theH<name>|
+% does not expand to a sensible reference. This means that classes
+% or package which introduce new elements need to define
+% an equivalent |\theH<name>| for every |\the<name>|. We do make
+% a trap to make |\theH<name>| be the same as |\arabic{<name>}|,
+% if |\theH<name>| is not defined, but this is not necessarily a good idea.
+% Alternatively, the `naturalnames' option uses whatever \LaTeX\
+% provides, which may be useable. But then its up to you to make
+% sure these are legal PDF and HTML names. The `hypertexnames=false' option
+% just makes up arbitrary names.
+%
+% All the shenanigans is to make sure section numbers etc
+% are always arabic, separated by dots. Who knows how people
+% will set up |\@currentlabel|? If they put spaces in, or brackets
+% (quite legal) then the hypertext processors will get upset.
+%
+% But this is flaky, and open to abuse. Styles like
+% |subeqn| will mess it up, for starters. Appendices are an issue, too.
+% We just hope to cover most situations. We can at least cope
+% with the standard sectioning structure, allowing for |\part|
+% and |\chapter|.
+%
+% Start with a fallback for equations
+% \begin{macrocode}
+\def\Hy@CounterExists#1{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname c@#1\endcsname\relax
+ \expandafter\@gobble
+ \else
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname the#1\endcsname\relax
+ \expandafter\expandafter\expandafter\@gobble
+ \else
+ \expandafter\expandafter\expandafter\@firstofone
+ \fi
+ \fi
+}
+\Hy@CounterExists{section}{%
+ \providecommand\theHequation{\theHsection.\arabic{equation}}%
+}
+\Hy@CounterExists{part}{%
+ \providecommand\theHpart{\arabic{part}}%
+}
+\ltx@IfUndefined{thechapter}{%
+ \providecommand\theHsection {\arabic{section}}%
+ \providecommand\theHfigure {\arabic{figure}}%
+ \providecommand\theHtable {\arabic{table}}%
+}{%
+ \providecommand\theHchapter {\arabic{chapter}}%
+ \providecommand\theHfigure {\theHchapter.\arabic{figure}}%
+ \providecommand\theHtable {\theHchapter.\arabic{table}}%
+ \providecommand\theHsection {\theHchapter.\arabic{section}}%
+}
+\providecommand\theHsubsection {\theHsection.\arabic{subsection}}
+\providecommand\theHsubsubsection{\theHsubsection.\arabic{subsubsection}}
+\providecommand\theHparagraph {\theHsubsubsection.\arabic{paragraph}}
+\providecommand\theHsubparagraph {\theHparagraph.\arabic{subparagraph}}
+\providecommand\theHtheorem {\theHsection.\arabic{theorem}}
+\providecommand\theHthm {\theHsection.\arabic{thm}}
+% \end{macrocode}
+% Thanks to Greta Meyer (gbd@pop.cwru.edu) for making me realize
+% that enumeration starts at 0 for every list! But |\item|
+% occurs inside |\trivlist|, so check if its a real |\item| before
+% incrementing counters.
+% \begin{macrocode}
+\let\H@item\item
+\newcounter{Item}
+\def\theHItem{\arabic{Item}}
+\def\item{%
+ \@hyper@itemfalse
+ \if@nmbrlist\@hyper@itemtrue\fi
+ \H@item
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\providecommand\theHenumi {\theHItem}
+\providecommand\theHenumii {\theHItem}
+\providecommand\theHenumiii {\theHItem}
+\providecommand\theHenumiv {\theHItem}
+\providecommand\theHHfootnote {\arabic{Hfootnote}}
+\providecommand\theHmpfootnote{\arabic{mpfootnote}}
+\@ifundefined{theHHmpfootnote}{%
+ \let\theHHmpfootnote\theHHfootnote
+}{}
+% \end{macrocode}
+% Tanmoy asked for this default handling of undefined |\theH<name>|
+% situations. It really isn't clear what would be ideal, whether to
+% turn off hyperizing of unknown elements, to pick up the textual
+% definition of the counter, or to default it to something like
+% |\arabic{name}|. We take the latter course, slightly worriedly.
+% \begin{macrocode}
+\let\H@refstepcounter\refstepcounter
+\edef\name@of@eq{equation}%
+\edef\name@of@slide{slide}%
+% \end{macrocode}
+% We do not want the handler for |\refstepcounter| to cut in
+% during the processing of |\item| (we handle that separately),
+% so we provide a bypass conditional.
+% \begin{macrocode}
+\newif\if@hyper@item
+\newif\if@skiphyperref
+\@hyper@itemfalse
+\@skiphyperreffalse
+\def\refstepcounter#1{%
+ \ifHy@pdfstring
+ \else
+ \H@refstepcounter{#1}%
+ \edef\This@name{#1}%
+ \ifx\This@name\name@of@slide
+ \else
+ \if@skiphyperref
+ \else
+ \if@hyper@item
+ \stepcounter{Item}%
+ \hyper@refstepcounter{Item}%
+ \@hyper@itemfalse
+ \else
+ \hyper@refstepcounter{#1}%
+ \fi
+ \fi
+ \fi
+ \fi
+}
+\let\Hy@saved@refstepcounter\refstepcounter
+% \end{macrocode}
+% AMS\LaTeX\ processes all equations twice; we want to make sure
+% that the hyper stuff is not executed twice, so we use the AMS
+% |\ifmeasuring@|, initialized if AMS math is not used.
+% \begin{macrocode}
+\@ifpackageloaded{amsmath}{}{\newif\ifmeasuring@\measuring@false}
+% \end{macrocode}
+%
+% \begin{macro}{\hyper@refstepcounter}
+% \begin{macrocode}
+\def\hyper@refstepcounter#1{%
+ \edef\This@name{#1}%
+ \ifx\This@name\name@of@eq
+ \@ifundefined{theHequation}{%
+ \make@stripped@name{\theequation}%
+ \let\theHequation\newname
+ }{}%
+ \fi
+ \HyCnt@ProvideTheHCounter{#1}%
+ \hyper@makecurrent{#1}%
+ \ifmeasuring@
+ \else
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@ProvideTheHCounter}
+% \cs{theH<counter>} is not set for counters that
+% are defined before `hyperref' is loaded.
+% In \cs{cl@@ckpt}, the clear counter list of
+% the artificial counter |@ckpt|, \LaTeX\ remembers
+% the defined counters (needed for \cs{include}). We check
+% the clear counter lists, whether our counter is present.
+% If we found it, then we add the parent counter value
+% to \cs{theH<counter>}. The \cs{@elt} list is
+% used in sanitized form for the comparison, because the list
+% might contain other stuff than \cs{@elt}s. Also it simplifies
+% the implementation, because \LaTeX', substring search
+% \cs{in@} can be used.
+% \begin{macrocode}
+\def\HyCnt@ProvideTheHCounter#1{%
+ \@ifundefined{theH#1}{%
+ \expandafter\def\csname theH#1\endcsname{}%
+ \def\Hy@temp{\@elt{#1}}%
+ \ltx@onelevel@sanitize\Hy@temp
+ \let\HyOrg@elt\@elt
+ \edef\@elt{%
+ \noexpand\HyCnt@LookForParentCounter
+ \expandafter\noexpand\csname theH#1\endcsname
+ }%
+ \cl@@ckpt
+ \let\@elt\HyOrg@elt
+ \expandafter
+ \ltx@LocalAppendToMacro\csname theH#1\expandafter\endcsname
+ \expandafter{%
+ \expandafter\@arabic\csname c@#1\endcsname
+ }%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@LookForParentCounter}
+% \begin{macrocode}
+\def\HyCnt@LookForParentCounter#1#2{%
+ \expandafter\let\expandafter\Hy@temp@A\csname cl@#2\endcsname
+ \ltx@IfUndefined{cl@#2}{%
+ }{%
+ \ltx@onelevel@sanitize\Hy@temp@A
+ \edef\Hy@temp@A{%
+ \noexpand\in@{\Hy@temp}{\Hy@temp@A}%
+ }\Hy@temp@A
+ \ifin@
+ \ltx@IfUndefined{theH#2}{%
+ \expandafter\ltx@LocalAppendToMacro\expandafter#1%
+ \expandafter{%
+ \expandafter\@arabic\csname c@#2\endcsname.%
+ }%
+ }{%
+ \expandafter\ltx@LocalAppendToMacro\expandafter#1%
+ \expandafter{%
+ \csname theH#2\endcsname.%
+ }%
+ }%
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% After \cmd{\appendix} ``chapter'' (or ``section'' for classes
+% without chapter) should be replaced
+% by ``appendix'' to get \cmd{\autoref} work.
+% Macro \cmd{\Hy@chapapp} contains the current valid
+% name like \cmd{\@chapapp}, which cannot be used,
+% because this string depends on the current language.
+%
+% The ``french'' package defines counter \cmd{\thechapter}
+% by \cmd{\newcounter{chapter}}, if \cmd{\@ifundefined{chapter}}.
+% \begin{macrocode}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname chapter\endcsname\relax
+ \def\Hy@chapterstring{section}%
+\else
+ \def\Hy@chapterstring{chapter}%
+\fi
+\def\Hy@appendixstring{appendix}
+\def\Hy@chapapp{\Hy@chapterstring}
+\ltx@IfUndefined{appendix}{%
+}{%
+ \let\HyOrg@appendix\appendix
+ \def\Hy@AlphNoErr#1{%
+ \ifnum\value{#1}>26 %
+ Alph\number\value{#1}%
+ \else
+ \ifnum\value{#1}<1 %
+ Alph\number\value{#1}%
+ \else
+ \Alph{#1}%
+ \fi
+ \fi
+ }%
+ \def\appendix{%
+ \ltx@IfUndefined{chapter}{%
+ \gdef\theHsection{\Hy@AlphNoErr{section}}%
+ }{%
+ \gdef\theHchapter{\Hy@AlphNoErr{chapter}}%
+ }%
+ \xdef\Hy@chapapp{\Hy@appendixstring}%
+ \HyOrg@appendix
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\Hy@Test@alph}
+% \begin{macrocode}
+\def\Hy@Test@alph#1{%
+ \ifcase#1\or
+ a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or
+ k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or
+ u\or v\or w\or x\or y\or z%
+ \else
+ \@ctrerr
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@Test@Alph}
+% \begin{macrocode}
+\def\Hy@Test@Alph#1{%
+ \ifcase#1\or
+ A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or
+ K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or
+ U\or V\or W\or X\or Y\or Z%
+ \else
+ \@ctrerr
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\hyper@makecurrent}
+% Because of Babel mucking around, nullify |\textlatin| when making names.
+% And |\@number| because of babel's lrbabel.def.
+% \begin{macrocode}
+\def\hyper@makecurrent#1{%
+ \begingroup
+ \Hy@safe@activestrue
+ \edef\Hy@param{#1}%
+ \ifx\Hy@param\Hy@chapterstring
+ \let\Hy@param\Hy@chapapp
+ \fi
+ \ifHy@hypertexnames
+ \let\@number\@firstofone
+ \def\@fnsymbol##1{fnsymbol\number##1}%
+ \def\@arabic##1{\number##1}%
+ \ifx\@alph\Hy@Test@alph
+ \else
+ \def\@alph{alph\number}%
+ \fi
+ \ifx\@Alph\Hy@Test@Alph
+ \else
+ \def\@Alph{Alph\number}%
+ \fi
+ \ifHy@naturalnames
+ \let\textlatin\@firstofone
+ \xdef\HyperGlobalCurrentHref{\csname the#1\endcsname}%
+ \else
+ \xdef\HyperGlobalCurrentHref{%
+ \csname
+ the%
+ \expandafter\ifx\csname theH#1\endcsname\relax\else H\fi
+ #1%
+ \endcsname
+ }%
+ \fi
+ \xdef\HyperGlobalCurrentHref{%
+ \Hy@param.\expandafter\strip@prefix\meaning\HyperGlobalCurrentHref
+ }%
+ \else
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \xdef\HyperGlobalCurrentHref{\Hy@param.\the\Hy@linkcounter}%
+ \fi
+ \endgroup
+ \let\HyperLocalCurrentHref\HyperGlobalCurrentHref
+ \ifHy@localanchorname
+ \let\@currentHref\HyperLocalCurrentHref
+ \else
+ \global\let\@currentHref\HyperGlobalCurrentHref
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@MakeCurrentHref}
+% \begin{macrocode}
+\def\Hy@MakeCurrentHref#1{%
+ \edef\HyperLocalCurrentHref{#1}%
+ \@onelevel@sanitize\HyperLocalCurrentHref
+ \global\let\HyperGlobalCurrentHref\HyperLocalCurrentHref
+ \let\HyperLocalCurrentHref\HyperGlobalCurrentHref
+ \ifHy@localanchorname
+ \let\@currentHref\HyperLocalCurrentHref
+ \else
+ \global\let\@currentHref\HyperGlobalCurrentHref
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@MakeCurrentHrefAuto}
+% \begin{macrocode}
+\def\Hy@MakeCurrentHrefAuto#1{%
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \Hy@MakeCurrentHref{#1.\the\Hy@linkcounter}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@currentHlabel}
+% \cs{@currrentHlabel} is only defined for compatibility with
+% package `hypdvips'.
+% \begin{macrocode}
+\def\@currentHlabel{\@currentHref}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\@ifpackageloaded{fancyvrb}{%
+ \@ifpackagelater{fancyvrb}{1998/05/20}{}{%
+ \def\FV@StepLineNo{%
+ \FV@SetLineNo
+ \def\FV@StepLineNo{\H@refstepcounter{FancyVerbLine}}%
+ \FV@StepLineNo
+ }%
+ }%
+}{}
+% \end{macrocode}
+%
+% \section{Package lastpage support}
+% Package lastpage directly writes the |\newlabel| command to the
+% aux file. Because package hyperref requires additional arguments,
+% the internal command |\lastpage@putlabel| is redefined.
+% The patch is deferred by |\AtBeginDocument|, because it is possible
+% that package lastpage is loaded after package hyperref.
+% The same algorithm (options hypertexnames and plainpages)
+% is used to get the page anchor name as
+% in |\Hy@EveryPageAnchor| (see sec. \ref{pagenum}).
+% The link will not work if option pageanchor is set to false.
+% \begin{macro}{\lastpage@putlabel}
+% \begin{macrocode}
+\Hy@AtBeginDocument{%
+ \@ifclassloaded{revtex4}{%
+ \@namedef{ver@lastpage.sty}{1994/06/25}%
+ }{}%
+ \@ifpackageloaded{lastpage}{%
+ \ifHy@pageanchor
+ \else
+ \Hy@WarningNoLine{%
+ The \string\pageref{LastPage} link doesn't work\MessageBreak
+ with disabled option `pageanchor'%
+ }%
+ \fi
+ \def\lastpage@putlabel{%
+ \addtocounter{page}{-1}%
+ \if@filesw
+ \begingroup
+ \let\@number\@firstofone
+ \ifHy@pageanchor
+ \ifHy@hypertexnames
+ \ifHy@plainpages
+ \def\Hy@temp{\arabic{page}}%
+ \else
+ \Hy@unicodefalse
+ \pdfstringdef\Hy@temp{\thepage}%
+ \fi
+ \else
+ \def\Hy@temp{\the\Hy@pagecounter}%
+ \fi
+ \fi
+ \immediate\write\@auxout{%
+ \string\newlabel
+ {LastPage}{{}{\thepage}{}{%
+ \ifHy@pageanchor page.\Hy@temp\fi}{}}%
+ }%
+ \endgroup
+ \fi
+ \addtocounter{page}{1}%
+ }%
+ \@ifclassloaded{revtex4}{%
+ \begingroup
+ \toks@\expandafter{\lastpage@putlabel}%
+ \edef\x{\endgroup
+ \def\noexpand\lastpage@putlabel{%
+ \noexpand\stepcounter{page}%
+ \the\toks@
+ \noexpand\addtocounter{page}\noexpand\m@ne
+ }%
+ }%
+ \x
+ }{}%
+ }{}%
+}
+%</package>
+%<*check>
+\checkpackage{lastpage}[1994/06/25]
+\checkcommand\def\lastpage@putlabel{%
+ \addtocounter{page}{-1}%
+ \immediate\write\@auxout{%
+ \string\newlabel{LastPage}{{}{\thepage}}%
+ }%
+ \addtocounter{page}{1}%
+}
+%</check>
+%<*package>
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Package ifthen support}
+%
+% Since version 6.75a this is done in package nameref.
+%
+% For compatibility \cmd{\hypergetref} and
+% \cmd{\hypergetpageref} are still provided.
+% But they do not generate warnings, if the reference is
+% undefined.
+% \begin{macrocode}
+\def\hypergetref#1{\getrefbykeydefault{#1}{}{??}}
+\def\hypergetpageref#1{\getrefbykeydefault{#1}{page}{0}}
+% \end{macrocode}
+%
+% \section{Package titlesec and titletoc support}
+%
+% This code is contributed by Javier Bezos
+% (Email: \Email{jbezos@arrakis.es}).
+%
+% Package titlesec support:
+% \begin{macrocode}
+\@ifpackageloaded{titlesec}{%
+ \def\ttl@Hy@steplink#1{%
+ \Hy@MakeCurrentHrefAuto{#1*}%
+ \edef\ttl@Hy@saveanchor{%
+ \noexpand\Hy@raisedlink{%
+ \noexpand\hyper@anchorstart{\@currentHref}%
+ \noexpand\hyper@anchorend
+ \def\noexpand\ttl@Hy@SavedCurrentHref{\@currentHref}%
+ \noexpand\ttl@Hy@PatchSaveWrite
+ }%
+ }%
+ }%
+ \def\ttl@Hy@PatchSaveWrite{%
+ \begingroup
+ \toks@\expandafter{\ttl@savewrite}%
+ \edef\x{\endgroup
+ \def\noexpand\ttl@savewrite{%
+ \let\noexpand\@currentHref
+ \noexpand\ttl@Hy@SavedCurrentHref
+ \the\toks@
+ }%
+ }%
+ \x
+ }%
+ \def\ttl@Hy@refstepcounter#1{%
+ \let\ttl@b\Hy@raisedlink
+ \def\Hy@raisedlink##1{%
+ \def\ttl@Hy@saveanchor{\Hy@raisedlink{##1}}%
+ }%
+ \refstepcounter{#1}%
+ \let\Hy@raisedlink\ttl@b
+ }%
+}{}
+% \end{macrocode}
+%
+% Package titletoc support:
+% \begin{macrocode}
+\@ifpackageloaded{titletoc}{%
+ \def\ttl@gobblecontents#1#2#3#4{\ignorespaces}%
+}{}
+% \end{macrocode}
+%
+% \section{Package varioref support}
+%
+% Package nameref uses five arguments for the ref system.
+% Fix provided by Felix Neubauer (\Email{felix.neubauer@gmx.net}).
+% \begin{macrocode}
+\def\Hy@varioref@undefined{{??}{??}{}{}{}}
+\@ifpackageloaded{varioref}{%
+ \def\vref@pagenum#1#2{%
+ \@ifundefined{r@#2}{%
+ \expandafter\let\csname r@#2\endcsname\Hy@varioref@undefined
+ }{}%
+ \edef#1{\getpagerefnumber{#2}}%
+ }%
+}{}
+% \end{macrocode}
+%
+% Package varioref redefines \cs{refstepcounter}, thus it needs
+% fixing, if the package is loaded *after* hyperref.
+% \begin{macrocode}
+\def\Hy@varioref@refstepcounter#1{%
+ \stepcounter{#1}%
+ \protected@edef\@currentlabel{%
+ \csname p@#1\expandafter\endcsname\csname the#1\endcsname
+ }%
+}
+\AtBeginDocument{%
+ \ifx\refstepcounter\Hy@varioref@refstepcounter
+ \let\H@refstepcounter\refstepcounter
+ \let\refstepcounter\Hy@saved@refstepcounter
+ \fi
+}
+% \end{macrocode}
+%
+% \section{Package longtable support}
+%
+% Sometimes the anchor of the longtable goes to the previous
+% page. Thus the following patch separates the anchor setting
+% and counter incrementation by hyperref's \verb|\refstepcounter|
+% and the anchor setting is moved after \verb|\vskip\LTpre|.
+%
+% Patch of \cmd{\LT@array}:
+% replace \cmd{\refstepcounter} by the original
+% \cmd{\H@refstepcounter} without anchor generation
+% \begin{macrocode}
+\@ifpackageloaded{longtable}{%
+ \begingroup
+ \def\y{\LT@array}%
+ \@ifundefined{scr@LT@array}{%
+ \@ifundefined{adl@LT@array}{}{\def\y{\adl@LT@array}}%
+ }{\def\y{\scr@LT@array}}%
+ \long\def\x\refstepcounter#1#2\@sharp#3#4\@nil{%
+ \expandafter\endgroup
+ \expandafter\def\y[##1]##2{%
+ \H@refstepcounter{#1}%
+ \hyper@makecurrent{table}%
+ \let\Hy@LT@currentHref\@currentHref
+ #2\@sharp#####4%
+ }%
+ }%
+ \expandafter\expandafter\expandafter\x\y[{#1}]{#2}\@nil
+% \end{macrocode}
+% Patch of \cmd{\LT@start}:
+% add anchor before first line after \verb|\vskip\LTpre|
+% \begin{macrocode}
+ \begingroup
+ \def\x#1\ifvoid\LT@foot#2\fi#3\@nil{%
+ \endgroup
+ \def\LT@start{%
+ #1%
+ \ifvoid\LT@foot#2\fi
+ \let\@currentHref\Hy@LT@currentHref
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ #3%
+ }%
+ }%
+ \expandafter\x\LT@start\@nil
+}{}
+% \end{macrocode}
+%
+% \section{Equations}\label{equations}
+% We want to make the whole equation a target anchor.
+% Overload equation, temporarily reverting to original
+% |\refstepcounter|. If, however, it is in AMS math, we do not
+% do anything, as the tag mechanism is used there (see section \ref{ams}).
+% The execption is that we move the equation incrementation inside
+% the math environment to avoid specials outside and a wrong vertical
+% spacing of equation environments.
+% \begin{macrocode}
+\let\new@refstepcounter\refstepcounter
+\let\H@equation\equation
+\let\H@endequation\endequation
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@ifpackageloaded{amsmath}{%
+ \long\def\Hy@temp{%
+ \incr@eqnum
+ \mathdisplay@push
+ \st@rredfalse \global\@eqnswtrue
+ \mathdisplay{equation}%
+ }%
+ \ifx\Hy@temp\equation
+ \expandafter\ifx\csname if@fleqn\expandafter\endcsname
+ \csname iftrue\endcsname
+ \else
+ \long\def\equation{%
+ \mathdisplay@push
+ \st@rredfalse \global\@eqnswtrue
+ \mathdisplay{equation}%
+ \incr@eqnum
+ }%
+ \fi
+ \fi
+}{%
+ \def\equation{%
+ \let\refstepcounter\H@refstepcounter
+ \H@equation
+ \@ifundefined{theHequation}{%
+ \make@stripped@name{\theequation}%
+ \let\theHequation\newname
+ }{}%
+ \hyper@makecurrent{equation}%
+% \end{macrocode}
+% \cs{mathopen} is needed in case the equation starts with
+% an unary minus, for example.
+% \begin{macrocode}
+ \mathopen{%
+ \Hy@raisedlink{\hyper@anchorstart{\@currentHref}}%
+ }%
+ \let\refstepcounter\new@refstepcounter
+ }%
+ \def\endequation{%
+ \ifx\Hy@raisedlink\ltx@empty
+ \hyper@anchorend
+ \else
+ \mathclose{\Hy@raisedlink{\hyper@anchorend}}%
+ \fi
+ \H@endequation
+ }%
+}
+% \end{macrocode}
+% My goodness, why can't \LaTeX{} be consistent? Why is |\eqnarray|
+% set up differently from other objects?
+%
+% People (you know who you are, Thomas Beuth) sometimes make
+% an eqnarray where \emph{all} the lines end with |\notag|,
+% so there is no suitable anchor at all. In this case, pass by
+% on the other side.
+% \begin{macrocode}
+\newif\if@eqnstar
+\@eqnstarfalse
+\let\H@eqnarray\eqnarray
+\let\H@endeqnarray\endeqnarray
+\def\eqnarray{%
+ \let\Hy@reserved@a\relax
+ \def\@currentHref{}%
+ \H@eqnarray
+ \if@eqnstar
+ \else
+ \ifx\\\@currentHref\\%
+ \else
+ \@ifundefined{theHequation}{%
+ \make@stripped@name{\theequation}%
+ \let\theHequation\newname
+ }{}%
+ \hyper@makecurrent{equation}%
+ \mathopen{%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ }%
+ \fi
+ \fi
+}
+\def\endeqnarray{%
+ \H@endeqnarray
+}
+% \end{macrocode}
+% This is quite heavy-handed, but it works for now. If its an |eqnarray*|
+% we need to disable the hyperref actions. There may well be a cleaner
+% way to trap this. Bill Moss found this.
+% \begin{macrocode}
+\@namedef{eqnarray*}{%
+ \def\@eqncr{\nonumber\@seqncr}\@eqnstartrue\eqnarray
+}
+\@namedef{endeqnarray*}{%
+ \nonumber\endeqnarray\@eqnstarfalse
+}
+% \end{macrocode}
+% Then again, we have the \emph{subeqnarray}
+% package. Tanmoy provided some code for this:
+% \begin{macrocode}
+\ltx@IfUndefined{subeqnarray}{}{%
+ \let\H@subeqnarray\subeqnarray
+ \let\H@endsubeqnarray\endsubeqnarray
+ \def\subeqnarray{%
+ \let\Hy@reserved@a\relax
+ \H@subeqnarray
+ \@ifundefined{theHequation}{%
+ \make@stripped@name{\theequation}%
+ \let\theHequation\newname
+ }{}%
+ \hyper@makecurrent{equation}%
+ \hyper@anchorstart{\@currentHref}{}\hyper@anchorend
+ }%
+ \def\endsubeqnarray{%
+ \H@endsubeqnarray
+ }%
+ \providecommand\theHsubequation{\theHequation\alph{subequation}}%
+}
+% \end{macrocode}
+% The aim of this macro is to produce a sanitized version of
+% its argument, to make it a safe label.
+% \begin{macrocode}
+\def\make@stripped@name#1{%
+ \begingroup
+ \escapechar\m@ne
+ \global\let\newname\@empty
+ \protected@edef\Hy@tempa{#1}%
+ \edef\@tempb{%
+ \noexpand\@tfor\noexpand\Hy@tempa:=%
+ \expandafter\strip@prefix\meaning\Hy@tempa
+ }%
+ \@tempb\do{%
+ \if{\Hy@tempa\else
+ \if}\Hy@tempa\else
+ \xdef\newname{\newname\Hy@tempa}%
+ \fi
+ \fi
+ }%
+ \endgroup
+}
+% \end{macrocode}
+%
+% Support for amsmath's \texttt{subequations}:
+% \begin{macrocode}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname subequations\endcsname\relax
+\else
+ \let\HyOrg@subequations\subequations
+ \def\subequations{%
+ \stepcounter{equation}%
+ \protected@edef\theHparentequation{%
+ \@ifundefined{theHequation}\theequation\theHequation
+ }%
+ \addtocounter{equation}{-1}%
+ \HyOrg@subequations
+ \def\theHequation{\theHparentequation\alph{equation}}%
+ \ignorespaces
+ }%
+\fi
+% \end{macrocode}
+%
+% Support for package \texttt{amsthm} (Daniel M\"ullner):
+% also \texttt{cleveref}.
+% \begin{macrocode}
+\Hy@AtBeginDocument{%
+\@ifpackageloaded{cleveref}{%
+\let\Hy@savedthm\@thm
+\def\@thm{\ifhmode\unskip\fi\Hy@savedthm}%
+}{%
+\@ifpackageloaded{amsthm}{%
+% \end{macrocode}
+% Class amsbook uses a different definition of \cs{@thm},
+% where two lines are added (thanks to Dan Luecking for
+% his analysis):
+%\begin{quote}
+%\begin{verbatim}
+%\let\thm@indent\indent % indent
+%\thm@headfont{\scshape}% heading font small caps
+%\end{verbatim}
+%\end{quote}
+% \begin{macrocode}
+ \def\Hy@temp#1#2#3{%
+ \ifhmode\unskip\unskip\par\fi
+ \normalfont
+ \trivlist
+ \let\thmheadnl\relax
+ \let\thm@swap\@gobble
+ \let\thm@indent\indent % indent
+ \thm@headfont{\scshape}% heading font small caps
+ \thm@notefont{\fontseries\mddefault\upshape}%
+ \thm@headpunct{.}% add period after heading
+ \thm@headsep 5\p@ plus\p@ minus\p@\relax
+ \thm@space@setup
+ #1% style overrides
+ \@topsep \thm@preskip % used by thm head
+ \@topsepadd \thm@postskip % used by \@endparenv
+ \def\@tempa{#2}\ifx\@empty\@tempa
+ \def\@tempa{\@oparg{\@begintheorem{#3}{}}[]}%
+ \else
+ \refstepcounter{#2}%
+ \def\@tempa{%
+ \@oparg{\@begintheorem{#3}{\csname the#2\endcsname}}[]%
+ }%
+ \fi
+ \@tempa
+ }%
+ \ifx\Hy@temp\@thm
+ \def\@thm#1#2#3{%
+ \ifhmode
+ \unskip\unskip\par
+ \fi
+ \normalfont
+ \trivlist
+ \let\thmheadnl\relax
+ \let\thm@swap\@gobble
+ \let\thm@indent\indent % indent
+ \thm@headfont{\scshape}% heading font small caps
+ \thm@notefont{\fontseries\mddefault\upshape}%
+ \thm@headpunct{.}% add period after heading
+ \thm@headsep 5\p@ plus\p@ minus\p@\relax
+ \thm@space@setup
+ #1% style overrides
+ \@topsep \thm@preskip % used by thm head
+ \@topsepadd \thm@postskip % used by \@endparenv
+ \def\dth@counter{#2}%
+ \ifx\@empty\dth@counter
+ \def\@tempa{%
+ \@oparg{\@begintheorem{#3}{}}[]%
+ }%
+ \else
+ \H@refstepcounter{#2}%
+ \hyper@makecurrent{#2}%
+ \let\Hy@dth@currentHref\@currentHref
+ \def\@tempa{%
+ \@oparg{\@begintheorem{#3}{\csname the#2\endcsname}}[]%
+ }%
+ \fi
+ \@tempa
+ }%
+ \else
+ \def\@thm#1#2#3{%
+ \ifhmode
+ \unskip\unskip\par
+ \fi
+ \normalfont
+ \trivlist
+ \let\thmheadnl\relax
+ \let\thm@swap\@gobble
+ \thm@notefont{\fontseries\mddefault\upshape}%
+ \thm@headpunct{.}% add period after heading
+ \thm@headsep 5\p@ plus\p@ minus\p@\relax
+ \thm@space@setup
+ #1% style overrides
+ \@topsep \thm@preskip % used by thm head
+ \@topsepadd \thm@postskip % used by \@endparenv
+ \def\dth@counter{#2}%
+ \ifx\@empty\dth@counter
+ \def\@tempa{%
+ \@oparg{\@begintheorem{#3}{}}[]%
+ }%
+ \else
+ \H@refstepcounter{#2}%
+ \hyper@makecurrent{#2}%
+ \let\Hy@dth@currentHref\@currentHref
+ \def\@tempa{%
+ \@oparg{\@begintheorem{#3}{\csname the#2\endcsname}}[]%
+ }%
+ \fi
+ \@tempa
+ }%
+ \fi
+ \dth@everypar={%
+ \@minipagefalse
+ \global\@newlistfalse
+ \@noparitemfalse
+ \if@inlabel
+ \global\@inlabelfalse
+ \begingroup
+ \setbox\z@\lastbox
+ \ifvoid\z@
+ \kern-\itemindent
+ \fi
+ \endgroup
+ \ifx\@empty\dth@counter
+ \else
+ \Hy@raisedlink{%
+ \hyper@anchorstart{%
+ \ltx@ifundefined{Hy@dth@currentHref}%
+ \@currentHref\Hy@dth@currentHref
+ }\hyper@anchorend
+ }%
+ \fi
+ \unhbox\@labels
+ \fi
+ \if@nobreak
+ \@nobreakfalse \clubpenalty\@M
+ \else
+ \clubpenalty\@clubpenalty \everypar{}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+% non \texttt{amsthm} case, remove final space on line before a theorem
+% for githib issue 11.
+% \begin{macrocode}
+{%
+\let\Hy@savedthm\@thm
+\def\@thm{\ifhmode\unskip\fi\Hy@savedthm}%
+}%
+}%
+}
+% \end{macrocode}
+%
+% \section{Footnotes}\label{footnotes}
+% The footnote mark is a hypertext link, and the text is a target.
+% We separately number the footnotes sequentially through the
+% text, separately from whatever labels the text assigns. Too hard
+% to keep track of markers otherwise. If the raw forms |\footnotemark|
+% and |\footnotetext| are used, force them to use un-hyper original.
+%
+% \begin{macrocode}
+\ifHy@hyperfootnotes
+ \newcounter{Hfootnote}%
+ \let\H@@footnotetext\@footnotetext
+ \let\H@@footnotemark\@footnotemark
+ \def\@xfootnotenext[#1]{%
+ \begingroup
+ \csname c@\@mpfn\endcsname #1\relax
+ \unrestored@protected@xdef\@thefnmark{\thempfn}%
+ \endgroup
+ \ifx\@footnotetext\@mpfootnotetext
+ \expandafter\H@@mpfootnotetext
+ \else
+ \expandafter\H@@footnotetext
+ \fi
+ }%
+ \def\@xfootnotemark[#1]{%
+ \begingroup
+ \c@footnote #1\relax
+ \unrestored@protected@xdef\@thefnmark{\thefootnote}%
+ \endgroup
+ \H@@footnotemark
+ }%
+ \let\H@@mpfootnotetext\@mpfootnotetext
+ \long\def\@mpfootnotetext#1{%
+ \H@@mpfootnotetext{%
+ \ifHy@nesting
+ \expandafter\ltx@firstoftwo
+ \else
+ \expandafter\ltx@secondoftwo
+ \fi
+ {%
+ \expandafter\hyper@@anchor\expandafter{%
+ \Hy@footnote@currentHref
+ }{\ignorespaces #1}%
+ }{%
+ \Hy@raisedlink{%
+ \expandafter\hyper@@anchor\expandafter{%
+ \Hy@footnote@currentHref
+ }{\relax}%
+ }\ignorespaces #1%
+ }%
+ }%
+ }%
+ \long\def\@footnotetext#1{%
+ \H@@footnotetext{%
+ \ifHy@nesting
+ \expandafter\ltx@firstoftwo
+ \else
+ \expandafter\ltx@secondoftwo
+ \fi
+ {%
+ \expandafter\hyper@@anchor\expandafter{%
+ \Hy@footnote@currentHref
+ }{\ignorespaces #1}%
+ }{%
+ \Hy@raisedlink{%
+ \expandafter\hyper@@anchor\expandafter{%
+ \Hy@footnote@currentHref
+ }{\relax}%
+ }%
+ \let\@currentHref\Hy@footnote@currentHref
+ \let\@currentlabelname\@empty
+ \ignorespaces #1%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% Redefine \verb+\@footnotemark+, borrowing its code (at the
+% cost of getting out of sync with latex.ltx), to take
+% advantage of its white space and hyphenation fudges. If we just
+% overload it, we can get variant documents (the word before the
+% footnote is treated differently). Thanks to David Carlisle and
+% Brian Ripley for confusing and helping me on this.
+% \begin{macrocode}
+ \def\@footnotemark{%
+ \leavevmode
+ \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
+ \stepcounter{Hfootnote}%
+ \global\let\Hy@saved@currentHref\@currentHref
+ \hyper@makecurrent{Hfootnote}%
+ \global\let\Hy@footnote@currentHref\@currentHref
+ \global\let\@currentHref\Hy@saved@currentHref
+ \hyper@linkstart{link}{\Hy@footnote@currentHref}%
+ \@makefnmark
+ \hyper@linkend
+ \ifhmode\spacefactor\@x@sf\fi
+ \relax
+ }%
+% \end{macrocode}
+%
+% Tabularx causes footnote problems, disable the linking if that is loaded.
+% Since v6.82i footnotes are only disabled inside the environment
+% `tabularx'.
+% \begin{macrocode}
+ \@ifpackageloaded{tabularx}{%
+ \let\HyOrg@TX@endtabularx\TX@endtabularx
+ \def\Hy@tabularx@hook{%
+ \let\@footnotetext\H@@footnotetext
+ \let\@footnotemark\H@@footnotemark
+ \let\@mpfootnotetext\H@@mpfootnotetext
+ }%
+ \begingroup
+ \toks@\expandafter{\TX@endtabularx}%
+ \xdef\Hy@gtemp{%
+ \noexpand\Hy@tabularx@hook
+ \the\toks@
+ }%
+ \endgroup
+ \let\TX@endtabularx\Hy@gtemp
+ }{}%
+% \end{macrocode}
+%
+% Support for footnotes in p columns of longtable.
+% Here \verb+\footnote+ commands are splitted into
+% \verb+\footnotemark+ and a call of \verb+\footnotetext+
+% with the optional argument, that is not supported
+% by hyperref. The result is a link by \verb+\footnotemark+
+% without valid anchor
+% \begin{macrocode}
+ \@ifpackageloaded{longtable}{%
+ \CheckCommand*{\LT@p@ftntext}[1]{%
+ \edef\@tempa{%
+ \the\LT@p@ftn
+ \noexpand\footnotetext[\the\c@footnote]%
+ }%
+ \global\LT@p@ftn\expandafter{\@tempa{#1}}%
+ }%
+ \long\def\LT@p@ftntext#1{%
+ \edef\@tempa{%
+ \the\LT@p@ftn
+ \begingroup
+ \noexpand\c@footnote=\the\c@footnote\relax
+ \noexpand\protected@xdef\noexpand\@thefnmark{%
+ \noexpand\thempfn
+ }%
+ \noexpand\Hy@LT@footnotetext{%
+ \Hy@footnote@currentHref
+ }%
+ }%
+ \global\LT@p@ftn\expandafter{%
+ \@tempa{#1}%
+ \endgroup
+ }%
+ }%
+ \long\def\Hy@LT@footnotetext#1#2{%
+ \H@@footnotetext{%
+ \ifHy@nesting
+ \hyper@@anchor{#1}{#2}%
+ \else
+ \Hy@raisedlink{%
+ \hyper@@anchor{#1}{\relax}%
+ }%
+ \def\@currentHref{#1}%
+ \let\@currentlabelname\@empty
+ #2%
+ \fi
+ }%
+ }%
+ }{}%
+% \end{macrocode}
+%
+% Footnotes for fancyvrb (Fix by Manuel P\'egouri\'e-Gonnard).
+% \begin{macrocode}
+ \@ifpackageloaded{fancyvrb}{%
+ \def\V@@footnotetext{%
+ \insert\footins\bgroup
+ \csname reset@font\endcsname
+ \footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth\dp\strutbox
+ \floatingpenalty \@MM
+ \hsize\columnwidth
+ \@parboxrestore
+ \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}%
+ \@makefntext{}%
+ \rule{\z@}{\footnotesep}%
+ \bgroup
+ \aftergroup\V@@@footnotetext
+ \Hy@raisedlink{%
+ \expandafter\hyper@@anchor\expandafter{%
+ \Hy@footnote@currentHref
+ }{\relax}%
+ }%
+ \let\@currentHref\Hy@footnote@currentHref
+ \let\@currentlabelname\@empty
+ \ignorespaces
+ }%
+ }{}%
+% \end{macrocode}
+%
+% KOMA-Script defines \cs{footref} that uses both
+% \cs{ref} and \cs{@footnotemark} resulting in two links,
+% one of them wrong.
+% \begin{macrocode}
+ \def\Hy@temp#1{%
+ \begingroup
+ \unrestored@protected@xdef\@thefnmark{\ref{#1}}%
+ \endgroup
+ \@footnotemark
+ }%
+ \ifx\Hy@temp\footref
+ \def\footref#1{%
+ \begingroup
+ \unrestored@protected@xdef\@thefnmark{\ref{#1}}%
+ \endgroup
+ \H@@footnotemark
+ }%
+ \fi
+% \end{macrocode}
+%
+% But the special footnotes
+% in |\maketitle| are much too hard to deal with
+% properly. Let them revert to plain behaviour.
+% The koma classes add an optional argument.
+% \begin{macrocode}
+ \let\HyOrg@maketitle\maketitle
+ \def\maketitle{%
+ \let\Hy@saved@footnotemark\@footnotemark
+ \let\Hy@saved@footnotetext\@footnotetext
+ \let\@footnotemark\H@@footnotemark
+ \let\@footnotetext\H@@footnotetext
+ \@ifnextchar[\Hy@maketitle@optarg{% ]
+ \HyOrg@maketitle
+ \Hy@maketitle@end
+ }%
+ }%
+ \def\Hy@maketitle@optarg[#1]{%
+ \HyOrg@maketitle[{#1}]%
+ \Hy@maketitle@end
+ }%
+ \def\Hy@maketitle@end{%
+ \ifx\@footnotemark\H@@footnotemark
+ \let\@footnotemark\Hy@saved@footnotemark
+ \fi
+ \ifx\@footnotetext\H@@footnotetext
+ \let\@footnotetext\Hy@saved@footnotetext
+ \fi
+ }%
+% \end{macrocode}
+% \begin{macro}{\realfootnote}
+% Does anyone remember the function and purpose of \cmd{\realfootnote}?
+% \begin{macrocode}
+ \def\realfootnote{%
+ \@ifnextchar[\@xfootnote{%
+ \stepcounter{\@mpfn}%
+ \protected@xdef\@thefnmark{\thempfn}%
+ \H@@footnotemark\H@@footnotetext
+ }%
+ }%
+% \end{macrocode}
+% \begin{macrocode}
+\fi
+\Hy@DisableOption{hyperfootnotes}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+%<*check>
+\checklatex
+\checkcommand\def\@xfootnotenext[#1]{%
+ \begingroup
+ \csname c@\@mpfn\endcsname #1\relax
+ \unrestored@protected@xdef\@thefnmark{\thempfn}%
+ \endgroup
+ \@footnotetext
+}
+\checkcommand\def\@xfootnotemark[#1]{%
+ \begingroup
+ \c@footnote #1\relax
+ \unrestored@protected@xdef\@thefnmark{\thefootnote}%
+ \endgroup
+ \@footnotemark
+}
+\checkcommand\def\@footnotemark{%
+ \leavevmode
+ \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
+ \@makefnmark
+ \ifhmode\spacefactor\@x@sf\fi
+ \relax
+}
+%</check>
+%<*package>
+% \end{macrocode}
+%
+% \section{Float captions}\label{captions}
+% Make the float caption the hypertext anchor; curiously enough,
+% we can't just copy the definition of |\@caption|. Its all to do
+% with expansion. It screws up. Sigh.
+% \begin{macrocode}
+\def\caption{%
+ \ifx\@captype\@undefined
+ \@latex@error{\noexpand\caption outside float}\@ehd
+ \expandafter\@gobble
+ \else
+ \H@refstepcounter\@captype
+ \let\Hy@tempa\@caption
+ \@ifundefined{float@caption}{%
+ }{%
+ \expandafter\ifx\csname @float@c@\@captype\endcsname
+ \float@caption
+ \let\Hy@tempa\Hy@float@caption
+ \fi
+ }%
+ \expandafter\@firstofone
+ \fi
+ {\@dblarg{\Hy@tempa\@captype}}%
+}
+\long\def\@caption#1[#2]#3{%
+ \expandafter\ifx\csname if@capstart\expandafter\endcsname
+ \csname iftrue\endcsname
+ \global\let\@currentHref\hc@currentHref
+ \else
+ \hyper@makecurrent{\@captype}%
+ \fi
+ \@ifundefined{NR@gettitle}{%
+ \def\@currentlabelname{#2}%
+ }{%
+ \NR@gettitle{#2}%
+ }%
+ \par\addcontentsline{\csname ext@#1\endcsname}{#1}{%
+ \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}%
+ }%
+ \begingroup
+ \@parboxrestore
+ \if@minipage
+ \@setminipage
+ \fi
+ \normalsize
+ \expandafter\ifx\csname if@capstart\expandafter\endcsname
+ \csname iftrue\endcsname
+ \global\@capstartfalse
+ \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces#3}%
+ \else
+ \@makecaption{\csname fnum@#1\endcsname}{%
+ \ignorespaces
+% \end{macrocode}
+% If we cannot have nesting, the anchor is empty.
+% \begin{macrocode}
+ \ifHy@nesting
+ \expandafter\hyper@@anchor\expandafter{\@currentHref}{#3}%
+ \else
+ \Hy@raisedlink{%
+ \expandafter\hyper@@anchor\expandafter{%
+ \@currentHref
+ }{\relax}%
+ }%
+ #3%
+ \fi
+ }%
+ \fi
+ \par
+ \endgroup
+}
+% \end{macrocode}
+% Compatibility with float.sty: anchor setting at the top
+% of the float, if the float is controlled by float.sty.
+% Several \verb|\caption| commands inside one float are
+% not supported.
+%
+% \cs{HyNew@float@makebox} is introduced as feature request
+% of Axel Sommerfeldt to make the life easier for his
+% package `caption'.
+% \begin{macrocode}
+\let\Hy@float@caption\@caption
+\newcommand{\HyNew@float@makebox}[1]{%
+ \HyOrg@float@makebox{%
+ #1\relax
+ \ifx\Hy@float@currentHref\@undefined
+ \else
+ \expandafter\hyper@@anchor\expandafter{%
+ \Hy@float@currentHref
+ }{\relax}%
+ \global\let\Hy@float@currentHref\@undefined
+ \fi
+ }%
+}%
+\@ifpackageloaded{float}{%
+ \def\Hy@float@caption{%
+ \ifx\Hy@float@currentHref\@undefined
+ \hyper@makecurrent{\@captype}%
+ \global\let\Hy@float@currentHref\@currentHref
+ \else
+ \let\@currentHref\Hy@float@currentHref
+ \fi
+ \float@caption
+ }%
+ \let\HyOrg@float@makebox\float@makebox
+ \let\float@makebox\HyNew@float@makebox
+}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+%<*check>
+\checklatex[1999/06/01 - 2000/06/01]
+\checkcommand\def\caption{%
+ \ifx\@captype\@undefined
+ \@latex@error{\noexpand\caption outside float}\@ehd
+ \expandafter\@gobble
+ \else
+ \refstepcounter\@captype
+ \expandafter\@firstofone
+ \fi
+ {\@dblarg{\@caption\@captype}}%
+}
+\checkcommand\long\def\@caption#1[#2]#3{%
+ \par
+ \addcontentsline{\csname ext@#1\endcsname}{#1}{%
+ \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}%
+ }%
+ \begingroup
+ \@parboxrestore
+ \if@minipage
+ \@setminipage
+ \fi
+ \normalsize
+ \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \endgroup
+}
+%</check>
+%<*package>
+% \end{macrocode}
+%
+% \section{Bibliographic references}\label{bib}
+% This is not very robust, since many styles redefine these things.
+% The package used to redefine |\@citex| and the like; then we tried
+% adding the hyperref call explicitly into the .aux file.
+% Now we redefine |\bibcite|; this still breaks some citation packages
+% so we have to work around them. But this remains extremely dangerous.
+% Any or all of \emph{achemso}
+% and \emph{drftcite} may break.
+%
+% However, lets make an attempt to get \emph{natbib} right, because
+% thats a powerful, important package.
+% Patrick Daly (\Email{daly@linmpi.mpg.de}) has
+% provided hooks for us, so all we need to do is activate them.
+% \begin{macrocode}
+\def\hyper@natlinkstart#1{%
+ \Hy@backout{#1}%
+ \hyper@linkstart{cite}{cite.#1}%
+ \def\hyper@nat@current{#1}%
+}
+\def\hyper@natlinkend{%
+ \hyper@linkend
+}
+\def\hyper@natlinkbreak#1#2{%
+ \hyper@linkend#1\hyper@linkstart{cite}{cite.#2}%
+}
+\def\hyper@natanchorstart#1{%
+ \Hy@raisedlink{\hyper@anchorstart{cite.#1}}%
+}
+\def\hyper@natanchorend{\hyper@anchorend}
+% \end{macrocode}
+% Do not play games if we have natbib support.
+% Macro \@extra@binfo added for chapterbib support. Chapterbib also
+% wants \cs{@extra@binfo} in the hyper-link, but since the link tag is
+% not expanded immediately, we use \cs{@extra@b@citeb}, so cites in a
+% chapter will link to the bibliography in that chapter.
+% \begin{macrocode}
+\ltx@IfUndefined{NAT@parse}{%
+ \providecommand*\@extra@binfo{}%
+ \providecommand*\@extra@b@citeb{}%
+ \def\bibcite#1#2{%
+ \@newl@bel{b}{#1\@extra@binfo}{%
+ \hyper@@link[cite]{}{cite.#1\@extra@b@citeb}{#2}%
+ }%
+ }%
+ \gdef\@extra@binfo{}%
+% \end{macrocode}
+% Package |babel| redefines \cmd{\bibcite} with
+% macro \cmd{\bbl@cite@choice}. It needs to be overwritten
+% to avoid the warning ``Label(s) may have changed.''.
+% \begin{macrocode}
+ \let\Hy@bibcite\bibcite
+ \begingroup
+ \@ifundefined{bbl@cite@choice}{}{%
+ \g@addto@macro\bbl@cite@choice{%
+ \let\bibcite\Hy@bibcite
+ }%
+ }%
+ \endgroup
+% \end{macrocode}
+% |\@BIBLABEL| is working around a `feature' of Rev\TeX.
+% \begin{macrocode}
+ \providecommand*{\@BIBLABEL}{\@biblabel}%
+ \def\@lbibitem[#1]#2{%
+ \@skiphyperreftrue
+ \H@item[%
+ \ifx\Hy@raisedlink\@empty
+ \hyper@anchorstart{cite.#2\@extra@b@citeb}%
+ \@BIBLABEL{#1}%
+ \hyper@anchorend
+ \else
+ \Hy@raisedlink{%
+ \hyper@anchorstart{cite.#2\@extra@b@citeb}\hyper@anchorend
+ }%
+ \@BIBLABEL{#1}%
+ \fi
+ \hfill
+ ]%
+ \@skiphyperreffalse
+ \if@filesw
+ \begingroup
+ \let\protect\noexpand
+ \immediate\write\@auxout{%
+ \string\bibcite{#2}{#1}%
+ }%
+ \endgroup
+ \fi
+ \ignorespaces
+ }%
+% \end{macrocode}
+% Since |\bibitem| is doing its own labelling, call the raw
+% version of |\item|, to avoid extra spurious labels
+% \begin{macrocode}
+ \def\@bibitem#1{%
+ \@skiphyperreftrue\H@item\@skiphyperreffalse
+ \Hy@raisedlink{%
+ \hyper@anchorstart{cite.#1\@extra@b@citeb}\relax\hyper@anchorend
+ }%
+ \if@filesw
+ \begingroup
+ \let\protect\noexpand
+ \immediate\write\@auxout{%
+ \string\bibcite{#1}{\the\value{\@listctr}}%
+ }%
+ \endgroup
+ \fi
+ \ignorespaces
+ }%
+}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+%<*check>
+\checklatex
+\checkcommand\def\@lbibitem[#1]#2{%
+ \item[\@biblabel{#1}\hfill]%
+ \if@filesw
+ {%
+ \let\protect\noexpand
+ \immediate\write\@auxout{%
+ \string\bibcite{#2}{#1}%
+ }%
+ }%
+ \fi
+ \ignorespaces
+}
+\checkcommand\def\@bibitem#1{%
+ \item
+ \if@filesw
+ \immediate\write\@auxout{%
+ \string\bibcite{#1}{\the\value{\@listctr}}%
+ }%
+ \fi
+ \ignorespaces
+}
+%</check>
+%<*package>
+% \end{macrocode}
+%
+% Revtex (bless its little heart) takes over |\bibcite| and looks
+% at the result to measure something. Make this a hypertext link
+% and it goes ape. Therefore, make an anodyne result first, call
+% its business, then go back to the real thing.
+% \begin{macrocode}
+\@ifclassloaded{revtex}{%
+ \Hy@Info{*** compatibility with revtex **** }%
+ \def\revtex@checking#1#2{%
+ \expandafter\let\expandafter\T@temp\csname b@#1\endcsname
+ \expandafter\def\csname b@#1\endcsname{#2}%
+ \@SetMaxRnhefLabel{#1}%
+ \expandafter\let\csname b@#1\endcsname\T@temp
+ }%
+% \end{macrocode}
+% Tanmoy provided this replacement for CITEX. Lord knows what it does.
+% For chapterbib added: \@extra@b@citeb
+% \begin{macrocode}
+ \@ifundefined{@CITE}{\def\@CITE{\@cite}}{}%
+ \providecommand*{\@extra@b@citeb}{}%
+ \def\@CITEX[#1]#2{%
+ \let\@citea\@empty
+ \leavevmode
+ \unskip
+ $^{%
+ \scriptstyle
+ \@CITE{%
+ \@for\@citeb:=#2\do{%
+ \@citea
+ \def\@citea{,\penalty\@m\ }%
+ \edef\@citeb{\expandafter\@firstofone\@citeb}%
+ \if@filesw
+ \immediate\write\@auxout{\string\citation{\@citeb}}%
+ \fi
+ \@ifundefined{b@\@citeb\extra@b@citeb}{%
+ \mbox{\reset@font\bfseries ?}%
+ \G@refundefinedtrue
+ \@latex@warning{%
+ Citation `\@citeb' on page \thepage \space undefined%
+ }%
+ }{%
+ {\csname b@\@citeb\@extra@b@citeb\endcsname}%
+ }%
+ }%
+ }{#1}%
+ }$%
+ }%
+% \end{macrocode}
+% No, life is too short. I am not going to understand the
+% Revtex |\@collapse| macro, I shall
+% just restore the original behaviour of |\@citex|;
+% sigh. This is SO vile.
+% \begin{macrocode}
+ \def\@citex[#1]#2{%
+ \let\@citea\@empty
+ \@cite{%
+ \@for\@citeb:=#2\do{%
+ \@citea
+ \def\@citea{,\penalty\@m\ }%
+ \edef\@citeb{\expandafter\@firstofone\@citeb}%
+ \if@filesw
+ \immediate\write\@auxout{\string\citation{\@citeb}}%
+ \fi
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{%
+ \mbox{\reset@font\bfseries ?}%
+ \G@refundefinedtrue
+ \@latex@warning{%
+ Citation `\@citeb' on page \thepage \space undefined%
+ }%
+ }{%
+ \hbox{\csname b@\@citeb\@extra@b@citeb\endcsname}%
+ }%
+ }%
+ }{#1}%
+ }%
+}{}
+% \end{macrocode}
+%
+% \subsection{Package harvard}
+%
+% Override Peter Williams' Harvard package; we have to
+% a) make each of the citation types into a link; b) make
+% each citation write a backref entry, and c) kick off a backreference
+% section for each bibliography entry.
+%
+% The redefinitions have to be deferred to |\begin{document}|,
+% because if harvard.sty is loaded and html.sty is present and
+% detects pdf\TeX, then hyperref is already loaded at the begin
+% of harvard.sty, and the |\newcommand| macros causes error
+% messages.
+% \begin{macrocode}
+\@ifpackageloaded{harvard}{%
+ \Hy@AtBeginDocument{%
+ \Hy@Info{*** compatibility with harvard **** }%
+ \Hy@raiselinksfalse
+ \def\harvardcite#1#2#3#4{%
+ \global\@namedef{HAR@fn@#1}{\hyper@@link[cite]{}{cite.#1}{#2}}%
+ \global\@namedef{HAR@an@#1}{\hyper@@link[cite]{}{cite.#1}{#3}}%
+ \global\@namedef{HAR@yr@#1}{\hyper@@link[cite]{}{cite.#1}{#4}}%
+ \global\@namedef{HAR@df@#1}{\csname HAR@fn@#1\endcsname}%
+ }%
+ \def\HAR@citetoaux#1{%
+ \if@filesw\immediate\write\@auxout{\string\citation{#1}}\fi%
+ \ifHy@backref
+ \ifx\@empty\@currentlabel
+ \else
+ \@bsphack
+ \if@filesw
+ \protected@write\@auxout{}{%
+ \string\@writefile{brf}{%
+ \string\backcite{#1}{%
+ {\thepage}{\@currentlabel}{\@currentHref}%
+ }%
+ }%
+ }%
+ \fi
+ \@esphack
+ \fi
+ \fi
+ }%
+ \def\harvarditem{%
+ \@ifnextchar[{\@harvarditem}{\@harvarditem[\null]}%
+ }%
+ \def\@harvarditem[#1]#2#3#4#5\par{%
+ \item[]%
+ \hyper@anchorstart{cite.#4}\relax\hyper@anchorend
+ \if@filesw
+ \begingroup
+ \def\protect##1{\string ##1\space}%
+ \ifthenelse{\equal{#1}{\null}}%
+ {\def\next{{#4}{#2}{#2}{#3}}}%
+ {\def\next{{#4}{#2}{#1}{#3}}}%
+ \immediate\write\@auxout{\string\harvardcite\codeof\next}%
+ \endgroup
+ \fi
+ \protect\hspace*{-\labelwidth}%
+ \protect\hspace*{-\labelsep}%
+ \ignorespaces
+ #5%
+ \ifHy@backref
+ \newblock
+ \backref{\csname br@#4\endcsname}%
+ \fi
+ \par
+ }%
+% \end{macrocode}
+% \begin{macro}{\HAR@checkcitations}
+% Package hyperref has added \cmd{\hyper@@link}, so
+% the original test \cmd{\HAR@checkcitations} will
+% fail every time and always will appear the ``Changed
+% labels'' warning. So we have to redefine
+% \cmd{\Har@checkcitations}:
+% \begin{macrocode}
+ \long\def\HAR@checkcitations#1#2#3#4{%
+ \def\HAR@tempa{\hyper@@link[cite]{}{cite.#1}{#2}}%
+ \expandafter\ifx\csname HAR@fn@#1\endcsname\HAR@tempa
+ \def\HAR@tempa{\hyper@@link[cite]{}{cite.#1}{#3}}%
+ \expandafter\ifx\csname HAR@an@#1\endcsname\HAR@tempa
+ \def\HAR@tempa{\hyper@@link[cite]{}{cite.#1}{#4}}%
+ \expandafter\ifx\csname HAR@yr@#1\endcsname\HAR@tempa
+ \else
+ \@tempswatrue
+ \fi
+ \else
+ \@tempswatrue
+ \fi
+ \else
+ \@tempswatrue
+ \fi
+ }%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+}{}
+% \end{macrocode}
+%
+% \subsection{Package chicago}
+% The links by \cmd{\citeN} and \cmd{\shortciteN} should
+% include the closing parentheses.
+%
+% \begin{macrocode}
+\@ifpackageloaded{chicago}{%
+% \end{macrocode}
+% \begin{macro}{\citeN}
+% \begin{macrocode}
+ \def\citeN{%
+ \def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1}%
+ \def\citeauthoryear##1##2##3{##1 (##3\@cite@opt)}%
+ \@citedata@opt
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\shortciteN}
+% \begin{macrocode}
+ \def\shortciteN{%
+ \def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1}%
+ \def\citeauthoryear##1##2##3{##2 (##3\@cite@opt)}%
+ \@citedata@opt
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@citedata@opt}
+% \begin{macrocode}
+ \def\@citedata@opt{%
+ \let\@cite@opt\@empty
+ \@ifnextchar [{%
+ \@tempswatrue
+ \@citedatax@opt
+ }{%
+ \@tempswafalse
+ \@citedatax[]%
+ }%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@citedatax@opt}
+% \begin{macrocode}
+ \def\@citedatax@opt[#1]{%
+ \def\@cite@opt{, #1}%
+ \@citedatax[{#1}]%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+}{}
+% \end{macrocode}
+%
+% \section{Page numbers}\label{pagenum}
+%
+% The last page should not contain a /Dur key, because there
+% is no page after the last page. Therefore at the last page
+% there should be a command |\hypersetup{pdfpageduration={}}|.
+% This can be set with \cmd{\AtEndDocument}, but it can
+% be too late, if the last page is already finished, or too
+% early, if lots of float pages will follow.
+% Therefore currently nothing is done by hyperref.
+%
+% This where we supply a destination for each page.
+% \begin{macrocode}
+\ltx@ifclassloaded{slides}{%
+ \def\Hy@SlidesFormatOptionalPage#1{(#1)}%
+ \def\Hy@PageAnchorSlidesPlain{%
+ \advance\c@page\ltx@one
+ \edef\Hy@TempPageAnchor{%
+ \noexpand\hyper@@anchor{%
+ page.\the\c@slide.\the\c@overlay.\the\c@note%
+ \ifnum\c@page=\ltx@one
+ \else
+ .\the\c@page
+ \fi
+ }%
+ }%
+ \advance\c@page-\ltx@one
+ }%
+ \def\Hy@PageAnchorSlide{%
+ \advance\c@page\ltx@one
+ \ifnum\c@page>\ltx@one
+ \ltx@IfUndefined{theHpage}{%
+ \protected@edef\Hy@TheSlideOptionalPage{%
+ \Hy@SlidesFormatOptionalPage{\thepage}%
+ }%
+ }{%
+ \protected@edef\Hy@TheSlideOptionalPage{%
+ \Hy@SlidesFormatOptionalPage{\theHpage}%
+ }%
+ }%
+ \else
+ \def\Hy@TheSlideOptionalPage{}%
+ \fi
+ \advance\c@page-\ltx@one
+ \pdfstringdef\@the@H@page{%
+ \csname
+ the%
+ \ltx@ifundefined{theH\Hy@SlidesPage}{}{H}%
+ \Hy@SlidesPage
+ \endcsname
+ \Hy@TheSlideOptionalPage
+ }%
+ \ltx@gobblethree
+ }%
+ \def\Hy@SlidesPage{slide}%
+ \g@addto@macro\slide{%
+ \def\Hy@SlidesPage{slide}%
+ }%
+ \g@addto@macro\overlay{%
+ \def\Hy@SlidesPage{overlay}%
+ }%
+ \g@addto@macro\note{%
+ \def\Hy@SlidesPage{note}%
+ }%
+}{%
+ \def\Hy@PageAnchorSlidesPlain{}%
+ \def\Hy@PageAnchorSlide{}%
+}
+\def\Hy@EveryPageAnchor{%
+ \Hy@DistillerDestFix
+ \ifHy@pageanchor
+ \ifHy@hypertexnames
+ \ifHy@plainpages
+ \def\Hy@TempPageAnchor{\hyper@@anchor{page.\the\c@page}}%
+ \Hy@PageAnchorSlidesPlain
+ \else
+ \begingroup
+ \let\@number\@firstofone
+ \Hy@unicodefalse
+ \Hy@PageAnchorSlide
+ \pdfstringdef\@the@H@page{\thepage}%
+ \endgroup
+ \EdefUnescapeString\@the@H@page{\@the@H@page}%
+ \def\Hy@TempPageAnchor{\hyper@@anchor{page.\@the@H@page}}%
+ \fi
+ \else
+ \Hy@GlobalStepCount\Hy@pagecounter
+ \def\Hy@TempPageAnchor{%
+ \hyper@@anchor{page.\the\Hy@pagecounter}%
+ }%
+ \fi
+ \vbox to 0pt{%
+ \kern\voffset
+ \kern\topmargin
+ \kern-1bp\relax
+ \hbox to 0pt{%
+ \kern\hoffset
+ \kern\ifodd\value{page}%
+ \oddsidemargin
+ \else
+ \evensidemargin
+ \fi
+ \kern-1bp\relax
+ \Hy@TempPageAnchor\relax
+ \hss
+ }%
+ \vss
+ }%
+ \fi
+}
+\g@addto@macro\Hy@EveryPageBoxHook{%
+ \Hy@EveryPageAnchor
+}
+% \end{macrocode}
+%
+% \section{Table of contents}\label{toc}
+% TV Raman noticed that people who add arbitrary material into the TOC
+% generate a bad or null link. We avoid that by checking if the current
+% destination is empty. But if `the most recent destination' is not
+% what you expect, you will be in trouble.
+% \begin{macrocode}
+% In newer \LaTeX\ releases this is defined to put a \verb|%| at the end of the
+% line in the \textt{toc}file.
+% \begin{macrocode}
+\providecommand\protected@file@percent{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\addcontentsline#1#2#3{% toc extension, type, tag
+ \begingroup
+ \let\label\@gobble
+ \ifx\@currentHref\@empty
+ \Hy@Warning{%
+ No destination for bookmark of \string\addcontentsline,%
+ \MessageBreak destination is added%
+ }%
+ \phantomsection
+ \fi
+ \expandafter\ifx\csname toclevel@#2\endcsname\relax
+ \begingroup
+ \def\Hy@tempa{#1}%
+ \ifx\Hy@tempa\Hy@bookmarkstype
+ \Hy@WarningNoLine{%
+ bookmark level for unknown #2 defaults to 0%
+ }%
+ \else
+ \Hy@Info{bookmark level for unknown #2 defaults to 0}%
+ \fi
+ \endgroup
+ \expandafter\gdef\csname toclevel@#2\endcsname{0}%
+ \fi
+ \edef\Hy@toclevel{\csname toclevel@#2\endcsname}%
+ \Hy@writebookmark{\csname the#2\endcsname}%
+ {#3}%
+ {\@currentHref}%
+ {\Hy@toclevel}%
+ {#1}%
+ \ifHy@verbose
+ \begingroup
+ \def\Hy@tempa{#3}%
+ \@onelevel@sanitize\Hy@tempa
+ \let\temp@online\on@line
+ \let\on@line\@empty
+ \Hy@Info{%
+ bookmark\temp@online:\MessageBreak
+ thecounter {\csname the#2\endcsname}\MessageBreak
+ text {\Hy@tempa}\MessageBreak
+ reference {\@currentHref}\MessageBreak
+ toclevel {\Hy@toclevel}\MessageBreak
+ type {#1}%
+ }%
+ \endgroup
+ \fi
+ \addtocontents{#1}{%
+ \protect\contentsline{#2}{#3}{\thepage}{\@currentHref}\protected@file@percent
+ }%
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\contentsline}
+% The page number might be empty. In this case the link for the
+% page number is suppressed to avoid little link boxes.
+% \begin{macrocode}
+\def\contentsline#1#2#3#4{%
+ \begingroup
+ \Hy@safe@activestrue
+ \edef\x{\endgroup
+ \def\noexpand\Hy@tocdestname{#4}%
+ }\x
+ \ifx\Hy@tocdestname\ltx@empty
+ \csname l@#1\endcsname{#2}{#3}%
+ \else
+ \ifcase\Hy@linktoc % none
+ \csname l@#1\endcsname{#2}{#3}%
+ \or % section
+ \csname l@#1\endcsname{%
+ \hyper@linkstart{link}{\Hy@tocdestname}{#2}\hyper@linkend
+ }{#3}%
+ \or % page
+ \def\Hy@temp{#3}%
+ \ifx\Hy@temp\ltx@empty
+ \csname l@#1\endcsname{#2}{#3}%
+ \else
+ \csname l@#1\endcsname{{#2}}{%
+ \hyper@linkstart{link}{\Hy@tocdestname}{#3}\hyper@linkend
+ }%
+ \fi
+ \else % all
+ \def\Hy@temp{#3}%
+ \ifx\Hy@temp\ltx@empty
+ \csname l@#1\endcsname{%
+ \hyper@linkstart{link}{\Hy@tocdestname}{#2}\hyper@linkend
+ }{}%
+ \else
+ \csname l@#1\endcsname{%
+ \hyper@linkstart{link}{\Hy@tocdestname}{#2}\hyper@linkend
+ }{%
+ \hyper@linkstart{link}{\Hy@tocdestname}{#3}\hyper@linkend
+ }%
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+%<*check>
+\checklatex
+\checkcommand\def\addcontentsline#1#2#3{%
+ \addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}}%
+}
+\checkcommand\def\contentsline#1{\csname l@#1\endcsname}
+%</check>
+%<*package>
+% \end{macrocode}
+%
+% \section{New counters}\label{counters}
+% The whole theorem business makes up new counters on the fly;
+% we are going to intercept this. Sigh. Do it at the level where
+% new counters are defined.
+% \begin{macrocode}
+\let\H@definecounter\@definecounter
+\def\@definecounter#1{%
+ \H@definecounter{#1}%
+ \expandafter\gdef\csname theH#1\endcsname{\arabic{#1}}%
+}
+% \end{macrocode}
+% But what if they have used the optional argument to e.g. |\newtheorem|
+% to determine when the numbering is reset? OK, we'll trap that too.
+% \begin{macrocode}
+\let\H@newctr\@newctr
+\def\@newctr#1[#2]{%
+ \H@newctr#1[{#2}]%
+ \expandafter\gdef\csname theH#1\endcsname{%
+ \csname the\@ifundefined{theH#2}{}{H}#2\endcsname.\arabic{#1}%
+ }%
+}
+% \end{macrocode}
+% \section{AMS\LaTeX\ compatibility}\label{ams}
+% Oh, no, they don't use anything as simple as |\refstepcounter|
+% in the AMS! We need to intercept some low-level operations
+% of theirs. Damned if we are going to try and work out what
+% they get up to. Just stick a label of `AMS' on the front, and use the
+% label \emph{they} worked out. If that produces something invalid, I give
+% up. They'll change all the code again anyway, I expect (SR).
+%
+% Version 6.77p uses a patch by Ross Moore.
+% \begin{macrocode}
+\@ifpackageloaded{amsmath}{%
+ \def\Hy@make@anchor{%
+ \Hy@MakeCurrentHrefAuto{AMS}%
+ \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
+ }%
+ \def\Hy@make@df@tag@@#1{%
+ \gdef\df@tag{%
+ \maketag@@@{\Hy@make@anchor#1}%
+ \def\@currentlabel{#1}%
+ }%
+ }%
+ \def\Hy@make@df@tag@@@#1{%
+ \gdef\df@tag{%
+ \tagform@{\Hy@make@anchor#1}%
+ \toks@\@xp{\p@equation{#1}}%
+ \edef\@currentlabel{\the\toks@}%
+ }%
+ }%
+ \let\HyOrg@make@df@tag@@\make@df@tag@@
+ \let\HyOrg@make@df@tag@@@\make@df@tag@@@
+ \let\make@df@tag@@\Hy@make@df@tag@@
+ \let\make@df@tag@@@\Hy@make@df@tag@@@
+}{}
+% \end{macrocode}
+% Only play with |\seteqlebal| if we are using pdftex. Other drivers
+% cause problems; requested by Michael Downes (AMS).
+% \begin{macrocode}
+\@ifpackagewith{hyperref}{pdftex}{%
+ \let\H@seteqlabel\@seteqlabel
+ \def\@seteqlabel#1{%
+ \H@seteqlabel{#1}%
+ \xdef\@currentHref{AMS.\the\Hy@linkcounter}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ }%
+}{}
+% \end{macrocode}
+% This code I simply cannot remember what I was trying to achieve.
+% The final result seems to do nothing anyway.
+%\begin{verbatim}
+%\let\H@tagform@\tagform@
+%\def\tagform@#1{%
+% \maketag@@@{\hyper@@anchor{\@currentHref}%
+% {(\ignorespaces#1\unskip)}}%
+%}
+%\def\eqref#1{\textup{\H@tagform@{\ref{#1}}}}
+%\end{verbatim}
+%
+% \subsection{\texorpdfstring{\cs{@addtoreset}}{\\@addtoreset} and
+% \texorpdfstring{\cs{numberwithin}}{\\numberwithin} patches}
+%
+% \cs{@addtoreset} puts a counter to the reset list of
+% another counter. After a reset the counter starts
+% again with perhaps already used values. Therefore
+% the hyperref version of the counter print command
+% \cs{theHcounter} is redefined in order to add the
+% parent counter.
+% \begin{macrocode}
+\let\HyOrg@addtoreset\@addtoreset
+\def\@addtoreset#1#2{%
+ \HyOrg@addtoreset{#1}{#2}%
+ \expandafter\xdef\csname theH#1\endcsname{%
+ \expandafter\noexpand
+ \csname the\@ifundefined{theH#2}{}H#2\endcsname
+ .\noexpand\the\noexpand\value{#1}%
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\numberwithin}
+% A appropiate definition of hyperref's companion counter
+% (\cmd{\theH...}) is added for correct link names.
+% \begin{macrocode}
+%</package>
+%<*check>
+\checkpackage{amsmath}[1999/12/14 - 2000/06/06]
+\checkcommand\newcommand{\numberwithin}[3][\arabic]{%
+ \@ifundefined{c@#2}{\@nocounterr{#2}}{%
+ \@ifundefined{c@#3}{\@nocnterr{#3}}{%
+ \@addtoreset{#2}{#3}%
+ \@xp\xdef\csname the#2\endcsname{%
+ \@xp\@nx\csname the#3\endcsname .\@nx#1{#2}%
+ }%
+ }%
+ }%
+}%
+%</check>
+%<*package>
+\@ifpackageloaded{amsmath}{%
+ \@ifpackagelater{amsmath}{1999/12/14}{%
+ \renewcommand*{\numberwithin}[3][\arabic]{%
+ \@ifundefined{c@#2}{\@nocounterr{#2}}{%
+ \@ifundefined{c@#3}{\@nocnterr{#3}}{%
+ \HyOrg@addtoreset{#2}{#3}%
+ \@xp\xdef\csname the#2\endcsname{%
+ \@xp\@nx\csname the#3\endcsname .\@nx#1{#2}%
+ }%
+ \@xp\xdef\csname theH#2\endcsname{%
+ \@xp\@nx
+ \csname the\@ifundefined{theH#3}{}H#3\endcsname
+ .\@nx#1{#2}%
+ }%
+ }%
+ }%
+ }%
+ }{%
+ \Hy@WarningNoLine{%
+ \string\numberwithin\space of package `amsmath' %
+ only fixed\MessageBreak
+ for version 2000/06/06 v2.12 or newer%
+ }%
+ }%
+}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Included figures}
+% Simply intercept the low level graphics package macro.
+% \begin{macrocode}
+\ifHy@hyperfigures
+ \let\Hy@Gin@setfile\Gin@setfile
+ \def\Gin@setfile#1#2#3{%
+ \hyperimage{#3}{\Hy@Gin@setfile{#1}{#2}{#3}}%
+ }%
+\fi
+\Hy@DisableOption{hyperfigures}
+% \end{macrocode}
+%
+% \section{hyperindex entries}\label{hyperindex}
+% Internal command names are prefixed with \cmd{\HyInd@}.
+%
+% Hyper-indexing works crudely, by forcing code onto the end of the index
+% entry with the \verb+|+ feature; this puts a hyperlink around
+% the printed page numbers. It will not proceed if the author has already
+% used the \verb+|+ specifier for something like emboldening entries.
+% That would make Makeindex fail (cannot have two \verb+|+ specifiers).
+% The solution is for the author to use generic coding, and put in
+% the requisite |\hyperpage| in his/her own macros along with the boldness.
+%
+% This section is poor stuff; it's open to all sorts of abuse. Sensible
+% large projects will design their own indexing macros any bypass this.
+% \begin{macrocode}
+\ifHy@hyperindex
+ \def\HyInd@ParenLeft{(}%
+ \def\HyInd@ParenRight{)}%
+ \def\hyperindexformat#1#2{%
+ \let\HyOrg@hyperpage\hyperpage
+ \let\hyperpage\@firstofone
+ #1{\HyOrg@hyperpage{#2}}%
+ \let\hyperpage\HyOrg@hyperpage
+ }%
+ \Hy@nextfalse
+ \@ifpackageloaded{multind}{\Hy@nexttrue}{}%
+ \@ifpackageloaded{index}{\Hy@nexttrue}{}%
+ \@ifpackageloaded{amsmidx}{\Hy@nexttrue}{}%
+ \begingroup
+ \lccode`\|=\expandafter`\HyInd@EncapChar\relax
+ \lccode`\/=`\\\relax
+ \lowercase{\endgroup
+ \ifHy@next
+ \let\HyInd@org@wrindex\@wrindex
+ \def\@wrindex#1#2{\HyInd@@wrindex{#1}#2||\\}%
+ \def\HyInd@@wrindex#1#2|#3|#4\\{%
+ \ifx\\#3\\%
+ \HyInd@org@wrindex{#1}{#2|hyperpage}%
+ \else
+ \HyInd@@@wrindex{#1}{#2}#3\\%
+ \fi
+ }%
+ \def\HyInd@@@wrindex#1#2#3#4\\{%
+ \def\Hy@temp@A{#3}%
+ \ifcase0\ifx\Hy@temp@A\HyInd@ParenLeft 1\fi
+ \ifx\Hy@temp@A\HyInd@ParenRight 1\fi
+ \relax
+ \HyInd@org@wrindex{#1}{%
+ #2|hyperindexformat{/#3#4}%
+ }%
+ \else
+ \ifx\\#4\\%
+ \ifx\Hy@temp@A\HyInd@ParenRight
+ \HyInd@org@wrindex{#1}{#2|#3}%
+ \else
+ \HyInd@org@wrindex{#1}{#2|#3hyperpage}%
+ \fi
+ \else
+ \HyInd@org@wrindex{#1}{%
+ #2|#3hyperindexformat{/#4}%
+ }%
+ \fi
+ \fi
+ }%
+ \else
+ \def\@wrindex#1{\@@wrindex#1||\\}%
+ \def\@@wrindex#1|#2|#3\\{%
+ \if@filesw
+ \ifx\\#2\\%
+ \protected@write\@indexfile{}{%
+ \string\indexentry{#1|hyperpage}{\thepage}%
+ }%
+ \else
+ \HyInd@@@wrindex{#1}#2\\%
+ \fi
+ \fi
+ \endgroup
+ \@esphack
+ }%
+ \def\HyInd@@@wrindex#1#2#3\\{%
+ \def\Hy@temp@A{#2}%
+ \ifcase0\ifx\Hy@temp@A\HyInd@ParenLeft 1\fi
+ \ifx\Hy@temp@A\HyInd@ParenRight 1\fi
+ \relax
+ \protected@write\@indexfile{}{%
+ \string\indexentry{%
+ #1|hyperindexformat{/#2#3}%
+ }{\thepage}%
+ }%
+ \else
+ \ifx\\#3\\%
+ \ifx\Hy@temp@A\HyInd@ParenRight
+ \HyInd@DefKey{#1}%
+ \ltx@IfUndefined{HyInd@(\HyInd@key)}{%
+ \let\Hy@temp\ltx@empty
+ }{%
+ \expandafter\let\expandafter\Hy@temp
+ \csname HyInd@(\HyInd@key)\endcsname
+ }%
+ \protected@write\@indexfile{}{%
+ \string\indexentry{#1|#2\Hy@temp}{\thepage}%
+ }%
+ \else
+ \protected@write\@indexfile{}{%
+ \string\indexentry{#1|#2hyperpage}{\thepage}%
+ }%
+ \HyInd@DefKey{#1}%
+ \expandafter
+ \gdef\csname HyInd@(\HyInd@key)\endcsname{%
+ hyperpage%
+ }%
+ \fi
+ \else
+ \protected@write\@indexfile{}{%
+ \string\indexentry{%
+ #1|#2hyperindexformat{/#3}%
+ }{\thepage}%
+ }%
+ \ifx\Hy@temp@A\HyInd@ParenLeft
+ \HyInd@DefKey{#1}%
+ \expandafter
+ \gdef\csname HyInd@(\HyInd@key)\endcsname{%
+ hyperindexformat{/#3}%
+ }%
+ \fi
+ \fi
+ \fi
+ }%
+ \def\HyInd@DefKey#1{%
+ \begingroup
+ \let\protect\@unexpandable@protect
+ \edef\Hy@temp{#1}%
+ \ltx@onelevel@sanitize\Hy@temp
+ \global\let\HyInd@key\Hy@temp
+ \endgroup
+ }%
+ \fi
+ }%
+\fi
+\Hy@DisableOption{hyperindex}
+\Hy@DisableOption{encap}
+% \end{macrocode}
+%
+% \begin{macro}{\nohyperpage}
+% The definition of \cs{nohyperpage} is just a precaution.
+% It is used to mark code that does not belong to a page
+% number, but \cs{nohyperpage} is never executed.
+% \begin{macrocode}
+\def\nohyperpage#1{#1}
+% \end{macrocode}
+% \end{macro}
+% This again is quite flaky, but allow for the common situation of a
+% page range separated by en-rule. We split this into two different
+% hyperlinked pages.
+% \begin{macrocode}
+\def\hyperpage#1{%
+ \HyInd@hyperpage#1\nohyperpage{}\@nil
+}
+\def\HyInd@hyperpage#1\nohyperpage#2#3\@nil{%
+ \HyInd@@hyperpage{#1}%
+ #2%
+ \def\Hy@temp{#3}%
+ \ifx\Hy@temp\@empty
+ \else
+ \ltx@ReturnAfterFi{%
+ \HyInd@hyperpage#3\@nil
+ }%
+ \fi
+}
+\def\HyInd@@hyperpage#1{\@hyperpage#1----\\}
+\def\@hyperpage#1--#2--#3\\{%
+ \ifx\\#2\\%
+ \@commahyperpage{#1}%
+ \else
+ \HyInd@pagelink{#1}--\HyInd@pagelink{#2}%
+ \fi
+}
+\def\@commahyperpage#1{\@@commahyperpage#1, ,\\}
+\def\@@commahyperpage#1, #2,#3\\{%
+ \ifx\\#2\\%
+ \HyInd@pagelink{#1}%
+ \else
+ \HyInd@pagelink{#1}, \HyInd@pagelink{#2}%
+ \fi
+}
+% \end{macrocode}
+%
+% The argument of \cmd{\hyperpage} can be empty. And the
+% line breaking algorithm of Makeindex can introduce spaces.
+% So we have to remove them.
+% \begin{macrocode}
+\def\HyInd@pagelink#1{%
+ \begingroup
+ \toks@={}%
+ \HyInd@removespaces#1 \@nil
+ \endgroup
+}
+\def\HyInd@removespaces#1 #2\@nil{%
+ \toks@=\expandafter{\the\toks@#1}%
+ \ifx\\#2\\%
+ \edef\x{\the\toks@}%
+ \ifx\x\@empty
+ \else
+ \hyperlink{page.\the\toks@}{\the\toks@}%
+ \fi
+ \else
+ \ltx@ReturnAfterFi{%
+ \HyInd@removespaces#2\@nil
+ }%
+ \fi
+}
+% \end{macrocode}
+%
+% \section{Compatibility with foiltex}
+%
+% \begin{macrocode}
+\@ifclassloaded{foils}{%
+ \providecommand*\ext@table{lot}%
+ \providecommand*\ext@figure{lof}%
+}{}
+% \end{macrocode}
+%
+% \section{Compatibility with seminar slide package}\label{seminar}
+% This requires \texttt{seminar.bg2}, version 1.6 or later.
+% Contributions by Denis Girou (\Email{denis.girou@idris.fr}).
+% \begin{macrocode}
+\@ifclassloaded{seminar}{%
+ \Hy@seminarslidestrue
+ \providecommand\theHslide{\arabic{slide}}%
+}{%
+ \Hy@seminarslidesfalse
+}
+\@ifpackageloaded{slidesec}{%
+ \providecommand\theHslidesection {\arabic{slidesection}}%
+ \providecommand\theHslidesubsection{%
+ \theHslidesection.\arabic{slidesubsection}%
+ }%
+ \def\slide@heading[#1]#2{%
+ \H@refstepcounter{slidesection}%
+ \@addtoreset{slidesubsection}{slidesection}%
+ \addtocontents{los}{%
+ \protect\l@slide{\the\c@slidesection}{\ignorespaces#1}%
+ {\@SCTR}{slideheading.\theslidesection}%
+ }%
+ \def\Hy@tempa{#2}%
+ \ifx\Hy@tempa\@empty
+ \else
+ {%
+ \edef\@currentlabel{%
+ \csname p@slidesection\endcsname\theslidesection
+ }%
+ \makeslideheading{#2}%
+ }%
+ \fi
+ \gdef\theslideheading{#1}%
+ \gdef\theslidesubheading{}%
+ \ifHy@bookmarksnumbered
+ \def\Hy@slidetitle{\theslidesection\space #1}%
+ \else
+ \def\Hy@slidetitle{#1}%
+ \fi
+ \ifHy@hypertexnames
+ \ifHy@naturalnames
+ \hyper@@anchor{slideheading.\theslidesection}{\relax}%
+ \Hy@writebookmark
+ {\theslidesection}%
+ {\Hy@slidetitle}%
+ {slideheading.\theslidesection}%
+ {1}%
+ {toc}%
+ \else
+ \hyper@@anchor{slideheading.\theHslidesection}{\relax}%
+ \Hy@writebookmark
+ {\theslidesection}%
+ {\Hy@slidetitle}%
+ {slideheading.\theHslidesection}%
+ {1}%
+ {toc}%
+ \fi
+ \else
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \hyper@@anchor{slideheading.\the\Hy@linkcounter}{\relax}%
+ \Hy@writebookmark
+ {\theslidesection}%
+ {\Hy@slidetitle}%
+ {slideheading.\the\Hy@linkcounter}%
+ {1}%
+ {toc}%
+ \fi
+ }%
+ \def\slide@subheading[#1]#2{%
+ \H@refstepcounter{slidesubsection}%
+ \addtocontents{los}{%
+ \protect\l@subslide{\the\c@slidesubsection}{\ignorespaces#1}%
+ {\@SCTR}{slideheading.\theslidesubsection}%
+ }%
+ \def\Hy@tempa{#2}%
+ \ifx\Hy@tempa\@empty
+ \else
+ {%
+ \edef\@currentlabel{%
+ \csname p@slidesubsection\endcsname\theslidesubsection
+ }%
+ \makeslidesubheading{#2}%
+ }%
+ \fi
+ \gdef\theslidesubheading{#1}%
+ \ifHy@bookmarksnumbered
+ \def\Hy@slidetitle{\theslidesubsection\space #1}%
+ \else
+ \def\Hy@slidetitle{#1}%
+ \fi
+ \ifHy@hypertexnames
+ \ifHy@naturalnames
+ \hyper@@anchor{slideheading.\theslidesubsection}{\relax}%
+ \Hy@writebookmark
+ {\theslidesubsection}%
+ {\Hy@slidetitle}%
+ {slideheading.\theslidesubsection}%
+ {2}%
+ {toc}%
+ \else
+ \hyper@@anchor{slideheading.\theHslidesubsection}{\relax}%
+ \Hy@writebookmark
+ {\theslidesubsection}%
+ {\Hy@slidetitle}%
+ {slideheading.\theHslidesubsection}%
+ {2}%
+ {toc}%
+ \fi
+ \else
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \hyper@@anchor{slideheading.\the\Hy@linkcounter}{\relax}%
+ \Hy@writebookmark
+ {\theslidesubsection}%
+ {\Hy@slidetitle}%
+ {slideheading.\the\Hy@linkcounter}%
+ {1}%
+ {toc}%
+ \fi
+ }%
+ \providecommand*{\listslidename}{List of Slides}%
+ \def\listofslides{%
+ \section*{%
+ \listslidename
+ \@mkboth{%
+ \expandafter\MakeUppercase\listslidename
+ }{%
+ \expandafter\MakeUppercase\listslidename
+ }%
+ }%
+ \def\l@slide##1##2##3##4{%
+ \slide@undottedcline{%
+ \slidenumberline{##3}{\hyperlink{##4}{##2}}%
+ }{}%
+ }%
+ \let\l@subslide\l@slide
+ \@startlos
+ }%
+ \def\slide@contents{%
+ \def\l@slide##1##2##3##4{%
+ \slide@cline{\slidenumberline{##3}{\hyperlink{##4}{##2}}}{##3}%
+ }%
+ \let\l@subslide\@gobblefour
+ \@startlos
+ }%
+ \def\Slide@contents{%
+ \def\l@slide##1##2##3##4{%
+ \ifcase\lslide@flag
+ \message{##1 ** \the\c@slidesection}%
+ \ifnum##1>\c@slidesection
+ \def\lslide@flag{1}%
+ {%
+ \large
+ \slide@cline{%
+ \slidenumberline{$\Rightarrow\bullet$}%
+ {\hyperlink{##4}{##2}}%
+ }{##3}%
+ }%
+ \else
+ {%
+ \large
+ \slide@cline{%
+ \slidenumberline{$\surd\;\bullet$}%
+ {\hyperlink{##4}{##2}}%
+ }{##3}%
+ }%
+ \fi
+ \or
+ \def\lslide@flag{2}%
+ {%
+ \large
+ \slide@cline{%
+ \slidenumberline{$\bullet$}%
+ {\hyperlink{##4}{##2}}%
+ }{##3}%
+ }%
+ \or
+ {%
+ \large
+ \slide@cline{%
+ \slidenumberline{$\bullet$}%
+ {\hyperlink{##4}{##2}}%
+ }{##3}%
+ }%
+ \fi
+ }%
+ \def\l@subslide##1##2##3##4{%
+ \ifnum\lslide@flag=1 %
+ \@undottedtocline{2}{3.8em}{3.2em}{\hyperlink{##4}{##2}}{}%
+ \fi
+ }%
+ \def\lslide@flag{0}%
+ \@startlos
+ }%
+}{}
+% \end{macrocode}
+% This breaks TeX4ht, so leave it to last.
+% Emend |\@setref| to put out a hypertext link as well as its
+% normal text (which is used as an anchor).
+% (|\endinput| have to be on the same line like |\fi|, or you
+% have to use |\expandafter| before.)
+% \begin{macrocode}
+\ifHy@texht
+ \expandafter\endinput
+\fi
+\let\real@setref\@setref
+\def\@setref#1#2#3{% csname, extract group, refname
+ \ifx#1\relax
+ \protect\G@refundefinedtrue
+ \nfss@text{\reset@font\bfseries ??}%
+ \@latex@warning{%
+ Reference `#3' on page \thepage \space undefined%
+ }%
+ \else
+ \expandafter\Hy@setref@link#1\@empty\@empty\@nil{#2}%
+ \fi
+}
+% \end{macrocode}
+% \cmd{\Hy@setref@link} extracts the reference information entries,
+% because \cmd{\hyper@@link} does not expand arguments for the
+% automatic link type detection.
+% \begin{macrocode}
+\def\Hy@setref@link#1#2#3#4#5#6\@nil#7{%
+ \begingroup
+ \toks0={\hyper@@link{#5}{#4}}%
+ \toks1=\expandafter{#7{#1}{#2}{#3}{#4}{#5}}%
+ \edef\x{\endgroup
+ \the\toks0 {\the\toks1 }%
+ }%
+ \x
+}
+\def\@pagesetref#1#2#3{% csname, extract macro, ref
+ \ifx#1\relax
+ \protect\G@refundefinedtrue
+ \nfss@text{\reset@font\bfseries ??}%
+ \@latex@warning{%
+ Reference `#3' on page \thepage \space undefined%
+ }%
+ \else
+ \protect\hyper@@link
+ {\expandafter\@fifthoffive#1}%
+ {page.\expandafter\@secondoffive#1}%
+ {\expandafter\@secondoffive#1}%
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+%<*check>
+\checklatex
+\checkcommand\def\@setref#1#2#3{%
+ \ifx#1\relax
+ \protect\G@refundefinedtrue
+ \nfss@text{\reset@font\bfseries ??}%
+ \@latex@warning{%
+ Reference `#3' on page \thepage\space undefined%
+ }%
+ \else
+ \expandafter#2#1\null
+ \fi
+}
+%</check>
+%<*package>
+% \end{macrocode}
+%
+% Now some extended referencing. |\ref*| and |\pageref*| are not linked,
+% and |\autoref| prefixes with a tag based on the type.
+% \begin{macrocode}
+\def\HyRef@StarSetRef#1{%
+ \begingroup
+ \Hy@safe@activestrue
+ \edef\x{#1}%
+ \@onelevel@sanitize\x
+ \edef\x{\endgroup
+ \noexpand\HyRef@@StarSetRef
+ \expandafter\noexpand\csname r@\x\endcsname{\x}%
+ }%
+ \x
+}
+\def\HyRef@@StarSetRef#1#2#3{%
+ \ifx#1\@undefined
+ \let#1\relax
+ \fi
+ \real@setref#1#3{#2}%
+}
+\def\@refstar#1{%
+ \HyRef@StarSetRef{#1}\@firstoffive
+}
+\def\@pagerefstar#1{%
+ \HyRef@StarSetRef{#1}\@secondoffive
+}
+\def\@namerefstar#1{%
+ \HyRef@StarSetRef{#1}\@thirdoffive
+}
+\Hy@AtBeginDocument{%
+ \@ifpackageloaded{varioref}{%
+ \def\@Refstar#1{%
+ \HyRef@StarSetRef{#1}\HyRef@MakeUppercaseFirstOfFive
+ }%
+ \def\HyRef@MakeUppercaseFirstOfFive#1#2#3#4#5{%
+ \MakeUppercase#1%
+ }%
+ \DeclareRobustCommand*{\Ref}{%
+ \@ifstar\@Refstar\HyRef@Ref
+ }%
+ \def\HyRef@Ref#1{%
+ \hyperref[{#1}]{\Ref*{#1}}%
+ }%
+ \def\Vr@f#1{%
+ \leavevmode\unskip\vref@space
+ \hyperref[{#1}]{%
+ \Ref*{#1}%
+ \let\vref@space\nobreakspace
+ \@vpageref[\unskip]{#1}%
+ }%
+ }%
+ \def\vr@f#1{%
+ \leavevmode\unskip\vref@space
+ \begingroup
+ \let\T@pageref\@pagerefstar
+ \hyperref[{#1}]{%
+ \ref*{#1}%
+ \vpageref[\unskip]{#1}%
+ }%
+ \endgroup
+ }%
+ }{}%
+}
+\DeclareRobustCommand*{\autopageref}{%
+ \@ifstar{%
+ \HyRef@autopagerefname\pageref*%
+ }\HyRef@autopageref
+}
+\def\HyRef@autopageref#1{%
+ \hyperref[{#1}]{\HyRef@autopagerefname\pageref*{#1}}%
+}
+\def\HyRef@autopagerefname{%
+ \ltx@IfUndefined{pageautorefname}{%
+ \ltx@IfUndefined{pagename}{%
+ \Hy@Warning{No autoref name for `page'}%
+ }{%
+ \pagename\nobreakspace
+ }%
+ }{%
+ \pageautorefname\nobreakspace
+ }%
+}
+% \end{macrocode}
+% \cs{leavevmode} is added to make package wrapfigure happy, if
+% \cs{autoref} starts a paragraph.
+% \begin{macrocode}
+\DeclareRobustCommand*{\autoref}{%
+ \leavevmode
+ \@ifstar{\HyRef@autoref\@gobbletwo}{\HyRef@autoref\hyper@@link}%
+}
+\def\HyRef@autoref#1#2{%
+ \begingroup
+ \Hy@safe@activestrue
+ \expandafter\HyRef@autosetref\csname r@#2\endcsname{#2}{#1}%
+ \endgroup
+}
+\def\HyRef@autosetref#1#2#3{% link command, csname, refname
+ \HyRef@ShowKeysRef{#2}%
+ \ifcase 0\ifx#1\relax 1\fi\ifx#1\Hy@varioref@undefined 1\fi\relax
+ \edef\HyRef@thisref{%
+ \expandafter\@fourthoffive#1\@empty\@empty\@empty
+ }%
+ \expandafter\HyRef@testreftype\HyRef@thisref.\\%
+ \Hy@safe@activesfalse
+ #3{%
+ \expandafter\@fifthoffive#1\@empty\@empty\@empty
+ }{%
+ \expandafter\@fourthoffive#1\@empty\@empty\@empty
+ }{%
+ \HyRef@currentHtag
+ \expandafter\@firstoffive#1\@empty\@empty\@empty
+ \null
+ }%
+ \else
+ \protect\G@refundefinedtrue
+ \nfss@text{\reset@font\bfseries ??}%
+ \@latex@warning{%
+ Reference `#2' on page \thepage\space undefined%
+ }%
+ \fi
+}
+\def\HyRef@testreftype#1.#2\\{%
+ \ltx@IfUndefined{#1autorefname}{%
+ \ltx@IfUndefined{#1name}{%
+ \HyRef@StripStar#1\\*\\\@nil{#1}%
+ \ltx@IfUndefined{\HyRef@name autorefname}{%
+ \ltx@IfUndefined{\HyRef@name name}{%
+ \def\HyRef@currentHtag{}%
+ \Hy@Warning{No autoref name for `#1'}%
+ }{%
+ \edef\HyRef@currentHtag{%
+ \expandafter\noexpand\csname\HyRef@name name\endcsname
+ \noexpand~%
+ }%
+ }%
+ }{%
+ \edef\HyRef@currentHtag{%
+ \expandafter\noexpand
+ \csname\HyRef@name autorefname\endcsname
+ \noexpand~%
+ }%
+ }%
+ }{%
+ \edef\HyRef@currentHtag{%
+ \expandafter\noexpand\csname#1name\endcsname
+ \noexpand~%
+ }%
+ }%
+ }{%
+ \edef\HyRef@currentHtag{%
+ \expandafter\noexpand\csname#1autorefname\endcsname
+ \noexpand~%
+ }%
+ }%
+}
+\def\HyRef@StripStar#1*\\#2\@nil#3{%
+ \def\HyRef@name{#2}%
+ \ifx\HyRef@name\HyRef@CaseStar
+ \def\HyRef@name{#1}%
+ \else
+ \def\HyRef@name{#3}%
+ \fi
+}
+\def\HyRef@CaseStar{*\\}
+\def\HyRef@currentHtag{}
+% \end{macrocode}
+%
+% Support for package |showkeys|.
+% \begin{macro}{\HyRef@ShowKeysRef}
+% \begin{macrocode}
+\let\HyRef@ShowKeysRef\@gobble
+\def\HyRef@ShowKeysInit{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname SK@@label\endcsname\relax
+ \else
+ \ifx\SK@ref\@empty
+ \else
+ \def\HyRef@ShowKeysRef{%
+ \SK@\SK@@ref
+ }%
+ \fi
+ \fi
+}
+\@ifpackageloaded{showkeys}{%
+ \HyRef@ShowKeysInit
+}{%
+ \Hy@AtBeginDocument{%
+ \@ifpackageloaded{showkeys}{%
+ \HyRef@ShowKeysInit
+ }{}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Defaults for the names that \cmd{\autoref} uses.
+% \begin{macrocode}
+\providecommand*\AMSautorefname{\equationautorefname}
+\providecommand*\Hfootnoteautorefname{\footnoteautorefname}
+\providecommand*\Itemautorefname{\itemautorefname}
+\providecommand*\itemautorefname{item}
+\providecommand*\equationautorefname{Equation}
+\providecommand*\footnoteautorefname{footnote}
+\providecommand*\itemautorefname{item}
+\providecommand*\figureautorefname{Figure}
+\providecommand*\tableautorefname{Table}
+\providecommand*\partautorefname{Part}
+\providecommand*\appendixautorefname{Appendix}
+\providecommand*\chapterautorefname{chapter}
+\providecommand*\sectionautorefname{section}
+\providecommand*\subsectionautorefname{subsection}
+\providecommand*\subsubsectionautorefname{subsubsection}
+\providecommand*\paragraphautorefname{paragraph}
+\providecommand*\subparagraphautorefname{subparagraph}
+\providecommand*\FancyVerbLineautorefname{line}
+\providecommand*\theoremautorefname{Theorem}
+\providecommand*\pageautorefname{page}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \section{Configuration files}
+%
+% \subsection{PS/PDF strings}
+%
+% Some drivers write PS or PDF strings. These strings are delimited
+% by parentheses, therefore a lonely unmatched parenthesis must be
+% avoided to avoid PS or PDF syntax errors. Also the backslash character
+% itself has to be protected.
+%
+% \begin{macro}{\Hy@pstringdef}
+% Therefore such strings should be passed through |\Hy@pstringdef|.
+% The first argument holds a macro for the result, the second
+% argument is the string that needs protecting.
+% Since version 1.30.0 pdf\TeX\ offers \cs{pdfescapestring}.
+% \begin{macrocode}
+%<*pdftex|dvipdfm|xetex|vtex|pdfmarkbase|dviwindo>
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdf@escapestring\endcsname\relax
+ \begingroup
+ \catcode`\|=0 %
+ \@makeother\\%
+ |@firstofone{|endgroup
+ |def|Hy@pstringdef#1#2{%
+ |begingroup
+ |edef~{|string~}%
+ |xdef|Hy@gtemp{#2}%
+ |endgroup
+ |let#1|Hy@gtemp
+ |@onelevel@sanitize#1%
+ |edef#1{|expandafter|Hy@ExchangeBackslash#1\|@nil}%
+ |edef#1{|expandafter|Hy@ExchangeLeftParenthesis#1(|@nil}%
+ |edef#1{|expandafter|Hy@ExchangeRightParenthesis#1)|@nil}%
+ }%
+ |def|Hy@ExchangeBackslash#1\#2|@nil{%
+ #1%
+ |ifx|\#2|\%%
+ |else
+ \\%
+ |ltx@ReturnAfterFi{%
+ |Hy@ExchangeBackslash#2|@nil
+ }%
+ |fi
+ }%
+ }%
+ \def\Hy@ExchangeLeftParenthesis#1(#2\@nil{%
+ #1%
+ \ifx\\#2\\%
+ \else
+ \@backslashchar(%
+ \ltx@ReturnAfterFi{%
+ \Hy@ExchangeLeftParenthesis#2\@nil
+ }%
+ \fi
+ }%
+ \def\Hy@ExchangeRightParenthesis#1)#2\@nil{%
+ #1%
+ \ifx\\#2\\%
+ \else
+ \@backslashchar)%
+ \ltx@ReturnAfterFi{%
+ \Hy@ExchangeRightParenthesis#2\@nil
+ }%
+ \fi
+ }%
+\else
+ \def\Hy@pstringdef#1#2{%
+ \begingroup
+ \edef~{\string~}%
+ \xdef\Hy@gtemp{\pdf@escapestring{#2}}%
+ \endgroup
+ \let#1\Hy@gtemp
+ }%
+\fi
+%</pdftex|dvipdfm|xetex|vtex|pdfmarkbase|dviwindo>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{pdftex}
+%
+% \begin{macrocode}
+%<*pdftex>
+\providecommand*{\XR@ext}{pdf}
+\Hy@setbreaklinks{true}
+\def\HyPat@ObjRef{%
+ [0-9]*[1-9][0-9]* 0 R%
+}
+% \end{macrocode}
+% This driver is for Han The Thanh's \TeX{} variant
+% which produces PDF directly. This has new primitives
+% to do PDF things, which usually translate almost directly to
+% PDF code, so there is a lot of flexibility which we do not at
+% present harness.
+%
+% Set PDF version if requested by option \textsf{pdfversion}.
+% \begin{itemize}
+% \item pdf\TeX\ 1.10a, 2003-01-16: \cs{pdfoptionpdfminorversion}
+% \item pdf\TeX\ 1.30, 2005-08-081: \cs{pdfminorversion}
+% \end{itemize}
+% \begin{macrocode}
+\let\Hy@pdfminorversion\relax
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdfminorversion\endcsname\relax
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname pdfoptionpdfminorversion\endcsname\relax
+ \else
+ \def\Hy@pdfminorversion{\pdfoptionpdfminorversion}%
+ \fi
+\else
+ \def\Hy@pdfminorversion{\pdfminorversion}%
+\fi
+\@ifundefined{Hy@pdfminorversion}{%
+ \PackageInfo{hyperref}{%
+ PDF version is not set, because pdfTeX is too old (<1.10a)%
+ }%
+}{%
+ \ifHy@ocgcolorlinks
+ \ifnum\Hy@pdfminorversion<5 %
+ \kvsetkeys{Hyp}{pdfversion=1.5}%
+ \fi
+ \fi
+ \ifHy@setpdfversion
+ \ifnum\Hy@pdfversion<5 %
+ \ltx@IfUndefined{pdfobjcompresslevel}{%
+ }{%
+ \ifHy@verbose
+ \Hy@InfoNoLine{%
+ PDF object streams are disabled, because they are%
+ \MessageBreak
+ not supported in requested PDF version %
+ 1.\Hy@pdfversion
+ }%
+ \fi
+ \pdfobjcompresslevel=\ltx@zero
+ }%
+ \fi
+ \ifnum\Hy@pdfminorversion=\Hy@pdfversion\relax
+ \else
+ \let\Hy@temp\ltx@empty
+ \def\Hy@temp@A#1#2{%
+ \ifnum#1>\ltx@zero
+ \edef\Hy@temp{%
+ \Hy@temp
+ \space\space
+ \the#1\space #2%
+ \ifnum#1=\ltx@one\else s\fi
+ \MessageBreak
+ }%
+ \fi
+ }%
+ \Hy@temp@A\pdflastobj{PDF object}%
+ \Hy@temp@A\pdflastxform{form XObject}%
+ \Hy@temp@A\pdflastximage{image XObject}%
+ \Hy@temp@A\pdflastannot{annotation}%
+ \ltx@IfUndefined{pdflastlink}{%
+ }{%
+ \Hy@temp@A\pdflastlink{link}%
+ }%
+ \ifx\Hy@temp\ltx@empty
+ \Hy@pdfminorversion=\Hy@pdfversion\relax
+ \else
+ \let\Hy@temp@A\ltx@empty
+ \ifnum\Hy@pdfversion=4 %
+ \IfFileExists{pdf14.sty}{%
+ \def\Hy@temp@A{%
+ \MessageBreak
+ Or \string\RequirePackage{pdf14} can be used%
+ \MessageBreak
+ before \string\documentclass\space as shortcut%
+ }%
+ }{}%
+ \fi
+ \Hy@WarningNoLine{%
+ The PDF version number could not be set,\MessageBreak
+ because some PDF objects are already written:%
+ \MessageBreak
+ \Hy@temp
+ The version should be set as early as possible:%
+ \MessageBreak
+ \space\space
+ \expandafter\string\Hy@pdfminorversion=\Hy@pdfversion
+ \string\relax
+ \ifnum\Hy@pdfversion<5 %
+ \ltx@ifundefined{pdfobjcompresslevel}{%
+ }{%
+ \MessageBreak
+ \space\space
+ \string\pdfobjcompresslevel=0\string\relax
+ }%
+ \fi
+ \Hy@temp@A
+ }%
+ \fi
+ \fi
+ \PackageInfo{hyperref}{%
+ \expandafter\string\Hy@pdfminorversion
+ :=\number\Hy@pdfversion\space
+ }%
+ \fi
+ \edef\Hy@pdfversion{\number\Hy@pdfminorversion}%
+}
+\Hy@DisableOption{pdfversion}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ifHy@ocgcolorlinks
+ \pdf@ifdraftmode{}{%
+ \immediate\pdfobj{%
+ <<%
+ /Type/OCG%
+ /Name(View)%
+ /Usage<<%
+ /Print<<%
+ /PrintState/OFF%
+ >>%
+ /View<<%
+ /ViewState/ON%
+ >>%
+ >>%
+ >>%
+ }%
+ \edef\OBJ@OCG@view{\the\pdflastobj\space 0 R}%
+ \immediate\pdfobj{%
+ <<%
+ /Type/OCG%
+ /Name(Print)%
+ /Usage<<%
+ /Print<<%
+ /PrintState/ON%
+ >>%
+ /View<<%
+ /ViewState/OFF%
+ >>%
+ >>%
+ >>%
+ }%
+ \edef\OBJ@OCG@print{\the\pdflastobj\space 0 R}%
+ \immediate\pdfobj{%
+ [%
+ \OBJ@OCG@view\space\OBJ@OCG@print
+ ]%
+ }%
+ \edef\OBJ@OCGs{\the\pdflastobj\space 0 R}%
+ \pdfcatalog{%
+ /OCProperties<<%
+ /OCGs \OBJ@OCGs
+ /D<<%
+ /OFF[\OBJ@OCG@print]%
+ /AS[%
+ <<%
+ /Event/View%
+ /OCGs \OBJ@OCGs
+ /Category[/View]%
+ >>%
+ <<%
+ /Event/Print%
+ /OCGs \OBJ@OCGs
+ /Category[/Print]%
+ >>%
+ <<%
+ /Event/Export%
+ /OCGs \OBJ@OCGs
+ /Category[/Print]%
+ >>%
+ ]%
+ >>%
+ >>%
+ }%
+ \begingroup
+ \edef\x{\endgroup
+ \pdfpageresources{%
+ \the\pdfpageresources
+ /Properties<<%
+ /OCView \OBJ@OCG@view
+ /OCPrint \OBJ@OCG@print
+ >>%
+ }%
+ }%
+ \x
+ }%
+ \Hy@AtBeginDocument{%
+ \def\Hy@colorlink#1{%
+ \begingroup
+ \ifHy@ocgcolorlinks
+ \def\Hy@ocgcolor{#1}%
+ \setbox0=\hbox\bgroup\color@begingroup
+ \else
+ \HyColor@UseColor#1%
+ \fi
+ }%
+ \def\Hy@endcolorlink{%
+ \ifHy@ocgcolorlinks
+ \color@endgroup\egroup
+ \mbox{%
+ \pdfliteral page{/OC/OCPrint BDC}%
+ \rlap{\copy0}%
+ \pdfliteral page{EMC/OC/OCView BDC}%
+ \begingroup
+ \expandafter\HyColor@UseColor\Hy@ocgcolor
+ \box0 %
+ \endgroup
+ \pdfliteral page{EMC}%
+ }%
+ \fi
+ \endgroup
+ }%
+ }%
+\else
+ \Hy@DisableOption{ocgcolorlinks}%
+\fi
+% \end{macrocode}
+%
+% First, allow for some changes and additions to pdftex syntax:
+% \begin{macrocode}
+\def\setpdflinkmargin#1{%
+ \begingroup
+ \setlength{\dimen@}{#1}%
+ \expandafter\endgroup
+ \expandafter\pdflinkmargin\the\dimen@\relax
+}
+\ifx\pdfstartlink\@undefined% less than version 14
+ \let\pdfstartlink\pdfannotlink
+ \let\pdflinkmargin\@tempdima
+ \let\pdfxform\pdfform
+ \let\pdflastxform\pdflastform
+ \let\pdfrefxform\pdfrefform
+\else
+ \pdflinkmargin1pt %
+\fi
+% \end{macrocode}
+% First set up the default linking
+% \begin{macrocode}
+\providecommand*\@pdfview{XYZ}
+% \end{macrocode}
+% First define the anchors:
+% \begin{macrocode}
+\Hy@WrapperDef\new@pdflink#1{%
+ \ifhmode
+ \@savsf\spacefactor
+ \fi
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \Hy@pstringdef\Hy@pstringDest{\HyperDestNameFilter{#1}}%
+ \Hy@DestName\Hy@pstringDest\@pdfview
+ \Hy@RestoreLastskip
+ \ifhmode
+ \spacefactor\@savsf
+ \fi
+}
+\let\pdf@endanchor\@empty
+% \end{macrocode}
+% \begin{macro}{\Hy@DestName}
+% Wrap the call of \verb|\pdfdest name| in \cs{Hy@DestName}.
+% Then it can easier be catched by package |hypdestopt|.
+% \begin{macrocode}
+\def\Hy@DestName#1#2{%
+ \pdfdest name{#1}#2\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Now the links; the interesting part here is the set of attributes
+% which define how the link looks. We probably want to add a border
+% and color it, but there are other choices. This directly translates
+% to PDF code, so consult the manual for how to change this. We will
+% add an interface at some point.
+% \begin{macrocode}
+\providecommand*\@pdfborder{0 0 1}
+\providecommand*\@pdfborderstyle{}
+\def\Hy@undefinedname{UNDEFINED}
+\def\find@pdflink#1#2{%
+ \leavevmode
+ \protected@edef\Hy@testname{#2}%
+ \ifx\Hy@testname\@empty
+ \Hy@Warning{%
+ Empty destination name,\MessageBreak
+ using `\Hy@undefinedname'%
+ }%
+ \let\Hy@testname\Hy@undefinedname
+ \else
+ \Hy@pstringdef\Hy@testname{%
+ \expandafter\HyperDestNameFilter\expandafter{\Hy@testname}%
+ }%
+ \fi
+ \Hy@StartlinkName{%
+ \ifHy@pdfa /F 4\fi
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \ifx\CurrentBorderColor\relax
+ \else
+ /C[\CurrentBorderColor]%
+ \fi
+ }\Hy@testname
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
+}
+\def\Hy@StartlinkName#1#2{%
+ \pdfstartlink attr{#1}goto name{#2}\relax
+}
+\def\close@pdflink{%
+ \Hy@endcolorlink
+ \Hy@VerboseLinkStop
+ \pdfendlink
+}
+\def\hyper@anchor#1{%
+ \new@pdflink{#1}\anchor@spot\pdf@endanchor
+}
+\def\hyper@anchorstart#1{%
+ \new@pdflink{#1}%
+ \Hy@activeanchortrue
+}
+\def\hyper@anchorend{%
+ \pdf@endanchor
+ \Hy@activeanchorfalse
+}
+\def\hyper@linkstart#1#2{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \ltx@IfUndefined{@#1bordercolor}{%
+ \let\CurrentBorderColor\relax
+ }{%
+ \edef\CurrentBorderColor{\csname @#1bordercolor\endcsname}%
+ }%
+ \find@pdflink{#1}{#2}%
+}
+\def\hyper@linkend{\close@pdflink}
+\def\hyper@link#1#2#3{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \ltx@IfUndefined{@#1bordercolor}{%
+ \let\CurrentBorderColor\relax
+ }{%
+ \edef\CurrentBorderColor{\csname @#1bordercolor\endcsname}%
+ }%
+ \find@pdflink{#1}{#2}#3\Hy@xspace@end
+ \close@pdflink
+}
+\let\CurrentBorderColor\@linkbordercolor
+\def\hyper@linkurl#1#2{%
+ \begingroup
+ \Hy@pstringdef\Hy@pstringURI{#2}%
+ \hyper@chars
+ \leavevmode
+ \pdfstartlink
+ attr{%
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \ifx\@urlbordercolor\relax
+ \else
+ /C[\@urlbordercolor]%
+ \fi
+ }%
+ user{%
+ /Subtype/Link%
+ \ifHy@pdfa /F 4\fi
+ /A<<%
+ /Type/Action%
+ /S/URI%
+ /URI(\Hy@pstringURI)%
+ \ifHy@href@ismap
+ /IsMap true%
+ \fi
+ \Hy@href@nextactionraw
+ >>%
+ }%
+ \relax
+ \Hy@colorlink\@urlcolor#1\Hy@xspace@end
+ \close@pdflink
+ \endgroup
+}
+\def\hyper@linkfile#1#2#3{% anchor text, filename, linkname
+ \begingroup
+ \def\Hy@pstringF{#2}%
+ \Hy@CleanupFile\Hy@pstringF
+ \Hy@pstringdef\Hy@pstringF\Hy@pstringF
+ \Hy@pstringdef\Hy@pstringD{#3}%
+ \Hy@MakeRemoteAction
+ \leavevmode
+ \pdfstartlink
+ attr{%
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \ifx\@filebordercolor\relax
+ \else
+ /C[\@filebordercolor]%
+ \fi
+ }%
+ user {%
+ /Subtype/Link%
+ \ifHy@pdfa /F 4\fi
+ /A<<%
+ /F(\Hy@pstringF)%
+ /S/GoToR%
+ \Hy@SetNewWindow
+% \end{macrocode}
+% If |#3| is empty, page 0; if its a number, Page number, otherwise
+% a named destination.
+% \begin{verbatim}
+% \afterassignment\xxx\count@=0\foo!%
+%
+%\def\xxx#1!{%
+% \ifx\xxx#1\xxx
+% foo was an integer
+% \else
+% it wasnt
+% \fi}
+% \end{verbatim}
+% \begin{macrocode}
+ \ifx\\#3\\%
+ /D[\Hy@href@page\@pdfremotestartview]%
+ \else
+ /D(\Hy@pstringD)%
+ \fi
+ \Hy@href@nextactionraw
+ >>%
+ }%
+ \relax
+ \Hy@colorlink\@filecolor#1\Hy@xspace@end
+ \close@pdflink
+ \endgroup
+}
+\def\@hyper@launch run:#1\\#2#3{% filename, anchor text linkname
+ \begingroup
+ \Hy@pstringdef\Hy@pstringF{#1}%
+ \Hy@pstringdef\Hy@pstringP{#3}%
+ \leavevmode
+ \pdfstartlink
+ attr{%
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \ifx\@runbordercolor\relax
+ \else
+ /C[\@runbordercolor]%
+ \fi
+ }%
+ user {%
+ /Subtype/Link%
+ \ifHy@pdfa /F 4\fi
+ /A<<%
+ /F(\Hy@pstringF)%
+ /S/Launch%
+ \Hy@SetNewWindow
+ \ifx\\#3\\%
+ \else
+ /Win<</P(\Hy@pstringP)/F(\Hy@pstringF)>>%
+ \fi
+ \Hy@href@nextactionraw
+ >>%
+ }%
+ \relax
+ \Hy@colorlink\@runcolor#2\Hy@xspace@end
+ \close@pdflink
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\PDF@SetupDox}
+% \begin{macrocode}
+\def\PDF@SetupDoc{%
+ \ifx\@pdfpagescrop\@empty
+ \else
+ \edef\process@me{%
+ \pdfpagesattr={%
+ /CropBox[\@pdfpagescrop]%
+ \expandafter\ifx\expandafter\\\the\pdfpagesattr\\%
+ \else
+ ^^J\the\pdfpagesattr
+ \fi
+ }%
+ }%
+ \process@me
+ \fi
+ \Hy@pstringdef\Hy@pstringB{\@baseurl}%
+ \pdfcatalog{%
+ /PageMode/\@pdfpagemode
+ \ifx\@baseurl\@empty
+ \else
+ /URI<</Base(\Hy@pstringB)>>%
+ \fi
+ }%
+ \ifx\@pdfstartpage\@empty
+ \else
+ \ifx\@pdfstartview\@empty
+ \else
+ openaction goto page\@pdfstartpage{\@pdfstartview}%
+ \fi
+ \fi
+ \edef\Hy@temp{%
+ \ifHy@pdftoolbar\else /HideToolbar true\fi
+ \ifHy@pdfmenubar\else /HideMenubar true\fi
+ \ifHy@pdfwindowui\else /HideWindowUI true\fi
+ \ifHy@pdffitwindow /FitWindow true\fi
+ \ifHy@pdfcenterwindow /CenterWindow true\fi
+ \ifHy@pdfdisplaydoctitle /DisplayDocTitle true\fi
+ \Hy@UseNameKey{NonFullScreenPageMode}\@pdfnonfullscreenpagemode
+ \Hy@UseNameKey{Direction}\@pdfdirection
+ \Hy@UseNameKey{ViewArea}\@pdfviewarea
+ \Hy@UseNameKey{ViewClip}\@pdfviewclip
+ \Hy@UseNameKey{PrintArea}\@pdfprintarea
+ \Hy@UseNameKey{PrintClip}\@pdfprintclip
+ \Hy@UseNameKey{PrintScaling}\@pdfprintscaling
+ \Hy@UseNameKey{Duplex}\@pdfduplex
+ \ifx\@pdfpicktraybypdfsize\@empty
+ \else
+ /PickTrayByPDFSize \@pdfpicktraybypdfsize
+ \fi
+ \ifx\@pdfprintpagerange\@empty
+ \else
+ /PrintPageRange[\@pdfprintpagerange]%
+ \fi
+ \ifx\@pdfnumcopies\@empty
+ \else
+ /NumCopies \@pdfnumcopies
+ \fi
+ }%
+ \pdfcatalog{%
+ \ifx\Hy@temp\@empty
+ \else
+ /ViewerPreferences<<\Hy@temp>>%
+ \fi
+ \Hy@UseNameKey{PageLayout}\@pdfpagelayout
+ \ifx\@pdflang\relax
+ \else
+ /Lang(\@pdflang)%
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PDF@FinishDoc}
+% \begin{macrocode}
+\def\PDF@FinishDoc{%
+ \pdf@ifdraftmode{}{%
+ \Hy@UseMaketitleInfos
+ \HyInfo@GenerateAddons
+ \pdfinfo{%
+ /Author(\@pdfauthor)%
+ /Title(\@pdftitle)%
+ /Subject(\@pdfsubject)%
+ /Creator(\@pdfcreator)%
+ \ifx\@pdfcreationdate\@empty
+ \else
+ /CreationDate(\@pdfcreationdate)%
+ \fi
+ \ifx\@pdfmoddate\@empty
+ \else
+ /ModDate(\@pdfmoddate)%
+ \fi
+ \ifx\@pdfproducer\relax
+ \else
+ /Producer(\@pdfproducer)%
+ \fi
+ /Keywords(\@pdfkeywords)%
+ \ifx\@pdftrapped\@empty
+ \else
+ /Trapped/\@pdftrapped
+ \fi
+ \HyInfo@Addons
+ }%
+ }%
+ \Hy@DisableOption{pdfauthor}%
+ \Hy@DisableOption{pdftitle}%
+ \Hy@DisableOption{pdfsubject}%
+ \Hy@DisableOption{pdfcreator}%
+ \Hy@DisableOption{addtopdfcreator}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfmoddate}%
+ \Hy@DisableOption{pdfproducer}%
+ \Hy@DisableOption{pdfkeywords}%
+ \Hy@DisableOption{pdftrapped}%
+ \Hy@DisableOption{pdfinfo}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\hyper@pagetransition}
+% \cmd{\@pdfpagetransition} is initialized with \cmd{\relax}. So
+% it indicates, if option pdfpagetransition is used. First previous
+% |/Trans| entries are removed. If a new |/Trans| key exists, it is
+% appended to \cmd{\pdfpageattr}.
+% \begin{macrocode}
+\def\hyper@pagetransition{%
+ \ifx\@pdfpagetransition\relax
+ \else
+ \expandafter\Hy@RemoveTransPageAttr
+ \the\pdfpageattr^^J/Trans{}>>\END
+ \ifx\@pdfpagetransition\@empty
+ \else
+ \edef\@processme{%
+ \global\pdfpageattr{%
+ \the\pdfpageattr
+ ^^J/Trans << /S /\@pdfpagetransition\space >>%
+ }%
+ }%
+ \@processme
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@RemoveTransPageAttr}
+% Macro \cmd{\Hy@RemoveTransPageAttr} removes a |/Trans|
+% entry from \cmd{\pdfpageattr}. It is called with
+% the end marker |^^J/Trans{}>>\END|. The trick is the
+% empty group that does not appear in legal
+% \cmd{\pdfpageattr} code. It appears in argument
+% |#2| and shows, whether the parameter text
+% catches a really |/Trans| object or the end marker.
+% \begin{macrocode}
+\gdef\Hy@RemoveTransPageAttr#1^^J/Trans#2#3>>#4\END{%
+ \ifx\\#2\\%
+ \global\pdfpageattr{#1}%
+ \else
+ \Hy@RemoveTransPageAttr#1#4\END
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyper@pageduration}
+% \cmd{\@pdfpageduration} is initialized with \cmd{\relax}. So
+% it indicates, if option pdfpageduration is used. First previous
+% |/Dur| entries are removed. If a new |/Dur| key exists, it is
+% appended to \cmd{\pdfpageattr}.
+% \begin{macrocode}
+\def\hyper@pageduration{%
+ \ifx\@pdfpageduration\relax
+ \else
+ \expandafter
+ \Hy@RemoveDurPageAttr\the\pdfpageattr^^J/Dur{} \END
+ \ifx\@pdfpageduration\@empty
+ \else
+ \edef\@processme{%
+ \global\pdfpageattr{%
+ \the\pdfpageattr
+ ^^J/Dur \@pdfpageduration\space
+ }%
+ }%
+ \@processme
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@RemoveDurPageAttr}
+% Macro \cmd{\Hy@RemoveDurPageAttr} removes a |/Dur|
+% entry from \cmd{\pdfpageattr}. It is called with
+% the end marker |^^J/Dur{} \END|. The trick is the
+% empty group that does not appear in legal
+% \cmd{\pdfpageattr} code. It appears in argument
+% |#2| and shows, whether the parameter text
+% catches a really |/Dur| object or the end marker.
+% \begin{macrocode}
+\gdef\Hy@RemoveDurPageAttr#1^^J/Dur#2#3 #4\END{%
+ \ifx\\#2\\%
+ \global\pdfpageattr{#1}%
+ \else
+ \Hy@RemoveDurPageAttr#1#4\END
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyper@pagehidden}
+% The boolean value of the key |/Hid| is stored in switch
+% \cmd{\ifHy@pdfpagehidden}.
+% First previous |/Hid| entries are removed, then the new
+% one is appended, if the value is true (the PDF default
+% is false).
+% \begin{macrocode}
+\def\hyper@pagehidden{%
+ \ifHy@useHidKey
+ \expandafter
+ \Hy@RemoveHidPageAttr\the\pdfpageattr^^J/Hid{} \END
+ \ifHy@pdfpagehidden
+ \edef\@processme{%
+ \global\pdfpageattr{%
+ \the\pdfpageattr
+ ^^J/Hid true % SPACE
+ }%
+ }%
+ \@processme
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Hy@RemoveHidPageAttr}
+% Macro \cmd{\Hy@RemoveHidPageAttr} removes a |/Hid|
+% entry from \cmd{\pdfpageattr}. It is called with
+% the end marker |^^J/Hid{} \END|. The trick is the
+% empty group that does not appear in legal
+% \cmd{\pdfpageattr} code. It appears in argument
+% |#2| and shows, whether the parameter text
+% catches a really |/Hid| object or the end marker.
+% \begin{macrocode}
+\gdef\Hy@RemoveHidPageAttr#1^^J/Hid#2#3 #4\END{%
+ \ifx\\#2\\%
+ \global\pdfpageattr{#1}%
+ \else
+ \Hy@RemoveHidPageAttr#1#4\END
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\pdf@ifdraftmode{}{%
+ \g@addto@macro\Hy@EveryPageHook{%
+ \hyper@pagetransition
+ \hyper@pageduration
+ \hyper@pagehidden
+ }%
+}
+% \end{macrocode}
+%
+% Also Xe\TeX\ support \cs{pdfpagewidth} and \cs{pdfpageheight},
+% but it does not provide \cs{pdfhorigin} and \cs{pdfvorigin}.
+% \begin{macrocode}
+%</pdftex>
+%<*pdftex|xetex>
+\Hy@AtBeginDocument{%
+ \ifHy@setpagesize
+ \expandafter\@firstofone
+ \else
+ \expandafter\@gobble
+ \fi
+ {%
+ \@ifclassloaded{seminar}{%
+%<*pdftex>
+ \setlength{\pdfhorigin}{1truein}%
+ \setlength{\pdfvorigin}{1truein}%
+%</pdftex>
+ \ifportrait
+ \ifdim\paperwidth=\z@
+ \else
+ \setlength{\pdfpagewidth}{\strip@pt\paperwidth truept}%
+ \fi
+ \ifdim\paperheight=\z@
+ \else
+ \setlength{\pdfpageheight}{\strip@pt\paperheight truept}%
+ \fi
+ \else
+ \ifdim\paperheight=\z@
+ \else
+ \setlength{\pdfpagewidth}{\strip@pt\paperheight truept}%
+ \fi
+ \ifdim\paperwidth=\z@
+ \else
+ \setlength{\pdfpageheight}{\strip@pt\paperwidth truept}%
+ \fi
+ \fi
+ }{%
+ \ltx@IfUndefined{stockwidth}{%
+ \ifdim\paperwidth>\z@
+ \setlength{\pdfpagewidth}{\paperwidth}%
+ \fi
+ \ifdim\paperheight>\z@
+ \setlength{\pdfpageheight}{\paperheight}%
+ \fi
+ }{%
+ \ifdim\stockwidth>\z@
+ \setlength{\pdfpagewidth}{\stockwidth}%
+ \fi
+ \ifdim\stockheight>\z@
+ \setlength{\pdfpageheight}{\stockheight}%
+ \fi
+ }%
+ }%
+ }%
+ \Hy@DisableOption{setpagesize}%
+}
+%</pdftex|xetex>
+%<*pdftex>
+\def\Acrobatmenu#1#2{%
+ \Hy@Acrobatmenu{#1}{#2}{%
+ \leavevmode
+ \EdefEscapeName\Hy@temp@menu{#1}%
+ \pdfstartlink
+ attr{%
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \ifx\@menubordercolor\relax
+ \else
+ /C[\@menubordercolor]%
+ \fi
+ }%
+ user{%
+ /Subtype/Link%
+ \ifHy@pdfa /F 4\fi
+ /A<<%
+ /S/Named%
+ /N/\Hy@temp@menu
+ \Hy@href@nextactionraw
+ >>%
+ }%
+ \relax
+ \Hy@colorlink\@menucolor#2%
+ \close@pdflink
+ }%
+}
+% \end{macrocode}
+%
+% \subsubsection{Fix for problem with different nesting levels}
+%
+% \cs{AtBeginShipoutFirst} adds an additional box layer around
+% the first output page. This disturbs pdf\TeX's low level
+% link commands \cs{pdfstartlink} and \cs{pdfendlink}, if a
+% link is broken across the first and second output page.
+%
+% The problem could be fixed by replacing \cs{AtBeginShipoutFirst},
+% because the box layer is not necessary for pdf\TeX -- no \cs{special}s
+% need to be inserted. However it's easier to add an additional
+% box level for the pages after the first one. Also \cs{AtBeginShipoutFirst}
+% could be invoked independently from hyperref.
+%
+% Since version 2011/10/05 v1.16 of package `atbegshi'
+% \cs{AtBeginShipoutFirst} does not add a additional box layer.
+% \begin{macrocode}
+\def\Hy@FixNotFirstPage{%
+ \gdef\Hy@FixNotFirstPage{%
+ \setbox\AtBeginShipoutBox=\hbox{%
+ \copy\AtBeginShipoutBox
+ }%
+ }%
+}
+\ltx@ifpackagelater{atbegshi}{2011/10/05}{%
+}{%
+ \AtBeginShipout{\Hy@FixNotFirstPage}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</pdftex>
+% \end{macrocode}
+%
+% \subsection{hypertex}
+%
+% The Hyper\TeX\ specification (this is
+% borrowed from an article by Arthur Smith)
+% says that conformant viewers/translators
+% must recognize the following set of |\special| commands:
+% \begin{description}
+% \item[href:] |html:<a href = "href_string">|
+% \item[name:] |html:<a name = "name_string">|
+% \item[end:] |html:</a>|
+% \item[image:] |html:<img src = "href_string">|
+% \item[base\_name:] |html:<base href = "href_string">|
+% \end{description}
+%
+% The \emph{href}, \emph{name} and \emph{end} commands are used to do
+% the basic hypertext operations of establishing links between sections
+% of documents. The \emph{image} command is intended (as with current
+% html viewers) to place an image of arbitrary graphical
+% format on the page in the current location. The \emph{base\_name}
+% command is be used to communicate to the \emph{dvi} viewer the full (URL)
+% location of the current document so that
+% files specified by relative URL's may be retrieved correctly.
+%
+% The \emph{href} and \emph{name} commands must be paired with an
+% \emph{end} command later in
+% the \TeX{} file --- the \TeX{} commands between the two ends of a pair
+% form an \emph{anchor} in the document. In the case of an \emph{href}
+% command, the \emph{anchor} is to be highlighted in the
+% \emph{dvi} viewer, and
+% when clicked on will cause the scene to shift to the destination
+% specified by \emph{href\_string}. The \emph{anchor} associated with a
+% name command represents a possible location to which other hypertext
+% links may refer, either as local references (of the form
+% \texttt{href="\#name\_string"} with the \emph{name\_string}
+% identical to the one in the name command) or as part of a URL (of the
+% form \emph{URL\#name\_string}). Here \emph{href\_string} is a valid
+% URL or local identifier, while name\_string could be any string at
+% all: the only caveat is that `|"|' characters should be escaped with a
+% backslash (|\|), and if it looks like a URL name it may cause
+% problems.
+%
+% \begin{macrocode}
+%<*hypertex>
+\providecommand*{\XR@ext}{dvi}
+\let\PDF@FinishDoc\ltx@empty
+\def\PDF@SetupDoc{%
+ \ifx\@baseurl\@empty
+ \else
+ \special{html:<base href="\@baseurl">}%
+ \fi
+}
+\Hy@WrapperDef\hyper@anchor#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \begingroup
+ \let\protect=\string
+ \hyper@chars
+ \special{html:<a name=%
+ \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}%
+ \endgroup
+ \Hy@activeanchortrue
+ \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink
+ \special{html:</a>}%
+ \Hy@activeanchorfalse
+ \Hy@RestoreLastskip
+}
+\Hy@WrapperDef\hyper@anchorstart#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \begingroup
+ \hyper@chars
+ \special{html:<a name=%
+ \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}%
+ \endgroup
+ \Hy@activeanchortrue
+}
+\def\hyper@anchorend{%
+ \special{html:</a>}%
+ \Hy@activeanchorfalse
+ \Hy@RestoreLastskip
+}
+\def\@urltype{url}
+\def\hyper@linkstart#1#2{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
+ \def\Hy@tempa{#1}%
+ \ifx\Hy@tempa\@urltype
+ \special{html:<a href=\hyper@quote#2\hyper@quote>}%
+ \else
+ \begingroup
+ \hyper@chars
+ \special{html:<a href=%
+ \hyper@quote\#\HyperDestNameFilter{#2}\hyper@quote>}%
+ \endgroup
+ \fi
+}
+\def\hyper@linkend{%
+ \special{html:</a>}%
+ \Hy@endcolorlink
+}
+\def\hyper@linkfile#1#2#3{%
+ \hyper@linkurl{#1}{\Hy@linkfileprefix#2\ifx\\#3\\\else\##3\fi}%
+}
+\def\hyper@linkurl#1#2{%
+% \end{macrocode}
+% If we want to raise up the final link |\special|, we need to
+% get its height; ask me why \LaTeX\ constructs make this totally
+% foul up, and make us revert to basic \TeX. I do not know.
+% \begin{macrocode}
+ \leavevmode
+ \ifHy@raiselinks
+ \Hy@SaveSpaceFactor
+ \Hy@SaveSavedSpaceFactor
+ \sbox\@tempboxa{\Hy@RestoreSpaceFactor#1}%
+ \Hy@RestoreSavedSpaceFactor
+ \@linkdim\dp\@tempboxa
+ \lower\@linkdim\hbox{%
+ \hyper@chars
+ \special{html:<a href=\hyper@quote#2\hyper@quote>}%
+ }%
+ \Hy@colorlink\@urlcolor
+ \Hy@RestoreSpaceFactor
+ #1%
+ \Hy@SaveSpaceFactor
+ \@linkdim\ht\@tempboxa
+% \end{macrocode}
+% Because of the interaction with the dvihps processor, we have to subtract a
+% little from the height. This is not clean, or checked. Check with Mark
+% Doyle about what gives here. It may not be needed with
+% the new dvips (Jan 1997).
+% \begin{macrocode}
+ \advance\@linkdim by -6.5\p@
+ \raise\@linkdim\hbox{\special{html:</a>}}%
+ \Hy@endcolorlink
+ \Hy@RestoreSpaceFactor
+ \else
+ \begingroup
+ \hyper@chars
+ \special{html:<a href=\hyper@quote#2\hyper@quote>}%
+ \Hy@colorlink\@urlcolor#1\Hy@xspace@end
+ \special{html:</a>}%
+ \Hy@endcolorlink
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+% Very poor implementation of \cs{hyper@link} without considering |#1|.
+% \begin{macrocode}
+\def\hyper@link#1#2#3{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \hyper@linkurl{#3}{\#\HyperDestNameFilter{#2}}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\hyper@image#1#2{%
+ \begingroup
+ \hyper@chars
+ \special{html:<img src=\hyper@quote#1\hyper@quote>}%
+ \endgroup
+}
+%</hypertex>
+%<*dviwindo>
+% \end{macrocode}
+% \subsection{dviwindo}
+% [This was developed by David Carlisle].
+% Within a file dviwindo hyperlinking is used, for external
+% URL's a call to |\wwwbrowser| is made. (You can define
+% this command before or after loading the hyperref package
+% if the default |c:/netscape/netscape| is not suitable)
+% Dviwindo could in fact handle external links to dvi files on
+% the same machine without calling a web browser, but that would
+% mean parsing the URL to recognise such, and this is currently
+% not done.
+%
+% This was more or less blindly copied from the hypertex cfg.
+% For dviwindo, \LaTeX{} must specify the size of the active area
+% for links. For some hooks this information is available
+% but for some, the start and end of the link are
+% specified separately in which case a fixed size area
+% of 10000000sp wide by |\baselineskip| high is used.
+% \begin{macrocode}
+\providecommand*{\XR@ext}{dvi}
+\providecommand*\wwwbrowser{c:\string\netscape\string\netscape}
+\Hy@WrapperDef\hyper@anchor#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \begingroup
+ \let\protect=\string
+ \special{mark: #1}%
+ \endgroup
+ \Hy@activeanchortrue
+ \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink
+ \Hy@activeanchorfalse
+ \Hy@RestoreLastskip
+}
+\Hy@WrapperDef\hyper@anchorstart#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \special{mark: #1}%
+ \Hy@activeanchortrue
+}
+\def\hyper@anchorend{%
+ \Hy@activeanchorfalse
+ \Hy@RestoreLastskip
+}
+\def\hyper@linkstart#1#2{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
+ \special{button: %
+ 10000000 %
+ \number\baselineskip\space
+ #2%
+ }%
+}
+\def\hyper@linkend{%
+ \Hy@endcolorlink
+}
+\def\hyper@link#1#2#3{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \leavevmode
+ \ifHy@raiselinks
+ \Hy@SaveSpaceFactor
+ \Hy@SaveSavedSpaceFactor
+ \sbox\@tempboxa{\Hy@RestoreSpaceFactor#3}%
+ \Hy@RestoreSavedSpaceFactor
+ \@linkdim\dp\@tempboxa
+ \lower\@linkdim\hbox{%
+ \special{button: %
+ \number\wd\@tempboxa\space
+ \number\ht\@tempboxa\space
+ #2%
+ }%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
+ \Hy@RestoreSpaceFactor
+ #3\Hy@xspace@end
+ \Hy@SaveSpaceFactor
+ \Hy@endcolorlink
+ }%
+ \@linkdim\ht\@tempboxa
+ \advance\@linkdim by -6.5\p@
+ \raise\@linkdim\hbox{}%
+ \Hy@RestoreSpaceFactor
+ \else
+ \special{button: %
+ \number\wd\@tempboxa\space
+ \number\ht\@tempboxa\space
+ #2%
+ }%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
+ #3\Hy@xspace@end
+ \Hy@endcolorlink
+ \fi
+}
+\def\hyper@linkurl#1#2{%
+ \begingroup
+ \hyper@chars
+ \leavevmode
+ \ifHy@raiselinks
+ \Hy@SaveSpaceFactor
+ \Hy@SaveSavedSpaceFactor
+ \sbox\@tempboxa{\Hy@RestoreSpaceFactor#1}%
+ \Hy@RestoreSavedSpaceFactor
+ \@linkdim\dp\@tempboxa
+ \lower\@linkdim\hbox{%
+ \special{button: %
+ \number\wd\@tempboxa\space
+ \number\ht\@tempboxa\space
+ launch: \wwwbrowser\space
+ #2%
+ }%
+ \Hy@colorlink\@urlcolor
+ \Hy@RestoreSpaceFactor
+ #1\Hy@xspace@end
+ \Hy@SaveSpaceFactor
+ \Hy@endcolorlink
+ }%
+ \@linkdim\ht\@tempboxa
+ \advance\@linkdim by -6.5\p@
+ \raise\@linkdim\hbox{}%
+ \Hy@RestoreSpaceFactor
+ \else
+ \special{button: %
+ \number\wd\@tempboxa\space
+ \number\ht\@tempboxa\space
+ launch: \wwwbrowser\space
+ #2%
+ }%
+ \Hy@colorlink\@urlcolor
+ #1\Hy@xspace@end
+ \Hy@endcolorlink
+ \fi
+ \endgroup
+}
+\def\hyper@linkfile#1#2#3{%
+ \begingroup
+ \hyper@chars
+ \leavevmode
+ \ifHy@raiselinks
+ \Hy@SaveSpaceFactor
+ \Hy@SaveSavedSpaceFactor
+ \sbox\@tempboxa{\Hy@RestoreSpaceFactor#1}%
+ \Hy@RestoreSavedSpaceFactor
+ \@linkdim\dp\@tempboxa
+ \lower\@linkdim\hbox{%
+ \special{button: %
+ \number\wd\@tempboxa\space
+ \number\ht\@tempboxa\space
+ #3,%
+ file: #2%
+ }%
+ \Hy@colorlink\@filecolor
+ \Hy@RestoreSpaceFactor
+ #1\Hy@xspace@end
+ \Hy@SaveSpaceFactor
+ \Hy@endcolorlink
+ }%
+ \@linkdim\ht\@tempboxa
+ \advance\@linkdim by -6.5\p@
+ \raise\@linkdim\hbox{}%
+ \Hy@RestoreSpaceFactor
+ \else
+ \special{button: %
+ \number\wd\@tempboxa\space
+ \number\ht\@tempboxa\space
+ #3,%
+ file: #2%
+ }%
+ \Hy@colorlink\@filecolor
+ #1\Hy@xspace@end
+ \Hy@endcolorlink
+ \fi
+ \endgroup
+}
+\HyInfo@AddonUnsupportedtrue
+\def\PDF@FinishDoc{%
+ \Hy@UseMaketitleInfos
+ \HyInfo@TrappedUnsupported
+ \special{PDF: Keywords \@pdfkeywords}%
+ \special{PDF: Title \@pdftitle}%
+ \special{PDF: Creator \@pdfcreator}%
+ \ifx\@pdfcreationdate\@empty
+ \else
+ \special{PDF: CreationDate \@pdfcreationdate}%
+ \fi
+ \ifx\@pdfmoddate\@empty
+ \else
+ \special{PDF: ModDate \@pdfmoddate}%
+ \fi
+ \special{PDF: Author \@pdfauthor}%
+ \ifx\@pdfproducer\relax
+ \else
+ \special{PDF: Producer \@pdfproducer}%
+ \fi
+ \special{PDF: Subject \@pdfsubject}%
+ \Hy@DisableOption{pdfauthor}%
+ \Hy@DisableOption{pdftitle}%
+ \Hy@DisableOption{pdfsubject}%
+ \Hy@DisableOption{pdfcreator}%
+ \Hy@DisableOption{addtopdfcreator}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfmoddate}%
+ \Hy@DisableOption{pdfproducer}%
+ \Hy@DisableOption{pdfkeywords}%
+ \Hy@DisableOption{pdftrapped}%
+ \Hy@DisableOption{pdfinfo}%
+}
+\def\PDF@SetupDoc{%
+ \ifx\@baseurl\@empty
+ \else
+ \special{PDF: Base \@baseurl}%
+ \fi
+ \ifx\@pdfpagescrop\@empty\else
+ \special{PDF: BBox \@pdfpagescrop}%
+ \fi
+ \def\Hy@temp{}%
+ \ifx\@pdfstartpage\@empty
+ \else
+ \ifx\@pdfstartview\@empty
+ \else
+ \edef\Hy@temp{%
+ ,Page=\@pdfstartpage
+ ,View=\@pdfstartview
+ }%
+ \fi
+ \fi
+ \edef\Hy@temp{%
+ \noexpand\pdfmark{%
+ pdfmark=/DOCVIEW,%
+ PageMode=/\@pdfpagemode
+ \Hy@temp
+ }%
+ }%
+ \Hy@temp
+ \ifx\@pdfpagescrop\@empty
+ \else
+ \pdfmark{pdfmark=/PAGES,CropBox=\@pdfpagescrop}%
+ \fi
+ \edef\Hy@temp{%
+ \ifHy@pdftoolbar\else /HideToolbar true\fi
+ \ifHy@pdfmenubar\else /HideMenubar true\fi
+ \ifHy@pdfwindowui\else /HideWindowUI true\fi
+ \ifHy@pdffitwindow /FitWindow true\fi
+ \ifHy@pdfcenterwindow /CenterWindow true\fi
+ \ifHy@pdfdisplaydoctitle /DisplayDocTitle true\fi
+ \Hy@UseNameKey{NonFullScreenPageMode}\@pdfnonfullscreenpagemode
+ \Hy@UseNameKey{Direction}\@pdfdirection
+ \Hy@UseNameKey{ViewArea}\@pdfviewarea
+ \Hy@UseNameKey{ViewClip}\@pdfviewclip
+ \Hy@UseNameKey{PrintArea}\@pdfprintarea
+ \Hy@UseNameKey{PrintClip}\@pdfprintclip
+ \Hy@UseNameKey{PrintScaling}\@pdfprintscaling
+ \Hy@UseNameKey{Duplex}\@pdfduplex
+ \ifx\@pdfpicktraybypdfsize\@empty
+ \else
+ /PickTrayByPDFSize \@pdfpicktraybypdfsize
+ \fi
+ \ifx\@pdfprintpagerange\@empty
+ \else
+ /PrintPageRange[\@pdfprintpagerange]%
+ \fi
+ \ifx\@pdfnumcopies\@empty
+ \else
+ /NumCopies \@pdfnumcopies
+ \fi
+ }%
+ \pdfmark{pdfmark=/PUT,%
+ Raw={%
+ \string{Catalog\string}<<%
+ \ifx\Hy@temp\@empty
+ \else
+ /ViewerPreferences<<\Hy@temp>>%
+ \fi
+ \Hy@UseNameKey{PageLayout}\@pdfpagelayout
+ \ifx\@pdflang\relax
+ \else
+ /Lang(\@pdflang)%
+ \fi
+ >>%
+ }%
+ }%
+}
+%</dviwindo>
+%<*dvipdfm|xetex>
+% \end{macrocode}
+% \subsection{dvipdfm/xetex dvi to PDF converter}
+% Provided by Mark Wicks (mwicks@kettering.edu)
+% \begin{macrocode}
+\providecommand*{\XR@ext}{pdf}
+\Hy@setbreaklinks{true}
+\def\HyPat@ObjRef{%
+ @[^ ]+%
+}
+\newsavebox{\pdfm@box}
+\def\@pdfm@mark#1{\special{pdf:#1}}
+\Hy@WrapperDef\@pdfm@dest#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \begingroup
+ \Hy@pstringdef\Hy@pstringDest{\HyperDestNameFilter{#1}}%
+ \def\x{XYZ}%
+ \ifx\x\@pdfview
+ \def\x{XYZ @xpos @ypos null}%
+ \else
+ \def\x{FitH}%
+ \ifx\x\@pdfview
+ \def\x{FitH @ypos}%
+ \else
+ \def\x{FitBH}%
+ \ifx\x\@pdfview
+ \def\x{FitBH @ypos}%
+ \else
+ \def\x{FitV}%
+ \ifx\x\@pdfview
+ \def\x{FitV @xpos}%
+ \else
+ \def\x{FitBV}%
+ \ifx\x\@pdfview
+ \def\x{FitBV @xpos}%
+ \else
+ \def\x{Fit}%
+ \ifx\x\@pdfview
+ \let\x\@pdfview
+ \else
+ \def\x{FitB}%
+ \ifx\x\@pdfview
+ \let\x\@pdfview
+ \else
+ \def\x{FitR}%
+ \ifx\x\@pdfview
+ \Hy@Warning{`pdfview=FitR' is not supported}%
+ \def\x{XYZ @xpos @ypos null}%
+ \else
+ \@onelevel@sanitize\@pdfview
+ \Hy@Warning{%
+ Unknown value `\@pdfview' for pdfview%
+ }%
+ \def\x{XYZ @xpos @ypos null}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \@pdfm@mark{dest (\Hy@pstringDest) [@thispage /\x]}%
+ \endgroup
+ \Hy@RestoreLastskip
+}
+\providecommand*\@pdfview{XYZ}
+\providecommand*\@pdfborder{0 0 1}
+\providecommand*\@pdfborderstyle{}
+\def\hyper@anchor#1{%
+ \@pdfm@dest{#1}%
+}
+\def\hyper@anchorstart#1{%
+ \Hy@activeanchortrue
+ \@pdfm@dest{#1}%
+}
+\def\hyper@anchorend{%
+ \Hy@activeanchorfalse
+}
+% \end{macrocode}
+% \begin{macrocode}
+\newcounter{Hy@AnnotLevel}
+% \end{macrocode}
+% \begin{macrocode}
+\ifHy@ocgcolorlinks
+ \def\OBJ@OCG@view{@OCG@view}%
+ \@pdfm@mark{%
+ obj \OBJ@OCG@view <<%
+ /Type/OCG%
+ /Name(View)%
+ /Usage<<%
+ /Print<<%
+ /PrintState/OFF%
+ >>%
+ /View<<%
+ /ViewState/ON%
+ >>%
+ >>%
+ >>%
+ }%
+ \@pdfm@mark{close \OBJ@OCG@view}%
+ \def\OBJ@OCG@print{@OCG@print}%
+ \@pdfm@mark{%
+ obj \OBJ@OCG@print <<%
+ /Type/OCG%
+ /Name(Print)%
+ /Usage<<%
+ /Print<<%
+ /PrintState/ON%
+ >>%
+ /View<<%
+ /ViewState/OFF%
+ >>%
+ >>%
+ >>%
+ }%
+ \@pdfm@mark{close \OBJ@OCG@print}%
+ \def\OBJ@OCGs{@OCGs}%
+ \@pdfm@mark{%
+ obj \OBJ@OCGs [%
+ \OBJ@OCG@view\space\OBJ@OCG@print
+ ]%
+ }%
+ \@pdfm@mark{close \OBJ@OCGs}%
+ \@pdfm@mark{%
+ put @catalog <<%
+ /OCProperties<<%
+ /OCGs \OBJ@OCGs
+ /D<<%
+ /OFF[\OBJ@OCG@print]%
+ /AS[%
+ <<%
+ /Event/View%
+ /OCGs \OBJ@OCGs
+ /Category[/View]%
+ >>%
+ <<%
+ /Event/Print%
+ /OCGs \OBJ@OCGs
+ /Category[/Print]%
+ >>%
+ <<%
+ /Event/Export%
+ /OCGs \OBJ@OCGs
+ /Category[/Print]%
+ >>%
+ ]%
+ >>%
+ >>%
+ >>%
+ }%
+ \AtBeginShipout{%
+ \setbox\AtBeginShipoutBox=\hbox{%
+ \copy\AtBeginShipoutBox
+ \@pdfm@mark{%
+ put @resources <<%
+ /Properties<<%
+ /OCView \OBJ@OCG@view
+ /OCPrint \OBJ@OCG@print
+ >>%
+ >>%
+ }%
+ }%
+ }%
+ \Hy@AtBeginDocument{%
+ \def\Hy@colorlink#1{%
+ \begingroup
+ \ifHy@ocgcolorlinks
+ \def\Hy@ocgcolor{#1}%
+ \setbox0=\hbox\bgroup\color@begingroup
+ \else
+ \HyColor@UseColor#1%
+ \fi
+ }%
+ \def\Hy@endcolorlink{%
+ \ifHy@ocgcolorlinks
+ \color@endgroup\egroup
+ \mbox{%
+ \@pdfm@mark{content /OC/OCPrint BDC}%
+ \rlap{\copy0}%
+ \@pdfm@mark{content EMC/OC/OCView BDC}%
+ \begingroup
+ \expandafter\HyColor@UseColor\Hy@ocgcolor
+ \box0 %
+ \endgroup
+ \@pdfm@mark{content EMC}%
+ }%
+ \fi
+ \endgroup
+ }%
+ }%
+\else
+ \Hy@DisableOption{ocgcolorlinks}%
+\fi
+% \end{macrocode}
+% Use primitive counter arithmetic here to avoid amsmath
+% redefining |\stepcounter| (github issue/13)
+% \begin{macrocode}
+\def\Hy@BeginAnnot#1{%
+ \global\advance\c@Hy@AnnotLevel\@ne
+ \ifnum\c@Hy@AnnotLevel=\@ne
+ #1%
+ \fi
+}
+\def\Hy@EndAnnot{%
+ \ifnum\value{Hy@AnnotLevel}=\@ne
+ \Hy@endcolorlink
+ \@pdfm@mark{eann}%
+ \fi
+ \global\advance\c@Hy@AnnotLevel\m@ne
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\Hy@undefinedname{UNDEFINED}
+\def\hyper@linkstart#1#2{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \leavevmode
+ \Hy@BeginAnnot{%
+ \protected@edef\Hy@testname{#2}%
+ \ifx\Hy@testname\@empty
+ \Hy@Warning{%
+ Empty destination name,\MessageBreak
+ using `\Hy@undefinedname'%
+ }%
+ \let\Hy@testname\Hy@undefinedname
+ \else
+ \Hy@pstringdef\Hy@testname{%
+ \expandafter\HyperDestNameFilter\expandafter{%
+ \Hy@testname
+ }%
+ }%
+ \fi
+ \@pdfm@mark{%
+ bann<<%
+ /Type/Annot%
+ /Subtype/Link%
+ \ifHy@pdfa /F 4\fi
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \expandafter\ifx\csname @#1bordercolor\endcsname\relax
+ \else
+ /C[\csname @#1bordercolor\endcsname]%
+ \fi
+ /A<<%
+ /S/GoTo%
+ /D(\Hy@testname)%
+ \Hy@href@nextactionraw
+ >>%
+ >>%
+ }%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
+ }%
+}
+\def\hyper@linkend{\Hy@EndAnnot}%
+\def\hyper@link#1#2#3{%
+ \hyper@linkstart{#1}{#2}#3\Hy@xspace@end\hyper@linkend
+}
+\def\hyper@linkfile#1#2#3{%
+ \leavevmode
+ \Hy@BeginAnnot{%
+ \def\Hy@pstringF{#2}%
+ \Hy@CleanupFile\Hy@pstringF
+ \Hy@pstringdef\Hy@pstringF\Hy@pstringF
+ \Hy@pstringdef\Hy@pstringD{#3}%
+ \Hy@MakeRemoteAction
+ \@pdfm@mark{%
+ bann<<%
+ /Type/Annot%
+ /Subtype/Link%
+ \ifHy@pdfa /F 4\fi
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \ifx\@filebordercolor\relax
+ \else
+ /C[\@filebordercolor]%
+ \fi
+ /A<<%
+ /S/GoToR%
+ /F(\Hy@pstringF)%
+ /D%
+ \ifx\\#3\\%
+ [\Hy@href@page\@pdfremotestartview]%
+ \else
+ (\Hy@pstringD)%
+ \fi
+ \Hy@SetNewWindow
+ \Hy@href@nextactionraw
+ >>%
+ >>%
+ }%
+ \Hy@colorlink\@filecolor
+ }%
+ #1\Hy@xspace@end
+ \Hy@EndAnnot
+}
+\def\@hyper@launch run:#1\\#2#3{% filename, anchor text linkname
+ \leavevmode
+ \Hy@BeginAnnot{%
+ \Hy@pstringdef\Hy@pstringF{#1}%
+ \Hy@pstringdef\Hy@pstringP{#3}%
+ \@pdfm@mark{%
+ bann<<%
+ /Type/Annot%
+ /Subtype/Link%
+ \ifHy@pdfa /F 4\fi
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \ifx\@runbordercolor\relax
+ \else
+ /C[\@runbordercolor]%
+ \fi
+ /A<<%
+ /F(\Hy@pstringF)%
+ /S/Launch%
+ \Hy@SetNewWindow
+ \ifx\\#3\\%
+ \else
+ /Win<</P(\Hy@pstringP)/F(\Hy@pstringF)>>%
+ \fi
+ \Hy@href@nextactionraw
+ >>%
+ >>%
+ }%
+ \Hy@colorlink\@runcolor
+ }%
+ #2\Hy@xspace@end
+ \Hy@EndAnnot
+}
+\def\hyper@linkurl#1#2{%
+ \leavevmode
+ \Hy@BeginAnnot{%
+ \Hy@pstringdef\Hy@pstringURI{#2}%
+ \@pdfm@mark{%
+ bann<<%
+ /Type/Annot%
+ /Subtype/Link%
+ \ifHy@pdfa /F 4\fi
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \ifx\@urlbordercolor\relax
+ \else
+ /C[\@urlbordercolor]%
+ \fi
+ /A<<%
+ /S/URI%
+ /URI(\Hy@pstringURI)%
+ \ifHy@href@ismap
+ /IsMap true%
+ \fi
+ \Hy@href@nextactionraw
+ >>%
+ >>%
+ }%
+ \Hy@colorlink\@urlcolor
+ }%
+ #1\Hy@xspace@end
+ \Hy@EndAnnot
+}
+\def\Acrobatmenu#1#2{%
+ \Hy@Acrobatmenu{#1}{#2}{%
+ \Hy@BeginAnnot{%
+ \EdefEscapeName\Hy@temp@menu{#1}%
+ \@pdfm@mark{%
+ bann<<%
+ /Type/Annot%
+ /Subtype/Link%
+ \ifHy@pdfa /F 4\fi
+ \Hy@setpdfborder
+ \Hy@setpdfhighlight
+ \ifx\@menubordercolor\relax
+ \else
+ /C[\@menubordercolor]%
+ \fi
+ /A<<%
+ /S/Named%
+ /N/\Hy@temp@menu
+ \Hy@href@nextactionraw
+ >>%
+ >>%
+ }%
+ \Hy@colorlink\@menucolor
+ }%
+ #2\Hy@xspace@end
+ \Hy@EndAnnot
+ }%
+}
+
+\def\PDF@FinishDoc{%
+ \Hy@UseMaketitleInfos
+ \HyInfo@GenerateAddons
+ \@pdfm@mark{%
+ docinfo<<%
+ /Title(\@pdftitle)%
+ /Subject(\@pdfsubject)%
+ /Creator(\@pdfcreator)%
+ \ifx\@pdfcreationdate\@empty
+ \else
+ /CreationDate(\@pdfcreationdate)%
+ \fi
+ \ifx\@pdfmoddate\@empty
+ \else
+ /ModDate(\@pdfmoddate)%
+ \fi
+ /Author(\@pdfauthor)%
+ \ifx\@pdfproducer\relax
+ \else
+ /Producer(\@pdfproducer)%
+ \fi
+ /Keywords(\@pdfkeywords)%
+ \ifx\@pdftrapped\@empty
+ \else
+ /Trapped/\@pdftrapped
+ \fi
+ \HyInfo@Addons
+ >>%
+ }%
+ \Hy@DisableOption{pdfauthor}%
+ \Hy@DisableOption{pdftitle}%
+ \Hy@DisableOption{pdfsubject}%
+ \Hy@DisableOption{pdfcreator}%
+ \Hy@DisableOption{addtopdfcreator}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfmoddate}%
+ \Hy@DisableOption{pdfproducer}%
+ \Hy@DisableOption{pdfkeywords}%
+ \Hy@DisableOption{pdftrapped}%
+ \Hy@DisableOption{pdfinfo}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\PDF@SetupDoc{%
+ \edef\Hy@temp{%
+ \ifHy@pdftoolbar\else /HideToolbar true\fi
+ \ifHy@pdfmenubar\else /HideMenubar true\fi
+ \ifHy@pdfwindowui\else /HideWindowUI true\fi
+ \ifHy@pdffitwindow /FitWindow true\fi
+ \ifHy@pdfcenterwindow /CenterWindow true\fi
+ \ifHy@pdfdisplaydoctitle /DisplayDocTitle true\fi
+ \Hy@UseNameKey{NonFullScreenPageMode}\@pdfnonfullscreenpagemode
+ \Hy@UseNameKey{Direction}\@pdfdirection
+ \Hy@UseNameKey{ViewArea}\@pdfviewarea
+ \Hy@UseNameKey{ViewClip}\@pdfviewclip
+ \Hy@UseNameKey{PrintArea}\@pdfprintarea
+ \Hy@UseNameKey{PrintClip}\@pdfprintclip
+ \Hy@UseNameKey{PrintScaling}\@pdfprintscaling
+ \Hy@UseNameKey{Duplex}\@pdfduplex
+ \ifx\@pdfpicktraybypdfsize\@empty
+ \else
+ /PickTrayByPDFSize \@pdfpicktraybypdfsize
+ \fi
+ \ifx\@pdfprintpagerange\@empty
+ \else
+ /PrintPageRange[\@pdfprintpagerange]%
+ \fi
+ \ifx\@pdfnumcopies\@empty
+ \else
+ /NumCopies \@pdfnumcopies
+ \fi
+ }%
+ \Hy@pstringdef\Hy@pstringB{\@baseurl}%
+ \@pdfm@mark{%
+ docview<<%
+ \ifx\@pdfstartpage\@empty
+ \else
+ \ifx\@pdfstartview\@empty
+ \else
+ /OpenAction[@page\@pdfstartpage\@pdfstartview]%
+ \fi
+ \fi
+ \ifx\@baseurl\@empty
+ \else
+ /URI<</Base(\Hy@pstringB)>>%
+ \fi
+ /PageMode/\@pdfpagemode
+ \ifx\Hy@temp\@empty
+ \else
+ /ViewerPreferences<<\Hy@temp>>%
+ \fi
+ \Hy@UseNameKey{PageLayout}\@pdfpagelayout
+ \ifx\@pdflang\relax
+ \else
+ /Lang(\@pdflang)%
+ \fi
+ >>%
+ }%
+ \ifx\@pdfpagescrop\@empty
+ \else
+ \@pdfm@mark{put @pages <</CropBox[\@pdfpagescrop]>>}%
+ \fi
+}
+%</dvipdfm|xetex>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*dvipdfm|xetex>
+% \end{macrocode}
+% \begin{macro}{\hyper@pagetransition}
+% \begin{macrocode}
+\def\hyper@pagetransition{%
+ \ifx\@pdfpagetransition\relax
+ \else
+ \ifx\@pdfpagetransition\@empty
+ \else
+ \special{pdf:put @thispage %
+ <</Trans<</S/\@pdfpagetransition>>>>%
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\hyper@pageduration}
+% \begin{macrocode}
+\def\hyper@pageduration{%
+ \ifx\@pdfpageduration\relax
+ \else
+ \ifx\@pdfpageduration\@empty
+ \else
+ \special{pdf:put @thispage %
+ <</Dur \@pdfpageduration>>%
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\hyper@pagehidden}
+% \begin{macrocode}
+\def\hyper@pagehidden{%
+ \ifHy@useHidKey
+ \special{pdf:put @thispage %
+ <</Hid \ifHy@pdfpagehidden true\else false\fi>>%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\g@addto@macro\Hy@EveryPageBoxHook{%
+ \hyper@pagetransition
+ \hyper@pageduration
+ \hyper@pagehidden
+}
+% \end{macrocode}
+% \begin{macrocode}
+%</dvipdfm|xetex>
+% \end{macrocode}
+%
+% Xe\TeX\ uses pdf\TeX's method \cs{pdfpagewidth}
+% and \cs{pdfpageheight} for setting the paper size.
+% \begin{macrocode}
+%<*dvipdfm>
+\AtBeginShipoutFirst{%
+ \ifHy@setpagesize
+ \begingroup
+ \@ifundefined{stockwidth}{%
+ \ifdim\paperwidth>\z@
+ \ifdim\paperheight>\z@
+ \special{papersize=\the\paperwidth,\the\paperheight}%
+ \fi
+ \fi
+ }{%
+ \ifdim\stockwidth>\z@
+ \ifdim\stockheight>\z@
+ \special{papersize=\the\stockwidth,\the\stockheight}%
+ \fi
+ \fi
+ }%
+ \endgroup
+ \fi
+ \Hy@DisableOption{setpagesize}%
+}
+%</dvipdfm>
+% \end{macrocode}
+%
+% \subsection{VTeX typesetting system}
+% Provided by MicroPress, May 1998.
+% They require VTeX version 6.02 or newer;
+% see \url{http://www.micropress-inc.com/} for details.
+% \begin{macrocode}
+%<*vtexhtml>
+\providecommand*{\XR@ext}{htm}
+\RequirePackage{vtexhtml}
+\newif\if@Localurl
+\let\PDF@FinishDoc\ltx@empty
+\def\PDF@SetupDoc{%
+ \ifx\@baseurl\@empty
+ \else
+ \special{!direct <base href="\@baseurl">}%
+ \fi
+}
+\def\@urltype{url}
+\def\hyper@link#1#2#3{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \leavevmode
+ \special{!direct <a href=%
+ \hyper@quote\hyper@hash\HyperDestNameFilter{#2}\hyper@quote>}%
+ #3\Hy@xspace@end
+ \special{!direct </a>}%
+}
+\def\hyper@linkurl#1#2{%
+ \begingroup
+ \hyper@chars
+ \leavevmode
+ \MathBSuppress=1\relax
+ \special{!direct <a href=%
+ \hyper@quote\HyperDestNameFilter{#2}\hyper@quote>}%
+ #1\Hy@xspace@end
+ \MathBSuppress=0\relax
+ \special{!direct </a>}%
+ \endgroup
+}
+\def\hyper@linkfile#1#2#3{%
+ \hyper@linkurl{#1}{\Hy@linkfileprefix#2\ifx\\#3\\\else\##3\fi}%
+}
+\def\hyper@linkstart#1#2{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \def\Hy@tempa{#1}\ifx\Hy@tempa\@urltype
+ \@Localurltrue
+ \special{!direct <a href=\hyper@quote#2\hyper@quote>}%
+ \else
+ \@Localurlfalse
+ \begingroup
+ \hyper@chars
+ \special{!aref \HyperDestNameFilter{#2}}%
+ \endgroup
+ \fi
+}
+\def\hyper@linkend{%
+ \if@Localurl
+ \special{!endaref}%
+ \else
+ \special{!direct </a>}%
+ \fi
+}
+\Hy@WrapperDef\hyper@anchorstart#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \begingroup
+ \hyper@chars
+ \special{!aname #1}%
+ \special{!direct <a name=%
+ \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}%
+ \endgroup
+ \Hy@activeanchortrue
+}
+\def\hyper@anchorend{%
+ \special{!direct </a>}%
+ \Hy@activeanchorfalse
+ \Hy@RestoreLastskip
+}
+\Hy@WrapperDef\hyper@anchor#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \begingroup
+ \let\protect=\string
+ \hyper@chars
+ \leavevmode
+ \special{!aname #1}%
+ \special{!direct <a name=%
+ \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}%
+ \endgroup
+ \Hy@activeanchortrue
+ \bgroup\anchor@spot\egroup
+ \special{!direct </a>}%
+ \Hy@activeanchorfalse
+ \Hy@RestoreLastskip
+}
+\def\@Form[#1]{%
+ \Hy@Message{Sorry, TeXpider does not yet support FORMs}%
+}
+\let\@endForm\ltx@empty
+\def\@Gauge[#1]#2#3#4{% parameters, label, minimum, maximum
+ \Hy@Message{Sorry, TeXpider does not yet support FORM gauges}%
+}
+\def\@TextField[#1]#2{% parameters, label
+ \Hy@Message{Sorry, TeXpider does not yet support FORM text fields}%
+}
+\def\@CheckBox[#1]#2{% parameters, label
+ \Hy@Message{Sorry, TeXpider does not yet support FORM checkboxes}%
+}
+\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices
+ \Hy@Message{Sorry, TeXpider does not yet support FORM choice menus}%
+}
+\def\@PushButton[#1]#2{% parameters, label
+ \Hy@Message{Sorry, TeXpider does not yet support FORM pushbuttons}%
+}
+\def\@Reset[#1]#2{%
+ \Hy@Message{Sorry, TeXpider does not yet support FORMs}%
+}
+\def\@Submit[#1]#2{%
+ \Hy@Message{Sorry, TeXpider does not yet support FORMs}%
+}
+%</vtexhtml>
+% \end{macrocode}
+% \begin{macrocode}
+%<*vtex>
+% \end{macrocode}
+% VTeX version 6.68 supports \cs{mediawidth} and \cs{mediaheight}.
+% The \cs{ifx} construct is better than a \cs{csname}, because
+% it avoids the definition and the hash table entry of a
+% previous undefined macro.
+% \begin{macrocode}
+\ifx\mediaheight\@undefined
+\else
+ \ifx\mediaheight\relax
+ \else
+ \ifHy@setpagesize
+ \providecommand*{\VTeXInitMediaSize}{%
+ \ltx@IfUndefined{stockwidth}{%
+ \ifdim\paperheight>0pt %
+ \setlength\mediaheight\paperheight
+ \fi
+ \ifdim\paperheight>0pt %
+ \setlength\mediawidth\paperwidth
+ \fi
+ }{%
+ \ifdim\stockheight>0pt %
+ \setlength\mediaheight\stockheight
+ \fi
+ \ifdim\stockwidth>0pt %
+ \setlength\mediawidth\stockwidth
+ \fi
+ }%
+ }%
+ \Hy@AtBeginDocument{\VTeXInitMediaSize}%
+ \fi
+ \Hy@DisableOption{setpagesize}%
+ \fi
+\fi
+% \end{macrocode}
+% Older versions of VTeX require |xyz| in lower case.
+% \begin{macrocode}
+\providecommand*\@pdfview{xyz}
+\providecommand*\@pdfborder{0 0 1}
+\providecommand*\@pdfborderstyle{}
+\let\CurrentBorderColor\@linkbordercolor
+\Hy@WrapperDef\hyper@anchor#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \begingroup
+ \let\protect=\string
+ \hyper@chars
+ \special{!aname \HyperDestNameFilter{#1};\@pdfview}%
+ \endgroup
+ \Hy@activeanchortrue
+ \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink
+ \Hy@activeanchorfalse
+ \Hy@RestoreLastskip
+}
+\Hy@WrapperDef\hyper@anchorstart#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \begingroup
+ \hyper@chars
+ \special{!aname \HyperDestNameFilter{#1};\@pdfview}%
+ \endgroup
+ \Hy@activeanchortrue
+}
+\def\hyper@anchorend{%
+ \Hy@activeanchorfalse
+ \Hy@RestoreLastskip
+}
+\def\@urltype{url}
+\def\Hy@undefinedname{UNDEFINED}
+\def\hyper@linkstart#1#2{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \Hy@pstringdef\Hy@pstringURI{#2}%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
+ \ltx@IfUndefined{@#1bordercolor}{%
+ \let\CurrentBorderColor\relax
+ }{%
+ \edef\CurrentBorderColor{%
+ \csname @#1bordercolor\endcsname
+ }%
+ }%
+ \def\Hy@tempa{#1}%
+ \ifx\Hy@tempa\@urltype
+ \special{!%
+ aref <u=/Type/Action/S/URI/URI(\Hy@pstringURI)%
+ \ifHy@href@ismap
+ /IsMap true%
+ \fi
+ \Hy@href@nextactionraw
+ >;%
+ a=<%
+ \ifHy@pdfa /F 4\fi
+ \Hy@setpdfborder
+ \ifx\CurrentBorderColor\relax
+ \else
+ /C [\CurrentBorderColor]%
+ \fi
+ >%
+ }%
+ \else
+ \protected@edef\Hy@testname{#2}%
+ \ifx\Hy@testname\@empty
+ \Hy@Warning{%
+ Empty destination name,\MessageBreak
+ using `\Hy@undefinedname'%
+ }%
+ \let\Hy@testname\Hy@undefinedname
+ \fi
+ \special{!%
+ aref \expandafter\HyperDestNameFilter
+ \expandafter{\Hy@testname};%
+ a=<%
+ \ifHy@pdfa /F 4\fi
+ \Hy@setpdfborder
+ \ifx\CurrentBorderColor\relax
+ \else
+ /C [\CurrentBorderColor]%
+ \fi
+ >%
+ }%
+ \fi
+}
+\def\hyper@linkend{%
+ \special{!endaref}%
+ \Hy@endcolorlink
+}
+\def\hyper@linkfile#1#2#3{%
+ \leavevmode
+ \def\Hy@pstringF{#2}%
+ \Hy@CleanupFile\Hy@pstringF
+ \special{!%
+ aref <%
+ \ifnum\Hy@VTeXversion>753 \ifHy@pdfnewwindow n\fi\fi
+ f=\Hy@pstringF>#3;%
+ a=<%
+ \ifHy@pdfa /F 4\fi
+ \Hy@setpdfborder
+ \ifx\@filebordercolor\relax
+ \else
+ /C [\@filebordercolor]%
+ \fi
+ >%
+ }%
+ \Hy@colorlink\@filecolor
+ #1\Hy@xspace@end
+ \Hy@endcolorlink
+ \special{!endaref}%
+}
+\def\hyper@linkurl#1#2{%
+ \begingroup
+ \Hy@pstringdef\Hy@pstringURI{#2}%
+ \hyper@chars
+ \leavevmode
+ \special{!%
+ aref <u=/Type/Action/S/URI/URI(\Hy@pstringURI)%
+ \ifHy@href@ismap
+ /IsMap true%
+ \fi
+ \Hy@href@nextactionraw
+ >;%
+ a=<%
+ \ifHy@pdfa /F 4\fi
+ \Hy@setpdfborder
+ \ifx\@urlbordercolor\relax
+ \else
+ /C [\@urlbordercolor]%
+ \fi
+ >%
+ }%
+ \Hy@colorlink\@urlcolor
+ #1\Hy@xspace@end
+ \Hy@endcolorlink
+ \special{!endaref}%
+ \endgroup
+}
+\def\hyper@link#1#2#3{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \ltx@IfUndefined{@#1bordercolor}{%
+ \let\CurrentBorderColor\relax
+ }{%
+ \edef\CurrentBorderColor{\csname @#1bordercolor\endcsname}%
+ }%
+ \leavevmode
+ \protected@edef\Hy@testname{#2}%
+ \ifx\Hy@testname\@empty
+ \Hy@Warning{%
+ Empty destination name,\MessageBreak
+ using `\Hy@undefinedname'%
+ }%
+ \let\Hy@testname\Hy@undefinedname
+ \fi
+ \special{!%
+ aref \expandafter\HyperDestNameFilter
+ \expandafter{\Hy@testname};%
+ a=<%
+ \ifHy@pdfa /F 4\fi
+ \Hy@setpdfborder
+ \ifx\CurrentBorderColor\relax
+ \else
+ /C [\CurrentBorderColor]%
+ \fi
+ >%
+ }%
+ \expandafter
+ \Hy@colorlink\csname @#1color\endcsname
+ #3\Hy@xspace@end
+ \Hy@endcolorlink
+ \special{!endaref}%
+}
+\def\hyper@image#1#2{%
+ \hyper@linkurl{#2}{#1}%
+}
+\def\@hyper@launch run:#1\\#2#3{%
+ \Hy@pstringdef\Hy@pstringF{#1}%
+ \Hy@pstringdef\Hy@pstringP{#3}%
+ \leavevmode
+ \special{!aref %
+ <u=%
+ /Type/Action%
+ /S/Launch%
+ /F(\Hy@pstringF)%
+ \Hy@SetNewWindow
+ \ifx\\#3\\%
+ \else
+ /Win<</F(\Hy@pstringF)/P(\Hy@pstringP)>>%
+ \fi
+ \Hy@href@nextactionraw
+ >;%
+ a=<%
+ \ifHy@pdfa /F 4\fi
+ \Hy@setpdfborder
+ \ifx\@runbordercolor\relax
+ \else
+ /C[\@runbordercolor]%
+ \fi
+ >%
+ }%
+ \Hy@colorlink\@runcolor
+ #2\Hy@xspace@end
+ \Hy@endcolorlink
+ \special{!endaref}%
+}
+\def\Acrobatmenu#1#2{%
+ \EdefEscapeName\Hy@temp@menu{#1}%
+ \Hy@Acrobatmenu{#1}{#2}{%
+ \special{!%
+ aref <u=/S /Named /N /\Hy@temp@menu>;%
+ a=<%
+ \ifHy@pdfa /F 4\fi
+ \Hy@setpdfborder
+ \ifx\@menubordercolor\relax
+ \else
+ /C[\@menubordercolor]%
+ \fi
+ >%
+ }%
+ \Hy@colorlink\@menucolor
+ #2\Hy@xspace@end
+ \Hy@endcolorlink
+ \special{!endaref}%
+ }%
+}
+% \end{macrocode}
+%
+% The following code (transition effects) is
+% made by Alex Kostin.
+%
+% The code below makes sense for V\TeX\ 7.02 or later.
+%
+% Please never use |\@ifundefined{VTeXversion}{..}{..}| \emph{globally}.
+% \begin{macrocode}
+\ifnum\Hy@VTeXversion<702 %
+\else
+ \def\hyper@pagetransition{%
+ \ifx\@pdfpagetransition\relax
+ \else
+ \ifx\@pdfpagetransition\@empty
+% \end{macrocode}
+%
+% Standard incantation.
+%
+% 1. Does an old entry have to be deleted?
+% 2. If 1=yes, how to delete?
+% \begin{macrocode}
+ \else
+ \hvtex@parse@trans\@pdfpagetransition
+ \fi
+ \fi
+ }%
+% \end{macrocode}
+%
+% I have to write an ``honest'' parser to convert raw PDF code
+% into V\TeX\ |\special|. (AVK)
+%
+% Syntax of V\TeX\ |\special{!trans <transition_effect>}|:
+%\begin{verbatim}
+%<transition_effect> ::= <transition_style>[,<transition_duration>]
+%<transition_style> ::= <Blinds_effect> | <Box_effect> |
+% <Dissolve_effect> | <Glitter_effect> |
+% <Split_effect> | <Wipe_effect>
+%<Blinds_effect> ::= B[<effect_dimension>]
+%<Box_effect> ::= X[<effect_motion>]
+%<Dissolve_effect> ::= D
+%<Glitter_effect> ::= G[<effect_direction>]
+%<Split_effect> ::= S[<effect_motion>][<effect_dimension>]
+%<Wipe_effect> ::= W[<effect_direction>]
+%<Replace_effect> ::= R
+%<effect_direction> ::= <number>
+%<effect_dimension> ::= H | V
+%<effect_motion> ::= I | O
+%<transition_duration> ::= <number>
+%\end{verbatim}
+%
+% Transition codes:
+% \begin{macrocode}
+ \def\hvtex@trans@effect@Blinds{\def\hvtex@trans@code{B}}%
+ \def\hvtex@trans@effect@Box{\def\hvtex@trans@code{X}}%
+ \def\hvtex@trans@effect@Dissolve{\def\hvtex@trans@code{D}}%
+ \def\hvtex@trans@effect@Glitter{\def\hvtex@trans@code{G}}%
+ \def\hvtex@trans@effect@Split{\def\hvtex@trans@code{S}}%
+ \def\hvtex@trans@effect@Wipe{\def\hvtex@trans@code{W}}%
+ \def\hvtex@trans@effect@R{\def\hvtex@trans@code{R}}%
+% \end{macrocode}
+%
+% Optional parameters:
+% \begin{macrocode}
+ \def\hvtex@par@dimension{/Dm}%
+ \def\hvtex@par@direction{/Di}%
+ \def\hvtex@par@duration{/D}%
+ \def\hvtex@par@motion{/M}%
+% \end{macrocode}
+%
+% Tokenizer:
+% \begin{macrocode}
+ \def\hvtex@gettoken{%
+ \expandafter\hvtex@gettoken@\hvtex@buffer\@nil
+ }%
+% \end{macrocode}
+%
+% Notice that tokens in the input buffer must be space delimited.
+% \begin{macrocode}
+ \def\hvtex@gettoken@#1 #2\@nil{%
+ \edef\hvtex@token{#1}%
+ \edef\hvtex@buffer{#2}%
+ }%
+ \def\hvtex@parse@trans#1{%
+% \end{macrocode}
+%
+% Initializing code:
+% \begin{macrocode}
+ \let\hvtex@trans@code\@empty
+ \let\hvtex@param@dimension\@empty
+ \let\hvtex@param@direction\@empty
+ \let\hvtex@param@duration\@empty
+ \let\hvtex@param@motion\@empty
+ \edef\hvtex@buffer{#1\space}%
+% \end{macrocode}
+% First token is the PDF transition name without escape.
+% \begin{macrocode}
+ \hvtex@gettoken
+ \ifx\hvtex@token\@empty
+% \end{macrocode}
+% Leading space(s)?
+% \begin{macrocode}
+ \ifx\hvtex@buffer\@empty
+% \end{macrocode}
+% The buffer is empty, nothing to do.
+% \begin{macrocode}
+ \else
+ \hvtex@gettoken
+ \fi
+ \fi
+ \csname hvtex@trans@effect@\hvtex@token\endcsname
+% \end{macrocode}
+% Now is time to parse optional parameters.
+% \begin{macrocode}
+ \hvtex@trans@params
+ }%
+% \end{macrocode}
+%
+% Reentrable macro to parse optional parameters.
+% \begin{macrocode}
+ \def\hvtex@trans@params{%
+ \ifx\hvtex@buffer\@empty
+ \else
+ \hvtex@gettoken
+ \let\hvtex@trans@par\hvtex@token
+ \ifx\hvtex@buffer\@empty
+ \else
+ \hvtex@gettoken
+ \ifx\hvtex@trans@par\hvtex@par@duration
+% \end{macrocode}
+% /D is the effect duration in seconds. V\TeX\ special
+% takes it in milliseconds.
+% \begin{macrocode}
+ \let\hvtex@param@duration\hvtex@token
+ \else \ifx\hvtex@trans@par\hvtex@par@motion
+% \end{macrocode}
+% /M can be either /I or /O
+% \begin{macrocode}
+ \expandafter\edef\expandafter\hvtex@param@motion
+ \expandafter{\expandafter\@gobble\hvtex@token}%
+ \else \ifx\hvtex@trans@par\hvtex@par@dimension
+% \end{macrocode}
+% /Dm can be either /H or /V
+% \begin{macrocode}
+ \expandafter\edef\expandafter\hvtex@param@dimension
+ \expandafter{\expandafter\@gobble\hvtex@token}%
+ \else \ifx\hvtex@trans@par\hvtex@par@direction
+% \end{macrocode}
+%
+% Valid values for /Di are 0, 270, 315 (the Glitter effect) or
+% 0, 90, 180, 270 (the Wipe effect).
+% \begin{macrocode}
+ \let\hvtex@param@direction\hvtex@token
+ \fi\fi\fi\fi
+ \fi
+ \fi
+ \ifx\hvtex@buffer\@empty
+ \let\next\hvtex@produce@trans
+ \else
+ \let\next\hvtex@trans@params
+ \fi
+ \next
+ }%
+% \end{macrocode}
+%
+% Merge |<transition_effect>| and issue the special when possible.
+% Too lazy to validate optional parameters.
+% \begin{macrocode}
+ \def\hvtex@produce@trans{%
+ \let\vtex@trans@special\@empty
+ \if S\hvtex@trans@code
+ \edef\vtex@trans@special{\hvtex@trans@code
+ \hvtex@param@dimension\hvtex@param@motion}%
+ \else\if B\hvtex@trans@code
+ \edef\vtex@trans@special{%
+ \hvtex@trans@code\hvtex@param@dimension
+ }%
+ \else\if X\hvtex@trans@code
+ \edef\vtex@trans@special{%
+ \hvtex@trans@code\hvtex@param@motion
+ }%
+ \else\if W\hvtex@trans@code
+ \edef\vtex@trans@special{%
+ \hvtex@trans@code\hvtex@param@direction
+ }%
+ \else\if D\hvtex@trans@code
+ \let\vtex@trans@special\hvtex@trans@code
+ \else\if R\hvtex@trans@code
+ \let\vtex@trans@special\hvtex@trans@code
+ \else\if G\hvtex@trans@code
+ \edef\vtex@trans@special{%
+ \hvtex@trans@code\hvtex@param@direction
+ }%
+ \fi\fi\fi\fi\fi\fi\fi
+ \ifx\vtex@trans@special\@empty
+ \else
+ \ifx\hvtex@param@duration\@empty
+ \else
+ \setlength{\dimen@}{\hvtex@param@duration\p@}%
+% \end{macrocode}
+% I'm not guilty of possible overflow.
+% \begin{macrocode}
+ \multiply\dimen@\@m
+ \edef\vtex@trans@special{%
+ \vtex@trans@special,\strip@pt\dimen@
+ }%
+ \fi
+% \end{macrocode}
+%
+% And all the mess is just for this.
+%
+% \begin{macrocode}
+ \special{!trans \vtex@trans@special}%
+ \fi
+ }%
+% \end{macrocode}
+% \begin{macrocode}
+ \def\hyper@pageduration{%
+ \ifx\@pdfpageduration\relax
+ \else
+ \ifx\@pdfpageduration\@empty
+ \special{!duration-}%
+ \else
+ \special{!duration \@pdfpageduration}%
+ \fi
+ \fi
+ }%
+ \def\hyper@pagehidden{%
+ \ifHy@useHidKey
+ \special{!hidden\ifHy@pdfpagehidden +\else -\fi}%
+ \fi
+ }%
+ \g@addto@macro\Hy@EveryPageBoxHook{%
+ \hyper@pagetransition
+ \hyper@pageduration
+ \hyper@pagehidden
+ }%
+\fi
+% \end{macrocode}
+%
+% Caution: In opposite to the other drivers,
+% the argument of |\special{!onopen #1}| is
+% a reference name. The VTeX's postscript
+% mode will work with a version higher than
+% 7.0x.
+%
+% The command \verb|\VTeXOS| is defined since version 7.45.
+% Magic values encode the operating system:\\
+% \begin{tabular}{@{}l@{: }l@{}}
+% 1 & WinTel\\
+% 2 & Linux\\
+% 3 & OS/2\\
+% 4 & MacOS\\
+% 5 & MacOS/X\\
+% \end{tabular}
+% \begin{macrocode}
+\ifx\@pdfproducer\relax
+ \def\@pdfproducer{VTeX}%
+ \ifnum\Hy@VTeXversion>\z@
+ \count@\VTeXversion
+ \divide\count@ 100 %
+ \edef\@pdfproducer{\@pdfproducer\space v\the\count@}%
+ \multiply\count@ -100 %
+ \advance\count@\VTeXversion
+ \edef\@pdfproducer{%
+ \@pdfproducer
+ .\ifnum\count@<10 0\fi\the\count@
+ \ifx\VTeXOS\@undefined\else
+ \ifnum\VTeXOS>0 %
+ \ifnum\VTeXOS<6 %
+ \space(%
+ \ifcase\VTeXOS
+ \or Windows\or Linux\or OS/2\or MacOS\or MacOS/X%
+ \fi
+ )%
+ \fi
+ \fi
+ \fi
+ ,\space
+ \ifnum\OpMode=\@ne PDF\else PS\fi
+ \space backend%
+ \ifx\gexmode\@undefined\else
+ \ifnum\gexmode>\z@\space with GeX\fi
+ \fi
+ }%
+ \fi
+\fi
+% \end{macrocode}
+%
+% Current |!pdfinfo| key syntax:
+%
+% \begin{tabular}{lll}
+% \hline
+% Key & Field & Type \\
+% \hline
+% \texttt{a} & \textbf{A}uthor & String \\
+% \texttt{b} & Crop\textbf{B}ox & String \\
+% \texttt{c} & \textbf{C}reator & String \\
+% \texttt{k} & \textbf{K}eywords & String \\
+% \texttt{l} & Page\textbf{L}ayout & PS \\
+% \texttt{p} & \textbf{P}ageMode & PS \\
+% \texttt{r} & P\textbf{r}oducer & String \\
+% \texttt{s} & \textbf{S}ubject & String \\
+% \texttt{t} & \textbf{T}itle & String \\
+% \texttt{u} & \textbf{U}RI & PS \\
+% \texttt{v} & \textbf{V}iewPreferences & PS \\
+% \hline
+% \end{tabular}
+%
+% Note: PS objects that are dicts are in |<<<..>>>| (yuck; no choice).
+%
+% \begin{macrocode}
+\def\PDF@SetupDoc{%
+ \ifx\@pdfpagescrop\@empty
+ \else
+ \special{!pdfinfo b=<\@pdfpagescrop>}%
+ \fi
+ \ifx\@pdfstartpage\@empty
+ \else
+ \ifx\@pdfstartview\@empty
+ \else
+ \special{!onopen Page\@pdfstartpage}%
+ \fi
+ \fi
+ \special{!pdfinfo p=</\@pdfpagemode>}%
+ \ifx\@baseurl\@empty
+ \else
+ \special{!pdfinfo u=<<</Base (\@baseurl)>>>}%
+ \fi
+ \special{!pdfinfo v=<<<%
+ \ifHy@pdftoolbar\else /HideToolbar true\fi
+ \ifHy@pdfmenubar\else /HideMenubar true\fi
+ \ifHy@pdfwindowui\else /HideWindowUI true\fi
+ \ifHy@pdffitwindow /FitWindow true\fi
+ \ifHy@pdfcenterwindow /CenterWindow true\fi
+ \ifHy@pdfdisplaydoctitle /DisplayDocTitle true\fi
+ \Hy@UseNameKey{NonFullScreenPageMode}\@pdfnonfullscreenpagemode
+ \Hy@UseNameKey{Direction}\@pdfdirection
+ \Hy@UseNameKey{ViewArea}\@pdfviewarea
+ \Hy@UseNameKey{ViewClip}\@pdfviewclip
+ \Hy@UseNameKey{PrintArea}\@pdfprintarea
+ \Hy@UseNameKey{PrintClip}\@pdfprintclip
+ \Hy@UseNameKey{PrintScaling}\@pdfprintscaling
+ \Hy@UseNameKey{Duplex}\@pdfduplex
+ \ifx\@pdfpicktraybypdfsize\@empty
+ \else
+ /PickTrayByPDFSize \@pdfpicktraybypdfsize
+ \fi
+ \ifx\@pdfprintpagerange\@empty
+ \else
+ /PrintPageRange[\@pdfprintpagerange]%
+ \fi
+ \ifx\@pdfnumcopies\@empty
+ \else
+ /NumCopies \@pdfnumcopies
+ \fi
+ >>>}%
+ \ifx\@pdfpagelayout\@empty
+ \else
+ \special{!pdfinfo l=</\@pdfpagelayout\space>}%
+ \fi
+}%
+\HyInfo@AddonUnsupportedtrue
+\define@key{Hyp}{pdfcreationdate}{%
+ \Hy@Warning{%
+ VTeX does not support pdfcreationdate.\MessageBreak
+ Therefore its setting is ignored%
+ }%
+}
+\define@key{Hyp}{pdfmoddate}{%
+ \Hy@Warning{%
+ VTeX does not support pdfmoddate.\MessageBreak
+ Therefore its setting is ignored%
+ }%
+}
+\def\PDF@FinishDoc{%
+ \Hy@UseMaketitleInfos
+ \HyInfo@TrappedUnsupported
+ \special{!pdfinfo a=<\@pdfauthor>}%
+ \special{!pdfinfo t=<\@pdftitle>}%
+ \special{!pdfinfo s=<\@pdfsubject>}%
+ \special{!pdfinfo c=<\@pdfcreator>}%
+ \ifx\@pdfproducer\relax
+ \else
+ \special{!pdfinfo r=<\@pdfproducer>}%
+ \fi
+ \special{!pdfinfo k=<\@pdfkeywords>}%
+ \Hy@DisableOption{pdfauthor}%
+ \Hy@DisableOption{pdftitle}%
+ \Hy@DisableOption{pdfsubject}%
+ \Hy@DisableOption{pdfcreator}%
+ \Hy@DisableOption{addtopdfcreator}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfmoddate}%
+ \Hy@DisableOption{pdfproducer}%
+ \Hy@DisableOption{pdfkeywords}%
+ \Hy@DisableOption{pdftrapped}%
+ \Hy@DisableOption{pdfinfo}%
+}
+%</vtex>
+% \end{macrocode}
+%
+% \subsection{Fix for Adobe bug number 466320}
+% If a destination occurs at the very begin of a page,
+% the destination is moved to the previous page by
+% Adobe Distiller 5.
+% As workaround Adobe suggests:
+%\begin{verbatim}
+%/showpage {
+% //showpage
+% clippath stroke erasepage
+%} bind def
+%\end{verbatim}
+%
+% But unfortunately this fix generates an empty page
+% at the end of the document. Therefore another fix
+% is used by writing some clipped text.
+% \begin{macrocode}
+%<dviwindo>\def\literalps@out#1{\special{ps:#1}}%
+%<package>\providecommand*{\Hy@DistillerDestFix}{}
+%<*pdfmark|dviwindo>
+\def\Hy@DistillerDestFix{%
+ \begingroup
+ \let\x\literalps@out
+% \end{macrocode}
+% The fix has to be passed unchanged through GeX, if
+% VTeX in PostScript mode with GeX is used.
+% \begin{macrocode}
+ \ifnum \@ifundefined{OpMode}{0}{%
+ \@ifundefined{gexmode}{0}{%
+ \ifnum\gexmode>0 \OpMode\else 0\fi
+ }}>1 %
+ \def\x##1{%
+ \immediate\special{!=##1}%
+ }%
+ \fi
+ \x{%
+ /product where{%
+ pop %
+ product(Distiller)search{%
+ pop pop pop %
+ version(.)search{%
+ exch pop exch pop%
+ (3011)eq{%
+ gsave %
+ newpath 0 0 moveto closepath clip%
+ /Courier findfont 10 scalefont setfont %
+ 72 72 moveto(.)show %
+ grestore%
+ }if%
+ }{pop}ifelse%
+ }{pop}ifelse%
+ }if%
+ }%
+ \endgroup
+}
+%</pdfmark|dviwindo>
+% \end{macrocode}
+%
+% \subsection{Direct pdfmark support}
+% Drivers that load |pdfmark.def| have to provide the
+% correct macro definitions of
+% \begin{center}
+% \begin{tabular}{@{}ll@{}}
+% |\@pdfproducer|& for document information\\
+% |\literalps@out|& PostScript output\\
+% |\headerps@out|& PostScript output that goes in the header area\\
+% \end{tabular}
+% \end{center}
+% and the correct definitions of the following PostScript procedures:
+% \begin{center}
+% \begin{tabular}{@{}ll@{}}
+% |H.S|& start of anchor, link or rect\\
+% |#1 H.A|& end of anchor, argument=baselineskip in pt\\
+% |#1 H.L|& end of link, argument=baselineskip in pt\\
+% |H.R|& end of rect\\
+% |H.B|& raw rect code\\
+% \end{tabular}
+% \end{center}
+%
+% \begin{macrocode}
+%<*pdfmark>
+\Hy@breaklinks@unsupported
+\def\HyPat@ObjRef{%
+ \{[^{}]+\}%
+}
+\Hy@WrapperDef\hyper@anchor#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \begingroup
+ \pdfmark[\anchor@spot]{%
+ pdfmark=/DEST,%
+ linktype=anchor,%
+ View=/\@pdfview \@pdfviewparams,%
+ DestAnchor={#1}%
+ }%
+ \endgroup
+ \Hy@RestoreLastskip
+}
+\ltx@IfUndefined{hyper@anchorstart}{}{\endinput}
+\Hy@WrapperDef\hyper@anchorstart#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \literalps@out{H.S}%
+ \Hy@AllowHyphens
+ \xdef\hyper@currentanchor{#1}%
+ \Hy@activeanchortrue
+}
+\def\hyper@anchorend{%
+ \literalps@out{\strip@pt@and@otherjunk\baselineskip\space H.A}%
+ \pdfmark{%
+ pdfmark=/DEST,%
+ linktype=anchor,%
+ View=/\@pdfview \@pdfviewparams,%
+ DestAnchor=\hyper@currentanchor,%
+ }%
+ \Hy@activeanchorfalse
+ \Hy@RestoreLastskip
+}
+\def\hyper@linkstart#1#2{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \ifHy@breaklinks
+ \else
+ \leavevmode
+ \ifmmode
+ \def\Hy@LinkMath{$}%
+ \else
+ \let\Hy@LinkMath\ltx@empty
+ \fi
+ \Hy@SaveSpaceFactor
+ \hbox\bgroup
+ \Hy@RestoreSpaceFactor
+ \Hy@LinkMath
+ \fi
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
+ \literalps@out{H.S}%
+ \Hy@AllowHyphens
+ \xdef\hyper@currentanchor{#2}%
+ \gdef\hyper@currentlinktype{#1}%
+}
+\def\hyper@linkend{%
+ \literalps@out{\strip@pt@and@otherjunk\baselineskip\space H.L}%
+ \ltx@IfUndefined{@\hyper@currentlinktype bordercolor}{%
+ \let\Hy@tempcolor\relax
+ }{%
+ \edef\Hy@tempcolor{%
+ \csname @\hyper@currentlinktype bordercolor\endcsname
+ }%
+ }%
+ \pdfmark{%
+ pdfmark=/ANN,%
+ linktype=link,%
+ Subtype=/Link,%
+ PDFAFlags=4,%
+ Dest=\hyper@currentanchor,%
+ AcroHighlight=\@pdfhighlight,%
+ Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
+ Color=\Hy@tempcolor,%
+ Raw=H.B%
+ }%
+ \Hy@endcolorlink
+ \ifHy@breaklinks
+ \else
+ \Hy@LinkMath
+ \Hy@SaveSpaceFactor
+ \egroup
+ \Hy@RestoreSpaceFactor
+ \fi
+}
+% \end{macrocode}
+%
+% We have to allow for |\baselineskip| having an optional
+% stretch and shrink (you meet this in slide packages, for instance),
+% so we need to strip off the junk. David Carlisle, of course,
+% wrote this bit of code.
+% \begin{macrocode}
+\begingroup
+ \catcode`P=12 %
+ \catcode`T=12 %
+ \lowercase{\endgroup
+ \gdef\rem@ptetc#1.#2PT#3!{#1\ifnum#2>\z@.#2\fi}%
+}
+\def\strip@pt@and@otherjunk#1{\expandafter\rem@ptetc\the#1!}
+% \end{macrocode}
+%
+% \begin{macro}{\hyper@pagetransition}
+% \begin{macrocode}
+\def\hyper@pagetransition{%
+ \ifx\@pdfpagetransition\relax
+ \else
+ \ifx\@pdfpagetransition\@empty
+ % 1. Does an old entry have to be deleted?
+ % 2. If 1=yes, how to delete?
+ \else
+ \pdfmark{%
+ pdfmark=/PUT,%
+ Raw={%
+ \string{ThisPage\string}%
+ <</Trans << /S /\@pdfpagetransition\space >> >>%
+ }%
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\hyper@pageduration}
+% \begin{macrocode}
+\def\hyper@pageduration{%
+ \ifx\@pdfpageduration\relax
+ \else
+ \ifx\@pdfpageduration\@empty
+ % 1. Does an old entry have to be deleted?
+ % 2. If 1=yes, how to delete?
+ \else
+ \pdfmark{%
+ pdfmark=/PUT,%
+ Raw={%
+ \string{ThisPage\string}%
+ <</Dur \@pdfpageduration>>%
+ }%
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\hyper@pagehidden}
+% \begin{macrocode}
+\def\hyper@pagehidden{%
+ \ifHy@useHidKey
+ \pdfmark{%
+ pdfmark=/PUT,%
+ Raw={%
+ \string{ThisPage\string}%
+ <</Hid \ifHy@pdfpagehidden true\else false\fi>>%
+ }%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\g@addto@macro\Hy@EveryPageBoxHook{%
+ \hyper@pagetransition
+ \hyper@pageduration
+ \hyper@pagehidden
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\hyper@image#1#2{%
+ \hyper@linkurl{#2}{#1}%
+}
+\def\Hy@undefinedname{UNDEFINED}
+\def\hyper@link#1#2#3{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \ltx@IfUndefined{@#1bordercolor}{%
+ \let\Hy@tempcolor\relax
+ }{%
+ \edef\Hy@tempcolor{\csname @#1bordercolor\endcsname}%
+ }%
+ \begingroup
+ \protected@edef\Hy@testname{#2}%
+ \ifx\Hy@testname\@empty
+ \Hy@Warning{%
+ Empty destination name,\MessageBreak
+ using `\Hy@undefinedname'%
+ }%
+ \let\Hy@testname\Hy@undefinedname
+ \fi
+ \pdfmark[{#3}]{%
+ Color=\Hy@tempcolor,%
+ linktype={#1},%
+ AcroHighlight=\@pdfhighlight,%
+ Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
+ pdfmark=/ANN,%
+ Subtype=/Link,%
+ PDFAFlags=4,%
+ Dest=\Hy@testname
+ }%
+ \endgroup
+}
+\newtoks\pdf@docset
+\def\PDF@FinishDoc{%
+ \Hy@UseMaketitleInfos
+ \HyInfo@GenerateAddons
+ \let\Hy@temp\@empty
+ \ifx\@pdfcreationdate\@empty
+ \else
+ \def\Hy@temp{CreationDate=\@pdfcreationdate,}%
+ \fi
+ \ifx\@pdfmoddate\@empty
+ \else
+ \expandafter\def\expandafter\Hy@temp\expandafter{%
+ \Hy@temp
+ ModDate=\@pdfmoddate,%
+ }%
+ \fi
+ \ifx\@pdfproducer\relax
+ \else
+ \expandafter\def\expandafter\Hy@temp\expandafter{%
+ \Hy@temp
+ Producer=\@pdfproducer,%
+ }%
+ \fi
+ \expandafter
+ \pdfmark\expandafter{%
+ \Hy@temp
+ pdfmark=/DOCINFO,%
+ Title=\@pdftitle,%
+ Subject=\@pdfsubject,%
+ Creator=\@pdfcreator,%
+ Author=\@pdfauthor,%
+ Keywords=\@pdfkeywords,%
+ Trapped=\@pdftrapped
+ }%
+ \ifx\HyInfo@Addons\@empty
+ \else
+ \pdfmark{%
+ pdfmark=/DOCINFO,%
+ Raw={\HyInfo@Addons}%
+ }%
+ \fi
+ \Hy@DisableOption{pdfauthor}%
+ \Hy@DisableOption{pdftitle}%
+ \Hy@DisableOption{pdfsubject}%
+ \Hy@DisableOption{pdfcreator}%
+ \Hy@DisableOption{addtopdfcreator}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfmoddate}%
+ \Hy@DisableOption{pdfproducer}%
+ \Hy@DisableOption{pdfkeywords}%
+ \Hy@DisableOption{pdftrapped}%
+ \Hy@DisableOption{pdfinfo}%
+}
+\def\PDF@SetupDoc{%
+ \def\Hy@temp{}%
+ \ifx\@pdfstartpage\@empty
+ \else
+ \ifx\@pdfstartview\@empty
+ \else
+ \edef\Hy@temp{%
+ ,Page=\@pdfstartpage
+ ,View=\@pdfstartview
+ }%
+ \fi
+ \fi
+ \edef\Hy@temp{%
+ \noexpand\pdfmark{%
+ pdfmark=/DOCVIEW,%
+ PageMode=/\@pdfpagemode
+ \Hy@temp
+ }%
+ }%
+ \Hy@temp
+ \ifx\@pdfpagescrop\@empty
+ \else
+ \pdfmark{pdfmark=/PAGES,CropBox=\@pdfpagescrop}%
+ \fi
+ \edef\Hy@temp{%
+ \ifHy@pdftoolbar\else /HideToolbar true\fi
+ \ifHy@pdfmenubar\else /HideMenubar true\fi
+ \ifHy@pdfwindowui\else /HideWindowUI true\fi
+ \ifHy@pdffitwindow /FitWindow true\fi
+ \ifHy@pdfcenterwindow /CenterWindow true\fi
+ \ifHy@pdfdisplaydoctitle /DisplayDocTitle true\fi
+ \Hy@UseNameKey{NonFullScreenPageMode}\@pdfnonfullscreenpagemode
+ \Hy@UseNameKey{Direction}\@pdfdirection
+ \Hy@UseNameKey{ViewArea}\@pdfviewarea
+ \Hy@UseNameKey{ViewClip}\@pdfviewclip
+ \Hy@UseNameKey{PrintArea}\@pdfprintarea
+ \Hy@UseNameKey{PrintClip}\@pdfprintclip
+ \Hy@UseNameKey{PrintScaling}\@pdfprintscaling
+ \Hy@UseNameKey{Duplex}\@pdfduplex
+ \ifx\@pdfpicktraybypdfsize\@empty
+ \else
+ /PickTrayByPDFSize \@pdfpicktraybypdfsize
+ \fi
+ \ifx\@pdfprintpagerange\@empty
+ \else
+ /PrintPageRange[\@pdfprintpagerange]%
+ \fi
+ \ifx\@pdfnumcopies\@empty
+ \else
+ /NumCopies \@pdfnumcopies
+ \fi
+ }%
+ \Hy@pstringdef\Hy@pstringB{\@baseurl}%
+ \pdfmark{%
+ pdfmark=/PUT,%
+ Raw={%
+ \string{Catalog\string}<<%
+ \ifx\Hy@temp\@empty
+ \else
+ /ViewerPreferences<<\Hy@temp>>%
+ \fi
+ \Hy@UseNameKey{PageLayout}\@pdfpagelayout
+ \ifx\@pdflang\relax
+ \else
+ /Lang(\@pdflang)%
+ \fi
+ \ifx\@baseurl\@empty
+ \else
+ /URI<</Base(\Hy@pstringB)>>%
+ \fi
+ >>%
+ }%
+ }%
+}
+%</pdfmark>
+%<*pdfmarkbase>
+% \end{macrocode}
+% We define a single macro, pdfmark, which uses the `keyval' system
+% to define the various allowable keys; these are \emph{exactly}
+% as listed in the pdfmark reference for Acrobat 3.0. The only addition
+% is \texttt{pdfmark} which specifies the type of pdfmark to create
+% (like ANN, LINK etc). The
+% surrounding round and square brackets in the pdfmark commands
+% are supplied, but you have to put in / characters as needed for the
+% values.
+%
+% \begin{macrocode}
+\newif\ifHy@pdfmarkerror
+\def\pdfmark{\@ifnextchar[{\pdfmark@}{\pdfmark@[]}}
+\def\pdfmark@[#1]#2{%
+ \Hy@pdfmarkerrorfalse
+ \edef\@processme{\noexpand\pdf@toks={\the\pdf@defaulttoks}}%
+ \@processme
+ \let\pdf@type\relax
+ \let\pdf@objdef\ltx@empty
+ \kvsetkeys{PDF}{#2}%
+ \ifHy@pdfmarkerror
+ \else
+ \ifx\pdf@type\relax
+ \Hy@WarningNoLine{no pdfmark type specified in #2!!}%
+ \ifx\\#1\\%
+ \else
+ \pdf@rect{#1}%
+ \fi
+ \else
+ \ifx\\#1\\%
+ \literalps@out{%
+ [%
+ \ifx\pdf@objdef\ltx@empty
+ \else
+ /_objdef\string{\pdf@objdef\string}%
+ \fi
+ \the\pdf@toks\space\pdf@type\space pdfmark%
+ }%
+ \else
+ \ltx@IfUndefined{@\pdf@linktype color}{%
+ \Hy@colorlink\@linkcolor
+ }{%
+ \expandafter\Hy@colorlink
+ \csname @\pdf@linktype color\endcsname
+ }%
+ \pdf@rect{#1}%
+ \literalps@out{%
+ [%
+ \ifx\pdf@objdef\ltx@empty
+ \else
+ /_objdef\string{\pdf@objdef\string}%
+ \fi
+ \the\pdf@toks\space\pdf@type\space pdfmark%
+ }%
+ \Hy@endcolorlink
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% The complicated bit is working out the right enclosing rectangle of
+% some piece of \TeX\ text, needed by the /Rect key. This solution originates
+% with Toby Thain (\texttt{tobyt@netspace.net.au}).
+%
+% For the case breaklinks is enabled, I have added two hooks,
+% the first one for package setouterhbox, it provides
+% a hopefully better method without setting the text twice.
+% \begin{quote}
+% \verb|\usepackage[hyperref]{setouterhbox}|
+% \end{quote}
+% With the second hook, also you can set the text twice, e.g.:
+% \begin{quote}
+% \verb|\long\def\Hy@setouterhbox#1#2{\long\def\my@temp{#2}}|\\
+% \verb|\def\Hy@breaklinksunhbox#1{\my@temp}|
+% \end{quote}
+% \begin{macrocode}
+\newsavebox{\pdf@box}
+\providecommand*{\Hy@setouterhbox}{\sbox}
+\providecommand*{\Hy@breaklinksunhbox}{\unhbox}
+\def\Hy@DEST{/DEST}
+\def\pdf@rect#1{%
+ \begingroup
+ \chardef\x=1 %
+ \def\Hy@temp{#1}%
+ \ifx\Hy@temp\ltx@empty
+ \chardef\x=0 %
+ \else
+ \def\y{\anchor@spot}%
+ \ifx\Hy@temp\y
+ \def\y{\relax}%
+ \ifx\anchor@spot\y
+ \chardef\x=0 %
+ \fi
+ \fi
+ \fi
+ \expandafter\endgroup
+ \ifcase\x
+ \literalps@out{H.S}%
+ \literalps@out{H.R}%
+ \else
+ \leavevmode
+ \Hy@SaveSpaceFactor
+ \ifmmode
+ \def\Hy@LinkMath{$}%
+ \else
+ \let\Hy@LinkMath\ltx@empty
+ \fi
+ \ifHy@breaklinks
+ \Hy@setouterhbox\pdf@box{%
+ \Hy@RestoreSpaceFactor
+ \Hy@LinkMath
+ \Hy@AllowHyphens#1\Hy@xspace@end
+ \Hy@LinkMath
+ \Hy@SaveSpaceFactor
+ }%
+ \else
+ \sbox\pdf@box{%
+ \Hy@RestoreSpaceFactor
+ \Hy@LinkMath
+ #1\Hy@xspace@end
+ \Hy@LinkMath
+ \Hy@SaveSpaceFactor
+ }%
+ \fi
+ \dimen@\ht\pdf@box
+ \ifdim\dp\pdf@box=\z@
+ \literalps@out{H.S}%
+ \else
+ \lower\dp\pdf@box\hbox{\literalps@out{H.S}}%
+ \fi
+% \end{macrocode}
+% If the text has to be horizontal mode stuff then just unbox
+% the saved box like this, which saves executing it twice, which can
+% mess up counters etc (thanks DPC\ldots).
+% \begin{macrocode}
+ \ifHy@breaklinks
+ \ifhmode
+ \Hy@breaklinksunhbox\pdf@box
+ \else
+ \box\pdf@box
+ \fi
+ \else
+ \expandafter\box\pdf@box
+ \fi
+% \end{macrocode}
+% but if it can have multiple paragraphs you'd need one of these,
+% but in that case the measured box size would be wrong anyway.
+% \begin{quote}
+% |\ifHy@breaklinks#1\else\box\pdf@box\fi|\\
+% |\ifHy@breaklinks{#1}\else\box\pdf@box\fi|
+% \end{quote}
+% \begin{macrocode}
+ \ifdim\dimen@=\z@
+ \literalps@out{H.R}%
+ \else
+ \raise\dimen@\hbox{\literalps@out{H.R}}%
+ \fi
+ \Hy@RestoreSpaceFactor
+ \fi
+ \ifx\pdf@type\Hy@DEST
+ \else
+ \pdf@addtoksx{H.B}%
+ \fi
+}
+% \end{macrocode}
+% All the supplied material is stored in a token list; since I do not
+% feel sure I quite understand these, things may not work as expected
+% with expansion. We'll have to experiment.
+% \begin{macrocode}
+\newtoks\pdf@toks
+\newtoks\pdf@defaulttoks
+\pdf@defaulttoks={}%
+\def\pdf@addtoks#1#2{%
+ \edef\@processme{\pdf@toks{\the\pdf@toks/#2 #1}}%
+ \@processme
+}
+\def\pdf@addtoksx#1{%
+ \edef\@processme{\pdf@toks{\the\pdf@toks\space #1}}%
+ \@processme
+}
+\def\PDFdefaults#1{%
+ \pdf@defaulttoks={#1}%
+}
+% \end{macrocode}
+% This is the list of allowed keys. See the Acrobat manual for an
+% explanation.
+% \begin{macrocode}
+% what is the type of pdfmark?
+\define@key{PDF}{pdfmark}{\def\pdf@type{#1}}
+% what is the link type?
+\define@key{PDF}{linktype}{\def\pdf@linktype{#1}}
+\def\pdf@linktype{link}
+% named object?
+\define@key{PDF}{objdef}{\edef\pdf@objdef{#1}}
+\let\pdf@objdef\ltx@empty
+% parameter is a stream of PDF
+\define@key{PDF}{Raw}{\pdf@addtoksx{#1}}
+% parameter is a name
+\define@key{PDF}{Action}{\pdf@addtoks{#1}{Action}}
+% parameter is a array
+\define@key{PDF}{Border}{%
+ \edef\Hy@temp{#1}%
+ \ifx\Hy@temp\@empty
+ \else
+ \pdf@addtoks{[#1]\Hy@BorderArrayPatch}{Border}% hash-ok
+ \fi
+}
+\let\Hy@BorderArrayPatch\@empty
+% parameter is a dictionary
+\define@key{PDF}{BorderStyle}{%
+ \edef\Hy@temp{#1}%
+ \ifx\Hy@temp\@empty
+ \else
+ \pdf@addtoks{<<#1>>}{BS}%
+ \fi
+}
+% parameter is a array
+\define@key{PDF}{Color}{%
+ \ifx\relax#1\relax
+ \else
+ \pdf@addtoks{[#1]}{Color}% hash-ok
+ \fi
+}
+% parameter is a string
+\define@key{PDF}{Contents}{\pdf@addtoks{(#1)}{Contents}}
+% parameter is a integer
+\define@key{PDF}{Count}{\pdf@addtoks{#1}{Count}}
+% parameter is a array
+\define@key{PDF}{CropBox}{\pdf@addtoks{[#1]}{CropBox}}% hash-ok
+% parameter is a string
+\define@key{PDF}{DOSFile}{\pdf@addtoks{(#1)}{DOSFile}}
+% parameter is a string or file
+\define@key{PDF}{DataSource}{\pdf@addtoks{(#1)}{DataSource}}
+% parameter is a destination
+\define@key{PDF}{Dest}{%
+ \Hy@pstringdef\Hy@pstringDest{\HyperDestNameFilter{#1}}%
+ \ifx\Hy@pstringDest\@empty
+ \Hy@pdfmarkerrortrue
+ \Hy@Warning{Destination with empty name ignored}%
+ \else
+ \pdf@addtoks{(\Hy@pstringDest) cvn}{Dest}%
+ \fi
+}
+\define@key{PDF}{DestAnchor}{%
+ \Hy@pstringdef\Hy@pstringDest{\HyperDestNameFilter{#1}}%
+ \ifx\Hy@pstringDest\@empty
+ \Hy@pdfmarkerrortrue
+ \Hy@Warning{Destination with empty name ignored}%
+ \else
+ \pdf@addtoks{(\Hy@pstringDest) cvn}{Dest}%
+ \fi
+}
+% parameter is a string
+\define@key{PDF}{Dir}{\pdf@addtoks{(#1)}{Dir}}
+% parameter is a string
+\define@key{PDF}{File}{\pdf@addtoks{(#1)}{File}}
+% parameter is a int
+\define@key{PDF}{Flags}{\pdf@addtoks{#1}{Flags}}
+\define@key{PDF}{PDFAFlags}{%
+ \ifHy@pdfa
+ \pdf@addtoks{#1}{F}%
+ \fi
+}
+% parameter is a name
+\define@key{PDF}{AcroHighlight}{%
+ \begingroup
+ \edef\x{#1}%
+ \expandafter\endgroup\ifx\x\@empty
+ \else
+ \pdf@addtoks{#1}{H}%
+ \fi
+}
+% parameter is a string
+\define@key{PDF}{ID}{\pdf@addtoks{[#1]}{ID}}% hash-ok
+% parameter is a string
+\define@key{PDF}{MacFile}{\pdf@addtoks{(#1)}{MacFile}}
+% parameter is a string
+\define@key{PDF}{ModDate}{\pdf@addtoks{(#1)}{ModDate}}
+% parameter is a string
+\define@key{PDF}{Op}{\pdf@addtoks{(#1)}{Op}}
+% parameter is a Boolean
+\define@key{PDF}{Open}{\pdf@addtoks{#1}{Open}}
+% parameter is a integer or name
+\define@key{PDF}{Page}{\pdf@addtoks{#1}{Page}}
+% parameter is a name
+\define@key{PDF}{PageMode}{\pdf@addtoks{#1}{PageMode}}
+% parameter is a string
+\define@key{PDF}{Params}{\pdf@addtoks{(#1)}{Params}}
+% parameter is a array
+\define@key{PDF}{Rect}{\pdf@addtoks{[#1]}{Rect}}% hash-ok
+% parameter is a integer
+\define@key{PDF}{SrcPg}{\pdf@addtoks{#1}{SrcPg}}
+% parameter is a name
+\define@key{PDF}{Subtype}{\pdf@addtoks{#1}{Subtype}}
+% parameter is a string
+\define@key{PDF}{Title}{\pdf@addtoks{(#1)}{Title}}
+% parameter is a string
+\define@key{PDF}{Unix}{\pdf@addtoks{(#1)}{Unix}}
+% parameter is a string
+\define@key{PDF}{UnixFile}{\pdf@addtoks{(#1)}{UnixFile}}
+% parameter is an array
+\define@key{PDF}{View}{\pdf@addtoks{[#1]}{View}}% hash-ok
+% parameter is a string
+\define@key{PDF}{WinFile}{\pdf@addtoks{(#1)}{WinFile}}
+% \end{macrocode}
+% These are the keys used in the DOCINFO section.
+% \begin{macrocode}
+\define@key{PDF}{Author}{\pdf@addtoks{(#1)}{Author}}
+\define@key{PDF}{Creator}{\pdf@addtoks{(#1)}{Creator}}
+\define@key{PDF}{CreationDate}{\pdf@addtoks{(#1)}{CreationDate}}
+\define@key{PDF}{ModDate}{\pdf@addtoks{(#1)}{ModDate}}
+\define@key{PDF}{Producer}{\pdf@addtoks{(#1)}{Producer}}
+\define@key{PDF}{Subject}{\pdf@addtoks{(#1)}{Subject}}
+\define@key{PDF}{Keywords}{\pdf@addtoks{(#1)}{Keywords}}
+\define@key{PDF}{ModDate}{\pdf@addtoks{(#1)}{ModDate}}
+\define@key{PDF}{Base}{\pdf@addtoks{(#1)}{Base}}
+\define@key{PDF}{URI}{\pdf@addtoks{#1}{URI}}
+\define@key{PDF}{Trapped}{%
+ \edef\Hy@temp{#1}%
+ \ifx\Hy@temp\@empty
+ \else
+ \pdf@addtoks{/#1}{Trapped}%
+ \fi
+}
+
+%</pdfmarkbase>
+%<*pdfmark>
+\def\Acrobatmenu#1#2{%
+ \EdefEscapeName\Hy@temp@menu{#1}%
+ \Hy@Acrobatmenu{#1}{#2}{%
+ \pdfmark[{#2}]{%
+ linktype=menu,%
+ pdfmark=/ANN,%
+ AcroHighlight=\@pdfhighlight,%
+ Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
+ Color=\@menubordercolor,%
+ Action={<</Subtype/Named/N/\Hy@temp@menu>>},%
+ Subtype=/Link,%
+ PDFAFlags=4%
+ }%
+ }%
+}
+% \end{macrocode}
+% And now for some useful examples:
+% \begin{macrocode}
+\def\PDFNextPage{\@ifnextchar[{\PDFNextPage@}{\PDFNextPage@[]}}
+\def\PDFNextPage@[#1]#2{%
+ \pdfmark[{#2}]{%
+ #1,%
+ Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
+ Color=.2 .1 .5,%
+ pdfmark=/ANN,%
+ Subtype=/Link,%
+ PDFAFlags=4,%
+ Page=/Next%
+ }%
+}
+\def\PDFPreviousPage{%
+ \@ifnextchar[{\PDFPreviousPage@}{\PDFPreviousPage@[]}%
+}
+\def\PDFPreviousPage@[#1]#2{%
+ \pdfmark[{#2}]{%
+ #1,%
+ Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
+ Color=.4 .4 .1,%
+ pdfmark=/ANN,%
+ Subtype=/Link,%
+ PDFAFlags=4,%
+ Page=/Prev%
+ }%
+}
+\def\PDFOpen#1{%
+ \pdfmark{#1,pdfmark=/DOCVIEW}%
+}
+% \end{macrocode}
+% This will only work if you use Distiller 2.1 or higher.
+% \begin{macrocode}
+\def\hyper@linkurl#1#2{%
+ \begingroup
+ \Hy@pstringdef\Hy@pstringURI{#2}%
+ \hyper@chars
+ \leavevmode
+ \pdfmark[{#1}]{%
+ pdfmark=/ANN,%
+ linktype=url,%
+ AcroHighlight=\@pdfhighlight,%
+ Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
+ Color=\@urlbordercolor,%
+ Action={<<%
+ /Subtype/URI%
+ /URI(\Hy@pstringURI)%
+ \ifHy@href@ismap
+ /IsMap true%
+ \fi
+ >>},%
+ Subtype=/Link,%
+ PDFAFlags=4%
+ }%
+ \endgroup
+}
+\def\hyper@linkfile#1#2#3{%
+ \begingroup
+ \def\Hy@pstringF{#2}%
+ \Hy@CleanupFile\Hy@pstringF
+ \Hy@pstringdef\Hy@pstringF\Hy@pstringF
+ \Hy@pstringdef\Hy@pstringD{#3}%
+ \Hy@MakeRemoteAction
+ \leavevmode
+ \pdfmark[{#1}]{%
+ pdfmark=/ANN,%
+ Subtype=/Link,%
+ PDFAFlags=4,%
+ AcroHighlight=\@pdfhighlight,%
+ Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
+ linktype=file,%
+ Color=\@filebordercolor,%
+ Action={%
+ <<%
+ /S/GoToR%
+ \Hy@SetNewWindow
+ /F(\Hy@pstringF)%
+ /D%
+ \ifx\\#3\\%
+ [\Hy@href@page\@pdfremotestartview]%
+ \else
+ (\Hy@pstringD)cvn%
+ \fi
+ \Hy@href@nextactionraw
+ >>%
+ }%
+ }%
+ \endgroup
+}
+\def\@hyper@launch run:#1\\#2#3{%
+ \begingroup
+ \Hy@pstringdef\Hy@pstringF{#1}%
+ \Hy@pstringdef\Hy@pstringP{#3}%
+ \leavevmode
+ \pdfmark[{#2}]{%
+ pdfmark=/ANN,%
+ Subtype=/Link,%
+ PDFAFlags=4,%
+ AcroHighlight=\@pdfhighlight,%
+ Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
+ linktype=run,%
+ Color=\@runbordercolor,%
+ Action={%
+ <<%
+ /S/Launch%
+ \Hy@SetNewWindow
+ /F(\Hy@pstringF)%
+ \ifx\\#3\\%
+ \else
+ /Win<</P(\Hy@pstringP)/F(\Hy@pstringF)>>%
+ \fi
+ \Hy@href@nextactionraw
+ >>%
+ }%
+ }%
+ \endgroup
+}
+%</pdfmark>
+% \end{macrocode}
+% Unfortunately, some parts of the |pdfmark|
+% PostScript code depend on vagaries
+% of the dvi driver. We isolate here all the problems.
+%
+% \subsection{Rokicki's dvips}
+% dvips thinks in 10ths of a big point, its
+% coordinate space is resolution dependent,
+% and its $y$ axis starts at the top of the
+% page. Other drivers can and will be different!
+%
+% The work is done in |SDict|, because we add in some header
+% definitions in a moment.
+% \begin{macrocode}
+%<*dvips>
+\providecommand*{\XR@ext}{pdf}
+\let\Hy@raisedlink\ltx@empty
+\def\literalps@out#1{\special{ps:SDict begin #1 end}}%
+\def\headerps@out#1{\special{! #1}}%
+\input{pdfmark.def}%
+\ifx\@pdfproducer\relax
+ \def\@pdfproducer{dvips + Distiller}%
+\fi
+\providecommand*\@pdfborder{0 0 1}
+\providecommand*\@pdfborderstyle{}
+\providecommand*\@pdfview{XYZ}
+\providecommand*\@pdfviewparams{ H.V}
+\def\Hy@BorderArrayPatch{BorderArrayPatch}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\g@addto@macro\Hy@FirstPageHook{%
+ \headerps@out{%
+% \end{macrocode}
+% Unless I am going mad, this \emph{appears} to be the relationship
+% between the default coordinate system (PDF), and dvips;
+% \begin{verbatim}
+% /DvipsToPDF { .01383701 div Resolution div } def
+% /PDFToDvips { .01383701 mul Resolution mul } def
+% \end{verbatim}
+% the latter's coordinates are resolution dependent, but what that
+% .01383701 is, who knows? well, almost everyone except me, I expect\ldots
+% And yes, Maarten Gelderman \texttt{<mgelderman@econ.vu.nl>}
+% points out that its 1/72.27 (the number of points to an inch, big points
+% to inch is 1/72). This also suggests that the code would be more
+% understandable (and exact) if 0.013 div would be replaced by 72.27 mul,
+% so here we go. If this isn't right, I'll revert it.
+% \begin{macrocode}
+ /DvipsToPDF{72.27 mul Resolution div} def%
+ /PDFToDvips{72.27 div Resolution mul} def%
+ /BPToDvips{72 div Resolution mul}def%
+% \end{macrocode}
+% The values inside the /Boder array are not taken literally, but
+% interpreted by ghostscript using the resolution of the dvi driver.
+% I don't know how other distiller programs behaves in this manner.
+% \begin{macrocode}
+ /BorderArrayPatch{%
+ [exch{%
+ dup dup type/integertype eq exch type/realtype eq or%
+ {BPToDvips}if%
+ }forall]%
+ }def%
+% \end{macrocode}
+% The rectangle around the links starts off
+% \emph{exactly} the size of the box;
+% we will to make it slightly bigger, 1 point on all sides.
+% \begin{macrocode}
+ /HyperBorder {1 PDFToDvips} def%
+ /H.V {pdf@hoff pdf@voff null} def%
+ /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def%
+% \end{macrocode}
+% |H.S| (start of anchor, link, or rect) stores
+% the $x$ and $y$ coordinates of the current point, in PDF coordinates
+% \begin{macrocode}
+ /H.S {%
+ currentpoint %
+ HyperBorder add /pdf@lly exch def %
+ dup DvipsToPDF 72 add /pdf@hoff exch def %
+ HyperBorder sub /pdf@llx exch def%
+ } def%
+% \end{macrocode}
+%
+% The calculation of upper left $y$ is done without
+% raising the point in \TeX,
+% by simply adding on the current |\baselineskip| to the current $y$.
+% This is usually too much, so we remove a notional 2 points.
+%
+% We have to see what the current baselineskip is, and convert it
+% to the dvips coordinate system.
+%
+% Argument: baselineskip in pt.
+% The $x$ and $y$ coordinates of the current point, minus the baselineskip
+% \begin{macrocode}
+ /H.L {%
+ 2 sub dup%
+ /HyperBasePt exch def %
+ PDFToDvips /HyperBaseDvips exch def %
+ currentpoint %
+ HyperBaseDvips sub /pdf@ury exch def%
+ /pdf@urx exch def%
+ } def%
+ /H.A {%
+ H.L %
+% |/pdf@voff| = the distance from the top of the page to a point
+% |\baselineskip| above the current point in PDF coordinates
+ currentpoint exch pop %
+ vsize 72 sub exch DvipsToPDF %
+ HyperBasePt sub % baseline skip
+ sub /pdf@voff exch def%
+ } def%
+ /H.R {%
+ currentpoint %
+ HyperBorder sub /pdf@ury exch def %
+ HyperBorder add /pdf@urx exch def %
+% |/pdf@voff| = the distance from the top of the page to the current point, in
+% PDF coordinates
+ currentpoint exch pop vsize 72 sub %
+ exch DvipsToPDF sub /pdf@voff exch def%
+ } def%
+ }%
+}
+\AtBeginShipoutFirst{%
+ \ifHy@setpagesize
+ \begingroup
+ \@ifundefined{stockwidth}{%
+ \ifdim\paperwidth>\z@
+ \ifdim\paperheight>\z@
+ \special{papersize=\the\paperwidth,\the\paperheight}%
+ \fi
+ \fi
+ }{%
+ \ifdim\stockwidth>\z@
+ \ifdim\stockheight>\z@
+ \special{papersize=\the\stockwidth,\the\stockheight}%
+ \fi
+ \fi
+ }%
+ \endgroup
+ \fi
+ \Hy@DisableOption{setpagesize}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\setpdflinkmargin#1{%
+ \begingroup
+ \setlength{\dimen@}{#1}%
+ \literalps@out{%
+ /HyperBorder{\strip@pt\dimen@\space PDFToDvips}def%
+ }%
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macrocode}
+%</dvips>
+% \end{macrocode}
+%
+% \subsection{VTeX's vtexpdfmark driver}
+%
+% This part is derived from the dvips
+% (many names reflect this).
+%
+% The origin seems to be the same as TeX's origin,
+% 1 in from the left and 1 in downwards from the top.
+% The direction of the $y$ axis is downwards,
+% the opposite of the dvips case. Units seems
+% to be pt or bp.
+%
+% \begin{macrocode}
+%<*vtexpdfmark>
+\providecommand*{\XR@ext}{pdf}
+\let\Hy@raisedlink\ltx@empty
+\def\literalps@out#1{\special{pS:#1}}%
+\def\headerps@out#1{\immediate\special{pS:#1}}%
+\input{pdfmark.def}%
+\ifx\@pdfproducer\relax
+ \ifnum\OpMode=\@ne
+ \def\@pdfproducer{VTeX}%
+ \else
+ \def\@pdfproducer{VTeX + Distiller}%
+ \fi
+\fi
+\providecommand*\@pdfborder{0 0 1}
+\providecommand*\@pdfborderstyle{}
+\providecommand*\@pdfview{XYZ}
+\providecommand*\@pdfviewparams{ H.V}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\g@addto@macro\Hy@FirstPageHook{%
+ \headerps@out{%
+ /vsize {\Hy@pageheight} def%
+% \end{macrocode}
+% The rectangle around the links starts off
+% \emph{exactly} the size of the box;
+% we will to make it slightly bigger, 1 point on all sides.
+% \begin{macrocode}
+ /HyperBorder {1} def%
+ /H.V {pdf@hoff pdf@voff null} def%
+ /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def%
+% \end{macrocode}
+%
+% |H.S| (start of anchor, link, or rect) stores
+% the $x$ and $y$ coordinates of the current point, in PDF coordinates:
+% $\mathtt{pdf@lly} = Y_c - \mathtt{HyperBorder}$,
+% $\mathtt{pdf@hoff} = X_c + 72$,
+% $\mathtt{pdf@llx} = X_c - \mathtt{HyperBorder}$
+% \begin{macrocode}
+ /H.S {%
+ currentpoint %
+ HyperBorder sub%
+ /pdf@lly exch def %
+ dup 72 add /pdf@hoff exch def %
+ HyperBorder sub%
+ /pdf@llx exch def%
+ } def%
+% \end{macrocode}
+% The $x$ and $y$ coordinates of the current point, minus the
+% |\baselineskip|:
+% $\mathtt{pdf@ury} = Y_c + \mathtt{HyperBasePt} + \mathtt{HyperBorder}$,
+% $\mathtt{pdf@urx} = X_c + \mathtt{HyperBorder}$
+% \begin{macrocode}
+ /H.L {%
+ 2 sub%
+ /HyperBasePt exch def %
+ currentpoint %
+ HyperBasePt add HyperBorder add%
+ /pdf@ury exch def %
+ HyperBorder add%
+ /pdf@urx exch def%
+ } def%
+ /H.A {%
+ H.L %
+ currentpoint exch pop %
+ vsize 72 sub exch %
+ HyperBasePt add add%
+ /pdf@voff exch def%
+ } def%
+% \end{macrocode}
+% $\mathtt{pdf@ury} = Y_c + \mathtt{HyperBorder}$,
+% $\mathtt{pdf@urx} = X_c + \mathtt{HyperBorder}$
+% \begin{macrocode}
+ /H.R {%
+ currentpoint %
+ HyperBorder add%
+ /pdf@ury exch def %
+ HyperBorder add%
+ /pdf@urx exch def %
+ currentpoint exch pop vsize 72 sub add%
+ /pdf@voff exch def%
+ } def%
+ }%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\setpdflinkmargin#1{%
+ \begingroup
+ \setlength{\dimen@}{#1}%
+ \literalps@out{%
+ /HyperBorder{\strip@pt\dimen@}def%
+ }%
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macrocode}
+%</vtexpdfmark>
+% \end{macrocode}
+%
+% \subsection{Textures}
+%
+% \begin{macrocode}
+%<*textures>
+\providecommand*{\XR@ext}{pdf}
+% \end{macrocode}
+%
+% At the suggestion of Jacques Distler (distler@golem.ph.utexas.edu), try
+% to derive a suitable driver for Textures. This was initially a copy of
+% dvips, with some guesses about Textures behaviour.
+% Ross Moore (\Email{ross@maths.mq.edu.au}) has added modifications
+% for better compatibility, and to support use of pdfmark.
+%
+% Start by defining a macro that expands to the end-of-line character.
+% This will be used to format the appearance of PostScript code,
+% to enhance readability, and avoid excessively long lines which
+% might otherwise become broken to bad places.
+%
+% \begin{macro}{\Hy@ps@CR}
+% The macro \verb|\Hy@ps@CR| contains the end-of-line character.
+% \begin{macrocode}
+\begingroup
+ \obeylines %
+ \gdef\Hy@ps@CR{\noexpand
+ }%
+\endgroup %
+% \end{macrocode}
+% \end{macro}
+%
+% Textures has two types of \verb|\special| command for inserting
+% PostScript code directly into the dvi output. The `postscript'
+% way preserves TeX's idea of where on the page the \verb|\special|
+% occurred, but it wraps the contents with a \verb|save|--\verb|restore|
+% pair, and adjusts the user-space coordinate system for local drawing
+% commands. The `rawpostscript' way simply inserts code, without regard
+% for the location on the page.
+%
+% Thus, to put arbitrary PostScript coding at a fixed location requires
+% using \emph{both} \verb|\special| constructions.
+% It works by pushing the device-space coordinates onto the operand stack,
+% where they can be used to transform back to the correct user-space
+% coordinates for the whole page, within a `rawpostscript' \verb|\special|.
+%
+% \begin{macrocode}
+\def\literalps@out#1{%
+ \special{postscript 0 0 transform}%
+ \special{rawpostscript itransform moveto\Hy@ps@CR #1}%
+}%
+%
+% \end{macrocode}
+%
+% The `prepostscript' is a 3rd kind of \verb|\special|, used for
+% inserting definitions into the dictionaries, before page-building
+% begins. These are to be available for use on all pages.
+%
+% \begin{macrocode}
+\def\headerps@out#1{%
+ \special{%
+ prepostscript TeXdict begin\Hy@ps@CR
+ #1\Hy@ps@CR
+ end%
+ }%
+}%
+%
+% \end{macrocode}
+%
+% To correctly support the \verb|pdfmark| method, for embedding
+% PDF definitions with \verb|.ps| files in a non-intrusive way,
+% an appropriate definition needs to be made \emph{before}
+% the file \verb|pdfmark.def| is read. Other parameters are best
+% set afterwards.
+%
+% \begin{macrocode}
+\g@addto@macro\Hy@FirstPageHook{%
+ \headerps@out{%
+ /betterpdfmark {%
+ systemdict begin %
+ dup /BP eq%
+ {cleartomark gsave nulldevice [}%
+ {dup /EP eq%
+ {cleartomark cleartomark grestore}%
+ {cleartomark}%
+ ifelse%
+ }ifelse %
+ end%
+ }def\Hy@ps@CR
+ __pdfmark__ not{/pdfmark /betterpdfmark load def}if%
+ }% end of \headerps@out
+}% end of \AtBeginShipoutFirst
+%
+\input{pdfmark.def}%
+%
+\ifx\@pdfproducer\relax
+ \def\@pdfproducer{Textures + Distiller}%
+\fi
+\providecommand*\@pdfborder{0 0 1}
+\providecommand*\@pdfborderstyle{}
+\providecommand*\@pdfview{XYZ}
+\providecommand*\@pdfviewparams{ H.V}
+%
+% \end{macrocode}
+% These are called at the start and end of unboxed links;
+% their job is to leave available PS variables called
+% |pdf@llx pdf@lly pdf@urx pdf@ury|, which are the coordinates
+% of the bounding rectangle of the link, and |pdf@hoff pdf@voff|
+% which are the PDF page offsets.
+% The Rect pair are called at the LL and UR corners of a box
+% known to \TeX.
+% \begin{macrocode}
+\Hy@AtBeginDocument{%
+ \headerps@out{%
+% \end{macrocode}
+% Textures lives in normal points, I think. So conversion from one
+% coordinate system to another involves doing nothing.
+%
+% \begin{macrocode}
+ /vsize {\Hy@pageheight} def%
+ /DvipsToPDF {} def%
+ /PDFToDvips {} def%
+ /BPToDvips {} def%
+ /HyperBorder { 1 PDFToDvips } def\Hy@ps@CR
+ /H.V {pdf@hoff pdf@voff null} def\Hy@ps@CR
+ /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def\Hy@ps@CR
+ /H.S {%
+ currentpoint %
+ HyperBorder add /pdf@lly exch def %
+ dup DvipsToPDF 72 add /pdf@hoff exch def %
+ HyperBorder sub /pdf@llx exch def%
+ } def\Hy@ps@CR
+ /H.L {%
+ 2 sub %
+ PDFToDvips /HyperBase exch def %
+ currentpoint %
+ HyperBase sub /pdf@ury exch def%
+ /pdf@urx exch def%
+ } def\Hy@ps@CR
+ /H.A {%
+ H.L %
+ currentpoint exch pop %
+ vsize 72 sub exch DvipsToPDF %
+ HyperBase sub % baseline skip
+ sub /pdf@voff exch def%
+ } def\Hy@ps@CR
+ /H.R {%
+ currentpoint %
+ HyperBorder sub /pdf@ury exch def %
+ HyperBorder add /pdf@urx exch def %
+ currentpoint exch pop vsize 72 sub %
+ exch DvipsToPDF sub /pdf@voff exch def%
+ } def\Hy@ps@CR
+ }%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\setpdflinkmargin#1{%
+ \begingroup
+ \setlength{\dimen@}{#1}%
+ \literalps@out{%
+ /HyperBorder{\strip@pt\dimen@\space PDFToDvips}def%
+ }%
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macrocode}
+\Hy@AtBeginDocument{%
+ \ifHy@colorlinks
+ \headerps@out{/PDFBorder{/Border [0 0 0]}def}%
+ \fi
+}
+% \end{macrocode}
+% Textures provides built-in support for HyperTeX specials
+% so this part combines code from \verb|hypertex.def| with what
+% is established by loading \verb|pdfmark.def|, or any other driver.
+% \begin{macrocode}
+\expandafter\let\expandafter\keepPDF@SetupDoc
+ \csname PDF@SetupDoc\endcsname
+\def\PDF@SetupDoc{%
+ \ifx\@baseurl\@empty
+ \else
+ \special{html:<base href="\@baseurl">}%
+ \fi
+ \keepPDF@SetupDoc
+}
+\Hy@WrapperDef\hyper@anchor#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \begingroup
+ \let\protect=\string
+ \special{html:<a name=%
+ \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}%
+ \endgroup
+ \Hy@activeanchortrue
+ \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink
+ \special{html:</a>}%
+ \Hy@activeanchorfalse
+ \Hy@RestoreLastskip
+}
+\Hy@WrapperDef\hyper@anchorstart#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \begingroup
+ \hyper@chars
+ \special{html:<a name=%
+ \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}%
+ \endgroup
+ \Hy@activeanchortrue
+}
+\def\hyper@anchorend{%
+ \special{html:</a>}%
+ \Hy@activeanchorfalse
+ \Hy@RestoreLastskip
+}
+\def\@urltype{url}
+\def\hyper@linkstart#1#2{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
+ \def\Hy@tempa{#1}%
+ \ifx\Hy@tempa\@urltype
+ \special{html:<a href=\hyper@quote#2\hyper@quote>}%
+ \else
+ \begingroup
+ \hyper@chars
+ \special{%
+ html:<a href=%
+ \hyper@quote\#\HyperDestNameFilter{#2}\hyper@quote>%
+ }%
+ \endgroup
+ \fi
+}
+\def\hyper@linkend{%
+ \special{html:</a>}%
+ \Hy@endcolorlink
+}
+\def\hyper@linkfile#1#2#3{%
+ \hyper@linkurl{#1}{%
+ \Hy@linkfileprefix#2\ifx\\#3\\\else\##3\fi
+ }%
+}
+\def\hyper@linkurl#1#2{%
+ \leavevmode
+ \ifHy@raiselinks
+ \Hy@SaveSpaceFactor
+ \Hy@SaveSavedSpaceFactor
+ \sbox\@tempboxa{\Hy@RestoreSpaceFactor#1}%
+ \Hy@RestoreSavedSpaceFactor
+ \@linkdim\dp\@tempboxa
+ \lower\@linkdim\hbox{%
+ \hyper@chars
+ \special{html:<a href=\hyper@quote#2\hyper@quote>}%
+ }%
+ \Hy@colorlink\@urlcolor
+ \Hy@RestoreSpaceFactor
+ #1\Hy@xspace@end
+ \Hy@SaveSpaceFactor
+ \@linkdim\ht\@tempboxa
+ \advance\@linkdim by -6.5\p@
+ \raise\@linkdim\hbox{\special{html:</a>}}%
+ \Hy@endcolorlink
+ \Hy@RestoreSpaceFactor
+ \else
+ \begingroup
+ \hyper@chars
+ \special{html:<a href=\hyper@quote#2\hyper@quote>}%
+ \Hy@colorlink\@urlcolor#1\Hy@xspace@end
+ \special{html:</a>}%
+ \Hy@endcolorlink
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+% Very poor implementation of \cs{hyper@link} without considering |#1|.
+% \begin{macrocode}
+\def\hyper@link#1#2#3{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \hyper@linkurl{#3}{\#\HyperDestNameFilter{#2}}%
+}
+\def\hyper@image#1#2{%
+ \begingroup
+ \hyper@chars
+ \special{html:<img src=\hyper@quote#1\hyper@quote>}%
+ \endgroup
+}
+%</textures>
+% \end{macrocode}
+% \subsection{dvipsone}
+% \begin{macrocode}
+% \subsection{dvipsone driver}
+% Over-ride the default setup macro in pdfmark driver to use Y\&Y
+% |\special| commands.
+%<*dvipsone>
+\providecommand*{\XR@ext}{pdf}
+\let\Hy@raisedlink\ltx@empty
+\providecommand*\@pdfborder{0 0 1}
+\providecommand*\@pdfborderstyle{}
+\def\literalps@out#1{\special{ps:#1}}%
+\def\headerps@out#1{\special{headertext=#1}}%
+\input{pdfmark.def}%
+\HyInfo@AddonUnsupportedtrue
+\def\PDF@FinishDoc{%
+ \Hy@UseMaketitleInfos
+ \HyInfo@TrappedUnsupported
+ \special{PDF: Keywords \@pdfkeywords}%
+ \special{PDF: Title \@pdftitle}%
+ \special{PDF: Creator \@pdfcreator}%
+ \ifx\@pdfcreationdate\@empty
+ \else
+ \special{PDF: CreationDate \@pdfcreationdate}%
+ \fi
+ \ifx\@pdfmoddate\@empty
+ \else
+ \special{PDF: ModDate \@pdfmoddate}%
+ \fi
+ \special{PDF: Author \@pdfauthor}%
+ \ifx\@pdfproducer\relax
+ \else
+ \special{PDF: Producer \@pdfproducer}%
+ \fi
+ \special{PDF: Subject \@pdfsubject}%
+ \Hy@DisableOption{pdfauthor}%
+ \Hy@DisableOption{pdftitle}%
+ \Hy@DisableOption{pdfsubject}%
+ \Hy@DisableOption{pdfcreator}%
+ \Hy@DisableOption{addtopdfcreator}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfmoddate}%
+ \Hy@DisableOption{pdfproducer}%
+ \Hy@DisableOption{pdfkeywords}%
+ \Hy@DisableOption{pdftrapped}%
+ \Hy@DisableOption{pdfinfo}%
+}
+\def\PDF@SetupDoc{%
+ \def\Hy@temp{}%
+ \ifx\@pdfstartpage\@empty
+ \else
+ \ifx\@pdfstartview\@empty
+ \else
+ \edef\Hy@temp{%
+ ,Page=\@pdfstartpage
+ ,View=\@pdfstartview
+ }%
+ \fi
+ \fi
+ \edef\Hy@temp{%
+ \noexpand\pdfmark{%
+ pdfmark=/DOCVIEW,%
+ PageMode=/\@pdfpagemode
+ \Hy@temp
+ }%
+ }%
+ \Hy@temp
+ \ifx\@pdfpagescrop\@empty
+ \else
+ \pdfmark{pdfmark=/PAGES,CropBox=\@pdfpagescrop}%
+ \fi
+ \edef\Hy@temp{%
+ \ifHy@pdftoolbar\else /HideToolbar true\fi
+ \ifHy@pdfmenubar\else /HideMenubar true\fi
+ \ifHy@pdfwindowui\else /HideWindowUI true\fi
+ \ifHy@pdffitwindow /FitWindow true\fi
+ \ifHy@pdfcenterwindow /CenterWindow true\fi
+ \ifHy@pdfdisplaydoctitle /DisplayDocTitle true\fi
+ \Hy@UseNameKey{NonFullScreenPageMode}\@pdfnonfullscreenpagemode
+ \Hy@UseNameKey{Direction}\@pdfdirection
+ \Hy@UseNameKey{ViewArea}\@pdfviewarea
+ \Hy@UseNameKey{ViewClip}\@pdfviewclip
+ \Hy@UseNameKey{PrintArea}\@pdfprintarea
+ \Hy@UseNameKey{PrintClip}\@pdfprintclip
+ \Hy@UseNameKey{PrintScaling}\@pdfprintscaling
+ \Hy@UseNameKey{Duplex}\@pdfduplex
+ \ifx\@pdfpicktraybypdfsize\@empty
+ \else
+ /PickTrayByPDFSize \@pdfpicktraybypdfsize
+ \fi
+ \ifx\@pdfprintpagerange\@empty
+ \else
+ /PrintPageRange[\@pdfprintpagerange]%
+ \fi
+ \ifx\@pdfnumcopies\@empty
+ \else
+ /NumCopies \@pdfnumcopies
+ \fi
+ }%
+ \Hy@pstringdef\Hy@pstringB{\@baseurl}%
+ \pdfmark{%
+ pdfmark=/PUT,%
+ Raw={%
+ \string{Catalog\string}<<%
+ \ifx\Hy@temp\@empty
+ \else
+ /ViewerPreferences<<\Hy@temp>>%
+ \fi
+ \Hy@UseNameKey{PageLayout}\@pdfpagelayout
+ \ifx\@pdflang\relax
+ \else
+ /Lang(\@pdflang)%
+ \fi
+ \ifx\@baseurl\@empty
+ \else
+ /URI<</Base(\Hy@pstringB)>>%
+ \fi
+ >>%
+ }%
+ }%
+}
+\providecommand*\@pdfview{XYZ}
+\providecommand*\@pdfviewparams{ %
+ gsave revscl currentpoint grestore %
+ 72 add exch pop null exch null%
+}
+\def\Hy@BorderArrayPatch{BorderArrayPatch}
+% \end{macrocode}
+% These are called at the start and end of unboxed links;
+% their job is to leave available PS variables called
+% |pdf@llx pdf@lly pdf@urx pdf@ury|, which are the coordinates
+% of the bounding rectangle of the link, and |pdf@hoff pdf@voff|
+% which are the PDF page offsets. These latter are currently not
+% used in the dvipsone setup.
+% The Rect pair are called at the LL and UR corners of a box
+% known to \TeX.
+% \begin{macrocode}
+\g@addto@macro\Hy@FirstPageHook{%
+ \headerps@out{%
+% \end{macrocode}
+% dvipsone lives in scaled points; does this mean 65536 or 65781?
+% \begin{macrocode}
+ /DvipsToPDF { 65781 div } def%
+ /PDFToDvips { 65781 mul } def%
+ /BPToDvips{65781 mul}def%
+ /HyperBorder { 1 PDFToDvips } def%
+ /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def%
+% \end{macrocode}
+% The values inside the /Boder array are not taken literally, but
+% interpreted by ghostscript using the resolution of the dvi driver.
+% I don't know how other distiller programs behaves in this manner.
+% \begin{macrocode}
+ /BorderArrayPatch{%
+ [exch{%
+ dup dup type/integertype eq exch type/realtype eq or%
+ {BPToDvips}if%
+ }forall]%
+ }def%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ /H.S {%
+ currentpoint %
+ HyperBorder add /pdf@lly exch def %
+ dup DvipsToPDF 72 add /pdf@hoff exch def %
+ HyperBorder sub /pdf@llx exch def%
+ } def%
+ /H.L {%
+ 2 sub %
+ PDFToDvips /HyperBase exch def %
+ currentpoint %
+ HyperBase sub /pdf@ury exch def%
+ /pdf@urx exch def%
+ } def%
+ /H.A {%
+ H.L %
+ currentpoint exch pop %
+ HyperBase sub % baseline skip
+ DvipsToPDF /pdf@voff exch def%
+ } def%
+ /H.R {%
+ currentpoint %
+ HyperBorder sub /pdf@ury exch def %
+ HyperBorder add /pdf@urx exch def %
+ currentpoint exch pop DvipsToPDF /pdf@voff exch def%
+ } def%
+ }%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\setpdflinkmargin#1{%
+ \begingroup
+ \setlength{\dimen@}{#1}%
+ \literalps@out{%
+ /HyperBorder{\strip@pt\dimen@\space PDFToDvips}def%
+ }%
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macrocode}
+%</dvipsone>
+% \end{macrocode}
+%
+% \subsection{TeX4ht}
+% \begin{macrocode}
+%<*tex4ht>
+\providecommand*{\XR@ext}{html}
+\let\Hy@raisedlink\ltx@empty
+\@ifpackageloaded{tex4ht}{%
+ \Hy@InfoNoLine{tex4ht is already loaded}%
+}{%
+ \RequirePackage[htex4ht]{tex4ht}%
+}
+\hyperlinkfileprefix{}
+\let\PDF@FinishDoc\ltx@empty
+\def\PDF@SetupDoc{%
+ \ifx\@baseurl\@empty
+ \else
+ \special{t4ht=<base href="\@baseurl">}%
+ \fi
+}
+\Hy@WrapperDef\hyper@anchor#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \begingroup
+ \let\protect=\string
+ \special{t4ht=<a name=%
+ \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}%
+ \endgroup
+ \Hy@activeanchortrue
+ \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink
+ \special{t4ht=</a>}%
+ \Hy@activeanchorfalse
+ \Hy@RestoreLastskip
+}
+\Hy@WrapperDef\hyper@anchorstart#1{%
+ \Hy@SaveLastskip
+ \Hy@VerboseAnchor{#1}%
+ \begingroup
+ \hyper@chars\special{t4ht=<a name=%
+ \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}%
+ \endgroup
+ \Hy@activeanchortrue
+}
+\def\hyper@anchorend{%
+ \special{t4ht=</a>}%
+ \Hy@activeanchorfalse
+ \Hy@RestoreLastskip
+}
+\def\@urltype{url}
+\def\hyper@linkstart#1#2{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
+ \def\Hy@tempa{#1}%
+ \ifx\Hy@tempa\@urltype
+ \special{t4ht=<a href=\hyper@quote#2\hyper@quote>}%
+ \else
+ \begingroup
+ \hyper@chars
+ \special{t4ht=<a href=%
+ \hyper@quote\#\HyperDestNameFilter{#2}\hyper@quote>}%
+ \endgroup
+ \fi
+}
+\def\hyper@linkend{%
+ \special{t4ht=</a>}%
+ \Hy@endcolorlink
+}
+\def\hyper@linkfile#1#2#3{%
+ \hyper@linkurl{#1}{\Hy@linkfileprefix#2\ifx\\#3\\\else\##3\fi}%
+}
+\def\hyper@linkurl#1#2{%
+ \leavevmode
+ \ifHy@raiselinks
+ \Hy@SaveSpaceFactor
+ \Hy@SaveSavedSpaceFactor
+ \sbox\@tempboxa{\Hy@RestoreSpaceFactor#1}%
+ \Hy@RestoreSavedSpaceFactor
+ \@linkdim\dp\@tempboxa
+ \lower\@linkdim\hbox{%
+ \begingroup
+ \hyper@chars
+ \special{%
+ t4ht=<a href=\hyper@quote#2\hyper@quote>%
+ }%
+ \endgroup
+ }%
+ \Hy@colorlink\@urlcolor
+ \Hy@RestoreSpaceFactor
+ #1\Hy@xspace@end
+ \Hy@SaveSpaceFactor
+ \Hy@endcolorlink
+ \@linkdim\ht\@tempboxa
+ \advance\@linkdim by -6.5\p@
+ \raise\@linkdim\hbox{\special{t4ht=</a>}}%
+ \Hy@RestoreSpaceFactor
+ \else
+ \begingroup
+ \hyper@chars
+ \special{t4ht=<a href=\hyper@quote#2\hyper@quote>}%
+ \Hy@colorlink\@urlcolor
+ #1\Hy@xspace@end
+ \Hy@endcolorlink
+ \special{t4ht=</a>}%
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+% Poor implementation of \cs{hyper@link} without considering |#1|.
+% \begin{macrocode}
+\def\hyper@link#1#2#3{%
+ \Hy@VerboseLinkStart{#1}{#2}%
+ \hyper@linkurl{#3}{\#\HyperDestNameFilter{#2}}%
+}
+\def\hyper@image#1#2{%
+ \begingroup
+ \hyper@chars
+ \special{t4ht=<img src=\hyper@quote#1\hyper@quote>}%
+ \endgroup
+}
+\let\autoref\ref
+\ifx \rEfLiNK \UnDef
+ \def\rEfLiNK #1#2{#2}%
+\fi
+\let\backref\ltx@gobble
+% \end{macrocode}
+% Fix for tex4ht.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \expandafter
+ \let\expandafter\Hy@OrgMakeLabel\csname Make:Label\endcsname
+ \expandafter\def\csname Make:Label\endcsname#1#2{%
+ \ifhmode
+ \Hy@SaveSpaceFactor
+ \else
+ \global\Hy@SavedSpaceFactor=1000 %
+ \fi
+ \Hy@OrgMakeLabel{#1}{%
+ \Hy@RestoreSpaceFactor
+ #2\Hy@xspace@end%
+ \Hy@SaveSpaceFactor
+ }%
+ \Hy@RestoreSpaceFactor
+ }%
+}
+%</tex4ht>
+%<*tex4htcfg>
+\IfFileExists{\jobname.cfg}{\endinput}{}
+\Preamble{html}
+ \begin{document}%
+\EndPreamble
+\def\TeX{TeX}
+\def\OMEGA{Omega}
+\def\LaTeX{La\TeX}
+\def\LaTeXe{\LaTeX2e}
+\def\eTeX{e-\TeX}
+\def\MF{Metafont}
+\def\MP{MetaPost}
+%</tex4htcfg>
+% \end{macrocode}
+%
+% \section{Driver-specific form support}
+% \subsection{pdfmarks}
+% \begin{macrocode}
+%<*pdfmark>
+\long\def\@Form[#1]{%
+\g@addto@macro\Hy@FirstPageHook{%
+ \headerps@out{%
+[%
+ /_objdef{pdfDocEncoding}%
+ /type/dict%
+/OBJ pdfmark%
+[%
+ {pdfDocEncoding}%
+ <<%
+ /Type/Encoding%
+ /Differences[%
+ 24/breve/caron/circumflex/dotaccent/hungarumlaut/ogonek/ring%
+ /tilde %
+ 39/quotesingle %
+ 96/grave %
+ 128/bullet/dagger/daggerdbl/ellipsis/emdash/endash/florin%
+ /fraction/guilsinglleft/guilsinglright/minus/perthousand%
+ /quotedblbase/quotedblleft/quotedblright/quoteleft%
+ /quoteright/quotesinglbase/trademark/fi/fl/Lslash/OE/Scaron%
+ /Ydieresis/Zcaron/dotlessi/lslash/oe/scaron/zcaron %
+ 164/currency %
+ 166/brokenbar %
+ 168/dieresis/copyright/ordfeminine %
+ 172/logicalnot/.notdef/registered/macron/degree/plusminus%
+ /twosuperior/threesuperior/acute/mu %
+ 183/periodcentered/cedilla/onesuperior/ordmasculine %
+ 188/onequarter/onehalf/threequarters %
+ 192/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE%
+ /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave%
+ /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute%
+ /Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave%
+ /Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls%
+ /agrave/aacute/acircumflex/atilde/adieresis/aring/ae%
+ /ccedilla/egrave/eacute/ecircumflex/edieresis/igrave%
+ /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute%
+ /ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute%
+ /ucircumflex/udieresis/yacute/thorn/ydieresis%
+ ]%
+ >>%
+/PUT pdfmark%
+[%
+ /_objdef{ZaDb}%
+ /type/dict%
+/OBJ pdfmark%
+[%
+ {ZaDb}%
+ <<%
+ /Type/Font%
+ /Subtype/Type1%
+ /Name/ZaDb%
+ /BaseFont/ZapfDingbats%
+ >>%
+/PUT pdfmark%
+[%
+ /_objdef{Helv}%
+ /type/dict%
+/OBJ pdfmark%
+[%
+ {Helv}%
+ <<%
+ /Type/Font%
+ /Subtype/Type1%
+ /Name/Helv%
+ /BaseFont/Helvetica%
+ /Encoding{pdfDocEncoding}%
+ >>%
+/PUT pdfmark%
+[%
+ /_objdef{aform}%
+ /type/dict%
+/OBJ pdfmark%
+[%
+ /_objdef{afields}%
+ /type/array%
+/OBJ pdfmark%
+[%
+ /_objdef{corder}%
+ /type/array%
+/OBJ pdfmark%
+{%
+ [%
+ /BBox[0 0 100 100]%
+ /_objdef{Check}%
+ /BP pdfmark %
+ 1 0 0 setrgbcolor%
+ /ZapfDingbats 80 selectfont %
+ 20 20 moveto%
+ (4)show%
+ [/EP pdfmark%
+ [%
+ /BBox[0 0 100 100]%
+ /_objdef{Cross}%
+ /BP pdfmark %
+ 1 0 0 setrgbcolor%
+ /ZapfDingbats 80 selectfont %
+ 20 20 moveto%
+ (8)show%
+ [/EP pdfmark%
+ [%
+ /BBox[0 0 250 100]%
+ /_objdef{Submit}%
+ /BP pdfmark %
+ 0.6 setgray %
+ 0 0 250 100 rectfill %
+ 1 setgray %
+ 2 2 moveto %
+ 2 98 lineto %
+ 248 98 lineto %
+ 246 96 lineto %
+ 4 96 lineto %
+ 4 4 lineto %
+ fill %
+ 0.34 setgray %
+ 248 98 moveto %
+ 248 2 lineto %
+ 2 2 lineto %
+ 4 4 lineto %
+ 246 4 lineto %
+ 246 96 lineto %
+ fill%
+ /Helvetica 76 selectfont %
+ 0 setgray %
+ 8 22.5 moveto%
+ (Submit)show%
+ [/EP pdfmark%
+ [%
+ /BBox[0 0 250 100]%
+ /_objdef{SubmitP}%
+ /BP pdfmark %
+ 0.6 setgray %
+ 0 0 250 100 rectfill %
+ 0.34 setgray %
+ 2 2 moveto %
+ 2 98 lineto %
+ 248 98 lineto %
+ 246 96 lineto %
+ 4 96 lineto %
+ 4 4 lineto %
+ fill %
+ 1 setgray %
+ 248 98 moveto %
+ 248 2 lineto %
+ 2 2 lineto %
+ 4 4 lineto %
+ 246 4 lineto %
+ 246 96 lineto %
+ fill%
+ /Helvetica 76 selectfont %
+ 0 setgray %
+ 10 20.5 moveto%
+ (Submit)show%
+ [/EP pdfmark%
+} ?pdfmark%
+[%
+ {aform}%
+ <<%
+ /Fields{afields}%
+ /DR<<%
+ /Font<<%
+ /ZaDb{ZaDb}%
+ /Helv{Helv}%
+ >>%
+ >>%
+ /DA(/Helv 10 Tf 0 g)%
+ /CO{corder}%
+ \ifHy@pdfa
+ \else
+ \ifHyField@NeedAppearances
+ /NeedAppearances true%
+ \fi
+ \fi
+ >>%
+/PUT pdfmark%
+[%
+ {Catalog}%
+ <<%
+ /AcroForm{aform}%
+ >>%
+/PUT pdfmark%
+}}%
+ \kvsetkeys{Form}{#1}%
+}
+\let\@endForm\ltx@empty
+\def\@Gauge[#1]#2#3#4{% parameters, label, minimum, maximum
+ \Hy@Message{Sorry, pdfmark drivers do not support FORM gauges}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\newcount\HyField@AnnotCount
+\HyField@AnnotCount=\z@
+\def\HyField@AdvanceAnnotCount{%
+ \global\advance\HyField@AnnotCount\@ne
+}
+\def\HyField@TheAnnotCount{%
+ \the\HyField@AnnotCount
+}
+% \end{macrocode}
+% \begin{macrocode}
+\edef\Fld@pageobjref{/P\string{ThisPage\string}}
+% \end{macrocode}
+% \begin{macrocode}
+\def\HyField@AddToFields#1{%
+ \pdfmark{%
+ pdfmark=/APPEND,%
+ Raw={%
+ \string{afields\string}%
+ \string{#1\HyField@TheAnnotCount\string}%
+ }%
+ }%
+ \ifx\Fld@calculate@code\ltx@empty
+ \else
+ \pdfmark{%
+ pdfmark=/APPEND,%
+ Raw={%
+ \string{corder\string}%
+ \string{#1\HyField@TheAnnotCount\string}%
+ }%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\@TextField[#1]#2{% parameters, label
+ \def\Fld@name{#2}%
+ \let\Fld@default\ltx@empty
+ \let\Fld@value\@empty
+ \def\Fld@width{\DefaultWidthofText}%
+ \def\Fld@height{%
+ \ifFld@multiline
+ \DefaultHeightofTextMultiline
+ \else
+ \DefaultHeightofText
+ \fi
+ }%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofText,#1%
+ }%
+ \HyField@FlagsText
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \ifx\Fld@value\@empty\def\Fld@value{\Fld@default}\fi
+ \HyField@AdvanceAnnotCount
+ \LayoutTextField{#2}{%
+ \leavevmode
+ \Hy@escapeform\PDFForm@Text
+ \pdfmark[\MakeTextField{\Fld@width}{\Fld@height}]{%
+ pdfmark=/ANN,%
+ objdef=text\HyField@TheAnnotCount,%
+ Raw={\PDFForm@Text}%
+ }%
+ }%
+ \HyField@AddToFields{text}%
+ \endgroup
+}
+\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices
+ \def\Fld@name{#2}%
+ \let\Fld@default\relax
+ \let\Fld@value\relax
+ \def\Fld@width{\DefaultWidthofChoiceMenu}%
+ \def\Fld@height{\DefaultHeightofChoiceMenu}%
+ \begingroup
+ \Fld@menulength=0 %
+ \@tempdima\z@
+ \@for\@curropt:=#3\do{%
+ \expandafter\Fld@checkequals\@curropt==\\%
+ \Hy@StepCount\Fld@menulength
+ \settowidth{\@tempdimb}{\@currDisplay}%
+ \ifdim\@tempdimb>\@tempdima\@tempdima\@tempdimb\fi
+ }%
+ \advance\@tempdima by 15\p@
+ \begingroup
+ \HyField@SetKeys{#1}%
+ \edef\x{\endgroup
+ \noexpand\expandafter
+ \noexpand\HyField@SetKeys
+ \noexpand\expandafter{%
+ \expandafter\noexpand\csname DefaultOptionsof%
+ \ifFld@radio
+ Radio%
+ \else
+ \ifFld@combo
+ \ifFld@popdown
+ PopdownBox%
+ \else
+ ComboBox%
+ \fi
+ \else
+ ListBox%
+ \fi
+ \fi
+ \endcsname
+ }%
+ }\x
+ \HyField@SetKeys{#1}%
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \ifx\Fld@value\relax
+ \let\Fld@value\Fld@default
+ \fi
+ \LayoutChoiceField{#2}{%
+ \ifFld@radio
+ \HyField@FlagsRadioButton
+ \@@Radio{#3}%
+ \else
+ \begingroup
+ \HyField@FlagsChoice
+ \ifdim\Fld@width<\@tempdima
+ \ifdim\@tempdima<1cm\@tempdima1cm\fi
+ \edef\Fld@width{\the\@tempdima}%
+ \fi
+ \ifFld@combo
+ \else
+ \@tempdima=\the\Fld@menulength\Fld@charsize
+ \advance\@tempdima by \Fld@borderwidth bp %
+ \advance\@tempdima by \Fld@borderwidth bp %
+ \edef\Fld@height{\the\@tempdima}%
+ \fi
+ \@@Listbox{#3}%
+ \endgroup
+ \fi
+ }%
+ \endgroup
+}
+\def\@@Radio#1{%
+ \Fld@listcount=0 %
+ \EdefEscapeName\Fld@default{\Fld@default}%
+ \@for\@curropt:=#1\do{%
+ \expandafter\Fld@checkequals\@curropt==\\%
+ \EdefEscapeName\@currValue{\@currValue}%
+ \Hy@StepCount\Fld@listcount
+ \@currDisplay\space
+ \Hy@escapeform\PDFForm@Radio
+ \ifnum\Fld@listcount=1 %
+ \HyField@AdvanceAnnotCount
+ \fi
+ \pdfmark[\MakeRadioField{\Fld@width}{\Fld@height}]{%
+ pdfmark=/ANN,%
+ objdef=\ifnum\Fld@listcount=1 radio\HyField@TheAnnotCount\fi,%
+ Raw={%
+ \PDFForm@Radio /AP <</N <</\@currValue\space {Check}>> >>%
+ }%
+ } % deliberate space between radio buttons
+ \ifnum\Fld@listcount=1 %
+ \HyField@AddToFields{radio}%
+ \fi
+ }%
+}
+\newcount\Fld@listcount
+\def\@@Listbox#1{%
+ \HyField@PDFChoices{#1}%
+ \Hy@escapeform\PDFForm@List
+ \HyField@AdvanceAnnotCount
+ \pdfmark[\MakeChoiceField{\Fld@width}{\Fld@height}]{%
+ pdfmark=/ANN,%
+ objdef=list\HyField@TheAnnotCount,%
+ Raw={\PDFForm@List}%
+ }%
+ \HyField@AddToFields{list}%
+}
+\def\@PushButton[#1]#2{% parameters, label
+ \def\Fld@name{#2}%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofPushButton,#1%
+ }%
+ \ifHy@pdfa
+ \Hy@Error{%
+ PDF/A: Push button with JavaScript is prohibited%
+ }\@ehc
+ \LayoutPushButtonField{%
+ \leavevmode
+ \MakeButtonField{#2}%
+ }%
+ \else
+ \HyField@FlagsPushButton
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \HyField@AdvanceAnnotCount
+ \LayoutPushButtonField{%
+ \leavevmode
+ \Hy@escapeform\PDFForm@Push
+ \pdfmark[\MakeButtonField{#2}]{%
+ pdfmark=/ANN,%
+ objdef=push\HyField@TheAnnotCount,%
+ Raw={\PDFForm@Push}%
+ }%
+ }%
+ \HyField@AddToFields{push}%
+ \fi
+ \endgroup
+}
+\def\@Submit[#1]#2{%
+ \def\Fld@width{\DefaultWidthofSubmit}%
+ \def\Fld@height{\DefaultHeightofSubmit}%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofSubmit,#1%
+ }%
+ \HyField@FlagsPushButton
+ \HyField@FlagsSubmit
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \Hy@escapeform\PDFForm@Submit
+ \HyField@AdvanceAnnotCount
+ \pdfmark[\MakeButtonField{#2}]{%
+ pdfmark=/ANN,%
+ objdef=submit\HyField@TheAnnotCount,%
+ Raw={\PDFForm@Submit /AP<</N{Submit}/D{SubmitP}>>}%
+ }%
+ \HyField@AddToFields{submit}%
+ \endgroup
+}
+\def\@Reset[#1]#2{%
+ \def\Fld@width{\DefaultWidthofReset}%
+ \def\Fld@height{\DefaultHeightofReset}%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofReset,#1%
+ }%
+ \leavevmode
+ \ifHy@pdfa
+ \Hy@Error{%
+ PDF/A: Reset action is prohibited%
+ }\@ehc
+ \MakeButtonField{#2}%
+ \else
+ \HyField@FlagsPushButton
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \Hy@escapeform\PDFForm@Reset
+ \HyField@AdvanceAnnotCount
+ \pdfmark[\MakeButtonField{#2}]{%
+ pdfmark=/ANN,%
+ objdef=reset\HyField@TheAnnotCount,%
+ Raw={\PDFForm@Reset}%
+ }%
+ \HyField@AddToFields{reset}%
+ \fi
+ \endgroup
+}%
+\def\@CheckBox[#1]#2{% parameters, label
+ \def\Fld@name{#2}%
+ \def\Fld@default{0}%
+ \begingroup
+ \def\Fld@width{\DefaultWidthofCheckBox}%
+ \def\Fld@height{\DefaultHeightofCheckBox}%
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofCheckBox,#1%
+ }%
+ \HyField@FlagsCheckBox
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \HyField@AdvanceAnnotCount
+ \LayoutCheckField{#2}{%
+ \leavevmode
+ \Hy@escapeform\PDFForm@Check
+ \pdfmark[\MakeCheckField{\Fld@width}{\Fld@height}]{%
+ pdfmark=/ANN,%
+ objdef=check\HyField@TheAnnotCount,%
+ Raw={\PDFForm@Check}%
+ }%
+ }%
+ \HyField@AddToFields{check}%
+ \endgroup
+}
+%</pdfmark>
+% \end{macrocode}
+%
+% \subsection{HyperTeX}
+% \begin{macrocode}
+%<*hypertex>
+\def\@Form[#1]{%
+ \Hy@Message{Sorry, HyperTeX does not support FORMs}%
+}
+\let\@endForm\ltx@empty
+\def\@Gauge[#1]#2#3#4{% parameters, label, minimum, maximum
+ \Hy@Message{Sorry, HyperTeX does not support FORM gauges}%
+}
+\def\@TextField[#1]#2{% parameters, label
+ \Hy@Message{Sorry, HyperTeX does not support FORM text fields}%
+}
+\def\@CheckBox[#1]#2{% parameters, label
+ \Hy@Message{Sorry, HyperTeX does not support FORM checkboxes}%
+}
+\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices
+ \Hy@Message{Sorry, HyperTeX does not support FORM choice menus}%
+}
+\def\@PushButton[#1]#2{% parameters, label
+ \Hy@Message{Sorry, HyperTeX does not support FORM pushbuttons}%
+}
+\def\@Reset[#1]#2{%
+ \Hy@Message{Sorry, HyperTeX does not support FORMs}%
+}
+\def\@Submit[#1]#2{%
+ \Hy@Message{Sorry, HyperTeX does not support FORMs}%
+}
+%</hypertex>
+% \end{macrocode}
+% \subsection{TeX4ht}
+% \begin{macrocode}
+%<*tex4ht>
+\def\@Form[#1]{%
+ \kvsetkeys{Form}{#1}%
+ \HCode{<form action="\Form@action" method="\Form@method">}%
+}
+\def\@endForm{\HCode{</form>}}
+\def\@Gauge[#1]#2#3#4{% parameters, label, minimum, maximum
+ \Hy@Message{Sorry, TeX4ht does not support gauges}%
+}
+\def\@TextField[#1]#2{% parameters, label
+ \let\Hy@reserved@a\@empty
+ \def\Fld@name{#2}%
+ \let\Fld@default\ltx@empty
+ \bgroup
+ \Field@toks={ }%
+ \kvsetkeys{Field}{#1}%
+ \HCode{<label for="\Fld@name">#2</label>}%
+ \ifFld@password
+ \@@PasswordField
+ \else
+ \@@TextField
+ \fi
+ \egroup
+}
+\def\@@PasswordField{%
+ \HCode{%
+ <input type="password" %
+ id="\Fld@name" %
+ name="\Fld@name" %
+ \ifFld@hidden type="hidden" \fi
+ value="\Fld@default" %
+ \the\Field@toks
+ >%
+ }%
+}
+\def\@@TextField{%
+ \ifFld@multiline
+ \HCode{<textarea %
+ \ifFld@readonly readonly \fi
+ id="\Fld@name" %
+ name="\Fld@name" %
+ \ifFld@hidden type="hidden" \fi
+ \the\Field@toks>%
+ }%
+ \Fld@default
+ \HCode{</textarea>}%
+ \else
+ \HCode{<input type="textbox" %
+ \ifFld@readonly readonly \fi
+ id="\Fld@name" %
+ name="\Fld@name" %
+ \ifFld@hidden type="hidden" \fi
+ value="\Fld@default" %
+ \the\Field@toks>%
+ }%
+ \fi
+}
+\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices
+ \def\Fld@name{#2}%
+ \let\Fld@default\ltx@empty
+ \let\Hy@reserved@a\relax
+ \begingroup
+ \expandafter\Fld@findlength#3\\%
+ \Field@toks={ }%
+ \kvsetkeys{Field}{#1}%
+ #2%
+ \ifFld@radio
+ \expandafter\@@Radio#3\\%
+ \else
+ \expandafter\@@Menu#3\\%
+ \fi
+ \endgroup
+}
+\def\Fld@findlength#1\\{%
+ \Fld@menulength=0 %
+ \@for\@curropt:=#1\do{\Hy@StepCount\Fld@menulength}%
+}
+\def\@@Menu#1\\{%
+ \HCode{<select size="\the\Fld@menulength" %
+ name="\Fld@name" %
+ \the\Field@toks>%
+ }%
+ \@for\@curropt:=#1\do{%
+ \expandafter\Fld@checkequals\@curropt==\\%
+ \HCode{<option %
+ \ifx\@curropt\Fld@default selected \fi
+ value="\@currValue">\@currDisplay</option>%
+ }%
+ }%
+ \HCode{</select>}%
+}
+\def\@@Radio#1\\{%
+ \@for\@curropt:=#1\do{%
+ \expandafter\Fld@checkequals\@curropt==\\%
+ \HCode{<input type="radio" %
+ \ifx\@curropt\Fld@default checked \fi
+ name="\Fld@name" %
+ value="\@currValue" %
+ \the\Field@toks>%
+ }%
+ \@currDisplay
+ }%
+}
+\def\@PushButton[#1]#2{% parameters, label
+ \def\Fld@name{#2}%
+ \bgroup
+ \Field@toks={ }%
+ \kvsetkeys{Field}{#1}%
+ \HCode{<input type="button" %
+ name="\Fld@name" %
+ value="#2" %
+ \the\Field@toks>%
+ }%
+ \HCode{</button>}%
+ \egroup
+}
+\def\@Submit[#1]#2{%
+ \HCode{<button type="submit">#2</button>}%
+}
+\def\@Reset[#1]#2{%
+ \HCode{<button type="reset">#2</button>}%
+}
+\def\@CheckBox[#1]#2{% parameters, label
+ \let\Hy@reserved@a\@empty
+ \def\Fld@name{#2}%
+ \def\Fld@default{0}%
+ \bgroup
+ \Field@toks={ }%
+ \kvsetkeys{Field}{#1}%
+ \HCode{<input type="checkbox" %
+ \ifFld@checked checked \fi
+ \ifFld@disabled disabled \fi
+ \ifFld@readonly readonly \fi
+ name="\Fld@name" %
+ \ifFld@hidden type="hidden" \fi
+ value="\Fld@default" %
+ \the\Field@toks>%
+ #2%
+ }%
+ \egroup
+}
+%</tex4ht>
+% \end{macrocode}
+%
+% \subsection{pdfTeX}
+% \begin{macrocode}
+%<*pdftex>
+\def\@Gauge[#1]#2#3#4{% parameters, label, minimum, maximum
+ \Hy@Message{Sorry, pdftex does not support FORM gauges}%
+}
+\def\MakeFieldObject#1#2{\sbox0{#1}%
+ \immediate\pdfxform0 %
+ \expandafter\edef\csname #2Object\endcsname{%
+ \the\pdflastxform\space 0 R%
+ }%
+% \hbox to 0pt{\hskip-\maxdimen{\pdfrefxform \the\pdflastxform}}%
+}%
+\let\HyField@afields\ltx@empty
+\let\HyField@cofields\ltx@empty
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdflastlink\endcsname\relax
+ \let\HyField@AddToFields\relax
+ \PackageInfo{hyperref}{%
+ You need pdfTeX 1.40.0 for setting the /Fields entry.%
+ \MessageBreak
+ Adobe Reader/Acrobat accepts an empty /Field array,%
+ \MessageBreak
+ but other PDF viewers might complain%
+ }%
+\else
+ \let\HyField@AuxAddToFields\ltx@gobble
+ \let\HyField@AuxAddToCoFields\ltx@gobbletwo
+ \def\HyField@AfterAuxOpen{\Hy@AtBeginDocument}%
+% \end{macrocode}
+% Insertion sort for calculation field list.
+% In case of equal sort keys (for example, if `calculatesortkey`
+% is not used at all) the keys keep document calling order.
+% \begin{macrocode}
+ \def\HyField@ABD@AuxAddToCoFields#1#2{%
+ \begingroup
+ \Hy@safe@activestrue
+ \let\ltx@secondoftwo\relax
+ \ifx\HyField@cofields\ltx@empty
+ \xdef\HyField@cofields{%
+ \ltx@secondoftwo{#1}{ #2 0 R}%
+ }%
+ \else
+ \let\ltx@secondoftwo\relax
+ \def\HyField@AddCoField##1##2##3{%
+ \ifx##1\ltx@empty
+ \ltx@secondoftwo{#1}{ #2 0 R}%
+ \expandafter\ltx@gobble
+ \else
+ \ifnum\pdfstrcmp{##2}{#1}>\ltx@zero
+ \ltx@secondoftwo{#1}{ #2 0 R}%
+ \ltx@secondoftwo{##2}{##3}%
+ \expandafter\expandafter\expandafter\ltx@gobble
+ \else
+ \ltx@secondoftwo{##2}{##3}%
+ \fi
+ \fi
+ \HyField@AddCoField
+ }%
+ \xdef\HyField@cofields{%
+ \expandafter\HyField@AddCoField
+ \HyField@cofields\ltx@empty\ltx@empty\ltx@empty
+ }%
+ \fi
+ \endgroup
+ }%
+ \Hy@AtBeginDocument{%
+ \if@filesw
+ \immediate\write\@mainaux{%
+ \string\providecommand\string\HyField@AuxAddToFields[1]{}%
+ }%
+ \immediate\write\@mainaux{%
+ \string\providecommand\string\HyField@AuxAddToCoFields[2]{}%
+ }%
+ \fi
+ \let\HyField@AfterAuxOpen\@firstofone
+ \def\HyField@AuxAddToFields#1{%
+ \xdef\HyField@afields{%
+ \ifx\HyField@afields\@empty
+ \else
+ \HyField@afields
+ \space
+ \fi
+ #1 0 R%
+ }%
+ }%
+ \let\HyField@AuxAddToCoFields\HyField@ABD@AuxAddToCoFields
+ }%
+ \def\HyField@AddToFields{%
+ \expandafter\HyField@@AddToFields\expandafter{%
+ \the\pdflastlink
+ }%
+ \ifx\Fld@calculate@code\ltx@empty
+ \else
+ \begingroup
+ \Hy@safe@activestrue
+ \edef\Hy@temp{%
+ \endgroup
+ \if@filesw
+ \write\@mainaux{%
+ \string\HyField@AuxAddToCoFields{%
+ \Fld@calculate@sortkey
+ }{%
+ \the\pdflastlink
+ }%
+ }%
+ \fi
+ }%
+ \Hy@temp
+ \fi
+ }%
+ \def\HyField@@AddToFields#1{%
+ \HyField@AfterAuxOpen{%
+ \if@filesw
+ \write\@mainaux{%
+ \string\HyField@AuxAddToFields{#1}%
+ }%
+ \fi
+ }%
+ }%
+\fi
+\def\@Form[#1]{%
+ \@ifundefined{textcolor}{\let\textcolor\@gobble}{}%
+ \kvsetkeys{Form}{#1}%
+ \pdf@ifdraftmode{}{%
+ \Hy@FormObjects
+ \ifnum\pdftexversion>13 %
+ \pdfrefobj\OBJ@pdfdocencoding
+ \pdfrefobj\OBJ@ZaDb
+ \pdfrefobj\OBJ@Helv
+ \fi
+ \AtVeryEndDocument{%
+ \immediate\pdfobj{%
+ <<%
+ /Fields[\HyField@afields]%
+ \ifx\HyField@cofields\ltx@empty
+ \else
+ /CO[\romannumeral-`\Q\HyField@cofields]%
+ \fi
+ /DR<<%
+ /Font<<%
+ /ZaDb \OBJ@ZaDb\space 0 R%
+ /Helv \OBJ@Helv\space 0 R%
+ >>%
+ >>%
+ /DA(/Helv 10 Tf 0 g)%
+ \ifHy@pdfa
+ \else
+ \ifHyField@NeedAppearances
+ /NeedAppearances true%
+ \fi
+ \fi
+ >>%
+ }%
+ \edef\OBJ@acroform{\the\pdflastobj}%
+ \pdfcatalog{/AcroForm \OBJ@acroform\space 0 R}%
+ }%
+ }%
+ \MakeFieldObject{%
+% \end{macrocode}
+% Same as \verb|\ding{123}| of package pifont.
+% \begin{macrocode}
+ \begingroup
+ \fontfamily{pzd}%
+ \fontencoding{U}%
+ \fontseries{m}%
+ \fontshape{n}%
+ \selectfont
+ \char123 %
+ \endgroup
+ }{Ding}%
+ \MakeFieldObject{%
+ \fbox{\textcolor{yellow}{\textsf{Submit}}}%
+ }{Submit}%
+ \MakeFieldObject{%
+ \fbox{\textcolor{yellow}{\textsf{SubmitP}}}%
+ }{SubmitP}%
+}
+\let\@endForm\ltx@empty
+% \end{macrocode}
+% \begin{macrocode}
+\let\HyAnn@AbsPageLabel\ltx@empty
+\let\Fld@pageobjref\ltx@empty
+\ltx@IfUndefined{pdfpageref}{%
+}{%
+ \ltx@ifpackageloaded{zref-abspage}{%
+ \newcount\HyAnn@Count
+ \HyAnn@Count=\ltx@zero
+ \def\HyAnn@AbsPageLabel{%
+ \global\advance\HyAnn@Count by\ltx@one
+ \zref@labelbyprops{HyAnn@\the\HyAnn@Count}{abspage}%
+ \zref@refused{HyAnn@\the\HyAnn@Count}%
+ }%
+ \def\Fld@pageobjref{%
+ \zref@ifrefundefined{HyAnn@\the\HyAnn@Count}{%
+ }{%
+ \zref@ifrefcontainsprop{HyAnn@\the\HyAnn@Count}{abspage}{%
+ /P \pdfpageref
+ \zref@extractdefault{HyAnn@\the\HyAnn@Count}{abspage}{1} %
+ \space 0 R%
+ }{%
+ }%
+ }%
+ }%
+ }{%
+ }%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\@TextField[#1]#2{% parameters, label
+ \def\Fld@name{#2}%
+ \let\Fld@default\ltx@empty
+ \let\Fld@value\@empty
+ \def\Fld@width{\DefaultWidthofText}%
+ \def\Fld@height{%
+ \ifFld@multiline
+ \DefaultHeightofTextMultiline
+ \else
+ \DefaultHeightofText
+ \fi
+ }%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofText,#1%
+ }%
+ \PDFForm@Name
+ \HyField@FlagsText
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \ifx\Fld@value\@empty\def\Fld@value{\Fld@default}\fi
+ \LayoutTextField{#2}{%
+ \leavevmode
+ \HyAnn@AbsPageLabel
+ \Hy@escapeform\PDFForm@Text
+ \pdfstartlink user {\PDFForm@Text}\relax
+ \MakeTextField{\Fld@width}{\Fld@height}\pdfendlink
+ \HyField@AddToFields
+ }%
+ \endgroup
+}
+\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices
+ \def\Fld@name{#2}%
+ \let\Fld@default\relax
+ \let\Fld@value\relax
+ \def\Fld@width{\DefaultWidthofChoiceMenu}%
+ \def\Fld@height{\DefaultHeightofChoiceMenu}%
+ \begingroup
+ \Fld@menulength=0 %
+ \@tempdima\z@
+ \@for\@curropt:=#3\do{%
+ \expandafter\Fld@checkequals\@curropt==\\%
+ \Hy@StepCount\Fld@menulength
+ \settowidth{\@tempdimb}{\@currDisplay}%
+ \ifdim\@tempdimb>\@tempdima\@tempdima\@tempdimb\fi
+ }%
+ \advance\@tempdima by 15\p@
+ \begingroup
+ \HyField@SetKeys{#1}%
+ \edef\x{\endgroup
+ \noexpand\expandafter
+ \noexpand\HyField@SetKeys
+ \noexpand\expandafter{%
+ \expandafter\noexpand\csname DefaultOptionsof%
+ \ifFld@radio
+ Radio%
+ \else
+ \ifFld@combo
+ \ifFld@popdown
+ PopdownBox%
+ \else
+ ComboBox%
+ \fi
+ \else
+ ListBox%
+ \fi
+ \fi
+ \endcsname
+ }%
+ }\x
+ \HyField@SetKeys{#1}%
+ \PDFForm@Name
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \ifx\Fld@value\relax
+ \let\Fld@value\Fld@default
+ \fi
+ \LayoutChoiceField{#2}{%
+ \ifFld@radio
+ \HyField@FlagsRadioButton
+ \@@Radio{#3}%
+ \else
+ \begingroup
+ \HyField@FlagsChoice
+ \ifdim\Fld@width<\@tempdima
+ \ifdim\@tempdima<1cm\@tempdima1cm\fi
+ \edef\Fld@width{\the\@tempdima}%
+ \fi
+ \ifFld@combo
+ \else
+ \@tempdima=\the\Fld@menulength\Fld@charsize
+ \advance\@tempdima by \Fld@borderwidth bp %
+ \advance\@tempdima by \Fld@borderwidth bp %
+ \edef\Fld@height{\the\@tempdima}%
+ \fi
+ \@@Listbox{#3}%
+ \endgroup
+ \fi
+ }%
+ \endgroup
+}
+\def\@@Radio#1{%
+ \Fld@listcount=0 %
+ \EdefEscapeName\Fld@default{\Fld@default}%
+ \@for\@curropt:=#1\do{%
+ \expandafter\Fld@checkequals\@curropt==\\%
+ \EdefEscapeName\@currValue{\@currValue}%
+ \Hy@StepCount\Fld@listcount
+ \@currDisplay\space
+ \leavevmode
+ \HyAnn@AbsPageLabel
+ \Hy@escapeform\PDFForm@Radio
+ \pdfstartlink user {%
+ \PDFForm@Radio
+ /AP<<%
+ /N<<%
+% \end{macrocode}
+% Laurent.Guillope@math.univ-nantes.fr (Laurent Guillope)
+% persuades me that this was wrong:
+% |/\Fld@name\the\Fld@listcount|. But I leave it here to remind
+% me that it is untested.
+% \begin{macrocode}
+ /\@currValue\space \DingObject
+ >>%
+ >>%
+ }%
+ \relax
+ \MakeRadioField{\Fld@width}{\Fld@height}\pdfendlink
+ \ifnum\Fld@listcount=1 %
+ \HyField@AddToFields
+ \fi
+ \space % deliberate space between radio buttons
+ }%
+}
+\newcount\Fld@listcount
+\def\@@Listbox#1{%
+ \HyField@PDFChoices{#1}%
+ \leavevmode
+ \HyAnn@AbsPageLabel
+ \Hy@escapeform\PDFForm@List
+ \pdfstartlink user {\PDFForm@List}\relax
+ \MakeChoiceField{\Fld@width}{\Fld@height}%
+ \pdfendlink
+ \HyField@AddToFields
+}
+\def\@PushButton[#1]#2{% parameters, label
+ \def\Fld@name{#2}%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofPushButton,#1%
+ }%
+ \PDFForm@Name
+ \ifHy@pdfa
+ \Hy@Error{%
+ PDF/A: Push button with JavaScript is prohibited%
+ }\@ehc
+ \LayoutPushButtonField{%
+ \leavevmode
+ \MakeButtonField{#2}%
+ }%
+ \else
+ \HyField@FlagsPushButton
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \LayoutPushButtonField{%
+ \leavevmode
+ \HyAnn@AbsPageLabel
+ \Hy@escapeform\PDFForm@Push
+ \pdfstartlink user {\PDFForm@Push}\relax
+ \MakeButtonField{#2}%
+ \pdfendlink
+ \HyField@AddToFields
+ }%
+ \fi
+ \endgroup
+}
+\def\@Submit[#1]#2{%
+ \def\Fld@width{\DefaultWidthofSubmit}%
+ \def\Fld@height{\DefaultHeightofSubmit}%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofSubmit,#1%
+ }%
+ \HyField@FlagsPushButton
+ \HyField@FlagsSubmit
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \leavevmode
+ \HyAnn@AbsPageLabel
+ \Hy@escapeform\PDFForm@Submit
+ \pdfstartlink user {%
+ \PDFForm@Submit
+ /AP<</N \SubmitObject/D \SubmitPObject>>%
+ }%
+ \relax
+ \MakeButtonField{#2}%
+ \pdfendlink
+ \HyField@AddToFields
+ \endgroup
+}
+\def\@Reset[#1]#2{%
+ \def\Fld@width{\DefaultWidthofReset}%
+ \def\Fld@height{\DefaultHeightofReset}%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofReset,#1%
+ }%
+ \leavevmode
+ \ifHy@pdfa
+ \Hy@Error{%
+ PDF/A: Reset action is prohibited%
+ }\@ehc
+ \MakeButtonField{#2}%
+ \else
+ \HyField@FlagsPushButton
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \HyAnn@AbsPageLabel
+ \Hy@escapeform\PDFForm@Reset
+ \pdfstartlink user {\PDFForm@Reset}\relax
+ \MakeButtonField{#2}%
+ \pdfendlink
+ \HyField@AddToFields
+ \fi
+ \endgroup
+}
+\def\@CheckBox[#1]#2{% parameters, label
+ \def\Fld@name{#2}%
+ \def\Fld@default{0}%
+ \begingroup
+ \def\Fld@width{\DefaultWidthofCheckBox}%
+ \def\Fld@height{\DefaultHeightofCheckBox}%
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofCheckBox,#1%
+ }%
+ \PDFForm@Name
+ \HyField@FlagsCheckBox
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \LayoutCheckField{#2}{%
+ \leavevmode
+ \HyAnn@AbsPageLabel
+ \Hy@escapeform\PDFForm@Check
+ \pdfstartlink user {\PDFForm@Check}\relax
+ \MakeCheckField{\Fld@width}{\Fld@height}%
+ \pdfendlink
+ \HyField@AddToFields
+ }%
+ \endgroup
+}
+\def\Hy@FormObjects{%
+ \pdfobj {%
+ <<%
+ /Type/Encoding%
+ /Differences[%
+ 24/breve/caron/circumflex/dotaccent/hungarumlaut/ogonek%
+ /ring/tilde %
+ 39/quotesingle %
+ 96/grave %
+ 128/bullet/dagger/daggerdbl/ellipsis/emdash/endash/florin%
+ /fraction/guilsinglleft/guilsinglright/minus/perthousand%
+ /quotedblbase/quotedblleft/quotedblright/quoteleft%
+ /quoteright/quotesinglbase/trademark/fi/fl/Lslash/OE%
+ /Scaron/Ydieresis/Zcaron/dotlessi/lslash/oe/scaron/zcaron %
+ 164/currency %
+ 166/brokenbar %
+ 168/dieresis/copyright/ordfeminine %
+ 172/logicalnot/.notdef/registered/macron/degree/plusminus%
+ /twosuperior/threesuperior/acute/mu %
+ 183/periodcentered/cedilla/onesuperior/ordmasculine %
+ 188/onequarter/onehalf/threequarters %
+ 192/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE%
+ /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave%
+ /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute%
+ /Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave%
+ /Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls%
+ /agrave/aacute/acircumflex/atilde/adieresis/aring/ae%
+ /ccedilla/egrave/eacute/ecircumflex/edieresis/igrave%
+ /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute%
+ /ocircumflex/otilde/odieresis/divide/oslash/ugrave%
+ /uacute/ucircumflex/udieresis/yacute/thorn/ydieresis%
+ ]%
+ >>%
+ }%
+ \xdef\OBJ@pdfdocencoding{\the\pdflastobj}%
+ \pdfobj{%
+ <<%
+ /Type/Font%
+ /Subtype/Type1%
+ /Name/ZaDb%
+ /BaseFont/ZapfDingbats%
+ >>%
+ }%
+ \xdef\OBJ@ZaDb{\the\pdflastobj}%
+ \pdfobj{%
+ <<%
+ /Type/Font%
+ /Subtype/Type1%
+ /Name/Helv%
+ /BaseFont/Helvetica%
+ /Encoding \OBJ@pdfdocencoding\space 0 R%
+ >>%
+ }%
+ \xdef\OBJ@Helv{\the\pdflastobj}%
+ \global\let\Hy@FormObjects\relax
+}
+%</pdftex>
+% \end{macrocode}
+%
+% \subsection{dvipdfm, xetex}
+% D. P. Story adapted the pdf\TeX{} forms part for dvipdfm, of which
+% version 0.12.7b or higher is required because of a bug.
+% \begin{macrocode}
+%<*dvipdfm|xetex>
+% \end{macrocode}
+%
+% \begin{macro}{\@Gauge}
+% \begin{macrocode}
+\def\@Gauge[#1]#2#3#4{% parameters, label, minimum, maximum
+ \Hy@Message{Sorry, dvipdfm/XeTeX does not support FORM gauges}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@Form}
+% \begin{macrocode}
+\def\@Form[#1]{%
+ \@ifundefined{textcolor}{\let\textcolor\@gobble}{}%
+ \kvsetkeys{Form}{#1}%
+ \Hy@FormObjects
+ \@pdfm@mark{obj @afields []}%
+ \@pdfm@mark{obj @corder []}%
+ \@pdfm@mark{%
+ obj @aform <<%
+ /Fields @afields%
+ /DR<<%
+ /Font<<%
+ /ZaDb @OBJZaDb%
+ /Helv @OBJHelv%
+ >>%
+ >>%
+ /DA(/Helv 10 Tf 0 g)%
+ /CO @corder%
+ \ifHy@pdfa
+ \else
+ \ifHyField@NeedAppearances
+ /NeedAppearances true%
+ \fi
+ \fi
+ >>%
+ }%
+ \@pdfm@mark{put @catalog <</AcroForm @aform>>}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@endForm}
+% \begin{macrocode}
+\let\@endForm\ltx@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dvipdfm@setdim}
+% \cmd{\dvipdfm@setdim} sets dimensions for ann using
+% \cmd{\pdfm@box}.
+% \begin{macrocode}
+\def\dvipdfm@setdim{%
+ height \the\ht\pdfm@box\space
+ width \the\wd\pdfm@box\space
+ depth \the\dp\pdfm@box\space
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyField@AnnotCount}
+% \begin{macrocode}
+\newcount\HyField@AnnotCount
+\HyField@AnnotCount=\z@
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyField@AdvanceAnnotCount}
+% \begin{macrocode}
+\def\HyField@AdvanceAnnotCount{%
+ \global\advance\HyField@AnnotCount\@ne
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\HyField@TheAnnotCount}
+% \begin{macrocode}
+\def\HyField@TheAnnotCount{%
+ \the\HyField@AnnotCount
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Fld@pageobjref}
+% \begin{macrocode}
+\def\Fld@pageobjref{/P @thispage}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HyField@AddToFields}
+% \begin{macrocode}
+\def\HyField@AddToFields#1{%
+ \@pdfm@mark{put @afields @#1\HyField@TheAnnotCount}%
+ \ifx\Fld@calculate@code\ltx@empty
+ \else
+ \@pdfm@mark{put @corder @#1\HyField@TheAnnotCount}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@TextField}
+% \begin{macrocode}
+\def\@TextField[#1]#2{% parameters, label
+ \def\Fld@name{#2}%
+ \let\Fld@default\ltx@empty
+ \let\Fld@value\@empty
+ \def\Fld@width{\DefaultWidthofText}%
+ \def\Fld@height{%
+ \ifFld@multiline
+ \DefaultHeightofTextMultiline
+ \else
+ \DefaultHeightofText
+ \fi
+ }%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofText,#1%
+ }%
+ \PDFForm@Name
+ \HyField@FlagsText
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \ifx\Fld@value\@empty\def\Fld@value{\Fld@default}\fi
+ \setbox\pdfm@box=\hbox{%
+ \MakeTextField{\Fld@width}{\Fld@height}%
+ }%
+ \HyField@AdvanceAnnotCount
+ \LayoutTextField{#2}{%
+ \leavevmode
+ \Hy@escapeform\PDFForm@Text
+ \@pdfm@mark{%
+ ann @text\HyField@TheAnnotCount\space
+ \dvipdfm@setdim << \PDFForm@Text >>%
+ }%
+ }%
+ \unhbox\pdfm@box
+ \HyField@AddToFields{text}%
+ % record in @afields array
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@ChoiceMenu}
+% \begin{macrocode}
+\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices
+ \def\Fld@name{#2}%
+ \let\Fld@default\relax
+ \let\Fld@value\relax
+ \def\Fld@width{\DefaultWidthofChoiceMenu}%
+ \def\Fld@height{\DefaultHeightofChoiceMenu}%
+ \begingroup
+ \Fld@menulength=0 %
+ \@tempdima\z@
+ \@for\@curropt:=#3\do{%
+ \expandafter\Fld@checkequals\@curropt==\\%
+ \Hy@StepCount\Fld@menulength
+ \settowidth{\@tempdimb}{\@currDisplay}%
+ \ifdim\@tempdimb>\@tempdima\@tempdima\@tempdimb\fi
+ }%
+ \advance\@tempdima by 15\p@
+ \begingroup
+ \HyField@SetKeys{#1}%
+ \edef\x{\endgroup
+ \noexpand\expandafter
+ \noexpand\HyField@SetKeys
+ \noexpand\expandafter{%
+ \expandafter\noexpand\csname DefaultOptionsof%
+ \ifFld@radio
+ Radio%
+ \else
+ \ifFld@combo
+ \ifFld@popdown
+ PopdownBox%
+ \else
+ ComboBox%
+ \fi
+ \else
+ ListBox%
+ \fi
+ \fi
+ \endcsname
+ }%
+ }\x
+ \HyField@SetKeys{#1}%
+ \PDFForm@Name
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \ifx\Fld@value\relax
+ \let\Fld@value\Fld@default
+ \fi
+ \LayoutChoiceField{#2}{%
+ \ifFld@radio
+ \HyField@FlagsRadioButton
+ \@@Radio{#3}%
+ \else
+ \begingroup
+ \HyField@FlagsChoice
+ \ifdim\Fld@width<\@tempdima
+ \ifdim\@tempdima<1cm\@tempdima1cm\fi
+ \edef\Fld@width{\the\@tempdima}%
+ \fi
+ \ifFld@combo
+ \else
+ \@tempdima=\the\Fld@menulength\Fld@charsize
+ \advance\@tempdima by \Fld@borderwidth bp %
+ \advance\@tempdima by \Fld@borderwidth bp %
+ \edef\Fld@height{\the\@tempdima}%
+ \fi
+ \@@Listbox{#3}%
+ \endgroup
+ \fi
+ }%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@Radio}
+% \begin{macrocode}
+\def\@@Radio#1{%
+ \Fld@listcount=0 %
+ \EdefEscapeName\Fld@default{\Fld@default}%
+ \setbox\pdfm@box=\hbox{%
+ \MakeRadioField{\Fld@width}{\Fld@height}%
+ }%
+ \@for\@curropt:=#1\do{%
+ \expandafter\Fld@checkequals\@curropt==\\%
+ \EdefEscapeName\@currValue{\@currValue}%
+ \Hy@StepCount\Fld@listcount
+ \@currDisplay\space
+ \leavevmode
+ \Hy@escapeform\PDFForm@Radio
+ \ifnum\Fld@listcount=1 %
+ \HyField@AdvanceAnnotCount
+ \fi
+ \@pdfm@mark{%
+ ann %
+ \ifnum\Fld@listcount=1 %
+ @radio\HyField@TheAnnotCount%
+ \space
+ \fi
+ \dvipdfm@setdim
+ <<%
+ \PDFForm@Radio
+ /AP<</N<</\@currValue /null>>>>%
+ >>%
+ }%
+ \unhcopy\pdfm@box\space% deliberate space between radio buttons
+ \ifnum\Fld@listcount=1 %
+ \HyField@AddToFields{radio}%
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Fld@listcount}
+% \begin{macrocode}
+\newcount\Fld@listcount
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@Listbox}
+% \begin{macrocode}
+\def\@@Listbox#1{%
+ \HyField@PDFChoices{#1}%
+ \setbox\pdfm@box=\hbox{%
+ \MakeChoiceField{\Fld@width}{\Fld@height}%
+ }%
+ \leavevmode
+ \Hy@escapeform\PDFForm@List
+ \HyField@AdvanceAnnotCount
+ \@pdfm@mark{%
+ ann @list\HyField@TheAnnotCount\space
+ \dvipdfm@setdim
+ <<\PDFForm@List>>%
+ }%
+ \unhbox\pdfm@box
+ \HyField@AddToFields{list}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@PushButton}
+% \begin{macrocode}
+\def\@PushButton[#1]#2{% parameters, label
+ \def\Fld@name{#2}%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofPushButton,#1%
+ }%
+ \PDFForm@Name
+ \ifHy@pdfa
+ \Hy@Error{%
+ PDF/A: Push button with JavaScript is prohibited%
+ }\@ehc
+ \LayoutPushButtonField{%
+ \leavevmode
+ \MakeButtonField{#2}%
+ }%
+ \else
+ \setbox\pdfm@box=\hbox{\MakeButtonField{#2}}%
+ \HyField@FlagsPushButton
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \HyField@AdvanceAnnotCount
+ \LayoutPushButtonField{%
+ \leavevmode
+ \Hy@escapeform\PDFForm@Push
+ \@pdfm@mark{%
+ ann @push\HyField@TheAnnotCount\space
+ \dvipdfm@setdim
+ <<\PDFForm@Push>>%
+ }%
+ }%
+ \unhbox\pdfm@box
+ \HyField@AddToFields{push}%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@Submit}
+% \begin{macrocode}
+\def\@Submit[#1]#2{%
+ \def\Fld@width{\DefaultWidthofSubmit}%
+ \def\Fld@height{\DefaultHeightofSubmit}%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofSubmit,#1%
+ }%
+ \HyField@FlagsPushButton
+ \HyField@FlagsSubmit
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \setbox\pdfm@box=\hbox{\MakeButtonField{#2}}%
+ \leavevmode
+ \Hy@escapeform\PDFForm@Submit
+ \HyField@AdvanceAnnotCount
+ \@pdfm@mark{%
+ ann @submit\HyField@TheAnnotCount\space
+ \dvipdfm@setdim
+ <<\PDFForm@Submit>>%
+ }%
+ \unhbox\pdfm@box%
+ \HyField@AddToFields{submit}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@Reset}
+% \begin{macrocode}
+\def\@Reset[#1]#2{%
+ \def\Fld@width{\DefaultWidthofReset}%
+ \def\Fld@height{\DefaultHeightofReset}%
+ \begingroup
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofReset,#1%
+ }%
+ \leavevmode
+ \ifHy@pdfa
+ \Hy@Error{%
+ PDF/A: Reset action is prohibited%
+ }\@ehc
+ \MakeButtonField{#2}%
+ \else
+ \HyField@FlagsPushButton
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \setbox\pdfm@box=\hbox{\MakeButtonField{#2}}%
+ \Hy@escapeform\PDFForm@Reset
+ \HyField@AdvanceAnnotCount
+ \@pdfm@mark{%
+ ann @reset\HyField@TheAnnotCount\space
+ \dvipdfm@setdim
+ <<\PDFForm@Reset>>%
+ }%
+ \unhbox\pdfm@box
+ \HyField@AddToFields{reset}%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@CheckBox}
+% \begin{macrocode}
+\def\@CheckBox[#1]#2{% parameters, label
+ \def\Fld@name{#2}%
+ \def\Fld@default{0}%
+ \begingroup
+ \def\Fld@width{\DefaultWidthofCheckBox}%
+ \def\Fld@height{\DefaultHeightofCheckBox}%
+ \expandafter\HyField@SetKeys\expandafter{%
+ \DefaultOptionsofCheckBox,#1%
+ }%
+ \PDFForm@Name
+ \HyField@FlagsCheckBox
+ \ifFld@hidden\def\Fld@width{1sp}\fi
+ \setbox\pdfm@box=\hbox{%
+ \MakeCheckField{\Fld@width}{\Fld@height}%
+ }%
+ \HyField@AdvanceAnnotCount
+ \LayoutCheckField{#2}{%
+ \leavevmode
+ \Hy@escapeform\PDFForm@Check
+ \@pdfm@mark{%
+ ann @check\HyField@TheAnnotCount\space
+ \dvipdfm@setdim
+ <<\PDFForm@Check>>%
+ }%
+ \unhbox\pdfm@box
+ \HyField@AddToFields{check}%
+ }%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\def\Hy@FormObjects{%
+ \@pdfm@mark{obj @OBJpdfdocencoding%
+ <<%
+ /Type/Encoding%
+ /Differences[%
+ 24/breve/caron/circumflex/dotaccent/hungarumlaut/ogonek/ring/tilde %
+ 39/quotesingle %
+ 96/grave %
+ 128/bullet/dagger/daggerdbl/ellipsis/emdash/endash/florin%
+ /fraction/guilsinglleft/guilsinglright/minus/perthousand%
+ /quotedblbase/quotedblleft/quotedblright/quoteleft/quoteright%
+ /quotesinglbase/trademark/fi/fl/Lslash/OE/Scaron/Ydieresis%
+ /Zcaron/dotlessi/lslash/oe/scaron/zcaron %
+ 164/currency %
+ 166/brokenbar %
+ 168/dieresis/copyright/ordfeminine %
+ 172/logicalnot/.notdef/registered/macron/degree/plusminus%
+ /twosuperior/threesuperior/acute/mu %
+ 183/periodcentered/cedilla/onesuperior/ordmasculine %
+ 188/onequarter/onehalf/threequarters %
+ 192/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE%
+ /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute%
+ /Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex%
+ /Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex%
+ /Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex%
+ /atilde/adieresis/aring/ae/ccedilla/egrave/eacute%
+ /ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis%
+ /eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis%
+ /divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute%
+ /thorn/ydieresis%
+ ]%
+ >>%
+ }%
+ \@pdfm@mark{obj @OBJZaDb%
+ <<%
+ /Type/Font%
+ /Subtype/Type1%
+ /Name/ZaDb%
+ /BaseFont/ZapfDingbats%
+ >>%
+ }%
+ \@pdfm@mark{obj @OBJHelv%
+ <<%
+ /Type/Font%
+ /Subtype/Type1%
+ /Name/Helv%
+ /BaseFont/Helvetica%
+ /Encoding @OBJpdfdocencoding%
+ >>%
+ }%
+ \global\let\Hy@FormObjects\relax
+}
+%</dvipdfm|xetex>
+% \end{macrocode}
+%
+% \subsection{Common forms part}
+% \begin{macrocode}
+%<*pdfform>
+% \end{macrocode}
+%
+% \begin{macro}{\Fld@pageobjref}
+% \begin{macrocode}
+\providecommand*{\Fld@pageobjref}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Hy@escapestring}
+% \begin{macrocode}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdf@escapestring\endcsname\relax
+ \let\Hy@escapestring\@firstofone
+ \def\Hy@escapeform#1{%
+ \ifHy@pdfescapeform
+ \def\Hy@escapestring##1{%
+ \noexpand\Hy@escapestring{\noexpand##1}%
+ }%
+ \edef\Hy@temp{#1}%
+ \expandafter\Hy@@escapeform\Hy@temp\Hy@escapestring{}\@nil
+ \def\Hy@escapestring##1{%
+ \@ifundefined{Hy@esc@\string##1}{%
+ ##1%
+ \ThisShouldNotHappen
+ }{%
+ \csname Hy@esc@\string##1\endcsname
+ }%
+ }%
+ \else
+ \let\Hy@escapestring\@firstofone
+ \fi
+ }%
+ \def\Hy@@escapeform#1\Hy@escapestring#2#3\@nil{%
+ \ifx\\#3\\%
+ \else
+ \expandafter
+ \Hy@pstringdef\csname Hy@esc@\string#2\endcsname{#2}%
+ \ltx@ReturnAfterFi{%
+ \Hy@@escapeform#3\@nil
+ }%
+ \fi
+ }%
+\else
+ \def\Hy@escapeform#1{%
+ \ifHy@pdfescapeform
+ \let\Hy@escapestring\pdfescapestring
+ \else
+ \let\Hy@escapestring\@firstofone
+ \fi
+ }%
+ \Hy@escapeform{}%
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\PDFForm@Name}
+% \begin{macrocode}
+\def\PDFForm@Name{%
+ \PDFForm@@Name\Fld@name
+ \ifx\Fld@altname\relax
+ \else
+ \PDFForm@@Name\Fld@altname
+ \fi
+ \ifx\Fld@mappingname\relax
+ \else
+ \PDFForm@@Name\Fld@mappingname
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PDFForm@@Name}
+% \begin{macrocode}
+\def\PDFForm@@Name#1{%
+ \begingroup
+ \ifnum\Hy@pdfversion<5 % implementation note 117, PDF spec 1.7
+ \ifHy@unicode
+ \Hy@unicodefalse
+ \fi
+ \fi
+ \HyPsd@XeTeXBigCharstrue
+ \pdfstringdef\Hy@gtemp#1%
+ \endgroup
+ \let#1\Hy@gtemp
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Fld@additionalactions}
+% \begin{macrocode}
+\def\Fld@@additionalactions{%
+% \end{macrocode}
+% K input (keystroke) format
+% \begin{macrocode}
+ \ifx\Fld@keystroke@code\@empty
+ \else
+ /K<</S/JavaScript/JS(\Hy@escapestring{\Fld@keystroke@code})>>%
+ \fi
+% \end{macrocode}
+% F display format
+% \begin{macrocode}
+ \ifx\Fld@format@code\@empty
+ \else
+ /F<</S/JavaScript/JS(\Hy@escapestring{\Fld@format@code})>>%
+ \fi
+% \end{macrocode}
+% V validation
+% \begin{macrocode}
+ \ifx\Fld@validate@code\@empty
+ \else
+ /V<</S/JavaScript/JS(\Hy@escapestring{\Fld@validate@code})>>%
+ \fi
+% \end{macrocode}
+% C calculation
+% \begin{macrocode}
+ \ifx\Fld@calculate@code\@empty
+ \else
+ /C<</S/JavaScript/JS(\Hy@escapestring{\Fld@calculate@code})>>%
+ \fi
+% \end{macrocode}
+% Fo receiving the input focus
+% \begin{macrocode}
+ \ifx\Fld@onfocus@code\@empty
+ \else
+ /Fo<</S/JavaScript/JS(\Hy@escapestring{\Fld@onfocus@code})>>%
+ \fi
+% \end{macrocode}
+% Bl loosing the input focus (blurred)
+% \begin{macrocode}
+ \ifx\Fld@onblur@code\@empty
+ \else
+ /Bl<</S/JavaScript/JS(\Hy@escapestring{\Fld@onblur@code})>>%
+ \fi
+% \end{macrocode}
+% D pressing the mouse button (down)
+% \begin{macrocode}
+ \ifx\Fld@onmousedown@code\@empty
+ \else
+ /D<</S/JavaScript/JS(\Hy@escapestring{\Fld@onmousedown@code})>>%
+ \fi
+% \end{macrocode}
+% U releasing the mouse button (up)
+% \begin{macrocode}
+ \ifx\Fld@onmouseup@code\@empty
+ \else
+ /U<</S/JavaScript/JS(\Hy@escapestring{\Fld@onmouseup@code})>>%
+ \fi
+% \end{macrocode}
+% E cursor enters the annotation's active area.
+% \begin{macrocode}
+ \ifx\Fld@onenter@code\@empty
+ \else
+ /E<</S/JavaScript/JS(\Hy@escapestring{\Fld@onenter@code})>>%
+ \fi
+% \end{macrocode}
+% X cursor exits the annotation's active area.
+% \begin{macrocode}
+ \ifx\Fld@onexit@code\@empty
+ \else
+ /X<</S/JavaScript/JS(\Hy@escapestring{\Fld@onexit@code})>>%
+ \fi
+}
+\def\Fld@additionalactions{%
+ \if-\Fld@@additionalactions-%
+ \else
+ \ifHy@pdfa
+ \else
+ /AA<<\Fld@@additionalactions>>%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Fld@annotnames}
+% \begin{macrocode}
+\def\Fld@annotnames{%
+ /T(\Fld@name)%
+ \ifx\Fld@altname\relax
+ \else
+ /TU(\Fld@altname)%
+ \fi
+ \ifx\Fld@mappingname\relax
+ \else
+ /TM(\Fld@mappingname)%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\PDFForm@Check}
+% \begin{macrocode}
+\def\PDFForm@Check{%
+ /Subtype/Widget%
+ \Fld@annotflags
+ \Fld@pageobjref
+ \Fld@annotnames
+ /FT/Btn%
+ \Fld@flags
+ /Q \Fld@align
+ /BS<</W \Fld@borderwidth /S/\Fld@borderstyle>>%
+ /AP<< /N <</Yes<<>>>> >> %new string /Yes is from below
+ /MK<<%
+ \ifnum\Fld@rotation=\z@
+ \else
+ /R \Fld@rotation
+ \fi
+ \ifx\Fld@bordercolor\relax
+ \else
+ /BC[\Fld@bordercolor]%
+ \fi
+ \ifx\Fld@bcolor\relax
+ \else
+ /BG[\Fld@bcolor]%
+ \fi
+ /CA(\Hy@escapestring{\Fld@cbsymbol})%
+ >>%
+ /DA(/ZaDb \strip@pt\Fld@charsize\space Tf%
+ \ifx\Fld@color\@empty\else\space\Fld@color\fi)%
+ /H/P%
+ \ifFld@checked /V/Yes/AS/Yes\else /V/Off/AS/Off\fi
+ \Fld@additionalactions
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PDFForm@Push}
+% \begin{macrocode}
+\ifHy@pdfa
+\else
+ \def\PDFForm@Push{%
+ /Subtype/Widget%
+ \Fld@annotflags
+ \Fld@pageobjref
+ \Fld@annotnames
+ /FT/Btn%
+ \Fld@flags
+ /H/P%
+ /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>%
+ \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi
+ \ifx\Fld@bordercolor\relax\else 1\fi
+ \space
+ \else
+ /MK<<%
+ \ifnum\Fld@rotation=\z@
+ \else
+ /R \Fld@rotation
+ \fi
+ \ifx\Fld@bordercolor\relax
+ \else
+ /BC[\Fld@bordercolor]%
+ \fi
+ >>%
+ \fi
+ /A<</S/JavaScript/JS(\Hy@escapestring{\Fld@onclick@code})>>%
+ \Fld@additionalactions
+ }%
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\PDFForm@List}
+% \begin{macrocode}
+\def\PDFForm@List{%
+ /Subtype/Widget%
+ \Fld@annotflags
+ \Fld@pageobjref
+ \Fld@annotnames
+ /FT/Ch%
+ \Fld@flags
+ /Q \Fld@align
+ /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>%
+ \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi
+ \ifx\Fld@bordercolor\relax\else 1\fi
+ \ifx\fld@bcolor\relax \else 1\fi
+ \space
+ \else
+ /MK<<%
+ \ifnum\Fld@rotation=\z@
+ \else
+ /R \Fld@rotation
+ \fi
+ \ifx\Fld@bordercolor\relax
+ \else
+ /BC[\Fld@bordercolor]%
+ \fi
+ \ifx\Fld@bcolor\relax
+ \else
+ /BG[\Fld@bcolor]%
+ \fi
+ >>%
+ \fi
+ /DA(/Helv \strip@pt\Fld@charsize\space Tf%
+ \ifx\Fld@color\@empty\else\space\Fld@color\fi)%
+ \Fld@choices
+ \Fld@additionalactions
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PDFForm@Radio}
+% \begin{macrocode}
+\def\PDFForm@Radio{%
+ /Subtype/Widget%
+ \Fld@annotflags
+ \Fld@pageobjref
+ \Fld@annotnames
+ /FT/Btn%
+ \Fld@flags
+ /H/P%
+ /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>%
+ /MK<<%
+ \ifnum\Fld@rotation=\z@
+ \else
+ /R \Fld@rotation
+ \fi
+ \ifx\Fld@bordercolor\relax
+ \else
+ /BC[\Fld@bordercolor]%
+ \fi
+ \ifx\Fld@bcolor\relax
+ \else
+ /BG[\Fld@bcolor]%
+ \fi
+ /CA(\Hy@escapestring{\Fld@radiosymbol})%
+ >>%
+ /DA(/ZaDb \strip@pt\Fld@charsize\space Tf%
+ \ifx\Fld@color\@empty\else\space\Fld@color\fi)%
+% \end{macrocode}
+%^^A \ifx\@currValue\Fld@default %old code
+%^^A /V/\Fld@default
+%^^A /DV/\Fld@default
+%^^A \else
+%^^A /V/Off%
+%^^A /DV/Off%
+%^^A \fi
+% New code, the default value is used for all buttons
+% \begin{macrocode}
+ \ifx\Fld@default\@empty
+ /V/Off%
+ /DV/Off%
+ \else
+ /V/\Fld@default
+ /DV/\Fld@default
+ \fi
+ \Fld@additionalactions
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PDFForm@Text}
+% \begin{macrocode}
+\def\PDFForm@Text{%
+ /Subtype/Widget%
+ \Fld@annotflags
+ \Fld@pageobjref
+ \Fld@annotnames
+ /FT/Tx%
+ \Fld@flags
+ /Q \Fld@align
+ /BS<</W \Fld@borderwidth\space /S /\Fld@borderstyle>>%
+ \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi
+ \ifx\Fld@bordercolor\relax\else 1\fi
+ \ifx\Fld@bcolor\relax \else 1\fi
+ \space
+ \else
+ /MK<<%
+ \ifnum\Fld@rotation=\z@
+ \else
+ /R \Fld@rotation
+ \fi
+ \ifx\Fld@bordercolor\relax
+ \else
+ /BC[\Fld@bordercolor]%
+ \fi
+ \ifx\Fld@bcolor\relax
+ \else
+ /BG[\Fld@bcolor]%
+ \fi
+ >>%
+ \fi
+ /DA(/Helv \strip@pt\Fld@charsize\space Tf%
+ \ifx\Fld@color\@empty\else\space\Fld@color\fi)%
+ /DV(\Hy@escapestring{\Fld@default})%
+ /V(\Hy@escapestring{\Fld@value})%
+ \Fld@additionalactions
+ \ifnum\Fld@maxlen>\z@/MaxLen \Fld@maxlen \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PDFForm@Submit}
+% \begin{macrocode}
+\def\PDFForm@Submit{%
+ /Subtype/Widget%
+ \Fld@annotflags
+ \Fld@pageobjref
+ \Fld@annotnames
+ /FT/Btn%
+ \Fld@flags
+ /H/P%
+ /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>%
+ \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi
+ \ifx\Fld@bordercolor\relax\else 1\fi
+ \space
+ \else
+ /MK<<%
+ \ifnum\Fld@rotation=\z@
+ \else
+ /R \Fld@rotation
+ \fi
+ \ifx\Fld@bordercolor\relax
+ \else
+ /BC[\Fld@bordercolor]%
+ \fi
+ >>%
+ \fi
+ /A<<%
+ /S/SubmitForm%
+ /F<<%
+ /FS/URL%
+ /F(\Hy@escapestring{\Form@action})%
+ >>%
+ \Fld@submitflags
+ >>%
+ \Fld@additionalactions
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\PDFForm@Reset}
+% \begin{macrocode}
+\ifHy@pdfa
+\else
+ \def\PDFForm@Reset{%
+ /Subtype/Widget%
+ \Fld@annotflags
+ \Fld@pageobjref
+ \Fld@annotnames
+ /FT/Btn%
+ \Fld@flags
+ /H/P%
+ /DA(/Helv \strip@pt\Fld@charsize\space Tf 0 0 1 rg)%
+ \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi
+ \ifx\Fld@bordercolor\relax\else 1\fi
+ \space
+ \else
+ /MK<<%
+ \ifnum\Fld@rotation=\z@
+ \else
+ /R \Fld@rotation
+ \fi
+ \ifx\Fld@bordercolor\relax
+ \else
+ /BC[\Fld@bordercolor]%
+ \fi
+% /CA (Clear)
+% /AC (Done)
+ >>%
+ \fi
+ /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>%
+ /A<</S/ResetForm>>%
+ \Fld@additionalactions
+ }%
+\fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</pdfform>
+%<*package>
+% \end{macrocode}
+%
+% \section{Bookmarks in the PDF file}
+% This was originally developed by Yannis Haralambous
+% (it was the separate |repere.sty|); it needed
+% the |repere| or |makebook.pl| post-processor to work properly. Now
+% redundant, as it is done entirely in \LaTeX{} macros.
+%
+% To write out the current section title, and its rationalized number,
+% we have to intercept the |\@sect| command, which is rather
+% dangerous. But how else to see the information we need?
+% We do the \emph{same} for |\@ssect|, giving anchors to
+% unnumbered sections. This allows things like bibliographies
+% to get bookmarks when used with a manual |\addcontentsline|
+% \begin{macrocode}
+\def\phantomsection{%
+ \Hy@MakeCurrentHrefAuto{section*}%
+ \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
+}
+%</package>
+% \end{macrocode}
+%
+% \subsection{Bookmarks}
+% \begin{macrocode}
+%<*outlines>
+% \end{macrocode}
+%
+% This section was written by Heiko Oberdiek; the code replaces
+% an earlier version by David Carlisle.
+%
+% The first part of bookmark code is in section \ref{sec:pdfstring}.
+% Further documentation is available as paper and slides of the
+% talk, that Heiko Oberdiek has given at the EuroTeX'99 meating
+% in Heidelberg. See |paper.pdf| and |slides.pdf| in the
+% |doc| directory of hyperref.
+%
+% When using the right-to-left typesetting based on \eTeX, the order
+% of the |\BOOKMARK| commands written to the |\@outlinefile| could
+% appear wrong, because of mis-feature of \eTeX's implementation (that
+% it processes the shipped out lines left-to-right, instead of the
+% order in which they appear in the document). The wrong order will
+% appear when the file contains two bookmarks on the same line typeset
+% right-to-left.
+%
+% To work around this problem, the |bookmark@seq@number| counter is
+% used to write the bookmark's sequential number into a comment in the
+% |\@outlinefile|, which could be used to post-process it to achieve
+% the proper ordering of |\BOOKMARK| commands in that file.
+%
+% \begin{macrocode}
+\def\Hy@writebookmark#1#2#3#4#5{%
+ % section number, text, label, level, file
+ \ifx\WriteBookmarks\relax%
+ \else
+ \ifnum#4>\Hy@bookmarksdepth\relax
+ \else
+ \@@writetorep{#1}{#2}{#3}{#4}{#5}%
+ \fi
+ \fi
+}
+\def\Hy@currentbookmarklevel{0}
+\def\Hy@numberline#1{#1 }
+\def\@@writetorep#1#2#3#4#5{%
+ \begingroup
+ \edef\Hy@tempa{#5}%
+ \ifx\Hy@tempa\Hy@bookmarkstype
+ \edef\Hy@level{#4}%
+ \ifx\Hy@levelcheck Y%
+ \@tempcnta\Hy@level\relax
+ \advance\@tempcnta by -1 %
+ \ifnum\Hy@currentbookmarklevel<\@tempcnta
+ \advance\@tempcnta by -\Hy@currentbookmarklevel\relax
+ \advance\@tempcnta by 1 %
+ \Hy@Warning{%
+ Difference (\the\@tempcnta) between bookmark levels is %
+ greater \MessageBreak than one, level fixed%
+ }%
+ \@tempcnta\Hy@currentbookmarklevel
+ \advance\@tempcnta by 1 %
+ \edef\Hy@level{\the\@tempcnta}%
+ \fi
+ \else
+ \global\let\Hy@levelcheck Y%
+ \fi
+ \global\let\Hy@currentbookmarklevel\Hy@level
+ \@tempcnta\Hy@level\relax
+ \expandafter\xdef\csname Parent\Hy@level\endcsname{#3}%
+ \advance\@tempcnta by -1 %
+ \edef\Hy@tempa{#3}%
+ \edef\Hy@tempb{\csname Parent\the\@tempcnta\endcsname}%
+ \ifx\Hy@tempa\Hy@tempb
+ \Hy@Warning{%
+ The anchor of a bookmark and its parent's must not%
+ \MessageBreak be the same. Added a new anchor%
+ }%
+ \phantomsection
+ \fi
+ \ifHy@bookmarksnumbered
+ \let\numberline\Hy@numberline
+ \let\booknumberline\Hy@numberline
+ \let\partnumberline\Hy@numberline
+ \let\chapternumberline\Hy@numberline
+ \else
+ \let\numberline\@gobble
+ \let\booknumberline\@gobble
+ \let\partnumberline\@gobble
+ \let\chapternumberline\@gobble
+ \fi
+ \HyPsd@XeTeXBigCharstrue
+ \pdfstringdef\Hy@tempa{#2}%
+ \HyPsd@SanitizeForOutFile\Hy@tempa
+ \if@filesw
+ \stepcounter{bookmark@seq@number}%
+ \@ifundefined{@outlinefile}{%
+ }{%
+ \protected@write\@outlinefile{}{%
+ \protect\BOOKMARK
+ [\Hy@level][\@bookmarkopenstatus{\Hy@level}]{#3}%
+ {\Hy@tempa}{\Hy@tempb}%
+ \@percentchar\space\thebookmark@seq@number
+ }%
+ }%
+ \fi
+ \fi
+ \endgroup
+}
+\newcounter{bookmark@seq@number}
+% \end{macrocode}
+% \begin{macrocode}
+\begingroup
+ \lccode`(=`{%
+ \lccode`)=`}%
+ \lccode`1=\z@
+ \lccode`2=\z@
+ \lccode`3=\z@
+ \lccode`5=\z@
+ \lccode`7=\z@
+ \lccode`\#=\z@
+ \lccode`\`=\z@
+ \lccode`\{=\z@
+ \lccode`\}=\z@
+\lowercase{%
+ \endgroup
+ \def\HyPsd@SanitizeForOutFile#1{%
+ \@onelevel@sanitize\Hy@tempa
+ \escapechar`\\%
+ \edef\Hy@tempa{%
+ \expandafter\HyPsd@SanitizeOut@BraceLeft\Hy@tempa(\@nil
+ }%
+ \edef\Hy@tempa{%
+ \expandafter\HyPsd@SanitizeOut@BraceRight\Hy@tempa)\@nil
+ }%
+ }%
+ \def\HyPsd@SanitizeOut@BraceLeft#1(#2\@nil{%
+ #1%
+ \ifx\\#2\\%
+ \expandafter\ltx@gobble
+ \else
+ \expandafter\ltx@firstofone
+ \fi
+ {%
+ \string\173%
+ \HyPsd@SanitizeOut@BraceLeft#2\@nil
+ }%
+ }%
+ \def\HyPsd@SanitizeOut@BraceRight#1)#2\@nil{%
+ #1%
+ \ifx\\#2\\%
+ \expandafter\ltx@gobble
+ \else
+ \expandafter\ltx@firstofone
+ \fi
+ {%
+ \string\175%
+ \HyPsd@SanitizeOut@BraceRight#2\@nil
+ }%
+ }%
+}
+% \end{macrocode}
+% In the call of \cmd{\BOOKMARK} the braces around \verb|#4|
+% are omitted, because it is not likely, that the level number
+% contains \verb|]|.
+% \begin{macrocode}
+\newcommand{\currentpdfbookmark}{%
+ \pdfbookmark[\Hy@currentbookmarklevel]%
+}
+\newcommand{\subpdfbookmark}{%
+ \@tempcnta\Hy@currentbookmarklevel
+ \Hy@StepCount\@tempcnta
+ \expandafter\pdfbookmark\expandafter[\the\@tempcnta]%
+}
+\newcommand{\belowpdfbookmark}[2]{%
+ \@tempcnta\Hy@currentbookmarklevel
+ \Hy@StepCount\@tempcnta
+ \expandafter\pdfbookmark\expandafter[\the\@tempcnta]{#1}{#2}%
+ \advance\@tempcnta by -1 %
+ \xdef\Hy@currentbookmarklevel{\the\@tempcnta}%
+}
+% \end{macrocode}
+% Tobias Oetiker rightly points out that we need a way to
+% force a bookmark entry. So we introduce |\pdfbookmark|,
+% with two parameters, the title, and a symbolic name.
+% By default this is at level 1, but we can reset that with the
+% optional first argument.
+% \begin{macrocode}
+\renewcommand\pdfbookmark[3][0]{%
+ \Hy@writebookmark{}{#2}{#3.#1}{#1}{toc}%
+ \hyper@anchorstart{#3.#1}\hyper@anchorend
+}
+\def\BOOKMARK{%
+ \@ifnextchar[{\@BOOKMARK}{\@@BOOKMARK[1][-]}%
+}
+\def\@BOOKMARK[#1]{%
+ \@ifnextchar[{\@@BOOKMARK[{#1}]}{\@@BOOKMARK[{#1}][-]}%
+}
+% \end{macrocode}
+% The macros for calculating structure of outlines
+% are derived from those by Petr Olsak used in the texinfopdf macros.
+%
+% \subsubsection{Rerun warning}
+%
+% \begin{macro}{\Hy@OutlineRerunCheck}
+% \begin{macrocode}
+\RequirePackage{rerunfilecheck}[2009/12/10]
+\def\Hy@OutlineRerunCheck{%
+ \RerunFileCheck{\jobname.out}{%
+ \immediate\closeout\@outlinefile
+ }{%
+ Rerun to get outlines right\MessageBreak
+ or use package `bookmark'%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Driver stuff}
+%
+% The VTEX section was written originally by VTEX, but then
+% amended by Denis Girou (\Email{denis.girou@idris.fr}),
+% then by by Taco Hoekwater (\Email{taco.hoekwater@wkap.nl}. The problem
+% is that VTEX, with its close integration of the PDF backend, does
+% look at the contents of bookmarks, escaping |\| and the like.
+% \begin{macrocode}
+%<*vtex>
+% \end{macrocode}
+% \begin{macrocode}
+\newcount\@serial@counter\@serial@counter=1\relax
+% \end{macrocode}
+% \begin{macro}{\hv@pdf@char}
+% Plain octal codes doesn't work with versions below 6.50.
+% So for early versions hex numbers have to be used.
+% It would be possible to program this instead of the
+% large |\ifcase|, but I'm too lazy to sort that out now.
+% \begin{macrocode}
+\begingroup
+ \catcode`\'=12 %
+ \ifnum\Hy@VTeXversion<650 %
+ \catcode`\"=12 %
+ \gdef\hv@pdf@char#1#2#3{%
+ \char
+ \ifcase'#1#2#3 %
+ "00\or"01\or"02\or"03\or"04\or"05\or"06\or"07%
+ \or"08\or"09\or"0A\or"0B\or"0C\or"0D\or"0E\or"0F%
+ \or"10\or"11\or"12\or"13\or"14\or"15\or"16\or"17%
+ \or"18\or"19\or"1A\or"1B\or"1C\or"1D\or"1E\or"1F%
+ \or"20\or"21\or"22\or"23\or"24\or"25\or"26\or"27%
+ \or"28\or"29\or"2A\or"2B\or"2C\or"2D\or"2E\or"2F%
+ \or"30\or"31\or"32\or"33\or"34\or"35\or"36\or"37%
+ \or"38\or"39\or"3A\or"3B\or"3C\or"3D\or"3E\or"3F%
+ \or"40\or"41\or"42\or"43\or"44\or"45\or"46\or"47%
+ \or"48\or"49\or"4A\or"4B\or"4C\or"4D\or"4E\or"4F%
+ \or"50\or"51\or"52\or"53\or"54\or"55\or"56\or"57%
+ \or"58\or"59\or"5A\or"5B\or"5C\or"5D\or"5E\or"5F%
+ \or"60\or"61\or"62\or"63\or"64\or"65\or"66\or"67%
+ \or"68\or"69\or"6A\or"6B\or"6C\or"6D\or"6E\or"6F%
+ \or"70\or"71\or"72\or"73\or"74\or"75\or"76\or"77%
+ \or"78\or"79\or"7A\or"7B\or"7C\or"7D\or"7E\or"7F%
+ \or"80\or"81\or"82\or"83\or"84\or"85\or"86\or"87%
+ \or"88\or"89\or"8A\or"8B\or"8C\or"8D\or"8E\or"8F%
+ \or"90\or"91\or"92\or"93\or"94\or"95\or"96\or"97%
+ \or"98\or"99\or"9A\or"9B\or"9C\or"9D\or"9E\or"9F%
+ \or"A0\or"A1\or"A2\or"A3\or"A4\or"A5\or"A6\or"A7%
+ \or"A8\or"A9\or"AA\or"AB\or"AC\or"AD\or"AE\or"AF%
+ \or"B0\or"B1\or"B2\or"B3\or"B4\or"B5\or"B6\or"B7%
+ \or"B8\or"B9\or"BA\or"BB\or"BC\or"BD\or"BE\or"BF%
+ \or"C0\or"C1\or"C2\or"C3\or"C4\or"C5\or"C6\or"C7%
+ \or"C8\or"C9\or"CA\or"CB\or"CC\or"CD\or"CE\or"CF%
+ \or"D0\or"D1\or"D2\or"D3\or"D4\or"D5\or"D6\or"D7%
+ \or"D8\or"D9\or"DA\or"DB\or"DC\or"DD\or"DE\or"DF%
+ \or"E0\or"E1\or"E2\or"E3\or"E4\or"E5\or"E6\or"E7%
+ \or"E8\or"E9\or"EA\or"EB\or"EC\or"ED\or"EE\or"EF%
+ \or"F0\or"F1\or"F2\or"F3\or"F4\or"F5\or"F6\or"F7%
+ \or"F8\or"F9\or"FA\or"FB\or"FC\or"FD\or"FE\or"FF%
+ \fi
+ }%
+ \else
+ \gdef\hv@pdf@char{\char'}%
+ \fi
+\endgroup
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@BOOKMARK}
+% \begin{macrocode}
+\def\@@BOOKMARK[#1][#2]#3#4#5{%
+ \expandafter\edef\csname @count@#3\endcsname{%
+ \the\@serial@counter
+ }%
+ \edef\@mycount{\the\@serial@counter}%
+ \Hy@StepCount\@serial@counter
+ \edef\@parcount{%
+ \expandafter\ifx\csname @count@#5\endcsname\relax
+ 0%
+ \else
+ \csname @count@#5\endcsname
+ \fi
+ }%
+ \immediate\special{%
+ !outline \HyperDestNameFilter{#3};p=\@parcount,i=\@mycount,%
+ s=\ifx#2-c\else o\fi,t=#4%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ReadBookmarks}
+% \begin{macrocode}
+\def\ReadBookmarks{%
+ \begingroup
+ \def\0{\hv@pdf@char 0}%
+ \def\1{\hv@pdf@char 1}%
+ \def\2{\hv@pdf@char 2}%
+ \def\3{\hv@pdf@char 3}%
+ \def\({(}%
+ \def\){)}%
+ \def\do##1{%
+ \ifnum\catcode`##1=\active
+ \@makeother##1%
+ \else
+ \ifnum\catcode`##1=6 %
+ \@makeother##1%
+ \fi
+ \fi
+ }%
+ \dospecials
+ \Hy@safe@activestrue
+ \InputIfFileExists{\jobname.out}{}{}%
+ \endgroup
+ \ifx\WriteBookmarks\relax
+ \else
+ \if@filesw
+ \newwrite\@outlinefile
+ \Hy@OutlineRerunCheck
+ \immediate\openout\@outlinefile=\jobname.out\relax
+ \ifHy@typexml
+ \immediate\write\@outlinefile{<relaxxml>\relax}%
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</vtex>
+% \end{macrocode}
+% \begin{macrocode}
+%<*!vtex>
+\def\ReadBookmarks{%
+ \pdf@ifdraftmode{}{%
+ \begingroup
+ \def\do##1{%
+ \ifnum\catcode`##1=\active
+ \@makeother##1%
+ \else
+ \ifnum\catcode`##1=6 %
+ \@makeother##1%
+ \fi
+ \fi
+ }%
+ \dospecials
+ \Hy@safe@activestrue
+ \escapechar=`\\%
+ \def\@@BOOKMARK[##1][##2]##3##4##5{%
+ \calc@bm@number{##5}%
+ }%
+ \InputIfFileExists{\jobname.out}{}{}%
+ \ifx\WriteBookmarks\relax
+ \global\let\WriteBookmarks\relax
+ \fi
+ \def\@@BOOKMARK[##1][##2]##3##4##5{%
+ \def\Hy@temp{##4}%
+%<*pdftex>
+ \Hy@pstringdef\Hy@pstringName{\HyperDestNameFilter{##3}}%
+ \Hy@OutlineName{}\Hy@pstringName{%
+ ##2\check@bm@number{##3}%
+ }{%
+ \expandafter\strip@prefix\meaning\Hy@temp
+ }%
+%</pdftex>
+%<*pdfmark>
+ \pdfmark{%
+ pdfmark=/OUT,%
+ Count={##2\check@bm@number{##3}},%
+ Dest={##3},%
+ Title=\expandafter\strip@prefix\meaning\Hy@temp
+ }%
+%</pdfmark>
+%<*dvipdfm|xetex>
+ \Hy@pstringdef\Hy@pstringName{\HyperDestNameFilter{##3}}%
+ \@pdfm@mark{%
+ outline \ifHy@DvipdfmxOutlineOpen
+ [%
+ \ifnum##21>\z@
+ \else
+ -%
+ \fi
+ ] %
+ \fi
+ ##1<<%
+ /Title(\expandafter\strip@prefix\meaning\Hy@temp)%
+ /A<<%
+ /S/GoTo%
+ /D(\Hy@pstringName)%
+ >>%
+ >>%
+ }%
+%</dvipdfm|xetex>
+ }%
+ \begingroup
+ \def\WriteBookmarks{0}%
+ \InputIfFileExists{\jobname.out}{}{}%
+ \endgroup
+ %{\escapechar\m@ne\InputIfFileExists{\jobname.out}{}{}}%
+ \endgroup
+ }%
+ \ifx\WriteBookmarks\relax
+ \else
+ \if@filesw
+ \newwrite\@outlinefile
+ \Hy@OutlineRerunCheck
+ \immediate\openout\@outlinefile=\jobname.out\relax
+ \ifHy@typexml
+ \immediate\write\@outlinefile{<relaxxml>\relax}%
+ \fi
+ \fi
+ \fi
+}
+%<*pdftex>
+\def\Hy@OutlineName#1#2#3#4{%
+ \pdfoutline goto name{#2}count#3{#4}%
+}
+%</pdftex>
+\def\check@bm@number#1{%
+ \expandafter\ifx\csname B_#1\endcsname\relax
+ 0%
+ \else
+ \csname B_#1\endcsname
+ \fi
+}
+\def\calc@bm@number#1{%
+ \@tempcnta=\check@bm@number{#1}\relax
+ \advance\@tempcnta by 1 %
+ \expandafter\xdef\csname B_#1\endcsname{\the\@tempcnta}%
+}
+%</!vtex>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ifHy@implicit
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</outlines>
+%<*outlines|hypertex>
+% \end{macrocode}
+% \begin{macrocode}
+\newlength\Hy@SectionHShift
+\def\Hy@SectionAnchorHref#1{%
+ \ifx\protect\@typeset@protect
+ \Hy@@SectionAnchor{#1}%
+ \fi
+}
+\DeclareRobustCommand*{\Hy@@SectionAnchor}[1]{%
+ \leavevmode
+ \hbox to 0pt{%
+ \kern-\Hy@SectionHShift
+ \Hy@raisedlink{%
+ \hyper@anchorstart{#1}\hyper@anchorend
+ }%
+ \hss
+ }%
+}
+\let\H@old@ssect\@ssect
+\def\@ssect#1#2#3#4#5{%
+ \Hy@MakeCurrentHrefAuto{section*}%
+ \setlength{\Hy@SectionHShift}{#1}%
+ \begingroup
+ \toks@{\H@old@ssect{#1}{#2}{#3}{#4}}%
+ \toks\tw@\expandafter{%
+ \expandafter\Hy@SectionAnchorHref\expandafter{\@currentHref}%
+ #5%
+ }%
+ \edef\x{\endgroup
+ \the\toks@{\the\toks\tw@}%
+ }\x
+}
+\let\H@old@schapter\@schapter
+\def\@schapter#1{%
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \Hy@MakeCurrentHrefAuto{\Hy@chapapp*}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ \endgroup
+ \H@old@schapter{#1}%
+}
+% \end{macrocode}
+% If there is no chapter number (\cmd{\frontmatter} or
+% \cmd{\backmatter}) then the counting by |\refstepcounter{chapter}|
+% is not executed, so there will be no destination for \cmd{addcontentsline}.
+% So \cmd{\@chapter} is overloaded to avoid this:
+% \begin{macrocode}
+\ltx@IfUndefined{@chapter}{}{%
+ \let\Hy@org@chapter\@chapter
+ \def\@chapter{%
+ \def\Hy@next{%
+ \Hy@MakeCurrentHrefAuto{\Hy@chapapp*}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ }%
+ \ifnum\c@secnumdepth>\m@ne
+ \ltx@IfUndefined{if@mainmatter}%
+ \iftrue{\csname if@mainmatter\endcsname}%
+ \let\Hy@next\relax
+ \fi
+ \fi
+ \Hy@next
+ \Hy@org@chapter
+ }%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\let\H@old@part\@part
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname chapter\endcsname\relax
+ \let\Hy@secnum@part\z@
+\else
+ \let\Hy@secnum@part\m@ne
+\fi
+\def\@part{%
+ \ifnum\Hy@secnum@part>\c@secnumdepth
+ \phantomsection
+ \fi
+ \H@old@part
+}
+% \end{macrocode}
+% \begin{macrocode}
+\let\H@old@spart\@spart
+\def\@spart#1{%
+ \Hy@MakeCurrentHrefAuto{part*}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ \H@old@spart{#1}%
+}
+\let\H@old@sect\@sect
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {%
+ \Hy@MakeCurrentHrefAuto{section*}%
+ \setlength{\Hy@SectionHShift}{#3}%
+ \begingroup
+ \toks@{\H@old@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]}%
+ \toks\tw@\expandafter{%
+ \expandafter\Hy@SectionAnchorHref\expandafter{\@currentHref}%
+ #8%
+ }%
+ \edef\x{\endgroup
+ \the\toks@{\the\toks\tw@}%
+ }\x
+ }{%
+ \H@old@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}%
+ }%
+}
+% \end{macrocode}
+% \begin{macrocode}
+%</outlines|hypertex>
+%<*outlines>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\expandafter\def\csname Parent-4\endcsname{}
+\expandafter\def\csname Parent-3\endcsname{}
+\expandafter\def\csname Parent-2\endcsname{}
+\expandafter\def\csname Parent-1\endcsname{}
+\expandafter\def\csname Parent0\endcsname{}
+\expandafter\def\csname Parent1\endcsname{}
+\expandafter\def\csname Parent2\endcsname{}
+\expandafter\def\csname Parent3\endcsname{}
+\expandafter\def\csname Parent4\endcsname{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</outlines>
+% \end{macrocode}
+%
+% \section{Compatibility with koma-script classes}
+%
+% \begin{macrocode}
+%<*outlines|hypertex>
+% \end{macrocode}
+%
+% Hard-wire in an unpleasant over-ride of komascript `scrbook' class
+% for Tobias Isenberg (\Email{Tobias.Isenberg@gmx.de}).
+% With version 6.71b the hack is also applied to `scrreprt' class
+% and is removed for koma-script versions since 2001/01/01,
+% because Markus Kohm supports hyperref in komascript.
+% \begin{macrocode}
+\def\Hy@tempa{%
+ \def\@addchap[##1]##2{%
+ \typeout{##2}%
+ \if@twoside
+ \@mkboth{##1}{}%
+ \else
+ \@mkboth{}{##1}%
+ \fi
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \Hy@MakeCurrentHrefAuto{\Hy@chapapp*}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ \if@twocolumn
+ \@topnewpage[\@makeschapterhead{##2}]%
+ \else
+ \@makeschapterhead{##2}%
+ \@afterheading
+ \fi
+ \addcontentsline{toc}{chapter}{##1}%
+ }%
+}
+\@ifclassloaded{scrbook}{%
+ \@ifclasslater{scrbook}{2001/01/01}{%
+ \let\Hy@tempa\@empty
+ }{}%
+}{%
+ \@ifclassloaded{scrreprt}{%
+ \@ifclasslater{scrreprt}{2001/01/01}{%
+ \let\Hy@tempa\@empty
+ }{}%
+ }{%
+ \let\Hy@tempa\@empty
+ }%
+}%
+\Hy@tempa
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</outlines|hypertex>
+% \end{macrocode}
+%
+% \section{Encoding definition files for encodings of PDF strings}
+% This was contributed by
+% Heiko Oberdiek.
+%
+% \subsection{PD1 encoding}
+% \begin{macrocode}
+%<*pd1enc>
+\DeclareFontEncoding{PD1}{}{}
+% \end{macrocode}
+% Accents
+% \begin{macrocode}
+\DeclareTextAccent{\`}{PD1}{\textasciigrave}
+\DeclareTextAccent{\'}{PD1}{\textacute}
+\DeclareTextAccent{\^}{PD1}{\textasciicircum}
+\DeclareTextAccent{\~}{PD1}{\texttilde}
+\DeclareTextAccent{\"}{PD1}{\textasciidieresis}
+\DeclareTextAccent{\r}{PD1}{\textring}
+\DeclareTextAccent{\v}{PD1}{\textasciicaron}
+\DeclareTextAccent{\.}{PD1}{\textdotaccent}
+\DeclareTextAccent{\c}{PD1}{\textcedilla}
+\DeclareTextAccent{\=}{PD1}{\textasciimacron}
+\DeclareTextAccent{\b}{PD1}{\textmacronbelow}
+\DeclareTextAccent{\d}{PD1}{\textdotbelow}
+\DeclareTextCompositeCommand{\`}{PD1}{\@empty}{\textasciigrave}
+\DeclareTextCompositeCommand{\'}{PD1}{\@empty}{\textacute}
+\DeclareTextCompositeCommand{\^}{PD1}{\@empty}{\textasciicircum}
+\DeclareTextCompositeCommand{\~}{PD1}{\@empty}{\texttilde}
+\DeclareTextCompositeCommand{\"}{PD1}{\@empty}{\textasciidieresis}
+\DeclareTextCompositeCommand{\r}{PD1}{\@empty}{\textring}
+\DeclareTextCompositeCommand{\v}{PD1}{\@empty}{\textasciicaron}
+\DeclareTextCompositeCommand{\.}{PD1}{\@empty}{\textdotaccent}
+\DeclareTextCompositeCommand{\c}{PD1}{\@empty}{\textcedilla}
+\DeclareTextCompositeCommand{\=}{PD1}{\@empty}{\textasciimacron}
+\DeclareTextCompositeCommand{\b}{PD1}{\@empty}{\textmacronbelow}
+\DeclareTextCompositeCommand{\d}{PD1}{\@empty}{\textdotbelow}
+\DeclareTextCompositeCommand{\`}{PD1}{\ }{\textasciigrave}
+\DeclareTextCompositeCommand{\'}{PD1}{\ }{\textacute}
+\DeclareTextCompositeCommand{\^}{PD1}{\ }{\textasciicircum}
+\DeclareTextCompositeCommand{\~}{PD1}{\ }{\texttilde}
+\DeclareTextCompositeCommand{\"}{PD1}{\ }{\textasciidieresis}
+\DeclareTextCompositeCommand{\r}{PD1}{\ }{\textring}
+\DeclareTextCompositeCommand{\v}{PD1}{\ }{\textasciicaron}
+\DeclareTextCompositeCommand{\.}{PD1}{\ }{\textdotaccent}
+\DeclareTextCompositeCommand{\c}{PD1}{\ }{\textcedilla}
+\DeclareTextCompositeCommand{\=}{PD1}{\ }{\textasciimacron}
+\DeclareTextCompositeCommand{\b}{PD1}{\ }{\textmacronbelow}
+\DeclareTextCompositeCommand{\d}{PD1}{\ }{\textdotbelow}
+\DeclareTextCommand{\k}{PD1}[1]{\TextSymbolUnavailable{\k{#1}}#1}
+\DeclareTextCommand{\t}{PD1}[1]{\TextSymbolUnavailable{\t{#1}}#1}
+\DeclareTextCommand{\newtie}{PD1}[1]{%
+ \TextSymbolUnavailable{\newtie{#1}}#1%
+}
+% \end{macrocode}
+% Special white space escape characters
+% not for use in bookmarks but for other PDF strings.
+% \begin{macrocode}
+% U+0009 (CHARACTER TABULATION)
+\DeclareTextCommand{\textHT}{PD1}{\011}% U+0009
+% U+000A (LINE FEED)
+\DeclareTextCommand{\textLF}{PD1}{\012}% U+000A
+% U+000D (CARRIAGE RETURN)
+\DeclareTextCommand{\textCR}{PD1}{\015}% U+000D
+% \end{macrocode}
+% Accent glyph names
+% \begin{macrocode}
+% U+02D8 BREVE; breve
+\DeclareTextCommand{\textasciibreve}{PD1}{\030}% U+02D8
+% U+02C7 CARON; caron
+\DeclareTextCommand{\textasciicaron}{PD1}{\031}% U+02C7
+% U+02C6 MODIFIER LETTER CIRCUMFLEX ACCENT; circumflex
+\DeclareTextCommand{\textcircumflex}{PD1}{\032}% U+02C6
+% U+02D9 DOT ABOVE; dotaccent
+\DeclareTextCommand{\textdotaccent}{PD1}{\033}% U+02D9
+% U+02DD DOUBLE ACUTE ACCENT; hungarumlaut
+\DeclareTextCommand{\texthungarumlaut}{PD1}{\034}% U+02DD
+% U+02DB OGONEK; ogonek
+\DeclareTextCommand{\textogonek}{PD1}{\035}% U+02DB
+% U+02DA RING ABOVE; ring
+\DeclareTextCommand{\textring}{PD1}{\036}% U+02DA
+% U+02DC SMALL TILDE; ilde, *tilde
+\DeclareTextCommand{\texttilde}{PD1}{\037}% U+02DC
+% \end{macrocode}
+% \cs{040}: U+0020 SPACE; *space, spacehackarabic\\
+% \cs{041}: U+0021 EXCLAMATION MARK; exclam
+% \begin{macrocode}
+% U+0022 QUOTATION MARK; quotedbl
+\DeclareTextCommand{\textquotedbl}{PD1}{"}% \042 U+0022
+% U+0023 NUMBER SIGN; numbersign
+\DeclareTextCommand{\textnumbersign}{PD1}{\043}% U+0023
+% U+0024 DOLLAR SIGN; dollar
+\DeclareTextCommand{\textdollar}{PD1}{\044}% U+0024
+% U+0025 PERCENT SIGN; percent
+\DeclareTextCommand{\textpercent}{PD1}{\045}% U+0025
+% U+0026 AMPERSAND; ampersand
+\DeclareTextCommand{\textampersand}{PD1}{\046}% U+0026
+% \end{macrocode}
+% \cs{047}: U+0027 APOSTROPHE; quotesingle\\
+% \begin{macrocode}
+% U+0028 LEFT PARENTHESIS; parenleft
+\DeclareTextCommand{\textparenleft}{PD1}{\string\(}% \050 U+0028
+% U+0029 RIGHT PARENTHESIS; parenright
+\DeclareTextCommand{\textparenright}{PD1}{\string\)}% \051 U+0029
+% \end{macrocode}
+% \cs{052}: U+002A ASTERISK; asterisk\\
+% \cs{053}: U+002B PLUS SIGN; plus\\
+% \cs{054}: U+002C COMMA; comma\\
+% \cs{055}: U+002D HYPHEN-MINUS; hyphen\\
+% \cs{056}: U+002E FULL STOP; period
+% \begin{macrocode}
+% U+002E FULL STOP; period
+\DeclareTextCommand{\textdotbelow}{PD1}{.}% \056 U+002E
+% \end{macrocode}
+% \cs{057}: % U+002F SOLIDUS; slash\\
+% \cs{060}: U+0030 DIGIT ZERO; zero\\
+% \dots\\
+% \cs{071}: U+0039 DIGIT NINE; nine\\
+% \cs{072}: U+003A COLON; colon\\
+% \cs{073}: U+003B SEMICOLON; semicolon
+% \begin{macrocode}
+% U+003C LESS-THAN SIGN; less
+\DeclareTextCommand{\textless}{PD1}{<}% \074 U+003C
+% \end{macrocode}
+% \cs{075}: U+003D EQUALS SIGN; equal
+% \begin{macrocode}
+% U+003E GREATER-THAN SIGN; greater
+\DeclareTextCommand{\textgreater}{PD1}{>}% \076 U+003E
+% \end{macrocode}
+% \cs{077}: U+003F QUESTION MARK; question\\
+% \cs{100}: U+0040 COMMERCIAL AT; at\\
+% \cs{101}: U+0041 LATIN CAPITAL LETTER A; A\\
+% \dots\\
+% \cs{132}: U+005A LATIN CAPITAL LETTER Z; Z\\
+% \cs{133}: U+005B LEFT SQUARE BRACKET; bracketleft
+% \begin{macrocode}
+% U+005C REVERSE SOLIDUS; backslash
+\DeclareTextCommand{\textbackslash}{PD1}{\134}% U+005C
+% "U+2216 SET MINUS" simulated by "U+005C REVERSE SOLIDUS"
+\DeclareTextCommand{\textsetminus}{PD1}{\textbackslash}
+% \end{macrocode}
+% \cs{135}: U+005D RIGHT SQUARE BRACKET; bracketright
+% \begin{macrocode}
+% U+005E CIRCUMFLEX ACCENT; asciicircum
+\DeclareTextCommand{\textasciicircum}{PD1}{\136}% U+005E
+% U+005F LOW LINE; underscore
+\DeclareTextCommand{\textunderscore}{PD1}{\137}% U+005F
+\DeclareTextCommand{\textmacronbelow}{PD1}{\137}% U+005F
+% U+0060 GRAVE ACCENT; grave
+\DeclareTextCommand{\textasciigrave}{PD1}{\140}% U+0060
+% \end{macrocode}
+% \cs{141}: U+0061 LATIN SMALL LETTER A; a\\
+% \dots\\
+% \cs{150}: U+0068 LATIN SMALL LETTER H; h
+% \begin{macrocode}
+% U+0069 LATIN SMALL LETTER I; i
+\DeclareTextCompositeCommand{\.}{PD1}{i}{i}% \151 U+0069
+% \end{macrocode}
+% \cs{152}: U+006A LATIN SMALL LETTER J; j\\
+% \dots\\
+% \cs{172}: U+007A LATIN SMALL LETTER Z; z
+% \begin{macrocode}
+% U+007B LEFT CURLY BRACKET; braceleft
+\DeclareTextCommand{\textbraceleft}{PD1}{\173}% U+007B
+% U+007C VERTICAL LINE; *bar, verticalbar
+\DeclareTextCommand{\textbar}{PD1}{|}% U+007C
+% U+007D RIGHT CURLY BRACKET; braceright
+\DeclareTextCommand{\textbraceright}{PD1}{\175}% U+007D
+% U+007E TILDE; asciitilde
+\DeclareTextCommand{\textasciitilde}{PD1}{\176}% U+007E
+% \end{macrocode}
+% Slot \cs{177} (0x7F) is undefined in PDFDocEncoding.
+% \begin{macrocode}
+% U+2022 BULLET; bullet
+\DeclareTextCommand{\textbullet}{PD1}{\200}% U+2022
+% U+2020 DAGGER; dagger
+\DeclareTextCommand{\textdagger}{PD1}{\201}% U+2020
+% U+2021 DOUBLE DAGGER; daggerdbl; \ddagger (LaTeX)
+\DeclareTextCommand{\textdaggerdbl}{PD1}{\202}% U+2021
+\DeclareTextCommand{\textddagger}{PD1}{\textddagger}
+% U+2026 HORIZONTAL ELLIPSIS; ellipsis
+\DeclareTextCommand{\textellipsis}{PD1}{\203}% U+2026
+% U+2014 EM DASH; emdash
+\DeclareTextCommand{\textemdash}{PD1}{\204}% U+2014
+% U+2013 EN DASH; endash
+\DeclareTextCommand{\textendash}{PD1}{\205}% U+2013
+% U+0192 LATIN SMALL LETTER F WITH HOOK; florin
+\DeclareTextCommand{\textflorin}{PD1}{\206}% U+0192
+% U+2044 FRACTION SLASH; fraction
+\DeclareTextCommand{\textfractionsolidus}{PD1}{\207}% U+2044
+% U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK; guilsinglleft
+\DeclareTextCommand{\guilsinglleft}{PD1}{\210}% U+2039
+% U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK; guilsinglright
+\DeclareTextCommand{\guilsinglright}{PD1}{\211}% U+203A
+% U+2212 MINUS SIGN; minus
+\DeclareTextCommand{\textminus}{PD1}{\212}% U+2212
+% U+2030 PER MILLE SIGN; perthousand
+\DeclareTextCommand{\textperthousand}{PD1}{\213}% U+2030
+% U+201E DOUBLE LOW-9 QUOTATION MARK; quotedblbase
+\DeclareTextCommand{\quotedblbase}{PD1}{\214}% U+201E
+% U+201C LEFT DOUBLE QUOTATION MARK; quotedblleft
+\DeclareTextCommand{\textquotedblleft}{PD1}{\215}% U+201C
+% U+201D RIGHT DOUBLE QUOTATION MARK; quotedblright
+\DeclareTextCommand{\textquotedblright}{PD1}{\216}% U+201D
+% U+2018 LEFT SINGLE QUOTATION MARK; quoteleft
+\DeclareTextCommand{\textquoteleft}{PD1}{\217}% U+2018
+% U+2019 RIGHT SINGLE QUOTATION MARK; quoteright
+\DeclareTextCommand{\textquoteright}{PD1}{\220}% U+2019
+% U+201A SINGLE LOW-9 QUOTATION MARK; quotesinglbase
+\DeclareTextCommand{\quotesinglbase}{PD1}{\221}% U+201A
+% U+2122 TRADE MARK SIGN; trademark
+\DeclareTextCommand{\texttrademark}{PD1}{\222}% U+2122
+% U+FB01 LATIN SMALL LIGATURE FI; fi
+\DeclareTextCommand{\textfi}{PD1}{\223}% U+FB01
+% U+FB02 LATIN SMALL LIGATURE FL; fl
+\DeclareTextCommand{\textfl}{PD1}{\224}% U+FB02
+% U+0141 LATIN CAPITAL LETTER L WITH STROKE; Lslash
+\DeclareTextCommand{\L}{PD1}{\225}% U+0141
+% U+0152 LATIN CAPITAL LIGATURE OE; OE
+\DeclareTextCommand{\OE}{PD1}{\226}% U+0152
+% U+0160 LATIN CAPITAL LETTER S WITH CARON; Scaron
+\DeclareTextCompositeCommand{\v}{PD1}{S}{\227}% U+0160
+% U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS; Ydieresis
+\DeclareTextCompositeCommand{\"}{PD1}{Y}{\230}% U+0178
+\DeclareTextCommand{\IJ}{PD1}{IJ}% ligature U+0049 U+004A
+% U+017D LATIN CAPITAL LETTER Z WITH CARON; Zcaron
+\DeclareTextCompositeCommand{\v}{PD1}{Z}{\231}% U+017D
+% U+0131 LATIN SMALL LETTER DOTLESS I; dotlessi
+\DeclareTextCommand{\i}{PD1}{\232}% U+0131
+% U+0142 LATIN SMALL LETTER L WITH STROKE; lslash
+\DeclareTextCommand{\l}{PD1}{\233}% U+0142
+% U+0153 LATIN SMALL LIGATURE OE; oe
+\DeclareTextCommand{\oe}{PD1}{\234}% U+0153
+% U+0161 LATIN SMALL LETTER S WITH CARON; scaron
+\DeclareTextCompositeCommand{\v}{PD1}{s}{\235}% U+0161
+% U+017E LATIN SMALL LETTER Z WITH CARON; zcaron
+\DeclareTextCompositeCommand{\v}{PD1}{z}{\236}% U+017E
+% \end{macrocode}
+% Slot \cs{237} (0x9F) is not defined in PDFDocEncoding.\\
+% The euro \cs{240} is inserted in version 1.3 of the pdf
+% specification.
+% \begin{macrocode}
+% U+20AC EURO SIGN; *Euro, euro
+\DeclareTextCommand{\texteuro}{PD1}{\240}% U+20AC
+% U+00A1 INVERTED EXCLAMATION MARK; exclamdown
+\DeclareTextCommand{\textexclamdown}{PD1}{\241}% U+00A1
+% U+00A2 CENT SIGN; cent
+\DeclareTextCommand{\textcent}{PD1}{\242}% U+00A2
+% U+00A3 POUND SIGN; sterling
+\DeclareTextCommand{\textsterling}{PD1}{\243}% U+00A3
+% U+00A4 CURRENCY SIGN; currency
+\DeclareTextCommand{\textcurrency}{PD1}{\244}% U+00A4
+% U+00A5 YEN SIGN; yen
+\DeclareTextCommand{\textyen}{PD1}{\245}% U+00A5
+% U+00A6 BROKEN BAR; brokenbar
+\DeclareTextCommand{\textbrokenbar}{PD1}{\246}% U+00A6
+% U+00A7 SECTION SIGN; section
+\DeclareTextCommand{\textsection}{PD1}{\247}% U+00A7
+% U+00A8 DIAERESIS; dieresis
+\DeclareTextCommand{\textasciidieresis}{PD1}{\250}% U+00A8
+% U+00A9 COPYRIGHT SIGN; copyright
+\DeclareTextCommand{\textcopyright}{PD1}{\251}% U+00A9
+% U+00AA FEMININE ORDINAL INDICATOR; ordfeminine
+\DeclareTextCommand{\textordfeminine}{PD1}{\252}% U+00AA
+% U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK; guillemotleft
+\DeclareTextCommand{\guillemotleft}{PD1}{\253}% U+00AB
+% U+00AC NOT SIGN; logicalnot
+\DeclareTextCommand{\textlogicalnot}{PD1}{\254}% U+00AC
+\DeclareTextCommand{\textlnot}{PD1}{\254}% logical not
+% \end{macrocode}
+% No glyph \cs{255} in PDFDocEncoding.
+% \begin{macrocode}
+% U+00AE REGISTERED SIGN; registered
+\DeclareTextCommand{\textregistered}{PD1}{\256}% U+00AE
+% U+00AF MACRON; *macron, overscore
+\DeclareTextCommand{\textasciimacron}{PD1}{\257}% U+00AF
+% U+00B0 DEGREE SIGN; degree
+\DeclareTextCommand{\textdegree}{PD1}{\260}% U+00B0
+% U+00B1 PLUS-MINUS SIGN; plusminus
+\DeclareTextCommand{\textplusminus}{PD1}{\261}% U+00B1
+% U+00B2 SUPERSCRIPT TWO; twosuperior
+\DeclareTextCommand{\texttwosuperior}{PD1}{\262}%* U+00B2
+% U+00B3 SUPERSCRIPT THREE; threesuperior
+\DeclareTextCommand{\textthreesuperior}{PD1}{\263}%* U+00B3
+% U+00B4 ACUTE ACCENT; acute
+\DeclareTextCommand{\textacute}{PD1}{\264}% U+00B4
+% U+00B5 MICRO SIGN; mu, mu1
+\DeclareTextCommand{\textmu}{PD1}{\265}% U+00B5
+% U+00B6 PILCROW SIGN; paragraph
+\DeclareTextCommand{\textparagraph}{PD1}{\266}% U+00B6
+% U+00B7 MIDDLE DOT; middot, *periodcentered
+\DeclareTextCommand{\textperiodcentered}{PD1}{\267}% U+00B7
+% U+00B8 CEDILLA; cedilla
+\DeclareTextCommand{\textcedilla}{PD1}{\270}% U+00B8
+% U+00B9 SUPERSCRIPT ONE; onesuperior
+\DeclareTextCommand{\textonesuperior}{PD1}{\271}%* U+00B9
+% U+00BA MASCULINE ORDINAL INDICATOR; ordmasculine
+\DeclareTextCommand{\textordmasculine}{PD1}{\272}% U+00BA
+% U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK; guillemotright
+\DeclareTextCommand{\guillemotright}{PD1}{\273}% U+00BB
+% U+00BC VULGAR FRACTION ONE QUARTER; onequarter
+\DeclareTextCommand{\textonequarter}{PD1}{\274}% U+00BC
+% U+00BD VULGAR FRACTION ONE HALF; onehalf
+\DeclareTextCommand{\textonehalf}{PD1}{\275}% U+00BD
+% U+00BE VULGAR FRACTION THREE QUARTERS; threequarters
+\DeclareTextCommand{\textthreequarters}{PD1}{\276}% U+00BE
+% U+00BF INVERTED QUESTION MARK; questiondown
+\DeclareTextCommand{\textquestiondown}{PD1}{\277}% U+00BF
+% U+00C0 LATIN CAPITAL LETTER A WITH GRAVE; Agrave
+\DeclareTextCompositeCommand{\`}{PD1}{A}{\300}% U+00C0
+% U+00C1 LATIN CAPITAL LETTER A WITH ACUTE; Aacute
+\DeclareTextCompositeCommand{\'}{PD1}{A}{\301}% U+00C1
+% U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX; Acircumflex
+\DeclareTextCompositeCommand{\^}{PD1}{A}{\302}% U+00C2
+% U+00C3 LATIN CAPITAL LETTER A WITH TILDE; Atilde
+\DeclareTextCompositeCommand{\~}{PD1}{A}{\303}% U+00C3
+% U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS; Adieresis
+\DeclareTextCompositeCommand{\"}{PD1}{A}{\304}% U+00C4
+% U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE; Aring
+\DeclareTextCompositeCommand{\r}{PD1}{A}{\305}% U+00C5
+% U+00C6 LATIN CAPITAL LETTER AE; AE
+\DeclareTextCommand{\AE}{PD1}{\306}% U+00C6
+% U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA; Ccedilla
+\DeclareTextCompositeCommand{\c}{PD1}{C}{\307}% U+00C7
+% U+00C8 LATIN CAPITAL LETTER E WITH GRAVE; Egrave
+\DeclareTextCompositeCommand{\`}{PD1}{E}{\310}% U+00C8
+% U+00C9 LATIN CAPITAL LETTER E WITH ACUTE; Eacute
+\DeclareTextCompositeCommand{\'}{PD1}{E}{\311}% U+00C9
+% U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX; Ecircumflex
+\DeclareTextCompositeCommand{\^}{PD1}{E}{\312}% U+00CA
+% U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS; Edieresis
+\DeclareTextCompositeCommand{\"}{PD1}{E}{\313}% U+00CB
+% U+00CC LATIN CAPITAL LETTER I WITH GRAVE; Igrave
+\DeclareTextCompositeCommand{\`}{PD1}{I}{\314}% U+00CC
+% U+00CD LATIN CAPITAL LETTER I WITH ACUTE; Iacute
+\DeclareTextCompositeCommand{\'}{PD1}{I}{\315}% U+00CD
+% U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX; Icircumflex
+\DeclareTextCompositeCommand{\^}{PD1}{I}{\316}% U+00CE
+% U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS; Idieresis
+\DeclareTextCompositeCommand{\"}{PD1}{I}{\317}% U+00CF
+% U+00D0 LATIN CAPITAL LETTER ETH; Eth
+\DeclareTextCommand{\DH}{PD1}{\320}% U+00D0
+\DeclareTextCommand{\DJ}{PD1}{\320}% U+00D0
+% U+00D1 LATIN CAPITAL LETTER N WITH TILDE; Ntilde
+\DeclareTextCompositeCommand{\~}{PD1}{N}{\321}% U+00D1
+% U+00D2 LATIN CAPITAL LETTER O WITH GRAVE; Ograve
+\DeclareTextCompositeCommand{\`}{PD1}{O}{\322}% U+00D2
+% U+00D3 LATIN CAPITAL LETTER O WITH ACUTE; Oacute
+\DeclareTextCompositeCommand{\'}{PD1}{O}{\323}% U+00D3
+% U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX; Ocircumflex
+\DeclareTextCompositeCommand{\^}{PD1}{O}{\324}% U+00D4
+% U+00D5 LATIN CAPITAL LETTER O WITH TILDE; Otilde
+\DeclareTextCompositeCommand{\~}{PD1}{O}{\325}% U+00D5
+% U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS; Odieresis
+\DeclareTextCompositeCommand{\"}{PD1}{O}{\326}% U+00D6
+% U+00D7 MULTIPLICATION SIGN; multiply
+\DeclareTextCommand{\textmultiply}{PD1}{\327}% U+00D7
+% U+00D8 LATIN CAPITAL LETTER O WITH STROKE; Oslash
+\DeclareTextCommand{\O}{PD1}{\330}% U+00D8
+% U+00D9 LATIN CAPITAL LETTER U WITH GRAVE; Ugrave
+\DeclareTextCompositeCommand{\`}{PD1}{U}{\331}% U+00D9
+% U+00DA LATIN CAPITAL LETTER U WITH ACUTE; Uacute
+\DeclareTextCompositeCommand{\'}{PD1}{U}{\332}% U+00DA
+% U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX; Ucircumflex
+\DeclareTextCompositeCommand{\^}{PD1}{U}{\333}% U+00DB
+% U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS; Udieresis
+\DeclareTextCompositeCommand{\"}{PD1}{U}{\334}% U+00DC
+% U+00DD LATIN CAPITAL LETTER Y WITH ACUTE; Yacute
+\DeclareTextCompositeCommand{\'}{PD1}{Y}{\335}% U+00DD
+% U+00DE LATIN CAPITAL LETTER THORN; Thorn; \TH, \Thorn (wasysym)
+\DeclareTextCommand{\TH}{PD1}{\336}% U+00DE
+\DeclareTextCommand{\textThorn}{PD1}{\336}%* U+00DE
+% U+00DF LATIN SMALL LETTER SHARP S; germandbls
+\DeclareTextCommand{\ss}{PD1}{\337}% U+00DF
+% U+00E0 LATIN SMALL LETTER A WITH GRAVE; agrave
+\DeclareTextCompositeCommand{\`}{PD1}{a}{\340}% U+00E0
+% U+00E1 LATIN SMALL LETTER A WITH ACUTE; aacute
+\DeclareTextCompositeCommand{\'}{PD1}{a}{\341}% U+00E1
+% U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX; acircumflex
+\DeclareTextCompositeCommand{\^}{PD1}{a}{\342}% U+00E2
+% U+00E3 LATIN SMALL LETTER A WITH TILDE; atilde
+\DeclareTextCompositeCommand{\~}{PD1}{a}{\343}% U+00E3
+% U+00E4 LATIN SMALL LETTER A WITH DIAERESIS; adieresis
+\DeclareTextCompositeCommand{\"}{PD1}{a}{\344}% U+00E4
+% U+00E5 LATIN SMALL LETTER A WITH RING ABOVE; aring
+\DeclareTextCompositeCommand{\r}{PD1}{a}{\345}% U+00E5
+% U+00E6 LATIN SMALL LETTER AE; ae
+\DeclareTextCommand{\ae}{PD1}{\346}% U+00E6
+% U+00E7 LATIN SMALL LETTER C WITH CEDILLA; ccedilla
+\DeclareTextCompositeCommand{\c}{PD1}{c}{\347}% U+00E7
+% U+00E8 LATIN SMALL LETTER E WITH GRAVE; egrave
+\DeclareTextCompositeCommand{\`}{PD1}{e}{\350}% U+00E8
+% U+00E9 LATIN SMALL LETTER E WITH ACUTE; eacute
+\DeclareTextCompositeCommand{\'}{PD1}{e}{\351}% U+00E9
+% U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX; ecircumflex
+\DeclareTextCompositeCommand{\^}{PD1}{e}{\352}% U+00EA
+% U+00EB LATIN SMALL LETTER E WITH DIAERESIS; edieresis
+\DeclareTextCompositeCommand{\"}{PD1}{e}{\353}% U+00EB
+% U+00EC LATIN SMALL LETTER I WITH GRAVE; igrave
+\DeclareTextCompositeCommand{\`}{PD1}{i}{\354}% U+00EC
+\DeclareTextCompositeCommand{\`}{PD1}{\i}{\354}% U+00EC
+% U+00ED LATIN SMALL LETTER I WITH ACUTE; iacute
+\DeclareTextCompositeCommand{\'}{PD1}{i}{\355}% U+00ED
+\DeclareTextCompositeCommand{\'}{PD1}{\i}{\355}% U+00ED
+% U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX; icircumflex
+\DeclareTextCompositeCommand{\^}{PD1}{i}{\356}% U+00EE
+\DeclareTextCompositeCommand{\^}{PD1}{\i}{\356}% U+00EE
+% U+00EF LATIN SMALL LETTER I WITH DIAERESIS; idieresis
+\DeclareTextCompositeCommand{\"}{PD1}{i}{\357}% U+00EF
+\DeclareTextCompositeCommand{\"}{PD1}{\i}{\357}% U+00EF
+% U+00F0 LATIN SMALL LETTER ETH; eth
+\DeclareTextCommand{\dh}{PD1}{\360}% U+00F0
+% U+00F1 LATIN SMALL LETTER N WITH TILDE; ntilde
+\DeclareTextCompositeCommand{\~}{PD1}{n}{\361}% U+00F1
+% U+00F2 LATIN SMALL LETTER O WITH GRAVE; ograve
+\DeclareTextCompositeCommand{\`}{PD1}{o}{\362}% U+00F2
+% U+00F3 LATIN SMALL LETTER O WITH ACUTE; oacute
+\DeclareTextCompositeCommand{\'}{PD1}{o}{\363}% U+00F3
+% U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX; ocircumflex
+\DeclareTextCompositeCommand{\^}{PD1}{o}{\364}% U+00F4
+% U+00F5 LATIN SMALL LETTER O WITH TILDE; otilde
+\DeclareTextCompositeCommand{\~}{PD1}{o}{\365}% U+00F5
+% U+00F6 LATIN SMALL LETTER O WITH DIAERESIS; odieresis
+\DeclareTextCompositeCommand{\"}{PD1}{o}{\366}% U+00F6
+% U+00F7 DIVISION SIGN; divide
+\DeclareTextCommand{\textdivide}{PD1}{\367}% U+00F7
+% U+00F8 LATIN SMALL LETTER O WITH STROKE; oslash
+\DeclareTextCommand{\o}{PD1}{\370}% U+00F8
+% U+00F9 LATIN SMALL LETTER U WITH GRAVE; ugrave
+\DeclareTextCompositeCommand{\`}{PD1}{u}{\371}% U+00F9
+% U+00FA LATIN SMALL LETTER U WITH ACUTE; uacute
+\DeclareTextCompositeCommand{\'}{PD1}{u}{\372}% U+00FA
+% U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX; ucircumflex
+\DeclareTextCompositeCommand{\^}{PD1}{u}{\373}% U+00FB
+% U+00FC LATIN SMALL LETTER U WITH DIAERESIS; udieresis
+\DeclareTextCompositeCommand{\"}{PD1}{u}{\374}% U+00FC
+% U+00FD LATIN SMALL LETTER Y WITH ACUTE; yacute
+\DeclareTextCompositeCommand{\'}{PD1}{y}{\375}% U+00FD
+% U+00FE LATIN SMALL LETTER THORN; thorn; \th, \thorn (wasysym)
+\DeclareTextCommand{\th}{PD1}{\376}% U+00FE
+\DeclareTextCommand{\textthorn}{PD1}{\376}%* U+00FE
+% U+00FF LATIN SMALL LETTER Y WITH DIAERESIS; ydieresis
+\DeclareTextCompositeCommand{\"}{PD1}{y}{\377}% U+00FF
+\DeclareTextCommand{\ij}{PD1}{ij}% ligature U+0069 U+006A
+% \end{macrocode}
+% Glyphs that consist of several characters.
+% \begin{macrocode}
+\DeclareTextCommand{\SS}{PD1}{SS}%
+\DeclareTextCommand{\textcelsius}{PD1}{\textdegree C}%
+% \end{macrocode}
+% Aliases (german.sty)
+% \begin{macrocode}
+\DeclareTextCommand{\textglqq}{PD1}{\quotedblbase}%
+\DeclareTextCommand{\textgrqq}{PD1}{\textquotedblleft}%
+\DeclareTextCommand{\textglq}{PD1}{\quotesinglbase}%
+\DeclareTextCommand{\textgrq}{PD1}{\textquoteleft}%
+\DeclareTextCommand{\textflqq}{PD1}{\guillemotleft}%
+\DeclareTextCommand{\textfrqq}{PD1}{\guillemotright}%
+\DeclareTextCommand{\textflq}{PD1}{\guilsinglleft}%
+\DeclareTextCommand{\textfrq}{PD1}{\guilsinglright}%
+% \end{macrocode}
+% Aliases (math names)
+% \begin{macrocode}
+\DeclareTextCommand{\textneg}{PD1}{\textlogicalnot}%
+\DeclareTextCommand{\texttimes}{PD1}{\textmultiply}%
+\DeclareTextCommand{\textdiv}{PD1}{\textdivide}%
+\DeclareTextCommand{\textpm}{PD1}{\textplusminus}%
+\DeclareTextCommand{\textcdot}{PD1}{\textperiodcentered}%
+\DeclareTextCommand{\textbeta}{PD1}{\ss}%
+% \end{macrocode}
+% Polish aliases. PDF encoding does not have the characters, but it
+% is useful to Poles to have the plain letters regardless. Requested by
+% Wojciech Myszka (\Email{W.Myszka@immt.pwr.wroc.pl}).
+% \begin{macrocode}
+\DeclareTextCompositeCommand{\k}{PD1}{a}{a}% aogonek
+\DeclareTextCompositeCommand{\'}{PD1}{c}{c}% cacute
+\DeclareTextCompositeCommand{\k}{PD1}{e}{e}% eogonek
+\DeclareTextCompositeCommand{\'}{PD1}{n}{n}% nacute
+\DeclareTextCompositeCommand{\'}{PD1}{s}{s}% sacute
+\DeclareTextCompositeCommand{\'}{PD1}{z}{z}% zacute
+\DeclareTextCompositeCommand{\.}{PD1}{z}{z}% zdot
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareTextCompositeCommand{\k}{PD1}{A}{A}% Aogonek
+\DeclareTextCompositeCommand{\'}{PD1}{C}{C}% Cacute
+\DeclareTextCompositeCommand{\k}{PD1}{E}{E}% Eogonek
+\DeclareTextCompositeCommand{\'}{PD1}{N}{N}% Nacute
+\DeclareTextCompositeCommand{\'}{PD1}{S}{S}% Sacute
+\DeclareTextCompositeCommand{\'}{PD1}{Z}{Z}% Zacute
+\DeclareTextCompositeCommand{\.}{PD1}{Z}{Z}% Zdot
+% \end{macrocode}
+% \begin{macrocode}
+%</pd1enc>
+% \end{macrocode}
+%
+% \subsection{PU encoding}
+% \begin{macrocode}
+%<*puenc>
+\DeclareFontEncoding{PU}{}{}
+% \end{macrocode}
+%
+% \subsubsection{NFSS2 accents}
+%
+% \begin{macrocode}
+% U+0300 COMBINING GRAVE ACCENT; gravecmb, *gravecomb
+\DeclareTextCommand{\`}{PU}[1]{#1\83\000}% U+0300
+% U+0301 COMBINING ACUTE ACCENT; acutecmb, *acutecomb
+\DeclareTextCommand{\'}{PU}[1]{#1\83\001}% U+0301
+% U+0302 COMBINING CIRCUMFLEX ACCENT; circumflexcmb
+\DeclareTextCommand{\^}{PU}[1]{#1\83\002}% U+0302
+% U+0303 COMBINING TILDE; tildecmb, *tildecomb
+\DeclareTextCommand{\~}{PU}[1]{#1\83\003}% U+0303
+% U+0304 COMBINING MACRON; macroncmb
+\DeclareTextCommand{\=}{PU}[1]{#1\83\004}% U+0304
+% U+0306 COMBINING BREVE; brevecmb
+\DeclareTextCommand{\u}{PU}[1]{#1\83\006}% U+0306
+\DeclareTextCommand{\U}{PU}[1]{#1\83\006}% U+0306
+% U+0307 COMBINING DOT ABOVE; dotaccentcmb
+\DeclareTextCommand{\.}{PU}[1]{#1\83\007}% U+0307
+% U+0308 COMBINING DIAERESIS; dieresiscmb
+\DeclareTextCommand{\"}{PU}[1]{#1\83\010}% U+0308
+% U+030A COMBINING RING ABOVE; ringcmb
+\DeclareTextCommand{\r}{PU}[1]{#1\83\012}% U+030A
+% U+030B COMBINING DOUBLE ACUTE ACCENT; hungarumlautcmb
+\DeclareTextCommand{\H}{PU}[1]{#1\83\013}% U+030B
+% U+030C COMBINING CARON; caroncmb
+\DeclareTextCommand{\v}{PU}[1]{#1\83\014}% U+030C
+% U+030F COMBINING DOUBLE GRAVE ACCENT; dblgravecmb
+\DeclareTextCommand{\G}{PU}[1]{#1\83\017}% U+030F
+\DeclareTextCommand{\C}{PU}[1]{#1\83\017}% U+030F
+% U+0311 COMBINING INVERTED BREVE; breveinvertedcmb
+\DeclareTextCommand{\textinvbreve}{PU}[1]{#1\83\021}% U+0311
+\DeclareTextCommand{\newtie}{PU}[1]{#1\83\021}% U+0311
+% U+0323 COMBINING DOT BELOW; dotbelowcmb, *dotbelowcomb
+\DeclareTextCommand{\d}{PU}[1]{#1\83\043}% U+0323
+% U+0324 COMBINING DIAERESIS BELOW; dieresisbelowcmb; \textsubumlaut (tipa)
+\DeclareTextCommand{\textsubumlaut}{PU}[1]{#1\83\044}% U+0324
+% U+0325 COMBINING RING BELOW; ringbelowcmb; \textsubring (tipa)
+\DeclareTextCommand{\textsubring}{PU}[1]{#1\83\045}% U+0325
+% U+0327 COMBINING CEDILLA; cedillacmb
+\DeclareTextCommand{\c}{PU}[1]{#1\83\047}% U+0327
+% U+0328 COMBINING OGONEK; ogonekcmb
+\DeclareTextCommand{\k}{PU}[1]{#1\83\050}% U+0328
+% U+032D COMBINING CIRCUMFLEX ACCENT BELOW;
+% \textsubcircum (tipa)
+\DeclareTextCommand{\textsubcircum}{PU}[1]{#1\83\055}% U+032D
+% U+032E COMBINING BREVE BELOW; brevebelowcmb
+\DeclareTextCommand{\textsubbreve}{PU}[1]{#1\83\056}% U+032E
+% U+0330 COMBINING TILDE BELOW; tildebelowcmb; \textsubtilde (tipa)
+\DeclareTextCommand{\textsubtilde}{PU}[1]{#1\83\060}% U+0330
+% U+0331 COMBINING MACRON BELOW; macronbelowcmb
+\DeclareTextCommand{\b}{PU}[1]{#1\83\061}% U+0331
+% U+0361 COMBINING DOUBLE INVERTED BREVE; breveinverteddoublecmb
+\DeclareTextCommand{\t}{PU}[1]{#1\83\141}% U+0361
+% U+20DD COMBINING ENCLOSING CIRCLE
+\DeclareTextCommand{\textcircled}{PU}[1]{#1\9040\335}% U+20DD
+% \end{macrocode}
+%
+% Double accents.
+% \begin{macrocode}
+\DeclareTextCommand{\textacutemacron}{PU}[1]{#1\83\001\83\004}% U+0301 U+0304
+\DeclareTextCommand{\textgravemacron}{PU}[1]{#1\83\000\83\004}% U+0300 U+0304
+% \end{macrocode}
+%
+% \cs{@empty} is an artefact of the NFSS2 machinery, it
+% gets inserted for empty arguments and spaces.
+% \begin{macrocode}
+\DeclareTextCompositeCommand{\`}{PU}{\@empty}{\textasciigrave}%
+\DeclareTextCompositeCommand{\'}{PU}{\@empty}{\textacute}%
+\DeclareTextCompositeCommand{\^}{PU}{\@empty}{\textasciicircum}%
+\DeclareTextCompositeCommand{\~}{PU}{\@empty}{\texttilde}%
+\DeclareTextCompositeCommand{\"}{PU}{\@empty}{\textasciidieresis}%
+\DeclareTextCompositeCommand{\r}{PU}{\@empty}{\textring}%
+\DeclareTextCompositeCommand{\v}{PU}{\@empty}{\textasciicaron}%
+\DeclareTextCompositeCommand{\.}{PU}{\@empty}{\textdotaccent}%
+\DeclareTextCompositeCommand{\c}{PU}{\@empty}{\textcedilla}%
+\DeclareTextCompositeCommand{\u}{PU}{\@empty}{\textasciibreve}%
+\DeclareTextCompositeCommand{\G}{PU}{\@empty}{\textdoublegrave}%
+\DeclareTextCompositeCommand{\=}{PU}{\@empty}{\textasciimacron}%
+\DeclareTextCompositeCommand{\H}{PU}{\@empty}{\texthungarumlaut}%
+\DeclareTextCompositeCommand{\k}{PU}{\@empty}{\textogonek}%
+\DeclareTextCompositeCommand{\textinvbreve}{PU}{\@empty}{{ \83\021}}% U+0311
+\DeclareTextCompositeCommand{\textsubumlaut}{PU}{\@empty}{{ \83\044}}% U+0324
+\DeclareTextCompositeCommand{\textsubring}{PU}{\@empty}{\textringlow}%
+\DeclareTextCompositeCommand{\textsubcircum}{PU}{\@empty}{\textcircumlow}%
+\DeclareTextCompositeCommand{\textsubbreve}{PU}{\@empty}{{ \83\056}}% U+032E
+\DeclareTextCompositeCommand{\textsubtilde}{PU}{\@empty}{\texttildelow}%
+\DeclareTextCompositeCommand{\b}{PU}{\@empty}{\textmacronbelow}%
+\DeclareTextCompositeCommand{\d}{PU}{\@empty}{\textdotbelow}%
+\DeclareTextCompositeCommand{\t}{PU}{\@empty}{\texttie}%
+\DeclareTextCompositeCommand{\newtie}{PU}{\@empty}{\textnewtie}%
+\DeclareTextCompositeCommand{\textcircled}{PU}{\@empty}{\textbigcircle}%
+\DeclareTextCompositeCommand{\textacutemacron}{PU}{\@empty}{{ \83\001\83\004}}% U+0301 U+0304
+\DeclareTextCompositeCommand{\textgravemacron}{PU}{\@empty}{{ \83\000\83\004}}% U+0300 U+0304
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareTextCompositeCommand{\`}{PU}{\ }{\textasciigrave}%
+\DeclareTextCompositeCommand{\'}{PU}{\ }{\textacute}%
+\DeclareTextCompositeCommand{\^}{PU}{\ }{\textasciicircum}%
+\DeclareTextCompositeCommand{\~}{PU}{\ }{\texttilde}%
+\DeclareTextCompositeCommand{\"}{PU}{\ }{\textasciidieresis}%
+\DeclareTextCompositeCommand{\r}{PU}{\ }{\textring}%
+\DeclareTextCompositeCommand{\v}{PU}{\ }{\textasciicaron}%
+\DeclareTextCompositeCommand{\.}{PU}{\ }{\textdotaccent}%
+\DeclareTextCompositeCommand{\c}{PU}{\ }{\textcedilla}%
+\DeclareTextCompositeCommand{\u}{PU}{\ }{\textasciibreve}%
+\DeclareTextCompositeCommand{\G}{PU}{\ }{\textdoublegrave}%
+\DeclareTextCompositeCommand{\=}{PU}{\ }{\textasciimacron}%
+\DeclareTextCompositeCommand{\H}{PU}{\ }{\texthungarumlaut}%
+\DeclareTextCompositeCommand{\k}{PU}{\ }{\textogonek}%
+\DeclareTextCompositeCommand{\textinvbreve}{PU}{\ }{{ \83\021}}% U+0311
+\DeclareTextCompositeCommand{\textsubumlaut}{PU}{\ }{{ \83\044}}% U+0324
+\DeclareTextCompositeCommand{\textsubring}{PU}{\ }{\textringlow}%
+\DeclareTextCompositeCommand{\textsubcircum}{PU}{\ }{\textcircumlow}%
+\DeclareTextCompositeCommand{\textsubbreve}{PU}{\ }{{ \83\056}}% U+032E
+\DeclareTextCompositeCommand{\textsubtilde}{PU}{\ }{\texttildelow}%
+\DeclareTextCompositeCommand{\b}{PU}{\ }{\textmacronbelow}%
+\DeclareTextCompositeCommand{\d}{PU}{\ }{\textdotbelow}%
+\DeclareTextCompositeCommand{\t}{PU}{\ }{\texttie}%
+\DeclareTextCompositeCommand{\newtie}{PU}{\ }{\textnewtie}%
+\DeclareTextCompositeCommand{\textcircled}{PU}{\ }{\textbigcircle}%
+\DeclareTextCompositeCommand{\textacutemacron}{PU}{\ }{{ \83\001\83\004}}% U+0301 U+0304
+\DeclareTextCompositeCommand{\textgravemacron}{PU}{\ }{{ \83\000\83\004}}% U+0300 U+0304
+% \end{macrocode}
+% Accents for capitals (see encoding TS1)
+% \begin{macrocode}
+\DeclareTextCommand{\capitalcedilla}{PU}[1]{\c{#1}}%
+\DeclareTextCommand{\capitalogonek}{PU}[1]{\k{#1}}%
+\DeclareTextCommand{\capitalgrave}{PU}[1]{\`{#1}}%
+\DeclareTextCommand{\capitalacute}{PU}[1]{\'{#1}}%
+\DeclareTextCommand{\capitalcircumflex}{PU}[1]{\^{#1}}%
+\DeclareTextCommand{\capitaltilde}{PU}[1]{\~{#1}}%
+\DeclareTextCommand{\capitaldieresis}{PU}[1]{\"{#1}}%
+\DeclareTextCommand{\capitalhungarumlaut}{PU}[1]{\H{#1}}%
+\DeclareTextCommand{\capitalring}{PU}[1]{\r{#1}}%
+\DeclareTextCommand{\capitalcaron}{PU}[1]{\v{#1}}%
+\DeclareTextCommand{\capitalbreve}{PU}[1]{\u{#1}}%
+\DeclareTextCommand{\capitalmacron}{PU}[1]{\={#1}}%
+\DeclareTextCommand{\capitaldotaccent}{PU}[1]{\.{#1}}%
+\DeclareTextCommand{\capitaltie}{PU}[1]{\t{#1}}%
+\DeclareTextCommand{\capitalnewtie}{PU}[1]{\newtie{#1}}%
+% \end{macrocode}
+%
+% \subsubsection{Basic Latin: U+0000 to U+007F}
+%
+% Special white space escape characters.
+% \begin{macrocode}
+% U+0009 (CHARACTER TABULATION)
+\DeclareTextCommand{\textHT}{PU}{\80\011}% U+0009
+% U+000A (LINE FEED)
+\DeclareTextCommand{\textLF}{PU}{\80\012}% U+000A
+% U+000D (CARRIAGE RETURN)
+\DeclareTextCommand{\textCR}{PU}{\80\015}% U+000D
+% \end{macrocode}
+% |\80\040|: U+0020 SPACE; space, spacehackarabic\\
+% |\80\041|: U+0021 EXCLAMATION MARK; exclam
+% \begin{macrocode}
+% U+0022 QUOTATION MARK; quotedbl
+\DeclareTextCommand{\textquotedbl}{PU}{"}% \80\042 U+0022
+% U+0023 NUMBER SIGN; numbersign
+\DeclareTextCommand{\textnumbersign}{PU}{\80\043}% U+0023
+% U+0024 DOLLAR SIGN; dollar
+\DeclareTextCommand{\textdollar}{PU}{\80\044}% U+0024
+%* \textdollar -> \mathdollar
+%* \textdollar -> \EyesDollar (marvosym)
+% U+0025 PERCENT SIGN; percent
+\DeclareTextCommand{\textpercent}{PU}{\80\045}% U+0025
+% U+0026 AMPERSAND; ampersand
+\DeclareTextCommand{\textampersand}{PU}{\80\046}% U+0026
+%* \textampersand -> \binampersand (stmaryrd)
+%* \textampersand -> \with (cmll)
+% U+0027 APOSTROPHE; quotesingle
+\DeclareTextCommand{\textquotesingle}{PU}{\80\047}% U+0027
+% U+0028 LEFT PARENTHESIS; parenleft
+\DeclareTextCommand{\textparenleft}{PU}{\80\050}% U+0028
+% U+0029 RIGHT PARENTHESIS; parenright
+\DeclareTextCommand{\textparenright}{PU}{\80\051}% U+0029
+% U+002A ASTERISK; asterisk; (?)
+\DeclareTextCommand{\textasteriskcentered}{PU}{\80\052}% U+002A
+% U+002B PLUS SIGN; plus; \MVPlus (marvosym)
+\DeclareTextCommand{\textMVPlus}{PU}{\80\053}%* U+002B
+% U+002C COMMA; comma; \MVComma (marvosym)
+\DeclareTextCommand{\textMVComma}{PU}{\80\054}%* U+002C
+% U+002D HYPHEN-MINUS; hyphen; \MVMinus (marvosym)
+\DeclareTextCommand{\textMVMinus}{PU}{\80\055}%* U+002D
+% U+002E FULL STOP; period; \MVPeriod (marvosym)
+\DeclareTextCommand{\textMVPeriod}{PU}{\80\056}%* U+002E
+% U+002F SOLIDUS; slash; \MVDivision (marvosym)
+\DeclareTextCommand{\textMVDivision}{PU}{\80\057}%* U+002F
+% U+0030 DIGIT ZERO; zero; \MVZero (marvosym)
+\DeclareTextCommand{\textMVZero}{PU}{\80\060}%* U+0030
+% U+0031 DIGIT ONE; one; \MVOne (marvosym)
+\DeclareTextCommand{\textMVOne}{PU}{\80\061}%* U+0031
+% U+0032 DIGIT TWO; two; \MVTwo (marvosym)
+\DeclareTextCommand{\textMVTwo}{PU}{\80\062}%* U+0032
+% U+0033 DIGIT THREE; three; \MVThree (marvosym)
+\DeclareTextCommand{\textMVThree}{PU}{\80\063}%* U+0033
+% U+0034 DIGIT FOUR; four; \MVFour (marvosym)
+\DeclareTextCommand{\textMVFour}{PU}{\80\064}%* U+0034
+% U+0035 DIGIT FIVE; five; \MVFive (marvosym)
+\DeclareTextCommand{\textMVFive}{PU}{\80\065}%* U+0035
+% U+0036 DIGIT SIX; six; \MVSix (marvosym)
+\DeclareTextCommand{\textMVSix}{PU}{\80\066}%* U+0036
+% U+0037 DIGIT SEVEM; seven; \MVSeven (marvosym)
+\DeclareTextCommand{\textMVSeven}{PU}{\80\067}%* U+0037
+% U+0038 DIGIT EIGHT; eight; \MVEight (marvosym)
+\DeclareTextCommand{\textMVEight}{PU}{\80\070}%* U+0038
+% U+0039 DIGIT NINE; nine; \MVNine (marvosym)
+\DeclareTextCommand{\textMVNine}{PU}{\80\071}%* U+0039
+% \end{macrocode}
+% |\80\072|: U+003A COLON; colon\\
+% |\80\073|: U+003B SEMICOLON; semicolon
+% \begin{macrocode}
+% U+003C LESS-THAN SIGN; less
+\DeclareTextCommand{\textless}{PU}{<}% \80\074 U+003C
+% \end{macrocode}
+% |\80\075|: U+003D EQUALS SIGN; equal
+% \begin{macrocode}
+% U+003E GREATER-THAN SIGN; greater
+\DeclareTextCommand{\textgreater}{PU}{>}% \80\076 U+003E
+% \end{macrocode}
+% |\80\077|: U+003F QUESTION MARK; question
+% \begin{macrocode}
+% U+0040 COMMERCIAL AT; at; \MVAt (marvosym)
+\DeclareTextCommand{\textMVAt}{PU}{\80\100}%* U+0040
+% \end{macrocode}
+% |\80\101|: U+0041 LATIN CAPITAL LETTER A; A\\
+% \dots\\
+% |\80\132|: U+005A LATIN CAPITAL LETTER Z; Z\\
+% |\80\133|: U+005B LEFT SQUARE BRACKET; bracketleft
+% \begin{macrocode}
+% U+005C REVERSE SOLIDUS; backslash
+\DeclareTextCommand{\textbackslash}{PU}{\80\134}% U+005C
+% \end{macrocode}
+% |\80\135|: U+005D RIGHT SQUARE BRACKET; bracketright
+% \begin{macrocode}
+% U+005E CIRCUMFLEX ACCENT; asciicircum
+\DeclareTextCommand{\textasciicircum}{PU}{\80\136}% U+005E
+% U+005F LOW LINE; underscore
+\DeclareTextCommand{\textunderscore}{PU}{\80\137}% U+005F
+%* \textunderscore -> \mathunderscore (LaTeX)
+% U+0060 GRAVE ACCENT; grave
+\DeclareTextCommand{\textasciigrave}{PU}{\80\140}% U+0060
+% \end{macrocode}
+% |\80\141|: U+0061 LATIN SMALL LETTER A; a\\
+% \dots\\
+% |\80\150|: U+0068 LATIN SMALL LETTER H; h
+% \begin{macrocode}
+% U+0069 LATIN SMALL LETTER I; i
+\DeclareTextCompositeCommand{\.}{PU}{\i}{i}% \80\151 U+0069
+\DeclareTextCompositeCommand{\.}{PU}{i}{i}% \80\151 U+0069
+% \end{macrocode}
+% |\80\152|: U+006A LATIN SMALL LETTER J; j\\
+% \dots\\
+% |\80\172|: U+007A LATIN SMALL LETTER Z; z
+% \begin{macrocode}
+% U+007B LEFT CURLY BRACKET; braceleft
+\DeclareTextCommand{\textbraceleft}{PU}{\80\173}% U+007B
+% U+007C VERTICAL LINE; *bar, verticalbar
+\DeclareTextCommand{\textbar}{PU}{|}% \80\174 U+007C
+%* \textbar -> \textvertline (tipa)
+% U+007D RIGHT CURLY BRACKET; braceright
+\DeclareTextCommand{\textbraceright}{PU}{\80\175}% U+007D
+% U+007E TILDE; asciitilde
+\DeclareTextCommand{\textasciitilde}{PU}{\80\176}% U+007E
+% \end{macrocode}
+%
+% \subsubsection{Latin-1 Supplement: U+0080 to U+00FF}
+%
+% |\80\240|: U+00A0 NO-BREAK SPACE; nbspace, nonbreakingspace
+% \begin{macrocode}
+% U+00A1 INVERTED EXCLAMATION MARK; exclamdown
+\DeclareTextCommand{\textexclamdown}{PU}{\80\241}% U+00A1
+% U+00A2 CENT SIGN; cent
+\DeclareTextCommand{\textcent}{PU}{\80\242}% U+00A2
+% U+00A3 POUND SIGN; sterling
+\DeclareTextCommand{\textsterling}{PU}{\80\243}% U+00A3
+%* \textsterling -> \mathsterling (LaTeX)
+%* \textsterling -> \pounds (LaTeX)
+% U+00A4 CURRENCY SIGN; currency
+\DeclareTextCommand{\textcurrency}{PU}{\80\244}% U+00A4
+% U+00A5 YEN SIGN; yen
+\DeclareTextCommand{\textyen}{PU}{\80\245}% U+00A5
+% U+00A6 BROKEN BAR; brokenbar
+\DeclareTextCommand{\textbrokenbar}{PU}{\80\246}% U+00A6
+%* \textbrokenbar -> \brokenvert (wasysym)
+% U+00A7 SECTION SIGN; section
+\DeclareTextCommand{\textsection}{PU}{\80\247}% U+00A7
+%* \textsection -> \mathsection (LaTeX)
+%* \textsection -> \S (LaTeX)
+% U+00A8 DIAERESIS; dieresis
+\DeclareTextCommand{\textasciidieresis}{PU}{\80\250}% U+00A8
+% U+00A9 COPYRIGHT SIGN; copyright
+\DeclareTextCommand{\textcopyright}{PU}{\80\251}%* U+00A9
+% U+00AA FEMININE ORDINAL INDICATOR; ordfeminine
+\DeclareTextCommand{\textordfeminine}{PU}{\80\252}% U+00AA
+% U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK; guillemotleft
+\DeclareTextCommand{\guillemotleft}{PU}{\80\253}% U+00AB
+% U+00AC NOT SIGN; logicalnot
+\DeclareTextCommand{\textlogicalnot}{PU}{\80\254}% U+00AC
+\DeclareTextCommand{\textlnot}{PU}{\80\254}% U+00AC
+% \end{macrocode}
+% |\80\255|: U+00AD SOFT HYPHEN; sfthyphen, softhyphen
+% \begin{macrocode}
+% U+00AE REGISTERED SIGN; registered
+\DeclareTextCommand{\textregistered}{PU}{\80\256}% U+00AE
+% U+00AF MACRON; *macron, overscore
+\DeclareTextCommand{\textasciimacron}{PU}{\80\257}% U+00AF
+% U+00B0 DEGREE SIGN; degree
+\DeclareTextCommand{\textdegree}{PU}{\80\260}% U+00B0
+% U+00B1 PLUS-MINUS SIGN; plusminus
+\DeclareTextCommand{\textplusminus}{PU}{\80\261}% U+00B1
+% U+00B2 SUPERSCRIPT TWO; twosuperior
+\DeclareTextCommand{\texttwosuperior}{PU}{\80\262}%* U+00B2
+% U+00B3 SUPERSCRIPT THREE; threesuperior
+\DeclareTextCommand{\textthreesuperior}{PU}{\80\263}%* U+00B3
+% U+00B4 ACUTE ACCENT; acute
+\DeclareTextCommand{\textacute}{PU}{\80\264}% U+00B4
+\DeclareTextCommand{\textasciiacute}{PU}{\80\264}% U+00B4
+% U+00B5 MICRO SIGN; mu, mu1
+\DeclareTextCommand{\textmu}{PU}{\80\265}% U+00B5
+% U+00B6 PILCROW SIGN; paragraph
+\DeclareTextCommand{\textparagraph}{PU}{\80\266}% U+00B6
+%* \textparagraph -> \mathparagraph (LaTeX)
+% U+00B7 MIDDLE DOT; middot, *periodcentered
+\DeclareTextCommand{\textperiodcentered}{PU}{\80\267}% U+00B7
+%* \textperiodcentered -> \MultiplicationDot (marvosym)
+%* \textperiodcentered -> \Squaredot (marvosym)
+% U+00B8 CEDILLA; cedilla
+\DeclareTextCommand{\textcedilla}{PU}{\80\270}% U+00B8
+% U+00B9 SUPERSCRIPT ONE; onesuperior
+\DeclareTextCommand{\textonesuperior}{PU}{\80\271}%* U+00B9
+% U+00BA MASCULINE ORDINAL INDICATOR; ordmasculine
+\DeclareTextCommand{\textordmasculine}{PU}{\80\272}% U+00BA
+% U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK; guillemotright
+\DeclareTextCommand{\guillemotright}{PU}{\80\273}% U+00BB
+% U+00BC VULGAR FRACTION ONE QUARTER; onequarter
+\DeclareTextCommand{\textonequarter}{PU}{\80\274}% U+00BC
+% U+00BD VULGAR FRACTION ONE HALF; onehalf
+\DeclareTextCommand{\textonehalf}{PU}{\80\275}% U+00BD
+% U+00BE VULGAR FRACTION THREE QUARTERS; threequarters
+\DeclareTextCommand{\textthreequarters}{PU}{\80\276}% U+00BE
+% U+00BF INVERTED QUESTION MARK; questiondown
+\DeclareTextCommand{\textquestiondown}{PU}{\80\277}% U+00BF
+% U+00C0 LATIN CAPITAL LETTER A WITH GRAVE; Agrave
+\DeclareTextCompositeCommand{\`}{PU}{A}{\80\300}% U+00C0
+% U+00C1 LATIN CAPITAL LETTER A WITH ACUTE; Aacute
+\DeclareTextCompositeCommand{\'}{PU}{A}{\80\301}% U+00C1
+% U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX; Acircumflex
+\DeclareTextCompositeCommand{\^}{PU}{A}{\80\302}% U+00C2
+% U+00C3 LATIN CAPITAL LETTER A WITH TILDE; Atilde
+\DeclareTextCompositeCommand{\~}{PU}{A}{\80\303}% U+00C3
+% U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS; Adieresis
+\DeclareTextCompositeCommand{\"}{PU}{A}{\80\304}% U+00C4
+% U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE; Aring
+\DeclareTextCompositeCommand{\r}{PU}{A}{\80\305}% U+00C5
+% U+00C6 LATIN CAPITAL LETTER AE; AE
+\DeclareTextCommand{\AE}{PU}{\80\306}% U+00C6
+% U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA; Ccedilla
+\DeclareTextCompositeCommand{\c}{PU}{C}{\80\307}% U+00C7
+% U+00C8 LATIN CAPITAL LETTER E WITH GRAVE; Egrave
+\DeclareTextCompositeCommand{\`}{PU}{E}{\80\310}% U+00C8
+% U+00C9 LATIN CAPITAL LETTER E WITH ACUTE; Eacute
+\DeclareTextCompositeCommand{\'}{PU}{E}{\80\311}% U+00C9
+% U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX; Ecircumflex
+\DeclareTextCompositeCommand{\^}{PU}{E}{\80\312}% U+00CA
+% U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS; Edieresis
+\DeclareTextCompositeCommand{\"}{PU}{E}{\80\313}% U+00CB
+% U+00CC LATIN CAPITAL LETTER I WITH GRAVE; Igrave
+\DeclareTextCompositeCommand{\`}{PU}{I}{\80\314}% U+00CC
+% U+00CD LATIN CAPITAL LETTER I WITH ACUTE; Iacute
+\DeclareTextCompositeCommand{\'}{PU}{I}{\80\315}% U+00CD
+% U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX; Icircumflex
+\DeclareTextCompositeCommand{\^}{PU}{I}{\80\316}% U+00CE
+% U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS; Idieresis
+\DeclareTextCompositeCommand{\"}{PU}{I}{\80\317}% U+00CF
+% U+00D0 LATIN CAPITAL LETTER ETH; Eth
+\DeclareTextCommand{\DH}{PU}{\80\320}% U+00D0
+% U+00D1 LATIN CAPITAL LETTER N WITH TILDE; Ntilde
+\DeclareTextCompositeCommand{\~}{PU}{N}{\80\321}% U+00D1
+% U+00D2 LATIN CAPITAL LETTER O WITH GRAVE; Ograve
+\DeclareTextCompositeCommand{\`}{PU}{O}{\80\322}% U+00D2
+% U+00D3 LATIN CAPITAL LETTER O WITH ACUTE; Oacute
+\DeclareTextCompositeCommand{\'}{PU}{O}{\80\323}% U+00D3
+% U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX; Ocircumflex
+\DeclareTextCompositeCommand{\^}{PU}{O}{\80\324}% U+00D4
+% U+00D5 LATIN CAPITAL LETTER O WITH TILDE; Otilde
+\DeclareTextCompositeCommand{\~}{PU}{O}{\80\325}% U+00D5
+% U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS; Odieresis
+\DeclareTextCompositeCommand{\"}{PU}{O}{\80\326}% U+00D6
+% U+00D7 MULTIPLICATION SIGN; multiply
+\DeclareTextCommand{\textmultiply}{PU}{\80\327}% U+00D7
+%* \textmultiply -> \vartimes (stmaryrd)
+%* \textmultiply -> \MVMultiplication (marvosym)
+% U+00D8 LATIN CAPITAL LETTER O WITH STROKE; Oslash
+\DeclareTextCommand{\O}{PU}{\80\330}% U+00D8
+% U+00D9 LATIN CAPITAL LETTER U WITH GRAVE; Ugrave
+\DeclareTextCompositeCommand{\`}{PU}{U}{\80\331}% U+00D9
+% U+00DA LATIN CAPITAL LETTER U WITH ACUTE; Uacute
+\DeclareTextCompositeCommand{\'}{PU}{U}{\80\332}% U+00DA
+% U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX; Ucircumflex
+\DeclareTextCompositeCommand{\^}{PU}{U}{\80\333}% U+00DB
+% U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS; Udieresis
+\DeclareTextCompositeCommand{\"}{PU}{U}{\80\334}% U+00DC
+% U+00DD LATIN CAPITAL LETTER Y WITH ACUTE; Yacute
+\DeclareTextCompositeCommand{\'}{PU}{Y}{\80\335}% U+00DD
+% U+00DE LATIN CAPITAL LETTER THORN; Thorn; \TH, \Thorn (wasysym)
+\DeclareTextCommand{\TH}{PU}{\80\336}% U+00DE
+\DeclareTextCommand{\textThorn}{PU}{\80\336}%* U+00DE
+% U+00DF LATIN SMALL LETTER SHARP S; germandbls
+\DeclareTextCommand{\ss}{PU}{\80\337}% U+00DF
+% U+00E0 LATIN SMALL LETTER A WITH GRAVE; agrave
+\DeclareTextCompositeCommand{\`}{PU}{a}{\80\340}% U+00E0
+% U+00E1 LATIN SMALL LETTER A WITH ACUTE; aacute
+\DeclareTextCompositeCommand{\'}{PU}{a}{\80\341}% U+00E1
+% U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX; acircumflex
+\DeclareTextCompositeCommand{\^}{PU}{a}{\80\342}% U+00E2
+% U+00E3 LATIN SMALL LETTER A WITH TILDE; atilde
+\DeclareTextCompositeCommand{\~}{PU}{a}{\80\343}% U+00E3
+% U+00E4 LATIN SMALL LETTER A WITH DIAERESIS; adieresis
+\DeclareTextCompositeCommand{\"}{PU}{a}{\80\344}% U+00E4
+% U+00E5 LATIN SMALL LETTER A WITH RING ABOVE; aring
+\DeclareTextCompositeCommand{\r}{PU}{a}{\80\345}% U+00E5
+% U+00E6 LATIN SMALL LETTER AE; ae
+\DeclareTextCommand{\ae}{PU}{\80\346}% U+00E6
+% U+00E7 LATIN SMALL LETTER C WITH CEDILLA; ccedilla
+\DeclareTextCompositeCommand{\c}{PU}{c}{\80\347}% U+00E7
+% U+00E8 LATIN SMALL LETTER E WITH GRAVE; egrave
+\DeclareTextCompositeCommand{\`}{PU}{e}{\80\350}% U+00E8
+% U+00E9 LATIN SMALL LETTER E WITH ACUTE; eacute
+\DeclareTextCompositeCommand{\'}{PU}{e}{\80\351}% U+00E9
+% U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX; ecircumflex
+\DeclareTextCompositeCommand{\^}{PU}{e}{\80\352}% U+00EA
+% U+00EB LATIN SMALL LETTER E WITH DIAERESIS; edieresis
+\DeclareTextCompositeCommand{\"}{PU}{e}{\80\353}% U+00EB
+% U+00EC LATIN SMALL LETTER I WITH GRAVE; igrave
+\DeclareTextCompositeCommand{\`}{PU}{i}{\80\354}% U+00EC
+\DeclareTextCompositeCommand{\`}{PU}{\i}{\80\354}% U+00EC
+% U+00ED LATIN SMALL LETTER I WITH ACUTE; iacute
+\DeclareTextCompositeCommand{\'}{PU}{i}{\80\355}% U+00ED
+\DeclareTextCompositeCommand{\'}{PU}{\i}{\80\355}% U+00ED
+% U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX; icircumflex
+\DeclareTextCompositeCommand{\^}{PU}{i}{\80\356}% U+00EE
+\DeclareTextCompositeCommand{\^}{PU}{\i}{\80\356}% U+00EE
+% U+00EF LATIN SMALL LETTER I WITH DIAERESIS; idieresis
+\DeclareTextCompositeCommand{\"}{PU}{i}{\80\357}% U+00EF
+\DeclareTextCompositeCommand{\"}{PU}{\i}{\80\357}% U+00EF
+% U+00F0 LATIN SMALL LETTER ETH; eth
+\DeclareTextCommand{\dh}{PU}{\80\360}% U+00F0
+%* \dh -> \eth (wsuipa, phonetic)
+% U+00F1 LATIN SMALL LETTER N WITH TILDE; ntilde
+\DeclareTextCompositeCommand{\~}{PU}{n}{\80\361}% U+00F1
+% U+00F2 LATIN SMALL LETTER O WITH GRAVE; ograve
+\DeclareTextCompositeCommand{\`}{PU}{o}{\80\362}% U+00F2
+% U+00F3 LATIN SMALL LETTER O WITH ACUTE; oacute
+\DeclareTextCompositeCommand{\'}{PU}{o}{\80\363}% U+00F3
+% U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX; ocircumflex
+\DeclareTextCompositeCommand{\^}{PU}{o}{\80\364}% U+00F4
+% U+00F5 LATIN SMALL LETTER O WITH TILDE; otilde
+\DeclareTextCompositeCommand{\~}{PU}{o}{\80\365}% U+00F5
+% U+00F6 LATIN SMALL LETTER O WITH DIAERESIS; odieresis
+\DeclareTextCompositeCommand{\"}{PU}{o}{\80\366}% U+00F6
+% U+00F7 DIVISION SIGN; divide
+\DeclareTextCommand{\textdivide}{PU}{\80\367}% U+00F7
+% U+00F8 LATIN SMALL LETTER O WITH STROKE; oslash
+\DeclareTextCommand{\o}{PU}{\80\370}% U+00F8
+% U+00F9 LATIN SMALL LETTER U WITH GRAVE; ugrave
+\DeclareTextCompositeCommand{\`}{PU}{u}{\80\371}% U+00F9
+% U+00FA LATIN SMALL LETTER U WITH ACUTE; uacute
+\DeclareTextCompositeCommand{\'}{PU}{u}{\80\372}% U+00FA
+% U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX; ucircumflex
+\DeclareTextCompositeCommand{\^}{PU}{u}{\80\373}% U+00FB
+% U+00FC LATIN SMALL LETTER U WITH DIAERESIS; udieresis
+\DeclareTextCompositeCommand{\"}{PU}{u}{\80\374}% U+00FC
+% U+00FD LATIN SMALL LETTER Y WITH ACUTE; yacute
+\DeclareTextCompositeCommand{\'}{PU}{y}{\80\375}% U+00FD
+% U+00FE LATIN SMALL LETTER THORN; thorn;
+% \th, \thorn (wasysym), \textthorn (tipa)
+\DeclareTextCommand{\th}{PU}{\80\376}% U+00FE
+\DeclareTextCommand{\textthorn}{PU}{\80\376}%* U+00FE
+% U+00FF LATIN SMALL LETTER Y WITH DIAERESIS; ydieresis
+\DeclareTextCompositeCommand{\"}{PU}{y}{\80\377}% U+00FF
+% \end{macrocode}
+%
+% \subsubsection{Latin Extended-A: U+0080 to U+017F}
+%
+% \begin{macrocode}
+% U+0100 LATIN CAPITAL LETTER A WITH MACRON; Amacron
+\DeclareTextCompositeCommand{\=}{PU}{A}{\81\000}% U+0100
+% U+0101 LATIN SMALL LETTER A WITH MACRON; amacron
+\DeclareTextCompositeCommand{\=}{PU}{a}{\81\001}% U+0101
+% U+0102 LATIN CAPITAL LETTER A WITH BREVE; Abreve
+\DeclareTextCompositeCommand{\u}{PU}{A}{\81\002}% U+0102
+% U+0103 LATIN SMALL LETTER A WITH BREVE; abreve
+\DeclareTextCompositeCommand{\u}{PU}{a}{\81\003}% U+0103
+% U+0104 LATIN CAPITAL LETTER A WITH OGONEK; Aogonek
+\DeclareTextCompositeCommand{\k}{PU}{A}{\81\004}% U+0104
+% U+0105 LATIN SMALL LETTER A WITH OGONEK; aogonek
+\DeclareTextCompositeCommand{\k}{PU}{a}{\81\005}% U+0105
+% U+0106 LATIN CAPITAL LETTER C WITH ACUTE; Cacute
+\DeclareTextCompositeCommand{\'}{PU}{C}{\81\006}% U+0106
+% U+0107 LATIN SMALL LETTER C WITH ACUTE; cacute
+\DeclareTextCompositeCommand{\'}{PU}{c}{\81\007}% U+0107
+% U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX; Ccircumflex
+\DeclareTextCompositeCommand{\^}{PU}{C}{\81\010}% U+0108
+% U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX; ccircumflex
+\DeclareTextCompositeCommand{\^}{PU}{c}{\81\011}% U+0109
+% U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE; Cdot, Cdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{C}{\81\012}% U+010A
+% U+010B LATIN SMALL LETTER C WITH DOT ABOVE; cdot, cdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{c}{\81\013}% U+010B
+% U+010C LATIN CAPITAL LETTER C WITH CARON; Ccaron
+\DeclareTextCompositeCommand{\v}{PU}{C}{\81\014}% U+010C
+% U+010D LATIN SMALL LETTER C WITH CARON; ccaron
+\DeclareTextCompositeCommand{\v}{PU}{c}{\81\015}% U+010D
+% U+010E LATIN CAPITAL LETTER D WITH CARON; Dcaron
+\DeclareTextCompositeCommand{\v}{PU}{D}{\81\016}% U+010E
+% U+010F LATIN SMALL LETTER D WITH CARON; dcaron
+\DeclareTextCompositeCommand{\v}{PU}{d}{\81\017}% U+010F
+% U+0110 LATIN CAPITAL LETTER D WITH STROKE; Dcroat, Dslash
+\DeclareTextCommand{\DJ}{PU}{\81\020}% U+0110
+% U+0111 LATIN SMALL LETTER D WITH STROKE; dcroat, dmacron;
+% \textcrd (tipa)
+\DeclareTextCommand{\dj}{PU}{\81\021}% U+0111
+\DeclareTextCommand{\textcrd}{PU}{\81\021}% U+0111
+%* \textcrd -> \crossd (wsuipa)
+% An alternate glyph with the stroke through the bowl:
+%* \textcrd -> \textbard (tipa)
+%* \textcrd -> \bard (wsuipa)
+% U+0112 LATIN CAPITAL LETTER E WITH MACRON; Emacron
+\DeclareTextCompositeCommand{\=}{PU}{E}{\81\022}% U+0112
+% U+0113 LATIN SMALL LETTER E WITH MACRON; emacron
+\DeclareTextCompositeCommand{\=}{PU}{e}{\81\023}% U+0113
+% U+0114 LATIN CAPITAL LETTER E WITH BREVE; Ebreve
+\DeclareTextCompositeCommand{\u}{PU}{E}{\81\024}% U+0114
+% U+0115 LATIN SMALL LETTER E WITH BREVE; ebreve
+\DeclareTextCompositeCommand{\u}{PU}{e}{\81\025}% U+0115
+% U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE; Edot, Edotaccent
+\DeclareTextCompositeCommand{\.}{PU}{E}{\81\026}% U+0116
+% U+0117 LATIN SMALL LETTER E WITH DOT ABOVE; edot, edotaccent
+\DeclareTextCompositeCommand{\.}{PU}{e}{\81\027}% U+0117
+% U+0118 LATIN CAPITAL LETTER E WITH OGONEK; Eogonek
+\DeclareTextCompositeCommand{\k}{PU}{E}{\81\030}% U+0118
+% U+0119 LATIN SMALL LETTER E WITH OGONEK; eogonek
+\DeclareTextCompositeCommand{\k}{PU}{e}{\81\031}% U+0119
+% U+011A LATIN CAPITAL LETTER E WITH CARON; Ecaron
+\DeclareTextCompositeCommand{\v}{PU}{E}{\81\032}% U+011A
+% U+011B LATIN SMALL LETTER E WITH CARON; ecaron
+\DeclareTextCompositeCommand{\v}{PU}{e}{\81\033}% U+011B
+% U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX; Gcircumflex
+\DeclareTextCompositeCommand{\^}{PU}{G}{\81\034}% U+011C
+% U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX; gcircumflex
+\DeclareTextCompositeCommand{\^}{PU}{g}{\81\035}% U+011D
+% U+011E LATIN CAPITAL LETTER G WITH BREVE; Gbreve
+\DeclareTextCompositeCommand{\u}{PU}{G}{\81\036}% U+011E
+% U+011F LATIN SMALL LETTER G WITH BREVE; gbreve
+\DeclareTextCompositeCommand{\u}{PU}{g}{\81\037}% U+011F
+% U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE; Gdot, Gdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{G}{\81\040}% U+0120
+% U+0121 LATIN SMALL LETTER G WITH DOT ABOVE; gdot, gdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{g}{\81\041}% U+0121
+% U+0122 LATIN CAPITAL LETTER G WITH CEDILLA; Gcedilla, Gcommaaccent
+\DeclareTextCompositeCommand{\c}{PU}{G}{\81\042}% U+0122
+% U+0123 LATIN SMALL LETTER G WITH CEDILLA; gcedilla, gcommaaccent
+\DeclareTextCompositeCommand{\c}{PU}{g}{\81\043}% U+0123
+% U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX; Hcircumflex
+\DeclareTextCompositeCommand{\^}{PU}{H}{\81\044}% U+0124
+% U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX; hcircumflex
+\DeclareTextCompositeCommand{\^}{PU}{h}{\81\045}% U+0125
+% U+0126 LATIN CAPITAL LETTER H WITH STROKE; Hbar
+\DeclareTextCommand{\textHslash}{PU}{\81\046}% U+0126
+% U+0127 LATIN SMALL LETTER H WITH STROKE; hbar; \hbar (AmS)
+\DeclareTextCommand{\texthbar}{PU}{\81\047}%* U+0127
+%* \texthbar -> \textcrh (tipa)
+%* \texthbar -> \crossh (wsuipa)
+%* \texthbar -> \planck (phonetic)
+% U+0128 LATIN CAPITAL LETTER I WITH TILDE; Itilde
+\DeclareTextCompositeCommand{\~}{PU}{I}{\81\050}% U+0128
+% U+0129 LATIN SMALL LETTER I WITH TILDE; itilde
+\DeclareTextCompositeCommand{\~}{PU}{i}{\81\051}% U+0129
+\DeclareTextCompositeCommand{\~}{PU}{\i}{\81\051}% U+0129
+% U+012A LATIN CAPITAL LETTER I WITH MACRON; Imacron
+\DeclareTextCompositeCommand{\=}{PU}{I}{\81\052}% U+012A
+% U+012B LATIN SMALL LETTER I WITH MACRON; imacron
+\DeclareTextCompositeCommand{\=}{PU}{i}{\81\053}% U+012B
+\DeclareTextCompositeCommand{\=}{PU}{\i}{\81\053}% U+012B
+% U+012C LATIN CAPITAL LETTER I WITH BREVE; Ibreve
+\DeclareTextCompositeCommand{\u}{PU}{I}{\81\054}% U+012C
+% U+012D LATIN SMALL LETTER I WITH BREVE; ibreve
+\DeclareTextCompositeCommand{\u}{PU}{i}{\81\055}% U+012D
+\DeclareTextCompositeCommand{\u}{PU}{\i}{\81\055}% U+012D
+% U+012E LATIN CAPITAL LETTER I WITH OGONEK; Iogonek
+\DeclareTextCompositeCommand{\k}{PU}{I}{\81\056}% U+012E
+% U+012F LATIN SMALL LETTER I WITH OGONEK; iogonek
+\DeclareTextCompositeCommand{\k}{PU}{i}{\81\057}% U+012F
+\DeclareTextCompositeCommand{\k}{PU}{\i}{\81\057}% U+012F
+% U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE; Idot, Idotaccent
+\DeclareTextCompositeCommand{\.}{PU}{I}{\81\060}% U+0130
+% U+0131 LATIN SMALL LETTER DOTLESS I; dotlessi
+\DeclareTextCommand{\i}{PU}{\81\061}% U+0131
+% U+0132 LATIN CAPITAL LIGATURE IJ; IJ
+\DeclareTextCommand{\IJ}{PU}{\81\062}% U+0132
+% U+0133 LATIN SMALL LIGATURE IJ; ij
+\DeclareTextCommand{\ij}{PU}{\81\063}% U+0133
+% U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX; Jcircumflex
+\DeclareTextCompositeCommand{\^}{PU}{J}{\81\064}% U+0134
+% U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX; jcircumflex
+\DeclareTextCompositeCommand{\^}{PU}{j}{\81\065}% U+0135
+\DeclareTextCompositeCommand{\^}{PU}{\j}{\81\065}% U+0135
+% U+0136 LATIN CAPITAL LETTER K WITH CEDILLA; Kcedilla, Kcommaaccent
+\DeclareTextCompositeCommand{\c}{PU}{K}{\81\066}% U+0136
+% U+0137 LATIN SMALL LETTER K WITH CEDILLA; kcedilla, kcommaaccent
+\DeclareTextCompositeCommand{\c}{PU}{k}{\81\067}% U+0137
+% \end{macrocode}
+% The canonical name of U+0138, small letter kra, would be
+% \cs{textkgreenlandic}, following the glyph naming convention.
+% However |latex/base/inputenc.dtx| has choosen \cs{textkra}.
+% \begin{macrocode}
+% U+0138 LATIN SMALL LETTER KRA; kgreenlandic
+\DeclareTextCommand{\textkra}{PU}{\81\070}% U+0138
+% U+0139 LATIN CAPITAL LETTER L WITH ACUTE; Lacute
+\DeclareTextCompositeCommand{\'}{PU}{L}{\81\071}% U+0139
+% U+013A LATIN SMALL LETTER L WITH ACUTE; lacute
+\DeclareTextCompositeCommand{\'}{PU}{l}{\81\072}% U+013A
+% U+013B LATIN CAPITAL LETTER L WITH CEDILLA; Lcedilla, Lcommaaccent
+\DeclareTextCompositeCommand{\c}{PU}{L}{\81\073}% U+013B
+% U+013C LATIN SMALL LETTER L WITH CEDILLA; lcedilla, lcommaaccent
+\DeclareTextCompositeCommand{\c}{PU}{l}{\81\074}% U+013C
+% U+013D LATIN CAPITAL LETTER L WITH CARON; Lcaron
+\DeclareTextCompositeCommand{\v}{PU}{L}{\81\075}% U+013D
+% U+013E LATIN SMALL LETTER L WITH CARON; lcaron
+\DeclareTextCompositeCommand{\v}{PU}{l}{\81\076}% U+013E
+% \end{macrocode}
+% There seems to be no variants of letters `L' and `l' with
+% a dot above (reasonable). Therefore the \cs{.} accent
+% is reused instead of making a separate accent macro
+% \cs{textmiddledot}.
+% \begin{macrocode}
+% U+013F LATIN CAPITAL LETTER L WITH MIDDLE DOT; Ldot, Ldotaccent
+\DeclareTextCompositeCommand{\.}{PU}{L}{\81\077}% U+013F
+% U+0140 LATIN SMALL LETTER L WITH MIDDLE DOT; ldot, ldotaccent
+\DeclareTextCompositeCommand{\.}{PU}{l}{\81\100}% U+0140
+% U+0141 LATIN CAPITAL LETTER L WITH STROKE; Lslash
+\DeclareTextCommand{\L}{PU}{\81\101}% U+0141
+% U+0142 LATIN SMALL LETTER L WITH STROKE; lslash
+\DeclareTextCommand{\l}{PU}{\81\102}% U+0142
+% U+0143 LATIN CAPITAL LETTER N WITH ACUTE; Nacute
+\DeclareTextCompositeCommand{\'}{PU}{N}{\81\103}% U+0143
+% U+0144 LATIN SMALL LETTER N WITH ACUTE; nacute
+\DeclareTextCompositeCommand{\'}{PU}{n}{\81\104}% U+0144
+% U+0145 LATIN CAPITAL LETTER N WITH CEDILLA; Ncedilla, Ncommaaccent
+\DeclareTextCompositeCommand{\c}{PU}{N}{\81\105}% U+0145
+% U+0146 LATIN SMALL LETTER N WITH CEDILLA; ncedilla, ncommaaccent
+\DeclareTextCompositeCommand{\c}{PU}{n}{\81\106}% U+0146
+% U+0147 LATIN CAPITAL LETTER N WITH CARON; Ncaron
+\DeclareTextCompositeCommand{\v}{PU}{N}{\81\107}% U+0147
+% U+0148 LATIN SMALL LETTER N WITH CARON; ncaron
+\DeclareTextCompositeCommand{\v}{PU}{n}{\81\110}% U+0148
+% U+0149 LATIN SMALL LETTER N PRECEDED BY APOSTROPHE; napostrophe, quoterightn
+\DeclareTextCommand{\textnapostrophe}{PU}{\81\111}% U+0149
+% U+014A LATIN CAPITAL LETTER ENG; Eng
+\DeclareTextCommand{\NG}{PU}{\81\112}% U+014A
+% U+014B LATIN SMALL LETTER ENG; eng
+\DeclareTextCommand{\ng}{PU}{\81\113}% U+014B
+%* \ng -> \eng (wsuipa)
+%* \ng -> \engma (phonetic)
+% U+014C LATIN CAPITAL LETTER O WITH MACRON; Omacron
+\DeclareTextCompositeCommand{\=}{PU}{O}{\81\114}% U+014C
+% U+014D LATIN SMALL LETTER O WITH MACRON; omacron
+\DeclareTextCompositeCommand{\=}{PU}{o}{\81\115}% U+014D
+% U+014E LATIN CAPITAL LETTER O WITH BREVE; Obreve
+\DeclareTextCompositeCommand{\u}{PU}{O}{\81\116}% U+014E
+% U+014F LATIN SMALL LETTER O WITH BREVE; obreve
+\DeclareTextCompositeCommand{\u}{PU}{o}{\81\117}% U+014F
+% U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE; Odblacute, Ohungarumlaut
+\DeclareTextCompositeCommand{\H}{PU}{O}{\81\120}% U+0150
+% U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE; odblacute, ohungarumlaut
+\DeclareTextCompositeCommand{\H}{PU}{o}{\81\121}% U+0151
+% U+0152 LATIN CAPITAL LIGATURE OE; OE
+\DeclareTextCommand{\OE}{PU}{\81\122}% U+0152
+% U+0153 LATIN SMALL LIGATURE OE; oe
+\DeclareTextCommand{\oe}{PU}{\81\123}% U+0153
+% U+0154 LATIN CAPITAL LETTER R WITH ACUTE; Racute
+\DeclareTextCompositeCommand{\'}{PU}{R}{\81\124}% U+0154
+% U+0155 LATIN SMALL LETTER R WITH ACUTE; racute
+\DeclareTextCompositeCommand{\'}{PU}{r}{\81\125}% U+0155
+% U+0156 LATIN CAPITAL LETTER R WITH CEDILLA; Rcedilla, Rcommaaccent
+\DeclareTextCompositeCommand{\c}{PU}{R}{\81\126}% U+0156
+% U+0157 LATIN SMALL LETTER R WITH CEDILLA; rcedilla, rcommaaccent
+\DeclareTextCompositeCommand{\c}{PU}{r}{\81\127}% U+0157
+% U+0158 LATIN CAPITAL LETTER R WITH CARON; Rcaron
+\DeclareTextCompositeCommand{\v}{PU}{R}{\81\130}% U+0158
+% U+0159 LATIN SMALL LETTER R WITH CARON; rcaron
+\DeclareTextCompositeCommand{\v}{PU}{r}{\81\131}% U+0159
+% U+015A LATIN CAPITAL LETTER S WITH ACUTE; Sacute
+\DeclareTextCompositeCommand{\'}{PU}{S}{\81\132}% U+015A
+% U+015B LATIN SMALL LETTER S WITH ACUTE; sacute
+\DeclareTextCompositeCommand{\'}{PU}{s}{\81\133}% U+015B
+% U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX; Scircumflex
+\DeclareTextCompositeCommand{\^}{PU}{S}{\81\134}% U+015C
+% U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX; scircumflex
+\DeclareTextCompositeCommand{\^}{PU}{s}{\81\135}% U+015D
+% U+015E LATIN CAPITAL LETTER S WITH CEDILLA; Scedilla
+\DeclareTextCompositeCommand{\c}{PU}{S}{\81\136}% U+015E
+% U+015F LATIN SMALL LETTER S WITH CEDILLA; scedilla
+\DeclareTextCompositeCommand{\c}{PU}{s}{\81\137}% U+015F
+% U+0160 LATIN CAPITAL LETTER S WITH CARON; Scaron
+\DeclareTextCompositeCommand{\v}{PU}{S}{\81\140}% U+0160
+% U+0161 LATIN SMALL LETTER S WITH CARON; scaron
+\DeclareTextCompositeCommand{\v}{PU}{s}{\81\141}% U+0161
+% U+0162 LATIN CAPITAL LETTER T WITH CEDILLA; Tcedilla, Tcommaaccent
+\DeclareTextCompositeCommand{\c}{PU}{T}{\81\142}% U+0162
+% U+0163 LATIN SMALL LETTER T WITH CEDILLA; tcedilla, tcommaaccent
+\DeclareTextCompositeCommand{\c}{PU}{t}{\81\143}% U+0163
+% U+0164 LATIN CAPITAL LETTER T WITH CARON; Tcaron
+\DeclareTextCompositeCommand{\v}{PU}{T}{\81\144}% U+0164
+% U+0165 LATIN SMALL LETTER T WITH CARON; tcaron
+\DeclareTextCompositeCommand{\v}{PU}{t}{\81\145}% U+0165
+% U+0166 LATIN CAPITAL LETTER T WITH STROKE; Tbar
+\DeclareTextCommand{\textTslash}{PU}{\81\146}% U+0166
+% U+0167 LATIN SMALL LETTER T WITH STROKE; tbar
+\DeclareTextCommand{\texttslash}{PU}{\81\147}% U+0167
+% U+0168 LATIN CAPITAL LETTER U WITH TILDE; Utilde
+\DeclareTextCompositeCommand{\~}{PU}{U}{\81\150}% U+0168
+% U+0169 LATIN SMALL LETTER U WITH TILDE; utilde
+\DeclareTextCompositeCommand{\~}{PU}{u}{\81\151}% U+0169
+% U+016A LATIN CAPITAL LETTER U WITH MACRON; Umacron
+\DeclareTextCompositeCommand{\=}{PU}{U}{\81\152}% U+016A
+% U+016B LATIN SMALL LETTER U WITH MACRON; umacron
+\DeclareTextCompositeCommand{\=}{PU}{u}{\81\153}% U+016B
+% U+016C LATIN CAPITAL LETTER U WITH BREVE; Ubreve
+\DeclareTextCompositeCommand{\u}{PU}{U}{\81\154}% U+016C
+% U+016D LATIN SMALL LETTER U WITH BREVE; ubreve
+\DeclareTextCompositeCommand{\u}{PU}{u}{\81\155}% U+016D
+% U+016E LATIN CAPITAL LETTER U WITH RING ABOVE; Uring
+\DeclareTextCompositeCommand{\r}{PU}{U}{\81\156}% U+016E
+% U+016F LATIN SMALL LETTER U WITH RING ABOVE; uring
+\DeclareTextCompositeCommand{\r}{PU}{u}{\81\157}% U+016F
+% U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE; Udblacute, Uhungarumlaut
+\DeclareTextCompositeCommand{\H}{PU}{U}{\81\160}% U+0170
+% U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE; udblacute, uhungarumlaut
+\DeclareTextCompositeCommand{\H}{PU}{u}{\81\161}% U+0171
+% U+0172 LATIN CAPITAL LETTER U WITH OGONEK; Uogonek
+\DeclareTextCompositeCommand{\k}{PU}{U}{\81\162}% U+0172
+% U+0173 LATIN SMALL LETTER U WITH OGONEK; uogonek
+\DeclareTextCompositeCommand{\k}{PU}{u}{\81\163}% U+0173
+% U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX; Wcircumflex
+\DeclareTextCompositeCommand{\^}{PU}{W}{\81\164}% U+0174
+% U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX; wcircumflex
+\DeclareTextCompositeCommand{\^}{PU}{w}{\81\165}% U+0175
+% U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX; Ycircumflex
+\DeclareTextCompositeCommand{\^}{PU}{Y}{\81\166}% U+0176
+% U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX; ycircumflex
+\DeclareTextCompositeCommand{\^}{PU}{y}{\81\167}% U+0177
+% U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS; Ydieresis
+\DeclareTextCompositeCommand{\"}{PU}{Y}{\81\170}% U+0178
+% U+0179 LATIN CAPITAL LETTER Z WITH ACUTE; Zacute
+\DeclareTextCompositeCommand{\'}{PU}{Z}{\81\171}% U+0179
+% U+017A LATIN SMALL LETTER Z WITH ACUTE; zacute
+\DeclareTextCompositeCommand{\'}{PU}{z}{\81\172}% U+017A
+% U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE; Zdot, Zdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{Z}{\81\173}% U+017B
+% U+017C LATIN SMALL LETTER Z WITH DOT ABOVE; zdot, zdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{z}{\81\174}% U+017C
+% U+017D LATIN CAPITAL LETTER Z WITH CARON; Zcaron
+\DeclareTextCompositeCommand{\v}{PU}{Z}{\81\175}% U+017D
+% U+017E LATIN SMALL LETTER Z WITH CARON; zcaron
+\DeclareTextCompositeCommand{\v}{PU}{z}{\81\176}% U+017E
+% U+017F LATIN SMALL LETTER LONG S; longs, slong
+\DeclareTextCommand{\textlongs}{PU}{\81\177}% U+017F
+% \end{macrocode}
+%
+% \subsubsection{Latin Extended-B: U+0180 to U+024F}
+%
+% \begin{macrocode}
+% U+0180 LATIN SMALL LETTER B WITH STROKE; bstroke; \textcrb (tipa)
+\DeclareTextCommand{\textcrb}{PU}{\81\200}% U+0180
+%* \textcrb -> \crossb (wsuipa)
+% An alternate glyph with the stroke through the bowl:
+%* \textcrb -> \textbarb (tipa)
+%* \textcrb -> \barb (wsuipa)
+% U+0181 LATIN CAPITAL LETTER B WITH HOOK; Bhook; \hausaB (phonetic)
+\DeclareTextCommand{\texthausaB}{PU}{\81\201}%* U+0181
+% U+0188 LATIN SMALL LETTER C WITH HOOK; chook; \texthtc (tipa)
+\DeclareTextCommand{\texthtc}{PU}{\81\210}% U+0188
+% U+018A LATIN CAPITAL LETTER D WITH HOOK; Dhook; \hausaD (phonetic)
+\DeclareTextCommand{\texthausaD}{PU}{\81\212}%* U+018A
+% U+018E LATIN CAPITAL LETTER REVERSED E; Ereversed
+\DeclareTextCommand{\textEreversed}{PU}{\81\216}% U+018E
+\DeclareTextCommand{\textrevE}{PU}{\81\216}% U+018E
+% U+0192 LATIN SMALL LETTER F WITH HOOK; florin
+\DeclareTextCommand{\textflorin}{PU}{\81\222}% U+0192
+%* \textflorin -> \Florin (marvosym)
+% U+0195 LATIN SMALL LETTER HV; hv; \texthvlig (tipa)
+\DeclareTextCommand{\texthvlig}{PU}{\81\225}% U+0195
+%* \texthvlig -> \hv (wsuipa)
+% U+0198 LATIN CAPITAL LETTER K WITH HOOK; Khook; \hausaK (phonetic)
+\DeclareTextCommand{\texthausaK}{PU}{\81\230}%* U+0198
+% U+0199 LATIN SMALL LETTER K WITH HOOK; khook; \texthtk (tipa)
+\DeclareTextCommand{\texthtk}{PU}{\81\231}% U+0199
+%* \texthtk -> \hausak (phonetic)
+% U+019A LATIN SMALL LETTER L WITH BAR; lbar;
+% \textbarl (tipa), \barl (wsuipa)
+\DeclareTextCommand{\textbarl}{PU}{\81\232}%* U+019A
+% U+019B LATIN SMALL LETTER LAMBDA WITH STROKE/
+% LATIN SMALL LETTER BARRED LAMBDA; lambdastroke;
+% \textcrlambda (tipa)
+\DeclareTextCommand{\textcrlambda}{PU}{\81\233}% U+019B
+%* \textcrlambda -> \crossnilambda (wsuipa)
+%* \textcrlambda -> \barlambda (phonetic)
+%* \textcrlambda -> \lambdabar (txfonts/pxfonts)
+%* \textcrlambda -> \lambdaslash (txfonts/pxfonts)
+% U+019E LATIN SMALL LETTER N WITH LONG RIGHT LEG; nlegrightlong;
+% \textnrleg (tipx)
+\DeclareTextCommand{\textPUnrleg}{PU}{\81\236}% U+019E
+%* \textPUnrleg -> \textnrleg (tipx)
+% U+01A5 LATIN SMALL LETTER P WITH HOOK; phook; \texthtp (tipa)
+\DeclareTextCommand{\texthtp}{PU}{\81\245}% U+01A5
+% U+01AB LATIN SMALL LETTER T WITH PALATAL HOOK; tpalatalhook;
+% \textlhookt (tipa)
+\DeclareTextCommand{\textlhookt}{PU}{\81\253}% U+01AB
+% U+01AD LATIN SMALL LETTER T WITH HOOK; thook; \texthtt (tipa)
+\DeclareTextCommand{\texthtt}{PU}{\81\255}% U+01AD
+% U+01B9 LATIN SMALL LETTER EZH REVERSED/
+% LATIN SMALL LETTER REVERSED YOGH; \textrevyogh (tipa)
+\DeclareTextCommand{\textrevyogh}{PU}{\81\271}% U+01B9
+% U+01BB LATIN LETTER TWO WITH STROKE; twostroke; \textcrtwo (tipa)
+\DeclareTextCommand{\textcrtwo}{PU}{\81\273}% U+01BB
+% U+01BE LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;
+% glottalinvertedstroke; \textcrinvglotstop (tipa)
+\DeclareTextCommand{\textcrinvglotstop}{PU}{\81\276}% U+01BE
+% U+01BF LATIN LETTER WYNN; wynn; \textwynn (tipa)
+\DeclareTextCommand{\textwynn}{PU}{\81\277}% U+01BF
+% U+01C0 LATIN LETTER DENTAL CLICK/LATIN LETTER PIPE; clickdental;
+% \textpipe (tipa)
+\DeclareTextCommand{\textpipe}{PU}{\81\300}% U+01C0
+%* \textpipe -> \textpipevar (tipx)
+% U+01C1 LATIN LETTER LATERAL CLICK/LATIN LETTER
+% DOUBLE PIPE; clicklateral; \textdoublepipe (tipa)
+\DeclareTextCommand{\textdoublepipe}{PU}{\81\301}% U+01C1
+%* \textdoublepipe -> \textdoublepipevar (tipx)
+% U+01C2 LATIN LETTER ALVEOLAR CLICK/LATIN LETTER PIPE DOUBLE BAR;
+% clickalveolar; \textdoublebarpipe (tipa)
+\DeclareTextCommand{\textdoublebarpipe}{PU}{\81\302}% U+01C2
+%* \textdoublebarpipe -> \textdoublebarpipevar (tipx)
+% U+01CD LATIN CAPITAL LETTER A WITH CARON; Acaron
+\DeclareTextCompositeCommand{\v}{PU}{A}{\81\315}% U+01CD
+% U+01CE LATIN SMALL LETTER A WITH CARON; acaron
+\DeclareTextCompositeCommand{\v}{PU}{a}{\81\316}% U+01CE
+% U+01CF LATIN CAPITAL LETTER I WITH CARON; Icaron
+\DeclareTextCompositeCommand{\v}{PU}{I}{\81\317}% U+01CF
+% U+01D0 LATIN SMALL LETTER I WITH CARON; icaron
+\DeclareTextCompositeCommand{\v}{PU}{\i}{\81\320}% U+01D0
+\DeclareTextCompositeCommand{\v}{PU}{i}{\81\320}% U+01D0
+% U+01D1 LATIN CAPITAL LETTER O WITH CARON; Ocaron
+\DeclareTextCompositeCommand{\v}{PU}{O}{\81\321}% U+01D1
+% U+01D2 LATIN SMALL LETTER O WITH CARON; ocaron
+\DeclareTextCompositeCommand{\v}{PU}{o}{\81\322}% U+01D2
+% U+01D3 LATIN CAPITAL LETTER U WITH CARON; Ucaron
+\DeclareTextCompositeCommand{\v}{PU}{U}{\81\323}% U+01D3
+% U+01D4 LATIN SMALL LETTER U WITH CARON; ucaron
+\DeclareTextCompositeCommand{\v}{PU}{u}{\81\324}% U+01D4
+% U+01DD LATIN SMALL LETTER TURNED E; eturned; \inve (wasysym)
+\DeclareTextCommand{\textinve}{PU}{\81\335}%* U+01DD
+% U+01E4 LATIN CAPITAL LETTER G WITH STROKE; Gstroke
+\DeclareTextCommand{\textGslash}{PU}{\81\344}% U+01E4
+% U+01E5 LATIN SMALL LETTER G WITH STROKE; gstroke
+\DeclareTextCommand{\textgslash}{PU}{\81\345}% U+01E5
+%* \textgslash -> \textcrg (tipa)
+% U+01E6 LATIN CAPITAL LETTER G WITH CARON; Gcaron
+\DeclareTextCompositeCommand{\v}{PU}{G}{\81\346}% U+01E6
+% U+01E7 LATIN SMALL LETTER G WITH CARON; gcaron
+\DeclareTextCompositeCommand{\v}{PU}{g}{\81\347}% U+01E7
+% U+01E8 LATIN CAPITAL LETTER K WITH CARON; Kcaron
+\DeclareTextCompositeCommand{\v}{PU}{K}{\81\350}% U+01E8
+% U+01E9 LATIN SMALL LETTER K WITH CARON; kcaron
+\DeclareTextCompositeCommand{\v}{PU}{k}{\81\351}% U+01E9
+% U+01EA LATIN CAPITAL LETTER O WITH OGONEK; Oogonek
+\DeclareTextCompositeCommand{\k}{PU}{O}{\81\352}% U+01EA
+% U+01EB LATIN SMALL LETTER O WITH OGONEK; oogonek
+\DeclareTextCompositeCommand{\k}{PU}{o}{\81\353}% U+01EB
+% U+01F0 LATIN SMALL LETTER J WITH CARON; jcaron
+\DeclareTextCompositeCommand{\v}{PU}{\j}{\81\360}% U+01F0
+\DeclareTextCompositeCommand{\v}{PU}{j}{\81\360}% U+01F0
+% U+01F4 LATIN CAPITAL LETTER G WITH ACUTE; Gacute
+\DeclareTextCompositeCommand{\'}{PU}{G}{\81\364}% U+01F4
+% U+01F5 LATIN SMALL LETTER G WITH ACUTE; gacute
+\DeclareTextCompositeCommand{\'}{PU}{g}{\81\365}% U+01F5
+% U+01F8 LATIN CAPITAL LETTER N WITH GRAVE
+\DeclareTextCompositeCommand{\`}{PU}{N}{\81\370}% U+01F8
+% U+01F9 LATIN SMALL LETTER N WITH GRAVE
+\DeclareTextCompositeCommand{\`}{PU}{n}{\81\371}% U+01F9
+% U+01FC LATIN CAPITAL LETTER AE WITH ACUTE; AEacute
+\DeclareTextCompositeCommand{\'}{PU}{\AE}{\81\374}% U+01FC
+% U+01FD LATIN SMALL LETTER AE WITH ACUTE; aeacute
+\DeclareTextCompositeCommand{\'}{PU}{\ae}{\81\375}% U+01FD
+% U+01FE LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;
+% *Oslashacute, Ostrokeacut
+\DeclareTextCompositeCommand{\'}{PU}{\O}{\81\376}% U+01FE
+% U+01FF LATIN SMALL LETTER O WITH STROKE AND ACUTE;
+% *oslashacute, ostrokeacute
+\DeclareTextCompositeCommand{\'}{PU}{\o}{\81\377}% U+01FF
+% U+0200 LATIN CAPITAL LETTER A WITH DOUBLE GRAVE; Adblgrave
+\DeclareTextCompositeCommand{\G}{PU}{A}{\82\000}% U+0200
+% U+0201 LATIN SMALL LETTER A WITH DOUBLE GRAVE; adblgrave
+\DeclareTextCompositeCommand{\G}{PU}{a}{\82\001}% U+0201
+% U+0204 LATIN CAPITAL LETTER E WITH DOUBLE GRAVE; Edblgrave
+\DeclareTextCompositeCommand{\G}{PU}{E}{\82\004}% U+0204
+% U+0205 LATIN SMALL LETTER E WITH DOUBLE GRAVE; edblgrave
+\DeclareTextCompositeCommand{\G}{PU}{e}{\82\005}% U+0205
+% U+0206 LATIN CAPITAL LETTER E WITH INVERTED BREVE; Einvertedbreve
+\DeclareTextCompositeCommand{\textinvbreve}{PU}{E}{\82\006}% U+0206
+% U+0207 LATIN SMALL LETTER E WITH INVERTED BREVE; einvertedbreve
+\DeclareTextCompositeCommand{\textinvbreve}{PU}{e}{\82\007}% U+0207
+% U+0208 LATIN CAPITAL LETTER I WITH DOUBLE GRAVE; Idblgrave
+\DeclareTextCompositeCommand{\G}{PU}{I}{\82\010}% U+0208
+% U+0209 LATIN SMALL LETTER I WITH DOUBLE GRAVE; idblgrave
+\DeclareTextCompositeCommand{\G}{PU}{\i}{\82\011}% U+0209
+\DeclareTextCompositeCommand{\G}{PU}{i}{\82\011}% U+0209
+% U+020A LATIN CAPITAL LETTER I WITH INVERTED BREVE; Iinvertedbreve
+\DeclareTextCompositeCommand{\textinvbreve}{PU}{I}{\82\012}% U+020A
+% U+020B LATIN SMALL LETTER I WITH INVERTED BREVE; iinvertedbreve
+\DeclareTextCompositeCommand{\textinvbreve}{PU}{i}{\82\013}% U+020B
+\DeclareTextCompositeCommand{\textinvbreve}{PU}{\i}{\82\013}% U+020B
+% U+020C LATIN CAPITAL LETTER O WITH DOUBLE GRAVE; Odblgrave
+\DeclareTextCompositeCommand{\G}{PU}{O}{\82\014}% U+020C
+% U+020D LATIN SMALL LETTER O WITH DOUBLE GRAVE; odblgrave
+\DeclareTextCompositeCommand{\G}{PU}{o}{\82\015}% U+020D
+% U+020E LATIN CAPITAL LETTER O WITH INVERTED BREVE; Oinvertedbreve
+\DeclareTextCompositeCommand{\textinvbreve}{PU}{O}{\82\016}% U+020E
+% U+020F LATIN SMALL LETTER O WITH INVERTED BREVE; oinvertedbreve
+\DeclareTextCompositeCommand{\textinvbreve}{PU}{o}{\82\017}% U+020F
+% U+0210 LATIN CAPITAL LETTER R WITH DOUBLE GRAVE; Rdblgrave
+\DeclareTextCompositeCommand{\G}{PU}{R}{\82\020}% U+0210
+% U+0211 LATIN SMALL LETTER R WITH DOUBLE GRAVE; rdblgrave
+\DeclareTextCompositeCommand{\G}{PU}{r}{\82\021}% U+0211
+% U+0214 LATIN CAPITAL LETTER U WITH DOUBLE GRAVE; Udblgrave
+\DeclareTextCompositeCommand{\G}{PU}{U}{\82\024}% U+0214
+% U+0215 LATIN SMALL LETTER U WITH DOUBLE GRAVE; udblgrave
+\DeclareTextCompositeCommand{\G}{PU}{u}{\82\025}% U+0215
+% U+0216 LATIN CAPITAL LETTER U WITH INVERTED BREVE; Uinvertedbreve
+\DeclareTextCompositeCommand{\textinvbreve}{PU}{U}{\82\026}% U+0216
+% U+0217 LATIN SMALL LETTER U WITH INVERTED BREVE; uinvertedbreve
+\DeclareTextCompositeCommand{\textinvbreve}{PU}{u}{\82\027}% U+0217
+% U+021E LATIN CAPITAL LETTER H WITH CARON
+\DeclareTextCompositeCommand{\v}{PU}{H}{\82\036}% U+021E
+% U+021F LATIN SMALL LETTER H WITH CARON
+\DeclareTextCompositeCommand{\v}{PU}{h}{\82\037}% U+021F
+% U+0221 LATIN SMALL LETTER D WITH CURL; \textctd (tipa)
+\DeclareTextCommand{\textctd}{PU}{\82\041}% U+0221
+% U+0225 LATIN SMALL LETTER Z WITH HOOK; \textcommatailz (tipa)
+\DeclareTextCommand{\textcommatailz}{PU}{\82\045}% U+0225
+% U+0226 LATIN CAPITAL LETTER A WITH DOT ABOVE
+\DeclareTextCompositeCommand{\.}{PU}{A}{\82\046}% U+0226
+% U+0227 LATIN SMALL LETTER A WITH DOT ABOVE
+\DeclareTextCompositeCommand{\.}{PU}{a}{\82\047}% U+0227
+% U+0228 LATIN CAPITAL LETTER E WITH CEDILLA
+\DeclareTextCompositeCommand{\c}{PU}{E}{\82\050}% U+0228
+% U+0229 LATIN SMALL LETTER E WITH CEDILLA
+\DeclareTextCompositeCommand{\c}{PU}{e}{\82\051}% U+0229
+% U+022E LATIN CAPITAL LETTER O WITH DOT ABOVE
+\DeclareTextCompositeCommand{\.}{PU}{O}{\82\056}% U+022E
+% U+022F LATIN SMALL LETTER O WITH DOT ABOVE
+\DeclareTextCompositeCommand{\.}{PU}{o}{\82\057}% U+022F
+% U+0232 LATIN CAPITAL LETTER Y WITH MACRON
+\DeclareTextCompositeCommand{\=}{PU}{Y}{\82\062}% U+0232
+% U+0233 LATIN SMALL LETTER Y WITH MACRON
+\DeclareTextCompositeCommand{\=}{PU}{y}{\82\063}% U+0233
+% U+0235 LATIN SMALL LETTER N WITH CURL; \textctn (tipa)
+\DeclareTextCommand{\textctn}{PU}{\82\065}% U+0235
+% U+0236 LATIN SMALL LETTER T WITH CURL; \textctt (tipa)
+\DeclareTextCommand{\textctt}{PU}{\82\066}% U+0236
+% U+0237 LATIN SMALL LETTER DOTLESS J
+\DeclareTextCommand{\j}{PU}{\82\067}% U+0237
+% U+0238 LATIN SMALL LETTER DB DIGRAPH; \textdblig (tipx)
+\DeclareTextCommand{\textPUdblig}{PU}{\82\070}% U+0238
+%* \textPUdblig -> \textdblig (tipx)
+% U+0239 LATIN SMALL LETTER QP DIGRAPH; \textqplig (tipx)
+\DeclareTextCommand{\textPUqplig}{PU}{\82\071}% U+0239
+%* \textPUqplig -> \textqplig (tipx)
+% U+023C LATIN SMALL LETTER C WITH STROKE; \slashc (wsuipa)
+\DeclareTextCommand{\textslashc}{PU}{\82\074}%* U+023C
+%* \textslashc -> \textcentoldstyle (textcomp)
+% With bar instead of stroke:
+%* \textslashc -> \textbarc (tipa)
+% \end{macrocode}
+%
+% \subsubsection{IPA Extensions: U+0250 to U+02AF}
+%
+% \begin{macrocode}
+% U+0250 LATIN SMALL LETTER TURNED A; aturned; \textturna (tipa)
+\DeclareTextCommand{\textturna}{PU}{\82\120}% U+0250
+%* \textturna -> \inva (wasysym)
+% U+0251 LATIN SMALL LETTER ALPHA/LATIN SMALL LETTER
+% SCRIPT A; ascript; \textscripta (tipa), \scripta (wsuipa)
+\DeclareTextCommand{\textscripta}{PU}{\82\121}%* U+0251
+%* \textscripta -> \vara (phonetic)
+% U+0252 LATIN SMALL LETTER TURNED ALPHA; ascriptturned;
+% \textturnscripta (tipa)
+\DeclareTextCommand{\textturnscripta}{PU}{\82\122}% U+0252
+%* \textturnscripta -> \invscripta (wsuipa)
+%* \textturnscripta -> \rotvara (phonetic)
+% U+0253 LATIN CAPITAL LETTER B WITH HOOK; bhook; \texthtb (tipa)
+\DeclareTextCommand{\texthtb}{PU}{\82\123}% U+0253
+%* \texthtb -> \hookb (wsuipa)
+%* \texthtb -> \hausab (phonetic)
+% U+0254 LATIN SMALL LETTER OPEN O; oopen;
+% \textopeno (tipa), \openo (wasysym)
+\DeclareTextCommand{\textopeno}{PU}{\82\124}%* U+0254
+%* \textopeno -> \varopeno (phonetic)
+% U+0255 LATIN SMALL LETTER C WITH CURL; ccurl; \textctc (tipa)
+\DeclareTextCommand{\textctc}{PU}{\82\125}% U+0255
+%* \textctc -> \curlyc (wsuipa)
+% U+0256 LATIN SMALL LETTER D WITH TAIL; dtail; \textrtaild (tipa)
+\DeclareTextCommand{\textrtaild}{PU}{\82\126}%* U+0256
+%* \textrtaild -> \taild (wsuipa)
+% U+0257 LATIN SMALL LETTER D WITH HOOK; dhook; \texthtd (tipa)
+\DeclareTextCommand{\texthtd}{PU}{\82\127}% U+0257
+%* \texthtd -> \hookd (wsuipa)
+%* \texthtd -> \hausad (phonetic)
+% U+0258 LATIN SMALL LETTER REVERSED E; ereversed;
+% \textreve (tipa), \reve (wsuipa)
+\DeclareTextCommand{\textreve}{PU}{\82\130}%* U+0258
+% U+0259 LATIN SMALL LETTER SCHWA; schwa;
+% \textschwa (tipa), \schwa (wsuipa, phonetic)
+\DeclareTextCommand{\textschwa}{PU}{\82\131}%* U+0259
+% U+025A LATIN SMALL LETTER SCHWA WITH HOOK; schwahook;
+% \textrhookschwa (tipa)
+\DeclareTextCommand{\textrhookschwa}{PU}{\82\132}% U+025A
+%* \textrhookschwa -> \er (wsuipa)
+% U+025B LATIN SMALL LETTER OPEN E/LATIN SMALL LETTER EPSILON; eopen;
+% \niepsilon (wsuipa)
+\DeclareTextCommand{\textniepsilon}{PU}{\82\133}%* U+025B
+%* \textniepsilon -> \epsi (phonetic)
+% U+025C LATIN SMALL LETTER REVERSED OPEN E; eopenreversed;
+% \textrevepsilon (tipa), \revepsilon (wsuipa)
+\DeclareTextCommand{\textrevepsilon}{PU}{\82\134}%* U+025C
+% U+025D LATIN SMALL LETTER REVERSED OPEN E WITH HOOK; eopenreversedhook;
+% \textrhookrevepsilon (tipa)
+\DeclareTextCommand{\textrhookrevepsilon}{PU}{\82\135}%* U+025D
+%* \textrhookrevepsilon -> \hookrevepsilon (wsuipa)
+% U+025E LATIN SMALL LETTER CLOSED REVERSED OPEN E; eopenreversedclosed;
+% \textcloserevepsilon (tipa)
+\DeclareTextCommand{\textcloserevepsilon}{PU}{\82\136}% U+025E
+%* \textcloserevepsilon -> \closedrevepsilon (wsuipa)
+% U+025F LATIN SMALL LETTER DOTLESS J WITH STROKE; jdotlessstroke;
+% \textbardotlessj (tipa)
+\DeclareTextCommand{\textbardotlessj}{PU}{\82\137}% U+025F
+%* \textbardotlessj -> \barj (phonetic)
+% U+0260 LATIN SMALL LETTER G WITH HOOK; ghook; \texthtg (tipa)
+\DeclareTextCommand{\texthtg}{PU}{\82\140}% U+0260
+%* \texthtg -> \hookg (wsuipa)
+% U+0261 LATIN SMALL LETTER SCRIPT G; gscript;
+% \textscriptg (tipa), \scriptg (wsuipa)
+\DeclareTextCommand{\textscriptg}{PU}{\82\141}%* U+0261
+%* \textscriptg -> \varg (phonetic)
+% U+0262 LATIN LETTER SMALL CAPITAL G; \textscg (tipa), \scg (wsuipa)
+\DeclareTextCommand{\textscg}{PU}{\82\142}%* U+0262
+% U+0263 LATIN SMALL LETTER GAMMA; gammalatinsmall;
+% \ipagamma (wsuipa), \vod (phonetic)
+\DeclareTextCommand{\textipagamma}{PU}{\82\143}%* U+0263
+%* \textipagamma -> \vod (pnonetic)
+% U+0264 LATIN SMALL LETTER RAMS HORN; ramshorn;
+% \babygamma (wsuipa)
+\DeclareTextCommand{\textbabygamma}{PU}{\82\144}%* U+0264
+% U+0265 LATIN SMALL LETTER TURNED H; hturned; \textturnh (tipa)
+\DeclareTextCommand{\textturnh}{PU}{\82\145}% U+0265
+%* \textturnh -> \invh (wsuipa)
+%* \textturnh -> \udesc (phonetic)
+% U+0266 LATIN SMALL LETTER H WITH HOOK; hhook; \texthth (tipa)
+\DeclareTextCommand{\texthth}{PU}{\82\146}% U+0266
+%* \texthth -> \hookh (wsuipa)
+%* \texthth -> \voicedh (phonetic)
+% U+0267 LATIN SMALL LETTER HENG WITH HOOK; henghook; \texththeng (tipa)
+\DeclareTextCommand{\texththeng}{PU}{\82\147}% U+0267
+%* \texththeng -> \hookheng (wsuipa)
+% U+0268 LATIN SMALL LETTER I WITH STROKE;
+% \textbari (tipa), \bari (wsuipa)
+\DeclareTextCommand{\textbari}{PU}{\82\150}%* U+0268
+%* \textbari -> \ibar (phonetic)
+% U+0269 LATIN SMALL LETTER IOTA; iotalatin; \niiota (wsuipa)
+\DeclareTextCommand{\textniiota}{PU}{\82\151}%* U+0269
+%* \textniiota -> \vari (phonetic)
+% U+026A LATIN LETTER SMALL CAPITAL I; \textsci (tipa), \sci (wsuipa)
+\DeclareTextCommand{\textsci}{PU}{\82\152}%* U+026A
+% U+026B LATIN SMALL LETTER L WITH MIDDLE TILDE; lmiddletilde;
+% \textltilde (tipa)
+\DeclareTextCommand{\textltilde}{PU}{\82\153}% U+026B
+%* \textltilde -> \tildel (wsuipa)
+% U+026C LATIN SMALL LETTER L WITH BELT; lbelt; \textbeltl (tipa)
+\DeclareTextCommand{\textbeltl}{PU}{\82\154}% U+026C
+%* \textbeltl -> \latfric (wsuipa)
+% U+026D LATIN SMALL LETTER L WITH RETROFLEX HOOK;
+% lhookretroflex; \textrtaill (tipa)
+\DeclareTextCommand{\textrtaill}{PU}{\82\155}% U+026D
+%* \textrtaill -> \taill (wsuipa)
+% U+026E LATIN SMALL LETTER LEZH; lezh; \textlyoghlig (tipa)
+\DeclareTextCommand{\textlyoghlig}{PU}{\82\156}% U+026E
+%* \textlyoghlig -> \lz (wsuipa)
+% U+026F LATIN SMALL LETTER TURNED M; mturned; \textturnm (tipa)
+\DeclareTextCommand{\textturnm}{PU}{\82\157}% U+026F
+%* \textturnm -> \invm (wsuipa)
+%* \textturnm -> \rotm (phonetic)
+% U+0270 LATIN SMALL LETTER TURNED M WITH LONG LEG; mlonglegturned;
+% \textturnmrleg (tipa)
+\DeclareTextCommand{\textturnmrleg}{PU}{\82\160}% U+0270
+%* \textturnmrleg -> \legm (wsuipa)
+% U+0271 LATIN SMALL LETTER M WITH HOOK; mhook; \textltailm (tipa)
+\DeclareTextCommand{\textltailm}{PU}{\82\161}% U+0271
+%* \textltailm -> \labdentalnas (wsuipa)
+%* \textltailm -> \emgma (phonetic)
+% U+0272 LATIN SMALL LETTER N WITH LEFT HOOK; nhookleft; \textltailn (tipa)
+\DeclareTextCommand{\textltailn}{PU}{\82\162}% U+0272
+%* \textltailn -> \nj (wsuipa)
+%* \textltailn -> \enya (phonetic)
+% U+0273 LATIN SMALL LETTER N WITH RETROFLEX HOOK;
+% nhookretroflex; \textrtailn (tipa)
+\DeclareTextCommand{\textrtailn}{PU}{\82\163}% U+0273
+%* \textrtailn -> \tailn (wsuipa)
+% U+0274 LATIN LETTER SMALL CAPITAL N; \textscn (tipa), \scn (wsuipa)
+\DeclareTextCommand{\textscn}{PU}{\82\164}%* U+0274
+% U+0275 LATIN CAPITAL LETTER O WITH MIDDLE TILDE/
+% LATIN CAPITAL LETTER BARRED O; obarred;
+% \textbaro (tipa), \baro (wsuipa)
+% But \baro from stmaryrd is different!
+\DeclareTextCommand{\textbaro}{PU}{\82\165}% U+0275
+% U+0276 LATIN LETTER SMALL CAPITAL OE; \textscoelig (tipa)
+\DeclareTextCommand{\textscoelig}{PU}{\82\166}% U+0276
+% U+0277 LATIN SMALL LETTER CLOSED OMEGA; omegalatinclosed;
+% \textcloseomega (tipa)
+\DeclareTextCommand{\textcloseomega}{PU}{\82\167}% U+0277
+%* \textcloseomega -> \closedniomega (wsuipa)
+%* \textcloseomega -> \varomega (phonetic)
+% U+0278 LATIN SMALL LETTER PHI; philatin; \niphi (wsuipa)
+\DeclareTextCommand{\textniphi}{PU}{\82\170}%* U+0278
+% U+0279 LATIN SMALL LETTER TURNED R; rturned; \textturnr (tipa)
+\DeclareTextCommand{\textturnr}{PU}{\82\171}% U+0279
+%* \textturnr -> \invr (wsuipa)
+%* \textturnr -> \rotr (phonetic)
+% U+027A LATIN SMALL LETTER TURNED R WITH LONG LEG;
+% rlonglegturned; \textturnlonglegr (tipa)
+\DeclareTextCommand{\textturnlonglegr}{PU}{\82\172}% U+027A
+%* \textturnlonglegr -> \invlegr (wsuipa)
+% U+027B LATIN SMALL LETTER TURNED R WITH HOOK; rhookturned;
+% \textturnrrtail (tipa)
+\DeclareTextCommand{\textturnrrtail}{PU}{\82\173}% U+027B
+%* \textturnrrtail -> \tailinvr (wsuipa)
+% U+027C LATIN SMALL LETTER R WITH LONG LEG; rlongleg; \textlonglegr (tipa)
+\DeclareTextCommand{\textlonglegr}{PU}{\82\174}%* U+027C
+%* \textlonglegr -> \legr (wsuipa)
+% U+027D LATIN SMALL LETTER R WITH TAIL; rhook; \textrtailr (tipa)
+\DeclareTextCommand{\textrtailr}{PU}{\82\175}% U+027D
+%* \textrtailr -> \tailr (wsuipa)
+% U+027E LATIN SMALL LETTER R WITH FISHHOOK; rfishhook;
+% \textfishhookr (tipa)
+\DeclareTextCommand{\textfishhookr}{PU}{\82\176}% U+027E
+%* \textfishhookr -> \flapr (wsuipa)
+%* \textfishhookr -> \flap (phonetic)
+% U+027F LATIN SMALL LETTER REVERSED R WITH FISHHOOK; rfishhookreversed;
+% \textlhtlongi (tipa)
+\DeclareTextCommand{\textlhtlongi}{PU}{\82\177}% U+027F
+% U+0280 LATIN LETTER SMALL CAPITAL R; \textscr (tipa), \scr (wsuipa)
+\DeclareTextCommand{\textscr}{PU}{\82\200}%* U+0280
+% U+0281 LATIN LETTER SMALL CAPITAL INVERTED R; Rsmallinverted;
+% \textinvscr (tipa), \invscr (wsuipa)
+\DeclareTextCommand{\textinvscr}{PU}{\82\201}%* U+0281
+% U+0282 LATIN SMALL LETTER S WITH HOOK; shook; \textrtails (tipa)
+\DeclareTextCommand{\textrtails}{PU}{\82\202}% U+0282
+%* \textrtails -> \tails (wsuipa)
+% U+0283 LATIN SMALL LETTER ESH; esh; \textesh (tipa), \esh (wsuipa)
+\DeclareTextCommand{\textesh}{PU}{\82\203}%* U+0283
+% U+0284 LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;
+% dotlessjstrokehook; \texthtbardotlessj (tipa)
+\DeclareTextCommand{\texthtbardotlessj}{PU}{\82\204}% U+0284
+% U+0285 LATIN SMALL LETTER SQUAT REVERSED ESH; eshsquatreversed;
+% \textvibyi (tipa)
+\DeclareTextCommand{\textvibyi}{PU}{\82\205}% U+0285
+% U+0286 LATIN SMALL LETTER ESH WITH CURL; eshcurl; \textctesh (tipa)
+\DeclareTextCommand{\textctesh}{PU}{\82\206}% U+0286
+%* \textctesh -> \curlyesh (wsuipa)
+% U+0287 LATIN SMALL LETTER TURNED T; tturned; \textturnt (tipa)
+\DeclareTextCommand{\textturnt}{PU}{\82\207}% U+0287
+%* \textturnt -> \clickt (wsuipa)
+% U+0288 LATIN SMALL LETTER T WITH RETROFLEX HOOK; tretroflexhook;
+% \textrtailt (tipa)
+\DeclareTextCommand{\textrtailt}{PU}{\82\210}% U+0288
+%* \textrtailt -> \tailt (wsuipa)
+% U+0289 LATIN SMALL LETTER U BAR; ubar;
+% \textbaru (tipa), \baru (wsuipa)
+\DeclareTextCommand{\textbaru}{PU}{\82\211}%* U+0289
+%* \textbaru -> \ubar (phonetic)
+% U+028A LATIN SMALL LETTER UPSILON; \niupsilon (wsuipa)
+\DeclareTextCommand{\textniupsilon}{PU}{\82\212}%* U+028A
+%* \textniupsilon -> \rotOmega (phonetic)
+% U+028B LATIN SMALL LETTER V WITH HOOK/LATIN SMALL LETTER SCRIPT V;
+% vhook; \textscriptv (tipa), \scriptv (wsuipa)
+\DeclareTextCommand{\textscriptv}{PU}{\82\213}%* U+028B
+% U+028C LATIN SMALL LETTER TURNED V; vturned; \textturnv (tipa)
+\DeclareTextCommand{\textturnv}{PU}{\82\214}%* U+028C
+%* \textturnv -> \invv (wsuipa)
+%* \textturnv -> \pwedge (phonetic)
+% U+028D LATIN SMALL LETTER TURNED W; wturned; \textturnw (tipa)
+\DeclareTextCommand{\textturnw}{PU}{\82\215}%* U+028D
+%* \textturnw -> \invw (wsuipa)
+%* \textturnw -> \rotw (phonetic)
+% U+028E LATIN SMALL LETTER TURNED Y; yturned; \textturny (tipa)
+\DeclareTextCommand{\textturny}{PU}{\82\216}%* U+028E
+%* \textturny -> \invy (wsuipa)
+%* \textturny -> \roty (phonetic)
+% U+028F LATIN LETTER SMALL CAPITAL Y; \textscy (tipa), \scy (wsuipa)
+\DeclareTextCommand{\textscy}{PU}{\82\217}%* U+028F
+% U+0290 LATIN SMALL LETTER Z WITH RETROFLEX HOOK; zretroflexhook;
+% \textrtailz (tipa)
+\DeclareTextCommand{\textrtailz}{PU}{\82\220}% U+0290
+%* \textrtailz -> \tailz (wsuipa)
+% U+0291 LATIN SMALL LETTER Z WITH CURL; zcurl; \textctz (tipa)
+\DeclareTextCommand{\textctz}{PU}{\82\221}% U+0291
+%* \textctz -> \curlyz (wsuipa)
+% U+0292 LATIN SMALL LETTER EZH/LATIN SMALL LETTER YOGH; ezh;
+% \textyogh (tipa), \yogh (wsuipa)
+\DeclareTextCommand{\textyogh}{PU}{\82\222}%* U+0292
+% U+0293 LATIN SMALL LETTER EZH WITH CURL/LATIN SMALL LETTER YOGH CURL;
+% ezhcurl; \textctyogh (tipa)
+\DeclareTextCommand{\textctyogh}{PU}{\82\223}% U+0293
+%* \textctyogh -> \curlyyogh (wsuipa)
+% U+0294 LATIN LETTER GLOTTAL STOP; glottalstop;
+% \textglotstop (tipa), \glotstop (wsuipa)
+\DeclareTextCommand{\textglotstop}{PU}{\82\224}%* U+0294
+%* \textglotstop -> \ejective (wsuipa)
+%* \textglotstop -> \glottal (phonetic)
+% U+0295 LATIN LETTER PHARYNGEAL VOICED FRICATIVE/
+% LATIN LETTER REVERSED GLOTTAL STOP; glottalstopreversed;
+% \textrevglotstop (tipa), \revglotstop (wsuipa)
+\DeclareTextCommand{\textrevglotstop}{PU}{\82\225}%* U+0295
+%* \textrevglotstop -> \reveject (wsuipa)
+% U+0296 LATIN LETTER INVERTED GLOTTAL STOP; glottalstopinverted;
+% \textinvglotstop (tipa), \invglotstop (wsuipa)
+\DeclareTextCommand{\textinvglotstop}{PU}{\82\226}%* U+0296
+% U+0297 LATIN LETTER STRETCHED C; cstretched; \textstretchc (tipa)
+\DeclareTextCommand{\textstretchc}{PU}{\82\227}% U+0297
+%* \textstretchc -> \clickc (wsuipa)
+%* \textstretchc -> \textstretchcvar (tipx)
+% U+0298 LATIN LETTER BILABIAL CLICK; bilabialclick;
+% \textbullseye (tipa)
+\DeclareTextCommand{\textbullseye}{PU}{\82\230}% U+0298
+%* \textbullseye -> \clickb (wsuipa)
+%* \textbullseye -> \textObullseye (tipx)
+% U+0299 LATIN LETTER SMALL CAPITAL B; \textscb (tipa)
+\DeclareTextCommand{\textscb}{PU}{\82\231}% U+0299
+% U+029A LATIN SMALL LETTER CLOSED OPEN E; eopenclosed;
+% \textcloseepsilon (tipa)
+\DeclareTextCommand{\textcloseepsilon}{PU}{\82\232}% U+029A
+% U+029B LATIN LETTER SMALL CAPITAL G WITH HOOK; Gsmallhook;
+% \texthtscg (tipa)
+\DeclareTextCommand{\texthtscg}{PU}{\82\233}% U+029B
+% U+029C LATIN LETTER SMALL CAPITAL H; \textsch (tipa)
+\DeclareTextCommand{\textsch}{PU}{\82\234}% U+029C
+% U+029D LATIN SMALL LETTER J WITH CROSSED-TAIL; jcrossedtail; \textcdj (tipa)
+\DeclareTextCommand{\textctj}{PU}{\82\235}% U+029D
+%* \textctj -> \textctjvar (tipx)
+% U+029E LATIN SMALL LETTER TURNED K; kturned; \textturnk (tipa)
+\DeclareTextCommand{\textturnk}{PU}{\82\236}% U+029E
+%* \textturnk -> \textturnsck (tipx)
+% U+029F LATIN LETTER SMALL CAPITAL L; \textscl (tipa)
+\DeclareTextCommand{\textscl}{PU}{\82\237}% U+029F
+% U+02A0 LATIN SMALL LETTER Q WITH HOOK; qhook; \texthtq (tipa)
+\DeclareTextCommand{\texthtq}{PU}{\82\240}% U+02A0
+% U+02A1 LATIN LETTER GLOTTAL STOP WITH STROKE; glottalstopstroke;
+% \textbarglotstop (tipa)
+\DeclareTextCommand{\textbarglotstop}{PU}{\82\241}% U+02A1
+% U+02A2 LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE/
+% LATIN LETTER REVERSED GLOTTAL STOP BAR; glottalstopstrokereversed;
+% \textbarrevglotstop (tipa)
+\DeclareTextCommand{\textbarrevglotstop}{PU}{\82\242}% U+02A2
+% U+02A3 LATIN SMALL LETTER DZ DIGRAPH; dzaltone; \textdzlig (tipa)
+\DeclareTextCommand{\textdzlig}{PU}{\82\243}% U+02A3
+%* \textdzlig -> \dz (wsupipa)
+% U+02A4 LATIN SMALL LETTER DEZH DIGRAPH; dezh; \textdyoghlig (tipa)
+\DeclareTextCommand{\textdyoghlig}{PU}{\82\244}% U+02A4
+% U+02A5 LATIN SMALL LETTER DZ DIGRAPH WITH CURL; dzcurl;
+% \textdctzlig (tipa)
+\DeclareTextCommand{\textdctzlig}{PU}{\82\245}% U+02A5
+% U+02A6 LATIN SMALL LETTER TS DIGRAPH; ts; \texttslig (tipa)
+\DeclareTextCommand{\texttslig}{PU}{\82\246}% U+02A6
+% U+02A7 LATIN SMALL LETTER TESH DIGRAPH; tesh; \textteshlig (tipa)
+\DeclareTextCommand{\textteshlig}{PU}{\82\247}% U+02A7
+%* \textteshlig -> \tesh (wsuipa)
+% U+02A8 LATIN SMALL LETTER TC DIGRAPH WITH CURL; tccurl;
+% \texttctclig (tipa)
+\DeclareTextCommand{\texttctclig}{PU}{\82\250}% U+02A8
+% U+02AE LATIN SMALL LETTER TURNED H WITH FISHHOOK;
+% \textlhtlongy (tipa)
+\DeclareTextCommand{\textlhtlongy}{PU}{\82\256}% U+02AE
+% U+02AF LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;
+% \textvibyy (tipa)
+\DeclareTextCommand{\textvibyy}{PU}{\82\257}% U+02AF
+% \end{macrocode}
+%
+% \subsubsection{Spacing Modifier Letters: U+02B0 to U+02FF}
+%
+% \begin{macrocode}
+% U+02BD MODIFIER LETTER REVERSED COMMA;
+% commareversedmod, afii64937; \textrevapostrophe (tipa)
+\DeclareTextCommand{\textrevapostrophe}{PU}{\82\275}% U+02BD
+% U+02C0 MODIFIER LETTER GLOTTAL STOP; glottalstopmod;
+% \textraiseglotstop (tipa)
+\DeclareTextCommand{\textraiseglotstop}{PU}{\82\300}% U+02C0
+% U+02C2 MODIFIER LETTER LEFT ARROWHEAD; arrowheadleftmod;
+% \textlptr (tipa)
+\DeclareTextCommand{\textlptr}{PU}{\82\302}% U+02C2
+% U+02C3 MODIFIER LETTER RIGHT ARROWHEAD; arrowheadrightmod;
+% \textrptr (tipa)
+\DeclareTextCommand{\textrptr}{PU}{\82\303}% U+02C3
+% U+02C7 CARON; caron
+\DeclareTextCommand{\textasciicaron}{PU}{\82\307}% U+02C7
+% U+02C8 MODIFIER LETTER VERTICAL LINE; verticallinemod;
+% \textprimstress (tipa)
+\DeclareTextCommand{\textprimstress}{PU}{\82\310}% U+02C8
+% U+02CC MODIFIER LETTER LOW VERTICAL LINE; verticallinelowmod;
+% \textsecstress (tipa)
+\DeclareTextCommand{\textsecstress}{PU}{\82\314}% U+02CC
+% U+02D0 MODIFIER LETTER TRIANGULAR COLON; colontriangularmod;
+% \textlengthmark (tipa)
+\DeclareTextCommand{\textlengthmark}{PU}{\82\320}% U+02D0
+% U+02D1 MODIFIER LETTER HALF TRIANGULAR COLON; colontriangularhalfmod;
+% \texthalflength (tipa)
+\DeclareTextCommand{\texthalflength}{PU}{\82\321}% U+02D1
+% U+02D8 BREVE; breve
+\DeclareTextCommand{\textasciibreve}{PU}{\82\330}% U+02D8
+% U+02D9 DOT ABOVE; dotaccent
+\DeclareTextCommand{\textdotaccent}{PU}{\82\331}% U+02D9
+% U+02DA RING ABOVE; ring
+\DeclareTextCommand{\textring}{PU}{\82\332}% U+02DA
+% U+02DB OGONEK; ogonek
+\DeclareTextCommand{\textogonek}{PU}{\82\333}% U+02DB
+% U+02DC SMALL TILDE; ilde, *tilde
+\DeclareTextCommand{\texttilde}{PU}{\82\334}% U+02DC
+% U+02DD DOUBLE ACUTE ACCENT; hungarumlaut
+\DeclareTextCommand{\texthungarumlaut}{PU}{\82\335}% U+02DD
+\DeclareTextCommand{\textacutedbl}{PU}{\82\335}% U+02DD
+% U+02F3 MODIFIER LETTER LOW RING
+\DeclareTextCommand{\textringlow}{PU}{\82\363}% U+02F3
+% U+02F5 MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT
+\DeclareTextCommand{\textgravedbl}{PU}{\82\365}% U+02F5
+% U+02F7 MODIFIER LETTER LOW TILDE
+\DeclareTextCommand{\texttildelow}{PU}{\82\367}% U+02F7
+% U+02F9 MODIFIER LETTER BEGIN HIGH TONE; \textopencorner (tipa)
+\DeclareTextCommand{\textopencorner}{PU}{\82\371}% U+02F9
+% U+02FA MODIFIER LETTER END HIGH TONE; \textcorner (tipa)
+\DeclareTextCommand{\textcorner}{PU}{\82\372}% U+02FA
+% \end{macrocode}
+%
+% \subsubsection{Combining Diacritical Marks: U+0300 to U+036F}
+%
+% \begin{macrocode}
+% U+030F COMBINING DOUBLE GRAVE ACCENT; dblgravecmb
+\DeclareTextCommand{\textdoublegrave}{PU}{ \83\017}% U+030F
+% U+0311 COMBINING INVERTED BREVE; breveinvertedcmb
+\DeclareTextCommand{\textnewtie}{PU}{ \83\021}% U+0311
+% U+0323 COMBINING DOT BELOW; dotbelowcmb, *dotbelowcomb
+\DeclareTextCommand{\textdotbelow}{PU}{ \83\043}% U+0323
+% U+0331 COMBINING MACRON BELOW; macronbelowcmb
+\DeclareTextCommand{\textmacronbelow}{PU}{ \83\061}% U+0331
+% U+0361 COMBINING DOUBLE INVERTED BREVE; breveinverteddoublecmb
+\DeclareTextCommand{\texttie}{PU}{ \83\141}% U+0361
+% \end{macrocode}
+%
+% \subsubsection{Greek and Coptic: U+0370 to U+03FF}
+%
+% \begin{macrocode}
+% U+0374 GREEK NUMERAL SIGN; numeralsigngreek
+\DeclareTextCommand{\textnumeralsigngreek}{PU}{\83\164}% U+0374
+% U+0375 GREEK LOWER NUMERAL SIGN; numeralsignlowergreek
+\DeclareTextCommand{\textnumeralsignlowergreek}{PU}{\83\165}% U+0375
+% U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS; Alphatonos
+\DeclareTextCompositeCommand{\'}{PU}{\textAlpha}{\83\206}% U+0386
+% U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS; Epsilontonos
+\DeclareTextCompositeCommand{\'}{PU}{\textEpsilon}{\83\210}% U+0388
+% U+0389 GREEK CAPITAL LETTER ETA WITH TONOS; Etatonos
+\DeclareTextCompositeCommand{\'}{PU}{\textEta}{\83\211}% U+0389
+% U+038A GREEK CAPITAL LETTER IOTA WITH TONOS; Iotatonos
+\DeclareTextCompositeCommand{\'}{PU}{\textIota}{\83\212}% U+038A
+% U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS; Omicrontonos
+\DeclareTextCompositeCommand{\'}{PU}{\textOmicron}{\83\214}% U+038C
+% U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS; Upsilontonos
+\DeclareTextCompositeCommand{\'}{PU}{\textUpsilon}{\83\216}% U+038E
+% U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS; Omegatonos
+\DeclareTextCompositeCommand{\'}{PU}{\textOmega}{\83\217}% U+038F
+% U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;
+% iotadieresistonos
+\DeclareTextCompositeCommand{\'}{PU}{\textIotadieresis}{\83\220}% U+0390
+% U+0391 GREEK CAPITAL LETTER ALPHA; Alpha
+\DeclareTextCommand{\textAlpha}{PU}{\83\221}% U+0391
+% U+0392 GREEK CAPITAL LETTER BETA; Beta
+\DeclareTextCommand{\textBeta}{PU}{\83\222}% U+0392
+% U+0393 GREEK CAPITAL LETTER GAMMA; Gamma; \Gamma (LaTeX)
+\DeclareTextCommand{\textGamma}{PU}{\83\223}%* U+0393
+% U+0394 GREEK CAPITAL LETTER DELTA; Deltagreek, *Delta; \Delta (LaTeX)
+\DeclareTextCommand{\textDelta}{PU}{\83\224}%* U+0394
+% U+0395 GREEK CAPITAL LETTER EPSILON; Epsilon
+\DeclareTextCommand{\textEpsilon}{PU}{\83\225}% U+0395
+% U+0396 GREEK CAPITAL LETTER ZETA; Zeta
+\DeclareTextCommand{\textZeta}{PU}{\83\226}% U+0396
+% U+0397 GREEK CAPITAL LETTER ETA; Eta
+\DeclareTextCommand{\textEta}{PU}{\83\227}% U+0397
+% U+0398 GREEK CAPITAL LETTER THETA; Theta; \Theta (LaTeX)
+\DeclareTextCommand{\textTheta}{PU}{\83\230}%* U+0398
+% U+0399 GREEK CAPITAL LETTER IOTA; Iota
+\DeclareTextCommand{\textIota}{PU}{\83\231}% U+0399
+% U+039A GREEK CAPITAL LETTER KAPPA; Kappa
+\DeclareTextCommand{\textKappa}{PU}{\83\232}% U+039A
+% U+039B GREEK CAPITAL LETTER LAMDA; Lambda; \Lambda (LaTeX)
+\DeclareTextCommand{\textLambda}{PU}{\83\233}%* U+039B
+% U+039C GREEK CAPITAL LETTER MU; Mu
+\DeclareTextCommand{\textMu}{PU}{\83\234}% U+039C
+% U+039D GREEK CAPITAL LETTER NU; Nu
+\DeclareTextCommand{\textNu}{PU}{\83\235}% U+039D
+% U+039E GREEK CAPITAL LETTER XI; Xi; \Xi (LaTeX)
+\DeclareTextCommand{\textXi}{PU}{\83\236}%* U+039E
+% U+039F GREEK CAPITAL LETTER OMICRON; Omicron
+\DeclareTextCommand{\textOmicron}{PU}{\83\237}% U+039F
+% U+03A0 GREEK CAPITAL LETTER PI; Pi
+\DeclareTextCommand{\textPi}{PU}{\83\240}%* U+03A0
+% U+03A1 GREEK CAPITAL LETTER RHO; Rho
+\DeclareTextCommand{\textRho}{PU}{\83\241}% U+03A1
+% U+03A3 GREEK CAPITAL LETTER SIGMA; Sigma; \Sigma (LaTeX)
+\DeclareTextCommand{\textSigma}{PU}{\83\243}%* U+03A3
+% U+03A4 GREEK CAPITAL LETTER TAU; Tau
+\DeclareTextCommand{\textTau}{PU}{\83\244}% U+03A4
+% U+03A5 GREEK CAPITAL LETTER UPSILON; Upsilon; \Upsilon (LaTeX)
+\DeclareTextCommand{\textUpsilon}{PU}{\83\245}%* U+03A5
+% U+03A6 GREEK CAPITAL LETTER PHI; Phi; \Phi (LaTeX)
+\DeclareTextCommand{\textPhi}{PU}{\83\246}%* U+03A6
+% U+03A7 GREEK CAPITAL LETTER CHI; Chi
+\DeclareTextCommand{\textChi}{PU}{\83\247}% U+03A7
+% U+03A8 GREEK CAPITAL LETTER PSI; Psi; \Psi (LaTeX)
+\DeclareTextCommand{\textPsi}{PU}{\83\250}%* U+03A8
+% U+03A9 GREEK CAPITAL LETTER OMEGA; Omegagreek, *Omega;
+% \Omega (LaTeX)
+\DeclareTextCommand{\textOmega}{PU}{\83\251}%* U+03A9
+% U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA; Iotadieresis
+\DeclareTextCommand{\textIotadieresis}{PU}{\83\252}% U+03AA
+\DeclareTextCompositeCommand{\"}{PU}{\textIota}{\83\252}% U+03AA
+% U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA; Upsilondieresis
+\DeclareTextCompositeCommand{\"}{PU}{\textUpsilon}{\83\253}% U+03AB
+% U+03AC GREEK SMALL LETTER ALPHA WITH TONOS; alphatonos
+\DeclareTextCompositeCommand{\'}{PU}{\textalpha}{\83\254}%* U+03AC
+% U+03AD GREEK SMALL LETTER EPSILON WITH TONOS; epsilontonos
+\DeclareTextCompositeCommand{\'}{PU}{\textepsilon}{\83\255}% U+03AD
+% U+03AE GREEK SMALL LETTER ETA WITH TONOS; etatonos
+\DeclareTextCompositeCommand{\'}{PU}{\texteta}{\83\256}% U+03AE
+% U+03AF GREEK SMALL LETTER IOTA WITH TONOS; iotatonos
+\DeclareTextCompositeCommand{\'}{PU}{\textiota}{\83\257}% U+03AF
+% U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+% AND TONOS; upsilondieresisto
+\DeclareTextCompositeCommand{\"}{PU}{\textupsilonacute}{\83\260}% U+03B0
+% U+03B1 GREEK SMALL LETTER ALPHA; alpha; \alpha (LaTeX)
+\DeclareTextCommand{\textalpha}{PU}{\83\261}%* U+03B1
+% U+03B2 GREEK SMALL LETTER BETA; beta; \beta (LaTeX)
+\DeclareTextCommand{\textbeta}{PU}{\83\262}%* U+03B2
+% U+03B3 GREEK SMALL LETTER GAMMA; gamma; \gamma (LaTeX)
+\DeclareTextCommand{\textgamma}{PU}{\83\263}%* U+03B3
+% U+03B4 GREEK SMALL LETTER DELTA; delta; \delta (LaTeX)
+\DeclareTextCommand{\textdelta}{PU}{\83\264}%* U+03B4
+% U+03B5 GREEK SMALL LETTER EPSILON; epsilon; \epsilon (LaTeX)
+\DeclareTextCommand{\textepsilon}{PU}{\83\265}%* U+03B5
+% U+03B6 GREEK SMALL LETTER ZETA; zeta; \zeta (LaTeX)
+\DeclareTextCommand{\textzeta}{PU}{\83\266}%* U+03B6
+% U+03B7 GREEK SMALL LETTER ETA; eta; \eta (LaTeX)
+\DeclareTextCommand{\texteta}{PU}{\83\267}%* U+03B7
+% U+03B8 GREEK SMALL LETTER THETA; theta; \theta (LaTeX)
+\DeclareTextCommand{\texttheta}{PU}{\83\270}%* U+03B8
+% U+03B9 GREEK SMALL LETTER IOTA; iota; \iota (LaTeX)
+\DeclareTextCommand{\textiota}{PU}{\83\271}%* U+03B9
+% U+03BA GREEK SMALL LETTER KAPPA; kappa; \kappa (LaTeX)
+\DeclareTextCommand{\textkappa}{PU}{\83\272}%* U+03BA
+% U+03BB GREEK SMALL LETTER LAMDA; lambda; \lambda (LaTeX)
+\DeclareTextCommand{\textlambda}{PU}{\83\273}%* U+03BB
+% U+03BC GREEK SMALL LETTER MU; mugreek, *mu; \mu (LaTeX)
+\DeclareTextCommand{\textmugreek}{PU}{\83\274}%* U+03BC
+% U+03BD GREEK SMALL LETTER NU; nu; \nu (LaTeX)
+\DeclareTextCommand{\textnu}{PU}{\83\275}%* U+03BD
+% U+03BE GREEK SMALL LETTER XI; xi; \xi (LaTeX)
+\DeclareTextCommand{\textxi}{PU}{\83\276}%* U+03BE
+% U+03BF GREEK SMALL LETTER OMICRON; omicron
+\DeclareTextCommand{\textomicron}{PU}{\83\277}% U+03BF
+% U+03C0 GREEK SMALL LETTER PI; pi; \pi (LaTeX)
+\DeclareTextCommand{\textpi}{PU}{\83\300}%* U+03C0
+% U+03C1 GREEK SMALL LETTER RHO; rho; \rho (LaTeX)
+\DeclareTextCommand{\textrho}{PU}{\83\301}%* U+03C1
+% U+03C2 GREEK SMALL LETTER FINAL SIGMA; *sigma1, sigmafinal
+\DeclareTextCommand{\textvarsigma}{PU}{\83\302}%* U+03C2
+% U+03C3 GREEK SMALL LETTER SIGMA; sigma; \sigma (LaTeX)
+\DeclareTextCommand{\textsigma}{PU}{\83\303}%* U+03C3
+% U+03C4 GREEK SMALL LETTER TAU; tau; \tau (LaTeX)
+\DeclareTextCommand{\texttau}{PU}{\83\304}%* U+03C4
+% U+03C5 GREEK SMALL LETTER UPSILON; upsilon; \upsilon (LaTeX)
+\DeclareTextCommand{\textupsilon}{PU}{\83\305}%* U+03C5
+% U+03C6 GREEK SMALL LETTER PHI; phi; \phi (LaTeX)
+\DeclareTextCommand{\textphi}{PU}{\83\306}%* U+03C6
+% U+03C7 GREEK SMALL LETTER CHI; chi; \chi (LaTeX)
+\DeclareTextCommand{\textchi}{PU}{\83\307}%* U+03C7
+% U+03C8 GREEK SMALL LETTER PSI; psi; \psi (LaTeX)
+\DeclareTextCommand{\textpsi}{PU}{\83\310}%* U+03C8
+% U+03C9 GREEK SMALL LETTER OMEGA; omega; \omega (LaTeX)
+\DeclareTextCommand{\textomega}{PU}{\83\311}%* U+03C9
+% U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA; iotadieresis
+\DeclareTextCompositeCommand{\"}{PU}{\textiota}{\83\312}% U+03CA
+% U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA; upsilondieresis
+\DeclareTextCompositeCommand{\"}{PU}{\textupsilon}{\83\313}% U+03CB
+% U+03CC GREEK SMALL LETTER OMICRON WITH TONOS; omicrontonos
+\DeclareTextCompositeCommand{\'}{PU}{\textomicron}{\83\314}% U+03CC
+% U+03CD GREEK SMALL LETTER UPSILON WITH TONOS; upsilontonos
+\DeclareTextCommand{\textupsilonacute}{PU}{\83\315}% U+03CD
+\DeclareTextCompositeCommand{\'}{PU}{\textupsilon}{\83\315}% U+03CD
+% U+03CE GREEK SMALL LETTER OMEGA WITH TONOS; omegatonos
+\DeclareTextCompositeCommand{\'}{PU}{\textomega}{\83\316}% U+03CE
+% U+03DA GREEK LETTER STIGMA; Stigmagreek
+\DeclareTextCommand{\textStigmagreek}{PU}{\83\332}% U+03DA
+% U+03DB GREEK SMALL LETTER STIGMA
+\DeclareTextCommand{\textstigmagreek}{PU}{\83\333}% U+03DB
+% U+03DC GREEK LETTER DIGAMMA; Digammagreek
+\DeclareTextCommand{\textDigammagreek}{PU}{\83\334}% U+03DC
+% U+03DD GREEK SMALL LETTER DIGAMMA
+\DeclareTextCommand{\textdigammagreek}{PU}{\83\335}% U+03DD
+%* \textdigammagreek -> \digamma (AmS)
+% U+03DE GREEK LETTER KOPPA; Koppagreek
+\DeclareTextCommand{\textKoppagreek}{PU}{\83\336}% U+03DE
+% U+03DF GREEK SMALL LETTER KOPPA
+\DeclareTextCommand{\textkoppagreek}{PU}{\83\337}% U+03DF
+% U+03E0 GREEK LETTER SAMPI; Sampigreek
+\DeclareTextCommand{\textSampigreek}{PU}{\83\340}% U+03E0
+% U+03E1 GREEK SMALL LETTER SAMPI
+\DeclareTextCommand{\textsampigreek}{PU}{\83\341}% U+03E1
+% U+03F6 GREEK REVERSED LUNATE EPSILON SYMBOL;
+% \backepsilon (AmS)
+\DeclareTextCommand{\textbackepsilon}{PU}{\83\366}% U+03F6
+% \end{macrocode}
+%
+% \subsubsection{Cyrillic: U+0400 to U+04FF}
+%
+% Thanks to Vladimir Volovich (\Email{vvv@vvv.vsu.ru}) for
+% the help with the Cyrillic glyph names.
+% \begin{macrocode}
+% U+0400 CYRILLIC CAPITAL LETTER IE WITH GRAVE
+\DeclareTextCompositeCommand{\`}{PU}{\CYRE}{\84\000}% U+0400
+% U+0401 CYRILLIC CAPITAL LETTER IO; Iocyrillic, *afii10023
+\DeclareTextCommand{\CYRYO}{PU}{\84\001}% U+0401
+\DeclareTextCompositeCommand{\"}{PU}{\CYRE}{\84\001}% U+0401
+% U+0402 CYRILLIC CAPITAL LETTER DJE; Djecyrillic, *afii10051
+\DeclareTextCommand{\CYRDJE}{PU}{\84\002}% U+0402
+% U+0403 CYRILLIC CAPITAL LETTER GJE; Gjecyrillic, *afii10052
+\DeclareTextCompositeCommand{\'}{PU}{\CYRG}{\84\003}% U+0403
+% U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE; Ecyrillic, *afii10053
+\DeclareTextCommand{\CYRIE}{PU}{\84\004}% U+0404
+% U+0405 CYRILLIC CAPITAL LETTER DZE; Dzecyrillic, *afii10054
+\DeclareTextCommand{\CYRDZE}{PU}{\84\005}% U+0405
+% U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;
+% Icyrillic, *afii10055
+\DeclareTextCommand{\CYRII}{PU}{\84\006}% U+0406
+% U+0407 CYRILLIC CAPITAL LETTER YI; Yicyrillic, *afii10056
+\DeclareTextCommand{\CYRYI}{PU}{\84\007}% U+0407
+\DeclareTextCompositeCommand{\"}{PU}{\CYRII}{\84\007}% U+0407
+% U+0408 CYRILLIC CAPITAL LETTER JE; Jecyrillic, *afii10057
+\DeclareTextCommand{\CYRJE}{PU}{\84\010}% U+0408
+% U+0409 CYRILLIC CAPITAL LETTER LJE; Ljecyrillic, *afii10058
+\DeclareTextCommand{\CYRLJE}{PU}{\84\011}% U+0409
+% U+040A CYRILLIC CAPITAL LETTER NJE; Njecyrillic, *afii10059
+\DeclareTextCommand{\CYRNJE}{PU}{\84\012}% U+040A
+% U+040B CYRILLIC CAPITAL LETTER TSHE; Tshecyrillic, *afii10060
+\DeclareTextCommand{\CYRTSHE}{PU}{\84\013}% U+040B
+% U+040C CYRILLIC CAPITAL LETTER KJE; Kjecyrillic, *afii10061
+\DeclareTextCompositeCommand{\'}{PU}{\CYRK}{\84\014}% U+040C
+% U+040D CYRILLIC CAPITAL LETTER I WITH GRAVE
+\DeclareTextCompositeCommand{\`}{PU}{\CYRI}{\84\015}% U+040D
+% U+040E CYRILLIC CAPITAL LETTER SHORT U; Ushortcyrillic, *afii10062
+\DeclareTextCommand{\CYRUSHRT}{PU}{\84\016}% U+040E
+\DeclareTextCompositeCommand{\U}{PU}{\CYRU}{\84\016}% U+040E
+% U+040F CYRILLIC CAPITAL LETTER DZHE; Dzhecyrillic, *afii10145
+\DeclareTextCommand{\CYRDZHE}{PU}{\84\017}% U+040F
+% U+0410 CYRILLIC CAPITAL LETTER A; Acyrillic, *afii10017
+\DeclareTextCommand{\CYRA}{PU}{\84\020}% U+0410
+% U+0411 CYRILLIC CAPITAL LETTER BE; Becyrillic, *afii10018
+\DeclareTextCommand{\CYRB}{PU}{\84\021}% U+0411
+% U+0412 CYRILLIC CAPITAL LETTER VE; Vecyrillic, *afii10019
+\DeclareTextCommand{\CYRV}{PU}{\84\022}% U+0412
+% U+0413 CYRILLIC CAPITAL LETTER GHE; Gecyrillic, *afii10020
+\DeclareTextCommand{\CYRG}{PU}{\84\023}% U+0413
+% U+0414 CYRILLIC CAPITAL LETTER DE; Decyrillic, *afii10021
+\DeclareTextCommand{\CYRD}{PU}{\84\024}% U+0414
+% U+0415 CYRILLIC CAPITAL LETTER IE; Iecyrillic, *afii10022
+\DeclareTextCommand{\CYRE}{PU}{\84\025}% U+0415
+% U+0416 CYRILLIC CAPITAL LETTER ZHE; Zhecyrillic, *afii10024
+\DeclareTextCommand{\CYRZH}{PU}{\84\026}% U+0416
+% U+0417 CYRILLIC CAPITAL LETTER ZE; Zecyrillic, *afii10025
+\DeclareTextCommand{\CYRZ}{PU}{\84\027}% U+0417
+% U+0418 CYRILLIC CAPITAL LETTER I; Iicyrillic, *afii10026
+\DeclareTextCommand{\CYRI}{PU}{\84\030}% U+0418
+% U+0419 CYRILLIC CAPITAL LETTER SHORT I; Iishortcyrillic, *afii10027
+\DeclareTextCommand{\CYRISHRT}{PU}{\84\031}% U+0419
+\DeclareTextCompositeCommand{\U}{PU}{\CYRI}{\84\031}% U+0419
+% U+041A CYRILLIC CAPITAL LETTER KA; Kacyrillic, *afii10028
+\DeclareTextCommand{\CYRK}{PU}{\84\032}% U+041A
+% U+041B CYRILLIC CAPITAL LETTER EL; Elcyrillic, *afii10029
+\DeclareTextCommand{\CYRL}{PU}{\84\033}% U+041B
+% U+041C CYRILLIC CAPITAL LETTER EM; Emcyrillic, *afii10030
+\DeclareTextCommand{\CYRM}{PU}{\84\034}% U+041C
+% U+041D CYRILLIC CAPITAL LETTER EN; Encyrillic, *afii10031
+\DeclareTextCommand{\CYRN}{PU}{\84\035}% U+041D
+% U+041E CYRILLIC CAPITAL LETTER O; Ocyrillic, *afii10032
+\DeclareTextCommand{\CYRO}{PU}{\84\036}% U+041E
+% U+041F CYRILLIC CAPITAL LETTER PE; Pecyrillic, *afii10033
+\DeclareTextCommand{\CYRP}{PU}{\84\037}% U+041F
+% U+0420 CYRILLIC CAPITAL LETTER ER; Ercyrillic, *afii10034
+\DeclareTextCommand{\CYRR}{PU}{\84\040}% U+0420
+% U+0421 CYRILLIC CAPITAL LETTER ES; Escyrillic, *afii10035
+\DeclareTextCommand{\CYRS}{PU}{\84\041}% U+0421
+% U+0422 CYRILLIC CAPITAL LETTER TE; Tecyrillic, *afii10036
+\DeclareTextCommand{\CYRT}{PU}{\84\042}% U+0422
+% U+0423 CYRILLIC CAPITAL LETTER U; Ucyrillic, *afii10037
+\DeclareTextCommand{\CYRU}{PU}{\84\043}% U+0423
+% U+0424 CYRILLIC CAPITAL LETTER EF; Efcyrillic, *afii10038
+\DeclareTextCommand{\CYRF}{PU}{\84\044}% U+0424
+% U+0425 CYRILLIC CAPITAL LETTER HA; Khacyrillic, *afii10039
+\DeclareTextCommand{\CYRH}{PU}{\84\045}% U+0425
+% U+0426 CYRILLIC CAPITAL LETTER TSE; Tsecyrillic, *afii10040
+\DeclareTextCommand{\CYRC}{PU}{\84\046}% U+0426
+% U+0427 CYRILLIC CAPITAL LETTER CHE; Checyrillic, *afii10041
+\DeclareTextCommand{\CYRCH}{PU}{\84\047}% U+0427
+% U+0428 CYRILLIC CAPITAL LETTER SHA; Shacyrillic, *afii10042
+\DeclareTextCommand{\CYRSH}{PU}{\84\050}% U+0428
+% U+0429 CYRILLIC CAPITAL LETTER SHCHA; Shchacyrillic, *afii10043
+\DeclareTextCommand{\CYRSHCH}{PU}{\84\051}% U+0429
+% U+042A CYRILLIC CAPITAL LETTER HARD SIGN;
+% Hardsigncyrillic, *afii10044
+\DeclareTextCommand{\CYRHRDSN}{PU}{\84\052}% U+042A
+% U+042B CYRILLIC CAPITAL LETTER YERU; Yericyrillic, *afii10045
+\DeclareTextCommand{\CYRERY}{PU}{\84\053}% U+042B
+% U+042C CYRILLIC CAPITAL LETTER SOFT SIGN;
+% Softsigncyrillic, *afii10046
+\DeclareTextCommand{\CYRSFTSN}{PU}{\84\054}% U+042C
+% U+042D CYRILLIC CAPITAL LETTER E; Ereversedcyrillic, *afii10047
+\DeclareTextCommand{\CYREREV}{PU}{\84\055}% U+042D
+% U+042E CYRILLIC CAPITAL LETTER YU; IUcyrillic, *afii10048
+\DeclareTextCommand{\CYRYU}{PU}{\84\056}% U+042E
+% U+042F CYRILLIC CAPITAL LETTER YA; IAcyrillic, *afii10049
+\DeclareTextCommand{\CYRYA}{PU}{\84\057}% U+042F
+% U+0430 CYRILLIC SMALL LETTER A; acyrillic, *afii10065
+\DeclareTextCommand{\cyra}{PU}{\84\060}% U+0430
+% U+0431 CYRILLIC SMALL LETTER BE; *afii10066, becyrillic
+\DeclareTextCommand{\cyrb}{PU}{\84\061}% U+0431
+% U+0432 CYRILLIC SMALL LETTER VE; *afii10067, vecyrillic
+\DeclareTextCommand{\cyrv}{PU}{\84\062}% U+0432
+% U+0433 CYRILLIC SMALL LETTER GHE; *afii10068, gecyrillic
+\DeclareTextCommand{\cyrg}{PU}{\84\063}% U+0433
+% U+0434 CYRILLIC SMALL LETTER DE; *afii10069, decyrillic
+\DeclareTextCommand{\cyrd}{PU}{\84\064}% U+0434
+% U+0435 CYRILLIC SMALL LETTER IE; *afii10070, iecyrillic
+\DeclareTextCommand{\cyre}{PU}{\84\065}% U+0435
+% U+0436 CYRILLIC SMALL LETTER ZHE; *afii10072, zhecyrillic
+\DeclareTextCommand{\cyrzh}{PU}{\84\066}% U+0436
+% U+0437 CYRILLIC SMALL LETTER ZE; *afii10073, zecyrillic
+\DeclareTextCommand{\cyrz}{PU}{\84\067}% U+0437
+% U+0438 CYRILLIC SMALL LETTER I; *afii10074, iicyrillic
+\DeclareTextCommand{\cyri}{PU}{\84\070}% U+0438
+% U+0439 CYRILLIC SMALL LETTER SHORT I; *afii10075, iishortcyrillic
+\DeclareTextCommand{\cyrishrt}{PU}{\84\071}% U+0439
+\DeclareTextCompositeCommand{\U}{PU}{\cyri}{\84\071}% U+0439
+% U+043A CYRILLIC SMALL LETTER KA; *afii10076, kacyrillic
+\DeclareTextCommand{\cyrk}{PU}{\84\072}% U+043A
+% U+043B CYRILLIC SMALL LETTER EL; *afii10077, elcyrillic
+\DeclareTextCommand{\cyrl}{PU}{\84\073}% U+043B
+% U+043C CYRILLIC SMALL LETTER EM; *afii10078, emcyrillic
+\DeclareTextCommand{\cyrm}{PU}{\84\074}% U+043C
+% U+043D CYRILLIC SMALL LETTER EN; *afii10079, encyrillic
+\DeclareTextCommand{\cyrn}{PU}{\84\075}% U+043D
+% U+043E CYRILLIC SMALL LETTER O; *afii10080, ocyrillic
+\DeclareTextCommand{\cyro}{PU}{\84\076}% U+043E
+% U+043F CYRILLIC SMALL LETTER PE; *afii10081, pecyrillic
+\DeclareTextCommand{\cyrp}{PU}{\84\077}% U+043F
+% U+0440 CYRILLIC SMALL LETTER ER; *afii10082, ercyrillic
+\DeclareTextCommand{\cyrr}{PU}{\84\100}% U+0440
+% U+0441 CYRILLIC SMALL LETTER ES; *afii10083, escyrillic
+\DeclareTextCommand{\cyrs}{PU}{\84\101}% U+0441
+% U+0442 CYRILLIC SMALL LETTER TE; *afii10084, tecyrillic
+\DeclareTextCommand{\cyrt}{PU}{\84\102}% U+0442
+% U+0443 CYRILLIC SMALL LETTER U; *afii10085, ucyrillic
+\DeclareTextCommand{\cyru}{PU}{\84\103}% U+0443
+% U+0444 CYRILLIC SMALL LETTER EF; *afii10086, efcyrillic
+\DeclareTextCommand{\cyrf}{PU}{\84\104}% U+0444
+% U+0445 CYRILLIC SMALL LETTER HA; *afii10087, khacyrillic
+\DeclareTextCommand{\cyrh}{PU}{\84\105}% U+0445
+% U+0446 CYRILLIC SMALL LETTER TSE; *afii10088, tsecyrillic
+\DeclareTextCommand{\cyrc}{PU}{\84\106}% U+0446
+% U+0447 CYRILLIC SMALL LETTER CHE; *afii10089, checyrillic
+\DeclareTextCommand{\cyrch}{PU}{\84\107}% U+0447
+% U+0448 CYRILLIC SMALL LETTER SHA; *afii10090, shacyrillic
+\DeclareTextCommand{\cyrsh}{PU}{\84\110}% U+0448
+% U+0449 CYRILLIC SMALL LETTER SHCHA; *afii10091, shchacyrillic
+\DeclareTextCommand{\cyrshch}{PU}{\84\111}% U+0449
+% U+044A CYRILLIC SMALL LETTER HARD SIGN; *afii10092, hardsigncyrillic
+\DeclareTextCommand{\cyrhrdsn}{PU}{\84\112}% U+044A
+%* \cyrhrdsn -> \hardsign (tipa)
+% U+044B CYRILLIC SMALL LETTER YERU; *afii10093, yericyrillic
+\DeclareTextCommand{\cyrery}{PU}{\84\113}% U+044B
+% U+044C CYRILLIC SMALL LETTER SOFT SIGN; *afii10094, softsigncyrillic
+\DeclareTextCommand{\cyrsftsn}{PU}{\84\114}% U+044C
+%* \cyrsftsn -> \softsign (tipa)
+% U+044D CYRILLIC SMALL LETTER E; *afii10095, ereversedcyrillic
+\DeclareTextCommand{\cyrerev}{PU}{\84\115}% U+044D
+% U+044E CYRILLIC SMALL LETTER YU; *afii10096, iucyrillic
+\DeclareTextCommand{\cyryu}{PU}{\84\116}% U+044E
+% U+044F CYRILLIC SMALL LETTER YA; *afii10097, iacyrillic
+\DeclareTextCommand{\cyrya}{PU}{\84\117}% U+044F
+% U+0450 CYRILLIC SMALL LETTER IE WITH GRAVE
+\DeclareTextCompositeCommand{\`}{PU}{\cyre}{\84\120}% U+0450
+% U+0451 CYRILLIC SMALL LETTER IO; *afii10071, iocyrillic
+\DeclareTextCommand{\cyryo}{PU}{\84\121}% U+0451
+\DeclareTextCompositeCommand{\"}{PU}{\cyre}{\84\121}% U+0451
+% U+0452 CYRILLIC SMALL LETTER DJE; *afii10099, djecyrillic
+\DeclareTextCommand{\cyrdje}{PU}{\84\122}% U+0452
+% U+0453 CYRILLIC SMALL LETTER GJE; *afii10100, gjecyrillic
+\DeclareTextCompositeCommand{\'}{PU}{\cyrg}{\84\123}% U+0453
+% U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE; *afii10101, ecyrillic
+\DeclareTextCommand{\cyrie}{PU}{\84\124}% U+0454
+% U+0455 CYRILLIC SMALL LETTER DZE; *afii10102, dzecyrillic
+\DeclareTextCommand{\cyrdze}{PU}{\84\125}% U+0455
+% U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;
+% *afii10103, icyrillic
+\DeclareTextCommand{\cyrii}{PU}{\84\126}% U+0456
+% U+0457 CYRILLIC SMALL LETTER YI; *afii10104, yicyrillic
+\DeclareTextCommand{\cyryi}{PU}{\84\127}% U+0457
+\DeclareTextCompositeCommand{\"}{PU}{\cyrii}{\84\127}% U+0457
+% U+0458 CYRILLIC SMALL LETTER JE; *afii10105, jecyrillic
+\DeclareTextCommand{\cyrje}{PU}{\84\130}% U+0458
+% U+0459 CYRILLIC SMALL LETTER LJE; *afii10106, ljecyrillic
+\DeclareTextCommand{\cyrlje}{PU}{\84\131}% U+0459
+% U+045A CYRILLIC SMALL LETTER NJE; *afii10107, njecyrillic
+\DeclareTextCommand{\cyrnje}{PU}{\84\132}% U+045A
+% U+045B CYRILLIC SMALL LETTER TSHE; *afii10108, tshecyrillic
+\DeclareTextCommand{\cyrtshe}{PU}{\84\133}% U+045B
+% U+045C CYRILLIC SMALL LETTER KJE; *afii10109, kjecyrillic
+\DeclareTextCompositeCommand{\'}{PU}{\cyrk}{\84\134}% U+045C
+% U+045D CYRILLIC SMALL LETTER I WITH GRAVE
+\DeclareTextCompositeCommand{\`}{PU}{\cyri}{\84\135}% U+045D
+% U+045E CYRILLIC SMALL LETTER SHORT U; *afii10110, ushortcyrillic
+\DeclareTextCommand{\cyrushrt}{PU}{\84\136}% U+045E
+\DeclareTextCompositeCommand{\U}{PU}{\curu}{\84\136}% U+045E
+% U+045F CYRILLIC SMALL LETTER DZHE; *afii10193, dzhecyrillic
+\DeclareTextCommand{\cyrdzhe}{PU}{\84\137}% U+045F
+% U+0460 CYRILLIC CAPITAL LETTER OMEGA; Omegacyrillic
+\DeclareTextCommand{\CYROMEGA}{PU}{\84\140}% U+0460
+% U+0461 CYRILLIC SMALL LETTER OMEGA; omegacyrillic
+\DeclareTextCommand{\cyromega}{PU}{\84\141}% U+0461
+% U+0462 CYRILLIC CAPITAL LETTER YAT; Yatcyrillic, *afii10146
+\DeclareTextCommand{\CYRYAT}{PU}{\84\142}% U+0462
+% U+0463 CYRILLIC SMALL LETTER YAT; *afii10194, yatcyrillic
+\DeclareTextCommand{\cyryat}{PU}{\84\143}% U+0463
+% U+0464 CYRILLIC CAPITAL LETTER IOTIFIED E; Eiotifiedcyrillic
+\DeclareTextCommand{\CYRIOTE}{PU}{\84\144}% U+0464
+% U+0465 CYRILLIC SMALL LETTER IOTIFIED E; eiotifiedcyrillic
+\DeclareTextCommand{\cyriote}{PU}{\84\145}% U+0465
+% U+0466 CYRILLIC CAPITAL LETTER LITTLE YUS; Yuslittlecyrillic
+\DeclareTextCommand{\CYRLYUS}{PU}{\84\146}% U+0466
+% U+0467 CYRILLIC SMALL LETTER LITTLE YUS; yuslittlecyrillic
+\DeclareTextCommand{\cyrlyus}{PU}{\84\147}% U+0467
+% U+0468 CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS; Yuslittleiotifiedcyrillic
+\DeclareTextCommand{\CYRIOTLYUS}{PU}{\84\150}% U+0468
+% U+0469 CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS; yuslittleiotifiedcyrillic
+\DeclareTextCommand{\cyriotlyus}{PU}{\84\151}% U+0469
+% U+046A CYRILLIC CAPITAL LETTER BIG YUS; Yusbigcyrillic
+\DeclareTextCommand{\CYRBYUS}{PU}{\84\152}% U+046A
+% U+046B CYRILLIC SMALL LETTER BIG YUS; yusbigcyrillic
+\DeclareTextCommand{\cyrbyus}{PU}{\84\153}% U+046B
+% U+046C CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS; Yusbigiotifiedcyrillic
+\DeclareTextCommand{\CYRIOTBYUS}{PU}{\84\154}% U+046C
+% U+046D CYRILLIC SMALL LETTER IOTIFIED BIG YUS; yusbigiotifiedcyrillic
+\DeclareTextCommand{\cyriotbyus}{PU}{\84\155}% U+046D
+% U+046E CYRILLIC CAPITAL LETTER KSI; Ksicyrillic
+\DeclareTextCommand{\CYRKSI}{PU}{\84\156}% U+046E
+% U+046F CYRILLIC SMALL LETTER KSI; ksicyrillic
+\DeclareTextCommand{\cyrksi}{PU}{\84\157}% U+046F
+% U+0470 CYRILLIC CAPITAL LETTER PSI; Psicyrillic
+\DeclareTextCommand{\CYRPSI}{PU}{\84\160}% U+0470
+% U+0471 CYRILLIC SMALL LETTER PSI; psicyrillic
+\DeclareTextCommand{\cyrpsi}{PU}{\84\161}% U+0471
+% U+0472 CYRILLIC CAPITAL LETTER FITA; Fitacyrillic, *afii10147
+\DeclareTextCommand{\CYRFITA}{PU}{\84\162}% U+0472
+% U+0473 CYRILLIC SMALL LETTER FITA; *afii10195, fitacyrillic
+\DeclareTextCommand{\cyrfita}{PU}{\84\163}% U+0473
+% U+0474 CYRILLIC CAPITAL LETTER IZHITSA; Izhitsacyrillic, *afii10148
+\DeclareTextCommand{\CYRIZH}{PU}{\84\164}% U+0474
+% U+0475 CYRILLIC SMALL LETTER IZHITSA; *afii10196, izhitsacyrillic
+\DeclareTextCommand{\cyrizh}{PU}{\84\165}% U+0475
+% U+0476 CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE
+% GRAVE ACCENT; Izhitsadblgravecyrillic
+\DeclareTextCompositeCommand{\C}{PU}{\CYRIZH}{\84\166}% U+0476
+% U+0477 CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE
+% GRAVE ACCENT; izhitsadblgravecyrillic
+\DeclareTextCompositeCommand{\C}{PU}{\cyrizh}{\84\167}% U+0477
+% U+0478 CYRILLIC CAPITAL LETTER UK; Ukcyrillic
+\DeclareTextCommand{\CYRUK}{PU}{\84\170}% U+0478
+% U+0479 CYRILLIC SMALL LETTER UK; ukcyrillic
+\DeclareTextCommand{\cyruk}{PU}{\84\171}% U+0479
+% U+047A CYRILLIC CAPITAL LETTER ROUND OMEGA; Omegaroundcyrillic
+\DeclareTextCommand{\CYROMEGARND}{PU}{\84\172}% U+047A
+% U+047B CYRILLIC SMALL LETTER ROUND OMEGA; omegaroundcyrillic
+\DeclareTextCommand{\cyromegarnd}{PU}{\84\173}% U+047B
+% U+047C CYRILLIC CAPITAL LETTER OMEGA WITH TITLO; Omegatitlocyrillic
+\DeclareTextCommand{\CYROMEGATITLO}{PU}{\84\174}% U+047C
+% U+047D CYRILLIC SMALL LETTER OMEGA WITH TITLO; omegatitlocyrillic
+\DeclareTextCommand{\cyromegatitlo}{PU}{\84\175}% U+047D
+% U+047E CYRILLIC CAPITAL LETTER OT; Otcyrillic
+\DeclareTextCommand{\CYROT}{PU}{\84\176}% U+047E
+% U+047F CYRILLIC SMALL LETTER OT; otcyrillic
+\DeclareTextCommand{\cyrot}{PU}{\84\177}% U+047F
+% U+0480 CYRILLIC CAPITAL LETTER KOPPA; Koppacyrillic
+\DeclareTextCommand{\CYRKOPPA}{PU}{\84\200}% U+0480
+% U+0481 CYRILLIC SMALL LETTER KOPPA; koppacyrillic
+\DeclareTextCommand{\cyrkoppa}{PU}{\84\201}% U+0481
+% U+0482 CYRILLIC THOUSANDS SIGN; thousandcyrillic
+\DeclareTextCommand{\cyrthousands}{PU}{\84\202}% U+0482
+% \end{macrocode}
+% |\84\203|: U+0483 COMBINING CYRILLIC TITLO; titlocyrilliccmb\\
+% |\84\204|: U+0484 COMBINING CYRILLIC PALATALIZATION; palatalizationcyrilliccmb\\
+% |\84\205|: U+0485 COMBINING CYRILLIC DASIA PNEUMATA; dasiapneumatacyrilliccmb\\
+% |\84\206|: U+0486 COMBINING CYRILLIC PSILI PNEUMATA; psilipneumatacyrilliccmb\\
+% |\84\207|: U+0487 COMBINING CYRILLIC POKRYTIE\\
+% |\84\210|: U+0488 COMBINING CYRILLIC HUNDRED THOUSANDS SIGN\\
+% |\84\211|: U+0489 COMBINING CYRILLIC MILLIONS SIGN
+% \begin{macrocode}
+% U+048A CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+\DeclareTextCommand{\CYRISHRTDSC}{PU}{\84\212}% U+048A
+% U+048B CYRILLIC SMALL LETTER SHORT I WITH TAIL
+\DeclareTextCommand{\cyrishrtdsc}{PU}{\84\213}% U+048B
+% U+048C CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+\DeclareTextCommand{\CYRSEMISFTSN}{PU}{\84\214}% U+048C
+% U+048D CYRILLIC SMALL LETTER SEMISOFT SIGN
+\DeclareTextCommand{\cyrsemisftsn}{PU}{\84\215}% U+048D
+% U+048E CYRILLIC CAPITAL LETTER ER WITH TICK
+\DeclareTextCommand{\CYRRTICK}{PU}{\84\216}% U+048E
+% U+048F CYRILLIC SMALL LETTER ER WITH TICK
+\DeclareTextCommand{\cyrrtick}{PU}{\84\217}% U+048F
+% U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN; Gheupturncyrillic, *afii10050
+\DeclareTextCommand{\CYRGUP}{PU}{\84\220}% U+0490
+% U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN; *afii10098, gheupturncyrillic
+\DeclareTextCommand{\cyrgup}{PU}{\84\221}% U+0491
+% U+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE; Ghestrokecyrillic
+\DeclareTextCommand{\CYRGHCRS}{PU}{\84\222}% U+0492
+% U+0493 CYRILLIC SMALL LETTER GHE WITH STROKE; ghestrokecyrillic
+\DeclareTextCommand{\cyrghcrs}{PU}{\84\223}% U+0493
+% U+0494 CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;
+% Ghemiddlehookcyrillic
+\DeclareTextCommand{\CYRGHK}{PU}{\84\224}% U+0494
+% U+0495 CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;
+% ghemiddlehookcyrillic
+\DeclareTextCommand{\cyrghk}{PU}{\84\225}% U+0495
+% U+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;
+% Zhedescendercyrillic
+\DeclareTextCommand{\CYRZHDSC}{PU}{\84\226}% U+0496
+% U+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER;
+% zhedescendercyrillic
+\DeclareTextCommand{\cyrzhdsc}{PU}{\84\227}% U+0497
+% U+0498 CYRILLIC CAPITAL LETTER ZE WITH DESCENDER; Zedescendercyrillic
+\DeclareTextCommand{\CYRZDSC}{PU}{\84\230}% U+0498
+\DeclareTextCompositeCommand{\c}{PU}{\CYRZ}{\84\230}% U+0498
+% U+0499 CYRILLIC SMALL LETTER ZE WITH DESCENDER; zedescendercyrillic
+\DeclareTextCommand{\cyrzdsc}{PU}{\84\231}% U+0499
+\DeclareTextCompositeCommand{\c}{PU}{\cyrz}{\84\231}% U+0499
+% U+049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER; Kadescendercyrillic
+\DeclareTextCommand{\CYRKDSC}{PU}{\84\232}% U+049A
+% U+049B CYRILLIC SMALL LETTER KA WITH DESCENDER; kadescendercyrillic
+\DeclareTextCommand{\cyrkdsc}{PU}{\84\233}% U+049B
+% U+049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;
+% Kaverticalstrokecyrillic
+\DeclareTextCommand{\CYRKVCRS}{PU}{\84\234}% U+049C
+% U+049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;
+% kaverticalstrokecyrillic
+\DeclareTextCommand{\cyrkvcrs}{PU}{\84\235}% U+049D
+% U+049E CYRILLIC CAPITAL LETTER KA WITH STROKE; Kastrokecyrillic
+\DeclareTextCommand{\CYRKHCRS}{PU}{\84\236}% U+049E
+% U+049F CYRILLIC SMALL LETTER KA WITH STROKE; kastrokecyrillic
+\DeclareTextCommand{\cyrkhcrs}{PU}{\84\237}% U+049F
+% U+04A0 CYRILLIC CAPITAL LETTER BASHKIR KA; Kabashkircyrillic
+\DeclareTextCommand{\CYRKBEAK}{PU}{\84\240}% U+04A0
+% U+04A1 CYRILLIC SMALL LETTER BASHKIR KA; kabashkircyrillic
+\DeclareTextCommand{\cyrkbeak}{PU}{\84\241}% U+04A1
+% U+04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER; Endescendercyrillic
+\DeclareTextCommand{\CYRNDSC}{PU}{\84\242}% U+04A2
+% U+04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER; endescendercyrillic
+\DeclareTextCommand{\cyrndsc}{PU}{\84\243}% U+04A3
+% U+04A4 CYRILLIC CAPITAL LIGATURE EN GHE; Enghecyrillic
+\DeclareTextCommand{\CYRNG}{PU}{\84\244}% U+04A4
+% U+04A5 CYRILLIC SMALL LIGATURE EN GHE; enghecyrillic
+\DeclareTextCommand{\cyrng}{PU}{\84\245}% U+04A5
+% U+04A6 CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK; Pemiddlehookcyrillic
+\DeclareTextCommand{\CYRPHK}{PU}{\84\246}% U+04A6
+% U+04A7 CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK; pemiddlehookcyrillic
+\DeclareTextCommand{\cyrphk}{PU}{\84\247}% U+04A7
+% U+04A8 CYRILLIC CAPITAL LETTER ABKHASIAN HA; Haabkhasiancyrillic
+\DeclareTextCommand{\CYRABHHA}{PU}{\84\250}% U+04A8
+% U+04A9 CYRILLIC SMALL LETTER ABKHASIAN HA; haabkhasiancyrillic
+\DeclareTextCommand{\cyrabhha}{PU}{\84\251}% U+04A9
+% U+04AA CYRILLIC CAPITAL LETTER ES WITH DESCENDER; Esdescendercyrillic
+\DeclareTextCommand{\CYRSDSC}{PU}{\84\252}% U+04AA
+\DeclareTextCompositeCommand{\CYRSDSC}{PU}{\CYRS}{\84\252}% U+04AA
+% U+04AB CYRILLIC SMALL LETTER ES WITH DESCENDER; esdescendercyrillic
+\DeclareTextCommand{\cyrsdsc}{PU}{\84\253}% U+04AB
+\DeclareTextCompositeCommand{\k}{PU}{\cyrs}{\84\253}% U+04AB
+% U+04AC CYRILLIC CAPITAL LETTER TE WITH DESCENDER; Tedescendercyrillic
+\DeclareTextCommand{\CYRTDSC}{PU}{\84\254}% U+04AC
+% U+04AD CYRILLIC SMALL LETTER TE WITH DESCENDER; tedescendercyrillic
+\DeclareTextCommand{\cyrtdsc}{PU}{\84\255}% U+04AD
+% U+04AE CYRILLIC CAPITAL LETTER STRAIGHT U; Ustraightcyrillic
+\DeclareTextCommand{\CYRY}{PU}{\84\256}% U+04AE
+% U+04AF CYRILLIC SMALL LETTER STRAIGHT U; ustraightcyrillic
+\DeclareTextCommand{\cyry}{PU}{\84\257}% U+04AF
+% U+04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE; Ustraightstrokecyrillic
+\DeclareTextCommand{\CYRYHCRS}{PU}{\84\260}% U+04B0
+% U+04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE; ustraightstrokecyrillic
+\DeclareTextCommand{\cyryhcrs}{PU}{\84\261}% U+04B1
+% U+04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER; Hadescendercyrillic
+\DeclareTextCommand{\CYRHDSC}{PU}{\84\262}% U+04B2
+% U+04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER; hadescendercyrillic
+\DeclareTextCommand{\cyrhdsc}{PU}{\84\263}% U+04B3
+% U+04B4 CYRILLIC CAPITAL LIGATURE TE TSE; Tetsecyrillic
+\DeclareTextCommand{\CYRTETSE}{PU}{\84\264}% U+04B4
+% U+04B5 CYRILLIC SMALL LIGATURE TE TSE; tetsecyrillic
+\DeclareTextCommand{\cyrtetse}{PU}{\84\265}% U+04B5
+% U+04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;
+% Chedescendercyrillic
+\DeclareTextCommand{\CYRCHRDSC}{PU}{\84\266}% U+04B6
+% U+04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER; chedescendercyrillic
+\DeclareTextCommand{\cyrchrdsc}{PU}{\84\267}% U+04B7
+% U+04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;
+% Cheverticalstrokecyrillic
+\DeclareTextCommand{\CYRCHVCRS}{PU}{\84\270}% U+04B8
+% U+04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;
+% cheverticalstrokecyrillic
+\DeclareTextCommand{\cyrchvcrs}{PU}{\84\271}% U+04B9
+% U+04BA CYRILLIC CAPITAL LETTER SHHA; Shhacyrillic
+\DeclareTextCommand{\CYRSHHA}{PU}{\84\272}% U+04BA
+% U+04BB CYRILLIC SMALL LETTER SHHA; shhacyrillic
+\DeclareTextCommand{\cyrshha}{PU}{\84\273}% U+04BB
+% U+04BC CYRILLIC CAPITAL LETTER ABKHASIAN CHE; Cheabkhasiancyrillic
+\DeclareTextCommand{\CYRABHCH}{PU}{\84\274}% U+04BC
+% U+04BD CYRILLIC SMALL LETTER ABKHASIAN CHE; cheabkhasiancyrillic
+\DeclareTextCommand{\cyrabhch}{PU}{\84\275}% U+04BD
+% U+04BE CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER; Chedescenderabkhasiancyrillic
+\DeclareTextCommand{\CYRABHCHDSC}{PU}{\84\276}% U+04BE
+\DeclareTextCompositeCommand{\k}{PU}{\CYRABHCH}{\84\276}% U+04BE
+% U+04BF CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER; chedescenderabkhasiancyrillic
+\DeclareTextCommand{\cyrabhchdsc}{PU}{\84\277}% U+04BF
+\DeclareTextCompositeCommand{\k}{PU}{\cyrabhch}{\84\277}% U+04BF
+% U+04C0 CYRILLIC LETTER PALOCHKA; palochkacyrillic
+\DeclareTextCommand{\CYRpalochka}{PU}{\84\300}% U+04C0
+% U+04C1 CYRILLIC CAPITAL LETTER ZHE WITH BREVE; Zhebrevecyrillic
+\DeclareTextCompositeCommand{\U}{PU}{\CYRZH}{\84\301}% U+04C1
+% U+04C2 CYRILLIC SMALL LETTER ZHE WITH BREVE; zhebrevecyrillic
+\DeclareTextCompositeCommand{\U}{PU}{\cyrzh}{\84\302}% U+04C2
+% U+04C3 CYRILLIC CAPITAL LETTER KA WITH HOOK; Kahookcyrillic
+\DeclareTextCommand{\CYRKHK}{PU}{\84\303}% U+04C3
+% U+04C4 CYRILLIC SMALL LETTER KA WITH HOOK; kahookcyrillic
+\DeclareTextCommand{\cyrkhk}{PU}{\84\304}% U+04C4
+% U+04C5 CYRILLIC CAPITAL LETTER EL WITH TAIL
+\DeclareTextCommand{\CYRLDSC}{PU}{\84\305}% U+04C5
+% U+04C6 CYRILLIC SMALL LETTER EL WITH TAIL
+\DeclareTextCommand{\cyrldsc}{PU}{\84\306}% U+04C6
+% U+04C7 CYRILLIC CAPITAL LETTER EN WITH HOOK; Enhookcyrillic
+\DeclareTextCommand{\CYRNHK}{PU}{\84\307}% U+04C7
+% U+04C8 CYRILLIC SMALL LETTER EN WITH HOOK; enhookcyrillic
+\DeclareTextCommand{\cyrnhk}{PU}{\84\310}% U+04C8
+% U+04CB CYRILLIC CAPITAL LETTER KHAKASSIAN CHE; Chekhakassiancyrillic
+\DeclareTextCommand{\CYRCHLDSC}{PU}{\84\313}% U+04CB
+% U+04CC CYRILLIC SMALL LETTER KHAKASSIAN CHE; chekhakassiancyrillic
+\DeclareTextCommand{\cyrchldsc}{PU}{\84\314}% U+04CC
+% U+04CD CYRILLIC CAPITAL LETTER EM WITH TAIL
+\DeclareTextCommand{\CYRMDSC}{PU}{\84\315}% U+04CD
+% U+04CE CYRILLIC SMALL LETTER EM WITH TAIL
+\DeclareTextCommand{\cyrmdsc}{PU}{\84\316}% U+04CE
+% \end{macrocode}
+% |\84\317|: U+04CF CYRILLIC SMALL LETTER PALOCHKA
+% \begin{macrocode}
+% U+04D0 CYRILLIC CAPITAL LETTER A WITH BREVE; Abrevecyrillic
+\DeclareTextCompositeCommand{\U}{PU}{\CYRA}{\84\320}% U+04D0
+% U+04D1 CYRILLIC SMALL LETTER A WITH BREVE; abrevecyrillic
+\DeclareTextCompositeCommand{\U}{PU}{\cyra}{\84\321}% U+04D1
+% U+04D2 CYRILLIC CAPITAL LETTER A WITH DIAERESIS; Adieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\CYRA}{\84\322}% U+04D2
+% U+04D3 CYRILLIC SMALL LETTER A WITH DIAERESIS; adieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\cyra}{\84\323}% U+04D3
+% U+04D4 CYRILLIC CAPITAL LIGATURE A IE; Aiecyrillic
+\DeclareTextCommand{\CYRAE}{PU}{\84\324}% U+04D4
+% U+04D5 CYRILLIC SMALL LIGATURE A IE; aiecyrillic
+\DeclareTextCommand{\cyrae}{PU}{\84\325}% U+04D5
+% U+04D6 CYRILLIC CAPITAL LETTER IE WITH BREVE; Iebrevecyrillic
+\DeclareTextCompositeCommand{\U}{PU}{\CYRE}{\84\326}% U+04D6
+% U+04D7 CYRILLIC SMALL LETTER IE WITH BREVE; iebrevecyrillic
+\DeclareTextCompositeCommand{\U}{PU}{\cyre}{\84\327}% U+04D7
+% U+04D8 CYRILLIC CAPITAL LETTER SCHWA; Schwacyrillic
+\DeclareTextCommand{\CYRSCHWA}{PU}{\84\330}% U+04D8
+% U+04D9 CYRILLIC SMALL LETTER SCHWA; *afii10846, schwacyrillic
+\DeclareTextCommand{\cyrschwa}{PU}{\84\331}% U+04D9
+% U+04DA CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;
+% Schwadieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\CYRSCHWA}{\84\332}% U+04DA
+% U+04DB CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;
+% schwadieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\cyrschwa}{\84\333}% U+04DB
+% U+04DC CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS; Zhedieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\CYRZH}{\84\334}% U+04DC
+% U+04DD CYRILLIC SMALL LETTER ZHE WITH DIAERESIS; zhedieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\cyrzh}{\84\335}% U+04DD
+% U+04DE CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS; Zedieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\CYRZ}{\84\336}% U+04DE
+% U+04DF CYRILLIC SMALL LETTER ZE WITH DIAERESIS; zedieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\cyrz}{\84\337}% U+04DF
+% U+04E0 CYRILLIC CAPITAL LETTER ABKHASIAN DZE; Dzeabkhasiancyrillic
+\DeclareTextCommand{\CYRABHDZE}{PU}{\84\340}% U+04E0
+% U+04E1 CYRILLIC SMALL LETTER ABKHASIAN DZE; dzeabkhasiancyrillic
+\DeclareTextCommand{\cyrabhdze}{PU}{\84\341}% U+04E1
+% U+04E2 CYRILLIC CAPITAL LETTER I WITH MACRON; Imacroncyrillic
+\DeclareTextCompositeCommand{\=}{PU}{\CYRI}{\84\342}% U+04E2
+% U+04E3 CYRILLIC SMALL LETTER I WITH MACRON; imacroncyrillic
+\DeclareTextCompositeCommand{\=}{PU}{\cyri}{\84\343}% U+04E3
+% U+04E4 CYRILLIC CAPITAL LETTER I WITH DIAERESIS; Idieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\CYRI}{\84\344}% U+04E4
+% U+04E5 CYRILLIC SMALL LETTER I WITH DIAERESIS; idieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\cyri}{\84\345}% U+04E5
+% U+04E6 CYRILLIC CAPITAL LETTER O WITH DIAERESIS; Odieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\CYRO}{\84\346}% U+04E6
+% U+04E7 CYRILLIC SMALL LETTER O WITH DIAERESIS; odieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\cyro}{\84\347}% U+04E7
+% U+04E8 CYRILLIC CAPITAL LETTER BARRED O; Obarredcyrillic
+\DeclareTextCommand{\CYROTLD}{PU}{\84\350}% U+04E8
+% U+04E9 CYRILLIC SMALL LETTER BARRED O; obarredcyrillic
+\DeclareTextCommand{\cyrotld}{PU}{\84\351}% U+04E9
+% U+04EA CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;
+% Obarreddieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\CYROTLD}{\84\352}% U+04EA
+% U+04EB CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;
+% obarreddieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\cyrotld}{\84\353}% U+04EB
+% U+04EC CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+\DeclareTextCompositeCommand{\"}{PU}{\CYREREV}{\84\354}% U+04EC
+% U+04ED CYRILLIC SMALL LETTER E WITH DIAERESIS
+\DeclareTextCompositeCommand{\"}{PU}{\cyreref}{\84\355}% U+04ED
+% U+04EE CYRILLIC CAPITAL LETTER U WITH MACRON; Umacroncyrillic
+\DeclareTextCompositeCommand{\=}{PU}{\CYRU}{\84\356}% U+04EE
+% U+04EF CYRILLIC SMALL LETTER U WITH MACRON; umacroncyrillic
+\DeclareTextCompositeCommand{\=}{PU}{\cyru}{\84\357}% U+04EF
+% U+04F0 CYRILLIC CAPITAL LETTER U WITH DIAERESIS; Udieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\CYRU}{\84\360}% U+04F0
+% U+04F1 CYRILLIC SMALL LETTER U WITH DIAERESIS; udieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\cyru}{\84\361}% U+04F1
+% U+04F2 CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE; Uhungarumlautcyrillic
+\DeclareTextCompositeCommand{\H}{PU}{\CYRU}{\84\362}% U+04F2
+% U+04F3 CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE; uhungarumlautcyrillic
+\DeclareTextCompositeCommand{\H}{PU}{\cyru}{\84\363}% U+04F3
+% U+04F4 CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS; Chedieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\CYRCH}{\84\364}% U+04F4
+% U+04F5 CYRILLIC SMALL LETTER CHE WITH DIAERESIS; chedieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\cyrch}{\84\365}% U+04F5
+% U+04F6 CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+\DeclareTextCommand{\CYRGDSC}{PU}{\84\366}% U+04F6
+% U+04F7 CYRILLIC SMALL LETTER GHE WITH DESCENDER
+\DeclareTextCommand{\cyrgdsc}{PU}{\84\367}% U+04F7
+% U+04F8 CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS; Yerudieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\CYRERY}{\84\370}% U+04F8
+% U+04F9 CYRILLIC SMALL LETTER YERU WITH DIAERESIS; yerudieresiscyrillic
+\DeclareTextCompositeCommand{\"}{PU}{\cyrery}{\84\371}% U+04F9
+% \end{macrocode}
+% |\84\372|: U+04FA CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK\\
+% |\84\373|: U+04FB CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
+% \begin{macrocode}
+% U+04FC CYRILLIC CAPITAL LETTER HA WITH HOOK
+\DeclareTextCommand{\CYRHHK}{PU}{\84\374}% U+04FC
+% U+04FD CYRILLIC SMALL LETTER HA WITH HOOK
+\DeclareTextCommand{\cyrhhk}{PU}{\84\375}% U+04FD
+% \end{macrocode}
+% |\84\376|: U+04FE CYRILLIC CAPITAL LETTER HA WITH STROKE\\
+% |\84\377|: U+04FF CYRILLIC SMALL LETTER HA WITH STROKE
+%
+% \subsubsection{Hebrew: U+0590 to U+05FF}
+%
+% Macro names are taken from \texttt{he8enc.def}.
+% \begin{macrocode}
+% U+05C3 HEBREW PUNCTUATION SOF PASUQ
+\DeclareTextCommand{\sofpasuq}{PU}{\85\303}% U+05C3
+% U+05D0 HEBREW LETTER ALEF
+\DeclareTextCommand{\hebalef}{PU}{\85\320}% U+05D0
+% U+05D1 HEBREW LETTER BET
+\DeclareTextCommand{\hebbet}{PU}{\85\321}% U+05D1
+% U+05D2 HEBREW LETTER GIMEL
+\DeclareTextCommand{\hebgimel}{PU}{\85\322}% U+05D2
+% U+05D3 HEBREW LETTER DALET
+\DeclareTextCommand{\hebdalet}{PU}{\85\323}% U+05D3
+% U+05D4 HEBREW LETTER HE
+\DeclareTextCommand{\hebhe}{PU}{\85\324}% U+05D4
+% U+05D5 HEBREW LETTER VAV
+\DeclareTextCommand{\hebvav}{PU}{\85\325}% U+05D5
+% U+05D6 HEBREW LETTER ZAYIN
+\DeclareTextCommand{\hebzayin}{PU}{\85\326}% U+05D6
+% U+05D7 HEBREW LETTER HET
+\DeclareTextCommand{\hebhet}{PU}{\85\327}% U+05D7
+% U+05D8 HEBREW LETTER TET
+\DeclareTextCommand{\hebtet}{PU}{\85\330}% U+05D8
+% U+05D9 HEBREW LETTER YOD
+\DeclareTextCommand{\hebyod}{PU}{\85\331}% U+05D9
+% U+05DA HEBREW LETTER FINAL KAF
+\DeclareTextCommand{\hebfinalkaf}{PU}{\85\332}% U+05DA
+% U+05DB HEBREW LETTER KAF
+\DeclareTextCommand{\hebkaf}{PU}{\85\333}% U+05DB
+% U+05DC HEBREW LETTER LAMED
+\DeclareTextCommand{\heblamed}{PU}{\85\334}% U+05DC
+% U+05DD HEBREW LETTER FINAL MEM
+\DeclareTextCommand{\hebfinalmem}{PU}{\85\335}% U+05DD
+% U+05DE HEBREW LETTER MEM
+\DeclareTextCommand{\hebmem}{PU}{\85\336}% U+05DE
+% U+05DF HEBREW LETTER FINAL NUN
+\DeclareTextCommand{\hebfinalnun}{PU}{\85\337}% U+05DF
+% U+05E0 HEBREW LETTER NUN
+\DeclareTextCommand{\hebnun}{PU}{\85\340}% U+05E0
+% U+05E1 HEBREW LETTER SAMEKH
+\DeclareTextCommand{\hebsamekh}{PU}{\85\341}% U+05E1
+% U+05E2 HEBREW LETTER AYIN
+\DeclareTextCommand{\hebayin}{PU}{\85\342}% U+05E2
+% U+05E3 HEBREW LETTER FINAL PE
+\DeclareTextCommand{\hebfinalpe}{PU}{\85\343}% U+05E3
+% U+05E4 HEBREW LETTER PE
+\DeclareTextCommand{\hebpe}{PU}{\85\344}% U+05E4
+% U+05E5 HEBREW LETTER FINAL TSADI
+\DeclareTextCommand{\hebfinaltsadi}{PU}{\85\345}% U+05E5
+% U+05E6 HEBREW LETTER TSADI
+\DeclareTextCommand{\hebtsadi}{PU}{\85\346}% U+05E6
+% U+05E7 HEBREW LETTER QOF
+\DeclareTextCommand{\hebqof}{PU}{\85\347}% U+05E7
+% U+05E8 HEBREW LETTER RESH
+\DeclareTextCommand{\hebresh}{PU}{\85\350}% U+05E8
+% U+05E9 HEBREW LETTER SHIN
+\DeclareTextCommand{\hebshin}{PU}{\85\351}% U+05E9
+%* \hebshin -> \hebsin (he8)
+% U+05EA HEBREW LETTER TAV
+\DeclareTextCommand{\hebtav}{PU}{\85\352}% U+05EA
+% U+05F0 HEBREW LIGATURE YIDDISH DOUBLE VAV
+\DeclareTextCommand{\doublevav}{PU}{\85\360}% U+05F0
+% U+05F1 HEBREW LIGATURE YIDDISH VAV YOD
+\DeclareTextCommand{\vavyod}{PU}{\85\361}% U+05F1
+% U+05F2 HEBREW LIGATURE YIDDISH DOUBLE YOD
+\DeclareTextCommand{\doubleyod}{PU}{\85\362}% U+05F2
+% \end{macrocode}
+%
+% \subsubsection{Thai: U+0E00 to U+0E7F}
+%
+% \begin{macrocode}
+% U+0E3F THAI CURRENCY SYMBOL BAHT; bahtthai
+\DeclareTextCommand{\textbaht}{PU}{\9016\077}% U+0E3F
+% \end{macrocode}
+%
+% \subsubsection{Phonetic Extensions: U+1D00 to U+1D7F}
+%
+% \begin{macrocode}
+% U+1D00 LATIN LETTER SMALL CAPITAL A; \textsca (tipa)
+\DeclareTextCommand{\textsca}{PU}{\9035\000}% U+1D00
+% U+1D05 LATIN LETTER SMALL CAPITAL D; \scd (wsuipa)
+\DeclareTextCommand{\textscd}{PU}{\9035\005}%* U+1D05
+% U+1D07 LATIN LETTER SMALL CAPITAL E; \textsce (tipa)
+\DeclareTextCommand{\textsce}{PU}{\9035\007}% U+1D07
+% U+1D0A LATIN LETTER SMALL CAPITAL J; \textscj (tipa)
+\DeclareTextCommand{\textscj}{PU}{\9035\012}% U+1D0A
+% U+1D0B LATIN LETTER SMALL CAPITAL K; \textsck (tipx)
+\DeclareTextCommand{\textPUsck}{PU}{\9035\013}% U+1D0B
+%* \textPUsck -> \textsck (tipx)
+% U+1D0D LATIN LETTER SMALL CAPITAL M; \textscm (tipx)
+\DeclareTextCommand{\textPUscm}{PU}{\9035\015}% U+1D0D
+%* \textPUscm -> \textscm (tipx)
+% U+1D18 LATIN LETTER SMALL CAPITAL P; \textscp (tipx)
+\DeclareTextCommand{\textPUscp}{PU}{\9035\030}% U+1D18
+%* \textPUscp -> \textscp (tipx)
+% U+1D19 LATIN LETTER SMALL CAPITAL REVERSED R; \textrevscr (tipx)
+\DeclareTextCommand{\textPUrevscr}{PU}{\9035\031}% U+1D19
+%* \textPUrevscr -> \textrevscr (tipx)
+% U+1D1C LATIN LETTER SMALL CAPITAL U; \textscu (tipa), \scu (wsuipa)
+\DeclareTextCommand{\textscu}{PU}{\9035\034}%* U+1D1C
+% U+1D62 LATIN SUBSCRIPT SMALL LETTER I
+\DeclareTextCommand{\textiinferior}{PU}{\9035\142}%* U+1D62
+% U+1D63 LATIN SUBSCRIPT SMALL LETTER R
+\DeclareTextCommand{\textrinferior}{PU}{\9035\143}%* U+1D63
+% U+1D64 LATIN SUBSCRIPT SMALL LETTER U
+\DeclareTextCommand{\textuinferior}{PU}{\9035\144}%* U+1D64
+% U+1D65 LATIN SUBSCRIPT SMALL LETTER V
+\DeclareTextCommand{\textvinferior}{PU}{\9035\145}%* U+1D65
+% U+1D66 GREEK SUBSCRIPT SMALL LETTER BETA
+\DeclareTextCommand{\textbetainferior}{PU}{\9035\146}%* U+1D66
+% U+1D67 GREEK SUBSCRIPT SMALL LETTER GAMMA
+\DeclareTextCommand{\textgammainferior}{PU}{\9035\147}%* U+1D67
+% U+1D68 GREEK SUBSCRIPT SMALL LETTER RHO
+\DeclareTextCommand{\textrhoinferior}{PU}{\9035\150}%* U+1D68
+% U+1D69 GREEK SUBSCRIPT SMALL LETTER PHI
+\DeclareTextCommand{\textphiinferior}{PU}{\9035\151}%* U+1D69
+% U+1D6A GREEK SUBSCRIPT SMALL LETTER CHI
+\DeclareTextCommand{\textchiinferior}{PU}{\9035\152}%* U+1D6A
+% U+1D7B LATIN SMALL CAPITAL LETTER I WITH STROKE;
+% \barsci (wsuipa)
+\DeclareTextCommand{\textbarsci}{PU}{\9035\173}%* U+1D7B
+% U+1D7D LATIN SMALL LETTER P WITH STROKE; \barp (wsuipa)
+\DeclareTextCommand{\textbarp}{PU}{\9035\175}%* U+1D7D
+% U+1D7E LATIN SMALL CAPITAL LETTER U WITH STROKE;
+% \barscu (wsuipa)
+\DeclareTextCommand{\textbarscu}{PU}{\9035\176}%* U+1D7E
+% \end{macrocode}
+%
+% \subsubsection{Phonetic Extensions Supplement: U+1D80 to U+1DBF}
+%
+% \begin{macrocode}
+% U+1D8F LATIN SMALL LETTER A WITH RETROFLEX HOOK; \textrhooka (tipx)
+\DeclareTextCommand{\textPUrhooka}{PU}{\9035\217}% U+1D8F
+%* \textPUrhooka -> \textrhooka (tipx)
+% U+1D91 LATIN SMALL LETTER D WITH HOOK AND TAIL; \texthtrtaild (tipa)
+\DeclareTextCommand{\texthtrtaild}{PU}{\9035\221}%* U+1D91
+% U+1D92 LATIN SMALL LETTER E WITH RETROFLEX HOOK; \textrhooke (tipx)
+\DeclareTextCommand{\textPUrhooke}{PU}{\9035\222}% U+1D92
+%* \textPUrhooke -> \textrhooke (tipx)
+% U+1D93 LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;
+% \textrhookepsilon (tipx)
+\DeclareTextCommand{\textPUrhookepsilon}{PU}{\9035\223}% U+1D93
+%* \textPUrhookepsilon -> \textrhookepsilon (tipx)
+% U+1D97 LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;
+% \textrhookopeno (tipx)
+\DeclareTextCommand{\textPUrhookopeno}{PU}{\9035\227}% U+1D97
+%* \textPUrhookopeno -> \textrhookopeno (tipx)
+% \end{macrocode}
+%
+% \subsubsection{Latin Extended Additional: U+1E00 to U+1EFF}
+%
+% \begin{macrocode}
+% U+1E00 LATIN CAPITAL LETTER A WITH RING BELOW; Aringbelow
+\DeclareTextCompositeCommand{\textsubring}{PU}{A}{\9036\000}% U+1E00
+% U+1E01 LATIN SMALL LETTER A WITH RING BELOW; aringbelow
+\DeclareTextCompositeCommand{\textsubring}{PU}{a}{\9036\001}% U+1E01
+% U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE; Bdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{B}{\9036\002}% U+1E02
+% U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE; bdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{b}{\9036\003}% U+1E03
+% U+1E04 LATIN CAPITAL LETTER B WITH DOT BELOW; Bdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{B}{\9036\004}% U+1E04
+% U+1E05 LATIN SMALL LETTER B WITH DOT BELOW; bdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{b}{\9036\005}% U+1E05
+% U+1E06 LATIN CAPITAL LETTER B WITH LINE BELOW; Blinebelow
+\DeclareTextCompositeCommand{\b}{PU}{B}{\9036\006}% U+1E06
+% U+1E07 LATIN SMALL LETTER B WITH LINE BELOW; blinebelow
+\DeclareTextCompositeCommand{\b}{PU}{b}{\9036\007}% U+1E07
+% U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE; Ddotaccent
+\DeclareTextCompositeCommand{\.}{PU}{D}{\9036\012}% U+1E0A
+% U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE; ddotaccent
+\DeclareTextCompositeCommand{\.}{PU}{d}{\9036\013}% U+1E0B
+% U+1E0C LATIN CAPITAL LETTER D WITH DOT BELOW; Ddotbelow
+\DeclareTextCompositeCommand{\d}{PU}{D}{\9036\014}% U+1E0C
+% U+1E0D LATIN SMALL LETTER D WITH DOT BELOW; ddotbelow
+\DeclareTextCompositeCommand{\d}{PU}{d}{\9036\015}% U+1E0D
+% U+1E0E LATIN CAPITAL LETTER D WITH LINE BELOW; Dlinebelow
+\DeclareTextCompositeCommand{\b}{PU}{D}{\9036\016}% U+1E0E
+% U+1E0F LATIN SMALL LETTER D WITH LINE BELOW; dlinebelow
+\DeclareTextCompositeCommand{\b}{PU}{d}{\9036\017}% U+1E0F
+% U+1E10 LATIN CAPITAL LETTER D WITH CEDILLA; Dcedilla
+\DeclareTextCompositeCommand{\c}{PU}{D}{\9036\020}% U+1E10
+% U+1E11 LATIN SMALL LETTER D WITH CEDILLA; dcedilla
+\DeclareTextCompositeCommand{\c}{PU}{d}{\9036\021}% U+1E11
+% U+1E12 LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW; Dcircumflexbelow
+\DeclareTextCompositeCommand{\textsubcircum}{PU}{D}{\9036\022}% U+1E12
+% U+1E13 LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW; dcircumflexbelow
+\DeclareTextCompositeCommand{\textsubcircum}{PU}{d}{\9036\023}% U+1E13
+% U+1E14 LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;
+% Emacrongrave
+\DeclareTextCompositeCommand{\textgravemacron}{PU}{E}{\9036\024}% U+1E14
+% U+1E15 LATIN SMALL LETTER E WITH MACRON AND GRAVE;
+% emacrongrave
+\DeclareTextCompositeCommand{\textgravemacron}{PU}{e}{\9036\025}% U+1E15
+% U+1E16 LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;
+% Emacronacute
+\DeclareTextCompositeCommand{\textacutemacron}{PU}{E}{\9036\026}% U+1E16
+% U+1E17 LATIN SMALL LETTER E WITH MACRON AND ACUTE;
+% emacronacute
+\DeclareTextCompositeCommand{\textacutemacron}{PU}{e}{\9036\027}% U+1E17
+% U+1E18 LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW; Ecircumflexbelow
+\DeclareTextCompositeCommand{\textsubcircum}{PU}{E}{\9036\030}% U+1E18
+% U+1E19 LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW; ecircumflexbelow
+\DeclareTextCompositeCommand{\textsubcircum}{PU}{e}{\9036\031}% U+1E19
+% U+1E1A LATIN CAPITAL LETTER E WITH TILDE BELOW; Etildebelow
+\DeclareTextCompositeCommand{\textsubtilde}{PU}{E}{\9036\032}% U+1E1A
+% U+1E1B LATIN SMALL LETTER E WITH TILDE BELOW; etildebelow
+\DeclareTextCompositeCommand{\textsubtilde}{PU}{e}{\9036\033}% U+1E1B
+% U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE; Fdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{F}{\9036\036}% U+1E1E
+% U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE; fdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{f}{\9036\037}% U+1E1F
+% U+1E20 LATIN CAPITAL LETTER G WITH MACRON; Gmacron
+\DeclareTextCompositeCommand{\=}{PU}{G}{\9036\040}% U+1E20
+% U+1E21 LATIN SMALL LETTER G WITH MACRON; gmacron
+\DeclareTextCompositeCommand{\=}{PU}{g}{\9036\041}% U+1E21
+% U+1E22 LATIN CAPITAL LETTER H WITH DOT ABOVE; Hdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{H}{\9036\042}% U+1E22
+% U+1E23 LATIN SMALL LETTER H WITH DOT ABOVE; hdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{h}{\9036\043}% U+1E23
+% U+1E24 LATIN CAPITAL LETTER H WITH DOT BELOW; Hdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{H}{\9036\044}% U+1E24
+% U+1E25 LATIN SMALL LETTER H WITH DOT BELOW; hdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{h}{\9036\045}% U+1E25
+% U+1E26 LATIN CAPITAL LETTER H WITH DIAERESIS; Hdieresis
+\DeclareTextCompositeCommand{\"}{PU}{H}{\9036\046}% U+1E26
+% U+1E27 LATIN SMALL LETTER H WITH DIAERESIS; hdieresis
+\DeclareTextCompositeCommand{\"}{PU}{h}{\9036\047}% U+1E27
+% U+1E28 LATIN CAPITAL LETTER H WITH CEDILLA; Hcedilla
+\DeclareTextCompositeCommand{\c}{PU}{H}{\9036\050}% U+1E28
+% U+1E29 LATIN SMALL LETTER H WITH CEDILLA; hcedilla
+\DeclareTextCompositeCommand{\c}{PU}{h}{\9036\051}% U+1E29
+% U+1E2A LATIN CAPITAL LETTER H WITH BREVE BELOW; Hbrevebelow
+\DeclareTextCompositeCommand{\textsubbreve}{PU}{H}{\9036\052}% U+1E2A
+% U+1E2B LATIN SMALL LETTER H WITH BREVE BELOW; hbrevebelow
+\DeclareTextCompositeCommand{\textsubbreve}{PU}{h}{\9036\053}% U+1E2B
+% U+1E2C LATIN CAPITAL LETTER I WITH TILDE BELOW; Itildebelow
+\DeclareTextCompositeCommand{\textsubtilde}{PU}{I}{\9036\054}% U+1E2C
+% U+1E2D LATIN SMALL LETTER I WITH TILDE BELOW; itildebelow
+\DeclareTextCompositeCommand{\textsubtilde}{PU}{i}{\9036\055}% U+1E2D
+% U+1E30 LATIN CAPITAL LETTER K WITH ACUTE; Kacute
+\DeclareTextCompositeCommand{\'}{PU}{K}{\9036\060}% U+1E30
+% U+1E31 LATIN SMALL LETTER K WITH ACUTE; kacute
+\DeclareTextCompositeCommand{\'}{PU}{k}{\9036\061}% U+1E31
+% U+1E32 LATIN CAPITAL LETTER K WITH DOT BELOW; Kdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{K}{\9036\062}% U+1E32
+% U+1E33 LATIN SMALL LETTER K WITH DOT BELOW; kdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{k}{\9036\063}% U+1E33
+% U+1E34 LATIN CAPITAL LETTER K WITH LINE BELOW; Klinebelow
+\DeclareTextCompositeCommand{\b}{PU}{K}{\9036\064}% U+1E34
+% U+1E35 LATIN SMALL LETTER K WITH LINE BELOW; klinebelow
+\DeclareTextCompositeCommand{\b}{PU}{k}{\9036\065}% U+1E35
+% U+1E36 LATIN CAPITAL LETTER L WITH DOT BELOW; Ldotbelow
+\DeclareTextCompositeCommand{\d}{PU}{L}{\9036\066}% U+1E36
+% U+1E37 LATIN SMALL LETTER L WITH DOT BELOW; ldotbelow
+\DeclareTextCompositeCommand{\d}{PU}{l}{\9036\067}% U+1E37
+% U+1E3A LATIN CAPITAL LETTER L WITH LINE BELOW; Llinebelow
+\DeclareTextCompositeCommand{\b}{PU}{L}{\9036\072}% U+1E3A
+% U+1E3B LATIN SMALL LETTER L WITH LINE BELOW; llinebelow
+\DeclareTextCompositeCommand{\b}{PU}{l}{\9036\073}% U+1E3B
+% U+1E3C LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW; Lcircumflexbelow
+\DeclareTextCompositeCommand{\textsubcircum}{PU}{L}{\9036\074}% U+1E3C
+% U+1E3D LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW; lcircumflexbelow
+\DeclareTextCompositeCommand{\textsubcircum}{PU}{l}{\9036\075}% U+1E3D
+% U+1E3E LATIN CAPITAL LETTER M WITH ACUTE; Macute
+\DeclareTextCompositeCommand{\'}{PU}{M}{\9036\076}% U+1E3E
+% U+1E3F LATIN SMALL LETTER M WITH ACUTE; macute
+\DeclareTextCompositeCommand{\'}{PU}{m}{\9036\077}% U+1E3F
+% U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE; Mdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{M}{\9036\100}% U+1E40
+% U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE; mdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{m}{\9036\101}% U+1E41
+% U+1E42 LATIN CAPITAL LETTER M WITH DOT BELOW; Mdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{M}{\9036\102}% U+1E42
+% U+1E43 LATIN SMALL LETTER M WITH DOT BELOW; mdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{m}{\9036\103}% U+1E43
+% U+1E44 LATIN CAPITAL LETTER N WITH DOT ABOVE; Ndotaccent
+\DeclareTextCompositeCommand{\.}{PU}{N}{\9036\104}% U+1E44
+% U+1E45 LATIN SMALL LETTER N WITH DOT ABOVE; ndotaccent
+\DeclareTextCompositeCommand{\.}{PU}{n}{\9036\105}% U+1E45
+% U+1E46 LATIN CAPITAL LETTER N WITH DOT BELOW; Ndotbelow
+\DeclareTextCompositeCommand{\d}{PU}{N}{\9036\106}% U+1E46
+% U+1E47 LATIN SMALL LETTER N WITH DOT BELOW; ndotbelow
+\DeclareTextCompositeCommand{\d}{PU}{n}{\9036\107}% U+1E47
+% U+1E48 LATIN CAPITAL LETTER N WITH LINE BELOW; Nlinebelow
+\DeclareTextCompositeCommand{\b}{PU}{N}{\9036\110}% U+1E48
+% U+1E49 LATIN SMALL LETTER N WITH LINE BELOW; nlinebelow
+\DeclareTextCompositeCommand{\b}{PU}{n}{\9036\111}% U+1E49
+% U+1E4A LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW; Ncircumflexbelow
+\DeclareTextCompositeCommand{\textsubcircum}{PU}{N}{\9036\112}% U+1E4A
+% U+1E4B LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW; ncircumflexbelow
+\DeclareTextCompositeCommand{\textsubcircum}{PU}{n}{\9036\113}% U+1E4B
+% U+1E50 LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;
+% Omacrongrave
+\DeclareTextCompositeCommand{\textgravemacron}{PU}{O}{\9036\120}% U+1E50
+% U+1E51 LATIN SMALL LETTER O WITH MACRON AND GRAVE;
+% omacrongrave
+\DeclareTextCompositeCommand{\textgravemacron}{PU}{o}{\9036\121}% U+1E51
+% U+1E52 LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;
+% Omacronacute
+\DeclareTextCompositeCommand{\textacutemacron}{PU}{O}{\9036\122}% U+1E52
+% U+1E53 LATIN SMALL LETTER O WITH MACRON AND ACUTE;
+% omacronacute
+\DeclareTextCompositeCommand{\textacutemacron}{PU}{o}{\9036\123}% U+1E53
+% U+1E54 LATIN CAPITAL LETTER P WITH ACUTE; Pacute
+\DeclareTextCompositeCommand{\'}{PU}{P}{\9036\124}% U+1E54
+% U+1E55 LATIN SMALL LETTER P WITH ACUTE; pacute
+\DeclareTextCompositeCommand{\'}{PU}{p}{\9036\125}% U+1E55
+% U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE; Pdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{P}{\9036\126}% U+1E56
+% U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE; pdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{p}{\9036\127}% U+1E57
+% U+1E58 LATIN CAPITAL LETTER R WITH DOT ABOVE; Rdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{R}{\9036\130}% U+1E58
+% U+1E59 LATIN SMALL LETTER R WITH DOT ABOVE; rdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{r}{\9036\131}% U+1E59
+% U+1E5A LATIN CAPITAL LETTER R WITH DOT BELOW; Rdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{R}{\9036\132}% U+1E5A
+% U+1E5B LATIN SMALL LETTER R WITH DOT BELOW; rdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{r}{\9036\133}% U+1E5B
+% U+1E5E LATIN CAPITAL LETTER R WITH LINE BELOW; Rlinebelow
+\DeclareTextCompositeCommand{\b}{PU}{R}{\9036\136}% U+1E5E
+% U+1E5F LATIN SMALL LETTER R WITH LINE BELOW; rlinebelow
+\DeclareTextCompositeCommand{\b}{PU}{r}{\9036\137}% U+1E5F
+% U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE; Sdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{S}{\9036\140}% U+1E60
+% U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE; sdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{s}{\9036\141}% U+1E61
+% U+1E62 LATIN CAPITAL LETTER S WITH DOT BELOW; Sdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{S}{\9036\142}% U+1E62
+% U+1E63 LATIN SMALL LETTER S WITH DOT BELOW; sdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{s}{\9036\143}% U+1E63
+% U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE; Tdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{T}{\9036\152}% U+1E6A
+% U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE; tdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{t}{\9036\153}% U+1E6B
+% U+1E6C LATIN CAPITAL LETTER T WITH DOT BELOW; Tdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{T}{\9036\154}% U+1E6C
+% U+1E6D LATIN SMALL LETTER T WITH DOT BELOW; tdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{t}{\9036\155}% U+1E6D
+% U+1E6E LATIN CAPITAL LETTER T WITH LINE BELOW; Tlinebelow
+\DeclareTextCompositeCommand{\b}{PU}{T}{\9036\156}% U+1E6E
+% U+1E6F LATIN SMALL LETTER T WITH LINE BELOW; tlinebelow
+\DeclareTextCompositeCommand{\b}{PU}{t}{\9036\157}% U+1E6F
+% U+1E70 LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW; Tcircumflexbelow
+\DeclareTextCompositeCommand{\textsubcircum}{PU}{T}{\9036\160}% U+1E70
+% U+1E71 LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW; tcircumflexbelow
+\DeclareTextCompositeCommand{\textsubcircum}{PU}{t}{\9036\161}% U+1E71
+% U+1E72 LATIN CAPITAL LETTER U WITH DIAERESIS BELOW; Udieresisbelow
+\DeclareTextCompositeCommand{\textsubumlaut}{PU}{U}{\9036\162}% U+1E72
+% U+1E73 LATIN SMALL LETTER U WITH DIAERESIS BELOW; udieresisbelow
+\DeclareTextCompositeCommand{\textsubumlaut}{PU}{u}{\9036\163}% U+1E73
+% U+1E74 LATIN CAPITAL LETTER U WITH TILDE BELOW; Utildebelow
+\DeclareTextCompositeCommand{\textsubtilde}{PU}{U}{\9036\164}% U+1E74
+% U+1E75 LATIN SMALL LETTER U WITH TILDE BELOW; utildebelow
+\DeclareTextCompositeCommand{\textsubtilde}{PU}{u}{\9036\165}% U+1E75
+% U+1E76 LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW; Ucircumflexbelow
+\DeclareTextCompositeCommand{\textsubcircum}{PU}{U}{\9036\166}% U+1E76
+% U+1E77 LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW; ucircumflexbelow
+\DeclareTextCompositeCommand{\textsubcircum}{PU}{u}{\9036\167}% U+1E77
+% U+1E7C LATIN CAPITAL LETTER V WITH TILDE; Vtilde
+\DeclareTextCompositeCommand{\~}{PU}{V}{\9036\174}% U+1E7C
+% U+1E7D LATIN SMALL LETTER V WITH TILDE; vtilde
+\DeclareTextCompositeCommand{\~}{PU}{v}{\9036\175}% U+1E7D
+% U+1E7E LATIN CAPITAL LETTER V WITH DOT BELOW; Vdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{V}{\9036\176}% U+1E7E
+% U+1E7F LATIN SMALL LETTER V WITH DOT BELOW; vdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{v}{\9036\177}% U+1E7F
+% U+1E80 LATIN CAPITAL LETTER W WITH GRAVE; Wgrave
+\DeclareTextCompositeCommand{\`}{PU}{W}{\9036\200}% U+1E80
+% U+1E81 LATIN SMALL LETTER W WITH GRAVE; wgrave
+\DeclareTextCompositeCommand{\`}{PU}{w}{\9036\201}% U+1E81
+% U+1E82 LATIN CAPITAL LETTER W WITH ACUTE; Wacute
+\DeclareTextCompositeCommand{\'}{PU}{W}{\9036\202}% U+1E82
+% U+1E83 LATIN SMALL LETTER W WITH ACUTE; wacute
+\DeclareTextCompositeCommand{\'}{PU}{w}{\9036\203}% U+1E83
+% U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS; Wdieresis
+\DeclareTextCompositeCommand{\"}{PU}{W}{\9036\204}% U+1E84
+% U+1E85 LATIN SMALL LETTER W WITH DIAERESIS; wdieresis
+\DeclareTextCompositeCommand{\"}{PU}{w}{\9036\205}% U+1E85
+% U+1E86 LATIN CAPITAL LETTER W WITH DOT ABOVE; Wdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{W}{\9036\206}% U+1E86
+% U+1E87 LATIN SMALL LETTER W WITH DOT ABOVE; wdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{w}{\9036\207}% U+1E87
+% U+1E88 LATIN CAPITAL LETTER W WITH DOT BELOW; wdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{W}{\9036\210}% U+1E88
+% U+1E89 LATIN SMALL LETTER W WITH DOT BELOW; wdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{w}{\9036\211}% U+1E89
+% U+1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE; Xdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{X}{\9036\212}% U+1E8A
+% U+1E8B LATIN SMALL LETTER X WITH DOT ABOVE; xdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{x}{\9036\213}% U+1E8B
+% U+1E8C LATIN CAPITAL LETTER X WITH DIAERESIS; Xdieresis
+\DeclareTextCompositeCommand{\"}{PU}{X}{\9036\214}% U+1E8C
+% U+1E8D LATIN SMALL LETTER X WITH DIAERESIS; xdieresis
+\DeclareTextCompositeCommand{\"}{PU}{x}{\9036\215}% U+1E8D
+% U+1E8E LATIN CAPITAL LETTER Y WITH DOT ABOVE; Ydotaccent
+\DeclareTextCompositeCommand{\.}{PU}{Y}{\9036\216}% U+1E8E
+% U+1E8F LATIN SMALL LETTER Y WITH DOT ABOVE; ydotaccent
+\DeclareTextCompositeCommand{\.}{PU}{y}{\9036\217}% U+1E8F
+% U+1E90 LATIN CAPITAL LETTER Z WITH CIRCUMFLEX; Zcircumflex
+\DeclareTextCompositeCommand{\^}{PU}{Z}{\9036\220}% U+1E90
+% U+1E91 LATIN SMALL LETTER Z WITH CIRCUMFLEX; zcircumflex
+\DeclareTextCompositeCommand{\^}{PU}{z}{\9036\221}% U+1E91
+% U+1E92 LATIN CAPITAL LETTER Z WITH DOT BELOW; Zdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{Z}{\9036\222}% U+1E92
+% U+1E93 LATIN SMALL LETTER Z WITH DOT BELOW; zdotbelow
+\DeclareTextCompositeCommand{\d}{PU}{z}{\9036\223}% U+1E93
+% U+1E94 LATIN CAPITAL LETTER Z WITH LINE BELOW; Zlinebelow
+\DeclareTextCompositeCommand{\b}{PU}{Z}{\9036\224}% U+1E94
+% U+1E95 LATIN SMALL LETTER Z WITH LINE BELOW; zlinebelow
+\DeclareTextCompositeCommand{\b}{PU}{z}{\9036\225}% U+1E95
+% U+1E96 LATIN SMALL LETTER H WITH LINE BELOW; hlinebelow
+\DeclareTextCompositeCommand{\b}{PU}{h}{\9036\226}% U+1E96
+% U+1E97 LATIN SMALL LETTER T WITH DIAERESIS; tdieresis
+\DeclareTextCompositeCommand{\"}{PU}{t}{\9036\227}% U+1E97
+% U+1E98 LATIN SMALL LETTER W WITH RING ABOVE; wring
+\DeclareTextCompositeCommand{\r}{PU}{w}{\9036\230}% U+1E98
+% U+1E99 LATIN SMALL LETTER Y WITH RING ABOVE; yring
+\DeclareTextCompositeCommand{\r}{PU}{y}{\9036\231}% U+1E99
+% U+1E9B LATIN SMALL LETTER LONG S WITH DOT ABOVE; slongdotaccent
+\DeclareTextCompositeCommand{\.}{PU}{\textlongs}{\9036\233}% U+1E9B
+% U+1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW; Adotbelow
+\DeclareTextCompositeCommand{\d}{PU}{A}{\9036\240}% U+1EA0
+% U+1EA1 LATIN SMALL LETTER A WITH DOT BELOW; adotbelow
+\DeclareTextCompositeCommand{\d}{PU}{a}{\9036\241}% U+1EA1
+% U+1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW; Edotbelow
+\DeclareTextCompositeCommand{\d}{PU}{E}{\9036\270}% U+1EB8
+% U+1EB9 LATIN SMALL LETTER E WITH DOT BELOW; edotbelow
+\DeclareTextCompositeCommand{\d}{PU}{e}{\9036\271}% U+1EB9
+% U+1EBC LATIN CAPITAL LETTER E WITH TILDE; Etilde
+\DeclareTextCompositeCommand{\~}{PU}{E}{\9036\274}% U+1EBC
+% U+1EBD LATIN SMALL LETTER E WITH TILDE; etilde
+\DeclareTextCompositeCommand{\~}{PU}{e}{\9036\275}% U+1EBD
+% U+1ECA LATIN CAPITAL LETTER I WITH DOT BELOW; Idotbelow
+\DeclareTextCompositeCommand{\d}{PU}{I}{\9036\312}% U+1ECA
+% U+1ECB LATIN SMALL LETTER I WITH DOT BELOW; idotbelow
+\DeclareTextCompositeCommand{\d}{PU}{i}{\9036\313}% U+1ECB
+% U+1ECC LATIN CAPITAL LETTER O WITH DOT BELOW; Odotbelow
+\DeclareTextCompositeCommand{\d}{PU}{O}{\9036\314}% U+1ECC
+% U+1ECD LATIN SMALL LETTER O WITH DOT BELOW; odotbelow
+\DeclareTextCompositeCommand{\d}{PU}{o}{\9036\315}% U+1ECD
+% U+1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW; Udotbelow
+\DeclareTextCompositeCommand{\d}{PU}{U}{\9036\344}% U+1EE4
+% U+1EE5 LATIN SMALL LETTER U WITH DOT BELOW; udotbelow
+\DeclareTextCompositeCommand{\d}{PU}{u}{\9036\345}% U+1EE5
+% U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE; Ygrave
+\DeclareTextCompositeCommand{\`}{PU}{Y}{\9036\362}% U+1EF2
+% U+1EF3 LATIN SMALL LETTER Y WITH GRAVE; ygrave
+\DeclareTextCompositeCommand{\`}{PU}{y}{\9036\363}% U+1EF3
+% U+1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW; Ydotbelow
+\DeclareTextCompositeCommand{\d}{PU}{Y}{\9036\364}% U+1EF4
+% U+1EF5 LATIN SMALL LETTER Y WITH DOT BELOW; ydotbelow
+\DeclareTextCompositeCommand{\d}{PU}{y}{\9036\365}% U+1EF5
+% U+1EF8 LATIN CAPITAL LETTER Y WITH TILDE; Ytilde
+\DeclareTextCompositeCommand{\~}{PU}{Y}{\9036\370}% U+1EF8
+% U+1EF9 LATIN SMALL LETTER Y WITH TILDE; ytilde
+\DeclareTextCompositeCommand{\~}{PU}{y}{\9036\371}% U+1EF9
+% \end{macrocode}
+%
+% \subsubsection{General Punctuation: U+2000 to U+206F}
+%
+% \begin{macrocode}
+% U+200C ZERO WIDTH NON-JOINER; *afii61664, zerowidthnonjoiner
+\DeclareTextCommand{\textcompwordmark}{PU}{\9040\014}% U+200C
+% U+2013 EN DASH; endash
+\DeclareTextCommand{\textendash}{PU}{\9040\023}% U+2013
+% U+2014 EM DASH; emdash
+\DeclareTextCommand{\textemdash}{PU}{\9040\024}% U+2014
+% U+2016 DOUBLE VERTICAL LINE; dblverticalbar
+\DeclareTextCommand{\textbardbl}{PU}{\9040\026}% U+2016
+%* \textbardbl -> \textdoublevertline (tipa)
+% U+2018 LEFT SINGLE QUOTATION MARK; quoteleft
+\DeclareTextCommand{\textquoteleft}{PU}{\9040\030}% U+2018
+% U+2019 RIGHT SINGLE QUOTATION MARK; quoteright
+\DeclareTextCommand{\textquoteright}{PU}{\9040\031}% U+2019
+% U+201A SINGLE LOW-9 QUOTATION MARK; quotesinglbase
+\DeclareTextCommand{\quotesinglbase}{PU}{\9040\032}% U+201A
+% U+201C LEFT DOUBLE QUOTATION MARK; quotedblleft
+\DeclareTextCommand{\textquotedblleft}{PU}{\9040\034}% U+201C
+% U+201D RIGHT DOUBLE QUOTATION MARK; quotedblright
+\DeclareTextCommand{\textquotedblright}{PU}{\9040\035}% U+201D
+% U+201E DOUBLE LOW-9 QUOTATION MARK; quotedblbase
+\DeclareTextCommand{\quotedblbase}{PU}{\9040\036}% U+201E
+% U+2020 DAGGER; dagger
+\DeclareTextCommand{\textdagger}{PU}{\9040\040}%* U+2020
+%* \textdagger -> \dag (LaTeX)
+% U+2021 DOUBLE DAGGER; daggerdbl; \ddagger (LaTeX)
+\DeclareTextCommand{\textdaggerdbl}{PU}{\9040\041}% U+2021
+%* \textdaggerdbl -> \ddagger (LaTeX)
+%* \textdaggerdbl -> \ddag (LaTeX)
+% U+2022 BULLET; bullet
+\DeclareTextCommand{\textbullet}{PU}{\9040\042}%* U+2022
+% U+2025 TWO DOT LEADER; \hdotfor (MnSymbol)
+\DeclareTextCommand{\texthdotfor}{PU}{\9040\045}%* U+2025
+% U+2026 HORIZONTAL ELLIPSIS; ellipsis
+\DeclareTextCommand{\textellipsis}{PU}{\9040\046}% U+2026
+%* \textellipsis -> \mathellipsis
+% U+2030 PER MILLE SIGN; perthousand
+\DeclareTextCommand{\textperthousand}{PU}{\9040\060}% U+2030
+% U+2031 PER TEN THOUSAND SIGN
+\DeclareTextCommand{\textpertenthousand}{PU}{\9040\061}% U+2031
+% U+2032 PRIME; minute; \prime (MnSymbol)
+\DeclareTextCommand{\textprime}{PU}{\9040\062}%* U+2032
+% U+2033 DOUBLE PRIME; \second (mathabx)
+\DeclareTextCommand{\textsecond}{PU}{\9040\063}%* U+2033
+% U+2034 TRIPLE PRIME; \third (mathabx)
+\DeclareTextCommand{\textthird}{PU}{\9040\064}%* U+2034
+% U+2035 REVERSED PRIME; \backprime (AmS)
+\DeclareTextCommand{\textbackprime}{PU}{\9040\065}%* U+2035
+% U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK; guilsinglleft
+\DeclareTextCommand{\guilsinglleft}{PU}{\9040\071}% U+2039
+% U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK; guilsinglright
+\DeclareTextCommand{\guilsinglright}{PU}{\9040\072}% U+203A
+% U+203B REFERENCE MARK; referencemark
+\DeclareTextCommand{\textreferencemark}{PU}{\9040\073}% U+203B
+% U+203D INTERROBANG
+\DeclareTextCommand{\textinterrobang}{PU}{\9040\075}% U+203D
+% U+2044 FRACTION SLASH; fraction
+\DeclareTextCommand{\textfractionsolidus}{PU}{\9040\104}% U+2044
+% U+2045 LEFT SQUARE BRACKET WITH QUILL
+\DeclareTextCommand{\textlquill}{PU}{\9040\105}% U+2045
+% U+2046 RIGHT SQUARE BRACKET WITH QUILL
+\DeclareTextCommand{\textrquill}{PU}{\9040\106}% U+2046
+% U+2052 COMMERCIAL MINUS SIGN
+\DeclareTextCommand{\textdiscount}{PU}{\9040\122}% U+2052
+% U+2056 THREE DOT PUNCTUATION; \lefttherefore (MnSymbol)
+\DeclareTextCommand{\textlefttherefore}{PU}{\9040\126}%* U+2056
+% U+2057 QUADRUPLE PRIME; \fourth (mathabx)
+\DeclareTextCommand{\textfourth}{PU}{\9040\127}%* U+2057
+% U+2058 FOUR DOT PUNCTUATION; \diamonddots (MnSymbol)
+\DeclareTextCommand{\textdiamonddots}{PU}{\9040\130}%* U+2058
+% \end{macrocode}
+%
+% \subsubsection{Superscripts and Subscripts: U+2070 to U+209F}
+%
+% \begin{macrocode}
+% U+2070 SUPERSCRIPT ZERO; zerosuperior
+\DeclareTextCommand{\textzerosuperior}{PU}{\9040\160}%* U+2070
+% U+2071 SUPERSCRIPT LATIN SMALL LETTER I
+\DeclareTextCommand{\textisuperior}{PU}{\9040\161}%* U+2071
+% U+2074 SUPERSCRIPT FOUR; foursuperior
+\DeclareTextCommand{\textfoursuperior}{PU}{\9040\164}%* U+2074
+% U+2075 SUPERSCRIPT FIVE; fivesuperior
+\DeclareTextCommand{\textfivesuperior}{PU}{\9040\165}%* U+2075
+% U+2076 SUPERSCRIPT SIX; sixsuperior
+\DeclareTextCommand{\textsixsuperior}{PU}{\9040\166}%* U+2076
+% U+2077 SUPERSCRIPT SEVEN; sevensuperior
+\DeclareTextCommand{\textsevensuperior}{PU}{\9040\167}%* U+2077
+% U+2078 SUPERSCRIPT EIGHT; eightsuperior
+\DeclareTextCommand{\texteightsuperior}{PU}{\9040\170}%* U+2078
+% U+2079 SUPERSCRIPT NINE; ninesuperior
+\DeclareTextCommand{\textninesuperior}{PU}{\9040\171}%* U+2079
+% U+207A SUPERSCRIPT PLUS SIGN; plussuperior
+\DeclareTextCommand{\textplussuperior}{PU}{\9040\172}%* U+207A
+% U+207B SUPERSCRIPT MINUS
+\DeclareTextCommand{\textminussuperior}{PU}{\9040\173}%* U+207B
+% U+207C SUPERSCRIPT EQUALS SIGN; equalsuperior
+\DeclareTextCommand{\textequalsuperior}{PU}{\9040\174}%* U+207C
+% U+207D SUPERSCRIPT LEFT PARENTHESIS; parenleftsuperior
+\DeclareTextCommand{\textparenleftsuperior}{PU}{\9040\175}%* U+207D
+% U+207E SUPERSCRIPT RIGHT PARENTHESIS; parenrightsuperior
+\DeclareTextCommand{\textparenrightsuperior}{PU}{\9040\176}%* U+207E
+% U+207F SUPERSCRIPT LATIN SMALL LETTER N; nsuperior
+\DeclareTextCommand{\textnsuperior}{PU}{\9040\177}%* U+207F
+% U+2080 SUBSCRIPT ZERO; zeroinferior
+\DeclareTextCommand{\textzeroinferior}{PU}{\9040\200}%* U+2080
+% U+2081 SUBSCRIPT ONE; oneinferior
+\DeclareTextCommand{\textoneinferior}{PU}{\9040\201}%* U+2081
+% U+2082 SUBSCRIPT TWO; twoinferior
+\DeclareTextCommand{\texttwoinferior}{PU}{\9040\202}%* U+2082
+% U+2083 SUBSCRIPT THREE; threeinferior
+\DeclareTextCommand{\textthreeinferior}{PU}{\9040\203}%* U+2083
+% U+2084 SUBSCRIPT FOUR; fourinferior
+\DeclareTextCommand{\textfourinferior}{PU}{\9040\204}%* U+2084
+% U+2085 SUBSCRIPT FIVE; fiveinferior
+\DeclareTextCommand{\textfiveinferior}{PU}{\9040\205}%* U+2085
+% U+2086 SUBSCRIPT SIX; sixinferior
+\DeclareTextCommand{\textsixinferior}{PU}{\9040\206}%* U+2086
+% U+2087 SUBSCRIPT SEVEN; seveninferior
+\DeclareTextCommand{\textseveninferior}{PU}{\9040\207}%* U+2087
+% U+2088 SUBSCRIPT EIGHT; eightinferior
+\DeclareTextCommand{\texteightinferior}{PU}{\9040\210}%* U+2088
+% U+2089 SUBSCRIPT NINE; nineinferior
+\DeclareTextCommand{\textnineinferior}{PU}{\9040\211}%* U+2089
+% U+208A SUBSCRIPT PLUS SIGN
+\DeclareTextCommand{\textplusinferior}{PU}{\9040\212}%* U+208A
+% U+208B SUBSCRIPT MINUS
+\DeclareTextCommand{\textminusinferior}{PU}{\9040\213}%* U+208B
+% U+208C SUBSCRIPT EQUALS SIGN
+\DeclareTextCommand{\textequalsinferior}{PU}{\9040\214}%* U+208C
+% U+208D SUBSCRIPT LEFT PARENTHESIS; parenleftinferior
+\DeclareTextCommand{\textparenleftinferior}{PU}{\9040\215}%* U+208D
+% U+208E SUBSCRIPT RIGHT PARENTHESIS; parenrightinferior
+\DeclareTextCommand{\textparenrightinferior}{PU}{\9040\216}%* U+208E
+% U+2090 LATIN SUBSCRIPT SMALL LETTER A
+\DeclareTextCommand{\textainferior}{PU}{\9040\220}%* U+2090
+% U+2091 LATIN SUBSCRIPT SMALL LETTER E
+\DeclareTextCommand{\texteinferior}{PU}{\9040\221}%* U+2091
+% U+2092 LATIN SUBSCRIPT SMALL LETTER O
+\DeclareTextCommand{\textoinferior}{PU}{\9040\222}%* U+2092
+% U+2093 LATIN SUBSCRIPT SMALL LETTER X
+\DeclareTextCommand{\textxinferior}{PU}{\9040\223}%* U+2093
+% U+2094 LATIN SUBSCRIPT SMALL LETTER SCHWA
+\DeclareTextCommand{\textschwainferior}{PU}{\9040\224}%* U+2094
+% U+2095 LATIN SUBSCRIPT SMALL LETTER H
+\DeclareTextCommand{\texthinferior}{PU}{\9040\225}%* U+2095
+% U+2096 LATIN SUBSCRIPT SMALL LETTER K
+\DeclareTextCommand{\textkinferior}{PU}{\9040\226}%* U+2096
+% U+2097 LATIN SUBSCRIPT SMALL LETTER L
+\DeclareTextCommand{\textlinferior}{PU}{\9040\227}%* U+2097
+% U+2098 LATIN SUBSCRIPT SMALL LETTER M
+\DeclareTextCommand{\textminferior}{PU}{\9040\230}%* U+2098
+% U+2099 LATIN SUBSCRIPT SMALL LETTER N
+\DeclareTextCommand{\textninferior}{PU}{\9040\231}%* U+2099
+% U+209A LATIN SUBSCRIPT SMALL LETTER P
+\DeclareTextCommand{\textpinferior}{PU}{\9040\232}%* U+209A
+% U+209B LATIN SUBSCRIPT SMALL LETTER S
+\DeclareTextCommand{\textsinferior}{PU}{\9040\233}%* U+209B
+% U+209C LATIN SUBSCRIPT SMALL LETTER T
+\DeclareTextCommand{\texttinferior}{PU}{\9040\234}%* U+209C
+% \end{macrocode}
+%
+% \subsubsection{Currency Symbols: U+20A0 to U+20CF}
+%
+% \begin{macrocode}
+% U+20A1 COLON SIGN; *colonmonetary, colonsign
+\DeclareTextCommand{\textcolonmonetary}{PU}{\9040\241}% U+20A1
+% U+20A4 LIRA SIGN; afii08941, *lira
+\DeclareTextCommand{\textlira}{PU}{\9040\244}% U+20A4
+% U+20A6 NAIRA SIGN
+\DeclareTextCommand{\textnaira}{PU}{\9040\246}% U+20A6
+% U+20A7 PESETA SIGN; peseta
+\DeclareTextCommand{\textpeseta}{PU}{\9040\247}% U+20A7
+% U+20A9 WON SIGN; won
+\DeclareTextCommand{\textwon}{PU}{\9040\251}% U+20A9
+% U+20AB DONG SIGN; dong
+\DeclareTextCommand{\textdong}{PU}{\9040\253}% U+20AB
+% U+20AC EURO SIGN; *Euro, euro
+\DeclareTextCommand{\texteuro}{PU}{\9040\254}% U+20AC
+%* \texteuro -> \EurDig (marvosym)
+%* \texteuro -> \EURdig (marvosym)
+%* \texteuro -> \EurHv (marvosym)
+%* \texteuro -> \EURhv (marvosym)
+%* \texteuro -> \EurCr (marvosym)
+%* \texteuro -> \EURcr (marvosym)
+%* \texteuro -> \EurTm (marvosym)
+%* \texteuro -> \EURtm (marvosym)
+%* \texteuro -> \Eur (marvosym)
+% U+20B0 GERMAN PENNY SIGN; \Deleatur (marvosym)
+\DeclareTextCommand{\textDeleatur}{PU}{\9040\260}%* U+20B0
+%* \textDeleatur -> \Denarius (marvosym)
+% U+20B1 PESO SIGN
+\DeclareTextCommand{\textpeso}{PU}{\9040\261}% U+20B1
+% U+20B2 GUARANI SIGN
+\DeclareTextCommand{\textguarani}{PU}{\9040\262}% U+20B2
+% \end{macrocode}
+%
+% \subsubsection{Letterlike Symbols: U+2100 to U+214F}
+%
+% \begin{macrocode}
+% U+2103 DEGREE CELSIUS; centigrade
+\DeclareTextCommand{\textcelsius}{PU}{\9041\003}% U+2103
+% U+210F PLANCK CONSTANT OVER TWO PI; \hslash (AmS)
+\DeclareTextCommand{\texthslash}{PU}{\9041\017}%* U+210F
+% U+2111 BLACK-LETTER CAPITAL I (=imaginary part); Ifraktur; \Im (LaTeX)
+\DeclareTextCommand{\textIm}{PU}{\9041\021}%* U+2111
+% U+2113 SCRIPT SMALL L (=ell, liter); afii61289, lsquare; \ell (LaTeX)
+\DeclareTextCommand{\textell}{PU}{\9041\023}%* U+2113
+% U+2116 NUMERO SIGN; *afii61352, numero
+\DeclareTextCommand{\textnumero}{PU}{\9041\026}% U+2116
+% U+2117 SOUND RECORDING COPYRIGHT
+\DeclareTextCommand{\textcircledP}{PU}{\9041\027}% U+2117
+% U+2118 SCRIPT CAPITAL P (=Weierstrass elliptic function);
+% weierstrass; \wp (LaTeX)
+\DeclareTextCommand{\textwp}{PU}{\9041\030}%* U+2118
+% U+211C BLACK-LETTER CAPITAL R (=real part); Rfraktur; \Re (LaTeX)
+\DeclareTextCommand{\textRe}{PU}{\9041\034}%* U+211C
+% U+211E PRESCRIPTION TAKE; prescription
+\DeclareTextCommand{\textrecipe}{PU}{\9041\036}% U+211E
+% U+2120 SERVICE MARK
+\DeclareTextCommand{\textservicemark}{PU}{\9041\040}% U+2120
+% U+2122 TRADE MARK SIGN; trademark
+\DeclareTextCommand{\texttrademark}{PU}{\9041\042}% U+2122
+% U+2126 OHM SIGN; Ohm, Omega
+\DeclareTextCommand{\textohm}{PU}{\9041\046}% U+2126
+% U+2127 INVERTED OHM SIGN
+\DeclareTextCommand{\textmho}{PU}{\9041\047}%* U+2127
+%* \textmho -> \agemO (wasysym)
+% U+2129 TURNED GREEK SMALL LETTER IOTA; \riota (phonetic)
+\DeclareTextCommand{\textriota}{PU}{\9041\051}%* U+2129
+% U+212B ANGSTROM SIGN; angstrom
+\DeclareTextCommand{\textangstrom}{PU}{\9041\053}% U+212B
+% U+212E ESTIMATED SYMBOL; estimated
+\DeclareTextCommand{\textestimated}{PU}{\9041\056}% U+212E
+%* \textestimated -> \EstimatedSign (marvosym)
+%* \textestimated -> \Ecommerce (marvosym)
+% U+2132 TURNED CAPITAL F; \Finv (AmS)
+\DeclareTextCommand{\textFinv}{PU}{\9041\062}%* U+2132
+% U+2135 ALEF SYMBOL; aleph; \aleph (LaTeX)
+\DeclareTextCommand{\textaleph}{PU}{\9041\065}%* U+2135
+% U+2136 BET SYMBOL; \beth (AmS, MnSymbol)
+\DeclareTextCommand{\textbeth}{PU}{\9041\066}%* U+2136
+% U+2137 GIMEL SYMBOL; \gimel (AmS, MnSymbol)
+\DeclareTextCommand{\textgimel}{PU}{\9041\067}%* U+2137
+% U+2138 DALET SYMBOL; \daleth (AmS, MnSymbol)
+\DeclareTextCommand{\textdaleth}{PU}{\9041\070}%* U+2138
+% U+213B FACSIMILE SIGN; \fax (marvosym)
+\DeclareTextCommand{\textfax}{PU}{\9041\073}%* U+213B
+% U+2141 TURNED SANS-SERIF CAPITAL G (=game); \Game
+\DeclareTextCommand{\textGame}{PU}{\9041\101}%* U+2141
+% U+214B TURNED AMPERSAND; \invamp (txfonts/pxfonts)
+\DeclareTextCommand{\textinvamp}{PU}{\9041\113}% U+214B
+%* \textinvamp -> \bindnasrepma (stmaryrd)
+%* \textinvamp -> \parr (cmll)
+% \end{macrocode}
+%
+% \subsubsection{Number Forms: U+2150 to U+218F}
+%
+% \begin{macrocode}
+% U+2150 VULGAR FRACTION ONE SEVENTH
+\DeclareTextCommand{\textoneseventh}{PU}{\9041\120}% U+2150
+% U+2151 VULGAR FRACTION ONE NINTH
+\DeclareTextCommand{\textoneninth}{PU}{\9041\121}% U+2151
+% U+2152 VULGAR FRACTION ONE TENTH
+\DeclareTextCommand{\textonetenth}{PU}{\9041\122}% U+2152
+% U+2153 VULGAR FRACTION ONE THIRD; onethird
+\DeclareTextCommand{\textonethird}{PU}{\9041\123}% U+2153
+% U+2154 VULGAR FRACTION TWO THIRDS; twothirds
+\DeclareTextCommand{\texttwothirds}{PU}{\9041\124}% U+2154
+% U+2155 VULGAR FRACTION ONE FIFTH
+\DeclareTextCommand{\textonefifth}{PU}{\9041\125}% U+2155
+% U+2156 VULGAR FRACTION TWO FIFTHS
+\DeclareTextCommand{\texttwofifths}{PU}{\9041\126}% U+2156
+% U+2157 VULGAR FRACTION THREE FIFTHS
+\DeclareTextCommand{\textthreefifths}{PU}{\9041\127}% U+2157
+% U+2158 VULGAR FRACTION FOUR FIFTHS
+\DeclareTextCommand{\textfourfifths}{PU}{\9041\130}% U+2158
+% U+2159 VULGAR FRACTION ONE SIXTH
+\DeclareTextCommand{\textonesixth}{PU}{\9041\131}% U+2159
+% U+215A VULGAR FRACTION FIVE SIXTHS
+\DeclareTextCommand{\textfivesixths}{PU}{\9041\132}% U+215A
+% U+215B VULGAR FRACTION ONE EIGHTH; oneeighth
+\DeclareTextCommand{\textoneeighth}{PU}{\9041\133}% U+215B
+% U+215C VULGAR FRACTION THREE EIGHTHS; threeeighths
+\DeclareTextCommand{\textthreeeighths}{PU}{\9041\134}% U+215C
+% U+215D VULGAR FRACTION FIVE EIGHTHS; fiveeighths
+\DeclareTextCommand{\textfiveeighths}{PU}{\9041\135}% U+215D
+% U+215E VULGAR FRACTION SEVEN EIGHTHS; seveneighths
+\DeclareTextCommand{\textseveneighths}{PU}{\9041\136}% U+215E
+% U+2184 LATIN SMALL LETTER REVERSED C
+\DeclareTextCommand{\textrevc}{PU}{\9041\204}% U+2184
+% U+2189 VULGAR FRACTION ZERO THIRDS
+\DeclareTextCommand{\textzerothirds}{PU}{\9041\211}% U+2189
+% \end{macrocode}
+%
+% \subsubsection{Arrows: U+2190 to U+21FF}
+%
+% \begin{macrocode}
+% U+2190 LEFTWARDS ARROW; arrowleft
+\DeclareTextCommand{\textleftarrow}{PU}{\9041\220}%* U+2190
+% U+2191 UPWARDS ARROW; arrowup
+\DeclareTextCommand{\textuparrow}{PU}{\9041\221}%* U+2191
+% U+2192 RIGHTWARDS ARROW; arrowright
+\DeclareTextCommand{\textrightarrow}{PU}{\9041\222}%* U+2192
+%* \textrightarrow -> \MVRightArrow (marvosym)
+%* \textrightarrow -> \MVRightarrow (marvosym)
+% U+2193 DOWNWARDS ARROW; arrowdown
+\DeclareTextCommand{\textdownarrow}{PU}{\9041\223}%* U+2193
+%* \textdownarrow -> \MVArrowDown (marvosym)
+%* \textdownarrow -> \Force (marvosym)
+% U+2194 LEFT RIGHT ARROW; arrowboth; \leftrightarrow (LaTeX)
+\DeclareTextCommand{\textleftrightarrow}{PU}{\9041\224}%* U+2194
+% U+2195 UP DOWN ARROW; arrowupdn; \updownarrow (LaTeX)
+\DeclareTextCommand{\textupdownarrow}{PU}{\9041\225}%* U+2195
+% U+2196 NORTH WEST ARROW; arrowupleft; \nwarrow (LaTeX)
+\DeclareTextCommand{\textnwarrow}{PU}{\9041\226}%* U+2196
+% U+2197 NORTH EAST ARROW; arrowupright; \nearrow (LaTeX)
+\DeclareTextCommand{\textnearrow}{PU}{\9041\227}%* U+2197
+%* \textnearrow -> \textglobrise (tipa)
+% U+2198 SOUTH EAST ARROW; arrowdownright; \searrow (LaTeX)
+\DeclareTextCommand{\textsearrow}{PU}{\9041\230}%* U+2198
+%* \textsearrow -> \textglobfall (tipa)
+% U+2199 SOUTH WEST ARROW; arrowdownleft; \swarrow (LaTeX)
+\DeclareTextCommand{\textswarrow}{PU}{\9041\231}%* U+2199
+% U+219A LEFTWARDS ARROW WITH STROKE; \nleftarrow (AmS)
+\DeclareTextCommand{\textnleftarrow}{PU}{\9041\232}%* U+219A
+% U+219B RIGHTWARDS ARROW WITH STROKE; \nrightarrow (AmS)
+\DeclareTextCommand{\textnrightarrow}{PU}{\9041\233}%* U+219B
+% U+219E LEFTWARDS TWO HEADED ARROW; \twoheadleftarrow (AmS)
+\DeclareTextCommand{\texttwoheadleftarrow}{PU}{\9041\236}%* U+219E
+% \ntwoheadleftarrow (txfonts/pxfonts)
+\DeclareTextCommand{\textntwoheadleftarrow}{PU}{\9041\236\83\070}%* U+219E U+0338
+% U+219F UPWARDS TWO HEADED ARROW; \twoheaduparrow (MnSymbol)
+\DeclareTextCommand{\texttwoheaduparrow}{PU}{\9041\237}%* U+219F
+% U+21A0 RIGHTWARDS TWO HEADED ARROW;
+% \twoheadrightarrow (AmS)
+\DeclareTextCommand{\texttwoheadrightarrow}{PU}{\9041\240}%* U+21A0
+% \ntwoheadrightarrow (txfonts/pxfonts)
+\DeclareTextCommand{\textntwoheadrightarrow}{PU}{\9041\240\83\070}%* U+21A0 U+0338
+% U+21A1 DOWNWARDS TWO HEADED ARROW; \twoheaddownarrow (MnSymbol)
+\DeclareTextCommand{\texttwoheaddownarrow}{PU}{\9041\241}%* U+21A1
+% U+21A2 LEFTWARDS ARROW WITH TAIL; \leftarrowtail (AmS)
+\DeclareTextCommand{\textleftarrowtail}{PU}{\9041\242}%* U+21A2
+% U+21A3 RIGHTWARDS ARROW WITH TAIL; \rightarrowtail (AmS)
+\DeclareTextCommand{\textrightarrowtail}{PU}{\9041\243}%* U+21A3
+% U+21A6 RIGHTWARDS ARROW FROM BAR; \mapsto (LaTeX)
+\DeclareTextCommand{\textmapsto}{PU}{\9041\246}%* U+21A6
+% U+21A9 LEFTWARDS ARROW WITH HOOK; \hookleftarrow (LaTeX)
+\DeclareTextCommand{\texthookleftarrow}{PU}{\9041\251}%* U+21A9
+% U+21AA RIGHTWARDS ARROW WITH HOOK; \hookrightarrow (LaTeX)
+\DeclareTextCommand{\texthookrightarrow}{PU}{\9041\252}%* U+21AA
+% U+21AB LEFTWARDS ARROW WITH LOOP; \looparrowleft (AmS)
+\DeclareTextCommand{\textlooparrowleft}{PU}{\9041\253}%* U+21AB
+% U+21AC RIGHTWARDS ARROW WITH LOOP; \looparrowright (AmS)
+\DeclareTextCommand{\textlooparrowright}{PU}{\9041\254}%* U+21AC
+% U+21AE LEFT RIGHT ARROW WITH STROKE; \nleftrightarrow (AmS)
+\DeclareTextCommand{\textnleftrightarrow}{PU}{\9041\256}%* U+21AE
+% U+21AF DOWNWARDS ZIGZAG ARROW; \lightning (stmaryrd)
+\DeclareTextCommand{\textlightning}{PU}{\9041\257}%* U+21AF
+%* \textlightning -> \Lightning (marvosym)
+% U+21B5 DOWNWARDS ARROW WITH CORNER LEFTWARDS;
+% \dlsh (mathabx)
+\DeclareTextCommand{\textdlsh}{PU}{\9041\265}%* U+21B5
+% U+21B6 ANTICLOCKWISE TOP SEMICIRCLE ARROW;
+% \curvearrowleft (AmS)
+\DeclareTextCommand{\textcurvearrowleft}{PU}{\9041\266}%* U+21B6
+% U+21B7 CLOCKWISE TOP SEMICIRCLE ARROW; \curvearrowright (AmS)
+\DeclareTextCommand{\textcurvearrowright}{PU}{\9041\267}%* U+21B7
+% U+21BC LEFTWARDS HARPOON WITH BARB UPWARDS; harpoonleftbarbup;
+% \leftharpoonup (LaTeX)
+\DeclareTextCommand{\textleftharpoonup}{PU}{\9041\274}%* U+21BC
+% U+21BD LEFTWARDS HARPOON WITH BARB DOWNWARDS;
+% \leftharpoondown (LaTeX)
+\DeclareTextCommand{\textleftharpoondown}{PU}{\9041\275}%* U+21BD
+% U+21BE UPWARDS HARPOON WITH BARB RIGHTWARDS;
+% \upharpoonright (AmS)
+\DeclareTextCommand{\textupharpoonright}{PU}{\9041\276}%* U+21BE
+% U+21BF UPWARDS HARPOON WITH BARB LEFTWARDS;
+% \upharpoonleft (AmS)
+\DeclareTextCommand{\textupharpoonleft}{PU}{\9041\277}%* U+21BF
+% U+21C0 RIGHTWARDS HARPOON WITH BARB UPWARDS; harpoonrightbarbup
+% \rightharpoonup (LaTeX)
+\DeclareTextCommand{\textrightharpoonup}{PU}{\9041\300}%* U+21C0
+% U+21C1 RIGHTWARDS HARPOON WITH BARB DOWNWARDS;
+% \rightharpoondown (LaTeX)
+\DeclareTextCommand{\textrightharpoondown}{PU}{\9041\301}%* U+21C1
+% U+21C2 DOWNWARDS HARPOON WITH BARB RIGHTWARDS;
+% \downharpoonright (AmS)
+\DeclareTextCommand{\textdownharpoonright}{PU}{\9041\302}%* U+21C2
+% U+21C3 DOWNWARDS HARPOON WITH BARB LEFTWARDS;
+% \downharpoonleft (AmS)
+\DeclareTextCommand{\textdownharpoonleft}{PU}{\9041\303}%* U+21C3
+% U+21C4 RIGHTWARDS ARROW OVER LEFTWARDS ARROW;
+% arrowrightoverleft; \rightleftarrows (MnSymbol)
+\DeclareTextCommand{\textrightleftarrows}{PU}{\9041\304}%* U+21C4
+% U+21C5 UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW; arrowupleftofdown;
+% \updownarrows (MnSymbol)
+\DeclareTextCommand{\textupdownarrows}{PU}{\9041\305}%* U+21C5
+% U+21C6 LEFTWARDS ARROW OVER RIGHTWARDS ARROW; arrowleftoverright;
+% \leftrightarrows (AmS)
+\DeclareTextCommand{\textleftrightarrows}{PU}{\9041\306}%* U+21C6
+% U+21C7 LEFTWARDS PAIRED ARROWS; \leftleftarrows (AmS)
+\DeclareTextCommand{\textleftleftarrows}{PU}{\9041\307}%* U+21C7
+% U+21C8 UPWARDS PAIRED ARROWS; \upuparrows (AmS)
+\DeclareTextCommand{\textupuparrows}{PU}{\9041\310}%* U+21C8
+% U+21C9 RIGHTWARDS PAIRED ARROWS; \rightrightarrows (AmS)
+\DeclareTextCommand{\textrightrightarrows}{PU}{\9041\311}%* U+21C9
+% U+21CA DOWNWARDS PAIRED ARROWS; \downdownarrows (AmS)
+\DeclareTextCommand{\textdowndownarrows}{PU}{\9041\312}%* U+21CA
+% U+21CB LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;
+% \leftrightharpoons (AmS);
+\DeclareTextCommand{\textleftrightharpoons}{PU}{\9041\313}%* U+21CB
+% U+21CC RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;
+% \rightleftharpoons (LaTeX, AmS)
+\DeclareTextCommand{\textrightleftharpoons}{PU}{\9041\314}%* U+21CC
+% U+21CD LEFTWARDS DOUBLE ARROW WITH STROKE; arrowleftdblstroke;
+% \nLeftarrow (AmS)
+\DeclareTextCommand{\textnLeftarrow}{PU}{\9041\315}%* U+21CD
+% U+21CE LEFT RIGHT DOUBLE ARROW WITH STROKE; \nLeftrightarrow (AmS)
+\DeclareTextCommand{\textnLeftrightarrow}{PU}{\9041\316}%* U+21CE
+% U+21CF RIGHTWARDS DOUBLE ARROW WITH STROKE; arrowrightdblstroke;
+% \nRightarrow (AmS)
+\DeclareTextCommand{\textnRightarrow}{PU}{\9041\317}%* U+21CF
+% U+21D0 LEFTWARDS DOUBLE ARROW; arrowdblleft, arrowleftdbl;
+% \Leftarrow (LaTeX)
+\DeclareTextCommand{\textLeftarrow}{PU}{\9041\320}%* U+21D0
+% U+21D1 UPWARDS DOUBLE ARROW; arrowdblup; \Uparrow (LaTeX)
+\DeclareTextCommand{\textUparrow}{PU}{\9041\321}%* U+21D1
+% U+21D2 RIGHTWARDS DOUBLE ARROW; arrowdblright, dblarrowright;
+% \Rightarrow (LaTeX)
+\DeclareTextCommand{\textRightarrow}{PU}{\9041\322}%* U+21D2
+%* \textRightarrow -> \Conclusion (marvosym)
+% U+21D3 DOWNWARDS DOUBLE ARROW; arrowdbldown; \Downarrow (LaTeX)
+\DeclareTextCommand{\textDownarrow}{PU}{\9041\323}%* U+21D3
+% U+21D4 LEFT RIGHT DOUBLE ARROW; arrowdblboth;
+% \Leftrightarrow (LaTeX)
+\DeclareTextCommand{\textLeftrightarrow}{PU}{\9041\324}%* U+21D4
+%* textLeftrightarrow -> \Equivalence (marvosym)
+% U+21D5 UP DOWN DOUBLE ARROW; \Updownarrow (LaTeX)
+\DeclareTextCommand{\textUpdownarrow}{PU}{\9041\325}%* U+21D5
+% U+21D6 NORTH WEST DOUBLE ARROW; \Nwarrow (MnSymbol)
+\DeclareTextCommand{\textNwarrow}{PU}{\9041\326}%* U+21D6
+% U+21D7 NORTH EAST DOUBLE ARROW; \Nearrow (MnSymbol)
+\DeclareTextCommand{\textNearrow}{PU}{\9041\327}%* U+21D7
+% U+21D8 SOUTH EAST DOUBLE ARROW; \Searrow (MnSymbol)
+\DeclareTextCommand{\textSearrow}{PU}{\9041\330}%* U+21D8
+% U+21D9 SOUTH WEST DOUBLE ARROW; \Swarrow (MnSymbol)
+\DeclareTextCommand{\textSwarrow}{PU}{\9041\331}%* U+21D9
+% U+21DA LEFTWARDS TRIPLE ARROW; \Lleftarrow (AmS)
+\DeclareTextCommand{\textLleftarrow}{PU}{\9041\332}%* U+21DA
+% U+21DB RIGHTWARDS TRIPLE ARROW; \Rrightarrow (MnSymbol)
+\DeclareTextCommand{\textRrightarrow}{PU}{\9041\333}%* U+21DB
+% U+21DC LEFTWARDS SQUIGGLE ARROW; \leftsquigarrow (mathabx)
+\DeclareTextCommand{\textleftsquigarrow}{PU}{\9041\334}%* U+21DC
+% U+21DD RIGHTWARDS SQUIGGLE ARROW; \rightsquigarrow (mathabx)
+\DeclareTextCommand{\textrightsquigarrow}{PU}{\9041\335}%* U+21DD
+% U+21E0 LEFTWARDS DASHED ARROW; arrowdashleft;
+% \dashleftarrow (AmS)
+\DeclareTextCommand{\textdashleftarrow}{PU}{\9041\340}%* U+21E0
+%* \textdashleftarrow -> \dashedleftarrow (MnSymbol)
+% U+21E1 UPWARDS DASHED ARROW; arrowdashup; \dasheduparrow (MnSymbol)
+\DeclareTextCommand{\textdasheduparrow}{PU}{\9041\341}%* U+21E1
+% U+21E2 RIGHTWARDS DASHED ARROW; arrowdashright; \dashrightarrow (AmS)
+\DeclareTextCommand{\textdashrightarrow}{PU}{\9041\342}%* U+21E2
+%* \textdashrightarrow -> \dashedrightarrow (MnSymbol)
+% U+21E3 DOWNWARDS DASHED ARROW; arrowdashdown; \dasheddownarrow (MnSymbol)
+\DeclareTextCommand{\textdasheddownarrow}{PU}{\9041\343}%* U+21E3
+% U+21E8 RIGHTWARDS WHITE ARROW; \pointer (wasysym)
+\DeclareTextCommand{\textpointer}{PU}{\9041\350}%* U+21E8
+% U+21F5 DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;
+% \downuparrows (MnSymbol)
+\DeclareTextCommand{\textdownuparrows}{PU}{\9041\365}%* U+21F5
+% U+21FD LEFTWARDS OPEN-HEADED ARROW; \leftarrowtriangle (stmaryrd)
+\DeclareTextCommand{\textleftarrowtriangle}{PU}{\9041\375}%* U+21FD
+% U+21FE RIGHTWARDS OPEN-HEADED ARROW; \rightarrowtriangle (stmaryrd)
+\DeclareTextCommand{\textrightarrowtriangle}{PU}{\9041\376}%* U+21FE
+% U+21FF LEFT RIGHT OPEN-HEADED ARROW; \leftrightarrowtriangle (stmaryrd)
+\DeclareTextCommand{\textleftrightarrowtriangle}{PU}{\9041\377}%* U+21FF
+% \end{macrocode}
+%
+% \subsubsection{Mathematical Operators: U+2200 to U+22FF}
+%
+% \begin{macrocode}
+% U+2200 FOR ALL; forall; \forall (LaTeX)
+\DeclareTextCommand{\textforall}{PU}{\9042\000}%* U+2200
+% U+2201 COMPLEMENT; \complement (AmS)
+\DeclareTextCommand{\textcomplement}{PU}{\9042\001}%* U+2201
+% U+2202 PARTIAL DIFFERENTIAL; partialdiff; \partial (LaTeX)
+\DeclareTextCommand{\textpartial}{PU}{\9042\002}%* U+2202
+% U+2203 THERE EXISTS; existential; \exists (LaTeX)
+\DeclareTextCommand{\textexists}{PU}{\9042\003}%* U+2203
+% U+2204 THERE DOES NOT EXIST; \nexists (AmS)
+\DeclareTextCommand{\textnexists}{PU}{\9042\004}%* U+2204
+% U+2205 EMPTY SET; emptyset; \emptyset (LaTeX), \varnothing (AmS)
+\DeclareTextCommand{\textemptyset}{PU}{\9042\005}%* U+2205
+%* \textemptyset -> \varnothing (AmS)
+% U+2206 INCREMENT; increment, Deta; \triangle (LaTeX)
+\DeclareTextCommand{\texttriangle}{PU}{\9042\006}%* U+2206
+% U+2207 NABLA; nabla, gradient; \nabla (LaTeX)
+\DeclareTextCommand{\textnabla}{PU}{\9042\007}%* U+2207
+% U+2208 ELEMENT OF; element; \in (LaTeX)
+\DeclareTextCommand{\textin}{PU}{\9042\010}%* U+2208
+% U+2209 NOT AN ELEMENT OF; notelement, notelementof; \notin (LaTeX)
+\DeclareTextCommand{\textnotin}{PU}{\9042\011}%* U+2209
+% U+220A SMALL ELEMENT OF; \smallin (mathdesign)
+\DeclareTextCommand{\textsmallin}{PU}{\9042\012}%* U+220A
+% U+220B CONTAINS AS MEMBER; suchthat; \ni (LaTeX)
+\DeclareTextCommand{\textni}{PU}{\9042\013}%* U+220B
+%* \textni -> \owns (mathabx)
+% U+220C DOES NOT CONTAIN AS MEMBER; \notowner (mathabx)
+\DeclareTextCommand{\textnotowner}{PU}{\9042\014}%* U+220C
+%* \textnotowner -> \notni (txfonts/pxfonts)
+% U+220D SMALL CONTAINS AS MEMBER; \smallowns (mathdesign)
+\DeclareTextCommand{\textsmallowns}{PU}{\9042\015}%* U+220D
+% U+220F N-ARY PRODUCT; \prod (LaTeX)
+\DeclareTextCommand{\textprod}{PU}{\9042\017}%* U+220F
+% U+2210 N-ARY COPRODUCT; \amalg (LaTeX)
+\DeclareTextCommand{\textamalg}{PU}{\9042\020}%* U+2210
+% U+2211 N-ARY SUMMATION; summation; \sum (LaTeX)
+\DeclareTextCommand{\textsum}{PU}{\9042\021}%* U+2211
+% U+2212 MINUS SIGN; minus
+\DeclareTextCommand{\textminus}{PU}{\9042\022}% U+2212
+% U+2213 MINUS-OR-PLUS SIGN; minusplus; \mp (LaTeX)
+\DeclareTextCommand{\textmp}{PU}{\9042\023}%* U+2213
+% U+2214 DOT PLUS; \dotplus (AmS)
+\DeclareTextCommand{\textdotplus}{PU}{\9042\024}%* U+2214
+% U+2215 DIVISION SLASH; divisionslash; \Divides (marvosym)
+\DeclareTextCommand{\textDivides}{PU}{\9042\025}%* U+2215
+% \DividesNot (marvosym)
+\DeclareTextCommand{\textDividesNot}{PU}{\9042\025\9040\322}%* U+2215 U+20D2
+% U+2216 SET MINUS; \setminus (LaTeX)
+\DeclareTextCommand{\textsetminus}{PU}{\9042\026}%* U+2216
+% U+2217 ASTERISK OPERATOR; asteriskmath; \ast (LaTeX)
+\DeclareTextCommand{\textast}{PU}{\9042\027}%* U+2217
+% U+2218 RING OPERATOR; \circ (LaTeX)
+\DeclareTextCommand{\textcirc}{PU}{\9042\030}%* U+2218
+% U+2219 BULLET OPERATOR; bulletoperator; \bullet (LaTeX)
+\DeclareTextCommand{\textbulletoperator}{PU}{\9042\031}% U+2219
+% U+221A SQUARE ROOT; radical
+\DeclareTextCommand{\textsurd}{PU}{\9042\032}%* U+221A
+% U+221D PROPORTIONAL TO; proportional; \propto (LaTeX)
+\DeclareTextCommand{\textpropto}{PU}{\9042\035}%* U+221D
+%* \textpropto -> \varprop (wasysym)
+% U+221E INFINITY; infinity; \infty (LaTeX)
+\DeclareTextCommand{\textinfty}{PU}{\9042\036}%* U+221E
+% U+2220 ANGLE; angle; \angle (LaTeX)
+\DeclareTextCommand{\textangle}{PU}{\9042\040}%* U+2220
+% U+2221 MEASURED ANGLE; \measuredangle (mathabx, MnSymbol)
+\DeclareTextCommand{\textmeasuredangle}{PU}{\9042\041}%* U+2221
+% U+2222 SPHERICAL ANGLE; \sphericalangle (AmS)
+\DeclareTextCommand{\textsphericalangle}{PU}{\9042\042}%* U+2222
+%* \textsphericalangle -> \varangle (wasysym)
+%* \textsphericalangle -> \Anglesign (marvosym)
+%* \textsphericalangle -> \AngleSign (marvosym)
+% U+2223 DIVIDES; divides; \mid (LaTeX)
+\DeclareTextCommand{\textmid}{PU}{\9042\043}%* U+2223
+% U+2224 DOES NOT DIVIDE; \nmid (AmS)
+\DeclareTextCommand{\textnmid}{PU}{\9042\044}%* U+2224
+%* \textnmid -> \notdivides (mathabx)
+% U+2225 PARALLEL TO; parallel; \parallel (LaTeX)
+\DeclareTextCommand{\textparallel}{PU}{\9042\045}%* U+2225
+% U+2226 NOT PARALLEL TO; notparallel; \nparallel (AmS)
+\DeclareTextCommand{\textnparallel}{PU}{\9042\046}%* U+2226
+%* \textnparallel -> nUpdownline (MnSymbol)
+% U+2227 LOGICAL AND; logicaland; \wedge (LaTeX)
+\DeclareTextCommand{\textwedge}{PU}{\9042\047}%* U+2227
+% \owedge (stmaryrd)
+\DeclareTextCommand{\textowedge}{PU}{\9042\047\9040\335}%* U+2227 U+20DD
+%* \textowedge -> \varowedge (stmaryrd)
+% U+2228 LOGICAL OR; logicalor; \vee (LaTeX)
+\DeclareTextCommand{\textvee}{PU}{\9042\050}%* U+2228
+% \ovee (stmaryrd)
+\DeclareTextCommand{\textovee}{PU}{\9042\050\9040\335}%* U+2228 U+20DD
+%* \textovee -> \varovee (stmaryrd)
+% U+2229 INTERSECTION; intersection; \cap (LaTeX)
+\DeclareTextCommand{\textcap}{PU}{\9042\051}%* U+2229
+% U+222A UNION; union; \cup (LaTeX)
+\DeclareTextCommand{\textcup}{PU}{\9042\052}%* U+222A
+% U+222B INTEGRAL; integral; \int (LaTeX)
+\DeclareTextCommand{\textint}{PU}{\9042\053}%* U+222B
+%* \textint -> \varint (wasysym)
+% U+222C DOUBLE INTEGRAL; dblintegral; \iint (AmS)
+\DeclareTextCommand{\textiint}{PU}{\9042\054}%* U+222C
+% U+222D TRIPLE INTEGRAL; \iiint (AmS)
+\DeclareTextCommand{\textiiint}{PU}{\9042\055}%* U+222D
+% U+222E CONTOUR INTEGRAL; contourintegral; \oint (LaTeX)
+\DeclareTextCommand{\textoint}{PU}{\9042\056}%* U+222E
+%* \textoint -> \varoint (wasysym)
+% U+222F SURFACE INTEGRAL; \oiint (wasysym)
+\DeclareTextCommand{\textoiint}{PU}{\9042\057}%* U+222F
+% U+2232 CLOCKWISE CONTOUR INTEGRAL;
+% \ointclockwise (txfonts/pxfonts)
+\DeclareTextCommand{\textointclockwise}{PU}{\9042\062}%* U+2232
+% U+2233 ANTICLOCKWISE CONTOUR INTEGRAL; \ointctrclockwise (txfonts/pxfonts)
+\DeclareTextCommand{\textointctrclockwise}{PU}{\9042\063}%* U+2233
+% U+2234 THEREFORE; therefore; \therefore (AmS)
+\DeclareTextCommand{\texttherefore}{PU}{\9042\064}%* U+2234
+%* \texttherefore -> uptherefore (MnSymbol)
+% U+2235 BECAUSE; because; \because (AmS)
+\DeclareTextCommand{\textbecause}{PU}{\9042\065}%* U+2235
+%* \textbecause -> \downtherefore (MnSymbol)
+% U+2236 RATIO; \vdotdot (MnSymbol)
+\DeclareTextCommand{\textvdotdot}{PU}{\9042\066}%* U+2236
+% U+2237 PROPORTION; \squaredots (MnSymbol)
+\DeclareTextCommand{\textsquaredots}{PU}{\9042\067}%* U+2237
+% U+2238 DOT MINUS; \dotminus (MnSymbol)
+\DeclareTextCommand{\textdotminus}{PU}{\9042\070}%* U+2238
+%* \textdotminus -> \textdotdiv (mathabx)
+% U+2239 EXCESS; \eqcolon (txfonts/pxfonts)
+\DeclareTextCommand{\texteqcolon}{PU}{\9042\071}%* U+2239
+% U+223C TILDE OPERATOR; similar; \sim (LaTeX)
+\DeclareTextCommand{\textsim}{PU}{\9042\074}%* U+223C
+%* \textsim -> \AC (wasysym)
+% U+223D REVERSED TILDE; reversedtilde; \backsim (AmS)
+\DeclareTextCommand{\textbacksim}{PU}{\9042\075}%* U+223D
+% \nbacksim (txfonts/pxfonts)
+\DeclareTextCommand{\textnbacksim}{PU}{\9042\075\83\070}%* U+223D U+0338
+% U+2240 WREATH PRODUCT; \wr (LaTeX)
+\DeclareTextCommand{\textwr}{PU}{\9042\100}%* U+2240
+%* \textwr -> \wreath (MnSymbol)
+% U+2241 NOT TILDE; \nsim (AmS)
+\DeclareTextCommand{\textnsim}{PU}{\9042\101}%* U+2241
+% U+2242 MINUS TILDE; \eqsim (MnSymbol)
+\DeclareTextCommand{\texteqsim}{PU}{\9042\102}%* U+2242
+% \neqsim (MnSymbol)
+\DeclareTextCommand{\textneqsim}{PU}{\9042\102\83\070}%* U+2242 U+0338
+% U+2243 ASYMPTOTICALLY EQUAL TO; asymptoticallyequal; \simeq (LaTeX)
+\DeclareTextCommand{\textsimeq}{PU}{\9042\103}%* U+2243
+% U+2244 NOT ASYMPTOTICALLY EQUAL TO; \nsimeq (txfonts/pxfonts)
+\DeclareTextCommand{\textnsimeq}{PU}{\9042\104}%* U+2244
+% U+2245 APPROXIMATELY EQUAL TO; approximatelyequal; \cong (LaTeX)
+\DeclareTextCommand{\textcong}{PU}{\9042\105}%* U+2245
+% U+2247 NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;
+% \ncong (AmS)
+\DeclareTextCommand{\textncong}{PU}{\9042\107}%* U+2247
+% U+2248 ALMOST EQUAL TO; approxequal; \approx (LaTeX)
+\DeclareTextCommand{\textapprox}{PU}{\9042\110}%* U+2248
+% U+2249 NOT ALMOST EQUAL TO; \napprox (txfonts/pxfonts0
+\DeclareTextCommand{\textnapprox}{PU}{\9042\111}%* U+2249
+%* \textnapprox -> \nthickapprox (txfonts/pxfonts)
+% U+224A ALMOST EQUAL OR EQUAL TO; \approxeq (AmS)
+\DeclareTextCommand{\textapproxeq}{PU}{\9042\112}%* U+224A
+% \napproxeq (txfonts/pxfonts)
+\DeclareTextCommand{\textnapproxeq}{PU}{\9042\112\83\070}%* U+224A U+0338
+% U+224B TRIPLE TILDE; \triplesim (MnSymbol)
+\DeclareTextCommand{\texttriplesim}{PU}{\9042\113}%* U+224B
+%* \texttriplesim -> \VHF (wasysym)
+% \ntriplesim (MnSymbol)
+\DeclareTextCommand{\textntriplesim}{PU}{\9042\113\83\070}%* U+224B U+0338
+% U+224C ALL EQUAL TO; allequal; \backcong (MnSymbol)
+\DeclareTextCommand{\textbackcong}{PU}{\9042\114}%* U+224C
+% \nbackcong (MnSymbol)
+\DeclareTextCommand{\textnbackcong}{PU}{\9042\114\83\070}%* U+224C U+0338
+% U+224D EQUIVALENT TO; \asymp (LaTeX)
+\DeclareTextCommand{\textasymp}{PU}{\9042\115}%* U+224D
+% \nasymp (txfonts/pxfonts)
+\DeclareTextCommand{\textnasymp}{PU}{\9042\115\83\070}%* U+224D U+0338
+%* \textnasymp -> \notasymp (mathabx)
+% U+224E GEOMETRICALLY EQUIVALENT TO; \Bumpeq (AmS)
+\DeclareTextCommand{\textBumpeq}{PU}{\9042\116}%* U+224E
+% \nBumpeq (txfonts/pxfonts)
+\DeclareTextCommand{\textnBumpeq}{PU}{\9042\116\83\070}%* U+224E U+0338
+% U+224F DIFFERENCE BETWEEN; \bumpeq (AmS)
+\DeclareTextCommand{\textbumpeq}{PU}{\9042\117}%* U+224F
+% \nbumpeq (txfonts/pxfonts)
+\DeclareTextCommand{\textnbumpeq}{PU}{\9042\117\83\070}%* U+224F U+0338
+% U+2250 APPROACHES THE LIMIT; approaches; \doteq (LaTeX)
+\DeclareTextCommand{\textdoteq}{PU}{\9042\120}%* U+2250
+% \ndoteq (MnSymbol)
+\DeclareTextCommand{\textndoteq}{PU}{\9042\120\83\070}%* U+2250 U+0338
+% U+2251 GEOMETRICALLY EQUAL TO; geometricallyequal;
+% \doteqdot (AmS)
+\DeclareTextCommand{\textdoteqdot}{PU}{\9042\121}%* U+2251
+%* \textdoteqdot -> \Doteq (MnSymbol)
+% \nDoteq (MnSymbol)
+\DeclareTextCommand{\textnDoteq}{PU}{\9042\121\83\070}%* U+2251 U+0338
+% U+2252 APPROXIMATELY EQUAL TO OR THE IMAGE OF; approxequalorimage;
+% \fallingdotseq (AmS)
+\DeclareTextCommand{\textfallingdoteq}{PU}{\9042\122}%* U+2252
+% \nfallingdotseq (MnSymbol)
+\DeclareTextCommand{\textnfallingdoteq}{PU}{\9042\122\83\070}%* U+2252 U+0338
+% U+2253 IMAGE OF OR APPROXIMATELY EQUAL TO; imageorapproximatelyequal;
+% \risingdotseq (AmS)
+\DeclareTextCommand{\textrisingdoteq}{PU}{\9042\123}%* U+2253
+% \nrisingdoteq (MnSymbol)
+\DeclareTextCommand{\textnrisingdoteq}{PU}{\9042\123\83\070}%* U+2253 U+0338
+% U+2254 COLON EQUALS; \colonequals (colonequals)
+\DeclareTextCommand{\textcolonequals}{PU}{\9042\124}%* U+2254
+% U+2255 EQUALS COLON; \equalscolon (colonequals)
+\DeclareTextCommand{\textequalscolon}{PU}{\9042\125}%* U+2255
+% U+2256 RING IN EQUAL TO; \eqcirc (AmS)
+\DeclareTextCommand{\texteqcirc}{PU}{\9042\126}%* U+2256
+% \neqcirc (MnSymbol)
+\DeclareTextCommand{\textneqcirc}{PU}{\9042\126\83\070}%* U+2256 U+0338
+% U+2257 RING EQUAL TO; \circeq (AmS)
+\DeclareTextCommand{\textcirceq}{PU}{\9042\127}%* U+2257
+% \ncirceq (MnSymbol)
+\DeclareTextCommand{\textncirceq}{PU}{\9042\127\83\070}%* U+2257 U+0338
+% U+2259 ESTIMATES; \hateq (MnSymbol)
+\DeclareTextCommand{\texthateq}{PU}{\9042\131}%* U+2259
+%* \texthateq -> \corresponds (mathabx)
+%* \texthateq -> \Corresponds (marvosym)
+% \nhateq (MnSymbol)
+\DeclareTextCommand{\textnhateq}{PU}{\9042\131\83\070}%* U+2259 U+0338
+% U+225C DELTA EQUAL TO; \triangleeq (AmS)
+\DeclareTextCommand{\texttriangleeq}{PU}{\9042\134}%* U+225C
+% U+2260 NOT EQUAL TO; notequal; \ne (LaTeX), \neq (LaTeX)
+\DeclareTextCommand{\textneq}{PU}{\9042\140}%* U+2260
+\DeclareTextCommand{\textne}{PU}{\9042\140}%* U+2260
+%* \textneq -> \nequal (MnSymbol)
+% U+2261 IDENTICAL TO; equivalence; \equiv (LaTeX)
+\DeclareTextCommand{\textequiv}{PU}{\9042\141}%* U+2261
+%* \textequiv -> \Congruent (marvosym)
+% U+2262 NOT IDENTICAL TO; notidentical; \nequiv (txfonts/pxfonts)
+\DeclareTextCommand{\textnequiv}{PU}{\9042\142}%* U+2262
+%* \textnequiv -> \NotCongruent (marvosym)
+%* \textnequiv -> \notequiv (mathabx)
+% U+2264 LESS-THAN OR EQUAL TO; lessequal; \le (LaTeX), \leq (LaTeX)
+\DeclareTextCommand{\textleq}{PU}{\9042\144}%* U+2264
+\DeclareTextCommand{\textle}{PU}{\9042\144}%* U+2264
+%* \textleq -> \LessOrEqual (marvosym)
+% U+2265 GREATER-THAN OR EQUAL TO; greaterequal;
+% \ge (LaTeX), \geq (LaTeX)
+\DeclareTextCommand{\textgeq}{PU}{\9042\145}%* U+2265
+\DeclareTextCommand{\textge}{PU}{\9042\145}%* U+2265
+%* \textgeq -> \LargerOrEqual (marvosym)
+% U+2266 LESS-THAN OVER EQUAL TO; lessoverequal; \leqq (AmS)
+\DeclareTextCommand{\textleqq}{PU}{\9042\146}%* U+2266
+% \nleqq (txfonts/pxfonts)
+\DeclareTextCommand{\textnleqq}{PU}{\9042\146\83\070}%* U+2266 U+0338
+% U+2267 GREATER-THAN OVER EQUAL TO; greateroverequal; \geqq (AmS)
+\DeclareTextCommand{\textgeqq}{PU}{\9042\147}%* U+2267
+% \ngeqq (txfonts/pxfonts)
+\DeclareTextCommand{\textngeqq}{PU}{\9042\147\83\070}%* U+2267 U+0338
+% U+2268 LESS-THAN BUT NOT EQUAL TO; \lneqq (AmS)
+\DeclareTextCommand{\textlneqq}{PU}{\9042\150}%* U+2268
+% U+2269 GREATER-THAN BUT NOT EQUAL TO; \gneqq (AmS)
+\DeclareTextCommand{\textgneqq}{PU}{\9042\151}%* U+2269
+% U+226A MUCH LESS-THAN; muchless; \ll (LaTeX)
+\DeclareTextCommand{\textll}{PU}{\9042\152}%* U+226A
+% \nll (txfonts/pxfonts)
+\DeclareTextCommand{\textnll}{PU}{\9042\152\83\070}%* U+226A U+0338
+% U+226B MUCH GREATER-THAN; muchgreater; \gg (LaTeX)
+\DeclareTextCommand{\textgg}{PU}{\9042\153}%* U+226B
+% \ngg (txfonts/pxfonts)
+\DeclareTextCommand{\textngg}{PU}{\9042\153\83\070}%* U+226B U+0338
+% U+226C BETWEEN; \between (AmS)
+\DeclareTextCommand{\textbetween}{PU}{\9042\154}%* U+226C
+% U+226E NOT LESS-THAN; notless; \nless (AmS)
+\DeclareTextCommand{\textnless}{PU}{\9042\156}%* U+226E
+% U+226F NOT GREATER-THAN; notgreater; \ngtr (AmS)
+\DeclareTextCommand{\textngtr}{PU}{\9042\157}%* U+226F
+% U+2270 NEITHER LESS-THAN NOR EQUAL TO; notlessnorequal;
+% \nleq (AmS)
+\DeclareTextCommand{\textnleq}{PU}{\9042\160}%* U+2270
+% U+2271 NEITHER GREATER-THAN NOR EQUAL TO; notgreaternorequal; \ngeq (AmS)
+\DeclareTextCommand{\textngeq}{PU}{\9042\161}%* U+2271
+% U+2272 LESS-THAN OR EQUIVALENT TO; lessorequivalent; \lesssim (AmS)
+\DeclareTextCommand{\textlesssim}{PU}{\9042\162}%* U+2272
+%* \textlesssim -> \apprle (wasysym)
+% U+2273 GREATER-THAN OR EQUIVALENT TO; greaterorequivalent; \gtrsim (AmS)
+\DeclareTextCommand{\textgtrsim}{PU}{\9042\163}%* U+2273
+%* \textgtrsim -> \apprge (wasysym)
+% U+2274 NEITHER LESS-THAN NOR EQUIVALENT TO; \nlesssim (txfonts/pxfonts)
+\DeclareTextCommand{\textnlesssim}{PU}{\9042\164}%* U+2274
+% U+2275 NEITHER GREATER-THAN NOR EQUIVALENT TO; \ngtrsim (txfonts/pxfonts)
+\DeclareTextCommand{\textngtrsim}{PU}{\9042\165}%* U+2275
+% U+2276 LESS-THAN OR GREATER-THAN; lessorgreater; \lessgtr (AmS)
+\DeclareTextCommand{\textlessgtr}{PU}{\9042\166}%* U+2276
+% U+2277 GREATER-THAN OR LESS-THAN; greaterorless; \gtrless (AmS)
+\DeclareTextCommand{\textgtrless}{PU}{\9042\167}%* U+2277
+% U+2278 NEITHER LESS-THAN NOR GREATER-THAN; \ngtrless (txfonts/pxfonts)
+\DeclareTextCommand{\textngtrless}{PU}{\9042\170}%* U+2278
+% U+2279 NEITHER GREATER-THAN NOR LESS-THAN; \nlessgtr (txfonts/pxfonts)
+\DeclareTextCommand{\textnlessgtr}{PU}{\9042\171}%* U+2279
+% U+227A PRECEDES; precedes; \prec (LaTeX)
+\DeclareTextCommand{\textprec}{PU}{\9042\172}%* U+227A
+% U+227B SUCCEEDS; succeeds; \succ (LaTeX)
+\DeclareTextCommand{\textsucc}{PU}{\9042\173}%* U+227B
+% U+227C PRECEDES OR EQUAL TO; \preccurlyeq (AmS)
+\DeclareTextCommand{\textpreccurlyeq}{PU}{\9042\174}%* U+227C
+% U+227D SUCCEEDS OR EQUAL TO; \succcurlyeq (AmS)
+\DeclareTextCommand{\textsucccurlyeq}{PU}{\9042\175}%* U+227D
+% U+227E PRECEDES OR EQUIVALENT TO; \precsim (AmS)
+\DeclareTextCommand{\textprecsim}{PU}{\9042\176}%* U+227E
+% \nprecsim (txfonts/pxfonts)
+\DeclareTextCommand{\textnprecsim}{PU}{\9042\176\83\070}%* U+227E U+0338
+% U+227F SUCCEEDS OR EQUIVALENT TO; \succsim (AmS)
+\DeclareTextCommand{\textsuccsim}{PU}{\9042\177}%* U+227F
+% \nsuccsim (txfonts/pxfonts)
+\DeclareTextCommand{\textnsuccsim}{PU}{\9042\177\83\070}%* U+227F U+0338
+% U+2280 DOES NOT PRECEDE; notprecedes; \nprec (AmS)
+\DeclareTextCommand{\textnprec}{PU}{\9042\200}%* U+2280
+% U+2281 DOES NOT SUCCEED; notsucceeds; \nsucc (AmS)
+\DeclareTextCommand{\textnsucc}{PU}{\9042\201}%* U+2281
+% U+2282 SUBSET OF; propersubset; \subset (LaTeX)
+\DeclareTextCommand{\textsubset}{PU}{\9042\202}%* U+2282
+% U+2283 SUPERSET OF; propersuperset; \supset (LaTeX)
+\DeclareTextCommand{\textsupset}{PU}{\9042\203}%* U+2283
+% U+2284 NOT A SUBSET OF; notsubset; \nsubset (mathabx)
+\DeclareTextCommand{\textnsubset}{PU}{\9042\204}%* U+2284
+% U+2285 NOT A SUPERSET OF; notsuperset; \nsupset (mathabx)
+\DeclareTextCommand{\textnsupset}{PU}{\9042\205}%* U+2285
+% U+2286 SUBSET OF OR EQUAL TO; reflexsubset; \subseteq (LaTeX)
+\DeclareTextCommand{\textsubseteq}{PU}{\9042\206}%* U+2286
+% U+2287 SUPERSET OF OR EQUAL TO; reflexsuperset; \supseteq (LaTeX)
+\DeclareTextCommand{\textsupseteq}{PU}{\9042\207}%* U+2287
+% U+2288 NEITHER A SUBSET OF NOR EQUAL TO; \nsubseteq (AmS)
+\DeclareTextCommand{\textnsubseteq}{PU}{\9042\210}%* U+2288
+% U+2289 NEITHER A SUPERSET OF NOR EQUAL TO; \nsupseteq (AmS)
+\DeclareTextCommand{\textnsupseteq}{PU}{\9042\211}%* U+2289
+% U+228A SUBSET OF WITH NOT EQUAL TO; subsetnotequal; \subsetneq (AmS)
+\DeclareTextCommand{\textsubsetneq}{PU}{\9042\212}%* U+228A
+% U+228B SUPERSET OF WITH NOT EQUAL TO; supersetnotequal; \supsetneq (AmS)
+\DeclareTextCommand{\textsupsetneq}{PU}{\9042\213}%* U+228B
+% U+228D MULTISET MULTIPLICATION; \cupdot (MnSymbol)
+\DeclareTextCommand{\textcupdot}{PU}{\9042\215}%* U+228D
+% U+228E MULTISET UNION; \cupplus (MnSymbol)
+\DeclareTextCommand{\textcupplus}{PU}{\9042\216}%* U+228E
+% U+228F SQUARE IMAGE OF; \sqsubset (latexsym, ...)
+\DeclareTextCommand{\textsqsubset}{PU}{\9042\217}%* U+228F
+% \nsqsubset (txfonts/pxfonts)
+\DeclareTextCommand{\textnsqsubset}{PU}{\9042\217\83\070}%* U+228F U+0338
+% U+2290 SQUARE ORIGINAL OF; \sqsupset (latexsym, ...)
+\DeclareTextCommand{\textsqsupset}{PU}{\9042\220}%* U+2290
+% \nsqsupset (txfonts/pxfonts)
+\DeclareTextCommand{\textnsqsupset}{PU}{\9042\220\83\070}%* U+2290 U+0338
+% U+2291 SQUARE IMAGE OF OR EQUAL TO; \sqsubseteq (LaTeX)
+\DeclareTextCommand{\textsqsubseteq}{PU}{\9042\221}%* U+2291
+% \nsqsubseteq (txfonts/pxfonts)
+\DeclareTextCommand{\textnsqsubseteq}{PU}{\9042\221\83\070}%* U+2291 U+0338
+% U+2292 SQUARE ORIGINAL OF OR EQUAL TO; \sqsupseteq (LaTeX)
+\DeclareTextCommand{\textsqsupseteq}{PU}{\9042\222}%* U+2292
+% \nsqsupseteq (txfonts/pxfonts)
+\DeclareTextCommand{\textnsqsupseteq}{PU}{\9042\222\83\070}%* U+2292 U+0338
+% U+2293 SQUARE CAP; \sqcap (LaTeX)
+\DeclareTextCommand{\textsqcap}{PU}{\9042\223}%* U+2293
+% U+2294 SQUARE CUP; \sqcup (LaTeX)
+\DeclareTextCommand{\textsqcup}{PU}{\9042\224}%* U+2294
+% U+2295 CIRCLED PLUS; circleplus; \oplus (LaTeX)
+\DeclareTextCommand{\textoplus}{PU}{\9042\225}%* U+2295
+%* \textoplus -> \varoplus (stmaryrd)
+% U+2296 CIRCLED MINUS; minuscircle; \ominus (LaTeX)
+\DeclareTextCommand{\textominus}{PU}{\9042\226}%* U+2296
+%* \textominus -> \varominus (stmaryrd)
+% U+2297 CIRCLED TIMES; circlemultiply; \otimes (LaTeX)
+\DeclareTextCommand{\textotimes}{PU}{\9042\227}%* U+2297
+%* \textotimes -> \varotimes (stmaryrd)
+% U+2298 CIRCLED DIVISION SLASH; \oslash (LaTeX)
+\DeclareTextCommand{\textoslash}{PU}{\9042\230}%* U+2298
+%* \textoslash -> \varoslash (stmaryrd)
+% U+2299 CIRCLED DOT OPERATOR; circle(d?)ot; \odot (LaTeX)
+\DeclareTextCommand{\textodot}{PU}{\9042\231}%* U+2299
+%* \textodot -> \varodot (stmaryrd)
+% U+229A CIRCLED RING OPERATOR; \circledcirc (AmS)
+\DeclareTextCommand{\textcircledcirc}{PU}{\9042\232}%* U+229A
+%* \textcircledcirc -> \ocirc (mathabx)
+%* \textcircledcirc -> \varocircle (stmaryrd)
+% U+229B CIRCLED ASTERISK OPERATOR; \circledast (AmS)
+\DeclareTextCommand{\textcircledast}{PU}{\9042\233}%* U+229B
+%* \textcircledast -> \varoast (stmaryrd)
+%* \textcircledast -> \oasterisk (mathabx)
+% U+229D CIRCLED DASH; \circleddash (AmS)
+\DeclareTextCommand{\textcircleddash}{PU}{\9042\235}%* U+229D
+% U+229E SQUARED PLUS; \boxplus (AmS)
+\DeclareTextCommand{\textboxplus}{PU}{\9042\236}%* U+229E
+% U+229F SQUARED MINUS; \boxminus (AmS)
+\DeclareTextCommand{\textboxminus}{PU}{\9042\237}%* U+229F
+% U+22A0 SQUARED TIMES; \boxtimes (AmS)
+\DeclareTextCommand{\textboxtimes}{PU}{\9042\240}%* U+22A0
+% U+22A1 SQUARED DOT OPERATOR; \boxdot (AmS)
+\DeclareTextCommand{\textboxdot}{PU}{\9042\241}%* U+22A1
+% U+22A2 RIGHT TACK; \vdash (LaTeX)
+\DeclareTextCommand{\textvdash}{PU}{\9042\242}%* U+22A2
+%* \textvdash -> \rightvdash (MnSymbol)
+% U+22A3 LEFT TACK; tackleft; \dashv (LaTeX)
+\DeclareTextCommand{\textdashv}{PU}{\9042\243}%* U+22A3
+%* \textdashv -> \leftvdash (MnSymbol)
+% \ndashv (mathabx)
+\DeclareTextCommand{\textndashv}{PU}{\9042\243\83\070}%* U+22A3 U+0338
+%* \textndashv -> \nleftvdash (MnSymbol)
+% U+22A4 DOWN TACK (=top); tackdown; \top (LaTeX)
+\DeclareTextCommand{\texttop}{PU}{\9042\244}%* U+22A4
+%* \texttop -> \downvdash (MnSymbol)
+% \ndownvdash (MnSymbol)
+\DeclareTextCommand{\textndownvdash}{PU}{\9042\244\83\070}%* U+22A4 U+0338
+% U+22A5 UP TACK (=base, bottom); \bot (LaTeX)
+\DeclareTextCommand{\textbot}{PU}{\9042\245}%* U+22A5
+%* \textbot -> \upvdash (MnSymbol)
+% \nupvdash (MnSymbol)
+\DeclareTextCommand{\textnupvdash}{PU}{\9042\245\83\070}%* U+22A5 U+0338
+%* \textnupvdash -> \nperp (MnSymbol)
+% U+22A8 TRUE; \vDash (AmS)
+\DeclareTextCommand{\textvDash}{PU}{\9042\250}%* U+22A8
+%* \textvDash -> \models (LaTeX)
+%* \textvDash -> \rightmodels (MnSymbol)
+% U+22A9 FORCES; \Vdash (AmS)
+\DeclareTextCommand{\textVdash}{PU}{\9042\251}%* U+22A9
+%* \textVdash -> \rightVdash (MnSymbol)
+% U+22AA TRIPLE VERTICAL BAR RIGHT TURNSTILE; \Vvdash (AmS)
+\DeclareTextCommand{\textVvdash}{PU}{\9042\252}%* U+22AA
+% \nVvash (mathabx)
+\DeclareTextCommand{\textnVvash}{PU}{\9042\252\83\070}%* U+22AA U+0338
+% U+22AB DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;
+% \VDash (mathabx)
+\DeclareTextCommand{\textVDash}{PU}{\9042\253}%* U+22AB
+%* \textVDash -> \rightModels (MnSymbol)
+% U+22AC DOES NOT PROVE; \nvdash (AmS)
+\DeclareTextCommand{\textnvdash}{PU}{\9042\254}%* U+22AC
+%* \textnvdash -> \nrightvdash (MnSymbol)
+% U+22AD NOT TRUE; \nvDash (AmS)
+\DeclareTextCommand{\textnvDash}{PU}{\9042\255}%* U+22AD
+%* \textnvDash -> \nrightmodels (MnSymbol)
+%* \textnvDash -> \nmodels (MnSymbol)
+% U+22AE DOES NOT FORCE; \nVdash (txfonts/pxfonts)
+\DeclareTextCommand{\textnVdash}{PU}{\9042\256}%* U+22AE
+%* \textnVdash -> \nrightVdash (MnSymbol)
+% U+22AF NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE; \nVDash (AmS)
+\DeclareTextCommand{\textnVDash}{PU}{\9042\257}%* U+22AF
+%* \textnVDash -> \nrightModels (MnSymbol)
+% U+22B2 NORMAL SUBGROUP OF; \lhd (latexsym, ...)
+\DeclareTextCommand{\textlhd}{PU}{\9042\262}%* U+22B2
+%* \textlhd -> \lessclosed (MnSymbol)
+% U+22B3 CONTAINS AS NORMAL SUBGROUP; \rhd (latexsym, ...)
+\DeclareTextCommand{\textrhd}{PU}{\9042\263}%* U+22B3
+%* \textrhd -> \gtrclosed (MnSymbol)
+% U+22B4 NORMAL SUBGROUP OF OR EQUAL TO; \unlhd (latexsym, ...)
+\DeclareTextCommand{\textunlhd}{PU}{\9042\264}%* U+22B4
+%* \textunlhd -> \leqclosed (MnSymbol)
+%* \textunlhd -> \trianglelefteq (MnSymbol)
+% U+22B5 CONTAINS AS NORMAL SUBGROUP OR EQUAL TO; \unrhd (latexsym, ...)
+\DeclareTextCommand{\textunrhd}{PU}{\9042\265}%* U+22B5
+%* \textunrhd -> \geqclosed (MnSymbol)
+%* \textunrhd -> \trianglerighteq (MnSymbol)
+% U+22B6 ORIGINAL OF; \multimapdotbothA (txfonts/pxfonts)
+\DeclareTextCommand{\textmultimapdotbothA}{PU}{\9042\266}%* U+22B6
+% U+22B7 IMAGE OF; \multimapdotbothB (txfonts/pxfonts)
+\DeclareTextCommand{\textmultimapdotbothB}{PU}{\9042\267}%* U+22B7
+% U+22B8 MULTIMAP; \multimap (AmS, txfonts/pxfonts)
+\DeclareTextCommand{\textmultimap}{PU}{\9042\270}%* U+22B8
+% U+22BB XOR; \veebar (AmS)
+\DeclareTextCommand{\textveebar}{PU}{\9042\273}%* U+22BB
+% U+22BC NAND; \barwedge (mathabx)
+\DeclareTextCommand{\textbarwedge}{PU}{\9042\274}%* U+22BC
+% U+22C6 STAR OPERATOR; \star (LaTeX)
+\DeclareTextCommand{\textstar}{PU}{\9042\306}%* U+22C6
+% U+22C7 DIVISION TIMES; \divideontimes (AmS)
+\DeclareTextCommand{\textdivideontimes}{PU}{\9042\307}%* U+22C7
+% U+22C8 BOWTIE; \bowtie (LaTeX)
+\DeclareTextCommand{\textbowtie}{PU}{\9042\310}%* U+22C8
+%* \textbowtie -> \Bowtie (wasysym)
+% U+22C9 LEFT NORMAL FACTOR SEMIDIRECT PRODUCT; \ltimes (AmS)
+\DeclareTextCommand{\textltimes}{PU}{\9042\311}%* U+22C9
+% U+22CA RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;
+% \rtimes (AmS)
+\DeclareTextCommand{\textrtimes}{PU}{\9042\312}%* U+22CA
+% U+22CB LEFT SEMIDIRECT PRODUCT; \leftthreetimes (AmS)
+\DeclareTextCommand{\textleftthreetimes}{PU}{\9042\313}%* U+22CB
+% U+22CC RIGHT SEMIDIRECT PRODUCT; \rightthreetimes (AmS)
+\DeclareTextCommand{\textrightthreetimes}{PU}{\9042\314}%* U+22CC
+% U+22CD REVERSED TILDE EQUALS; \backsimeq (AmS)
+\DeclareTextCommand{\textbacksimeq}{PU}{\9042\315}%* U+22CD
+% \nbacksimeq (txfonts/pxfonts)
+\DeclareTextCommand{\textnbacksimeq}{PU}{\9042\315\83\070}%* U+22CD U+0338
+% U+22CE CURLY LOGICAL OR; curlyor; \curlyvee (AmS)
+\DeclareTextCommand{\textcurlyvee}{PU}{\9042\316}%* U+22CE
+%* \textcurlyvee -> \varcurlyvee (stmaryrd)
+% U+22CF CURLY LOGICAL AND; curlyand; \curlywedge (AmS)
+\DeclareTextCommand{\textcurlywedge}{PU}{\9042\317}%* U+22CF
+%* \textcurlywedge -> \varcurlywedge (stmaryrd)
+% U+22D0 DOUBLE SUBSET; \Subset (AmS)
+\DeclareTextCommand{\textSubset}{PU}{\9042\320}%* U+22D0
+% \nSubset (txfonts/pxfonts)
+\DeclareTextCommand{\textnSubset}{PU}{\9042\320\83\070}%* U+22D0 U+0338
+% U+22D1 DOUBLE SUPERSET; \Supset (AmS)
+\DeclareTextCommand{\textSupset}{PU}{\9042\321}%* U+22D1
+% \nSupset (txfonts/pxfonts)
+\DeclareTextCommand{\textnSupset}{PU}{\9042\321\83\070}%* U+22D1 U+0338
+% U+22D2 DOUBLE INTERSECTION; \Cap (AmS)
+\DeclareTextCommand{\textCap}{PU}{\9042\322}%* U+22D2
+%* \textCap -> \doublecap (mathabx)
+% U+22D3 DOUBLE UNION; \Cup (AmS)
+\DeclareTextCommand{\textCup}{PU}{\9042\323}%* U+22D3
+%* \textCup -> \doublecup (mathabx)
+% U+22D4 PITCHFORK; \pitchfork (mathabx)
+\DeclareTextCommand{\textpitchfork}{PU}{\9042\324}%* U+22D4
+% U+22D6 LESS-THAN WITH DOT; \lessdot (AmS)
+\DeclareTextCommand{\textlessdot}{PU}{\9042\326}%* U+22D6
+% U+22D7 GREATER-THAN WITH DOT; \gtrdot (AmS)
+\DeclareTextCommand{\textgtrdot}{PU}{\9042\327}%* U+22D7
+% U+22D8 VERY MUCH LESS-THAN; \lll (AmS)
+\DeclareTextCommand{\textlll}{PU}{\9042\330}%* U+22D8
+% U+22D9 VERY MUCH GREATER-THAN; \ggg (AmS)
+\DeclareTextCommand{\textggg}{PU}{\9042\331}%* U+22D9
+% U+22DA LESS-THAN EQUAL TO OR GREATER-THAN; lessequalorgreater;
+% \lesseqgtr (AmS)
+\DeclareTextCommand{\textlesseqgtr}{PU}{\9042\332}%* U+22DA
+% U+22DB GREATER-THAN EQUAL TO OR LESS-THAN; greaterequalorless;
+% \gtreqless (AmS)
+\DeclareTextCommand{\textgtreqless}{PU}{\9042\333}%* U+22DB
+% U+22DE EQUAL TO OR PRECEDES; \curlyeqprec (MnSymbol)
+\DeclareTextCommand{\textcurlyeqprec}{PU}{\9042\336}%* U+22DE
+% \ncurlyeqprec (mathabx)
+\DeclareTextCommand{\textncurlyeqprec}{PU}{\9042\336\83\070}%* U+22DE U+0338
+% U+22DF EQUAL TO OR SUCCEEDS; \curlyeqsucc (MnSymbol)
+\DeclareTextCommand{\textcurlyeqsucc}{PU}{\9042\337}%* U+22DF
+% \ncurlyeqsucc (mathabx)
+\DeclareTextCommand{\textncurlyeqsucc}{PU}{\9042\337\83\070}%* U+22DF U+0338
+% U+22E0 DOES NOT PRECEDE OR EQUAL; \npreccurlyeq (txfonts/pxfonts)
+\DeclareTextCommand{\textnpreccurlyeq}{PU}{\9042\340}%* U+22E0
+% U+22E1 DOES NOT SUCCEED OR EQUAL; \nsucccurlyeq (txfonts/pxfonts)
+\DeclareTextCommand{\textnsucccurlyeq}{PU}{\9042\341}%* U+22E1
+% U+22E2 NOT SQUARE IMAGE OF OR EQUAL TO; \nsqsubseteq (txfonts/pxfonts)
+\DeclareTextCommand{\textnqsubseteq}{PU}{\9042\342}%* U+22E2
+% U+22E3 NOT SQUARE ORIGINAL OF OR EQUAL TO; \nsqsupseteq (txfonts/pxfonts)
+\DeclareTextCommand{\textnqsupseteq}{PU}{\9042\343}%* U+22E3
+% U+22E4 SQUARE IMAGE OF OR NOT EQUAL TO; \sqsubsetneq (mathabx)
+\DeclareTextCommand{\textsqsubsetneq}{PU}{\9042\344}%* U+22E4
+%* \textsqsubsetneq -> \varsqsubsetneq (mathabx)
+% U+22E5 SQUARE ORIGINAL OF OR NOT EQUAL TO; \sqsupsetneq (mathabx)
+\DeclareTextCommand{\textsqsupsetneq}{PU}{\9042\345}%* U+22E5
+%* \textsqsupsetneq -> \varsqsupsetneq (mathabx)
+% U+22E6 LESS-THAN BUT NOT EQUIVALENT TO; \lnsim (AmS)
+\DeclareTextCommand{\textlnsim}{PU}{\9042\346}%* U+22E6
+% U+22E7 GREATER-THAN BUT NOT EQUIVALENT TO; \gnsim (AmS)
+\DeclareTextCommand{\textgnsim}{PU}{\9042\347}%* U+22E7
+% U+22E8 PRECEDES BUT NOT EQUIVALENT TO; \precnsim (AmS)
+\DeclareTextCommand{\textprecnsim}{PU}{\9042\350}%* U+22E8
+% U+22E9 SUCCEEDS BUT NOT EQUIVALENT TO; \succnsim (AmS)
+\DeclareTextCommand{\textsuccnsim}{PU}{\9042\351}%* U+22E9
+% U+22EA NOT NORMAL SUBGROUP OF; \ntriangleleft (AmS)
+\DeclareTextCommand{\textntriangleleft}{PU}{\9042\352}%* U+22EA
+%* \textntriangleleft -> \nlessclosed (MnSymbol)
+% U+22EB DOES NOT CONTAIN AS NORMAL SUBGROUP; \ntriangleright (AmS)
+\DeclareTextCommand{\textntriangleright}{PU}{\9042\353}%* U+22EB
+%* \textntriangleright -> \ngtrclosed (MnSymbol)
+% U+22EC NOT NORMAL SUBGROUP OF OR EQUAL TO;
+% \ntrianglelefteq (AmS)
+\DeclareTextCommand{\textntrianglelefteq}{PU}{\9042\354}%* U+22EC
+% U+22ED DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;
+% \ntrianglerighteq (AmS)
+\DeclareTextCommand{\textntrianglerighteq}{PU}{\9042\355}%* U+22ED
+%* \textntrianglerighteq -> textngeqclosed
+% U+22EE VERTICAL ELLIPSIS; ellipsisvertical; \vdots (LaTeX)
+\DeclareTextCommand{\textvdots}{PU}{\9042\356}%* U+22EE
+% U+22EF MIDLINE HORIZONTAL ELLIPSIS; \cdots (LaTeX)
+\DeclareTextCommand{\textcdots}{PU}{\9042\357}%* U+22EF
+% U+22F0 UP RIGHT DIAGONAL ELLIPSIS; \udots (MnSymbol)
+\DeclareTextCommand{\textudots}{PU}{\9042\360}%* U+22F0
+% U+22F1 DOWN RIGHT DIAGONAL ELLIPSIS; \ddots (LaTeX)
+\DeclareTextCommand{\textddots}{PU}{\9042\361}%* U+22F1
+% U+22F6 ELEMENT OF WITH OVERBAR; \barin (mathabx)
+\DeclareTextCommand{\textbarin}{PU}{\9042\366}%* U+22F6
+% \end{macrocode}
+%
+% \subsubsection{Miscellaneous Technical: U+2300 to U+23FF}
+%
+% \begin{macrocode}
+% U+2300 DIAMETER SIGN; \diameter (mathabx,wasysym)
+\DeclareTextCommand{\textdiameter}{PU}{\9043\000}%* U+2300
+% U+2310 REVERSED NOT SIGN; \backneg (MnSymbol)
+\DeclareTextCommand{\textbackneg}{PU}{\9043\020}%* U+2310
+% U+2311 SQUARE LOZENGE; \wasylozenge (wasysym)
+\DeclareTextCommand{\textwasylozenge}{PU}{\9043\021}%* U+2311
+% U+2319 TURNED NOT SIGN; \invbackneg (MnSymbol)
+\DeclareTextCommand{\textinvbackneg}{PU}{\9043\031}%* U+2319
+% U+231A WATCH; \clock (wasysym)
+\DeclareTextCommand{\textclock}{PU}{\9043\032}%* U+231A
+%* \textclock -> \Clocklogo (marvosym)
+%* \textclock -> \ClockLogo (marvosym)
+% U+231C TOP LEFT CORNER; \ulcorner (AmS)
+\DeclareTextCommand{\textulcorner}{PU}{\9043\034}%* U+231C
+% U+231D TOP RIGHT CORNER; \urcorner (AmS)
+\DeclareTextCommand{\texturcorner}{PU}{\9043\035}%* U+231D
+% U+231E BOTTOM LEFT CORNER; \llcorner (AmS)
+\DeclareTextCommand{\textllcorner}{PU}{\9043\036}%* U+231E
+% U+231F BOTTOM RIGHT CORNER; \lrcorner (AmS)
+\DeclareTextCommand{\textlrcorner}{PU}{\9043\037}%* U+231F
+% U+2322 FROWN; \frown (LaTeX)
+\DeclareTextCommand{\textfrown}{PU}{\9043\042}%* U+2322
+% U+2323 SMILE; \smile (LaTeX)
+\DeclareTextCommand{\textsmile}{PU}{\9043\043}%* U+2323
+% U+2328 KEYBOARD; \Keyboard (marvosym)
+\DeclareTextCommand{\textKeyboard}{PU}{\9043\050}%* U+2328
+% U+2329 LEFT-POINTING ANGLE BRACKET; angleleft; \langle (LaTeX)
+\DeclareTextCommand{\textlangle}{PU}{\9043\051}%* U+2329
+% U+232A RIGHT-POINTING ANGLE BRACKET; angleright; \rangle (LaTeX)
+\DeclareTextCommand{\textrangle}{PU}{\9043\052}%* U+232A
+% U+2339 APL FUNCTIONAL SYMBOL QUAD DIVIDE; \APLinv (wasysym)
+\DeclareTextCommand{\textAPLinv}{PU}{\9043\071}%* U+2339
+% U+233C APL FUNCTIONAL SYMBOL QUAD CIRCLE; \Tumbler (marvosym)
+\DeclareTextCommand{\textTumbler}{PU}{\9043\074}%* U+233C
+% U+233D APL FUNCTIONAL SYMBOL CIRCLE STILE; \baro (stmaryrd)
+\DeclareTextCommand{\textstmaryrdbaro}{PU}{\9043\075}% U+233D
+%* \textstmaryrdbaro -> \baro (stmaryrd)
+% U+233F APL FUNCTIONAL SYMBOL SLASH BAR; \notslash (wasysym)
+\DeclareTextCommand{\textnotslash}{PU}{\9043\077}%* U+233F
+% U+2340 APL FUNCTIONAL SYMBOL BACKSLASH BAR;
+% \notbackslash (wasysym)
+\DeclareTextCommand{\textnotbackslash}{PU}{\9043\100}%* U+2340
+% U+2342 APL FUNCTIONAL SYMBOL QUAD BACKSLASH; \boxbackslash (mathabx)
+\DeclareTextCommand{\textboxbackslash}{PU}{\9043\102}%* U+2342
+% U+2347 APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;
+% \APLleftarrowbox (wasysym)
+\DeclareTextCommand{\textAPLleftarrowbox}{PU}{\9043\107}%* U+2347
+% U+2348 APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;
+% \APLrightarrowbox (wasysym)
+\DeclareTextCommand{\textAPLrightarrowbox}{PU}{\9043\110}%* U+2348
+% U+2350 APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW; \APLuparrowbox (wasysym)
+\DeclareTextCommand{\textAPLuparrowbox}{PU}{\9043\120}%* U+2350
+% U+2357 APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;
+% \APLdownarrowbox (wasysym)
+\DeclareTextCommand{\textAPLdownarrowbox}{PU}{\9043\127}%* U+2357
+% U+235E APL FUNCTIONAL SYMBOL QUOTE QUAD;
+% \APLinput (wasysym)
+\DeclareTextCommand{\textAPLinput}{PU}{\9043\136}%* U+235E
+% U+2370 APL FUNCTIONAL SYMBOL QUAD QUESTION; \Request (china2e)
+\DeclareTextCommand{\textRequest}{PU}{\9043\160}%* U+2370
+% U+2393 DIRECT CURRENT SYMBOL FORM TWO; \Beam (marvosym)
+\DeclareTextCommand{\textBeam}{PU}{\9043\223}%* U+2393
+% U+2394 SOFTWARE-FUNCTION SYMBOL; \hexagon (wasysym)
+\DeclareTextCommand{\texthexagon}{PU}{\9043\224}%* U+2394
+% U+2395 APL FUNCTIONAL SYMBOL QUAD; \APLbox (wasysym)
+\DeclareTextCommand{\textAPLbox}{PU}{\9043\225}%* U+2395
+% U+23ED BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR;
+% \ForwardToIndex (marvosym)
+\DeclareTextCommand{\textForwardToIndex}{PU}{\9043\355}%* U+23ED
+% U+23EE BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR;
+% \RewindToIndex (marvosym)
+\DeclareTextCommand{\textRewindToIndex}{PU}{\9043\356}%* U+23EE
+% \end{macrocode}
+%
+% \subsubsection{Control Pictures: U+2400 to U+243F}
+%
+% \begin{macrocode}
+% U+2422 BLANK SYMBOL
+\DeclareTextCommand{\textblank}{PU}{\9044\042}% U+2422
+% U+2423 OPEN BOX; blank
+\DeclareTextCommand{\textvisiblespace}{PU}{\9044\043}% U+2423
+% \end{macrocode}
+%
+% \subsubsection{Optical Character Recognition: U+2440 to U+245F}
+%
+% \begin{macrocode}
+% U+244A OCR DOUBLE BACKSLASH; \bbslash (stmaryrd)
+\DeclareTextCommand{\textbbslash}{PU}{\9044\112}%* U+244A
+%* \textbbslash -> \varparallelinv (txfonts/pxfonts)
+% \end{macrocode}
+%
+% \subsubsection{Enclosed Alphanumerics: U+2460 to U+24FF}
+%
+% \begin{macrocode}
+% U+2460 CIRCLED DIGIT ONE; onecircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{1}{\9044\140}% U+2460
+% U+2461 CIRCLED DIGIT TWO; twocircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{2}{\9044\141}% U+2461
+% U+2462 CIRCLED DIGIT THREE; threecircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{3}{\9044\142}% U+2462
+% U+2463 CIRCLED DIGIT FOUR; fourcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{4}{\9044\143}% U+2463
+% U+2464 CIRCLED DIGIT FIVE; fivecircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{5}{\9044\144}% U+2464
+% U+2465 CIRCLED DIGIT SIX; sixcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{6}{\9044\145}% U+2465
+% U+2466 CIRCLED DIGIT SEVEN; sevencircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{7}{\9044\146}% U+2466
+% U+2467 CIRCLED DIGIT EIGHT; eightcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{8}{\9044\147}% U+2467
+% U+2468 CIRCLED DIGIT NINE; ninecircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{9}{\9044\150}% U+2468
+% U+2469 CIRCLED NUMBER TEN; tencircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{10}{\9044\151}% U+2469
+% U+246A CIRCLED NUMBER ELEVEN; elevencircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{11}{\9044\152}% U+246A
+% U+246B CIRCLED NUMBER TWELVE; twelvecircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{12}{\9044\153}% U+246B
+% U+246C CIRCLED NUMBER THIRTEEN; thirteencircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{13}{\9044\154}% U+246C
+% U+246D CIRCLED NUMBER FOURTEEN; fourteencircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{14}{\9044\155}% U+246D
+% U+246E CIRCLED NUMBER FIFTEEN; fifteencircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{15}{\9044\156}% U+246E
+% U+246F CIRCLED NUMBER SIXTEEN; sixteencircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{16}{\9044\157}% U+246F
+% U+2470 CIRCLED NUMBER SEVENTEEN; seventeencircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{17}{\9044\160}% U+2470
+% U+2471 CIRCLED NUMBER EIGHTEEN; eighteencircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{18}{\9044\161}% U+2471
+% U+2472 CIRCLED NUMBER NINETEEN; nineteencircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{19}{\9044\162}% U+2472
+% U+2473 CIRCLED NUMBER TWENTY; twentycircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{20}{\9044\163}% U+2473
+% U+24B6 CIRCLED LATIN CAPITAL LETTER A; Acircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{A}{\9044\266}% U+24B6
+% \CircledA (marvosym)
+\DeclareTextCommand{\textCircledA}{PU}{\9044\266}%* U+24B6
+%* \textCircledA -> \CleaningA
+% U+24B7 CIRCLED LATIN CAPITAL LETTER B; Bcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{B}{\9044\267}% U+24B7
+% U+24B8 CIRCLED LATIN CAPITAL LETTER C; Ccircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{C}{\9044\270}% U+24B8
+% U+24B9 CIRCLED LATIN CAPITAL LETTER D; Dcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{D}{\9044\271}% U+24B9
+% U+24BA CIRCLED LATIN CAPITAL LETTER E; Ecircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{E}{\9044\272}% U+24BA
+% U+24BB CIRCLED LATIN CAPITAL LETTER F; Fcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{F}{\9044\273}% U+24BB
+% \CleaningF (marvosym)
+\DeclareTextCommand{\textCleaningF}{PU}{\9044\273}%* U+24BB
+% \CleaningFF (marvosym)
+\DeclareTextCommand{\textCleaningFF}{PU}{\9044\273\83\062}%* U+24BB U+0332
+% U+24BC CIRCLED LATIN CAPITAL LETTER G; Gcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{G}{\9044\274}% U+24BC
+% U+24BD CIRCLED LATIN CAPITAL LETTER H; Hcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{H}{\9044\275}% U+24BD
+% U+24BE CIRCLED LATIN CAPITAL LETTER I; Icircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{I}{\9044\276}% U+24BE
+% U+24BF CIRCLED LATIN CAPITAL LETTER J; Jcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{J}{\9044\277}% U+24BF
+% U+24C0 CIRCLED LATIN CAPITAL LETTER K; Kcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{K}{\9044\300}% U+24C0
+% U+24C1 CIRCLED LATIN CAPITAL LETTER L; Lcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{L}{\9044\301}% U+24C1
+% U+24C2 CIRCLED LATIN CAPITAL LETTER M; Mcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{M}{\9044\302}% U+24C2
+% U+24C3 CIRCLED LATIN CAPITAL LETTER N; Ncircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{N}{\9044\303}% U+24C3
+% U+24C4 CIRCLED LATIN CAPITAL LETTER O; Ocircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{O}{\9044\304}% U+24C4
+% U+24C5 CIRCLED LATIN CAPITAL LETTER P; Pcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{P}{\9044\305}% U+24C5
+% \CleaningP (marvosym)
+\DeclareTextCommand{\textCleaningP}{PU}{\9044\305}%* U+24C5
+% \CleaningPP (marvosym)
+\DeclareTextCommand{\textCleaningPP}{PU}{\9044\305\83\062}%* U+24C5 U+0332
+% U+24C6 CIRCLED LATIN CAPITAL LETTER Q; Qcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{Q}{\9044\306}% U+24C6
+% U+24C7 CIRCLED LATIN CAPITAL LETTER R; Rcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{R}{\9044\307}% U+24C7
+% U+24C8 CIRCLED LATIN CAPITAL LETTER S; Scircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{S}{\9044\310}% U+24C8
+% U+24C9 CIRCLED LATIN CAPITAL LETTER T; Tcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{T}{\9044\311}% U+24C9
+% U+24CA CIRCLED LATIN CAPITAL LETTER U; Ucircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{U}{\9044\312}% U+24CA
+% U+24CB CIRCLED LATIN CAPITAL LETTER V; Vcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{V}{\9044\313}% U+24CB
+% U+24CC CIRCLED LATIN CAPITAL LETTER W; Wcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{W}{\9044\314}% U+24CC
+% U+24CD CIRCLED LATIN CAPITAL LETTER X; Xcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{X}{\9044\315}% U+24CD
+% U+24CE CIRCLED LATIN CAPITAL LETTER Y; Ycircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{Y}{\9044\316}% U+24CE
+% U+24CF CIRCLED LATIN CAPITAL LETTER Z; Zcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{Z}{\9044\317}% U+24CF
+% U+24D0 CIRCLED LATIN SMALL LETTER A; acircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{a}{\9044\320}% U+24D0
+% U+24D1 CIRCLED LATIN SMALL LETTER B; bcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{b}{\9044\321}% U+24D1
+% U+24D2 CIRCLED LATIN SMALL LETTER C; ccircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{c}{\9044\322}% U+24D2
+% U+24D3 CIRCLED LATIN SMALL LETTER D; dcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{d}{\9044\323}% U+24D3
+% U+24D4 CIRCLED LATIN SMALL LETTER E; ecircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{e}{\9044\324}% U+24D4
+% U+24D5 CIRCLED LATIN SMALL LETTER F; fcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{f}{\9044\325}% U+24D5
+% U+24D6 CIRCLED LATIN SMALL LETTER G; gcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{g}{\9044\326}% U+24D6
+% U+24D7 CIRCLED LATIN SMALL LETTER H; hcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{h}{\9044\327}% U+24D7
+% U+24D8 CIRCLED LATIN SMALL LETTER I; icircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{i}{\9044\330}% U+24D8
+% U+24D9 CIRCLED LATIN SMALL LETTER J; jcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{j}{\9044\331}% U+24D9
+% U+24DA CIRCLED LATIN SMALL LETTER K; kcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{k}{\9044\332}% U+24DA
+% U+24DB CIRCLED LATIN SMALL LETTER L; lcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{l}{\9044\333}% U+24DB
+% U+24DC CIRCLED LATIN SMALL LETTER M; mcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{m}{\9044\334}% U+24DC
+% U+24DD CIRCLED LATIN SMALL LETTER N; ncircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{n}{\9044\335}% U+24DD
+% U+24DE CIRCLED LATIN SMALL LETTER O; ocircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{o}{\9044\336}% U+24DE
+% U+24DF CIRCLED LATIN SMALL LETTER P; pcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{p}{\9044\337}% U+24DF
+% U+24E0 CIRCLED LATIN SMALL LETTER Q; qcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{q}{\9044\340}% U+24E0
+% U+24E1 CIRCLED LATIN SMALL LETTER R; rcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{r}{\9044\341}% U+24E1
+% U+24E2 CIRCLED LATIN SMALL LETTER S; scircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{s}{\9044\342}% U+24E2
+% U+24E3 CIRCLED LATIN SMALL LETTER T; tcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{t}{\9044\343}% U+24E3
+% U+24E4 CIRCLED LATIN SMALL LETTER U; ucircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{u}{\9044\344}% U+24E4
+% U+24E5 CIRCLED LATIN SMALL LETTER V; vcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{v}{\9044\345}% U+24E5
+% U+24E6 CIRCLED LATIN SMALL LETTER W; wcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{w}{\9044\346}% U+24E6
+% U+24E7 CIRCLED LATIN SMALL LETTER X; xcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{x}{\9044\347}% U+24E7
+% U+24E8 CIRCLED LATIN SMALL LETTER Y; ycircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{y}{\9044\350}% U+24E8
+% U+24E9 CIRCLED LATIN SMALL LETTER Z; zcircle
+\DeclareTextCompositeCommand{\textcircled}{PU}{z}{\9044\351}% U+24E9
+% U+24EA CIRCLED DIGIT ZERO
+\DeclareTextCompositeCommand{\textcircled}{PU}{0}{\9044\352}% U+24EA
+% \end{macrocode}
+%
+% \subsubsection{Box Drawing: U+2500 to 257F}
+%
+% \begin{macrocode}
+% U+2504 BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL; \CuttingLine (marvosym)
+\DeclareTextCommand{\textCuttingLine}{PU}{\9045\004}%* U+2504
+%* \textCuttingLine -> \Kutline (marvosym)
+%* \textCuttingLine -> \CutLine (marvosym)
+%* \textCuttingLine -> \Cutline (marvosym)
+% \end{macrocode}
+%
+% \subsubsection{Geometric Shapes: U+25A0 to U+25FF}
+%
+% \begin{macrocode}
+% U+25B2 BLACK UP-POINTING TRIANGLE; \UParrow (wasysym)
+\DeclareTextCommand{\textUParrow}{PU}{\9045\262}%* U+25B2
+%* \textUParrow -> \MoveUp (marvosym)
+% U+25B3 WHITE UP-POINTING TRIANGLE; whiteuppointingtriangle;
+% \bigtriangleup (LaTeX)
+\DeclareTextCommand{\textbigtriangleup}{PU}{\9045\263}%* U+25B3
+%* \textbigtriangleup -> \APLup (wasysym)
+%* \textbigtriangleup -> \Bleech (marvosym)
+% U+25B6 BLACK RIGHT-POINTING TRIANGLE; \Forward (marvosym)
+\DeclareTextCommand{\textForward}{PU}{\9045\266}%* U+25B6
+% U+25B7 WHITE RIGHT-POINTING TRIANGLE (= z notation range restriction);
+% whiterightpointingtriangle; \triangleright (LaTeX)
+\DeclareTextCommand{\texttriangleright}{PU}{\9045\267}%* U+25B7
+% U+25BA BLACK RIGHT-POINTING POINTER; \RHD (wasysym)
+\DeclareTextCommand{\textRHD}{PU}{\9045\272}%* U+25BA
+% U+25BC BLACK DOWN-POINTING TRIANGLE; \DOWNarrow (wasysym)
+\DeclareTextCommand{\textDOWNarrow}{PU}{\9045\274}%* U+25BC
+%* \textDOWNarrow -> \MoveDown (marvosym)
+% U+25BD WHITE DOWN-POINTING TRIANGLE; whitedownpointingtriangle;
+% \bigtriangledown (LaTeX)
+\DeclareTextCommand{\textbigtriangledown}{PU}{\9045\275}%* U+25BD
+%* \textbigtriangledown -> \APLdown (wasysym)
+% U+25C0 BLACK LEFT-POINTING TRIANGLE; \Rewind (marvosym)
+\DeclareTextCommand{\textRewind}{PU}{\9045\300}%* U+25C0
+% U+25C1 WHITE RIGHT-POINTING TRIANGLE (= z notation domain restriction);
+% whiteleftpointingtriangle; \triangleleft (LaTeX)
+\DeclareTextCommand{\texttriangleleft}{PU}{\9045\301}%* U+25C1
+% U+25C4 BLACK LEFT-POINTING POINTER; \LHD (wasysym)
+\DeclareTextCommand{\textLHD}{PU}{\9045\304}%* U+25C4
+% U+25C7 WHITE DIAMOND; whitediamond; \diamond (LaTeX)
+\DeclareTextCommand{\textdiamond}{PU}{\9045\307}%* U+25C7
+%* \textdiamond -> \Diamond (wasysym)
+% U+25CA LOZENGE; lozenge; \lozenge (AmS)
+\DeclareTextCommand{\textlozenge}{PU}{\9045\312}%* U+25CA
+% U+25D6 LEFT HALF BLACK CIRCLE; \LEFTCIRCLE (wasysym)
+\DeclareTextCommand{\textLEFTCIRCLE}{PU}{\9045\326}%* U+25D6
+% U+25D7 RIGHT HALF BLACK CIRCLE; \RIGHTCIRCLE (wasysym)
+\DeclareTextCommand{\textRIGHTCIRCLE}{PU}{\9045\327}%* U+25D7
+% U+25E6 WHITE BULLET; *openbullet, whitebullet
+\DeclareTextCommand{\textopenbullet}{PU}{\9045\346}%* U+25E6
+% U+25EB WHITE SQUARE WITH VERTICAL BISECTING LINE;
+% \boxbar (stmaryrd)
+\DeclareTextCommand{\textboxbar}{PU}{\9045\353}%* U+25EB
+% U+25EF LARGE CIRCLE; largecircle
+\DeclareTextCommand{\textbigcircle}{PU}{\9045\357}%* U+25EF
+%* \textbigcircle -> \varbigcirc (stmaryrd)
+%
+% \end{macrocode}
+%
+% \subsubsection{Miscellaneous Symbols: U+2600 to U+26FF}
+%
+% \begin{macrocode}
+% U+2601 CLOUD; \Cloud (ifsym)
+\DeclareTextCommand{\textCloud}{PU}{\9046\001}%* U+2601
+% U+2605 BLACK STAR; \FiveStar (bbding)
+\DeclareTextCommand{\textFiveStar}{PU}{\9046\005}%* U+2605
+% U+2606 WHITE STAR; \FiveStarOpen (bbding)
+\DeclareTextCommand{\textFiveStarOpen}{PU}{\9046\006}%* U+2606
+% U+260E BLACK TELEPHONE; telephoneblack; \Phone (bbding)
+\DeclareTextCommand{\textPhone}{PU}{\9046\016}%* U+260E
+%* \textPhone -> \Telefon (marvosym)
+% U+2610 BALLOT BOX; \boxempty (stmaryrd)
+\DeclareTextCommand{\textboxempty}{PU}{\9046\020}%* U+2610
+%* \textboxempty -> \Box (wasysym)
+% U+2611 BALLOT BOX WITH CHECK; \Checkedbox (marvosym)
+\DeclareTextCommand{\textCheckedbox}{PU}{\9046\021}%* U+2611
+%* \textCheckedbox -> \CheckedBox (marvosym)
+% U+2612 BALLOT BOX WITH X; \Crossedbox (marvosym)
+\DeclareTextCommand{\textCrossedbox}{PU}{\9046\022}%* U+2612
+%* \textCrossedbox -> \XBox (wasysym)
+%* \textCrossedbox -> \CrossedBox (marvosym)
+% U+2615 HOT BEVERAGE; \Coffeecup (marvosym)
+\DeclareTextCommand{\textCoffeecup}{PU}{\9046\025}%* U+2615
+% U+261A BLACK LEFT POINTING INDEX; \HandCuffLeft (bbding)
+\DeclareTextCommand{\textHandCuffLeft}{PU}{\9046\032}%* U+261A
+% U+261B BLACK RIGHT POINTING INDEX; \HandCuffRight (bbding)
+\DeclareTextCommand{\textHandCuffRight}{PU}{\9046\033}%* U+261B
+% U+261C WHITE LEFT POINTING INDEX; \HandLeft (bbding)
+\DeclareTextCommand{\textHandLeft}{PU}{\9046\034}%* U+261C
+%* \textHandLeft -> \rightpointleft (fourier)
+% U+261E WHITE RIGHT POINTING INDEX; \HandRight (bbding)
+\DeclareTextCommand{\textHandRight}{PU}{\9046\036}%* U+261E
+%* \textHandRight -> \leftpointright (fourier)
+%* \textHandRight -> \PointingHand (marvosym)
+%* \textHandRight -> \Pointinghand (marvosym)
+% U+2622 RADIOACTIVE SIGN; \Radioactivity (marvosym)
+\DeclareTextCommand{\textRadioactivity}{PU}{\9046\042}%* U+2622
+%* \textRadioactivity -> \Radiation (ifsym)
+% U+2623 BIOHAZARD SIGN; \Biohazard (marvosym)
+\DeclareTextCommand{\textBiohazard}{PU}{\9046\043}%* U+2623
+% U+2625 ANKH; \Ankh (marvosym)
+\DeclareTextCommand{\textAnkh}{PU}{\9046\045}%* U+2625
+% U+262F YIN YANG; \YinYang (marvosym)
+\DeclareTextCommand{\textYinYang}{PU}{\9046\057}%* U+262F
+%* \textYinYang -> \Yinyang (marvosym)
+%* \textYinYang -> \YingYang (marvosym)
+%* \textYinYang -> \Yingyang (marvosym)
+% U+2639 WHITE FROWNING FACE; \frownie (wasysym)
+\DeclareTextCommand{\textfrownie}{PU}{\9046\071}%* U+2639
+%* \textfrownie -> \Frowny (marvosym)
+% U+263A WHITE SMILING FACE; \smiley (wasysym)
+\DeclareTextCommand{\textsmiley}{PU}{\9046\072}%* U+263A
+%* \textsmiley -> \Smiley (marvosym)
+% U+263B BLACK SMILING FACE; \blacksmiley (wasysym)
+\DeclareTextCommand{\textblacksmiley}{PU}{\9046\073}%* U+263B
+% U+263C WHITE SUN WITH RAYS; \sun (wasysym)
+\DeclareTextCommand{\textsun}{PU}{\9046\074}%* U+263C
+%* \textsun -> \Sun (marvosym)
+% U+263D FIRST QUARTER MOON; \leftmoon (wasysym, mathabx)
+\DeclareTextCommand{\textleftmoon}{PU}{\9046\075}%* U+263D
+% U+263E LAST QUARTER MOON; \rightmoon (wasysym, mathabx)
+\DeclareTextCommand{\textrightmoon}{PU}{\9046\076}%* U+263E
+% U+263F MERCURY; \mercury (wasysym)
+\DeclareTextCommand{\textmercury}{PU}{\9046\077}%* U+263F
+%* \textmercury -> \Mercury (marvosym)
+% U+2640 FEMALE SIGN; female; \female (wasysym)
+\DeclareTextCommand{\textPUfemale}{PU}{\9046\100}% U+2640
+%* \textPUfemale -> \textfemale (tipx)
+%* \textPUfemale -> \female (wasysym)
+%* \textPUfemale -> \venus (wasysym)
+%* \textPUfemale -> \Venus (marvosym)
+%* \textPUfemale -> \Female (marvosym)
+% U+2641 EARTH; \earth (wasysym)
+\DeclareTextCommand{\textearth}{PU}{\9046\101}%* U+2641
+%* \textearth -> \Earth (marvosym)
+% U+2642 MALE SIGN; male, mars; \male (wasysym)
+\DeclareTextCommand{\textmale}{PU}{\9046\102}%* U+2642
+%* \textmale -> \mars (wasysym)
+%* \textmale -> \Mars (marvosym)
+%* \textmale -> \Male (marvosym)
+% U+2643 JUPITER; \jupiter (wasysym)
+\DeclareTextCommand{\textjupiter}{PU}{\9046\103}%* U+2643
+%* \textjupiter -> \Jupiter (marvosym)
+% U+2644 SATURN; \saturn (wasysym)
+\DeclareTextCommand{\textsaturn}{PU}{\9046\104}%* U+2644
+%* \textsaturn -> \Saturn (marvosym)
+% U+2645 URANUS; \uranus (wasysym)
+\DeclareTextCommand{\texturanus}{PU}{\9046\105}%* U+2645
+%* \texturanus -> \Uranus (marvosym)
+% U+2646 NEPTUNE; \neptune (wasysym)
+\DeclareTextCommand{\textneptune}{PU}{\9046\106}%* U+2646
+%* \textneptune -> \Neptune (marvosym)
+% U+2647 PLUTO; \pluto (wasysym)
+\DeclareTextCommand{\textpluto}{PU}{\9046\107}%* U+2647
+%* \textpluto -> \Pluto (marvosym)
+% U+2648 ARIES; \aries (wasysym)
+\DeclareTextCommand{\textaries}{PU}{\9046\110}%* U+2648
+%* \textaries -> \Aries (marvosym)
+% U+2649 TAURUS; \taurus (wasysym)
+\DeclareTextCommand{\texttaurus}{PU}{\9046\111}%* U+2649
+%* \texttaurus -> \Taurus (marvosym)
+% U+264A GEMINI; \gemini (wasysym)
+\DeclareTextCommand{\textgemini}{PU}{\9046\112}%* U+264A
+%* \textgemini -> \Gemini (marvosym)
+% U+264B CANCER; \cancer (wasysym)
+\DeclareTextCommand{\textcancer}{PU}{\9046\113}%* U+264B
+%* \textcancer -> \Cancer (marvosym)
+% U+264C LEO; \leo (wasysym)
+\DeclareTextCommand{\textleo}{PU}{\9046\114}%* U+264C
+%* \textleo -> \Leo (marvosym)
+% U+264D VIRGO; \virgo (wasysym)
+\DeclareTextCommand{\textvirgo}{PU}{\9046\115}%* U+264D
+%* \textvirgo -> \Virgo (marvosym)
+% U+264E LIBRA; \libra (wasysym)
+\DeclareTextCommand{\textlibra}{PU}{\9046\116}%* U+264E
+%* \textlibra -> \Libra (marvosym)
+% U+264F SCORPIO; \scorpio (wasysym)
+\DeclareTextCommand{\textscorpio}{PU}{\9046\117}%* U+264F
+%* \textscorpio -> \Scorpio (marvosym)
+% U+2650 SAGITTARIUS; \sagittarius (wasysym)
+\DeclareTextCommand{\textsagittarius}{PU}{\9046\120}%* U+2650
+%* \textsagittarius -> \Sagittarius (marvosym)
+% U+2651 CAPRICORN; \capricornus (wasysym)
+\DeclareTextCommand{\textcapricornus}{PU}{\9046\121}%* U+2651
+%* \textcapricornus -> \Capricorn (marvosym)
+% U+2652 AQUARIUS; \aquarius (wasysym)
+\DeclareTextCommand{\textaquarius}{PU}{\9046\122}%* U+2652
+%* \textaquarius -> \Aquarius (marvosym)
+% U+2653 PISCES; \pisces (wasysym)
+\DeclareTextCommand{\textpisces}{PU}{\9046\123}%* U+2653
+%* \textpisces -> \Pisces (marvosym)
+% U+2660 BLACK SPADE SUIT; spade, spadesuitblack; \spadesuit (LaTeX)
+\DeclareTextCommand{\textspadesuitblack}{PU}{\9046\140}% U+2660
+%* \textspadesuitblack -> \spadesuit (MnSymbol)
+% U+2661 WHITE HEART SUIT; heartsuitwhite; \heartsuit (LaTeX)
+\DeclareTextCommand{\textheartsuitwhite}{PU}{\9046\141}% U+2661
+%* \textheartsuitwhite -> \Heart (marvosym)
+%* \textheartsuitwhite -> \heartsuit (MnSymbol)
+% U+2662 WHITE DIAMOND SUIT; diamondsuitwhite; \diamondsuit (LaTeX)
+\DeclareTextCommand{\textdiamondsuitwhite}{PU}{\9046\142}% U+2662
+%* \textdiamondsuitwhite -> \diamondsuit (MnSymbol)
+% U+2663 BLACK CLUB SUIT; club, clubsuitblack; \clubsuit (LaTeX)
+\DeclareTextCommand{\textclubsuitblack}{PU}{\9046\143}% U+2663
+%* \textclubsuitblack -> \clubsuit (MnSymbol)
+% U+2664 WHITE SPADE SUIT; spadesuitwhite
+\DeclareTextCommand{\textspadesuitwhite}{PU}{\9046\144}% U+2664
+% U+2665 BLACK HEART SUIT; heartsuitblack, heart
+\DeclareTextCommand{\textheartsuitblack}{PU}{\9046\145}% U+2665
+% U+2666 BLACK DIAMOND SUIT; diamond
+\DeclareTextCommand{\textdiamondsuitblack}{PU}{\9046\146}% U+2666
+% U+2667 WHITE CLUB SUIT; clubsuitwhite
+\DeclareTextCommand{\textclubsuitwhite}{PU}{\9046\147}% U+2667
+% U+2669 QUARTER NOTE; quarternote; \quarternote (wasysym, arev)
+\DeclareTextCommand{\textquarternote}{PU}{\9046\151}%* U+2669
+% U+266A EIGHTH NOTE; musicalnote; \textmusicalnote (textcomp)
+\DeclareTextCommand{\textmusicalnote}{PU}{\9046\152}% U+266A
+%* \textmusicalnote -> \eighthnote (wasysym, arev)
+% U+266B BEAMED EIGHTH NOTES; eighthnotebeamed; \twonotes (wasysym)
+\DeclareTextCommand{\texttwonotes}{PU}{\9046\153}%* U+266B
+% U+266C BEAMED SIXTEENTH NOTES; beamedsixteenthnotes; \sixteenthnote (arev)
+\DeclareTextCommand{\textsixteenthnote}{PU}{\9046\154}%* U+266C
+% U+266D MUSIC FLAT SIGN; musicflatsign; \flat (LaTeX)
+\DeclareTextCommand{\textflat}{PU}{\9046\155}%* U+266D
+% U+266E MUSIC NATURAL SIGN; \natural (LaTeX)
+\DeclareTextCommand{\textnatural}{PU}{\9046\156}%* U+266E
+% U+266F MUSIC SHARP SIGN; musicsharpsign; \sharp (LaTeX)
+\DeclareTextCommand{\textsharp}{PU}{\9046\157}%* U+266F
+% U+2672 UNIVERSAL RECYCLING SYMBOL; \recycle (recycle)
+\DeclareTextCommand{\textrecycle}{PU}{\9046\162}%* U+2672
+%* \textrecycle -> \Recycling (marvosym)
+% U+267F WHEELCHAIR SYMBOL; \Wheelchair (marvosym)
+\DeclareTextCommand{\textWheelchair}{PU}{\9046\177}%* U+267F
+% U+2691 BLACK FLAG; \Flag (ifsym)
+\DeclareTextCommand{\textFlag}{PU}{\9046\221}%* U+2691
+%* \textFlag -> \VarFlag (ifsym)
+% U+2692 HAMMER AND PICK; \MineSign (marvosym)
+\DeclareTextCommand{\textMineSign}{PU}{\9046\222}%* U+2692
+% U+2694 CROSSED SWORDS; \dsmilitary (dictsym)
+\DeclareTextCommand{\textdsmilitary}{PU}{\9046\224}%* U+2694
+%* \textdsmilitary -> \textxswup (fourier)
+% U+2695 STAFF OF AESCULAPIUS; \dsmedical (dictsym)
+\DeclareTextCommand{\textdsmedical}{PU}{\9046\225}%* U+2695
+% U+2696 SCALES; \dsjuridical (dictsym)
+\DeclareTextCommand{\textdsjuridical}{PU}{\9046\226}%* U+2696
+% U+2697 ALEMBIC; \dschemical (dictsym)
+\DeclareTextCommand{\textdschemical}{PU}{\9046\227}%* U+2697
+% U+2698 FLOWER; \dsbiological (dictsym)
+\DeclareTextCommand{\textdsbiological}{PU}{\9046\230}%* U+2698
+% U+269A STAFF OF HERMES; \dscommercial (dictsym)
+\DeclareTextCommand{\textdscommercial}{PU}{\9046\232}%* U+269A
+% U+269D OUTLINED WHITE STAR; \manstar (manfnt)
+\DeclareTextCommand{\textmanstar}{PU}{\9046\235}%* U+269D
+% U+26A0 WARNING SIGN; \danger (fourier)
+\DeclareTextCommand{\textdanger}{PU}{\9046\240}%* U+26A0
+% U+26A2 DOUBLED FEMALE SIGN; \FemaleFemale (marvosym)
+\DeclareTextCommand{\textFemaleFemale}{PU}{\9046\242}%* U+26A2
+% U+26A3 DOUBLED MALE SIGN; \MaleMale (marvosym)
+\DeclareTextCommand{\textMaleMale}{PU}{\9046\243}%* U+26A3
+% U+26A4 INTERLOCKED FEMALE AND MALE SIGN; \FemaleMale (marvosym)
+\DeclareTextCommand{\textFemaleMale}{PU}{\9046\244}%* U+26A4
+% U+26A5 MALE AND FEMALE SIGN; \Hermaphrodite (marvosym)
+\DeclareTextCommand{\textHermaphrodite}{PU}{\9046\245}%* U+26A5
+% U+26AA MEDIUM WHITE CIRCLE; \Neural (marvosym)
+\DeclareTextCommand{\textNeutral}{PU}{\9046\252}%* U+26AA
+% U+26AD MARRIAGE SYMBOL
+\DeclareTextCommand{\textmarried}{PU}{\9046\255}% U+26AD
+% U+26AE DIVORCE SYMBOL
+\DeclareTextCommand{\textdivorced}{PU}{\9046\256}% U+26AE
+% U+26B2 NEUTER; \textuncrfemale (tipx)
+\DeclareTextCommand{\textPUuncrfemale}{PU}{\9046\262}% U+26B2
+%* \textPUuncrfemale -> \textuncrfemale (tipx)
+% U+26B9 SEXTILE; \hexstar (wasysym)
+\DeclareTextCommand{\texthexstar}{PU}{\9046\271}%* U+26B9
+% U+26BD SOCCER BALL; \Football (marvosym)
+\DeclareTextCommand{\textSoccerBall}{PU}{\9046\275}% U+26BD
+%* \textSoccerBall -> \Football (marvosym)
+% U+26C5 SUN BEHIND CLOUD; \SunCloud (ifsym)
+\DeclareTextCommand{\textSunCload}{PU}{\9046\305}%* U+26C5
+% U+26C6 RAIN; \Rain (ifsym)
+\DeclareTextCommand{\textRain}{PU}{\9046\306}%* U+26C6
+% U+26D4 NO ENTRY; \noway (fourier)
+\DeclareTextCommand{\textnoway}{PU}{\9046\324}%* U+26D4
+% U+26F0 MOUNTAIN; \Mountain (ifsym)
+\DeclareTextCommand{\textMountain}{PU}{\9046\360}%* U+26F0
+% U+26FA TENT; \Tent (ifsym)
+\DeclareTextCommand{\textTent}{PU}{\9046\372}%* U+26FA
+% \end{macrocode}
+%
+% \subsubsection{Dingbats: U+2700 to U+27BF}
+%
+% \begin{macrocode}
+% U+2701 UPPER BLADE SCISSORS; \ScissorRightBrokenBottom (bbding)
+\DeclareTextCommand{\textScissorRightBrokenBottom}{PU}{\9047\001}% U+2701
+%* \textScissorRightBrokenBottom -> \CutLeft (marvosym)
+%* \textScissorRightBrokenBottom -> \Cutright (marvosym)
+% U+2702 BLACK SCISSORS; \ScissorRight (bbding)
+\DeclareTextCommand{\textScissorRight}{PU}{\9047\002}%* U+2702
+%* \textScissorRight -> \RightScissors (marvosym)
+%* \textScissorRight -> \Leftscissors (marvosym)
+% U+2703 LOWER BLADE SCISSORS; \ScissorRightBrokenTop (bbding)
+\DeclareTextCommand{\textScissorRightBrokenTop}{PU}{\9047\003}%* U+2703
+% U+2704 WHITE SCISSORS; \ScissorHollowRight (bbding)
+\DeclareTextCommand{\textScissorHollowRight}{PU}{\9047\004}%* U+2704
+% U+2706 TELEPHONE LOCATION SIGN; \PhoneHandset (bbding)
+\DeclareTextCommand{\textPhoneHandset}{PU}{\9047\006}%* U+2706
+% U+2707 TAPE DRIVE; \Tape (bbding)
+\DeclareTextCommand{\textTape}{PU}{\9047\007}%* U+2707
+% U+2708 AIRPLANE; \Plane (bbding)
+\DeclareTextCommand{\textPlane}{PU}{\9047\010}%* U+2708
+% U+2709 ENVELOPE; \Envelope (bbding),
+\DeclareTextCommand{\textEnvelope}{PU}{\9047\011}%* U+2709
+%* \textEnvelope -> \Letter (marvosym)
+% U+270C VICTORY HAND; \Peace (bbding)
+\DeclareTextCommand{\textPeace}{PU}{\9047\014}%* U+270C
+% U+270D WRITING HAND; \WritingHand (marvosym)
+\DeclareTextCommand{\textWritingHand}{PU}{\9047\015}%* U+270D
+%* \textWritingHand -> \Writinghand (marvosym)
+% U+270E LOWER RIGHT PENCIL; \PencilRightDown (bbding)
+\DeclareTextCommand{\textPencilRightDown}{PU}{\9047\016}%* U+270E
+% U+270F PENCIL; \PencilRight (bbding)
+\DeclareTextCommand{\textPencilRight}{PU}{\9047\017}%* U+270F
+% U+2710 UPPER RIGHT PENCIL; \PencilRightUp (bbding)
+\DeclareTextCommand{\textPencilRightUp}{PU}{\9047\020}%* U+2710
+% U+2711 WHITE NIB; \NibRight (bbding)
+\DeclareTextCommand{\textNibRight}{PU}{\9047\021}%* U+2711
+% U+2712 BLACK NIB; \NibSolidRight (bbding)
+\DeclareTextCommand{\textNibSolidRight}{PU}{\9047\022}%* U+2712
+% U+2713 CHECK MARK; checkmark; \Checkmark (bbding)
+\DeclareTextCommand{\textCheckmark}{PU}{\9047\023}%* U+2713
+%* \textCheckmark -> \checkmark (MnSymbol)
+% U+2714 HEAVY CHECK MARK; \CheckmarkBold (bbding)
+\DeclareTextCommand{\textCheckmarkBold}{PU}{\9047\024}%* U+2714
+% U+2715 MULTIPLICATION X; \XSolid (bbding)
+\DeclareTextCommand{\textXSolid}{PU}{\9047\025}%* U+2715
+% U+2716 HEAVY MULTIPLICATION X; \XSolidBold (bbding)
+\DeclareTextCommand{\textXSolidBold}{PU}{\9047\026}%* U+2716
+% U+2717 BALLOT X; \XSolidBrush (bbding)
+\DeclareTextCommand{\textXSolidBrush}{PU}{\9047\027}%* U+2717
+% U+2719 OUTLINED GREEK CROSS; \PlusOutline (bbding)
+\DeclareTextCommand{\textPlusOutline}{PU}{\9047\031}%* U+2719
+% U+271A HEAVY GREEK CROSS; \Plus (bbding)
+\DeclareTextCommand{\textPlus}{PU}{\9047\032}%* U+271A
+% U+271B OPEN CENTRE CROSS; \PlusThinCenterOpen (bbding)
+\DeclareTextCommand{\textPlusThinCenterOpen}{PU}{\9047\033}%* U+271B
+% U+271C HEAVY OPEN CENTRE CROSS; \PlusCenterOpen (bbding)
+\DeclareTextCommand{\textPlusCenterOpen}{PU}{\9047\034}%* U+271C
+% U+271D LATIN CROSS; \Cross (bbding)
+\DeclareTextCommand{\textCross}{PU}{\9047\035}%* U+271D
+% U+271E SHADOWED WHITE LATIN CROSS; \CrossOpenShadow (bbding)
+\DeclareTextCommand{\textCrossOpenShadow}{PU}{\9047\036}%* U+271E
+% U+271F OUTLINED LATIN CROSS; \CrossOutline (bbding)
+\DeclareTextCommand{\textCrossOutline}{PU}{\9047\037}%* U+271F
+% U+2720 MALTESE CROSS; \CrossMaltese (bbding)
+\DeclareTextCommand{\textCrossMaltese}{PU}{\9047\040}%* U+2720
+% U+2721 STAR OF DAVID; \DavidStar (bbding)
+\DeclareTextCommand{\textDavidStar}{PU}{\9047\041}%* U+2721
+%* \textDavidStar -> \davidstar (wasysym)
+% U+2722 FOUR TEARDROP-SPOKED ASTERISK; \FourAsterisk (bbding)
+\DeclareTextCommand{\textFourAsterisk}{PU}{\9047\042}%* U+2722
+% U+2723 FOUR BALLOON-SPOKED ASTERISK; \JackStar (bbding)
+\DeclareTextCommand{\textJackStar}{PU}{\9047\043}%* U+2723
+% U+2724 HEAVY FOUR BALLOON-SPOKED ASTERISK; \JackStarBold (bbding)
+\DeclareTextCommand{\textJackStarBold}{PU}{\9047\044}%* U+2724
+% U+2725 FOUR CLUB-SPOKED ASTERISK; \CrossClowerTips (bbding)
+\DeclareTextCommand{\textClowerTips}{PU}{\9047\045}%* U+2725
+% U+2726 BLACK FOUR POINTED STAR; \FourStar (bbding)
+\DeclareTextCommand{\textFourStar}{PU}{\9047\046}%* U+2726
+% U+2727 WHITE FOUR POINTED STAR; \FourStarOpen (bbding)
+\DeclareTextCommand{\textFourStarOpen}{PU}{\9047\047}%* U+2727
+% U+272A CIRCLED WHITE STAR; \FiveStarOpenCircled (bbding)
+\DeclareTextCommand{\textFiveStarOpenCircled}{PU}{\9047\052}%* U+272A
+% U+272B OPEN CENTRE BLACK STAR; \FiveStarCenterOpen (bbding)
+\DeclareTextCommand{\textFiveStarCenterOpen}{PU}{\9047\053}%* U+272B
+% U+272C BLACK CENTRE WHITE STAR; \FiveStarOpenDotted (bbding)
+\DeclareTextCommand{\textFiveStarOpenDotted}{PU}{\9047\054}%* U+272C
+% U+272D OUTLINED BLACK STAR; \FiveStarOutline (bbding)
+\DeclareTextCommand{\textFiveStarOutline}{PU}{\9047\055}%* U+272D
+% U+272E HEAVY OUTLINED BLACK STAR; \FiveStarOutlineHeavy (bbding)
+\DeclareTextCommand{\textFiveStarOutlineHeavy}{PU}{\9047\056}%* U+272E
+% U+272F PINWHEEL STAR; \FiveStarConvex (bbding)
+\DeclareTextCommand{\textFiveStarConvex}{PU}{\9047\057}%* U+272F
+% U+2730 SHADOWED WHITE STAR; \FiveStarShadow (bbding)
+\DeclareTextCommand{\textFiveStarShadow}{PU}{\9047\060}%* U+2730
+% U+2731 HEAVY ASTERISK; \AsteriskBold (bbding)
+\DeclareTextCommand{\textAsteriskBold}{PU}{\9047\061}%* U+2731
+% U+2732 OPEN CENTRE ASTERISK; \AsteriskCenterOpen (bbding)
+\DeclareTextCommand{\textAsteriskCenterOpen}{PU}{\9047\062}%* U+2732
+% U+2734 EIGHT POINTED BLACK STAR; \EightStarTaper (bbding)
+\DeclareTextCommand{\textEightStarTaper}{PU}{\9047\064}%* U+2734
+% U+2735 EIGHT POINTED PINWHEEL STAR; \EightStarConvex (bbding)
+\DeclareTextCommand{\textEightStarConvex}{PU}{\9047\065}%* U+2735
+% U+2736 SIX POINTED BLACK STAR; \SixStar (bbding)
+\DeclareTextCommand{\textSixStar}{PU}{\9047\066}%* U+2736
+% U+2737 EIGHT POINTED RECTILINEAR BLACK STAR; \EightStar (bbding)
+\DeclareTextCommand{\textEightStar}{PU}{\9047\067}%* U+2737
+% U+2738 HEAVY EIGHT POINTED RECTILINEAR BLACK STAR; \EightStarBold (bbding)
+\DeclareTextCommand{\textEightStarBold}{PU}{\9047\070}%* U+2738
+% U+2739 TWELVE POINTED BLACK STAR; \TwelveStar (bbding)
+\DeclareTextCommand{\textTwelveStar}{PU}{\9047\071}%* U+2739
+% U+273A SIXTEEN POINTED ASTERISK; \SixteenStarLight (bbding)
+\DeclareTextCommand{\textSixteenStarLight}{PU}{\9047\072}%* U+273A
+% U+273B TEARDROP-SPOKED ASTERISK; \SixFlowerPetalRemoved (bbding)
+\DeclareTextCommand{\textSixFlowerPetalRemoved}{PU}{\9047\073}%* U+273B
+% U+273C OPEN CENTRE TEARDROP-SPOKED ASTERISK;
+% \SixFlowerOpenCenter (bbding)
+\DeclareTextCommand{\textSixFlowerOpenCenter}{PU}{\9047\074}%* U+273C
+% U+273D HEAVY TEARDROP-SPOKED ASTERISK; \Asterisk (bbding)
+\DeclareTextCommand{\textAsterisk}{PU}{\9047\075}%* U+273D
+% U+273E SIX PETALLED BLACK AND WHITE FLORETTE; \SixFlowerAlternate (bbding)
+\DeclareTextCommand{\textSixFlowerAlternate}{PU}{\9047\076}%* U+273E
+% U+273F BLACK FLORETTE; \FiveFlowerPetal (bbding)
+\DeclareTextCommand{\textFiveFlowerPetal}{PU}{\9047\077}%* U+273F
+% U+2740 WHITE FLORETTE; \FiveFlowerOpen (bbding)
+\DeclareTextCommand{\textFiveFlowerOpen}{PU}{\9047\100}%* U+2740
+% U+2741 EIGHT PETALLED OUTLINED BLACK FLORETTE; \EightFlowerPetal (bbding)
+\DeclareTextCommand{\textEightFlowerPetal}{PU}{\9047\101}%* U+2741
+% U+2742 CIRCLED OPEN CENTRE EIGHT POINTED STAR; \SunshineOpenCircled (bbding)
+\DeclareTextCommand{\textSunshineOpenCircled}{PU}{\9047\102}%* U+2742
+% U+2743 HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK; \SixFlowerAltPetal (bbding)
+\DeclareTextCommand{\textSixFlowerAltPetal}{PU}{\9047\103}%* U+2743
+% U+2744 SNOWFLAKE; \SnowflakeChevron (bbding)
+\DeclareTextCommand{\textSnowflakeChevron}{PU}{\9047\104}%* U+2744
+% U+2745 TIGHT TRIFOLIATE SNOWFLAKE; \Snowflake (bbding)
+\DeclareTextCommand{\textSnowflake}{PU}{\9047\105}%* U+2745
+% U+2746 HEAVY CHEVRON SNOWFLAKE; \SnowflakeChevronBold (bbding)
+\DeclareTextCommand{\textSnowflakeChevronBold}{PU}{\9047\106}%* U+2746
+% U+2747 SPARKLE; \Sparkle (bbding)
+\DeclareTextCommand{\textSparkle}{PU}{\9047\107}%* U+2747
+% U+2748 HEAVY SPARKLE; \SparkleBold (bbding)
+\DeclareTextCommand{\textSparkleBold}{PU}{\9047\110}%* U+2748
+% U+2749 BALLOON-SPOKED ASTERISK; \AsteriskRoundedEnds (bbding)
+\DeclareTextCommand{\textAsteriskRoundedEnds}{PU}{\9047\111}%* U+2749
+% U+274A EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;
+% \EightFlowerPetalRemoved (bbding)
+\DeclareTextCommand{\textEightFlowerPetalRemoved}{PU}{\9047\112}%* U+274A
+% U+274B HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;
+% \EightAsterisk (bbding)
+\DeclareTextCommand{\textEightAsterisk}{PU}{\9047\113}%* U+274B
+% U+274D SHADOWED WHITE CIRCLE; \CircleShadow (bbding)
+\DeclareTextCommand{\textCircleShadow}{PU}{\9047\115}%* U+274D
+% U+274F LOWER RIGHT DROP-SHADOWED WHITE SQUARE;
+% \SquareShadowBottomRight (bbding)
+\DeclareTextCommand{\textSquareShadowBottomRight}{PU}{\9047\117}%* U+274F
+% U+2750 UPPER RIGHT DROP-SHADOWED WHITE SQUARE;
+% \SquareShadowTopRight (bbding)
+\DeclareTextCommand{\textSquareTopRight}{PU}{\9047\120}%* U+2750
+% U+2751 LOWER RIGHT SHADOWED WHITE SQUARE;
+% \SquareCastShadowBottomRight (bbding)
+\DeclareTextCommand{\textSquareCastShadowBottomRight}{PU}{\9047\121}%* U+2751
+% U+2752 UPPER RIGHT SHADOWED WHITE SQUARE;
+% \SquareCastShadowTopRight (bbding)
+\DeclareTextCommand{\textSquareCastShadowTopRight}{PU}{\9047\122}%* U+2752
+% U+2756 BLACK DIAMOND MINUS WHITE X; \OrnamentDiamandSolid (bbding)
+\DeclareTextCommand{\textDiamandSolid}{PU}{\9047\126}%* U+2756
+% U+2758 LIGHT VERTICAL BAR; \RectangleThin (bbding)
+\DeclareTextCommand{\textRectangleThin}{PU}{\9047\130}%* U+2758
+% U+2759 MEDIUM VERTICAL BAR; \Rectangle (bbding)
+\DeclareTextCommand{\textRectangle}{PU}{\9047\131}%* U+2759
+% U+275A HEAVY VERTICAL BAR; \RectangleBold (bbding)
+\DeclareTextCommand{\textRectangleBold}{PU}{\9047\132}%* U+275A
+% \end{macrocode}
+%
+% \subsubsection{Miscellaneous Mathematical Symbols-A: U+27C0 to U+27EF}
+%
+% \begin{macrocode}
+% U+27C2 PERPENDICULAR; perpendicular; \perp (LaTeX)
+\DeclareTextCommand{\textperp}{PU}{\9047\302}%* U+27C2
+% \notperp (mathabx)
+\DeclareTextCommand{\textnotperp}{PU}{\9047\302\83\070}%* U+27C2 U+0338
+% U+27C7 OR WITH DOT INSIDE; \veedot (MnSymbol)
+\DeclareTextCommand{\textveedot}{PU}{\9047\307}%* U+27C7
+% U+27D1 AND WITH DOT; \wedgedot (MnSymbol)
+\DeclareTextCommand{\textwedgedot}{PU}{\9047\321}%* U+27D1
+% U+27DC LEFT MULTIMAP; \leftspoon (MnSymbol)
+\DeclareTextCommand{\textleftspoon}{PU}{\9047\334}%* U+27DC
+% U+27E6 MATHEMATICAL LEFT WHITE SQUARE BRACKET
+\DeclareTextCommand{\textlbrackdbl}{PU}{\9047\346}%* U+27E6
+%* \textlbrackdbl -> \llbracket (stmaryrd)
+% U+27E7 MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+\DeclareTextCommand{\textrbrackdbl}{PU}{\9047\347}%* U+27E7
+%* \textrbrackdbl -> \rrbracket (stmaryrd)
+% \end{macrocode}
+%
+% \subsubsection{Supplemental Arrows-A: U+27F0 to U+27FF}
+%
+% \begin{macrocode}
+% U+27F2 ANTICLOCKWISE GAPPED CIRCLE ARROW;
+% \circlearrowleft (AmS)
+\DeclareTextCommand{\textcirclearrowleft}{PU}{\9047\362}%* U+27F2
+% U+27F3 CLOCKWISE GAPPED CIRCLE ARROW; \circlearrowright (AmS)
+\DeclareTextCommand{\textcirclearrowright}{PU}{\9047\363}%* U+27F3
+% U+27F5 LONG LEFTWARDS ARROW; \longleftarrow (AmS)
+\DeclareTextCommand{\textlongleftarrow}{PU}{\9047\365}%* U+27F5
+% U+27F6 LONG RIGHTWARDS ARROW; \longrightarrow (AmS)
+\DeclareTextCommand{\textlongrightarrow}{PU}{\9047\366}%* U+27F6
+% U+27F7 LONG LEFT RIGHT ARROW; \longleftrightarrow (AmS)
+\DeclareTextCommand{\textlongleftrightarrow}{PU}{\9047\367}%* U+27F7
+% U+27F8 LONG LEFTWARDS DOUBLE ARROW; \Longleftarrow (AmS)
+\DeclareTextCommand{\textLongleftarrow}{PU}{\9047\370}%* U+27F8
+% U+27F9 LONG RIGHTWARDS DOUBLE ARROW; \Longrightarrow (AmS)
+\DeclareTextCommand{\textLongrightarrow}{PU}{\9047\371}%* U+27F9
+% U+27FA LONG LEFT RIGHT DOUBLE ARROW; \Longleftrightarrow (AmS)
+\DeclareTextCommand{\textLongleftrightarrow}{PU}{\9047\372}%* U+27FA
+% U+27FC LONG RIGHTWARDS ARROW FROM BAR; \longmapsto (AmS)
+\DeclareTextCommand{\textlongmapsto}{PU}{\9047\374}%* U+27FC
+% U+27FD LONG LEFTWARDS DOUBLE ARROW FROM BAR; \Longmapsfrom (stmaryrd)
+\DeclareTextCommand{\textLongmapsfrom}{PU}{\9047\375}%* U+27FD
+% U+27FE LONG RIGHTWARDS DOUBLE ARROW FROM BAR; \Longmapsto (stmaryrd)
+\DeclareTextCommand{\textLongmapsto}{PU}{\9047\376}%* U+27FE
+% \end{macrocode}
+%
+% \subsubsection{Supplemental Arrows-B: U+2900 to U+297F}
+%
+% \begin{macrocode}
+% U+2921 NORTH WEST AND SOUTH EAST ARROW; \nwsearrow (MnSymbol)
+\DeclareTextCommand{\textnwsearrow}{PU}{\9051\041}%* U+2921
+% U+2922 NORTH EAST AND SOUTH WEST ARROW; \neswarrow (MnSymbol)
+\DeclareTextCommand{\textneswarrow}{PU}{\9051\042}%* U+2922
+% U+2923 NORTH WEST ARROW WITH HOOK; \lhooknwarrow (MnSymbol)
+\DeclareTextCommand{\textlhooknwarrow}{PU}{\9051\043}%* U+2923
+% U+2924 NORTH EAST ARROW WITH HOOK; \rhooknearrow (MnSymbol)
+\DeclareTextCommand{\textrhooknearrow}{PU}{\9051\044}%* U+2924
+% U+2925 SOUTH EAST ARROW WITH HOOK; \lhooksearrow (MnSymbol)
+\DeclareTextCommand{\textlhooksearrow}{PU}{\9051\045}%* U+2925
+% U+2926 SOUTH WEST ARROW WITH HOOK; \rhookswarrow (MnSymbol)
+\DeclareTextCommand{\textrhookswarrow}{PU}{\9051\046}%* U+2926
+% U+2933 WAVE ARROW POINTING DIRECTLY RIGHT; \leadsto (wasysym)
+\DeclareTextCommand{\textleadsto}{PU}{\9051\063}%* U+2933
+% U+2934 ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;
+% \rcurvearrowne (MnSymbol)
+\DeclareTextCommand{\textrcurvearrowne}{PU}{\9051\064}%* U+2934
+% U+2935 ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;
+% \lcurvearrowse (MnSymbol)
+\DeclareTextCommand{\textlcurvearrowse}{PU}{\9051\065}%* U+2935
+% U+2936 ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;
+% \lcurvearrowsw (MnSymbol)
+\DeclareTextCommand{\textlcurvearrowsw}{PU}{\9051\066}%* U+2936
+% U+2937 ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;
+% \rcurvearrowse (MnSymbol)
+\DeclareTextCommand{\textrcurvearrowse}{PU}{\9051\067}%* U+2937
+% U+2938 RIGHT-SIDE ARC CLOCKWISE ARROW; \lcurvearrowdown (MnSymbol)
+\DeclareTextCommand{\textlcurvearrowdown}{PU}{\9051\070}%* U+2938
+%* \textlcurvearrowdown -> \RightTorque (marvosym)
+%* \textlcurvearrowdown -> \Righttorque (marvosym)
+% U+2939 LEFT-SIDE ARC ANTICLOCKWISE ARROW;
+% \rcurvearrowdown (MnSymbol)
+\DeclareTextCommand{\textrcurvearrowdown}{PU}{\9051\071}%* U+2939
+%* \textrcurvearrowdown -> \LeftTorque (marvosym)
+%* \textrcurvearrowdown -> \Lefttorque (marvosym)
+% U+293A TOP ARC ANTICLOCKWISE ARROW; \rcurvearrowleft (MnSymbol)
+\DeclareTextCommand{\textrcurvearrowleft}{PU}{\9051\072}%* U+293A
+% U+293B BOTTOM ARC ANTICLOCKWISE ARROW;
+% \rcurvearrowright (MnSymbol)
+\DeclareTextCommand{\textrcurvearrowright}{PU}{\9051\073}%* U+293B
+% U+294A LEFT BARB UP RIGHT BARB DOWN HARPOON; \leftrightharpoon (mathabx)
+\DeclareTextCommand{\textleftrightharpoon}{PU}{\9051\112}%* U+294A
+% U+294B LEFT BARB DOWN RIGHT BARB UP HARPOON; \rightleftharpoon (mathabx)
+\DeclareTextCommand{\textrightleftharpoon}{PU}{\9051\113}%* U+294B
+% U+294C UP BARB RIGHT DOWN BARB LEFT HARPOON;
+% \updownharpoonrightleft (MnSymbol)
+\DeclareTextCommand{\textupdownharpoonrightleft}{PU}{\9051\114}%* U+294C
+% U+294D UP BARB LEFT DOWN BARB RIGHT HARPOON;
+% \updownharpoonleftright (MnSymbol)
+\DeclareTextCommand{\textupdownharpoonleftright}{PU}{\9051\115}%* U+294D
+% U+2962 LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS
+% HARPOON WITH BARB DOWN; \leftleftharpoons (mathabx)
+\DeclareTextCommand{\textleftleftharpoons}{PU}{\9051\142}%* U+2962
+% U+2963 UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS
+% HARPOON WITH BARB RIGHT; \upupharpoons (mathabx)
+\DeclareTextCommand{\textupupharpoons}{PU}{\9051\143}%* U+2963
+% U+2964 RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON
+% WITH BARB DOWN; \rightrightharpoons (mathabx)
+\DeclareTextCommand{\textrightrightharpoons}{PU}{\9051\144}%* U+2964
+% U+2965 DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON
+% WITH BARB RIGHT; \downdownharpoons (mathabx)
+\DeclareTextCommand{\textdowndownharpoons}{PU}{\9051\145}%* U+2965
+% U+296A LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;
+% \leftbarharpoon (mathabx)
+\DeclareTextCommand{\textleftbarharpoon}{PU}{\9051\152}%* U+296A
+% U+296B LEFTWARDS HARPOON WITH BARB DOWN BELOW
+% LONG DASH; \barleftharpoon (mathabx)
+\DeclareTextCommand{\textbarleftharpoon}{PU}{\9051\153}%* U+296B
+% U+296C RIGHTWARDS HARPOON WITH BARB UP ABOVE
+% LONG DASH; \rightbarharpoon (mathabx)
+\DeclareTextCommand{\textrightbarharpoon}{PU}{\9051\154}%* U+296C
+% U+296D RIGHTWARDS HARPOON WITH BARB DOWN BELOW
+% LONG DASH; \barrightharpoon (mathabx)
+\DeclareTextCommand{\textbarrightharpoon}{PU}{\9051\155}%* U+296D
+% U+296E UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON
+% WITH BARB RIGHT; \updownharpoons (mathabx)
+\DeclareTextCommand{\textupdownharpoons}{PU}{\9051\156}%* U+296E
+% U+296F DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON
+% WITH BARB RIGHT; \downupharpoons (mathabx)
+\DeclareTextCommand{\textdownupharpoons}{PU}{\9051\157}%* U+296F
+% U+297F DOWN FISH TAIL
+\DeclareTextCommand{\textmoo}{PU}{\9051\177\83\066}%* U+297F U+0336
+% \end{macrocode}
+%
+% \subsubsection{Miscellaneous Mathematical Symbols-B: U+2980 to U+29FF}
+%
+% \begin{macrocode}
+% U+2987 Z NOTATION LEFT IMAGE BRACKET; \llparenthesis (stmaryrd)
+\DeclareTextCommand{\textllparenthesis}{PU}{\9051\207}%* U+2987
+% U+2988 Z NOTATION RIGHT IMAGE BRACKET; \rrparenthesis (stmaryrd)
+\DeclareTextCommand{\textrrparenthesis}{PU}{\9051\210}%* U+2988
+% U+29B0 REVERSED EMPTY SET; \invdiameter (wasysym)
+\DeclareTextCommand{\textinvdiameter}{PU}{\9051\260}%* U+29B0
+% U+29B6 CIRCLED VERTICAL BAR; \obar (stmaryrd)
+\DeclareTextCommand{\textobar}{PU}{\9051\266}%* U+29B6
+%* \textobar -> \textvarobar (stmaryrd)
+% U+29B8 CIRCLED REVERSE SOLIDUS; \obslash (stmaryrd)
+\DeclareTextCommand{\textobslash}{PU}{\9051\270}%* U+29B8
+%* \textobslash -> \circledbslash (txfonts/pxfonts)
+%* \textobslash -> \obackslash (mathabx)
+%* \textobslash -> \varobslash (stmaryrd)
+% U+29BA CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF
+% DIVIDED BY VERTICAL BAR; \obot (mathabx)
+\DeclareTextCommand{\textobot}{PU}{\9051\272}%* U+29BA
+%* \textobot -> \odplus (ulsy)
+% U+29BB CIRCLE WITH SUPERIMPOSED X; \NoChemicalCleaning (marvosym)
+\DeclareTextCommand{\textNoChemicalCleaning}{PU}{\9051\273}%* U+29BB
+% U+29C0 CIRCLED LESS-THAN; \olessthan (stmaryrd)
+\DeclareTextCommand{\textolessthan}{PU}{\9051\300}%* U+29C0
+%* \textolessthan -> \varolessthan (stmaryrd)
+% U+29C1 CIRCLED GREATER-THAN; \ogreaterthan (stmaryrd)
+\DeclareTextCommand{\textogreaterthan}{PU}{\9051\301}%* U+29C1
+%* \textogreaterthan -> \varogreaterthan (stmaryrd)
+% U+29C4 SQUARED RISING DIAGONAL SLASH; \boxslash (mathabx, stmaryrd)
+\DeclareTextCommand{\textboxslash}{PU}{\9051\304}%* U+29C4
+% U+29C5 SQUARED FALLING DIAGONAL SLASH; \boxbslash (stmaryrd)
+\DeclareTextCommand{\textboxbslash}{PU}{\9051\305}%* U+29C5
+% U+29C6 SQUARED ASTERISK; \boxast (stmaryrd)
+\DeclareTextCommand{\textboxast}{PU}{\9051\306}%* U+29C6
+% U+29C7 SQUARED SMALL CIRCLE; \boxcircle (stmaryrd)
+\DeclareTextCommand{\textboxcircle}{PU}{\9051\307}%* U+29C7
+% U+29C8 SQUARED SQUARE; \boxbox (stmaryrd)
+\DeclareTextCommand{\textboxbox}{PU}{\9051\310}%* U+29C8
+% U+29D3 BLACK BOWTIE; \Valve (marvosym)
+\DeclareTextCommand{\textValve}{PU}{\9051\323}%* U+29D3
+% U+29DF DOUBLE-ENDED MULTIMAP; \multimapboth (txfonts/pxfonts)
+\DeclareTextCommand{\textmultimapboth}{PU}{\9051\337}%* U+29DF
+% U+29E2 SHUFFLE PRODUCT; \shuffle (shuffle)
+\DeclareTextCommand{\textshuffle}{PU}{\9051\342}%* U+29E2
+% \end{macrocode}
+%
+% \subsubsection{Supplemental Mathematical Operators: U+2A00 to U+2AFF}
+%
+% \begin{macrocode}
+% U+2A04 N-ARY UNION OPERATOR WITH PLUS; \uplus (LaTeX)
+\DeclareTextCommand{\textuplus}{PU}{\9052\004}%* U+2A04
+% U+2A07 TWO LOGICAL AND OPERATOR; \bigdoublewedge (MnSymbol)
+\DeclareTextCommand{\textbigdoublewedge}{PU}{\9052\007}%* U+2A07
+% U+2A08 TWO LOGICAL OR OPERATOR; \bigdoublevee (MnSymbol)
+\DeclareTextCommand{\textbigdoublevee}{PU}{\9052\010}%* U+2A08
+% U+2A1D JOIN; \Join (latexsym, amsfonts, amssymb, mathabx, txfonts,
+% pxfonts, wasysym)
+\DeclareTextCommand{\textJoin}{PU}{\9052\035}%* U+2A1D
+% U+2A1F Z NOTATION SCHEMA COMPOSITION; \fatsemi (stmaryrd)
+\DeclareTextCommand{\textfatsemi}{PU}{\9052\037}%* U+2A1F
+% U+2A22 PLUS SIGN WITH SMALL CIRCLE ABOVE; \circplus (mathabx)
+\DeclareTextCommand{\textcircplus}{PU}{\9052\042}%* U+2A22
+% U+2A2A MINUS SIGN WITH DOT BELOW; \minusdot (MnSymbol)
+\DeclareTextCommand{\textminusdot}{PU}{\9052\052}%* U+2A2A
+%* \textminusdot -> \divdot (mathabx)
+% U+2A30 MULTIPLICATION SIGN WITH DOT ABOVE; \dottimes (mathabx)
+\DeclareTextCommand{\textdottimes}{PU}{\9052\060}%* U+2A30
+% U+2A32 SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;
+% \dtimes (mathdesign)
+\DeclareTextCommand{\textdtimes}{PU}{\9052\062}%* U+2A32
+% U+2A38 CIRCLED DIVISION SIGN; \odiv (mathabx)
+\DeclareTextCommand{\textodiv}{PU}{\9052\070}%* U+2A38
+% U+2A3C INTERIOR PRODUCT; \invneg (MnSymbol)
+\DeclareTextCommand{\textinvneg}{PU}{\9052\074}%* U+2A3C
+% U+2A4E DOUBLE SQUARE INTERSECTION; \sqdoublecap (mathabx)
+\DeclareTextCommand{\textsqdoublecap}{PU}{\9052\116}%* U+2A4E
+%* \textsqdoublecap -> \doublesqcap (MnSymbol)
+% U+2A40 INTERSECTION WITH DOT; \capdot (MnSymbol)
+\DeclareTextCommand{\textcapdot}{PU}{\9052\100}%* U+2A40
+% U+2A4F DOUBLE SQUARE UNION; \sqdoublecup (mathabx)
+\DeclareTextCommand{\textsqdoublecup}{PU}{\9052\117}%* U+2A4F
+%* \textsqdoublecup -> \doublesqcup (MnSymbol)
+% U+2A55 TWO INTERSECTING LOGICAL AND; \doublewedge (MnSymbol)
+\DeclareTextCommand{\textdoublewedge}{PU}{\9052\125}%* U+2A55
+% U+2A56 TWO INTERSECTING LOGICAL OR; \doublevee (MnSymbol
+\DeclareTextCommand{\textdoublevee}{PU}{\9052\126}%* U+2A56
+%* \textdoublevee -> \merge (stmaryrd)
+% U+2A5E LOGICAL AND WITH DOUBLE OVERBAR;
+% \doublebarwedge (AmS)
+\DeclareTextCommand{\textdoublebarwedge}{PU}{\9052\136}%* U+2A5E
+% U+2A63 LOGICAL OR WITH DOUBLE UNDERBAR;
+% \veedoublebar (mahtabx)
+\DeclareTextCommand{\textveedoublebar}{PU}{\9052\143}%* U+2A63
+% U+2A66 EQUALS SIGN WITH DOT BELOW; \eqdot (MnSymbol)
+\DeclareTextCommand{\texteqdot}{PU}{\9052\146}%* U+2A66
+% \neqdot (MnSymbol)
+\DeclareTextCommand{\textneqdot}{PU}{\9052\146\83\070}%* U+2A66 U+0338
+% U+2A74 DOUBLE COLON EQUAL; \coloncolonequals (colonequals)
+\DeclareTextCommand{\textcoloncolonequals}{PU}{\9052\164}%* U+2A74
+% U+2A7D LESS-THAN OR SLANTED EQUAL TO; \leqslant (AmS)
+\DeclareTextCommand{\textleqslant}{PU}{\9052\175}%* U+2A7D
+% \nleqslant (txfonts/pxfonts)
+\DeclareTextCommand{\textnleqslant}{PU}{\9052\175\83\070}%* U+2A7D U+0338
+% U+2A7E GREATER-THAN OR SLANTED EQUAL TO; \geqslant (AmS)
+\DeclareTextCommand{\textgeqslant}{PU}{\9052\176}%* U+2A7E
+% \ngeqslang (txfonts/pxfonts)
+\DeclareTextCommand{\textngeqslant}{PU}{\9052\176\83\070}%* U+2A7E U+0338
+% U+2A85 LESS-THAN OR APPROXIMATE; \lessapprox (AmS)
+\DeclareTextCommand{\textlessapprox}{PU}{\9052\205}%* U+2A85
+% \nlessapprox (txfonts/pxfonts)
+\DeclareTextCommand{\textnlessapprox}{PU}{\9052\205\83\070}%* U+2A85 U+0338
+% U+2A86 GREATER-THAN OR APPROXIMATE; \gtrapprox (AmS)
+\DeclareTextCommand{\textgtrapprox}{PU}{\9052\206}%* U+2A86
+% \ngtrapprox (txfonts/pxfonts)
+\DeclareTextCommand{\textngtrapprox}{PU}{\9052\206\83\070}%* U+2A86 U+0338
+% U+2A87 LESS-THAN AND SINGLE-LINE NOT EQUAL TO; \lneq (AmS)
+\DeclareTextCommand{\textlneq}{PU}{\9052\207}%* U+2A87
+% U+2A88 GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;
+% \gneq (AmS)
+\DeclareTextCommand{\textgneq}{PU}{\9052\210}%* U+2A88
+% U+2A89 LESS-THAN AND NOT APPROXIMATE; \lnapprox (AmS)
+\DeclareTextCommand{\textlnapprox}{PU}{\9052\211}%* U+2A89
+% U+2A8A GREATER-THAN AND NOT APPROXIMATE; \gnapprox (AmS)
+\DeclareTextCommand{\textgnapprox}{PU}{\9052\212}%* U+2A8A
+% U+2A8B LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;
+% \lesseqqgtr (AmS)
+\DeclareTextCommand{\textlesseqqgtr}{PU}{\9052\213}%* U+2A8B
+% U+2A8C GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;
+% \gtreqqless (AmS)
+\DeclareTextCommand{\textgtreqqless}{PU}{\9052\214}%* U+2A8C
+% U+2A95 SLANTED EQUAL TO OR LESS-THAN; \eqslantless (AmS)
+\DeclareTextCommand{\texteqslantless}{PU}{\9052\225}%* U+2A95
+% U+2A96 SLANTED EQUAL TO OR GREATER-THAN; \eqslantgtr (AmS)
+\DeclareTextCommand{\texteqslantgtr}{PU}{\9052\226}%* U+2A96
+% U+2AA6 LESS-THAN CLOSED BY CURVE; \leftslice (stmaryrd)
+\DeclareTextCommand{\textleftslice}{PU}{\9052\246}%* U+2AA6
+% U+2AA7 GREATER-THAN CLOSED BY CURVE; \rightslice (stmaryrd)
+\DeclareTextCommand{\textrightslice}{PU}{\9052\247}%* U+2AA7
+% U+2AAF PRECEDES ABOVE SINGLE-LINE EQUALS SIGN; \preceq (MnSymbol)
+\DeclareTextCommand{\textpreceq}{PU}{\9052\257}%* U+2AAF
+% \npreceq (txfonts/pxfonts)
+\DeclareTextCommand{\textnpreceq}{PU}{\9052\257\83\070}%* U+2AAF U+0338
+% U+2AB0 SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN; \succeq (MnSymbol)
+\DeclareTextCommand{\textsucceq}{PU}{\9052\260}%* U+2AB0
+% \nsucceq (txfonts/pxfonts)
+\DeclareTextCommand{\textnsucceq}{PU}{\9052\260\83\070}%* U+2AB0 U+0338
+% U+2AB1 PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO; \precneq (mathabx)
+\DeclareTextCommand{\textprecneq}{PU}{\9052\261}%* U+2AB1
+% U+2AB2 SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO; \succneq (mathabx)
+\DeclareTextCommand{\textsuccneq}{PU}{\9052\262}%* U+2AB2
+% U+2AB3 PRECEDES ABOVE EQUALS SIGN; \preceqq (txfonts/pxfonts)
+\DeclareTextCommand{\textpreceqq}{PU}{\9052\263}%* U+2AB3
+% \npreceqq (txfonts/pxfonts)
+\DeclareTextCommand{\textnpreceqq}{PU}{\9052\263\83\070}%* U+2AB3 U+0338
+% U+2AB4 SUCCEEDS ABOVE EQUALS SIGN; \succeqq (txfonts/pxfonts)
+\DeclareTextCommand{\textsucceqq}{PU}{\9052\264}%* U+2AB4
+% \nsucceqq (txfonts/pxfonts)
+\DeclareTextCommand{\textnsucceqq}{PU}{\9052\264\83\070}%* U+2AB4 U+0338
+% U+2AB5 PRECEDES ABOVE NOT EQUAL TO; \precneqq (txfonts/pxfonts)
+\DeclareTextCommand{\textprecneqq}{PU}{\9052\265}%* U+2AB5
+% U+2AB6 SUCCEEDS ABOVE NOT EQUAL TO; \succneqq (txfonts/pxfonts)
+\DeclareTextCommand{\textsuccneqq}{PU}{\9052\266}%* U+2AB6
+% U+2AB7 PRECEDES ABOVE ALMOST EQUAL TO; \precapprox (AmS)
+\DeclareTextCommand{\textprecapprox}{PU}{\9052\267}%* U+2AB7
+% \nprecapprox (txfonts/pxfonts)
+\DeclareTextCommand{\textnprecapprox}{PU}{\9052\267\83\070}%* U+2AB7 U+0338
+% U+2AB8 SUCCEEDS ABOVE ALMOST EQUAL TO; \succapprox (AmS)
+\DeclareTextCommand{\textsuccapprox}{PU}{\9052\270}%* U+2AB8
+% \nsuccapprox (txfonts/pxfonts)
+\DeclareTextCommand{\textnsuccapprox}{PU}{\9052\270\83\070}%* U+2AB8 U+0338
+% U+2AB9 PRECEDES ABOVE NOT ALMOST EQUAL TO; \precnapprox (AmS)
+\DeclareTextCommand{\textprecnapprox}{PU}{\9052\271}%* U+2AB9
+% U+2ABA SUCCEEDS ABOVE NOT ALMOST EQUAL TO; \succnapprox (AmS)
+\DeclareTextCommand{\textsuccnapprox}{PU}{\9052\272}%* U+2ABA
+% U+2AC5 SUBSET OF ABOVE EQUALS SIGN; \subseteqq (AmS)
+\DeclareTextCommand{\textsubseteqq}{PU}{\9052\305}%* U+2AC5
+% \nsubseteqq (txfonts/pxfonts, mathabx)
+\DeclareTextCommand{\textnsubseteqq}{PU}{\9052\305\83\070}%* U+2AC5 U+0338
+% U+2AC6 SUPERSET OF ABOVE EQUALS SIGN; \supseteqq (AmS)
+\DeclareTextCommand{\textsupseteqq}{PU}{\9052\306}%* U+2AC6
+% \nsupseteqq (mathabx)
+\DeclareTextCommand{\textnsupseteqq}{PU}{\9052\306\83\070}%* U+2AC6 U+0338
+% U+2AE3 DOUBLE VERTICAL BAR LEFT TURNSTILE
+\DeclareTextCommand{\textdashV}{PU}{\9052\343}%* U+2AE3
+%* \textdashV -> \leftVdash (MnSymbol)
+% \ndashV (mathabx)
+\DeclareTextCommand{\textndashV}{PU}{\9052\343\83\070}%* U+2AE3 U+0338
+%* \textndashV -> \nleftVdash (MnSymbol)
+% U+2AE4 VERTICAL BAR DOUBLE LEFT TURNSTILE; \Dashv (mathabx)
+\DeclareTextCommand{\textDashv}{PU}{\9052\344}%* U+2AE4
+%* \textDashv -> \leftmodels (MnSymbol)
+% \nDashv (mathabx)
+\DeclareTextCommand{\textnDashv}{PU}{\9052\344\83\070}%* U+2AE4 U+0338
+%* \textnDashv -> \nleftmodels (MnSymbol)
+% U+2AE5 DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;
+% \DashV (mathabx)
+\DeclareTextCommand{\textDashV}{PU}{\9052\345}%* U+2AE5
+%* \textDashV -> \leftModels (MnSymbol)
+% \nDashV (mathabx)
+\DeclareTextCommand{\textnDashV}{PU}{\9052\345\83\070}%* U+2AE5 U+0338
+%* \textnDashV -> \nleftModels (MnSymbol)
+% U+2AEA DOUBLE DOWN TACK; \downmodels (MnSymbol)
+\DeclareTextCommand{\textdownmodels}{PU}{\9052\352}%* U+2AEA
+% \ndownmodels (MnSymbol)
+\DeclareTextCommand{\textndownmodels}{PU}{\9052\352\83\070}%* U+2AEA U+0338
+% U+2AEB DOUBLE UP TACK; \upmodels (MnSymbol)
+\DeclareTextCommand{\textupmodels}{PU}{\9052\353}%* U+2AEB
+% \nupmodels (MnSymbol)
+\DeclareTextCommand{\textnupmodels}{PU}{\9052\353\83\070}%* U+2AEB U+0338
+% U+2AEF VERTICAL LINE WITH CIRCLE ABOVE; \upspoon (MnSymbol)
+\DeclareTextCommand{\textupspoon}{PU}{\9052\357}%* U+2AEF
+% U+2AF4 TRIPLE VERTICAL BAR BINARY RELATION;
+% \interleave (stmaryrd)
+\DeclareTextCommand{\textinterleave}{PU}{\9052\364}%* U+2AF4
+% U+2AFD DOUBLE SOLIDUS OPERATOR; \sslash (stmaryrd)
+\DeclareTextCommand{\textsslash}{PU}{\9052\375}%* U+2AFD
+%* \textsslash -> \varparallel (txfonts\pxfonts)
+% \end{macrocode}
+%
+% \subsubsection{Miscellaneous Symbols and Arrows: U+2B00 to U+2BFF}
+%
+% \begin{macrocode}
+% U+2B20 WHITE PENTAGON; \pentagon (wasysym)
+\DeclareTextCommand{\textpentagon}{PU}{\9053\040}%* U+2B20
+% U+2B21 WHITE HEXAGON; \varhexagon (wasysym)
+\DeclareTextCommand{\textvarhexagon}{PU}{\9053\041}%* U+2B21
+% \end{macrocode}
+%
+% \subsubsection{Latin Extended-C: U+2C60 to U+2C7F}
+%
+% \begin{macrocode}
+% U+2C7C LATIN SUBSCRIPT SMALL LETTER J
+\DeclareTextCommand{\textjinferior}{PU}{\9054\174}%* U+2C7C
+% \end{macrocode}
+%
+% \subsubsection{Supplemental Punctuation: U+2E00 to U+2E7F}
+%
+% \begin{macrocode}
+% U+2E13 DOTTED OBELOS; \slashdiv (MnSymbol)
+\DeclareTextCommand{\textslashdiv}{PU}{\9056\023}%* U+2E13
+% U+2E18 INVERTED INTERROBANG; \textinterrobangdown (textcomp)
+\DeclareTextCommand{\textinterrobangdown}{PU}{\9056\030}% U+2E18
+% U+2E2D FIVE DOT MARK; \fivedots (MnSymbol)
+\DeclareTextCommand{\textfivedots}{PU}{\9056\055}%* U+2E2D
+% \end{macrocode}
+%
+% \subsubsection{Modifier Tone Letters: U+A700 to U+A71F}
+%
+% \begin{macrocode}
+% U+A71B MODIFIER LETTER RAISED UP ARROW; \textupstep (tipa)
+\DeclareTextCommand{\textupstep}{PU}{\9247\033}% U+A71B
+% U+A71C MODIFIER LETTER RAISED DOWN ARROW;
+% \textdownstep (tipa)
+\DeclareTextCommand{\textdownstep}{PU}{\9247\034}% U+A71C
+% \end{macrocode}
+%
+% \subsubsection{Latin Extended-D: U+A720 to U+A7FF}
+%
+% \begin{macrocode}
+% U+A727 LATIN SMALL LETTER HENG; \textheng (tipx)
+\DeclareTextCommand{\textPUheng}{PU}{\9247\047}% U+A727
+%* \textPUheng -> \textheng (tipx)
+% U+A72C LATIN CAPITAL LETTER CUATRILLO; \textlhookfour (tipx)
+\DeclareTextCommand{\textPUlhookfour}{PU}{\9247\054}% U+A72C
+%* \textPUlhookfour -> \textlhookfour (tipx)
+% U+A730 LATIN LETTER SMALL CAPITAL F; \textscf (tipx)
+\DeclareTextCommand{\textPUscf}{PU}{\9247\060}% U+A730
+%* \textPUscf -> \textscf (tipx)
+% U+A735 LATIN SMALL LETTER AO; \textaolig (tipx)
+\DeclareTextCommand{\textPUaolig}{PU}{\9247\065}% U+A735
+%* \textPUaolig -> \textaolig (tipx)
+% U+A74F LATIN SMALL LETTER OO; \oo (wsuipa)
+\DeclareTextCommand{\textoo}{PU}{\9247\117}%* U+A74F
+% U+A788 MODIFIER LETTER LOW CIRCUMFLEX ACCENT
+\DeclareTextCommand{\textcircumlow}{PU}{\9247\210}% U+A788
+% \end{macrocode}
+%
+% \subsubsection{Alphabetic Presentation Forms: U+FB00 to U+FB4F}
+%
+% \begin{macrocode}
+% U+FB01 LATIN SMALL LIGATURE FI; fi
+\DeclareTextCommand{\textfi}{PU}{\9373\001}% U+FB01
+% U+FB02 LATIN SMALL LIGATURE FL; fl
+\DeclareTextCommand{\textfl}{PU}{\9373\002}% U+FB02
+% \end{macrocode}
+%
+% \subsubsection{Musical Symbols: U+1D100 to U+1D1FF}
+%
+% \begin{macrocode}
+% U+1D13B MUSICAL SYMBOL WHOLE REST; \GaPa (harmony)
+\DeclareTextCommand{\textGaPa}{PU}{\9330\064\9335\073}%* U+1D13B
+% U+1D13C MUSICAL SYMBOL HALF REST; \HaPa (harmony)
+\DeclareTextCommand{\textHaPa}{PU}{\9330\064\9335\074}%* U+1D13C
+% U+1D13D MUSICAL SYMBOL QUARTER REST; \ViPa (harmony)
+\DeclareTextCommand{\textViPa}{PU}{\9330\064\9335\075}%* U+1D13D
+% U+1D13E MUSICAL SYMBOL EIGHTH REST; \AcPa (harmony)
+\DeclareTextCommand{\textAcPa}{PU}{\9330\064\9335\076}%* U+1D13E
+% U+1D13F MUSICAL SYMBOL SIXTEENTH REST; \SePa (harmony)
+\DeclareTextCommand{\textSePa}{PU}{\9330\064\9335\077}%* U+1D13F
+% U+1D140 MUSICAL SYMBOL THIRTY-SECOND REST; \ZwPa (harmony)
+\DeclareTextCommand{\textZwPa}{PU}{\9330\064\9335\100}%* U+1D140
+% U+1D15D MUSICAL SYMBOL WHOLE NOTE; \fullnote (wasysym)
+\DeclareTextCommand{\textfullnote}{PU}{\9330\064\9335\135}%* U+1D15D
+%* \textfullnote -> \Ganz (harmony)
+% U+1D15E MUSICAL SYMBOL HALF NOTE; \halfnote (wasysym)
+\DeclareTextCommand{\texthalfnote}{PU}{\9330\064\9335\136}%* U+1D15E
+%* \texthalfnote -> \Halb (harmony)
+% U+1D15F MUSICAL SYMBOL QUARTER NOTE; \Vier (harmony)
+\DeclareTextCommand{\textVier}{PU}{\9330\064\9335\137}%* U+1D15F
+% U+1D160 MUSICAL SYMBOL EIGHTH NOTE; \Acht (harmony)
+\DeclareTextCommand{\textAcht}{PU}{\9330\064\9335\140}%* U+1D160
+% U+1D161 MUSICAL SYMBOL SIXTEENTH NOTE; \Sech (harmony)
+\DeclareTextCommand{\textSech}{PU}{\9330\064\9335\141}%* U+1D161
+% U+1D162 MUSICAL SYMBOL THIRTY-SECOND NOTE; \Zwdr (harmony)
+\DeclareTextCommand{\textZwdr}{PU}{\9330\064\9335\142}%* U+1D162
+% \end{macrocode}
+%
+% \subsubsection{Miscellaneous Symbols and Pictographs: U+1F300 to U+1F5FF}
+%
+% \begin{macrocode}
+% U+1F30D EARTH GLOBE EUROPE-AFRICA; \Mundus (marvosym)
+\DeclareTextCommand{\textMundus}{PU}{\9330\074\9337\015}%* U+1F30D
+% U+1F319 CRESCENT MOON; \Moon (marvosym)
+\DeclareTextCommand{\textMoon}{PU}{\9330\074\9337\031}%* U+1F319
+% U+1F468 MAN; \ManFace (marvosym)
+\DeclareTextCommand{\textManFace}{PU}{\9330\075\9334\150}%* U+1F468
+% U+1F469 WOMAN; \WomanFace (marvosym)
+\DeclareTextCommand{\textWomanFace}{PU}{\9330\075\9334\151}%* U+1F469
+%* \textWomanFace -> \Womanface (marvosym)
+% U+1F4E0 FAX MACHINE; \Fax (marvosym)
+\DeclareTextCommand{\textFax}{PU}{\9330\075\9334\340}%* U+1F4E0
+%* \textFax -> \Faxmachine (marvosym)
+% U+1F525 FIRE; \Fire (ifsym)
+\DeclareTextCommand{\textFire}{PU}{\9330\075\9335\045}%* U+1F525
+% \end{macrocode}
+%
+% \subsubsection{Transport and Map Symbols: U+1F680 to U+1F6FF}
+%
+% \begin{macrocode}
+% U+1F6B2 BICYCLE; \Bicycle (marvosym)
+\DeclareTextCommand{\textBicycle}{PU}{\9330\075\9336\262}%* U+1F6B2
+% U+1F6B9 MENS SYMBOL; \Gentsroom (marvosym)
+\DeclareTextCommand{\textGentsroom}{PU}{\9330\075\9336\271}%* U+1F6B9
+% U+1F6BA WOMENS SYMBOL; \Ladiesroom (marvosym)
+\DeclareTextCommand{\textLadiesroom}{PU}{\9330\075\9336\272}%* U+1F6BA
+% \end{macrocode}
+%
+% \subsubsection{Miscellaneous}
+%
+% \begin{macrocode}
+\DeclareTextCommand{\SS}{PU}{SS}%
+% \textcopyleft (textcomp)
+\DeclareTextCommand{\textcopyleft}{PU}{\9041\204\9040\335}% U+2184 U+20DD
+% \ccnc (cclicenses)
+\DeclareTextCommand{\textccnc}{PU}{\80\044\9040\340}%* U+0024 U+20E0
+% \ccnd (cclicenses)
+\DeclareTextCommand{\textccnd}{PU}{=\9040\335}%* U+003D U+20DD
+% \ccsa (cclicenses)
+\DeclareTextCommand{\textccsa}{PU}{\9047\362\9040\335}%* U+27F2 U+20DD
+% \Info (marvosym, china2e)
+\DeclareTextCommand{\textInfo}{PU}{\9330\065\9334\042\9040\336}%* U+1D422 U+20DE
+% \CESign (marvosym)
+\DeclareTextCommand{\textCESign}{PU}{\80\103\80\105}%* U+0043 U+0045
+%* \textCESign -> \CEsign (marvosym)
+% \end{macrocode}
+%
+% \subsubsection{Aliases}
+%
+% Aliases (german.sty)
+% \begin{macrocode}
+\DeclareTextCommand{\textglqq}{PU}{\quotedblbase}%
+\DeclareTextCommand{\textgrqq}{PU}{\textquotedblleft}%
+\DeclareTextCommand{\textglq}{PU}{\quotesinglbase}%
+\DeclareTextCommand{\textgrq}{PU}{\textquoteleft}%
+\DeclareTextCommand{\textflqq}{PU}{\guillemotleft}%
+\DeclareTextCommand{\textfrqq}{PU}{\guillemotright}%
+\DeclareTextCommand{\textflq}{PU}{\guilsinglleft}%
+\DeclareTextCommand{\textfrq}{PU}{\guilsinglright}%
+% \end{macrocode}
+% Aliases (math names)
+% \begin{macrocode}
+\DeclareTextCommand{\textneg}{PU}{\textlogicalnot}%*
+\DeclareTextCommand{\texttimes}{PU}{\textmultiply}%*
+\DeclareTextCommand{\textdiv}{PU}{\textdivide}%*
+\DeclareTextCommand{\textpm}{PU}{\textplusminus}%*
+\DeclareTextCommand{\textcdot}{PU}{\textperiodcentered}%*
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</puenc>
+% \end{macrocode}
+%
+% \subsection{PU encoding, additions for Vn\TeX}
+%
+% This file is provided by Han The Thanh.
+%
+% \begin{macrocode}
+%<*puvnenc>
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareTextCommand{\abreve}{PU}{\81\003}% U+0103
+\DeclareTextCommand{\acircumflex}{PU}{\80\342}% U+00E2
+\DeclareTextCommand{\ecircumflex}{PU}{\80\352}% U+00EA
+\DeclareTextCommand{\ocircumflex}{PU}{\80\364}% U+00F4
+\DeclareTextCommand{\ohorn}{PU}{\81\241}% U+01A1
+\DeclareTextCommand{\uhorn}{PU}{\81\260}% U+01B0
+\DeclareTextCommand{\ABREVE}{PU}{\81\002}% U+0102
+\DeclareTextCommand{\ACIRCUMFLEX}{PU}{\80\302}% U+00C2
+\DeclareTextCommand{\ECIRCUMFLEX}{PU}{\80\312}% U+00CA
+\DeclareTextCommand{\OCIRCUMFLEX}{PU}{\80\324}% U+00D4
+\DeclareTextCommand{\OHORN}{PU}{\81\240}% U+01A0
+\DeclareTextCommand{\UHORN}{PU}{\81\257}% U+01AF
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareTextCompositeCommand{\'}{PU}{a}{\80\341}% U+00E1
+\DeclareTextCompositeCommand{\d}{PU}{a}{\9036\241}% U+1EA1
+\DeclareTextCompositeCommand{\`}{PU}{a}{\80\340}% U+00E0
+\DeclareTextCompositeCommand{\h}{PU}{a}{\9036\243}% U+1EA3
+\DeclareTextCompositeCommand{\~}{PU}{a}{\80\343}% U+00E3
+\DeclareTextCompositeCommand{\'}{PU}{\abreve}{\9036\257}% U+1EAF
+\DeclareTextCompositeCommand{\d}{PU}{\abreve}{\9036\267}% U+1EB7
+\DeclareTextCompositeCommand{\`}{PU}{\abreve}{\9036\261}% U+1EB1
+\DeclareTextCompositeCommand{\h}{PU}{\abreve}{\9036\263}% U+1EB3
+\DeclareTextCompositeCommand{\~}{PU}{\abreve}{\9036\265}% U+1EB5
+\DeclareTextCompositeCommand{\'}{PU}{\acircumflex}{\9036\245}% U+1EA5
+\DeclareTextCompositeCommand{\d}{PU}{\acircumflex}{\9036\255}% U+1EAD
+\DeclareTextCompositeCommand{\`}{PU}{\acircumflex}{\9036\247}% U+1EA7
+\DeclareTextCompositeCommand{\h}{PU}{\acircumflex}{\9036\251}% U+1EA9
+\DeclareTextCompositeCommand{\~}{PU}{\acircumflex}{\9036\253}% U+1EAB
+\DeclareTextCompositeCommand{\'}{PU}{e}{\80\351}% U+00E9
+\DeclareTextCompositeCommand{\d}{PU}{e}{\9036\271}% U+1EB9
+\DeclareTextCompositeCommand{\`}{PU}{e}{\80\350}% U+00E8
+\DeclareTextCompositeCommand{\h}{PU}{e}{\9036\273}% U+1EBB
+\DeclareTextCompositeCommand{\~}{PU}{e}{\9036\275}% U+1EBD
+\DeclareTextCompositeCommand{\'}{PU}{\ecircumflex}{\9036\277}% U+1EBF
+\DeclareTextCompositeCommand{\d}{PU}{\ecircumflex}{\9036\307}% U+1EC7
+\DeclareTextCompositeCommand{\`}{PU}{\ecircumflex}{\9036\301}% U+1EC1
+\DeclareTextCompositeCommand{\h}{PU}{\ecircumflex}{\9036\303}% U+1EC3
+\DeclareTextCompositeCommand{\~}{PU}{\ecircumflex}{\9036\305}% U+1EC5
+\DeclareTextCompositeCommand{\'}{PU}{i}{\80\355}% U+00ED
+\DeclareTextCompositeCommand{\d}{PU}{i}{\9036\313}% U+1ECB
+\DeclareTextCompositeCommand{\`}{PU}{i}{\80\354}% U+00EC
+\DeclareTextCompositeCommand{\h}{PU}{i}{\9036\311}% U+1EC9
+\DeclareTextCompositeCommand{\~}{PU}{i}{\81\051}% U+0129
+\DeclareTextCompositeCommand{\'}{PU}{o}{\80\363}% U+00F3
+\DeclareTextCompositeCommand{\d}{PU}{o}{\9036\315}% U+1ECD
+\DeclareTextCompositeCommand{\`}{PU}{o}{\80\362}% U+00F2
+\DeclareTextCompositeCommand{\h}{PU}{o}{\9036\317}% U+1ECF
+\DeclareTextCompositeCommand{\~}{PU}{o}{\80\365}% U+00F5
+\DeclareTextCompositeCommand{\'}{PU}{\ocircumflex}{\9036\321}% U+1ED1
+\DeclareTextCompositeCommand{\d}{PU}{\ocircumflex}{\9036\331}% U+1ED9
+\DeclareTextCompositeCommand{\`}{PU}{\ocircumflex}{\9036\323}% U+1ED3
+\DeclareTextCompositeCommand{\h}{PU}{\ocircumflex}{\9036\325}% U+1ED5
+\DeclareTextCompositeCommand{\~}{PU}{\ocircumflex}{\9036\327}% U+1ED7
+\DeclareTextCompositeCommand{\'}{PU}{\ohorn}{\9036\333}% U+1EDB
+\DeclareTextCompositeCommand{\d}{PU}{\ohorn}{\9036\343}% U+1EE3
+\DeclareTextCompositeCommand{\`}{PU}{\ohorn}{\9036\335}% U+1EDD
+\DeclareTextCompositeCommand{\h}{PU}{\ohorn}{\9036\337}% U+1EDF
+\DeclareTextCompositeCommand{\~}{PU}{\ohorn}{\9036\341}% U+1EE1
+\DeclareTextCompositeCommand{\'}{PU}{u}{\80\372}% U+00FA
+\DeclareTextCompositeCommand{\d}{PU}{u}{\9036\345}% U+1EE5
+\DeclareTextCompositeCommand{\`}{PU}{u}{\80\371}% U+00F9
+\DeclareTextCompositeCommand{\h}{PU}{u}{\9036\347}% U+1EE7
+\DeclareTextCompositeCommand{\~}{PU}{u}{\81\151}% U+0169
+\DeclareTextCompositeCommand{\'}{PU}{\uhorn}{\9036\351}% U+1EE9
+\DeclareTextCompositeCommand{\d}{PU}{\uhorn}{\9036\361}% U+1EF1
+\DeclareTextCompositeCommand{\`}{PU}{\uhorn}{\9036\353}% U+1EEB
+\DeclareTextCompositeCommand{\h}{PU}{\uhorn}{\9036\355}% U+1EED
+\DeclareTextCompositeCommand{\~}{PU}{\uhorn}{\9036\357}% U+1EEF
+\DeclareTextCompositeCommand{\'}{PU}{y}{\80\375}% U+00FD
+\DeclareTextCompositeCommand{\d}{PU}{y}{\9036\365}% U+1EF5
+\DeclareTextCompositeCommand{\`}{PU}{y}{\9036\363}% U+1EF3
+\DeclareTextCompositeCommand{\h}{PU}{y}{\9036\367}% U+1EF7
+\DeclareTextCompositeCommand{\~}{PU}{y}{\9036\371}% U+1EF9
+\DeclareTextCompositeCommand{\'}{PU}{A}{\80\301}% U+00C1
+\DeclareTextCompositeCommand{\d}{PU}{A}{\9036\240}% U+1EA0
+\DeclareTextCompositeCommand{\`}{PU}{A}{\80\300}% U+00C0
+\DeclareTextCompositeCommand{\h}{PU}{A}{\9036\242}% U+1EA2
+\DeclareTextCompositeCommand{\~}{PU}{A}{\80\303}% U+00C3
+\DeclareTextCompositeCommand{\'}{PU}{\ABREVE}{\9036\256}% U+1EAE
+\DeclareTextCompositeCommand{\d}{PU}{\ABREVE}{\9036\266}% U+1EB6
+\DeclareTextCompositeCommand{\`}{PU}{\ABREVE}{\9036\260}% U+1EB0
+\DeclareTextCompositeCommand{\h}{PU}{\ABREVE}{\9036\262}% U+1EB2
+\DeclareTextCompositeCommand{\~}{PU}{\ABREVE}{\9036\264}% U+1EB4
+\DeclareTextCompositeCommand{\'}{PU}{\ACIRCUMFLEX}{\9036\244}% U+1EA4
+\DeclareTextCompositeCommand{\d}{PU}{\ACIRCUMFLEX}{\9036\254}% U+1EAC
+\DeclareTextCompositeCommand{\`}{PU}{\ACIRCUMFLEX}{\9036\246}% U+1EA6
+\DeclareTextCompositeCommand{\h}{PU}{\ACIRCUMFLEX}{\9036\250}% U+1EA8
+\DeclareTextCompositeCommand{\~}{PU}{\ACIRCUMFLEX}{\9036\252}% U+1EAA
+\DeclareTextCompositeCommand{\'}{PU}{E}{\80\311}% U+00C9
+\DeclareTextCompositeCommand{\d}{PU}{E}{\9036\270}% U+1EB8
+\DeclareTextCompositeCommand{\`}{PU}{E}{\80\310}% U+00C8
+\DeclareTextCompositeCommand{\h}{PU}{E}{\9036\272}% U+1EBA
+\DeclareTextCompositeCommand{\~}{PU}{E}{\9036\274}% U+1EBC
+\DeclareTextCompositeCommand{\'}{PU}{\ECIRCUMFLEX}{\9036\276}% U+1EBE
+\DeclareTextCompositeCommand{\d}{PU}{\ECIRCUMFLEX}{\9036\306}% U+1EC6
+\DeclareTextCompositeCommand{\`}{PU}{\ECIRCUMFLEX}{\9036\300}% U+1EC0
+\DeclareTextCompositeCommand{\h}{PU}{\ECIRCUMFLEX}{\9036\302}% U+1EC2
+\DeclareTextCompositeCommand{\~}{PU}{\ECIRCUMFLEX}{\9036\304}% U+1EC4
+\DeclareTextCompositeCommand{\'}{PU}{I}{\80\315}% U+00CD
+\DeclareTextCompositeCommand{\d}{PU}{I}{\9036\312}% U+1ECA
+\DeclareTextCompositeCommand{\`}{PU}{I}{\80\314}% U+00CC
+\DeclareTextCompositeCommand{\h}{PU}{I}{\9036\310}% U+1EC8
+\DeclareTextCompositeCommand{\~}{PU}{I}{\81\050}% U+0128
+\DeclareTextCompositeCommand{\'}{PU}{O}{\80\323}% U+00D3
+\DeclareTextCompositeCommand{\d}{PU}{O}{\9036\314}% U+1ECC
+\DeclareTextCompositeCommand{\`}{PU}{O}{\80\322}% U+00D2
+\DeclareTextCompositeCommand{\h}{PU}{O}{\9036\316}% U+1ECE
+\DeclareTextCompositeCommand{\~}{PU}{O}{\80\325}% U+00D5
+\DeclareTextCompositeCommand{\'}{PU}{\OCIRCUMFLEX}{\9036\320}% U+1ED0
+\DeclareTextCompositeCommand{\d}{PU}{\OCIRCUMFLEX}{\9036\330}% U+1ED8
+\DeclareTextCompositeCommand{\`}{PU}{\OCIRCUMFLEX}{\9036\322}% U+1ED2
+\DeclareTextCompositeCommand{\h}{PU}{\OCIRCUMFLEX}{\9036\324}% U+1ED4
+\DeclareTextCompositeCommand{\~}{PU}{\OCIRCUMFLEX}{\9036\326}% U+1ED6
+\DeclareTextCompositeCommand{\'}{PU}{\OHORN}{\9036\332}% U+1EDA
+\DeclareTextCompositeCommand{\d}{PU}{\OHORN}{\9036\342}% U+1EE2
+\DeclareTextCompositeCommand{\`}{PU}{\OHORN}{\9036\334}% U+1EDC
+\DeclareTextCompositeCommand{\h}{PU}{\OHORN}{\9036\336}% U+1EDE
+\DeclareTextCompositeCommand{\~}{PU}{\OHORN}{\9036\340}% U+1EE0
+\DeclareTextCompositeCommand{\'}{PU}{U}{\80\332}% U+00DA
+\DeclareTextCompositeCommand{\d}{PU}{U}{\9036\344}% U+1EE4
+\DeclareTextCompositeCommand{\`}{PU}{U}{\80\331}% U+00D9
+\DeclareTextCompositeCommand{\h}{PU}{U}{\9036\346}% U+1EE6
+\DeclareTextCompositeCommand{\~}{PU}{U}{\81\150}% U+0168
+\DeclareTextCompositeCommand{\'}{PU}{\UHORN}{\9036\350}% U+1EE8
+\DeclareTextCompositeCommand{\d}{PU}{\UHORN}{\9036\360}% U+1EF0
+\DeclareTextCompositeCommand{\`}{PU}{\UHORN}{\9036\352}% U+1EEA
+\DeclareTextCompositeCommand{\h}{PU}{\UHORN}{\9036\354}% U+1EEC
+\DeclareTextCompositeCommand{\~}{PU}{\UHORN}{\9036\356}% U+1EEE
+\DeclareTextCompositeCommand{\'}{PU}{Y}{\80\335}% U+00DD
+\DeclareTextCompositeCommand{\d}{PU}{Y}{\9036\364}% U+1EF4
+\DeclareTextCompositeCommand{\`}{PU}{Y}{\9036\362}% U+1EF2
+\DeclareTextCompositeCommand{\h}{PU}{Y}{\9036\366}% U+1EF6
+\DeclareTextCompositeCommand{\~}{PU}{Y}{\9036\370}% U+1EF8
+% \end{macrocode}
+% \begin{macrocode}
+%</puvnenc>
+% \end{macrocode}
+%
+% \subsection{PU encoding, additions for Arabi}
+%
+% This file is provided and maintained by Youssef Jabri.
+%
+% \begin{macrocode}
+%<*puarenc>
+% \end{macrocode}
+% \begin{macrocode}
+% U+0621;afii57409;ARABIC LETTER HAMZA
+\DeclareTextCommand{\hamza}{PU}{\86\041}% U+0621
+% U+0622;afii57410;ARABIC LETTER ALEF WITH MADDA ABOVE
+\DeclareTextCommand{\alefmadda}{PU}{\86\042}% U+0622
+% U+0623;afii57411;ARABIC LETTER ALEF WITH HAMZA ABOVE
+\DeclareTextCommand{\alefhamza}{PU}{\86\043}% U+0623
+% U+0624;afii57412;ARABIC LETTER WAW WITH HAMZA ABOVE
+\DeclareTextCommand{\wawhamza}{PU}{\86\044}% U+0624
+% U+0625;afii57413;ARABIC LETTER ALEF WITH HAMZA BELOW
+\DeclareTextCommand{\aleflowerhamza}{PU}{\86\045}% U+0625
+% U+0626;afii57414;ARABIC LETTER YEH WITH HAMZA ABOVE
+\DeclareTextCommand{\yahamza}{PU}{\86\046}% U+0626
+% U+0627;afii57415;ARABIC LETTER ALEF
+\DeclareTextCommand{\alef}{PU}{\86\047}% U+0627
+% U+0628;afii57416;ARABIC LETTER BEH
+\DeclareTextCommand{\baa}{PU}{\86\050}% U+0628
+% U+0629;afii57417;ARABIC LETTER TEH MARBUTA
+\DeclareTextCommand{\T}{PU}{\86\051}% U+0629
+% U+062A;afii57418;ARABIC LETTER TEH
+\DeclareTextCommand{\taa}{PU}{\86\052}% U+062A
+% U+062B;afii57419;ARABIC LETTER THEH
+\DeclareTextCommand{\thaa}{PU}{\86\053}% U+062B
+% U+062C;afii57420;ARABIC LETTER JEEM
+\DeclareTextCommand{\jeem}{PU}{\86\054}% U+062C
+% U+062D;afii57421;ARABIC LETTER HAH
+\DeclareTextCommand{\Haa}{PU}{\86\055}% U+062D
+% U+062E;afii57422;ARABIC LETTER KHAH
+\DeclareTextCommand{\kha}{PU}{\86\056}% U+062E
+% U+062F;afii57423;ARABIC LETTER DAL
+\DeclareTextCommand{\dal}{PU}{\86\057}% U+062F
+% U+0630;afii57424;ARABIC LETTER THAL
+\DeclareTextCommand{\dhal}{PU}{\86\060}% U+0630
+% U+0631;afii57425;ARABIC LETTER REH
+\DeclareTextCommand{\ra}{PU}{\86\061}% U+0631
+% U+0632;afii57426;ARABIC LETTER ZAIN
+\DeclareTextCommand{\zay}{PU}{\86\062}% U+0632
+% U+0633;afii57427;ARABIC LETTER SEEN
+\DeclareTextCommand{\seen}{PU}{\86\063}% U+0633
+% U+0634;afii57428;ARABIC LETTER SHEEN
+\DeclareTextCommand{\sheen}{PU}{\86\064}% U+0634
+% U+0635;afii57429;ARABIC LETTER SAD
+\DeclareTextCommand{\sad}{PU}{\86\065}% U+0635
+% U+0636;afii57430;ARABIC LETTER DAD
+\DeclareTextCommand{\dad}{PU}{\86\066}% U+0636
+% U+0637;afii57431;ARABIC LETTER TAH
+\DeclareTextCommand{\Ta}{PU}{\86\067}% U+0637
+% U+0638;afii57432;ARABIC LETTER ZAH
+\DeclareTextCommand{\za}{PU}{\86\070}% U+0638
+% U+0639;afii57433;ARABIC LETTER AIN
+\DeclareTextCommand{\ayn}{PU}{\86\071}% U+0639
+% U+063A;afii57434;ARABIC LETTER GHAIN
+\DeclareTextCommand{\ghayn}{PU}{\86\072}% U+063A
+% U+0640;afii57440;ARABIC TATWEEL
+\DeclareTextCommand{\tatweel}{PU}{\86\100}% U+0640
+% U+0641;afii57441;ARABIC LETTER FEH
+\DeclareTextCommand{\fa}{PU}{\86\101}% U+0641
+% U+0642;afii57442;ARABIC LETTER QAF
+\DeclareTextCommand{\qaf}{PU}{\86\102}% U+0642
+% U+0643;afii57443;ARABIC LETTER KAF
+\DeclareTextCommand{\kaf}{PU}{\86\103}% U+0643
+% U+0644;afii57444;ARABIC LETTER LAM
+\DeclareTextCommand{\lam}{PU}{\86\104}% U+0644
+% U+0645;afii57445;ARABIC LETTER MEEM
+\DeclareTextCommand{\meem}{PU}{\86\105}% U+0645
+% U+0646;afii57446;ARABIC LETTER NOON
+\DeclareTextCommand{\nun}{PU}{\86\106}% U+0646
+% U+0647;afii57470;ARABIC LETTER HEH
+\DeclareTextCommand{\ha}{PU}{\86\107}% U+0647
+% U+0648;afii57448;ARABIC LETTER WAW
+\DeclareTextCommand{\waw}{PU}{\86\110}% U+0648
+% U+0649;afii57449;ARABIC LETTER ALEF MAKSURA
+\DeclareTextCommand{\alefmaqsura}{PU}{\86\111}% U+0649
+% U+064A;afii57450;ARABIC LETTER YEH
+\DeclareTextCommand{\ya}{PU}{\86\112}% U+064A
+% \end{macrocode}
+% \begin{macrocode}
+% U+064B;afii57451;ARABIC FATHATAN
+\DeclareTextCommand{\nasb}{PU}{\86\113}% U+064B
+% U+064C;afii57452;ARABIC DAMMATAN
+\DeclareTextCommand{\raff}{PU}{\86\114}% U+064C
+% U+064D;afii57453;ARABIC KASRATAN
+\DeclareTextCommand{\jarr}{PU}{\86\115}% U+064D
+% U+064E;afii57454;ARABIC FATHA
+\DeclareTextCommand{\fatha}{PU}{\86\116}% U+064E
+% U+064F;afii57455;ARABIC DAMMA
+\DeclareTextCommand{\damma}{PU}{\86\117}% U+064F
+% U+0650;afii57456;ARABIC KASRA
+\DeclareTextCommand{\kasra}{PU}{\86\120}% U+0650
+% U+0651;afii57457;ARABIC SHADDA
+\DeclareTextCommand{\shadda}{PU}{\86\121}% U+0651
+% U+0652;afii57458;ARABIC SUKUN
+\DeclareTextCommand{\sukun}{PU}{\86\122}% U+0652
+% \end{macrocode}
+% Farsi
+% \begin{macrocode}
+% U+067E ARABIC LETTER PEH; afii57506
+\DeclareTextCommand{\peh}{PU}{\86\176}% U+067E
+% U+0686 ARABIC LETTER TCHEH; afii57507
+\DeclareTextCommand{\tcheh}{PU}{\86\206}% U+0686
+% U+0698 ARABIC LETTER JEH; afii57508
+\DeclareTextCommand{\jeh}{PU}{\86\230}% U+0698
+% U+06A9 ARABIC LETTER KEHEH
+\DeclareTextCommand{\farsikaf}{PU}{\86\251}% U+06A9
+% U+06AF ARABIC LETTER GAF; afii57509
+\DeclareTextCommand{\gaf}{PU}{\86\257}% U+06AF
+% U+06CC ARABIC LETTER FARSI YEH
+\DeclareTextCommand{\farsiya}{PU}{\86\314}% U+06CC
+% \end{macrocode}
+% \begin{macrocode}
+% U+200C ZERO WIDTH NON-JOINER; afii61664
+\DeclareTextCommand{\ZWNJ}{PU}{\9040\014}% U+200C
+% U+200D ZERO WIDTH JOINER; afii301
+\DeclareTextCommand{\textEncodingNoboundary}{PU}{\9040\015}% U+200D
+% \end{macrocode}
+% \begin{macrocode}
+%</puarenc>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*psdextra>
+\Hy@VersionCheck{psdextra.def}
+\newcommand*{\psdmapshortnames}{%
+ \let\MVPlus\textMVPlus
+ \let\MVComma\textMVComma
+ \let\MVMinus\textMVMinus
+ \let\MVPeriod\textMVPeriod
+ \let\MVDivision\textMVDivision
+ \let\MVZero\textMVZero
+ \let\MVOne\textMVOne
+ \let\MVTwo\textMVTwo
+ \let\MVThree\textMVThree
+ \let\MVFour\textMVFour
+ \let\MVFive\textMVFive
+ \let\MVSix\textMVSix
+ \let\MVSeven\textMVSeven
+ \let\MVEight\textMVEight
+ \let\MVNine\textMVNine
+ \let\MVAt\textMVAt
+ \let\copyright\textcopyright
+ \let\twosuperior\texttwosuperior
+ \let\threesuperior\textthreesuperior
+ \let\onesuperior\textonesuperior
+ \let\Thorn\textThorn
+ \let\thorn\textthorn
+ \let\hbar\texthbar
+ \let\hausaB\texthausaB
+ \let\hausaD\texthausaD
+ \let\hausaK\texthausaK
+ \let\barl\textbarl
+ \let\inve\textinve
+ \let\slashc\textslashc
+ \let\scripta\textscripta
+ \let\openo\textopeno
+ \let\rtaild\textrtaild
+ \let\reve\textreve
+ \let\schwa\textschwa
+ \let\niepsilon\textniepsilon
+ \let\revepsilon\textrevepsilon
+ \let\rhookrevepsilon\textrhookrevepsilon
+ \let\scriptg\textscriptg
+ \let\scg\textscg
+ \let\ipagamma\textipagamma
+ \let\babygamma\textbabygamma
+ \let\bari\textbari
+ \let\niiota\textniiota
+ \let\sci\textsci
+ \let\scn\textscn
+ \let\niphi\textniphi
+ \let\longlegr\textlonglegr
+ \let\scr\textscr
+ \let\invscr\textinvscr
+ \let\esh\textesh
+ \let\baru\textbaru
+ \let\niupsilon\textniupsilon
+ \let\scriptv\textscriptv
+ \let\turnv\textturnv
+ \let\turnw\textturnw
+ \let\turny\textturny
+ \let\scy\textscy
+ \let\yogh\textyogh
+ \let\glotstop\textglotstop
+ \let\revglotstop\textrevglotstop
+ \let\invglotstop\textinvglotstop
+ \let\Gamma\textGamma
+ \let\Delta\textDelta
+ \let\Theta\textTheta
+ \let\Lambda\textLambda
+ \let\Xi\textXi
+ \let\Pi\textPi
+ \let\Sigma\textSigma
+ \let\Upsilon\textUpsilon
+ \let\Phi\textPhi
+ \let\Psi\textPsi
+ \let\Omega\textOmega
+ \let\alpha\textalpha
+ \let\beta\textbeta
+ \let\gamma\textgamma
+ \let\delta\textdelta
+ \let\epsilon\textepsilon
+ \let\zeta\textzeta
+ \let\eta\texteta
+ \let\theta\texttheta
+ \let\iota\textiota
+ \let\kappa\textkappa
+ \let\lambda\textlambda
+ \let\mu\textmu
+ \let\mugreek\textmugreek
+ \let\nu\textnu
+ \let\xi\textxi
+ \let\pi\textpi
+ \let\rho\textrho
+ \let\varsigma\textvarsigma
+ \let\sigma\textsigma
+ \let\tau\texttau
+ \let\upsilon\textupsilon
+ \let\phi\textphi
+ \let\chi\textchi
+ \let\psi\textpsi
+ \let\omega\textomega
+ \let\scd\textscd
+ \let\scu\textscu
+ \let\iinferior\textiinferior
+ \let\rinferior\textrinferior
+ \let\uinferior\textuinferior
+ \let\vinferior\textvinferior
+ \let\betainferior\textbetainferior
+ \let\gammainferior\textgammainferior
+ \let\rhoinferior\textrhoinferior
+ \let\phiinferior\textphiinferior
+ \let\chiinferior\textchiinferior
+ \let\barsci\textbarsci
+ \let\barp\textbarp
+ \let\barscu\textbarscu
+ \let\htrtaild\texthtrtaild
+ \let\dagger\textdagger
+ \let\bullet\textbullet
+ \let\hdotfor\texthdotfor
+ \let\prime\textprime
+ \let\second\textsecond
+ \let\third\textthird
+ \let\backprime\textbackprime
+ \let\lefttherefore\textlefttherefore
+ \let\fourth\textfourth
+ \let\diamonddots\textdiamonddots
+ \let\zerosuperior\textzerosuperior
+ \let\isuperior\textisuperior
+ \let\foursuperior\textfoursuperior
+ \let\fivesuperior\textfivesuperior
+ \let\sixsuperior\textsixsuperior
+ \let\sevensuperior\textsevensuperior
+ \let\eightsuperior\texteightsuperior
+ \let\ninesuperior\textninesuperior
+ \let\plussuperior\textplussuperior
+ \let\minussuperior\textminussuperior
+ \let\equalsuperior\textequalsuperior
+ \let\parenleftsuperior\textparenleftsuperior
+ \let\parenrightsuperior\textparenrightsuperior
+ \let\nsuperior\textnsuperior
+ \let\zeroinferior\textzeroinferior
+ \let\oneinferior\textoneinferior
+ \let\twoinferior\texttwoinferior
+ \let\threeinferior\textthreeinferior
+ \let\fourinferior\textfourinferior
+ \let\fiveinferior\textfiveinferior
+ \let\sixinferior\textsixinferior
+ \let\seveninferior\textseveninferior
+ \let\eightinferior\texteightinferior
+ \let\nineinferior\textnineinferior
+ \let\plusinferior\textplusinferior
+ \let\minusinferior\textminusinferior
+ \let\equalsinferior\textequalsinferior
+ \let\parenleftinferior\textparenleftinferior
+ \let\parenrightinferior\textparenrightinferior
+ \let\ainferior\textainferior
+ \let\einferior\texteinferior
+ \let\oinferior\textoinferior
+ \let\xinferior\textxinferior
+ \let\schwainferior\textschwainferior
+ \let\hinferior\texthinferior
+ \let\kinferior\textkinferior
+ \let\linferior\textlinferior
+ \let\minferior\textminferior
+ \let\ninferior\textninferior
+ \let\pinferior\textpinferior
+ \let\sinferior\textsinferior
+ \let\tinferior\texttinferior
+ \let\Deleatur\textDeleatur
+ \let\hslash\texthslash
+ \let\Im\textIm
+ \let\ell\textell
+ \let\wp\textwp
+ \let\Re\textRe
+ \let\mho\textmho
+ \let\riota\textriota
+ \let\Finv\textFinv
+ \let\aleph\textaleph
+ \let\beth\textbeth
+ \let\gimel\textgimel
+ \let\daleth\textdaleth
+ \let\fax\textfax
+ \let\Game\textGame
+ \let\leftarrow\textleftarrow
+ \let\uparrow\textuparrow
+ \let\rightarrow\textrightarrow
+ \let\downarrow\textdownarrow
+ \let\leftrightarrow\textleftrightarrow
+ \let\updownarrow\textupdownarrow
+ \let\nwarrow\textnwarrow
+ \let\nearrow\textnearrow
+ \let\searrow\textsearrow
+ \let\swarrow\textswarrow
+ \let\nleftarrow\textnleftarrow
+ \let\nrightarrow\textnrightarrow
+ \let\twoheadleftarrow\texttwoheadleftarrow
+ \let\ntwoheadleftarrow\textntwoheadleftarrow
+ \let\twoheaduparrow\texttwoheaduparrow
+ \let\twoheadrightarrow\texttwoheadrightarrow
+ \let\ntwoheadrightarrow\textntwoheadrightarrow
+ \let\twoheaddownarrow\texttwoheaddownarrow
+ \let\leftarrowtail\textleftarrowtail
+ \let\rightarrowtail\textrightarrowtail
+ \let\mapsto\textmapsto
+ \let\hookleftarrow\texthookleftarrow
+ \let\hookrightarrow\texthookrightarrow
+ \let\looparrowleft\textlooparrowleft
+ \let\looparrowright\textlooparrowright
+ \let\nleftrightarrow\textnleftrightarrow
+ \let\lightning\textlightning
+ \let\dlsh\textdlsh
+ \let\curvearrowleft\textcurvearrowleft
+ \let\curvearrowright\textcurvearrowright
+ \let\leftharpoonup\textleftharpoonup
+ \let\leftharpoondown\textleftharpoondown
+ \let\upharpoonright\textupharpoonright
+ \let\upharpoonleft\textupharpoonleft
+ \let\rightharpoonup\textrightharpoonup
+ \let\rightharpoondown\textrightharpoondown
+ \let\downharpoonright\textdownharpoonright
+ \let\downharpoonleft\textdownharpoonleft
+ \let\rightleftarrows\textrightleftarrows
+ \let\updownarrows\textupdownarrows
+ \let\leftrightarrows\textleftrightarrows
+ \let\leftleftarrows\textleftleftarrows
+ \let\upuparrows\textupuparrows
+ \let\rightrightarrows\textrightrightarrows
+ \let\downdownarrows\textdowndownarrows
+ \let\leftrightharpoons\textleftrightharpoons
+ \let\rightleftharpoons\textrightleftharpoons
+ \let\nLeftarrow\textnLeftarrow
+ \let\nLeftrightarrow\textnLeftrightarrow
+ \let\nRightarrow\textnRightarrow
+ \let\Leftarrow\textLeftarrow
+ \let\Uparrow\textUparrow
+ \let\Rightarrow\textRightarrow
+ \let\Downarrow\textDownarrow
+ \let\Leftrightarrow\textLeftrightarrow
+ \let\Updownarrow\textUpdownarrow
+ \let\Nwarrow\textNwarrow
+ \let\Nearrow\textNearrow
+ \let\Searrow\textSearrow
+ \let\Swarrow\textSwarrow
+ \let\Lleftarrow\textLleftarrow
+ \let\Rrightarrow\textRrightarrow
+ \let\leftsquigarrow\textleftsquigarrow
+ \let\rightsquigarrow\textrightsquigarrow
+ \let\dashleftarrow\textdashleftarrow
+ \let\dasheduparrow\textdasheduparrow
+ \let\dashrightarrow\textdashrightarrow
+ \let\dasheddownarrow\textdasheddownarrow
+ \let\pointer\textpointer
+ \let\downuparrows\textdownuparrows
+ \let\leftarrowtriangle\textleftarrowtriangle
+ \let\rightarrowtriangle\textrightarrowtriangle
+ \let\leftrightarrowtriangle\textleftrightarrowtriangle
+ \let\forall\textforall
+ \let\complement\textcomplement
+ \let\partial\textpartial
+ \let\exists\textexists
+ \let\nexists\textnexists
+ \let\emptyset\textemptyset
+ \let\triangle\texttriangle
+ \let\nabla\textnabla
+ \let\in\textin
+ \let\notin\textnotin
+ \let\smallin\textsmallin
+ \let\ni\textni
+ \let\notowner\textnotowner
+ \let\smallowns\textsmallowns
+ \let\prod\textprod
+ \let\amalg\textamalg
+ \let\sum\textsum
+ \let\mp\textmp
+ \let\dotplus\textdotplus
+ \let\Divides\textDivides
+ \let\DividesNot\textDividesNot
+ \let\setminus\textsetminus
+ \let\ast\textast
+ \let\circ\textcirc
+ \let\surd\textsurd
+ \let\propto\textpropto
+ \let\infty\textinfty
+ \let\angle\textangle
+ \let\measuredangle\textmeasuredangle
+ \let\sphericalangle\textsphericalangle
+ \let\mid\textmid
+ \let\nmid\textnmid
+ \let\parallel\textparallel
+ \let\nparallel\textnparallel
+ \let\wedge\textwedge
+ \let\owedge\textowedge
+ \let\vee\textvee
+ \let\ovee\textovee
+ \let\cap\textcap
+ \let\cup\textcup
+ \let\int\textint
+ \let\iint\textiint
+ \let\iiint\textiiint
+ \let\oint\textoint
+ \let\oiint\textoiint
+ \let\ointclockwise\textointclockwise
+ \let\ointctrclockwise\textointctrclockwise
+ \let\therefore\texttherefore
+ \let\because\textbecause
+ \let\vdotdot\textvdotdot
+ \let\squaredots\textsquaredots
+ \let\dotminus\textdotminus
+ \let\eqcolon\texteqcolon
+ \let\sim\textsim
+ \let\backsim\textbacksim
+ \let\nbacksim\textnbacksim
+ \let\wr\textwr
+ \let\nsim\textnsim
+ \let\eqsim\texteqsim
+ \let\neqsim\textneqsim
+ \let\simeq\textsimeq
+ \let\nsimeq\textnsimeq
+ \let\cong\textcong
+ \let\ncong\textncong
+ \let\approx\textapprox
+ \let\napprox\textnapprox
+ \let\approxeq\textapproxeq
+ \let\napproxeq\textnapproxeq
+ \let\triplesim\texttriplesim
+ \let\ntriplesim\textntriplesim
+ \let\backcong\textbackcong
+ \let\nbackcong\textnbackcong
+ \let\asymp\textasymp
+ \let\nasymp\textnasymp
+ \let\Bumpeq\textBumpeq
+ \let\nBumpeq\textnBumpeq
+ \let\bumpeq\textbumpeq
+ \let\nbumpeq\textnbumpeq
+ \let\doteq\textdoteq
+ \let\ndoteq\textndoteq
+ \let\doteqdot\textdoteqdot
+ \let\nDoteq\textnDoteq
+ \let\fallingdoteq\textfallingdoteq
+ \let\nfallingdoteq\textnfallingdoteq
+ \let\risingdoteq\textrisingdoteq
+ \let\nrisingdoteq\textnrisingdoteq
+ \let\colonequals\textcolonequals
+ \let\equalscolon\textequalscolon
+ \let\eqcirc\texteqcirc
+ \let\neqcirc\textneqcirc
+ \let\circeq\textcirceq
+ \let\ncirceq\textncirceq
+ \let\hateq\texthateq
+ \let\nhateq\textnhateq
+ \let\triangleeq\texttriangleeq
+ \let\neq\textneq
+ \let\ne\textne
+ \let\equiv\textequiv
+ \let\nequiv\textnequiv
+ \let\leq\textleq
+ \let\le\textle
+ \let\geq\textgeq
+ \let\ge\textge
+ \let\leqq\textleqq
+ \let\nleqq\textnleqq
+ \let\geqq\textgeqq
+ \let\ngeqq\textngeqq
+ \let\lneqq\textlneqq
+ \let\gneqq\textgneqq
+ \let\ll\textll
+ \let\nll\textnll
+ \let\gg\textgg
+ \let\ngg\textngg
+ \let\between\textbetween
+ \let\nless\textnless
+ \let\ngtr\textngtr
+ \let\nleq\textnleq
+ \let\ngeq\textngeq
+ \let\lesssim\textlesssim
+ \let\gtrsim\textgtrsim
+ \let\nlesssim\textnlesssim
+ \let\ngtrsim\textngtrsim
+ \let\lessgtr\textlessgtr
+ \let\gtrless\textgtrless
+ \let\ngtrless\textngtrless
+ \let\nlessgtr\textnlessgtr
+ \let\prec\textprec
+ \let\succ\textsucc
+ \let\preccurlyeq\textpreccurlyeq
+ \let\succcurlyeq\textsucccurlyeq
+ \let\precsim\textprecsim
+ \let\nprecsim\textnprecsim
+ \let\succsim\textsuccsim
+ \let\nsuccsim\textnsuccsim
+ \let\nprec\textnprec
+ \let\nsucc\textnsucc
+ \let\subset\textsubset
+ \let\supset\textsupset
+ \let\nsubset\textnsubset
+ \let\nsupset\textnsupset
+ \let\subseteq\textsubseteq
+ \let\supseteq\textsupseteq
+ \let\nsubseteq\textnsubseteq
+ \let\nsupseteq\textnsupseteq
+ \let\subsetneq\textsubsetneq
+ \let\supsetneq\textsupsetneq
+ \let\cupdot\textcupdot
+ \let\cupplus\textcupplus
+ \let\sqsubset\textsqsubset
+ \let\nsqsubset\textnsqsubset
+ \let\sqsupset\textsqsupset
+ \let\nsqsupset\textnsqsupset
+ \let\sqsubseteq\textsqsubseteq
+ \let\nsqsubseteq\textnsqsubseteq
+ \let\sqsupseteq\textsqsupseteq
+ \let\nsqsupseteq\textnsqsupseteq
+ \let\sqcap\textsqcap
+ \let\sqcup\textsqcup
+ \let\oplus\textoplus
+ \let\ominus\textominus
+ \let\otimes\textotimes
+ \let\oslash\textoslash
+ \let\odot\textodot
+ \let\circledcirc\textcircledcirc
+ \let\circledast\textcircledast
+ \let\circleddash\textcircleddash
+ \let\boxplus\textboxplus
+ \let\boxminus\textboxminus
+ \let\boxtimes\textboxtimes
+ \let\boxdot\textboxdot
+ \let\vdash\textvdash
+ \let\dashv\textdashv
+ \let\ndashv\textndashv
+ \let\top\texttop
+ \let\ndownvdash\textndownvdash
+ \let\bot\textbot
+ \let\nupvdash\textnupvdash
+ \let\vDash\textvDash
+ \let\Vdash\textVdash
+ \let\Vvdash\textVvdash
+ \let\nVvash\textnVvash
+ \let\VDash\textVDash
+ \let\nvdash\textnvdash
+ \let\nvDash\textnvDash
+ \let\nVdash\textnVdash
+ \let\nVDash\textnVDash
+ \let\lhd\textlhd
+ \let\rhd\textrhd
+ \let\unlhd\textunlhd
+ \let\unrhd\textunrhd
+ \let\multimapdotbothA\textmultimapdotbothA
+ \let\multimapdotbothB\textmultimapdotbothB
+ \let\multimap\textmultimap
+ \let\veebar\textveebar
+ \let\barwedge\textbarwedge
+ \let\star\textstar
+ \let\divideontimes\textdivideontimes
+ \let\bowtie\textbowtie
+ \let\ltimes\textltimes
+ \let\rtimes\textrtimes
+ \let\leftthreetimes\textleftthreetimes
+ \let\rightthreetimes\textrightthreetimes
+ \let\backsimeq\textbacksimeq
+ \let\nbacksimeq\textnbacksimeq
+ \let\curlyvee\textcurlyvee
+ \let\curlywedge\textcurlywedge
+ \let\Subset\textSubset
+ \let\nSubset\textnSubset
+ \let\Supset\textSupset
+ \let\nSupset\textnSupset
+ \let\Cap\textCap
+ \let\Cup\textCup
+ \let\pitchfork\textpitchfork
+ \let\lessdot\textlessdot
+ \let\gtrdot\textgtrdot
+ \let\lll\textlll
+ \let\ggg\textggg
+ \let\lesseqgtr\textlesseqgtr
+ \let\gtreqless\textgtreqless
+ \let\curlyeqprec\textcurlyeqprec
+ \let\ncurlyeqprec\textncurlyeqprec
+ \let\curlyeqsucc\textcurlyeqsucc
+ \let\ncurlyeqsucc\textncurlyeqsucc
+ \let\npreccurlyeq\textnpreccurlyeq
+ \let\nsucccurlyeq\textnsucccurlyeq
+ \let\nqsubseteq\textnqsubseteq
+ \let\nqsupseteq\textnqsupseteq
+ \let\sqsubsetneq\textsqsubsetneq
+ \let\sqsupsetneq\textsqsupsetneq
+ \let\lnsim\textlnsim
+ \let\gnsim\textgnsim
+ \let\precnsim\textprecnsim
+ \let\succnsim\textsuccnsim
+ \let\ntriangleleft\textntriangleleft
+ \let\ntriangleright\textntriangleright
+ \let\ntrianglelefteq\textntrianglelefteq
+ \let\ntrianglerighteq\textntrianglerighteq
+ \let\vdots\textvdots
+ \let\cdots\textcdots
+ \let\udots\textudots
+ \let\ddots\textddots
+ \let\barin\textbarin
+ \let\diameter\textdiameter
+ \let\backneg\textbackneg
+ \let\wasylozenge\textwasylozenge
+ \let\invbackneg\textinvbackneg
+ \let\clock\textclock
+ \let\ulcorner\textulcorner
+ \let\urcorner\texturcorner
+ \let\llcorner\textllcorner
+ \let\lrcorner\textlrcorner
+ \let\frown\textfrown
+ \let\smile\textsmile
+ \let\Keyboard\textKeyboard
+ \let\langle\textlangle
+ \let\rangle\textrangle
+ \let\APLinv\textAPLinv
+ \let\Tumbler\textTumbler
+ \let\notslash\textnotslash
+ \let\notbackslash\textnotbackslash
+ \let\boxbackslash\textboxbackslash
+ \let\APLleftarrowbox\textAPLleftarrowbox
+ \let\APLrightarrowbox\textAPLrightarrowbox
+ \let\APLuparrowbox\textAPLuparrowbox
+ \let\APLdownarrowbox\textAPLdownarrowbox
+ \let\APLinput\textAPLinput
+ \let\Request\textRequest
+ \let\Beam\textBeam
+ \let\hexagon\texthexagon
+ \let\APLbox\textAPLbox
+ \let\ForwardToIndex\textForwardToIndex
+ \let\RewindToIndex\textRewindToIndex
+ \let\bbslash\textbbslash
+ \let\CircledA\textCircledA
+ \let\CleaningF\textCleaningF
+ \let\CleaningFF\textCleaningFF
+ \let\CleaningP\textCleaningP
+ \let\CleaningPP\textCleaningPP
+ \let\CuttingLine\textCuttingLine
+ \let\UParrow\textUParrow
+ \let\bigtriangleup\textbigtriangleup
+ \let\Forward\textForward
+ \let\triangleright\texttriangleright
+ \let\RHD\textRHD
+ \let\DOWNarrow\textDOWNarrow
+ \let\bigtriangledown\textbigtriangledown
+ \let\Rewind\textRewind
+ \let\triangleleft\texttriangleleft
+ \let\LHD\textLHD
+ \let\diamond\textdiamond
+ \let\lozenge\textlozenge
+ \let\LEFTCIRCLE\textLEFTCIRCLE
+ \let\RIGHTCIRCLE\textRIGHTCIRCLE
+ \let\openbullet\textopenbullet
+ \let\boxbar\textboxbar
+ \let\bigcircle\textbigcircle
+ \let\Cloud\textCloud
+ \let\FiveStar\textFiveStar
+ \let\FiveStarOpen\textFiveStarOpen
+ \let\Phone\textPhone
+ \let\boxempty\textboxempty
+ \let\Checkedbox\textCheckedbox
+ \let\Crossedbox\textCrossedbox
+ \let\Coffeecup\textCoffeecup
+ \let\HandCuffLeft\textHandCuffLeft
+ \let\HandCuffRight\textHandCuffRight
+ \let\HandLeft\textHandLeft
+ \let\HandRight\textHandRight
+ \let\Radioactivity\textRadioactivity
+ \let\Biohazard\textBiohazard
+ \let\Ankh\textAnkh
+ \let\YinYang\textYinYang
+ \let\frownie\textfrownie
+ \let\smiley\textsmiley
+ \let\blacksmiley\textblacksmiley
+ \let\sun\textsun
+ \let\leftmoon\textleftmoon
+ \let\rightmoon\textrightmoon
+ \let\mercury\textmercury
+ \let\earth\textearth
+ \let\male\textmale
+ \let\jupiter\textjupiter
+ \let\saturn\textsaturn
+ \let\uranus\texturanus
+ \let\neptune\textneptune
+ \let\pluto\textpluto
+ \let\aries\textaries
+ \let\taurus\texttaurus
+ \let\gemini\textgemini
+ \let\cancer\textcancer
+ \let\leo\textleo
+ \let\virgo\textvirgo
+ \let\libra\textlibra
+ \let\scorpio\textscorpio
+ \let\sagittarius\textsagittarius
+ \let\capricornus\textcapricornus
+ \let\aquarius\textaquarius
+ \let\pisces\textpisces
+ \let\quarternote\textquarternote
+ \let\twonotes\texttwonotes
+ \let\sixteenthnote\textsixteenthnote
+ \let\flat\textflat
+ \let\natural\textnatural
+ \let\sharp\textsharp
+ \let\recycle\textrecycle
+ \let\Wheelchair\textWheelchair
+ \let\Flag\textFlag
+ \let\MineSign\textMineSign
+ \let\dsmilitary\textdsmilitary
+ \let\dsmedical\textdsmedical
+ \let\dsjuridical\textdsjuridical
+ \let\dschemical\textdschemical
+ \let\dsbiological\textdsbiological
+ \let\dscommercial\textdscommercial
+ \let\manstar\textmanstar
+ \let\danger\textdanger
+ \let\FemaleFemale\textFemaleFemale
+ \let\MaleMale\textMaleMale
+ \let\FemaleMale\textFemaleMale
+ \let\Hermaphrodite\textHermaphrodite
+ \let\Neutral\textNeutral
+ \let\hexstar\texthexstar
+ \let\SunCload\textSunCload
+ \let\Rain\textRain
+ \let\noway\textnoway
+ \let\Mountain\textMountain
+ \let\Tent\textTent
+ \let\ScissorRight\textScissorRight
+ \let\ScissorRightBrokenTop\textScissorRightBrokenTop
+ \let\ScissorHollowRight\textScissorHollowRight
+ \let\PhoneHandset\textPhoneHandset
+ \let\Tape\textTape
+ \let\Plane\textPlane
+ \let\Envelope\textEnvelope
+ \let\Peace\textPeace
+ \let\WritingHand\textWritingHand
+ \let\PencilRightDown\textPencilRightDown
+ \let\PencilRight\textPencilRight
+ \let\PencilRightUp\textPencilRightUp
+ \let\NibRight\textNibRight
+ \let\NibSolidRight\textNibSolidRight
+ \let\Checkmark\textCheckmark
+ \let\CheckmarkBold\textCheckmarkBold
+ \let\XSolid\textXSolid
+ \let\XSolidBold\textXSolidBold
+ \let\XSolidBrush\textXSolidBrush
+ \let\PlusOutline\textPlusOutline
+ \let\Plus\textPlus
+ \let\PlusThinCenterOpen\textPlusThinCenterOpen
+ \let\PlusCenterOpen\textPlusCenterOpen
+ \let\Cross\textCross
+ \let\CrossOpenShadow\textCrossOpenShadow
+ \let\CrossOutline\textCrossOutline
+ \let\CrossMaltese\textCrossMaltese
+ \let\DavidStar\textDavidStar
+ \let\FourAsterisk\textFourAsterisk
+ \let\JackStar\textJackStar
+ \let\JackStarBold\textJackStarBold
+ \let\ClowerTips\textClowerTips
+ \let\FourStar\textFourStar
+ \let\FourStarOpen\textFourStarOpen
+ \let\FiveStarOpenCircled\textFiveStarOpenCircled
+ \let\FiveStarCenterOpen\textFiveStarCenterOpen
+ \let\FiveStarOpenDotted\textFiveStarOpenDotted
+ \let\FiveStarOutline\textFiveStarOutline
+ \let\FiveStarOutlineHeavy\textFiveStarOutlineHeavy
+ \let\FiveStarConvex\textFiveStarConvex
+ \let\FiveStarShadow\textFiveStarShadow
+ \let\AsteriskBold\textAsteriskBold
+ \let\AsteriskCenterOpen\textAsteriskCenterOpen
+ \let\EightStarTaper\textEightStarTaper
+ \let\EightStarConvex\textEightStarConvex
+ \let\SixStar\textSixStar
+ \let\EightStar\textEightStar
+ \let\EightStarBold\textEightStarBold
+ \let\TwelveStar\textTwelveStar
+ \let\SixteenStarLight\textSixteenStarLight
+ \let\SixFlowerPetalRemoved\textSixFlowerPetalRemoved
+ \let\SixFlowerOpenCenter\textSixFlowerOpenCenter
+ \let\Asterisk\textAsterisk
+ \let\SixFlowerAlternate\textSixFlowerAlternate
+ \let\FiveFlowerPetal\textFiveFlowerPetal
+ \let\FiveFlowerOpen\textFiveFlowerOpen
+ \let\EightFlowerPetal\textEightFlowerPetal
+ \let\SunshineOpenCircled\textSunshineOpenCircled
+ \let\SixFlowerAltPetal\textSixFlowerAltPetal
+ \let\SnowflakeChevron\textSnowflakeChevron
+ \let\Snowflake\textSnowflake
+ \let\SnowflakeChevronBold\textSnowflakeChevronBold
+ \let\Sparkle\textSparkle
+ \let\SparkleBold\textSparkleBold
+ \let\AsteriskRoundedEnds\textAsteriskRoundedEnds
+ \let\EightFlowerPetalRemoved\textEightFlowerPetalRemoved
+ \let\EightAsterisk\textEightAsterisk
+ \let\CircleShadow\textCircleShadow
+ \let\SquareShadowBottomRight\textSquareShadowBottomRight
+ \let\SquareTopRight\textSquareTopRight
+ \let\SquareCastShadowBottomRight\textSquareCastShadowBottomRight
+ \let\SquareCastShadowTopRight\textSquareCastShadowTopRight
+ \let\DiamandSolid\textDiamandSolid
+ \let\RectangleThin\textRectangleThin
+ \let\Rectangle\textRectangle
+ \let\RectangleBold\textRectangleBold
+ \let\perp\textperp
+ \let\notperp\textnotperp
+ \let\veedot\textveedot
+ \let\wedgedot\textwedgedot
+ \let\leftspoon\textleftspoon
+ \let\lbrackdbl\textlbrackdbl
+ \let\rbrackdbl\textrbrackdbl
+ \let\circlearrowleft\textcirclearrowleft
+ \let\circlearrowright\textcirclearrowright
+ \let\longleftarrow\textlongleftarrow
+ \let\longrightarrow\textlongrightarrow
+ \let\longleftrightarrow\textlongleftrightarrow
+ \let\Longleftarrow\textLongleftarrow
+ \let\Longrightarrow\textLongrightarrow
+ \let\Longleftrightarrow\textLongleftrightarrow
+ \let\longmapsto\textlongmapsto
+ \let\Longmapsfrom\textLongmapsfrom
+ \let\Longmapsto\textLongmapsto
+ \let\nwsearrow\textnwsearrow
+ \let\neswarrow\textneswarrow
+ \let\lhooknwarrow\textlhooknwarrow
+ \let\rhooknearrow\textrhooknearrow
+ \let\lhooksearrow\textlhooksearrow
+ \let\rhookswarrow\textrhookswarrow
+ \let\leadsto\textleadsto
+ \let\rcurvearrowne\textrcurvearrowne
+ \let\lcurvearrowse\textlcurvearrowse
+ \let\lcurvearrowsw\textlcurvearrowsw
+ \let\rcurvearrowse\textrcurvearrowse
+ \let\lcurvearrowdown\textlcurvearrowdown
+ \let\rcurvearrowdown\textrcurvearrowdown
+ \let\rcurvearrowleft\textrcurvearrowleft
+ \let\rcurvearrowright\textrcurvearrowright
+ \let\leftrightharpoon\textleftrightharpoon
+ \let\rightleftharpoon\textrightleftharpoon
+ \let\updownharpoonrightleft\textupdownharpoonrightleft
+ \let\updownharpoonleftright\textupdownharpoonleftright
+ \let\leftleftharpoons\textleftleftharpoons
+ \let\upupharpoons\textupupharpoons
+ \let\rightrightharpoons\textrightrightharpoons
+ \let\downdownharpoons\textdowndownharpoons
+ \let\leftbarharpoon\textleftbarharpoon
+ \let\barleftharpoon\textbarleftharpoon
+ \let\rightbarharpoon\textrightbarharpoon
+ \let\barrightharpoon\textbarrightharpoon
+ \let\updownharpoons\textupdownharpoons
+ \let\downupharpoons\textdownupharpoons
+ \let\moo\textmoo
+ \let\llparenthesis\textllparenthesis
+ \let\rrparenthesis\textrrparenthesis
+ \let\invdiameter\textinvdiameter
+ \let\obar\textobar
+ \let\obslash\textobslash
+ \let\obot\textobot
+ \let\NoChemicalCleaning\textNoChemicalCleaning
+ \let\olessthan\textolessthan
+ \let\ogreaterthan\textogreaterthan
+ \let\boxslash\textboxslash
+ \let\boxbslash\textboxbslash
+ \let\boxast\textboxast
+ \let\boxcircle\textboxcircle
+ \let\boxbox\textboxbox
+ \let\Valve\textValve
+ \let\multimapboth\textmultimapboth
+ \let\shuffle\textshuffle
+ \let\uplus\textuplus
+ \let\bigdoublewedge\textbigdoublewedge
+ \let\bigdoublevee\textbigdoublevee
+ \let\Join\textJoin
+ \let\fatsemi\textfatsemi
+ \let\circplus\textcircplus
+ \let\minusdot\textminusdot
+ \let\dottimes\textdottimes
+ \let\dtimes\textdtimes
+ \let\odiv\textodiv
+ \let\invneg\textinvneg
+ \let\sqdoublecap\textsqdoublecap
+ \let\capdot\textcapdot
+ \let\sqdoublecup\textsqdoublecup
+ \let\doublewedge\textdoublewedge
+ \let\doublevee\textdoublevee
+ \let\doublebarwedge\textdoublebarwedge
+ \let\veedoublebar\textveedoublebar
+ \let\eqdot\texteqdot
+ \let\neqdot\textneqdot
+ \let\coloncolonequals\textcoloncolonequals
+ \let\leqslant\textleqslant
+ \let\nleqslant\textnleqslant
+ \let\geqslant\textgeqslant
+ \let\ngeqslant\textngeqslant
+ \let\lessapprox\textlessapprox
+ \let\nlessapprox\textnlessapprox
+ \let\gtrapprox\textgtrapprox
+ \let\ngtrapprox\textngtrapprox
+ \let\lneq\textlneq
+ \let\gneq\textgneq
+ \let\lnapprox\textlnapprox
+ \let\gnapprox\textgnapprox
+ \let\lesseqqgtr\textlesseqqgtr
+ \let\gtreqqless\textgtreqqless
+ \let\eqslantless\texteqslantless
+ \let\eqslantgtr\texteqslantgtr
+ \let\leftslice\textleftslice
+ \let\rightslice\textrightslice
+ \let\preceq\textpreceq
+ \let\npreceq\textnpreceq
+ \let\succeq\textsucceq
+ \let\nsucceq\textnsucceq
+ \let\precneq\textprecneq
+ \let\succneq\textsuccneq
+ \let\preceqq\textpreceqq
+ \let\npreceqq\textnpreceqq
+ \let\succeqq\textsucceqq
+ \let\nsucceqq\textnsucceqq
+ \let\precneqq\textprecneqq
+ \let\succneqq\textsuccneqq
+ \let\precapprox\textprecapprox
+ \let\nprecapprox\textnprecapprox
+ \let\succapprox\textsuccapprox
+ \let\nsuccapprox\textnsuccapprox
+ \let\precnapprox\textprecnapprox
+ \let\succnapprox\textsuccnapprox
+ \let\subseteqq\textsubseteqq
+ \let\nsubseteqq\textnsubseteqq
+ \let\supseteqq\textsupseteqq
+ \let\nsupseteqq\textnsupseteqq
+ \let\dashV\textdashV
+ \let\ndashV\textndashV
+ \let\Dashv\textDashv
+ \let\nDashv\textnDashv
+ \let\DashV\textDashV
+ \let\nDashV\textnDashV
+ \let\downmodels\textdownmodels
+ \let\ndownmodels\textndownmodels
+ \let\upmodels\textupmodels
+ \let\nupmodels\textnupmodels
+ \let\upspoon\textupspoon
+ \let\interleave\textinterleave
+ \let\sslash\textsslash
+ \let\pentagon\textpentagon
+ \let\varhexagon\textvarhexagon
+ \let\jinferior\textjinferior
+ \let\slashdiv\textslashdiv
+ \let\fivedots\textfivedots
+ \let\oo\textoo
+ \let\GaPa\textGaPa
+ \let\HaPa\textHaPa
+ \let\ViPa\textViPa
+ \let\AcPa\textAcPa
+ \let\SePa\textSePa
+ \let\ZwPa\textZwPa
+ \let\fullnote\textfullnote
+ \let\halfnote\texthalfnote
+ \let\Vier\textVier
+ \let\Acht\textAcht
+ \let\Sech\textSech
+ \let\Zwdr\textZwdr
+ \let\Mundus\textMundus
+ \let\Moon\textMoon
+ \let\ManFace\textManFace
+ \let\WomanFace\textWomanFace
+ \let\Fax\textFax
+ \let\Fire\textFire
+ \let\Bicycle\textBicycle
+ \let\Gentsroom\textGentsroom
+ \let\Ladiesroom\textLadiesroom
+ \let\ccnc\textccnc
+ \let\ccsa\textccsa
+ \let\Info\textInfo
+ \let\CESign\textCESign
+ \let\neg\textneg
+ \let\times\texttimes
+ \let\div\textdiv
+ \let\pm\textpm
+ \let\cdot\textcdot
+}% \psdmapshortnames
+\newcommand*{\psdaliasnames}{%
+ \let\epsdice\HyPsd@DieFace
+ \let\fcdice\HyPsd@DieFace
+ \let\MoonPha\HyPsd@MoonPha
+ \let\mathdollar\textdollar
+ \let\EyesDollar\textdollar
+ \let\binampersand\textampersand
+ \let\with\textampersand
+ \let\mathunderscore\textunderscore
+ \let\textvertline\textbar
+ \let\mathsterling\textsterling
+ \let\pounds\textsterling
+ \let\brokenvert\textbrokenbar
+ \let\mathsection\textsection
+ \let\S\textsection
+ \let\mathparagraph\textparagraph
+ \let\MultiplicationDot\textperiodcentered
+ \let\Squaredot\textperiodcentered
+ \let\vartimes\textmultiply
+ \let\MVMultiplication\textmultiply
+ \let\eth\dh
+ \let\crossd\textcrd
+ \let\textbard\textcrd
+ \let\bard\textcrd
+ \let\textcrh\texthbar
+ \let\crossh\texthbar
+ \let\planck\texthbar
+ \let\eng\ng
+ \let\engma\ng
+ \let\crossb\textcrb
+ \let\textbarb\textcrb
+ \let\barb\textcrb
+ \let\Florin\textflorin
+ \let\hv\texthvlig
+ \let\hausak\texthtk
+ \let\crossnilambda\textcrlambda
+ \let\barlambda\textcrlambda
+ \let\lambdabar\textcrlambda
+ \let\lambdaslash\textcrlambda
+ \let\textnrleg\textPUnrleg
+ \let\textpipevar\textpipe
+ \let\textdoublepipevar\textdoublepipe
+ \let\textdoublebarpipevar\textdoublebarpipe
+ \let\textcrg\textgslash
+ \let\textdblig\textPUdblig
+ \let\textqplig\textPUqplig
+ \let\textcentoldstyle\textslashc
+ \let\textbarc\textslashc
+ \let\inva\textturna
+ \let\vara\textscripta
+ \let\invscripta\textturnscripta
+ \let\rotvara\textturnscripta
+ \let\hookb\texthtb
+ \let\hausab\texthtb
+ \let\varopeno\textopeno
+ \let\curlyc\textctc
+ \let\taild\textrtaild
+ \let\hookd\texthtd
+ \let\hausad\texthtd
+ \let\er\textrhookschwa
+ \let\epsi\textniepsilon
+ \let\hookrevepsilon\textrhookrevepsilon
+ \let\closedrevepsilon\textcloserevepsilon
+ \let\barj\textbardotlessj
+ \let\hookg\texthtg
+ \let\varg\textscriptg
+ \let\vod\textipagamma
+ \let\invh\textturnh
+ \let\udesc\textturnh
+ \let\hookh\texthth
+ \let\voicedh\texthth
+ \let\hookheng\texththeng
+ \let\ibar\textbari
+ \let\vari\textniiota
+ \let\tildel\textltilde
+ \let\latfric\textbeltl
+ \let\taill\textrtaill
+ \let\lz\textlyoghlig
+ \let\invm\textturnm
+ \let\rotm\textturnm
+ \let\legm\textturnmrleg
+ \let\labdentalnas\textltailm
+ \let\emgma\textltailm
+ \let\nj\textltailn
+ \let\enya\textltailn
+ \let\tailn\textrtailn
+ \let\closedniomega\textcloseomega
+ \let\varomega\textcloseomega
+ \let\invr\textturnr
+ \let\rotr\textturnr
+ \let\invlegr\textturnlonglegr
+ \let\tailinvr\textturnrrtail
+ \let\legr\textlonglegr
+ \let\tailr\textrtailr
+ \let\flapr\textfishhookr
+ \let\flap\textfishhookr
+ \let\tails\textrtails
+ \let\curlyesh\textctesh
+ \let\clickt\textturnt
+ \let\tailt\textrtailt
+ \let\ubar\textbaru
+ \let\rotOmega\textniupsilon
+ \let\invv\textturnv
+ \let\pwedge\textturnv
+ \let\invw\textturnw
+ \let\rotw\textturnw
+ \let\invy\textturny
+ \let\roty\textturny
+ \let\tailz\textrtailz
+ \let\curlyz\textctz
+ \let\curlyyogh\textctyogh
+ \let\ejective\textglotstop
+ \let\glottal\textglotstop
+ \let\reveject\textrevglotstop
+ \let\clickc\textstretchc
+ \let\textstretchcvar\textstretchc
+ \let\clickb\textbullseye
+ \let\textObullseye\textbullseye
+ \let\textctjvar\textctj
+ \let\textturnsck\textturnk
+ \let\dz\textdzlig
+ \let\tesh\textteshlig
+ \let\digamma\textdigammagreek
+ \let\hardsign\cyrhrdsn
+ \let\softsign\cyrsftsn
+ \let\hebsin\hebshin
+ \let\textsck\textPUsck
+ \let\textscm\textPUscm
+ \let\textscp\textPUscp
+ \let\textrevscr\textPUrevscr
+ \let\textrhooka\textPUrhooka
+ \let\textrhooke\textPUrhooke
+ \let\textrhookepsilon\textPUrhookepsilon
+ \let\textrhookopeno\textPUrhookopeno
+ \let\textdoublevertline\textbardbl
+ \let\dag\textdagger
+ \let\ddagger\textdaggerdbl
+ \let\ddag\textdaggerdbl
+ \let\mathellipsis\textellipsis
+ \let\EurDig\texteuro
+ \let\EURdig\texteuro
+ \let\EurHv\texteuro
+ \let\EURhv\texteuro
+ \let\EurCr\texteuro
+ \let\EURcr\texteuro
+ \let\EurTm\texteuro
+ \let\EURtm\texteuro
+ \let\Eur\texteuro
+ \let\Denarius\textDeleatur
+ \let\agemO\textmho
+ \let\EstimatedSign\textestimated
+ \let\Ecommerce\textestimated
+ \let\bindnasrepma\textinvamp
+ \let\parr\textinvamp
+ \let\MVRightArrow\textrightarrow
+ \let\MVRightarrow\textrightarrow
+ \let\MVArrowDown\textdownarrow
+ \let\Force\textdownarrow
+ \let\textglobrise\textnearrow
+ \let\textglobfall\textsearrow
+ \let\Lightning\textlightning
+ \let\Conclusion\textRightarrow
+ \let\dashedleftarrow\textdashleftarrow
+ \let\dashedrightarrow\textdashrightarrow
+ \let\varnothing\textemptyset
+ \let\owns\textni
+ \let\notni\textnotowner
+ \let\varprop\textpropto
+ \let\varangle\textsphericalangle
+ \let\Anglesign\textsphericalangle
+ \let\AngleSign\textsphericalangle
+ \let\notdivides\textnmid
+ \let\varowedge\textowedge
+ \let\varovee\textovee
+ \let\varint\textint
+ \let\varoint\textoint
+ \let\downtherefore\textbecause
+ \let\textdotdiv\textdotminus
+ \let\AC\textsim
+ \let\wreath\textwr
+ \let\nthickapprox\textnapprox
+ \let\VHF\texttriplesim
+ \let\notasymp\textnasymp
+ \let\Doteq\textdoteqdot
+ \let\corresponds\texthateq
+ \let\Corresponds\texthateq
+ \let\nequal\textneq
+ \let\Congruent\textequiv
+ \let\NotCongruent\textnequiv
+ \let\notequiv\textnequiv
+ \let\LessOrEqual\textleq
+ \let\LargerOrEqual\textgeq
+ \let\apprle\textlesssim
+ \let\apprge\textgtrsim
+ \let\varoplus\textoplus
+ \let\varominus\textominus
+ \let\varotimes\textotimes
+ \let\varoslash\textoslash
+ \let\varodot\textodot
+ \let\ocirc\textcircledcirc
+ \let\varocircle\textcircledcirc
+ \let\varoast\textcircledast
+ \let\oasterisk\textcircledast
+ \let\rightvdash\textvdash
+ \let\leftvdash\textdashv
+ \let\nleftvdash\textndashv
+ \let\downvdash\texttop
+ \let\upvdash\textbot
+ \let\nperp\textnupvdash
+ \let\models\textvDash
+ \let\rightmodels\textvDash
+ \let\rightVdash\textVdash
+ \let\rightModels\textVDash
+ \let\nrightvdash\textnvdash
+ \let\nrightmodels\textnvDash
+ \let\nmodels\textnvDash
+ \let\nrightVdash\textnVdash
+ \let\nrightModels\textnVDash
+ \let\lessclosed\textlhd
+ \let\gtrclosed\textrhd
+ \let\leqclosed\textunlhd
+ \let\trianglelefteq\textunlhd
+ \let\geqclosed\textunrhd
+ \let\trianglerighteq\textunrhd
+ \let\Bowtie\textbowtie
+ \let\varcurlyvee\textcurlyvee
+ \let\varcurlywedge\textcurlywedge
+ \let\doublecap\textCap
+ \let\doublecup\textCup
+ \let\varsqsubsetneq\textsqsubsetneq
+ \let\varsqsupsetneq\textsqsupsetneq
+ \let\nlessclosed\textntriangleleft
+ \let\ngtrclosed\textntriangleright
+ \let\Clocklogo\textclock
+ \let\ClockLogo\textclock
+ \let\baro\textstmaryrdbaro
+ \let\varparallelinv\textbbslash
+ \let\CleaningA\textCircledA
+ \let\Kutline\textCuttingLine
+ \let\CutLine\textCuttingLine
+ \let\Cutline\textCuttingLine
+ \let\MoveUp\textUParrow
+ \let\APLup\textbigtriangleup
+ \let\Bleech\textbigtriangleup
+ \let\MoveDown\textDOWNarrow
+ \let\APLdown\textbigtriangledown
+ \let\Diamond\textdiamond
+ \let\varbigcirc\textbigcircle
+ \let\Telefon\textPhone
+ \let\Box\textboxempty
+ \let\CheckedBox\textCheckedbox
+ \let\XBox\textCrossedbox
+ \let\CrossedBox\textCrossedbox
+ \let\rightpointleft\textHandLeft
+ \let\leftpointright\textHandRight
+ \let\PointingHand\textHandRight
+ \let\Pointinghand\textHandRight
+ \let\Radiation\textRadioactivity
+ \let\Yinyang\textYinYang
+ \let\YingYang\textYinYang
+ \let\Yingyang\textYinYang
+ \let\Frowny\textfrownie
+ \let\Smiley\textsmiley
+ \let\Sun\textsun
+ \let\Mercury\textmercury
+ \let\textfemale\textPUfemale
+ \let\female\textPUfemale
+ \let\venus\textPUfemale
+ \let\Venus\textPUfemale
+ \let\Female\textPUfemale
+ \let\Earth\textearth
+ \let\mars\textmale
+ \let\Mars\textmale
+ \let\Male\textmale
+ \let\Jupiter\textjupiter
+ \let\Saturn\textsaturn
+ \let\Uranus\texturanus
+ \let\Neptune\textneptune
+ \let\Pluto\textpluto
+ \let\Aries\textaries
+ \let\Taurus\texttaurus
+ \let\Gemini\textgemini
+ \let\Cancer\textcancer
+ \let\Leo\textleo
+ \let\Virgo\textvirgo
+ \let\Libra\textlibra
+ \let\Scorpio\textscorpio
+ \let\Sagittarius\textsagittarius
+ \let\Capricorn\textcapricornus
+ \let\Aquarius\textaquarius
+ \let\Pisces\textpisces
+ \let\spadesuit\textspadesuitblack
+ \let\Heart\textheartsuitwhite
+ \let\heartsuit\textheartsuitwhite
+ \let\diamondsuit\textdiamondsuitwhite
+ \let\clubsuit\textclubsuitblack
+ \let\eighthnote\textmusicalnote
+ \let\Recycling\textrecycle
+ \let\VarFlag\textFlag
+ \let\textxswup\textdsmilitary
+ \let\textuncrfemale\textPUuncrfemale
+ \let\Football\textSoccerBall
+ \let\CutLeft\textScissorRightBrokenBottom
+ \let\Cutright\textScissorRightBrokenBottom
+ \let\RightScissors\textScissorRight
+ \let\Leftscissors\textScissorRight
+ \let\Letter\textEnvelope
+ \let\Writinghand\textWritingHand
+ \let\checkmark\textCheckmark
+ \let\davidstar\textDavidStar
+ \let\llbracket\textlbrackdbl
+ \let\rrbracket\textrbrackdbl
+ \let\RightTorque\textlcurvearrowdown
+ \let\Righttorque\textlcurvearrowdown
+ \let\LeftTorque\textrcurvearrowdown
+ \let\Lefttorque\textrcurvearrowdown
+ \let\textvarobar\textobar
+ \let\circledbslash\textobslash
+ \let\obackslash\textobslash
+ \let\varobslash\textobslash
+ \let\odplus\textobot
+ \let\varolessthan\textolessthan
+ \let\varogreaterthan\textogreaterthan
+ \let\divdot\textminusdot
+ \let\doublesqcap\textsqdoublecap
+ \let\doublesqcup\textsqdoublecup
+ \let\merge\textdoublevee
+ \let\leftVdash\textdashV
+ \let\nleftVdash\textndashV
+ \let\leftmodels\textDashv
+ \let\nleftmodels\textnDashv
+ \let\leftModels\textDashV
+ \let\nleftModels\textnDashV
+ \let\varparallel\textsslash
+ \let\textheng\textPUheng
+ \let\textlhookfour\textPUlhookfour
+ \let\textscf\textPUscf
+ \let\textaolig\textPUaolig
+ \let\Ganz\textfullnote
+ \let\Halb\texthalfnote
+ \let\Womanface\textWomanFace
+ \let\Faxmachine\textFax
+ \let\CEsign\textCESign
+}% \psdaliasnames
+%</psdextra>
+% \end{macrocode}
+%
+% \section{End of file hycheck.tex}
+%
+% \begin{macrocode}
+%<*check>
+\typeout{}
+\begin{document}
+\end{document}
+%</check>
+% \end{macrocode}
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/hyperref/hyperref.ins b/macros/latex/contrib/hyperref/hyperref.ins
new file mode 100644
index 0000000000..5779e77110
--- /dev/null
+++ b/macros/latex/contrib/hyperref/hyperref.ins
@@ -0,0 +1,101 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 1995-1999 Sebastian Rahtz
+%% 1999-2000 Sebastian Rahtz, Heiko Oberdiek
+%% 2001-2012 Heiko Oberdiek
+%% 2016 Oberdiek Package Support Group
+%%
+%% This file is part of the `Hyperref Bundle'.
+%% -------------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% The list of all files belonging to the `Hyperref Bundle' is
+%% given in the file `manifest.txt'.
+%%
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\filedate{2010/01/25}
+\def\batchfile{hyperref.ins}
+\input docstrip
+
+\ifx\generate\undefined
+ \Msg{**********************************************}
+ \Msg{*}
+ \Msg{* This installation requires docstrip}
+ \Msg{* version 2.4 or later.}
+ \Msg{*}
+ \Msg{* An older version of docstrip has been input}
+ \Msg{*}
+ \Msg{**********************************************}
+ \errhelp{Move or rename old docstrip.tex and get a newer one.}
+ \errmessage{Old docstrip in input path}
+ \batchmode
+ \csname @@end\endcsname\end
+\fi
+
+\keepsilent
+\askforoverwritefalse
+%\askonceonly
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\preamble
+\endpreamble
+
+\generate{%
+ \file{hyperref.drv}{\from{hyperref.dtx}{driver}}
+ \file{hycheck.tex}{\from{hyperref.dtx}{check}}
+ \file{backref.drv}{\from{backref.dtx}{driver}}
+ \file{nameref.drv}{\from{nameref.dtx}{driver}}
+ \usedir{tex/latex/hyperref}
+ \file{backref.sty}{\from{backref.dtx}{package}}
+ \file{nameref.sty}{\from{nameref.dtx}{package}}
+ \file{hyperref.sty}{\from{hyperref.dtx}{package}}
+ \file{hypertex.def}{\from{hyperref.dtx}{hypertex}}
+ \file{pdfmark.def}{\from{hyperref.dtx}{pdfmark,pdfmarkbase,pdfform,outlines}}
+ \file{hvtexmrk.def}{\from{hyperref.dtx}{vtexpdfmark}}
+ \file{htexture.def}{\from{hyperref.dtx}{textures}}
+ \file{hdvipson.def}{\from{hyperref.dtx}{dvipsone}}
+ \file{hdvips.def}{\from{hyperref.dtx}{dvips}}
+ \file{hpdftex.def}{\from{hyperref.dtx}{pdftex,pdfform,outlines}}
+ \file{hluatex.def}{\from{hyperref.dtx}{luatex}\from{hluatex.dtx}{luatex}}
+ \file{hdviwind.def}{\from{hyperref.dtx}{dviwindo,pdfmarkbase}}
+ \file{htex4ht.def}{\from{hyperref.dtx}{tex4ht}}
+ \file{htex4ht.cfg}{\from{hyperref.dtx}{tex4htcfg}}
+ \file{hvtex.def}{\from{hyperref.dtx}{vtex,outlines}}
+ \file{hvtexhtm.def}{\from{hyperref.dtx}{vtexhtml}}
+ \file{hdvipdfm.def}{\from{hyperref.dtx}{dvipdfm,pdfform,outlines}}
+ \file{hxetex.def}{\from{hyperref.dtx}{xetex,pdfform,outlines}}
+ \file{pd1enc.def}{\from{hyperref.dtx}{pd1enc}}
+ \file{puenc.def}{\from{hyperref.dtx}{puenc}}
+ \file{puvnenc.def}{\from{hyperref.dtx}{puvnenc}}
+ \file{puarenc.def}{\from{hyperref.dtx}{puarenc}}
+ \file{psdextra.def}{\from{hyperref.dtx}{psdextra}}
+ \file{nohyperref.sty}{\from{hyperref.dtx}{nohyperref}}
+}
+
+\Msg{***************************************************************}
+\Msg{*}
+\Msg{* \space To finish the installation you have to copy the files }
+\Msg{*}
+\Msg{* \space *.sty, *.cfg and *.def into a directory searched by TeX}
+\Msg{*}
+\Msg{* \space (TDS directory: texmf/tex/latex/hyperref/).}
+\Msg{*}
+\Msg{***************************************************************}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
diff --git a/macros/latex/contrib/hyperref/hyperref.pdf b/macros/latex/contrib/hyperref/hyperref.pdf
new file mode 100644
index 0000000000..de7cea1932
--- /dev/null
+++ b/macros/latex/contrib/hyperref/hyperref.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/manifest.txt b/macros/latex/contrib/hyperref/manifest.txt
new file mode 100644
index 0000000000..6563234860
--- /dev/null
+++ b/macros/latex/contrib/hyperref/manifest.txt
@@ -0,0 +1,122 @@
+% CONTENTS OF THE HYPERREF BUNDLE
+% ===============================
+
+hyperref.dtx
+ Main package with various drivers.
+backref.dtx
+ Bibliographical back referencing.
+nameref.dtx
+ Cross-referencing by name of section.
+
+hyperref.pdf, backref.pdf, nameref.pdf
+ Source code documentation.
+
+hyperref.ins
+ Docstrip batch file.
+
+minitoc-hyper.sty
+ Patched version of `minitoc.sty' to work with `hyperref.sty'.
+ntheorem-hyper.sty
+ Patched version of `ntheorem.sty' to work with `hyperref.sty'.
+xr-hyper.sty
+ Patched version of `xr.sty' to work with `hyperref.sty'.
+
+bmhydoc.sty
+ Help package for generating the documentation.
+
+psdmapshortnames.pl
+ Helper script for generating psdextra.def.
+
+ChangeLog.txt
+ History of versions
+hylatex.ltx
+ For creating format file.
+manifest.txt
+ Short description of the files.
+README.md
+ Short readme file.
+
+% Derived files
+% =============
+
+backref.sty
+nameref.sty
+hyperref.sty
+nohyperref.sty
+ LaTeX package files.
+hycheck.tex
+ Test file.
+backref.drv
+nameref.drv
+hyperref.drv
+ Documentation drivers.
+hypertex.def
+pdfmark.def
+hvtexmrk.def
+htexture.def
+hdvipson.def
+hdvips.def
+hpdftex.def
+hdviwind.def
+htex4ht.def
+hvtex.def
+hvtexhtm.def
+hdvipdfm.def
+hxetex.def
+ Hyperref drivers.
+pd1enc.def
+puenc.def
+puvnenc.def
+puarenc.def
+psdextra.def
+ Font encoding definition files.
+
+% Directory doc/
+% =============
+
+manual.pdf
+ Manual, but a little out of date.
+manual.html, manual2.html, manual3.html, manual.css,
+cmsy10-21.gif, cmmi10-22.gif
+ HTML version of the manual.
+options.tex, options.pdf
+ Short description of options from package `hyperref'.
+paper.pdf
+ Online version of paper for Heiko Oberdiek's talk
+ at EuroTeX'99.
+slides.pdf
+ Slides for Heiko Oberdiek's talk at EuroTeX'99.
+
+% Directory test/
+% ==============
+
+test0.tex, test0.dvi, hog.eps, hog.pdf
+test1.tex
+test2.tex
+test3.tex, phys1.jpg, phys2.jpg
+test4.tex, bit.tex
+test5.tex
+test6.tex
+test7.tex
+test8.tex
+testams.tex
+testbib.tex, testbib.bib, testbib.bbl
+testbookmark.tex
+testfor2.tex
+testform.tex
+testnb.tex
+testoz.tex
+testslide.tex, seminar.con
+testurl.tex, testurl.bib, testurl.bbl
+picture.eps, picture.pdf, picture.png
+ Used in `test0.tex' and `test1.tex'.
+
+testbmgl.tex
+ Test file that produces all glyphs of PDFDocEncoding
+ in the bookmarks and shows the commands to produce them.
+testbmu.tex
+ Test file that produces glyphs 0x0000 until 0x04FF
+ of Unicode in the bookmarks and the commands.
+ (Caution: large pool size needed.)
+
+test-bm-pu-licr.tex
diff --git a/macros/latex/contrib/hyperref/minitoc-hyper.sty b/macros/latex/contrib/hyperref/minitoc-hyper.sty
new file mode 100644
index 0000000000..2106de9dba
--- /dev/null
+++ b/macros/latex/contrib/hyperref/minitoc-hyper.sty
@@ -0,0 +1,2304 @@
+\def\fileversion{v28href}
+\def\filedate{1999/05/17}
+% minitoc-hyper.sty
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Jean-Pierre Drucbert
+% ONERA/CERT/GPI
+% Office National d'\'Etudes et de Recherches A\'erospatiales
+% Centre d'\'Etudes et de Recherches de Toulouse
+% Groupe de Prestations Informatiques
+% Complexe Scientifique de Rangueil
+% 2, Avenue \'Edouard Belin
+% BP 4025
+% F-31055 TOULOUSE CEDEX
+% FRANCE
+%
+% Phone +33-62-25-25-15
+%
+% Email: drucbert@onecert.fr
+%
+% Please send me any (constructive) suggestions and comments.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Temporarily patched by Bernd Jaehne [Bernd.Jaehne@aeon.de]
+% and Didier Verna [verna@inf.enst.fr] to
+% work with hyperref.sty from s.rahtz@elsevier.co.uk
+% using input from Tony Roberts [aroberts@usq.edu.au]
+% For changes see comments %%BJ and %DV
+%
+% However: this patch works only when hyperref.sty is used,
+% otherwise errors occur. Thus it may be advisable to add code
+% so that minitoc runs both in standard and hyperref mode.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% History (contains some obsolete things... it is NOT
+% the REAL documentation)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% minitoc.sty --- redefines the \chapter command to display a
+% mini-table-of-contents at the beginning of every chapter.
+% Oct-90 Original version, by Nigel Ward.
+% Nov-91 Revised to reuse \chapter, \section, \subsection commands
+% transparently, generate toc-file-name automatically,
+% assorted other cleanup. Dan Jurafsky
+% Jun/Jul-93 New design, to avoid allocating a newwrite
+% for each chapter (!)
+% Added \chapterend to terminate the scope of a minitoc.
+% (IF YOU FORGOT PUTTING \chapterend at the end
+% of EACH chapter, an entry for the next chapter
+% will appear in each minitoc.) (Thanks to Yufan Hu).
+% Replaced ``minipage'' environnement by a ``verse''
+% environnement, to allow a minitoc split across pages.
+% All the layout of the minitoc is in the
+% \minitableofcontents command, so if someboby wants
+% to redefine that layout, he has just to
+% rewrite it (and only it).
+%
+% You can inhibit the minitoc for the next chapter
+% by preceding it with \minitocno. (\minitocyes
+% is useless for the user: it is implicit AFTER
+% the \chapter* pseudo-chapters).
+%
+% Problems: you MUST have \chapterend to terminate each
+% chapter with a minitoc.
+% How about avoiding this constraint?
+%
+% The depth of the minitoc is user-adjustable with
+% the counter `minitocdepth' (as `tocdepth' for the table
+% of contents).
+% At least three passes (3!!!) of LaTeX are necessary to get
+% correct minitoc's (the first pass creates the .mtcX files,
+% the second uses them (but they may contain wrong page
+% numbers) and recreates them, the third should be ok).
+%
+% Works with \chapter[xxx]{yyy} and floating bodies.
+% Works with two columns (but the minitoc is in composed in
+% one column; how to make it to spread over the two column?)
+% Some mods added to work with xr.sty (external references).
+% xr.sty version 5 is much more tolerant.
+% 05Jul93 Version 2
+% Added compatibility with hangcaption.sty (the option
+% hangcaption (if present) must be given BEFORE minitoc
+% option.)
+% BEWARE to options modifying \@caption
+% Version 3 not released (buggy)
+% 09Jul93 Version 4
+% Added \if@realch to avoid contentslines from
+% pseudo-chapters to go into the toc!
+% The option file mtcoff.sty allows to use a latex
+% document with minitoc commands and to make them
+% transparent: just replace the minitoc option by
+% mtcoff.
+% 13Jul93 Version 5
+% Added a selection mechanism to not write spurious things
+% in the minitoc's.
+% 15Jul93 Version 6
+% Fixed problems about chapters in the toc,
+% removed obsolete \caption stuff (filters are better)
+% added compatibility with toch.sty
+% (toch.sty makes a table of chapters. If used,
+% must be loaded BEFORE minitoc.sty)
+% 22Jul93 Version 7 (MAJOR DIFFERENCES)
+% Completely rewritten, using tricks from xr.sty
+% (the version 5, by David Carlisle). The info
+% for minitocs is directly stolen from the .toc
+% file.
+% \chapterend and \minitocno are suppressed
+% \minitoc, \dominitoc and \faketableofcontents added
+% 29Jul93 Version 8
+% Spacing adjustements.
+% 04Aug93 Version 9
+% Added mods for MS-DOS (search MS-DOS, uncomment;
+% search UNIX, comment out). MS-DOS allows only
+% 3 characters for extensions in file names (what a pity!).
+% 05Aug93 Version 10
+% Works with appendices.
+% Detects obsolete versions of latex.tex.
+% (\@inputcheck or \reset@font not defined).
+% 18Aug93 Version 11
+% Added \mtcSfont, font for section entries,
+% \mtcSSfont for subsection entries,
+% \mtcSSSfont for subsubsection entries,
+% \mtcPfont for paragraph entries,
+% \mtcSPfont for subparagraph entries.
+%
+% 16Dec93 Version 12
+% Use \kern's in place of \vspace*'s,
+% and added penalties (\nopagebreak) to
+% avoid a page break just before last \mtc@rule.
+% Also added a \samepage environnement.
+% Removed old commented out lines from
+% previous versions.
+%
+% 17Dec93 Version 13
+% Added minilof and minilot stuff.
+% For MS-DOS, uncomment the definition of \SHORTEXT.
+%
+% 03Jan94 Version 14
+% Corrected space under minitoc/lof/lot and added a
+% \raggedright to avoid ``underfull'' warnings.
+% Corrected some spacing problems (avoiding ~'s).
+% \mtifont changed from \normalsize\bf to
+% \large\bf.
+% Some mods suggested by Donald Arseneau (thanks):
+% \@newread becomes \newread, not outer
+% version of \newread.
+% \empty replaced by \relax in the spare definition
+% of \reset@font.
+% Removed \clubpenalty=10000 and \widowpenalty=10000
+% (done by \samepage), and \noindent.
+% Simplified processing of optional argument in
+% \minitoc, \minilof and \minilot.
+%
+% 27Jan94 Version 15
+% Added parttoc, partlof and partlot for books,
+% with commands and parameters parallel to
+% those for mini-things.
+%
+% Added secttoc, sectlof and sectlot for articles,
+% with commands and parameters parallel to
+% those for mini-things.
+%
+% 02Feb94 Version 16
+% Bug fixes (typos).
+%
+% 23Jun94 Version 17
+% Keyword 'n' (null) synonym of 'e' (empty).
+% Compatibility with LaTeX ``2e''.
+% Thanks to Denis Roegel (who found
+% the problem) and Frank Mittelbach
+% (who gave the hints to solve).
+%
+% 26Jun94 Version 18
+% Make minitoc really compatible with latex2e
+% Introduce the language files as options
+% Thanks to Michel Goossens (via Frank Mittelbach)
+% who was inspired by the code of babel (Johannes Braams).
+%
+% 16Aug94 Version 19
+% Added stuff for numbering of chapters (parts,
+% sections) not starting at 1.
+% \firstchapteris etc. commands added.
+% \mtcrule, \nomtcrule etc. commands added.
+% Corrected a bug in \c@mti.
+% Corrected mtcswedish.sty (Jan Michel Rynning)
+% Corrected appendix in articles
+%
+% 25Aug94 Version 20
+% Corrected spacing before and after minitocs
+% and siblings.
+% Added \mtcpagenumbers and \nomtcpagenumbers
+% (and siblings) to make minitocs with/without
+% page numbers. Default: page numbers.
+% Corrected (difficult bug) appendix in articles.
+% Corrected vertical spacing.
+% Corrected a problem with chapters numbered
+% with (uppercase) roman numbers.
+%
+% 07Sep94 Version 21
+% Corrected typos in minitoc.sty and minitoc.tex.
+%
+% 10Oct94 Version 22
+% Corrected typos in minitoc.sty.
+%
+% 08Nov94 Version 23
+% Added a missing line in \sectlof@.
+% Works with document classes resetting
+% chapter (or section) number at each part.
+% (Thanks to Denis Roegel)
+% Removed stuff for \firstchapteris and co.
+% These commands are obsolete.
+% Removed appendix stuff.
+%
+% 21Dec94 Version 24
+% The \protect commands have been removed from
+% the .toc, .lot and .lot files, so some internal
+% macros have been corrected to be compatible
+% with the LaTeX2e release of December 1994.
+% Thanks to Denis Roegel who did the work.
+%
+% 13Sep96 Version 25
+% Updated mtcnorsk.sty and added mtcnynorsk.sty
+% on a suggestion from Dag Langmyhr (dag@ifi.uio.no).
+%
+% 14Nov96 Version 26
+% Language specific commands are now names <language>.mld
+% (in place of mtc<language>.sty) because there are not
+% packages and it makes shorter names.
+% Added breton, estonian, germanb, greek, irish,
+% russianb, scottish, lower and upper sorbian;
+% renamed esperanto into esperant like in Babel.
+%
+% 20Dec96 Version 27
+% Corrections for starred sectionning commands.
+% english.mld loaded as default language.
+% Added vietnam.mld.
+% Added arab.mld.
+% Renamed minitocoff.sty into mtcoff.sty to
+% keep the name short.
+%
+%
+% Jean-Pierre Drucbert
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}[1994/12/01]%
+%%% This file will not work with latex2.09
+\ProvidesPackage{minitoc}[\filedate\space\fileversion\space
+ The minitoc package]
+\typeout{*** minitoc package, version 27p ***}%
+\@ifundefined{part}%
+{}%
+{\typeout{*** part level macros available ***}
+\let\mtc@svpart\part %23
+\def\part{\stepcounter{ptc}\mtc@svpart}} %23
+\@ifundefined{chapter}%
+{%
+\@ifundefined{section}%
+{\typeout{*** no section or chapter level macros available ***}%
+\typeout{*** PLEASE VERIFY YOUR MAIN DOCUMENT CLASS ***}}%
+{\typeout{*** section level macros available ***}
+\let\mtc@svsection\section %23
+\def\section{\stepcounter{stc}\mtc@svsection} %23
+\let\mtc@svss\@ssect %23
+%v25 \def\@ssect{\addtocounter{stc}{-1}\mtc@svss} %23
+}%
+}%
+{\typeout{*** chapter level macros available ***}
+\let\mtc@svchapter\@chapter %23
+\def\@chapter{\stepcounter{mtc}\mtc@svchapter} %23
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% ***** **** *** *****
+% * * * * *
+% *** * * * *
+% * * * * *
+% ***** **** *** *
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\def\SHORTEXT{SHORTEXT} %%% UNCOMMENT FOR DOS AND
+ %%% SYSTEMS WITH SHORT EXTENSIONS
+ %%% TO FILE NAMES
+ %%% LEAVE IT COMMENTED OUT
+ %%% FOR UNIX AND O.S. WITH
+ %%% LONG EXTENSIONS
+ %%% YOU CAN VERIFY BY LATEXING
+ %%% AN EXAMPLE DOCUMENT
+ %%% ONE OF THE FOLLOWING MESSAGES APPEARS
+ %%% PLEASE CORRECT IF THE MESSAGE IS WRONG
+% v27 : claim the type of system!
+\@ifundefined{SHORTEXT}%
+{\typeout{==> this version is configured for UNIX-like (long extensions) file names.}}%
+{\typeout{==> this version is configured for MSDOS-like (8+3) file names.}}
+%
+%not outer version of \newread
+\def\newread{\alloc@6\read\chardef\sixt@@n}
+\@ifundefined{@inputcheck}%
+ {\typeout{Your version of latex.tex is obsolete.}%
+ \typeout{Trying to continue...}\newread\@inputcheck\relax}{}
+\@ifundefined{reset@font}%
+ {\typeout{Your version of latex.tex is very obsolete.}%
+ \typeout{Trying to continue...}\let\reset@font\relax}{}
+\newwrite\tf@mtc % a file descriptor to write minitocs
+\newtoks\mtc@toks
+\def\mtc@string{\relax}
+\newbox\mtc@strutbox
+\setbox\mtc@strutbox=\hbox{\vrule height2.5ex
+ depth1.8ex width\z@}
+\def\mtc@strut{\relax\ifmmode\copy\mtc@strutbox\else\unhcopy\mtc@strutbox\fi}
+\def\mtc@v{\leavevmode%
+ \mtc@strut\vphantom{Lp$^{l^l}_{p_p}$}} % a pseudo-strut ?
+% \@BBR discourages page breaks
+\def\@BBR{\unpenalty\nopagebreak[4]}
+% Modified version to ignore the dots and the page number. % 17b
+\def\@undottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else % 17b
+ \vskip \z@ plus.2\p@ % 17b
+ {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip % 17b
+ \parindent #2\relax\@afterindenttrue % 17b
+ \interlinepenalty\@M % 17b
+ \leavevmode % 17b
+ \@tempdima #3\relax \advance\leftskip \@tempdima \hbox{}% % 17b
+ \hskip -\leftskip % 17b
+ #4\nobreak\hfill \nobreak % 17b
+ \null\par}\fi} % 17b
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17b
+\def\mtcpagenumbers{\let\mtc@pgno\null} %17b
+\mtcpagenumbers %default %17b
+\def\nomtcpagenumbers{\let\mtc@pgno\relax} %17b
+\def\stcpagenumbers{\let\stc@pgno\null} %17b
+\stcpagenumbers %default %17b
+\def\nostcpagenumbers{\let\stc@pgno\relax} %17b
+\def\ptcpagenumbers{\let\ptc@pgno\null} %17b
+\ptcpagenumbers %default %17b
+\def\noptcpagenumbers{\let\ptc@pgno\relax} %17b
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17b
+\def\mlfpagenumbers{\let\mlf@pgno\null} %17b
+\mlfpagenumbers %default %17b
+\def\nomlfpagenumbers{\let\mlf@pgno\relax} %17b
+\def\slfpagenumbers{\let\slf@pgno\null} %17b
+\slfpagenumbers %default %17b
+\def\noslfpagenumbers{\let\slf@pgno\relax} %17b
+\def\plfpagenumbers{\let\plf@pgno\null} %17b
+\plfpagenumbers %default %17b
+\def\noplfpagenumbers{\let\plf@pgno\relax} %17b
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17b
+\def\mltpagenumbers{\let\mlt@pgno\null} %17b
+\mltpagenumbers %default %17b
+\def\nomltpagenumbers{\let\mlt@pgno\relax} %17b
+\def\sltpagenumbers{\let\slt@pgno\null} %17b
+\sltpagenumbers %default %17b
+\def\nosltpagenumbers{\let\slt@pgno\relax} %17b
+\def\pltpagenumbers{\let\plt@pgno\null} %17b
+\pltpagenumbers %default %17b
+\def\nopltpagenumbers{\let\plt@pgno\relax} %17b
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17b
+% if you don't want a table of contents, but want minitocs,
+% you need to create the .toc file, without inputing it
+% into your document. This command is a stripped off version
+% of \tableofcontents
+\def\faketableofcontents{\fake@starttoc{toc}}
+% idem for list of figures
+\def\fakelistoffigures{\fake@starttoc{lof}}
+% idem for list of tables
+\def\fakelistoftables{\fake@starttoc{lot}}
+\def\fake@starttoc#1{\begingroup
+ \makeatletter
+ \if@filesw \expandafter\newwrite\csname tf@#1\endcsname
+ \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
+ \fi \global\@nobreakfalse \endgroup}
+%%
+\global\let\mtc@markboth\markboth
+\global\let\@mkboth\markboth
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@ifundefined{chapter}{}{%
+\def\The@chapter{\arabic{mtc}} %23
+\def\firstchapteris#1%
+ {\typeout{^^JWARNING*** \string\firstchapteris}%
+ \typeout{ is an obsolete command^^J}}
+\newcounter{mtc} % counter of minitocs
+\setcounter{mtc}{0}
+\gdef\themtc{\arabic{mtc}}
+\newcounter{minitocdepth} % analog to tocdepth, but for minitocs
+\setcounter{minitocdepth}{2} % default value
+\def\mtc@rule{\kern-3\p@%
+ \hrule width \columnwidth \kern2.6\p@} % the \hrule is .4pt high
+
+\newlength\mtcindent % indentation (left/right) of minitocs
+\mtcindent=24pt % defaut value
+\def\mtcfont{\small\rm} % font for the minitoc
+\def\mtcSfont{\small\bf} % font for the minitoc (sections)
+\def\mtcSSfont{\mtcfont} % font for the minitoc (subsections)
+\def\mtcSSSfont{\mtcfont} % font for the minitoc (subsubsections)
+\def\mtcPfont{\mtcfont} % font for the minitoc (paragraphs)
+\def\mtcSPfont{\mtcfont} % font for the minitoc (subparagraphs)
+\def\mlffont{\mtcfont} % font for the minilof (figures)
+\def\mltfont{\mtcfont} % font for the minilot (tables)
+\def\mtifont{\large\bf} % font for titles
+
+% Centering, flushleft, flushright or empty titles.
+\def\c@mti#1{\null\hfill #1\hfill\null}
+\def\l@mti#1{\null #1\hfill\null}
+\def\r@mti#1{\null\hfill #1\null}
+\def\e@mti#1{\relax}
+\def\n@mti#1{\relax}
+
+% Default: titles on left
+\let\do@mtitc\l@mti
+\let\df@mtitc\l@mti
+\let\do@mtilf\l@mti
+\let\df@mtilf\l@mti
+\let\do@mtilt\l@mti
+\let\df@mtilt\l@mti
+
+%v27 Language dependent names: default values. Now
+%v27 english.mld is loaded first.
+%v27 \@ifundefined{mtctitle}{\def\mtctitle{Contents}}{\relax}
+%v27 \@ifundefined{mlftitle}{\def\mlftitle{Figures}}{\relax}
+%v27 \@ifundefined{mlttitle}{\def\mlttitle{Tables}}{\relax}
+
+\def\mtc@verse{\let\\=\@centercr
+ \list{}{\itemsep\z@\itemindent \z@\listparindent \itemindent
+ \leftmargin\mtcindent
+ \rightmargin\leftmargin}\item[]}
+\def\endmtc@verse{\nopagebreak[4]\endlist}
+
+% this command must be used after \chapter
+% if you need a minitoc (no automatic minitoc)
+\def\minitoc{\@ifnextchar[{\minitoc@}{\minitoc@[d]}}
+
+\def\minitoc@[#1]{%
+ \relax\begin{samepage}% we begin a local group here, using samepage
+ \if #1e\let\do@mtitc\e@mti
+ \else\if #1n\let\do@mtitc\n@mti
+ \else\if #1c\let\do@mtitc\c@mti
+ \else\if #1l\let\do@mtitc\l@mti
+ \else\if #1r\let\do@mtitc\r@mti
+ \else\if #1d\let\do@mtitc\df@mtitc
+ \fi\fi\fi\fi\fi\fi
+ \raggedright % added #14
+ \parskip=\z@%
+ \reset@font\mtcfont%
+ \parindent=\z@%
+ \nopagebreak[4]%
+ \kern-0.8\baselineskip\nopagebreak[4]%
+ \par\noindent %%
+ \ifx\mtc@rule\relax
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\mtifont\do@mtitc{\mtc@v\mtctitle}}\\
+ \end{tabular}\else
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\mtifont\do@mtitc{\mtc@v\mtctitle}}\\\hline
+ \end{tabular}\fi
+ \nopagebreak[4]\null\leavevmode\vrule width \z@
+ height \z@ depth \z@\\\@BBR%
+ \leftmargin\mtcindent
+ \rightmargin\mtcindent
+ \itemindent=\z@\labelwidth=\z@%
+ \labelsep=\z@\listparindent=\z@%
+ \begin{mtc@verse}\c@tocdepth=\c@minitocdepth%
+ \leavevmode\\\@BBR% this blank line is necessary to avoid
+ % a wild negative indentation
+ \vskip -.5\baselineskip
+\begingroup
+ \makeatletter
+ \@ifundefined{mtc@pgno}%
+ {\let\@dottedtocline\@undottedtocline}{}
+\@ifundefined{SHORTEXT}%
+{\def\@tocfile{mtc\The@chapter}}% % UNIX
+{\def\@tocfile{M\The@chapter}}% % MS-DOS
+ \@input{\jobname.\@tocfile}\if@filesw
+ \fi%
+ \global\@nobreakfalse\endgroup
+ \end{mtc@verse}%
+ \kern0.\baselineskip%
+ \nopagebreak[4]\mtc@rule\null\leavevmode\\%
+ \vskip-1.0\baselineskip
+ \vrule width \z@ height \z@
+ depth \z@\end{samepage}% %## the \\ is essential
+ \par\pagebreak[1]\vspace*{-1ex}}%
+ % some space under the minitoc
+
+% Added in version #13
+% this command must be used after \chapter
+% if you need a minilof (no automatic minilof)
+\def\minilof{\@ifnextchar[{\minilof@}{\minilof@[d]}}
+
+\def\minilof@[#1]{%
+ \relax\begin{samepage}% we begin a local group here, using samepage
+ \if #1e\let\do@mtilf\e@mti
+ \else\if #1n\let\do@mtilf\n@mti
+ \else\if #1c\let\do@mtilf\c@mti
+ \else\if #1l\let\do@mtilf\l@mti
+ \else\if #1r\let\do@mtilf\r@mti
+ \else\if #1d\let\do@mtilf\df@mtilf
+ \fi\fi\fi\fi\fi\fi
+ \raggedright % added #14
+ \parskip=\z@%
+ \reset@font\mlffont%
+ \parindent=\z@%
+ \nopagebreak[4]%
+ \kern-0.8\baselineskip\nopagebreak[4]%
+ \par\noindent
+ \ifx\mtc@rule\relax
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\mtifont\do@mtilf{\mtc@v\mlftitle}}\\
+ \end{tabular}\else
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\mtifont\do@mtilf{\mtc@v\mlftitle}}\\\hline
+ \end{tabular}\fi
+ \nopagebreak[4]\null\leavevmode\vrule width \z@
+ height \z@ depth \z@\\\@BBR%
+ \leftmargin\mtcindent
+ \rightmargin\mtcindent
+ \itemindent=\z@\labelwidth=\z@%
+ \labelsep=\z@\listparindent=\z@%
+ % depth does not matter for minilof
+ \begin{mtc@verse}%\c@tocdepth=\c@minitocdepth%
+ \leavevmode\\\@BBR% this blank line is necessary to avoid
+ % a wild negative indentation
+ \vskip -.5\baselineskip
+\begingroup
+ \makeatletter
+ \@ifundefined{mlf@pgno}%
+ {\let@dottedtocline\@undottedtocline}{}
+\@ifundefined{SHORTEXT}%
+{\def\@tocfile{mlf\The@chapter}}% % UNIX
+{\def\@tocfile{F\The@chapter}}% % MS-DOS
+ \@input{\jobname.\@tocfile}\if@filesw
+ \fi%
+ \global\@nobreakfalse\endgroup
+ \end{mtc@verse}%
+ \kern0.\baselineskip%
+ \nopagebreak[4]\mtc@rule\null\leavevmode\\%
+ \vskip-1.0\baselineskip
+ \vrule width \z@ height \z@
+ depth \z@\end{samepage}% %## the \\ is essential
+ \par\pagebreak[1]\vspace*{-1ex}}%
+ % some space under the minilof
+
+% Added in version #13
+% this command must be used after \chapter
+% if you need a minilot (no automatic minilot)
+\def\minilot{\@ifnextchar[{\minilot@}{\minilot@[d]}}
+
+\def\minilot@[#1]{%
+ \relax\begin{samepage}% we begin a local group here, using samepage
+ \if #1e\let\do@mtilt\e@mti
+ \else\if #1n\let\do@mtilt\n@mti
+ \else\if #1c\let\do@mtilt\c@mti
+ \else\if #1l\let\do@mtilt\l@mti
+ \else\if #1r\let\do@mtilt\r@mti
+ \else\if #1d\let\do@mtilt\df@mtilt
+ \fi\fi\fi\fi\fi\fi
+ \raggedright % added #14
+ \parskip=\z@%
+ \reset@font\mltfont%
+ \parindent=\z@%
+ \nopagebreak[4]%
+ \kern-0.8\baselineskip\nopagebreak[4]%
+ \par\noindent
+ \ifx\mtc@rule\relax
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\mtifont\do@mtilt{\mtc@v\mlttitle}}\\
+ \end{tabular}\else
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\mtifont\do@mtilt{\mtc@v\mlttitle}}\\\hline
+ \end{tabular}\fi
+ \nopagebreak[4]\null\leavevmode\vrule width \z@
+ height \z@ depth \z@\\\@BBR%
+ \leftmargin\mtcindent
+ \rightmargin\mtcindent
+ \itemindent=\z@\labelwidth=\z@%
+ \labelsep=\z@\listparindent=\z@%
+ % depth does not matter for minilot
+ \begin{mtc@verse}%\c@tocdepth=\c@minitocdepth%
+ \leavevmode\\\@BBR% this blank line is necessary to avoid
+ % a wild negative indentation
+ \vskip -.5\baselineskip
+\begingroup
+ \makeatletter
+ \@ifundefined{mlt@pgno}%
+ {\let\@dottedtocline\@undottedtocline}{}
+\@ifundefined{SHORTEXT}%
+{\def\@tocfile{mlt\The@chapter}}% % UNIX
+{\def\@tocfile{T\The@chapter}}% % MS-DOS
+ \@input{\jobname.\@tocfile}\if@filesw
+ \fi%
+ \global\@nobreakfalse\endgroup
+ \end{mtc@verse}%
+ \kern0.\baselineskip%
+ \nopagebreak[4]\mtc@rule\null\leavevmode\\%
+ \vskip-1.0\baselineskip
+ \vrule width \z@ height \z@
+ depth \z@\end{samepage}% %## the \\ is essential
+ \par\pagebreak[1]\vspace*{-1ex}}%
+ % some space under the minilot
+
+% I use a depth of 10000 to inhibit the printing of
+% that contentsline.
+\def\l@xchapter{\@dottedtocline{\@M}{1em}{2.3em}}
+\def\xchapter{xchapter}
+
+\let\sv@chapter\@chapter
+\def\@chapter[#1]#2{\sv@chapter[{#1}]{#2}\relax%
+\addcontentsline{lof}{xchapter}{#1}%
+\addcontentsline{lot}{xchapter}{#1}%
+}
+
+% tricky code to deal with \chapter*
+\let\mtc@schapter\@schapter
+\def\@schapter{%
+\addtocontents{toc}{\protect\chapterend}\mtc@schapter%
+}
+\def\@schapter{%
+\addtocontents{toc}{\protect\chapterbegin}\mtc@schapter%
+}
+\let\chapterend\relax
+\let\chapterbegin\relax
+
+\let\appendixmtc\relax
+
+% this command extracts info from the .toc file
+% and create the .mtcN files (.mtc -> .M on MS-DOS)
+\def\@dominitoc#1{{%
+ \makeatletter
+ \setcounter{mtc}{0} % START VALUE
+ \MTC@next#1.toc\relax\\}\setcounter{mtc}{0}} %23: raz
+% this command extracts info from the .lof file
+% and create the .mlfN files (.mlf -> .F on MS-DOS)
+\def\@dominilof#1{{%
+ \makeatletter
+ \setcounter{mtc}{0} % START VALUE
+ \MLF@next#1.lof\relax\\}\setcounter{mtc}{0}} %23: raz
+% this command extracts info from the .lot file
+% and create the .mltN files (.mlt -> .T on MS-DOS)
+\def\@dominilot#1{{%
+ \makeatletter
+ \setcounter{mtc}{0} % START VALUE
+ \MLT@next#1.lot\relax\\}\setcounter{mtc}{0}} %23: raz
+
+\def\dominitoc{\@ifnextchar[{\dominitoc@}{\dominitoc@[l]}}
+\def\dominilof{\@ifnextchar[{\dominilof@}{\dominilof@[l]}}
+\def\dominilot{\@ifnextchar[{\dominilot@}{\dominilot@[l]}}
+
+\def\dominitoc@[#1]{%
+\if #1e\let\df@mtitc\e@mti%
+\else\if #1n\let\df@mtitc\n@mti%
+\else\if #1c\let\df@mtitc\c@mti%
+\else\if #1l\let\df@mtitc\l@mti%
+\else\if #1r\let\df@mtitc\r@mti%
+\fi\fi\fi\fi\fi%
+\@@dominitoc}
+
+\def\dominilof@[#1]{%
+\if #1e\let\df@mtilf\e@mti%
+\else\if #1n\let\df@mtilf\n@mti%
+\else\if #1c\let\df@mtilf\c@mti%
+\else\if #1l\let\df@mtilf\l@mti%
+\else\if #1r\let\df@mtilf\r@mti%
+\fi\fi\fi\fi\fi%
+\@@dominilof}
+
+\def\dominilot@[#1]{%
+\if #1e\let\df@mtilt\e@mti%
+\else\if #1n\let\df@mtilt\n@mti%
+\else\if #1c\let\df@mtilt\c@mti%
+\else\if #1l\let\df@mtilt\l@mti%
+\else\if #1r\let\df@mtilt\r@mti%
+\fi\fi\fi\fi\fi%
+\@@dominilot}
+
+\def\@@dominitoc{\@dominitoc{\jobname}\immediate\closeout\tf@mtc}
+\def\@@dominilof{\@dominilof{\jobname}\immediate\closeout\tf@mtc}
+\def\@@dominilot{\@dominilot{\jobname}\immediate\closeout\tf@mtc}
+
+\def\MTC@next#1\relax#2\\{%
+ \edef\MTC@list{#2}%
+ \MTC@loop{#1}}
+\def\MTC@toc{%
+ \ifx\MTC@list\@empty\else\expandafter\MTC@explist\fi}
+
+%%%%%%% patch minitoc to write *.mtc files with link name at end
+% so that hyperref contentsline works properly---I hope
+\def\MTC@contentsline#1#2#3#4{% %%BJ: 4 instead of 3 parameters
+\gdef\themtc{\arabic{mtc}}
+\expandafter%
+ \ifx\csname #1\endcsname\chapter\relax
+ \stepcounter{mtc}% % the mtc counter simulates the chapter counter
+\@ifundefined{SHORTEXT}%
+{\typeout{Writing\space\jobname.mtc\themtc}% % UNIX
+\def\mtcname{\jobname.mtc\themtc}}% % UNIX
+{\typeout{Writing\space\jobname.M\themtc}% % MS-DOS
+\def\mtcname{\jobname.M\themtc}}% % MS-DOS
+ \immediate\closeout\tf@mtc % close current .mtcN .mtc->.M on MS-DOS
+ \immediate\openout\tf@mtc=\mtcname % open next .mtcN (.mtc->.M if MS-DOS)
+ \fi
+\expandafter% % extracts and writes info for sections, etc.
+ \ifx\csname #1\endcsname\section\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\mtcSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSfont%
+ \space #3}{#4}}}}\@tempa% %%BJ: #4 is hyperlink
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\subsection\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\mtcSSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSSfont%
+ \space #3}{#4}}}}\@tempa% %%BJ: #4 is hyperlink
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\subsubsection\relax
+ \mtc@toks{\noexpand \leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\mtcSSSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSSSfont%
+ \space #3}{#4}}}}\@tempa% %%BJ: #4 is hyperlink
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\paragraph\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\mtcPfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcPfont%
+ \space #3}{#4}}}}\@tempa% %%BJ: #4 is hyperlink
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\subparagraph\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\mtcSPfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSPfont
+ \space #3}{#4}}}}\@tempa% %%BJ: #4 is hyperlink
+ \fi
+% Added v25: \starchapter and co.
+\expandafter% % extracts and writes info for sections, etc.
+ \ifx\csname #1\endcsname\starchapter\relax
+\stepcounter{mtc}% % the mtc counter simulates the chapter counter
+\@ifundefined{SHORTEXT}%
+{\typeout{Writing\space\jobname.mtc\themtc}% % UNIX
+\def\mtcname{\jobname.mtc\themtc}}% % UNIX
+{\typeout{Writing\space\jobname.M\themtc}% % MS-DOS
+\def\mtcname{\jobname.M\themtc}}% % MS-DOS
+ \immediate\closeout\tf@mtc % close current .mtcN .mtc->.M on MS-DOS
+ \immediate\openout\tf@mtc=\mtcname % open next .mtcN (.mtc->.M if MS-DOS)
+ \fi
+\expandafter% % extracts and writes info for sections, etc.
+ \ifx\csname #1\endcsname\starsection\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\mtcSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSfont%
+ \space #3}{#4}}}}\@tempa% %%BJ: #4 is hyperlink
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\starsubsection\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\mtcSSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSSfont%
+ \space #3}{#4}}}}\@tempa% %%BJ: #4 is hyperlink
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\starsubsubsection\relax
+ \mtc@toks{\noexpand \leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\mtcSSSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSSSfont%
+ \space #3}{#4}}}}\@tempa% %%BJ: #4 is hyperlink
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\starparagraph\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\mtcPfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcPfont%
+ \space #3}{#4}}}}\@tempa% %%BJ: #4 is hyperlink
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\starsubparagraph\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\mtcSPfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSPfont
+ \space #3}{#4}}}}\@tempa% %%BJ: #4 is hyperlink
+ \fi
+}
+
+
+\def\MTC@explist{\expandafter\MTC@next\MTC@list\\}
+\def\MTC@loop#1{\openin\@inputcheck#1\relax
+ \ifeof\@inputcheck
+ \typeout{^^JNo file #1^^JMINITOCS NOT PREPARED.^^J}%
+ \expandafter\MTC@toc
+ \else
+ \typeout{PREPARING MINITOCS FROM #1}%
+ \expandafter\MTC@read\fi}
+\def\MTC@read{%
+ \read\@inputcheck to\MTC@line
+ \expandafter\MTC@test\MTC@line....\MTC@%
+ }%
+% now patch MTC@test % %%BJ: call \MTC@contentsline with 4 instead of 3 parameters
+\newcommand{\scrubdots}[5]{#1} %%BJ: added by Tony Roberts
+\long\def\MTC@test#1#2#3#4#5\MTC@{%
+ \ifx#1\contentsline
+ \let\mtc@string\string
+ \MTC@contentsline{#2}{#3}{#4}{\scrubdots#5}% %%BJ: 4. parameter added by Tony Roberts
+ \let\mtc@string\relax
+ \else\ifx#1\@input
+ \edef\MTC@list{\MTC@list#2\relax}%
+ \else\ifx#1\chapterend % \chapter* closes .mtcN (.mtc->.M on MS-DOS)
+ \immediate\closeout\tf@mtc
+ \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
+ \else\ifx#1\chapterbegin
+ \addtocounter{mtc}{-1}% % \chapter* has done a parasite increment
+ \fi\fi\fi\fi
+ \ifeof\@inputcheck\expandafter\MTC@toc
+ \else\expandafter\MTC@read\fi}%
+%%%%%%%%%% end of minitoc patches
+
+
+\def\MLF@next#1\relax#2\\{%
+ \edef\MLF@list{#2}%
+ \MLF@loop{#1}}
+\def\MLF@lof{%
+ \ifx\MLF@list\@empty\else\expandafter\MLF@explist\fi}
+
+\def\MLF@contentsline#1#2#3{%
+\gdef\themtc{\arabic{mtc}}
+\expandafter%
+ \ifx\csname #1\endcsname\xchapter\relax
+ \stepcounter{mtc}% % the mtc counter simulates the chapter counter
+\@ifundefined{SHORTEXT}%
+{\typeout{Writing\space\jobname.mlf\themtc}% % UNIX
+\def\mlfname{\jobname.mlf\themtc}}% % UNIX
+{\typeout{Writing\space\jobname.F\themtc}% % MS-DOS
+\def\mlfname{\jobname.F\themtc}}% % MS-DOS
+ \immediate\closeout\tf@mtc % close current .mlfN .mlf->.F on MS-DOS
+ \immediate\openout\tf@mtc=\mlfname % open next .mlfN (.mlf->.F if MS-DOS)
+ \fi
+\expandafter% % extracts and writes info for sections, etc.
+ \ifx\csname #1\endcsname\figure\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\mlffont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\mlffont%
+ \space #3}}}}\@tempa
+ \fi
+}
+
+\def\MLF@explist{\expandafter\MLF@next\MLF@list\\}
+\def\MLF@loop#1{\openin\@inputcheck#1\relax
+ \ifeof\@inputcheck
+ \typeout{^^JNo file #1^^JMINILOFS NOT PREPARED.^^J}%
+ \expandafter\MLF@lof
+ \else
+ \typeout{PREPARING MINILOFS FROM #1}%
+ \expandafter\MLF@read\fi}
+\def\MLF@read{%
+ \read\@inputcheck to\MLF@line
+ \expandafter\MLF@test\MLF@line....\MLF@%
+ }%
+\long\def\MLF@test#1#2#3#4#5\MLF@{%
+ \ifx#1\contentsline
+ \let\mtc@string\string
+ \MLF@contentsline{#2}{#3}{#4}%
+ \let\mtc@string\relax
+ \else\ifx#1\@input
+ \edef\MLF@list{\MLF@list#2\relax}%
+ \else\ifx#1\chapterend % \chapter* closes .mlfN (.mlf->.F on MS-DOS)
+ \immediate\closeout\tf@mtc
+ \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
+ \else\ifx#1\chapterbegin
+ \addtocounter{mtc}{-1}% % \chapter* has done a parasite increment
+ \fi\fi\fi\fi
+ \ifeof\@inputcheck\expandafter\MLF@lof
+ \else\expandafter\MLF@read\fi}%
+
+\def\MLT@next#1\relax#2\\{%
+ \edef\MLT@list{#2}%
+ \MLT@loop{#1}}
+\def\MLT@lot{%
+ \ifx\MLT@list\@empty\else\expandafter\MLT@explist\fi}
+
+\def\MLT@contentsline#1#2#3{%
+\gdef\themtc{\arabic{mtc}}
+\expandafter%
+ \ifx\csname #1\endcsname\xchapter\relax
+ \stepcounter{mtc}% % the mtc counter simulates the chapter counter
+\@ifundefined{SHORTEXT}%
+{\typeout{Writing\space\jobname.mlt\themtc}% % UNIX
+\def\mltname{\jobname.mlt\themtc}}% % UNIX
+{\typeout{Writing\space\jobname.T\themtc}% % MS-DOS
+\def\mltname{\jobname.T\themtc}}% % MS-DOS
+ \immediate\closeout\tf@mtc % close current .mltN .mlt->.T on MS-DOS
+ \immediate\openout\tf@mtc=\mltname % open next .mltN (.mlt->.T if MS-DOS)
+ \fi
+\expandafter% % extracts and writes info for sections, etc.
+ \ifx\csname #1\endcsname\table\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\mltfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\mltfont%
+ \space #3}}}}\@tempa
+ \fi
+}
+
+\def\MLT@explist{\expandafter\MLT@next\MLT@list\\}
+\def\MLT@loop#1{\openin\@inputcheck#1\relax
+ \ifeof\@inputcheck
+ \typeout{^^JNo file #1^^JMINILOTS NOT PREPARED.^^J}%
+ \expandafter\MLT@lot
+ \else
+ \typeout{PREPARING MINILOTS FROM #1}%
+ \expandafter\MLT@read\fi}
+\def\MLT@read{%
+ \read\@inputcheck to\MLT@line
+ \expandafter\MLT@test\MLT@line....\MLT@%
+ }%
+\long\def\MLT@test#1#2#3#4#5\MLT@{%
+ \ifx#1\contentsline
+ \let\mtc@string\string
+ \MLT@contentsline{#2}{#3}{#4}%
+ \let\mtc@string\relax
+ \else\ifx#1\@input
+ \edef\MLT@list{\MLT@list#2\relax}%
+ \else\ifx#1\chapterend % \chapter* closes .mltN (.mlt->.T on MS-DOS)
+ \immediate\closeout\tf@mtc
+ \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
+ \else\ifx#1\chapterbegin
+ \addtocounter{mtc}{-1}% % \chapter* has done a parasite increment
+ \fi\fi\fi\fi
+ \ifeof\@inputcheck\expandafter\MLT@lot
+ \else\expandafter\MLT@read\fi}%
+} % end of chapter level
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+% If \part is defined (book or article-like document),
+% the following macros are allowed
+% Sometimes, we need to make a difference between book and
+% article (is \chapter defined?), to have a different layout.
+\@ifundefined{part}{}%
+{%
+\def\xpart{xpart}
+\def\Thepart{\arabic{part}}
+\def\firstpartis#1%
+ {\typeout{^^JWARNING*** \string\firstpartis}%
+ \typeout{ is an obsolete command^^J}}
+\newcounter{ptc} % counter of parttocs
+\setcounter{ptc}{0}
+\def\theptc{\arabic{ptc}}
+\newcounter{parttocdepth} % analog to tocdepth, but for parttocs
+\setcounter{parttocdepth}{2}
+
+\@ifundefined{chapter}{%
+\def\ptc@rule{\kern-3\p@%
+ \hrule width \columnwidth \kern2.6\p@}% the \hrule is .4pt high
+}{\let\ptc@rule\relax} % no rule before/after parttoc/partlof/partlot
+ % for books
+
+\newlength\ptcindent % indentation (left/right) of parttocs
+\@ifundefined{chapter}{\ptcindent=24pt}{\ptcindent=0pt} % defaut value
+
+\@ifundefined{chapter}{%
+\def\ptcfont{\small\rm} % font for the parttoc
+\def\ptcSfont{\small\bf} % font for the parttoc (sections)
+\def\ptcSSfont{\ptcfont} % font for the parttoc (subsections)
+\def\ptcSSSfont{\ptcfont} % font for the parttoc (subsubsections)
+\def\ptcPfont{\ptcfont} % font for the parttoc (paragraphs)
+\def\ptcSPfont{\ptcfont} % font for the parttoc (subparagraphs)
+\def\plffont{\ptcfont} % font for the partlof (figures)
+\def\pltfont{\ptcfont} % font for the partlot (tables)
+\def\ptifont{\large\bf} % font for titles
+}{%
+\def\ptcfont{\normalsize\rm} % font for the parttoc
+\def\ptcCfont{\normalsize\bf} % font for the parttoc (chapters)
+\def\ptcSfont{\normalsize\rm} % font for the parttoc (sections)
+\def\ptcSSfont{\ptcfont} % font for the parttoc (subsections)
+\def\ptcSSSfont{\ptcfont} % font for the parttoc (subsubsections)
+\def\ptcPfont{\ptcfont} % font for the parttoc (paragraphs)
+\def\ptcSPfont{\ptcfont} % font for the parttoc (subparagraphs)
+\def\plffont{\ptcfont} % font for the partlof (figures)
+\def\pltfont{\ptcfont} % font for the partlot (tables)
+\def\ptifont{\Huge\bf} % font for titles
+}
+
+% Centering, flushleft, flushright or empty titles.
+\@ifundefined{chapter}{%
+\def\c@pti#1{\null\hfill #1\hfill\null}
+\def\l@pti#1{\null #1\hfill\null}
+\def\r@pti#1{\null\hfill #1\null}
+\def\e@pti#1{\relax}
+\def\n@pti#1{\relax}
+}{%
+\def\e@pti#1{\relax}
+\def\n@pti#1{\relax}
+\def\l@pti#1{\if@twocolumn
+ \@topnewpage[\@makephead@l{#1}]%
+ \else
+ \@makephead@l{#1}%
+ \@afterheading
+ \fi}
+\def\@makephead@l#1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright
+ \ptifont
+ #1\par
+ \nobreak
+ \vskip 40\p@
+ }}
+\def\r@pti#1{\if@twocolumn
+ \@topnewpage[\@makephead@r{#1}]%
+ \else
+ \@makephead@r{#1}%
+ \@afterheading
+ \fi}
+\def\@makephead@r#1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedleft
+ \ptifont
+ #1\par
+ \nobreak
+ \vskip 40\p@
+ }}
+\def\c@pti#1{\if@twocolumn
+ \@topnewpage[\@makephead@c{#1}]%
+ \else
+ \@makephead@c{#1}%
+ \@afterheading
+ \fi}
+\def\@makephead@c#1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \centering
+ \ptifont
+ #1\par
+ \nobreak
+ \vskip 40\p@
+ }}%
+}
+
+% Default: titles on left
+\let\do@ptitc\l@pti
+\let\df@ptitc\l@pti
+\let\do@ptilf\l@pti
+\let\df@ptilf\l@pti
+\let\do@ptilt\l@pti
+\let\df@ptilt\l@pti
+
+%v27 % Language dependent names: default values
+%v27 \@ifundefined{chapter}{%
+%v27 \@ifundefined{ptctitle}{\def\ptctitle{Contents}}{\relax}
+%v27 \@ifundefined{plftitle}{\def\plftitle{Figures}}{\relax}
+%v27 \@ifundefined{plttitle}{\def\plttitle{Tables}}{\relax}}%
+%v27 {%
+%v27 \@ifundefined{ptctitle}{\def\ptctitle{Table of Contents}}{\relax}
+%v27 \@ifundefined{plftitle}{\def\plftitle{List of Figures}}{\relax}
+%v27 \@ifundefined{plttitle}{\def\plttitle{List of Tables}}{\relax}
+%v27 }
+
+\def\ptc@verse{\let\\=\@centercr
+ \list{}{\itemsep\z@\itemindent \z@\listparindent \itemindent
+ \leftmargin\ptcindent
+ \rightmargin\leftmargin}\item[]}
+\def\endptc@verse{\nopagebreak[4]\endlist}
+
+% this command must be used after \part
+% if you need a parttoc (no automatic parttoc)
+\def\parttoc{\@ifnextchar[{\parttoc@}{\parttoc@[d]}}
+
+\def\parttoc@[#1]{%
+ \@ifundefined{chapter}{}{\cleardoublepage
+ \global\let\mtc@markboth\markboth
+ \global\let\@mkboth\markboth
+ \thispagestyle{empty}
+ \mtc@markboth{\uppercase{\ptctitle}}{\uppercase{\ptctitle}}%
+ }%
+ \relax\begin{samepage}% we begin a local group here, using samepage
+ \if #1e\let\do@ptitc\e@pti
+ \else\if #1n\let\do@ptitc\n@pti
+ \else\if #1c\let\do@ptitc\c@pti
+ \else\if #1l\let\do@ptitc\l@pti
+ \else\if #1r\let\do@ptitc\r@pti
+ \else\if #1d\let\do@ptitc\df@ptitc
+ \fi\fi\fi\fi\fi\fi
+ \raggedright % added #14
+ \parskip=\z@%
+ \reset@font\ptcfont%
+ \parindent=\z@%
+ \nopagebreak[4]%
+ \kern-0.8\baselineskip\nopagebreak[4]%
+ \par\noindent
+ \nopagebreak[4]%
+ \ifx\ptc@rule\relax
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\ptifont\do@ptitc{\mtc@v\ptctitle}}\\
+ \end{tabular}\else
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\ptifont\do@ptitc{\mtc@v\ptctitle}}\\\hline
+ \end{tabular}\fi
+ \nopagebreak[4]\null\leavevmode\vrule width \z@
+ height \z@ depth \z@\\\@BBR%
+ \leftmargin\ptcindent
+ \rightmargin\ptcindent
+ \itemindent=\z@\labelwidth=\z@%
+ \labelsep=\z@\listparindent=\z@%
+ \begin{ptc@verse}\c@tocdepth=\c@parttocdepth%
+ \leavevmode\\\@BBR% this blank line is necessary to avoid
+ % a wild negative indentation
+ \vskip -.5\baselineskip
+\begingroup
+ \makeatletter
+ \@ifundefined{ptc@pgno}%
+ {\let\@dottedtocline\@undottedtocline}{}
+\@ifundefined{SHORTEXT}%
+{\def\@tocfile{ptc\Thepart}}% % UNIX
+{\def\@tocfile{P\Thepart}}% % MS-DOS
+ \@input{\jobname.\@tocfile}\if@filesw
+ \fi%
+ \global\@nobreakfalse\endgroup
+ \end{ptc@verse}%
+ \kern0.\baselineskip%
+ \nopagebreak[4]\ptc@rule\null\leavevmode\\%
+ \vskip-1.0\baselineskip
+ \vrule width \z@ height \z@
+ depth \z@\end{samepage}% %## the \\ is essential
+ \par\@ifundefined{chapter}{\pagebreak[1]\vspace*{-1ex}}%
+ {\cleardoublepage}}
+
+% this command must be used after \part
+% if you need a partlof (no automatic partlof)
+\def\partlof{\@ifnextchar[{\partlof@}{\partlof@[d]}}
+
+\def\partlof@[#1]{%
+ \@ifundefined{chapter}{}{\cleardoublepage
+ \global\let\mtc@markboth\markboth
+ \global\let\@mkboth\markboth
+ \thispagestyle{empty}
+ \mtc@markboth{\uppercase{\plftitle}}{\uppercase{\plftitle}}%
+ }%
+ \relax\begin{samepage}% we begin a local group here, using samepage
+ \if #1e\let\do@ptilf\e@pti
+ \else\if #1n\let\do@ptilf\n@pti
+ \else\if #1c\let\do@ptilf\c@pti
+ \else\if #1l\let\do@ptilf\l@pti
+ \else\if #1r\let\do@ptilf\r@pti
+ \else\if #1d\let\do@ptilf\df@ptilf
+ \fi\fi\fi\fi\fi\fi
+ \raggedright % added #14
+ \parskip=\z@%
+ \reset@font\plffont%
+ \parindent=\z@%
+ \nopagebreak[4]%
+ \kern-0.8\baselineskip\nopagebreak[4]%
+ \par\noindent
+ \ifx\ptc@rule\relax
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\ptifont\do@ptilf{\mtc@v\plftitle}}\\
+ \end{tabular}\else
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\ptifont\do@ptilf{\mtc@v\plftitle}}\\
+ \@ifundefined{chapter}{\hline}{}
+ \end{tabular}\fi
+ \nopagebreak[4]\null\leavevmode\vrule width \z@
+ height \z@ depth \z@\\\@BBR%
+ \leftmargin\ptcindent
+ \rightmargin\ptcindent
+ \itemindent=\z@\labelwidth=\z@%
+ \labelsep=\z@\listparindent=\z@%
+ % depth does not matter for partlof
+ \begin{ptc@verse}%\c@tocdepth=\c@parttocdepth%
+ \leavevmode\\\@BBR% this blank line is necessary to avoid
+ % a wild negative indentation
+ \vskip -.5\baselineskip
+\begingroup
+ \makeatletter
+ \@ifundefined{plf@pgno}%
+ {\let\@dottedtocline\@undottedtocline}{}
+\@ifundefined{SHORTEXT}%
+{\def\@tocfile{plf\Thepart}}% % UNIX
+{\def\@tocfile{G\Thepart}}% % MS-DOS
+ \@input{\jobname.\@tocfile}\if@filesw
+ \fi%
+ \global\@nobreakfalse\endgroup
+ \end{ptc@verse}%
+ \kern0.\baselineskip%
+ \nopagebreak[4]\ptc@rule\null\leavevmode\\%
+ \vskip-1.0\baselineskip
+ \vrule width \z@ height \z@
+ depth \z@\end{samepage}% %## the \\ is essential
+ \par\@ifundefined{chapter}{\pagebreak[1]\vspace*{-1ex}}%
+ {\cleardoublepage}}
+
+% Added in version #13
+% this command must be used after \part
+% if you need a minilot (no automatic partlot)
+\def\partlot{\@ifnextchar[{\partlot@}{\partlot@[d]}}
+
+\def\partlot@[#1]{%
+ \@ifundefined{chapter}{}{\cleardoublepage
+ \global\let\mtc@markboth\markboth
+ \global\let\@mkboth\markboth
+ \thispagestyle{empty}
+ \mtc@markboth{\uppercase{\plttitle}}{\uppercase{\plttitle}}%
+ }%
+ \relax\begin{samepage}% we begin a local group here, using samepage
+ \if #1e\let\do@ptilt\e@pti
+ \else\if #1n\let\do@ptilt\n@pti
+ \else\if #1c\let\do@ptilt\c@pti
+ \else\if #1l\let\do@ptilt\l@pti
+ \else\if #1r\let\do@ptilt\r@pti
+ \else\if #1d\let\do@ptilt\df@ptilt
+ \fi\fi\fi\fi\fi\fi
+ \raggedright % added #14
+ \parskip=\z@%
+ \reset@font\pltfont%
+ \parindent=\z@%
+ \nopagebreak[4]%
+ \kern-0.8\baselineskip\nopagebreak[4]%
+ \par\noindent
+ \ifx\ptc@rule\relax
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\ptifont\do@ptilt{\mtc@v\plttitle}}\\
+ \end{tabular}\else
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\ptifont\do@ptilt{\mtc@v\plttitle}}\\
+ \@ifundefined{chapter}{\hline}{}
+ \end{tabular}\fi
+ \nopagebreak[4]\null\leavevmode\vrule width \z@
+ height \z@ depth \z@\\\@BBR%
+ \leftmargin\ptcindent
+ \rightmargin\ptcindent
+ \itemindent=\z@\labelwidth=\z@%
+ \labelsep=\z@\listparindent=\z@%
+ % depth does not matter for partlot
+ \begin{ptc@verse}%\c@tocdepth=\c@parttocdepth%
+ \leavevmode\\\@BBR% this blank line is necessary to avoid
+ % a wild negative indentation
+ \vskip -.5\baselineskip
+\begingroup
+ \makeatletter
+ \@ifundefined{plt@pgno}%
+ {\let\@dottedtocline\@undottedtocline}{}
+\@ifundefined{SHORTEXT}%
+{\def\@tocfile{plt\Thepart}}% % UNIX
+{\def\@tocfile{U\Thepart}}% % MS-DOS
+ \@input{\jobname.\@tocfile}\if@filesw
+ \fi%
+ \global\@nobreakfalse\endgroup
+ \end{ptc@verse}%
+ \kern0.\baselineskip%
+ \nopagebreak[4]\ptc@rule\null\leavevmode\\%
+ \vskip-1.0\baselineskip
+ \vrule width \z@ height \z@
+ depth \z@\end{samepage}% %## the \\ is essential
+ \par\@ifundefined{chapter}{\pagebreak[1]\vspace*{-1ex}}%
+ {\cleardoublepage}}
+
+% I use a depth of 10000 to inhibit the printing of
+% that contentsline.
+\def\l@xpart{\@dottedtocline{\@M}{1.0em}{2.3em}}
+\def\l@pchapter{\@dottedtocline{1}{1.0em}{2.3em}}
+
+\def\pchapter{pchapter}
+
+\let\sv@part\@part
+\def\@part[#1]#2{\sv@part[{#1}]{#2}\relax%
+\addcontentsline{lof}{xpart}{#1}%
+\addcontentsline{lot}{xpart}{#1}%
+}
+
+% tricky code to deal with \part*
+\let\ptc@spart\@spart
+\def\@spart{%
+\addtocontents{toc}{\protect\partend}\ptc@spart%
+}
+\def\@spart{%
+\addtocontents{toc}{\protect\partbegin}\ptc@spart%
+}
+\let\partend\relax
+\let\partbegin\relax
+
+\let\appendixmtc\relax
+
+% this command extracts info from the .toc file
+% and create the .ptcN files (.ptc -> .P on MS-DOS)
+\def\@doparttoc#1{{%
+ \makeatletter
+ \setcounter{ptc}{0} % START VALUE
+ \PTC@next#1.toc\relax\\}\setcounter{ptc}{0}} %23; raz
+% this command extracts info from the .lof file
+% and create the .plfN files (.plf -> .G on MS-DOS)
+\def\@dopartlof#1{{%
+ \makeatletter
+ \setcounter{ptc}{0} % START VALUE
+ \PLF@next#1.lof\relax\\}\setcounter{ptc}{0}} %23: raz
+% this command extracts info from the .lot file
+% and create the .pltN files (.plt -> .U on MS-DOS)
+\def\@dopartlot#1{{%
+ \setcounter{ptc}{0} % START VALUE
+ \makeatletter
+ \PLT@next#1.lot\relax\\}\setcounter{ptc}{0}} %23: raz
+
+\def\doparttoc{\@ifnextchar[{\doparttoc@}{\doparttoc@[l]}}
+\def\dopartlof{\@ifnextchar[{\dopartlof@}{\dopartlof@[l]}}
+\def\dopartlot{\@ifnextchar[{\dopartlot@}{\dopartlot@[l]}}
+
+\def\doparttoc@[#1]{%
+\if #1e\let\df@ptitc\e@pti%
+\else\if #1n\let\df@ptitc\n@pti%
+\else\if #1c\let\df@ptitc\c@pti%
+\else\if #1l\let\df@ptitc\l@pti%
+\else\if #1r\let\df@ptitc\r@pti%
+\fi\fi\fi\fi\fi%
+\@@doparttoc}
+
+\def\dopartlof@[#1]{%
+\if #1e\let\df@ptilf\e@pti%
+\else\if #1n\let\df@ptilf\n@pti%
+\else\if #1c\let\df@ptilf\c@pti%
+\else\if #1l\let\df@ptilf\l@pti%
+\else\if #1r\let\df@ptilf\r@pti%
+\fi\fi\fi\fi\fi%
+\@@dopartlof}
+
+\def\dopartlot@[#1]{%
+\if #1e\let\df@ptilt\e@pti%
+\else\if #1n\let\df@ptilt\n@pti%
+\else\if #1c\let\df@ptilt\c@pti%
+\else\if #1l\let\df@ptilt\l@pti%
+\else\if #1r\let\df@ptilt\r@pti%
+\fi\fi\fi\fi\fi%
+\@@dopartlot}
+
+\def\@@doparttoc{\@doparttoc{\jobname}\immediate\closeout\tf@mtc}
+\def\@@dopartlof{\@dopartlof{\jobname}\immediate\closeout\tf@mtc}
+\def\@@dopartlot{\@dopartlot{\jobname}\immediate\closeout\tf@mtc}
+
+\def\PTC@next#1\relax#2\\{%
+ \edef\PTC@list{#2}%
+ \PTC@loop{#1}}
+\def\PTC@toc{%
+ \ifx\PTC@list\@empty\else\expandafter\PTC@explist\fi}
+
+\def\PTC@contentsline#1#2#3#4{% %%DV: 4 instead of 3 parameters
+\expandafter%
+ \ifx\csname #1\endcsname\part\relax
+ \stepcounter{ptc}% % the ptc counter simulates the part counter
+\@ifundefined{SHORTEXT}%
+{\typeout{Writing\space\jobname.ptc\theptc}% % UNIX
+\def\ptcname{\jobname.ptc\theptc}}% % UNIX
+{\typeout{Writing\space\jobname.P\theptc}% % MS-DOS
+\def\ptcname{\jobname.P\theptc}}% % MS-DOS
+ \immediate\closeout\tf@mtc % close current .ptcN .ptc->.P on MS-DOS
+ \immediate\openout\tf@mtc=\ptcname % open next .ptcN (.ptc->.P if MS-DOS)
+ \fi
+\expandafter% % extracts and writes info for chapters, sections, etc.
+ \ifx\csname #1\endcsname\chapter\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\ptcCfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcCfont%
+ \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\section\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\ptcSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSfont%
+ \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\subsection\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\ptcSSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSSfont%
+ \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\subsubsection\relax
+ \mtc@toks{\noexpand \leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\ptcSSSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSSSfont%
+ \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\paragraph\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\ptcPfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcPfont%
+ \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\subparagraph\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\ptcSPfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSPfont
+ \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
+ \fi
+% Added v25: \starchapter & co.
+\expandafter% % extracts and writes info for chapters, sections, etc.
+ \ifx\csname #1\endcsname\starchapter\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\ptcCfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcCfont%
+ \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\starsection\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\ptcSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSfont%
+ \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\starsubsection\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\ptcSSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSSfont%
+ \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\starsubsubsection\relax
+ \mtc@toks{\noexpand \leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\ptcSSSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSSSfont%
+ \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\starparagraph\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\ptcPfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcPfont%
+ \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\starsubparagraph\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\ptcSPfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSPfont
+ \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
+ \fi
+}
+
+\def\PTC@explist{\expandafter\PTC@next\PTC@list\\}
+\def\PTC@loop#1{\openin\@inputcheck#1\relax
+ \ifeof\@inputcheck
+ \typeout{^^JNo file #1^^JPARTTOCS NOT PREPARED.^^J}%
+ \expandafter\PTC@toc
+ \else
+ \typeout{PREPARING PARTTOCS FROM #1}%
+ \expandafter\PTC@read\fi}
+\def\PTC@read{%
+ \read\@inputcheck to\PTC@line
+ \expandafter\PTC@test\PTC@line....\PTC@%
+ }%
+\long\def\PTC@test#1#2#3#4#5\PTC@{%
+ \ifx#1\contentsline
+ \let\mtc@string\string
+ \PTC@contentsline{#2}{#3}{#4}{\scrubdots#5}% %%DV: 4 instead of 3 params
+ \let\mtc@string\relax
+ \else\ifx#1\@input
+ \edef\PTC@list{\PTC@list#2\relax}%
+ \else\ifx#1\partend % \part* closes .ptcN (.ptc->.P on MS-DOS)
+ \immediate\closeout\tf@mtc
+ \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
+ \else\ifx#1\partbegin
+ \addtocounter{ptc}{-1}% % \part* has done a parasite increment
+ \fi\fi\fi\fi
+ \ifeof\@inputcheck\expandafter\PTC@toc
+ \else\expandafter\PTC@read\fi}%
+
+\def\PLF@next#1\relax#2\\{%
+ \edef\PLF@list{#2}%
+ \PLF@loop{#1}}
+\def\PLF@lof{%
+ \ifx\PLF@list\@empty\else\expandafter\PLF@explist\fi}
+
+\def\PLF@contentsline#1#2#3{%
+\expandafter%
+ \ifx\csname #1\endcsname\xpart\relax
+ \stepcounter{ptc}% % the ptc counter simulates the part counter
+\@ifundefined{SHORTEXT}%
+{\typeout{Writing\space\jobname.plf\theptc}% % UNIX
+\def\plfname{\jobname.plf\theptc}}% % UNIX
+{\typeout{Writing\space\jobname.G\theptc}% % MS-DOS
+\def\plfname{\jobname.G\theptc}}% % MS-DOS
+ \immediate\closeout\tf@mtc % close current .plfN .plf->.G on MS-DOS
+ \immediate\openout\tf@mtc=\plfname % open next .plfN (.plf->.G if MS-DOS)
+ \fi
+\expandafter% % extracts and writes info for sections, etc.
+ \ifx\csname #1\endcsname\figure\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\plffont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\plffont%
+ \space #3}}}}\@tempa
+ \fi
+}
+
+\def\PLF@explist{\expandafter\PLF@next\PLF@list\\}
+\def\PLF@loop#1{\openin\@inputcheck#1\relax
+ \ifeof\@inputcheck
+ \typeout{^^JNo file #1^^JPARTLOFS NOT PREPARED.^^J}%
+ \expandafter\PLF@lof
+ \else
+ \typeout{PREPARING PARTLOFS FROM #1}%
+ \expandafter\PLF@read\fi}
+\def\PLF@read{%
+ \read\@inputcheck to\PLF@line
+ \expandafter\PLF@test\PLF@line....\PLF@%
+ }%
+\long\def\PLF@test#1#2#3#4#5\PLF@{%
+ \ifx#1\contentsline
+ \let\mtc@string\string
+ \PLF@contentsline{#2}{#3}{#4}%
+ \let\mtc@string\relax
+ \else\ifx#1\@input
+ \edef\PLF@list{\PLF@list#2\relax}%
+ \else\ifx#1\partend % \part* closes .plfN (.plf->.G on MS-DOS)
+ \immediate\closeout\tf@mtc
+ \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
+ \else\ifx#1\partbegin
+ \addtocounter{ptc}{-1}% % \part* has done a parasite increment
+ \fi\fi\fi\fi
+ \ifeof\@inputcheck\expandafter\PLF@lof
+ \else\expandafter\PLF@read\fi}%
+
+\def\PLT@next#1\relax#2\\{%
+ \edef\PLT@list{#2}%
+ \PLT@loop{#1}}
+\def\PLT@lot{%
+ \ifx\PLT@list\@empty\else\expandafter\PLT@explist\fi}
+
+\def\PLT@contentsline#1#2#3{%
+\expandafter%
+ \ifx\csname #1\endcsname\xpart\relax
+ \stepcounter{ptc}% % the ptc counter simulates the part counter
+\@ifundefined{SHORTEXT}%
+{\typeout{Writing\space\jobname.plt\theptc}% % UNIX
+\def\pltname{\jobname.plt\theptc}}% % UNIX
+{\typeout{Writing\space\jobname.U\theptc}% % MS-DOS
+\def\pltname{\jobname.U\theptc}}% % MS-DOS
+ \immediate\closeout\tf@mtc % close current .pltN .plt->.U on MS-DOS
+ \immediate\openout\tf@mtc=\pltname % open next .pltN (.plt->.U if MS-DOS)
+ \fi
+\expandafter% % extracts and writes info for chapters, sections, etc.
+ \ifx\csname #1\endcsname\table\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\pltfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\pltfont%
+ \space #3}}}}\@tempa
+ \fi
+}
+
+\def\PLT@explist{\expandafter\PLT@next\PLT@list\\}
+\def\PLT@loop#1{\openin\@inputcheck#1\relax
+ \ifeof\@inputcheck
+ \typeout{^^JNo file #1^^JPARTLOTS NOT PREPARED.^^J}%
+ \expandafter\PLT@lot
+ \else
+ \typeout{PREPARING PARTLOTS FROM #1}%
+ \expandafter\PLT@read\fi}
+\def\PLT@read{%
+ \read\@inputcheck to\PLT@line
+ \expandafter\PLT@test\PLT@line....\PLT@%
+ }%
+\long\def\PLT@test#1#2#3#4#5\PLT@{%
+ \ifx#1\contentsline
+ \let\mtc@string\string
+ \PLT@contentsline{#2}{#3}{#4}%
+ \let\mtc@string\relax
+ \else\ifx#1\@input
+ \edef\PLT@list{\PLT@list#2\relax}%
+ \else\ifx#1\partend % \part* closes .pltN (.plt->.U on MS-DOS)
+ \immediate\closeout\tf@mtc
+ \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
+ \else\ifx#1\partbegin
+ \addtocounter{ptc}{-1}% % \part* has done a parasite increment
+ \fi\fi\fi\fi
+ \ifeof\@inputcheck\expandafter\PLT@lot
+ \else\expandafter\PLT@read\fi}%
+} % end of part stuff
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%%% If \chapter is not defined but \section is, then
+%%% the following macros are available (for article-like documents).
+%%% Braces are inscrutable!
+\@ifundefined{chapter}%
+{\@ifundefined{section}{}{%
+\def\firstsectionis#1%
+ {\typeout{^^JWARNING*** \string\firstsectionis}%
+ \typeout{ is an obsolete command^^J}}
+\newcounter{stc} % counter of secttocs
+\setcounter{stc}{0}
+\newcounter{secttocdepth} % analog to tocdepth, but for secttocs
+\setcounter{secttocdepth}{2}
+
+% rule before/after secttoc/sectlof/sectlot
+\def\stc@rule{\kern-3\p@%
+ \hrule width \columnwidth \kern2.6\p@} % the \hrule is .4pt high
+
+\newlength\stcindent % indentation (left/right) of secttocs
+\stcindent=24pt % defaut value
+\def\stcfont{\small\rm} % font for the secttoc
+\def\stcSSfont{\normalsize\bf} % font for the secttoc (subsections)
+\def\stcSSSfont{\stcfont} % font for the secttoc (subsubsections)
+\def\stcPfont{\stcfont} % font for the secttoc (paragraphs)
+\def\stcSPfont{\stcfont} % font for the secttoc (subparagraphs)
+\def\slffont{\stcfont} % font for the sectlof (figures)
+\def\sltfont{\stcfont} % font for the sectlot (tables)
+\def\stifont{\Large\bf} % font for titles
+
+% Centering, flushleft, flushright or empty titles.
+\def\c@sti#1{\null\hfill #1\hfill\null}
+\def\l@sti#1{\null #1\hfill\null}
+\def\r@sti#1{\null\hfill #1\null}
+\def\e@sti#1{\relax}
+\def\n@sti#1{\relax}
+
+% Default: titles on left
+\let\do@stitc\l@sti
+\let\df@stitc\l@sti
+\let\do@stilf\l@sti
+\let\df@stilf\l@sti
+\let\do@stilt\l@sti
+\let\df@stilt\l@sti
+
+%v27 % Language dependent names: default values
+%v27 \@ifundefined{stctitle}{\def\stctitle{Contents}}{\relax}
+%v27 \@ifundefined{slftitle}{\def\slftitle{Figures}}{\relax}
+%v27 \@ifundefined{slttitle}{\def\slttitle{Tables}}{\relax}
+
+\def\stc@verse{\let\\=\@centercr
+ \list{}{\itemsep\z@\itemindent \z@\listparindent \itemindent
+ \leftmargin\stcindent
+ \rightmargin\leftmargin}\item[]}
+\def\endstc@verse{\nopagebreak[4]\endlist}
+
+% this command must be used after \section
+% if you need a secttoc (no automatic secttoc)
+\def\secttoc{\@ifnextchar[{\secttoc@}{\secttoc@[d]}}
+
+\def\secttoc@[#1]{%
+ \relax\begin{samepage}% we begin a local group here, using samepage
+ \if #1e\let\do@stitc\e@sti
+ \else\if #1n\let\do@stitc\n@sti
+ \else\if #1c\let\do@stitc\c@sti
+ \else\if #1l\let\do@stitc\l@sti
+ \else\if #1r\let\do@stitc\r@sti
+ \else\if #1d\let\do@stitc\df@stitc
+ \fi\fi\fi\fi\fi\fi
+ \raggedright % added #14
+ \parskip=\z@%
+ \reset@font\stcfont%
+ \parindent=\z@%
+ \nopagebreak[4]%
+ \kern-0.8\baselineskip\nopagebreak[4]%
+ \par\noindent
+ \ifx\stc@rule\relax
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\stifont\do@stitc{\mtc@v\stctitle}}\\
+ \end{tabular}\else
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\stifont\do@stitc{\mtc@v\stctitle}}\\\hline
+ \end{tabular}\fi
+ \nopagebreak[4]\null\leavevmode\vrule width \z@
+ height \z@ depth \z@\\\@BBR%
+ \leftmargin\stcindent
+ \rightmargin\stcindent
+ \itemindent=\z@\labelwidth=\z@%
+ \labelsep=\z@\listparindent=\z@%
+ \begin{stc@verse}\c@tocdepth=\c@secttocdepth%
+ \leavevmode\\\@BBR% this blank line is necessary to avoid
+ % a wild negative indentation
+ \vskip -.5\baselineskip
+\begingroup
+ \makeatletter
+ \@ifundefined{stc@pgno}%
+ {\let\@dottedtocline\@undottedtocline}{}
+ \gdef\thestc{\arabic{stc}} %23
+\@ifundefined{SHORTEXT}%
+{\def\@tocfile{stc\thestc}}% % UNIX
+{\def\@tocfile{S\thestc}}% % MS-DOS
+ \@input{\jobname.\@tocfile}\if@filesw
+ \fi%
+ \global\@nobreakfalse\endgroup
+ \end{stc@verse}%
+ \kern0.\baselineskip%
+ \nopagebreak[4]\stc@rule\null\leavevmode\\%
+ \vskip-1.0\baselineskip
+ \vrule width \z@ height \z@
+ depth \z@\end{samepage}% %## the \\ is essential
+ \par\pagebreak[1]\vspace*{-1ex}}%
+ % some space under the secttoc
+
+% this command must be used after \section
+% if you need a sectlof (no automatic sectlof)
+\def\sectlof{\@ifnextchar[{\sectlof@}{\sectlof@[d]}}
+
+\def\sectlof@[#1]{%
+ \relax\begin{samepage}% we begin a local group here, using samepage
+ \if #1e\let\do@stilf\e@sti
+ \else\if #1n\let\do@stilf\n@sti
+ \else\if #1c\let\do@stilf\c@sti
+ \else\if #1l\let\do@stilf\l@sti
+ \else\if #1r\let\do@stilf\r@sti
+ \else\if #1d\let\do@stilf\df@stilf
+ \fi\fi\fi\fi\fi\fi
+ \raggedright % added #14
+ \parskip=\z@%
+ \reset@font\slffont%
+ \parindent=\z@%
+ \nopagebreak[4]%
+ \kern-0.8\baselineskip\nopagebreak[4]%
+ \par\noindent
+ \ifx\stc@rule\relax % correction 07Nov94 v23
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\stifont\do@stilf{\mtc@v\slftitle}}\\
+ \end{tabular}\else
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\stifont\do@stilf{\mtc@v\slftitle}}\\\hline
+ \end{tabular}\fi
+ \nopagebreak[4]\null\leavevmode\vrule width \z@
+ height \z@ depth \z@\\\@BBR%
+ \leftmargin\stcindent
+ \rightmargin\stcindent
+ \itemindent=\z@\labelwidth=\z@%
+ \labelsep=\z@\listparindent=\z@%
+ % depth does not matter for sectlof
+ \begin{stc@verse}%\c@tocdepth=\c@secttocdepth%
+ \leavevmode\\\@BBR% this blank line is necessary to avoid
+ % a wild negative indentation
+ \vskip -.5\baselineskip
+\begingroup
+ \makeatletter
+ \@ifundefined{slf@pgno}%
+ {\let\@dottedtocline\@undottedtocline}{}
+ \gdef\thestc{\arabic{stc}} %23
+\@ifundefined{SHORTEXT}%
+{\def\@tocfile{slf\thestc}}% % UNIX
+{\def\@tocfile{H\thestc}}% % MS-DOS
+ \@input{\jobname.\@tocfile}\if@filesw
+ \fi%
+ \global\@nobreakfalse\endgroup
+ \end{stc@verse}%
+ \kern0.\baselineskip%
+ \nopagebreak[4]\stc@rule\null\leavevmode\\%
+ \vskip-1.0\baselineskip
+ \vrule width \z@ height \z@
+ depth \z@\end{samepage}% %## the \\ is essential
+ \par\pagebreak[1]\vspace*{-1ex}}%
+ % some space under the secttoc
+
+% Added in version #13
+% this command must be used after \section
+% if you need a sectlot (no automatic sectlot)
+\def\sectlot{\@ifnextchar[{\sectlot@}{\sectlot@[d]}}
+
+\def\sectlot@[#1]{%
+ \relax\begin{samepage}% we begin a local group here, using samepage
+ \if #1e\let\do@stilt\e@sti
+ \else\if #1n\let\do@stilt\n@sti
+ \else\if #1c\let\do@stilt\c@sti
+ \else\if #1l\let\do@stilt\l@sti
+ \else\if #1r\let\do@stilt\r@sti
+ \else\if #1d\let\do@stilt\df@stilt
+ \fi\fi\fi\fi\fi\fi
+ \raggedright % added #14
+ \parskip=\z@%
+ \reset@font\sltfont%
+ \parindent=\z@%
+ \nopagebreak[4]%
+ \kern-0.8\baselineskip\nopagebreak[4]%
+ \par\noindent
+ \ifx\stc@rule\relax
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\stifont\do@stilt{\mtc@v\slttitle}}\\
+ \end{tabular}\else
+ \begin{tabular}{@{}p{\columnwidth}@{}}
+ {\reset@font\stifont\do@stilt{\mtc@v\slttitle}}\\\hline
+ \end{tabular}\fi
+ \nopagebreak[4]\null\leavevmode\vrule width \z@
+ height \z@ depth \z@\\\@BBR%
+ \leftmargin\stcindent
+ \rightmargin\stcindent
+ \itemindent=\z@\labelwidth=\z@%
+ \labelsep=\z@\listparindent=\z@%
+ % depth does not matter for sectlot
+ \begin{stc@verse}%\c@tocdepth=\c@secttocdepth%
+ \leavevmode\\\@BBR% this blank line is necessary to avoid
+ % a wild negative indentation
+ \vskip -.5\baselineskip
+\begingroup
+ \makeatletter
+ \@ifundefined{slt@pgno}%
+ {\let\@dottedtocline\@undottedtocline}{}
+ \gdef\thestc{\arabic{stc}}
+\@ifundefined{SHORTEXT}%
+{\def\@tocfile{slt\thestc}}% % UNIX
+{\def\@tocfile{V\thestc}}% % MS-DOS
+ \@input{\jobname.\@tocfile}\if@filesw
+ \fi%
+ \global\@nobreakfalse\endgroup
+ \end{stc@verse}%
+ \kern0.\baselineskip%
+ \nopagebreak[4]\stc@rule\null\leavevmode\\%
+ \vskip-1.0\baselineskip
+ \vrule width \z@ height \z@
+ depth \z@\end{samepage}% %## the \\ is essential
+ \par\pagebreak[1]\vspace*{-1ex}}%
+ % some space under the secttoc
+
+% I use a depth of 10000 to inhibit the printing of
+% that contentsline.
+\def\l@xsect{\@dottedtocline{\@M}{1.0em}{2.3em}}
+\def\l@schapter{\@dottedtocline{1}{1.0em}{2.3em}}
+
+\def\xsect{xsect}
+\def\schapter{schapter}
+
+\let\sv@sect\@sect
+\gdef\@sect#1#2#3#4#5#6[#7]#8{%
+\ifnum #2=1
+\addcontentsline{lof}{xsect}{#7}%
+\addcontentsline{lot}{xsect}{#7}%
+\fi
+\sv@sect{#1}{#2}{#3}{#4}{#4}{#5}{#6}[{#7}]{#8}}
+
+\def\@sect#1#2#3#4#5#6[#7]#8{
+\expandafter
+\ifx\csname #1\endcsname\section\relax % ADDED
+\addcontentsline{lof}{xsect}{#7}% ADDED
+\addcontentsline{lot}{xsect}{#7}% ADDED
+\fi % ADDED
+\ifx\csname #1\endcsname\starsection\relax % ADDED v25
+\addcontentsline{lof}{xsect}{#7}% ADDED v25
+\addcontentsline{lot}{xsect}{#7}% ADDED v25
+\fi % ADDED v25
+\ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty\else
+ \refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname\hskip 1em}\fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #6\relax
+ \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}\addcontentsline
+ {toc}{#1}{\ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}\fi
+ #7}\else
+ \def\@svsechd{#6\hskip #3\relax %% \relax added 2 May 90
+ \@svsec #8\csname #1mark\endcsname
+ {#7}\addcontentsline
+ {toc}{#1}{\ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}\fi
+ #7}}\fi
+ \@xsect{#5}}
+
+% tricky code to deal with \section*
+\let\stc@ssect\@ssect
+\def\@ssect{%
+\addtocontents{toc}{\protect\sectend}\stc@ssect%
+}
+\def\@ssect{%
+\addtocontents{toc}{\protect\sectbegin}\stc@ssect%
+}
+\let\sectend\relax
+\let\sectbegin\relax
+
+\let\appendixmtc\relax
+
+% this command extracts info from the .toc file
+% and create the .stcN files (.stc -> .S on MS-DOS)
+\def\@dosecttoc#1{{%
+ \makeatletter
+ \setcounter{stc}{0} % START VALUE
+ \STC@next#1.toc\relax\\}\setcounter{stc}{0}} %23: raz
+% this command extracts info from the .lof file
+% and create the .slfN files (.slf -> .H on MS-DOS)
+\def\@dosectlof#1{{%
+ \makeatletter
+ \setcounter{stc}{0} % START VALUE
+ \SLF@next#1.lof\relax\\}\setcounter{stc}{0}} %23: raz
+% this command extracts info from the .lot file
+% and create the .sltN files (.slt -> .V on MS-DOS)
+\def\@dosectlot#1{{%
+ \setcounter{stc}{0} % START VALUE
+ \makeatletter
+ \SLT@next#1.lot\relax\\}\setcounter{stc}{0}} %23: raz
+
+\def\dosecttoc{\@ifnextchar[{\dosecttoc@}{\dosecttoc@[l]}}
+\def\dosectlof{\@ifnextchar[{\dosectlof@}{\dosectlof@[l]}}
+\def\dosectlot{\@ifnextchar[{\dosectlot@}{\dosectlot@[l]}}
+
+\def\dosecttoc@[#1]{%
+\if #1e\let\df@stitc\e@sti%
+\else\if #1n\let\df@stitc\n@sti%
+\else\if #1c\let\df@stitc\c@sti%
+\else\if #1l\let\df@stitc\l@sti%
+\else\if #1r\let\df@stitc\r@sti%
+\fi\fi\fi\fi\fi%
+\@@dosecttoc}
+
+\def\dosectlof@[#1]{%
+\if #1e\let\df@stilf\e@sti%
+\else\if #1n\let\df@stilf\n@sti%
+\else\if #1c\let\df@stilf\c@sti%
+\else\if #1l\let\df@stilf\l@sti%
+\else\if #1r\let\df@stilf\r@sti%
+\fi\fi\fi\fi\fi%
+\@@dosectlof}
+
+\def\dosectlot@[#1]{%
+\if #1e\let\df@stilt\e@sti%
+\else\if #1n\let\df@stilt\n@sti%
+\else\if #1c\let\df@stilt\c@sti%
+\else\if #1l\let\df@stilt\l@sti%
+\else\if #1r\let\df@stilt\r@sti%
+\fi\fi\fi\fi\fi%
+\@@dosectlot}
+
+\def\@@dosecttoc{\@dosecttoc{\jobname}\immediate\closeout\tf@mtc}
+\def\@@dosectlof{\@dosectlof{\jobname}\immediate\closeout\tf@mtc}
+\def\@@dosectlot{\@dosectlot{\jobname}\immediate\closeout\tf@mtc}
+
+\def\STC@next#1\relax#2\\{%
+ \edef\STC@list{#2}%
+ \STC@loop{#1}}
+\def\STC@toc{%
+ \ifx\STC@list\@empty\else\expandafter\STC@explist\fi}
+
+\def\STC@contentsline#1#2#3{%
+ \gdef\thestc{\arabic{stc}}
+\expandafter%
+ \ifx\csname #1\endcsname\section\relax
+ \stepcounter{stc}% % the stc counter simulates the section counter
+ \gdef\thestc{\arabic{stc}}
+\@ifundefined{SHORTEXT}%
+{\typeout{Writing\space\jobname.stc\thestc}% % UNIX
+\def\stcname{\jobname.stc\thestc}}% % UNIX
+{\typeout{Writing\space\jobname.S\thestc}% % MS-DOS
+\def\stcname{\jobname.S\thestc}}% % MS-DOS
+ \immediate\closeout\tf@mtc % close current .stcN .stc->.S on MS-DOS
+ \immediate\openout\tf@mtc=\stcname % open next .stcN (.stc->.S if MS-DOS)
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\subsection\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\stcSSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\stcSSfont%
+ \space #3}}}}\@tempa
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\subsubsection\relax
+ \mtc@toks{\noexpand \leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\stcSSSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\stcSSSfont%
+ \space #3}}}}\@tempa
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\paragraph\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\stcPfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\stcPfont%
+ \space #3}}}}\@tempa
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\subparagraph\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\stcSPfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\stcSPfont
+ \space #3}}}}\@tempa
+ \fi
+% Added v25: \starsection and co.
+ \ifx\csname #1\endcsname\starsection\relax
+ \stepcounter{stc}% % the stc counter simulates the section counter
+ \gdef\thestc{\arabic{stc}}
+\@ifundefined{SHORTEXT}%
+{\typeout{Writing\space\jobname.stc\thestc}% % UNIX
+\def\stcname{\jobname.stc\thestc}}% % UNIX
+{\typeout{Writing\space\jobname.S\thestc}% % MS-DOS
+\def\stcname{\jobname.S\thestc}}% % MS-DOS
+ \immediate\closeout\tf@mtc % close current .stcN .stc->.S on MS-DOS
+ \immediate\openout\tf@mtc=\stcname % open next .stcN (.stc->.S if MS-DOS)
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\starsubsection\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\stcSSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\stcSSfont%
+ \space #3}}}}\@tempa
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\starsubsubsection\relax
+ \mtc@toks{\noexpand \leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\stcSSSfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\stcSSSfont%
+ \space #3}}}}\@tempa
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\starparagraph\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\stcPfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\stcPfont%
+ \space #3}}}}\@tempa
+ \fi
+\expandafter%
+ \ifx\csname #1\endcsname\starsubparagraph\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\stcSPfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\stcSPfont
+ \space #3}}}}\@tempa
+ \fi
+}
+
+\def\STC@explist{\expandafter\STC@next\STC@list\\}
+\def\STC@loop#1{\openin\@inputcheck#1\relax
+ \ifeof\@inputcheck
+ \typeout{^^JNo file #1^^JSECTTOCS NOT PREPARED.^^J}%
+ \expandafter\STC@toc
+ \else
+ \typeout{PREPARING SECTTOCS FROM #1}%
+ \expandafter\STC@read\fi}
+\def\STC@read{%
+ \read\@inputcheck to\STC@line
+ \expandafter\STC@test\STC@line....\STC@%
+ }%
+\long\def\STC@test#1#2#3#4#5\STC@{%
+ \ifx#1\contentsline
+ \let\mtc@string\string
+ \STC@contentsline{#2}{#3}{#4}%
+ \let\mtc@string\relax
+ \else\ifx#1\@input
+ \edef\STC@list{\STC@list#2\relax}%
+ \else\ifx#1\sectend % \section* closes .stcN (.stc->.S on MS-DOS)
+ \immediate\closeout\tf@mtc
+ \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
+ \else\ifx#1\sectbegin
+ \addtocounter{stc}{-1}% % \section* has done a parasite increment
+ \fi\fi\fi\fi
+ \ifeof\@inputcheck\expandafter\STC@toc
+ \else\expandafter\STC@read\fi}%
+
+\def\SLF@next#1\relax#2\\{%
+ \edef\SLF@list{#2}%
+ \SLF@loop{#1}}
+\def\SLF@lof{%
+ \ifx\SLF@list\@empty\else\expandafter\SLF@explist\fi}
+
+\def\SLF@contentsline#1#2#3{%
+ \gdef\thestc{\arabic{stc}}
+\expandafter%
+ \ifx\csname #1\endcsname\xsect\relax
+ \stepcounter{stc}% % the stc counter simulates the section counter
+ \gdef\thestc{\arabic{stc}}
+\@ifundefined{SHORTEXT}%
+{\typeout{Writing\space\jobname.slf\thestc}% % UNIX
+\def\slfname{\jobname.slf\thestc}}% % UNIX
+{\typeout{Writing\space\jobname.G\thestc}% % MS-DOS
+\def\slfname{\jobname.H\thestc}}% % MS-DOS
+ \immediate\closeout\tf@mtc % close current .slfN .slf->.H on MS-DOS
+ \immediate\openout\tf@mtc=\slfname % open next .slfN (.slf->.H if MS-DOS)
+ \fi
+\expandafter% % extracts and writes info for sections, etc.
+ \ifx\csname #1\endcsname\figure\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\slffont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\slffont%
+ \space #3}}}}\@tempa
+ \fi
+}
+
+\def\SLF@explist{\expandafter\SLF@next\SLF@list\\}
+\def\SLF@loop#1{\openin\@inputcheck#1\relax
+ \ifeof\@inputcheck
+ \typeout{^^JNo file #1^^JSECTLOFS NOT PREPARED.^^J}%
+ \expandafter\SLF@lof
+ \else
+ \typeout{PREPARING SECTLOFS FROM #1}%
+ \expandafter\SLF@read\fi}
+\def\SLF@read{%
+ \read\@inputcheck to\SLF@line
+ \expandafter\SLF@test\SLF@line....\SLF@%
+ }%
+\long\def\SLF@test#1#2#3#4#5\SLF@{%
+ \ifx#1\contentsline
+ \let\mtc@string\string
+ \SLF@contentsline{#2}{#3}{#4}%
+ \let\mtc@string\relax
+ \else\ifx#1\@input
+ \edef\SLF@list{\SLF@list#2\relax}%
+ \else\ifx#1\sectend % \section* closes .slfN (.slf->.H on MS-DOS)
+ \immediate\closeout\tf@mtc
+ \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
+ \else\ifx#1\sectbegin
+ \addtocounter{stc}{-1}% % \section* has done a parasite increment
+ \fi\fi\fi\fi
+ \ifeof\@inputcheck\expandafter\SLF@lof
+ \else\expandafter\SLF@read\fi}%
+
+\def\SLT@next#1\relax#2\\{%
+ \edef\SLT@list{#2}%
+ \SLT@loop{#1}}
+\def\SLT@lot{%
+ \ifx\SLT@list\@empty\else\expandafter\SLT@explist\fi}
+
+\def\SLT@contentsline#1#2#3{%
+ \gdef\thestc{\arabic{stc}}
+\expandafter%
+ \ifx\csname #1\endcsname\xsect\relax
+ \stepcounter{stc}% % the stc counter simulates the section counter
+ \gdef\thestc{\arabic{stc}}
+\@ifundefined{SHORTEXT}%
+{\typeout{Writing\space\jobname.slt\thestc}% % UNIX
+\def\mltname{\jobname.slt\thestc}}% % UNIX
+{\typeout{Writing\space\jobname.V\thestc}% % MS-DOS
+\def\sltname{\jobname.V\thestc}}% % MS-DOS
+ \immediate\closeout\tf@mtc % close current .sltN .slt->.V on MS-DOS
+ \immediate\openout\tf@mtc=\sltname % open next .sltN (.slt->.V if MS-DOS)
+ \fi
+\expandafter% % extracts and writes info for subsections, etc.
+ \ifx\csname #1\endcsname\table\relax
+ \mtc@toks{\noexpand\leavevmode#2}%
+ \edef\@tempa{\immediate\write\tf@mtc {%
+ {\string\reset@font\string\sltfont\string\mtc@string%
+ \string\contentsline{#1}%
+ {\noexpand\the\mtc@toks}{\string\reset@font\string\sltfont%
+ \space #3}}}}\@tempa
+ \fi
+}
+
+\def\SLT@explist{\expandafter\SLT@next\SLT@list\\}
+\def\SLT@loop#1{\openin\@inputcheck#1\relax
+ \ifeof\@inputcheck
+ \typeout{^^JNo file #1^^JSECTLOTS NOT PREPARED.^^J}%
+ \expandafter\SLT@lot
+ \else
+ \typeout{PREPARING SECTLOTS FROM #1}%
+ \expandafter\SLT@read\fi}
+\def\SLT@read{%
+ \read\@inputcheck to\SLT@line
+ \expandafter\SLT@test\SLT@line....\SLT@%
+ }%
+\long\def\SLT@test#1#2#3#4#5\SLT@{%
+ \ifx#1\contentsline
+ \let\mtc@string\string
+ \SLT@contentsline{#2}{#3}{#4}%
+ \let\mtc@string\relax
+ \else\ifx#1\@input
+ \edef\SLT@list{\SLT@list#2\relax}%
+ \else\ifx#1\sectend % \section* closes .sltN (.slt->.V on MS-DOS)
+ \immediate\closeout\tf@mtc
+ \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
+ \else\ifx#1\sectbegin
+ \addtocounter{stc}{-1}% % \section* has done a parasite increment
+ \fi\fi\fi\fi
+ \ifeof\@inputcheck\expandafter\SLT@lot
+ \else\expandafter\SLT@read\fi}%
+}}{}
+
+\@ifundefined{section}{}{\let\l@listof\l@section} %v27
+\@ifundefined{chapter}{}{\let\l@listof\l@chapter} %v27
+\@ifundefined{part}{}{\let\l@starpart\l@part}
+\@ifundefined{chapter}{}{\let\l@starchapter\l@chapter}
+\@ifundefined{section}{}{\let\l@starsection\l@section}
+\@ifundefined{subsection}{}{\let\l@starsubsection\l@subsection}
+\@ifundefined{subsubsection}{}{\let\l@starsubsubsection\l@subsubsection}
+\@ifundefined{paragraph}{}{\let\l@starparagraph\l@paragraph}
+\@ifundefined{subparagraph}{}{\let\l@starsubparagraph\l@subparagraph}
+
+\def\noptcrule{\let\ptc@rule\relax}
+\def\nomtcrule{\let\mtc@rule\relax}
+\def\nostcrule{\let\stc@rule\relax}
+\def\ptcrule{\def\ptc@rule{\kern-3\p@%
+ \hrule width \columnwidth \kern2.6\p@}} % the \hrule is .4pt high
+\def\mtcrule{\def\mtc@rule{\kern-3\p@%
+ \hrule width \columnwidth \kern2.6\p@}} % the \hrule is .4pt high
+\def\stcrule{\def\stc@rule{\kern-3\p@%
+ \hrule width \columnwidth \kern2.6\p@}} % the \hrule is .4pt high
+
+%%%% Language dependent part
+\DeclareOption{american}{\input{english.mld}}
+\DeclareOption{austrian}{\input{german.mld}}
+\DeclareOption{brazil}{\input{portuges.mld}}
+\DeclareOption{breton}{\input{breton.mld}} %v26
+\DeclareOption{catalan}{\input{catalan.mld}}
+\DeclareOption{croatian}{\input{croatian.mld}}
+\DeclareOption{czech}{\input{czech.mld}}
+\DeclareOption{danish}{\input{danish.mld}}
+\DeclareOption{dutch}{\input{dutch.mld}}
+\DeclareOption{english}{\input{english.mld}}
+\DeclareOption{esperant}{\input{esperant.mld}} %v26
+\DeclareOption{esperanto}{\input{esperant.mld}} %v26
+\DeclareOption{finnish}{\input{finnish.mld}}
+\DeclareOption{francais}{\input{french.mld}}
+\DeclareOption{french}{\input{french.mld}}
+\DeclareOption{galician}{\input{galician.mld}}
+\DeclareOption{german}{\input{german.mld}}
+\DeclareOption{germanb}{\input{germanb.mld}} %v26
+\DeclareOption{greek}{\input{greek.mld}} %v26
+\DeclareOption{hungarian}{\input{magyar.mld}}
+\DeclareOption{irish}{\input{irish.mld}} %v26
+\DeclareOption{italian}{\input{italian.mld}}
+\DeclareOption{lsorbian}{\input{lsorbian.mld}} %v26
+\DeclareOption{magyar}{\input{magyar.mld}}
+\DeclareOption{norsk}{\input{norsk.mld}}
+\DeclareOption{nynorsk}{\input{nynorsk.mld}} %v25
+\DeclareOption{polish}{\input{polish.mld}}
+\DeclareOption{portuges}{\input{portuges.mld}}
+\DeclareOption{romanian}{\input{romanian.mld}}
+%%%%russian not supported \DeclareOption{russian}{\input{russian.mld}}
+\DeclareOption{russianb}{\input{russianb.mld}} %v26
+\DeclareOption{scottish}{\input{scottish.mld}} %v26
+\DeclareOption{slovak}{\input{slovak.mld}}
+\DeclareOption{slovene}{\input{slovene.mld}}
+\DeclareOption{spanish}{\input{spanish.mld}}
+\DeclareOption{swedish}{\input{swedish.mld}}
+\DeclareOption{turkish}{\input{turkish.mld}}
+\DeclareOption{usorbian}{\input{usorbian.mld}} %v26
+\DeclareOption{vietnam}{\input{vietnam.mld}} %v27
+\DeclareOption{vietnamese}{\input{vietnam.mld}} %v27
+\DeclareOption{arab}{\input{arab.mld}} %v27
+\DeclareOption{arabic}{\input{arab.mld}} %v27
+\ExecuteOptions{english} %v27 % default
+\ProcessOptions*
+%%\languagespecific{russian.dtx}
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\endinput
+%%
+%% End of file `minitoc.sty'.
diff --git a/macros/latex/contrib/hyperref/nameref.dtx b/macros/latex/contrib/hyperref/nameref.dtx
new file mode 100644
index 0000000000..ace38a90d7
--- /dev/null
+++ b/macros/latex/contrib/hyperref/nameref.dtx
@@ -0,0 +1,903 @@
+% \iffalse
+%% File: nameref.dtx
+%% Copyright (C) 1995-1999 Sebastian Rahtz
+%% 2000 Sebastian Rahtz, Heiko Oberdiek
+%% 2001-2012 Heiko Oberdiek
+%% 2016 Oberdiek Package Suport Group
+%% https://github.com/ho-tex/hyperref/issues
+%%
+%% This file is part of the `Hyperref Bundle'.
+%% -------------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% The list of all files belonging to the `Hyperref Bundle' is
+%% given in the file `manifest.txt'.
+%
+%<*dtx>
+\ProvidesFile{nameref.dtx}
+%</dtx>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{nameref}
+%<driver>\ProvidesFile{nameref.drv}
+% \fi
+% \ProvidesFile{nameref.dtx}
+ [2016/05/21 v2.44 Cross-referencing by name of section]%
+%
+% \CheckSum{714}
+%
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[numbered]{hypdoc}
+\usepackage{bmhydoc}
+\usepackage{hologo}
+\EnableCrossrefs
+\CodelineIndex
+\newcommand*{\xpackage}[1]{\textsf{#1}}
+\begin{document}
+ \GetFileInfo{nameref.sty}%
+ \title{%
+ Section name references in \LaTeX
+ \thanks{%
+ This file has version number \fileversion, %
+ last revised \filedate.%
+ }%
+ }%
+ \author{Sebastian Rahtz (deceased)\\%
+ Heiko Oberdiek (maintainer)\\%
+ \texttt{https://github.com/ho-tex/hyperref/issues}}%
+ \date{\filedate}%
+ \maketitle
+ \makeatletter
+ \@ifundefined{HyperrefOverview}{}{%
+ \HyperrefOverview*%
+ }%
+ \tableofcontents
+ \DocInput{nameref.dtx}%
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \StopEventually{}
+%
+% \section{Introduction}
+% Cross-referencing to include the \emph{name} of the section, rather than
+% just the number or page. This works by redefining some of the inside
+% \LaTeX\ macros, so it is vulnerable to future changes.
+% \section{History}
+% Sebastian Rahtz, for Lou Burnard, March 15th 1994;\\
+% SPQR CERN July 1994;\\
+% Last mod. Sept. 3th MG;\\
+% Sept. 19th SPQR;\\
+% April 11th 1995 SPQR (added section formatting hook);\\
+% April 14th 1995 SPQR (compatibility with hyperref);\\
+% June 22 1995 SPQR (removed typeout from Sectionformat);\\
+% September 22 1997 added varioref hacks by Corey Minyard;\\
+% September 28th changes by David Carlisle.\\
+% More recent changes are recorded in ChangeLog.
+%
+% The versions before 2009/11/27 v2.32 did not expand the
+% title strings (of \cs{section}, \cs{caption}, \dots).
+% Then the behaviour switched to expanding, because this
+% allows to remove unwanted macros (\cs{label}, \dots).
+% Despite this method is used in package \textsf{titleref}
+% and class \textsf{memoir}, the first feedbacks let me conclude
+% that this is not robust enough. Therefore I wrote package
+% \textsf{gettitlestring} that uses the non-expanding
+% method as default. It also allows me to use this package
+% in package \textsf{zref-titleref}.
+% See the package documentation of package \textsf{gettitlestring}
+% how to change the method. It also provides a hook to remove
+% additional unwanted macros, not supported by the package.
+% Example:
+%\begin{quote}
+%\begin{verbatim}
+%\usepackage{gettitlestring}
+%\GetTitleStringDisableCommands{%
+% \let\mylabel\@gobble
+% \renewcommand\myindex[2]{}%
+%}
+%\end{verbatim}
+%\end{quote}
+%
+% \section{Implementation}
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{refcount}[2006/02/12]
+\RequirePackage{gettitlestring}[2009/12/18]
+\RequirePackage{ltxcmds}[2009/12/12]
+% \end{macrocode}
+%
+% We redefine |\label| so that it also writes the name of the
+% current section to the .aux file; if the name ends in a dot,
+% we zap it. To allow for the \xpackage{hyperref} package, also write
+% fourth and fifth fields (empty by default;
+% used for cross-ref name, and file).
+% \begin{macro}{\NR@strip@period}
+% \begin{macrocode}
+\def\NR@strip@period#1.\ltx@empty#2\@nil{#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\strip@period}
+% Macro \cs{strip@period} was removed in \xpackage{nameref}
+% 2012/07/28 v2.41 and reinserted in 2012/07/31 v2.42 for compatibilty
+% reasons with package \xpackage{subfig}.
+% \begin{macrocode}
+\def\strip@period#1.\relax#2\@@@{#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\def\NR@sanitize@labelname{%
+ \@onelevel@sanitize\@currentlabelname
+ \edef\@currentlabelname{%
+ \expandafter\NR@strip@period\@currentlabelname
+ \ltx@empty.\ltx@empty\@nil
+ }%
+}
+% \end{macrocode}
+%
+% \subsection{\cs{label} stuff}
+%
+% Here is tested, whether package \xpackage{showkeys} is loaded.
+% But if option final is used, the macros of \xpackage{showkeys}
+% are not defined, so we have to check an additional
+% test.
+% \begin{macro}{\ifNR@showkeys}
+% \begin{macrocode}
+\newif\ifNR@showkeys
+\NR@showkeysfalse
+\@ifpackageloaded{showkeys}{%
+ \begingroup
+ \@ifundefined{SK@@label}{%
+ }{%
+ \global\NR@showkeystrue
+ }%
+ \endgroup
+}{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\label@hook}
+% \begin{macrocode}
+\providecommand*{\label@hook}{}
+\ltx@GlobalAppendToMacro{\label@hook}{%
+ \NR@sanitize@labelname
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\label}
+% \begin{macrocode}
+\def\label#1{%
+ \@bsphack
+ \begingroup
+ \def\label@name{#1}%
+ \label@hook
+ \protected@write\@auxout{}{%
+ \string\newlabel{#1}{%
+ {\@currentlabel}%
+ {\thepage}%
+ {\@currentlabelname}%
+ {\@currentHref}{}%
+ }%
+ }%
+ \endgroup
+ \@esphack
+}%
+\ifNR@showkeys
+ \def\label#1{%
+ \@bsphack
+ \SK@\SK@@label{#1}%
+ \begingroup
+ \def\label@name{#1}%
+ \label@hook
+ \protected@write\@auxout{}{%
+ \string\newlabel{#1}{%
+ {\@currentlabel}%
+ {\thepage}%
+ {\@currentlabelname}%
+ {\@currentHref}{}%
+ }%
+ }%
+ \endgroup
+ \@esphack
+ }%
+\fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltx@label}
+% \begin{macrocode}
+\let\ltx@label\label
+% \end{macrocode}
+% \end{macro}
+% Needed for the \emph{subeqnarray} package.
+% \begin{macro}{\slabel}
+% \begin{macrocode}
+\@ifundefined{slabel}{}{%
+ \def\slabel#1{%
+ \@bsphack
+ \if@filesw
+ \begingroup
+ \def\label@name{#1}%
+ \label@hook
+ \let\thepage\relax
+ \def\protect{\noexpand\noexpand\noexpand}%
+ \edef\@tempa{%
+ \write\@auxout{%
+ \string\newlabel{#1}{%
+ {\thesubequation}%
+ {\thepage}%
+ {\@currentlabelname}%
+ {\@currentHref}{}%
+ }%
+ }%
+ }%
+ \expandafter\endgroup
+ \@tempa
+ \if@nobreak\ifvmode\nobreak\fi\fi
+ \fi
+ \@esphack
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% Overload an AMS \hologo{LaTeX} command, which uses |\newlabel|. Sigh!
+% \begin{macro}{\@writetocindents@}
+% \begin{macrocode}
+\def\@writetocindents@{%
+ \begingroup
+ \@for\@tempa:=-1,0,1,2,3\do{%
+ \immediate\write\@auxout{%
+ \string\newlabel{tocindent\@tempa}{%
+ \csname r@tocindent\@tempa\endcsname{}{}{}{}%
+ }%
+ }%
+ }%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Changes of section macros}
+%
+% Add to the underlying section heading macros so that they
+% note the section name for use by label.
+%
+% If a section heading or the like has a |\label| in it,
+% we need to extract it, or subsequent processing breaks.
+%
+% \begin{macro}{\NR@gettitle}
+% \begin{macrocode}
+\def\NR@gettitle#1{%
+ \GetTitleString{#1}%
+ \let\@currentlabelname\GetTitleStringResult
+}
+% \end{macrocode}
+% \end{macro}
+%
+% First the numbered sections. While we are about it, put in
+% a useful section formatting macro.
+% \begin{macro}{\NR@sect}
+% \begin{macrocode}
+\let\NR@sect\@sect
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\newcounter{section@level}
+% \end{macrocode}
+% \begin{macro}{\@sect}
+% \begin{macrocode}
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \setcounter{section@level}{#2}%
+ \NR@gettitle{#7}%
+ \NR@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{\Sectionformat{#8}{#2}}%
+}
+% \end{macrocode}
+% \end{macro}
+% and now the unnumbered ones
+% \begin{macro}{\NR@ssect}
+% \begin{macrocode}
+\let\NR@ssect\@ssect
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\NR@ssect}
+% \begin{macrocode}
+\def\@ssect#1#2#3#4#5{%
+ \NR@gettitle{#5}%
+ \NR@ssect{#1}{#2}{#3}{#4}{\Sectionformat{#5}{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Support for class memoir.
+%
+% \begin{macrocode}
+\ltx@IfUndefined{ifheadnameref}{%
+}{%
+ \ltx@IfUndefined{M@sect}{%
+ }{%
+ \let\NRorg@M@sect\M@sect
+ \def\M@sect#1#2#3#4#5#6[#7][#8]{%
+ \ifheadnameref
+ \NR@gettitle{#8}%
+ \else
+ \NR@gettitle{#7}%
+ \fi
+ \NRorg@M@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}][{#8}]%
+ }%
+ }%
+}
+% \end{macrocode}
+%
+% Parts and chapters are treated differently. sigh.
+% \cs{@part} and \cs{@spart} are \cs{long} because of class memoir.
+%
+% \begin{macrocode}
+\let\NR@part\@part
+\long\def\@part[#1]#2{%
+ \NR@gettitle{#1}%
+ \NR@part[{#1}]{#2}%
+}
+\let\NR@spart\@spart
+\long\def\@spart#1{%
+ \NR@gettitle{#1}%
+ \NR@spart{#1}%
+}
+\let\NR@chapter\@chapter
+\def\@chapter[#1]#2{%
+ \NR@gettitle{#1}%
+ \NR@chapter[{#1}]{#2}%
+}
+\@ifclassloaded{memoir}{%
+ \ltx@IfUndefined{ifheadnameref}{%
+ }{%
+ \def\@chapter[#1]#2{%
+ \ltx@IfUndefined{ch@pt@c}{%
+ \NR@gettitle{#1}%
+ }{%
+ \ifx\ch@pt@c\ltx@empty
+ \NR@gettitle{#2}%
+ \else
+ \def\NR@temp{#1}%
+ \ifx\NR@temp\ltx@empty
+ \expandafter\NR@gettitle\expandafter{\ch@pt@c}%
+ \else
+ \ifheadnameref
+ \NR@gettitle{#1}%
+ \else
+ \expandafter\NR@gettitle\expandafter{\ch@pt@c}%
+ \fi
+ \fi
+ \fi
+ }%
+ \NR@chapter[{#1}]{#2}%
+ }%
+ }%
+}{}
+\let\NR@schapter\@schapter
+\def\@schapter#1{%
+ \NR@gettitle{#1}%
+ \NR@schapter{#1}%
+}
+% \end{macrocode}
+%
+% Captions
+%
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifpackageloaded{hyperref}{%
+ \@ifpackagelater{hyperref}{2009/12/05}\@gobble\@firstofone
+ }\@firstofone
+ {%
+ \let\NR@@caption\@caption
+ \long\def\@caption#1[#2]{%
+ \NR@gettitle{#2}%
+ \NR@@caption{#1}[{#2}]%
+ }%
+ }%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \@ifpackageloaded{longtable}{%
+ \let\NRorg@LT@c@ption\LT@c@ption
+ \def\LT@c@ption#1[#2]#3{%
+ \NRorg@LT@c@ption{#1}[{#2}]{#3}%
+ \def\@tempa{#2}%
+ \ifx\@tempa\@empty
+ \else
+ \NR@gettitle{#2}%
+ \fi
+ }%
+ }{}%
+% \end{macrocode}
+%
+% Environment `description'.
+% \begin{macrocode}
+ \ltx@IfUndefined{descriptionlabel}{%
+ }{%
+ \let\NRorg@descriptionlabel\descriptionlabel
+ \def\descriptionlabel#1{%
+ \NR@gettitle{#1}%
+ \NRorg@descriptionlabel{#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+%
+% Compatibility for package titlesec.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifpackageloaded{titlesec}{%
+ \let\NRorg@ttl@sect@i\ttl@sect@i
+ \def\ttl@sect@i#1#2[#3]#4{%
+ \NR@gettitle{#4}%
+ \NRorg@ttl@sect@i{#1}{#2}[{#3}]{#4}%
+ }%
+ }{}%
+}
+% \end{macrocode}
+%
+% \subsubsection{Class beamer}
+%
+% \begin{macrocode}
+\@ifclassloaded{beamer}{%
+ \def\NR@PatchBeamer#1{%
+ \expandafter\let\csname NRorg@beamer@#1\expandafter\endcsname
+ \csname beamer@#1\endcsname
+ \begingroup
+ \edef\x{\endgroup
+ \long\def\expandafter\noexpand\csname beamer@#1\endcsname
+ [####1]{% hash-ok
+ \noexpand\NR@gettitle{####1}%
+ \expandafter\noexpand\csname NRorg@beamer@#1\endcsname
+ [{####1}]%
+ }%
+ }%
+ \x
+ }%
+ \NR@PatchBeamer{section}%
+ \NR@PatchBeamer{subsection}%
+ \NR@PatchBeamer{subsubsection}%
+% \end{macrocode}
+%
+% Theorem names.
+% \begin{macrocode}
+ \addtobeamertemplate{theorem begin}{%
+ \expandafter\NR@gettitle\expandafter{\inserttheoremaddition}%
+ }{}%
+% \end{macrocode}
+% \begin{macrocode}
+ \@ifdefinable{\NRorg@beamer@descriptionitem}{%
+ \let\NRorg@beamer@descriptionitem\beamer@descriptionitem
+ \renewcommand{\beamer@descriptionitem}[1]{%
+ \NR@gettitle{#1}%
+ \NRorg@beamer@descriptionitem{#1}%
+ }%
+ }%
+}{}
+% \end{macrocode}
+%
+% \subsubsection{Theorems}
+%
+% \begin{macrocode}
+\ltx@IfUndefined{@opargbegintheorem}{}{%
+ \let\NRorg@opargbegintheorem\@opargbegintheorem
+ \def\@opargbegintheorem#1#2#3{%
+ \NR@gettitle{#3}%
+ \NRorg@opargbegintheorem{#1}{#2}{#3}%
+ }%
+}
+\AtBeginDocument{%
+ \@ifpackageloaded{amsthm}{%
+ \let\NRorg@begintheorem\@begintheorem
+ \begingroup
+ \edef\x{macro:\string#1\string#2[\string#3]}%
+ \@onelevel@sanitize\x
+ \def\y#1->#2\@nil{#1}%
+ \edef\z{\expandafter\y\meaning\@begintheorem->\@nil}%
+ \@onelevel@sanitize\z
+ \expandafter\endgroup
+ \ifx\x\z
+ \def\@begintheorem#1#2[#3]{%
+ \NR@gettitle{#3}%
+ \NRorg@begintheorem{#1}{#2}[{#3}]%
+ }%
+ \fi
+ }{}%
+}
+% \end{macrocode}
+%
+% \subsection{Referencing stuff}
+%
+% We default the label and hypertext reference to be empty.
+% \begin{macrocode}
+\providecommand*{\@currentlabelname}{}
+\providecommand*{\@currentHref}{}
+% \end{macrocode}
+% Since the second part of the preserved reference now has five parts
+% (number, page, name, hypertext reference and file), we need extra utility
+% macros:
+% \begin{macro}{\@firstoffive}
+% \begin{macrocode}
+\long\def\@firstoffive#1#2#3#4#5{#1}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@secondoffive}
+% \begin{macrocode}
+\long\def\@secondoffive#1#2#3#4#5{#2}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@thirdoffive}
+% \begin{macrocode}
+\long\def\@thirdoffive#1#2#3#4#5{#3}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@fourthoffive}
+% \begin{macrocode}
+\long\def\@fourthoffive#1#2#3#4#5{#4}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@offive}
+% \begin{macrocode}
+\long\def\@fifthoffive#1#2#3#4#5{#5}
+% \end{macrocode}
+% \end{macro}
+% We have to redefine |\ref| and |\pageref| to know about extra
+% reference elements. Make them robust, and compatible with Babel.
+% The Babel switch is mimicked if not already defined.
+% Some support for package \xpackage{showkeys} is implemented. If
+% option |notref| of that package is set, |\SK@ref| has the
+% meaning of |\@empty|.
+% \begin{macro}{\@safe@activestrue}
+% \begin{macrocode}
+\providecommand*\@safe@activestrue{}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@safe@activesfalse}
+% \begin{macrocode}
+\providecommand*\@safe@activesfalse{}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\NR@setref}
+% \begin{macrocode}
+\def\NR@setref#1{%
+ \begingroup
+ \@safe@activestrue
+ \expandafter
+ \endgroup
+ \expandafter\NR@@setref\csname r@#1\endcsname
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\NR@@setref}
+% \begin{macrocode}
+\def\NR@@setref#1{%
+ \ifx\@undefined#1%
+ \let#1\relax
+ \fi
+ \@setref#1%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\T@ref}
+% \begin{macrocode}
+\def\T@ref#1{%
+ \NR@setref{#1}\@firstoffive{#1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\T@pageref}
+% \begin{macrocode}
+\def\T@pageref#1{%
+ \NR@setref{#1}\@secondoffive{#1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\ifNR@showkeys
+ \ifx\SK@ref\@empty
+ \else
+% \end{macrocode}
+% \begin{macro}{\T@ref}
+% \begin{macrocode}
+ \def\T@ref#1{%
+ \@safe@activestrue
+ \SK@\SK@@ref{#1}%
+ \@safe@activesfalse
+ \NR@setref{#1}\@firstoffive{#1}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\T@pageref}
+% \begin{macrocode}
+ \def\T@pageref#1{%
+ \@safe@activestrue
+ \SK@\SK@@ref{#1}%
+ \@safe@activesfalse
+ \NR@setref{#1}\@secondoffive{#1}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+ \fi
+\fi
+% \end{macrocode}
+% Package \xpackage{hyperref} uses its own definitions of |\ref| and
+% |\pageref| because it extends the syntax by the star form.
+% |\DeclareRobustCommand| is used by \xpackage{hyperref}.
+% Package |nameref| can be loaded before, after
+% \xpackage{hyperref} or after
+% \xpackage{hyperref}'s definitions in |\AtBeginDocument|.
+% \begin{macrocode}
+\@ifpackageloaded{hyperref}{%
+}{%
+% \end{macrocode}
+% \begin{macro}{\ref}
+% \begin{macrocode}
+ \DeclareRobustCommand{\ref}{\T@ref}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pageref}
+% \begin{macrocode}
+ \DeclareRobustCommand{\pageref}{\T@pageref}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+}
+% \end{macrocode}
+%
+% \subsection{Usage and frontend}
+% Access the (third) name part with |\nameref|;
+% \begin{macro}{\T@nameref}
+% \begin{macrocode}
+\def\T@nameref#1{%
+ \begingroup
+ \let\label\@gobble
+ \NR@setref{#1}\@thirdoffive{#1}%
+ \endgroup
+}%
+\ifNR@showkeys
+ \ifx\SK@ref\@empty
+ \else
+ \def\T@nameref#1{%
+ \@safe@activestrue
+ \SK@\SK@@ref{#1}%
+ \@safe@activesfalse
+ \begingroup
+ \let\label\@gobble
+ \NR@setref{#1}\@thirdoffive{#1}%
+ \endgroup
+ }%
+ \fi
+\fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%\@ifclassloaded{memoir}{%
+% \ltx@IfUndefined{@mem@titlerefnolink}\ltx@secondoftwo{%
+% \ltx@IfUndefined{@mem@titleref}\ltx@secondoftwo\ltx@firstoftwo
+% }%
+%}\ltx@secondoftwo
+%{%
+% \DeclareRobustCommand*{\nameref}{%
+% \@ifstar\@mem@titlerefnolink\@mem@titleref
+% }%
+%}{%
+% \end{macrocode}
+% \begin{macro}{\nameref}
+% \begin{macrocode}
+ \DeclareRobustCommand*{\nameref}{%
+ \@ifstar\T@nameref\T@nameref
+ }%
+%}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Nameref}
+% An extended form which gives title and page number.
+% \begin{macrocode}
+\def\Nameref#1{`\nameref{#1}' on page~\pageref{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Sectionformat}
+% The default for |\Sectionformat|
+% \begin{macrocode}
+\providecommand\Sectionformat[2]{#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Package ifthen support}
+%
+% Package ifthen's \cmd{\isodd} does not work with
+% \cmd{\pageref} because of the extra link and the
+% star form. Therefore we need an expandable variant.
+%
+% Unfortunately there is no hook in \cmd{\ifthenelse} in order
+% to provide expandable versions without link of \cmd{\ref}
+% and \cmd{\pageref}. As possible target I could only find
+% \cmd{\begingroup}:
+% \begin{macrocode}
+\@ifpackageloaded{ifthen}{%
+ \let\NROrg@ifthenelse\ifthenelse
+ \def\ifthenelse{%
+ \let\begingroup\NR@TE@begingroup
+ \NROrg@ifthenelse
+ }%
+ \let\NROrg@begingroup\begingroup
+ \def\NR@TE@begingroup{%
+ \let\begingroup\NROrg@begingroup
+ \begingroup
+ \def\ref##1{\getrefbykeydefault{##1}{}{??}}%
+ \def\pageref##1{\getrefbykeydefault{##1}{page}{0}}%
+ }%
+}{}
+% \end{macrocode}
+%
+% \subsection{Compatibility with varioref}
+%
+% [This section was derived by Corey Minyard \texttt{minyard@acm.org}
+% from the \xpackage{varioref} package]
+% \begin{macrocode}
+\AtBeginDocument{%
+ \ifx\csname @@vpageref\endcsname\relax
+ \else
+ \def\@@vpageref#1[#2]#3{%
+ \begingroup
+ \csname @safe@activestrue\endcsname
+ \edef\x{#3}%
+ \@onelevel@sanitize\x
+ \toks@{%
+ \NR@@vpageref{#1}[{#2}]%
+ }%
+ \edef\x{\endgroup
+ \the\toks@{\x}%
+ }%
+ \x
+ }%
+ \def\NR@@vpageref#1[#2]#3{%
+ \leavevmode\unskip
+ \global\advance\c@vrcnt\@ne
+ \@ifundefined{r@\the\c@vrcnt @vr}%
+ {\@namedef{r@\the\c@vrcnt @vr}{{??}{??}{}{}{}}}{}%
+ \edef\@tempa{%
+ \expandafter\expandafter\expandafter
+ \@secondoffive\csname r@\the\c@vrcnt @vr\endcsname
+ }%
+ \@ifundefined{r@\the\c@vrcnt @xvr}%
+ {\@namedef{r@\the\c@vrcnt @xvr}{{??}{??}{}{}{}}}{}%
+ \edef\@tempb{%
+ \expandafter\expandafter\expandafter
+ \@secondoffive\csname r@\the\c@vrcnt @xvr\endcsname
+ }%
+ {%
+ \let\@currentlabel\@empty
+ \expandafter\label\expandafter{\the\c@vrcnt @xvr}%
+ }%
+ \ifx\@tempa\@tempb
+ \else
+ \vref@err{%
+ \noexpand\vref at page boundary %
+ \@tempb-\@tempa\space (may loop)%
+ }%
+ \fi
+ \@ifundefined{r@#3}{\@namedef{r@#3}{{??}{??}{}{}{}}}{}%
+ \edef\thevpagerefnum{%
+ \expandafter\expandafter\expandafter
+ \@secondoffive\csname r@#3\endcsname
+ }%
+ \ifx\vref@space\@undefined
+ \space
+ \else
+ \vref@space
+ \fi
+ \ifx\@tempa\thevpagerefnum
+ #1%
+ \else
+ #2%
+ \is@pos@number\thevpagerefnum{%
+ \is@pos@number\@tempa{%
+ \@tempcnta\@tempa
+ \advance\@tempcnta\@ne
+ }{%
+ \@tempcnta\maxdimen
+ }%
+ \ifnum \thevpagerefnum =\@tempcnta
+ \ifodd\@tempcnta
+ \if@twoside
+ \reftextfaceafter
+ \else
+ \reftextafter
+ \fi
+ \else
+ \reftextafter
+ \fi
+ \else
+ \advance\@tempcnta-2 %
+ \ifnum \thevpagerefnum =\@tempcnta
+ \ifodd\@tempcnta
+ \reftextbefore
+ \else
+ \if@twoside
+ \reftextfacebefore
+ \else
+ \reftextbefore
+ \fi
+ \fi
+ \else
+ \reftextfaraway{#3}%
+ \fi
+ \fi
+ }{%
+ \reftextfaraway{#3}%
+ }%
+ \fi
+ {%
+ \let\@currentlabel\@empty
+ \expandafter\label\expandafter{\the\c@vrcnt @vr}%
+ }%
+ }%
+ \DeclareRobustCommand\vnameref[1]{%
+ \unskip~\nameref{#1}%
+ \@vpageref[\unskip]{#1}%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\@ifundefined{@Refstar}{%
+ \def\T@Ref#1{%
+ \NR@setref{#1}\NR@MakeUppercaseFirstOfFive{#1}%
+ }%
+ \def\NR@MakeUppercaseFirstOfFive#1#2#3#4#5{%
+ \MakeUppercase#1%
+ }%
+}{}%
+\AtBeginDocument{%
+ \@ifpackageloaded{varioref}{%
+ \@ifundefined{@Refstar}{%
+ \DeclareRobustCommand*{\Ref}[1]{%
+ \T@Ref{#1}%
+ }%
+ }{}%
+ }{}%
+}%
+% \end{macrocode}
+%
+% \subsection{Support for package \xpackage{listings}}
+%
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifpackageloaded{listings}{%
+ \let\NROrg@lst@MakeCaption\lst@MakeCaption
+ \def\lst@MakeCaption{%
+ \ifx\lst@label\@empty
+ \else
+ \let\@currentlabelname\lst@@caption
+ \fi
+ \NROrg@lst@MakeCaption
+ }%
+ }{}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \Finale
+\endinput
diff --git a/macros/latex/contrib/hyperref/nameref.pdf b/macros/latex/contrib/hyperref/nameref.pdf
new file mode 100644
index 0000000000..141ba82fd5
--- /dev/null
+++ b/macros/latex/contrib/hyperref/nameref.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/ntheorem-hyper.sty b/macros/latex/contrib/hyperref/ntheorem-hyper.sty
new file mode 100644
index 0000000000..1db77c3170
--- /dev/null
+++ b/macros/latex/contrib/hyperref/ntheorem-hyper.sty
@@ -0,0 +1,920 @@
+%%
+%% This is file `ntheorem.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% ntheorem.dtx (with options: `package')
+%%
+%%
+%% ### WARNING: =============================================================
+%%
+%% This file is a patched version that works (it seems) with hyperref.
+%% Hyperref's \contentsline version breaks with ntheorem because it puts 3
+%% arguments in the text field (e.g.: \contentsline{def}{{def}{1}{foo}}{21})
+%%
+%% To work around the problem, the following steps are implemented:
+%% 1/ Don't use hyperref's contentsline: restore the normal definition at the
+%% beginning of \thm@processlist.
+%% 2/ Let the different versions of \thm@@thmline take a 5th argument, the one
+%% provided by hyperref.
+%% 3/ Let \thm@lgobble take a 3rd argument, the one provided by hyperref.
+%% 4/ Do the hyperlinks manually in the different versions of \thm@@thmline
+%%
+%% You'll find comments starting with `%%DV' around my changes in the code.
+%%
+%%
+%% Didier Verna <verna@inf.enst.fr>
+%%
+%% ==========================================================================
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from ntheorem.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file ntheorem.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+\def\filedate{1998/12/03}
+\def\docdate{1998/12/03}
+\def\fileversion{1.14}
+\def\basename{ntheorem-hyper}
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\typeout{Style `\basename', Version \fileversion\space <\filedate>}
+\ProvidesPackage{ntheorem-hyper}[\filedate \space\fileversion]
+\newif\if@thmmarks\@thmmarksfalse
+\newif\ifthm@tempif
+\DeclareOption{thmmarks}{%*********************************
+\PackageInfo{\basename}{Option `thmmarks' loaded}%
+\@thmmarkstrue
+\newcounter{endNonectr}
+\newcounter{currNonectr}
+\newif\ifsetendmark\setendmarktrue
+\gdef\endtrivlist{%
+ \@endtrivlist{\PotEndMark{\hbox{}\nobreak\hfill\nobreak}}}
+\gdef\@endtrivlist#1{% % from \endtrivlist
+ \if@inlabel \indent\fi
+ \if@newlist \@noitemerr\fi
+ \ifhmode
+ \ifdim\lastskip >\z@ #1\unskip \par %<<<<<<<<<<<<<<<<<<<<<<
+ \else \unskip \par \fi
+ \fi
+ \if@noparlist \else
+ \ifdim\lastskip >\z@
+ \@tempskipa\lastskip \vskip -\lastskip
+ \advance\@tempskipa\parskip \advance\@tempskipa -\@outerparskip
+ \vskip\@tempskipa
+ \fi
+ \@endparenv
+ \fi}
+\gdef\SetMark@endeqn{\quad}% as default, cf. option leqno
+\gdef\endequation{\eqno \hbox{\@eqnnum \PotEndMark{\SetMark@endeqn}}%
+ $$\global\@ignoretrue}
+\gdef\[{%
+ \relax\ifmmode
+ \@badmath
+ \else
+ \ifvmode
+ \nointerlineskip
+ \makebox[.6\linewidth]%
+ \fi
+ $$\stepcounter{end\InTheoType ctr}%
+ \@ifundefined{mark\roman{curr\InTheoType ctr}%
+ \InTheoType\roman{end\InTheoType ctr}}{\relax}%
+ {\ifx\csname\InTheoType Symbol\endcsname\@empty\else
+ \boxmaxdepth=.5ex\begin{array}[b]{l}%
+ \boxmaxdepth=\maxdimen\displaystyle\fi}%
+ \addtocounter{end\InTheoType ctr}{-1}%
+ %%$$ BRACE MATCH HACK
+ \fi}
+\gdef\]{%
+ \stepcounter{end\InTheoType ctr}%
+ \@ifundefined{mark\roman{curr\InTheoType ctr}%
+ \InTheoType\roman{end\InTheoType ctr}}{\relax}%
+ {\ifx\csname\InTheoType Symbol\endcsname\@empty\else
+ \end{array}\fi}%
+ \addtocounter{end\InTheoType ctr}{-1}%
+ \relax\ifmmode
+ \ifinner
+ \@badmath
+ \else
+ \PotEndMark{\eqno}\global\@ignoretrue$$%%$$ BRACE MATCH HACK
+ \fi
+ \else
+ \@badmath
+ \fi
+ \ignorespaces}
+\gdef\SetMark@endeqnarray#1{\llap{\raisebox{-1.3em}{#1}}}
+\gdef\endeqnarray{%
+ \global\let\Oldeqnnum=\@eqnnum
+ \gdef\@eqnnum{\Oldeqnnum\PotEndMark{\SetMark@endeqnarray}}%
+ \@@eqncr
+ \egroup
+ \global\advance\c@equation\m@ne
+ $$\global\@ignoretrue
+ \global\let\@eqnnum\Oldeqnnum}
+\@namedef{endeqnarray*}{%
+ % from \@@eqncr:
+ \let\reserved@a\relax
+ \ifcase\@eqcnt \def\reserved@a{& & &}\or \def\reserved@a{& &}%
+ \or \def\reserved@a{&}\else
+ \let\reserved@a\@empty
+ \@latex@error{Too many columns in eqnarray environment}\@ehc\fi
+ \reserved@a {\normalfont \normalcolor \PotEndMark{}}%
+ \global\@eqnswtrue\global\@eqcnt\z@\cr
+ %
+ \egroup
+ \global\advance\c@equation\m@ne
+ $$\global\@ignoretrue}
+\gdef\endtabbing{%
+ \PotEndMark{\`}\@stopline\ifnum\@tabpush >\z@ \@badpoptabs
+ \fi\endtrivlist}
+\gdef\endcenter{%
+ \@endtrivlist
+ {\PotEndMark{\rightskip0pt%
+ \settowidth{\leftskip}%
+ { \csname mark\roman{curr\InTheoType ctr}\InTheoType
+ \roman{end\InTheoType ctr}\endcsname}%
+ \advance\leftskip\@flushglue\hskip\@flushglue}}}
+\gdef\@empty{}
+\gdef\@endtheorem{%
+ \expandafter
+ \ifx\csname\InTheoType Symbol\endcsname\@empty\setendmarkfalse\fi
+ \@endtrivlist
+ {\ifsetendmark
+ \hbox{}\nobreak\hfill\nobreak\csname\InTheoType Symbol\endcsname
+ \setendmarkfalse \fi}%
+ \ifsetendmark\OrganizeTheoremSymbol\else\global\setendmarktrue\fi}
+\gdef\NoEndMark{\global\setendmarkfalse}
+\gdef\qed{\expandafter\def\csname \InTheoType Symbol\endcsname
+ {\the\qedsymbol}}%
+\gdef\PotEndMark#1{\SetEndMark{\InTheoType}{#1}}%
+\gdef\SetEndMark#1#2{%
+ \stepcounter{end#1ctr}%
+ \@ifundefined{mark\roman{curr#1ctr}#1\roman{end#1ctr}}%
+ {\relax}%
+ {#2{\csname mark\roman{curr#1ctr}#1\roman{end#1ctr}\endcsname}}}%
+\newskip\mysavskip
+\gdef\@bbsphack{%
+ \mysavskip\lastskip
+ \unskip}
+\gdef\@eesphack{%
+ \ifdim\mysavskip>\z@
+ \vskip\mysavskip \else\fi}
+%% \begin{macrocode}
+\gdef\OrganizeTheoremSymbol{%
+ \@bbsphack
+ \edef\thm@tmp{\expandafter\expandafter\expandafter\thm@meaning
+ \expandafter\meaning\csname\InTheoType Symbol\endcsname\relax}%
+ \protected@write\@auxout{}%
+ {\string\global\string\def\string\mark%
+ \roman{curr\InTheoType ctr}\InTheoType \roman{end\InTheoType ctr}%
+ {\thm@tmp}}%
+ \@eesphack}
+} % end of option [thmmarks]
+\DeclareOption{leqno}{%
+ \if@thmmarks
+ \PackageInfo{\basename}{Option `leqno' loaded}%
+ \gdef\SetMark@endeqn#1{\hss\llap{#1}}
+ \gdef\SetMark@endeqnarray#1{\hss\llap{#1}}
+ \fi}%
+\DeclareOption{fleqn}{%
+\if@thmmarks
+ \PackageInfo{\basename}{Option `fleqn' loaded}%
+ \renewcommand\[{\relax
+ \ifmmode\@badmath
+ \else
+ \begin{trivlist}%
+ \@beginparpenalty\predisplaypenalty
+ \@endparpenalty\postdisplaypenalty
+ \item[]\leavevmode
+ \hb@xt@\linewidth\bgroup $\m@th\displaystyle %$
+ \hskip\mathindent\bgroup
+ \stepcounter{end\InTheoType ctr}%
+ \@ifundefined{mark\roman{curr\InTheoType ctr}%
+ \InTheoType\roman{end\InTheoType ctr}}{\relax}%
+ {\ifx\csname\InTheoType Symbol\endcsname\@empty\else
+ \boxmaxdepth=.5ex\begin{array}[b]{l}%
+ \boxmaxdepth=\maxdimen\displaystyle\fi}%
+ \addtocounter{end\InTheoType ctr}{-1}%
+ \fi}
+ \renewcommand\]{%
+ \stepcounter{end\InTheoType ctr}%
+ \@ifundefined{mark\roman{curr\InTheoType ctr}%
+ \InTheoType\roman{end\InTheoType ctr}}{\relax}%
+ {\ifx\csname\InTheoType Symbol\endcsname\@empty\else
+ \end{array}\fi}%
+ \addtocounter{end\InTheoType ctr}{-1}%
+ \relax\ifmmode
+ \egroup $\hfil\PotEndMark{}% $
+ \egroup
+ \end{trivlist}%
+ \else \@badmath
+ \fi}
+\gdef\endequation{%
+ $\hfil % $
+ \displaywidth\linewidth\hbox{\@eqnnum \PotEndMark{\SetMark@endeqn}}%
+ \egroup
+ \endtrivlist}
+\gdef\endeqnarray{%
+ \global\let\Oldeqnnum=\@eqnnum
+ \gdef\@eqnnum{\Oldeqnnum\PotEndMark{\SetMark@endeqnarray}}%
+ \@@eqncr
+ \egroup
+ \global\advance\c@equation\m@ne$$% $$
+ \global\@ignoretrue
+ \global\let\@eqnnum\Oldeqnnum}
+\fi}% end of option fleqn
+\DeclareOption{amsmath}{%
+\if@thmmarks
+ \PackageInfo{\basename}{Option `amsmath' loaded}%
+\newdimen\thm@amstmpdepth
+\gdef\TagsPlusEndmarks{%
+ \global\let\Old@maketag@@@=\maketag@@@
+ \global\let\Old@df@tag=\df@tag
+ \if@eqnsw\SetTagPlusEndMark\else
+ \iftag@\SetTagPlusEndMark
+ \else\SetOnlyEndMark
+ \fi\fi}
+\gdef\SetOnlyEndMark{%
+ \global\tag@true
+ \iftagsleft@
+ \gdef\df@tag{\hbox
+ to \displaywidth{\hss\PotEndMark{\maketag@@@}}}%
+ \else
+ \gdef\df@tag{\PotEndMark{\maketag@@@}}%
+ \fi}
+\gdef\SetTagPlusEndMark{%
+ \iftagsleft@
+ \gdef\maketag@@@##1{%
+ \hbox to \displaywidth{\m@th\normalfont##1%
+ \PotEndMark{\hss}}}%
+ \else
+ \gdef\maketag@@@##1{\hbox{\m@th\normalfont##1%
+ \llap{\hss\PotEndMark{\raisebox{-1.3em}}}}}%
+ \fi}
+\gdef\RestoreTags{%
+ \global\let\maketag@@@=\Old@maketag@@@
+ \global\let\df@tag=\Old@df@tag}
+\gdef\endgather{%
+ \TagsPlusEndmarks % <<<<<<<<<
+ \math@cr
+ \black@\totwidth@
+ \egroup
+ $$%
+ \RestoreTags % <<<<<<<<<
+ \global\@ignoretrue}
+\expandafter\let\csname endgather*\endcsname\endgather
+\def\endalign{%
+ \ifingather@\else % <<<<<<<<<
+ \TagsPlusEndmarks\fi % <<<<<<<<<
+ \math@cr
+ \black@\totwidth@
+ \egroup
+ \ifingather@
+ \restorealignstate@
+ \egroup
+ \nonumber
+ \ifnum0=`{\fi}%
+ \else
+ $$%
+ \RestoreTags % <<<<<<<<<
+ \fi
+ \global\@ignoretrue}
+\expandafter\let\csname endalign*\endcsname\endalign
+\let\endxalignat\endalign
+\expandafter\let\csname endxalignat*\endcsname\endalign
+\let\endxxalignat\endalign
+\let\endalignat\endalign
+\expandafter\let\csname endalignat*\endcsname\endalign
+\let\endflalign\endalign
+\expandafter\let\csname endflalign*\endcsname\endalign
+\def\lendmultline@{%
+ \@eqnswfalse\tag@true\tagsleft@false
+ \rendmultline@}
+\def\rendmultline@{%
+ \TagsPlusEndmarks % <<<<<<<<<
+ \iftag@
+ \begingroup
+ \ifshifttag@
+ \hskip\multlinegap
+ \llap{\vtop{%
+ \raise@tag
+ \normalbaselines
+ \setbox\@ne\null
+ \dp\@ne\lineht@
+ \box\@ne
+ \hbox{\strut@\make@display@tag}%
+ }}%
+ \else
+ \hskip\multlinetaggap
+ \make@display@tag
+ \fi
+ \endgroup
+ \else
+ \hskip\multlinegap
+ \fi
+ \hfilneg
+ \math@cr
+ \egroup$$%
+ \RestoreTags} % <<<<<<<<<
+\def\[{%
+ \relax\ifmmode% \RIfM@ <<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ \@badmath
+ \else
+ \DN@{%
+ $$%
+ \ingather@true
+ \inany@true
+ \def\\{\@amsmath@err{\Invalid@@\\}\@eha}%
+ \tabskip\@mathmargin
+ \halign to \displaywidth\bgroup
+ \if@fleqn\else\hfil\fi
+ \setboxz@h{$\m@th\displaystyle{####}$}%
+ \global\totwidth@\wdz@
+ \global\thm@amstmpdepth\dp0% <<<<<<<<<<<<
+ \boxz@
+ \tabskip 0pt plus 1000pt%<<<<<<<<<<<<<<
+ & ####% <<<<<<<<<<<<<<<<<<<<<<<<
+ \tabskip 0pt%
+ \cr
+ }%
+ \@xp\next@
+ \fi}
+\def\]{%
+ \relax\ifmmode% \RIfM@ <<<<<<<<<<
+ \DN@{%
+ \PotEndMark{&\raisebox{-\thm@amstmpdepth}}% <<<<<<<<<
+ \crcr
+ \black@\totwidth@
+ \egroup
+ $$%
+ }%
+ \@xp\next@
+ \else
+ \@badmath
+ \fi}
+\def\equation{\gather\def\\{\@amsmath@err{\Invalid@@\\}\@eha}}
+\def\endequation{\endgather}
+\renewenvironment{equation*}{\equation}{\nonumber\endequation}
+\else\PackageError{\basename}{Option amsmath cannot be used without
+ option thmmarks.}\@eha
+\fi
+}% end of option amsmath
+\let\thm@usestd\@undefined
+\DeclareOption{standard}{\let\thm@usestd\relax}
+\let\thm@noconfig\@undefined
+\DeclareOption{noconfig}{\let\thm@noconfig\relax}
+\gdef\InTheoType{None}
+\def\output@None{None}
+\def\None{None}
+\gdef\newtheoremstyle#1#2#3{%
+ \expandafter\@ifundefined{th@#1}%
+ {\expandafter\gdef\csname th@#1\endcsname{%
+ \def\@begintheorem####1####2{#2}%
+ \def\@opargbegintheorem####1####2####3{#3}}}%
+ {\PackageError{\basename}{Theorem style #1 already defined}\@eha}}
+\gdef\renewtheoremstyle#1#2#3{%
+ \expandafter\@ifundefined{th@#1}%
+ {\PackageError{\basename}{Theorem style #1 undefined}\@ehc}%
+ {}%
+ \expandafter\let\csname th@#1\endcsname\relax
+ \newtheoremstyle{#1}{#2}{#3}}
+\newtheoremstyle{plain}%
+ {\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\theorem@separator]}%
+ {\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\ (##3)\theorem@separator]}
+\newtheoremstyle{break}%
+ {\item\hbox to \textwidth{\theorem@headerfont ##1\
+ ##2\theorem@separator\hfill}}%
+ {\item\hbox to \textwidth{\theorem@headerfont ##1\ ##2\
+ (##3)\theorem@separator\hfill}}
+\newtheoremstyle{change}%
+ {\item[\hskip\labelsep \theorem@headerfont ##2\ ##1\theorem@separator]}%
+ {\item[\hskip\labelsep \theorem@headerfont ##2\ ##1\ (##3)\theorem@separator]}
+\newtheoremstyle{changebreak}%
+ {\item\hbox to \textwidth{\theorem@headerfont ##2\
+ ##1\theorem@separator\hfill}}%
+ {\item\hbox to \textwidth{\theorem@headerfont ##2\ ##1\
+ (##3)\theorem@separator\hfill}}
+\newtheoremstyle{margin}%
+ {\item[\theorem@headerfont \llap{##2}\hskip\labelsep ##1\theorem@separator]}%
+ {\item[\theorem@headerfont \llap{##2}\hskip\labelsep ##1\ (##3)\theorem@separator]}
+\newtheoremstyle{marginbreak}%
+ {\item\hbox to \textwidth{\theorem@headerfont \llap{##2}\hskip\labelsep
+ ##1\theorem@separator\hfill}}%
+ {\item\hbox to \textwidth{\theorem@headerfont
+ \llap{##2}\hskip\labelsep
+ ##1\ (##3)\theorem@separator\hfill}}
+\newtheoremstyle{nonumberplain}%
+ {\item[\theorem@headerfont\hskip\labelsep ##1\theorem@separator]}%
+ {\item[\theorem@headerfont\hskip \labelsep ##1\ (##3)\theorem@separator]}
+\newtheoremstyle{nonumberbreak}%
+ {\item\hbox to \textwidth{\theorem@headerfont\hskip\labelsep
+ ##1\theorem@separator\hfill}}%
+ {\item\hbox to \textwidth{\theorem@headerfont\hskip\labelsep
+ ##1\ (##3)\theorem@separator\hfill}}
+\newtheoremstyle{empty}%
+ {\item~\hfill}%
+ {\item\hbox to \textwidth{\theorem@headerfont##3\hfill}}
+\@namedef{th@nonumbermargin}{\th@nonumberplain}
+\@namedef{th@nonumberchange}{\th@nonumberplain}
+\@namedef{th@nonumbermarginbreak}{\th@nonumberbreak}
+\@namedef{th@nonumberchangebreak}{\th@nonumberbreak}
+\@namedef{th@plainNo}{\th@nonumberplain}
+\@namedef{th@breakNo}{\th@nonumberplain}
+\@namedef{th@marginNo}{\th@nonumberplain}
+\@namedef{th@changeNo}{\th@nonumberplain}
+\@namedef{th@marginbreakNo}{\th@nonumberbreak}
+\@namedef{th@changebreakNo}{\th@nonumberbreak}
+\gdef\theoremstyle#1{%
+ \@ifundefined{th@#1}{\@warning
+ {Unknown theoremstyle `#1'. Using `plain'}%
+ \theorem@style{plain}}%
+ {\theorem@style{#1}}}
+\newtoks\theorem@style
+\newtoks\theorem@@style
+\global\theoremstyle{plain}
+\newtoks\theorembodyfont
+\global\theorembodyfont{\itshape}
+\newtoks\theoremnumbering
+\global\theoremnumbering{arabic}
+\newskip\theorempreskipamount
+\newskip\theorempostskipamount
+\global\theorempreskipamount\topsep
+\global\theorempostskipamount\topsep
+\newdimen\theoremindent
+\global\theoremindent0cm
+\newdimen\theorem@indent
+\newtoks\theoremheaderfont
+\global\theoremheaderfont{\normalfont\bfseries}
+\def\theorem@headerfont{\normalfont\bfseries}
+\newtoks\theoremseparator
+\global\theoremseparator{}
+\def\theorem@separator{}
+\newtoks\theoremsymbol
+\global\theoremsymbol{}
+\newtoks\qedsymbol
+\global\qedsymbol{}
+\DeclareOption{amsthm}{%
+ \PackageInfo{\basename}{Option `amsthm' loaded}%
+\def\swapnumbers{\PackageError{\basename}{swapnumbers not implemented.
+ Use theoremstyle change instead.}\@eha}
+
+\gdef\th@plain{%
+ \def\theorem@headerfont{\normalfont\bfseries}\itshape%
+ \def\@begintheorem##1##2{%
+ \item[\hskip\labelsep \theorem@headerfont ##1\ ##2.]}%
+ \def\@opargbegintheorem##1##2##3{%
+ \item[\hskip\labelsep \theorem@headerfont ##1\ ##2\ (##3).]}}
+\gdef\th@nonumberplain{%
+ \def\theorem@headerfont{\normalfont\bfseries}\itshape%
+ \def\@begintheorem##1##2{%
+ \item[\hskip\labelsep \theorem@headerfont ##1.]}%
+ \def\@opargbegintheorem##1##2##3{%
+ \item[\hskip\labelsep \theorem@headerfont ##1\ (##3).]}}
+\gdef\th@definition{%
+ \th@plain\def\theorem@headerfont{\normalfont\bfseries}\itshape}
+\gdef\th@nonumberdefinition{%
+ \th@nonumberplain\def\theorem@headerfont{\normalfont\bfseries}\itshape}
+\gdef\th@remark{%
+ \th@plain\def\theorem@headerfont{\itshape}\normalfont}
+\gdef\th@nonumberremark{%
+ \th@nonumberplain\def\theorem@headerfont{\itshape}\normalfont}
+\newcounter{proof}%
+\if@thmmarks
+ \newcounter{currproofctr}%
+ \newcounter{endproofctr}%
+\fi
+\newcommand{\openbox}{\leavevmode
+ \hbox to.77778em{%
+ \hfil\vrule
+ \vbox to.675em{\hrule width.6em\vfil\hrule}%
+ \vrule\hfil}}
+\gdef\proofSymbol{\openbox}
+\newcommand{\proofname}{Proof}
+\newenvironment{proof}[1][\proofname]{
+ \th@nonumberplain
+ \def\theorem@headerfont{\itshape}%
+ \normalfont
+ \theoremsymbol{\ensuremath{_\blacksquare}}
+ \@thm{proof}{proof}{#1}}%
+ {\@endtheorem}
+}% end of option amsthm
+\newskip\thm@topsepadd
+\gdef\newtheorem{%
+ \@ifstar
+ {\edef\@tempa{{nonumber\the\theorem@style}}%
+ \expandafter\theorem@@style\@tempa}%
+ {\edef\@tempa{{\the\theorem@style}}%
+ \expandafter\theorem@@style\@tempa}%
+ \@newtheorem}
+
+\gdef\renewtheorem{%
+ \@ifstar
+ {\edef\@tempa{{nonumber\the\theorem@style}}%
+ \expandafter\theorem@@style\@tempa}%
+ {\edef\@tempa{{\the\theorem@style}}%
+ \expandafter\theorem@@style\@tempa}%
+ \@renewtheorem}
+\gdef\@newtheorem#1{%
+ \thm@tempiffalse
+ \expandafter\@ifdefinable\csname #1\endcsname
+ {\expandafter\@ifdefinable\csname #1*\endcsname
+ {\thm@tempiftrue
+ \thm@definelthm{#1}% for lists
+ \if@thmmarks
+ \expandafter\@ifundefined{c@curr#1ctr}%
+ {\newcounter{curr#1ctr}}{}%
+ \expandafter\@ifundefined{c@end#1ctr}%
+ {\newcounter{end#1ctr}}{}%
+ \fi
+ \expandafter\xdef\csname #1Symbol\endcsname{\the\theoremsymbol}%
+ \expandafter\gdef\csname#1\endcsname{%
+ \let\thm@starredenv\@undefined
+ \csname mkheader@#1\endcsname}%
+ \expandafter\gdef\csname#1*\endcsname{%
+ \let\thm@starredenv\relax
+ \csname mkheader@#1\endcsname}%
+ \def\@tempa{\expandafter\noexpand\csname end#1\endcsname}%
+ \expandafter\xdef\csname end#1*\endcsname{\@tempa}%
+ \expandafter\xdef\csname setparms@#1\endcsname
+ {\noexpand \def \noexpand \theorem@headerfont
+ {\the\theoremheaderfont\noexpand\theorem@checkbold}%
+ \noexpand \def \noexpand \theorem@separator
+ {\the\theoremseparator}%
+ \noexpand \def \noexpand \theorem@indent
+ {\the\theoremindent}%
+ \the \theorembodyfont
+ \noexpand\csname th@\the \theorem@@style \endcsname}}}%
+ \@ifnextchar[{\@othm{#1}}{\@nthm{#1}}}% MUST NOT BE IN ANY IF !!!
+\gdef\@renewtheorem#1{%
+ \expandafter\@ifundefined{#1}%
+ {\PackageError{\basename}{Theorem style #1 undefined}\@ehc}%
+ {}%
+ \expandafter\let\csname #1\endcsname\relax
+ \expandafter\let\csname #1*\endcsname\relax
+ \newtheorem{#1}}
+\gdef\@nthm#1#2{%
+ \expandafter\xdef\csname num@addtheoremline#1\endcsname{%
+ \noexpand\@num@addtheoremline{#1}{#2}}%
+ \expandafter\xdef\csname nonum@addtheoremline#1\endcsname{%
+ \noexpand\@nonum@addtheoremline{#1}{#2}}%
+ \expandafter\xdef\csname output@#1\endcsname{#2}%
+ \@ifnextchar[{\@xnthm{#1}{#2}}{\@ynthm{#1}{#2}}}
+\gdef\@othm#1[#2]#3{%
+ \@ifundefined{c@#2}{\@nocounterr{#2}}%
+ {\ifthm@tempif
+ \global\@namedef{the#1}{\@nameuse{the#2}}%
+ \expandafter\xdef\csname num@addtheoremline#1\endcsname{%
+ \noexpand\@num@addtheoremline{#1}{#3}}%
+ \expandafter\xdef\csname nonum@addtheoremline#1\endcsname{%
+ \noexpand\@nonum@addtheoremline{#1}{#3}}%
+ \expandafter\xdef\csname output@#1\endcsname{#3}%
+ \expandafter\gdef\csname mkheader@#1\endcsname
+ {\csname setparms@#1\endcsname
+ \@thm{#1}{#2}{#3}}%
+ \global\@namedef{end#1}{\@endtheorem}\fi}}
+\gdef\@xnthm#1#2[#3]{%
+ \ifthm@tempif
+ \expandafter\@ifundefined{c@#1}%
+ {\@definecounter{#1}}{}%
+ \@newctr{#1}[#3]%
+ \expandafter\xdef\csname the#1\endcsname{%
+ \expandafter\noexpand\csname the#3\endcsname \@thmcountersep
+ {\noexpand\csname\the\theoremnumbering\endcsname{#1}}}%
+ \expandafter\gdef\csname mkheader@#1\endcsname
+ {\csname setparms@#1\endcsname
+ \@thm{#1}{#1}{#2}}%
+ \global\@namedef{end#1}{\@endtheorem}\fi}
+\gdef\@ynthm#1#2{%
+ \ifthm@tempif
+ \expandafter\@ifundefined{c@#1}%
+ {\@definecounter{#1}}{}%
+ \expandafter\xdef\csname the#1\endcsname
+ {\noexpand\csname\the\theoremnumbering\endcsname{#1}}%
+ \expandafter\gdef\csname mkheader@#1\endcsname
+ {\csname setparms@#1\endcsname
+ \@thm{#1}{#1}{#2}}%
+ \global\@namedef{end#1}{\@endtheorem}\fi}
+\gdef\@thm#1#2#3{%
+ \if@thmmarks
+ \stepcounter{end\InTheoType ctr}%
+ \fi
+ \renewcommand{\InTheoType}{#1}%
+ \if@thmmarks
+ \stepcounter{curr#1ctr}%
+ \setcounter{end#1ctr}{0}%
+ \fi
+ \refstepcounter{#2}%
+ \thm@topsepadd \theorempostskipamount % cf. latex.ltx: \@trivlist
+ \ifvmode \advance\thm@topsepadd\partopsep\fi
+ \trivlist
+ \@topsep \theorempreskipamount
+ \@topsepadd \thm@topsepadd % used by \@endparenv
+ \advance\linewidth -\theorem@indent
+ \advance\@totalleftmargin \theorem@indent
+ \parshape \@ne \@totalleftmargin \linewidth
+ \@ifnextchar[{\@ythm{#1}{#2}{#3}}{\@xthm{#1}{#2}{#3}}}
+\def\@xthm#1#2#3{%
+ \@begintheorem{#3}{\csname the#2\endcsname}%
+ \ifx\thm@starredenv\@undefined
+ \thm@thmcaption{#1}{{#3}{\csname the#2\endcsname}{}}\fi
+ \ignorespaces}
+\def\@ythm#1#2#3[#4]{%
+ \expandafter\global\expandafter\def\csname#1name\endcsname{#4}%
+ \@opargbegintheorem{#3}{\csname the#2\endcsname}{#4}%
+ \ifx\thm@starredenv\@undefined
+ \thm@thmcaption{#1}{{#3}{\csname the#2\endcsname}{#4}}\fi%
+ \ignorespaces}
+\DeclareOption{thref}{%*********************************
+ \PackageInfo{\basename}{Option `thref' loaded}%
+\def\label#1{
+ \@ifnextchar[%]
+ {\label@optarg{#1}}%
+ {\label@optarg{#1}%
+ [\csname output@\InTheoType\endcsname]}}
+\def\label@optarg#1[#2]{\@bsphack
+ \protected@write\@auxout{}%
+ {\string\newlabel{#1}{{\@currentlabel}{\thepage}}[#2]}%
+ \@esphack}
+\def\@newl@bel#1#2#3{%
+ \@ifundefined{#1@#2}%
+ \relax
+ {\gdef \@multiplelabels {%
+ \@latex@warning@no@line{There were multiply-defined labels}}%
+ \@latex@warning@no@line{Label `#2' multiply defined}}%
+ \global\@namedef{#1@#2}{#3}%
+ \@ifnextchar[{\set@labeltype#1#2}{\relax}%]
+ }
+\def\set@labeltype#1#2[#3]{\global\@namedef{#1@#2@type}{#3}}
+\@ifpackageloaded{babel}%
+ {\message{ntheorem-babel adapation loaded}%
+ \def\newlabel#1#2{%
+ \@ifnextchar[{\nth@bbl@newlabel{#1}{#2}}%]
+ {\nth@bbl@newlabel{#1}{#2}[None]}}%
+ \def\nth@bbl@newlabel#1#2[#3]{%
+ \@safe@activestrue\bbl@newlabel{#1}{#2}[#3]\@safe@activesfalse}}%
+ \relax
+\def\thref#1{%
+ \expandafter\ifx\csname r@#1@type\endcsname\None
+ \PackageWarning{\basename}{thref: Reference Type of `#1' on page
+ \thepage \space undefined}\G@refundefinedtrue
+ \else\csname r@#1@type\endcsname~\fi%
+ \expandafter\@setref\csname r@#1\endcsname\@firstoftwo{#1}}
+}% end of option thref
+\def\thm@thmcaption#1#2{\thm@@thmcaption{#1}#2}
+\def\thm@@thmcaption#1#2#3#4{%
+ \thm@parseforwriting{#4}%
+ \edef\thm@t{{#2}{#3}{\thm@tmp}}%
+ \addcontentsline{thm}{#1}{\thm@t}}
+\def\theoremlistall{%
+ \let\thm@@thmlstart=\relax
+ \let\thm@@thmlend=\relax
+%%DV Use a fith argument (supplied by hyperref) and do the links manually
+ \def\thm@@thmline##1##2##3##4##5{%
+ \ifx\\##5\\%
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {\protect\numberline{##2}##3}%
+ {##4}
+ \else
+ \ifhy@linktocpage
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {\protect\numberline{##2}##3}%
+ {\hyper@linkstart{link}{##5}{##4}\hyper@linkend}
+ \else
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {\hyper@linkstart{link}{##5}{\protect\numberline{##2}##3}%
+ \hyper@linkend}%
+ {##4}
+ \fi
+ \fi}}
+%%DV \def\thm@@thmline##1##2##3##4{%
+%%DV \@dottedtocline{-2}{0em}{2.3em}%
+%%DV {\protect\numberline{##2}##3}%
+%%DV {##4}}}
+\def\theoremlistallname{%
+ \let\thm@@thmlstart=\relax
+ \let\thm@@thmlend=\relax
+%%DV Use a fith argument (supplied by hyperref) and do the links manually
+ \def\thm@@thmline##1##2##3##4##5{%
+ \ifx\\##5\\%
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {##1 \protect\numberline{##2}##3}%
+ {##4}
+ \else
+ \ifhy@linktocpage
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {##1 \protect\numberline{##2}##3}%
+ {\hyper@linkstart{link}{##5}{##4}\hyper@linkend}
+ \else
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {\hyper@linkstart{link}{##5}%
+ {##1 \protect\numberline{##2}##3}\hyper@linkend}%
+ {##4}
+ \fi
+ \fi}}
+%%DV \def\thm@@thmline##1##2##3##4{%
+%%DV \@dottedtocline{-2}{0em}{2.3em}%
+%%DV {##1 \protect\numberline{##2}##3}%
+%%DV {##4}}}
+\def\theoremlistoptional{%
+ \let\thm@@thmlstart=\relax
+ \let\thm@@thmlend=\relax
+%%DV Use a fith argument (supplied by hyperref) and do the links manually
+ \def\thm@@thmline##1##2##3##4##5{%
+ \ifx\empty ##3%
+ \else%
+ \ifx\\##5\\%
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {\protect\numberline{##2}##3}%
+ {##4}
+ \else
+ \ifhy@linktocpage
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {\protect\numberline{##2}##3}%
+ {\hyper@linkstart{link}{##5}{##4}\hyper@linkend}
+ \else
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {\hyper@linkstart{link}{##5}{\protect\numberline{##2}##3}%
+ \hyper@linkend}%
+ {##4}
+ \fi
+ \fi
+ \fi}}
+%%DV \def\thm@@thmline##1##2##3##4{%
+%%DV \ifx\empty ##3%
+%%DV \else%
+%%DV \@dottedtocline{-2}{0em}{2.3em}%
+%%DV {\protect\numberline{##2}##3}%
+%%DV {##4}%
+%%DV \fi}}
+\def\theoremlistoptname{%
+ \let\thm@@thmlstart=\relax
+ \let\thm@@thmlend=\relax
+%%DV Use a fith argument (supplied by hyperref) and do the links manually
+ \def\thm@@thmline##1##2##3##4##5{%
+ \ifx\empty ##3%
+ \else
+ \ifx\\##5\\%
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {##1 \protect\numberline{##2}##3}%
+ {##4}
+ \else
+ \ifhy@linktocpage
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {##1 \protect\numberline{##2}##3}%
+ {\hyper@linkstart{link}{##5}{##4}\hyper@linkend}
+ \else
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {\hyper@linkstart{link}{##5}%
+ {##1 \protect\numberline{##2}##3}\hyper@linkend}%
+ {##4}
+ \fi
+ \fi
+ \fi}}
+%%DV \def\thm@@thmline##1##2##3##4{%
+%%DV \ifx\empty ##3%
+%%DV \else%
+%%DV \@dottedtocline{-2}{0em}{2.3em}%
+%%DV {##1 \protect\numberline{##2}##3}%
+%%DV {##4}%
+%%DV \fi}}
+\theoremlistall
+\def\theoremlisttype#1{%
+ \@ifundefined{thm@thml@#1}%
+ {\PackageError{\basename}{Listtype #1 not defined}\@eha}
+ {\csname thm@thml@#1\endcsname}}
+\def\thm@thml@all{\theoremlistall}
+\def\thm@thml@opt{\theoremlistoptional}
+\def\thm@thml@optname{\theoremlistoptname}
+\def\thm@thml@allname{\theoremlistallname}
+\def\newtheoremlisttype#1#2#3#4{%
+ \@ifundefined{thm@thml@#1}%
+ {\expandafter\gdef\csname thm@thml@#1\endcsname{%
+ \def\thm@@thmlstart{#2}%
+ \def\thm@@thmline####1####2####3####4{#3}%
+ \def\thm@@thmlend{#4}}%
+ }{\PackageError{\basename}{list type #1 already defined}\@eha}}
+\def\renewtheoremlisttype#1#2#3#4{%
+ \@ifundefined{thm@thml@#1}%
+ {\PackageError{\basename}{List type #1 not defined}\@ehc}{}%
+ \expandafter\let\csname thm@thml@#1\endcsname\relax
+ \newtheoremlisttype{#1}{#2}{#3}{#4}}
+%%DV Use a third argument (supplied by hyperref)
+\def\thm@thmline#1#2#3{\thm@@thmline#1{#2}{#3}}
+%%DV\def\thm@thmline#1#2{\thm@@thmline#1{#2}}
+%%DV Use a third argument (supplied by hyperref)
+\long\def\thm@lgobble#1#2#3{\ignorespaces}
+%%DV\long\def\thm@lgobble#1#2{\ignorespaces}
+\def\thm@definelthm#1{%
+ \expandafter\gdef\csname l@#1\endcsname{\thm@lgobble}%
+ \expandafter\gdef\csname thm@listdo#1\endcsname{\thm@lgobble}}
+\long\def\thm@inlistdo#1#2{#2}%
+\def\listtheorems#1{\begingroup%
+ \c@tocdepth=-2%
+ \def\thm@list{#1}\thm@processlist%
+ \endgroup}
+\def\thm@processlist{%
+ \begingroup%
+ \typeout{** Generating table of \thm@list}%
+%%DV: don't use hyperref's \contentsline !! Use the normal definition.
+ \def\contentsline##1{\csname l@##1\endcsname}
+ \thm@@thmlstart
+ \@for\thm@currentlist:=\thm@list\do{%
+ \ifx\thm@currentlist\@empty\else%
+ \expandafter\gdef\csname l@\thm@currentlist\endcsname{\thm@thmline}%
+ \expandafter\gdef\csname thm@listdo\thm@currentlist\endcsname{\thm@inlistdo}%
+ \fi%
+ }%
+ \@input{\jobname .thm}%
+ \thm@@thmlend%
+ \@for\thm@currentlist:=\thm@list\do{%
+ \ifx\thm@currentlist\@empty\else%
+ \expandafter\gdef\csname l@\thm@currentlist\endcsname{\thm@lgobble}%
+ \expandafter\gdef\csname thm@listdo\thm@currentlist\endcsname{\thm@lgobble}%
+ \fi%
+ }%
+ \endgroup}
+\def\thm@enablelistoftheorems{%
+ \begingroup%
+ \makeatletter%
+ \if@filesw%
+ \expandafter\newwrite\csname tf@thm\endcsname%
+ \immediate\openout \csname tf@thm\endcsname \jobname.thm\relax%
+ \fi%
+ \@nobreakfalse%
+ \endgroup}
+\def\addtheoremline{\@ifstar{\nonum@addtheoremline}{\num@addtheoremline}}
+\def\nonum@addtheoremline#1{\csname nonum@addtheoremline#1\endcsname}%
+\def\num@addtheoremline#1{\csname num@addtheoremline#1\endcsname}%
+\def\@nonum@addtheoremline#1#2#3{%
+ \thm@parseforwriting{#3}%
+ \edef\thm@t{{#2}{}{\thm@tmp}}%
+ \addcontentsline{thm}{#1}{\thm@t}}
+\def\@num@addtheoremline#1#2#3{%
+ \thm@parseforwriting{#3}%
+ \edef\thm@t{{#2}{\csname the#1\endcsname}{\thm@tmp}}%
+ \addcontentsline{thm}{#1}{\thm@t}}
+\long\def\addtotheoremfile{%
+ \@ifnextchar[{\@@addtotheoremfile}{\@addtotheoremfile}}
+\long\def\@addtotheoremfile#1{%
+ \thm@parseforwriting{#1}%
+ \protected@write\@auxout%
+ {}{\string\@writefile{thm}{\thm@tmp}}}
+\long\def\@@addtotheoremfile[#1]#2{%
+ \thm@parseforwriting{#2}%
+ \protected@write\@auxout%
+ {}{\string\@writefile{thm}{\string\theoremlistdo{#1}{\thm@tmp}}}}
+\long\def\theoremlistdo#1#2{\csname thm@listdo#1\endcsname{#1}{#2}}
+\AtEndDocument{\thm@enablelistoftheorems}
+\def\thm@meaning#1->#2\relax{#2}% remove "macro:->"
+\long\def\thm@parseforwriting#1{%
+ \def\thm@tmp{#1}%
+ \edef\thm@tmp{\expandafter\thm@meaning\meaning\thm@tmp\relax}}
+\def\theorem@checkbold{\if b\expandafter\@car\f@series\@nil\boldmath\fi}
+\def\@greek#1{\theorem@checkbold%
+ \ifcase#1\or$\alpha$\or$\beta$\or$\gamma$\or$\delta$\or$\varepsilon$%
+ \or$\zeta$\or$\eta$\or$\vartheta$\or$\iota$\or$\kappa$\or$\lambda$\or$%
+ \mu$\or$\nu$\or$\xi$\or$ o$\or$\varpi$\or$\varrho$\or$\varsigma$\or$\tau$%
+ \or$\upsilon$\or$\varphi$\or$\chi$\or$\psi$\or$\omega$\else\@ctrerr\fi}
+\def\@Greek#1{\theorem@checkbold%
+ \ifcase#1\or A\or B\or$\Gamma$\or$\Delta$\or E%
+ \or Z\or H\or$\Theta$\or I\or K\or$\Lambda$\or M%
+ \or N\or$\Xi$\or O\or$\Pi$\or P\or$\Sigma$\or T%
+ \or$\Upsilon$\or$\Phi$\or X\or$\Psi$\or$\Omega$\else\@ctrerr\fi}
+\def\greek#1{\@greek{\csname c@#1\endcsname}}
+\def\Greek#1{\@Greek{\csname c@#1\endcsname}}
+\ProcessOptions\relax
+\ifx\thm@noconfig\@undefined
+\InputIfFileExists{ntheorem.cfg}%
+ {\PackageInfo{\basename}{Local config file ntheorem.cfg used}}%
+ {\ifx\thm@usestd\@undefined%
+ \else%
+ \InputIfFileExists{ntheorem.std}%
+ {\PackageInfo{\basename}{Standard config file ntheorem.std used}}{}
+ \fi}
+\fi
+\endinput
+%%
+%% End of file `ntheorem.sty'.
diff --git a/macros/latex/contrib/hyperref/psdmapshortnames.pl b/macros/latex/contrib/hyperref/psdmapshortnames.pl
new file mode 100644
index 0000000000..4af924c932
--- /dev/null
+++ b/macros/latex/contrib/hyperref/psdmapshortnames.pl
@@ -0,0 +1,133 @@
+#!/usr/bin/env perl
+use strict;
+$^W=1;
+
+# File: psdmapshortnames.pl
+# Date: 2012-07-12
+# Copyright (c) 2012 by Heiko Oberdiek.
+#
+# This file is part of the `Hyperref Bundle'.
+# -------------------------------------------
+#
+# This work may be distributed and/or modified under the
+# conditions of the LaTeX Project Public License, either version 1.3
+# of this license or (at your option) any later version.
+# The latest version of this license is in
+# http://www.latex-project.org/lppl.txt
+# and version 1.3 or later is part of all distributions of LaTeX
+# version 2005/12/01 or later.
+#
+# This work has the LPPL maintenance status `maintained'.
+#
+# The Current Maintainer of this work is Heiko Oberdiek.
+#
+# The list of all files belonging to the `Hyperref Bundle' is
+# given in the file `manifest.txt'.
+
+my $file_org = 'hyperref.dtx';
+my $file_bak = 'hyperref.dtx.bak';
+my $file_tmp = 'hyperref.dtx.tmp';
+
+my @lines_map;
+my $cmd_map = 'psdmapshortnames';
+my $found_map_beg = 0;
+my $found_map_end = 0;
+
+my @lines_alias;
+my $cmd_alias = 'psdaliasnames';
+my $found_alias_beg = 0;
+my $found_alias_end = 0;
+
+open(IN, '<', $file_org) or die "!!! Error: Cannot open `$file_org'!\n";
+binmode(IN);
+unlink $file_tmp if -f $file_tmp;
+open(OUT, '>', $file_tmp) or die "!!! Error: Cannot open `$file_org'!\n";
+binmode(OUT);
+
+while (<IN>) {
+ print OUT;
+ if (/^\\newcommand\*\{\\$cmd_map\}\{\%\s*$/) {
+ $found_map_beg = 1;
+ print OUT @lines_map;
+ while (<IN>) {
+ if (/^\}\% \\$cmd_map$/) {
+ print OUT;
+ $found_map_end = 1;
+ last;
+ }
+ if (/^\}/) {
+ print OUT;
+ last;
+ }
+ }
+ }
+ if (/^\\DeclareTextCommand\{\\text(\w+)\}\{PU\}\{[\\\d\w]+\}\%\*/) {
+ my $name = $1;
+ push @lines_map, " \\let\\$name\\text$name\n";
+ }
+
+ if (/^\\newcommand\*\{\\$cmd_alias\}\{\%\s*$/) {
+ $found_alias_beg = 1;
+ print OUT @lines_alias;
+ while (<IN>) {
+ if (/^\}\% \\$cmd_alias$/) {
+ print OUT;
+ $found_alias_end = 1;
+ last;
+ }
+ if (/^\}/) {
+ print OUT;
+ last;
+ }
+ }
+ }
+ if (/^%\* \\([A-Za-z@]+)\s+->\s+\\(\w+)(\s|$)/) {
+ my $name_old = $1;
+ my $name_new = $2;
+ push @lines_alias, " \\let\\$name_new\\$name_old\n";
+ }
+}
+
+close(IN);
+close(OUT);
+
+$found_map_beg or die "!!! Error: Definition for \\$cmd_map not found!\n";
+$found_map_end or die "!!! Error: End of \\$cmd_map not found!\n";
+
+$found_alias_beg or die "!!! Error: Definition for \\$cmd_alias not found!\n";
+$found_alias_end or die "!!! Error: End of \\$cmd_alias not found!\n";
+
+my $count_map = @lines_map;
+print "* $count_map map entries found.\n";
+
+my $count_alias = @lines_alias;
+print "* $count_alias alias entries found.\n";
+
+use Digest::MD5;
+
+open(IN, '<', $file_org) or die "!!! Error: Cannot open `$file_org'!\n";
+binmode(IN);
+my $md5_org = Digest::MD5->new->addfile(*IN)->hexdigest;
+close(IN);
+print "* 0x$md5_org = md5($file_org)\n";
+
+open(IN, '<', $file_tmp) or die "!!! Error: Cannot open `$file_tmp'!\n";
+binmode(IN);
+my $md5_tmp = Digest::MD5->new->addfile(*IN)->hexdigest;
+close(IN);
+print "* 0x$md5_tmp = md5($file_tmp)\n";
+
+if ($md5_org eq $md5_tmp) {
+ print "* Done, nothing to do.\n";
+ exit(0);
+}
+
+unlink $file_bak if -f $file_bak;
+rename $file_org, $file_bak or die "!!! Error: Moving `$file_org' to `$file_bak' failed!\n";
+print "* $file_org -> $file_bak\n";
+rename $file_tmp, $file_org or die "!!! Error: Moving `$file_tmp' to `$file_org' failed!\n";
+print "* $file_tmp -> $file_org\n";
+
+print "* Done.\n";
+
+__END__
diff --git a/macros/latex/contrib/hyperref/xr-hyper.sty b/macros/latex/contrib/hyperref/xr-hyper.sty
new file mode 100644
index 0000000000..0f36f39a11
--- /dev/null
+++ b/macros/latex/contrib/hyperref/xr-hyper.sty
@@ -0,0 +1,120 @@
+%% xr package (beta release)
+
+%% Copyright (C) 1993-1997 David Carlisle
+
+%% This is a modified version of the xr package from the Standard LaTeX
+%% tools distribution. It has some internal changes to cooperate with
+%% the hyperref package, and one new user level argument, also mainly of
+%% use for hyperref.
+%% If no problems are reported the version in the tools distribution
+%% will be updated to match this at the next LaTeX release.
+
+%% \externaldocument[prefix]{document}[URL]
+
+%% The `document' referred to by the main argument is the file
+%% document.aux
+%% which must be somewhere on TeX's input path.
+%% Some packages (eg hyperref) really need to know the location of the
+%% final document rather than the aux file. By default this is assumed
+%% to be `document.dvi'. A package may redefine the command \XR@ext to
+%% change this default extension (eg some of the hyperref backends
+%% define this to be `document.pdf'). However sometimes the final
+%% document may be in a position unrelated to the aux file, or the
+%% browser may not be able to find files at an arbitrary point in
+%% TeX's input path, so the new final optional argument allows a full
+%% URL to the final document to be specified.
+%%
+%% \externaldocument{file}[http://here.xxx.edu/this/path/to/file.dvi]
+%%
+%% Unless a package redefines \XR@addfile, the optional URL argument
+%% will be ignored.
+%%
+%% This version (beta2) also has another improvement unrelated
+%% to the hyperref support. Olivier Michel pointed out that
+%% if the aux file was not on texinputs you could not always go
+%% \externaldocument{/some/path/to/file}
+%% specifically that worked if file.aux was a `simple' document with
+%% one aux file, but if \include had been used, the `sub' aux files
+%% would not be found by xr in the remote directory.
+%% This version calls \filename@parse to get the directory name of the
+%% remote directory, which is then explicitly prepended to the names of
+%% any included aux files.
+%%
+%% History
+%%
+%% 1997/10/06 v6.00beta2
+%%
+%% 1999/09/01 v6.00beta3
+%% Definitions of \XR@addURL corrected (Heiko Oberdiek).
+%%
+%% 2000/03/22 v6.00beta4
+%% \xdef changed to \protected@xdef.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{xr-hyper}
+ [2000/03/22 v6.00beta4 eXternal References (DPC)]
+
+\def\externaldocument{\@testopt\XR@{}}
+\def\XR@[#1]#2{\@testopt{\XR@@{#1}{#2}}{#2.\XR@ext}}
+
+\def\XR@@#1#2[#3]{{%
+ \makeatletter
+ \def\XR@prefix{#1}%
+ \def\XR@URL{#3}%
+ \filename@parse{#2}%
+ \XR@next#2.aux\relax\\}}
+\def\XR@next#1\relax#2\\{%
+ \edef\XR@list{#2}%
+ \XR@loop{#1}}
+\def\XR@aux{%
+ \ifx\XR@list\@empty\else\expandafter\XR@explist\fi}
+
+\def\XR@explist{\expandafter\XR@next\XR@list\\}
+\def\XR@loop#1{%
+\def\f{#1}%\show\f
+\openin\@inputcheck#1\relax
+ \ifeof\@inputcheck
+ \PackageWarning{xr}{^^JNo file #1^^JLABELS NOT IMPORTED.^^J}%
+ \expandafter\XR@aux
+ \else
+ \PackageInfo{xr}{IMPORTING LABELS FROM #1}%
+ \expandafter\XR@read\fi}
+\def\XR@read{%
+ \read\@inputcheck to\XR@line
+ \expandafter\XR@test\XR@line...\XR@}
+\long\def\XR@test#1#2#3#4\XR@{%
+ \ifx#1\newlabel
+ \expandafter\protected@xdef\csname r@\XR@prefix#2\endcsname
+ {\XR@addURL{#3}}%
+ \else\ifx#1\@input
+ \edef\XR@list{\XR@list\filename@area#2\relax}%
+ \fi\fi
+ \ifeof\@inputcheck\expandafter\XR@aux
+ \else\expandafter\XR@read\fi}
+
+\providecommand*{\XR@addURL}[1]{#1}
+% The above definition doesn't actually use the URL, hyperref 6 could
+% make a definition like so to put the URL in the fifth field of its
+% ref structure.
+
+\@ifpackageloaded{hyperref}{%
+ \PackageWarningNoLine{xr-hyper}{Load package `hyperref' after `xr-hyper'}%
+}{}
+
+%\def\XR@addURL#1{\XR@@dURL#1{}{}{}{}\\}
+
+%\def\XR@@dURL#1#2#3#4#5\\{%
+% {#1}{#2}%
+% \if!#4!%
+% \else
+% {#3}{#4}{\XR@URL}%
+% \fi
+%}
+
+\providecommand\XR@ext{dvi}
+
+\endinput
+%%
+%% End of file `xr.sty'.
+
+