From 5b3df0d3745a0955e550d4103228cf8d52a73241 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 5 Nov 2007 00:06:38 +0000 Subject: hyperref update (3nov07) git-svn-id: svn://tug.org/texlive/trunk@5345 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/source/latex/hyperref/backref.dtx | 26 +- .../source/latex/hyperref/doc/manual.tex | 1 + .../texmf-dist/source/latex/hyperref/hyperref.dtx | 1761 ++++++++++++++------ 3 files changed, 1280 insertions(+), 508 deletions(-) (limited to 'Master/texmf-dist/source') diff --git a/Master/texmf-dist/source/latex/hyperref/backref.dtx b/Master/texmf-dist/source/latex/hyperref/backref.dtx index 61b93a4f782..bb6cbdcd3d6 100644 --- a/Master/texmf-dist/source/latex/hyperref/backref.dtx +++ b/Master/texmf-dist/source/latex/hyperref/backref.dtx @@ -22,9 +22,9 @@ %\ProvidesFile{backref.drv} % \fi % \ProvidesFile{backref.dtx} - [2006/10/06 v1.27 Bibliographical back referencing]% + [2006/09/05 v1.28 Bibliographical back referencing]% % -% \CheckSum{550} +% \CheckSum{574} % % \iffalse %<*driver> @@ -610,7 +610,7 @@ \let\bibitem\BR@bibitem \let\BRorg@thebibliography\thebibliography \def\thebibliography{% - \@starttoc{brf}{}% + \BR@starttoc \BRorg@thebibliography }% \@ifundefined{NAT@parse}{% @@ -624,6 +624,26 @@ }% } % \end{macrocode} +% \begin{macro}{\BR@starttoc} +% \begin{macrocode} +\def\BR@starttoc{% + \begingroup + \makeatletter + \@input{\jobname.brf}% + \if@filesw + \@ifundefined{tf@brf}{% + \expandafter\newwrite\csname tf@brf\endcsname + }{}% + \@ifundefined{tf@brf@open}{% + \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} % diff --git a/Master/texmf-dist/source/latex/hyperref/doc/manual.tex b/Master/texmf-dist/source/latex/hyperref/doc/manual.tex index 604a4feb0a0..834ac31a826 100644 --- a/Master/texmf-dist/source/latex/hyperref/doc/manual.tex +++ b/Master/texmf-dist/source/latex/hyperref/doc/manual.tex @@ -1100,6 +1100,7 @@ You may also want to redefine the following macros: \def\DefaultHeightofChoiceMenu{0.8\baselineskip} \def\DefaultWidthofChoiceMenu{0.8\baselineskip} \def\DefaultHeightofText{\baselineskip} +\def\DefaultHeightofTextMultiline{4\baselineskip} \def\DefaultWidthofText{3cm} \end{verbatim} diff --git a/Master/texmf-dist/source/latex/hyperref/hyperref.dtx b/Master/texmf-dist/source/latex/hyperref/hyperref.dtx index 0f87ca726b4..efa14e32989 100644 --- a/Master/texmf-dist/source/latex/hyperref/hyperref.dtx +++ b/Master/texmf-dist/source/latex/hyperref/hyperref.dtx @@ -1,7 +1,7 @@ % \iffalse %% File: hyperref.dtx Copyright 1995-2001 Sebastian Rahtz, -% with portions written by David Carlisle and Heiko Oberdiek, -% 2001-2007 Heiko Oberdiek. +%% with portions written by David Carlisle and Heiko Oberdiek, +%% 2001-2007 Heiko Oberdiek. %% %% This file is part of the `Hyperref Bundle'. %% ------------------------------------------- @@ -39,7 +39,7 @@ %\ProvidesFile{puenc.def} %\ProvidesFile{puvnenc.def} %\ProvidesFile{puarenc.def} -% [2007/06/14 v6.76i +% [2007/10/30 v6.77b % Hypertext links for LaTeX] % Dummy hyperref (SR)] % Hyperref documentation driver file] @@ -116,7 +116,7 @@ \end{document} % % \fi -% \CheckSum{21126} +% \CheckSum{21691} % % \MakeShortVerb{|} % \StopEventually{} @@ -593,6 +593,7 @@ \newif\ifHy@menubar \newif\ifHy@naturalnames \newif\ifHy@nesting +\newif\ifHy@newwindowset \newif\ifHy@newwindow \newif\ifHy@pageanchor \newif\ifHy@pagelabels @@ -631,6 +632,7 @@ \Hy@menubartrue \Hy@naturalnamesfalse \Hy@nestingfalse +\Hy@newwindowsetfalse \Hy@newwindowfalse \Hy@pageanchortrue \Hy@pagelabelstrue @@ -1007,21 +1009,27 @@ % switching commands are disabled. % \begin{macrocode} \let\emph\@firstofone - \let\textbf\@firstofone - \let\textit\@firstofone - \let\textmd\@firstofone \let\textnormal\@firstofone \let\textrm\@firstofone - \let\textsc\@firstofone \let\textsf\@firstofone - \let\textsl\@firstofone \let\texttt\@firstofone + \let\textbf\@firstofone + \let\textmd\@firstofone + \let\textit\@firstofone + \let\textsc\@firstofone + \let\textsl\@firstofone \let\textup\@firstofone - \let\ttfamily\@empty + \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\bfseries\@empty + \let\em\@empty \let\rm\@empty \let\Huge\@empty \let\LARGE\@empty @@ -1033,6 +1041,7 @@ \let\scriptsize\@empty \let\small\@empty \let\tiny\@empty + \let\mathversion\@gobble % \end{macrocode} % % \paragraph{Package color.} @@ -1110,6 +1119,7 @@ \let\index\@gobble \let\glossary\@gobble \let\href\@secondoftwo + \let\@mkboth\@gobbletwo % \end{macrocode} % % The \cs{ref} and \cs{pageref} is much more complicate because of their @@ -1578,6 +1588,15 @@ % \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{PD1 encoding} % The PD1 encoding implements the PDFDocEncoding for use with @@ -2852,7 +2871,13 @@ % \begin{macrocode} \def\HyPsd@CatcodeWarning#1{% \HyPsd@Warning{% - Token not allowed in a PDFDocEncoded string,% + Token not allowed in a PDF string (% + \ifHy@unicode + Unicode% + \else + PDFDocEncoding% + \fi + ),% \MessageBreak removing `\HyPsd@RemoveCmdPrefix#1'% }% } @@ -3424,7 +3449,6 @@ % actually gets used % \end{enumerate} % \begin{macrocode} -\let\HyperRaiseLinkLength\@tempdima \let\HyperRaiseLinkHook\@empty \def\HyperRaiseLinkDefault{\baselineskip} % \end{macrocode} @@ -3432,13 +3456,18 @@ % |\HyperRaiseLinkLength|. % \begin{macrocode} \def\Hy@raisedlink#1{% - \setlength\HyperRaiseLinkLength\HyperRaiseLinkDefault - \HyperRaiseLinkHook \ifvmode #1% \else \penalty\@M - \smash{\raise\HyperRaiseLinkLength\hbox{#1}}% + \smash{% + \begingroup + \let\HyperRaiseLinkLength\@tempdima + \setlength\HyperRaiseLinkLength\HyperRaiseLinkDefault + \HyperRaiseLinkHook + \expandafter\endgroup + \expandafter\raise\the\HyperRaiseLinkLength\hbox{#1}% + }% \fi } % \end{macrocode} @@ -3820,7 +3849,7 @@ \def\HyPsd@pdfencoding@unicode{unicode} \let\HyPsd@pdfencoding\Hy@pdfencoding@pdfdoc \def\HyPsd@LoadStringEnc{% - \RequirePackage{stringenc}[2007/06/14] + \RequirePackage{stringenc}[2007/06/14]% \let\HyPsd@LoadStringEnc\relax } \AtBeginDocument{% @@ -3836,6 +3865,27 @@ }% } % \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.7% + }% + }{% + \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}% +\def\Hy@pdfversion{2} +% \end{macrocode} % % \section{Options for different drivers}\label{drivers} % \begin{macrocode} @@ -3849,7 +3899,10 @@ \def\Hy@driver{htex4ht}% \def\MaybeStopEarly{% \typeout{Hyperref stopped early}% - \AfterBeginDocument{\PDF@FinishDoc}% + \AfterBeginDocument{% + \PDF@FinishDoc + \gdef\PDF@FinishDoc{}% + }% \endinput }% } @@ -3923,7 +3976,10 @@ \def\Hy@driver{hvtexhtm}% \def\MaybeStopEarly{% \typeout{Hyperref stopped early}% - \AfterBeginDocument{\PDF@FinishDoc}% + \AfterBeginDocument{% + \PDF@FinishDoc + \gdef\PDF@FinishDoc{}% + }% \endinput }% \else @@ -4157,6 +4213,24 @@ \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}% @@ -4268,6 +4342,8 @@ \HyLang@DeclareLang{acadian}{french} \HyLang@DeclareLang{canadien}{french} \HyLang@DeclareLang{italian}{italian} +\HyLang@DeclareLang{magyar}{magyar} +\HyLang@DeclareLang{hungarian}{magyar} % \end{macrocode} % More work is needed in case of options |vietnamese| and |vietnam|. % \begin{macrocode} @@ -4650,7 +4726,19 @@ \Hy@boolkey[pdfdisplaydoctitle]{displaydoctitle}{#1}% } \define@key{Hyp}{pdfnewwindow}[true]{% - \Hy@boolkey[pdfnewwindow]{newwindow}{#1}% + \def\Hy@temp{#1}% + \ifx\Hy@temp\@empty + \Hy@newwindowsetfalse + \else + \Hy@newwindowsettrue + \Hy@boolkey[pdfnewwindow]{newwindow}{#1}% + \fi +} +\def\Hy@SetNewWindow{% + \ifHy@newwindowset + /NewWindow % + \ifHy@newwindow true\else false\fi + \fi } \Hy@DefNameKey{pdfpagelayout}{% \do{SinglePage}{}% @@ -4695,13 +4783,32 @@ \let\PDF@SetupDoc\@empty \let\PDF@FinishDoc\@empty \let\phantomsection\@empty +\let\special@paper\@empty \@ifundefined{stockwidth}{% - \edef\special@paper{\the\paperwidth,\the\paperheight}% + \ifdim\paperwidth>\z@ + \ifdim\paperheight>\z@ + \edef\special@paper{\the\paperwidth,\the\paperheight}% + \fi + \fi }{% - \edef\special@paper{\the\stockwidth,\the\stockheight}% + \ifdim\stockwith>\z@ + \ifdim\stockheight>\z@ + \edef\special@paper{\the\stockwidth,\the\stockheight}% + \fi + \fi } \begingroup - \dimen@=\@ifundefined{stockheight}{\paperheight}{\stockheight}\relax + \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 @@ -4764,6 +4871,7 @@ \let\hyper@linkend\@empty \def\hyper@linkurl#1#2{#1}% \def\hyper@linkfile#1#2#3{#1}% + \def\hyper@link@[#1]#2#3{}% \def\Acrobatmenu#1#2{#2}% \let\PDF@SetupDoc\@empty \let\PDF@FinishDoc\@empty @@ -4776,7 +4884,8 @@ \Hy@DisableOption{draft}% \Hy@DisableOption{nolinks}% \Hy@DisableOption{final}% -}% +} +\Hy@DisableOption{pdfversion}% % \end{macrocode} % % \subsection{Patch for babel's @@ -4834,7 +4943,10 @@ \typeout{Implicit mode OFF; no redefinition of LaTeX internals}% \def\MaybeStopEarly{% \typeout{Hyperref stopped early}% - \AfterBeginDocument{\PDF@FinishDoc}% + \AfterBeginDocument{% + \PDF@FinishDoc + \gdef\PDF@FinishDoc{}% + }% \endinput }% \AtBeginDocument{% @@ -4883,7 +4995,10 @@ \def\Hy@driver{hvtexhtm}% \def\MaybeStopEarly{% \typeout{Hyperref stopped early}% - \AfterBeginDocument{\PDF@FinishDoc}% + \AfterBeginDocument{% + \PDF@FinishDoc + \gdef\PDF@FinishDoc{}% + }% \endinput }% \else @@ -5153,6 +5268,7 @@ \providecommand*\hyper@chars{% \let\#\hyper@hash \let\%\@percentchar + \Hy@safe@activestrue } % \end{macrocode} % @@ -5184,7 +5300,8 @@ \RequirePackage{url} \let\HyOrg@url\url \def\Hurl{\begingroup \Url} -\let\nolinkurl\Hurl +\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} @@ -5501,26 +5618,586 @@ % so it may not be as clever as something which only wants % to make PDF forms. % -% I could not have started this without the encouragement of T V Raman. +% 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} +% +% 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 + \PackageError{hyperref}{% + 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}{% + \def\Fld@submitflags{}% + }{% + \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}{% + \def\Fld@annotflags{}% + }{% + \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}{% + \def\Fld@flags{}% + }{% + \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}{% + \def\Fld@flags{}% + }{% + \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}{% + \def\Fld@flags{}% + }{% + \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 + \PackageError{hyperref}{% + 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}{% + \def\Fld@flags{}% + }{% + \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}{% + \def\Fld@flags{}% + }{% + \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Choice field} +% +% \begin{macrocode} +\RequirePackage{kvsetkeys}[2007/09/29] +% \end{macrocode} +% \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 + \gdef\Fld@choices{}% + \def\HyTmp@optlist{}% + \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@key)(\kv@value)]}% + \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{% + \setkeys{Field}% +} +% \end{macrocode} +% \end{macro} +% % \begin{macrocode} \newif\ifFld@checked -\newif\ifFld@hidden -\newif\ifFld@multiline -\newif\ifFld@readonly \newif\ifFld@disabled -\newif\ifFld@password -\newif\ifFld@radio -\newif\ifFld@combo -\newif\ifFld@popdown -\Fld@multilinefalse \Fld@checkedfalse -\Fld@hiddenfalse -\Fld@readonlyfalse \Fld@disabledfalse -\Fld@radiofalse -\Fld@combofalse -\Fld@popdownfalse -\Fld@passwordfalse \newcount\Fld@menulength \newdimen\Field@Width \newdimen\Fld@charsize @@ -5535,7 +6212,6 @@ \def\Fld@borderstyle{S} \def\Fld@cbsymbol{4} \def\Fld@rotation{0} -\newtoks\Choice@toks \def\Form{\@ifnextchar[{\@Form}{\@Form[]}} \def\endForm{\@endForm} \newif\ifForm@html @@ -5552,6 +6228,7 @@ \def\Hy@tempa{#1}% \ifx\Hy@tempa\enc@@html \Form@htmltrue + \def\Fld@export{html}% \else \typeout{hyperref: form `encoding' key set to #1 % -- unknown type% @@ -5560,9 +6237,25 @@ \fi } \define@key{Form}{method}{% - \def\Form@method{#1}% + \lowercase{\def\Hy@temp{#1}}% + \@ifundefined{Form@method@\Hy@temp}{% + \@onelevel@sanitize\Hy@temp + \PackageError{hyperref}{% + 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} \def\Field@boolkey#1#2{% \csname Fld@#2\ifx\relax#1\relax true\else#1\fi\endcsname } @@ -5583,33 +6276,12 @@ \define@key{Field}{loc}{% \def\Fld@loc{#1}% } -\define@key{Field}{multiline}[true]{% - \lowercase{\Field@boolkey{#1}}{multiline}% -} \define@key{Field}{checked}[true]{% \lowercase{\Field@boolkey{#1}}{checked}% } -\define@key{Field}{hidden}[true]{% - \lowercase{\Field@boolkey{#1}}{hidden}% -} -\define@key{Field}{readonly}[true]{% - \lowercase{\Field@boolkey{#1}}{readonly}% -} \define@key{Field}{disabled}[true]{% \lowercase{\Field@boolkey{#1}}{disabled}% } -\define@key{Field}{password}[true]{% - \lowercase{\Field@boolkey{#1}}{password}% -} -\define@key{Field}{radio}[true]{% - \lowercase{\Field@boolkey{#1}}{radio}% -} -\define@key{Field}{combo}[true]{% - \lowercase{\Field@boolkey{#1}}{combo}% -} -\define@key{Field}{popdown}[true]{% - \lowercase{\Field@boolkey{#1}}{popdown}% -} \define@key{Field}{accesskey}{% \Field@addtoks{accesskey}{#1}% } @@ -5806,7 +6478,20 @@ \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} @@ -5902,6 +6587,7 @@ \let\hyper@linkend\@empty \def\hyper@linkurl##1##2{##1}% \def\hyper@linkfile##1##2##3{##1}% + \def\hyper@link@[##1]##2##3{}% \let\Hy@backout\@gobble } \def\stop@hyper{% @@ -5915,6 +6601,7 @@ \let\hyper@linkend\@empty \def\hyper@linkurl##1##2{##1}% \def\hyper@linkfile##1##2##3{##1}% + \def\hyper@link@[##1]##2##3{}% } \def\endNoHyper{% \global\let\hyper@link\hyper@livelink @@ -5943,6 +6630,7 @@ \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 % \end{macrocode} @@ -6155,6 +6843,33 @@ % \section{Page numbers} % This stuff is done by Heiko Oberdiek. % +% \section{Every page} +% +% \begin{macrocode} +\RequirePackage{atbegshi}[2007/09/09] +\def\Hy@EveryPageHook{} +\def\Hy@EveryPageBoxHook{} +\def\Hy@FirstPageHook{} +\AtBeginShipout{% + \Hy@EveryPageHook + \ifx\Hy@EveryPageBoxHook\@empty + \else + \setbox\AtBeginShipoutBox=\vbox{% + \offinterlineskip + \Hy@EveryPageBoxHook + \box\AtBeginShipoutBox + }% + \fi +} +\AtBeginShipoutFirst{% + \Hy@FirstPageHook +} +\g@addto@macro\Hy@FirstPageHook{% + \PDF@FinishDoc + \gdef\PDF@FinishDoc{}% +} +% \end{macrocode} +% % \subsection{PDF /PageLabels} % Internal macros of this module are marked with |\HyPL@|. % @@ -6402,15 +7117,10 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\HyPL@EveryPage} -% Without option `pdfpagelabels' we need a dummy for -% \cmd{\HyPL@EveryPage}. % \begin{macrocode} -\else - \let\HyPL@EveryPage\@empty + \g@addto@macro\Hy@EveryPageHook{\HyPL@EveryPage}% \fi % \end{macrocode} -% \end{macro} % % Option `pdfpagelabels' has been used and is now disabled. % \begin{macrocode} @@ -6497,7 +7207,11 @@ % to make sure, that no further pages will follow. % Then the PDF catalog entry for |\PageLabels| is set. % \begin{macrocode} - \AtEndDocument{\clearpage\HyPL@SetPageLabels}% + \@ifclassloaded{revtex4}{% + \g@addto@macro\clear@document{\HyPL@SetPageLabels}% + }{% + \AtEndDocument{\clearpage\HyPL@SetPageLabels}% + }% % \end{macrocode} % % \begin{macrocode} @@ -6820,11 +7534,14 @@ % 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 |\@hyperfixhead| (see sec. \ref{pagenum}). +% 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} \AtBeginDocument{% + \@ifclassloaded{revtex4}{% + \@namedef{ver@lastpage.sty}{1994/06/25}% + }{}% \@ifpackageloaded{lastpage}{% \ifHy@pageanchor \else @@ -6859,6 +7576,18 @@ \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 + }{}% }{}% } % @@ -6956,6 +7685,8 @@ \expandafter\def\y[##1]##2{% \H@refstepcounter{#1}% \hyper@makecurrent{table}% + \let\Hy@LT@currentHlabel\@currentHlabel + \let\Hy@LT@currentHref\@currentHref #2\@sharp#####4% }% }% @@ -6969,7 +7700,11 @@ \endgroup \def\LT@start{% #1% - \hyper@refstepcounter{table}% + \let\@currentHlabel\Hy@LT@currentHlabel + \let\@currentHref\Hy@LT@currentHref + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% \ifvoid\LT@firsthead\copy #2% }% @@ -7362,10 +8097,12 @@ \expandafter\@gobble \else \H@refstepcounter\@captype - \@ifundefined{fst@\@captype}{% - \let\Hy@tempa\@caption + \let\Hy@tempa\@caption + \@ifundefined{float@caption}{% }{% - \let\Hy@tempa\Hy@float@caption + \expandafter\ifx\csname @float@c@\@captype\endcsname\float@caption + \let\Hy@tempa\Hy@float@caption + \fi }% \expandafter\@firstofone \fi @@ -7417,17 +8154,23 @@ \let\Hy@float@caption\@caption \@ifpackageloaded{float}{% \def\Hy@float@caption{% - \hyper@makecurrent{\@captype}% + \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 \renewcommand{\float@makebox}[1]{% \HyOrg@float@makebox{% #1\relax - \begingroup - \hyper@makecurrent{\@captype}% - \hyper@@anchor{\@currentHref}{\relax}% - \endgroup + \ifx\Hy@float@currentHref\@undefined + \else + \hyper@@anchor{\Hy@float@currentHref}{\relax}% + \global\let\Hy@float@currentHref\@undefined + \fi }% }% }{} @@ -7834,34 +8577,6 @@ % % \section{Page numbers}\label{pagenum} % -% Give every page an automatic number anchor. This involves, sigh, -% overloading \LaTeX's output bits and pieces, which must be dangerous. -% This used to be |\@shipoutsetup|, now |\@begindvi|. We cannot even -% overload this, as it sets itself to null. SIGH. -% \begin{macrocode} -\def\@begindvi{% - \unvbox \@begindvibox - \Hy@begindvi - \global\let\@begindvi\Hy@begindvi -} -\def\Hy@begindvi{% - \@hyperfixhead - \HyPL@EveryPage -} -\def\pagenumbering#1{% - \global\c@page \@ne - \gdef\thepage{\csname @#1\endcsname\c@page}% -} -% \end{macrocode} -% This is needed for some unremembered reason\ldots -% \begin{macrocode} -\let\HYPERPAGEANCHOR\hyperpageanchor -% \end{macrocode} -% -% Macro \cmd{\@hyperfixhead} calls \cmd{\hyper@pagetransition} -% and \cmd{\hyper@pageduration}. Therefore empty definitions -% are provided for drivers that do not define these macros. -% % 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={}}|. @@ -7869,194 +8584,52 @@ % 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. -% \begin{macrocode} -\providecommand*\hyper@pagetransition{} -\providecommand*\hyper@pageduration{} -\providecommand*\hyper@pagehidden{} -% \end{macrocode} % -% This where we supply a destination for each page. Test to see -% if there is some sort of header. The test used to be -% |\expandafter\ifx\expandafter\@empty\H@old@thehead|. -% \begin{macro}{\@hyperfixhead} +% This where we supply a destination for each page. % \begin{macrocode} -\def\@hyperfixhead{% +\def\Hy@EveryPageAnchor{% \Hy@DistillerDestFix \ifHy@pageanchor \ifHy@hypertexnames \ifHy@plainpages - \gdef\Hy@TempPageAnchor{\hyper@@anchor{page.\the\c@page}}% + \def\Hy@TempPageAnchor{\hyper@@anchor{page.\the\c@page}}% \else \begingroup \let\@number\@firstofone \Hy@unicodefalse \pdfstringdef\@the@H@page{\thepage}% \endgroup - \gdef\Hy@TempPageAnchor{\hyper@@anchor{page.\@the@H@page}}% + \def\Hy@TempPageAnchor{\hyper@@anchor{page.\@the@H@page}}% \fi \else \Hy@GlobalStepCount\Hy@pagecounter - \gdef\Hy@TempPageAnchor{\hyper@@anchor{page.\the\Hy@pagecounter}}% + \def\Hy@TempPageAnchor{\hyper@@anchor{page.\the\Hy@pagecounter}}% \fi - \else - \let\Hy@TempPageAnchor\@empty - \fi - \let\H@old@thehead\@thehead - \if^\@thehead^% - \def\H@old@thehead{\hfil}% - \fi - \ifHy@texht - \def\@thehead{}% - \else - \ifHy@seminarslides - \begingroup - \let\leavevmode\relax - \Hy@TempPageAnchor\relax - \hyper@pagetransition - \hyper@pageduration - \hyper@pagehidden - \endgroup - \else - \def\@thehead{% - \Hy@TempPageAnchor\relax - \hyper@pagetransition - \hyper@pageduration - \hyper@pagehidden - \H@old@thehead + \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 + \hss }% - \fi - \fi - \ifx\PDF@FinishDoc\@empty - \else - \PDF@FinishDoc - \gdef\PDF@FinishDoc{}% + \vss + }% \fi } -% \end{macrocode} -% \end{macro} -% -% \subsection{Package \textsf{fancybox}} -% -% Fix for fancybox 2000/09/19 v1.3. -% Several commands are redefined to get \cs{@begindvi} at a better -% place and putting page anchor and transition macros in -% \cs{fb@outputpage}. -% \begin{macrocode} -\@ifpackageloaded{fancybox}{% - \def\fb@outputpage{% - \begingroup - \catcode`\ =10 % - \let\-\@dischyph - \let\'\@acci - \let\`\@accii - \let\=\@acciii - \if@specialpage - \global\@specialpagefalse\@nameuse{ps@\@specialstyle}% - \fi - \if@twoside - \ifodd\count\z@ - \let\@thehead\@oddhead - \let\@thefoot\@oddfoot - \let\@themargin\oddsidemargin - \else - \let\@thehead\@evenhead - \let\@thefoot\@evenfoot - \let\@themargin\evensidemargin - \fi - \fi - \csname reset@font\endcsname - \normalsize - \baselineskip\z@ - \lineskip\z@ - \let\par\@@par - \ifx\this@fancypage\@empty\else - \this@fancypage - \gdef\this@fancypage{}% - \fi - \ifx\the@fancypage\@empty\else - \setbox\@outputbox\hbox{\the@fancypage{\box\@outputbox}}% - \fi - \ifx\fb@@rotatepage\@empty\else - \setbox\@outputbox\hbox{\fb@@rotatepage{\box\@outputbox}}% - \fi - \setbox\@outputbox\vbox{% - \@tempdima=\wd\@outputbox - \setbox\@tempboxa=\hbox to\@tempdima{% - \let\label\@gobble - \let\index\@gobble - \let\glossary\@gobble - \@thehead - }% - \ht\@tempboxa\headheight - \dp\@tempboxa\z@ - \box\@tempboxa - \vskip\headsep - \box\@outputbox - \baselineskip\footskip - \hbox to\@tempdima{% - \let\label\@gobble - \let\index\@gobble - \let\glossary\@gobble - \@thefoot - }% - }% - \ifx\the@@fancypage\@empty\else - \setbox\@outputbox\hbox{\the@@fancypage{\box\@outputbox}}% - \fi - \setbox\@outputbox\vbox{% - \ifnum\fancyput@flag>-1 \do@fancyput\fi - \@begindvi - \Hy@TempPageAnchor\relax - \hyper@pagetransition - \hyper@pageduration - \hyper@pagehidden - \vskip\topmargin - \moveright\@themargin\box\@outputbox - }% - \ifx\fb@rotatepage\@empty\else - \setbox\@outputbox\hbox{\lower\ht\@outputbox\box\@outputbox}% - \dp\@outputbox\z@ - \wd\@outputbox\z@ - \setbox\@outputbox\hbox{\fb@rotatepage{\box\@outputbox}}% - \expandafter\fb@setoffsets\fb@theoffsets - \fi - \let\protect\noexpand - \shipout\box\@outputbox - \global\@colht\textheight - \endgroup - \stepcounter{page}% - \let\firstmark\botmark - }% - \def\fancypage#1#2{% - \def\the@fancypage{#1}% - \def\the@@fancypage{#2}% - \def\@outputpage{\fb@outputpage}% - }% - \def\thisfancypage#1#2{% - \gdef\@outputpage{\fb@outputpage}% - \gdef\this@fancypage{\def\the@fancypage{#1}\def\the@@fancypage{#2}}% - }% - \def\fancyput{% - \def\@outputpage{\fb@outputpage}% - \@ifstar{\@testtrue\@fancyput}{\@testfalse\@fancyput}% - }% - \def\thisfancyput{% - \gdef\@outputpage{\fb@outputpage}% - \@ifstar{\@testtrue\@thisfancyput}{\@testfalse\@thisfancyput}% - }% - \def\LandScape#1{% - \clearpage - \def\fb@@rotatepage{#1}% - \def\@outputpage{\fb@outputpage}% - \@tempdima\textheight - \textheight\textwidth - \textwidth\@tempdima - \UsePageParameters - }% -}{} +\g@addto@macro\Hy@EveryPageBoxHook{% + \Hy@EveryPageAnchor +} % \end{macrocode} % -%\section{Table of contents}\label{toc} +% \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 @@ -8990,6 +9563,42 @@ % 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@setpdfversion + \ifnum\Hy@pdfminorversion=\Hy@pdfversion\relax + \else + \Hy@pdfminorversion=\Hy@pdfversion\relax + \fi + \PackageInfo{hyperref}{% + \expandafter\string\Hy@pdfminorversion:=\number\Hy@pdfversion\space + }% + \fi + \edef\Hy@pdfversion{\number\Hy@pdfminorversion}% + \Hy@DisableOption{pdfversion}% +} +% \end{macrocode} +% % First, allow for some changes and additions to pdftex syntax: % \begin{macrocode} \def\setpdflinkmargin#1{\pdflinkmargin#1} @@ -9137,7 +9746,7 @@ /A<<% /F(\Hy@pstringF)% /S/GoToR% - \ifHy@newwindow /NewWindow true\fi + \Hy@SetNewWindow % \end{macrocode} % If |#3| is empty, page 0; if its a number, Page number, otherwise % a named destination. @@ -9186,7 +9795,7 @@ /A<<% /F(\Hy@pstringF)% /S/Launch% - \ifHy@newwindow /NewWindow true\fi + \Hy@SetNewWindow \ifx\\#3\\% \else /Win<>% @@ -9476,6 +10085,14 @@ % \end{macrocode} % \end{macro} % +% \begin{macrocode} +\g@addto@macro\Hy@EveryPageHook{% + \hyper@pagetransition + \hyper@pageduration + \hyper@pagehidden +} +% \end{macrocode} +% % Let us explicitly turn on PDF generation; they can reverse % this decision in the document, but since we are emitting PDF % links anyway, we \emph{must} be in PDF mode. @@ -10055,7 +10672,7 @@ /S/GoToR% /F(\Hy@pstringF)% /D\ifx\\#3\\[0 \@pdfstartview]\else(\Hy@pstringD)\fi - \ifHy@newwindow /NewWindow true\fi + \Hy@SetNewWindow >>% >>% }% @@ -10078,7 +10695,7 @@ /A<<% /S/Launch% /F(\Hy@pstringF)% - \ifHy@newwindow /NewWindow true\fi + \Hy@SetNewWindow \ifx\\#3\\% \else /Win<>% @@ -10513,7 +11130,7 @@ /Type/Action% /S/Launch% /F(\Hy@pstringF)% - \ifHy@newwindow /NewWindow true \fi + \Hy@SetNewWindow \ifx\\#3\\\else /Win<>\fi% >;% a=<% @@ -10762,6 +11379,11 @@ \special{!hidden\ifHy@pdfpagehidden +\else -\fi}% \fi }% + \g@addto@macro\Hy@EveryPageBoxHook{% + \hyper@pagetransition + \hyper@pageduration + \hyper@pagehidden + }% \fi % \end{macrocode} % @@ -11138,6 +11760,13 @@ % \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}% @@ -11632,7 +12261,7 @@ Action={% <<% /S/GoToR% - \ifHy@newwindow /NewWindow true\fi + \Hy@SetNewWindow /F(\Hy@pstringF)% /D\ifx\\#3\\[0 \@pdfstartview]\else(\Hy@pstringD)cvn\fi >>% @@ -11650,7 +12279,7 @@ Action={% <<% /S/GoToR% - \ifHy@newwindow /NewWindow true\fi + \Hy@SetNewWindow /F(\Hy@pstringF)% /D\ifx\\#3\\[0 \@pdfstartview]\else(\Hy@pstringD)cvn\fi >>% @@ -11676,7 +12305,7 @@ Action={% <<% /S/Launch% - \ifHy@newwindow /NewWindow true\fi + \Hy@SetNewWindow /F(\Hy@pstringF)% \ifx\\#3\\% \else @@ -11697,7 +12326,7 @@ Action={% <<% /S/GoToR% - \ifHy@newwindow /NewWindow true\fi + \Hy@SetNewWindow /F(\Hy@pstringF)% \ifx\\#3\\% \else @@ -11739,7 +12368,7 @@ % \end{macrocode} % % \begin{macrocode} -\AtBeginDvi{% +\AtBeginShipoutFirst{% \headerps@out{% % \end{macrocode} % Unless I am going mad, this \emph{appears} to be the relationship @@ -11878,7 +12507,7 @@ % \end{macrocode} % % \begin{macrocode} -\AtBeginDvi{% +\AtBeginShipoutFirst{% \headerps@out{% /vsize {\Hy@pageheight} def% % \end{macrocode} @@ -12021,7 +12650,7 @@ % set afterwards. % % \begin{macrocode} -\AtBeginDvi{% +\AtBeginShipoutFirst{% \headerps@out{% /betterpdfmark {% systemdict begin % @@ -12043,7 +12672,7 @@ }% ifelse% }% end of \headerps@out -}% end of \AtBeginDvi +}% end of \AtBeginShipoutFirst % \input{pdfmark.def}% % @@ -12438,7 +13067,10 @@ \ifx\Hy@tempa\@urltype \special{t4ht=}% \else - {\hyper@chars\special{t4ht=}}% + \begingroup + \hyper@chars + \special{t4ht=}% + \endgroup \fi } \def\hyper@linkend{% @@ -12506,7 +13138,7 @@ % \begin{macrocode} %<*pdfmark> \long\def\@Form[#1]{% -\AtBeginDvi{% +\AtBeginShipoutFirst{% \headerps@out{% [% /_objdef{pdfDocEncoding}% @@ -12688,19 +13320,19 @@ \def\Fld@default{}% \let\Fld@value\@empty \def\Fld@width{\DefaultWidthofText}% - \def\Fld@height{\DefaultHeightofText}% - \ifFld@multiline - \begingroup - \dimen@=\DefaultHeightofText - \dimen@=4\dimen@ - \edef\x{\endgroup - \def\noexpand\Fld@height{\the\dimen@}% - }% - \x - \fi - \bgroup + \def\Fld@height{% + \ifFld@multiline + \DefaultHeightofTextMultiline + \else + \DefaultHeightofText + \fi + }% + \begingroup \Field@toks={ }% - \setkeys{Field}{#1}% + \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 \LayoutTextField{#2}{% @@ -12709,7 +13341,7 @@ pdfmark=/ANN,Raw={\PDFForm@Text}% }% }% - \egroup + \endgroup } \def\@ChoiceMenu[#1]#2#3{% parameters, label, choices \def\Fld@name{#2}% @@ -12717,7 +13349,7 @@ \let\Fld@value\relax \def\Fld@width{\DefaultWidthofChoiceMenu}% \def\Fld@height{\DefaultHeightofChoiceMenu}% - \bgroup + \begingroup \Fld@menulength=0 % \@tempdima\z@ \@for\@curropt:=#3\do{% @@ -12728,34 +13360,57 @@ }% \advance\@tempdima by 15\p@ \Field@toks={ }% - \setkeys{Field}{#1}% + \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 - \def\Fld@flags{}% - \ifFld@combo\def\Fld@flags{/Ff 917504}\fi - \ifFld@popdown\def\Fld@flags{/Ff 131072}\fi - \ifx\Fld@flags\@empty + \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 }% - \egroup + \endgroup } \def\@@Radio#1{% \Fld@listcount=0 % @@ -12772,15 +13427,7 @@ } \newcount\Fld@listcount \def\@@Listbox#1{% - \Choice@toks={ }% - \Fld@listcount=0 % - \@for\@curropt:=#1\do{% - \expandafter\Fld@checkequals\@curropt==\\% - \Hy@StepCount\Fld@listcount - \edef\@processme{% - \Choice@toks{\the\Choice@toks [(\@currValue) (\@currDisplay)]}% - }\@processme - }% + \HyField@PDFChoices{#1}% \Hy@escapeform\PDFForm@List \pdfmark[\MakeChoiceField{\Fld@width}{\Fld@height}]{% pdfmark=/ANN,Raw={\PDFForm@List}% @@ -12788,9 +13435,12 @@ } \def\@PushButton[#1]#2{% parameters, label \def\Fld@name{#2}% - \bgroup + \begingroup \Field@toks={ }% - \setkeys{Field}{#1}% + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofPushButton,#1% + }% + \HyField@FlagsPushButton \ifFld@hidden\def\Fld@width{1sp}\fi \LayoutPushButtonField{% \Hy@escapeform\PDFForm@Push @@ -12798,45 +13448,53 @@ pdfmark=/ANN,Raw={\PDFForm@Push}% }% }% - \egroup + \endgroup } \def\@Submit[#1]#2{% \Field@toks={ }% \def\Fld@width{\DefaultWidthofSubmit}% \def\Fld@height{\DefaultHeightofSubmit}% - \bgroup - \def\Fld@name{Submit}% - \setkeys{Field}{#1}% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofSubmit,#1% + }% + \HyField@FlagsPushButton + \HyField@FlagsSubmit \ifFld@hidden\def\Fld@width{1sp}\fi \Hy@escapeform\PDFForm@Submit \pdfmark[\MakeButtonField{#2}]{% pdfmark=/ANN,% Raw={\PDFForm@Submit /AP << /N {Submit} /D {SubmitP} >>}% }% - \egroup + \endgroup } \def\@Reset[#1]#2{% \Field@toks={ }% \def\Fld@width{\DefaultWidthofReset}% \def\Fld@height{\DefaultHeightofReset}% - \bgroup - \def\Fld@name{Reset}% - \setkeys{Field}{#1}% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofReset,#1% + }% + \HyField@FlagsPushButton \ifFld@hidden\def\Fld@width{1sp}\fi \Hy@escapeform\PDFForm@Reset \pdfmark[\MakeButtonField{#2}]{% pdfmark=/ANN,Raw={\PDFForm@Reset}% }% - \egroup + \endgroup } \def\@CheckBox[#1]#2{% parameters, label \def\Fld@name{#2}% \def\Fld@default{0}% - \bgroup + \begingroup \def\Fld@width{\DefaultWidthofCheckBox}% \def\Fld@height{\DefaultHeightofCheckBox}% \Field@toks={ }% - \setkeys{Field}{#1}% + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofCheckBox,#1% + }% + \HyField@FlagsCheckBox \ifFld@hidden\def\Fld@width{1sp}\fi \LayoutCheckField{#2}{% \Hy@escapeform\PDFForm@Check @@ -12844,7 +13502,7 @@ pdfmark=/ANN,Raw={\PDFForm@Check}% }% }% - \egroup + \endgroup } % % \end{macrocode} @@ -12959,17 +13617,17 @@ \def\Fld@name{#2}% \def\Fld@default{}% \let\Hy@reserved@a\relax - \bgroup - \expandafter\Fld@findlength#3\\% - \Field@toks={ }% - \setkeys{Field}{#1}% - #2% - \ifFld@radio - \expandafter\@@Radio#3\\% - \else - \expandafter\@@Menu#3\\% - \fi - \egroup + \begingroup + \expandafter\Fld@findlength#3\\% + \Field@toks={ }% + \setkeys{Field}{#1}% + #2% + \ifFld@radio + \expandafter\@@Radio#3\\% + \else + \expandafter\@@Menu#3\\% + \fi + \endgroup } \def\Fld@findlength#1\\{% \Fld@menulength=0 % @@ -13087,19 +13745,20 @@ \def\Fld@default{}% \let\Fld@value\@empty \def\Fld@width{\DefaultWidthofText}% - \def\Fld@height{\DefaultHeightofText}% - \ifFld@multiline - \begingroup - \dimen@=\DefaultHeightofText - \dimen@=4\dimen@ - \edef\x{\endgroup - \def\noexpand\Fld@height{\the\dimen@}% - }% - \x - \fi - \bgroup + \def\Fld@height{% + \ifFld@multiline + \DefaultHeightofTextMultiline + \else + \DefaultHeightofText + \fi + }% + \begingroup \Field@toks={ }% - \setkeys{Field}{#1}% + \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}{% @@ -13107,7 +13766,7 @@ \pdfstartlink user {\PDFForm@Text}\relax \MakeTextField{\Fld@width}{\Fld@height}\pdfendlink }% - \egroup + \endgroup } \def\@ChoiceMenu[#1]#2#3{% parameters, label, choices \def\Fld@name{#2}% @@ -13115,7 +13774,7 @@ \let\Fld@value\relax \def\Fld@width{\DefaultWidthofChoiceMenu}% \def\Fld@height{\DefaultHeightofChoiceMenu}% - \bgroup + \begingroup \Fld@menulength=0 % \@tempdima\z@ \@for\@curropt:=#3\do{% @@ -13126,34 +13785,58 @@ }% \advance\@tempdima by 15\p@ \Field@toks={ }% - \setkeys{Field}{#1}% + \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 - \def\Fld@flags{}% - \ifFld@combo\def\Fld@flags{/Ff 917504}\fi - \ifFld@popdown\def\Fld@flags{/Ff 131072}\fi - \ifx\Fld@flags\@empty + \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 }% - \egroup + \endgroup } \def\@@Radio#1{% \Fld@listcount=0 % @@ -13184,15 +13867,7 @@ } \newcount\Fld@listcount \def\@@Listbox#1{% - \Choice@toks={ }% - \Fld@listcount=0 % - \@for\@curropt:=#1\do{% - \expandafter\Fld@checkequals\@curropt==\\% - \Hy@StepCount\Fld@listcount - \edef\@processme{% - \Choice@toks{\the\Choice@toks [(\@currValue) (\@currDisplay)]}% - }\@processme - }% + \HyField@PDFChoices{#1}% \leavevmode \Hy@escapeform\PDFForm@List \pdfstartlink user {\PDFForm@List}\relax @@ -13201,9 +13876,13 @@ } \def\@PushButton[#1]#2{% parameters, label \def\Fld@name{#2}% - \bgroup + \begingroup \Field@toks={ }% - \setkeys{Field}{#1}% + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofPushButton,#1% + }% + \PDFForm@Name + \HyField@FlagsPushButton \ifFld@hidden\def\Fld@width{1sp}\fi \LayoutPushButtonField{% \leavevmode @@ -13212,15 +13891,18 @@ \MakeButtonField{#2}% \pdfendlink }% - \egroup + \endgroup } \def\@Submit[#1]#2{% \Field@toks={ }% \def\Fld@width{\DefaultWidthofSubmit}% \def\Fld@height{\DefaultHeightofSubmit}% - \bgroup - \def\Fld@name{Submit}% - \setkeys{Field}{#1}% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofSubmit,#1% + }% + \HyField@FlagsPushButton + \HyField@FlagsSubmit \ifFld@hidden\def\Fld@width{1sp}\fi \leavevmode \Hy@escapeform\PDFForm@Submit @@ -13231,31 +13913,37 @@ \relax \MakeButtonField{#2}% \pdfendlink - \egroup + \endgroup } \def\@Reset[#1]#2{% \Field@toks={ }% \def\Fld@width{\DefaultWidthofReset}% \def\Fld@height{\DefaultHeightofReset}% - \bgroup - \def\Fld@name{Reset}% - \setkeys{Field}{#1}% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofReset,#1% + }% + \HyField@FlagsPushButton \ifFld@hidden\def\Fld@width{1sp}\fi \leavevmode \Hy@escapeform\PDFForm@Reset \pdfstartlink user {\PDFForm@Reset}\relax \MakeButtonField{#2}% \pdfendlink - \egroup + \endgroup } \def\@CheckBox[#1]#2{% parameters, label \def\Fld@name{#2}% \def\Fld@default{0}% - \bgroup + \begingroup \def\Fld@width{\DefaultWidthofCheckBox}% \def\Fld@height{\DefaultHeightofCheckBox}% \Field@toks={ }% - \setkeys{Field}{#1}% + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofCheckBox,#1% + }% + \PDFForm@Name + \HyField@FlagsCheckBox \ifFld@hidden\def\Fld@width{1sp}\fi \LayoutCheckField{#2}{% \Hy@escapeform\PDFForm@Check @@ -13263,7 +13951,7 @@ \MakeCheckField{\Fld@width}{\Fld@height}% \pdfendlink }% - \egroup + \endgroup } \pdfobj { << /Type /Encoding /Differences [ 24 /breve /caron /circumflex /dotaccent /hungarumlaut /ogonek /ring /tilde 39 @@ -13381,6 +14069,27 @@ % \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}{\@TextField} % \begin{macrocode} \def\@TextField[#1]#2{% parameters, label @@ -13388,33 +14097,37 @@ \def\Fld@default{}% \let\Fld@value\@empty \def\Fld@width{\DefaultWidthofText}% - \def\Fld@height{\DefaultHeightofText}% - \ifFld@multiline - \begingroup - \dimen@=\DefaultHeightofText - \dimen@=4\dimen@ - \edef\x{\endgroup - \def\noexpand\Fld@height{\the\dimen@}% - }% - \x - \fi - \bgroup + \def\Fld@height{% + \ifFld@multiline + \DefaultHeightofTextMultiline + \else + \DefaultHeightofText + \fi + }% + \begingroup \Field@toks={ }% - \setkeys{Field}{#1}% + \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}{% \Hy@escapeform\PDFForm@Text \@pdfm@mark{% - ann @\Fld@name\space \dvipdfm@setdim << \PDFForm@Text >>% + ann @text\HyField@TheAnnotCount\space + \dvipdfm@setdim << \PDFForm@Text >>% }% }% \unhbox\pdfm@box - \@pdfm@mark{put @afields @\Fld@name}% record in @afields array - \egroup + \@pdfm@mark{put @afields @text\HyField@TheAnnotCount}% + % record in @afields array + \endgroup } % \end{macrocode} % \end{macro} @@ -13427,7 +14140,7 @@ \let\Fld@value\relax \def\Fld@width{\DefaultWidthofChoiceMenu}% \def\Fld@height{\DefaultHeightofChoiceMenu}% - \bgroup + \begingroup \Fld@menulength=0 % \@tempdima\z@ \@for\@curropt:=#3\do{% @@ -13438,34 +14151,58 @@ }% \advance\@tempdima by 15\p@ \Field@toks={ }% - \setkeys{Field}{#1}% + \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 - \def\Fld@flags{}% - \ifFld@combo\def\Fld@flags{/Ff 917504}\fi - \ifFld@popdown\def\Fld@flags{/Ff 131072}\fi - \ifx\Fld@flags\@empty + \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 }% - \egroup + \endgroup } % \end{macrocode} % \end{macro} @@ -13481,8 +14218,11 @@ \@currDisplay\space \leavevmode \Hy@escapeform\PDFForm@Radio + \ifnum\Fld@listcount=1 % + \HyField@AdvanceAnnotCount + \fi \@pdfm@mark{% - ann \ifnum\Fld@listcount=1 @\Fld@name\space\fi + ann \ifnum\Fld@listcount=1 @radio\HyField@TheAnnotCount\space\fi \dvipdfm@setdim <<% \PDFForm@Radio @@ -13490,7 +14230,9 @@ >>% }% \unhcopy\pdfm@box\space% deliberate space between radio buttons - \ifnum\Fld@listcount=1\@pdfm@mark{put @afields @\Fld@name}\fi + \ifnum\Fld@listcount=1 % + \@pdfm@mark{put @afields @radio\HyField@TheAnnotCount}% + \fi }% } % \end{macrocode} @@ -13504,24 +14246,18 @@ % \begin{macro}{\@@Listbox} % \begin{macrocode} \def\@@Listbox#1{% - \Choice@toks={ }% - \Fld@listcount=0 % - \@for\@curropt:=#1\do{% - \expandafter\Fld@checkequals\@curropt==\\% - \Hy@StepCount\Fld@listcount - \edef\@processme{% - \Choice@toks{\the\Choice@toks [(\@currValue) (\@currDisplay)]}% - }\@processme - }% + \HyField@PDFChoices{#1}% \setbox\pdfm@box=\hbox{\MakeChoiceField{\Fld@width}{\Fld@height}}% \leavevmode \Hy@escapeform\PDFForm@List + \HyField@AdvanceAnnotCount \@pdfm@mark{% - ann @\Fld@name\space\dvipdfm@setdim - << \PDFForm@List >>% + ann @list\HyField@TheAnnotCount\space + \dvipdfm@setdim + <<\PDFForm@List>>% }% \unhbox\pdfm@box - \@pdfm@mark{put @afields @\Fld@name}% + \@pdfm@mark{put @afields @list\HyField@TheAnnotCount}% } % \end{macrocode} % \end{macro} @@ -13530,22 +14266,28 @@ % \begin{macrocode} \def\@PushButton[#1]#2{% parameters, label \def\Fld@name{#2}% - \bgroup + \begingroup \Field@toks={ }% - \setkeys{Field}{#1}% + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofPushButton,#1% + }% + \PDFForm@Name + \HyField@FlagsPushButton \ifFld@hidden\def\Fld@width{1sp}\fi \setbox\pdfm@box=\hbox{\MakeButtonField{#2}}% + \HyField@AdvanceAnnotCount \LayoutPushButtonField{% \leavevmode \Hy@escapeform\PDFForm@Push \@pdfm@mark{% - ann @\Fld@name\space\dvipdfm@setdim - << \PDFForm@Push >>% + ann @push\HyField@TheAnnotCount\space + \dvipdfm@setdim + <<\PDFForm@Push>>% }% }% \unhbox\pdfm@box - \@pdfm@mark{put @afields @\Fld@name}% - \egroup + \@pdfm@mark{put @afields @push\HyField@TheAnnotCount}% + \endgroup } % \end{macrocode} % \end{macro} @@ -13556,20 +14298,25 @@ \Field@toks={ }% \def\Fld@width{\DefaultWidthofSubmit}% \def\Fld@height{\DefaultHeightofSubmit}% - \bgroup - \def\Fld@name{Submit}% - \setkeys{Field}{#1}% + \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 @\Fld@name\space\dvipdfm@setdim - << \PDFForm@Submit >>% + ann @submit\HyField@TheAnnotCount\space + \dvipdfm@setdim + <<\PDFForm@Submit>>% }% \unhbox\pdfm@box% - \@pdfm@mark{put @afields @\Fld@name}% - \egroup + \@pdfm@mark{put @afields @submit\HyField@TheAnnotCount}% + \endgroup } % \end{macrocode} % \end{macro} @@ -13580,20 +14327,24 @@ \Field@toks={ }% \def\Fld@width{\DefaultWidthofReset}% \def\Fld@height{\DefaultHeightofReset}% - \bgroup - \def\Fld@name{Reset}% - \setkeys{Field}{#1}% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofReset,#1% + }% + \HyField@FlagsPushButton \ifFld@hidden\def\Fld@width{1sp}\fi \setbox\pdfm@box=\hbox{\MakeButtonField{#2}}% \leavevmode \Hy@escapeform\PDFForm@Reset + \HyField@AdvanceAnnotCount \@pdfm@mark{% - ann @\Fld@name\space\dvipdfm@setdim - << \PDFForm@Reset >>% + ann @reset\HyField@TheAnnotCount\space + \dvipdfm@setdim + <<\PDFForm@Reset>>% }% \unhbox\pdfm@box - \@pdfm@mark{put @afields @\Fld@name}% - \egroup + \@pdfm@mark{put @afields @reset\HyField@TheAnnotCount}% + \endgroup } % \end{macrocode} % \end{macro} @@ -13603,23 +14354,29 @@ \def\@CheckBox[#1]#2{% parameters, label \def\Fld@name{#2}% \def\Fld@default{0}% - \bgroup + \begingroup \def\Fld@width{\DefaultWidthofCheckBox}% \def\Fld@height{\DefaultHeightofCheckBox}% \Field@toks={ }% - \setkeys{Field}{#1}% + \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}{% \Hy@escapeform\PDFForm@Check \@pdfm@mark{% - ann @\Fld@name\space\dvipdfm@setdim - << \PDFForm@Check >>% + ann @check\HyField@TheAnnotCount\space + \dvipdfm@setdim + <<\PDFForm@Check>>% }% \unhbox\pdfm@box - \@pdfm@mark{put @afields @\Fld@name}% + \@pdfm@mark{put @afields @check\HyField@TheAnnotCount}% }% - \egroup + \endgroup } % \end{macrocode} % \end{macro} @@ -13728,12 +14485,30 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\PDFForm@Name} +% \begin{macrocode} +\def\PDFForm@Name{% + \begingroup + \ifnum\Hy@pdfversion<5 % implementation note 117, PDF spec 1.7 + \ifHy@unicode + \Hy@unicodefalse + \fi + \fi + \pdfstringdef\Hy@gtemp\Fld@name + \endgroup + \let\Fld@name\Hy@gtemp +} +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\PDFForm@Check} % \begin{macrocode} \def\PDFForm@Check{% /Subtype/Widget% - \ifFld@hidden /F 6\else /F 4\fi - /T(\Hy@escapestring{\Fld@name})% + \Fld@annotflags + /T(\Fld@name)% + /FT/Btn% + \Fld@flags /Q \Fld@align /BS<>% /MK<<% @@ -13753,7 +14528,6 @@ >>% /DA(/ZaDb \strip@pt\Fld@charsize\space Tf% \ifx\Fld@color\@empty\else\space\Fld@color\fi)% - /FT/Btn% /H/P% \ifFld@checked /V/Yes\else /V/Off\fi } @@ -13763,10 +14537,10 @@ % \begin{macrocode} \def\PDFForm@Push{% /Subtype/Widget% - \ifFld@hidden /F 6\else /F 4\fi - /T(\Hy@escapestring{\Fld@name})% + \Fld@annotflags + /T(\Fld@name)% /FT/Btn% - /Ff 65540% + \HyField@flags /H/P% /BS<>% /MK<<% @@ -13871,11 +14645,12 @@ % \begin{macrocode} \def\PDFForm@List{% /Subtype/Widget% - \ifFld@hidden /F 6\else /F 4\fi - /T(\Hy@escapestring{\Fld@name})% + \Fld@annotflags + /T(\Fld@name)% /FT/Ch% + \Fld@flags /Q \Fld@align - /BS<>% + /BS<>% /MK<<% \ifnum\Fld@rotation=\z@ \else @@ -13892,17 +14667,8 @@ >>% /DA(/Helv \strip@pt\Fld@charsize\space Tf% \ifx\Fld@color\@empty\else\space\Fld@color\fi)% - /Opt[\the\Choice@toks]% - \ifx\Fld@default\relax - \else - /DV(\Hy@escapestring{\Fld@default})% - \fi - \ifx\Fld@value\relax - \else - /V(\Hy@escapestring{\Fld@value})% - \fi + \Fld@choices \Fld@additionalactions - \Fld@flags } % \end{macrocode} % \end{macro} @@ -13910,10 +14676,10 @@ % \begin{macrocode} \def\PDFForm@Radio{% /Subtype/Widget% - \ifFld@hidden /F 6\else /F 4\fi - /T(\Hy@escapestring{\Fld@name})% + \Fld@annotflags + /T(\Fld@name)% /FT/Btn% - /Ff 49152% + \Fld@flags /H/P% /BS<>% /MK<<% @@ -13946,10 +14712,11 @@ % \begin{macrocode} \def\PDFForm@Text{% /Subtype/Widget% - \ifFld@hidden /F 6\else /F 4\fi - /T(\Hy@escapestring{\Fld@name})% - /Q \Fld@align + \Fld@annotflags + /T(\Fld@name)% /FT/Tx% + \Fld@flags + /Q \Fld@align /BS<>% /MK<<% \ifnum\Fld@rotation=\z@ @@ -13970,15 +14737,6 @@ /DV(\Hy@escapestring{\Fld@default})% /V(\Hy@escapestring{\Fld@value})% \Fld@additionalactions - \ifFld@multiline - \ifFld@readonly /Ff 4097\else /Ff 4096\fi - \else - \ifFld@password - \ifFld@readonly /Ff 8193\else /Ff 8192\fi - \else - \ifFld@readonly /Ff 1\fi - \fi - \fi \ifnum\Fld@maxlen>\z@/MaxLen \Fld@maxlen \fi } % \end{macrocode} @@ -13987,10 +14745,10 @@ % \begin{macrocode} \def\PDFForm@Submit{% /Subtype/Widget% - \ifFld@hidden /F 6\else /F 4\fi - /T(\Hy@escapestring{\Fld@name})% + \Fld@annotflags + /T(\Fld@name)% /FT/Btn% - /Ff 65540% + \Fld@flags /H/P% /BS<>% /MK<<% @@ -14009,7 +14767,7 @@ /FS/URL% /F(\Hy@escapestring{\Form@action})% >>% - \ifForm@html /Flags 4\fi + \Fld@submitflags >>% } % \end{macrocode} @@ -14018,12 +14776,12 @@ % \begin{macrocode} \def\PDFForm@Reset{% /Subtype/Widget% - \ifFld@hidden /F 6\else /F 4\fi - /T(\Hy@escapestring{\Fld@name})% + \Fld@annotflags + /T(\Fld@name)% /FT/Btn% + \Fld@flags /H/P% /DA(/Helv \strip@pt\Fld@charsize\space Tf 0 0 1 rg)% - /Ff 65540% /MK<<% \ifnum\Fld@rotation=\z@ \else @@ -14389,16 +15147,9 @@ o\fi,t=#4}% % % \end{macrocode} % -% This code is added, so that option `pdfpagenumbers' works -% with option `implicit' (suggestion of Sebastian Rahtz). % \begin{macrocode} \ifHy@implicit \else - \def\@begindvi{% - \unvbox\@begindvibox - \HyPL@EveryPage - \global\let\@begindvi\HyPL@EveryPage - }% \expandafter\endinput \fi % \end{macrocode} -- cgit v1.2.3