[latex3-commits] [latex3/latex2e] firstaid/chemformula: Add firstaid for chemformula (fa975459)

github at latex-project.org github at latex-project.org
Thu Feb 29 09:27:54 CET 2024


Repository : https://github.com/latex3/latex2e
On branch  : firstaid/chemformula
Link       : https://github.com/latex3/latex2e/commit/fa975459b57152f2e4e88a60ba9e18c14a0d0ae5

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

commit fa975459b57152f2e4e88a60ba9e18c14a0d0ae5
Author: Joseph Wright <joseph at texdev.net>
Date:   Thu Feb 29 07:58:34 2024 +0000

    Add firstaid for chemformula


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

fa975459b57152f2e4e88a60ba9e18c14a0d0ae5
 base/testfiles-lthooks/ltcmdhooks-001.tlg          |  7 ++++++
 base/testfiles-lthooks/lthooks-000.tlg             |  7 ++++++
 base/testfiles-lthooks/lthooks-001.tlg             | 15 ++++++++++++
 base/testfiles-lthooks/lthooks-002.tlg             | 15 ++++++++++++
 base/testfiles-lthooks/lthooks-003.tlg             |  8 +++++++
 base/testfiles-lthooks/lthooks-004.tlg             |  8 +++++++
 base/testfiles-lthooks/lthooks-005.tlg             |  8 +++++++
 base/testfiles-lthooks/lthooks-006.tlg             |  8 +++++++
 base/testfiles-lthooks/lthooks-007.tlg             | 15 ++++++++++++
 base/testfiles-lthooks/lthooks-008.tlg             |  8 +++++++
 base/testfiles-lthooks/lthooks-009.tlg             |  7 ++++++
 base/testfiles-lthooks/lthooks-011.tlg             | 28 ++++++++++++++++++++++
 base/testfiles-lthooks/lthooks-013.tlg             |  7 ++++++
 base/testfiles-lthooks/lthooks-021.tlg             |  7 ++++++
 base/testfiles-lthooks/lthooks-legacy.tlg          |  7 ++++++
 base/testfiles-lthooks2/lthooks2-002.tlg           |  7 ++++++
 base/testfiles-lthooks2/lthooks2-005.tlg           | 14 +++++++++++
 required/firstaid/changes.txt                      |  5 ++++
 .../latex2e-first-aid-for-external-files.dtx       | 25 +++++++++++++++++--
 19 files changed, 204 insertions(+), 2 deletions(-)

diff --git a/base/testfiles-lthooks/ltcmdhooks-001.tlg b/base/testfiles-lthooks/ltcmdhooks-001.tlg
index c2fa1f48..c93ed3d4 100644
--- a/base/testfiles-lthooks/ltcmdhooks-001.tlg
+++ b/base/testfiles-lthooks/ltcmdhooks-001.tlg
@@ -184,6 +184,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -219,6 +225,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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} 
diff --git a/base/testfiles-lthooks/lthooks-000.tlg b/base/testfiles-lthooks/lthooks-000.tlg
index f908c2a5..3ef84b07 100644
--- a/base/testfiles-lthooks/lthooks-000.tlg
+++ b/base/testfiles-lthooks/lthooks-000.tlg
@@ -124,6 +124,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -143,6 +149,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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 ....
diff --git a/base/testfiles-lthooks/lthooks-001.tlg b/base/testfiles-lthooks/lthooks-001.tlg
index 78c39fac..67671dfd 100644
--- a/base/testfiles-lthooks/lthooks-001.tlg
+++ b/base/testfiles-lthooks/lthooks-001.tlg
@@ -130,6 +130,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -157,6 +163,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  xxx -> foobar\__hook_toplevel xxx \__hook_next xxx  
 LaTeX hooks Warning: Cannot remove chunk 'label3' from hook 'xxx' because it
@@ -221,6 +228,7 @@ The sequence \g__hook_all_seq contains the items (without outer braces):
 >  {file/german.sty/after}
 >  {file/ngerman.sty/after}
 >  {file/underscore.sty/after}
+>  {package/chemformula/before}
 >  {package/l3graphics/after}
 >  {xxx}.
 Update code for hook 'para/before' on input line ...:
@@ -347,6 +355,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -372,6 +386,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  xxx -> foo\__hook_toplevel xxx \__hook_next xxx  
 The hook xxx contains the rules:
diff --git a/base/testfiles-lthooks/lthooks-002.tlg b/base/testfiles-lthooks/lthooks-002.tlg
index 52e975f8..92ea6d4f 100644
--- a/base/testfiles-lthooks/lthooks-002.tlg
+++ b/base/testfiles-lthooks/lthooks-002.tlg
@@ -130,6 +130,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -157,6 +163,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  xxx -> foobar\__hook_toplevel xxx \__hook_next xxx  
 LaTeX hooks Warning: Cannot remove chunk 'label3' from hook 'xxx' because it
@@ -223,6 +230,7 @@ The sequence \g__hook_all_seq contains the items (without outer braces):
 >  {file/german.sty/after}
 >  {file/ngerman.sty/after}
 >  {file/underscore.sty/after}
+>  {package/chemformula/before}
 >  {package/l3graphics/after}
 >  {xxx}.
 Update code for hook 'para/before' on input line ...:
@@ -349,6 +357,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -374,6 +388,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  xxx -> foo\__hook_toplevel xxx \__hook_next xxx  
 The hook xxx contains the rules:
diff --git a/base/testfiles-lthooks/lthooks-003.tlg b/base/testfiles-lthooks/lthooks-003.tlg
index 2543ed62..31d9ff05 100644
--- a/base/testfiles-lthooks/lthooks-003.tlg
+++ b/base/testfiles-lthooks/lthooks-003.tlg
@@ -75,6 +75,7 @@ The sequence \g__hook_all_seq contains the items (without outer braces):
 >  {file/german.sty/after}
 >  {file/ngerman.sty/after}
 >  {file/underscore.sty/after}
+>  {package/chemformula/before}
 >  {package/l3graphics/after}
 >  {xxx}.
 The hook xxx contains the rules:
@@ -212,6 +213,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -263,5 +270,6 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  xxx ->  foo1 foo9 foo3 foo2 foo7 foo4 foo5 foo8 foo6\__hook_toplevel xxx \__hook_next xxx  
diff --git a/base/testfiles-lthooks/lthooks-004.tlg b/base/testfiles-lthooks/lthooks-004.tlg
index bc2ea826..d66e19d6 100644
--- a/base/testfiles-lthooks/lthooks-004.tlg
+++ b/base/testfiles-lthooks/lthooks-004.tlg
@@ -65,6 +65,7 @@ The sequence \g__hook_all_seq contains the items (without outer braces):
 >  {file/german.sty/after}
 >  {file/ngerman.sty/after}
 >  {file/underscore.sty/after}
+>  {package/chemformula/before}
 >  {package/l3graphics/after}
 >  {xxx}.
 The hook xxx contains the rules:
@@ -196,6 +197,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -238,5 +245,6 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  xxx ->  foo4\__hook_toplevel xxx \__hook_next xxx  
diff --git a/base/testfiles-lthooks/lthooks-005.tlg b/base/testfiles-lthooks/lthooks-005.tlg
index 346151e9..04fe9e82 100644
--- a/base/testfiles-lthooks/lthooks-005.tlg
+++ b/base/testfiles-lthooks/lthooks-005.tlg
@@ -82,6 +82,7 @@ The sequence \g__hook_all_seq contains the items (without outer braces):
 >  {file/german.sty/after}
 >  {file/ngerman.sty/after}
 >  {file/underscore.sty/after}
+>  {package/chemformula/before}
 >  {package/l3graphics/after}
 >  {xxx}.
 The hook xxx contains the rules:
@@ -219,6 +220,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -270,5 +277,6 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  xxx ->  foo1 foo9 foo3 foo2 foo7 foo4 foo5 foo8 foo6\__hook_toplevel xxx \__hook_next xxx  
diff --git a/base/testfiles-lthooks/lthooks-006.tlg b/base/testfiles-lthooks/lthooks-006.tlg
index d18e59fb..ef03bbed 100644
--- a/base/testfiles-lthooks/lthooks-006.tlg
+++ b/base/testfiles-lthooks/lthooks-006.tlg
@@ -63,6 +63,7 @@ The sequence \g__hook_all_seq contains the items (without outer braces):
 >  {file/german.sty/after}
 >  {file/ngerman.sty/after}
 >  {file/underscore.sty/after}
+>  {package/chemformula/before}
 >  {package/l3graphics/after}
 >  {xxx}.
 The hook xxx contains the rules:
@@ -192,6 +193,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -225,5 +232,6 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  xxx ->  foo1 foo3 foo2\__hook_toplevel xxx \__hook_next xxx  
diff --git a/base/testfiles-lthooks/lthooks-007.tlg b/base/testfiles-lthooks/lthooks-007.tlg
index 67712a75..fdb188ec 100644
--- a/base/testfiles-lthooks/lthooks-007.tlg
+++ b/base/testfiles-lthooks/lthooks-007.tlg
@@ -63,6 +63,7 @@ The sequence \g__hook_all_seq contains the items (without outer braces):
 >  {file/german.sty/after}
 >  {file/ngerman.sty/after}
 >  {file/underscore.sty/after}
+>  {package/chemformula/before}
 >  {package/l3graphics/after}
 >  {xxx}.
 The hook xxx contains the rules:
@@ -193,6 +194,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -226,6 +233,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  xxx ->  foo1 foo3\__hook_toplevel xxx \__hook_next xxx  
 Update code for hook 'para/before' on input line ...:
@@ -352,6 +360,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -383,5 +397,6 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  xxx ->  foo1 foo3\__hook_toplevel xxx \__hook_next xxx  
diff --git a/base/testfiles-lthooks/lthooks-008.tlg b/base/testfiles-lthooks/lthooks-008.tlg
index 60cd8d5d..bc6b6ebe 100644
--- a/base/testfiles-lthooks/lthooks-008.tlg
+++ b/base/testfiles-lthooks/lthooks-008.tlg
@@ -65,6 +65,7 @@ The sequence \g__hook_all_seq contains the items (without outer braces):
 >  {file/german.sty/after}
 >  {file/ngerman.sty/after}
 >  {file/underscore.sty/after}
+>  {package/chemformula/before}
 >  {package/l3graphics/after}.
 The hook enddocument contains the rules:
 Update code for hook 'para/before' on input line ...:
@@ -200,6 +201,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -220,6 +227,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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-008.aux.
 LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line ....
diff --git a/base/testfiles-lthooks/lthooks-009.tlg b/base/testfiles-lthooks/lthooks-009.tlg
index c65ced25..7a018300 100644
--- a/base/testfiles-lthooks/lthooks-009.tlg
+++ b/base/testfiles-lthooks/lthooks-009.tlg
@@ -130,6 +130,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -150,6 +156,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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-009.aux.
 LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line ....
diff --git a/base/testfiles-lthooks/lthooks-011.tlg b/base/testfiles-lthooks/lthooks-011.tlg
index 226e4832..8bca4c39 100644
--- a/base/testfiles-lthooks/lthooks-011.tlg
+++ b/base/testfiles-lthooks/lthooks-011.tlg
@@ -125,6 +125,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -155,6 +161,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  xxx -> foo\__hook_toplevel xxx \__hook_next xxx  
 **** Add to hook xxx (rear) on input line ... <- bar
@@ -282,6 +289,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -314,6 +327,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  xxx -> foobar\__hook_toplevel xxx \__hook_next xxx  
 **** Add to hook xxx (labels) on input line ... <- baz
@@ -441,6 +455,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -475,6 +495,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  xxx -> foobarbaz\__hook_toplevel xxx \__hook_next xxx  
 **** Add to hook xxx (return) on input line ... <- boom
@@ -602,6 +623,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -638,5 +665,6 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  xxx -> foobarbazboom\__hook_toplevel xxx \__hook_next xxx  
diff --git a/base/testfiles-lthooks/lthooks-013.tlg b/base/testfiles-lthooks/lthooks-013.tlg
index 5174768c..782aa946 100644
--- a/base/testfiles-lthooks/lthooks-013.tlg
+++ b/base/testfiles-lthooks/lthooks-013.tlg
@@ -177,6 +177,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -204,6 +210,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  env/itemize/begin -> \typeout {env itemize first}\__hook_toplevel env/itemize/begin \__hook_next env/itemize/begin  
 No file lthooks-013.aux.
diff --git a/base/testfiles-lthooks/lthooks-021.tlg b/base/testfiles-lthooks/lthooks-021.tlg
index 2fb57639..db3ac169 100644
--- a/base/testfiles-lthooks/lthooks-021.tlg
+++ b/base/testfiles-lthooks/lthooks-021.tlg
@@ -124,6 +124,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -143,6 +149,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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-021.aux.
 LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line ....
diff --git a/base/testfiles-lthooks/lthooks-legacy.tlg b/base/testfiles-lthooks/lthooks-legacy.tlg
index ce76bf03..be36aa71 100644
--- a/base/testfiles-lthooks/lthooks-legacy.tlg
+++ b/base/testfiles-lthooks/lthooks-legacy.tlg
@@ -149,6 +149,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -172,6 +178,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
 legacy defaultfamily on input line ...
 No file lthooks-legacy.aux.
diff --git a/base/testfiles-lthooks2/lthooks2-002.tlg b/base/testfiles-lthooks2/lthooks2-002.tlg
index 9dfe9996..2356eb66 100644
--- a/base/testfiles-lthooks2/lthooks2-002.tlg
+++ b/base/testfiles-lthooks2/lthooks2-002.tlg
@@ -136,6 +136,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -155,6 +161,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
 (lthooks2-002.aux)
 LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line ....
diff --git a/base/testfiles-lthooks2/lthooks2-005.tlg b/base/testfiles-lthooks2/lthooks2-005.tlg
index 04eecedd..e5870904 100644
--- a/base/testfiles-lthooks2/lthooks2-005.tlg
+++ b/base/testfiles-lthooks2/lthooks2-005.tlg
@@ -125,6 +125,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -144,6 +150,7 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
 **** Add to hook some-hook (other-package) on input line ... <- code from other-package,
 Update code for hook 'para/before' on input line ...:
@@ -270,6 +277,12 @@ Code labels for sorting:
 Data structure for label rules:
  firstaid = 0 -> 
 Handled code for firstaid
+Update code for hook 'package/chemformula/before' on input line ...:
+Code labels for sorting:
+ firstaid
+Data structure for label rules:
+ firstaid = 0 -> 
+Handled code for firstaid
 Update code for hook 'package/l3graphics/after' on input line ...:
 Code labels for sorting:
  backend
@@ -297,5 +310,6 @@ All initialized (non-empty) hooks:
  file/german.sty/after -> \__hook_toplevel file/german.sty/after \FirstAidNeededT {german}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\germanTeX }\__hook_next file/german.sty/after  
  file/ngerman.sty/after -> \__hook_toplevel file/ngerman.sty/after \FirstAidNeededT {ngerman}{sty}{....-..-.. v... Support for writing german texts (br)} {\let \grmn at active@dq@ \@active at dq \def \@active at dq {\protect \grmn at active@dq@ }\ngermanTeX }\__hook_next file/ngerman.sty/after  
  file/underscore.sty/after -> \__hook_toplevel file/underscore.sty/after \FirstAidNeededT {underscore}{sty}{....-..-..}{\RequirePackage {underscore-ltx}}\__hook_next file/underscore.sty/after  
+ package/chemformula/before -> \RequirePackage {l3keys2e}\__hook_toplevel package/chemformula/before \__hook_next package/chemformula/before  
  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  
  some-hook -> code to run when other-package is loaded,code from other-package,\__hook_toplevel some-hook \__hook_next some-hook  
diff --git a/required/firstaid/changes.txt b/required/firstaid/changes.txt
index 8db6a5d0..d43e6c19 100644
--- a/required/firstaid/changes.txt
+++ b/required/firstaid/changes.txt
@@ -1,3 +1,8 @@
+2024-02-29  Joseph Wright  <Joseph.Wright at latex-project.org>
+
+	* latex2e-first-aid-for-external-files.dtx: add firstaid for chemformula
+	to load l3keys2e
+
 2023-09-20  Ulrike Fischer  <Ulrike.Fischer at latex-project.org>
 
 	* latex2e-first-aid-for-external-files.dtx: add firstaid for underscore to 
diff --git a/required/firstaid/latex2e-first-aid-for-external-files.dtx b/required/firstaid/latex2e-first-aid-for-external-files.dtx
index ed6c898d..4936c37a 100644
--- a/required/firstaid/latex2e-first-aid-for-external-files.dtx
+++ b/required/firstaid/latex2e-first-aid-for-external-files.dtx
@@ -111,8 +111,8 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\def\LaTeXFirstAidDate{2023/09/20}
-\def\LaTeXFirstAidVersion{v1.1b}
+\def\LaTeXFirstAidDate{2024/02/29}
+\def\LaTeXFirstAidVersion{v1.1c}
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -602,5 +602,26 @@
 %</kernel>
 %    \end{macrocode}
 %
+%    \begin{macrocode}
+%<*kernel>
+%    \end{macrocode}
+%
+% \subsection{The \pkg{chemformula} package first aid}
+%
+%    Package \pkg{chemformula} uses \pkg{l3keys2e} for option processing.
+%    This used to be made available as \pkg{chemformula} also loads
+%    \pkg{xfrac}, which loaded \pkg{l3keys2e}. However, \pkg{xfrac} has now
+%    been updated to use the newer kernel method if available, so loading
+%    \pkg{chemformula} fails.
+%    \begin{macrocode}
+\AddToHook{package/chemformula/before}[firstaid]{%
+  \RequirePackage{l3keys2e}%
+}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</kernel>
+%    \end{macrocode}
+%
 % \Finale
 %





More information about the latex3-commits mailing list.