summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/hyperref/hyperref.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/hyperref/hyperref.dtx')
-rw-r--r--Master/texmf-dist/source/latex/hyperref/hyperref.dtx2051
1 files changed, 1537 insertions, 514 deletions
diff --git a/Master/texmf-dist/source/latex/hyperref/hyperref.dtx b/Master/texmf-dist/source/latex/hyperref/hyperref.dtx
index a26fd8ae8e1..b87911f4a58 100644
--- a/Master/texmf-dist/source/latex/hyperref/hyperref.dtx
+++ b/Master/texmf-dist/source/latex/hyperref/hyperref.dtx
@@ -1,7 +1,6 @@
% \iffalse
%% File: hyperref.dtx Copyright 1995-2001 Sebastian Rahtz,
% with portions written by David Carlisle and Heiko Oberdiek.
-%% RCS: $Id: hyperref.dtx 6.71 2000/10/04 rahtz Exp rahtz $
%%
%% This file is part of the `Hyperref Bundle'.
%% -------------------------------------------
@@ -37,7 +36,8 @@
%<tex4htcfg>\ProvidesFile{htex4ht.cfg}
%<pd1enc>\ProvidesFile{pd1enc.def}
%<puenc>\ProvidesFile{puenc.def}
-%<!none> [2003/11/30 v6.74m
+%<puvnenc>\ProvidesFile{puvnenc.def}
+%<!none> [2006/08/16 v6.75c
%<package> Hypertext links for LaTeX]
%<nohyperref> Dummy hyperref (SR)]
%<driver> Hyperref documentation driver file]
@@ -58,29 +58,62 @@
%<tex4htcfg> Hyperref configuration file for TeX4ht]
%<pd1enc> Hyperref: PDFDocEncoding definition (HO)]
%<puenc> Hyperref: PDF Unicode definition (HO)]
+%<puvnenc> Hyperref: Additions to puenc.def for VnTeX]
%<*driver>
\documentclass{ltxdoc}
+\IfFileExists{bmhydoc.sty}{\usepackage{bmhydoc}}{}
\usepackage{array,times}
\def\ttdefault{cmtt}
-\usepackage[colorlinks,hyperindex]{hyperref}
+\usepackage[
+ colorlinks,
+ hyperindex=false,% done by hypdoc
+ pdfusetitle,
+ pdfpagelabels
+]{hyperref}
+\usepackage[numbered]{hypdoc}
\pdfstringdefDisableCommands{\let\\\textbackslash}%
\EnableCrossrefs
\CodelineIndex
\begin{document}
+ %
+ % title
+ %
\GetFileInfo{hyperref.sty}
\title{Hypertext marks in \LaTeX}
\author{Sebastian Rahtz\\
- Email: \texttt{sebastian.rahtz@oucs.ox.ac.uk}}
+ Email: \texttt{sebastian.rahtz@oucs.ox.ac.uk}\\[1.5ex]
+ Heiko Oberdiek\\
+ Email: \texttt{oberdiek@uni-freiburg.de}}
\date{processed \today}
\maketitle
- \tableofcontents
+ %
+ % overview
+ %
+ \makeatletter
+ \@ifundefined{HyperrefOverview}{}{%
+ \HyperrefOverview\relax
+ \newpage
+ }
+ %
+ % table of contents
+ %
+ \section{\contentsname}
+ \makeatletter
+ \@starttoc{toc}
+ \newpage
+ %
+ % source code documentation
+ %
\let\Email\texttt
\DocInput{hyperref.dtx}
+ %
+ % index
+ %
\PrintIndex
\end{document}
%</driver>
% \fi
-% \CheckSum{17219}
+% \CheckSum{19023}
%
% \MakeShortVerb{|}
% \StopEventually{}
@@ -90,6 +123,12 @@
% \DoNotIndex{\csname,\endcsname,\relax,\begingroup,\endgroup}
% \DoNotIndex{\DeclareTextCommand,\DeclareTextCompositeCommand}
% \DoNotIndex{\space,\@empty,\special}
+% \DoNotIndex{\\,\0,\1,\2,\8}
+% \makeatletter
+% \g@addto@macro\theindex{^^A
+% \parfillskip=0pt plus 1fil
+% }
+% \makeatother
%
% \section{File hycheck.tex}
%
@@ -535,6 +574,9 @@
\newif\ifHy@CJKbookmarks
\newif\ifHy@colorlinks
\newif\ifHy@draft
+\let\Hy@finaltrue\Hy@draftfalse
+\let\Hy@finalfalse\Hy@drafttrue
+\newif\ifHy@escapeform
\newif\ifHy@figures
\newif\ifHy@fitwindow
\newif\ifHy@frenchlinks
@@ -573,6 +615,7 @@
\Hy@breaklinksfalse
\Hy@centerwindowfalse
\Hy@CJKbookmarksfalse
+\Hy@escapeformfalse
\Hy@figuresfalse
\Hy@fitwindowfalse
\Hy@hyperfootnotestrue
@@ -585,10 +628,10 @@
\Hy@nestingfalse
\Hy@newwindowfalse
\Hy@pageanchortrue
-\Hy@pagelabelsfalse
+\Hy@pagelabelstrue
\Hy@pdfpagehiddenfalse
\Hy@pdfstringfalse
-\Hy@plainpagestrue
+\Hy@plainpagesfalse
\Hy@raiselinksfalse
\Hy@setpagesizetrue
\Hy@texhtfalse
@@ -667,7 +710,7 @@
% \begin{itemize}
% \item Works only in options that use \cmd{\hypercalcbpdef}
% (currently only |pdfstartview|).
-% \item For calculations package |calc| have to be loaded.
+% \item For calculations package |calc| has to be loaded.
% \item The expansion of the argument is done at definition time.
% \end{itemize}
% \end{itemize}
@@ -729,7 +772,7 @@
%
% \section{Dealing with PDF strings}\label{sec:pdfstring}
% The PDF string stuff done by Heiko Oberdiek.\\
-% Email: \Email{oberdiek@ruf.uni-freiburg.de}.
+% Email: \Email{oberdiek@uni-freiburg.de}.
%
% Naming convention: All internal commands that are only
% needed by \cs{pdfstringdef} are prefixed with \cs{HyPsd@}.
@@ -847,6 +890,7 @@
\edef\8{\string\8}%
\edef\9{\string\9}%
\fontencoding{PU}%
+ \HyPsd@UTFviii
\else
\fontencoding{PD1}%
\fi
@@ -870,7 +914,7 @@
% as a usable hook. While an \cs{edef} a warning message by
% \cs{@inmathwarn} or \cs{TextSymbolUnavailable} cannot be give out,
% so \cs{@inmathwarn} should be disabled. And with the help of it
-% the assignments in \cs{@changed@cmd} can easily be catched
+% the assignments in \cs{@changed@cmd} can easily be caught
% (see below).
% \begin{macrocode}
\let\@inmathwarn\HyPsd@inmathwarn
@@ -994,6 +1038,11 @@
\let\cyr\relax
% \end{macrocode}
%
+% Redefine \cs{es@roman}, used in spanish.ldf.
+% \begin{macrocode}
+ \let\es@roman\@Roman
+% \end{macrocode}
+%
% \paragraph{Package german.}
% \begin{macrocode}
\let\glqq\textglqq
@@ -1009,12 +1058,20 @@
% \paragraph{Package french.} The support is deferred, because
% it needs |\GenericError| to be disabled (see below).
%
+% \paragraph{Package FrenchPro.} This package uses:
+% \begin{quote}
+% |\if@mid@expandable{|not fully expandable code|}{|fully expandable code|}|
+% \end{quote}
+% \begin{macrocode}
+ \let\if@mid@expandable\@firstoftwo
+% \end{macrocode}
+%
% \paragraph{AMS classes.}
% \begin{macrocode}
\HyPSD@AMSclassfix
% \end{macrocode}
%
-% \paragraph{Redefintion of \cs{hspace}}
+% \paragraph{Redefinition of \cs{hspace}}
% \cs{hspace} don't work in bookmarks, the following fix
% tries to set a space if the argument is a positive length.
% \begin{macrocode}
@@ -1066,6 +1123,7 @@
% \paragraph{Miscellaneous commands.}
% \begin{macrocode}
\let\leavevmode\@empty
+ \let\mbox\@empty
% \end{macrocode}
% \cs{halign} causes error messages because of the template
% character |#|.
@@ -1101,7 +1159,7 @@
%
% \paragraph{Spaces.}
% For checking the token of the string, spaces must be masked, because
-% they cannot by catched by undelimited arguments.
+% they cannot by caught by undelimited arguments.
% \begin{macrocode}
\HyPsd@LetUnexpandableSpace\space
\HyPsd@LetUnexpandableSpace\ %
@@ -1143,6 +1201,7 @@
% in order to get rid of the error message at least:
% \begin{macrocode}
\let\@ifnextchar\HyPsd@ifnextchar
+ \let\@ifnextchar\HyPsd@new@ifnextchar
\let\@protected@testopt\HyPsd@protected@testopt
% \end{macrocode}
%
@@ -1313,7 +1372,7 @@
%\end{verbatim}
% \paragraph{Looking for wrong glyphs.}
% The case that glyphs aren't defined in the PD1 encoding
-% is catched above in such a way, that the glyph name and
+% is caught above in such a way, that the glyph name and
% a marker is inserted into the string. Now we can safely
% scan the string for this marker and provide a descriptive
% warning.
@@ -1953,7 +2012,7 @@
% In \cmd{\HyPsd@@ProtectSpaces} the space tokens are replaced
% by not expandable commands, that work like spaces:
% \begin{itemize}
-% \item So they can catched by undelimited arguments.
+% \item So they can caught by undelimited arguments.
% \item And they work in number, dimen, and skip
% assignments.
% \end{itemize}
@@ -2152,6 +2211,10 @@
% of the \cs{let} commands cannot be canceled with an undelimited
% parameter because of a possible space token after \cs{futurelet}.
%
+% To avoid unmachted \cs{if...} tokens, the cases
+% \verb|\let\if...\iftrue| and \verb|\let\if...\iffalse|
+% are checked and ignored.
+%
% \begin{macro}{\HyPsd@DefCommand}
% \begin{macro}{\HyPsd@LetCommand}
% \begin{macrocode}
@@ -2166,14 +2229,32 @@
\@gobble
}%
\let#2\let
- \def\HyPsd@LetCommand##1{%
- #2%
- \expandafter\noexpand
- \csname\expandafter\@gobble\string##1\@empty\endcsname
+ \def\HyPsd@@LetCommand##1{%
+ \expandafter\ifx\csname##1\expandafter\endcsname
+ \csname iftrue\endcsname
+ \pdfstringdefWarn\let
+ \expandafter\@gobble
+ \else
+ \expandafter\ifx\csname##1\expandafter\endcsname
+ \csname iffalse\endcsname
+ \pdfstringdefWarn\let
+ \expandafter\expandafter\expandafter\@gobble
+ \else
+ #2%
+ \expandafter\noexpand
+ \csname##1\expandafter\expandafter\expandafter\endcsname
+ \fi
+ \fi
}%
}%
\expandafter\x\csname <def>-command\expandafter\endcsname
\csname <let>-command\endcsname
+\def\HyPsd@LetCommand#1{%
+ \expandafter\expandafter\expandafter\HyPsd@@LetCommand
+ \expandafter\expandafter\expandafter{%
+ \expandafter\@gobble\string#1\@empty
+ }%
+}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2196,6 +2277,18 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\HyPsd@new@ifnextchar}
+% Package \verb|amsgen.sty| redefines \cs{@ifstar} using
+% \cs{new@ifnextchar} instead of \cs{@ifnextchar}. See
+% bug report latex/3662.
+% \begin{macrocode}
+\def\HyPsd@new@ifnextchar{%
+ \pdfstringdefWarn\new@ifnextchar
+ \expandafter\@gobbletwo\@gobble
+}
+% \end{macrocode}
+% \end{macro}
+%
% \subsubsection{^^A
% \texorpdfstring{\cs{@protected@testoptifnextchar}}^^A
% {\\@protected@testopt}^^A
@@ -2695,9 +2788,15 @@
% \begin{macrocode}
|gdef|HyPsd@ConvertToUnicode#1{%
|xdef#1{%
- \376\377%
|expandafter|HyPsd@DoConvert#1|@empty|@empty|@empty
}%
+ |xdef#1{%
+ |ifx#1|@empty
+ |else
+ \376\377%
+ #1%
+ |fi
+ }%
}
% \end{macrocode}
% \end{macro}
@@ -2767,6 +2866,188 @@
% \end{macrocode}
% \end{macro}
%
+% \subsubsection{Support for UTF-8 input encoding}
+%
+% After |\usepackage[utf8]{inputenc}| there are macros that
+% expect the UTF-8 octets as arguments. Therefore we can
+% calculate the PDF octal sequences directly. Because the
+% PDF format is limited to UCS-2, conversion macros are
+% needed for UTF-8 sequences with two and three octets only.
+%
+% This calculation must be done in an expandable context,
+% so we use e\TeX here for performance reasons. Unhappily
+% the results of divisions are rounded. Thus a
+% circumvention via |\dimexpr| is used, e.g.:
+% \begin{quote}
+% |\numexpr 123/4\relax| is replaced by\\
+% |\number\dimexpr.25\dimexpr 123sp\relax\relax|
+% \end{quote}
+% \begin{macrocode}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname numexpr\endcsname\relax
+ \let\HyPsd@UTFviii\relax
+\else
+ \def\HyPsd@UTFviii{%
+ \let\UTFviii@two@octets\HyPsd@UTFviii@two
+ \let\UTFviii@three@octets\HyPsd@UTFviii@three
+ \let\unichar\HyPsd@unichar
+ }%
+% \end{macrocode}
+%
+% The two octet form of UTF-8 |110aaabb| (A) and |10cccddd| (B)
+% must be converted into octal numbers |00a| and |bcd|. The
+% result is |\8a\bcd| (with a, b, c, d as octal numbers).
+% The conversion equations.
+% \begin{eqnarray}
+% a &:= A/4 - 48\\
+% b &:= A - 4*(A/4)\\
+% c &:= B/8 - 8*((8*(B/8))/8)\\
+% d &:= B - 8*(B/8)\\
+% \end{eqnarray}
+% ^^A #1 = A/4 #2 = A
+% ^^A #3 = B/8 #4 = B
+% \begin{macrocode}
+ \def\HyPsd@UTFviii@two#1#2{%
+ \expandafter\HyPsd@UTFviii@@two
+ \number\dimexpr.25\dimexpr`#1sp\expandafter\relax\expandafter|%
+ \number`#1\expandafter|%
+ \number\dimexpr.125\dimexpr`#2sp\expandafter\relax\expandafter|%
+ \number`#2 \@nil
+ }%
+ \def\HyPsd@UTFviii@@two#1|#2|#3|#4\@nil{%
+ \expandafter\8%
+ \number\numexpr #1-48\expandafter\relax
+ \csname\number\numexpr #2-4*#1\relax\expandafter\endcsname
+ \number\numexpr #3-8*%
+ \number\dimexpr.125\dimexpr#3sp\relax\relax\expandafter\relax
+ \number\numexpr #4-8*#3\relax
+ }%
+% \end{macrocode}
+%
+% Three octet form: |1110aabb| (A), |10bcccdd| (B), and |10eeefff|
+% (C). The result is |\9abc\def| (with a, \dots, f as octal numbers).
+% The conversion equations:
+% \begin{eqnarray}
+% a &:= A/4 - 56\\
+% b &:= 2*(A - 4*(A/4)) + ((B-128 < 32) ? 0 : 1)\\
+% c &:= B/4 - 32 - ((B-128 < 32) ? 0 : 8)\\
+% d &:= B - 4*(B/4)\\
+% e &:= C/8 - 16\\
+% f &:= C - 8*(C/8)\\
+% \end{eqnarray}
+% ^^A #1 = A/4 #2 = A
+% ^^A #3 = (B-128 < 32) ? 0 : 1
+% ^^A #4 = B/4 #5 = B
+% ^^A #6 = C/8 #7 = C
+% \begin{macrocode}
+ \def\HyPsd@UTFviii@three#1#2#3{%
+ \expandafter\HyPsd@UTFviii@@three
+ \number\dimexpr.25\dimexpr`#1sp\expandafter\relax\expandafter|%
+ \number`#1\expandafter|%
+ \number\ifnum\numexpr`#2-128\relax <32 0\else 1\fi\expandafter|%
+ \number\dimexpr.25\dimexpr`#2sp\expandafter\relax\expandafter|%
+ \number`#2\expandafter|%
+ \number\dimexpr.125\dimexpr`#3sp\expandafter\relax\expandafter|%
+ \number`#3 \@nil
+ }%
+ \def\HyPsd@UTFviii@@three#1|#2|#3|#4|#5|#6|#7\@nil{%
+ \expandafter\9%
+ \number\numexpr #1-56\expandafter\relax
+ \number\numexpr 2*(#2-4*#1)+#3\expandafter\relax
+ \number\numexpr #4 - 32 -\ifcase#3 0\else 8\fi\expandafter\relax
+ \csname\number\numexpr #5-4*#4\relax\expandafter\endcsname
+ \number\numexpr #6-16\expandafter\relax
+ \number\numexpr #7-8*#6\relax
+ }%
+% \end{macrocode}
+%
+% Four octet form: |11110aab| (A), |10bcccdd| (B), |10deeeff| (C),
+% and |10ggghhh| (D). The result are two surrogate characters
+% |110010aabbcccddd| and |11001eeeffggghhh|, or as octal numbers
+% |\931a\bcd| and |\931e\fgh|.
+% The conversion equations:
+% \begin{eqnarray}
+% a &:= A/2 - 120\\
+% b &:= (isodd(A) ? 2 : 0) + (B/32 - 4)\\
+% c &:= (B - 32*(B/32))/4\\
+% d &:= 2*(B - 4*(B/4)) + (C/32 - 4)\\
+% e &:= (C - 32*(C/32))/4\\
+% f &:= C - 4*C/4\\
+% g &:= D/8 - 16\\
+% h &:= D - 8*(D/8)\\
+% \end{eqnarray}
+% ^^A \HyPsd@UTFviii@four/\HyPsd@UTFviii@@four
+% ^^A #1 = A (char/number)
+% ^^A #2 = B (char)
+% ^^A #3 = C (char)
+% ^^A #4 = D (char)
+% ^^A \HyPsd@UTFviii@@@four
+% ^^A #1 = A (number)
+% ^^A #2 = B (char)
+% ^^A #3 = B/32 (number)
+% ^^A #4 = C (char)
+% ^^A #5 = C/32 (number)
+% ^^A #6 = D (char)
+% ^^A #7 = D/8 (number)
+% \begin{macrocode}
+ \def\HyPsd@UTFviii@four#1{%
+ \expandafter\HyPsd@UTFviii@@four\number`#1|%
+ }%
+ \def\HyPsd@UTFviii@@four#1|#2#3#4{%
+ \expandafter\HyPsd@UTFviii@@@four\number#1\expandafter|%
+ \number`#2\expandafter|
+ \number\dimexpr.03125\dimexpr`#2sp\expandafter|%
+ \number`#3\expandafter|%
+ \number\dimexpr.03125\dimexpr`#3sp\expandafter|%
+ \number`#4\expandafter|%
+ \number\dimexpr.125\dimexpr`#4|%
+ }%
+ \def\HyPsd@UTFviii@@@four#1|#2|#3|#4|#5|#6|#7|{%
+ \931%
+ \number\numexpr\dimexpr.5\dimexpr#1sp\relax\relax -120\relax
+ \csname\number\numexpr\ifodd#1 2\else 0\fi +#3-4\relax\endcsname
+ \number\dimexpr.25\dimexpr #2sp - 32\dimexpr#3sp\relax\relax\relax
+ % ...
+ }%
+% \end{macrocode}
+%
+% Input encoding |utf8x| of package |ucs| uses macro
+% \cmd{\unichar}. It takes a macro name as argument.
+% Then name obeys the following structure:
+%\begin{verbatim}
+%\u8-<first byte as decimal number>-[continuation byte]+
+%\end{verbatim}
+% \begin{macrocode}
+ \def\HyPsd@unichar#1{%
+ \expandafter\HyPsd@@unichar\string#1\@empty\@empty\@empty\@nil
+ }%
+ \def\HyPsd@@unichar #1-#2-#3#4#5#6\@nil{%
+ \ifnum#2>191 %
+ \ifnum#2<224 %
+ \expandafter\HyPsd@UTFviii@@two
+ \number\dimexpr.25\dimexpr#2sp\expandafter\relax\expandafter|%
+ \number#2\expandafter|%
+ \number\dimexpr.125\dimexpr`#3sp\expandafter\relax\expandafter|%
+ \number`#3 \@nil
+ \else
+ \ifnum#2<240 %
+ \expandafter\HyPsd@UTFviii@@three
+ \number\dimexpr.25\dimexpr#2sp\expandafter\relax\expandafter|%
+ \number#2\expandafter|%
+ \number\ifnum\numexpr`#3-128\relax <32 0\else 1\fi\expandafter|%
+ \number\dimexpr.25\dimexpr`#3sp\expandafter\relax\expandafter|%
+ \number`#3\expandafter|%
+ \number\dimexpr.125\dimexpr`#4sp\expandafter\relax\expandafter|%
+ \number`#4 \@nil
+ \else
+ ?% unsupported
+ \fi
+ \fi
+ \fi
+ }%
+\fi
+% \end{macrocode}
+%
% \section{Support of other packages}
%
% \subsection{Package subfigure}
@@ -2779,20 +3060,22 @@
\renewcommand*{\sub@label}[1]{%
\@bsphack
\subfig@oldlabel{#1}%
- \begingroup
- \edef\@currentlabstr{%
- \expandafter\strip@prefix\meaning\@currentlabelname
- }%
- \protected@write\@auxout{}{%
- \string\newlabel{sub@#1}{%
- {\@nameuse{@@thesub\@captype}}%
- {\thepage}%
- {\expandafter\strip@period\@currentlabstr\relax.\relax\@@@}%
- {\@currentHref}%
- {}%
+ \if@filesw
+ \begingroup
+ \edef\@currentlabstr{%
+ \expandafter\strip@prefix\meaning\@currentlabelname
}%
- }%
- \endgroup
+ \protected@write\@auxout{}{%
+ \string\newlabel{sub@#1}{%
+ {\@nameuse{@@thesub\@captype}}%
+ {\thepage}%
+ {\expandafter\strip@period\@currentlabstr\relax.\relax\@@@}%
+ {\@currentHref}%
+ {}%
+ }%
+ }%
+ \endgroup
+ \fi
\@esphack
}%
\@ifpackagelater{subfigure}{2002/03/26}{}{%
@@ -2867,6 +3150,7 @@
\ifvmode
#1%
\else
+ \penalty\@M
\smash{\raise\HyperRaiseLinkLength\hbox{#1}}%
\fi
}
@@ -2997,12 +3281,7 @@
\Hy@boolkey{draft}{#1}%
}
\define@key{Hyp}{final}[true]{%
- \Hy@boolkey{draft}{#1}%
- \ifHy@draft
- \Hy@draftfalse
- \else
- \Hy@drafttrue
- \fi
+ \Hy@boolkey{final}{#1}%
}
\let\KV@Hyp@nolinks\KV@Hyp@draft
\define@key{Hyp}{a4paper}[true]{%
@@ -3131,6 +3410,10 @@
\Hy@breaklinkstrue
}
\define@key{Hyp}{dvipdf}[true]{%
+ \Hy@WarningNoLine{%
+ Option `dvipdf' is deprecated.\MessageBreak
+ See the user manual for available driver options%
+ }%
}
\define@key{Hyp}{nativepdf}[true]{%
\def\Hy@driver{hdvips}%
@@ -3401,6 +3684,40 @@
\def\FancyVerbLineautorefname{Lyn}%
\def\theoremautorefname{Teorema}%
}
+\def\HyLang@french{%
+ \def\equationautorefname{\'Equation}%
+ \def\footnoteautorefname{note}%
+ \def\itemautorefname{item}%
+ \def\figureautorefname{Figure}%
+ \def\tableautorefname{Tableau}%
+ \def\partautorefname{Partie}%
+ \def\appendixautorefname{Appendice}%
+ \def\chapterautorefname{chapitre}%
+ \def\sectionautorefname{section}%
+ \def\subsectionautorefname{sous-section}%
+ \def\subsubsectionautorefname{sous-sous-section}%
+ \def\paragraphautorefname{paragraphe}%
+ \def\subparagraphautorefname{sous-paragraphe}%
+ \def\FancyVerbLineautorefname{ligne}%
+ \def\theoremautorefname{Th\'eor\`eme}%
+}
+\def\HyLang@vietnamese{%
+ \def\equationautorefname{Ph\uhorn{}\ohorn{}ng tr\`inh}%
+ \def\footnoteautorefname{Ch\'u th\'ich}%
+ \def\itemautorefname{m\d{u}c}%
+ \def\figureautorefname{H\`inh}%
+ \def\tableautorefname{B\h{a}ng}%
+ \def\partautorefname{Ph\`\acircumflex{}n}%
+ \def\appendixautorefname{Ph\d{u} l\d{u}c}%
+ \def\chapterautorefname{ch\uhorn{}\ohorn{}ng}%
+ \def\sectionautorefname{m\d{u}c}%
+ \def\subsectionautorefname{m\d{u}c}%
+ \def\subsubsectionautorefname{m\d{u}c}%
+ \def\paragraphautorefname{\dj{}o\d{a}n}%
+ \def\subparagraphautorefname{\dj{}o\d{a}n}%
+ \def\FancyVerbLineautorefname{d\`ong}%
+ \def\theoremautorefname{\DJ{}\d{i}nh l\'y}%
+}
% \end{macrocode}
%
% Instead of package babel's definition of \cmd{\addto} the
@@ -3436,7 +3753,7 @@
}%
}%
\expandafter\x\csname extras#1\expandafter\endcsname
- \csname HyLang@#2\expandafter\endcsname
+ \csname HyLang@#2\endcsname
}
\HyLang@DeclareLang{english}{english}
\HyLang@DeclareLang{UKenglish}{english}
@@ -3452,6 +3769,30 @@
\HyLang@DeclareLang{portuguese}{portuges}
\HyLang@DeclareLang{spanish}{spanish}
\HyLang@DeclareLang{afrikaans}{afrikaans}
+\HyLang@DeclareLang{french}{french}
+\HyLang@DeclareLang{frenchb}{french}
+\HyLang@DeclareLang{francais}{french}
+\HyLang@DeclareLang{acadian}{french}
+\HyLang@DeclareLang{canadien}{french}
+% \end{macrocode}
+% More work is needed in case of options |vietnamese| and |vietnam|.
+% \begin{macrocode}
+\define@key{Hyp}{vietnamese}[]{%
+ \HyLang@addto\extrasvietnamese\HyLang@vietnamese
+ \AtEndOfPackage{%
+ \@ifundefined{T@PU}{}{%
+ \input{puvnenc.def}%
+ }%
+ }%
+}
+\define@key{Hyp}{vietnam}[]{%
+ \HyLang@addto\extrasvietnam\HyLang@vietnamese
+ \AtEndOfPackage{%
+ \@ifundefined{T@PU}{}{%
+ \input{puvnenc.def}%
+ }%
+ }%
+}
% \end{macrocode}
%
% \section{Options to change appearance of links}\label{appearance}
@@ -3473,10 +3814,60 @@
\define@key{Hyp}{bookmarks}[true]{%
\Hy@boolkey{bookmarks}{#1}%
}
+% \end{macrocode}
+% \begin{macrocode}
\define@key{Hyp}{bookmarksopen}[true]{%
\Hy@boolkey{bookmarksopen}{#1}%
}
+% \end{macrocode}
+%
+% The depth of the outlines is controlled by option
+% \verb|bookmarksdepth|.
+% The option acts globally and distinguishes three cases:
+% \begin{itemize}
+% \item \verb|bookmarksdepth|: Without value hyperref uses
+% counter \texttt{tocdepth} (compatible behaviour and default).
+% \item \verb|bookmarksdepth=<number>|: the depth is set to
+% \verb|<number>|.
+% \item \verb|bookmarksdepth=<name>|: The \verb|<name>| must
+% not start with a number or minus sign. It is a document
+% division name (part, chapter, section, \dots). Internally
+% the value of macro \verb|\toclevel@<name>| is used.
+% \end{itemize}
+% \begin{macrocode}
+\let\Hy@bookmarksdepth\c@tocdepth
+\define@key{Hyp}{bookmarksdepth}[]{%
+ \begingroup
+ \edef\x{#1}%
+ \ifx\x\empty
+ \global\let\Hy@bookmarksdepth\c@tocdepth
+ \else
+ \@ifundefined{toclevel@\x}{%
+ \@onelevel@sanitize\x
+ \edef\y{\expandafter\@car\x\@nil}%
+ \ifcase 0\expandafter\ifx\y-1\fi
+ \expandafter\ifnum\expandafter`\y>47 %
+ \expandafter\ifnum\expandafter`\y<58 1\fi\fi\relax
+ \Hy@Warning{Unknown document division name (\x)}%
+ \else
+ \setbox\z@=\hbox{%
+ \count@=\x
+ \xdef\Hy@bookmarksdepth{\the\count@}%
+ }%
+ \fi
+ }{%
+ \setbox\z@=\hbox{%
+ \count@=\csname toclevel@\x\endcsname
+ \xdef\Hy@bookmarksdepth{\the\count@}%
+ }%
+ }%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+%
% `bookmarksopenlevel' to specify the open level. From Heiko Oberdiek.
+% \begin{macrocode}
\define@key{Hyp}{bookmarksopenlevel}{%
\def\@bookmarksopenlevel{#1}%
}
@@ -3501,7 +3892,7 @@
\define@key{Hyp}{CJKbookmarks}[true]{%
\Hy@boolkey{CJKbookmarks}{#1}%
}
-% \end{macrcode}
+% \end{macrocode}
%
% \begin{macrocode}
\define@key{Hyp}{linkcolor}{\def\@linkcolor{#1}}
@@ -3570,16 +3961,65 @@
}
% \end{macrocode}
%
+% The value of the |bordercolor| options are not processed
+% by the color package. Therefore the value consists of
+% space separated rgb numbers in the range 0 until 1.
+%
+% Package |xcolor| provides |\XC@bordercolor| since version 1.1.
+% If the two spaces in the color specification are missing,
+% then the value is processed as color specification from
+% package |xcolor| by using |\XC@bordercolor| (since
+% xcolor 2004/05/09 v1.11).
+% \begin{macrocode}
+\def\Hy@ColorList{cite,file,link,menu,page,run,url}
+\@for\Hy@temp:=\Hy@ColorList\do{%
+ \edef\Hy@temp{%
+ \noexpand\define@key{Hyp}{\Hy@temp bordercolor}{%
+ \noexpand\Hy@bordercolor{\Hy@temp}{##1}{ }%
+ }%
+ }%
+ \Hy@temp
+}
+\def\Hy@bordercolor#1#2#3{%
+ \begingroup
+ \csname @safe@activestrue\endcsname
+ \@ifundefined{XC@edef}{\edef}{\XC@edef}\x{#2}%
+ \expandafter\Hy@CheckColorSpec\x#3#3\@nil{#1}{#2}%
+}
+\def\Hy@CheckColorSpec#1 #2 #3\@nil#4#5{%
+ \ifx\\#3\\%
+ \@ifundefined{XC@bordercolor}{%
+ \Hy@Warning{%
+ Unsupported color specification (#4bordercolor).\MessageBreak
+ Load package `xcolor' (version >= 1.11) first.\MessageBreak
+ Ignoring color specification%
+ }%
+ \endgroup
+ }{%
+ \endgroup
+ \XC@bordercolor{#4}{#5}%
+ }%
+ \else
+ \endgroup
+ \@namedef{@#4bordercolor}{#5}%
+ \fi
+}
+% \end{macrocode}
+%
% \begin{macrocode}
-\define@key{Hyp}{linkbordercolor}{\def\@linkbordercolor{#1}}
-\define@key{Hyp}{urlbordercolor}{\def\@urlbordercolor{#1}}
-\define@key{Hyp}{menubordercolor}{\def\@menubordercolor{#1}}
-\define@key{Hyp}{filebordercolor}{\def\@filebordercolor{#1}}
-\define@key{Hyp}{runbordercolor}{\def\@runbordercolor{#1}}
-\define@key{Hyp}{citebordercolor}{\def\@citebordercolor{#1}}
-\define@key{Hyp}{pagebordercolor}{\def\@pagebordercolor{#1}}
\define@key{Hyp}{pdfhighlight}{\def\@pdfhighlight{#1}}
\define@key{Hyp}{pdfborder}{\def\@pdfborder{#1}}
+\define@key{Hyp}{pdfborderstyle}{\def\@pdfborderstyle{#1}}
+\def\Hy@setpdfborder{%
+ \ifx\@pdfborder\@empty
+ \else
+ /Border[\@pdfborder]%
+ \fi
+ \ifx\@pdfborderstyle\@empty
+ \else
+ /BS<<\@pdfborderstyle>>%
+ \fi
+}
\define@key{Hyp}{pdfpagemode}{%
\def\Hy@tempa{#1}%
\ifx\Hy@tempa\@empty
@@ -3603,6 +4043,8 @@
\define@key{Hyp}{pdfauthor}{\pdfstringdef\@pdfauthor{#1}}
\define@key{Hyp}{pdfproducer}{\pdfstringdef\@pdfproducer{#1}}
\define@key{Hyp}{pdfcreator}{\pdfstringdef\@pdfcreator{#1}}
+\define@key{Hyp}{pdfcreationdate}{\pdfstringdef\@pdfcreationdate{#1}}
+\define@key{Hyp}{pdfmoddate}{\pdfstringdef\@pdfmoddate{#1}}
\define@key{Hyp}{pdfsubject}{\pdfstringdef\@pdfsubject{#1}}
\define@key{Hyp}{pdfkeywords}{\pdfstringdef\@pdfkeywords{#1}}
\define@key{Hyp}{pdfview}{\calculate@pdfview#1 \\}
@@ -3651,6 +4093,9 @@
\define@key{Hyp}{pdfpagelabels}[true]{%
\Hy@boolkey[pdfpagelabels]{pagelabels}{#1}%
}
+\define@key{Hyp}{pdfescapeform}[true]{%
+ \Hy@boolkey[pdfescapeform]{escapeform}{#1}%
+}
% \end{macrocode}
% Default values:
% \begin{macrocode}
@@ -3666,8 +4111,10 @@
\def\@pdfnonfullscreenpagemode{}
\def\@pdftitle{}
\def\@pdfauthor{}
-\def\@pdfproducer{}
+\let\@pdfproducer\relax
\def\@pdfcreator{LaTeX with hyperref package}
+\def\@pdfcreationdate{}
+\def\@pdfmoddate{}
\def\@pdfsubject{}
\def\@pdfkeywords{}
\def\@pdfpagescrop{}
@@ -3709,43 +4156,13 @@
% To add flexibility, we will not use the ordinary processing of
% package options, but put them through the \emph{keyval} package.
% This section was written by David Carlisle.
-% \begin{macrocode}
-\def\ProcessOptionsWithKV#1{%
- \let\@tempc\relax
- \let\Hy@tempa\@empty
-% \end{macrocode}
-% Add any global options that are known to KV to the start of the list
-% being built in |\Hy@tempa| and mark them used (by removing them from
-% the unused option list).
-% \begin{macrocode}
- \@for\CurrentOption:=\@classoptionslist\do{%
- \@ifundefined{KV@#1@\CurrentOption}%
- {}%
- {%
- \edef\Hy@tempa{\Hy@tempa,\CurrentOption,}%
- \@expandtwoargs\@removeelement\CurrentOption
- \@unusedoptionlist\@unusedoptionlist
- }%
- }%
-% \end{macrocode}
%
-% Now stick the package options at the end of the list and wrap in a call
-% to |\setkeys|. Can simply use |\edef|, normally KV takes care to avoid
-% expansion, but the package system has already fully expanded the package
-% option list before passing it to the package, so no more harm can occur
-% here.
+% Package kvoptions is used for processing options that are
+% given as key value pairs. The package provides
+% |\ProcessKeyvalOptions|, formerly known as
+% |\ProcessOptionsWithKV|.
% \begin{macrocode}
- \edef\Hy@tempa{%
- \noexpand\setkeys{#1}{%
- \Hy@tempa\@ptionlist{\@currname.\@currext}%
- }%
- }%
-% \end{macrocode}
-%
-% Do it.
-% \begin{macrocode}
- \Hy@tempa
-}
+\RequirePackage{kvoptions}
% \end{macrocode}
%
% Add option |tex4ht| if package |tex4ht| is loaded.
@@ -3759,7 +4176,7 @@
%
% \begin{macrocode}
\let\ReadBookmarks\relax
-\ProcessOptionsWithKV{Hyp}
+\ProcessKeyvalOptions{Hyp}
% \end{macrocode}
%
% After processing options.
@@ -3816,7 +4233,7 @@
\let\HyPsd@InitUnicode\@undefined
% \end{macrocode}
%
-% \subsubsection{Patch for babel's
+% \subsection{Patch for babel's
% \texorpdfstring{\cs{texttilde}}{\\texttilde}}
% Babel does not define \cmd{\texttilde} in NFSS2 manner,
% so the NFSS2 definitions of PD1 or PU encoding is not
@@ -3920,7 +4337,7 @@
\fi
\fi
\else
- \ifcase\pdfoutput
+ \ifnum\pdfoutput<1 %
\let\Hy@driver\Hy@defaultdriver
\else
\def\Hy@driver{hpdftex}%
@@ -3929,6 +4346,32 @@
\Hy@breaklinkstrue
\fi
\fi
+ \ifx\Hy@driver\Hy@defaultdriver
+ \def\Hy@temp{hdvips}%
+ \ifx\Hy@temp\Hy@driver
+ \def\Hy@raisedlink{}%
+ \def\XR@ext{pdf}%
+ \fi
+ \def\Hy@temp{hdvipdfm}%
+ \ifx\Hy@temp\Hy@driver
+ \def\XR@ext{pdf}%
+ \Hy@breaklinkstrue
+ \fi
+ \def\Hy@temp{hdviwind}%
+ \ifx\Hy@temp\Hy@driver
+ \setkeys{Hyp}{colorlinks}%
+ \PassOptionsToPackage{dviwindo}{color}%
+ \fi
+ \def\Hy@temp{hdvipson}%
+ \ifx\Hy@temp\Hy@driver
+ \def\XR@ext{pdf}%
+ \def\Hy@raisedlink{}%
+ \fi
+ \def\Hy@temp{textures}%
+ \ifx\Hy@temp\Hy@driver
+ \def\XR@ext{pdf}%
+ \fi
+ \fi
\typeout{*hyperref using default driver \Hy@driver*}%
\else
\typeout{*hyperref using driver \Hy@driver*}%
@@ -3991,11 +4434,25 @@
\Hy@DisableOption{bookmarks}
% \end{macrocode}
%
+% |\Hy@colorlink| expects a macro as argument. It contains
+% the color specification.
% \begin{macrocode}
\AtBeginDocument{%
\ifHy@colorlinks
\ifHy@typexml\else\RequirePackage{color}\fi
- \def\Hy@colorlink#1{\begingroup\color{#1}}%
+ \def\Hy@colorlink#1{%
+ \begingroup
+ \expandafter\Hy@colorscan\expandafter#1#1\@nil%
+ }%
+ \def\Hy@colorscan#1{%
+ \@ifnextchar[% ]
+ {%
+ \Hy@@colorscan
+ }{%
+ \expandafter\color\expandafter#1\@car{}%
+ }%
+ }%
+ \def\Hy@@colorscan#1\@nil{\color#1}%
\def\Hy@endcolorlink{\endgroup}%
\Hy@Info{Link coloring ON}%
\else
@@ -4077,6 +4534,7 @@
\catcode`\%\active
\catcode`\#\active
\catcode`\_\active
+ \catcode`\$\active
\gdef\hyper@normalise{
\begingroup
\catcode`\^^M\active
@@ -4087,6 +4545,7 @@
\catcode`\#\active
\def#{\hyper@hash}
\def\#{\hyper@hash}
+ \@makeother\&
\edef\textunderscore{\string_}
\let\_\textunderscore
\catcode`\_\active
@@ -4094,6 +4553,8 @@
\let~\hyper@tilde
\let\~\hyper@tilde
\let\textasciitilde\hyper@tilde
+ \let\\\@backslashchar
+ \edef${\string$}
\ifx\@safe@activestrue\@undefined\else\@safe@activestrue\fi
\hyper@n@rmalise
}
@@ -4226,8 +4687,10 @@
\def\label@hyperdef[#1]#2#3#4{% label name, category, name,
% anchor text
\@bsphack
- \protected@write\@auxout{}%
- {\string\newlabel{#1}{{}{}{}\##2.#3}}%
+ \if@filesw
+ \protected@write\@auxout{}%
+ {\string\newlabel{#1}{{}{}{}\##2.#3}}%
+ \fi
\@esphack
\ifHy@nesting
\hyper@@anchor{#2.#3}{#4}%
@@ -4330,7 +4793,7 @@
% \end{macrocode}
% otherwise its a URL
% \begin{macrocode}
- \hyper@linkurl{#3}{#7\ifx\\#2\\\else\##2\fi}%
+ \hyper@linkurl{#3}{#7\ifx\\#2\\\else\hyper@hash#2\fi}%
\fi
\fi
\fi
@@ -4340,7 +4803,7 @@
% By default, turn |run:| into |file:|
% \begin{macrocode}
\def\@hyper@launch run:#1\\#2#3{% filename, anchor text, linkname
- \hyper@linkurl{#2}{\Hy@linkfileprefix#1\ifx\\#3\\\else\##3\fi}%
+ \hyper@linkurl{#2}{\Hy@linkfileprefix#1\ifx\\#3\\\else\hyper@hash#3\fi}%
}
% \end{macrocode}
% D P Story <story@uakron.edu> pointed out that relative paths
@@ -4359,10 +4822,10 @@
\else
\ifx\@baseurl\@empty
\hyper@linkurl{#2}{%
- \Hy@linkfileprefix\use@file\ifx\\#3\\\else\##3\fi
+ \Hy@linkfileprefix\use@file\ifx\\#3\\\else\hyper@hash#3\fi
}%
\else
- \hyper@linkurl{#2}{\use@file\ifx\\#3\\\else\##3\fi}%
+ \hyper@linkurl{#2}{\use@file\ifx\\#3\\\else\hyper@hash#3\fi}%
\fi
\fi
}
@@ -4496,8 +4959,9 @@
\csname Form@#2\ifx\relax#1\relax true\else#1\fi\endcsname
}
\define@key{Form}{action}{%
- \def\Form@action{#1}%
+ \hyper@normalise\Hy@DefFormAction{#1}%
}
+\def\Hy@DefFormAction{\def\Form@action}
\def\enc@@html{html}
\define@key{Form}{encoding}{%
\def\Hy@tempa{#1}%
@@ -4917,12 +5381,12 @@
% to cope with the extra arguments.
% \begin{macrocode}
\if@filesw
- \ifHy@typexml
- \immediate\closeout\@mainaux
- \immediate\openout\@mainaux\jobname.aux
- \immediate\write\@auxout{<relaxxml>\relax}%
- \fi
- \immediate\write\@auxout{%
+ \ifHy@typexml
+ \immediate\closeout\@mainaux
+ \immediate\openout\@mainaux\jobname.aux
+ \immediate\write\@auxout{<relaxxml>\relax}%
+ \fi
+ \immediate\write\@auxout{%
% \end{macrocode}
%
% \begin{macrocode}
@@ -5298,12 +5762,13 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\HyPL@Useless}
-% The |/PageLabels| entry does not make sense,
-% if the absolute page numbers and the page labels are the
-% same. Then \cmd{\HyPL@Labels} has the meaning of \cmd{\HyPL@Useless}.
-% \begin{macrocode}
+% \begin{macro}{\HyPL@Useless}
+% The |/PageLabels| entry does not make sense,
+% if the absolute page numbers and the page labels are the
+% same. Then \cmd{\HyPL@Labels} has the meaning of \cmd{\HyPL@Useless}.
+% \begin{macrocode}
\def\HyPL@Useless{0 << /S /D >> }%
+ \@onelevel@sanitize\HyPL@Useless
% \end{macrocode}
% \end{macro}
%
@@ -5313,6 +5778,7 @@
% driver files.
% \begin{macrocode}
\def\HyPL@SetPageLabels{%
+ \@onelevel@sanitize\HyPL@Labels
\ifx\HyPL@Labels\@empty
\else
\ifx\HyPL@Labels\HyPL@Useless
@@ -5321,8 +5787,8 @@
\fi
\fi
}
-% \end{macrocode}
-% \end{macro}
+% \end{macrocode}
+% \end{macro}
%
% \begin{macro}{\HyPL@EveryPage}
% Without option `pdfpagelabels' we need a dummy for
@@ -5732,8 +6198,7 @@
\ifHy@plainpages
\def\Hy@temp{\arabic{page}}%
\else
- \let\textlatin\@firstofone
- \edef\Hy@temp{\thepage}%
+ \pdfstringdef\Hy@temp{\thepage}%
\fi
\else
\def\Hy@temp{\the\Hy@pagecounter}%
@@ -5767,72 +6232,16 @@
%
% \section{Package ifthen support}
%
-% \begin{macro}{\hypergetpageref}
-% Package ifthen's \cmd{\isodd} does not work with
-% \cmd{\pageref} because of the extra link and the
-% star form. Therefore we need an expandable variant:
-% \begin{macrocode}
-\newcommand*{\hypergetpageref}[1]{%
- \expandafter\Hy@getpageref\csname r@#1\endcsname{#1}%
-}
-\def\Hy@getpageref#1#2{%
- \ifx#1\relax
- 0%
- \protect\G@refundefinedtrue
- \@latex@warning{Reference `#2' on page \thepage\space
- undefined%
- }%
- \else
- \expandafter\Hy@GetSecondArg#1\@nil
- \fi
-}
-\long\def\Hy@GetSecondArg#1#2#3\@nil{#2}
-% \end{macrocode}
-% \end{macro}
+% Since version 6.75a this is done in package nameref.
%
-% \begin{macro}{\hypergetref}
-% The corresponding macro of \cmd{\hypergetpageref} is
-% \cmd{\hypergetref}:
+% For compatibility \cmd{\hypergetref} and
+% \cmd{\hypergetpageref} are still provided.
+% But they do not generate warnings, if the reference is
+% undefined.
% \begin{macrocode}
-\newcommand*{\hypergetref}[1]{%
- \expandafter\Hy@getref\csname r@#1\endcsname{#1}%
-}
-\def\Hy@getref#1#2{%
- \ifx#1\relax
- ??%
- \protect\G@refundefinedtrue
- \@latex@warning{Reference `#2' on page \thepage\space
- undefined%
- }%
- \else
- \expandafter\@car#1\@nil
- \fi
-}
+\def\hypergetref#1{\getrefbykeydefault{#1}{}{??}}
+\def\hypergetpageref#1{\getrefbykeydefault{#1}{page}{0}}
% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\Hy@TE@begingroup}
-% Unfortunately there is no hook in \cmd{\ifthenelse} in order
-% to provide expandable versions without link of \cmd{\ref}
-% and \cmd{\pageref}. As possible target I could only find
-% \cmd{\begingroup}:
-% \begin{macrocode}
-\@ifpackageloaded{ifthen}{%
- \let\HyOrg@ifthenelse\ifthenelse
- \def\ifthenelse{%
- \let\begingroup\Hy@TE@begingroup
- \HyOrg@ifthenelse
- }%
- \let\HyOrg@begingroup\begingroup
- \def\Hy@TE@begingroup{%
- \let\begingroup\HyOrg@begingroup
- \begingroup
- \let\ref\hypergetref
- \let\pageref\hypergetpageref
- }%
-}{}
-% \end{macrocode}
-% \end{macro}
%
% \section{Package titlesec and titletoc support}
%
@@ -5870,12 +6279,13 @@
% Package nameref uses five arguments for the ref system.
% Fix provided by Felix Neubauer (\Email{felix.neubauer@gmx.net}).
% \begin{macrocode}
+\def\Hy@varioref@undefined{{???}{??}{}{}{}}
\@ifpackageloaded{varioref}{%
\def\vref@pagenum#1#2{%
\@ifundefined{r@#2}{%
- \@namedef{r@#2}{{??}{??}{}{}{}}%
+ \expandafter\let\csname r@#2\endcsname\Hy@varioref@undefined
}{}%
- \edef#1{\hypergetpageref{#2}}%
+ \edef#1{\getpagerefnumber{#2}}%
}%
}{}
% \end{macrocode}
@@ -6292,6 +6702,7 @@
}
\long\def\@caption#1[#2]#3{%
\hyper@makecurrent{\@captype}%
+ \def\@currentlabelname{#2}%
\par\addcontentsline{\csname ext@#1\endcsname}{#1}{%
\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}%
}%
@@ -6331,7 +6742,10 @@
\renewcommand{\float@makebox}[1]{%
\HyOrg@float@makebox{%
#1\relax
- \hyper@@anchor{\@currentHref}{\relax}%
+ \begingroup
+ \hyper@makecurrent{\@captype}%
+ \hyper@@anchor{\@currentHref}{\relax}%
+ \endgroup
}%
}%
}{}
@@ -6420,7 +6834,6 @@
}%
\endgroup
% \end{macrocode}
-% \begin{macrocode}
% |\@BIBLABEL| is working around a `feature' of Rev\TeX.
% \begin{macrocode}
\providecommand*{\@BIBLABEL}{\@biblabel}%
@@ -6601,13 +7014,15 @@
\ifx\@empty\@currentlabel
\else
\@bsphack
- \protected@write\@auxout{}{%
- \string\@writefile{brf}{%
- \string\backcite{#1}{%
- {\thepage}{\@currentlabel}{\@currentHref}%
+ \if@filesw
+ \protected@write\@auxout{}{%
+ \string\@writefile{brf}{%
+ \string\backcite{#1}{%
+ {\thepage}{\@currentlabel}{\@currentHref}%
+ }%
}%
}%
- }%
+ \fi
\@esphack
\fi
\fi
@@ -6734,9 +7149,7 @@
\global\let\@begindvi\Hy@begindvi
}
\def\Hy@begindvi{%
- \ifHy@pageanchor
- \@hyperfixhead
- \fi
+ \@hyperfixhead
\HyPL@EveryPage
}
\def\pagenumbering#1{%
@@ -6773,20 +7186,23 @@
% \begin{macrocode}
\def\@hyperfixhead{%
\Hy@DistillerDestFix
- \ifHy@hypertexnames
- \ifHy@plainpages
- \gdef\Hy@TempPageAnchor{\hyper@@anchor{page.\the\c@page}}%
+ \ifHy@pageanchor
+ \ifHy@hypertexnames
+ \ifHy@plainpages
+ \gdef\Hy@TempPageAnchor{\hyper@@anchor{page.\the\c@page}}%
+ \else
+ \begingroup
+ \let\@number\@firstofone
+ \pdfstringdef\@the@H@page{\thepage}%
+ \endgroup
+ \gdef\Hy@TempPageAnchor{\hyper@@anchor{page.\@the@H@page}}%
+ \fi
\else
- \begingroup
- \let\@number\@firstofone
- \let\textlatin\@firstofone
- \xdef\@the@H@page{\thepage}%
- \endgroup
- \gdef\Hy@TempPageAnchor{\hyper@@anchor{page.\@the@H@page}}%
+ \Hy@GlobalStepCount\Hy@pagecounter
+ \gdef\Hy@TempPageAnchor{\hyper@@anchor{page.\the\Hy@pagecounter}}%
\fi
\else
- \Hy@GlobalStepCount\Hy@pagecounter
- \gdef\Hy@TempPageAnchor{\hyper@@anchor{page.\the\Hy@pagecounter}}%
+ \let\Hy@TempPageAnchor\@empty
\fi
\let\H@old@thehead\@thehead
\if^\@thehead^%
@@ -6879,9 +7295,11 @@
{\Hy@toclevel}%
{#1}%
\ifHy@verbose
+ \def\Hy@tempa{#3}%
+ \@onelevel@sanitize\Hy@tempa
\typeout{pdftex: bookmark at \the\inputlineno:
{\csname the#2\endcsname}
- {#3}
+ {\Hy@tempa}
{\@currentHref}%
{\Hy@toclevel}%
{#1}%
@@ -7112,22 +7530,24 @@
\else
\def\@wrindex#1{\@@wrindex#1||\\}
\def\@@wrindex#1|#2|#3\\{%
- \ifx\\#2\\%
- \protected@write\@indexfile{}{%
- \string\indexentry{#1|hyperpage}{\thepage}%
- }%
- \else
- \def\Hy@temp@A{#2}%
- \ifcase0\ifx\Hy@temp@A\HyInd@ParenLeft 1\fi
- \ifx\Hy@temp@A\HyInd@ParenRight 1\fi
- \relax
+ \if@filesw
+ \ifx\\#2\\%
\protected@write\@indexfile{}{%
- \string\indexentry{#1|#2}{\thepage}%
+ \string\indexentry{#1|hyperpage}{\thepage}%
}%
\else
- \protected@write\@indexfile{}{%
- \string\indexentry{#1|#2hyperpage}{\thepage}%
- }%
+ \def\Hy@temp@A{#2}%
+ \ifcase0\ifx\Hy@temp@A\HyInd@ParenLeft 1\fi
+ \ifx\Hy@temp@A\HyInd@ParenRight 1\fi
+ \relax
+ \protected@write\@indexfile{}{%
+ \string\indexentry{#1|#2}{\thepage}%
+ }%
+ \else
+ \protected@write\@indexfile{}{%
+ \string\indexentry{#1|#2hyperpage}{\thepage}%
+ }%
+ \fi
\fi
\fi
\endgroup
@@ -7479,19 +7899,19 @@
\@safe@activesfalse
}
\def\auto@setref#1#2#3{% csname, extract group, refname
- \ifx#1\relax
- \protect\G@refundefinedtrue
- \nfss@text{\reset@font\bfseries ??}%
- \@latex@warning{%
- Reference `#3' on page \thepage \space undefined%
- }%
- \else
+ \ifcase 0\ifx#1\relax 1\fi\ifx#1\Hy@varioref@undefined 1\fi\relax
\edef\@thisref{\expandafter\@fourthoffive#1\@empty\@empty}%
\expandafter\test@reftype\@thisref\\%
\hyper@@link
{\expandafter\@fifthoffive#1}%
{\expandafter\@fourthoffive#1\@empty\@empty}%
{\@currentHtag\expandafter#2#1\@empty\@empty\null}%
+ \else
+ \protect\G@refundefinedtrue
+ \nfss@text{\reset@font\bfseries ??}%
+ \@latex@warning{%
+ Reference `#3' on page \thepage \space undefined%
+ }%
\fi
}
\def\test@reftype#1.#2\\{%
@@ -7534,12 +7954,81 @@
%
% \begin{macrocode}
%</package>
-%<*pdftex>
% \end{macrocode}
+%
% \section{Configuration files}
+%
+% \subsection{PS/PDF strings}
+%
+% Some drivers write PS or PDF strings. These strings are delimited
+% by parentheses, therefore a lonely unmatched parenthesis must be
+% avoided to avoid PS or PDF syntax errors. Also the backslash character
+% itself has to be protected.
+%
+% \begin{macro}{\Hy@pstringdef}
+% Therefore such strings should be passed through |\Hy@pstringdef|.
+% The first argument holds a macro for the result, the second
+% argument is the string that needs protecting.
+% Since version 1.30.0 pdf\TeX\ offers \cs{pdfescapestring}.
+% \begin{macrocode}
+%<*pdftex|dvipdfm|vtex|pdfmarkbase|dviwindo>
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdfescapestring\endcsname\relax
+ \begingroup
+ \catcode`\|=0 %
+ \@makeother\\%
+ |@firstofone{|endgroup
+ |def|Hy@pstringdef#1#2{%
+ |edef#1{#2}%
+ |@onelevel@sanitize#1%
+ |edef#1{|expandafter|Hy@ExchangeBackslash#1\|@nil}%
+ |edef#1{|expandafter|Hy@ExchangeLeftParenthesis#1(|@nil}%
+ |edef#1{|expandafter|Hy@ExchangeRightParenthesis#1)|@nil}%
+ }%
+ |def|Hy@ExchangeBackslash#1\#2|@nil{%
+ #1%
+ |ifx|\#2|\%
+ |else
+ \\%
+ |Hy@ReturnAfterFi{%
+ |Hy@ExchangeBackslash#2|@nil
+ }%
+ |fi
+ }%
+ }
+ \def\Hy@ExchangeLeftParenthesis#1(#2\@nil{%
+ #1%
+ \ifx\\#2\\%
+ \else
+ \@backslashchar(%
+ \Hy@ReturnAfterFi{%
+ \Hy@ExchangeLeftParenthesis#2\@nil
+ }%
+ \fi
+ }
+ \def\Hy@ExchangeRightParenthesis#1)#2\@nil{%
+ #1%
+ \ifx\\#2\\%
+ \else
+ \@backslashchar)%
+ \Hy@ReturnAfterFi{%
+ \Hy@ExchangeRightParenthesis#2\@nil
+ }%
+ \fi
+ }
+\else
+ \def\Hy@pstringdef#1#2{%
+ \edef#1{\pdfescapestring{#2}}%
+ }%
+\fi
+%</pdftex|dvipdfm|vtex|pdfmarkbase|dviwindo>
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{pdftex}
%
% \begin{macrocode}
+%<*pdftex>
% \end{macrocode}
% This driver is for Han The Thanh's \TeX{} variant
% which produces PDF directly. This has new primitives
@@ -7571,11 +8060,21 @@
\typeout{pdftex: define anchor at line \the\inputlineno: #1}%
\fi
\Hy@SaveLastskip
- \pdfdest name {#1}\@pdfview
+ \Hy@pstringdef\Hy@pstringDest{#1}%
+ \Hy@DestName\Hy@pstringDest\@pdfview
\Hy@RestoreLastskip
}
\let\pdf@endanchor\@empty
% \end{macrocode}
+% \begin{macro}{\Hy@DestName}
+% Wrap the call of \verb|\pdfdest name| in \cs{Hy@DestName}.
+% Then it can easier be catched by package |hypdestopt|.
+% \begin{macrocode}
+\def\Hy@DestName#1#2{%
+ \pdfdest name{#1}#2\relax
+}
+% \end{macrocode}
+% \end{macro}
%
% Now the links; the interesting part here is the set of attributes
% which define how the link looks. We probably want to add a border
@@ -7584,21 +8083,25 @@
% add an interface at some point.
% \begin{macrocode}
\providecommand\@pdfborder{0 0 1}
+\providecommand*\@pdfborderstyle{}
\def\Hy@undefinedname{UNDEFINED}
\def\find@pdflink#1#2{%
\leavevmode
\protected@edef\Hy@testname{#2}%
\ifx\Hy@testname\@empty
\let\Hy@testname\Hy@undefinedname
+ \else
+ \Hy@pstringdef\Hy@testname\Hy@testname
\fi
- \pdfstartlink
- attr{%
- /Border[\@pdfborder]%
- /H\@pdfhighlight
- /C[\CurrentBorderColor]%
- }%
- goto name {\Hy@testname}%
- \Hy@colorlink{\csname @#1color\endcsname}%
+ \Hy@StartlinkName{%
+ \Hy@setpdfborder
+ /H\@pdfhighlight
+ /C[\CurrentBorderColor]%
+ }\Hy@testname
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
+}
+\def\Hy@StartlinkName#1#2{%
+ \pdfstartlink attr{#1}goto name{#2}\relax
}
\def\close@pdflink{\Hy@endcolorlink\pdfendlink}
\def\hyper@anchor#1{\new@pdflink{#1}\anchor@spot\pdf@endanchor}
@@ -7614,12 +8117,13 @@
}
\def\CurrentBorderColor{\@linkbordercolor}
\def\hyper@linkurl#1#2{%
- \bgroup
+ \begingroup
+ \Hy@pstringdef\Hy@pstringURI{#2}%
\hyper@chars
\leavevmode
\pdfstartlink
attr{%
- /Border[\@pdfborder]%
+ \Hy@setpdfborder
/H\@pdfhighlight
/C[\@urlbordercolor]%
}%
@@ -7628,28 +8132,31 @@
/A<<%
/Type/Action%
/S/URI%
- /URI(#2)%
+ /URI(\Hy@pstringURI)%
>>%
}%
- \Hy@colorlink{\@urlcolor}#1%
+ \relax
+ \Hy@colorlink\@urlcolor#1%
\close@pdflink
- \egroup
+ \endgroup
}
\def\hyper@linkfile#1#2#3{% anchor text, filename, linkname
- \bgroup
+ \begingroup
+ \Hy@pstringdef\Hy@pstringF{#2}%
+ \Hy@pstringdef\Hy@pstringD{#3}%
\leavevmode
\pdfstartlink
attr{%
- /Border[\@pdfborder]%
+ \Hy@setpdfborder
/H\@pdfhighlight
/C[\@filebordercolor]%
}%
user {%
/Subtype/Link%
/A<<%
- /F(#2)%
+ /F(\Hy@pstringF)%
/S/GoToR%
- \ifHy@newwindow /NewWindow true \fi
+ \ifHy@newwindow /NewWindow true\fi
% \end{macrocode}
% If |#3| is empty, page 0; if its a number, Page number, otherwise
% a named destination.
@@ -7667,66 +8174,81 @@
\ifx\\#3\\%
/D[0 \@pdfstartview]%
\else
- /D(#3)%
+ /D(\Hy@pstringD)%
\fi
>>%
}%
- \Hy@colorlink{\@filecolor}#1%
+ \relax
+ \Hy@colorlink\@filecolor#1%
\close@pdflink
- \egroup
+ \endgroup
}
\def\@hyper@launch run:#1\\#2#3{% filename, anchor text linkname
- \bgroup
+ \begingroup
+ \Hy@pstringdef\Hy@pstringF{#1}%
+ \Hy@pstringdef\Hy@pstringP{#3}%
\leavevmode
\pdfstartlink
attr{%
- /Border[\@pdfborder]%
+ \Hy@setpdfborder
/H\@pdfhighlight
/C[\@runbordercolor]%
}%
user {%
/Subtype/Link%
/A<<%
- /F(#1)%
+ /F(\Hy@pstringF)%
/S/Launch%
- \ifHy@newwindow /NewWindow true \fi
+ \ifHy@newwindow /NewWindow true\fi
\ifx\\#3\\%
\else
- /Win<</P(#3)/F(#1)>>%
+ /Win<</P(\Hy@pstringP)/F(\Hy@pstringF)>>%
\fi
>>%
}%
- \Hy@colorlink{\@filecolor}#2%
+ \relax
+ \Hy@colorlink\@filecolor#2%
\close@pdflink
- \egroup
+ \endgroup
}
% \end{macrocode}
% \begin{macro}{\@pdfproducer}
% \begin{macrocode}
-\def\@pdfproducer{pdfTeX}
-\ifx\eTeXversion\@undefined
-\else
- \ifx\eTeXversion\relax
+\ifx\@pdfproducer\relax
+ \def\@pdfproducer{pdfTeX}
+ \ifx\eTeXversion\@undefined
\else
- \ifnum\eTeXversion>0 %
- \def\@pdfproducer{pdfeTeX}
+ \ifx\eTeXversion\relax
+ \else
+ \ifnum\eTeXversion>0 %
+ \def\@pdfproducer{pdfeTeX}
+ \fi
\fi
\fi
-\fi
-\ifx\pdftexversion\@undefined
-\else
- \ifnum\pdftexversion<100 %
- \edef\@pdfproducer{%
- \@pdfproducer
- \the\pdftexversion.\pdftexrevision
- }
+ \ifx\pdftexversion\@undefined
\else
- \edef\@pdfproducer{%
- \@pdfproducer-%
- \expandafter\@car\the\pdftexversion\@empty\@nil.%
- \expandafter\@cdr\the\pdftexversion\@empty\@nil
- \pdftexrevision
- }
+ \ifnum\pdftexversion<100 %
+ \edef\@pdfproducer{%
+ \@pdfproducer
+ \the\pdftexversion.\pdftexrevision
+ }
+ \else
+ \ifnum\pdftexversion<130 %
+ \edef\@pdfproducer{%
+ \@pdfproducer-%
+ \expandafter\@car\the\pdftexversion\@empty\@nil.%
+ \expandafter\@cdr\the\pdftexversion\@empty\@nil
+ \pdftexrevision
+ }
+ \else
+ \edef\@pdfproducer{%
+ \@pdfproducer-%
+ \expandafter\@car\the\pdftexversion\@empty\@nil.%
+ \expandafter\@cdr\the\pdftexversion\@empty\@nil.%
+ \pdftexrevision
+ }%
+ \fi
+ \fi
\fi
\fi
% \end{macrocode}
@@ -7747,11 +8269,12 @@
}%
\process@me
\fi
+ \Hy@pstringdef\Hy@pstringB{\@baseurl}%
\pdfcatalog{%
- /PageMode \@pdfpagemode
+ /PageMode\@pdfpagemode
\ifx\@baseurl\@empty
\else
- /URI<</Base(\@baseurl)>>
+ /URI<</Base(\Hy@pstringB)>>%
\fi
}%
\ifx\@pdfstartview\@empty
@@ -7777,7 +8300,7 @@
\fi
\ifx\pdf@pagelayout\@empty
\else
- /PageLayout/\pdf@pagelayout\space
+ /PageLayout/\pdf@pagelayout
\fi
}%
}
@@ -7792,13 +8315,26 @@
/Title(\@pdftitle)%
/Subject(\@pdfsubject)%
/Creator(\@pdfcreator)%
- /Producer(\@pdfproducer)%
+ \ifx\@pdfcreationdate\@empty
+ \else
+ /CreationDate(\@pdfcreationdate)%
+ \fi
+ \ifx\@pdfmoddate\@empty
+ \else
+ /ModDate(\@pdfmoddate)%
+ \fi
+ \ifx\@pdfproducer\relax
+ \else
+ /Producer(\@pdfproducer)%
+ \fi
/Keywords(\@pdfkeywords)%
}%
\Hy@DisableOption{pdfauthor}%
\Hy@DisableOption{pdftitle}%
\Hy@DisableOption{pdfsubject}%
\Hy@DisableOption{pdfcreator}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfmoddate}%
\Hy@DisableOption{pdfproducer}%
\Hy@DisableOption{pdfkeywords}%
}
@@ -7995,17 +8531,18 @@
\leavevmode
\pdfstartlink
attr{%
- /Border [\@pdfborder]
- /H \@pdfhighlight\space
- /C [\@menubordercolor]%
+ \Hy@setpdfborder
+ /H \@pdfhighlight
+ /C[\@menubordercolor]%
}%
user{
/Subtype /Link
- /A <<
- /S /Named /N /#1
- >>
+ /A<<%
+ /S/Named/N/#1%
+ >>%
}%
- \Hy@colorlink{\@menucolor}#2\close@pdflink
+ \relax
+ \Hy@colorlink\@menucolor#2\close@pdflink
}
%</pdftex>
%<*hypertex>
@@ -8066,7 +8603,7 @@
\special{html:<a name=\hyper@quote #1\hyper@quote>}%
\endgroup
\Hy@activeanchortrue
- \Hy@colorlink{\@anchorcolor}\anchor@spot\Hy@endcolorlink
+ \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink
\special{html:</a>}%
\Hy@activeanchorfalse
\Hy@RestoreLastskip
@@ -8086,7 +8623,7 @@
}
\def\@urltype{url}
\def\hyper@linkstart#1#2{%
- \Hy@colorlink{\csname @#1color\endcsname}%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
\def\Hy@tempa{#1}%
\ifx\Hy@tempa\@urltype
\special{html:<a href=\hyper@quote#2\hyper@quote>}%
@@ -8118,7 +8655,7 @@
\hyper@chars
\special{html:<a href=\hyper@quote#2\hyper@quote>}%
}%
- \Hy@colorlink{\@urlcolor}#1%
+ \Hy@colorlink\@urlcolor#1%
\@linkdim\ht\@tempboxa
% \end{macrocode}
% Because of the interaction with the dvihps processor, we have to subtract a
@@ -8133,7 +8670,7 @@
\begingroup
\hyper@chars
\special{html:<a href=\hyper@quote#2\hyper@quote>}%
- \Hy@colorlink{\@urlcolor}#1%
+ \Hy@colorlink\@urlcolor#1%
\special{html:</a>}%
\Hy@endcolorlink
\endgroup
@@ -8180,7 +8717,7 @@
\special{mark: #1}%
\endgroup
\Hy@activeanchortrue
- \Hy@colorlink{\@anchorcolor}\anchor@spot\Hy@endcolorlink
+ \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink
\Hy@activeanchorfalse
\Hy@RestoreLastskip
}
@@ -8194,7 +8731,7 @@
\Hy@RestoreLastskip
}
\def\hyper@linkstart#1#2{%
- \Hy@colorlink{\csname @#1color\endcsname}%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
\special{button:
10000000
\number\baselineskip\space
@@ -8215,7 +8752,7 @@
\number\ht\@tempboxa\space
#2%
}%
- \Hy@colorlink{\csname @#1color\endcsname}#3%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname#3%
\Hy@endcolorlink
}%
\@linkdim\ht\@tempboxa
@@ -8227,7 +8764,7 @@
\number\ht\@tempboxa\space
#2%
}%
- \Hy@colorlink{\csname @#1color\endcsname}#3\Hy@endcolorlink
+ \exandafter\Hy@colorlink\csname @#1color\endcsname#3\Hy@endcolorlink
\fi
}
\def\hyper@linkurl#1#2{%
@@ -8244,7 +8781,7 @@
launch: \wwwbrowser\space
#2%
}%
- \Hy@colorlink{\@urlcolor}#1\Hy@endcolorlink
+ \Hy@colorlink\@urlcolor#1\Hy@endcolorlink
}%
\@linkdim\ht\@tempboxa
\advance\@linkdim by -6.5\p@
@@ -8256,7 +8793,7 @@
launch: \wwwbrowser\space
#2%
}%
- \Hy@colorlink{\@urlcolor}#1\Hy@endcolorlink
+ \Hy@colorlink\@urlcolor#1\Hy@endcolorlink
\fi
\endgroup
}
@@ -8274,7 +8811,7 @@
#3,
file: #2%
}%
- \Hy@colorlink{\@filecolor}#1\Hy@endcolorlink
+ \Hy@colorlink\@filecolor#1\Hy@endcolorlink
}%
\@linkdim\ht\@tempboxa
\advance\@linkdim by -6.5\p@
@@ -8286,23 +8823,38 @@
#3,
file: #2
}%
- \Hy@colorlink{\@filecolor}#1\Hy@endcolorlink
+ \Hy@colorlink\@filecolor#1\Hy@endcolorlink
\fi
\endgroup
}
-\def\@pdfproducer{dviwindo + Distiller}
+\ifx\@pdfproducer\relax
+ \def\@pdfproducer{dviwindo + Distiller}
+\fi
\def\PDF@FinishDoc{%
\Hy@UseMaketitleInfos
\special{PDF: Keywords \@pdfkeywords}%
\special{PDF: Title \@pdftitle}%
\special{PDF: Creator \@pdfcreator}%
+ \ifx\@pdfcreationdate\@empty
+ \else
+ \special{PDF: CreationDate \@pdfcreationdate}%
+ \fi
+ \ifx\@pdfmoddate\@empty
+ \else
+ \special{PDF: ModDate \@pdfmoddate}%
+ \fi
\special{PDF: Author \@pdfauthor}%
- \special{PDF: Producer \@pdfproducer}%
+ \ifx\@pdfproducer\relax
+ \else
+ \special{PDF: Producer \@pdfproducer}%
+ \fi
\special{PDF: Subject \@pdfsubject}%
\Hy@DisableOption{pdfauthor}%
\Hy@DisableOption{pdftitle}%
\Hy@DisableOption{pdfsubject}%
\Hy@DisableOption{pdfcreator}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@disableOption{pdfmoddate}%
\Hy@DisableOption{pdfproducer}%
\Hy@DisableOption{pdfkeywords}%
}
@@ -8360,11 +8912,13 @@
\def\@pdfm@mark#1{\special{pdf:#1}}
\def\@pdfm@dest#1{%
\Hy@SaveLastskip
- \@pdfm@mark{dest (#1) [@thispage /\@pdfview\space @xpos @ypos]}%
+ \Hy@pstringdef\Hy@pstringDest{#1}%
+ \@pdfm@mark{dest (\Hy@pstringDest) [@thispage /\@pdfview\space @xpos @ypos]}%
\Hy@RestoreLastskip
}
\providecommand\@pdfview{XYZ}
\providecommand\@pdfborder{0 0 1}
+\providecommand*\@pdfborderstyle{}
\def\hyper@anchor#1{%
\@pdfm@dest{#1}%
}
@@ -8380,12 +8934,14 @@
\protected@edef\Hy@testname{#2}%
\ifx\Hy@testname\@empty
\let\Hy@testname\Hy@undefinedname
+ \else
+ \Hy@pstringdef\Hy@testname\Hy@testname
\fi
\@pdfm@mark{%
bann <<
/Type /Annot
/Subtype /Link
- /Border [\@pdfborder]
+ \Hy@setpdfborder
/C [\csname @#1bordercolor\endcsname]
/A <<
/S /GoTo
@@ -8393,7 +8949,7 @@
>>
>>
}%
- \Hy@colorlink{\csname @#1color\endcsname}%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
}
\def\hyper@linkend{%
\Hy@endcolorlink
@@ -8403,58 +8959,63 @@
\hyper@linkstart{#1}{#2}#3\hyper@linkend
}
\def\hyper@linkfile#1#2#3{%
+ \Hy@pstringdef\Hy@pstringF{#2}%
+ \Hy@pstringdef\Hy@pstringD{#3}%
\@pdfm@mark{%
bann <<
/Type /Annot
/Subtype /Link
- /Border [\@pdfborder]
+ \Hy@setpdfborder
/C [\@filebordercolor]
/A <<
/S /GoToR
- /F (#2)
- /D \ifx\\#3\\[0 \@pdfstartview]\else(#3)\fi\space
+ /F (\Hy@pstringF)
+ /D \ifx\\#3\\[0 \@pdfstartview]\else(\Hy@pstringD)\fi\space
\ifHy@newwindow /NewWindow true \fi
>>
>>%
}%
- \Hy@colorlink{\@filecolor}#1\Hy@endcolorlink
+ \Hy@colorlink\@filecolor#1\Hy@endcolorlink
\@pdfm@mark{eann}%
}
\def\@hyper@launch run:#1\\#2#3{% filename, anchor text linkname
+ \Hy@pstringdef\Hy@pstringF{#1}%
+ \Hy@pstringdef\Hy@pstringP{#3}%
\@pdfm@mark{%
bann <<
/Type /Annot
/Subtype /Link
- /Border [\@pdfborder]
+ \Hy@setpdfborder
/C [\@filebordercolor]
/A <<
/S /Launch
- /F (#1)
+ /F (\Hy@pstringF)
\ifHy@newwindow /NewWindow true \fi
\ifx\\#3\\%
\else
- /Win << /P (#3) /F (#1) >>
+ /Win << /P (\Hy@pstringP) /F (\Hy@pstringF) >>
\fi
>>
>>%
}%
- \Hy@colorlink{\@filecolor}#2\Hy@endcolorlink
+ \Hy@colorlink\@filecolor#2\Hy@endcolorlink
\@pdfm@mark{eann}%
}
\def\hyper@linkurl#1#2{%
+ \Hy@pstringdef\Hy@pstringURI{#2}%
\@pdfm@mark{%
bann <<
/Type /Annot
/Subtype /Link
- /Border [\@pdfborder]
+ \Hy@setpdfborder
/C [\@urlbordercolor]
/A <<
/S /URI
- /URI (#2)
+ /URI (\Hy@pstringURI)
>>
>>%
}%
- \Hy@colorlink{\@urlcolor}#1\Hy@endcolorlink
+ \Hy@colorlink\@urlcolor#1\Hy@endcolorlink
\@pdfm@mark{eann}%
}
\def\Acrobatmenu#1#2{%
@@ -8466,14 +9027,16 @@
/S /Named
/N /#1
>>
- /Border [\@pdfborder]
+ \Hy@setpdfborder
/C [\@menubordercolor]
>>%
}%
- \Hy@colorlink{\@menucolor}#2\Hy@endcolorlink
+ \Hy@colorlink\@menucolor#2\Hy@endcolorlink
\@pdfm@mark{eann}%
}
-\def\@pdfproducer{dvipdfm}
+\ifx\@pdfproducer\relax
+ \def\@pdfproducer{dvipdfm}
+\fi
\def\PDF@FinishDoc{%
\Hy@UseMaketitleInfos
\@pdfm@mark{%
@@ -8481,8 +9044,19 @@
/Title (\@pdftitle)
/Subject (\@pdfsubject)
/Creator (\@pdfcreator)
+ \ifx\@pdfcreationdate\@empty
+ \else
+ /CreationDate(\@pdfcreationdate) %
+ \fi
+ \ifx\@pdfmoddate\@empty
+ \else
+ /ModDate(\@pdfmoddate) %
+ \fi
/Author (\@pdfauthor)
- /Producer (\@pdfproducer)
+ \ifx\@pdfproducer\relax
+ \else
+ /Producer (\@pdfproducer)
+ \fi
/Keywords (\@pdfkeywords)
>>%
}%
@@ -8490,6 +9064,8 @@
\Hy@DisableOption{pdftitle}%
\Hy@DisableOption{pdfsubject}%
\Hy@DisableOption{pdfcreator}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfmoddate}%
\Hy@DisableOption{pdfproducer}%
\Hy@DisableOption{pdfkeywords}%
}
@@ -8508,6 +9084,7 @@
/NonFullScreenPageMode\@pdfnonfullscreenpagemode
\fi
}%
+ \Hy@pstringdef\Hy@pstringB{\@baseurl}%
\@pdfm@mark{%
docview <<%
\ifx\@pdfstartview\@empty
@@ -8516,7 +9093,7 @@
\fi
\ifx\@baseurl\@empty
\else
- /URI<</Base(\@baseurl)>>%
+ /URI<</Base(\Hy@pstringB)>>%
\fi
/PageMode \@pdfpagemode
\ifx\Hy@temp\@empty
@@ -8681,7 +9258,8 @@
% Older versions of VTeX require |xyz| in lower case.
% \begin{macrocode}
\providecommand\@pdfview{xyz}
-\providecommand\@pdfborder{0 0 1}%
+\providecommand\@pdfborder{0 0 1}
+\providecommand*\@pdfborderstyle{}
\def\CurrentBorderColor{\@linkbordercolor}
\def\hyper@anchor#1{%
\Hy@SaveLastskip
@@ -8691,7 +9269,7 @@
\special{!aname #1;\@pdfview}%
\endgroup
\Hy@activeanchortrue
- \Hy@colorlink{\@anchorcolor}\anchor@spot\Hy@endcolorlink
+ \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink
\Hy@activeanchorfalse
\Hy@RestoreLastskip
}
@@ -8710,13 +9288,14 @@
\def\@urltype{url}
\def\Hy@undefinedname{UNDEFINED}
\def\hyper@linkstart#1#2{%
- \Hy@colorlink{\csname @#1color\endcsname}%
+ \Hy@pstringdef\Hy@pstringURI{#2}%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
\edef\CurrentBorderColor{\csname @#1bordercolor\endcsname}%
\def\Hy@tempa{#1}%
\ifx\Hy@tempa\@urltype
\special{!%
- aref <u=/Type /Action /S /URI /URI (#2)>;%
- a=</Border [\@pdfborder] /C [\CurrentBorderColor]>%
+ aref <u=/Type /Action /S /URI /URI (\Hy@pstringURI)>;%
+ a=<\Hy@setpdfborder /C [\CurrentBorderColor]>%
}%
\else
\protected@edef\Hy@testname{#2}%
@@ -8725,7 +9304,7 @@
\fi
\special{!%
aref \Hy@testname;%
- a=</Border [\@pdfborder] /C [\CurrentBorderColor]>%
+ a=<\Hy@setpdfborder /C [\CurrentBorderColor]>%
}%
\fi
}
@@ -8739,20 +9318,21 @@
aref <%
\ifnum\Hy@VTeXversion>753 \ifHy@newwindow n\fi\fi
f=#2>#3;%
- a=</Border [\@pdfborder] /C [\@filebordercolor]>%
+ a=<\Hy@setpdfborder /C [\@filebordercolor]>%
}%
- \Hy@colorlink{\@filecolor}#1\Hy@endcolorlink
+ \Hy@colorlink\@filecolor#1\Hy@endcolorlink
\special{!endaref}%
}
\def\hyper@linkurl#1#2{%
\begingroup
+ \Hy@pstringdef\Hy@pstringURI{#2}%
\hyper@chars
\leavevmode
\special{!%
- aref <u=/Type /Action /S /URI /URI (#2)>;%
- a=</Border [\@pdfborder] /C [\@urlbordercolor]>%
+ aref <u=/Type /Action /S /URI /URI (\Hy@pstringURI)>;%
+ a=<\Hy@setpdfborder /C [\@urlbordercolor]>%
}%
- \Hy@colorlink{\@urlcolor}#1\Hy@endcolorlink
+ \Hy@colorlink\@urlcolor#1\Hy@endcolorlink
\special{!endaref}%
\endgroup
}
@@ -8765,36 +9345,38 @@
\fi
\special{!%
aref \Hy@testname;%
- a=</Border [\@pdfborder] /C [\CurrentBorderColor]>%
+ a=<\Hy@setpdfborder /C [\CurrentBorderColor]>%
}%
- \Hy@colorlink{\csname @#1color\endcsname}#3\Hy@endcolorlink
+ \expandafter\Hy@colorlink\csname @#1color\endcsname#3\Hy@endcolorlink
\special{!endaref}%
}
\def\hyper@image#1#2{%
\hyper@linkurl{#2}{#1}%
}
\def\@hyper@launch run:#1\\#2#3{%
+ \Hy@pstringdef\Hy@pstringF{#1}%
+ \Hy@pstringdef\Hy@pstringP{#3}%
\leavevmode
\special{!aref
<u=%
/Type /Action
/S /Launch
- /F (#1)
+ /F (\Hy@pstringF)
\ifHy@newwindow /NewWindow true \fi
- \ifx\\#3\\\else /Win << /F (#1) /P (#3) >> \fi%
+ \ifx\\#3\\\else /Win << /F (\Hy@pstringF) /P (\Hy@pstringP) >> \fi%
>;%
- a=</Border [\@pdfborder] /C [\@runbordercolor]>%
+ a=<\Hy@setpdfborder /C [\@runbordercolor]>%
}%
- \Hy@colorlink{\@filecolor}#2\Hy@endcolorlink
+ \Hy@colorlink\@filecolor#2\Hy@endcolorlink
\special{!endaref}%
}
\def\Acrobatmenu#1#2{%
\leavevmode
\special{!%
aref <u=/S /Named /N /#1>;%
- a=</Border [\@pdfborder] /C [\@menubordercolor]>%
+ a=<\Hy@setpdfborder /C [\@menubordercolor]>%
}%
- \Hy@colorlink{\@menucolor}#2\Hy@endcolorlink
+ \Hy@colorlink\@menucolor#2\Hy@endcolorlink
\special{!endaref}%
}
% \end{macrocode}
@@ -9036,34 +9618,36 @@
% 5 & MacOS/X\\
% \end{tabular}
% \begin{macrocode}
-\def\@pdfproducer{VTeX}
-\ifnum\Hy@VTeXversion>\z@
- \count@\VTeXversion
- \divide\count@ 100
- \edef\@pdfproducer{\@pdfproducer\space v\the\count@}
- \multiply\count@ -100
- \advance\count@\VTeXversion
- \edef\@pdfproducer{%
- \@pdfproducer
- .\ifnum\count@<10 0\fi\the\count@
- \ifx\VTeXOS\@undefined\else
- \ifnum\VTeXOS>0 %
- \ifnum\VTeXOS<6 %
- \space(%
- \ifcase\VTeXOS
- \or Windows\or Linux\or OS/2\or MacOS\or MacOS/X%
+\ifx\@pdfproducer\relax
+ \def\@pdfproducer{VTeX}
+ \ifnum\Hy@VTeXversion>\z@
+ \count@\VTeXversion
+ \divide\count@ 100
+ \edef\@pdfproducer{\@pdfproducer\space v\the\count@}
+ \multiply\count@ -100
+ \advance\count@\VTeXversion
+ \edef\@pdfproducer{%
+ \@pdfproducer
+ .\ifnum\count@<10 0\fi\the\count@
+ \ifx\VTeXOS\@undefined\else
+ \ifnum\VTeXOS>0 %
+ \ifnum\VTeXOS<6 %
+ \space(%
+ \ifcase\VTeXOS
+ \or Windows\or Linux\or OS/2\or MacOS\or MacOS/X%
+ \fi
+ )%
\fi
- )%
\fi
\fi
- \fi
- ,\space
- \ifnum\OpMode=\@ne PDF\else PS\fi
- \space backend%
- \ifx\gexmode\@undefined\else
- \ifnum\gexmode>\z@\space with GeX\fi
- \fi
- }
+ ,\space
+ \ifnum\OpMode=\@ne PDF\else PS\fi
+ \space backend%
+ \ifx\gexmode\@undefined\else
+ \ifnum\gexmode>\z@\space with GeX\fi
+ \fi
+ }
+ \fi
\fi
% \end{macrocode}
%
@@ -9124,12 +9708,17 @@
\special{!pdfinfo t=<\@pdftitle>}%
\special{!pdfinfo s=<\@pdfsubject>}%
\special{!pdfinfo c=<\@pdfcreator>}%
- \special{!pdfinfo r=<\@pdfproducer>}%
+ \ifx\@pdfproducer\relax
+ \else
+ \special{!pdfinfo r=<\@pdfproducer>}%
+ \fi
\special{!pdfinfo k=<\@pdfkeywords>}%
\Hy@DisableOption{pdfauthor}%
\Hy@DisableOption{pdftitle}%
\Hy@DisableOption{pdfsubject}%
\Hy@DisableOption{pdfcreator}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfmoddate}%
\Hy@DisableOption{pdfproducer}%
\Hy@DisableOption{pdfkeywords}%
}
@@ -9232,7 +9821,7 @@
\def\hyper@anchorstart#1{\Hy@activeanchortrue}
\def\hyper@anchorend{\Hy@activeanchorfalse}
\def\hyper@linkstart#1#2{%
- \Hy@colorlink{\csname @#1color\endcsname}%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
\xdef\hyper@currentanchor{#2}%
}
\def\hyper@linkend{%
@@ -9264,7 +9853,7 @@
\else
\leavevmode\hbox\bgroup
\fi
- \Hy@colorlink{\csname @#1color\endcsname}%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
\literalps@out{H.S}%
\xdef\hyper@currentanchor{#2}%
\gdef\hyper@currentlinktype{#1}%
@@ -9279,6 +9868,7 @@
Dest=\hyper@currentanchor,%
AcroHighlight=\@pdfhighlight,%
Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
Color=\Hy@temp,%
Raw=H.B%
}%
@@ -9384,6 +9974,7 @@
linktype={#1},%
AcroHighlight=\@pdfhighlight,%
Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
Color=\Hy@temp,%
Dest=\Hy@testname
}%
@@ -9394,6 +9985,7 @@
linktype={#1},%
AcroHighlight=\@pdfhighlight,%
Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
pdfmark=/ANN,%
Subtype=/Link,%
Dest=\Hy@testname
@@ -9404,19 +9996,41 @@
\newtoks\pdf@docset
\def\PDF@FinishDoc{%
\Hy@UseMaketitleInfos
- \pdfmark{%
+ \let\Hy@temp\@empty
+ \ifx\@pdfcreationdate\@empty
+ \else
+ \def\Hy@temp{CreationDate=\@pdfcreationdate,}%
+ \fi
+ \ifx\@pdfmoddate\@empty
+ \else
+ \expandafter\def\expandafter\Hy@temp\expandafter{%
+ \Hy@temp
+ ModDate=\@pdfmoddate,%
+ }%
+ \fi
+ \ifx\@pdfproducer\relax
+ \else
+ \expandafter\def\expandafter\Hy@temp\expandafter{%
+ \Hy@temp
+ Producer=\@pdfproducer,%
+ }%
+ \fi
+ \expandafter
+ \pdfmark\expandafter{%
+ \Hy@temp
pdfmark=/DOCINFO,%
Title=\@pdftitle,%
Subject=\@pdfsubject,%
Creator=\@pdfcreator,%
Author=\@pdfauthor,%
- Producer=\@pdfproducer,%
Keywords=\@pdfkeywords
}%
\Hy@DisableOption{pdfauthor}%
\Hy@DisableOption{pdftitle}%
\Hy@DisableOption{pdfsubject}%
\Hy@DisableOption{pdfcreator}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfmoddate}%
\Hy@DisableOption{pdfproducer}%
\Hy@DisableOption{pdfkeywords}%
}
@@ -9443,6 +10057,7 @@
/NonFullScreenPageMode\@pdfnonfullscreenpagemode
\fi
}%
+ \Hy@pstringdef\Hy@pstringB{\@baseurl}%
\pdfmark{%
pdfmark=/PUT,%
Raw={%
@@ -9457,7 +10072,7 @@
\fi
\ifx\@baseurl\@empty
\else
- /URI << /Base (\@baseurl) >>%
+ /URI << /Base (\Hy@pstringB) >>%
\fi
>>%
}%
@@ -9476,12 +10091,16 @@
% values.
%
% \begin{macrocode}
+\newif\ifHy@pdfmarkerror
\def\pdfmark{\@ifnextchar[{\pdfmark@}{\pdfmark@[]}}
\def\pdfmark@[#1]#2{%
- \edef\@processme{\noexpand\pdf@toks={\the\pdf@defaulttoks}}%
- \@processme
- \let\pdf@type\relax
- \setkeys{PDF}{#2}%
+ \Hy@pdfmarkerrorfalse
+ \edef\@processme{\noexpand\pdf@toks={\the\pdf@defaulttoks}}%
+ \@processme
+ \let\pdf@type\relax
+ \setkeys{PDF}{#2}%
+ \ifHy@pdfmarkerror
+ \else
\ifx\pdf@type\relax
\Hy@WarningNoLine{no pdfmark type specified in #2!!}%
\ifx\\#1\\\relax\else\pdf@rect{#1}\fi
@@ -9490,28 +10109,49 @@
%<pdfmarkbase> \literalps@out{[\the\pdf@toks\space\pdf@type\space pdfmark}%
%<dvipdf> \literalps@out{/ANN >>}%
\else
- \Hy@colorlink{\@ifundefined{@\pdf@linktype color}%
- {\@linkcolor}%
- {\csname @\pdf@linktype color\endcsname}}%
+ \@ifundefined{@\pdf@linktype color}{%
+ \Hy@colorlink\@linkcolor
+ }{%
+ \expandafter\Hy@colorlink
+ \csname @\pdf@linktype color\endcsname
+ }%
\pdf@rect{#1}%
%<pdfmarkbase> \literalps@out{[\the\pdf@toks\space\pdf@type\space pdfmark}%
%<dvipdf> \literalps@out{/ANN >>}%
\Hy@endcolorlink
\fi
\fi
+ \fi
}
% \end{macrocode}
% The complicated bit is working out the right enclosing rectangle of
% some piece of \TeX\ text, needed by the /Rect key. This solution originates
% with Toby Thain (\texttt{tobyt@netspace.net.au}).
+%
+% For the case breaklinks is enabled, I have added two hooks,
+% the first one for package setouterhbox, it provides
+% a hopefully better method without setting the text twice.
+% \begin{quote}
+% \verb|\usepackage[hyperref]{setouterhbox}|
+% \end{quote}
+% With the second hook, also you can set the text twice, e.g.:
+% \begin{quote}
+% \verb|\long\def\Hy@setouterhbox#1#2{\long\def\my@temp{#2}}|\\
+% \verb|\def\Hy@breaklinksunhbox#1{\my@temp}|
+% \end{quote}
% \begin{macrocode}
\newsavebox{\pdf@box}
+\providecommand{\Hy@setouterhbox}{\sbox}
+\providecommand{\Hy@breaklinksunhbox}{\unhbox}
\def\pdf@rect#1{%
%<dvipdf> \literalps@out{/ANN \pdf@type\space\the\pdf@toks\space <<}#1%
\leavevmode
- \sbox\pdf@box{#1}%
+ \ifHy@breaklinks
+ \Hy@setouterhbox\pdf@box{#1}%
+ \else
+ \sbox\pdf@box{#1}%
+ \fi
\dimen@\ht\pdf@box
- \leavevmode
\ifdim\dp\pdf@box=\z@
\literalps@out{H.S}%
\else
@@ -9522,7 +10162,12 @@
% the saved box like this, which saves executing it twice, which can
% mess up counters etc (thanks DPC\ldots).
% \begin{macrocode}
- \ifHy@breaklinks\unhbox\else\box\fi\pdf@box
+ \ifHy@breaklinks
+ \expandafter\Hy@breaklinksunhbox
+ \else
+ \expandafter\box
+ \fi
+ \pdf@box
% \end{macrocode}
% but if it can have multiple paragraphs you'd need one of these,
% but in that case the measured box size would be wrong anyway.
@@ -9571,7 +10216,21 @@
% parameter is a name
\define@key{PDF}{Action}{\pdf@addtoks{#1}{Action}}
% parameter is a array
-\define@key{PDF}{Border}{\pdf@addtoks{[#1]}{Border}}
+\define@key{PDF}{Border}{%
+ \edef\Hy@temp{#1}%
+ \ifx\Hy@temp\@empty
+ \else
+ \pdf@addtoks{[#1]}{Border}%
+ \fi
+}
+% parameter is a dictionary
+\define@key{PDF}{BorderStyle}{%
+ \edef\Hy@temp{#1}%
+ \ifx\Hy@temp\@empty
+ \else
+ \pdf@addtoks{<<#1>>}{BS}%
+ \fi
+}
% parameter is a array
\define@key{PDF}{Color}{\pdf@addtoks{[#1]}{Color}}
% parameter is a string
@@ -9586,16 +10245,22 @@
\define@key{PDF}{DataSource}{\pdf@addtoks{(#1)}{DataSource}}
% parameter is a destination
\define@key{PDF}{Dest}{%
- \begingroup
- \edef\x{#1}%
- \expandafter\endgroup
- \ifx\x\@empty\else\pdf@addtoks{(#1) cvn}{Dest}\fi
+ \Hy@pstringdef\Hy@pstringDest{#1}%
+ \ifx\Hy@pstringDest\@empty
+ \Hy@pdfmarkerrortrue
+ \Hy@Warning{Destination with empty name ignored}%
+ \else
+ \pdf@addtoks{(\Hy@pstringDest) cvn}{Dest}%
+ \fi
}
\define@key{PDF}{DestAnchor}{%
- \begingroup
- \edef\x{#1}%
- \expandafter\endgroup
- \ifx\x\@empty\else\pdf@addtoks{(#1) cvn}{Dest}\fi
+ \Hy@pstringdef\Hy@pstringDest{#1}%
+ \ifx\Hy@pstringDest\@empty
+ \Hy@pdfmarkerrortrue
+ \Hy@Warning{Destination with empty name ignored}%
+ \else
+ \pdf@addtoks{(\Hy@pstringDest) cvn}{Dest}%
+ \fi
}
% parameter is a string
\define@key{PDF}{Dir}{\pdf@addtoks{(#1)}{Dir}}
@@ -9642,8 +10307,9 @@
% These are the keys used in the DOCINFO section.
% \begin{macrocode}
\define@key{PDF}{Author}{\pdf@addtoks{(#1)}{Author}}
-\define@key{PDF}{CreationDate}{\pdf@addtoks{(#1)}{CreationDate}}
\define@key{PDF}{Creator}{\pdf@addtoks{(#1)}{Creator}}
+\define@key{PDF}{CreationDate}{\pdf@addtoks{(#1)}{CreationDate}}
+\define@key{PDF}{ModDate}{\pdf@addtoks{(#1)}{ModDate}}
\define@key{PDF}{Producer}{\pdf@addtoks{(#1)}{Producer}}
\define@key{PDF}{Subject}{\pdf@addtoks{(#1)}{Subject}}
\define@key{PDF}{Keywords}{\pdf@addtoks{(#1)}{Keywords}}
@@ -9658,6 +10324,7 @@
pdfmark=/ANN,%
AcroHighlight=\@pdfhighlight,%
Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
Action={<< /Subtype /Named /N /#1 >>},%
Subtype=/Link%
}%
@@ -9667,14 +10334,30 @@
% \begin{macrocode}
\def\PDFNextPage{\@ifnextchar[{\PDFNextPage@}{\PDFNextPage@[]}}
\def\PDFNextPage@[#1]#2{%
- \pdfmark[{#2}]{#1,Border=\@pdfborder,Color=.2 .1 .5,
- pdfmark=/ANN,Subtype=/Link,Page=/Next}}
+ \pdfmark[{#2}]{%
+ #1,%
+ Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
+ Color=.2 .1 .5,
+ pdfmark=/ANN,%
+ Subtype=/Link,%
+ Page=/Next%
+ }%
+}
\def\PDFPreviousPage{%
\@ifnextchar[{\PDFPreviousPage@}{\PDFPreviousPage@[]}%
}
\def\PDFPreviousPage@[#1]#2{%
- \pdfmark[{#2}]{#1,Border=\@pdfborder,Color=.4 .4 .1,
- pdfmark=/ANN,Subtype=/Link,Page=/Prev}}
+ \pdfmark[{#2}]{%
+ #1,%
+ Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
+ Color=.4 .4 .1,%
+ pdfmark=/ANN,%
+ Subtype=/Link,%
+ Page=/Prev%
+ }%
+}
\def\PDFOpen#1{%
\pdfmark{#1,pdfmark=/DOCVIEW}%
}
@@ -9694,6 +10377,7 @@
Page={#2},%
AcroHighlight=\@pdfhighlight,%
Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
Color=\@pagebordercolor,%
pdfmark=/ANN,%
Subtype=/Link%
@@ -9711,6 +10395,7 @@
% \begin{macrocode}
\def\hyper@linkurl#1#2{%
\begingroup
+ \Hy@pstringdef\Hy@pstringURI{#2}%
\hyper@chars
\leavevmode
%<*pdfmarkbase>
@@ -9719,8 +10404,9 @@
linktype=url,%
AcroHighlight=\@pdfhighlight,%
Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
Color=\@urlbordercolor,%
- Action={<< /Subtype /URI /URI (#2) >>},%
+ Action={<< /Subtype /URI /URI (\Hy@pstringURI) >>},%
Subtype=/Link%
}%
%</pdfmarkbase>
@@ -9730,14 +10416,17 @@
linktype=url,%
AcroHighlight=\@pdfhighlight,%
Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
Color=\@urlbordercolor,%
- Action={URI /URI (#2)}%
+ Action={URI /URI <\Hy@hstringURI>}%
}%
%</dvipdf>
\endgroup
}
\def\hyper@linkfile#1#2#3{%
\begingroup
+ \Hy@pstringdef\Hy@pstringF{#2}%
+ \Hy@pstringdef\Hy@pstringD{#3}%
\leavevmode
%<*pdfmark>
\pdfmark[{#1}]{%
@@ -9745,13 +10434,14 @@
Subtype=/Link,
AcroHighlight=\@pdfhighlight,%
Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
linktype=file,%
Color=\@filebordercolor,%
Action={<<
/S /GoToR
\ifHy@newwindow /NewWindow true \fi
- /F (#2)
- /D \ifx\\#3\\[0 \@pdfstartview]\else(#3) cvn\fi
+ /F (\Hy@pstringF)
+ /D \ifx\\#3\\[0 \@pdfstartview]\else(\Hy@pstringD) cvn\fi
>>}%
}%
%</pdfmark>
@@ -9761,12 +10451,13 @@
linktype=file,
AcroHighlight=\@pdfhighlight,%
Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
Color=\@filebordercolor,%
Action={<<
/S /GoToR
\ifHy@newwindow /NewWindow true \fi
- /F (#2)
- /D \ifx\\#3\\[0 \@pdfstartview]\else(#3) cvn\fi
+ /F (\Hy@pstringF)
+ /D \ifx\\#3\\[0 \@pdfstartview]\else(\Hy@pstringD) cvn\fi
>>}%
}%
%</dvipdf>
@@ -9774,6 +10465,8 @@
}
\def\@hyper@launch run:#1\\#2#3{%
\begingroup
+ \Hy@pstringdef\Hy@pstringF{#1}%
+ \Hy@pstringdef\Hy@pstringP{#3}%
\leavevmode
%<*pdfmark>
\pdfmark[{#2}]{%
@@ -9781,13 +10474,17 @@
Subtype=/Link,%
AcroHighlight=\@pdfhighlight,%
Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
linktype=file,%
Color=\@filebordercolor,%
Action={<<
/S /Launch
\ifHy@newwindow /NewWindow true \fi
- /F (#1)
- \ifx\\#3\\\else /Win << /P (#3) /F (#1) >> \fi
+ /F (\Hy@pstringF)
+ \ifx\\#3\\%
+ \else
+ /Win << /P (\Hy@pstringP) /F (\Hy@pstringF) >>
+ \fi
>>}%
}%
%</pdfmark>
@@ -9797,12 +10494,16 @@
linktype=file,%
AcroHighlight=\@pdfhighlight,%
Border=\@pdfborder,%
+ BorderStyle=\@pdfborderstyle,%
Color=\@filebordercolor,%
Action={<<
/S /GoToR
\ifHy@newwindow /NewWindow true \fi
- /F (#1)
- /D \ifx\\#3\\[0 \@pdfstartview]\else(#3)\fi
+ /F (\Hy@pstringF)
+ \ifx\\#3\\%
+ \else
+ /Win << /P (\Hy@pstringP) /F (\Hy@pstringF) >>
+ \fi
>>}%
}%
%</dvipdf>
@@ -9825,10 +10526,13 @@
% \begin{macrocode}
%<*dvips>
\input{pdfmark.def}%
-\def\@pdfproducer{dvips + Distiller}
+\ifx\@pdfproducer\relax
+ \def\@pdfproducer{dvips + Distiller}
+\fi
\def\literalps@out#1{\special{ps:SDict begin #1 end}}%
\def\headerps@out#1{\special{! #1}}%
\providecommand\@pdfborder{0 0 12}
+\providecommand*\@pdfborderstyle{}
\providecommand\@pdfview{XYZ}
\providecommand\@pdfviewparams{ H.V}
% \end{macrocode}
@@ -9910,9 +10614,14 @@
currentpoint exch pop vsize 72 sub
exch DvipsToPDF sub /pdf@voff exch def
} def
- systemdict
- /pdfmark known not
- {userdict /pdfmark systemdict /cleartomark get put} if
+ systemdict /pdfmark known
+ {
+ userdict /?pdfmark systemdict /exec get put
+ }{
+ userdict /?pdfmark systemdict /pop get put
+ userdict /pdfmark systemdict /cleartomark get put
+ }
+ ifelse
}%
}
\AfterBeginDocument{%
@@ -9940,14 +10649,17 @@
% \begin{macrocode}
%<*vtexpdfmark>
\input{pdfmark.def}%
-\ifnum\OpMode=\@ne
- \def\@pdfproducer{VTeX}
-\else
- \def\@pdfproducer{VTeX + Distiller}
+\ifx\@pdfproducer\relax
+ \ifnum\OpMode=\@ne
+ \def\@pdfproducer{VTeX}
+ \else
+ \def\@pdfproducer{VTeX + Distiller}
+ \fi
\fi
\def\literalps@out#1{\special{pS:#1}}%
\def\headerps@out#1{\immediate\special{pS:#1}}%
\providecommand\@pdfborder{0 0 1}
+\providecommand*\@pdfborderstyle{}
\providecommand\@pdfview{XYZ}
\providecommand\@pdfviewparams{ H.V}
% \end{macrocode}
@@ -10015,6 +10727,14 @@
currentpoint exch pop vsize 72 sub add
/pdf@voff exch def
} def
+ systemdict /pdfmark known
+ {
+ userdict /?pdfmark systemdict /exec get put
+ }{
+ userdict /?pdfmark systemdict /pop get put
+ userdict /pdfmark systemdict /cleartomark get put
+ }
+ ifelse
}%
}
%</vtexpdfmark>
@@ -10102,13 +10822,23 @@
end
}def\Hy@ps@CR
__pdfmark__ not{/pdfmark /betterpdfmark load def}if
+ systemdict /pdfmark known
+ {
+ userdict /?pdfmark systemdict /load get put
+ }{
+ userdict /?pdfmark systemdict /pop get put
+ }
+ ifelse
}% end of \headerps@out
}% end of \AtBeginDvi
%
\input{pdfmark.def}%
%
-\def\@pdfproducer{Textures + Distiller}%
+\ifx\@pdfproducer\relax
+ \def\@pdfproducer{Textures + Distiller}%
+\fi
\providecommand\@pdfborder{0 0 1}
+\providecommand*\@pdfborderstyle{}
\providecommand\@pdfview{XYZ}
\providecommand\@pdfviewparams{ H.V}
%
@@ -10189,7 +10919,7 @@
\special{html:<a name=\hyper@quote #1\hyper@quote>}%
\endgroup
\Hy@activeanchortrue
- \Hy@colorlink{\@anchorcolor}\anchor@spot\Hy@endcolorlink
+ \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink
\special{html:</a>}%
\Hy@activeanchorfalse
\Hy@RestoreLastskip
@@ -10209,7 +10939,7 @@
}
\def\@urltype{url}
\def\hyper@linkstart#1#2{%
- \Hy@colorlink{\csname @#1color\endcsname}%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
\def\Hy@tempa{#1}%
\ifx\Hy@tempa\@urltype
\special{html:<a href=\hyper@quote#2\hyper@quote>}%
@@ -10236,7 +10966,7 @@
\hyper@chars
\special{html:<a href=\hyper@quote#2\hyper@quote>}%
}%
- \Hy@colorlink{\@urlcolor}#1%
+ \Hy@colorlink\@urlcolor#1%
\@linkdim\ht\@tempboxa
\advance\@linkdim by -6.5\p@
\raise\@linkdim\hbox{\special{html:</a>}}%
@@ -10245,7 +10975,7 @@
\begingroup
\hyper@chars
\special{html:<a href=\hyper@quote#2\hyper@quote>}%
- \Hy@colorlink{\@urlcolor}#1%
+ \Hy@colorlink\@urlcolor#1%
\special{html:</a>}%
\Hy@endcolorlink
\endgroup
@@ -10269,8 +10999,11 @@
% |\special| commands.
%<*dvipsone>
\providecommand\@pdfborder{0 0 65781}
+\providecommand*\@pdfborderstyle{}
\input{pdfmark.def}%
-\def\@pdfproducer{dvipsone + Distiller}
+\ifx\@pdfproducer\relax
+ \def\@pdfproducer{dvipsone + Distiller}
+\fi
\def\literalps@out#1{\special{ps:#1}}%
\def\headerps@out#1{\special{! #1}}%
\def\PDF@FinishDoc{%
@@ -10278,13 +11011,26 @@
\special{PDF: Keywords \@pdfkeywords}%
\special{PDF: Title \@pdftitle}%
\special{PDF: Creator \@pdfcreator}%
+ \ifx\@pdfcreationdate\@empty
+ \else
+ \special{PDF: CreationDate \@pdfcreationdate}%
+ \fi
+ \ifx\@pdfmoddate\@empty
+ \else
+ \special{PDF: ModDate \@pdfmoddate}%
+ \fi
\special{PDF: Author \@pdfauthor}%
- \special{PDF: Producer \@pdfproducer}%
+ \ifx\@pdfproducer\relax
+ \else
+ \special{PDF: Producer \@pdfproducer}%
+ \fi
\special{PDF: Subject \@pdfsubject}%
\Hy@DisableOption{pdfauthor}%
\Hy@DisableOption{pdftitle}%
\Hy@DisableOption{pdfsubject}%
\Hy@DisableOption{pdfcreator}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfmoddate}%
\Hy@DisableOption{pdfproducer}%
\Hy@DisableOption{pdfkeywords}%
}
@@ -10311,6 +11057,7 @@
/NonFullScreenPageMode\@pdfnonfullscreenpagemode
\fi
}%
+ \Hy@pstringdef\Hy@pstringB{\@baseurl}%
\pdfmark{%
pdfmark=/PUT,%
Raw={%
@@ -10325,7 +11072,7 @@
\fi
\ifx\@baseurl\@empty
\else
- /URI << /Base (\@baseurl) >>%
+ /URI << /Base (\Hy@pstringB) >>%
\fi
>>%
}%
@@ -10383,13 +11130,20 @@
currentpoint exch pop DvipsToPDF /pdf@voff exch def
} def
systemdict
- /pdfmark known not
- {userdict /pdfmark systemdict /cleartomark get put} if
+ /pdfmark known
+ {
+ userdict /?pdfmark /exec load put
+ }{
+ userdict /?pdfmark /pop load put
+ userdict /pdfmark systemdict /cleartomark get put
+ }
+ ifelse
}
%</dvipsone>
%<*dvipdf>
\def\literalps@out#1{\special{pdf: #1}}%
\providecommand\@pdfborder{0 0 1}
+\providecommand*\@pdfborderstyle{}
%</dvipdf>
% \end{macrocode}
%
@@ -10413,7 +11167,7 @@
\special{t4ht=<a name=\hyper@quote #1\hyper@quote>}%
\endgroup
\Hy@activeanchortrue
- \Hy@colorlink{\@anchorcolor}\anchor@spot\Hy@endcolorlink
+ \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink
\special{t4ht=</a>}%
\Hy@activeanchorfalse
\Hy@RestoreLastskip
@@ -10432,7 +11186,7 @@
}
\def\@urltype{url}
\def\hyper@linkstart#1#2{%
- \Hy@colorlink{\csname @#1color\endcsname}%
+ \expandafter\Hy@colorlink\csname @#1color\endcsname
\def\Hy@tempa{#1}%
\ifx\Hy@tempa\@urltype
\special{t4ht=<a href=\hyper@quote#2\hyper@quote>}%
@@ -10457,7 +11211,7 @@
\hyper@chars\special{t4ht=<a href=\hyper@quote#2\hyper@quote>}%
\endgroup
}%
- \Hy@colorlink{\@urlcolor}#1\Hy@endcolorlink
+ \Hy@colorlink\@urlcolor#1\Hy@endcolorlink
\@linkdim\ht\@tempboxa
\advance\@linkdim by -6.5\p@
\raise\@linkdim\hbox{\special{t4ht=</a>}}%
@@ -10465,7 +11219,7 @@
\begingroup
\hyper@chars
\special{t4ht=<a href=\hyper@quote#2\hyper@quote>}%
- \Hy@colorlink{\@urlcolor}#1\Hy@endcolorlink
+ \Hy@colorlink\@urlcolor#1\Hy@endcolorlink
\special{t4ht=</a>}%
\endgroup
\fi
@@ -10563,24 +11317,26 @@
[ /_objdef {afields}
/type /array
/OBJ pdfmark
-[/BBox [0 0 100 100] /_objdef {Check} /BP pdfmark
-1 0 0 setrgbcolor /ZapfDingbats 80 selectfont 20 20 moveto (4) show
-[/EP pdfmark
-[/BBox [0 0 100 100] /_objdef {Cross} /BP pdfmark
-1 0 0 setrgbcolor /ZapfDingbats 80 selectfont 20 20 moveto (8) show
-[/EP pdfmark
-[/BBox [0 0 250 100] /_objdef {Submit} /BP pdfmark 0.6 setgray 0 0 250
-100 rectfill 1 setgray 2 2 moveto 2 98 lineto 248 98 lineto 246 96
-lineto 4 96 lineto 4 4 lineto fill 0.34 setgray 248 98 moveto 248 2
-lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
-/Helvetica 76 selectfont 0 setgray 8 22.5 moveto (Submit) show
-[/EP pdfmark
-[/BBox [0 0 250 100] /_objdef {SubmitP} /BP pdfmark 0.6 setgray 0 0
-250 100 rectfill 0.34 setgray 2 2 moveto 2 98 lineto 248 98 lineto 246
-96 lineto 4 96 lineto 4 4 lineto fill 1 setgray 248 98 moveto 248 2
-lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
-/Helvetica 76 selectfont 0 setgray 10 20.5 moveto (Submit) show
-[/EP pdfmark
+{
+ [/BBox [0 0 100 100] /_objdef {Check} /BP pdfmark
+ 1 0 0 setrgbcolor /ZapfDingbats 80 selectfont 20 20 moveto (4) show
+ [/EP pdfmark
+ [/BBox [0 0 100 100] /_objdef {Cross} /BP pdfmark
+ 1 0 0 setrgbcolor /ZapfDingbats 80 selectfont 20 20 moveto (8) show
+ [/EP pdfmark
+ [/BBox [0 0 250 100] /_objdef {Submit} /BP pdfmark 0.6 setgray 0 0 250
+ 100 rectfill 1 setgray 2 2 moveto 2 98 lineto 248 98 lineto 246 96
+ lineto 4 96 lineto 4 4 lineto fill 0.34 setgray 248 98 moveto 248 2
+ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
+ /Helvetica 76 selectfont 0 setgray 8 22.5 moveto (Submit) show
+ [/EP pdfmark
+ [/BBox [0 0 250 100] /_objdef {SubmitP} /BP pdfmark 0.6 setgray 0 0
+ 250 100 rectfill 0.34 setgray 2 2 moveto 2 98 lineto 248 98 lineto 246
+ 96 lineto 4 96 lineto 4 4 lineto fill 1 setgray 248 98 moveto 248 2
+ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
+ /Helvetica 76 selectfont 0 setgray 10 20.5 moveto (Submit) show
+ [/EP pdfmark
+} ?pdfmark
[ {aform}
<<
/Fields {afields}
@@ -10624,6 +11380,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\ifFld@hidden\def\Fld@width{1sp}\fi
\ifx\Fld@value\@empty\def\Fld@value{\Fld@default}\fi
\LayoutTextField{#2}{%
+ \Hy@escapeform\PDFForm@Text
\pdfmark[\MakeTextField{\Fld@width}{\Fld@height}]{%
pdfmark=/ANN,Raw={\PDFForm@Text}%
}%
@@ -10678,6 +11435,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\expandafter\Fld@checkequals\@curropt==\\%
\Hy@StepCount\Fld@listcount
\@currDisplay\space
+ \Hy@escapeform\PDFForm@Radio
\pdfmark[\MakeRadioField{\Fld@width}{\Fld@height}]{%
pdfmark=/ANN,%
Raw={\PDFForm@Radio /AP <</N <</\@currValue\space {Check}>> >>}%
@@ -10695,6 +11453,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\Choice@toks{\the\Choice@toks [(\@currValue) (\@currDisplay)]}%
}\@processme
}%
+ \Hy@escapeform\PDFForm@List
\pdfmark[\MakeChoiceField{\Fld@width}{\Fld@height}]{%
pdfmark=/ANN,Raw={\PDFForm@List}%
}%
@@ -10706,6 +11465,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\setkeys{Field}{#1}%
\ifFld@hidden\def\Fld@width{1sp}\fi
\LayoutPushButtonField{%
+ \Hy@escapeform\PDFForm@Push
\pdfmark[\MakeButtonField{#2}]{%
pdfmark=/ANN,Raw={\PDFForm@Push}%
}%
@@ -10720,6 +11480,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\def\Fld@name{Submit}%
\setkeys{Field}{#1}%
\ifFld@hidden\def\Fld@width{1sp}\fi
+ \Hy@escapeform\PDFForm@Submit
\pdfmark[\MakeButtonField{#2}]{%
pdfmark=/ANN,%
Raw={\PDFForm@Submit /AP << /N {Submit} /D {SubmitP} >>}%
@@ -10734,6 +11495,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\def\Fld@name{Reset}%
\setkeys{Field}{#1}%
\ifFld@hidden\def\Fld@width{1sp}\fi
+ \Hy@escapeform\PDFForm@Reset
\pdfmark[\MakeButtonField{#2}]{%
pdfmark=/ANN,Raw={\PDFForm@Reset}%
}%
@@ -10749,6 +11511,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\setkeys{Field}{#1}%
\ifFld@hidden\def\Fld@width{1sp}\fi
\LayoutCheckField{#2}{%
+ \Hy@escapeform\PDFForm@Check
\pdfmark[\MakeCheckField{\Fld@width}{\Fld@height}]{%
pdfmark=/ANN,Raw={\PDFForm@Check}%
}%
@@ -10954,7 +11717,6 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\def\@Gauge[#1]#2#3#4{% parameters, label, minimum, maximum
\typeout{Sorry, pdftex does not support FORM gauges}%
}
-\RequirePackage{pifont}%
\def\MakeFieldObject#1#2{\sbox0{#1}%
\immediate\pdfxform0 %
\expandafter\edef\csname #2Object\endcsname{%
@@ -10972,7 +11734,19 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\pdfrefobj\OBJ@acroform
\fi
\pdfcatalog{/AcroForm \OBJ@acroform\space 0 R}%
- \MakeFieldObject{\ding{123}}{Ding}%
+ \MakeFieldObject{%
+% \end{macrocode}
+% Same as \verb|\ding{123}| of package pifont.
+% \begin{macrocode}
+ \begingroup
+ \fontfamily{pzd}%
+ \fontencoding{U}%
+ \fontseries{m}%
+ \fontshape{n}%
+ \selectfont
+ \char123 %
+ \endgroup
+ }{Ding}%
\MakeFieldObject{\fbox{\textcolor{yellow}{\textsf{Submit}}}}{Submit}%
\MakeFieldObject{\fbox{\textcolor{yellow}{\textsf{SubmitP}}}}{SubmitP}%
}
@@ -10998,8 +11772,10 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\ifFld@hidden\def\Fld@width{1sp}\fi
\ifx\Fld@value\@empty\def\Fld@value{\Fld@default}\fi
\LayoutTextField{#2}{%
- \pdfstartlink user {\PDFForm@Text}%
- \MakeTextField{\Fld@width}{\Fld@height}\pdfendlink}%
+ \Hy@escapeform\PDFForm@Text
+ \pdfstartlink user {\PDFForm@Text}\relax
+ \MakeTextField{\Fld@width}{\Fld@height}\pdfendlink
+ }%
\egroup
}
\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices
@@ -11051,6 +11827,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\Hy@StepCount\Fld@listcount
\@currDisplay\space
\leavevmode
+ \Hy@escapeform\PDFForm@Radio
\pdfstartlink user {%
\PDFForm@Radio
/AP <<
@@ -11065,6 +11842,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
>>
>>
}%
+ \relax
\MakeRadioField{\Fld@width}{\Fld@height}\pdfendlink
\space% deliberate space between radio buttons
}%
@@ -11081,7 +11859,8 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
}\@processme
}%
\leavevmode
- \pdfstartlink user {\PDFForm@List}%
+ \Hy@escapeform\PDFForm@List
+ \pdfstartlink user {\PDFForm@List}\relax
\MakeChoiceField{\Fld@width}{\Fld@height}%
\pdfendlink
}
@@ -11093,7 +11872,8 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\ifFld@hidden\def\Fld@width{1sp}\fi
\LayoutPushButtonField{%
\leavevmode
- \pdfstartlink user {\PDFForm@Push}%
+ \Hy@escapeform\PDFForm@Push
+ \pdfstartlink user {\PDFForm@Push}\relax
\MakeButtonField{#2}%
\pdfendlink
}%
@@ -11108,10 +11888,12 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\setkeys{Field}{#1}%
\ifFld@hidden\def\Fld@width{1sp}\fi
\leavevmode
+ \Hy@escapeform\PDFForm@Submit
\pdfstartlink user {%
\PDFForm@Submit
/AP << /N \SubmitObject\space /D \SubmitPObject >>
}%
+ \relax
\MakeButtonField{#2}%
\pdfendlink
\egroup
@@ -11125,7 +11907,8 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\setkeys{Field}{#1}%
\ifFld@hidden\def\Fld@width{1sp}\fi
\leavevmode
- \pdfstartlink user {\PDFForm@Reset}%
+ \Hy@escapeform\PDFForm@Reset
+ \pdfstartlink user {\PDFForm@Reset}\relax
\MakeButtonField{#2}%
\pdfendlink
\egroup
@@ -11140,7 +11923,8 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\setkeys{Field}{#1}%
\ifFld@hidden\def\Fld@width{1sp}\fi
\LayoutCheckField{#2}{%
- \pdfstartlink user {\PDFForm@Check}%
+ \Hy@escapeform\PDFForm@Check
+ \pdfstartlink user {\PDFForm@Check}\relax
\MakeCheckField{\Fld@width}{\Fld@height}%
\pdfendlink
}%
@@ -11279,6 +12063,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\MakeTextField{\Fld@width}{\Fld@height}%
}%
\LayoutTextField{#2}{%
+ \Hy@escapeform\PDFForm@Text
\@pdfm@mark{%
ann @\Fld@name\space \dvipdfm@setdim << \PDFForm@Text >>%
}%
@@ -11347,6 +12132,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\Hy@StepCount\Fld@listcount
\@currDisplay\space
\leavevmode
+ \Hy@escapeform\PDFForm@Radio
\@pdfm@mark{%
ann \ifnum\Fld@listcount=1 @\Fld@name\space\fi
\dvipdfm@setdim
@@ -11381,6 +12167,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
}%
\setbox\pdfm@box=\hbox{\MakeChoiceField{\Fld@width}{\Fld@height}}%
\leavevmode
+ \Hy@escapeform\PDFForm@List
\@pdfm@mark{%
ann @\Fld@name\space\dvipdfm@setdim
<< \PDFForm@List >>%
@@ -11402,6 +12189,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\setbox\pdfm@box=\hbox{\MakeButtonField{#2}}%
\LayoutPushButtonField{%
\leavevmode
+ \Hy@escapeform\PDFForm@Push
\@pdfm@mark{%
ann @\Fld@name\space\dvipdfm@setdim
<< \PDFForm@Push >>%
@@ -11426,6 +12214,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\ifFld@hidden\def\Fld@width{1sp}\fi
\setbox\pdfm@box=\hbox{\MakeButtonField{#2}}%
\leavevmode
+ \Hy@escapeform\PDFForm@Submit
\@pdfm@mark{%
ann @\Fld@name\space\dvipdfm@setdim
<< \PDFForm@Submit >>%
@@ -11449,6 +12238,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\ifFld@hidden\def\Fld@width{1sp}\fi
\setbox\pdfm@box=\hbox{\MakeButtonField{#2}}%
\leavevmode
+ \Hy@escapeform\PDFForm@Reset
\@pdfm@mark{%
ann @\Fld@name\space\dvipdfm@setdim
<< \PDFForm@Reset >>%
@@ -11473,6 +12263,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\ifFld@hidden\def\Fld@width{1sp}\fi
\setbox\pdfm@box=\hbox{\MakeCheckField{\Fld@width}{\Fld@height}}%
\LayoutCheckField{#2}{%
+ \Hy@escapeform\PDFForm@Check
\@pdfm@mark{%
ann @\Fld@name\space\dvipdfm@setdim
<< \PDFForm@Check >>%
@@ -11539,12 +12330,59 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
% \begin{macrocode}
%<*pdfform>
% \end{macrocode}
+%
+% \begin{macro}{\Hy@escapestring}
+% \begin{macrocode}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdfescapestring\endcsname\relax
+ \let\Hy@escapestring\@firstofone
+ \def\Hy@escapeform#1{%
+ \ifHy@escapeform
+ \def\Hy@escapestring##1{%
+ \noexpand\Hy@escapestring{\noexpand##1}%
+ }%
+ \edef\Hy@temp{#1}%
+ \expandafter\Hy@@escapeform\Hy@temp\Hy@escapestring{}\@nil
+ \def\Hy@escapestring##1{%
+ \@ifundefined{Hy@esc@\string##1}{%
+ ##1%
+ \ThisShouldNotHappen
+ }{%
+ \csname Hy@esc@\string##1\endcsname
+ }%
+ }%
+ \else
+ \let\Hy@escapestring\@firstofone
+ \fi
+ }%
+ \def\Hy@@escapeform#1\Hy@escapestring#2#3\@nil{%
+ \ifx\\#3\\%
+ \else
+ \expandafter\Hy@pstringdef\csname Hy@esc@\string#2\endcsname{#2}%
+ \Hy@ReturnAfterFi{%
+ \Hy@@escapeform#3\@nil
+ }%
+ \fi
+ }%
+\else
+ \def\Hy@escapeform#1{%
+ \ifHy@escapeform
+ \let\Hy@escapestring\pdfescapestring
+ \else
+ \let\Hy@escapestring\@firstofone
+ \fi
+ }%
+ \Hy@escapeform{}%
+\fi
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\PDFForm@Check}
% \begin{macrocode}
\def\PDFForm@Check{%
/Subtype /Widget
\ifFld@hidden /F 6 \else /F 4 \fi
- /T (\Fld@name)
+ /T (\Hy@escapestring{\Fld@name})
/Q \Fld@align\space
/BS << /W \Fld@borderwidth\space /S /\Fld@borderstyle\space >>
/MK <<
@@ -11553,7 +12391,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\else
/BG [\Fld@bcolor]
\fi
- /CA (\Fld@cbsymbol)
+ /CA (\Hy@escapestring{\Fld@cbsymbol})
>>
/DA (/ZaDb \strip@pt\Fld@charsize\space Tf \Fld@color\space rg)
/FT /Btn
@@ -11567,7 +12405,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\def\PDFForm@Push{%
/Subtype /Widget
\ifFld@hidden /F 6 \else /F 4 \fi
- /T (\Fld@name)
+ /T (\Hy@escapestring{\Fld@name})
/FT /Btn
/Ff 65540
/H /P
@@ -11575,7 +12413,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
/MK <<
/BC [\Fld@bordercolor]
>>
- /A << /S /JavaScript /JS (\Fld@onclick;) >>
+ /A << /S /JavaScript /JS (\Hy@escapestring{\Fld@onclick}) >>
}
% \end{macrocode}
% \end{macro}
@@ -11589,70 +12427,70 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
% \begin{macrocode}
\ifx\Fld@keystroke@code\@empty
\else
- /K << /S /JavaScript /JS (\Fld@keystroke@code) >>
+ /K << /S /JavaScript /JS (\Hy@escapestring{\Fld@keystroke@code}) >>
\fi
% \end{macrocode}
% F display format
% \begin{macrocode}
\ifx\Fld@format@code\@empty
\else
- /F << /S /JavaScript /JS (\Fld@format@code) >>
+ /F << /S /JavaScript /JS (\Hy@escapestring{\Fld@format@code}) >>
\fi
% \end{macrocode}
% V validation
% \begin{macrocode}
\ifx\Fld@validate@code\@empty
\else
- /V << /S /JavaScript /JS (\Fld@validate@code) >>
+ /V << /S /JavaScript /JS (\Hy@escapestring{\Fld@validate@code}) >>
\fi
% \end{macrocode}
% C calculation
% \begin{macrocode}
\ifx\Fld@calculate@code\@empty
\else
- /C << /S /JavaScript /JS (\Fld@calculate@code) >>
+ /C << /S /JavaScript /JS (\Hy@escapestring{\Fld@calculate@code}) >>
\fi
% \end{macrocode}
% Fo receiving the input focus
% \begin{macrocode}
\ifx\Fld@onfocus@code\@empty
\else
- /Fo << /S /JavaScript /JS (\Fld@onfocus@code) >>
+ /Fo << /S /JavaScript /JS (\Hy@escapestring{\Fld@onfocus@code}) >>
\fi
% \end{macrocode}
% Bl loosing the input focus (blurred)
% \begin{macrocode}
\ifx\Fld@onblur@code\@empty
\else
- /Bl << /S /JavaScript /JS (\Fld@onblur@code) >>
+ /Bl << /S /JavaScript /JS (\Hy@escapestring{\Fld@onblur@code}) >>
\fi
% \end{macrocode}
% D pressing the mouse button (down)
% \begin{macrocode}
\ifx\Fld@onmousedown@code\@empty
\else
- /D << /S /JavaScript /JS (\Fld@onmousedown@code) >>
+ /D << /S /JavaScript /JS (\Hy@escapestring{\Fld@onmousedown@code}) >>
\fi
% \end{macrocode}
% U releasing the mouse button (up)
% \begin{macrocode}
\ifx\Fld@onmouseup@code\@empty
\else
- /U << /S /JavaScript /JS (\Fld@onmouseup@code) >>
+ /U << /S /JavaScript /JS (\Hy@escapestring{\Fld@onmouseup@code}) >>
\fi
% \end{macrocode}
% E cursor enters the annotation's active area.
% \begin{macrocode}
\ifx\Fld@onenter@code\@empty
\else
- /E << /S /JavaScript /JS (\Fld@onenter@code) >>
+ /E << /S /JavaScript /JS (\Hy@escapestring{\Fld@onenter@code}) >>
\fi
% \end{macrocode}
% X cursor exits the annotation's active area.
% \begin{macrocode}
\ifx\Fld@onexit@code\@empty
\else
- /X << /S /JavaScript /JS (\Fld@onexit@code) >>
+ /X << /S /JavaScript /JS (\Hy@escapestring{\Fld@onexit@code}) >>
\fi
>>
}
@@ -11664,7 +12502,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\def\PDFForm@List{%
/Subtype /Widget
\ifFld@hidden /F 6 \else /F 4 \fi
- /T (\Fld@name)
+ /T (\Hy@escapestring{\Fld@name})
/FT /Ch
/Q \Fld@align\space
/BS << /W \Fld@borderwidth\space /S /\Fld@borderstyle\space >>
@@ -11677,7 +12515,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
>>
/DA (/Helv \strip@pt\Fld@charsize\space Tf \Fld@color\space rg )
/Opt [\the\Choice@toks]
- /DV (\Fld@default)
+ /DV (\Hy@escapestring{\Fld@default})
\Fld@additionalactions
\Fld@flags
}
@@ -11688,7 +12526,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\def\PDFForm@Radio{%
/Subtype /Widget
\ifFld@hidden /F 6 \else /F 4 \fi
- /T (\Fld@name)
+ /T (\Hy@escapestring{\Fld@name})
/FT /Btn
/Ff 49152
/H /P
@@ -11716,7 +12554,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\def\PDFForm@Text{%
/Subtype /Widget
\ifFld@hidden /F 6 \else /F 4 \fi
- /T (\Fld@name)
+ /T (\Hy@escapestring{\Fld@name})
/Q \Fld@align\space
/FT /Tx
/BS << /W \Fld@borderwidth\space /S /\Fld@borderstyle\space >>
@@ -11728,8 +12566,8 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\fi
>>
/DA (/Helv \strip@pt\Fld@charsize\space Tf \Fld@color\space rg )
- /DV (\Fld@default)
- /V (\Fld@value)
+ /DV (\Hy@escapestring{\Fld@default})
+ /V (\Hy@escapestring{\Fld@value})
\Fld@additionalactions
\ifFld@multiline
\ifFld@readonly /Ff 4097 \else /Ff 4096 \fi
@@ -11749,7 +12587,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\def\PDFForm@Submit{%
/Subtype /Widget
\ifFld@hidden /F 6 \else /F 4 \fi
- /T (\Fld@name)
+ /T (\Hy@escapestring{\Fld@name})
/FT /Btn
/Ff 65540
/H /P
@@ -11761,7 +12599,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
/S /SubmitForm
/F <<
/FS /URL
- /F (\Form@action)
+ /F (\Hy@escapestring{\Form@action})
>>
\ifForm@html /Flags 4 \fi
>>
@@ -11773,7 +12611,7 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\def\PDFForm@Reset{%
/Subtype /Widget
\ifFld@hidden /F 6 \else /F 4 \fi
- /T (\Fld@name)
+ /T (\Hy@escapestring{\Fld@name})
/FT /Btn
/H /P
/DA (/Helv \strip@pt\Fld@charsize\space Tf 0 0 1 rg)
@@ -11807,9 +12645,9 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
% to get bookmarks when used with a manual |\addcontentsline|
% \begin{macrocode}
\def\phantomsection{%
- \Hy@GlobalStepCount\Hy@linkcounter
- \xdef\@currentHref{section*.\the\Hy@linkcounter}%
- \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \xdef\@currentHref{section*.\the\Hy@linkcounter}%
+ \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
}
%</package>
% \end{macrocode}
@@ -11829,11 +12667,10 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
% |doc| directory of hyperref.
%
% \begin{macrocode}
-\newwrite\@outlinefile
\def\Hy@writebookmark#1#2#3#4#5{% section number, text, label, level, file
\ifx\WriteBookmarks\relax%
\else
- \ifnum#4>\c@tocdepth
+ \ifnum#4>\Hy@bookmarksdepth\relax
\else
\@@writetorep{#1}{#2}{#3}{#4}{#5}%
\fi
@@ -11881,11 +12718,13 @@ lineto 2 2 lineto 4 4 lineto 246 4 lineto 246 96 lineto fill
\let\numberline\@gobble
\fi
\pdfstringdef\Hy@tempa{#2}%
- \protected@write\@outlinefile{}{%
- \protect\BOOKMARK
- [\Hy@level][\@bookmarkopenstatus{\Hy@level}]{#3}%
- {\Hy@tempa}{\Hy@tempb}%
- }%
+ \if@filesw
+ \protected@write\@outlinefile{}{%
+ \protect\BOOKMARK
+ [\Hy@level][\@bookmarkopenstatus{\Hy@level}]{#3}%
+ {\Hy@tempa}{\Hy@tempb}%
+ }%
+ \fi
\fi
\endgroup
}
@@ -12029,6 +12868,7 @@ o\fi,t=#4}%
\ifx\WriteBookmarks\relax
\else
\if@filesw
+ \newwrite\@outlinefile
\immediate\openout\@outlinefile=\jobname.out
\ifHy@typexml
\immediate\write\@outlinefile{<relaxxml>\relax}%
@@ -12055,27 +12895,30 @@ o\fi,t=#4}%
\def\@@BOOKMARK[##1][##2]##3##4##5{%
\def\Hy@temp{##4}%
%<*pdftex>
- \pdfoutline goto
- name{##3}%
- count ##2\check@bm@number{##3}{%
- \expandafter\strip@prefix\meaning\Hy@temp
- }%
+ \Hy@pstringdef\Hy@pstringName{##3}%
+ \Hy@OutlineName{}\Hy@pstringName{%
+ ##2\check@bm@number{##3}%
+ }{%
+ \expandafter\strip@prefix\meaning\Hy@temp
+ }%
%</pdftex>
%<*pdfmark>
+ \Hy@pstringdef\Hy@pstringName{##3}%
\pdfmark{%
pdfmark=/OUT,%
Count={##2\check@bm@number{##3}},%
- Dest={##3},%
+ Dest={\Hy@pstringName},%
Title=\expandafter\strip@prefix\meaning\Hy@temp
}%
%</pdfmark>
%<*dvipdfm>
+ \Hy@pstringdef\Hy@pstringName{##3}%
\@pdfm@mark{%
outline ##1 <<
/Title (\expandafter\strip@prefix\meaning\Hy@temp)
/A <<
/S /GoTo
- /D (##3)
+ /D (\Hy@pstringName)
>>
>>
}%
@@ -12086,15 +12929,23 @@ o\fi,t=#4}%
\InputIfFileExists{\jobname.out}{}{}%
}%
%{\escapechar\m@ne\InputIfFileExists{\jobname.out}{}{}}%
- \ifx\WriteBookmarks\relax\else
- \if@filesw\immediate\openout\@outlinefile=\jobname.out
- \ifHy@typexml
- \immediate\write\@outlinefile{<relaxxml>\relax}%
- \fi
+ \ifx\WriteBookmarks\relax
+ \else
+ \if@filesw
+ \newwrite\@outlinefile
+ \immediate\openout\@outlinefile=\jobname.out
+ \ifHy@typexml
+ \immediate\write\@outlinefile{<relaxxml>\relax}%
+ \fi
\fi
\fi
\endgroup
}
+%<*pdftex>
+\def\Hy@OutlineName#1#2#3#4{%
+ \pdfoutline goto name{#2}count#3{#4}%
+}
+%</pdftex>
\def\check@bm@number#1{%
\expandafter\ifx\csname B_#1\endcsname\relax
0%
@@ -12170,6 +13021,21 @@ o\fi,t=#4}%
}
% \end{macrocode}
% \begin{macrocode}
+\let\H@old@part\@part
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname chapter\endcsname\relax
+ \let\Hy@secnum@part\z@
+\else
+ \let\Hy@secnum@part\m@ne
+\fi
+\def\@part{%
+ \ifnum\Hy@secnum@part>\c@secnumdepth
+ \phantomsection
+ \fi
+ \H@old@part
+}
+% \end{macrocode}
+% \begin{macrocode}
\let\H@old@spart\@spart
\def\@spart#1{%
\H@old@spart{#1}%
@@ -12302,6 +13168,7 @@ o\fi,t=#4}%
\DeclareTextCompositeCommand{\v}{PD1}{\@empty}{\textcaron}
\DeclareTextCompositeCommand{\.}{PD1}{\@empty}{\textdotaccent}
\DeclareTextCompositeCommand{\c}{PD1}{\@empty}{\textcedilla}
+\DeclareTextCommand{\k}{PD1}[1]{\TextSymbolUnavailable{\k{#1}}#1}
% \end{macrocode}
% Accent glyph names
% \begin{macrocode}
@@ -12598,6 +13465,10 @@ o\fi,t=#4}%
\DeclareTextCompositeCommand{\c}{PU}{\@empty}{\textcedilla}
\DeclareTextCompositeCommand{\U}{PU}{\@empty}{\textbreve}
\DeclareTextCompositeCommand{\C}{PU}{\@empty}{\textdoublegrave}
+\DeclareTextCommand{\=}{PU}[1]{\TextSymbolUnavailable{\={#1}}#1}
+\DeclareTextCommand{\H}{PU}[1]{\TextSymbolUnavailable{\H{#1}}#1}
+\DeclareTextCommand{\k}{PU}[1]{\TextSymbolUnavailable{\k{#1}}#1}
+\DeclareTextCommand{\u}{PU}[1]{\TextSymbolUnavailable{\u{#1}}#1}
% \end{macrocode}
% Accent glyph names
% \begin{macrocode}
@@ -12667,25 +13538,7 @@ o\fi,t=#4}%
%
% \subsubsection{Latin-1 Supplement}
% \begin{macrocode}
-\DeclareTextCommand{\textbullet}{PU}{\80\200} % bullet
-\DeclareTextCommand{\textdagger}{PU}{\80\201} % dagger
-\DeclareTextCommand{\textdaggerdbl}{PU}{\80\202} % daggerdbl
-\DeclareTextCommand{\textellipsis}{PU}{\80\203} % ellipsis
-\DeclareTextCommand{\textemdash}{PU}{\80\204} % emdash
-\DeclareTextCommand{\textendash}{PU}{\80\205} % endash
-\DeclareTextCommand{\textflorin}{PU}{\80\206} % florin
-\DeclareTextCommand{\textfractionmark}{PU}{/} % fraction, \80\207
-\DeclareTextCommand{\guilsinglleft}{PU}{\80\210} % guilsinglleft
-\DeclareTextCommand{\guilsinglright}{PU}{\80\211} % guilsinglright
\DeclareTextCommand{\textminus}{PU}{-} % minus, \80\212
-\DeclareTextCommand{\textperthousand}{PU}{\80\213} % perthousand
-\DeclareTextCommand{\quotedblbase}{PU}{\80\214} % quotedblbase
-\DeclareTextCommand{\textquotedblleft}{PU}{\80\215} % quotedblleft
-\DeclareTextCommand{\textquotedblright}{PU}{\80\216} % quotedblright
-\DeclareTextCommand{\textquoteleft}{PU}{\80\217} % quoteleft
-\DeclareTextCommand{\textquoteright}{PU}{\80\220} % quoteright
-\DeclareTextCommand{\quotesinglbase}{PU}{\80\221} % quotesinglbase
-\DeclareTextCommand{\texttrademark}{PU}{\80\222} % trademark
\DeclareTextCommand{\textfi}{PU}{fi} % fi ?? \80\223
\DeclareTextCommand{\textfl}{PU}{fl} % fl ?? \80\224
% \end{macrocode}
@@ -12695,8 +13548,8 @@ o\fi,t=#4}%
% Problematic are all positions, but especially \cmd{\OE},
% \cmd{\oe}, and \cmd{\i}.
% \begin{macrocode}
-\DeclareTextCommand{\OE}{PU}{\80\226} % OE
-\DeclareTextCommand{\oe}{PU}{\80\234} % oe
+%\DeclareTextCommand{\OE}{PU}{OE} % OE
+%\DeclareTextCommand{\oe}{PU}{oe} % oe
% \end{macrocode}
% The euro \cs{240} is inserted in version 1.3 of the pdf
% specification.
@@ -12807,7 +13660,6 @@ o\fi,t=#4}%
% Glyphs that consist of several characters.
% \begin{macrocode}
\DeclareTextCommand{\SS}{PU}{SS}
-\DeclareTextCommand{\textcelsius}{PU}{\textdegree C}
% \end{macrocode}
% Aliases (german.sty)
% \begin{macrocode}
@@ -12827,7 +13679,6 @@ o\fi,t=#4}%
\DeclareTextCommand{\textdiv}{PU}{\textdivide}
\DeclareTextCommand{\textpm}{PU}{\textplusminus}
\DeclareTextCommand{\textcdot}{PU}{\textperiodcentered}
-\DeclareTextCommand{\textbeta}{PU}{\ss}
% \end{macrocode}
%
% \subsubsection{Latin Extended-A}
@@ -12911,16 +13762,16 @@ o\fi,t=#4}%
\DeclareTextCompositeCommand{\v}{PU}{N}{\81\107} % Ncaron
\DeclareTextCompositeCommand{\v}{PU}{n}{\81\110} % ncaron
% n apostrophe
-\DeclareTextCommand{\NG}{PU}{NG} % \81\112
-\DeclareTextCommand{\ng}{PU}{ng} % \81\113
+\DeclareTextCommand{\NG}{PU}{\81\112} % NG
+\DeclareTextCommand{\ng}{PU}{\81\113} % ng
\DeclareTextCompositeCommand{\=}{PU}{O}{\81\114} % Omacron
\DeclareTextCompositeCommand{\=}{PU}{o}{\81\115} % omacron
\DeclareTextCompositeCommand{\u}{PU}{O}{\81\116} % Obreve
\DeclareTextCompositeCommand{\u}{PU}{o}{\81\117} % obreve
\DeclareTextCompositeCommand{\H}{PU}{O}{\81\120} % Odoubleacute
\DeclareTextCompositeCommand{\H}{PU}{o}{\81\121} % odoubleacute
-%\DeclareTextCommand{\OE}{PU}{\81\122} % OE
-%\DeclareTextCommand{\oe}{PU}{\81\123} % oe
+\DeclareTextCommand{\OE}{PU}{\81\122} % OE
+\DeclareTextCommand{\oe}{PU}{\81\123} % oe
\DeclareTextCompositeCommand{\'}{PU}{R}{\81\124} % Racute
\DeclareTextCompositeCommand{\'}{PU}{r}{\81\125} % racute
\DeclareTextCompositeCommand{\c}{PU}{R}{\81\126} % Rcedilla
@@ -12967,8 +13818,10 @@ o\fi,t=#4}%
\DeclareTextCompositeCommand{\v}{PU}{z}{\81\176} % zcaron
% \end{macrocode}
%
+%
% \subsubsection{Latin Extended-B}
% \begin{macrocode}
+\DeclareTextCommand{\textflorin}{PU}{\81\222} % florin
\DeclareTextCompositeCommand{\v}{PU}{A}{\81\315} % Acaron
\DeclareTextCompositeCommand{\v}{PU}{a}{\81\316} % acaron
\DeclareTextCompositeCommand{\v}{PU}{I}{\81\317} % Icaron
@@ -13304,9 +14157,30 @@ o\fi,t=#4}%
\DeclareTextCompositeCommand{\"}{PU}{\CYRERY}{\84\370}% YERU diaeresis
\DeclareTextCompositeCommand{\"}{PU}{\cyrery}{\84\371}% yeru diaeresis
% \end{macrocode}
-% \begin{macrocode}
+%
+% \subsubsection{Symbols}
+% \begin{macrocode}
+\DeclareTextCommand{\textendash}{PU}{\9040\023} % endash
+\DeclareTextCommand{\textemdash}{PU}{\9040\024} % emdash
+\DeclareTextCommand{\textquoteleft}{PU}{\9040\030} % quoteleft
+\DeclareTextCommand{\textquoteright}{PU}{\9040\031} % quoteright
+\DeclareTextCommand{\quotesinglbase}{PU}{\9040\032} % quotesinglbase
+\DeclareTextCommand{\textquotedblleft}{PU}{\9040\034} % quotedblleft
+\DeclareTextCommand{\textquotedblright}{PU}{\9040\035} % quotedblright
+\DeclareTextCommand{\quotedblbase}{PU}{\9040\036} % quotedblbase
+\DeclareTextCommand{\textdagger}{PU}{\9040\040} % dagger
+\DeclareTextCommand{\textdaggerdbl}{PU}{\9040\041} % daggerdbl
+\DeclareTextCommand{\textbullet}{PU}{\9040\042} % bullet
+\DeclareTextCommand{\textellipsis}{PU}{\9040\046} % ellipsis
+\DeclareTextCommand{\textperthousand}{PU}{\9040\060} % perthousand
+\DeclareTextCommand{\textpertenthousand}{PU}{\9040\061} % pertenthousand
+\DeclareTextCommand{\guilsinglleft}{PU}{\9040\071} % guilsinglleft
+\DeclareTextCommand{\guilsinglright}{PU}{\9040\072} % guilsinglright
+\DeclareTextCommand{\textfractionmark}{PU}{\9040\104} % fraction slash
\DeclareTextCommand{\texteuro}{PU}{\9040\254} % Euro
+\DeclareTextCommand{\textcelsius}{PU}{\9041\003}
\DeclareTextCommand{\textnumero}{PU}{\9041\026}
+\DeclareTextCommand{\texttrademark}{PU}{\9041\042} % trademark
%\DeclareTextCommand{\cyrlangle}{PU}{\9043\051}
%\DeclareTextCommand{\cyrrangle}{PU}{\9043\052}
% \end{macrocode}
@@ -13315,6 +14189,155 @@ o\fi,t=#4}%
%</puenc>
% \end{macrocode}
%
+% \subsection{PU encoding, additions for Vn\TeX}
+%
+% This file is provided by Han The Thanh.
+%
+% \begin{macrocode}
+%<*puvnenc>
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareTextCommand{\abreve}{PU}{\81\003}
+\DeclareTextCommand{\acircumflex}{PU}{\80\342}
+\DeclareTextCommand{\dj}{PU}{\81\021}
+\DeclareTextCommand{\ecircumflex}{PU}{\80\352}
+\DeclareTextCommand{\ocircumflex}{PU}{\80\364}
+\DeclareTextCommand{\ohorn}{PU}{\81\241}
+\DeclareTextCommand{\uhorn}{PU}{\81\260}
+\DeclareTextCommand{\ABREVE}{PU}{\81\002}
+\DeclareTextCommand{\ACIRCUMFLEX}{PU}{\80\302}
+\DeclareTextCommand{\DJ}{PU}{\81\020}
+\DeclareTextCommand{\ECIRCUMFLEX}{PU}{\80\312}
+\DeclareTextCommand{\OCIRCUMFLEX}{PU}{\80\324}
+\DeclareTextCommand{\OHORN}{PU}{\81\240}
+\DeclareTextCommand{\UHORN}{PU}{\81\257}
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareTextCompositeCommand{\'}{PU}{a}{\80\341}
+\DeclareTextCompositeCommand{\d}{PU}{a}{\9036\241}
+\DeclareTextCompositeCommand{\`}{PU}{a}{\80\340}
+\DeclareTextCompositeCommand{\h}{PU}{a}{\9036\243}
+\DeclareTextCompositeCommand{\~}{PU}{a}{\80\343}
+\DeclareTextCompositeCommand{\'}{PU}{\abreve}{\9036\257}
+\DeclareTextCompositeCommand{\d}{PU}{\abreve}{\9036\267}
+\DeclareTextCompositeCommand{\`}{PU}{\abreve}{\9036\261}
+\DeclareTextCompositeCommand{\h}{PU}{\abreve}{\9036\263}
+\DeclareTextCompositeCommand{\~}{PU}{\abreve}{\9036\265}
+\DeclareTextCompositeCommand{\'}{PU}{\acircumflex}{\9036\245}
+\DeclareTextCompositeCommand{\d}{PU}{\acircumflex}{\9036\255}
+\DeclareTextCompositeCommand{\`}{PU}{\acircumflex}{\9036\247}
+\DeclareTextCompositeCommand{\h}{PU}{\acircumflex}{\9036\251}
+\DeclareTextCompositeCommand{\~}{PU}{\acircumflex}{\9036\253}
+\DeclareTextCompositeCommand{\'}{PU}{e}{\80\351}
+\DeclareTextCompositeCommand{\d}{PU}{e}{\9036\271}
+\DeclareTextCompositeCommand{\`}{PU}{e}{\80\350}
+\DeclareTextCompositeCommand{\h}{PU}{e}{\9036\273}
+\DeclareTextCompositeCommand{\~}{PU}{e}{\9036\275}
+\DeclareTextCompositeCommand{\'}{PU}{\ecircumflex}{\9036\277}
+\DeclareTextCompositeCommand{\d}{PU}{\ecircumflex}{\9036\307}
+\DeclareTextCompositeCommand{\`}{PU}{\ecircumflex}{\9036\301}
+\DeclareTextCompositeCommand{\h}{PU}{\ecircumflex}{\9036\303}
+\DeclareTextCompositeCommand{\~}{PU}{\ecircumflex}{\9036\305}
+\DeclareTextCompositeCommand{\'}{PU}{i}{\80\355}
+\DeclareTextCompositeCommand{\d}{PU}{i}{\9036\313}
+\DeclareTextCompositeCommand{\`}{PU}{i}{\80\354}
+\DeclareTextCompositeCommand{\h}{PU}{i}{\9036\311}
+\DeclareTextCompositeCommand{\~}{PU}{i}{\81\051}
+\DeclareTextCompositeCommand{\'}{PU}{o}{\80\363}
+\DeclareTextCompositeCommand{\d}{PU}{o}{\9036\315}
+\DeclareTextCompositeCommand{\`}{PU}{o}{\80\362}
+\DeclareTextCompositeCommand{\h}{PU}{o}{\9036\317}
+\DeclareTextCompositeCommand{\~}{PU}{o}{\80\365}
+\DeclareTextCompositeCommand{\'}{PU}{\ocircumflex}{\9036\321}
+\DeclareTextCompositeCommand{\d}{PU}{\ocircumflex}{\9036\331}
+\DeclareTextCompositeCommand{\`}{PU}{\ocircumflex}{\9036\323}
+\DeclareTextCompositeCommand{\h}{PU}{\ocircumflex}{\9036\325}
+\DeclareTextCompositeCommand{\~}{PU}{\ocircumflex}{\9036\327}
+\DeclareTextCompositeCommand{\'}{PU}{\ohorn}{\9036\333}
+\DeclareTextCompositeCommand{\d}{PU}{\ohorn}{\9036\343}
+\DeclareTextCompositeCommand{\`}{PU}{\ohorn}{\9036\335}
+\DeclareTextCompositeCommand{\h}{PU}{\ohorn}{\9036\337}
+\DeclareTextCompositeCommand{\~}{PU}{\ohorn}{\9036\341}
+\DeclareTextCompositeCommand{\'}{PU}{u}{\80\372}
+\DeclareTextCompositeCommand{\d}{PU}{u}{\9036\345}
+\DeclareTextCompositeCommand{\`}{PU}{u}{\80\371}
+\DeclareTextCompositeCommand{\h}{PU}{u}{\9036\347}
+\DeclareTextCompositeCommand{\~}{PU}{u}{\81\151}
+\DeclareTextCompositeCommand{\'}{PU}{\uhorn}{\9036\351}
+\DeclareTextCompositeCommand{\d}{PU}{\uhorn}{\9036\361}
+\DeclareTextCompositeCommand{\`}{PU}{\uhorn}{\9036\353}
+\DeclareTextCompositeCommand{\h}{PU}{\uhorn}{\9036\355}
+\DeclareTextCompositeCommand{\~}{PU}{\uhorn}{\9036\357}
+\DeclareTextCompositeCommand{\'}{PU}{y}{\80\375}
+\DeclareTextCompositeCommand{\d}{PU}{y}{\9036\365}
+\DeclareTextCompositeCommand{\`}{PU}{y}{\9036\363}
+\DeclareTextCompositeCommand{\h}{PU}{y}{\9036\367}
+\DeclareTextCompositeCommand{\~}{PU}{y}{\9036\371}
+\DeclareTextCompositeCommand{\'}{PU}{A}{\80\301}
+\DeclareTextCompositeCommand{\d}{PU}{A}{\9036\240}
+\DeclareTextCompositeCommand{\`}{PU}{A}{\80\300}
+\DeclareTextCompositeCommand{\h}{PU}{A}{\9036\242}
+\DeclareTextCompositeCommand{\~}{PU}{A}{\80\303}
+\DeclareTextCompositeCommand{\'}{PU}{\ABREVE}{\9036\256}
+\DeclareTextCompositeCommand{\d}{PU}{\ABREVE}{\9036\266}
+\DeclareTextCompositeCommand{\`}{PU}{\ABREVE}{\9036\260}
+\DeclareTextCompositeCommand{\h}{PU}{\ABREVE}{\9036\262}
+\DeclareTextCompositeCommand{\~}{PU}{\ABREVE}{\9036\264}
+\DeclareTextCompositeCommand{\'}{PU}{\ACIRCUMFLEX}{\9036\244}
+\DeclareTextCompositeCommand{\d}{PU}{\ACIRCUMFLEX}{\9036\254}
+\DeclareTextCompositeCommand{\`}{PU}{\ACIRCUMFLEX}{\9036\246}
+\DeclareTextCompositeCommand{\h}{PU}{\ACIRCUMFLEX}{\9036\250}
+\DeclareTextCompositeCommand{\~}{PU}{\ACIRCUMFLEX}{\9036\252}
+\DeclareTextCompositeCommand{\'}{PU}{E}{\80\311}
+\DeclareTextCompositeCommand{\d}{PU}{E}{\9036\270}
+\DeclareTextCompositeCommand{\`}{PU}{E}{\80\310}
+\DeclareTextCompositeCommand{\h}{PU}{E}{\9036\272}
+\DeclareTextCompositeCommand{\~}{PU}{E}{\9036\274}
+\DeclareTextCompositeCommand{\'}{PU}{\ECIRCUMFLEX}{\9036\276}
+\DeclareTextCompositeCommand{\d}{PU}{\ECIRCUMFLEX}{\9036\306}
+\DeclareTextCompositeCommand{\`}{PU}{\ECIRCUMFLEX}{\9036\300}
+\DeclareTextCompositeCommand{\h}{PU}{\ECIRCUMFLEX}{\9036\302}
+\DeclareTextCompositeCommand{\~}{PU}{\ECIRCUMFLEX}{\9036\304}
+\DeclareTextCompositeCommand{\'}{PU}{I}{\80\315}
+\DeclareTextCompositeCommand{\d}{PU}{I}{\9036\312}
+\DeclareTextCompositeCommand{\`}{PU}{I}{\80\314}
+\DeclareTextCompositeCommand{\h}{PU}{I}{\9036\310}
+\DeclareTextCompositeCommand{\~}{PU}{I}{\81\050}
+\DeclareTextCompositeCommand{\'}{PU}{O}{\80\323}
+\DeclareTextCompositeCommand{\d}{PU}{O}{\9036\314}
+\DeclareTextCompositeCommand{\`}{PU}{O}{\80\322}
+\DeclareTextCompositeCommand{\h}{PU}{O}{\9036\316}
+\DeclareTextCompositeCommand{\~}{PU}{O}{\80\325}
+\DeclareTextCompositeCommand{\'}{PU}{\OCIRCUMFLEX}{\9036\320}
+\DeclareTextCompositeCommand{\d}{PU}{\OCIRCUMFLEX}{\9036\330}
+\DeclareTextCompositeCommand{\`}{PU}{\OCIRCUMFLEX}{\9036\322}
+\DeclareTextCompositeCommand{\h}{PU}{\OCIRCUMFLEX}{\9036\324}
+\DeclareTextCompositeCommand{\~}{PU}{\OCIRCUMFLEX}{\9036\326}
+\DeclareTextCompositeCommand{\'}{PU}{\OHORN}{\9036\332}
+\DeclareTextCompositeCommand{\d}{PU}{\OHORN}{\9036\342}
+\DeclareTextCompositeCommand{\`}{PU}{\OHORN}{\9036\334}
+\DeclareTextCompositeCommand{\h}{PU}{\OHORN}{\9036\336}
+\DeclareTextCompositeCommand{\~}{PU}{\OHORN}{\9036\340}
+\DeclareTextCompositeCommand{\'}{PU}{U}{\80\332}
+\DeclareTextCompositeCommand{\d}{PU}{U}{\9036\344}
+\DeclareTextCompositeCommand{\`}{PU}{U}{\80\331}
+\DeclareTextCompositeCommand{\h}{PU}{U}{\9036\346}
+\DeclareTextCompositeCommand{\~}{PU}{U}{\81\150}
+\DeclareTextCompositeCommand{\'}{PU}{\UHORN}{\9036\350}
+\DeclareTextCompositeCommand{\d}{PU}{\UHORN}{\9036\360}
+\DeclareTextCompositeCommand{\`}{PU}{\UHORN}{\9036\352}
+\DeclareTextCompositeCommand{\h}{PU}{\UHORN}{\9036\354}
+\DeclareTextCompositeCommand{\~}{PU}{\UHORN}{\9036\356}
+\DeclareTextCompositeCommand{\'}{PU}{Y}{\80\335}
+\DeclareTextCompositeCommand{\d}{PU}{Y}{\9036\364}
+\DeclareTextCompositeCommand{\`}{PU}{Y}{\9036\362}
+\DeclareTextCompositeCommand{\h}{PU}{Y}{\9036\366}
+\DeclareTextCompositeCommand{\~}{PU}{Y}{\9036\370}
+% \end{macrocode}
+% \begin{macrocode}
+%</puvnenc>
+% \end{macrocode}
+%
% \section{End of file hycheck.tex}
%
% \begin{macrocode}