[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.