[latex3-commits] [latex3/latex2e] lab-review-01: review toc tagging + hooks, WIP (027f93f3)

github at latex-project.org github at latex-project.org
Wed May 24 20:24:28 CEST 2023


Repository : https://github.com/latex3/latex2e
On branch  : lab-review-01
Link       : https://github.com/latex3/latex2e/commit/027f93f39de655ddcfa6aac546fb755ccaa66006

>---------------------------------------------------------------

commit 027f93f39de655ddcfa6aac546fb755ccaa66006
Author: Ulrike Fischer <fischer at troubleshooting-tex.de>
Date:   Wed May 24 20:24:28 2023 +0200

    review toc tagging + hooks, WIP


>---------------------------------------------------------------

027f93f39de655ddcfa6aac546fb755ccaa66006
 .../latex-lab/latex-lab-toc-hyperref-changes.dtx   | 32 ++++----
 .../latex-lab/latex-lab-toc-kernel-changes.dtx     | 94 ++++++++++++----------
 2 files changed, 68 insertions(+), 58 deletions(-)

diff --git a/required/latex-lab/latex-lab-toc-hyperref-changes.dtx b/required/latex-lab/latex-lab-toc-hyperref-changes.dtx
index 266fa290..90c70102 100644
--- a/required/latex-lab/latex-lab-toc-hyperref-changes.dtx
+++ b/required/latex-lab/latex-lab-toc-hyperref-changes.dtx
@@ -71,27 +71,27 @@
 \ExplSyntaxOn
 \AddToHook{package/hyperref/after}
  {
-   \AddToHook{contentsline/text/before}[hyp]
+   \AddToHookWithArguments{contentsline/text/before}[hyp]
      {
-       \tl_if_blank:VF \@contentsline at arg@two%text
+       \tl_if_blank:nF {#2}%text
         {
-          \tl_if_blank:VF\@contentsline at arg@four%destination
+          \tl_if_blank:nF {#4}%destination
             {
               \int_case:nnF {\Hy at linktoc}
                 {
                   {0}{} %none
-                  {1}{\hyper at linkstart{link}{\@contentsline at arg@four}} %section
+                  {1}{\hyper at linkstart{link}{#4}} %section
                   {2}{} %page
                 }
-                {\hyper at linkstart{link}{\@contentsline at arg@four}} %all
+                {\hyper at linkstart{link}{#4}} %all
             }
           }
       }
-    \AddToHook{contentsline/text/after}[hyp]
+    \AddToHookWithArguments{contentsline/text/after}[hyp]
       {
-        \tl_if_blank:VF \@contentsline at arg@two
+        \tl_if_blank:nF {#2}
          {
-           \tl_if_blank:VF\@contentsline at arg@four
+           \tl_if_blank:nF {#4}
              {
                \int_case:nnF {\Hy at linktoc}
                  {
@@ -104,27 +104,27 @@
            }
        }
 
-    \AddToHook{contentsline/page/before}[hyp]
+    \AddToHookWithArguments{contentsline/page/before}[hyp]
       {
-        \tl_if_blank:VF \@contentsline at arg@three
+        \tl_if_blank:nF {#3}
          {
-           \tl_if_blank:VF\@contentsline at arg@two
+           \tl_if_blank:nF {#4} %????????? #4?
              {
                \int_case:nnF {\Hy at linktoc}
                  {
                    {0}{} %none
                    {1}{} %section
-                   {2}{\hyper at linkstart{link}{\@contentsline at arg@four}} %page
+                   {2}{\hyper at linkstart{link}{#4}} %page
                  }
-                 {\hyper at linkstart{link}{\@contentsline at arg@four}} %all
+                 {\hyper at linkstart{link}{#4}} %all
              } % none
            }
        }
-    \AddToHook{contentsline/page/after}[hyp]
+   \AddToHookWithArguments{contentsline/page/after}[hyp]
       {
-        \tl_if_blank:VF \@contentsline at arg@three
+        \tl_if_blank:nF {#3}
          {
-           \tl_if_blank:VF\@contentsline at arg@four
+           \tl_if_blank:nF {#4}
              {
                \int_case:nnF {\Hy at linktoc}
                  {
diff --git a/required/latex-lab/latex-lab-toc-kernel-changes.dtx b/required/latex-lab/latex-lab-toc-kernel-changes.dtx
index a4abb060..f819fc8e 100644
--- a/required/latex-lab/latex-lab-toc-kernel-changes.dtx
+++ b/required/latex-lab/latex-lab-toc-kernel-changes.dtx
@@ -158,19 +158,17 @@
 %    \begin{macrocode}
 \def\@contentsline at cfgpoint@before#1#2#3#4{}
 \def\@contentsline at cfgpoint@after#1#2#3#4{}
-\def\@contentsline at arg@one{}%level
-\def\@contentsline at arg@two{}%text
-\def\@contentsline at arg@three{}%page
-\def\@contentsline at arg@four{}%destination  
+%    \end{macrocode}
+% for the hooks we need that the \cs{l at XX} pass also the destination and
+% that \cs{l at 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 at arg@one{#1}%level
-    \def\@contentsline at arg@two{#2}%text
-    \def\@contentsline at arg@three{#3}%page
-    \def\@contentsline at arg@four{#4}%destination  
     \@contentsline at cfgpoint@before{#1}{#2}{#3}{#4}%
     %\gdef\@contentsline at destination{#4}%
-    \csname l@#1\endcsname{#2}{#3}%
+    \csname l@#1\endcsname{#2}{#3}{#4}%
     \@contentsline at cfgpoint@after{#1}{#2}{#3}{#4}%
   }
 %    \end{macrocode}
@@ -224,10 +222,19 @@
 % The text and the page
 % hooks are used in manual \cs{l at xx} commands and in \cs{l at 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}{4}%
+\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.
@@ -235,10 +242,11 @@
 % 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 at cfgpoint@leaders#1{#1}
 
-\def\@dottedtocline#1#2#3#4#5{%
+\def\@dottedtocline#1#2#3#4#5#6{%
   \ifnum #1>\c at tocdepth \else
     \vskip \z@ \@plus.2\p@
     {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
@@ -247,9 +255,9 @@
      \leavevmode
      \@tempdima #3\relax
      \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
-     \UseHook{contentsline/text/before}%
+     \UseHookWithArguments{contentsline/text/before}{4}{#1}{#4}{#5}{#6}%
      \csname contentsline at text@#1 at format\endcsname{#4}%
-     \UseHook{contentsline/text/after}%
+     \UseHookWithArguments{contentsline/text/after}{4}{#1}{#4}{#5}{#6}%
      \nobreak
      \@dottedtocline at cfgpoint@leaders{%
        \leaders\hbox{$\m at th
@@ -257,9 +265,9 @@
           mu$}\hfill}%
      \nobreak
      \hb at xt@\@pnumwidth{\hfil\normalfont \normalcolor
-     \UseHook{contentsline/page/before}%
+     \UseHookWithArguments{contentsline/page/before}{4}{#1}{#4}{#5}{#6}%
      #5%
-     \UseHook{contentsline/page/after}%
+     \UseHookWithArguments{contentsline/page/after}{4}{#1}{#4}{#5}{#6}%
                         \kern-\p@\kern\p@}%
      \par}%
   \fi}
@@ -279,10 +287,12 @@
 % \subsubsection{\cs{l at 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 at part[2]{%
+  \renewcommand*\l at part[3]{% as in contentsline: content, page, target
   \ifnum \c at tocdepth >-2\relax
     \addpenalty\@secpenalty
     \addvspace{2.25em \@plus\p@}%
@@ -292,14 +302,14 @@
       \parfillskip -\@pnumwidth
       {\leavevmode
        \large \bfseries
-       \UseHook{contentsline/text/before}%
+       \UseHookWithArguments{contentsline/text/before}{4}{\toclevel at part}{#1}{#2}{#3}%
        \csname contentsline at text@-1 at format\endcsname{#1}%
-       \UseHook{contentsline/text/after}%
+       \UseHookWithArguments{contentsline/text/after}{4}{\toclevel at part}{#1}{#2}{#3}%
        \hfil
        \hb at xt@\@pnumwidth{\hss
-       \UseHook{contentsline/page/before}%
+       \UseHookWithArguments{contentsline/page/before}{4}{\toclevel at part}{#1}{#2}{#3}%
        #2%
-       \UseHook{contentsline/page/after}%
+       \UseHookWithArguments{contentsline/page/after}{4}{\toclevel at part}{#1}{#2}{#3}%
                           \kern-\p@\kern\p@}}\par
        \nobreak
     \endgroup
@@ -315,14 +325,14 @@
       \leavevmode \bfseries
       \advance\leftskip\@tempdima
       \hskip -\leftskip
-       \UseHook{contentsline/text/before}%
+       \UseHookWithArguments{contentsline/text/before}{4}{\toclevel at section}{#1}{#2}{#3}%
        \csname contentsline at text@1 at format\endcsname{#1}%
-       \UseHook{contentsline/text/after}%
+       \UseHookWithArguments{contentsline/text/after}{4}{\toclevel at section}{#1}{#2}{#3}%
        \nobreak\hfil
       \nobreak\hb at xt@\@pnumwidth{\hss
-      \UseHook{contentsline/page/before}%
+      \UseHookWithArguments{contentsline/page/before}{4}{\toclevel at section}{#1}{#2}{#3}%
        #2%
-      \UseHook{contentsline/page/after}%
+      \UseHookWithArguments{contentsline/page/after}{4}{\toclevel at section}{#1}{#2}{#3}%
       \kern-\p@\kern\p@}\par
     \endgroup
   \fi}
@@ -339,14 +349,14 @@
          \parfillskip -\@pnumwidth
          {\leavevmode
           \large \bfseries
-          \UseHook{contentsline/text/before}%
+          \UseHookWithArguments{contentsline/text/before}{4}{\toclevel at part}{#1}{#2}{#3}%
           \csname contentsline at text@-1 at format\endcsname{#1}%
-          \UseHook{contentsline/text/after}%
+          \UseHookWithArguments{contentsline/text/after}{4}{\toclevel at part}{#1}{#2}{#3}%
           \hfil
           \hb at xt@\@pnumwidth{\hss          
-          \UseHook{contentsline/page/before}%
+          \UseHookWithArguments{contentsline/page/before}{4}{\toclevel at part}{#1}{#2}{#3}%
           #2%
-          \UseHook{contentsline/page/after}%
+          \UseHookWithArguments{contentsline/page/after}{4}{\toclevel at part}{#1}{#2}{#3}%
                              \kern-\p@\kern\p@}}\par
           \nobreak
        \endgroup
@@ -362,15 +372,15 @@
          \leavevmode \bfseries
          \advance\leftskip\@tempdima
          \hskip -\leftskip
-         \UseHook{contentsline/text/before}%
+         \UseHookWithArguments{contentsline/text/before}{4}{\toclevel at chapter}{#1}{#2}{#3}%
          \csname contentsline at text@0 at format\endcsname
            {#1}%
-         \UseHook{contentsline/text/after}%
+         \UseHookWithArguments{contentsline/text/after}{4}{\toclevel at chapter}{#1}{#2}{#3}%
           \nobreak\hfil
          \nobreak\hb at xt@\@pnumwidth{\hss
-          \UseHook{contentsline/page/before}%
+          \UseHookWithArguments{contentsline/page/before}{4}{\toclevel at chapter}{#1}{#2}{#3}%%
           #2%
-          \UseHook{contentsline/page/after}%
+          \UseHookWithArguments{contentsline/page/after}{4}{\toclevel at chapter}{#1}{#2}{#3}%%
                                     \kern-\p@\kern\p@}\par
          \penalty\@highpenalty
        \endgroup
@@ -388,14 +398,14 @@
          \parfillskip -\@pnumwidth
          {\leavevmode
           \large \bfseries
-          \UseHook{contentsline/text/before}%
+          \UseHookWithArguments{contentsline/text/before}{4}{\toclevel at part}{#1}{#2}{#3}%%
           \csname contentsline at text@-1 at format\endcsname{#1}%
-          \UseHook{contentsline/text/after}%
+          \UseHookWithArguments\UseHook{contentsline/text/after}{4}{\toclevel at part}{#1}{#2}{#3}%%
           \hfil
           \hb at xt@\@pnumwidth{\hss
-          \UseHook{contentsline/page/before}%
+          \UseHookWithArguments{contentsline/page/before}{4}{\toclevel at part}{#1}{#2}{#3}%%
           #2%
-          \UseHook{contentsline/page/after}%
+          \UseHookWithArguments{contentsline/page/after}{4}{\toclevel at part}{#1}{#2}{#3}%%
                              \kern-\p@\kern\p@}}\par
           \nobreak
        \endgroup
@@ -411,15 +421,15 @@
          \leavevmode \bfseries
          \advance\leftskip\@tempdima
          \hskip -\leftskip
-         \UseHook{contentsline/text/before}%
+         \UseHookWithArguments{contentsline/text/before}{4}{\toclevel at chapter}{#1}{#2}{#3}%
          \csname contentsline at text@0 at format\endcsname
            {#1}%
-         \UseHook{contentsline/text/after}%
+         \UseHookWithArguments{contentsline/text/after}{4}{\toclevel at chapter}{#1}{#2}{#3}%
           \nobreak\hfil
          \nobreak\hb at xt@\@pnumwidth{\hss
-          \UseHook{contentsline/page/before}%
+          \UseHookWithArguments{contentsline/page/before}{4}{\toclevel at chapter}{#1}{#2}{#3}%
           #2%
-          \UseHook{contentsline/page/after}%
+          \UseHookWithArguments{contentsline/page/after}{4}{\toclevel at chapter}{#1}{#2}{#3}%
                                     \kern-\p@\kern\p@}\par
          \penalty\@highpenalty
        \endgroup





More information about the latex3-commits mailing list.