diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/hyperref/hyperref.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/hyperref/hyperref.dtx | 901 |
1 files changed, 214 insertions, 687 deletions
diff --git a/Master/texmf-dist/source/latex/hyperref/hyperref.dtx b/Master/texmf-dist/source/latex/hyperref/hyperref.dtx index 0a573a038b1..20414ef7e84 100644 --- a/Master/texmf-dist/source/latex/hyperref/hyperref.dtx +++ b/Master/texmf-dist/source/latex/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 |