Skip to content

Commit

Permalink
Firstaid index (#1628)
Browse files Browse the repository at this point in the history
* firstaid for index package

* add index package to testing

* adding a firstaid means changes to several hook tests ...

* test file changed

* fix for #1638

* update rollback code

* update test file

* and update the test ...

* drop a few unnecessary %
  • Loading branch information
FrankMittelbach authored Jan 26, 2025
1 parent 0172bc2 commit 5d3a5d4
Show file tree
Hide file tree
Showing 23 changed files with 654 additions and 6 deletions.
1 change: 1 addition & 0 deletions .github/tl_packages
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ ncctools
dinbrief
everyshi
filehook
index
pgf
pgfmorepages
ulem
Expand Down
7 changes: 7 additions & 0 deletions base/testfiles-lthooks/ltcmdhooks-001.tlg
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,12 @@ Code labels for sorting:
Data structure for label rules:
firstaid = 0 ->
[lthooks] Handled code for firstaid
[lthooks] Update code for hook 'package/index/after' on input line ...:
Code labels for sorting:
firstaid
Data structure for label rules:
firstaid = 0 ->
[lthooks] Handled code for firstaid
[lthooks] Update code for hook 'package/l3graphics/after' on input line ...:
Code labels for sorting:
backend
Expand Down Expand Up @@ -258,6 +264,7 @@ Data structure for label rules:
package/chemnum/after -> \__hook_toplevel package/chemnum/after \FirstAidNeededT {chemnum}{sty}{....-..-.. v... a comprehensive approach for the numbering of chemical compounds (CN)} {\UseName {prop_new:c}{l__chemnum_tmpa_prop}}\__hook_next package/chemnum/after
package/cleveref/after -> \__hook_toplevel package/cleveref/after \FirstAidNeededT {cleveref}{sty}{....-..-.. v... Intelligent cross-referencing} {\def \cref@getref ##1##2{\expandafter \let \expandafter ##2\csname r@##1@cref\endcsname \expandafter \expandafter \expandafter \def \expandafter \expandafter \expandafter ##2\expandafter \expandafter \expandafter {\expandafter \@firstoffive ##2}}\def \cpageref@getref ##1##2{\expandafter \let \expandafter ##2\csname r@##1@cref\endcsname \expandafter \expandafter \expandafter \def \expandafter \expandafter \expandafter ##2\expandafter \expandafter \expandafter {\expandafter \@secondoffive ##2}}\AddToHook {begindocument}[cleveref]{\def \label@noarg ##1{\cref@old@label {##1}\@bsphack \edef \@tempa {{page}{\the \c@page }}\setcounter {page}{1}\edef \@tempb {\thepage }\expandafter \setcounter \@tempa \cref@constructprefix {page}{\cref@result }\protected@write \@auxout {}{\string \newlabel {##1@cref}{{\cref@currentlabel }{[\@tempb ][\arabic {page}][\cref@result ]\thepage }{}{}{}}}\@esphack }\def \label@optarg [##1]##2{\cref@old@label {##2}\@bsphack \edef \@tempa {{page}{\the \c@page }}\setcounter {page}{1}\edef \@tempb {\thepage }\expandafter \setcounter \@tempa \cref@constructprefix {page}{\cref@result }\protected@edef \cref@currentlabel {\expandafter \cref@override@label@type \cref@currentlabel \@nil {##1}}\protected@write \@auxout {}{\string \newlabel {##2@cref}{{\cref@currentlabel }{[\@tempb ][\arabic {page}][\cref@result ]\thepage }{}{}{}}}\@esphack }} \newcommand \firstaid@cref@smugglelabel {\let \cref@currentlabel \cref@gcurrentlabel@temp } \newcommand \firstaid@cref@updatelabeldata [1]{\cref@constructprefix {##1}{\cref@result }\@ifundefined {cref@##1@alias}{\def \@tempa {##1}}{\def \@tempa {\csname cref@##1@alias\endcsname }}\protected@xdef \cref@gcurrentlabel@temp {[\@tempa ][\arabic {##1}][\cref@result ]\csname p@##1\expandafter \endcsname \csname the##1\endcsname }\aftergroup \firstaid@cref@smugglelabel } \newif \iftag@ \AddToHook {label}[firstaid/cleveref] {\ifx \@currentcounter \@empty \else \iftag@ \else \firstaid@cref@updatelabeldata {\@currentcounter }\fi \fi } }\__hook_next package/cleveref/after
package/arydshln/after -> \__hook_toplevel package/arydshln/after \FirstAidNeededT {arydshln}{sty}{....-..-.. v... } {\protected \def \adl@@vlineL ##1##2##3##4{\adl@ivline ##4\@nil {##1}{##2}\xdef \adl@colsL {\adl@colsL \@elt {##3}{\number \@tempcnta }{\number \@tempcntb }{\adl@dashcolor }{\adl@gapcolor }}}\protected \def \adl@@vlineR ##1##2##3##4{\adl@ivline ##4\@nil {##1}{##2}\xdef \adl@colsR {\@elt {##3}{\number \@tempcnta }{\number \@tempcntb }{\adl@dashcolor }{\adl@gapcolor }\adl@colsR }}\let \adl@act@@vlineL \adl@@vlineL \let \adl@act@@vlineR \adl@@vlineR }\__hook_next package/arydshln/after
package/index/after -> \__hook_toplevel package/index/after \FirstAidNeededT {index}{sty}{....-..-.. v...eta Improved index support (dmj)}{\DeclareRobustCommand *\markboth [2]{\mark_insert:nn {2e-left}{##1}\mark_insert:nn {2e-right}{##2}\tl_if_empty:nF {##2}{\mark_insert:nn {2e-right-nonempty}{##2}}}\DeclareRobustCommand *\markright [1]{\mark_insert:nn {2e-right}{##1}\tl_if_empty:nF {##1}{\mark_insert:nn {2e-right-nonempty}{##1}}}\protected \def \index {\protect \p@index }}\__hook_next package/index/after
package/l3graphics/after -> \__hook_toplevel package/l3graphics/after \seq_set_from_clist:Nn \l_graphics_search_ext_seq {.pdf,.eps,.ps,.png,.jpg,.jpeg}\__hook_next package/l3graphics/after
cmd/foo/before -> before 1 before 2 \__hook_toplevel cmd/foo/before {#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}\__hook_next cmd/foo/before {#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}
cmd/foo/after -> \__hook_toplevel cmd/foo/after {#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}after 2 after 1 \__hook_next cmd/foo/after {#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}
Expand Down
7 changes: 7 additions & 0 deletions base/testfiles-lthooks/lthooks-000.tlg
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,12 @@ Code labels for sorting:
Data structure for label rules:
firstaid = 0 ->
[lthooks] Handled code for firstaid
[lthooks] Update code for hook 'package/index/after' on input line ...:
Code labels for sorting:
firstaid
Data structure for label rules:
firstaid = 0 ->
[lthooks] Handled code for firstaid
[lthooks] Update code for hook 'package/l3graphics/after' on input line ...:
Code labels for sorting:
backend
Expand All @@ -178,6 +184,7 @@ Data structure for label rules:
package/chemnum/after -> \__hook_toplevel package/chemnum/after \FirstAidNeededT {chemnum}{sty}{....-..-.. v... a comprehensive approach for the numbering of chemical compounds (CN)} {\UseName {prop_new:c}{l__chemnum_tmpa_prop}}\__hook_next package/chemnum/after
package/cleveref/after -> \__hook_toplevel package/cleveref/after \FirstAidNeededT {cleveref}{sty}{....-..-.. v... Intelligent cross-referencing} {\def \cref@getref ##1##2{\expandafter \let \expandafter ##2\csname r@##1@cref\endcsname \expandafter \expandafter \expandafter \def \expandafter \expandafter \expandafter ##2\expandafter \expandafter \expandafter {\expandafter \@firstoffive ##2}}\def \cpageref@getref ##1##2{\expandafter \let \expandafter ##2\csname r@##1@cref\endcsname \expandafter \expandafter \expandafter \def \expandafter \expandafter \expandafter ##2\expandafter \expandafter \expandafter {\expandafter \@secondoffive ##2}}\AddToHook {begindocument}[cleveref]{\def \label@noarg ##1{\cref@old@label {##1}\@bsphack \edef \@tempa {{page}{\the \c@page }}\setcounter {page}{1}\edef \@tempb {\thepage }\expandafter \setcounter \@tempa \cref@constructprefix {page}{\cref@result }\protected@write \@auxout {}{\string \newlabel {##1@cref}{{\cref@currentlabel }{[\@tempb ][\arabic {page}][\cref@result ]\thepage }{}{}{}}}\@esphack }\def \label@optarg [##1]##2{\cref@old@label {##2}\@bsphack \edef \@tempa {{page}{\the \c@page }}\setcounter {page}{1}\edef \@tempb {\thepage }\expandafter \setcounter \@tempa \cref@constructprefix {page}{\cref@result }\protected@edef \cref@currentlabel {\expandafter \cref@override@label@type \cref@currentlabel \@nil {##1}}\protected@write \@auxout {}{\string \newlabel {##2@cref}{{\cref@currentlabel }{[\@tempb ][\arabic {page}][\cref@result ]\thepage }{}{}{}}}\@esphack }} \newcommand \firstaid@cref@smugglelabel {\let \cref@currentlabel \cref@gcurrentlabel@temp } \newcommand \firstaid@cref@updatelabeldata [1]{\cref@constructprefix {##1}{\cref@result }\@ifundefined {cref@##1@alias}{\def \@tempa {##1}}{\def \@tempa {\csname cref@##1@alias\endcsname }}\protected@xdef \cref@gcurrentlabel@temp {[\@tempa ][\arabic {##1}][\cref@result ]\csname p@##1\expandafter \endcsname \csname the##1\endcsname }\aftergroup \firstaid@cref@smugglelabel } \newif \iftag@ \AddToHook {label}[firstaid/cleveref] {\ifx \@currentcounter \@empty \else \iftag@ \else \firstaid@cref@updatelabeldata {\@currentcounter }\fi \fi } }\__hook_next package/cleveref/after
package/arydshln/after -> \__hook_toplevel package/arydshln/after \FirstAidNeededT {arydshln}{sty}{....-..-.. v... } {\protected \def \adl@@vlineL ##1##2##3##4{\adl@ivline ##4\@nil {##1}{##2}\xdef \adl@colsL {\adl@colsL \@elt {##3}{\number \@tempcnta }{\number \@tempcntb }{\adl@dashcolor }{\adl@gapcolor }}}\protected \def \adl@@vlineR ##1##2##3##4{\adl@ivline ##4\@nil {##1}{##2}\xdef \adl@colsR {\@elt {##3}{\number \@tempcnta }{\number \@tempcntb }{\adl@dashcolor }{\adl@gapcolor }\adl@colsR }}\let \adl@act@@vlineL \adl@@vlineL \let \adl@act@@vlineR \adl@@vlineR }\__hook_next package/arydshln/after
package/index/after -> \__hook_toplevel package/index/after \FirstAidNeededT {index}{sty}{....-..-.. v...eta Improved index support (dmj)}{\DeclareRobustCommand *\markboth [2]{\mark_insert:nn {2e-left}{##1}\mark_insert:nn {2e-right}{##2}\tl_if_empty:nF {##2}{\mark_insert:nn {2e-right-nonempty}{##2}}}\DeclareRobustCommand *\markright [1]{\mark_insert:nn {2e-right}{##1}\tl_if_empty:nF {##1}{\mark_insert:nn {2e-right-nonempty}{##1}}}\protected \def \index {\protect \p@index }}\__hook_next package/index/after
package/l3graphics/after -> \__hook_toplevel package/l3graphics/after \seq_set_from_clist:Nn \l_graphics_search_ext_seq {.pdf,.eps,.ps,.png,.jpg,.jpeg}\__hook_next package/l3graphics/after
No file lthooks-000.aux.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line ....
Expand Down
15 changes: 15 additions & 0 deletions base/testfiles-lthooks/lthooks-001.tlg
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,12 @@ Code labels for sorting:
Data structure for label rules:
firstaid = 0 ->
[lthooks] Handled code for firstaid
[lthooks] Update code for hook 'package/index/after' on input line ...:
Code labels for sorting:
firstaid
Data structure for label rules:
firstaid = 0 ->
[lthooks] Handled code for firstaid
[lthooks] Update code for hook 'xxx' on input line ...:
Code labels for sorting:
label1 and label2
Expand All @@ -187,6 +193,7 @@ Data structure for label rules:
package/chemnum/after -> \__hook_toplevel package/chemnum/after \FirstAidNeededT {chemnum}{sty}{....-..-.. v... a comprehensive approach for the numbering of chemical compounds (CN)} {\UseName {prop_new:c}{l__chemnum_tmpa_prop}}\__hook_next package/chemnum/after
package/cleveref/after -> \__hook_toplevel package/cleveref/after \FirstAidNeededT {cleveref}{sty}{....-..-.. v... Intelligent cross-referencing} {\def \cref@getref ##1##2{\expandafter \let \expandafter ##2\csname r@##1@cref\endcsname \expandafter \expandafter \expandafter \def \expandafter \expandafter \expandafter ##2\expandafter \expandafter \expandafter {\expandafter \@firstoffive ##2}}\def \cpageref@getref ##1##2{\expandafter \let \expandafter ##2\csname r@##1@cref\endcsname \expandafter \expandafter \expandafter \def \expandafter \expandafter \expandafter ##2\expandafter \expandafter \expandafter {\expandafter \@secondoffive ##2}}\AddToHook {begindocument}[cleveref]{\def \label@noarg ##1{\cref@old@label {##1}\@bsphack \edef \@tempa {{page}{\the \c@page }}\setcounter {page}{1}\edef \@tempb {\thepage }\expandafter \setcounter \@tempa \cref@constructprefix {page}{\cref@result }\protected@write \@auxout {}{\string \newlabel {##1@cref}{{\cref@currentlabel }{[\@tempb ][\arabic {page}][\cref@result ]\thepage }{}{}{}}}\@esphack }\def \label@optarg [##1]##2{\cref@old@label {##2}\@bsphack \edef \@tempa {{page}{\the \c@page }}\setcounter {page}{1}\edef \@tempb {\thepage }\expandafter \setcounter \@tempa \cref@constructprefix {page}{\cref@result }\protected@edef \cref@currentlabel {\expandafter \cref@override@label@type \cref@currentlabel \@nil {##1}}\protected@write \@auxout {}{\string \newlabel {##2@cref}{{\cref@currentlabel }{[\@tempb ][\arabic {page}][\cref@result ]\thepage }{}{}{}}}\@esphack }} \newcommand \firstaid@cref@smugglelabel {\let \cref@currentlabel \cref@gcurrentlabel@temp } \newcommand \firstaid@cref@updatelabeldata [1]{\cref@constructprefix {##1}{\cref@result }\@ifundefined {cref@##1@alias}{\def \@tempa {##1}}{\def \@tempa {\csname cref@##1@alias\endcsname }}\protected@xdef \cref@gcurrentlabel@temp {[\@tempa ][\arabic {##1}][\cref@result ]\csname p@##1\expandafter \endcsname \csname the##1\endcsname }\aftergroup \firstaid@cref@smugglelabel } \newif \iftag@ \AddToHook {label}[firstaid/cleveref] {\ifx \@currentcounter \@empty \else \iftag@ \else \firstaid@cref@updatelabeldata {\@currentcounter }\fi \fi } }\__hook_next package/cleveref/after
package/arydshln/after -> \__hook_toplevel package/arydshln/after \FirstAidNeededT {arydshln}{sty}{....-..-.. v... } {\protected \def \adl@@vlineL ##1##2##3##4{\adl@ivline ##4\@nil {##1}{##2}\xdef \adl@colsL {\adl@colsL \@elt {##3}{\number \@tempcnta }{\number \@tempcntb }{\adl@dashcolor }{\adl@gapcolor }}}\protected \def \adl@@vlineR ##1##2##3##4{\adl@ivline ##4\@nil {##1}{##2}\xdef \adl@colsR {\@elt {##3}{\number \@tempcnta }{\number \@tempcntb }{\adl@dashcolor }{\adl@gapcolor }\adl@colsR }}\let \adl@act@@vlineL \adl@@vlineL \let \adl@act@@vlineR \adl@@vlineR }\__hook_next package/arydshln/after
package/index/after -> \__hook_toplevel package/index/after \FirstAidNeededT {index}{sty}{....-..-.. v...eta Improved index support (dmj)}{\DeclareRobustCommand *\markboth [2]{\mark_insert:nn {2e-left}{##1}\mark_insert:nn {2e-right}{##2}\tl_if_empty:nF {##2}{\mark_insert:nn {2e-right-nonempty}{##2}}}\DeclareRobustCommand *\markright [1]{\mark_insert:nn {2e-right}{##1}\tl_if_empty:nF {##1}{\mark_insert:nn {2e-right-nonempty}{##1}}}\protected \def \index {\protect \p@index }}\__hook_next package/index/after
xxx -> foobar\__hook_toplevel xxx \__hook_next xxx
LaTeX hooks Warning: Cannot remove chunk 'label3' from hook 'xxx' because it does not exist in that hook.
LaTeX hooks Warning: Cannot remove chunk 'label3' from hook 'yyy' because the hook does not exist.
Expand Down Expand Up @@ -252,6 +259,7 @@ The sequence \g__hook_all_seq contains the items (without outer braces):
> {package/chemnum/after}
> {package/cleveref/after}
> {package/arydshln/after}
> {package/index/after}
> {xxx}.
[lthooks] Update code for hook 'para/before' on input line ...:
[lthooks] Update code for hook 'para/after' on input line ...:
Expand Down Expand Up @@ -407,6 +415,12 @@ Code labels for sorting:
Data structure for label rules:
firstaid = 0 ->
[lthooks] Handled code for firstaid
[lthooks] Update code for hook 'package/index/after' on input line ...:
Code labels for sorting:
firstaid
Data structure for label rules:
firstaid = 0 ->
[lthooks] Handled code for firstaid
[lthooks] Update code for hook 'xxx' on input line ...:
Code labels for sorting:
label1
Expand All @@ -431,5 +445,6 @@ Data structure for label rules:
package/chemnum/after -> \__hook_toplevel package/chemnum/after \FirstAidNeededT {chemnum}{sty}{....-..-.. v... a comprehensive approach for the numbering of chemical compounds (CN)} {\UseName {prop_new:c}{l__chemnum_tmpa_prop}}\__hook_next package/chemnum/after
package/cleveref/after -> \__hook_toplevel package/cleveref/after \FirstAidNeededT {cleveref}{sty}{....-..-.. v... Intelligent cross-referencing} {\def \cref@getref ##1##2{\expandafter \let \expandafter ##2\csname r@##1@cref\endcsname \expandafter \expandafter \expandafter \def \expandafter \expandafter \expandafter ##2\expandafter \expandafter \expandafter {\expandafter \@firstoffive ##2}}\def \cpageref@getref ##1##2{\expandafter \let \expandafter ##2\csname r@##1@cref\endcsname \expandafter \expandafter \expandafter \def \expandafter \expandafter \expandafter ##2\expandafter \expandafter \expandafter {\expandafter \@secondoffive ##2}}\AddToHook {begindocument}[cleveref]{\def \label@noarg ##1{\cref@old@label {##1}\@bsphack \edef \@tempa {{page}{\the \c@page }}\setcounter {page}{1}\edef \@tempb {\thepage }\expandafter \setcounter \@tempa \cref@constructprefix {page}{\cref@result }\protected@write \@auxout {}{\string \newlabel {##1@cref}{{\cref@currentlabel }{[\@tempb ][\arabic {page}][\cref@result ]\thepage }{}{}{}}}\@esphack }\def \label@optarg [##1]##2{\cref@old@label {##2}\@bsphack \edef \@tempa {{page}{\the \c@page }}\setcounter {page}{1}\edef \@tempb {\thepage }\expandafter \setcounter \@tempa \cref@constructprefix {page}{\cref@result }\protected@edef \cref@currentlabel {\expandafter \cref@override@label@type \cref@currentlabel \@nil {##1}}\protected@write \@auxout {}{\string \newlabel {##2@cref}{{\cref@currentlabel }{[\@tempb ][\arabic {page}][\cref@result ]\thepage }{}{}{}}}\@esphack }} \newcommand \firstaid@cref@smugglelabel {\let \cref@currentlabel \cref@gcurrentlabel@temp } \newcommand \firstaid@cref@updatelabeldata [1]{\cref@constructprefix {##1}{\cref@result }\@ifundefined {cref@##1@alias}{\def \@tempa {##1}}{\def \@tempa {\csname cref@##1@alias\endcsname }}\protected@xdef \cref@gcurrentlabel@temp {[\@tempa ][\arabic {##1}][\cref@result ]\csname p@##1\expandafter \endcsname \csname the##1\endcsname }\aftergroup \firstaid@cref@smugglelabel } \newif \iftag@ \AddToHook {label}[firstaid/cleveref] {\ifx \@currentcounter \@empty \else \iftag@ \else \firstaid@cref@updatelabeldata {\@currentcounter }\fi \fi } }\__hook_next package/cleveref/after
package/arydshln/after -> \__hook_toplevel package/arydshln/after \FirstAidNeededT {arydshln}{sty}{....-..-.. v... } {\protected \def \adl@@vlineL ##1##2##3##4{\adl@ivline ##4\@nil {##1}{##2}\xdef \adl@colsL {\adl@colsL \@elt {##3}{\number \@tempcnta }{\number \@tempcntb }{\adl@dashcolor }{\adl@gapcolor }}}\protected \def \adl@@vlineR ##1##2##3##4{\adl@ivline ##4\@nil {##1}{##2}\xdef \adl@colsR {\@elt {##3}{\number \@tempcnta }{\number \@tempcntb }{\adl@dashcolor }{\adl@gapcolor }\adl@colsR }}\let \adl@act@@vlineL \adl@@vlineL \let \adl@act@@vlineR \adl@@vlineR }\__hook_next package/arydshln/after
package/index/after -> \__hook_toplevel package/index/after \FirstAidNeededT {index}{sty}{....-..-.. v...eta Improved index support (dmj)}{\DeclareRobustCommand *\markboth [2]{\mark_insert:nn {2e-left}{##1}\mark_insert:nn {2e-right}{##2}\tl_if_empty:nF {##2}{\mark_insert:nn {2e-right-nonempty}{##2}}}\DeclareRobustCommand *\markright [1]{\mark_insert:nn {2e-right}{##1}\tl_if_empty:nF {##1}{\mark_insert:nn {2e-right-nonempty}{##1}}}\protected \def \index {\protect \p@index }}\__hook_next package/index/after
xxx -> foo\__hook_toplevel xxx \__hook_next xxx
The hook xxx contains the rules:
Loading

0 comments on commit 5d3a5d4

Please sign in to comment.