summaryrefslogtreecommitdiff
path: root/macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-06-12 03:06:21 +0000
committerNorbert Preining <norbert@preining.info>2023-06-12 03:06:21 +0000
commitc17d6d7111c3e6e6d92d99ba3b5bf8caf4d5b911 (patch)
tree21258a888d61116f132680a78c8dc59f22c455df /macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.dtx
parent2b515a7d84c09167cb70bedb643c75426d4be4b1 (diff)
CTAN sync 202306120306
Diffstat (limited to 'macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.dtx')
-rw-r--r--macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.dtx135
1 files changed, 82 insertions, 53 deletions
diff --git a/macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.dtx b/macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.dtx
index 3a46b453e5..1c1ce7f44e 100644
--- a/macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.dtx
+++ b/macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.dtx
@@ -30,7 +30,7 @@
% \title{The \textsf{latex-lab-toc-kernel-changes} package\\
% Changes and additions to the kernel related to tagging and links in toc entries}
% \author{\LaTeX{} Project\thanks{Initial implementation done by Ulrike Fischer}}
-% \date{Version 0.82 2023-05-20}
+% \date{Version 0.83 2023-06-07}
%
% \maketitle
%
@@ -158,18 +158,16 @@
% \begin{macrocode}
\def\@contentsline@cfgpoint@before#1#2#3#4{}
\def\@contentsline@cfgpoint@after#1#2#3#4{}
-\def\@contentsline@arg@one{}%level
-\def\@contentsline@arg@two{}%text
-\def\@contentsline@arg@three{}%page
-\def\@contentsline@arg@four{}%destination
+% \end{macrocode}
+% for the hooks we need that the \cs{l@XX} pass also the destination and
+% that \cs{l@XX} takes three arguments.
+% TODO: test that, if there are two many problems we should pass the
+% destination through a command name ...
+% \begin{macrocode}
\def\contentsline#1#2#3#4%
{%
- \def\@contentsline@arg@one{#1}%level
- \def\@contentsline@arg@two{#2}%text
- \def\@contentsline@arg@three{#3}%page
- \def\@contentsline@arg@four{#4}%destination
\@contentsline@cfgpoint@before{#1}{#2}{#3}{#4}%
- %\gdef\@contentsline@destination{#4}%
+ \gdef\@contentsline@destination{#4}%
\csname l@#1\endcsname{#2}{#3}%
\@contentsline@cfgpoint@after{#1}{#2}{#3}{#4}%
}
@@ -180,16 +178,11 @@
%
% \cs{addcontentsline} should always write the unique counter representation
% \cs{@currentHref} so that we can create the |/Ref| key. At the same time
-% we need a hook, so that hyperref can add its bookmarks code. The generic hook
-% would be ok, but we need the arguments, so we store them first.
+% we need a hook, so that hyperref can add its bookmarks code, the generic hook
+% with arguments is ok.
%
% \begin{macrocode}
-\NewHook{cmd/addcontentsline/before}
-\def\addcontentsline#1#2#3{% toc extension, type, tag
- \def\addcontentsline@arg@one{#1}% name??
- \def\addcontentsline@arg@two{#2}%
- \def\addcontentsline@arg@three{#3}%
- \UseHook{cmd/addcontentsline/before}%
+\def\addcontentsline#1#2#3{% #1=toc extension, #2= heading type, tag
\addtocontents{#1}{%
\protect\contentsline{#2}{#3}{\thepage}{\@currentHref}\protected@file@percent
}}
@@ -227,10 +220,19 @@
% The text and the page
% hooks are used in manual \cs{l@xx} commands and in \cs{l@xx} defined by
% \cs{@dottedtocline} or by other means.
+% The arguments of the following hooks are:
+% \begin{itemize}
+% \item[\#1] level as a \emph{number} (integer expression), see above for the standard
+% numbering. The standard first argument of \cs{contentsline} is not used, as
+% \cs{@dottedtocline} knows only a number.
+% \item[\#2] content (the second argument of a \cs{contentsline}
+% \item[\#3] page (the third argument of a \cs{contentsline}
+% \item[\#3] target (the fourth argument of a \cs{contentsline}
+% \end{itemize}
% \begin{macrocode}
-\NewMirroredHookPair{contentsline/number/before}{contentsline/number/after}%
-\NewMirroredHookPair{contentsline/text/before}{contentsline/text/after}%
-\NewMirroredHookPair{contentsline/page/before}{contentsline/page/after}%
+\NewMirroredHookPairWithArguments{contentsline/number/before}{contentsline/number/after}{1}%
+\NewMirroredHookPairWithArguments{contentsline/text/before}{contentsline/text/after}{4}%
+\NewMirroredHookPairWithArguments{contentsline/page/before}{contentsline/page/after}{4}%
% \end{macrocode}
%
% The dot in the leader must be set as artifact.
@@ -238,6 +240,7 @@
% So we need a config point.
%
% \cs{@dottedtocline} needs hooks and formatting commands.
+% We add a sixth argument so that it can grab the destination too.
% \begin{macrocode}
\def\@dottedtocline@cfgpoint@leaders#1{#1}
@@ -250,9 +253,9 @@
\leavevmode
\@tempdima #3\relax
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
- \UseHook{contentsline/text/before}%
+ \UseHookWithArguments{contentsline/text/before}{4}{#1}{#4}{#5}{\@contentsline@destination}%
\csname contentsline@text@#1@format\endcsname{#4}%
- \UseHook{contentsline/text/after}%
+ \UseHookWithArguments{contentsline/text/after}{4}{#1}{#4}{#5}{\@contentsline@destination}%
\nobreak
\@dottedtocline@cfgpoint@leaders{%
\leaders\hbox{$\m@th
@@ -260,9 +263,9 @@
mu$}\hfill}%
\nobreak
\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor
- \UseHook{contentsline/page/before}%
+ \UseHookWithArguments{contentsline/page/before}{4}{#1}{#4}{#5}{\@contentsline@destination}%
#5%
- \UseHook{contentsline/page/after}%
+ \UseHookWithArguments{contentsline/page/after}{4}{#1}{#4}{#5}{\@contentsline@destination}%
\kern-\p@\kern\p@}%
\par}%
\fi}
@@ -273,19 +276,21 @@
% Inside or outside the box?
% \begin{macrocode}
\def\numberline#1{\hb@xt@\@tempdima{%
- \UseHook{contentsline/number/before}%
+ \UseHookWithArguments{contentsline/number/before}{1}{#1}%
#1\hfil
- \UseHook{contentsline/number/after}%
+ \UseHookWithArguments{contentsline/number/after}{1}{#1}%
}}
% \end{macrocode}
%
% \subsubsection{\cs{l@xx} in the classes}
% Depending on the class we have to redefine also more commands
% For other classes it should be documented what is needed.
+% Let the commands grab also the third arguments. If a class redefines them again
+% it will break tagging anyway.
% \begin{macrocode}
\AddToHook{class/article/after}
{
- \renewcommand*\l@part[2]{%
+ \renewcommand*\l@part[2]{% as in contentsline: content, page
\ifnum \c@tocdepth >-2\relax
\addpenalty\@secpenalty
\addvspace{2.25em \@plus\p@}%
@@ -295,14 +300,18 @@
\parfillskip -\@pnumwidth
{\leavevmode
\large \bfseries
- \UseHook{contentsline/text/before}%
+ \UseHookWithArguments{contentsline/text/before}{4}
+ {\toclevel@part}{#1}{#2}{\@contentsline@destination}%
\csname contentsline@text@-1@format\endcsname{#1}%
- \UseHook{contentsline/text/after}%
+ \UseHookWithArguments{contentsline/text/after}{4}
+ {\toclevel@part}{#1}{#2}{\@contentsline@destination}%
\hfil
\hb@xt@\@pnumwidth{\hss
- \UseHook{contentsline/page/before}%
+ \UseHookWithArguments{contentsline/page/before}{4}
+ {\toclevel@part}{#1}{#2}{\@contentsline@destination}%
#2%
- \UseHook{contentsline/page/after}%
+ \UseHookWithArguments{contentsline/page/after}{4}
+ {\toclevel@part}{#1}{#2}{\@contentsline@destination}%
\kern-\p@\kern\p@}}\par
\nobreak
\endgroup
@@ -318,14 +327,18 @@
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
- \UseHook{contentsline/text/before}%
+ \UseHookWithArguments{contentsline/text/before}{4}
+ {\toclevel@section}{#1}{#2}{\@contentsline@destination}%
\csname contentsline@text@1@format\endcsname{#1}%
- \UseHook{contentsline/text/after}%
+ \UseHookWithArguments{contentsline/text/after}{4}
+ {\toclevel@section}{#1}{#2}{\@contentsline@destination}%
\nobreak\hfil
\nobreak\hb@xt@\@pnumwidth{\hss
- \UseHook{contentsline/page/before}%
+ \UseHookWithArguments{contentsline/page/before}{4}
+ {\toclevel@section}{#1}{#2}{\@contentsline@destination}%
#2%
- \UseHook{contentsline/page/after}%
+ \UseHookWithArguments{contentsline/page/after}{4}
+ {\toclevel@section}{#1}{#2}{\@contentsline@destination}%
\kern-\p@\kern\p@}\par
\endgroup
\fi}
@@ -342,14 +355,18 @@
\parfillskip -\@pnumwidth
{\leavevmode
\large \bfseries
- \UseHook{contentsline/text/before}%
+ \UseHookWithArguments{contentsline/text/before}{4}
+ {\toclevel@part}{#1}{#2}{\@contentsline@destination}%
\csname contentsline@text@-1@format\endcsname{#1}%
- \UseHook{contentsline/text/after}%
+ \UseHookWithArguments{contentsline/text/after}{4}
+ {\toclevel@part}{#1}{#2}{\@contentsline@destination}%
\hfil
- \hb@xt@\@pnumwidth{\hss
- \UseHook{contentsline/page/before}%
+ \hb@xt@\@pnumwidth{\hss
+ \UseHookWithArguments{contentsline/page/before}{4}
+ {\toclevel@part}{#1}{#2}{\@contentsline@destination}%
#2%
- \UseHook{contentsline/page/after}%
+ \UseHookWithArguments{contentsline/page/after}{4}
+ {\toclevel@part}{#1}{#2}{\@contentsline@destination}%
\kern-\p@\kern\p@}}\par
\nobreak
\endgroup
@@ -365,15 +382,19 @@
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
- \UseHook{contentsline/text/before}%
+ \UseHookWithArguments{contentsline/text/before}{4}
+ {\toclevel@chapter}{#1}{#2}{\@contentsline@destination}%
\csname contentsline@text@0@format\endcsname
{#1}%
- \UseHook{contentsline/text/after}%
+ \UseHookWithArguments{contentsline/text/after}{4}
+ {\toclevel@chapter}{#1}{#2}{\@contentsline@destination}%
\nobreak\hfil
\nobreak\hb@xt@\@pnumwidth{\hss
- \UseHook{contentsline/page/before}%
+ \UseHookWithArguments{contentsline/page/before}{4}
+ {\toclevel@chapter}{#1}{#2}{\@contentsline@destination}%%
#2%
- \UseHook{contentsline/page/after}%
+ \UseHookWithArguments{contentsline/page/after}{4}
+ {\toclevel@chapter}{#1}{#2}{\@contentsline@destination}%%
\kern-\p@\kern\p@}\par
\penalty\@highpenalty
\endgroup
@@ -391,14 +412,18 @@
\parfillskip -\@pnumwidth
{\leavevmode
\large \bfseries
- \UseHook{contentsline/text/before}%
+ \UseHookWithArguments{contentsline/text/before}{4}
+ {\toclevel@part}{#1}{#2}{\@contentsline@destination}%%
\csname contentsline@text@-1@format\endcsname{#1}%
- \UseHook{contentsline/text/after}%
+ \UseHookWithArguments{contentsline/text/after}{4}
+ {\toclevel@part}{#1}{#2}{\@contentsline@destination}%%
\hfil
\hb@xt@\@pnumwidth{\hss
- \UseHook{contentsline/page/before}%
+ \UseHookWithArguments{contentsline/page/before}{4}
+ {\toclevel@part}{#1}{#2}{\@contentsline@destination}%%
#2%
- \UseHook{contentsline/page/after}%
+ \UseHookWithArguments{contentsline/page/after}{4}
+ {\toclevel@part}{#1}{#2}{\@contentsline@destination}%%
\kern-\p@\kern\p@}}\par
\nobreak
\endgroup
@@ -414,15 +439,19 @@
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
- \UseHook{contentsline/text/before}%
+ \UseHookWithArguments{contentsline/text/before}{4}
+ {\toclevel@chapter}{#1}{#2}{\@contentsline@destination}%
\csname contentsline@text@0@format\endcsname
{#1}%
- \UseHook{contentsline/text/after}%
+ \UseHookWithArguments{contentsline/text/after}{4}
+ {\toclevel@chapter}{#1}{#2}{\@contentsline@destination}%
\nobreak\hfil
\nobreak\hb@xt@\@pnumwidth{\hss
- \UseHook{contentsline/page/before}%
+ \UseHookWithArguments{contentsline/page/before}{4}
+ {\toclevel@chapter}{#1}{#2}{\@contentsline@destination}%
#2%
- \UseHook{contentsline/page/after}%
+ \UseHookWithArguments{contentsline/page/after}{4}
+ {\toclevel@chapter}{#1}{#2}{\@contentsline@destination}%
\kern-\p@\kern\p@}\par
\penalty\@highpenalty
\endgroup