From eb1e0a22fee869ae52e26bf9cd370da5a15358f3 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Sat, 11 Sep 2010 22:56:04 +0000
Subject: hyperref update (11sep10)

git-svn-id: svn://tug.org/texlive/trunk@19658 c570f23f-e606-0410-a88d-b1316a301751
---
 .../texmf-dist/source/latex/hyperref/hyperref.dtx  | 744 ++++++++++++++++-----
 1 file changed, 579 insertions(+), 165 deletions(-)

(limited to 'Master/texmf-dist/source/latex/hyperref/hyperref.dtx')

diff --git a/Master/texmf-dist/source/latex/hyperref/hyperref.dtx b/Master/texmf-dist/source/latex/hyperref/hyperref.dtx
index e34fb0073c6..353532ad87f 100644
--- a/Master/texmf-dist/source/latex/hyperref/hyperref.dtx
+++ b/Master/texmf-dist/source/latex/hyperref/hyperref.dtx
@@ -44,7 +44,7 @@
 %<puenc>\ProvidesFile{puenc.def}
 %<puvnenc>\ProvidesFile{puvnenc.def}
 %<puarenc>\ProvidesFile{puarenc.def}
-%<!none>  [2010/06/18 v6.81g
+%<!none>  [2010/09/11 v6.81m
 %<package>  Hypertext links for LaTeX]
 %<nohyperref>  Dummy hyperref (SR)]
 %<driver>  Hyperref documentation driver file]
@@ -126,7 +126,7 @@
 \end{document}
 %</driver>
 % \fi
-% \CheckSum{27158}
+% \CheckSum{27643}
 %
 % \MakeShortVerb{|}
 % \StopEventually{}
@@ -579,6 +579,50 @@
 \def\Hy@Info#1{\PackageInfo{hyperref}{#1}}
 %    \end{macrocode}
 %
+% \subsection{Checks with regular expressions}
+%
+%    \begin{macrocode}
+\ltx@IfUndefined{pdfmatch}{%
+  \def\Hy@Match#1#2#3#4{}%
+}{%
+  \def\Hy@Match#1#2{%
+    \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}%
+    \ifnum\pdfmatch{#2}{#1}=\ltx@one
+      \endgroup
+      \expandafter\ltx@firstoftwo
+    \else
+      \endgroup
+      \expandafter\ltx@secondoftwo
+    \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}
@@ -1228,7 +1272,7 @@
     \let\label\@gobble
     \let\index\@gobble
     \let\glossary\@gobble
-    \let\href\@secondoftwo
+    \let\href\HyPsd@href
     \let\@mkboth\@gobbletwo
 %    \end{macrocode}
 %
@@ -2902,6 +2946,12 @@
 %
 % \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.
@@ -4246,10 +4296,28 @@
 %    |\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
@@ -4257,8 +4325,13 @@
         \setlength\HyperRaiseLinkLength\HyperRaiseLinkDefault
         \HyperRaiseLinkHook
       \expandafter\endgroup
-      \expandafter\raise\the\HyperRaiseLinkLength\hbox{#1}%
+      \expandafter\raise\the\HyperRaiseLinkLength\hbox{%
+        \Hy@RestoreSpaceFactor
+        #1%
+        \Hy@SaveSpaceFactor
+      }%
     }%
+    \Hy@RestoreSpaceFactor
   \fi
 }
 %    \end{macrocode}
@@ -5954,7 +6027,40 @@
   \ifx\\#1\\%
     \def\@pdfstartview{}%
   \else
-    \hypercalcbpdef\@pdfstartview{ /#1 }%
+    \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/)|%
+        Fit(|B|%
+         (H|V|BH|BV) (null|\HyPat@NonNegativeReal/)|%
+         R \HyPat@NonNegativeReal/ \HyPat@NonNegativeReal/ %
+           \HyPat@NonNegativeReal/ \HyPat@NonNegativeReal/%
+      ))$%
+    }{}{%
+      \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}}
@@ -6031,7 +6137,8 @@
 \def\@pdfkeywords{}
 \def\@pdftrapped{}
 \def\@pdfpagescrop{}
-\def\@pdfstartview{ /Fit }
+\def\@pdfstartview{/Fit}
+\def\@pdfremotestartview{/Fit}
 \def\@pdfstartpage{1}
 \def\@pdfprintpagerange{}
 \def\@pdflang{}
@@ -6127,7 +6234,7 @@
     \let\@secondoffive\@secondoftwo
     \let\ReadBookmarks\relax
     \let\WriteBookmarks\relax
-    \Hy@WarningNoLine{ draft mode on}%
+    \Hy@WarningNoLine{Draft mode on}%
   \fi
   \Hy@DisableOption{draft}%
   \Hy@DisableOption{nolinks}%
@@ -6775,7 +6882,9 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\DeclareRobustCommand*{\href}{%
+\DeclareRobustCommand*{\href}[1][]{%
+  \begingroup
+  \setkeys{href}{#1}%
   \@ifnextchar\bgroup\Hy@href{\hyper@normalise\href@}%
 }
 \def\Hy@href#{%
@@ -6785,11 +6894,99 @@
   \catcode`\$=6 %
   \catcode`\#=12 %
   \gdef\href@$1{\expandafter\href@split$1##\\}%
-  \gdef\href@split$1#$2#$3\\{%
-    \hyper@@link{$1}{$2}%
+  \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@newwindowsettrue
+    \Hy@newwindowtrue
+  \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}{%
+    \PackageError{hyperref}{%
+      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}
@@ -6949,6 +7146,12 @@
 %
 %    \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}
@@ -6960,7 +7163,7 @@
 % We need to get the 1st parameter properly expanded,
 % so we delimit the arguments rather than passing it inside a group.
 %    \begin{macrocode}
-  \expandafter\@hyper@readexternallink{#2}{#3}{#4}#1::\\{#1}%
+  \@hyper@readexternallink{#2}{#3}{#4}#1::\\{#1}%
 }
 %    \end{macrocode}
 % Now (potentially), we are passed:
@@ -6983,17 +7186,17 @@
 % then we lose. Such names must be prefixed with an explicit |dvi:|
 %    \begin{macrocode}
   \ifx\\#6\\%
-    \expandafter\@hyper@linkfile file:#7\\{#3}{#2}%
+    \@hyper@linkfile file:#7\\{#3}{#2}{#7}%
   \else
     \ifx\\#4\\%
-      \expandafter\@hyper@linkfile file:#7\\{#3}{#2}%
+      \@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
-        \expandafter\@hyper@linkfile#7\\{#3}{#2}%
+        \@hyper@linkfile#7\\{#3}{#2}{#7}%
       \else
 %    \end{macrocode}
 % if it starts `run:', its to launch an application.
@@ -7008,7 +7211,7 @@
               #2%
             \endgroup
           \else
-            \expandafter\@hyper@launch#7\\{#3}{#2}%
+            \@hyper@launch#7\\{#3}{#2}%
           \fi
         \else
 %    \end{macrocode}
@@ -7039,8 +7242,8 @@
 % starting .. fell over. Switched to using |\filename@parse| to
 % solve this.
 %    \begin{macrocode}
-\def\@hyper@linkfile file:#1\\#2#3{%
-     %file url,link string, name
+\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}%
@@ -7051,7 +7254,7 @@
   }{%
     \ifx\@baseurl\@empty
       \hyper@linkurl{#2}{%
-        \Hy@linkfileprefix\use@file\ifx\\#3\\\else\hyper@hash#3\fi
+        #4\ifx\\#3\\\else\hyper@hash#3\fi
       }%
     \else
       \hyper@linkurl{#2}{\use@file\ifx\\#3\\\else\hyper@hash#3\fi}%
@@ -7079,6 +7282,31 @@
   \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
@@ -7123,6 +7351,7 @@
   \fi
   \let\anchor@spot\@empty
 }
+\def\anchor@spot{}
 %    \end{macrocode}
 % \section{Compatibility with the \emph{\LaTeX{}2html} package}\label{latex2html}
 % Map our macro names on to Nikos', so that documents prepared
@@ -7841,12 +8070,21 @@
 \def\Field@boolkey#1#2{%
   \csname Fld@#2\ifx\relax#1\relax true\else#1\fi\endcsname
 }
-\newtoks\Field@toks
-\Field@toks={ }%
-\def\Field@addtoks#1#2{%
-  \edef\@processme{\Field@toks{\the\Field@toks\space #1="#2"}}%
-  \@processme
-}
+\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\\%
@@ -7864,12 +8102,21 @@
 \define@key{Field}{disabled}[true]{%
   \lowercase{\Field@boolkey{#1}}{disabled}%
 }
-\define@key{Field}{accesskey}{%
-  \Field@addtoks{accesskey}{#1}%
-}
-\define@key{Field}{tabkey}{%
-  \Field@addtoks{tabkey}{#1}%
-}
+\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}%
 }
@@ -7993,33 +8240,46 @@
 \Hy@temp{onblur}
 \Hy@temp{onenter}
 \Hy@temp{onexit}
-\def\Hy@temp#1{%
-  \define@key{Field}{#1}{%
-    \Field@addtoks{#1}{##1}%
+\ifHy@texht
+  \def\Hy@temp#1{%
+    \define@key{Field}{#1}{%
+      \Field@addtoks{#1}{##1}%
+    }%
   }%
-}
-\Hy@temp{onselect}
-\Hy@temp{onchange}
+\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{onkeypress}
 \Hy@temp{onkeydown}
 \Hy@temp{onkeyup}
-\ifHy@pdfa
-  \define@key{Field}{onclick}{%
-    \PackageError{hyperref}{%
-      PDF/A: Action `onclick' is prohibited%
-    }\@ehc
-  }%
-\else
+\Hy@temp{onselect}
+\Hy@temp{onchange}
+\Hy@temp{onkeypress}
+\ifHy@texht
   \define@key{Field}{onclick}{%
-    \def\Fld@onclick@code{#1}%
     \Field@addtoks{onclick}{#1}%
   }%
+\else
+  \ifHy@pdfa
+    \define@key{Field}{onclick}{%
+      \PackageError{hyperref}{%
+        PDF/A: Action `onclick' is prohibited%
+      }\@ehc
+    }%
+  \else
+    \define@key{Field}{onclick}{%
+      \def\Fld@onclick@code{#1}%
+    }%
+  \fi
 \fi
 %    \end{macrocode}
 %    \begin{macrocode}
@@ -8278,7 +8538,7 @@
 \let\phantomsection\@empty
 \let\hypersetup\@gobble
 \let\hyperbaseurl\@gobble
-\let\href\@gobble
+\newcommand*{\href}[3][]{#3}
 \let\hyperdef\@gobbletwo
 \let\hyperlink\@gobble
 \let\hypertarget\@gobble
@@ -9138,6 +9398,7 @@
     \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
@@ -9474,6 +9735,23 @@
 }{}
 %    \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
@@ -10557,7 +10835,7 @@
                \evensidemargin
              \fi
         \kern-1bp\relax
-        \Hy@TempPageAnchor
+        \Hy@TempPageAnchor\relax
         \hss
       }%
       \vss
@@ -11583,6 +11861,9 @@
 %<*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
@@ -11710,14 +11991,14 @@
       \begingroup
         \ifHy@ocgcolorlinks
           \def\Hy@ocgcolor{#1}%
-          \setbox0=\color@hbox
+          \setbox0=\hbox\bgroup\color@begingroup
         \else
           \HyColor@UseColor#1%
         \fi
     }%
     \def\Hy@endcolorlink{%
       \ifHy@ocgcolorlinks
-        \color@endbox
+        \color@endgroup\egroup
         \mbox{%
           \pdfliteral page{/OC/OCPrint BDC}%
           \rlap{\copy0}%
@@ -11757,11 +12038,17 @@
 % First define the anchors:
 %    \begin{macrocode}
 \def\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}
@@ -11876,6 +12163,10 @@
          /Type/Action%
          /S/URI%
          /URI(\Hy@pstringURI)%
+         \ifHy@href@ismap
+           /IsMap true%
+         \fi
+         \Hy@href@nextactionraw
        >>%
       }%
       \relax
@@ -11885,8 +12176,11 @@
 }
 \def\hyper@linkfile#1#2#3{% anchor text, filename, linkname
   \begingroup
-    \Hy@pstringdef\Hy@pstringF{#2}%
+    \def\Hy@pstringF{#2}%
+    \Hy@CleanupFile\Hy@pstringF
+    \Hy@pstringdef\Hy@pstringF\Hy@pstringF
     \Hy@pstringdef\Hy@pstringD{#3}%
+    \Hy@MakeRemoteAction
     \leavevmode
     \pdfstartlink
       attr{%
@@ -11922,10 +12216,11 @@
 % \end{verbatim}
 %    \begin{macrocode}
           \ifx\\#3\\%
-            /D[0 \@pdfstartview]%
+            /D[\Hy@href@page\@pdfremotestartview]%
           \else
             /D(\Hy@pstringD)%
           \fi
+          \Hy@href@nextactionraw
         >>%
       }%
       \relax
@@ -11961,6 +12256,7 @@
           \else
             /Win<</P(\Hy@pstringP)/F(\Hy@pstringF)>>%
           \fi
+          \Hy@href@nextactionraw
         >>%
       }%
       \relax
@@ -12361,7 +12657,9 @@
         /Subtype/Link%
         \ifHy@pdfa /F 4\fi
         /A<<%
-          /S/Named/N/#1%
+          /S/Named%
+          /N/#1%
+          \Hy@href@nextactionraw
         >>%
       }%
       \relax
@@ -12509,13 +12807,19 @@
 %    \begin{macrocode}
   \leavevmode
   \ifHy@raiselinks
-    \setbox\@tempboxa=\color@hbox #1\color@endbox
+    \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#1%
+    \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
@@ -12526,6 +12830,7 @@
     \advance\@linkdim by -6.5\p@
     \raise\@linkdim\hbox{\special{html:</a>}}%
     \Hy@endcolorlink
+    \Hy@RestoreSpaceFactor
   \else
     \begingroup
       \hyper@chars
@@ -12611,9 +12916,12 @@
 }
 \def\hyper@link#1#2#3{%
   \Hy@VerboseLinkStart{#1}{#2}%
-  \setbox\@tempboxa=\color@hbox #3\color@endbox
   \leavevmode
   \ifHy@raiselinks
+    \Hy@SaveSpaceFactor
+    \Hy@SaveSavedSpaceFactor
+    \sbox\@tempboxa{\Hy@RestoreSpaceFactor#3}%
+    \Hy@RestoreSavedSpaceFactor
     \@linkdim\dp\@tempboxa
     \lower\@linkdim\hbox{%
       \special{button: %
@@ -12621,19 +12929,24 @@
         \number\ht\@tempboxa\space
         #2%
       }%
-      \expandafter\Hy@colorlink\csname @#1color\endcsname#3%
+      \expandafter\Hy@colorlink\csname @#1color\endcsname
+      \Hy@RestoreSpaceFactor
+      #3%
+      \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%
+    \expandafter\Hy@colorlink\csname @#1color\endcsname
+    #3%
     \Hy@endcolorlink
   \fi
 }
@@ -12641,8 +12954,11 @@
   \begingroup
     \hyper@chars
     \leavevmode
-    \setbox\@tempboxa=\color@hbox #1\color@endbox
     \ifHy@raiselinks
+      \Hy@SaveSpaceFactor
+      \Hy@SaveSavedSpaceFactor
+      \sbox\@tempboxa{\Hy@RestoreSpaceFactor#1}%
+      \Hy@RestoreSavedSpaceFactor
       \@linkdim\dp\@tempboxa
       \lower\@linkdim\hbox{%
         \special{button: %
@@ -12651,11 +12967,16 @@
           launch: \wwwbrowser\space
           #2%
         }%
-        \Hy@colorlink\@urlcolor#1\Hy@endcolorlink
+        \Hy@colorlink\@urlcolor
+          \Hy@RestoreSpaceFactor
+          #1%
+          \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
@@ -12671,8 +12992,11 @@
   \begingroup
     \hyper@chars
     \leavevmode
-    \setbox\@tempboxa=\color@hbox #1\color@endbox
     \ifHy@raiselinks
+      \Hy@SaveSpaceFactor
+      \Hy@SaveSavedSpaceFactor
+      \sbox\@tempboxa{\Hy@RestoreSpaceFactor#1}%
+      \Hy@RestoreSavedSpaceFactor
       \@linkdim\dp\@tempboxa
       \lower\@linkdim\hbox{%
         \special{button: %
@@ -12681,11 +13005,16 @@
           #3,%
           file: #2%
         }%
-        \Hy@colorlink\@filecolor#1\Hy@endcolorlink
+        \Hy@colorlink\@filecolor
+          \Hy@RestoreSpaceFactor
+          #1%
+          \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
@@ -12815,6 +13144,9 @@
 %    \begin{macrocode}
 \providecommand*{\XR@ext}{pdf}
 \Hy@setbreaklinks{true}
+\def\HyPat@ObjRef{%
+  @[^ ]+%
+}
 \newsavebox{\pdfm@box}
 \def\@pdfm@mark#1{\special{pdf:#1}}
 \def\@pdfm@dest#1{%
@@ -12975,14 +13307,14 @@
       \begingroup
         \ifHy@ocgcolorlinks
           \def\Hy@ocgcolor{#1}%
-          \setbox0=\color@hbox
+          \setbox0=\hbox\bgroup\color@begingroup
         \else
           \HyColor@UseColor#1%
         \fi
     }%
     \def\Hy@endcolorlink{%
       \ifHy@ocgcolorlinks
-        \color@endbox
+        \color@endgroup\egroup
         \mbox{%
           \@pdfm@mark{content /OC/OCPrint BDC}%
           \rlap{\copy0}%
@@ -13048,6 +13380,7 @@
         /A<<%
           /S/GoTo%
           /D(\Hy@testname)%
+          \Hy@href@nextactionraw
         >>%
       >>%
     }%
@@ -13061,8 +13394,11 @@
 \def\hyper@linkfile#1#2#3{%
   \leavevmode
   \Hy@BeginAnnot{%
-    \Hy@pstringdef\Hy@pstringF{#2}%
+    \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%
@@ -13076,8 +13412,14 @@
         /A<<%
           /S/GoToR%
           /F(\Hy@pstringF)%
-          /D\ifx\\#3\\[0 \@pdfstartview]\else(\Hy@pstringD)\fi
+          /D%
+          \ifx\\#3\\%
+            [\Hy@href@page\@pdfremotestartview]%
+          \else
+            (\Hy@pstringD)%
+          \fi
           \Hy@SetNewWindow
+          \Hy@href@nextactionraw
         >>%
       >>%
     }%
@@ -13103,6 +13445,10 @@
         /A<<%
           /S/URI%
           /URI(\Hy@pstringURI)%
+          \ifHy@href@ismap
+            /IsMap true%
+          \fi
+          \Hy@href@nextactionraw
         >>%
       >>%
     }%
@@ -13122,6 +13468,7 @@
           /A<<%
             /S/Named%
             /N/#1%
+            \Hy@href@nextactionraw
           >>%
           \Hy@setpdfborder
           \ifx\@menubordercolor\relax
@@ -13483,7 +13830,12 @@
   \def\Hy@tempa{#1}%
   \ifx\Hy@tempa\@urltype
     \special{!%
-      aref <u=/Type /Action /S /URI /URI (\Hy@pstringURI)>;%
+      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
@@ -13522,10 +13874,12 @@
 }
 \def\hyper@linkfile#1#2#3{%
   \leavevmode
+  \def\Hy@pstringF{#2}%
+  \Hy@CleanupFile\Hy@pstringF
   \special{!%
     aref <%
     \ifnum\Hy@VTeXversion>753 \ifHy@newwindow n\fi\fi
-    f=#2>#3;%
+    f=\Hy@pstringF>#3;%
     a=<%
       \ifHy@pdfa /F 4\fi
       \Hy@setpdfborder
@@ -13544,7 +13898,12 @@
     \hyper@chars
     \leavevmode
     \special{!%
-      aref <u=/Type /Action /S /URI /URI (\Hy@pstringURI)>;%
+      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
@@ -13606,7 +13965,8 @@
       \ifx\\#3\\%
       \else
         /Win<</F(\Hy@pstringF)/P(\Hy@pstringP)>>%
-      \fi%
+      \fi
+      \Hy@href@nextactionraw
     >;%
     a=<%
       \ifHy@pdfa /F 4\fi
@@ -14107,6 +14467,9 @@
 %    \begin{macrocode}
 %<*pdfmark>
 \Hy@breaklinks@unsupported
+\def\HyPat@ObjRef{%
+  \{[^{}]+\}%
+}
 \def\hyper@anchor#1{%
   \Hy@SaveLastskip
   \Hy@VerboseAnchor{#1}%
@@ -14144,7 +14507,10 @@
   \Hy@VerboseLinkStart{#1}{#2}%
   \ifHy@breaklinks
   \else
-    \leavevmode\hbox\bgroup
+    \leavevmode
+    \Hy@SaveSpaceFactor
+    \hbox\bgroup
+    \Hy@RestoreSpaceFactor
   \fi
   \expandafter\Hy@colorlink\csname @#1color\endcsname
   \literalps@out{H.S}%
@@ -14176,7 +14542,9 @@
   \Hy@endcolorlink
   \ifHy@breaklinks
   \else
+    \Hy@SaveSpaceFactor
     \egroup
+    \Hy@RestoreSpaceFactor
   \fi
 }
 %    \end{macrocode}
@@ -14511,10 +14879,19 @@
     \literalps@out{H.R}%
   \else
     \leavevmode
+    \Hy@SaveSpaceFactor
     \ifHy@breaklinks
-      \Hy@setouterhbox\pdf@box{\Hy@AllowHyphens#1}%
+      \Hy@setouterhbox\pdf@box{%
+        \Hy@RestoreSpaceFactor
+        \Hy@AllowHyphens#1%
+        \Hy@SaveSpaceFactor
+      }%
     \else
-      \sbox\pdf@box{#1}%
+      \sbox\pdf@box{%
+        \Hy@RestoreSpaceFactor
+        #1%
+        \Hy@SaveSpaceFactor
+      }%
     \fi
     \dimen@\ht\pdf@box
     \ifdim\dp\pdf@box=\z@
@@ -14546,6 +14923,7 @@
     \else
       \raise\dimen@\hbox{\literalps@out{H.R}}%
     \fi
+    \Hy@RestoreSpaceFactor
   \fi
   \ifx\pdf@type\Hy@DEST
   \else
@@ -14775,7 +15153,13 @@
       Border=\@pdfborder,%
       BorderStyle=\@pdfborderstyle,%
       Color=\@urlbordercolor,%
-      Action={<< /Subtype /URI /URI (\Hy@pstringURI) >>},%
+      Action={<<%
+        /Subtype/URI%
+        /URI(\Hy@pstringURI)%
+        \ifHy@href@ismap
+          /IsMap true%
+        \fi
+      >>},%
       Subtype=/Link,%
       PDFAFlags=4%
     }%
@@ -14783,8 +15167,11 @@
 }
 \def\hyper@linkfile#1#2#3{%
   \begingroup
-    \Hy@pstringdef\Hy@pstringF{#2}%
+    \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,%
@@ -14800,7 +15187,13 @@
           /S/GoToR%
           \Hy@SetNewWindow
           /F(\Hy@pstringF)%
-          /D\ifx\\#3\\[0 \@pdfstartview]\else(\Hy@pstringD)cvn\fi
+          /D%
+          \ifx\\#3\\%
+            [\Hy@href@page\@pdfremotestartview]%
+          \else
+            (\Hy@pstringD)cvn%
+          \fi
+          \Hy@href@nextactionraw
         >>%
       }%
     }%
@@ -14829,6 +15222,7 @@
           \else
             /Win<</P(\Hy@pstringP)/F(\Hy@pstringF)>>%
           \fi
+          \Hy@href@nextactionraw
         >>%
       }%
     }%
@@ -15309,17 +15703,24 @@
 \def\hyper@linkurl#1#2{%
   \leavevmode
   \ifHy@raiselinks
-    \setbox\@tempboxa=\color@hbox #1\color@endbox
+    \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#1%
-    \@linkdim\ht\@tempboxa
-    \advance\@linkdim by -6.5\p@
-    \raise\@linkdim\hbox{\special{html:</a>}}%
+    \Hy@colorlink\@urlcolor
+      \Hy@RestoreSpaceFactor
+      #1%
+      \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
@@ -15608,7 +16009,10 @@
 \def\hyper@linkurl#1#2{%
   \leavevmode
   \ifHy@raiselinks
-    \setbox\@tempboxa=\color@hbox #1\color@endbox
+    \Hy@SaveSpaceFactor
+    \Hy@SaveSavedSpaceFactor
+    \sbox\@tempboxa{\Hy@RestoreSpaceFactor#1}%
+    \Hy@RestoreSavedSpaceFactor
     \@linkdim\dp\@tempboxa
     \lower\@linkdim\hbox{%
       \begingroup
@@ -15618,10 +16022,15 @@
         }%
       \endgroup
     }%
-    \Hy@colorlink\@urlcolor#1\Hy@endcolorlink
+    \Hy@colorlink\@urlcolor
+      \Hy@RestoreSpaceFactor
+      #1%
+      \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
@@ -15649,6 +16058,25 @@
   \def\rEfLiNK #1#2{#2}%
 \fi
 \def\backref#1{}
+%    \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@SaveSpaceFactor
+    }%
+    \Hy@RestoreSpaceFactor
+  }%
+}
 %</tex4ht>
 %<*tex4htcfg>
 \IfFileExists{\jobname.cfg}{\endinput}{}
@@ -15867,7 +16295,6 @@
     \fi
   }%
   \begingroup
-    \Field@toks={ }%
     \expandafter\HyField@SetKeys\expandafter{%
       \DefaultOptionsofText,#1%
     }%
@@ -15898,7 +16325,6 @@
       \ifdim\@tempdimb>\@tempdima\@tempdima\@tempdimb\fi
     }%
     \advance\@tempdima by 15\p@
-    \Field@toks={ }%
     \begingroup
       \HyField@SetKeys{#1}%
     \edef\x{\endgroup
@@ -15977,7 +16403,6 @@
 \def\@PushButton[#1]#2{% parameters, label
   \def\Fld@name{#2}%
   \begingroup
-    \Field@toks={ }%
     \expandafter\HyField@SetKeys\expandafter{%
       \DefaultOptionsofPushButton,#1%
     }%
@@ -16003,7 +16428,6 @@
   \endgroup
 }
 \def\@Submit[#1]#2{%
-  \Field@toks={ }%
   \def\Fld@width{\DefaultWidthofSubmit}%
   \def\Fld@height{\DefaultHeightofSubmit}%
   \begingroup
@@ -16021,7 +16445,6 @@
   \endgroup
 }
 \def\@Reset[#1]#2{%
-  \Field@toks={ }%
   \def\Fld@width{\DefaultWidthofReset}%
   \def\Fld@height{\DefaultHeightofReset}%
   \begingroup
@@ -16050,7 +16473,6 @@
   \begingroup
     \def\Fld@width{\DefaultWidthofCheckBox}%
     \def\Fld@height{\DefaultHeightofCheckBox}%
-    \Field@toks={ }%
     \expandafter\HyField@SetKeys\expandafter{%
       \DefaultOptionsofCheckBox,#1%
     }%
@@ -16360,7 +16782,6 @@
     \fi
   }%
   \begingroup
-    \Field@toks={ }%
     \expandafter\HyField@SetKeys\expandafter{%
       \DefaultOptionsofText,#1%
     }%
@@ -16392,7 +16813,6 @@
       \ifdim\@tempdimb>\@tempdima\@tempdima\@tempdimb\fi
     }%
     \advance\@tempdima by 15\p@
-    \Field@toks={ }%
     \begingroup
       \HyField@SetKeys{#1}%
     \edef\x{\endgroup
@@ -16489,7 +16909,6 @@
 \def\@PushButton[#1]#2{% parameters, label
   \def\Fld@name{#2}%
   \begingroup
-    \Field@toks={ }%
     \expandafter\HyField@SetKeys\expandafter{%
       \DefaultOptionsofPushButton,#1%
     }%
@@ -16517,7 +16936,6 @@
   \endgroup
 }
 \def\@Submit[#1]#2{%
-  \Field@toks={ }%
   \def\Fld@width{\DefaultWidthofSubmit}%
   \def\Fld@height{\DefaultHeightofSubmit}%
   \begingroup
@@ -16540,7 +16958,6 @@
   \endgroup
 }
 \def\@Reset[#1]#2{%
-  \Field@toks={ }%
   \def\Fld@width{\DefaultWidthofReset}%
   \def\Fld@height{\DefaultHeightofReset}%
   \begingroup
@@ -16570,7 +16987,6 @@
   \begingroup
     \def\Fld@width{\DefaultWidthofCheckBox}%
     \def\Fld@height{\DefaultHeightofCheckBox}%
-    \Field@toks={ }%
     \expandafter\HyField@SetKeys\expandafter{%
       \DefaultOptionsofCheckBox,#1%
     }%
@@ -16743,7 +17159,6 @@
     \fi
   }%
   \begingroup
-    \Field@toks={ }%
     \expandafter\HyField@SetKeys\expandafter{%
       \DefaultOptionsofText,#1%
     }%
@@ -16788,7 +17203,6 @@
       \ifdim\@tempdimb>\@tempdima\@tempdima\@tempdimb\fi
     }%
     \advance\@tempdima by 15\p@
-    \Field@toks={ }%
     \begingroup
       \HyField@SetKeys{#1}%
     \edef\x{\endgroup
@@ -16915,7 +17329,6 @@
 \def\@PushButton[#1]#2{% parameters, label
   \def\Fld@name{#2}%
   \begingroup
-    \Field@toks={ }%
     \expandafter\HyField@SetKeys\expandafter{%
       \DefaultOptionsofPushButton,#1%
     }%
@@ -16953,7 +17366,6 @@
 %    \begin{macro}{\@Submit}
 %    \begin{macrocode}
 \def\@Submit[#1]#2{%
-  \Field@toks={ }%
   \def\Fld@width{\DefaultWidthofSubmit}%
   \def\Fld@height{\DefaultHeightofSubmit}%
   \begingroup
@@ -16982,7 +17394,6 @@
 %    \begin{macro}{\@Reset}
 %    \begin{macrocode}
 \def\@Reset[#1]#2{%
-  \Field@toks={ }%
   \def\Fld@width{\DefaultWidthofReset}%
   \def\Fld@height{\DefaultHeightofReset}%
   \begingroup
@@ -17022,7 +17433,6 @@
   \begingroup
     \def\Fld@width{\DefaultWidthofCheckBox}%
     \def\Fld@height{\DefaultHeightofCheckBox}%
-    \Field@toks={ }%
     \expandafter\HyField@SetKeys\expandafter{%
       \DefaultOptionsofCheckBox,#1%
     }%
@@ -17173,71 +17583,6 @@
 %    \end{macrocode}
 %    \end{macro}
 %
-%    \begin{macro}{\PDFForm@Check}
-%    \begin{macrocode}
-\def\PDFForm@Check{%
-  /Subtype/Widget%
-  \Fld@annotflags
-  /T(\Fld@name)%
-  /FT/Btn%
-  \Fld@flags
-  /Q \Fld@align
-  /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@cbsymbol})%
-  >>%
-  /DA(/ZaDb \strip@pt\Fld@charsize\space Tf%
-      \ifx\Fld@color\@empty\else\space\Fld@color\fi)%
-  /H/P%
-  \ifFld@checked /V/Yes\else /V/Off\fi
-}
-%    \end{macrocode}
-%    \end{macro}
-%    \begin{macro}{\PDFForm@Push}
-%    \begin{macrocode}
-\ifHy@pdfa
-\else
-  \def\PDFForm@Push{%
-    /Subtype/Widget%
-    \Fld@annotflags
-    /T(\Fld@name)%
-    /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})>>%
-  }%
-\fi
-%    \end{macrocode}
-%    \end{macro}
-%
 %    \begin{macro}{\Fld@additionalactions}
 %    \begin{macrocode}
 \def\Fld@@additionalactions{%
@@ -17324,6 +17669,73 @@
 %    \end{macrocode}
 %    \end{macro}
 %
+%    \begin{macro}{\PDFForm@Check}
+%    \begin{macrocode}
+\def\PDFForm@Check{%
+  /Subtype/Widget%
+  \Fld@annotflags
+  /T(\Fld@name)%
+  /FT/Btn%
+  \Fld@flags
+  /Q \Fld@align
+  /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@cbsymbol})%
+  >>%
+  /DA(/ZaDb \strip@pt\Fld@charsize\space Tf%
+      \ifx\Fld@color\@empty\else\space\Fld@color\fi)%
+  /H/P%
+  \ifFld@checked /V/Yes\else /V/Off\fi
+  \Fld@additionalactions
+}
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\PDFForm@Push}
+%    \begin{macrocode}
+\ifHy@pdfa
+\else
+  \def\PDFForm@Push{%
+    /Subtype/Widget%
+    \Fld@annotflags
+    /T(\Fld@name)%
+    /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{%
@@ -17469,6 +17881,7 @@
     >>%
     \Fld@submitflags
   >>%
+  \Fld@additionalactions
 }
 %    \end{macrocode}
 %    \end{macro}
@@ -17503,6 +17916,7 @@
     \fi
     /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>%
     /A<</S/ResetForm>>%
+    \Fld@additionalactions
   }%
 \fi
 %    \end{macrocode}
-- 
cgit v1.2.3

