summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/hyperref/hyperref.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-04-21 03:01:30 +0000
committerNorbert Preining <norbert@preining.info>2023-04-21 03:01:30 +0000
commit00c9f050c86446bb1d460dfe75699189ae1627b3 (patch)
tree58caf8806f70f496b607486a7731bf9803b05f36 /macros/latex/contrib/hyperref/hyperref.dtx
parent4753a39245d0925a73cb20409999377eb9d2fd66 (diff)
CTAN sync 202304210301
Diffstat (limited to 'macros/latex/contrib/hyperref/hyperref.dtx')
-rw-r--r--macros/latex/contrib/hyperref/hyperref.dtx358
1 files changed, 127 insertions, 231 deletions
diff --git a/macros/latex/contrib/hyperref/hyperref.dtx b/macros/latex/contrib/hyperref/hyperref.dtx
index 33c8fa12a0..94376fea47 100644
--- a/macros/latex/contrib/hyperref/hyperref.dtx
+++ b/macros/latex/contrib/hyperref/hyperref.dtx
@@ -52,7 +52,7 @@
%<puvnenc>\ProvidesFile{puvnenc.def}
%<puarenc>\ProvidesFile{puarenc.def}
%<psdextra>\ProvidesFile{psdextra.def}
-%<!none&!packageEnd> [2023-02-07 v7.00v %
+%<!none&!packageEnd> [2023-04-20 v7.00w %
%<package> Hypertext links for LaTeX]
%<nohyperref> Dummy hyperref (SR)]
%<driver> Hyperref documentation driver file]
@@ -610,6 +610,7 @@
\RequirePackage{letltxmacro}[2008/06/13]
\RequirePackage{auxhook}[2009/12/14]
\RequirePackage{nameref}[2012/07/28]
+\RequirePackage{etoolbox}
\def\Hy@Error{\@PackageError{hyperref}}
\def\Hy@Warning{\@PackageWarning{hyperref}}
\def\Hy@WarningNoLine{\@PackageWarningNoLine{hyperref}}
@@ -1038,31 +1039,27 @@
%
% \cs{MakeUppercase} and \cs{MakeLowercase} do not work by expansion in
% legacy code but if the expl3 code is available we can handle them.
-% If babel is used we can also make use of the language.
+% If a current babel or polyglossia is used we can also make use of the language.
%
% \begin{macro}{\MakeUppercaseUnsupportedInPdfStrings}
% \begin{macro}{\MakeLowercaseUnsupportedInPdfStrings}
% \begin{macrocode}
+\providecommand*\BCPdata[1]{}
\ExplSyntaxOn
\@ifundefined{text_uppercase:n}{}
{
- \def\MakeUppercaseUnsupportedInPdfStrings#1{\use:e {\text_uppercase:n {#1}}}
- \def\MakeLowercaseUnsupportedInPdfStrings#1{\use:e {\text_lowercase:n {#1}}}
- \AddToHook{package/babel/after}
- {
- \def\MakeUppercaseUnsupportedInPdfStrings#1
+ \def\MakeUppercaseUnsupportedInPdfStrings#1
{\use:e
{\exp_args:Ne
- \text_uppercase:nn{\localeinfo*{tag.bcp47}}{#1}
+ \text_uppercase:nn{\BCPdata { casing }}{#1}
}
}
- \def\MakeLowercaseUnsupportedInPdfStrings#1
+ \def\MakeLowercaseUnsupportedInPdfStrings#1
{\use:e
{\exp_args:Ne
- \text_lowercase:nn{\localeinfo*{tag.bcp47}}{#1}
+ \text_lowercase:nn{\BCPdata { casing }}{#1}
}
- }
- }
+ }
}
\ExplSyntaxOff
% \end{macrocode}
@@ -3123,16 +3120,6 @@
%
% \subsubsection{Protecting spaces}
%
-% \begin{macrocode}
-\RequirePackage{etexcmds}[2007/09/09]
-\ifetex@unexpanded
- \expandafter\@secondoftwo
-\else
- \expandafter\@firstoftwo
-\fi
-{%
-% \end{macrocode}
-%
% \begin{macro}{\HyPsd@ProtectSpaces}
% \cs{HyPsd@ProtectSpaces} calls with the expanded
% string \cs{HyPsd@@ProtectSpacesFi}. The expanded string is
@@ -3141,27 +3128,30 @@
% at the beginning or end of the string and grouping characters
% are not removed by the call of \cs{HyPsd@@ProtectSpacesFi}.
% \begin{macrocode}
- \def\HyPsd@ProtectSpaces#1{%
+\let\HyPsd@fi\fi
+\def\HyPsd@ProtectSpaces#1{%
+ \xdef#1{%
\iftrue
\expandafter\HyPsd@@ProtectSpacesFi
- \expandafter|\expandafter\@empty#1| \HyPsd@End#1%
- \fi
+ \expandafter|\expandafter\@empty#1| %
+ \HyPsd@fi
}%
+ \expandafter\HyPsd@RemoveMask#1\HyPsd@End#1%
+}%
% \end{macrocode}
% \end{macro}
% \begin{macro}{\HyPsd@@ProtectSpacesFi}
% The string can contain command tokens, so it is better
% to use an \cs{def} instead of an \cs{edef}.
% \begin{macrocode}
- \def\HyPsd@@ProtectSpacesFi#1 #2\HyPsd@End#3\fi{%
- \fi
- \ifx\scrollmode#2\scrollmode
- \HyPsd@RemoveMask#1\HyPsd@End#3%
- \else
- \gdef#3{#1\HyPsd@UnexpandableSpace#2}%
- \expandafter\HyPsd@@ProtectSpacesFi#3\HyPsd@End#3%
- \fi
- }%
+\def\HyPsd@@ProtectSpacesFi#1 #2\HyPsd@fi{%
+ \fi
+ \unexpanded{#1}%
+ \ifx\scrollmode#2\scrollmode
+ \else
+ \HyPsd@@ProtectSpacesFi\HyPsd@UnexpandableSpace#2%
+ \HyPsd@fi
+}%
% \end{macrocode}
% \end{macro}
%
@@ -3171,39 +3161,12 @@
% It is used by \cs{HyPsd@@ProtectSpacesFi} and by the code in
% \cs{pdfstringdef} that removes the grouping chararcters.
% \begin{macrocode}
- \def\HyPsd@RemoveMask|#1|\HyPsd@End#2{%
- \toks@\expandafter{#1}%
- \xdef#2{\the\toks@}%
- }%
+\def\HyPsd@RemoveMask|#1|\HyPsd@End#2{%
+ \xdef#2{\unexpanded\expandafter{#1}}%
+}%
% \end{macrocode}
% \end{macro}
%
-% \begin{macrocode}
-}{%
- \let\HyPsd@fi\fi
- \def\HyPsd@ProtectSpaces#1{%
- \xdef#1{%
- \iftrue
- \expandafter\HyPsd@@ProtectSpacesFi
- \expandafter|\expandafter\@empty#1| %
- \HyPsd@fi
- }%
- \expandafter\HyPsd@RemoveMask#1\HyPsd@End#1%
- }%
- \def\HyPsd@@ProtectSpacesFi#1 #2\HyPsd@fi{%
- \fi
- \etex@unexpanded{#1}%
- \ifx\scrollmode#2\scrollmode
- \else
- \HyPsd@@ProtectSpacesFi\HyPsd@UnexpandableSpace#2%
- \HyPsd@fi
- }%
- \def\HyPsd@RemoveMask|#1|\HyPsd@End#2{%
- \xdef#2{\etex@unexpanded\expandafter{#1}}%
- }%
-}
-% \end{macrocode}
-%
% \subsubsection{Remove grouping braces}
% \begin{macro}{\HyPsd@RemoveBraces}
% |#1| contains the expanded string, the result will
@@ -5150,6 +5113,21 @@
A current html.sty will do all necessary (re)definitions%
}%
}
+\DeclareVoidOption{hitex}{%
+ \ifhint
+ \IfFileExists{hhitex.def}
+ {\def\Hy@driver{hhitex}}%
+ {\Hy@Warning{%
+ Missing driver file `hhitex.def',\MessageBreak
+ ignoring hitex driver%
+ }}%
+ \else
+ \Hy@Error{%
+ Wrong driver option `hitex',\MessageBreak
+ because HiTeX is not detected%
+ }\@ehc
+ \fi
+}
% \end{macrocode}
% No more special treatment for ps2pdf. Let it sink or swim.
% \begin{macrocode}
@@ -5703,6 +5681,24 @@
\def\theoremautorefname{Teorem}%
\def\pageautorefname{side}%
}
+\def\HyLang@swedish{%
+ \def\equationautorefname{Ekvation}%
+ \def\footnoteautorefname{fotnot}%
+ \def\itemautorefname{punkt}%
+ \def\figureautorefname{Figur}%
+ \def\tableautorefname{Tabell}%
+ \def\partautorefname{Del}%
+ \def\appendixautorefname{Bilaga}%
+ \def\chapterautorefname{kapitel}%
+ \def\sectionautorefname{avsnitt}%
+ \def\subsectionautorefname{underavsnitt}%
+ \def\subsubsectionautorefname{under-underavsnitt}%
+ \def\paragraphautorefname{paragraf}%
+ \def\subparagraphautorefname{underparagraf}%
+ \def\FancyVerbLineautorefname{linje}%
+ \def\theoremautorefname{Teorem}%
+ \def\pageautorefname{sida}%
+}
% \end{macrocode}
%
% Instead of package babel's definition of \cmd{\addto} the
@@ -5764,6 +5760,8 @@
\HyLang@DeclareLang{austrian}{german}{}
\HyLang@DeclareLang{ngerman}{german}{}
\HyLang@DeclareLang{naustrian}{german}{}
+\HyLang@DeclareLang{nswissgerman}{german}{}
+\HyLang@DeclareLang{swissgerman}{german}{}
\HyLang@DeclareLang{russian}{russian}{\noexpand\hypersetup{unicode}}
\HyLang@DeclareLang{brazil}{portuges}{}
\HyLang@DeclareLang{brazilian}{portuges}{}
@@ -5784,6 +5782,7 @@
\HyLang@DeclareLang{norsk}{norsk}{}
\HyLang@DeclareLang{norwegian}{norsk}{}
\HyLang@DeclareLang{danish}{danish}{}
+\HyLang@DeclareLang{swedish}{swedish}{}
% \end{macrocode}
% More work is needed in case of options |vietnamese| and |vietnam|.
% \begin{macrocode}
@@ -6390,14 +6389,14 @@
\HyInfo@AddonList
\HyInfo@do{\HyInfo@Key}%
}%
- \kv@parse@normalized{%
+ \expandafter\kv@parse@normalized\expandafter{%
\HyInfo@Key={#2}%
}{%
\kv@processor@default{pdfinfo}%
}%
\fi
\else
- \kv@parse@normalized{%
+ \expandafter\kv@parse@normalized\expandafter{%
\HyInfo@Key={#2}%
}{%
\kv@processor@default{pdfinfo}%
@@ -7066,6 +7065,21 @@
\fi
\ifx\Hy@driver\@empty
\else
+ \def\Hy@temp{hhitex}%
+ \ifhint
+ \ifx\Hy@driver\Hy@temp
+ \else
+ \Hy@WarningNoLine{%
+ Wrong driver `\Hy@driver.def';\MessageBreak
+ hitex is running.\MessageBreak
+ Forcing driver `\Hy@temp.def'%
+ }%
+ \let\Hy@driver\Hy@temp
+ \fi
+ \fi
+ \fi
+ \ifx\Hy@driver\@empty
+ \else
\def\Hy@temp{hvtexhtm}%
\ifnum\ifvtex\OpMode\else\m@ne\fi=10 %
\ifx\Hy@driver\Hy@temp
@@ -7118,31 +7132,35 @@
\endinput
}%
\else
- \ifnum\ifvtex\OpMode\else\m@ne\fi=\@ne
- \def\Hy@driver{hvtex}%
+ \ifhint
+ \def\Hy@driver{hhitex}
\else
- \ifnum\ifvtex\OpMode\else\m@ne\fi=\tw@
+ \ifnum\ifvtex\OpMode\else\m@ne\fi=\@ne
\def\Hy@driver{hvtex}%
\else
- \ifx\HyOpt@DriverFallback\ltx@empty
- \let\Hy@driver\Hy@defaultdriver
- \def\HyOpt@DriverType{ (default)}%
+ \ifnum\ifvtex\OpMode\else\m@ne\fi=\tw@
+ \def\Hy@driver{hvtex}%
\else
- \begingroup
- \toks@\expandafter{\HyOpt@DriverFallback}%
- \edef\x{\endgroup
- \noexpand\kvsetkeys{Hyp}{\the\toks@}%
- }%
- \x
- \ifx\Hy@driver\ltx@empty
+ \ifx\HyOpt@DriverFallback\ltx@empty
\let\Hy@driver\Hy@defaultdriver
\def\HyOpt@DriverType{ (default)}%
\else
- \def\HyOpt@DriverType{ (fallback)}%
+ \begingroup
+ \toks@\expandafter{\HyOpt@DriverFallback}%
+ \edef\x{\endgroup
+ \noexpand\kvsetkeys{Hyp}{\the\toks@}%
+ }%
+ \x
+ \ifx\Hy@driver\ltx@empty
+ \let\Hy@driver\Hy@defaultdriver
+ \def\HyOpt@DriverType{ (default)}%
+ \else
+ \def\HyOpt@DriverType{ (fallback)}%
+ \fi
\fi
\fi
\fi
- \fi
+ \fi
\fi
\fi
\fi
@@ -10755,6 +10773,7 @@
% \cmd{\H@refstepcounter} without anchor generation
% \begin{macrocode}
\@ifpackageloaded{longtable}{%
+\@ifundefined{hyper@nopatch@longtable}{%
\begingroup
\def\y{\LT@array}%
\@ifundefined{scr@LT@array}{%
@@ -10788,6 +10807,7 @@
}%
}%
\expandafter\x\LT@start\@nil
+ }{}
}{}
% \end{macrocode}
%
@@ -10955,156 +10975,31 @@
\fi
% \end{macrocode}
%
-% Support for package \texttt{amsthm} (Daniel M\"ullner):
-% also \texttt{cleveref}.
-% \begin{macrocode}
-\Hy@AtBeginDocument{%
-\@ifpackageloaded{cleveref}{%
-\let\Hy@savedthm\@thm
-\def\@thm{\ifhmode\unskip\fi\Hy@savedthm}%
-}{%
-\@ifpackageloaded{amsthm}{%
-% \end{macrocode}
-% Class amsbook uses a different definition of \cs{@thm},
-% where two lines are added (thanks to Dan Luecking for
-% his analysis):
-%\begin{quote}
-%\begin{verbatim}
-%\let\thm@indent\indent % indent
-%\thm@headfont{\scshape}% heading font small caps
-%\end{verbatim}
-%\end{quote}
-% \begin{macrocode}
- \def\Hy@temp#1#2#3{%
- \ifhmode\unskip\unskip\par\fi
- \normalfont
- \trivlist
- \let\thmheadnl\relax
- \let\thm@swap\@gobble
- \let\thm@indent\indent % indent
- \thm@headfont{\scshape}% heading font small caps
- \thm@notefont{\fontseries\mddefault\upshape}%
- \thm@headpunct{.}% add period after heading
- \thm@headsep 5\p@ plus\p@ minus\p@\relax
- \thm@space@setup
- #1% style overrides
- \@topsep \thm@preskip % used by thm head
- \@topsepadd \thm@postskip % used by \@endparenv
- \def\@tempa{#2}\ifx\@empty\@tempa
- \def\@tempa{\@oparg{\@begintheorem{#3}{}}[]}%
- \else
- \refstepcounter{#2}%
- \def\@tempa{%
- \@oparg{\@begintheorem{#3}{\csname the#2\endcsname}}[]%
- }%
- \fi
- \@tempa
- }%
- \ifx\Hy@temp\@thm
- \def\@thm#1#2#3{%
- \ifhmode
- \unskip\unskip\par
- \fi
- \normalfont
- \trivlist
- \let\thmheadnl\relax
- \let\thm@swap\@gobble
- \let\thm@indent\indent % indent
- \thm@headfont{\scshape}% heading font small caps
- \thm@notefont{\fontseries\mddefault\upshape}%
- \thm@headpunct{.}% add period after heading
- \thm@headsep 5\p@ plus\p@ minus\p@\relax
- \thm@space@setup
- #1% style overrides
- \@topsep \thm@preskip % used by thm head
- \@topsepadd \thm@postskip % used by \@endparenv
- \def\dth@counter{#2}%
- \ifx\@empty\dth@counter
- \def\@tempa{%
- \@oparg{\@begintheorem{#3}{}}[]%
- }%
- \else
- \H@refstepcounter{#2}%
- \hyper@makecurrent{#2}%
- \let\Hy@dth@currentHref\@currentHref
- \def\@tempa{%
- \@oparg{\@begintheorem{#3}{\csname the#2\endcsname}}[]%
- }%
- \fi
- \@tempa
- }%
- \else
- \def\@thm#1#2#3{%
- \ifhmode
- \unskip\unskip\par
- \fi
- \normalfont
- \trivlist
- \let\thmheadnl\relax
- \let\thm@swap\@gobble
- \thm@notefont{\fontseries\mddefault\upshape}%
- \thm@headpunct{.}% add period after heading
- \thm@headsep 5\p@ plus\p@ minus\p@\relax
- \thm@space@setup
- #1% style overrides
- \@topsep \thm@preskip % used by thm head
- \@topsepadd \thm@postskip % used by \@endparenv
- \def\dth@counter{#2}%
- \ifx\@empty\dth@counter
- \def\@tempa{%
- \@oparg{\@begintheorem{#3}{}}[]%
- }%
- \else
- \H@refstepcounter{#2}%
- \hyper@makecurrent{#2}%
- \let\Hy@dth@currentHref\@currentHref
- \def\@tempa{%
- \@oparg{\@begintheorem{#3}{\csname the#2\endcsname}}[]%
- }%
- \fi
- \@tempa
- }%
- \fi
- \dth@everypar={%
- \@minipagefalse
- \global\@newlistfalse
- \@noparitemfalse
- \if@inlabel
- \global\@inlabelfalse
- \begingroup
- \setbox\z@\lastbox
- \ifvoid\z@
- \kern-\itemindent
- \fi
- \endgroup
- \ifx\@empty\dth@counter
- \else
- \Hy@raisedlink{%
- \hyper@anchorstart{%
- \ltx@ifundefined{Hy@dth@currentHref}%
- \@currentHref\Hy@dth@currentHref
- }\hyper@anchorend
- }%
- \fi
- \unhbox\@labels
- \fi
- \if@nobreak
- \@nobreakfalse \clubpenalty\@M
- \else
- \clubpenalty\@clubpenalty \everypar{}%
- \fi
- }%
-}%
-% \end{macrocode}
-% non \texttt{amsthm} case, remove final space on line before a theorem
-% for githib issue 11.
+% Support for theorems. We move the target into the para hook to
+% avoid spacing problem. The patch will not apply to
+% \texttt{cleveref} but hopefully it does the right thing anyway.
+% \cs{@currentHref} is updated directly for labels set before
+% the actual start of the paragraph. The target can be behind
+% a target created from a following list, so we restore \cs{@currentHref}
+% just in case
+%
+%
% \begin{macrocode}
-{%
-\let\Hy@savedthm\@thm
-\def\@thm{\ifhmode\unskip\fi\Hy@savedthm}%
-}%
-}%
-}
+\newcommand\Hy@theorem@refstepcounter[1]
+ {%
+ \H@refstepcounter{#1}%
+ \hyper@makecurrent{#1}%
+ \global\let\Hy@dth@currentHref\@currentHref
+ \AddToHookNext{para/begin}
+ {\let\Hy@tempa\@currentHref
+ \MakeLinkTarget*{\Hy@dth@currentHref}%
+ \global\let\@currentHref\Hy@tempa
+ }%
+ }
+\AtBeginDocument{%
+\ifpatchable\@thm{\refstepcounter}
+ {\patchcmd\@thm{\refstepcounter}{\Hy@theorem@refstepcounter}{}{}}
+ {}}
% \end{macrocode}
%
% \section{Footnotes}\label{footnotes}
@@ -11410,6 +11305,7 @@
% we can't just copy the definition of |\@caption|. Its all to do
% with expansion. It screws up. Sigh.
% \begin{macrocode}
+\@ifundefined{hyper@nopatch@caption}{%
\def\caption{%
\ifx\@captype\@undefined
\@latex@error{\noexpand\caption outside float}\@ehd
@@ -11473,7 +11369,7 @@
\fi
\par
\endgroup
-}
+}}{}%end no patch
% \end{macrocode}
% Compatibility with float.sty: anchor setting at the top
% of the float, if the float is controlled by float.sty.