diff options
author | Norbert Preining <norbert@preining.info> | 2023-06-12 03:06:21 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-06-12 03:06:21 +0000 |
commit | c17d6d7111c3e6e6d92d99ba3b5bf8caf4d5b911 (patch) | |
tree | 21258a888d61116f132680a78c8dc59f22c455df /macros/latex-dev/required/latex-lab/latex-lab-toc-kernel-changes.dtx | |
parent | 2b515a7d84c09167cb70bedb643c75426d4be4b1 (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.dtx | 135 |
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 |