diff options
author | Norbert Preining <norbert@preining.info> | 2023-04-21 03:01:30 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-04-21 03:01:30 +0000 |
commit | 00c9f050c86446bb1d460dfe75699189ae1627b3 (patch) | |
tree | 58caf8806f70f496b607486a7731bf9803b05f36 /macros/latex/contrib/hyperref/hyperref.dtx | |
parent | 4753a39245d0925a73cb20409999377eb9d2fd66 (diff) |
CTAN sync 202304210301
Diffstat (limited to 'macros/latex/contrib/hyperref/hyperref.dtx')
-rw-r--r-- | macros/latex/contrib/hyperref/hyperref.dtx | 358 |
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. |