summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/hyperref/hyperref.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-02-23 03:01:16 +0000
committerNorbert Preining <norbert@preining.info>2022-02-23 03:01:16 +0000
commitd529109bf475e3f1e220ce0e980e104b1a7e3c6b (patch)
treeaf59aa7f9553f1cb355b3d98042ffa26a2e61184 /macros/latex/contrib/hyperref/hyperref.dtx
parentfb013a78d9e3aef2ecf58702d4adcec8d9ab6b28 (diff)
CTAN sync 202202230301
Diffstat (limited to 'macros/latex/contrib/hyperref/hyperref.dtx')
-rw-r--r--macros/latex/contrib/hyperref/hyperref.dtx901
1 files changed, 214 insertions, 687 deletions
diff --git a/macros/latex/contrib/hyperref/hyperref.dtx b/macros/latex/contrib/hyperref/hyperref.dtx
index 0a573a038b..20414ef7e8 100644
--- a/macros/latex/contrib/hyperref/hyperref.dtx
+++ b/macros/latex/contrib/hyperref/hyperref.dtx
@@ -52,8 +52,7 @@
%<puvnenc>\ProvidesFile{puvnenc.def}
%<puarenc>\ProvidesFile{puarenc.def}
%<psdextra>\ProvidesFile{psdextra.def}
-%<lang>\ProvidesFile{hyperref-langpatches.def}
-%<!none> [2021-06-07 v7.00m %
+%<!none> [2022-02-21 v7.00n %
%<package> Hypertext links for LaTeX]
%<nohyperref> Dummy hyperref (SR)]
%<driver> Hyperref documentation driver file]
@@ -94,7 +93,6 @@
%<puvnenc> Hyperref: Additions to puenc.def for VnTeX]
%<puarenc> Hyperref: Additions to puenc.def for Arabi]
%<psdextra> Hyperref: Additions to PDF string support]
-%<lang> Hyperref: patches for babel languages]
%<*driver>
\PassOptionsToPackage{numbered}{hypdoc}
\documentclass{ltxdoc}
@@ -595,7 +593,9 @@
% \end{macrocode}
% change 2020-07-24: require newer pdftexcmds and remove fallback code
% for version older than 2010.
+% change 2021-08-14: require expl3
% \begin{macrocode}
+\ifx\ExplSyntaxOn\undefined \RequirePackage{expl3}\fi
\RequirePackage{ltxcmds}[2010/11/12]
\RequirePackage{iftex}[2019/10/24]
\RequirePackage{pdftexcmds}[2018/09/10]
@@ -961,73 +961,24 @@
% LaTeX expands the options before package hyperref
% is loaded and \cmd{\hypercalcbp} is defined.
% \item
-% With e-TeX extensions an expandable implementation
+% With the now required e-TeX extensions an expandable implementation
% is very easy; \cmd{\hypercalcbp} can be used
% everywhere and is expanded at use.
-% \item
-% Without e-TeX's features \cmd{\hypercalcbp} cannot be
-% implemented expandable (practically) and have to
-% be supported by \cmd{\hypercalcbpdef}.
-% Limitations:
-% \begin{itemize}
-% \item Works only in options that use \cmd{\hypercalcbpdef}
-% (currently only |pdfstartview|).
-% \item For calculations package |calc| has to be loaded.
-% \item The expansion of the argument is done at definition time.
-% \end{itemize}
% \end{itemize}
% Example (\TeX):
%\begin{verbatim}
-%\usepackage{calc}
%\usepackage[...]{hyperref}
%\hypersetup{
% pdfstartview={FitBH \hypercalcbp{\paperheight-\topmargin-1in
-% -\headheight-\headsep}
+% -\headheight-\headsep}}
%}
%\end{verbatim}
% \begin{macro}{\hypercalcbp}
% \begin{macrocode}
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname dimexpr\endcsname\relax
- \def\hypercalcbpdef#1#2{%
- \begingroup
- \toks@{}%
- \HyCal@scan#2\hypercalcbp\@nil
- \expandafter\endgroup
- \expandafter\def\expandafter#1\expandafter{\the\toks@}%
- }%
- \def\HyCal@scan#1\hypercalcbp#2\@nil{%
- \toks@\expandafter{\the\toks@ #1}%
- \ifx\\#2\\%
- \else
- \ltx@ReturnAfterFi{%
- \HyCal@do#2\@nil
- }%
- \fi
- }%
- \def\HyCal@do#1#2\@nil{%
- \@ifpackageloaded{calc}{}{%
- \Hy@Warning{%
- For calculations \string\hypercalcbp\space needs\MessageBreak
- package calc or e-TeX%
- }%
- }%
- \setlength{\dimen@}{#1}%
- \setlength{\dimen@}{0.99626401\dimen@}%
- \edef\x{%
- \toks@{%
- \the\toks@
- \strip@pt\dimen@
- }%
- }\x
- \HyCal@scan#2\@nil
- }%
-\else
\def\hypercalcbp#1{%
\strip@pt\dimexpr 0.99626401\dimexpr(#1)\relax\relax
}%
\def\hypercalcbpdef{\def}%
-\fi
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1355,7 +1306,6 @@
\let\bbl@info\@gobble
\csname HyPsd@babel@\language@group\endcsname
}%
- \HyPsd@SpanishPatch
% \end{macrocode}
%
% \begin{macrocode}
@@ -1368,10 +1318,6 @@
\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}
@@ -2167,18 +2113,6 @@
% \end{macrocode}
% \end{macro}
%
-% (Partial) fix for bug in \texttt{frenchb.ldf} 2010/08/21 v2.5a that
-% destroys \cs{pdfstringdefDisableCommands} after usage
-% in \cs{AtBeginDocument}.
-% \begin{macrocode}
-\let\HyPsd@pdfstringdefDisableCommands\pdfstringdefDisableCommands
-\AtBeginDocument{%
- \@ifundefined{pdfstringdefDisableCommands}{%
- \let\pdfstringdefDisableCommands\HyPsd@pdfstringdefDisableCommands
- }{}%
-}
-% \end{macrocode}
-%
% \begin{macro}{\pdfstringdefWarn}
% The purpose of \cmd{\pdfstringdefWarn} is to produce
% a warning message, so the user can see, that something
@@ -2230,9 +2164,7 @@
% toward removing them completly.
% \begin{macrocode}
\newif\ifHy@next
-\input{hyperref-langpatches.def}
%</package>
-%<*lang>
% \end{macrocode}
%
% Since version 2008/03/16 v3.8j babel used inside \cs{AtBeginDocument}:
@@ -2258,28 +2190,8 @@
% see https://github.com/kia999/babel-russian/pull/3
% change 2021/02/04: removed patches for greek numerals, code is now in babel-greek.
% spanish: Nested quoting environments are not supported (|<<|, |>>|).
+% change 2021/07/19: removed patches for spanish, code is now in babel-spanish.
% \begin{macrocode}
-\ltx@IfUndefined{spanish@sh@>@sel}{}{%
- \def\HyPsd@babel@spanish{%
- \declare@shorthand{spanish}{<<}{\guillemotleft}%
- \declare@shorthand{spanish}{>>}{\guillemotright}%
- \declare@shorthand{spanish}{"=}{-}%
- \declare@shorthand{spanish}{"~}{-}%
- \declare@shorthand{spanish}{"!}{\textexclamdown}%
- \declare@shorthand{spanish}{"?}{\textquestiondown}%
- }%
-}
-% \end{macrocode}
-% \begin{macrocode}
-\def\HyPsd@SpanishPatch{%
- \ltx@IfUndefined{es@save@dot}{%
- }{%
- \let\.\es@save@dot
- }%
-}
-% \end{macrocode}
-% \begin{macrocode}
-%</lang>
%<*package>
% \end{macrocode}
%
@@ -3886,6 +3798,22 @@
}%
\fi
% \end{macrocode}
+% change 2022-02-21
+% For the case that utf8 chars are protected we need to expand them.
+% This works only is |\UTFviii@loop| is not defined in a group, which will be the
+% case in the new latex code, so we test for it.
+% \begin{macrocode}
+\ifcsname UTFviii@loop\endcsname
+ \def\HyPsd@expand@utfvii{%
+ \count@"C2
+ \@tempcnta"F5
+ \def\UTFviii@tmp{\expandafter\def\expandafter~\expandafter{~}}%
+ \UTFviii@loop
+ }
+\else
+ \def\HyPsd@expand@utfvii{}
+\fi
+% \end{macrocode}
% \end{macro}
%
% \subsubsection{Support for UTF-8 input encoding}
@@ -3905,14 +3833,11 @@
% |\number\dimexpr.25\dimexpr 123sp\relax\relax|
% \end{quote}
% \begin{macrocode}
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname numexpr\endcsname\relax
- \let\HyPsd@UTFviii\relax
-\else
\begingroup
\lccode`\~=`^^f4\relax
\lowercase{\endgroup
\def\HyPsd@UTFviii{%
+ \HyPsd@expand@utfvii
\let\UTFviii@two@octets\HyPsd@UTFviii@two
\let\UTFviii@three@octets\HyPsd@UTFviii@three
\let\UTFviii@four@octets\HyPsd@UTFviii@four
@@ -4108,9 +4033,6 @@
\relax\relax\relax
}%
% \end{macrocode}
-% \begin{macrocode}
-\fi
-% \end{macrocode}
%
% \begin{macro}{\HyPsd@utf@viii@undeferr}
% \cs{utf@viii@undeferr} comes from file |utf8x.def| from
@@ -5174,8 +5096,8 @@
}%
}
\DeclareVoidOption{latex2html}{%
- \HyOpt@CheckDvi{latex2html}{%
- \Hy@AtBeginDocument{\@@latextohtmlX}%
+ \Hy@Warning{Option `latex2html` is obsolete. \MessageBreak
+ A current html.sty will do all necessary (re)definitions%
}%
}
% \end{macrocode}
@@ -5896,14 +5818,6 @@
\def\toclevel@subparagraph{5}
\def\toclevel@figure{0}
\def\toclevel@table{0}
-\@ifpackageloaded{listings}{%
- \providecommand*\theHlstlisting{\thelstlisting}%
- \providecommand*\toclevel@lstlisting{0}%
-}{}
-\@ifpackageloaded{listing}{%
- \providecommand*\theHlisting{\thelisting}%
- \providecommand*\toclevel@listing{0}%
-}{}
% \end{macrocode}
%
% \begin{macrocode}
@@ -6472,16 +6386,9 @@
\def\@pdfviewparams{ #2}%
\fi
}
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname numexpr\endcsname\relax
- \def\Hy@number#1{%
- \expandafter\@firstofone\expandafter{\number#1}%
- }%
-\else
- \def\Hy@number#1{%
- \the\numexpr#1\relax
+\def\Hy@number#1{%
+ \the\numexpr#1\relax
}%
-\fi
\define@key{Hyp}{pdfstartpage}{%
\ifx\\#1\\%
\let\@pdfstartpage\ltx@empty
@@ -6493,7 +6400,7 @@
\ifx\\#1\\%
\let\@pdfstartview\ltx@empty
\else
- \hypercalcbpdef\@pdfstartview{/#1}%
+ \def\@pdfstartview{/#1}%
\fi
}
\def\HyPat@NonNegativeReal/{%
@@ -6503,8 +6410,7 @@
\ifx\\#1\\%
\def\@pdfremotestartview{/Fit}%
\else
- \hypercalcbpdef\@pdfremotestartview{#1}%
- \edef\@pdfremotestartview{\@pdfremotestartview}%
+ \edef\@pdfremotestartview{#1}%
\Hy@Match\@pdfremotestartview{}{%
^(XYZ(%
()| %
@@ -7822,6 +7728,56 @@
}
% \end{macrocode}
%
+% \begin{macro}{\hyperget}
+% To create manually bookmarks one need the destination name.
+% If there is a label, the name can be retrieved with commands from refcount.
+% Such a destination name must take |\HyperDestNameFilter| into account
+% \begin{verbatim}
+% \HyperDestNameFilter{\getrefbykeydefault{label}{anchor}{Doc-Start}}
+% \end{verbatim}
+%
+% To make this easier, we define |\hyperget|
+% \begin{macrocode}
+\ExplSyntaxOn
+\cs_new:Npn \hyperget #1 #2
+ {
+ \use:c { __hyp_get_#1:n } { #2}
+ }
+
+\cs_new:Npn \__hyp_get_anchor:n #1
+ {
+ \HyperDestNameFilter
+ {
+ \cs_if_exist:cTF {r@#1}
+ {
+ \tl_item:cn {r@#1}{4}
+ }
+ {
+ Doc-Start
+ }
+ }
+ }
+\cs_new:Npn \__hyp_get_pageanchor:n #1
+ {
+ \HyperDestNameFilter
+ {
+ \cs_if_exist:cTF {r@#1}
+ {
+ page. \tl_item:cn {r@#1}{2}
+ }
+ {
+ Doc-Start
+ }
+ }
+ }
+\cs_new:Npn \__hyp_get_currentanchor:n #1
+ {
+ \HyperDestNameFilter { \@currentHref }
+ }
+\ExplSyntaxOff
+% \end{macrocode}
+% \end{macro}
+
% \subsection{Link box support for XeTeX}
%
% \begin{macrocode}
@@ -8281,43 +8237,6 @@
}
% \end{macrocode}
%
-% \section{Compatibility with the \emph{\LaTeX{}2html} package}\label{latex2html}
-%
-% Map our macro names on to Nikos', so that documents prepared
-% for that system will work without change.
-%
-% Note, however, that the whole complicated structure for
-% segmenting documents is not supported; it is assumed that the user
-% will load |html.sty| first, and then |hyperref.sty|, so that the
-% definitions in |html.sty| take effect, and are then overridden
-% in a few circumstances by this package.
-% \begin{macrocode}
-\let\htmladdimg\hyperimage
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\htmladdnormallink#1#2{\href{#2}{#1}}
-\def\htmladdnormallinkfoot#1#2{\href{#2}{#1}\footnote{#2}}
-\def\htmlref#1#2{% anchor text, label
- \label@hyperref[{#2}]{#1}%
-}
-% \end{macrocode}
-% This is really too much. The \LaTeX2html package defines its own
-% |\hyperref| command, with a different syntax. Was this always here?
-% Its weird, anyway. We interpret it in the `printed' way, since
-% we are about fidelity to the page.
-% \begin{macrocode}
-\def\@@latextohtmlX{%
- \let\hhyperref\hyperref
- \def\hyperref##1##2##3##4{% anchor text for HTML
- % text to print before label in print
- % label
- % post-label text in print
- ##2\ref{##4}##3%
- }%
-}
-% \end{macrocode}
-%
% \section{Forms creation}
% Allow for creation of PDF or HTML forms. The effects here are
% limited somewhat by the need to support both output formats,
@@ -9108,35 +9027,18 @@
\afterassignment\Hy@defaultbpAux
\dimen@=#2bp\relax{#1}{#2}%
}
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname dimexpr\endcsname\relax
- \def\Hy@defaultbpAux#1\relax#2#3{%
- \ifx!#1!%
- \endgroup
- \def#2{#3}%
- \else
- \dimen@=.99626\dimen@
- \edef\x{\endgroup
- \def\noexpand#2{%
- \strip@pt\dimen@
- }%
- }\x
- \fi
- }%
-\else
- \def\Hy@defaultbpAux#1\relax#2#3{%
- \ifx!#1!%
- \endgroup
- \def#2{#3}%
- \else
- \edef\x{\endgroup
- \def\noexpand#2{%
- \strip@pt\dimexpr\dimen@*800/803\relax
- }%
- }\x
- \fi
- }%
-\fi
+\def\Hy@defaultbpAux#1\relax#2#3{%
+ \ifx!#1!%
+ \endgroup
+ \def#2{#3}%
+ \else
+ \edef\x{\endgroup
+ \def\noexpand#2{%
+ \strip@pt\dimexpr\dimen@*800/803\relax
+ }%
+ }\x
+ \fi
+}%
\define@key{Field}{borderstyle}{%
\let\Hy@temp\Fld@borderstyle
\def\Fld@borderstyle{#1}%
@@ -10656,9 +10558,29 @@
}
% \end{macrocode}
% \end{macro}
+% \begin{macro}{\hyper@hook@dest@make}
+% We define a hook to allow to overwrite the next destination name.
+% \begin{macrocode}
+\@ifl@t@r\fmtversion{2020-10-01}
+ {%
+ \NewHook{__hyp/dest/make }
+ \def\hyper@hook@dest@make
+ {\UseHook{__hyp/dest/make}}
+ \define@key{Hyp}{next-anchor}{%
+ \AddToHookNext{__hyp/dest/make}%
+ {\Hy@MakeCurrentHref{#1}}%
+ }
+ }
+ {
+ \def\hyper@hook@dest@make{}
+ }
+% \end{macrocode}
+% \end{macro}
% \begin{macro}{\hyper@makecurrent}
% Because of Babel mucking around, nullify |\textlatin| when making names.
% And |\@number| because of babel's lrbabel.def.
+% change 2021-08-15: For new formats we add a hook which allows
+% to overwrite the name of the next destination.
% \begin{macrocode}
\def\hyper@makecurrent#1{%
\begingroup
@@ -10705,6 +10627,7 @@
\else
\global\let\@currentHref\HyperGlobalCurrentHref
\fi
+ \hyper@hook@dest@make
}
% \end{macrocode}
% \end{macro}
@@ -10724,11 +10647,14 @@
% \end{macrocode}
% \end{macro}
% \begin{macro}{\Hy@MakeCurrentHrefAuto}
+% This command is e.g. used to create destinations for unnumbered sections and
+% chapters. For new formats we add a hook which allows
+% to overwrite the name of the next destination.
% \begin{macrocode}
-\def\Hy@MakeCurrentHrefAuto#1{%
- \Hy@GlobalStepCount\Hy@linkcounter
- \Hy@MakeCurrentHref{#1.\the\Hy@linkcounter}%
-}
+ \def\Hy@MakeCurrentHrefAuto#1{%
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \Hy@MakeCurrentHref{#1.\the\Hy@linkcounter}%
+ \hyper@hook@dest@make}
% \end{macrocode}
% \end{macro}
%
@@ -10740,86 +10666,6 @@
% \end{macrocode}
% \end{macro}
%
-%
-% \section{Package lastpage support}
-% Package lastpage directly writes the |\newlabel| command to the
-% aux file. Because package hyperref requires additional arguments,
-% the internal command |\lastpage@putlabel| is redefined.
-% The patch is deferred by |\AtBeginDocument|, because it is possible
-% that package lastpage is loaded after package hyperref.
-% The same algorithm (options hypertexnames and plainpages)
-% is used to get the page anchor name as
-% in |\Hy@EveryPageAnchor| (see sec. \ref{pagenum}).
-% The link will not work if option pageanchor is set to false.
-% \begin{macro}{\lastpage@putlabel}
-% \begin{macrocode}
-\Hy@AtBeginDocument{%
- \@ifclassloaded{revtex4}{%
- \@namedef{ver@lastpage.sty}{1994/06/25}%
- }{}%
- \@ifpackageloaded{lastpage}{%
- \ifHy@pageanchor
- \else
- \Hy@WarningNoLine{%
- The \string\pageref{LastPage} link doesn't work\MessageBreak
- with disabled option `pageanchor'%
- }%
- \fi
- \def\lastpage@putlabel{%
- \addtocounter{page}{-1}%
- \if@filesw
- \begingroup
- \let\@number\@firstofone
- \ifHy@pageanchor
- \ifHy@hypertexnames
- \ifHy@plainpages
- \def\Hy@temp{\arabic{page}}%
- \else
- \Hy@unicodefalse
- \pdfstringdef\Hy@temp{\thepage}%
- \fi
- \else
- \def\Hy@temp{\the\Hy@pagecounter}%
- \fi
- \fi
- \immediate\write\@auxout{%
- \string\newlabel
- {LastPage}{{}{\thepage}{}{%
- \ifHy@pageanchor page.\Hy@temp\fi}{}}%
- }%
- \endgroup
- \fi
- \addtocounter{page}{1}%
- }%
- \@ifclassloaded{revtex4}{%
- \begingroup
- \toks@\expandafter{\lastpage@putlabel}%
- \edef\x{\endgroup
- \def\noexpand\lastpage@putlabel{%
- \noexpand\stepcounter{page}%
- \the\toks@
- \noexpand\addtocounter{page}\noexpand\m@ne
- }%
- }%
- \x
- }{}%
- }{}%
-}
-%</package>
-%<*check>
-\checkpackage{lastpage}[1994/06/25]
-\checkcommand\def\lastpage@putlabel{%
- \addtocounter{page}{-1}%
- \immediate\write\@auxout{%
- \string\newlabel{LastPage}{{}{\thepage}}%
- }%
- \addtocounter{page}{1}%
-}
-%</check>
-%<*package>
-% \end{macrocode}
-% \end{macro}
-%
% \section{Package ifthen support}
%
% Since version 6.75a this is done in package nameref.
@@ -10875,17 +10721,12 @@
}{}
% \end{macrocode}
%
-% Package titletoc support:
-% \begin{macrocode}
-\@ifpackageloaded{titletoc}{%
- \def\ttl@gobblecontents#1#2#3#4{\ignorespaces}%
-}{}
-% \end{macrocode}
%
% \section{Package varioref support}
%
% Package nameref uses five arguments for the ref system.
% Fix provided by Felix Neubauer (\Email{felix.neubauer@gmx.net}).
+% This fix will no longer be needed with latex 2021-11-15.
% \begin{macrocode}
\AtBeginDocument{%
\def\Hy@varioref@undefined{{??}{??}{}{}{}}
@@ -10897,21 +10738,6 @@
\edef#1{\getpagerefnumber{#2}}%
}%
}{}
-% \end{macrocode}
-%
-% Package varioref redefines \cs{refstepcounter}, thus it needs
-% fixing, if the package is loaded *after* hyperref.
-% \begin{macrocode}
-\def\Hy@varioref@refstepcounter#1{%
- \stepcounter{#1}%
- \protected@edef\@currentlabel{%
- \csname p@#1\expandafter\endcsname\csname the#1\endcsname
- }%
-}
- \ifx\refstepcounter\Hy@varioref@refstepcounter
- \let\H@refstepcounter\refstepcounter
- \let\refstepcounter\Hy@saved@refstepcounter
- \fi
}
% \end{macrocode}
%
@@ -11471,7 +11297,8 @@
\floatingpenalty \@MM
\hsize\columnwidth
\@parboxrestore
- \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}%
+ \def\@currentcounter{footnote}%
+ \protected@edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}%
\@makefntext{}%
\rule{\z@}{\footnotesep}%
\bgroup
@@ -11861,83 +11688,6 @@
%<*package>
% \end{macrocode}
%
-% Revtex (bless its little heart) takes over |\bibcite| and looks
-% at the result to measure something. Make this a hypertext link
-% and it goes ape. Therefore, make an anodyne result first, call
-% its business, then go back to the real thing.
-% \begin{macrocode}
-\@ifclassloaded{revtex}{%
- \Hy@Info{*** compatibility with revtex **** }%
- \def\revtex@checking#1#2{%
- \expandafter\let\expandafter\T@temp\csname b@#1\endcsname
- \expandafter\def\csname b@#1\endcsname{#2}%
- \@SetMaxRnhefLabel{#1}%
- \expandafter\let\csname b@#1\endcsname\T@temp
- }%
-% \end{macrocode}
-% Tanmoy provided this replacement for CITEX. Lord knows what it does.
-% For chapterbib added: \@extra@b@citeb
-% \begin{macrocode}
- \@ifundefined{@CITE}{\def\@CITE{\@cite}}{}%
- \providecommand*{\@extra@b@citeb}{}%
- \def\@CITEX[#1]#2{%
- \let\@citea\@empty
- \leavevmode
- \unskip
- $^{%
- \scriptstyle
- \@CITE{%
- \@for\@citeb:=#2\do{%
- \@citea
- \def\@citea{,\penalty\@m\ }%
- \edef\@citeb{\expandafter\@firstofone\@citeb}%
- \if@filesw
- \immediate\write\@auxout{\string\citation{\@citeb}}%
- \fi
- \@ifundefined{b@\@citeb\extra@b@citeb}{%
- \mbox{\reset@font\bfseries ?}%
- \G@refundefinedtrue
- \@latex@warning{%
- Citation `\@citeb' on page \thepage \space undefined%
- }%
- }{%
- {\csname b@\@citeb\@extra@b@citeb\endcsname}%
- }%
- }%
- }{#1}%
- }$%
- }%
-% \end{macrocode}
-% No, life is too short. I am not going to understand the
-% Revtex |\@collapse| macro, I shall
-% just restore the original behaviour of |\@citex|;
-% sigh. This is SO vile.
-% \begin{macrocode}
- \def\@citex[#1]#2{%
- \let\@citea\@empty
- \@cite{%
- \@for\@citeb:=#2\do{%
- \@citea
- \def\@citea{,\penalty\@m\ }%
- \edef\@citeb{\expandafter\@firstofone\@citeb}%
- \if@filesw
- \immediate\write\@auxout{\string\citation{\@citeb}}%
- \fi
- \@ifundefined{b@\@citeb\@extra@b@citeb}{%
- \mbox{\reset@font\bfseries ?}%
- \G@refundefinedtrue
- \@latex@warning{%
- Citation `\@citeb' on page \thepage \space undefined%
- }%
- }{%
- \hbox{\csname b@\@citeb\@extra@b@citeb\endcsname}%
- }%
- }%
- }{#1}%
- }%
-}{}
-% \end{macrocode}
-%
% \subsection{Package harvard}
%
% Override Peter Williams' Harvard package; we have to
@@ -12209,9 +11959,8 @@
% generate a bad or null link. We avoid that by checking if the current
% destination is empty. But if `the most recent destination' is not
% what you expect, you will be in trouble.
-% \begin{macrocode}
% In newer \LaTeX\ releases this is defined to put a \verb|%| at the end of the
-% line in the \textt{toc}file.
+% line in the \texttt{toc}file.
% \begin{macrocode}
\providecommand\protected@file@percent{}
% \end{macrocode}
@@ -12700,210 +12449,6 @@
}
% \end{macrocode}
%
-% \section{Compatibility with foiltex}
-%
-% \begin{macrocode}
-\@ifclassloaded{foils}{%
- \providecommand*\ext@table{lot}%
- \providecommand*\ext@figure{lof}%
-}{}
-% \end{macrocode}
-%
-% \section{Compatibility with seminar slide package}\label{seminar}
-% This requires \texttt{seminar.bg2}, version 1.6 or later.
-% Contributions by Denis Girou (\Email{denis.girou@idris.fr}).
-% \begin{macrocode}
-\@ifclassloaded{seminar}{%
- \Hy@seminarslidestrue
- \providecommand\theHslide{\arabic{slide}}%
-}{%
- \Hy@seminarslidesfalse
-}
-\@ifpackageloaded{slidesec}{%
- \providecommand\theHslidesection {\arabic{slidesection}}%
- \providecommand\theHslidesubsection{%
- \theHslidesection.\arabic{slidesubsection}%
- }%
- \def\slide@heading[#1]#2{%
- \H@refstepcounter{slidesection}%
- \@addtoreset{slidesubsection}{slidesection}%
- \addtocontents{los}{%
- \protect\l@slide{\the\c@slidesection}{\ignorespaces#1}%
- {\@SCTR}{slideheading.\theslidesection}%
- }%
- \def\Hy@tempa{#2}%
- \ifx\Hy@tempa\@empty
- \else
- {%
- \edef\@currentlabel{%
- \csname p@slidesection\endcsname\theslidesection
- }%
- \makeslideheading{#2}%
- }%
- \fi
- \gdef\theslideheading{#1}%
- \gdef\theslidesubheading{}%
- \ifHy@bookmarksnumbered
- \def\Hy@slidetitle{\theslidesection\space #1}%
- \else
- \def\Hy@slidetitle{#1}%
- \fi
- \ifHy@hypertexnames
- \ifHy@naturalnames
- \hyper@@anchor{slideheading.\theslidesection}{\relax}%
- \Hy@writebookmark
- {\theslidesection}%
- {\Hy@slidetitle}%
- {slideheading.\theslidesection}%
- {1}%
- {toc}%
- \else
- \hyper@@anchor{slideheading.\theHslidesection}{\relax}%
- \Hy@writebookmark
- {\theslidesection}%
- {\Hy@slidetitle}%
- {slideheading.\theHslidesection}%
- {1}%
- {toc}%
- \fi
- \else
- \Hy@GlobalStepCount\Hy@linkcounter
- \hyper@@anchor{slideheading.\the\Hy@linkcounter}{\relax}%
- \Hy@writebookmark
- {\theslidesection}%
- {\Hy@slidetitle}%
- {slideheading.\the\Hy@linkcounter}%
- {1}%
- {toc}%
- \fi
- }%
- \def\slide@subheading[#1]#2{%
- \H@refstepcounter{slidesubsection}%
- \addtocontents{los}{%
- \protect\l@subslide{\the\c@slidesubsection}{\ignorespaces#1}%
- {\@SCTR}{slideheading.\theslidesubsection}%
- }%
- \def\Hy@tempa{#2}%
- \ifx\Hy@tempa\@empty
- \else
- {%
- \edef\@currentlabel{%
- \csname p@slidesubsection\endcsname\theslidesubsection
- }%
- \makeslidesubheading{#2}%
- }%
- \fi
- \gdef\theslidesubheading{#1}%
- \ifHy@bookmarksnumbered
- \def\Hy@slidetitle{\theslidesubsection\space #1}%
- \else
- \def\Hy@slidetitle{#1}%
- \fi
- \ifHy@hypertexnames
- \ifHy@naturalnames
- \hyper@@anchor{slideheading.\theslidesubsection}{\relax}%
- \Hy@writebookmark
- {\theslidesubsection}%
- {\Hy@slidetitle}%
- {slideheading.\theslidesubsection}%
- {2}%
- {toc}%
- \else
- \hyper@@anchor{slideheading.\theHslidesubsection}{\relax}%
- \Hy@writebookmark
- {\theslidesubsection}%
- {\Hy@slidetitle}%
- {slideheading.\theHslidesubsection}%
- {2}%
- {toc}%
- \fi
- \else
- \Hy@GlobalStepCount\Hy@linkcounter
- \hyper@@anchor{slideheading.\the\Hy@linkcounter}{\relax}%
- \Hy@writebookmark
- {\theslidesubsection}%
- {\Hy@slidetitle}%
- {slideheading.\the\Hy@linkcounter}%
- {1}%
- {toc}%
- \fi
- }%
- \providecommand*{\listslidename}{List of Slides}%
- \def\listofslides{%
- \section*{%
- \listslidename
- \@mkboth{%
- \expandafter\MakeUppercase\listslidename
- }{%
- \expandafter\MakeUppercase\listslidename
- }%
- }%
- \def\l@slide##1##2##3##4{%
- \slide@undottedcline{%
- \slidenumberline{##3}{\hyperlink{##4}{##2}}%
- }{}%
- }%
- \let\l@subslide\l@slide
- \@startlos
- }%
- \def\slide@contents{%
- \def\l@slide##1##2##3##4{%
- \slide@cline{\slidenumberline{##3}{\hyperlink{##4}{##2}}}{##3}%
- }%
- \let\l@subslide\@gobblefour
- \@startlos
- }%
- \def\Slide@contents{%
- \def\l@slide##1##2##3##4{%
- \ifcase\lslide@flag
- \message{##1 ** \the\c@slidesection}%
- \ifnum##1>\c@slidesection
- \def\lslide@flag{1}%
- {%
- \large
- \slide@cline{%
- \slidenumberline{$\Rightarrow\bullet$}%
- {\hyperlink{##4}{##2}}%
- }{##3}%
- }%
- \else
- {%
- \large
- \slide@cline{%
- \slidenumberline{$\surd\;\bullet$}%
- {\hyperlink{##4}{##2}}%
- }{##3}%
- }%
- \fi
- \or
- \def\lslide@flag{2}%
- {%
- \large
- \slide@cline{%
- \slidenumberline{$\bullet$}%
- {\hyperlink{##4}{##2}}%
- }{##3}%
- }%
- \or
- {%
- \large
- \slide@cline{%
- \slidenumberline{$\bullet$}%
- {\hyperlink{##4}{##2}}%
- }{##3}%
- }%
- \fi
- }%
- \def\l@subslide##1##2##3##4{%
- \ifnum\lslide@flag=1 %
- \@undottedtocline{2}{3.8em}{3.2em}{\hyperlink{##4}{##2}}{}%
- \fi
- }%
- \def\lslide@flag{0}%
- \@startlos
- }%
-}{}
-% \end{macrocode}
% This breaks TeX4ht, so leave it to last.
% Emend |\@setref| to put out a hypertext link as well as its
% normal text (which is used as an anchor).
@@ -13342,111 +12887,96 @@
% \item pdf\TeX\ 1.30, 2005-08-081: \cs{pdfminorversion}
% \end{itemize}
% \begin{macrocode}
-\let\Hy@pdfminorversion\relax
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname pdfminorversion\endcsname\relax
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname pdfoptionpdfminorversion\endcsname\relax
- \else
- \def\Hy@pdfminorversion{\pdfoptionpdfminorversion}%
+\def\Hy@pdfminorversion{\pdfoptionpdfminorversion}%
+\def\Hy@pdfminorversion{\pdfminorversion}%
+\ifHy@ocgcolorlinks
+ \ifnum\Hy@pdfmajorminor@version<105 %
+ \kvsetkeys{Hyp}{pdfversion=1.5}%
\fi
-\else
- \def\Hy@pdfminorversion{\pdfminorversion}%
\fi
-\@ifundefined{Hy@pdfminorversion}{%
- \PackageInfo{hyperref}{%
- PDF version is not set, because pdfTeX is too old (<1.10a)%
- }%
-}{%
- \ifHy@ocgcolorlinks
- \ifnum\Hy@pdfmajorminor@version<105 %
- \kvsetkeys{Hyp}{pdfversion=1.5}%
- \fi
+\ifHy@setpdfversion
+ \ifnum\Hy@pdf@majorminor@version<105 %
+ \ltx@IfUndefined{pdfobjcompresslevel}{%
+ }{%
+ \ifHy@verbose
+ \Hy@InfoNoLine{%
+ PDF object streams are disabled, because they are%
+ \MessageBreak
+ not supported in requested PDF version %
+ \Hy@pdf@majorversion.\Hy@pdf@minorversion
+ }%
+ \fi
+ \pdfobjcompresslevel=\ltx@zero
+ }%
\fi
- \ifHy@setpdfversion
- \ifnum\Hy@pdf@majorminor@version<105 %
- \ltx@IfUndefined{pdfobjcompresslevel}{%
- }{%
- \ifHy@verbose
- \Hy@InfoNoLine{%
- PDF object streams are disabled, because they are%
+ \ifnum\Hy@pdfmajorminor@version=\Hy@pdf@majorminor@version\relax
+ \else
+ \let\Hy@temp\ltx@empty
+ \def\Hy@temp@A#1#2{%
+ \ifnum#1>\ltx@zero
+ \edef\Hy@temp{%
+ \Hy@temp
+ \space\space
+ \the#1\space #2%
+ \ifnum#1=\ltx@one\else s\fi
+ \MessageBreak
+ }%
+ \fi
+ }%
+ \Hy@temp@A\pdflastobj{PDF object}%
+ \Hy@temp@A\pdflastxform{form XObject}%
+ \Hy@temp@A\pdflastximage{image XObject}%
+ \Hy@temp@A\pdflastannot{annotation}%
+ \ltx@IfUndefined{pdflastlink}{%
+ }{%
+ \Hy@temp@A\pdflastlink{link}%
+ }%
+ \ifx\Hy@temp\ltx@empty
+ \Hy@pdfmajorversion=\Hy@pdf@majorversion\relax
+ \Hy@pdfminorversion=\Hy@pdf@minorversion\relax
+ \else
+ \let\Hy@temp@A\ltx@empty
+ \ifnum\Hy@pdf@majorminor@version=104 %
+ \IfFileExists{pdf14.sty}{%
+ \def\Hy@temp@A{%
\MessageBreak
- not supported in requested PDF version %
- \Hy@pdf@majorversion.\Hy@pdf@minorversion
+ Or \string\RequirePackage{pdf14} can be used%
+ \MessageBreak
+ before \string\documentclass\space as shortcut%
}%
- \fi
- \pdfobjcompresslevel=\ltx@zero
- }%
- \fi
- \ifnum\Hy@pdfmajorminor@version=\Hy@pdf@majorminor@version\relax
- \else
- \let\Hy@temp\ltx@empty
- \def\Hy@temp@A#1#2{%
- \ifnum#1>\ltx@zero
- \edef\Hy@temp{%
- \Hy@temp
- \space\space
- \the#1\space #2%
- \ifnum#1=\ltx@one\else s\fi
+ }{}%
+ \fi
+ \Hy@WarningNoLine{%
+ The PDF version number could not be set,\MessageBreak
+ because some PDF objects are already written:%
+ \MessageBreak
+ \Hy@temp
+ The version should be set as early as possible:%
+ \MessageBreak
+ \space\space
+ \expandafter\string\Hy@pdfmajorversion=\Hy@pdf@majorversion, %
+ \expandafter\string\Hy@pdfminorversion=\Hy@pdf@minorversion
+ \string\relax
+ \ifnum\Hy@pdf@majorminor@version<105 %
+ \ltx@ifundefined{pdfobjcompresslevel}{%
+ }{%
\MessageBreak
+ \space\space
+ \string\pdfobjcompresslevel=0\string\relax
}%
\fi
+ \Hy@temp@A
}%
- \Hy@temp@A\pdflastobj{PDF object}%
- \Hy@temp@A\pdflastxform{form XObject}%
- \Hy@temp@A\pdflastximage{image XObject}%
- \Hy@temp@A\pdflastannot{annotation}%
- \ltx@IfUndefined{pdflastlink}{%
- }{%
- \Hy@temp@A\pdflastlink{link}%
- }%
- \ifx\Hy@temp\ltx@empty
- \Hy@pdfmajorversion=\Hy@pdf@majorversion\relax
- \Hy@pdfminorversion=\Hy@pdf@minorversion\relax
- \else
- \let\Hy@temp@A\ltx@empty
- \ifnum\Hy@pdf@majorminor@version=104 %
- \IfFileExists{pdf14.sty}{%
- \def\Hy@temp@A{%
- \MessageBreak
- Or \string\RequirePackage{pdf14} can be used%
- \MessageBreak
- before \string\documentclass\space as shortcut%
- }%
- }{}%
- \fi
- \Hy@WarningNoLine{%
- The PDF version number could not be set,\MessageBreak
- because some PDF objects are already written:%
- \MessageBreak
- \Hy@temp
- The version should be set as early as possible:%
- \MessageBreak
- \space\space
- \expandafter\string\Hy@pdfmajorversion=\Hy@pdf@majorversion, %
- \expandafter\string\Hy@pdfminorversion=\Hy@pdf@minorversion
- \string\relax
- \ifnum\Hy@pdf@majorminor@version<105 %
- \ltx@ifundefined{pdfobjcompresslevel}{%
- }{%
- \MessageBreak
- \space\space
- \string\pdfobjcompresslevel=0\string\relax
- }%
- \fi
- \Hy@temp@A
- }%
- \fi
\fi
- \PackageInfo{hyperref}{%
- \expandafter\string\Hy@pdfmajorversion.%
- \expandafter\string\Hy@pdfminorversion
- :=\number\Hy@pdf@majorversion.\number\Hy@pdf@minorversion\space
- }%
\fi
- \edef\Hy@pdf@majorversion{\number\Hy@pdfmajorversion}%
- \edef\Hy@pdf@minorversion{\number\Hy@pdfminorversion}%
-}
+ \PackageInfo{hyperref}{%
+ \expandafter\string\Hy@pdfmajorversion.%
+ \expandafter\string\Hy@pdfminorversion
+ :=\number\Hy@pdf@majorversion.\number\Hy@pdf@minorversion\space
+ }%
+\fi
+\edef\Hy@pdf@majorversion{\number\Hy@pdfmajorversion}%
+\edef\Hy@pdf@minorversion{\number\Hy@pdfminorversion}%
\Hy@DisableOption{pdfversion}%
% \end{macrocode}
%
@@ -18366,8 +17896,8 @@
}%
\let\HyField@afields\ltx@empty
\let\HyField@cofields\ltx@empty
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname pdflastlink\endcsname\relax
+\@ifundefined{pdflastlink}
+ {%
\let\HyField@AddToFields\relax
\PackageInfo{hyperref}{%
You need pdfTeX 1.40.0 for setting the /Fields entry.%
@@ -18375,8 +17905,8 @@
Adobe Reader/Acrobat accepts an empty /Field array,%
\MessageBreak
but other PDF viewers might complain%
- }%
-\else
+ }}%
+ {%
\let\HyField@AuxAddToFields\ltx@gobble
\let\HyField@AuxAddToCoFields\ltx@gobbletwo
\def\HyField@AfterAuxOpen{\Hy@AtBeginDocument}%
@@ -18471,7 +18001,7 @@
\fi
}%
}%
-\fi
+ }
\def\@Form[#1]{%
\@ifundefined{textcolor}{\let\textcolor\@gobble}{}%
\kvsetkeys{Form}{#1}%
@@ -19353,8 +18883,8 @@
%
% \begin{macro}{\Hy@escapestring}
% \begin{macrocode}
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname pdf@escapestring\endcsname\relax
+\@ifundefined{pdf@escapestring}
+ {%
\let\Hy@escapestring\@firstofone
\def\Hy@escapeform#1{%
\ifHy@pdfescapeform
@@ -19385,7 +18915,7 @@
}%
\fi
}%
-\else
+ }{%
\def\Hy@escapeform#1{%
\ifHy@pdfescapeform
\let\Hy@escapestring\pdfescapestring
@@ -19394,7 +18924,7 @@
\fi
}%
\Hy@escapeform{}%
-\fi
+ }
% \end{macrocode}
% \end{macro}
%
@@ -20350,12 +19880,9 @@
% \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
+\@ifundefined{chapter}
+ {\let\Hy@secnum@part\z@}
+ {\let\Hy@secnum@part\m@ne}
\def\@part{%
\ifnum\Hy@secnum@part>\c@secnumdepth
\phantomsection