diff options
author | Norbert Preining <norbert@preining.info> | 2023-05-26 03:02:08 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-05-26 03:02:08 +0000 |
commit | 8057c647880f05a2624b3d04ab0eb38d5cbf8c18 (patch) | |
tree | 2df10dbc859977e89de9b6797303c039106aca37 /macros/latex-dev/base/ltxref.dtx | |
parent | ed4c98e3a1f3e2160094ac1b05cfc304832cce4d (diff) |
CTAN sync 202305260302
Diffstat (limited to 'macros/latex-dev/base/ltxref.dtx')
-rw-r--r-- | macros/latex-dev/base/ltxref.dtx | 93 |
1 files changed, 82 insertions, 11 deletions
diff --git a/macros/latex-dev/base/ltxref.dtx b/macros/latex-dev/base/ltxref.dtx index dcfebf0e7e..0f842e4312 100644 --- a/macros/latex-dev/base/ltxref.dtx +++ b/macros/latex-dev/base/ltxref.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltxref.dtx} - [2022/04/12 v1.1p LaTeX Kernel (Cross Referencing)] + [2023/05/16 v1.1q LaTeX Kernel (Cross Referencing)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltxref.dtx} @@ -93,6 +93,15 @@ % to align with the use of \pkg{hyperref}. Without \pkg{hyperref} (or some % other package using the starred form) the star is simply ignored. % +% Note: starting with 2023-06-01 |\label| stores also the current value +% of |\@currentlabelname| which should typically contain a (sanitized) title. +% (A reference command |\nameref| is provided by the \pkg{nameref} package.) +% |\label| also stores |\@currentHref| which if set should refer to a target name +% for links. This value is set and used by \pkg{hyperref}. Unlike the other values +% |\@currentHref| should be set globally. A fifth value |\@kernel@reserved@label@data| +% is reserved for the kernel to allow future extensions of the cross-reference +% system. +% % % \MaybeStop{} % @@ -108,7 +117,8 @@ % incremented by the command \refstepcounter{CNT} , which sets % \@currentlabel == {CNT}{eval(\p@cnt\theCNT)}. The command % \label{FOO} then writes the following on file \@auxout : -% \newlabel{FOO}{{eval(\@currentlabel)}{eval(\thepage)}} +% \newlabel{FOO}{{eval(\@currentlabel)}{eval(\thepage)}% +% {eval(\@currentlabelname)}{eval(\@currentHref)}{eval(\@kernel@reserved@label@data)}} % % \ref{FOO} == % BEGIN @@ -228,6 +238,10 @@ % % RmS 93/09/08: Added setting of refundefined switch. % \begin{macrocode} +%</2ekernel> +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2023/06/01}% +%<latexrelease> {\@kernel@sref}{store five arguments}% \def\@setref#1#2#3{% \ifx#1\relax \protect\G@refundefinedtrue @@ -235,19 +249,53 @@ \@latex@warning{Reference `#3' on page \thepage \space undefined}% \else - \expandafter#2#1\null + \expandafter#2#1\@empty\@empty\@empty\null \fi} % \end{macrocode} % \begin{macrocode} -%</2ekernel> -%<*2ekernel|latexrelease> +\long\def\@firstoffive#1#2#3#4#5{#1} +\long\def\@secondoffive#1#2#3#4#5{#2} +\def\@kernel@sref#1{\expandafter\@setref\csname r@#1\endcsname\@firstoffive{#1}} +\def\@kernel@spageref#1{\expandafter\@setref\csname r@#1\endcsname + \@secondoffive{#1}} +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{2022/06/01}% +%<latexrelease> {\@kernel@sref}{store five arguments}% +%<latexrelease>\def\@setref#1#2#3{% +%<latexrelease> \ifx#1\relax +%<latexrelease> \protect\G@refundefinedtrue +%<latexrelease> \nfss@text{\reset@font\bfseries ??}% +%<latexrelease> \@latex@warning{Reference `#3' on page \thepage \space +%<latexrelease> undefined}% +%<latexrelease> \else +%<latexrelease> \expandafter#2#1\null +%<latexrelease> \fi} +%<latexrelease>\let\@firstoffive\undefined +%<latexrelease>\let\@secondoffive\undefined +%<latexrelease>\def\@kernel@sref#1{\expandafter\@setref\csname r@#1\endcsname\@firstoftwo{#1}} +%<latexrelease>\def\@kernel@spageref#1{\expandafter\@setref\csname r@#1\endcsname +%<latexrelease> \@secondoftwo{#1}} +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\@kernel@sref}{store five arguments}% +%<latexrelease>\def\@setref#1#2#3{% +%<latexrelease> \ifx#1\relax +%<latexrelease> \protect\G@refundefinedtrue +%<latexrelease> \nfss@text{\reset@font\bfseries ??}% +%<latexrelease> \@latex@warning{Reference `#3' on page \thepage \space +%<latexrelease> undefined}% +%<latexrelease> \else +%<latexrelease> \expandafter#2#1\null +%<latexrelease> \fi} +%<latexrelease>\let\@firstoffive\undefined +%<latexrelease>\let\@secondoffive\undefined +%<latexrelease>\let\@kernel@sref\undefined +%<latexrelease>\let\@kernel@spageref\undefined +%<latexrelease>\EndIncludeInRelease %<latexrelease>\IncludeInRelease{2022/06/01}% %<latexrelease> {\ref}{Add starred reference commands}% % \end{macrocode} % \begin{macrocode} -\def\@kernel@sref#1{\expandafter\@setref\csname r@#1\endcsname\@firstoftwo{#1}} -\def\@kernel@spageref#1{\expandafter\@setref\csname r@#1\endcsname - \@secondoftwo{#1}} \let\@kernel@ref\@kernel@sref \let\@kernel@pageref\@kernel@spageref \NewDocumentCommand\ref{s} @@ -334,6 +382,8 @@ % \begin{macro}{\label} % \changes{v1.1d}{1994/11/04}{(ASAJ)Added \cs{protected@write}} % \changes{v1.1d}{1994/11/04}{(ASAJ)Added \cs{protected@edef}} +% \changes{v1.1q}{2023/05/12}{(UFi)extended to store five arguments} +% \changes{v1.1q}{2023/05/12}{(UFi)added a hook with argument} % The commands |\label| and |\refstepcounter| have been changed to % allow |\protect|'ed commands to work properly. For example, %\begin{verbatim} @@ -343,16 +393,27 @@ % to something like |\foo{4.d}|. Change made 20 Jul 88. % % \begin{macrocode} +%</2ekernel> +%<*2ekernel|latexrelease> +%<latexrelease>\IncludeInRelease{2023/06/01}% +%<latexrelease> {\label}{store five label arguments}% +\providecommand\@currentlabelname{} +\providecommand\@currentHref{} +\providecommand\@kernel@reserved@label@data{} +\NewHookWithArguments{label}{1} \def\label#1{\@bsphack + \begingroup + \UseHookWithArguments{label}{1}{#1}% \protected@write\@auxout{}% - {\string\newlabel{#1}{{\@currentlabel}{\thepage}}}% + {\string\newlabel{#1}{{\@currentlabel}{\thepage}% + {\@currentlabelname}{\@currentHref}{\@kernel@reserved@label@data}}}% + \endgroup \@esphack} +%<latexrelease>\EndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macrocode} -%</2ekernel> -%<*2ekernel|latexrelease> %<latexrelease>\IncludeInRelease{2022/06/01}% %<latexrelease> {\Ref}{Add starred version}% % \end{macrocode} @@ -432,6 +493,16 @@ % \begin{macrocode} %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{0000/00/00}% +%<latexrelease> {\label}{store five label arguments}% +%<latexrelease>\let\@currenttitle\@undefined +%<latexrelease>\let\@currenttarget\@undefined +%<latexrelease>\let\@kernel@currentdata\@undefined +%<latexrelease>\def\label#1{\@bsphack +%<latexrelease> \protected@write\@auxout{}% +%<latexrelease> {\string\newlabel{#1}{{\@currentlabel}{\thepage}}}% +%<latexrelease> \@esphack} +%<latexrelease>\EndIncludeInRelease %<latexrelease>\IncludeInRelease{2020/10/01}% %<latexrelease> {\Ref}{Add starred version}% %<latexrelease>\def\@currentcounter{} |